actual/packages/api/app/bundle.api.js.map
2022-05-28 23:08:55 -04:00

1 line
No EOL
3.5 MiB
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@rschedule/core/es2015/generators.js","webpack:///./node_modules/@rschedule/core/es2015/main.js","webpack:///./node_modules/@rschedule/core/es2015/rules.js","webpack:///./node_modules/@rschedule/json-tools/es2015/Schedule.js","webpack:///./node_modules/@rschedule/json-tools/es2015/main.js","webpack:///./node_modules/@rschedule/standard-date-adapter/es2015/main.js","webpack:///./node_modules/@rschedule/standard-date-adapter/es2015/setup.js","webpack:///./node_modules/accounting/accounting.js","webpack:///./node_modules/adm-zip/adm-zip.js","webpack:///./node_modules/adm-zip/headers/entryHeader.js","webpack:///./node_modules/adm-zip/headers/index.js","webpack:///./node_modules/adm-zip/headers/mainHeader.js","webpack:///./node_modules/adm-zip/methods/deflater.js","webpack:///./node_modules/adm-zip/methods/index.js","webpack:///./node_modules/adm-zip/methods/inflater.js","webpack:///./node_modules/adm-zip/methods/zipcrypto.js","webpack:///./node_modules/adm-zip/util/constants.js","webpack:///./node_modules/adm-zip/util/errors.js","webpack:///./node_modules/adm-zip/util/fattr.js","webpack:///./node_modules/adm-zip/util/fileSystem.js","webpack:///./node_modules/adm-zip/util/index.js","webpack:///./node_modules/adm-zip/util/utils.js","webpack:///./node_modules/adm-zip/zipEntry.js","webpack:///./node_modules/adm-zip/zipFile.js","webpack:///./node_modules/available-typed-arrays/index.js","webpack:///./node_modules/call-bind/callBound.js","webpack:///./node_modules/call-bind/index.js","webpack:///./node_modules/charenc/charenc.js","webpack:///./node_modules/crypt/crypt.js","webpack:///./node_modules/csv-parse/lib/ResizeableBuffer.js","webpack:///./node_modules/csv-parse/lib/index.js","webpack:///./node_modules/csv-parse/lib/sync.js","webpack:///./node_modules/csv-stringify/lib/index.js","webpack:///./node_modules/csv-stringify/lib/sync.js","webpack:///./node_modules/currency-formatter/index.js","webpack:///./node_modules/damerau-levenshtein/index.js","webpack:///./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/date-fns/esm/_lib/assign/index.js","webpack:///./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/addMinutes/index.js","webpack:///./node_modules/date-fns/esm/addMonths/index.js","webpack:///./node_modules/date-fns/esm/addQuarters/index.js","webpack:///./node_modules/date-fns/esm/addSeconds/index.js","webpack:///./node_modules/date-fns/esm/addWeeks/index.js","webpack:///./node_modules/date-fns/esm/addYears/index.js","webpack:///./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack:///./node_modules/date-fns/esm/closestIndexTo/index.js","webpack:///./node_modules/date-fns/esm/closestTo/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/compareDesc/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInHours/index.js","webpack:///./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInYears/index.js","webpack:///./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/endOfDecade/index.js","webpack:///./node_modules/date-fns/esm/endOfHour/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/endOfMinute/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/endOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/endOfSecond/index.js","webpack:///./node_modules/date-fns/esm/endOfWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfYear/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack:///./node_modules/date-fns/esm/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/fromUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getDate/index.js","webpack:///./node_modules/date-fns/esm/getDay/index.js","webpack:///./node_modules/date-fns/esm/getDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack:///./node_modules/date-fns/esm/getDaysInYear/index.js","webpack:///./node_modules/date-fns/esm/getDecade/index.js","webpack:///./node_modules/date-fns/esm/getHours/index.js","webpack:///./node_modules/date-fns/esm/getISODay/index.js","webpack:///./node_modules/date-fns/esm/getISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack:///./node_modules/date-fns/esm/getMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/getMinutes/index.js","webpack:///./node_modules/date-fns/esm/getMonth/index.js","webpack:///./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack:///./node_modules/date-fns/esm/getQuarter/index.js","webpack:///./node_modules/date-fns/esm/getSeconds/index.js","webpack:///./node_modules/date-fns/esm/getTime/index.js","webpack:///./node_modules/date-fns/esm/getUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getWeek/index.js","webpack:///./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack:///./node_modules/date-fns/esm/getWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./node_modules/date-fns/esm/index.js","webpack:///./node_modules/date-fns/esm/isAfter/index.js","webpack:///./node_modules/date-fns/esm/isBefore/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/isEqual/index.js","webpack:///./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isFriday/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isLeapYear/index.js","webpack:///./node_modules/date-fns/esm/isMonday/index.js","webpack:///./node_modules/date-fns/esm/isSameDay/index.js","webpack:///./node_modules/date-fns/esm/isSameHour/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/isSameMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMonth/index.js","webpack:///./node_modules/date-fns/esm/isSameQuarter/index.js","webpack:///./node_modules/date-fns/esm/isSameSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameYear/index.js","webpack:///./node_modules/date-fns/esm/isSaturday/index.js","webpack:///./node_modules/date-fns/esm/isSunday/index.js","webpack:///./node_modules/date-fns/esm/isThursday/index.js","webpack:///./node_modules/date-fns/esm/isTuesday/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/isWednesday/index.js","webpack:///./node_modules/date-fns/esm/isWeekend/index.js","webpack:///./node_modules/date-fns/esm/isWithinInterval/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/lightFormat/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/max/index.js","webpack:///./node_modules/date-fns/esm/min/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./node_modules/date-fns/esm/parseISO/index.js","webpack:///./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack:///./node_modules/date-fns/esm/setDate/index.js","webpack:///./node_modules/date-fns/esm/setDay/index.js","webpack:///./node_modules/date-fns/esm/setDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/setHours/index.js","webpack:///./node_modules/date-fns/esm/setISODay/index.js","webpack:///./node_modules/date-fns/esm/setISOWeek/index.js","webpack:///./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/setMinutes/index.js","webpack:///./node_modules/date-fns/esm/setMonth/index.js","webpack:///./node_modules/date-fns/esm/setQuarter/index.js","webpack:///./node_modules/date-fns/esm/setSeconds/index.js","webpack:///./node_modules/date-fns/esm/setWeek/index.js","webpack:///./node_modules/date-fns/esm/setWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/startOfDecade/index.js","webpack:///./node_modules/date-fns/esm/startOfHour/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfMinute/index.js","webpack:///./node_modules/date-fns/esm/startOfMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/startOfSecond/index.js","webpack:///./node_modules/date-fns/esm/startOfWeek/index.js","webpack:///./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfYear/index.js","webpack:///./node_modules/date-fns/esm/subDays/index.js","webpack:///./node_modules/date-fns/esm/subHours/index.js","webpack:///./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/subMinutes/index.js","webpack:///./node_modules/date-fns/esm/subMonths/index.js","webpack:///./node_modules/date-fns/esm/subQuarters/index.js","webpack:///./node_modules/date-fns/esm/subSeconds/index.js","webpack:///./node_modules/date-fns/esm/subWeeks/index.js","webpack:///./node_modules/date-fns/esm/subYears/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/deep-equal/index.js","webpack:///./node_modules/deep-equal/node_modules/isarray/index.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack:///./node_modules/es-get-iterator/index.js","webpack:///./node_modules/es-get-iterator/node_modules/isarray/index.js","webpack:///./node_modules/foreach/index.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/get-intrinsic/index.js","webpack:///./node_modules/google-protobuf/google-protobuf.js","webpack:///./node_modules/has-bigints/index.js","webpack:///./node_modules/has-symbols/index.js","webpack:///./node_modules/has-symbols/shams.js","webpack:///./node_modules/has-tostringtag/shams.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/is-arguments/index.js","webpack:///./node_modules/is-bigint/index.js","webpack:///./node_modules/is-boolean-object/index.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/is-date-object/index.js","webpack:///./node_modules/is-map/index.js","webpack:///./node_modules/is-number-object/index.js","webpack:///./node_modules/is-regex/index.js","webpack:///./node_modules/is-set/index.js","webpack:///./node_modules/is-string/index.js","webpack:///./node_modules/is-symbol/index.js","webpack:///./node_modules/is-typed-array/index.js","webpack:///./node_modules/is-weakmap/index.js","webpack:///./node_modules/is-weakset/index.js","webpack:///./node_modules/locale-currency/index.js","webpack:///./node_modules/locale-currency/map.js","webpack:///./node_modules/lru-cache/index.js","webpack:///./node_modules/lru-cache/node_modules/yallist/iterator.js","webpack:///./node_modules/lru-cache/node_modules/yallist/yallist.js","webpack:///./node_modules/md5/md5.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/murmurhash/murmurhash.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/object-inspect/index.js","webpack:///./node_modules/object-inspect/util.inspect.js","webpack:///./node_modules/object-is/implementation.js","webpack:///./node_modules/object-is/index.js","webpack:///./node_modules/object-is/polyfill.js","webpack:///./node_modules/object-is/shim.js","webpack:///./node_modules/object-keys/implementation.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/object.assign/implementation.js","webpack:///./node_modules/object.assign/index.js","webpack:///./node_modules/object.assign/polyfill.js","webpack:///./node_modules/object.assign/shim.js","webpack:///./node_modules/regexp.prototype.flags/implementation.js","webpack:///./node_modules/regexp.prototype.flags/index.js","webpack:///./node_modules/regexp.prototype.flags/polyfill.js","webpack:///./node_modules/regexp.prototype.flags/shim.js","webpack:///./node_modules/side-channel/index.js","webpack:///./node_modules/slash/index.js","webpack:///./node_modules/uuid/index.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/uuid/lib/rng.js","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/which-boxed-primitive/index.js","webpack:///./node_modules/which-collection/index.js","webpack:///./node_modules/which-typed-array/index.js","webpack:///./packages/api/app/query.js","webpack:///./packages/api/injected.js","webpack:///./packages/api/methods.js","webpack:///./packages/import-ynab4/importer.js","webpack:///./packages/import-ynab4/node_modules/@actual-app/api/utils.js","webpack:///./packages/import-ynab5/importer.js","webpack:///./packages/import-ynab5/node_modules/@actual-app/api/utils.js","webpack:///./packages/loot-core/migrations/1632571489012_remove_cache.js","webpack:///./packages/loot-core/node_modules/adm-zip/adm-zip.js","webpack:///./packages/loot-core/node_modules/adm-zip/headers/entryHeader.js","webpack:///./packages/loot-core/node_modules/adm-zip/headers/index.js","webpack:///./packages/loot-core/node_modules/adm-zip/headers/mainHeader.js","webpack:///./packages/loot-core/node_modules/adm-zip/methods/deflater.js","webpack:///./packages/loot-core/node_modules/adm-zip/methods/index.js","webpack:///./packages/loot-core/node_modules/adm-zip/methods/inflater.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/constants.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/errors.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/fattr.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/fileSystem.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/index.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/utils.js","webpack:///./packages/loot-core/node_modules/adm-zip/zipEntry.js","webpack:///./packages/loot-core/node_modules/adm-zip/zipFile.js","webpack:///../src/index.ts","webpack:///./packages/loot-core/src/mocks/budget.js","webpack:///./packages/loot-core/src/platform/exceptions/index.electron.js","webpack:///./packages/loot-core/src/platform/server/asyncStorage/index.electron.js","webpack:///./packages/loot-core/src/platform/server/connection/index.api.js","webpack:///./packages/loot-core/src/platform/server/fetch/index.electron.js","webpack:///./packages/loot-core/src/platform/server/fs/index.electron.js","webpack:///./packages/loot-core/src/platform/server/log/index.api.js","webpack:///./packages/loot-core/src/platform/server/sqlite/index.electron.js","webpack:///./packages/loot-core/src/platform/uuid/index.electron.js","webpack:///./packages/loot-core/src/server/accounts/export-to-csv.js","webpack:///./packages/loot-core/src/server/accounts/link.js","webpack:///./packages/loot-core/src/server/accounts/parse-file.js","webpack:///./packages/loot-core/src/server/accounts/payees.js","webpack:///./packages/loot-core/src/server/accounts/qif2json.js","webpack:///./packages/loot-core/src/server/accounts/rules.js","webpack:///./packages/loot-core/src/server/accounts/sync.js","webpack:///./packages/loot-core/src/server/accounts/title/index.js","webpack:///./packages/loot-core/src/server/accounts/title/lower-case.js","webpack:///./packages/loot-core/src/server/accounts/title/specials.js","webpack:///./packages/loot-core/src/server/accounts/transaction-rules.js","webpack:///./packages/loot-core/src/server/accounts/transactions.js","webpack:///./packages/loot-core/src/server/accounts/transfer.js","webpack:///./packages/loot-core/src/server/api-models.js","webpack:///./packages/loot-core/src/server/api.js","webpack:///./packages/loot-core/src/server/app.js","webpack:///./packages/loot-core/src/server/aql/compiler.js","webpack:///./packages/loot-core/src/server/aql/exec.js","webpack:///./packages/loot-core/src/server/aql/schema-helpers.js","webpack:///./packages/loot-core/src/server/aql/schema/executors.js","webpack:///./packages/loot-core/src/server/aql/schema/index.js","webpack:///./packages/loot-core/src/server/aql/schema/run-query.js","webpack:///./packages/loot-core/src/server/aql/views.js","webpack:///./packages/loot-core/src/server/backups.js","webpack:///./packages/loot-core/src/server/budget/actions.js","webpack:///./packages/loot-core/src/server/budget/app.js","webpack:///./packages/loot-core/src/server/budget/base.js","webpack:///./packages/loot-core/src/server/budget/report.js","webpack:///./packages/loot-core/src/server/budget/rollover.js","webpack:///./packages/loot-core/src/server/budget/util.js","webpack:///./packages/loot-core/src/server/cloud-storage.js","webpack:///./packages/loot-core/src/server/db/index.js","webpack:///./packages/loot-core/src/server/db/mappings.js","webpack:///./packages/loot-core/src/server/db/sort.js","webpack:///./packages/loot-core/src/server/db/util.js","webpack:///./packages/loot-core/src/server/encryption-internals.js","webpack:///./packages/loot-core/src/server/encryption.js","webpack:///./packages/loot-core/src/server/errors.js","webpack:///./packages/loot-core/src/server/main-app.js","webpack:///./packages/loot-core/src/server/main.js","webpack:///./packages/loot-core/src/server/merkle.js","webpack:///./packages/loot-core/src/server/migrate/migrations.js","webpack:///./packages/loot-core/src/server/models.js","webpack:///./packages/loot-core/src/server/mutators.js","webpack:///./packages/loot-core/src/server/notes/app.js","webpack:///./packages/loot-core/src/server/perf.js","webpack:///./packages/loot-core/src/server/platform.js","webpack:///./packages/loot-core/src/server/polyfills.js","webpack:///./packages/loot-core/src/server/post.js","webpack:///./packages/loot-core/src/server/prefs.js","webpack:///./packages/loot-core/src/server/schedules/app.js","webpack:///./packages/loot-core/src/server/schedules/find-schedules.js","webpack:///./packages/loot-core/src/server/server-config.js","webpack:///./packages/loot-core/src/server/sheet.js","webpack:///./packages/loot-core/src/server/spreadsheet/globals.js","webpack:///./packages/loot-core/src/server/spreadsheet/graph-data-structure.js","webpack:///./packages/loot-core/src/server/spreadsheet/spreadsheet.js","webpack:///./packages/loot-core/src/server/spreadsheet/util.js","webpack:///./packages/loot-core/src/server/sync/encoder.js","webpack:///./packages/loot-core/src/server/sync/index.js","webpack:///./packages/loot-core/src/server/sync/make-test-message.js","webpack:///./packages/loot-core/src/server/sync/migrate.js","webpack:///./packages/loot-core/src/server/sync/proto/sync_pb.js","webpack:///./packages/loot-core/src/server/sync/repair.js","webpack:///./packages/loot-core/src/server/sync/reset.js","webpack:///./packages/loot-core/src/server/timestamp.js","webpack:///./packages/loot-core/src/server/tools/app.js","webpack:///./packages/loot-core/src/server/tracking/events.js","webpack:///./packages/loot-core/src/server/undo.js","webpack:///./packages/loot-core/src/server/update.js","webpack:///./packages/loot-core/src/server/util/budget-name.js","webpack:///./packages/loot-core/src/server/util/rschedule.js","webpack:///./packages/loot-core/src/shared/accounts.js","webpack:///./packages/loot-core/src/shared/async.js","webpack:///./packages/loot-core/src/shared/months.js","webpack:///./packages/loot-core/src/shared/query.js","webpack:///./packages/loot-core/src/shared/rules.js","webpack:///./packages/loot-core/src/shared/schedules.js","webpack:///./packages/loot-core/src/shared/transactions.js","webpack:///./packages/loot-core/src/shared/util.js","webpack:///external \"better-sqlite3\"","webpack:///external \"crypto\"","webpack:///external \"fs\"","webpack:///external \"node-fetch\"","webpack:///external \"node-libofx\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"string_decoder\"","webpack:///external \"util\"","webpack:///external \"zlib\""],"names":["OccurrenceGenerator","constructor","args","timezone","undefined","maxDuration","firstDate","_firstDate","start","_run","next","value","dateAdapter","fromDateTime","lastDate","_lastDate","isInfinite","end","reverse","pipe","operators","reduce","prev","curr","base","occurrences","OccurrenceIterator","normalizeOccurrencesArgs","collections","CollectionIterator","normalizeCollectionsArgs","occursBetween","startInput","endInput","options","normalizeDateInput","hasDuration","excludeEnds","getMaxDuration","iterator","subtract","day","isBefore","isEqual","occursOn","rawArgs","normalizeOccursOnArgs","weekday","before","ArgumentError","after","add","date","get","skipToDate","getDifferenceBetweenWeekdays","granularity","isAfter","occursAfter","adapter","excludeStart","occursBefore","isAfterOrEqual","DateAdapterBase$1","Object","assign","excludeDates","map","normalizeRunArgs","dateInputToDateTime","normalizeDateInputToAdapter","dateInputToDateAdapter","normalizeRunOutput","normalizeDateTimeTimezone$1","method","Number","isInteger","iterable","Symbol","occurrenceIterator","toArray","take","Array","from","InfiniteLoopError","yieldArgs","normalizeDateOutput","Collection","dates","periodStart","periodEnd","weekStart","Error","getPeriod","startDate","collectionIterator","collection","push","period","index","isBeforeOrEqual","skipEmptyPeriods","incrementPeriod","endGranularity","Operator","streams","config","stream","set","calculateIsInfinite","calculateHasDuration","IterableWrapper","generator","runArgs","done","processYieldArgs","length","every","s","streamsComparer","a","b","streamsReverseComparer","selectNextIterable","sort","filter","shift","selectLastIterable","pop","AddOperator","_","wrappedStreams","input","some","streamsDuration","Calendar","schedules","data","isArray","schedule","prop","count","Dates","adapters","datetimes","duration","toDateTime","remove","slice","findIndex","valueOf","splice","keepLocalTime","json","toJSON","fromJSON","fn","dateTimeSortComparer","dateCache","InvalidDateAdapterError","dateAdapterConfig","DateAdapterBase","_date","generators","name","isDate","_object","unimplementedError","fromDate","_options","_json","_datetime","toISOString","DateTime","hasTimezoneSupport","DateAdapter","WEEKDAYS","MILLISECONDS_IN_SECOND","MILLISECONDS_IN_MINUTE","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_DAY","MILLISECONDS_IN_WEEK","InvalidDateTimeError","Date","assertIsValid","UTC","year","month","hour","minute","second","millisecond","fromDateAdapter","_end","object","assertSameTimeZone","isOccurring","amount","unit","unshift","forkDateTime","addUTCYears","addUTCMonths","addUTCWeeks","addUTCDays","addUTCHours","addUTCMinutes","addUTCSeconds","addUTCMilliseconds","subUTCYears","subUTCMonths","subUTCWeeks","subUTCDays","subUTCHours","subUTCMinutes","subUTCSeconds","subUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCYearDay","getUTCDay","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","setUTCFullYear","monthLength","setUTCDate","setUTCMonth","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","opt","setDateToStartOfWeek","setDateToEndOfWeek","isNaN","x","y","JSON","stringify","wkst","orderedWeekdays","indexOf","wkdays","shiftArray","array","block","getDaysInFebruary","isLeapYear","now","diff","Math","floor","toInteger","NaN","int","ceil","addMilliseconds","dirtyDate","dirtyAmount","arguments","TypeError","timestamp","desiredMonth","dateWithDesiredMonth","daysInMonth","min","days","getTime","normalizeDateTimeTimezone","RuleBase","recurrenceRules","cloneRuleOptions","normOptions","normalizeRuleOptions","RecurrenceRulesIterator","recurrenceRulesReducer","Rule","tzoptions","DateTime$1","ScheduleBase","occurrenceStream","SubtractOperator","inclusion","exclusion","cycleStreams","iterateExclusion","unique","UniqueOperator","lastValue","Schedule","rrules","exrules","arg","ruleArgs","rule","rdates","exdates","intersection","IntersectionOperator","maxFailedIterations","defaultMaxFailedIterations","hasEndDate","cycleStreams$1","iteration","maxIterations","lastValidDate","last","forEach","DurationIterableWrapper","workingValue","MergeDurationOperatorError","mergeDuration","MergeDurationOperator","reverseRun","forwardRun","checkFromStart","checkFromEnd","SplitDurationOperatorError","splitDuration","SplitDurationOperator","splitFn","datesBucket","splitDate","selectedDate","bucketIndex","selectedBucketIndex","dateIndex","selectedDateIndex","bucket","dateShouldComeNext","datePastEnd","datePastSkipToDate","valid","uniqDateTimes","Map","values","result","abs","getDaysInYear","numberSortComparer","freqToGranularity","freq","cloneJSON","parse","RuleOptionError","normalizeDefaultOptions","recurrenceModules","startOptions","mod","normalizeOptions","keys","key","obj","RecurrenceRuleError","ValidDateTime","InvalidDateTime","rules","iterate","iterateWithReverseCount","iterateWithCount","normalizeDateTimeArgs","startingDate","nextDate","runRules","isDatePastEnd","run","RecurrenceRule","processor","FrequencyRule","initDate","intervalUnit","frequency","firstIntervalStartDate","normalizedStartDate","intervalStartDate","intervalEndDate","normalizedEndDate","skipToInterval","validateDate","dateIsWithinInterval","setToCurrentInterval","intervalDifference","intervalDifferenceBetweenDates","first","interval","direction","difference","intervalDuration","months","RevFrequencyRule","FREQUENCIES","FrequencyRuleModule","byMillisecondOfSecond","norm","includes","deps","ruleOptionFilled","option","freqCache","WeakMap","RecurrenceRuleBase","has","RevRecurrenceRuleBase","RevByTimeOfUnitRule","currentTime","time","baseGranularity","RevByMillisecondOfSecondRule","ByTimeOfUnitRule","ByMillisecondOfSecondRule","ByMillisecondOfSecondRuleModule","num","RevBySecondOfMinuteRule","bySecondOfMinute","BySecondOfMinuteRule","BySecondOfMinuteRuleModule","RevByMinuteOfHourRule","byMinuteOfHour","ByMinuteOfHourRule","ByMinuteOfHourRuleModule","RevByHourOfDayRule","byHourOfDay","ByHourOfDayRule","ByHourOfDayRuleModule","getNextWeekday","getNthWeekdayOfMonth","nth","ByDayOfMonthRule","normalizedByDayOfMonth","normalizeByDayOfMonth","byDayOfMonth","byDayOfWeek","currentDay","nextMonth","lengthOfMonth","filteredByDayOfMonth","entry","nthWeekdayOfMonth","Set","RevByDayOfMonthRule","ByDayOfMonthRuleModule","byDayOfYear","getNthWeekdayOfYear","getPreviousWeekday","RevByDayOfWeekRule","byMonthOfYear","expandYearly","expandMonthly","expand","getPrevWeekdaysOfYear","getPrevWeekdaysOfMonth","normalizedNthWeekdaysOfYear","normalizedNextWeekdays","normalizedNthWeekdaysOfMonth","ByDayOfWeekRule","getNextWeekdaysOfYear","getNextWeekdaysOfMonth","ByDayOfWeekRuleModule","invalidWeeday","find","RevByMonthOfYearRule","currentMonth","ByMonthOfYearRule","ByMonthOfYearRuleModule","ICAL_RULES","prototype","serialize","opts","type","nested","serializeDataToJSON","ParseJSONError","registerJSONSerializerFn","SerializeJSONError","JSON_FN_MAP","gen","StandardDateAdapter","toString","call","datetime","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","root","lib","version","settings","currency","symbol","format","decimal","thousand","precision","grouping","number","nativeMap","nativeIsArray","isString","charCodeAt","substr","isObject","defaults","defs","hasOwnProperty","context","results","i","j","checkPrecision","val","round","checkCurrencyFormat","match","pos","neg","replace","zero","unformat","regex","RegExp","unformatted","parseFloat","toFixed","exponentialForm","rounded","finalResult","formatNumber","usePrecision","negative","parseInt","split","formatMoney","formats","useFormat","formatColumn","list","padAfterSymbol","maxLength","formatted","fVal","join","module","exports","accounting","Utils","require","pth","ZipEntry","ZipFile","get_Bool","def","get_Str","defaultOptions","noSort","readEntries","Constants","NONE","fs","inBuffer","create","Uint8Array","Buffer","isBuffer","BUFFER","filetools","existsSync","FILE","filename","readFileSync","Errors","INVALID_FILENAME","_zip","canonical","sanitize","getEntry","item","entryName","header","fixPath","zipPath","posix","normalize","sep","readFile","pass","getData","readFileAsync","callback","getDataAsync","readAsText","encoding","readAsTextAsync","err","deleteFile","deleteEntry","addZipComment","comment","getZipComment","addZipEntryComment","getZipEntryComment","updateFile","content","setData","addLocalFile","localPath","zipName","p","_attr","statSync","addFile","FILE_NOT_FOUND","addLocalFolder","rx","test","items","findFiles","self","filepath","relative","stats","isFile","alloc","addLocalFolderAsync","open","code","stat","er0","er1","addLocalFolderPromise","props","Promise","resolve","reject","attr","update","isStat","Stats","mtime","fileattr","isDirectory","isWin","unix","mode","setEntry","getEntries","entries","getEntryCount","extractEntryTo","targetPath","maintainEntryPath","overwrite","keepOriginalPermission","outFileName","NO_ENTRY","target","basename","children","getEntryChildren","child","CANT_EXTRACT_FILE","childName","fileAttr","writeFileTo","CANT_OVERRIDE","extractAllTo","NO_ZIP","makeDir","utimesSync","extractAllToAsync","getPath","getError","msg","file","dirEntries","fileEntries","e","dirPath","dirAttr","chmodSync","er","size","filePath","err_1","writeFileToAsync","succ","utimes","err_2","delete","writeZip","targetFileName","zipData","compressToBuffer","ok","writeZipPromise","perm","toBufferPromise","then","ret","toAsyncBuffer","toBuffer","onSuccess","onFail","onItemStart","onItemEnd","_verMade","_version","_flags","_method","_time","_crc","_compressedSize","_size","_fnameLen","_extraLen","_comLen","_diskStart","_inattr","_offset","FLG_EFS","_dataHeader","setTime","made","flags","STORED","DEFLATED","crc","max","compressedSize","fileNameLength","extraLength","commentLength","diskNumStart","inAttr","offset","encripted","entryHeaderSize","CENHDR","realDataOffset","LOCHDR","fnameLen","extraLen","dataHeader","loadDataHeaderFromBinary","readUInt32LE","LOCSIG","INVALID_LOC","readUInt16LE","LOCVER","LOCFLG","LOCHOW","LOCTIM","LOCCRC","LOCSIZ","LOCLEN","LOCNAM","LOCEXT","loadFromBinary","CENSIG","INVALID_CEN","CENVEM","CENVER","CENFLG","CENHOW","CENTIM","CENCRC","CENSIZ","CENLEN","CENNAM","CENEXT","CENCOM","CENDSK","CENATT","CENATX","CENOFF","dataHeaderToBinary","writeUInt32LE","writeUInt16LE","entryHeaderToBinary","fill","bytes","nr","methodToString","toUpperCase","EntryHeader","MainHeader","_volumeEntries","_totalEntries","_commentLength","diskEntries","totalEntries","mainHeaderSize","ENDHDR","ENDSIG","ZIP64HDR","ZIP64SIG","INVALID_END","ENDSUB","ENDTOT","ENDSIZ","ENDOFF","ENDCOM","readBigUInt64LE","ZIP64SUB","ZIP64TOT","ZIP64SIZ","ZIP64OFF","toBinary","len","offs","inbuf","zlib","chunkSize","deflate","deflateRawSync","deflateAsync","tmp","createDeflateRaw","parts","total","on","buf","written","part","copy","Deflater","Inflater","ZipCrypto","inflate","inflateRawSync","inflateAsync","createInflateRaw","randomFillSync","crctable","Uint32Array","t","uMul","imul","crc32update","pCrc32","bval","genSalt","node","salt","random","Initkeys","pw","updateKeys","byteValue","k","make_decrypter","pwd","c","make_encrypter","decrypt","decrypter","_salter","encrypt","oldlike","encrypter","EXTSIG","EXTHDR","EXTCRC","EXTSIZ","EXTLEN","END64HDR","END64SIG","END64START","END64OFF","END64NUMDISKS","ZIP64LEAD","ZIP64SIZE","ZIP64VEM","ZIP64VER","ZIP64DSK","ZIP64DSKDIR","ZIP64SIZB","ZIP64EXTRA","SHRUNK","REDUCED1","REDUCED2","REDUCED3","REDUCED4","IMPLODED","ENHANCED_DEFLATED","PKWARE","BZIP2","LZMA","IBM_TERSE","IBM_LZ77","AES_ENCRYPT","FLG_ENC","FLG_COMP1","FLG_COMP2","FLG_DESC","FLG_ENH","FLG_PATCH","FLG_STR","FLG_MSK","EF_ID","EF_SIZE","ID_ZIP64","ID_AVINFO","ID_PFS","ID_OS2","ID_NTFS","ID_OPENVMS","ID_UNIX","ID_FORK","ID_PATCH","ID_X509_PKCS7","ID_X509_CERTID_F","ID_X509_CERTID_C","ID_STRONGENC","ID_RECORD_MGT","ID_X509_PKCS7_RL","ID_IBM1","ID_IBM2","ID_POSZIP","EF_ZIP64_OR_32","EF_ZIP64_OR_16","EF_ZIP64_SUNCOMP","EF_ZIP64_SCOMP","EF_ZIP64_RHO","EF_ZIP64_DSN","NO_DATA","BAD_CRC","FILE_IN_THE_WAY","UNKNOWN_METHOD","AVAIL_DATA","INVALID_DISTANCE","TO_MANY_CODES","INVALID_REPEAT_LEN","INVALID_REPEAT_FIRST","INCOMPLETE_CODES","INVALID_DYN_DISTANCE","INVALID_CODES_LEN","INVALID_STORE_BLOCK","INVALID_BLOCK_TYPE","DIRECTORY_CONTENT_ERROR","NOT_IMPLEMENTED","INVALID_FORMAT","path","_path","_obj","newAttr","_stat","directory","readonly","hidden","executable","atime","console","warn","readOnly","decodeAttributes","encodeAttributes","isReadOnly","isHidden","isExecutable","mTime","aTime","process","versions","originalFs","FileAttr","fsystem","platform","is_Obj","crcTable","folder","mkdirSync","fpath","resolvedPath","dirname","fd","openSync","writeSync","closeSync","exists","exist","chmod","write","close","findSync","dir","pattern","recursive","files","readdirSync","concat","getAttributes","setAttributes","byte","crc32","genCRCTable","off","safeSuffix","prefix","l","buffer","swap64","Headers","Methods","_entryHeader","_entryName","_comment","_isDirectory","uncompressedData","_extra","getCompressedDataFromZip","crc32OK","decompress","async","compressedData","inflater","compress","deflater","deflated","readUInt64LE","parseExtra","signature","parseZip64ExtendedInformation","rawEntryName","lastChar","extra","n","getCompressedData","getCompressedDataAsync","changed","packHeader","addpos","entryList","entryTable","mainHeader","loadedEntries","readMainHeader","iterateEntries","readNow","endStart","endOffset","commentEnd","sortEntries","toLowerCase","localeCompare","_self","zipEntry","dataBlock","entryHeaders","totalSize","dindex","entryNameLen","postHeader","dataLength","entryHeader","outBuffer","mh","compress2Buffer","entryLists","possibleNames","g","globalThis","global","availableTypedArrays","out","GetIntrinsic","callBind","$indexOf","callBoundIntrinsic","allowMissing","intrinsic","bind","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","func","desc","configurable","applyBind","apply","charenc","utf8","stringToBytes","str","bin","unescape","encodeURIComponent","bytesToString","decodeURIComponent","escape","String","fromCharCode","base64map","crypt","rotl","rotr","endian","randomBytes","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","base64","triplet","charAt","base64ToBytes","imod4","pow","ResizeableBuffer","prepend","resize","clone","append","reset","Transform","tab","nl","np","cr","space","boms","Parser","readableObjectMode","__originalOptions","__normalizeOptions","underscore","CsvError","bom","fnCastField","cast","cast_date","fnFirstLineToHeaders","columns","normalizeColumnsArray","columns_duplicates_to_array","delimiter_json","delimiter","from_line","ignore_last_delimiters","info","max_record_size","objname","on_record","quote","raw","record_delimiter","rd","relax","relax_column_count","relax_column_count_less","relax_column_count_more","skip_empty_lines","skip_lines_with_empty_values","skip_lines_with_error","rtrim","ltrim","trim","to","to_line","comment_lines","empty_lines","invalid_field_length","lines","records","state","bomSkipped","bufBytesStart","castField","commenting","error","enabled","escaping","escapeIsQuote","compare","expectedRecordLength","field","firstLineToHeaders","needMoreDataSize","previousBuf","quoting","stop","rawBuffer","record","recordHasError","record_length","recordDelimiterMaxLength","v","trimChars","wasQuoting","wasRowDelimiter","_transform","__parse","_flush","nextBuf","bomLength","bufLen","__needMoreData","record_delimiterCount","__autoDiscoverRecordDelimiter","chr","__isEscape","__isQuote","nextChr","isNextChrTrimable","__isCharTrimable","isNextChrComment","__compareBytes","isNextChrDelimiter","__isDelimiter","isNextChrRecordDelimiter","__isRecordDelimiter","__error","__infoField","recordDelimiterLength","skipCommentLine","__resetField","__resetRecord","errField","__onField","errRecord","__onRecord","commentCount","delimiterLength","lappend","rappend","recordLength","isRecordEmpty","__firstLineToColumns","finalErr","disabled","__push","__infoRecord","headers","normalizedHeaders","trimRight","__cast","f","isColumns","__isFloat","sourceBuf","targetBuf","targetPos","firstByte","sourceLength","numOfCharLeft","requiredLength","loop1","del","rdLength","emit","__infoDataSet","column","argument","parser","read","setImmediate","message","contexts","captureStackTrace","normalizedColumns","err1","err2","bom_utf8","Stringifier","writableObjectMode","quoted","quoted_empty","quoted_match","isRegExp","quoted_string","eof","normalize_columns","bigint","boolean","string","chunk","chunk_string","chunkIsHeader","csvrecord","containsdelimiter","containsQuote","containsEscape","containsRecordDelimiter","quotedString","quotedMatch","shouldQuote","regexp","newcolumns","stringifier","chunks","charCodeOfDot","reEscapeChar","rePropName","reIsDeepProp","reIsPlainProp","getTag","isKey","isSymbol","stringToPath","expression","subString","castPath","toKey","INFINITY","StringDecoder","decoder","onData","localeCurrency","currencies","localeFormats","defaultCurrency","thousandsSeparator","decimalSeparator","symbolOnLeft","spaceBetweenAmountAndSymbol","decimalDigits","defaultLocaleFormat","formatMapping","locale","getCurrency","localeMatch","exec","language","region","localeFormat","findCurrency","isUndefined","currencyCode","__this","that","limit","thisLength","thatLength","matrix","prepare","this_i","that_j","cost","steps","similarity","addLeadingZeros","targetLength","sign","output","dirtyObject","property","cloneObject","dayPeriodEnum","am","pm","midnight","noon","morning","afternoon","evening","night","formatters","G","token","localize","era","width","signedYear","ordinalNumber","lightFormatters","Y","signedWeekYear","getUTCWeekYear","weekYear","twoDigitYear","R","isoWeekYear","getUTCISOWeekYear","u","Q","quarter","q","M","L","w","week","getUTCWeek","I","isoWeek","getUTCISOWeek","d","D","dayOfYear","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","weekStartsOn","isoDayOfWeek","hours","dayPeriodEnumValue","dayPeriod","B","h","H","K","m","S","numberOfDigits","milliseconds","fractionalSeconds","X","_localize","originalDate","_originalDate","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","T","dirtyDelimiter","absOffset","minutes","dateLongFormatter","formatLong","timeLongFormatter","dateTimeLongFormatter","matchResult","datePattern","timePattern","dateTimeFormat","dateTime","longFormatters","P","getTimezoneOffsetInMilliseconds","baseTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","toDate","startOfYearTimestamp","startOfUTCISOWeek","startOfUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCWeek","startOfUTCWeekYear","dirtyOptions","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","RangeError","firstWeekOfNextYear","firstWeekOfThisYear","protectedTokens","isProtectedToken","throwProtectedError","setUTCDay","dirtyDay","localeWeekStartsOn","defaultWeekStartsOn","remainder","dayIndex","setUTCISODay","setUTCISOWeek","dirtyISOWeek","setUTCWeek","dirtyWeek","fourthOfJanuary","firstWeek","dirtyNumber","addDays","setDate","addHours","addISOWeekYears","setISOWeekYear","getISOWeekYear","addMinutes","addMonths","setFullYear","setHours","getDaysInMonth","setMonth","addQuarters","addSeconds","addWeeks","addYears","areIntervalsOverlapping","dirtyIntervalLeft","dirtyIntervalRight","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","closestIndexTo","dirtyDateToCompare","dirtyDatesArray","dateToCompare","timeToCompare","datesArray","minDistance","currentDate","distance","closestTo","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","compareDesc","differenceInCalendarDays","startOfDayLeft","startOfDay","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarISOWeekYears","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeek","startOfISOWeekRight","differenceInCalendarMonths","yearDiff","monthDiff","differenceInCalendarQuarters","quarterDiff","getQuarter","differenceInCalendarWeeks","startOfWeekLeft","startOfWeek","startOfWeekRight","differenceInCalendarYears","differenceInDays","isLastDayNotFull","differenceInHours","differenceInMilliseconds","differenceInISOWeekYears","subISOWeekYears","isLastISOWeekYearNotFull","differenceInMinutes","differenceInMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","isLastYearNotFull","eachDayOfInterval","dirtyInterval","endDate","endTime","step","eachWeekOfInterval","startDateWeek","endDateWeek","weeks","currentWeek","eachWeekendOfInterval","dateInterval","weekends","isWeekend","isSunday","eachWeekendOfMonth","startOfMonth","endOfMonth","eachWeekendOfYear","startOfYear","endOfYear","endOfDay","endOfDecade","decade","endOfHour","setMinutes","endOfISOWeek","endOfWeek","endOfISOWeekYear","setMilliseconds","endOfMinute","endOfQuarter","endOfSecond","getDay","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","dirtyFormatStr","formatStr","defaultLocale","isValid","utcDate","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","awareOfUnicodeTokens","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","formatDistance","dirtyBaseDate","comparison","localizeOptions","addSuffix","Boolean","seconds","offsetInSeconds","includeSeconds","nearestMonth","monthsSinceStartOfYear","years","MINUTES_IN_YEAR","formatDistanceStrict","roundingMethod","roundingMethodFn","formatRelative","baseDate","utcBaseDate","fromUnixTime","dirtyUnixTime","unixTime","dayOfMonth","getDayOfYear","monthIndex","lastDayOfMonth","getDecade","getISODay","getISOWeek","startOfISOWeekYear","getISOWeeksInYear","thisYear","nextYear","getOverlappingDaysInIntervals","isOverlapping","overlapStartDate","overlapEndDate","differenceInMs","getUnixTime","getWeek","startOfWeekYear","getWeekOfMonth","startWeekDay","currentWeekDay","startWeekDayWithOptions","getWeekYear","getWeeksInMonth","getYear","dirtyLeftDate","dirtyRightDate","isFirstDayOfMonth","isFriday","isLastDayOfMonth","isMonday","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isSameHour","dateLeftStartOfHour","startOfHour","dateRightStartOfHour","isSameISOWeek","isSameWeek","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","isSameMinute","dateLeftStartOfMinute","startOfMinute","dateRightStartOfMinute","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","startOfQuarter","dateRightStartOfQuarter","isSameSecond","dateLeftStartOfSecond","startOfSecond","dateRightStartOfSecond","dateLeftStartOfWeek","dateRightStartOfWeek","isSameYear","isSaturday","isThursday","isTuesday","isWednesday","isWithinInterval","startTime","lastDayOfDecade","lastDayOfISOWeek","lastDayOfWeek","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfYear","lightFormat","buildFormatLongFn","defaultWidth","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","rest","predicate","buildMatchPatternFn","parseResult","parsePattern","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","rem100","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","numericPatterns","hour23h","hour24h","hour11h","hour12h","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extended","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","priority","isTwoDigitYear","validate","normalizedTwoDigitYear","firstWeekOfYear","wholeWeekDays","isPM","timestampIsSet","TIMEZONE_UNIT_PRIORITY","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","uniquePrioritySetters","setter","setterArray","convertedDate","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","parseISO","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","parseTimezone","fullTime","fullTimeDate","fullTimeDateNextDay","offsetDiff","timeString","captures","century","isWeekDate","parseDateUnit","validateWeekDate","dayOfISOWeekYear","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","validateTimezone","fourthOfJanuaryDay","daysInMonths","_year","_hours","roundToNearestMinutes","nearestTo","roundedMinutes","remainderMinutes","addedMinutes","dirtyDayOfMonth","setDay","setDayOfYear","dirtyDayOfYear","dirtyHours","setISODay","setISOWeek","dirtyISOWeekYear","dirtyMilliseconds","dirtyMinutes","dirtyMonth","setQuarter","dirtyQuarter","oldQuarter","dirtySeconds","setWeek","setWeekYear","dirtyWeekYear","setYear","dirtyYear","startOfDecade","cleanDate","subDays","subHours","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","argStr","stack","objectKeys","isArguments","is","isRegex","whichBoxedPrimitive","callBound","whichCollection","getIterator","getSideChannel","whichTypedArray","$getTime","gPO","getPrototypeOf","$objToString","$Set","$mapHas","$mapGet","$mapSize","$setAdd","$setDelete","$setHas","$setSize","setHasEqualElement","val1","channel","internalDeepEqual","findLooseMatchingPrimitives","prim","mapMightHaveLoosePrim","altValue","curB","looseOpts","strict","setMightHaveLoosePrim","mapHasEqualEntry","key1","item1","key2","actual","expected","actualBoxed","expectedBoxed","hasActual","hasExpected","sentinel","objEquiv","setEquiv","iA","iB","resultA","resultB","mapEquiv","item2","aIsArray","bIsArray","aIsError","bIsError","aIsRegex","bIsRegex","source","aIsDate","bIsDate","aIsBuffer","bIsBuffer","ka","kb","aCollection","bCollection","deepEqual","arr","hasSymbols","toStr","origDefineProperty","defineProperty","isFunction","arePropertyDescriptorsSupported","enumerable","supportsDescriptors","writable","defineProperties","predicates","getOwnPropertySymbols","$iterator","$Map","$arrayPush","$charCodeAt","$stringSlice","advanceStringIndex","getArrayIterator","arraylike","getNonCollectionIterator","noPrimordialCollections","nextIndex","isMap","isSet","$mapForEach","$setForEach","$mapIterator","$setIterator","getStopIterationIterator","$mapAtAtIterator","$setAtAtIterator","getCollectionIterator","hasOwn","ctx","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","Function","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","callee","calleeThrows","gOPDthrows","getProto","__proto__","needsEval","TypedArray","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","DataView","decodeURI","encodeURI","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","Proxy","ReferenceError","Reflect","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","URIError","WeakRef","WeakSet","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","getBaseIntrinsic","intrinsicName","alias","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","$jscomp","scope","findInternal","ASSUME_ES5","ASSUME_NO_NATIVE_MAP","ASSUME_NO_NATIVE_SET","SIMPLE_FROUND_POLYFILL","getGlobal","window","polyfill","checkStringArgs","COMPILED","goog","isDef","isBoolean","isNumber","exportPath_","execScript","define","CLOSURE_UNCOMPILED_DEFINES","CLOSURE_DEFINES","nodeType","FEATURESET_YEAR","DEBUG","LOCALE","TRUSTED_SITE","STRICT_MODE_COMPATIBLE","DISALLOW_TEST_ONLY_CODE","ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING","provide","isInModuleLoader_","isProvided_","constructNamespace_","implicitNamespaces_","lastIndexOf","getObjectByName","getScriptNonce","getScriptNonce_","document","cspNonce_","NONCE_PATTERN_","querySelector","nonce","getAttribute","VALID_MODULE_RE_","search","isInGoogModuleLoader_","moduleLoaderState_","moduleName","getInternal_","loadedModules_","ModuleType","ES6","GOOG","isInEs6ModuleLoader_","getCurrentModulePath","declareLegacyNamespace","declareModuleId","moduleId","setTestOnly","forwardDeclare","isDefAndNotNull","globalize","addDependency","DEPENDENCIES_ENABLED","debugLoader_","ENABLE_DEBUG_LOADER","logToConsole_","requested","load_","requireType","basePath","nullFunction","abstractMethod","addSingletonGetter","instance_","getInstance","instantiatedSingletons_","LOAD_MODULE_USING_EVAL","SEAL_MODULE_EXPORTS","TRANSPILE","ASSUME_ES_MODULES_TRANSPILED","TRANSPILE_TO_LANGUAGE","TRANSPILER","hasBadLetScoping","useSafari10Workaround","workaroundSafari10EvalBug","loadModule","loadModuleFromSource_","seal","normalizePath_","loadFileSync_","CLOSURE_LOAD_FILE_SYNC","XMLHttpRequest","send","status","responseText","transpile_","transpile","$gwtExport","typeOf","propertyIsEnumerable","isNull","isArrayLike","isDateLike","getUid","UID_PROPERTY_","uidCounter_","hasUid","removeUid","removeAttribute","getHashCode","removeHashCode","bindNative_","bindJs_","partial","mixin","globalEval","evalWorksForGlobals_","_evalTest_","createElement","defer","appendChild","createTextNode","head","removeChild","getCssName","cssNameMapping_","cssNameMappingStyle_","CLOSURE_CSS_NAME_MAP_FN","setCssNameMapping","CLOSURE_CSS_NAME_MAPPING","getMsg","html","getMsgWithFallback","exportSymbol","exportProperty","inherits","superClass_","caller","defineClass","statics","createSealingConstructor_","applyProperties_","SEAL_CLASS_INSTANCES","isUnsealable_","UNSEALABLE_CONSTRUCTOR_PROPERTY_","OBJECT_PROTOTYPE_FIELDS_","tagUnsealableClass","inHtmlDocument_","isDocumentLoading_","attachEvent","readyState","findBasePath_","CLOSURE_BASE_PATH","currentScript","getElementsByTagName","src","Transpiler","requiresTranspilation_","transpilationTarget_","createRequiresTranspilation_","es3","navigator","userAgent","needsTranspile","transpiler_","protectScriptTag_","DebugLoader_","dependencies_","idToPath_","written_","loadingDeps_","depsToLoad_","paused_","factory_","DependencyFactory","deferredCallbacks_","deferredQueue_","bootstrap","setTimeout","getPathFromDeps_","onLoad","loadClosureDeps","createDependency","loadDeps_","areDepsLoaded_","requires","setDependencyFactory","loading_","pause","resume","resume_","loaded","loaded_","pending","setModuleState","registerEs6ModuleExports","registerGoogModuleExports","clearModuleState","defer_","areDepsLoaded","load","pause_","LoadController","Dependency","relativePath","provides","loadFlags","loadCallbacks_","getPathName","callbackMap_","registerCallback_","unregisterCallback_","callback_","CLOSURE_IMPORT_SCRIPT","IS_OLD_IE_","TRUSTED_TYPES_POLICY_","createHTML","setAttribute","onreadystatechange","onload","createScriptURL","Es6ModuleDependency","textContent","createScript","TransformedDependency","contents_","lazyFetch_","transform","ensure","TranspiledDependency","transpiler","PreTranspiledEs6ModuleDependency","GoogModuleDependency","needsTranspile_","atob","all","lang","CLOSURE_NO_DEPS","TRUSTED_TYPES_POLICY_NAME","identity_","createTrustedTypesPolicy","TrustedTypes","createPolicy","createURL","getCount","getAnyKey","getAnyValue","contains","containsValue","getValues","getKeys","getValueByKeys","containsKey","findValue","isEmpty","clear","setIfUndefined","setWithReturnValueIfNotSet","equals","unsafeClone","transpose","PROTOTYPE_FIELDS_","extend","createSet","createImmutableView","isFrozen","freeze","isImmutableView","getAllPropertyNames","getOwnPropertyNames","getSuperClass","debug","reportErrorToServer","dom","NodeType","ELEMENT","ATTRIBUTE","TEXT","CDATA_SECTION","ENTITY_REFERENCE","ENTITY","PROCESSING_INSTRUCTION","COMMENT","DOCUMENT","DOCUMENT_TYPE","DOCUMENT_FRAGMENT","NOTATION","asserts","ENABLE_ASSERTS","AssertionError","subs_","messagePattern","DEFAULT_ERROR_HANDLER","errorHandler_","doAssertFailure_","setErrorHandler","assert","assertExists","fail","assertNumber","assertString","assertFunction","assertObject","assertArray","assertBoolean","assertElement","assertInstanceof","getType_","assertFinite","assertObjectPrototypeIsIntact","displayName","jspb","BinaryConstants","ConstBinaryMessage","BinaryMessage","FieldType","INVALID","DOUBLE","FLOAT","INT64","UINT64","INT32","FIXED64","FIXED32","BOOL","STRING","GROUP","MESSAGE","BYTES","UINT32","ENUM","SFIXED32","SFIXED64","SINT32","SINT64","FHASH64","VHASH64","WireType","VARINT","DELIMITED","START_GROUP","END_GROUP","FieldTypeToWireType","INVALID_FIELD_NUMBER","FLOAT32_EPS","FLOAT32_MIN","FLOAT32_MAX","FLOAT64_EPS","FLOAT64_MIN","FLOAT64_MAX","TWO_TO_20","TWO_TO_23","TWO_TO_31","TWO_TO_32","TWO_TO_52","TWO_TO_63","TWO_TO_64","ZERO_HASH","NATIVE_ARRAY_PROTOTYPES","ASSUME_NATIVE_FUNCTIONS","peek","forEachRight","reduceRight","findRight","findIndexRight","insert","insertAt","insertArrayAt","insertBefore","removeAt","removeLast","removeIf","removeAllIf","removeDuplicates","binarySearch","binarySearch_","defaultCompare","binarySelect","stableSort","sortByKey","sortObjectsByKey","isSorted","defaultCompareEquality","compare3","inverseDefaultCompare","binaryInsert","binaryRemove","toObject","range","repeat","flatten","rotate","moveItem","zip","shuffle","copyByIndex","concatMap","stringToByteArray","byteArrayToString","byteArrayToHex","hexToByteArray","stringToUtf8ByteArray","utf8ByteArrayToString","xorByteArray","assertIsLocation","getWindow_","Location","Element","debugStringForType_","assertIsElementType_","assertIsHTMLAnchorElement","assertIsHTMLButtonElement","assertIsHTMLLinkElement","assertIsHTMLImageElement","assertIsHTMLAudioElement","assertIsHTMLVideoElement","assertIsHTMLInputElement","assertIsHTMLTextAreaElement","assertIsHTMLCanvasElement","assertIsHTMLEmbedElement","assertIsHTMLFormElement","assertIsHTMLFrameElement","assertIsHTMLIFrameElement","assertIsHTMLObjectElement","assertIsHTMLScriptElement","ownerDocument","defaultView","parentWindow","functions","constant","FALSE","TRUE","NULL","identity","lock","partialRight","withReturnValue","sequence","equalTo","compose","and","or","not","CACHE_RETURN_VALUE","cacheReturnValue","once","debounce","clearTimeout","throttle","rateLimit","HtmlElement","TagName","tagName_","A","ABBR","ACRONYM","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","AUDIO","BASE","BASEFONT","BDI","BDO","BIG","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","CENTER","CITE","CODE","COL","COLGROUP","COMMAND","DATA","DATALIST","DD","DEL","DETAILS","DFN","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FORM","FRAME","FRAMESET","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","HTML","IFRAME","IMG","INPUT","INS","ISINDEX","KBD","KEYGEN","LABEL","LEGEND","LI","LINK","MAIN","MAP","MARK","MATH","MENU","MENUITEM","META","METER","NAV","NOFRAMES","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","OUTPUT","PARAM","PICTURE","PRE","PROGRESS","RP","RT","RTC","RUBY","SAMP","SCRIPT","SECTION","SELECT","SMALL","SOURCE","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","SVG","TABLE","TBODY","TD","TEMPLATE","TEXTAREA","TFOOT","TH","THEAD","TIME","TITLE","TR","TRACK","TT","U","UL","VAR","VIDEO","WBR","tags","VOID_TAGS_","area","br","col","command","embed","hr","img","keygen","link","meta","param","track","wbr","isVoidTag","trustedtypes","PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY","TypedString","Const","stringConstValueWithSecurityContract__googStringSecurityPrivate_","GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_","STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_","TYPE_MARKER_","implementsGoogStringTypedString","getTypedStringValue","unwrap","EMPTY","SafeScript","privateDoNotAccessOrElseSafeScriptWrappedValue_","SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","fromConstant","createSafeScriptSecurityPrivateDoNotAccessOrElse","fromConstantAndArgs","stringify_","fromJson","unwrapTrustedScript","initSecurityPrivateDoNotAccessOrElse_","url","createObjectUrl","getUrlObject_","createObjectURL","revokeObjectUrl","revokeObjectURL","findUrlObject_","URL","webkitURL","browserSupportsObjectUrls","i18n","bidi","FORCE_RTL","IS_RTL","Format","LRE","RLE","PDF","LRM","RLM","Dir","LTR","RTL","NEUTRAL","RIGHT","LEFT","I18N_RIGHT","I18N_LEFT","toDir","ltrChars_","rtlChars_","htmlSkipReg_","stripHtmlIfNeeded_","rtlCharReg_","ltrCharReg_","hasAnyRtl","hasRtlChar","hasAnyLtr","ltrRe_","rtlRe_","isRtlChar","isLtrChar","isNeutralChar","ltrDirCheckRe_","rtlDirCheckRe_","startsWithRtl","isRtlText","startsWithLtr","isLtrText","isRequiredLtrRe_","isNeutralText","ltrExitDirCheckRe_","rtlExitDirCheckRe_","endsWithLtr","isLtrExitText","endsWithRtl","isRtlExitText","rtlLocalesRe_","isRtlLanguage","bracketGuardTextRe_","guardBracketInText","enforceRtlInHtml","enforceRtlInText","enforceLtrInHtml","enforceLtrInText","dimensionsRe_","leftRe_","rightRe_","tempRe_","mirrorCSS","doubleQuoteSubstituteRe_","singleQuoteSubstituteRe_","normalizeHebrewQuote","wordSeparatorRe_","hasNumeralsRe_","rtlDetectionThreshold_","estimateDirection","detectRtlDirectionality","setElementDirAndAlign","style","textAlign","setElementDirByTextDirectionality","DirectionalString","TrustedResourceUrl","privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_","trustedURL_","TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","implementsGoogI18nBidiDirectionalString","getDirection","cloneWithParams","URL_PARAM_PARSER_","createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse","stringifyParams_","unwrapTrustedScriptURL","unwrapTrustedURL","BASE_URL_","FORMAT_MARKER_","formatWithParams","fromConstants","internal","startsWith","endsWith","caseInsensitiveStartsWith","caseInsensitiveCompare","caseInsensitiveEndsWith","caseInsensitiveEquals","isEmptyOrWhitespace","newLineToBr","htmlEscape","AMP_RE_","LT_RE_","GT_RE_","QUOT_RE_","SINGLE_QUOTE_RE_","NULL_RE_","ALL_RE_","whitespaceEscape","caseInsensitiveContains","compareVersions","compareElements_","SafeUrl","privateDoNotAccessOrElseSafeUrlWrappedValue_","SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","INNOCUOUS_STRING","createSafeUrlSecurityPrivateDoNotAccessOrElse","SAFE_MIME_TYPE_PATTERN_","isSafeMimeType","fromBlob","DATA_URL_PATTERN_","fromDataUrl","fromTelUrl","SIP_URL_PATTERN_","fromSipUrl","fromFacebookMessengerUrl","fromWhatsAppUrl","fromSmsUrl","isSmsUrlBodyValid_","fromSshUrl","sanitizeChromeExtensionUrl","sanitizeExtensionUrl_","sanitizeFirefoxExtensionUrl","sanitizeEdgeExtensionUrl","fromTrustedResourceUrl","SAFE_URL_PATTERN_","SAFE_URL_PATTERN","sanitizeAssertUnchanged","ABOUT_BLANK","SafeStyle","privateDoNotAccessOrElseSafeStyleWrappedValue_","SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","createSafeStyleSecurityPrivateDoNotAccessOrElse","sanitizePropertyValue_","sanitizePropertyValueString_","FUNCTIONS_RE_","URL_RE_","VALUE_RE_","COMMENT_RE_","hasBalancedQuotes_","hasBalancedSquareBrackets_","VALUE_ALLOWED_CHARS_","sanitizeUrl_","SafeStyleSheet","privateDoNotAccessOrElseSafeStyleSheetWrappedValue_","SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","createRule","hasBalancedBrackets_","createSafeStyleSheetSecurityPrivateDoNotAccessOrElse","labs","util","getNativeUserAgentString_","getNavigator_","userAgent_","setUserAgent","getUserAgent","matchUserAgent","matchUserAgentIgnoreCase","extractVersionTuples","browser","matchOpera_","matchIE_","matchEdgeHtml_","matchEdgeChromium_","matchOperaChromium_","matchFirefox_","matchSafari_","matchChrome_","matchCoast_","isSilk","matchIosWebview_","matchAndroidBrowser_","isChrome","isFirefox","isOpera","isIE","isEdge","isEdgeChromium","isOperaChromium","isSafari","isCoast","isIosWebview","isAndroidBrowser","getVersion","getIEVersion_","isVersionOrHigher","SafeHtml","privateDoNotAccessOrElseSafeHtmlWrappedValue_","SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","dir_","unwrapTrustedHTML","createSafeHtmlSecurityPrivateDoNotAccessOrElse","htmlEscapePreservingNewlines","htmlEscapePreservingNewlinesAndSpaces","VALID_NAMES_IN_TAG_","URL_ATTRIBUTES_","action","cite","formaction","href","manifest","poster","NOT_ALLOWED_TAG_NAMES_","verifyTagName","createSafeHtmlTagSecurityPrivateDoNotAccessOrElse","createIframe","srcdoc","combineAttributes","sandbox","createSandboxIframe","canUseSandboxIframe","HTMLIFrameElement","createScriptSrc","createStyle","createMetaRefresh","getAttrNameAndValue_","getStyleValue_","createWithDir","concatWithDir","stringifyAttributes","DOCTYPE_HTML","uncheckedconversions","safeHtmlFromStringKnownToSatisfyTypeContract","safeScriptFromStringKnownToSatisfyTypeContract","safeStyleFromStringKnownToSatisfyTypeContract","safeStyleSheetFromStringKnownToSatisfyTypeContract","safeUrlFromStringKnownToSatisfyTypeContract","trustedResourceUrlFromStringKnownToSatisfyTypeContract","safe","InsertAdjacentHtmlPosition","AFTERBEGIN","AFTEREND","BEFOREBEGIN","BEFOREEND","insertAdjacentHtml","insertAdjacentHTML","SET_INNER_HTML_DISALLOWED_TAGS_","isInnerHtmlCleanupRecursive_","firstChild","innerHTML","parentElement","unsafeSetInnerHtmlDoNotUseOrElse","lastChild","setInnerHtml","tagName","setOuterHtml","outerHTML","setFormElementAction","setButtonFormAction","formAction","setInputFormAction","setStyle","cssText","documentWrite","setAnchorHref","setImageSrc","setAudioSrc","setVideoSrc","setEmbedSrc","setFrameSrc","setIframeSrc","setIframeSrcdoc","setLinkHrefAndRel","rel","setObjectData","setScriptSrc","setScriptContent","text","setLocationHref","assignLocation","replaceLocation","openInWindow","parseFromStringHtml","parseFromString","createImageFromBlob","Image","DETECT_DOUBLE_ESCAPING","FORCE_NON_DOM_HTML_UNESCAPING","Unicode","NBSP","subs","collapseWhitespace","isEmptyString","isEmptyOrWhitespaceSafe","makeSafe","isEmptySafe","isBreakingWhitespace","isAlpha","isNumeric","isAlphaNumeric","isSpace","isUnicodeChar","stripNewlines","canonicalizeNewlines","normalizeWhitespace","normalizeSpaces","collapseBreakingSpaces","trimLeft","numberAwareCompare_","intAwareCompare","floatAwareCompare","numerateCompare","urlEncode","urlDecode","E_RE_","unescapeEntities","unescapeEntitiesUsingDom_","unescapePureXmlEntities_","unescapeEntitiesWithDocument","HTML_ENTITY_PATTERN_","nodeValue","preserveSpaces","stripQuotes","truncate","truncateMiddle","specialEscapeChars_","jsEscapeCache_","escapeChar","escapeString","countOf","removeAll","regExpEscape","replaceAll","padNumber","buildString","getRandomString","hashCode","uniqueStringCounter_","createUniqueString","toNumber","isLowerCamelCase","isUpperCamelCase","toCamelCase","toSelectorCase","toTitleCase","capitalize","splitLimit","lastComponent","editDistance","engine","isPresto","isTrident","isWebKit","isGecko","getEngineTuple_","getVersionForKey_","isAndroid","isIpod","isIphone","isIpad","isIos","isMacintosh","isLinux","isWindows","isChromeOS","isChromecast","isKaiOS","isGo2Phone","reflect","objectProperty","sinkValue","canAccessProperty","cache","ASSUME_IE","ASSUME_EDGE","ASSUME_GECKO","ASSUME_WEBKIT","ASSUME_MOBILE_WEBKIT","ASSUME_OPERA","ASSUME_ANY_VERSION","BROWSER_KNOWN_","getUserAgentString","getNavigatorTyped","getNavigator","OPERA","IE","EDGE","EDGE_OR_IE","GECKO","WEBKIT","isMobile_","MOBILE","SAFARI","determinePlatform_","PLATFORM","ASSUME_MAC","ASSUME_WINDOWS","ASSUME_LINUX","ASSUME_X11","ASSUME_ANDROID","ASSUME_IPHONE","ASSUME_IPAD","ASSUME_IPOD","ASSUME_KAIOS","ASSUME_GO2PHONE","PLATFORM_KNOWN_","MAC","WINDOWS","isLegacyLinux_","LINUX","isX11_","appVersion","X11","ANDROID","IPHONE","IPAD","IPOD","IOS","KAIOS","GO2PHONE","determineVersion_","getVersionRegexResult_","getDocumentMode_","documentMode","VERSION","isVersionOrHigherCache_","isVersion","isDocumentModeOrHigher","DOCUMENT_MODE","isDocumentMode","product","ASSUME_FIREFOX","ASSUME_CHROME","ASSUME_SAFARI","PRODUCT_KNOWN_","FIREFOX","isIphoneOrIpod_","CHROME","isSafariDesktop_","DEFAULT_ALPHABET_COMMON_","ENCODED_VALS","ENCODED_VALS_WEBSAFE","Alphabet","DEFAULT","NO_PADDING","WEBSAFE","WEBSAFE_DOT_PADDING","WEBSAFE_NO_PADDING","paddingChars_","isPadding_","byteToCharMaps_","charToByteMap_","ASSUME_NATIVE_SUPPORT_","HAS_NATIVE_ENCODE_","btoa","HAS_NATIVE_DECODE_","encodeByteArray","init_","encodeString","decodeString","decodeStringInternal_","decodeStringToByteArray","decodeStringToUint8Array","subarray","utils","split64Low","split64High","splitUint64","splitInt64","splitZigzag64","splitFloat32","log","LN2","splitFloat64","splitHash64","joinUint64","joinInt64","toZigzag64","joinZigzag64","fromZigzag64","joinFloat32","Infinity","joinFloat64","joinHash64","DIGITS","ZERO_CHAR_CODE_","A_CHAR_CODE_","joinUnsignedDecimalString","joinSignedDecimalString","hash64ToDecimalString","hash64ArrayToDecimalStrings","decimalStringToHash64","splitDecimalString","toHexDigit_","fromHexCharCode_","hash64ToHexString","hexStringToHash64","hash64ToNumber","numberToHash64","countVarints","countVarintFields","countFixedFields_","countFixed32Fields","countFixed64Fields","countDelimitedFields","debugBytesToTextFormat","byteSourceToUint8Array","debugScalarToTextFormat","BinaryDecoder","bytes_","cursor_","end_","start_","error_","setBlock","instanceCache_","free","getBuffer","getEnd","setEnd","getCursor","setCursor","advance","atEnd","pastEnd","readSplitVarint64","readSplitZigzagVarint64","readSplitFixed64","skipVarint","unskipVarint","readUnsignedVarint32","readSignedVarint32","readUnsignedVarint32String","readSignedVarint32String","readZigzagVarint32","readUnsignedVarint64","readUnsignedVarint64String","readSignedVarint64","readSignedVarint64String","readZigzagVarint64","readZigzagVarintHash64","readZigzagVarint64String","readUint8","readUint16","readUint32","readUint64","readUint64String","readInt8","readInt16","readInt32","readInt64","readInt64String","readFloat","readDouble","readBool","readEnum","readString","readStringWithLength","readBytes","readVarintHash64","readFixedHash64","BinaryReader","decoder_","fieldCursor_","nextField_","nextWireType_","readCallbacks_","getFieldCursor","getFieldNumber","getWireType","isDelimited","isEndGroup","nextField","unskipHeader","skipMatchingFields","skipField","skipVarintField","skipDelimitedField","skipFixed32Field","skipFixed64Field","skipGroup","registerReadCallback","runReadCallback","readAny","readFixed64","readFixed32","readSfixed32","readSfixed64","readSint32","readSint64","readMessage","readGroup","getFieldDecoder","readInt32String","readUint32String","readSint64String","readFixed64String","readSfixed32String","readSfixed64String","readSintHash64","readPackedField_","readPackedInt32","readPackedInt32String","readPackedInt64","readPackedInt64String","readPackedUint32","readPackedUint32String","readPackedUint64","readPackedUint64String","readPackedSint32","readPackedSint64","readPackedSint64String","readPackedFixed32","readPackedFixed64","readPackedFixed64String","readPackedSfixed32","readPackedSfixed64","readPackedSfixed64String","readPackedFloat","readPackedDouble","readPackedBool","readPackedEnum","readPackedVarintHash64","readPackedFixedHash64","BinaryEncoder","buffer_","writeSplitVarint64","writeSplitFixed64","writeUint32","writeUnsignedVarint32","writeSignedVarint32","writeUnsignedVarint64","writeSignedVarint64","writeZigzagVarint32","writeZigzagVarint64","writeZigzagVarint64String","writeZigzagVarintHash64","writeUint8","writeUint16","writeUint64","writeInt8","writeInt16","writeInt32","writeInt64","writeInt64String","writeFloat","writeDouble","writeBool","writeEnum","writeBytes","writeVarintHash64","writeFixedHash64","writeString","arith","UInt64","lo","hi","cmp","rightShift","leftShift","msb","lsb","sub","mul32x32","mul","div","fromString","Int64","BinaryWriter","blocks_","totalLength_","encoder_","bookmarks_","appendUint8Array_","beginDelimited_","writeFieldHeader_","endDelimited_","writeSerializedMessage","maybeWriteSerializedMessage","getResultBuffer","getResultBase64String","beginSubMessage","endSubMessage","writeAny","writeFixed64","writeFixed32","writeSfixed32","writeSfixed64","writeSint32","writeSint64","writeUnsignedVarint32_","writeSignedVarint32_","writeUnsignedVarint64_","writeSignedVarint64_","writeZigzagVarint32_","writeZigzagVarint64_","writeZigzagVarint64String_","writeZigzagVarintHash64_","writeInt32String","writeUint32String","writeUint64String","writeSintHash64","writeSint64String","writeFixed64String","writeSfixed64String","writeMessage","writeMessageSet","writeGroup","writeSplitZigzagVarint64","writeRepeatedInt32","writeRepeatedInt32String","writeRepeatedInt64","writeRepeatedSplitFixed64","writeRepeatedSplitVarint64","writeRepeatedSplitZigzagVarint64","writeRepeatedInt64String","writeRepeatedUint32","writeRepeatedUint32String","writeRepeatedUint64","writeRepeatedUint64String","writeRepeatedSint32","writeRepeatedSint64","writeRepeatedSint64String","writeRepeatedSintHash64","writeRepeatedFixed32","writeRepeatedFixed64","writeRepeatedFixed64String","writeRepeatedSfixed32","writeRepeatedSfixed64","writeRepeatedSfixed64String","writeRepeatedFloat","writeRepeatedDouble","writeRepeatedBool","writeRepeatedEnum","writeRepeatedString","writeRepeatedBytes","writeRepeatedMessage","writeRepeatedGroup","writeRepeatedFixedHash64","writeRepeatedVarintHash64","writePackedInt32","writePackedInt32String","writePackedInt64","writePackedSplitFixed64","writePackedSplitVarint64","writePackedSplitZigzagVarint64","writePackedInt64String","writePackedUint32","writePackedUint32String","writePackedUint64","writePackedUint64String","writePackedSint32","writePackedSint64","writePackedSint64String","writePackedSintHash64","writePackedFixed32","writePackedFixed64","writePackedFixed64String","writePackedSfixed32","writePackedSfixed64","writePackedSfixed64String","writePackedFloat","writePackedDouble","writePackedBool","writePackedEnum","writePackedFixedHash64","writePackedVarintHash64","arr_","valueCtor_","map_","arrClean","loadFromArray_","Entry_","valueWrapper","stringKeys_","wrapEntry_","fromObject","ArrayIteratorIterable_","idx_","getLength","getEntryList","serializeBinary","deserializeBinary","ExtensionFieldInfo","fieldIndex","fieldName","ctor","toObjectFn","isRepeated","ExtensionFieldBinaryInfo","fieldInfo","binaryReaderFn","binaryWriterFn","binaryMessageSerializeFn","binaryMessageDeserializeFn","isPacked","isMessageType","Message","GENERATE_TO_OBJECT","GENERATE_FROM_OBJECT","GENERATE_TO_STRING","ASSUME_LOCAL_ARRAYS","SERIALIZE_EMPTY_TRAILING_FIELDS","SUPPORTS_UINT8ARRAY_","getJsPbMessageId","messageId_","getIndex_","arrayIndexOffset_","hiddenES6Property_","getFieldNumber_","initialize","wrappers_","initPivotAndExtensionObject_","convertedPrimitiveFields_","repeatedFields","pivot_","EMPTY_LIST_SENTINEL_","maybeInitEmptyExtensionObject_","extensionObject_","computeOneofCase","isArray_","isExtensionObject_","MAX_VALUE","toObjectList","toObjectExtension","serializeBinaryExtensions","readBinaryExtension","getField","getRepeatedField","getOptionalFloatingPointField","getBooleanField","getRepeatedFloatingPointField","getRepeatedBooleanField","bytesAsB64","bytesAsU8","bytesListAsB64","assertConsistentTypes_","bytesListAsU8","getFieldWithDefault","getBooleanFieldWithDefault","getFloatingPointFieldWithDefault","getFieldProto3","getMapField","setField","setProto3IntField","setFieldIgnoringDefault_","setProto3FloatField","setProto3BooleanField","setProto3StringField","setProto3BytesField","setProto3EnumField","setProto3StringIntField","addToRepeatedField","setOneofField","getWrapperField","getRepeatedWrapperField","wrapRepeatedField_","setWrapperField","setOneofWrapperField","setRepeatedWrapperField","addToRepeatedWrapperField","toMap","syncMapFields_","getExtension","setExtension","compareFields","compareExtensions","cloneMessage","clone_","copyInto","registerMessageType","messageId","messageSetExtensions","messageSetExtensionsBinary","Export","$BigInt","hasNativeBigInts","origSymbol","hasSymbolSham","hasNativeSymbols","sym","symObj","symVal","syms","descriptor","hasToStringTagShams","toStringTag","hasToStringTag","$toString","isStandardArguments","isLegacyArguments","supportsStandardArguments","hasBigInts","bigIntValueOf","tryBigInt","tryBigIntObject","isBigInt","$boolToStr","tryBooleanObject","booleanBrandCheck","boolClass","isSlowBuffer","_isBuffer","readFloatLE","tryDateObject","tryDateGetDayCall","dateClass","isDateObject","exported","numToStr","tryNumberObject","numClass","isNumberObject","$exec","isRegexMarker","badStringifier","throwRegexMarker","toPrimitive","gOPD","regexClass","hasLastIndexDataProperty","strValue","tryStringObject","strClass","symToStr","symStringRegex","isSymbolObject","isRealSymbolObject","typedArrays","$slice","toStrTags","typedArray","proto","superProto","tryTypedArrays","tryAllTypedArrays","anyTrue","getter","isTypedArray","tag","$WeakMap","$WeakSet","isWeakMap","isWeakSet","getCountryCode","localeString","components","countryCode","getLocales","locales","AD","AE","AF","AG","AI","AL","AM","AN","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HT","HU","ID","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SX","SY","SZ","TC","TF","TG","TJ","TK","TL","TM","TN","TO","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","LRUCache","lc","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lengthCalculator","lC","hit","itemCount","rforEach","thisp","walker","tail","forEachStep","dump","isStale","dumpLru","Entry","expiresAt","prune","doUse","unshiftNode","removeNode","Node","pushNode","res","forEachReverse","getReverse","mapReverse","initial","acc","reduceReverse","toArrayReverse","sliceReverse","deleteCount","inserted","md5","FF","_ff","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","simpleIsEqual","resultFn","lastThis","lastArgs","lastResult","calledOnce","isNewArgEqualToLast","newArg","_len","newArgs","_key","_global","MurmurHashV2","seed","MurmurHashV3","h1","h1b","c1","c1b","c2","c2b","k1","murmur","v2","v3","propIsEnumerable","shouldUseNative","test1","test2","order2","test3","letter","symbols","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","gOPS","symToString","hasShammedSymbols","isEnumerable","addNumericSeparator","sepRegex","intStr","dec","inspectCustom","custom","inspectSymbol","inspect_","depth","seen","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","isElement","nodeName","attrs","attributes","wrapQuotes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","mapParts","collectionOf","setParts","weakCollectionOf","isWeakRef","ys","isPlainObject","protoTag","stringTag","constructorTag","defaultStyle","quoteChar","HTMLElement","remaining","trailer","lowbyte","joinedEntries","baseIndent","lineJoiner","isArr","symMap","numberIsNaN","getPolyfill","shim","shimObjectIs","testObjectIs","keysShim","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","theKeys","skipProto","skipConstructor","origKeys","originalKeys","shimObjectKeys","keysWorksWithArguments","canBeObject","$push","$propIsEnumerable","originalGetSymbols","source1","objTarget","getSymbols","lacksProperEnumerationOrder","letters","assignHasPendingExceptions","preventExtensions","thrower","shimAssign","$Object","hasIndices","ignoreCase","multiline","dotAll","unicode","sticky","flagsBound","TypeErr","shimFlags","$weakMapGet","$weakMapSet","$weakMapHas","$mapSet","listGetNode","listGet","objects","listSet","listHas","$wm","$m","$o","isExtendedLengthPath","hasNonAscii","v1","v4","uuid","byteToHex","bytesToUuid","bth","crypto","nodeRNG","rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","rnds","ii","foundName","Query","filterExpressions","selectExpressions","groupExpressions","orderExpressions","calculation","rawMode","withDead","validateRefs","expr","unfilter","exprs","exprSet","select","query","calculate","groupBy","orderBy","withoutValidatedRefs","tableOptions","getPrimaryOrderBy","defaultOrderBy","orderExprs","order","firstOrder","table","injected","runImport","budgetName","loadBudget","budgetId","id","batchBudgetUpdates","runQuery","getBudgetMonths","getBudgetMonth","setBudgetAmount","categoryId","setBudgetCarryover","flag","addTransactions","accountId","transactions","importTransactions","getTransactions","filterTransactions","updateTransaction","fields","deleteTransaction","getAccounts","createAccount","account","initialBalance","updateAccount","closeAccount","transferAccountId","transferCategoryId","reopenAccount","deleteAccount","getCategoryGroups","grouped","createCategoryGroup","group","updateCategoryGroup","deleteCategoryGroup","getCategories","createCategory","category","updateCategory","deleteCategory","getPayees","createPayee","payee","updatePayee","deletePayee","getPayeeRules","payeeId","createPayeeRule","payee_id","updatePayeeRule","deletePayeeRule","normalizePathSep","AdmZip","amountToInteger","mapAccountType","keyName","_parse","monthFromDate","getCurrentMonth","importAccounts","entityIdMap","accounts","isTombstone","accountType","accountName","offbudget","onBudget","closed","entityId","importCategories","masterCategories","masterCategory","subCategories","cat","is_income","group_id","masterCategoryId","importPayees","payees","autoFillCategoryId","transfer_acct","targetAccountId","categories","incomeCategoryId","getCategory","isOffBudget","acctId","acct","transaction","sortOrder","transactionsGrouped","toImport","transferId","transferTransactionId","newTransaction","notes","memo","transfer_id","subtransactions","subTransactions","fillInBudgets","categoryBudgets","budgets","budgeted","importBudgets","monthlyBudgets","earliestMonth","carryoverFlags","budget","filled","monthlySubCategoryBudgets","catBudget","catId","overspendingHandling","estimateRecentness","findLatestDevice","zipped","devices","contents","hasFullKnowledge","deviceGUID","shortName","shortDeviceId","recentness","knowledge","doImport","getBudgetName","unixFilepath","getFile","paths","importBuffer","dirMatch","metaStr","budgetPath","relativeDataFolderName","deviceFiles","yfullPath","integerToAmount","amountFromYnab","deleted","on_budget","incomeCatId","ynabIncomeCategories","checkSpecialCat","category_group_id","category_groups","groupId","cats","newCategory","startingBalanceCatId","startingPayeeYNAB","subtransactionsGrouped","subtrans","category_id","account_id","cleared","imported_id","import_id","transfer_transaction_id","transfer_account_id","internalCatIdYnab","creditcardCatIdYnab","importYNAB5","runMigration","db","getValue","cachedValue","execQuery","monthBudget","dbmonth","sheetName","carryover","buffers","parseNote","note","parsed","FileSystem","_filename","FLG_LNG","_permissions","PATH_SEPARATOR","recoursive","writeInt32LE","inputType","nameA","nameB","handler","handlers","evt","pickRandom","integer","findMin","getStartingBalanceCat","extractCommonThings","groups","incomePayee","expensePayees","expenseGroup","incomeGroup","bill","expenseCategories","billCategories","billPayees","fillPrimaryChecking","numTransactions","monthUtils","pick","earliestDate","starting_balance_flag","fillChecking","added","fastMode","fillInvestment","fillSavings","fillMortgage","fillOther","createBudget","primaryAccount","earliestPrimaryDate","setBudget","budgetActions","setBudgetIfSpent","spent","sheet","runMutator","batchMessages","prevSaved","toBudget","available","createTestBudget","setSyncingMode","offBudget","categoryGroups","isIncome","allGroups","runHandler","aqlQuery","$sum","primaryBalance","$gt","lastDeposit","prefs","isCached","captureException","exc","SentryClient","captureBreadcrumb","breadcrumb","addBreadcrumb","lootFs","getStorePath","getDataDir","store","persisted","init","persist","_saveStore","writeFile","getItem","setItem","removeItem","multiGet","multiSet","keyValues","multiRemove","fetch","fetchBinary","fileStream","createWriteStream","body","documentDir","rootPath","__dirname","__filename","env","ACTUAL_DATA_DIR","_setDocumentDir","getDocumentDir","getBudgetDir","bundledDatabasePath","migrationsPath","demoBudgetPath","listDir","readdir","access","constants","F_OK","mkdir","copyFile","frompath","topath","readStream","createReadStream","writeStream","removeFile","unlink","removeDir","dirpath","rmdir","removeDirRecursively","fullpath","getModifiedTime","Database","verifyParamTypes","sql","params","fetchAll","stmt","changes","insertId","lastInsertRowid","transactionDepth","asyncTransaction","openDatabase","pathOrBuffer","closeDatabase","exportDatabase","v4Sync","exportToCSV","accountNamesById","reduced","categoryNamesById","subCategory","payeeNamesById","transactionsForExport","Account","Payee","Notes","Category","Amount","csvStringify","exportQueryToCSV","Id","ParentId","IsParent","splits","parentsPayees","trans","noParents","handoffPublicToken","institution","publicToken","asyncStorage","userId","institution_id","post","getServer","PLAID_SERVER","item_id","public_token","bank_id","addAccounts","bankId","accountIds","offbudgetIds","userKey","bankSync","official_name","fromPlaidAccountType","balance_current","balances","current","mask","bank","parseFile","errors","ext","parseQIF","parseCSV","parseOFX","csv2json","qif2json","looselyParseAmount","payee_name","imported_payee","getOFXTransactions","initModule","fi_id","dayFromDate","description","row","getStartingBalancePayee","qif","line","division","address","lArray","subcategory","clearedStatus","sArray","dateFormat","safeNumber","safeParseInt","RuleError","parseRecurDate","recurConfigToRSchedule","RSchedule","parseDateString","dateFns","parseBetweenAmount","between","num1","num2","CONDITION_TYPES","ops","nullable","op","Condition","fieldTypes","typeName","rawValue","unparsedValue","fieldValue","outflow","inflow","extractValue","fieldDate","fullDate","high","low","yearFromDate","threshold","getApproxNumberThreshold","sortNumbers","ACTION_OPS","Action","stage","conditions","actions","evalConditions","condition","execActions","getId","RuleIndexer","getIndex","getIndexForValue","getKey","getIndexes","cond","indexes","getApplicableRules","indexedRules","fastSetMerge","OP_SCORES","oneOf","isapprox","isbetween","gt","gte","lt","lte","computeScore","initialScore","score","_rankRules","scores","r1","r2","score1","score2","id1","id2","rankRules","pre","normal","migrateIds","mappings","ci","ai","iterateIds","counts","ruleiter","vi","levenshtein","BankSyncError","makeSplitTransaction","recalculateSplit","is_parent","idx","makeChildTransaction","sort_order","parent","getAccountBalance","updateAccountBalance","balance","fromPlaid","transaction_id","downloadTransactions","since","allTransactions","accountBalance","pageSize","numDownloaded","start_date","end_date","error_code","error_type","total_transactions","resolvePayee","payeeName","payeesToCreate","newPayee","normalizeTransactions","rawPayeeName","normalized","trimmed","title","createNewPayees","addsAndUpdates","usedPayeeIds","reconcileTransactions","hasMatched","updated","transactionsStep1","fuzzyDataset","transactionsStep2","transactionsStep3","existing","updates","hasFieldsChanged","finalTransaction","batchUpdateTransactions","runTransfers","newTransactions","syncAccount","latestTransaction","startingTransaction","acctRow","startingDay","currentBalance","previousBalance","oldestDate","initialId","lowerCase","specials","character","convertToRegExp","parseMatch","lead","forced","lower","parsedMatch","fullLower","customSpecials","special","replaceRegExp","conjunctions","articles","prepositions","intended","allRules","unlistenSync","firstcharIndexer","payeeIndexer","resetState","invert","fromEntries","internalFields","schemaConfig","views","publicFields","fromInternalField","toInternalField","ruleModel","requiredFields","toJS","parseArray","fromJS","makeRule","FIELD_TYPES","getMappings","loadRules","addSyncListener","onApplySync","getRules","insertRule","updateRule","deleteRule","oldValues","newValues","newValue","oldRule","tombstone","tables","finalTrans","allChanges","conditionsToAQL","recurDateBounds","filters","$and","$lt","$transform","$eq","$or","$gte","$lte","applyActions","transactionIds","parsedActions","getRulesForPayee","getIsSetterRules","condField","actionField","condValue","actionValue","getOneOfSetterRules","updatePayeeRenameRule","fromNames","renameRule","getProbableCategory","winner","updateCategoryRules","payeeIds","transIds","register","toDateRepr","partitionByField","categoriesToSet","latestTrans","ruleSetters","newRule","migrateOldRules","allPayees","payeesById","rulesByPayeeId","payeeRules","r","payeeRule","catRules","ids","prevMode","connection","idsWithChildren","whereIds","whereIn","rows","getTransactionsByIds","incrFetch","where","learnCategories","detectOrphanPayees","addedIds","updatedIds","deletedIds","oldPayees","descUpdatedIds","allAdded","allUpdated","allDeleted","resultAdded","resultUpdated","transfer","newPayeeIds","allOrphaned","orphanedIds","updatedPayeeIds","getPayee","getTransferredAccount","clearCategory","transferAcct","fromOffBudget","toOffBudget","addTransfer","transferredAccount","fromPayee","parent_id","categoryCleared","removeTransfer","transferTrans","is_child","updateTransfer","onInsert","onDelete","onUpdate","transactionModel","models","toExternal","fromExternal","imported_description","financial_id","transferred_id","accountModel","categoryModel","cat_group","categoryGroupModel","payeeModel","payeeRuleModel","resolveName","IMPORT_MODE","APIError","withMutation","latestTimestamp","getClock","getNumClients","dataset","undoDisabled","validateMonth","validateExpenseCategory","batchPromise","currentId","avoidUpload","markCacheDirty","cloudStorage","catch","getCellValue","incomeAvailable","lastMonthOverspent","forNextMonth","totalBudgeted","fromLastMonth","totalIncome","totalSpent","totalBalance","received","startMonth","ungroupTransactions","serverHandlers","App","services","events","mitt","unlistenServices","service","combine","apps","app","listeners","listener","startServices","stopServices","unlisten","createApp","_uid","resetUid","uid","tableName","CompileError","nativeDateToInt","pad","dateToInt","addTombstone","schema","tableId","whereStr","hasTombstone","popPath","isKeyword","quoteAlias","typed","literal","getFieldDescription","fieldDesc","makePath","initialTable","ref","joinTable","parentParts","parentPath","parentDesc","joinField","resolvePath","fullName","implicitTableName","pathInfo","transformField","implicitTableId","refPath","refPathInfo","noMapping","fieldStr","parseMonth","badDateFormat","inferParam","existingType","paramType","casts","float","castInput","expr2","castedExpr","valArray","types","validateArgLength","saveStack","compileStack","prettyValue","expanded","getCompileError","stackStr","fieldRef","opData","rootMethod","methodArgs","compileLiteral","compileExpr","implicitField","paramName","namedParameters","compileFunction","assertType","acceptedTypes","assertArgLength","argExprs","arg1","orders","compileOrderBy","arg2","arg3","conds","compileConditions","compileOp","opExpr","rhs","lhs","left","right","condsObj","compiled","compileAnd","compileOr","compileWhere","compileJoins","tableRef","internalTableFilters","joins","dependencies","expandStar","compileSelect","isAggregate","outputTypes","compileGroupBy","$dir","AGGREGATE_FUNCTIONS","isAggregateFunction","ex","isAggregateQuery","queryState","compileQuery","tableViews","tableFilters","customizeQuery","isJoin","view","dependences","sqlPieces","defaultConstructQuery","generateSQLWithState","generateSQL","applyTypes","convertOutputType","runCompiledQuery","pieces","executors","paramArray","convertInputType","isRequired","required","fromDateRepr","conform","skipNull","tableSchema","convertForInsert","rawObj","default","convertForUpdate","convertFromSelect","toGroup","parents","mapper","childs","execTransactions","splitType","execTransactionsBasic","execTransactionsGrouped","_isUnhappy","isHappyPathQuery","whereDead","allSql","matched","rowSql","finalSql","allRows","pid","_parent_id","_unmatched","next_date","completed","posts_transaction","_payee","_account","_amount","_amountOp","_conditions","_actions","$condition","$nocase","v_payees","v_categories","v_schedules","v_transactions_internal","v_transactions_internal_alive","v_transactions","_runCompiledQuery","schemaExecutors","_runQuery","selectFields","as","needsAs","makeViews","viewStrs","fieldMappings","viewName","publicMaker","overrides","internalMaker","LATEST_BACKUP_FILENAME","serviceInterval","getBackups","budgetDir","backupDir","backups","b1","b2","getLatestBackup","isLatest","getAvailableBackups","latestBackup","backup","updateBackups","byDay","removed","dayBackups","isToday","currentBackups","makeBackup","backupId","backupPath","sqlite","toRemove","loadBackup","stopBackupService","startBackupService","lastSyncedTimestamp","lastUploaded","clearInterval","setInterval","getSheetValue","cell","calcBufferedAmount","buffered","getBudgetTable","budgetType","isReflectBudget","isZeroBudget","dbMonth","getBudgetData","getAllMonths","createdMonths","latest","getBudget","setBuffer","setCarryover","copyPreviousMonth","prevMonth","budgetData","prevBudget","setZero","set3MonthAvg","prevMonth1","prevMonth2","prevMonth3","spent1","spent2","spent3","avg","setAllFuture","holdForNextMonth","bufferedAmount","holdForFutureMonths","resetHold","coverOverspending","toBudgeted","leftover","leftoverFrom","amountCovered","fromBudgeted","transferAvailable","transferCategory","setCategoryCarryover","mutator","undoable","mergeUpdates","merged","getBudgetType","getBudgetRange","prevSheetName","createDynamic","initialValue","rollover","report","sumAmounts","handleAccountChange","oldValue","recompute","handleTransactionChange","changedFields","handleCategoryMappingChange","handleCategoryChange","addDeps","addDependencies","removeDeps","removeDependencies","handleCategoryGroupChange","handleBudgetMonthChange","handleBudgetChange","triggerBudgetChanges","old","getChangedValues","doTransfer","categoryIds","totalValue","transferValue","setMeta","createAllBudgets","earliestTransaction","newMonths","setType","nodes","getNodes","cellName","deleteCell","startCacheBarrier","bounds","endCacheBarrier","createStatic","sumAmount","prevCarryover","prevLeftover","refresh","createSummary","income","getBlankSheet","blankMonth","createBlankCategory","createBlankMonth","prevLeftoverPos","flatten2","unflatten2","amounts","lastOverspent","blankSheet","clearSheet","UPLOAD_FREQUENCY_IN_DAYS","checkHTTPStatus","HTTPError","fetchJSON","checkKey","userToken","cloudFileId","encryptKeyId","SYNC_SERVER","fileId","reason","encryption","hasKey","resetSyncState","newKeyState","IS_BETA","PostError","keyId","keySalt","testContent","exportBuffer","rawDbContent","memDb","dbContent","resetClock","metaContent","fileData","dbEntry","metaEntry","FileDownloadError","encryptMeta","dbFile","metaFile","upload","FileUploadError","zipContent","uploadContent","uploadMeta","encrypted","isMissingKey","possiblyUpload","listRemoteFiles","download","arrayBuffer","ab","dbPath","getDatabasePath","setDatabase","reopenDatabase","db_","resetQueryCache","getDatabase","loadClock","clock","deserializeClock","setClock","Timestamp","makeClientId","makeClock","serializeClock","_queryCache","LRU","cached","prepared","firstSync","sendMessages","insertWithUUID","delete_","selectWithSchema","selectFirstWithSchema","insertWithSchema","updateWithSchema","getCategoriesGrouped","insertCategoryGroup","lastGroup","SORT_INCREMENT","moveCategoryGroup","targetId","shoveSortOrders","insertCategory","id_","lastCat","moveCategory","existingTransfers","mapping","insertPayee","deleteTransferPayee","mergePayees","groupById","getOrphanedPayees","getPayeeByName","insertPayeeRule","insertAccount","moveAccount","getTransaction","_addFragmentForAccount","addWhere","showClosed","showOffbudget","fragment","getTransactionsByDate","insertTransaction","allMappings","loadMappings","getMapping","midpoint","below","above","terms","makeQuery","pageCount","fetchedIds","ids2","ENCRYPTION_ALGORITHM","sha256String","createHash","digest","masterKey","masterKeyBuffer","iv","cipher","createCipheriv","final","authTag","getAuthTag","algorithm","decipher","createDecipheriv","setAuthTag","decrypted","createKey","secret","createKeyBuffer","importKey","numBytes","pbkdf2Sync","Key","createFromPassword","password","internals","createFromBase64","loadKey","keyInstance","unloadKey","unloadAllKeys","statusCode","responseBody","SyncError","TransactionError","isCodeError","YNAB4","YNAB5","unresolveName","SyncPb","DEMO_BUDGET_ID","TEST_BUDGET_ID","UNCONFIGURED_SERVER","onSheetChange","names","_getNode","undo","redo","withUndo","term","latestDate","notPaged","groupCategories","payeeCounts","mergeIds","orphaned","validateRule","runValidation","conditionErrors","ruleFieldTypes","actionErrors","someDeletionsFailed","nodeSheet","getNode","createQuery","accts","upgradingId","balance_available","balance_limit","stopPolling","cb","matchedTransactions","updatedAccounts","linkToken","link_token","maxMonths","tracking","trackUsage","autoUpdate","floatingSidebar","seenTutorial","encryptKey","stringToInteger","getDefaultDocumentDir","prefsToSet","resetSync","repairSync","makeTestMessage","seenSubscribe","BASE_SERVER","bootstrapped","SIGNUP_SERVER","offline","setServer","fullSync","prefsPath","findBudgets","recomputeAll","showUpdate","initialFullSync","currentPrefs","trackSizes","getFileSize","dbSize","cacheSize","testMode","testBudgetId","clearFullSyncTimeout","uniqueFileName","idFromFileName","sqliteDb","budgetVersion","updateVersion","logger","setNode","Platform","isWeb","isMobile","__TESTING__","syncMigrations","clearUndo","unseen","installAPI","injectAPI","schedulesApp","budgetApp","notesApp","toolsApp","ACTUAL_DOCUMENT_DIR","setupDocumentsDir","ensureExists","initApp","isDev","socketName","keysStr","lastBudget","$send","$query","$q","$db","$setSyncingMode","ACTUAL_APP_VERSION","dataDir","serverURL","ACTUAL_SERVER_URL","cwd","sendMessage","syncAndReceiveMessages","merkle","SyncProtoBuf","addEventListener","shutdown","trie","keyToTimestamp","fullkey","hash","millis","insertKey","build","timestamps","trie1","trie2","node1","node2","keyset","diffkey","next1","next2","MIGRATIONS_DIR","javascriptMigrations","m1632571489012","withMigrationsDir","oldDir","getMigrationsDir","getMigrationId","getUpMigration","getAppliedMigrations","getMigrationList","migrationsDir","m1","m2","getPending","appliedIds","applyJavaScript","dbInterface","applySql","applyMigration","checkDatabaseValidity","migrate","migration","validateAccountType","categoryGroup","validateType","isParent","isChild","runningMethods","currentContext","mutatingMethods","globalMutationsEnabled","_latestHandlerNames","isMutating","flushRunningMethods","wait","undoTag","promise","enableGlobalMutations","disableGlobalMutations","sequential","initialContext","finally","withMutatorContext","prevContext","getMutatorContext","counters","unrecord","increment","isDesktop","throwIfNot200","contentType","postBinary","loadPrefs","dummyTestPrefs","savePrefs","avoidSync","messages","unloadPrefs","getPrefs","getDefaultPrefs","readPrefs","arr1","arr2","updateConditions","newConditions","scheduleConds","extractScheduleConds","newScheduleConds","replacements","getNextDate","dateCond","getRuleForSchedule","ruleId","fixRuleForSchedule","newId","setNextDate","newNextDate","nd","base_next_date","base_next_date_ts","local_next_date","local_next_date_ts","createSchedule","scheduleId","nextDateRepr","nextDateId","schedule_id","updateSchedule","resetNextDate","oldConditions","stripType","deleteSchedule","skipNextDate","getPossibleTransactions","discoverSchedules","findSchedules","getUpcomingDates","onRuleUpdate","payeeIdx","accountIdx","amountIdx","dateIdx","trackJSONPaths","found","postTransactionForSchedule","getScheduledAmount","advanceSchedulesService","syncSuccess","getHasTransactionsQuery","hasTransData","hasTrans","failedToPost","didPost","getStatus","syncDisabled","subtype","completeEvent","lastScheduleRun","takeDates","getRank","day1","day2","dayDiff","matchSchedules","allOccurs","partialMatchRank","baseOccur","occurs","occur","rank","exactAmount","exact","exactDate","schedulesForPattern","baseStart","numDays","baseConfig","weekly","every2weeks","monthly","monthlyLastDay","s1","s2","monthly1stor3rd","dayValue","monthly2ndor4th","findStartDate","currentConfig","prevConfig","allSchedules","finalized","joinURL","pathname","globalSheet","globalOnChange","globalCacheDb","updateSpreadsheetCache","rawDb","setCacheStatus","mainDb","cacheDb","clean","isCacheDirty","loadSpreadsheet","cacheEnabled","cachePath","Spreadsheet","cachedRows","loadUserBudgets","unloadSpreadsheet","unload","reloadSpreadsheet","startTransaction","budgetMonths","budgetMonth","sheetForMonth","endTransaction","getCell","waitOnSpreadsheet","onFinish","firstValue","Graph","serialized","graph","addNode","adjacent","adjacentIncoming","addEdge","removeEdge","removeIncomingEdges","topologicalSort","generateDOT","getEdges","edges","incomingEdges","incoming","iter","cur","topologicalSortUntil","visited","sorted","sourceNodes","edgeStrings","adj","edge","saveCache","dirtyCells","computeQueue","_meta","hasCell","cells","queueComputation","cellNames","running","runComputations","_dependencies","dep","markCacheSafe","cacheBarrier","pendingChange","getExpr","getCellExpr","getCellValueLoose","bootup","onReady","_markDirty","dynamic","resolved","voidCell","voidValue","newDeps","triggerDatabaseChanges","resolveNamesAsObjects","sheets","resolveNamesAsArrays","coerceBuffer","encode","requestPb","SyncRequest","envelopePb","MessageEnvelope","setTimestamp","messagePb","setDataset","setRow","setColumn","setValue","binaryMsg","EncryptedData","setIv","setAuthtag","setContent","setIsencrypted","addMessages","setGroupid","setFileid","setKeyid","setSince","decode","responsePb","SyncResponse","getMerkle","getMessagesList","getTimestamp","getIsencrypted","binary","getContent","getIv","getAuthtag","getDataset","getRow","getColumn","FULL_SYNC_DELAY","SYNCING_MODE","checkSyncingMode","partIds","serializeValue","deserializeValue","_syncListeners","compareMessages","newMessages","timestampStr","applyMessagesForImport","applyMessages","t1","t2","idsPerTable","fetchData","setIn","oldData","currentMerkle","getIn","setBudgetType","newData","getTablesFromMessages","prevData","receiveMessages","recv","_sendMessages","scheduleFullSync","IS_BATCHING","_BATCHED","batched","getMessagesSince","localMessages","syncTimeout","_fullSync","sinceTimestamp","prevDiffTime","encoder","resBuffer","localTimeChanged","receivedMessages","diffTime","rebuiltMerkle","rebuildMerkleHash","numMessages","clocks","randomString","migrateParentIds","toApply","parentId","_unlisten","listen","opt_data","repeatedFields_","opt_includeInstance","includeInstance","getIv_asB64","authtag","getAuthtag_asB64","getData_asB64","$jspbMessageInstance","reader","deserializeBinaryFromReader","writer","serializeBinaryToWriter","getIv_asU8","getAuthtag_asU8","getData_asU8","isencrypted","getContent_asB64","getContent_asU8","messagesList","fileid","groupid","keyid","getFileid","getGroupid","getKeyid","getSince","setMessagesList","opt_value","opt_index","clearMessagesList","setMerkle","rebuilt","keyState","clock_","MutableTimestamp","maxDrift","counter","_state","murmurhash","setMillis","setCounter","phys","lOld","cOld","lNew","cNew","ClockDriftError","OverflowError","lMsg","cMsg","isoString","DuplicateNodeError","blankPayeeRows","parentPayee","clearedRows","deletedRows","numBlankPayees","numCleared","numDeleted","currentUniqueId","mixpanel","isEnabled","toggle","hashed","isAnonymous","login","BUFFERING","startBuffering","stopBuffering","distinct_id","setProfile","MESSAGE_HISTORY","CURSOR","HISTORY_SIZE","trimHistory","markers","cutoff","appendMessages","undoListening","marker","applyUndoAction","undoMessage","oldItem","redoResurrections","resurrect","runMigrations","migrations","updateViews","hashKey","currentHash","existingFiles","initialName","newName","prettyAccountType","determineOffBudget","sequenceState","queue","pump","onceFn","IS_TESTING","month1","month2","_range","inclusive","rangeInclusive","_dayRange","dayRange","dayRangeInclusive","getMonthIndex","getYearStart","getYearEnd","nameForMonth","getDateFormatRegex","memoizeOne","getDayMonthFormat","getDayMonthRegex","getMonthYearFormat","getMonthYearRegex","getShortYearFormat","getShortYearRegex","TYPE_INFO","amountInflow","amountOutfow","mapField","friendlyOp","deserializeField","getFieldError","unparse","inputKey","unparsed","makeValue","currencyToAmount","makeNumberSuffix","prettyDayName","SU","TU","WE","getRecurringDescription","p1","p2","typeOrder","valOrder","strs","uniqueDays","dayName","abbrevDay","dayNames","SplitTransactionError","makeChild","findParentIndex","getSplit","parentIndex","groupTransaction","ungroupTransaction","applyTransactionDiff","groupedTrans","applyChanges","replaceTransactions","transactionsCopy","newSplit","_deleted","diffItems","newTrans","addSplitTransaction","prevSub","splitTransaction","realizeTempTransactions","currencyFormatter","cleanUUID","mergeObjects","composeCellChanges","flattenArray","arrays","shallowEqual","numKeysA","numKeysB","obj1","obj2","hasChanged","groupBySingle","_groupById","newItems","newGrouped","newItem","debugMemoFailure","prevProps","nextProps","throwError","set1","set2","finalSet","titleFirst","numberFormats","label","numberFormat","setNumberFormat","separator","getNumberFormat","toRelaxedNumber","currencyToInteger","toRelaxedInteger","integerToCurrency","amountToCurrency","amountToPrettyCurrency","semverToNumber"],"mappings":"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G;AACrB,WAAO,CAAC,EAAE,KAAKJ,MAAL,CAAYlF,IAAZ,IAAoB,KAAKkF,MAAL,CAAYlF,IAAZ,CAAiBY,WAAvC,CAAR;AACD;;AAjCmC;;AAoCtC,MAAMgQ,QAAN,SAAuBV,YAAvB,CAAoC;AAClC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEzR,aAAW,CAACiC,OAAO,GAAG,EAAX,EAAe;AACxB,UAAMA,OAAN;AACA,SAAKmQ,MAAL,GAAc,EAAd;AACA,SAAKC,OAAL,GAAe,EAAf;;AACA,SAAK,MAAM1J,IAAX,IAAmB,CAAC,QAAD,EAAW,SAAX,CAAnB,EAA0C;AACxC,YAAM2J,GAAG,GAAGrQ,OAAO,CAAC0G,IAAD,CAAnB;;AACA,UAAI2J,GAAJ,EAAS;AACP,aAAK3J,IAAL,IAAa2J,GAAG,CAACpO,GAAJ,CAAQqO,QAAQ,IAAI;AAC/B,cAAIA,QAAQ,YAAYjB,IAAxB,EAA8B;AAC5B,mBAAOiB,QAAQ,CAAC5L,GAAT,CAAa,UAAb,EAAyB,KAAKzG,QAA9B,CAAP;AACD,WAFD,MAEO;AACL,mBAAO,IAAIoR,IAAJ,CAASiB,QAAT,EAAmB;AACxBrS,sBAAQ,EAAE,KAAKA;AADS,aAAnB,CAAP;AAGD;AACF,SARY,CAAb;AASD;AACF;;AACD,SAAK,MAAMyI,IAAX,IAAmB,CAAC,QAAD,EAAW,SAAX,CAAnB,EAA0C;AACxC,YAAM2J,GAAG,GAAGrQ,OAAO,CAAC0G,IAAD,CAAnB;;AACA,UAAI2J,GAAJ,EAAS;AACP,aAAK3J,IAAL,IACE2J,GAAG,YAAYzJ,KAAf,GACIyJ,GAAG,CAAC3L,GAAJ,CAAQ,UAAR,EAAoB,KAAKzG,QAAzB,CADJ,GAEI,IAAI2I,KAAJ,CAAU;AACRtD,eAAK,EAAE+M,GADC;AAERpS,kBAAQ,EAAE,KAAKA;AAFP,SAAV,CAHN;AAOD,OARD,MAQO;AACL,aAAKyI,IAAL,IAAa,IAAIE,KAAJ,CAAU;AACrB3I,kBAAQ,EAAE,KAAKA;AADM,SAAV,CAAb;AAGD;AACF;;AACD,SAAKiC,WAAL,GACE,KAAKiQ,MAAL,CAAYhL,KAAZ,CAAkBoL,IAAI,IAAIA,IAAI,CAACrQ,WAA/B,KACA,KAAKkQ,OAAL,CAAajL,KAAb,CAAmBoL,IAAI,IAAIA,IAAI,CAACrQ,WAAhC,CADA,IAEA,KAAKsQ,MAAL,CAAYtQ,WAFZ,IAGA,KAAKuQ,OAAL,CAAavQ,WAJf;AAKA,SAAKpB,UAAL,GAAkB,KAAKqR,MAAL,CAAYhK,IAAZ,CAAiBoK,IAAI,IAAIA,IAAI,CAACzR,UAA9B,CAAlB;AACA,SAAK2Q,gBAAL,GAAwB,CACtBxO,GAAG,CAAC,GAAG,KAAKkP,MAAT,CADmB,EAEtB7P,QAAQ,CAAC,GAAG,KAAK8P,OAAT,CAFc,EAGtBnP,GAAG,CAAC,KAAKuP,MAAN,CAHmB,EAItBlQ,QAAQ,CAAC,KAAKmQ,OAAN,CAJc,EAKtBV,MAAM,EALgB,EAMtB5Q,MANsB,CAMf,CAACC,IAAD,EAAOC,IAAP,KAAgBA,IAAI,CAAC;AAAEC,UAAI,EAAEF,IAAR;AAAcnB,cAAQ,EAAE,KAAKA;AAA7B,KAAD,CANL,EAMgDC,SANhD,CAAxB;AAOD;;AACD+C,KAAG,CAACyF,IAAD,EAAOjI,KAAP,EAAc;AACf,UAAM0R,MAAM,GAAG,KAAKA,MAAL,CAAYjJ,KAAZ,EAAf;AACA,UAAMkJ,OAAO,GAAG,KAAKA,OAAL,CAAalJ,KAAb,EAAhB;AACA,QAAIsJ,MAAM,GAAG,KAAKA,MAAlB;AACA,QAAIC,OAAO,GAAG,KAAKA,OAAnB;;AACA,YAAQ/J,IAAR;AACE,WAAK,OAAL;AACEyJ,cAAM,CAACpM,IAAP,CAAYtF,KAAZ;AACA;;AACF,WAAK,QAAL;AACE2R,eAAO,CAACrM,IAAR,CAAatF,KAAb;AACA;;AACF,WAAK,OAAL;AACE+R,cAAM,GAAG,KAAKA,MAAL,CAAYvP,GAAZ,CAAgBxC,KAAhB,CAAT;AACA;;AACF,WAAK,QAAL;AACEgS,eAAO,GAAG,KAAKA,OAAL,CAAaxP,GAAb,CAAiBxC,KAAjB,CAAV;AACA;AAZJ;;AAcA,WAAO,IAAIyR,QAAJ,CAAa;AAClBjS,cAAQ,EAAE,KAAKA,QADG;AAElBsI,UAAI,EAAE,KAAKA,IAFO;AAGlB4J,YAHkB;AAIlBC,aAJkB;AAKlBI,YALkB;AAMlBC;AANkB,KAAb,CAAP;AAQD;;AACDxJ,QAAM,CAACP,IAAD,EAAOjI,KAAP,EAAc;AAClB,QAAI0R,MAAM,GAAG,KAAKA,MAAlB;AACA,QAAIC,OAAO,GAAG,KAAKA,OAAnB;AACA,QAAII,MAAM,GAAG,KAAKA,MAAlB;AACA,QAAIC,OAAO,GAAG,KAAKA,OAAnB;;AACA,YAAQ/J,IAAR;AACE,WAAK,OAAL;AACEyJ,cAAM,GAAGA,MAAM,CAACxK,MAAP,CAAc4K,IAAI,IAAIA,IAAI,KAAK9R,KAA/B,CAAT;AACA;;AACF,WAAK,QAAL;AACE2R,eAAO,GAAGA,OAAO,CAACzK,MAAR,CAAe4K,IAAI,IAAIA,IAAI,KAAK9R,KAAhC,CAAV;AACA;;AACF,WAAK,OAAL;AACE+R,cAAM,GAAG,KAAKA,MAAL,CAAYvJ,MAAZ,CAAmBxI,KAAnB,CAAT;AACA;;AACF,WAAK,QAAL;AACEgS,eAAO,GAAG,KAAKA,OAAL,CAAaxJ,MAAb,CAAoBxI,KAApB,CAAV;AACA;AAZJ;;AAcA,WAAO,IAAIyR,QAAJ,CAAa;AAClBjS,cAAQ,EAAE,KAAKA,QADG;AAElBsI,UAAI,EAAE,KAAKA,IAFO;AAGlB4J,YAHkB;AAIlBC,aAJkB;AAKlBI,YALkB;AAMlBC;AANkB,KAAb,CAAP;AAQD;;AACD/L,KAAG,CAACgC,IAAD,EAAOjI,KAAP,EAAcuB,OAAO,GAAG,EAAxB,EAA4B;AAC7B,QAAI/B,QAAQ,GAAG,KAAKA,QAApB;AACA,QAAIkS,MAAM,GAAG,KAAKA,MAAlB;AACA,QAAIC,OAAO,GAAG,KAAKA,OAAnB;AACA,QAAII,MAAM,GAAG,KAAKA,MAAlB;AACA,QAAIC,OAAO,GAAG,KAAKA,OAAnB;;AACA,YAAQ/J,IAAR;AACE,WAAK,UAAL;AACE,YAAIjI,KAAK,KAAK,KAAKR,QAAf,IAA2B,CAAC+B,OAAO,CAACsH,aAAxC,EAAuD,OAAO,IAAP,CAAvD,KACK,IAAItH,OAAO,CAACsH,aAAZ,EAA2B;AAC9B6I,gBAAM,GAAGA,MAAM,CAAClO,GAAP,CAAWsO,IAAI,IAAIA,IAAI,CAAC7L,GAAL,CAAS,UAAT,EAAqBjG,KAArB,EAA4BuB,OAA5B,CAAnB,CAAT;AACAoQ,iBAAO,GAAGA,OAAO,CAACnO,GAAR,CAAYsO,IAAI,IAAIA,IAAI,CAAC7L,GAAL,CAAS,UAAT,EAAqBjG,KAArB,EAA4BuB,OAA5B,CAApB,CAAV;AACAwQ,gBAAM,GAAGA,MAAM,CAAC9L,GAAP,CAAW,UAAX,EAAuBjG,KAAvB,EAA8BuB,OAA9B,CAAT;AACAyQ,iBAAO,GAAGA,OAAO,CAAC/L,GAAR,CAAY,UAAZ,EAAwBjG,KAAxB,EAA+BuB,OAA/B,CAAV;AACD;AACD/B,gBAAQ,GAAGQ,KAAX;AACA;;AACF,WAAK,QAAL;AACE0R,cAAM,GAAG1R,KAAT;AACA;;AACF,WAAK,SAAL;AACE2R,eAAO,GAAG3R,KAAV;AACA;;AACF,WAAK,QAAL;AACE+R,cAAM,GAAG/R,KAAT;AACA;;AACF,WAAK,SAAL;AACEgS,eAAO,GAAGhS,KAAV;AACA;AAtBJ;;AAwBA,WAAO,IAAIyR,QAAJ,CAAa;AAClBjS,cADkB;AAElBsI,UAAI,EAAE,KAAKA,IAFO;AAGlB4J,YAHkB;AAIlBC,aAJkB;AAKlBI,YALkB;AAMlBC;AANkB,KAAb,CAAP;AAQD;;AAzRiC;AA4RpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,YAAT,CAAsB1S,IAAtB,EAA4B;AAC1B,SAAOgC,OAAO,IAAI,IAAI2Q,oBAAJ,CAAyB3S,IAAzB,EAA+BgC,OAA/B,CAAlB;AACD;;AACD,MAAM2Q,oBAAN,SAAmCrM,QAAnC,CAA4C;AAC1CvG,aAAW,CAACC,IAAD,EAAOwG,MAAP,EAAe;AACxB,UAAMxG,IAAI,CAACuG,OAAX,EAAoBC,MAApB;;AACA,QAAI,KAAK1F,UAAT,EAAqB;AACnB,WAAK8R,mBAAL,GACE5S,IAAI,CAAC4S,mBAAL,IAA4BD,oBAAoB,CAACE,0BADnD;;AAEA,UAAI,CAAC,KAAKD,mBAAV,EAA+B;AAC7B,cAAM,IAAI7P,6DAAJ,CACJ,+CACE,uFADF,GAEE,+EAFF,GAGE,qEAHF,GAIE,wEAJF,GAKE,6EALF,GAME,0DANF,GAOE,+BAPF,GAQE,iFARF,GASE,2EATF,GAUE,kDAXE,CAAN;AAaD;AACF;AACF;;AACD2D,KAAG,CAACsB,CAAD,EAAIvH,KAAJ,EAAW;AACZ,WAAO,IAAIkS,oBAAJ,CACL;AACEC,yBAAmB,EAAE,KAAKA,mBAD5B;AAEErM,aAAO,EAAE,KAAKA,OAAL,CAAatC,GAAb,CAAiBwC,MAAM,IAAIA,MAAM,CAACC,GAAP,CAAW,UAAX,EAAuBjG,KAAvB,CAA3B;AAFX,KADK,EAKLqD,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKyC,MAAvB,CAAd,EAA8C;AAC5ClF,UAAI,EAAE,KAAKkF,MAAL,CAAYlF,IAAZ,IAAoB,KAAKkF,MAAL,CAAYlF,IAAZ,CAAiBoF,GAAjB,CAAqB,UAArB,EAAiCjG,KAAjC,CADkB;AAE5CR,cAAQ,EAAEQ;AAFkC,KAA9C,CALK,CAAP;AAUD;;AACI,GAAJF,IAAI,CAACP,IAAI,GAAG,EAAR,EAAY;AACf,UAAMuG,OAAO,GAAG,KAAKA,OAAL,CAAatC,GAAb,CAAiBwC,MAAM,IAAI,IAAII,eAAJ,CAAoBJ,MAApB,EAA4BzG,IAA5B,CAA3B,CAAhB;;AACA,QAAI,KAAKwG,MAAL,CAAYlF,IAAhB,EAAsB;AACpBiF,aAAO,CAACR,IAAR,CAAa,IAAIc,eAAJ,CAAoB,KAAKL,MAAL,CAAYlF,IAAhC,EAAsCtB,IAAtC,CAAb;AACD;;AACD,QAAIuG,OAAO,CAACW,MAAR,KAAmB,CAAvB,EAA0B;AAC1B,UAAM4L,UAAU,GAAG,CAAC,EAAE,CAAC,KAAKhS,UAAN,IAAoBd,IAAI,CAACgB,OAAzB,IAAoChB,IAAI,CAACe,GAA3C,CAApB;;AACA,QACE,CAACgS,cAAc,CACbxM,OADa,EAEbrG,SAFa,EAGb4D,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB/D,IAAlB,CAAd,EAAuC;AACrC8S,gBADqC;AAErCE,eAAS,EAAE,CAF0B;AAGrCC,mBAAa,EAAE,KAAKL;AAHiB,KAAvC,CAHa,CADjB,EAUE;AACA;AACD;;AACD,QAAInM,MAAM,GAAGgB,kBAAkB,CAAClB,OAAD,EAAUvG,IAAV,CAA/B;;AACA,WAAOyG,MAAP,EAAe;AACb,YAAMtB,SAAS,GAAG,MAAM,KAAKb,kBAAL,CAAwBmC,MAAM,CAAChG,KAA/B,CAAxB;AACA,YAAMyS,aAAa,GAAGzM,MAAM,CAAChG,KAA7B;;AACA,UAAI,EAAE0E,SAAS,KAAK,IAAd,IAAsBA,SAAS,KAAK,KAAK,CAAzC,GAA6C,KAAK,CAAlD,GAAsDA,SAAS,CAAC/B,UAAlE,CAAJ,EAAmF;AACjF;AACAqD,cAAM,CAACjG,IAAP;AACD;;AACD,UACE,CAACuS,cAAc,CACbxM,OADa,EAEb2M,aAFa,EAGbpP,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB/D,IAAlB,CAAd,EAAuC;AACrC8S,kBADqC;AAErCE,iBAAS,EAAE,CAF0B;AAGrCC,qBAAa,EAAE,KAAKL;AAHiB,OAAvC,CAHa,EAQbzN,SARa,CADjB,EAWE;AACA;AACD,OApBY,CAqBb;AACA;;;AACAsB,YAAM,GAAGgB,kBAAkB,CAAClB,OAAD,EAAUvG,IAAV,CAA3B;AACD;AACF;;AACD2G,qBAAmB,GAAG;AACpB;AACA,QAAI,CAAC,KAAKH,MAAL,CAAYlF,IAAjB,EAAuB;AACrB,UAAI,KAAKiF,OAAL,CAAaW,MAAb,KAAwB,CAA5B,EAA+B,OAAO,KAAP;AAC/B,aAAO,KAAKX,OAAL,CAAaY,KAAb,CAAmBV,MAAM,IAAIA,MAAM,CAAC3F,UAApC,CAAP;AACD,KAHD,MAGO,IAAI,KAAKyF,OAAL,CAAaW,MAAb,KAAwB,CAA5B,EAA+B,OAAO,KAAKV,MAAL,CAAYlF,IAAZ,CAAiBR,UAAxB;;AACtC,WAAO,KAAK0F,MAAL,CAAYlF,IAAZ,CAAiBR,UAAjB,IAA+B,KAAKyF,OAAL,CAAaY,KAAb,CAAmBV,MAAM,IAAIA,MAAM,CAAC3F,UAApC,CAAtC;AACD;;AACD8F,sBAAoB,GAAG;AACrB,UAAMwB,eAAe,GAAG,KAAK7B,OAAL,CAAaY,KAAb,CAAmBV,MAAM,IAAIA,MAAM,CAACvE,WAApC,CAAxB;AACA,QAAI,CAAC,KAAKsE,MAAL,CAAYlF,IAAjB,EAAuB,OAAO8G,eAAP;AACvB,WAAO,KAAK5B,MAAL,CAAYlF,IAAZ,CAAiBY,WAAjB,IAAgCkG,eAAvC;AACD;;AA9FyC;;AAgG5C,SAAS2K,cAAT,CAAwBxM,OAAxB,EAAiC2M,aAAjC,EAAgDlR,OAAhD,EAAyDmD,SAAzD,EAAoE;AAClE,QAAM3E,IAAI,GAAGiH,kBAAkB,CAAClB,OAAD,EAAUvE,OAAV,EAAmBmD,SAAnB,CAA/B;AACA,MAAI,CAAC3E,IAAL,EAAW,OAAO,KAAP;AACX,MAAI0S,aAAa,IAAI1S,IAAI,CAACC,KAAL,CAAWgC,OAAX,CAAmByQ,aAAnB,CAArB,EAAwD,OAAO,IAAP;AACxD,MAAI3M,OAAO,CAAC4B,IAAR,CAAa1B,MAAM,IAAIA,MAAM,CAACO,IAA9B,CAAJ,EAAyC,OAAO,KAAP;AACzC,MAAIT,OAAO,CAACY,KAAR,CAAcV,MAAM,IAAIA,MAAM,CAAChG,KAAP,CAAagC,OAAb,CAAqBjC,IAAI,CAACC,KAA1B,CAAxB,CAAJ,EAA+D,OAAO,IAAP;AAC/DuB,SAAO,CAACgR,SAAR;;AACA,MAAIhR,OAAO,CAACiR,aAAR,IAAyB,CAACjR,OAAO,CAAC8Q,UAAlC,IAAgD9Q,OAAO,CAACgR,SAAR,GAAoBhR,OAAO,CAACiR,aAAhF,EAA+F;AAC7F,WAAO,KAAP;AACD,GATiE,CAUlE;;;AACA,QAAME,IAAI,GAAGtL,kBAAkB,CAACtB,OAAD,EAAUvE,OAAV,CAA/B,CAXkE,CAYlE;;AACAuE,SAAO,CAAC6M,OAAR,CAAgB3M,MAAM,IAAI;AACxB;AACA;AACA,QAAI0M,IAAI,CAAC1S,KAAL,CAAWgC,OAAX,CAAmBgE,MAAM,CAAChG,KAA1B,CAAJ,EAAsC;AACtCgG,UAAM,CAACjG,IAAP,CAAY;AAAE4C,gBAAU,EAAE+P,IAAI,CAAC1S;AAAnB,KAAZ;AACD,GALD,EAbkE,CAmBlE;;AACA,SAAOsS,cAAc,CAACxM,OAAD,EAAU2M,aAAV,EAAyBlR,OAAzB,CAArB;AACD;;AAED,MAAMqR,uBAAN,SAAsCxM,eAAtC,CAAsD;AACpD9G,aAAW,CAAC+G,SAAD,EAAYC,OAAZ,EAAqB;AAC9B,UAAMD,SAAN,EAAiBC,OAAjB;AACA,SAAKuM,YAAL,GAAoB,KAAK7S,KAAzB;AACA,SAAKD,IAAL;AACD;;AALmD;;AAOtD,MAAM+S,0BAAN,SAAyC7N,KAAzC,CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8N,aAAT,CAAuBxT,IAAvB,EAA6B;AAC3B,SAAOgC,OAAO,IAAI,IAAIyR,qBAAJ,CAA0BzT,IAA1B,EAAgCgC,OAAhC,CAAlB;AACD;;AACD,MAAMyR,qBAAN,SAAoCnN,QAApC,CAA6C;AAC3CvG,aAAW,CAACC,IAAD,EAAOwG,MAAP,EAAe;AACxB,UAAM,EAAN,EAAUA,MAAV;AACA,SAAKrG,WAAL,GAAmBH,IAAI,CAACG,WAAxB;;AACA,QAAIqG,MAAM,CAAClF,IAAP,IAAe,CAACkF,MAAM,CAAClF,IAAP,CAAYY,WAAhC,EAA6C;AAC3C,YAAM,IAAIa,6DAAJ,CACJ,yFACE,iFAFE,CAAN;AAID;AACF;AACD;;;AACA2D,KAAG,CAACsB,CAAD,EAAIvH,KAAJ,EAAW;AACZ,WAAO,IAAIgT,qBAAJ,CACL;AACEtT,iBAAW,EAAE,KAAKA;AADpB,KADK,EAIL2D,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKyC,MAAvB,CAAd,EAA8C;AAC5ClF,UAAI,EAAE,KAAKkF,MAAL,CAAYlF,IAAZ,IAAoB,KAAKkF,MAAL,CAAYlF,IAAZ,CAAiBoF,GAAjB,CAAqB,UAArB,EAAiCjG,KAAjC,CADkB;AAE5CR,cAAQ,EAAEQ;AAFkC,KAA9C,CAJK,CAAP;AASD;;AACDF,MAAI,CAACP,IAAI,GAAG,EAAR,EAAY;AACd,WAAOA,IAAI,CAACgB,OAAL,GAAe,KAAK0S,UAAL,CAAgB1T,IAAhB,CAAf,GAAuC,KAAK2T,UAAL,CAAgB3T,IAAhB,CAA9C;AACD;;AACD2G,qBAAmB,GAAG;AACpB,WAAO,CAAC,EAAE,KAAKH,MAAL,CAAYlF,IAAZ,IAAoB,KAAKkF,MAAL,CAAYlF,IAAZ,CAAiBR,UAAvC,CAAR;AACD;;AACD8F,sBAAoB,GAAG;AACrB,WAAO,IAAP;AACD;;AACU,GAAV+M,UAAU,CAAC3T,IAAI,GAAG,EAAR,EAAY;AACrB,QAAI,CAAC,KAAKwG,MAAL,CAAYlF,IAAjB,EAAuB,OADF,CAErB;AACA;AACA;AACA;;AACA,QAAIsS,cAAc,GAAG5T,IAAI,CAACM,KAA1B;;AACA,QAAIN,IAAI,CAACM,KAAT,EAAgB;AACdsT,oBAAc,GAAG5T,IAAI,CAACM,KAAL,CAAWgC,QAAX,CAAoB,KAAKnC,WAAzB,EAAsC,aAAtC,CAAjB;AACD;;AACD,QAAI0T,YAAY,GAAG7T,IAAI,CAACe,GAAxB;;AACA,QAAIf,IAAI,CAACe,GAAT,EAAc;AACZ8S,kBAAY,GAAG7T,IAAI,CAACe,GAAL,CAASkC,GAAT,CAAa,KAAK9C,WAAlB,EAA+B,aAA/B,CAAf;AACD;;AACD,UAAMsG,MAAM,GAAG,IAAI4M,uBAAJ,CACb,KAAK7M,MAAL,CAAYlF,IADC,EAEbwC,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB/D,IAAlB,CAAd,EAAuC;AAAEM,WAAK,EAAEsT,cAAT;AAAyB7S,SAAG,EAAE8S;AAA9B,KAAvC,CAFa,CAAf;AAIA,QAAI1O,SAAJ,CAlBqB,CAmBrB;AACA;;AACA,WAAOsB,MAAM,CAAC6M,YAAd,EAA4B;AAC1B;AACA,aAAO,CAAC7M,MAAM,CAACO,IAAR,IAAgBP,MAAM,CAAC6M,YAAP,CAAoBvS,GAApB,CAAwB6C,cAAxB,CAAuC6C,MAAM,CAAChG,KAA9C,CAAvB,EAA6E;AAC3E,YAAIgG,MAAM,CAAC6M,YAAP,CAAoBvK,QAApB,GAA+B,KAAK5I,WAAxC,EAAqD;AACnD,gBAAM,IAAIoT,0BAAJ,CACH,0EAAD,GACE,KAAKpT,WAFH,CAAN;AAID;;AACD,YAAIsG,MAAM,CAAChG,KAAP,CAAaM,GAAb,CAAiBwC,OAAjB,CAAyBkD,MAAM,CAAC6M,YAAP,CAAoBvS,GAA7C,CAAJ,EAAuD;AACrD,gBAAM2O,IAAI,GAAGjJ,MAAM,CAAChG,KAAP,CAAaM,GAAb,CAAiBqI,OAAjB,KAA6B3C,MAAM,CAAC6M,YAAP,CAAoBvS,GAApB,CAAwBqI,OAAxB,EAA1C;AACA3C,gBAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAC6M,YAAP,CAAoB5M,GAApB,CACpB,UADoB,EAEpBD,MAAM,CAAC6M,YAAP,CAAoBvK,QAApB,GAA+B2G,IAFX,CAAtB;AAID;;AACDjJ,cAAM,CAACjG,IAAP;AACD,OAjByB,CAkB1B;AACA;;;AACA,UAAIR,IAAI,CAACM,KAAL,IAAcmG,MAAM,CAAC6M,YAAP,CAAoBvS,GAApB,CAAwByB,QAAxB,CAAiCxC,IAAI,CAACM,KAAtC,CAAlB,EAAgE;AAC9DmG,cAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAChG,KAA7B;AACAgG,cAAM,CAACjG,IAAP;AACA;AACD,OAxByB,CAyB1B;AACA;;;AACA,UACE,CAAC2E,SAAS,KAAK,IAAd,IAAsBA,SAAS,KAAK,KAAK,CAAzC,GAA6C,KAAK,CAAlD,GAAsDA,SAAS,CAAC/B,UAAjE,KACAqD,MAAM,CAAC6M,YAAP,CAAoBvS,GAApB,CAAwByB,QAAxB,CAAiC2C,SAAS,CAAC/B,UAA3C,CAFF,EAGE;AACAqD,cAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAChG,KAA7B;AACAgG,cAAM,CAACjG,IAAP;AACA;AACD,OAlCyB,CAmC1B;;;AACA,UAAIR,IAAI,CAACe,GAAL,IAAY0F,MAAM,CAAC6M,YAAnB,IAAmC7M,MAAM,CAAC6M,YAAP,CAAoB/P,OAApB,CAA4BvD,IAAI,CAACe,GAAjC,CAAvC,EAA8E;AAC5E;AACD;;AACD,UAAI0F,MAAM,CAAC6M,YAAP,CAAoBvK,QAApB,GAA+B,KAAK5I,WAAxC,EAAqD;AACnD,cAAM,IAAIoT,0BAAJ,CACH,0EAAD,GACE,KAAKpT,WAFH,CAAN;AAID;;AACDgF,eAAS,GAAG,MAAM,KAAKb,kBAAL,CAAwBmC,MAAM,CAAC6M,YAA/B,CAAlB;;AACA,UACE,CAACnO,SAAS,KAAK,IAAd,IAAsBA,SAAS,KAAK,KAAK,CAAzC,GAA6C,KAAK,CAAlD,GAAsDA,SAAS,CAAC/B,UAAjE,KACAqD,MAAM,CAAC6M,YAAP,CAAoB1P,cAApB,CAAmCuB,SAAS,CAAC/B,UAA7C,CAFF,EAGE;AACA,cAAM,IAAIsC,KAAJ,CACJ,+EACE,gDAFE,CAAN;AAID;;AACDe,YAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAChG,KAA7B;AACAgG,YAAM,CAACjG,IAAP;AACD;AACF;;AACU,GAAVkT,UAAU,CAAC1T,IAAI,GAAG,EAAR,EAAY;AACrB,QAAI,CAAC,KAAKwG,MAAL,CAAYlF,IAAjB,EAAuB,OADF,CAErB;AACA;AACA;AACA;;AACA,QAAIsS,cAAc,GAAG5T,IAAI,CAACM,KAA1B;;AACA,QAAIN,IAAI,CAACM,KAAT,EAAgB;AACdsT,oBAAc,GAAG5T,IAAI,CAACM,KAAL,CAAWgC,QAAX,CAAoB,KAAKnC,WAAzB,EAAsC,aAAtC,CAAjB;AACD;;AACD,QAAI0T,YAAY,GAAG7T,IAAI,CAACe,GAAxB;;AACA,QAAIf,IAAI,CAACe,GAAT,EAAc;AACZ8S,kBAAY,GAAG7T,IAAI,CAACe,GAAL,CAASkC,GAAT,CAAa,KAAK9C,WAAlB,EAA+B,aAA/B,CAAf;AACD;;AACD,UAAMsG,MAAM,GAAG,IAAI4M,uBAAJ,CACb,KAAK7M,MAAL,CAAYlF,IADC,EAEbwC,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB/D,IAAlB,CAAd,EAAuC;AAAEM,WAAK,EAAEsT,cAAT;AAAyB7S,SAAG,EAAE8S;AAA9B,KAAvC,CAFa,CAAf;AAIA,QAAI1O,SAAJ,CAlBqB,CAmBrB;AACA;;AACA,WAAOsB,MAAM,CAAC6M,YAAd,EAA4B;AAC1B;AACA,aAAO,CAAC7M,MAAM,CAACO,IAAR,IAAgBP,MAAM,CAAC6M,YAAP,CAAoBpN,eAApB,CAAoCO,MAAM,CAAChG,KAAP,CAAaM,GAAjD,CAAvB,EAA8E;AAC5E,YAAI0F,MAAM,CAAC6M,YAAP,CAAoBvK,QAApB,GAA+B,KAAK5I,WAAxC,EAAqD;AACnD,gBAAM,IAAIoT,0BAAJ,CACH,0EAAD,GACE,KAAKpT,WAFH,CAAN;AAID;;AACD,YACEsG,MAAM,CAAChG,KAAP,CAAa+B,QAAb,CAAsBiE,MAAM,CAAC6M,YAA7B,KACA7M,MAAM,CAAChG,KAAP,CAAaM,GAAb,CAAiBwC,OAAjB,CAAyBkD,MAAM,CAAC6M,YAAP,CAAoBvS,GAA7C,CAFF,EAGE;AACA,cAAI0F,MAAM,CAAChG,KAAP,CAAaM,GAAb,CAAiBwC,OAAjB,CAAyBkD,MAAM,CAAC6M,YAAP,CAAoBvS,GAA7C,CAAJ,EAAuD;AACrD;AACA;AACA0F,kBAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAChG,KAA7B;AACD,WAJD,MAIO;AACL,kBAAMiP,IAAI,GAAGjJ,MAAM,CAAC6M,YAAP,CAAoBlK,OAApB,KAAgC3C,MAAM,CAAChG,KAAP,CAAa2I,OAAb,EAA7C;AACA3C,kBAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAChG,KAAP,CAAaiG,GAAb,CAAiB,UAAjB,EAA6BD,MAAM,CAAC6M,YAAP,CAAoBvK,QAApB,GAA+B2G,IAA5D,CAAtB;AACD;AACF;;AACDjJ,cAAM,CAACjG,IAAP;AACD,OAvByB,CAwB1B;AACA;;;AACA,UAAIR,IAAI,CAACM,KAAL,IAAcmG,MAAM,CAAC6M,YAAP,CAAoBvS,GAApB,CAAwByB,QAAxB,CAAiCxC,IAAI,CAACM,KAAtC,CAAlB,EAAgE;AAC9D;AACD;;AACD,UACE6E,SAAS,IACTA,SAAS,CAAC/B,UADV,IAEAqD,MAAM,CAAC6M,YAAP,CAAoBvS,GAApB,CAAwByB,QAAxB,CAAiC2C,SAAS,CAAC/B,UAA3C,CAHF,EAIE;AACAqD,cAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAChG,KAA7B;AACAgG,cAAM,CAACjG,IAAP;AACA;AACD,OArCyB,CAsC1B;;;AACA,UAAIR,IAAI,CAACe,GAAL,IAAY0F,MAAM,CAAC6M,YAAnB,IAAmC7M,MAAM,CAAC6M,YAAP,CAAoB/P,OAApB,CAA4BvD,IAAI,CAACe,GAAjC,CAAvC,EAA8E;AAC5E0F,cAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAChG,KAA7B;AACAgG,cAAM,CAACjG,IAAP;AACA;AACD;;AACD,UAAIiG,MAAM,CAAC6M,YAAP,CAAoBvK,QAApB,GAA+B,KAAK5I,WAAxC,EAAqD;AACnD,cAAM,IAAIoT,0BAAJ,CACH,0EAAD,GACE,KAAKpT,WAFH,CAAN;AAID;;AACDgF,eAAS,GAAG,MAAM,KAAKb,kBAAL,CAAwBmC,MAAM,CAAC6M,YAA/B,CAAlB;;AACA,UACEnO,SAAS,IACTA,SAAS,CAAC/B,UADV,IAEAqD,MAAM,CAAC6M,YAAP,CAAoBvS,GAApB,CAAwBmF,eAAxB,CAAwCf,SAAS,CAAC/B,UAAlD,CAHF,EAIE;AACA,cAAM,IAAIsC,KAAJ,CACJ,+EACE,gDAFE,CAAN;AAID;;AACDe,YAAM,CAAC6M,YAAP,GAAsB7M,MAAM,CAAChG,KAA7B;AACAgG,YAAM,CAACjG,IAAP;AACD;AACF;;AArM0C;;AAwM7C,MAAMsT,0BAAN,SAAyCpO,KAAzC,CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASqO,aAAT,CAAuB/T,IAAvB,EAA6B;AAC3B,SAAOgC,OAAO,IAAI,IAAIgS,qBAAJ,CAA0BhU,IAA1B,EAAgCgC,OAAhC,CAAlB;AACD;;AACD,MAAMgS,qBAAN,SAAoC1N,QAApC,CAA6C;AAC3CvG,aAAW,CAACC,IAAD,EAAOwG,MAAP,EAAe;AACxB,UAAM,EAAN,EAAUA,MAAV;AACA,SAAKyN,OAAL,GAAejU,IAAI,CAACiU,OAApB;AACA,SAAK9T,WAAL,GAAmBH,IAAI,CAACG,WAAxB;;AACA,QAAIqG,MAAM,CAAClF,IAAP,IAAe,CAACkF,MAAM,CAAClF,IAAP,CAAYY,WAAhC,EAA6C;AAC3C,YAAM,IAAIa,6DAAJ,CACJ,yFACE,gFAFE,CAAN;AAID;AACF;AACD;;;AACA2D,KAAG,CAACsB,CAAD,EAAIvH,KAAJ,EAAW;AACZ,WAAO,IAAIuT,qBAAJ,CACL;AACE7T,iBAAW,EAAE,KAAKA,WADpB;AAEE8T,aAAO,EAAE,KAAKA;AAFhB,KADK,EAKLnQ,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKyC,MAAvB,CAAd,EAA8C;AAC5ClF,UAAI,EAAE,KAAKkF,MAAL,CAAYlF,IAAZ,IAAoB,KAAKkF,MAAL,CAAYlF,IAAZ,CAAiBoF,GAAjB,CAAqB,UAArB,EAAiCjG,KAAjC,CADkB;AAE5CR,cAAQ,EAAEQ;AAFkC,KAA9C,CALK,CAAP;AAUD;;AACI,GAAJF,IAAI,CAACP,IAAI,GAAG,EAAR,EAAY;AACf,QAAI,CAAC,KAAKwG,MAAL,CAAYlF,IAAjB,EAAuB;AACvB,UAAMN,OAAO,GAAGhB,IAAI,CAACgB,OAAL,IAAgB,KAAhC,CAFe,CAGf;AACA;AACA;AACA;;AACA,QAAI4S,cAAc,GAAG5T,IAAI,CAACM,KAA1B;;AACA,QAAIN,IAAI,CAACM,KAAT,EAAgB;AACdsT,oBAAc,GAAG5T,IAAI,CAACM,KAAL,CAAWgC,QAAX,CAAoB,KAAKnC,WAAzB,EAAsC,aAAtC,CAAjB;AACD,KAVc,CAWf;;;AACA,QAAI0T,YAAY,GAAG7T,IAAI,CAACe,GAAxB;;AACA,QAAIf,IAAI,CAACe,GAAT,EAAc;AACZ8S,kBAAY,GAAG7T,IAAI,CAACe,GAAL,CAASkC,GAAT,CAAa,KAAK9C,WAAlB,EAA+B,aAA/B,CAAf;AACD;;AACD,UAAMsG,MAAM,GAAG,IAAII,eAAJ,CACb,KAAKL,MAAL,CAAYlF,IADC,EAEbwC,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB/D,IAAlB,CAAd,EAAuC;AAAEM,WAAK,EAAEsT,cAAT;AAAyB7S,SAAG,EAAE8S;AAA9B,KAAvC,CAFa,CAAf;AAIA,QAAI1O,SAAJ;AACA,UAAM+O,WAAW,GAAG,EAApB;;AACA,WAAO,CAACzN,MAAM,CAACO,IAAR,IAAiBkN,WAAW,CAAC,CAAD,CAAX,IAAkBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAA1C,EAA8D;AAC5D;AACN;AACA;AACA;AACA;AACA;AACM,UAAI,EAAEA,WAAW,CAAC,CAAD,CAAX,IAAkBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAApB,CAAJ,EAA4C;AAC1C;AACAA,mBAAW,CAACnO,IAAZ,CAAiB,KAAKoO,SAAL,CAAe1N,MAAM,CAAChG,KAAtB,EAA6BO,OAA7B,CAAjB;AACAyF,cAAM,CAACjG,IAAP;AACD;;AACD,aACE,CAACiG,MAAM,CAACO,IAAR,KACChG,OAAO,GACJkT,WAAW,CAAC,CAAD,CAAX,CAAe/L,IAAf,CAAoBjF,IAAI,IAAIA,IAAI,CAACgD,eAAL,CAAqBO,MAAM,CAAChG,KAAP,CAAaM,GAAlC,CAA5B,CADI,GAEJmT,WAAW,CAAC,CAAD,CAAX,CAAe/L,IAAf,CAAoBjF,IAAI,IAAIA,IAAI,CAACU,cAAL,CAAoB6C,MAAM,CAAChG,KAA3B,CAA5B,CAHJ,CADF,EAKE;AACAyT,mBAAW,CAACnO,IAAZ,CAAiB,KAAKoO,SAAL,CAAe1N,MAAM,CAAChG,KAAtB,EAA6BO,OAA7B,CAAjB;AACAyF,cAAM,CAACjG,IAAP;AACD;;AACD,UAAI4T,YAAY,GAAGF,WAAW,CAAC,CAAD,CAAX,IAAkBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAArC;AACA,UAAIG,WAAW,GAAG,CAAC,CAAnB;AACA,UAAIC,mBAAmB,GAAG,CAA1B;AACA,UAAIC,SAAS,GAAG,CAAC,CAAjB;AACA,UAAIC,iBAAiB,GAAG,CAAxB,CAzB4D,CA0B5D;;AACA,WAAK,MAAMC,MAAX,IAAqBP,WAArB,EAAkC;AAChCG,mBAAW;AACXE,iBAAS,GAAG,CAAC,CAAb;;AACA,aAAK,MAAMrR,IAAX,IAAmBuR,MAAnB,EAA2B;AACzBF,mBAAS;AACT,cAAIG,kBAAJ;;AACA,cAAI1T,OAAJ,EAAa;AACX0T,8BAAkB,GAChBxR,IAAI,CAACK,OAAL,CAAa6Q,YAAb,KACClR,IAAI,CAACT,OAAL,CAAa2R,YAAb,KAA8BlR,IAAI,CAAC6F,QAAL,GAAgBqL,YAAY,CAACrL,QAF9D;AAGD,WAJD,MAIO;AACL2L,8BAAkB,GAChBxR,IAAI,CAACV,QAAL,CAAc4R,YAAd,KACClR,IAAI,CAACT,OAAL,CAAa2R,YAAb,KAA8BlR,IAAI,CAAC6F,QAAL,GAAgBqL,YAAY,CAACrL,QAF9D;AAGD;;AACD,cAAI2L,kBAAJ,EAAwB;AACtBN,wBAAY,GAAGlR,IAAf;AACAoR,+BAAmB,GAAGD,WAAtB;AACAG,6BAAiB,GAAGD,SAApB;AACA;AACD;AACF;AACF;;AACDL,iBAAW,CAACI,mBAAD,CAAX,CAAiCjL,MAAjC,CAAwCmL,iBAAxC,EAA2D,CAA3D;;AACA,UAAIN,WAAW,CAACI,mBAAD,CAAX,CAAiCpN,MAAjC,KAA4C,CAAhD,EAAmD;AACjDgN,mBAAW,CAAC7K,MAAZ,CAAmBiL,mBAAnB,EAAwC,CAAxC;AACD,OArD2D,CAsD5D;AACA;AACA;;;AACA,UACEnP,SAAS,IACTA,SAAS,CAAC/B,UADV,IAEAgR,YAFA,IAGA,CAACO,WAAW,CAACP,YAAD,EAAepU,IAAf,CAHZ,IAIA,CAAC4U,kBAAkB,CAACR,YAAD,EAAejP,SAAS,CAAC/B,UAAzB,EAAqCpD,IAArC,CALrB,EAME;AACA;AACD,OAjE2D,CAkE5D;AACA;AACA;AACA;;;AACA,UAAIA,IAAI,CAACM,KAAL,IAAc8T,YAAY,CAACrT,GAAb,CAAiByB,QAAjB,CAA0BxC,IAAI,CAACM,KAA/B,CAAlB,EAAyD;AACvD,YAAIU,OAAJ,EAAa;AACb;AACD,OAzE2D,CA0E5D;AACA;AACA;AACA;;;AACA,UAAIhB,IAAI,CAACe,GAAL,IAAYqT,YAAY,CAAC7Q,OAAb,CAAqBvD,IAAI,CAACe,GAA1B,CAAhB,EAAgD;AAC9C,YAAIC,OAAJ,EAAa;AACb;AACD;;AACD,UAAIoT,YAAY,CAACrL,QAAb,GAAwB,KAAK5I,WAAjC,EAA8C;AAC5C,cAAM,IAAI2T,0BAAJ,CACH,0EAAD,GACE,KAAK3T,WAFH,CAAN;AAID;;AACDgF,eAAS,GAAG,MAAM,KAAKb,kBAAL,CAAwB8P,YAAxB,CAAlB;;AACA,UACEjP,SAAS,IACTA,SAAS,CAAC/B,UADV,KAECpD,IAAI,CAACgB,OAAL,GACGoT,YAAY,CAAClO,eAAb,CAA6Bf,SAAS,CAAC/B,UAAvC,CADH,GAEGgR,YAAY,CAACxQ,cAAb,CAA4BuB,SAAS,CAAC/B,UAAtC,CAJJ,CADF,EAME;AACA,cAAM,IAAIsC,KAAJ,CACJ,+EACE,gDAFE,CAAN;AAID;AACF;AACF;;AACDiB,qBAAmB,GAAG;AACpB,WAAO,CAAC,EAAE,KAAKH,MAAL,CAAYlF,IAAZ,IAAoB,KAAKkF,MAAL,CAAYlF,IAAZ,CAAiBR,UAAvC,CAAR;AACD;;AACD8F,sBAAoB,GAAG;AACrB,WAAO,IAAP;AACD;;AACDuN,WAAS,CAACjR,IAAD,EAAOlC,OAAP,EAAgB;AACvB,UAAMsE,KAAK,GAAG,KAAK2O,OAAL,CAAa/Q,IAAb,CAAd;AACA,QAAI2R,KAAJ;;AACA,QAAIvP,KAAK,CAAC4B,MAAN,KAAiB,CAArB,EAAwB;AACtB2N,WAAK,GAAG,KAAR;AACD,KAFD,MAEO,IAAIvP,KAAK,CAAC4B,MAAN,KAAiB,CAArB,EAAwB;AAC7B2N,WAAK,GAAG3R,IAAI,CAAC6F,QAAL,KAAkBzD,KAAK,CAAC,CAAD,CAAL,CAASyD,QAAnC;AACD,KAFM,MAEA;AACL8L,WAAK,GAAG3R,IAAI,CAAC6F,QAAL,KAAkBzD,KAAK,CAACnE,MAAN,CAAa,CAACC,IAAD,EAAOC,IAAP,KAAgBD,IAAI,GAAGC,IAAI,CAAC0H,QAAzC,EAAmD,CAAnD,CAA1B;AACD;;AACD,QAAI,CAAC8L,KAAL,EAAY;AACV,YAAM,IAAInP,KAAJ,CACJ,uDACE,oDADF,GAEE,mEAFF,GAGE,oBAJE,CAAN;AAMD;;AACDJ,SAAK,CAACoC,IAAN,CAAWiC,oEAAX;;AACA,QAAI3I,OAAJ,EAAa;AACXsE,WAAK,CAACtE,OAAN;AACD;;AACD,WAAOsE,KAAP;AACD;;AAnL0C;;AAqL7C,SAASqP,WAAT,CAAqBzR,IAArB,EAA2BlB,OAA3B,EAAoC;AAClC,SAAO,CAAC,EAAEA,OAAO,CAAChB,OAAR,GACNgB,OAAO,CAAC1B,KAAR,IAAiB4C,IAAI,CAACV,QAAL,CAAcR,OAAO,CAAC1B,KAAtB,CADX,GAEN0B,OAAO,CAACjB,GAAR,IAAemC,IAAI,CAACK,OAAL,CAAavB,OAAO,CAACjB,GAArB,CAFX,CAAR;AAGD;;AACD,SAAS6T,kBAAT,CAA4B1R,IAA5B,EAAkCE,UAAlC,EAA8CpB,OAA9C,EAAuD;AACrD,SAAO,CAAC,EAAEA,OAAO,CAAChB,OAAR,GAAkBoC,UAAU,CAACQ,cAAX,CAA0BV,IAA1B,CAAlB,GAAoDE,UAAU,CAAC8C,eAAX,CAA2BhD,IAA3B,CAAtD,CAAR;AACD;;;;;;;;;;;;;;ACzqFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM2G,uBAAN,SAAsCnE,KAAtC,CAA4C;;AAC5C,IAAIoE,iBAAJ;;AACA,MAAMC,eAAN,CAAsB;AACpBhK,aAAW,CAACiK,KAAD,EAAQhI,OAAR,EAAiB;AAC1B,SAAK+G,QAAL,GAAiB/G,OAAO,IAAIA,OAAO,CAAC+G,QAApB,IAAiC,CAAjD;AACA,SAAKkB,UAAL,GAAmBjI,OAAO,IAAIA,OAAO,CAACiI,UAAnB,IAAiCjI,OAAO,CAACiI,UAAR,CAAmBf,KAAnB,EAAlC,IAAiE,EAAnF;;AACA,QAAI,CAACzE,MAAM,CAACC,SAAP,CAAiB,KAAKqE,QAAtB,CAAD,IAAoC,KAAKA,QAAL,GAAgB,CAAxD,EAA2D;AACzD,YAAM,IAAIc,uBAAJ,CAA4B,yCAA5B,CAAN;AACD;AACF;;AACiB,aAAPpG,OAAO,CAAChD,KAAD,EAAQ;AACxB,QAAIqJ,iBAAJ,EAAuB;AACrB,YAAM,IAAIpE,KAAJ,CAAW,IAAGoE,iBAAiB,CAACI,IAAK,gCAArC,CAAN;AACD;;AACDJ,qBAAiB,GAAGrJ,KAApB;AACD;;AACiB,aAAPgD,OAAO,GAAG;AACnB,QAAI,CAACqG,iBAAL,EAAwB;AACtB,YAAM,IAAIpE,KAAJ,CAAU,0DAAV,CAAN;AACD;;AACD,WAAOoE,iBAAP;AACD;;AACY,SAANK,MAAM,CAACC,OAAD,EAAU;AACrB,UAAMC,kBAAkB,CAAC,UAAD,CAAxB;AACD;;AACc,SAARC,QAAQ,CAACN,KAAD,EAAQO,QAAR,EAAkB;AAC/B,UAAMF,kBAAkB,CAAC,YAAD,CAAxB;AACD;;AACc,SAARZ,QAAQ,CAACe,KAAD,EAAQ;AACrB,UAAMH,kBAAkB,CAAC,YAAD,CAAxB;AACD;;AACkB,SAAZ1J,YAAY,CAAC8J,SAAD,EAAY;AAC7B,UAAMJ,kBAAkB,CAAC,gBAAD,CAAxB;AACD;AACD;AACF;AACA;AACA;AACA;AACA;;;AACEK,aAAW,GAAG;AACZ,WAAO,KAAKhE,GAAL,CAAS,UAAT,EAAqB,KAArB,EACJsC,UADI,GAEJ0B,WAFI,EAAP;AAGD;;AACD1B,YAAU,GAAG;AACX,UAAM9F,IAAI,GAAGyH,QAAQ,CAAClB,QAAT,CACX3F,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKyF,MAAL,EAAlB,CAAd,EAAgD;AAAES,gBAAU,EAAE,KAAKA;AAAnB,KAAhD,CADW,CAAb;AAGA,WAAO/G,IAAP;AACD;;AAhDmB;;AAkDtB6G,eAAe,CAACa,kBAAhB,GAAqC,KAArC;;AACA,SAASP,kBAAT,CAA4BH,IAA5B,EAAkC;AAChC,SAAO,IAAIxE,KAAJ,CAAW,2BAA0BwE,IAAK,qCAA1C,CAAP;AACD;;AACD,IAAIW,WAAJ;;AACA,CAAC,UAASA,WAAT,EAAsB;AACrBA,aAAW,CAACC,QAAZ,GAAuB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,CAAvB;AACAD,aAAW,CAACE,sBAAZ,GAAqC,IAArC;AACAF,aAAW,CAACG,sBAAZ,GAAqCH,WAAW,CAACE,sBAAZ,GAAqC,EAA1E;AACAF,aAAW,CAACI,oBAAZ,GAAmCJ,WAAW,CAACG,sBAAZ,GAAqC,EAAxE;AACAH,aAAW,CAACK,mBAAZ,GAAkCL,WAAW,CAACI,oBAAZ,GAAmC,EAArE;AACAJ,aAAW,CAACM,oBAAZ,GAAmCN,WAAW,CAACK,mBAAZ,GAAkC,CAArE;AACD,CAPD,EAOGL,WAAW,KAAKA,WAAW,GAAG,EAAnB,CAPd;;AAQA,MAAMO,oBAAN,SAAmC1F,KAAnC,CAAyC;;AACzC,MAAMiF,QAAN,CAAe;AACb5K,aAAW,CAACmD,IAAD,EAAOjD,QAAP,EAAiB8I,QAAjB,EAA2BkB,UAA3B,EAAuC;AAChD,SAAK/G,IAAL,GAAY,IAAImI,IAAJ,CAASnI,IAAT,CAAZ;AACA,SAAKjD,QAAL,GAAgBA,QAAQ,IAAI,IAA5B;AACA,SAAK8I,QAAL,GAAgBA,QAAQ,IAAI,CAA5B;AACA,SAAKkB,UAAL,GAAmBA,UAAU,IAAIA,UAAU,CAACf,KAAX,EAAf,IAAsC,EAAxD;;AACA,QAAI,CAACzE,MAAM,CAACC,SAAP,CAAiB,KAAKqE,QAAtB,CAAD,IAAoC,KAAKA,QAAL,GAAgB,CAAxD,EAA2D;AACzD,YAAM,IAAIqC,oBAAJ,CAAyB,yCAAzB,CAAN;AACD;;AACD,SAAKE,aAAL;AACD,GAVY,CAWb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,SAAR7B,QAAQ,CAACF,IAAD,EAAO;AACpB,UAAMrG,IAAI,GAAG,IAAImI,IAAJ,CACXA,IAAI,CAACE,GAAL,CACEhC,IAAI,CAACiC,IADP,EAEEjC,IAAI,CAACkC,KAAL,GAAa,CAFf,EAGElC,IAAI,CAAChH,GAHP,EAIEgH,IAAI,CAACmC,IAJP,EAKEnC,IAAI,CAACoC,MALP,EAMEpC,IAAI,CAACqC,MANP,EAOErC,IAAI,CAACsC,WAPP,CADW,CAAb;AAWA,WAAO,IAAIlB,QAAJ,CAAazH,IAAb,EAAmBqG,IAAI,CAACtJ,QAAxB,EAAkCsJ,IAAI,CAACR,QAAvC,EAAiDQ,IAAI,CAACU,UAAtD,CAAP;AACD;;AACqB,SAAf6B,eAAe,CAACrI,OAAD,EAAU;AAC9B,WAAOkH,QAAQ,CAAClB,QAAT,CACL3F,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBN,OAAO,CAAC+F,MAAR,EAAlB,CAAd,EAAmD;AAAES,gBAAU,EAAExG,OAAO,CAACwG;AAAtB,KAAnD,CADK,CAAP;AAGD;AACD;AACF;AACA;AACA;;;AACS,MAAHlJ,GAAG,GAAG;AACR,QAAI,CAAC,KAAKgI,QAAV,EAAoB;AACpB,QAAI,KAAKgD,IAAT,EAAe,OAAO,KAAKA,IAAZ;AACf,SAAKA,IAAL,GAAY,KAAK9I,GAAL,CAAS,KAAK8F,QAAd,EAAwB,aAAxB,CAAZ;AACA,WAAO,KAAKgD,IAAZ;AACD,GA/CY,CAgDb;AACA;;;AACAtJ,SAAO,CAACuJ,MAAD,EAAS;AACd,QAAI,CAACA,MAAL,EAAa;AACX,aAAO,KAAP;AACD;;AACDC,sBAAkB,CAAC,IAAD,EAAOD,MAAP,CAAlB;AACA,WAAO,KAAK5C,OAAL,OAAmB4C,MAAM,CAAC5C,OAAP,EAA1B;AACD;;AACD5G,UAAQ,CAACwJ,MAAD,EAAS;AACfC,sBAAkB,CAAC,IAAD,EAAOD,MAAP,CAAlB;AACA,WAAO,KAAK5C,OAAL,KAAiB4C,MAAM,CAAC5C,OAAP,EAAxB;AACD;;AACDlD,iBAAe,CAAC8F,MAAD,EAAS;AACtBC,sBAAkB,CAAC,IAAD,EAAOD,MAAP,CAAlB;AACA,WAAO,KAAK5C,OAAL,MAAkB4C,MAAM,CAAC5C,OAAP,EAAzB;AACD;;AACD7F,SAAO,CAACyI,MAAD,EAAS;AACdC,sBAAkB,CAAC,IAAD,EAAOD,MAAP,CAAlB;AACA,WAAO,KAAK5C,OAAL,KAAiB4C,MAAM,CAAC5C,OAAP,EAAxB;AACD;;AACDxF,gBAAc,CAACoI,MAAD,EAAS;AACrBC,sBAAkB,CAAC,IAAD,EAAOD,MAAP,CAAlB;AACA,WAAO,KAAK5C,OAAL,MAAkB4C,MAAM,CAAC5C,OAAP,EAAzB;AACD;;AACD8C,aAAW,CAACF,MAAD,EAAS;AAClB,QAAI,CAAC,KAAKjD,QAAV,EAAoB;AAClB,YAAM,IAAIrD,KAAJ,CAAU,uEAAV,CAAN;AACD;;AACDuG,sBAAkB,CAAC,IAAD,EAAOD,MAAP,CAAlB;AACA,WACEA,MAAM,CAACpI,cAAP,CAAsB,IAAtB,KAA+BoI,MAAM,CAAC9F,eAAP,CAAuB,KAAKjD,GAAL,CAAS,KAAK8F,QAAd,EAAwB,aAAxB,CAAvB,CADjC;AAGD;;AACD9F,KAAG,CAACkJ,MAAD,EAASC,IAAT,EAAe;AAChB,YAAQA,IAAR;AACE,WAAK,WAAL;AAAkB;AAChB,gBAAMnC,UAAU,GAAG,KAAKA,UAAL,CAAgBf,KAAhB,EAAnB;AACAe,oBAAU,CAACoC,OAAX,CAAmBF,MAAnB;AACA,iBAAO,IAAIxB,QAAJ,CAAa,KAAKzH,IAAlB,EAAwB,KAAKjD,QAA7B,EAAuC,KAAK8I,QAA5C,EAAsDkB,UAAtD,CAAP;AACD;;AACD,WAAK,MAAL;AACE,eAAO,KAAKqC,YAAL,CAAkBC,WAAW,CAAC,KAAKrJ,IAAN,EAAYiJ,MAAZ,CAA7B,CAAP;;AACF,WAAK,OAAL;AACE,eAAO,KAAKG,YAAL,CAAkBE,YAAY,CAAC,KAAKtJ,IAAN,EAAYiJ,MAAZ,CAA9B,CAAP;;AACF,WAAK,MAAL;AACE,eAAO,KAAKG,YAAL,CAAkBG,WAAW,CAAC,KAAKvJ,IAAN,EAAYiJ,MAAZ,CAA7B,CAAP;;AACF,WAAK,KAAL;AACE,eAAO,KAAKG,YAAL,CAAkBI,UAAU,CAAC,KAAKxJ,IAAN,EAAYiJ,MAAZ,CAA5B,CAAP;;AACF,WAAK,MAAL;AACE,eAAO,KAAKG,YAAL,CAAkBK,WAAW,CAAC,KAAKzJ,IAAN,EAAYiJ,MAAZ,CAA7B,CAAP;;AACF,WAAK,QAAL;AACE,eAAO,KAAKG,YAAL,CAAkBM,aAAa,CAAC,KAAK1J,IAAN,EAAYiJ,MAAZ,CAA/B,CAAP;;AACF,WAAK,QAAL;AACE,eAAO,KAAKG,YAAL,CAAkBO,aAAa,CAAC,KAAK3J,IAAN,EAAYiJ,MAAZ,CAA/B,CAAP;;AACF,WAAK,aAAL;AACE,eAAO,KAAKG,YAAL,CAAkBQ,kBAAkB,CAAC,KAAK5J,IAAN,EAAYiJ,MAAZ,CAApC,CAAP;;AACF;AACE,cAAM,IAAIzG,KAAJ,CAAU,yCAAV,CAAN;AAvBJ;AAyBD;;AACDpD,UAAQ,CAAC6J,MAAD,EAASC,IAAT,EAAe;AACrB,YAAQA,IAAR;AACE,WAAK,MAAL;AACE,eAAO,KAAKE,YAAL,CAAkBS,WAAW,CAAC,KAAK7J,IAAN,EAAYiJ,MAAZ,CAA7B,CAAP;;AACF,WAAK,OAAL;AACE,eAAO,KAAKG,YAAL,CAAkBU,YAAY,CAAC,KAAK9J,IAAN,EAAYiJ,MAAZ,CAA9B,CAAP;;AACF,WAAK,MAAL;AACE,eAAO,KAAKG,YAAL,CAAkBW,WAAW,CAAC,KAAK/J,IAAN,EAAYiJ,MAAZ,CAA7B,CAAP;;AACF,WAAK,KAAL;AACE,eAAO,KAAKG,YAAL,CAAkBY,UAAU,CAAC,KAAKhK,IAAN,EAAYiJ,MAAZ,CAA5B,CAAP;;AACF,WAAK,MAAL;AACE,eAAO,KAAKG,YAAL,CAAkBa,WAAW,CAAC,KAAKjK,IAAN,EAAYiJ,MAAZ,CAA7B,CAAP;;AACF,WAAK,QAAL;AACE,eAAO,KAAKG,YAAL,CAAkBc,aAAa,CAAC,KAAKlK,IAAN,EAAYiJ,MAAZ,CAA/B,CAAP;;AACF,WAAK,QAAL;AACE,eAAO,KAAKG,YAAL,CAAkBe,aAAa,CAAC,KAAKnK,IAAN,EAAYiJ,MAAZ,CAA/B,CAAP;;AACF,WAAK,aAAL;AACE,eAAO,KAAKG,YAAL,CAAkBgB,kBAAkB,CAAC,KAAKpK,IAAN,EAAYiJ,MAAZ,CAApC,CAAP;;AACF;AACE,cAAM,IAAIzG,KAAJ,CAAU,8CAAV,CAAN;AAlBJ;AAoBD;;AACDvC,KAAG,CAACiJ,IAAD,EAAO;AACR,YAAQA,IAAR;AACE,WAAK,MAAL;AACE,eAAO,KAAKlJ,IAAL,CAAUqK,cAAV,EAAP;;AACF,WAAK,OAAL;AACE,eAAO,KAAKrK,IAAL,CAAUsK,WAAV,KAA0B,CAAjC;;AACF,WAAK,SAAL;AACE,eAAOC,aAAa,CAAC,KAAKvK,IAAN,CAApB;;AACF,WAAK,SAAL;AACE,eAAO2H,WAAW,CAACC,QAAZ,CAAqB,KAAK5H,IAAL,CAAUwK,SAAV,EAArB,CAAP;;AACF,WAAK,KAAL;AACE,eAAO,KAAKxK,IAAL,CAAUyK,UAAV,EAAP;;AACF,WAAK,MAAL;AACE,eAAO,KAAKzK,IAAL,CAAU0K,WAAV,EAAP;;AACF,WAAK,QAAL;AACE,eAAO,KAAK1K,IAAL,CAAU2K,aAAV,EAAP;;AACF,WAAK,QAAL;AACE,eAAO,KAAK3K,IAAL,CAAU4K,aAAV,EAAP;;AACF,WAAK,aAAL;AACE,eAAO,KAAK5K,IAAL,CAAU6K,kBAAV,EAAP;;AACF;AACE,cAAM,IAAIrI,KAAJ,CAAU,yCAAV,CAAN;AApBJ;AAsBD;;AACDgB,KAAG,CAAC0F,IAAD,EAAO3L,KAAP,EAAc;AACf,QAAI2L,IAAI,KAAK,UAAb,EAAyB;AACvB,aAAO,IAAIzB,QAAJ,CAAa,KAAKzH,IAAlB,EAAwB,KAAKjD,QAA7B,EAAuCQ,KAAvC,EAA8C,KAAKwJ,UAAnD,CAAP;AACD;;AACD,QAAImC,IAAI,KAAK,YAAb,EAA2B;AACzB,aAAO,IAAIzB,QAAJ,CAAa,KAAKzH,IAAlB,EAAwB,KAAKjD,QAA7B,EAAuC,KAAK8I,QAA5C,EAAsDtI,KAAtD,CAAP;AACD;;AACD,QAAIyC,IAAI,GAAG,IAAImI,IAAJ,CAAS,KAAKnI,IAAd,CAAX;;AACA,YAAQkJ,IAAR;AACE,WAAK,MAAL;AACElJ,YAAI,CAAC8K,cAAL,CAAoBvN,KAApB;AACA;;AACF,WAAK,OAAL;AAAc;AACZ;AACA;AACA;AACA,gBAAMyG,MAAM,GAAG+G,WAAW,CAACxN,KAAD,EAAQyC,IAAI,CAACqK,cAAL,EAAR,CAA1B;AACA,gBAAMhL,GAAG,GAAGW,IAAI,CAACyK,UAAL,EAAZ;;AACA,cAAIpL,GAAG,GAAG2E,MAAV,EAAkB;AAChBhE,gBAAI,CAACgL,UAAL,CAAgB,CAAhB;AACAhL,gBAAI,CAACiL,WAAL,CAAiB1N,KAAjB;AACAyC,gBAAI,GAAGgK,UAAU,CAAChK,IAAD,EAAO,CAAP,CAAjB;AACD,WAJD,MAIO;AACLA,gBAAI,CAACiL,WAAL,CAAiB1N,KAAK,GAAG,CAAzB;AACD;;AACD;AACD;;AACD,WAAK,KAAL;AACEyC,YAAI,CAACgL,UAAL,CAAgBzN,KAAhB;AACA;;AACF,WAAK,MAAL;AACEyC,YAAI,CAACkL,WAAL,CAAiB3N,KAAjB;AACA;;AACF,WAAK,QAAL;AACEyC,YAAI,CAACmL,aAAL,CAAmB5N,KAAnB;AACA;;AACF,WAAK,QAAL;AACEyC,YAAI,CAACoL,aAAL,CAAmB7N,KAAnB;AACA;;AACF,WAAK,aAAL;AACEyC,YAAI,CAACqL,kBAAL,CAAwB9N,KAAxB;AACA;;AACF;AACE,cAAM,IAAIiF,KAAJ,CAAU,yCAAV,CAAN;AAnCJ;;AAqCA,WAAO,KAAK4G,YAAL,CAAkBpJ,IAAlB,CAAP;AACD;;AACDI,aAAW,CAACA,WAAD,EAAckL,GAAG,GAAG,EAApB,EAAwB;AACjC,QAAItL,IAAI,GAAG,KAAKoJ,YAAL,CAAkB,KAAKpJ,IAAvB,CAAX;;AACA,YAAQI,WAAR;AACE,WAAK,MAAL;AACEJ,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,OAAT,EAAkB,CAAlB,CAAP;;AACF,WAAK,OAAL;AACExD,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,KAAT,EAAgB,CAAhB,CAAP;AACA;;AACF,WAAK,MAAL;AACExD,YAAI,GAAGuL,oBAAoB,CAACvL,IAAD,EAAOsL,GAAG,CAAC/I,SAAX,CAA3B;AAPJ;;AASA,YAAQnC,WAAR;AACE,WAAK,MAAL;AACA,WAAK,OAAL;AACA,WAAK,MAAL;AACA,WAAK,KAAL;AACEJ,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,MAAT,EAAiB,CAAjB,CAAP;;AACF,WAAK,MAAL;AACExD,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,QAAT,EAAmB,CAAnB,CAAP;;AACF,WAAK,QAAL;AACExD,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,QAAT,EAAmB,CAAnB,CAAP;;AACF,WAAK,QAAL;AACExD,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,aAAT,EAAwB,CAAxB,CAAP;;AACF,WAAK,aAAL;AACE,eAAOxD,IAAP;;AACF;AACE,cAAM,IAAIwC,KAAJ,CAAU,6DAA6DpC,WAAvE,CAAN;AAfJ;AAiBD;;AACD+C,gBAAc,CAAC/C,WAAD,EAAckL,GAAG,GAAG,EAApB,EAAwB;AACpC,QAAItL,IAAI,GAAG,KAAKoJ,YAAL,CAAkB,KAAKpJ,IAAvB,CAAX;;AACA,YAAQI,WAAR;AACE,WAAK,MAAL;AACEJ,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,OAAT,EAAkB,EAAlB,CAAP;;AACF,WAAK,OAAL;AACExD,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,KAAT,EAAgBuH,WAAW,CAAC/K,IAAI,CAACC,GAAL,CAAS,OAAT,CAAD,EAAoBD,IAAI,CAACC,GAAL,CAAS,MAAT,CAApB,CAA3B,CAAP;AACA;;AACF,WAAK,MAAL;AACED,YAAI,GAAGwL,kBAAkB,CAACxL,IAAD,EAAOsL,GAAG,CAAC/I,SAAX,CAAzB;AAPJ;;AASA,YAAQnC,WAAR;AACE,WAAK,MAAL;AACA,WAAK,OAAL;AACA,WAAK,MAAL;AACA,WAAK,KAAL;AACEJ,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,MAAT,EAAiB,EAAjB,CAAP;;AACF,WAAK,MAAL;AACExD,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,QAAT,EAAmB,EAAnB,CAAP;;AACF,WAAK,QAAL;AACExD,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,QAAT,EAAmB,EAAnB,CAAP;;AACF,WAAK,QAAL;AACExD,YAAI,GAAGA,IAAI,CAACwD,GAAL,CAAS,aAAT,EAAwB,GAAxB,CAAP;;AACF,WAAK,aAAL;AACE,eAAOxD,IAAP;;AACF;AACE,cAAM,IAAIwC,KAAJ,CAAU,6DAA6DpC,WAAvE,CAAN;AAfJ;AAiBD;;AACDoH,aAAW,GAAG;AACZ,WAAO,KAAKxH,IAAL,CAAUwH,WAAV,EAAP;AACD;;AACD1B,YAAU,GAAG;AACX,WAAO,IAAP;AACD;;AACDQ,QAAM,GAAG;AACP,UAAMD,IAAI,GAAG;AACXtJ,cAAQ,EAAE,KAAKA,QADJ;AAEXuL,UAAI,EAAE,KAAKrI,GAAL,CAAS,MAAT,CAFK;AAGXsI,WAAK,EAAE,KAAKtI,GAAL,CAAS,OAAT,CAHI;AAIXZ,SAAG,EAAE,KAAKY,GAAL,CAAS,KAAT,CAJM;AAKXuI,UAAI,EAAE,KAAKvI,GAAL,CAAS,MAAT,CALK;AAMXwI,YAAM,EAAE,KAAKxI,GAAL,CAAS,QAAT,CANG;AAOXyI,YAAM,EAAE,KAAKzI,GAAL,CAAS,QAAT,CAPG;AAQX0I,iBAAW,EAAE,KAAK1I,GAAL,CAAS,aAAT;AARF,KAAb;;AAUA,QAAI,KAAK4F,QAAT,EAAmB;AACjBQ,UAAI,CAACR,QAAL,GAAgB,KAAKA,QAArB;AACD;;AACD,WAAOQ,IAAP;AACD;;AACDH,SAAO,GAAG;AACR,WAAO,KAAKlG,IAAL,CAAUkG,OAAV,EAAP;AACD;;AACDkC,eAAa,GAAG;AACd,QAAIqD,KAAK,CAAC,KAAKvF,OAAL,EAAD,CAAT,EAA2B;AACzB,YAAM,IAAIgC,oBAAJ,CAAyB,4BAAzB,CAAN;AACD;;AACD,WAAO,IAAP;AACD;;AACDkB,cAAY,CAACpJ,IAAD,EAAO;AACjB,WAAO,IAAIyH,QAAJ,CAAazH,IAAb,EAAmB,KAAKjD,QAAxB,EAAkC,KAAK8I,QAAvC,EAAiD,KAAKkB,UAAtD,CAAP;AACD;;AArSY;;AAuSf,SAASgC,kBAAT,CAA4B2C,CAA5B,EAA+BC,CAA/B,EAAkC;AAChC,MAAID,CAAC,CAAC3O,QAAF,KAAe4O,CAAC,CAAC5O,QAArB,EAA+B;AAC7B,UAAM,IAAImL,oBAAJ,CACJ,8EACE0D,IAAI,CAACC,SAAL,CAAeH,CAAf,CADF,GAEE,OAFF,GAGEE,IAAI,CAACC,SAAL,CAAeF,CAAf,CAJE,CAAN;AAMD;;AACD,SAAO,IAAP;AACD;;AACD,SAASJ,oBAAT,CAA8BvL,IAA9B,EAAoC8L,IAApC,EAA0C;AACxC,QAAM/I,KAAK,GAAGgJ,eAAe,CAACD,IAAD,CAAf,CAAsBE,OAAtB,CAA8BhM,IAAI,CAACC,GAAL,CAAS,SAAT,CAA9B,CAAd;AACA,SAAOD,IAAI,CAACZ,QAAL,CAAc2D,KAAd,EAAqB,KAArB,CAAP;AACD;;AACD,SAASyI,kBAAT,CAA4BxL,IAA5B,EAAkC8L,IAAlC,EAAwC;AACtC,QAAM/I,KAAK,GAAGgJ,eAAe,CAACD,IAAD,CAAf,CAAsBE,OAAtB,CAA8BhM,IAAI,CAACC,GAAL,CAAS,SAAT,CAA9B,CAAd;AACA,SAAOD,IAAI,CAACD,GAAL,CAAS,IAAIgD,KAAb,EAAoB,KAApB,CAAP;AACD;;AACD,SAAS0D,oBAAT,CAA8BrC,CAA9B,EAAiCC,CAAjC,EAAoC;AAClC,MAAID,CAAC,CAAC/D,OAAF,CAAUgE,CAAV,CAAJ,EAAkB,OAAO,CAAP;AAClB,MAAID,CAAC,CAAC9E,QAAF,CAAW+E,CAAX,CAAJ,EAAmB,OAAO,CAAC,CAAR;;AACnB,MAAID,CAAC,CAACyB,QAAF,IAAcxB,CAAC,CAACwB,QAApB,EAA8B;AAC5B,QAAIzB,CAAC,CAACyB,QAAF,GAAaxB,CAAC,CAACwB,QAAnB,EAA6B,OAAO,CAAP;AAC7B,QAAIzB,CAAC,CAACyB,QAAF,GAAaxB,CAAC,CAACwB,QAAnB,EAA6B,OAAO,CAAC,CAAR;AAC9B;;AACD,SAAO,CAAP;AACD;;AACD,SAAS+L,aAAT,CAAuBxP,KAAvB,EAA8B;AAC5B,SAAON,KAAK,CAACC,IAAN,CAAW,IAAI8P,GAAJ,CAAQzP,KAAK,CAACrB,GAAN,CAAUf,IAAI,IAAI,CAACA,IAAI,CAACwH,WAAL,EAAD,EAAqBxH,IAArB,CAAlB,CAAR,EAAuD8R,MAAvD,EAAX,CAAP;AACD;;AACD,SAAS/F,eAAT,CAAyBD,IAAI,GAAG,IAAhC,EAAsC;AACpC,QAAMG,MAAM,GAAGtE,WAAW,CAACC,QAAZ,CAAqB5B,KAArB,EAAf;AACA,MAAIjD,KAAK,GAAGkJ,MAAM,CAACD,OAAP,CAAeF,IAAf,CAAZ;;AACA,SAAO/I,KAAK,KAAK,CAAjB,EAAoB;AAClBmJ,cAAU,CAACD,MAAD,CAAV;AACAlJ,SAAK;AACN;;AACD,SAAOkJ,MAAP;AACD;;AACD,SAASC,UAAT,CAAoBC,KAApB,EAA2BpK,IAAI,GAAG,OAAlC,EAA2C;AACzC,MAAIoK,KAAK,CAACnI,MAAN,KAAiB,CAArB,EAAwB;AACtB,WAAOmI,KAAP;AACD,GAFD,MAEO,IAAIpK,IAAI,KAAK,OAAb,EAAsB;AAC3BoK,SAAK,CAACtJ,IAAN,CAAWsJ,KAAK,CAACzH,KAAN,EAAX;AACD,GAFM,MAEA;AACLyH,SAAK,CAAChD,OAAN,CAAcgD,KAAK,CAACvH,GAAN,EAAd;AACD;;AACD,SAAOuH,KAAP;AACD;;AACD,SAAShM,4BAAT,CAAsCuL,CAAtC,EAAyCC,CAAzC,EAA4C;AAC1C,MAAID,CAAC,KAAKC,CAAV,EAAa,OAAO,CAAP;AACb,QAAMoG,MAAM,GAAGpK,WAAW,CAACC,QAAZ,CAAqBoE,OAArB,CAA6BN,CAA7B,IAAkC/D,WAAW,CAACC,QAAZ,CAAqBoE,OAArB,CAA6BL,CAA7B,CAAjD;AACA,SAAOoG,MAAM,GAAG,CAAT,GAAa,IAAIA,MAAjB,GAA0BtF,IAAI,CAACuF,GAAL,CAASD,MAAT,CAAjC;AACD;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAShH,WAAT,CAAqBxC,KAArB,EAA4BD,IAA5B,EAAkC;AAChC,QAAM8D,KAAK,GAAG;AACZ,OAAG,EADS;AAEZ,OAAGC,iBAAiB,CAAC/D,IAAD,CAFR;AAGZ,OAAG,EAHS;AAIZ,OAAG,EAJS;AAKZ,OAAG,EALS;AAMZ,OAAG,EANS;AAOZ,OAAG,EAPS;AAQZ,OAAG,EARS;AASZ,OAAG,EATS;AAUZ,QAAI,EAVQ;AAWZ,QAAI,EAXQ;AAYZ,QAAI;AAZQ,GAAd;AAcA,SAAO8D,KAAK,CAAC7D,KAAD,CAAZ;AACD;;AACD,SAAS8D,iBAAT,CAA2B/D,IAA3B,EAAiC;AAC/B,SAAOgE,UAAU,CAAChE,IAAD,CAAV,GAAmB,EAAnB,GAAwB,EAA/B;AACD,C,CACD;;;AACA,SAASgE,UAAT,CAAoBhE,IAApB,EAA0B;AACxB,SAAOA,IAAI,GAAG,GAAP,KAAe,CAAf,IAAqBA,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkBA,IAAI,GAAG,GAAP,KAAe,CAA7D;AACD;;AACD,SAAS2J,aAAT,CAAuB3J,IAAvB,EAA6B;AAC3B,SAAOgE,UAAU,CAAChE,IAAD,CAAV,GAAmB,GAAnB,GAAyB,GAAhC;AACD;;AACD,SAASiC,aAAT,CAAuBgC,GAAvB,EAA4B;AAC1B,QAAMnP,KAAK,GAAG,IAAI+K,IAAJ,CAASA,IAAI,CAACE,GAAL,CAASkE,GAAG,CAAClC,cAAJ,EAAT,EAA+B,CAA/B,EAAkC,CAAlC,CAAT,CAAd;AACA,QAAMmC,IAAI,GAAGD,GAAG,CAACrG,OAAJ,KAAgB9I,KAAK,CAAC8I,OAAN,EAA7B;AACA,SAAO,IAAIuG,IAAI,CAACC,KAAL,CAAWF,IAAI,GAAG7E,WAAW,CAACK,mBAA9B,CAAX;AACD;AACD;AACA;AACA;AACA;;;AACA,SAAS2E,SAAT,CAAmB3H,KAAnB,EAA0B;AACxB,MAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,IAA5B,IAAoCA,KAAK,KAAK,KAAlD,EAAyD;AACvD,WAAO4H,GAAP;AACD;;AACD,QAAMC,GAAG,GAAGtL,MAAM,CAACyD,KAAD,CAAlB;;AACA,MAAIyG,KAAK,CAACoB,GAAD,CAAT,EAAgB;AACd,WAAOA,GAAP;AACD;;AACD,SAAOA,GAAG,GAAG,CAAN,GAAUJ,IAAI,CAACK,IAAL,CAAUD,GAAV,CAAV,GAA2BJ,IAAI,CAACC,KAAL,CAAWG,GAAX,CAAlC;AACD;;AACD,SAASE,eAAT,CAAyBC,SAAzB,EAAoCC,WAApC,EAAiD;AAC/C,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CAAc,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UAArE,CAAN;AACD;;AACD,QAAMoJ,SAAS,GAAGJ,SAAS,CAAC9G,OAAV,EAAlB;AACA,QAAM+C,MAAM,GAAG0D,SAAS,CAACM,WAAD,CAAxB;AACA,SAAO,IAAI9E,IAAJ,CAASiF,SAAS,GAAGnE,MAArB,CAAP;AACD;;AACD,SAASI,WAAT,CAAqBrJ,IAArB,EAA2BgF,KAA3B,EAAkC;AAChC,QAAMiE,MAAM,GAAG0D,SAAS,CAAC3H,KAAD,CAAxB;AACA,SAAOsE,YAAY,CAACtJ,IAAD,EAAOiJ,MAAM,GAAG,EAAhB,CAAnB;AACD;;AACD,SAASK,YAAT,CAAsBtJ,IAAtB,EAA4BgF,KAA5B,EAAmC;AACjC,QAAMiE,MAAM,GAAG0D,SAAS,CAAC3H,KAAD,CAAxB;AACAhF,MAAI,GAAG,IAAImI,IAAJ,CAASnI,IAAT,CAAP;AACA,QAAMqN,YAAY,GAAGrN,IAAI,CAACsK,WAAL,KAAqBrB,MAA1C;AACA,QAAMqE,oBAAoB,GAAG,IAAInF,IAAJ,CAAS,CAAT,CAA7B;AACAmF,sBAAoB,CAACxC,cAArB,CAAoC9K,IAAI,CAACqK,cAAL,EAApC,EAA2DgD,YAA3D,EAAyE,CAAzE;AACAC,sBAAoB,CAACpC,WAArB,CAAiC,CAAjC,EAAoC,CAApC,EAAuC,CAAvC,EAA0C,CAA1C;AACA,QAAMqC,WAAW,GAAGxC,WAAW,CAC7BuC,oBAAoB,CAAChD,WAArB,KAAqC,CADR,EAE7BgD,oBAAoB,CAACjD,cAArB,EAF6B,CAA/B,CAPiC,CAWjC;AACA;;AACArK,MAAI,CAACiL,WAAL,CAAiBoC,YAAjB,EAA+BZ,IAAI,CAACe,GAAL,CAASD,WAAT,EAAsBvN,IAAI,CAACyK,UAAL,EAAtB,CAA/B;AACA,SAAOzK,IAAP;AACD;;AACD,SAASuJ,WAAT,CAAqBvJ,IAArB,EAA2BgF,KAA3B,EAAkC;AAChC,QAAMiE,MAAM,GAAG0D,SAAS,CAAC3H,KAAD,CAAxB;AACA,QAAMyI,IAAI,GAAGxE,MAAM,GAAG,CAAtB;AACA,SAAOO,UAAU,CAACxJ,IAAD,EAAOyN,IAAP,CAAjB;AACD;;AACD,SAASjE,UAAT,CAAoBxJ,IAApB,EAA0BgF,KAA1B,EAAiC;AAC/B;AACA;AACA,SAAO4E,kBAAkB,CAAC5J,IAAD,EAAO2M,SAAS,CAAC3H,KAAD,CAAT,GAAmB2C,WAAW,CAACK,mBAAtC,CAAzB;AACD;;AACD,SAASyB,WAAT,CAAqBzJ,IAArB,EAA2BgF,KAA3B,EAAkC;AAChC,QAAMiE,MAAM,GAAG0D,SAAS,CAAC3H,KAAD,CAAxB;AACA,SAAO+H,eAAe,CAAC/M,IAAD,EAAOiJ,MAAM,GAAGtB,WAAW,CAACI,oBAA5B,CAAtB;AACD;;AACD,SAAS2B,aAAT,CAAuB1J,IAAvB,EAA6BgF,KAA7B,EAAoC;AAClC,QAAMiE,MAAM,GAAG0D,SAAS,CAAC3H,KAAD,CAAxB;AACA,SAAO+H,eAAe,CAAC/M,IAAD,EAAOiJ,MAAM,GAAGtB,WAAW,CAACG,sBAA5B,CAAtB;AACD;;AACD,SAAS6B,aAAT,CAAuB3J,IAAvB,EAA6BgF,KAA7B,EAAoC;AAClC,QAAMiE,MAAM,GAAG0D,SAAS,CAAC3H,KAAD,CAAxB;AACA,SAAO+H,eAAe,CAAC/M,IAAD,EAAOiJ,MAAM,GAAGtB,WAAW,CAACE,sBAA5B,CAAtB;AACD;;AACD,SAAS+B,kBAAT,CAA4B5J,IAA5B,EAAkCgF,KAAlC,EAAyC;AACvC,QAAMiE,MAAM,GAAG0D,SAAS,CAAC3H,KAAD,CAAxB;AACA,QAAMoI,SAAS,GAAGpN,IAAI,CAAC0N,OAAL,EAAlB;AACA,SAAO,IAAIvF,IAAJ,CAASiF,SAAS,GAAGnE,MAArB,CAAP;AACD;;AACD,SAASY,WAAT,CAAqB7J,IAArB,EAA2BiJ,MAA3B,EAAmC;AACjC,SAAOI,WAAW,CAACrJ,IAAD,EAAO,CAACiJ,MAAR,CAAlB;AACD;;AACD,SAASa,YAAT,CAAsB9J,IAAtB,EAA4BiJ,MAA5B,EAAoC;AAClC,SAAOK,YAAY,CAACtJ,IAAD,EAAO,CAACiJ,MAAR,CAAnB;AACD;;AACD,SAASc,WAAT,CAAqB/J,IAArB,EAA2BiJ,MAA3B,EAAmC;AACjC,SAAOM,WAAW,CAACvJ,IAAD,EAAO,CAACiJ,MAAR,CAAlB;AACD;;AACD,SAASe,UAAT,CAAoBhK,IAApB,EAA0BiJ,MAA1B,EAAkC;AAChC,SAAOO,UAAU,CAACxJ,IAAD,EAAO,CAACiJ,MAAR,CAAjB;AACD;;AACD,SAASgB,WAAT,CAAqBjK,IAArB,EAA2BiJ,MAA3B,EAAmC;AACjC,SAAOQ,WAAW,CAACzJ,IAAD,EAAO,CAACiJ,MAAR,CAAlB;AACD;;AACD,SAASiB,aAAT,CAAuBlK,IAAvB,EAA6BiJ,MAA7B,EAAqC;AACnC,SAAOS,aAAa,CAAC1J,IAAD,EAAO,CAACiJ,MAAR,CAApB;AACD;;AACD,SAASkB,aAAT,CAAuBnK,IAAvB,EAA6BiJ,MAA7B,EAAqC;AACnC,SAAOU,aAAa,CAAC3J,IAAD,EAAO,CAACiJ,MAAR,CAApB;AACD;;AACD,SAASmB,kBAAT,CAA4BpK,IAA5B,EAAkCiJ,MAAlC,EAA0C;AACxC,SAAOW,kBAAkB,CAAC5J,IAAD,EAAO,CAACiJ,MAAR,CAAzB;AACD;;AAED,MAAMpJ,aAAN,SAA4B2C,KAA5B,CAAkC;;AAClC,MAAMR,iBAAN,SAAgCQ,KAAhC,CAAsC;;AACtC,SAAS0P,kBAAT,CAA4B9N,CAA5B,EAA+BC,CAA/B,EAAkC;AAChC,MAAID,CAAC,GAAGC,CAAR,EAAW;AACT,WAAO,CAAP;AACD,GAFD,MAEO,IAAIA,CAAC,GAAGD,CAAR,EAAW;AAChB,WAAO,CAAC,CAAR;AACD,GAFM,MAEA;AACL,WAAO,CAAP;AACD;AACF;;AACD,SAAS+N,iBAAT,CAA2BC,IAA3B,EAAiC;AAC/B,UAAQA,IAAR;AACE,SAAK,QAAL;AACE,aAAO,MAAP;;AACF,SAAK,SAAL;AACE,aAAO,OAAP;;AACF,SAAK,QAAL;AACE,aAAO,MAAP;;AACF,SAAK,OAAL;AACE,aAAO,KAAP;;AACF,SAAK,QAAL;AACE,aAAO,MAAP;;AACF,SAAK,UAAL;AACE,aAAO,QAAP;;AACF,SAAK,UAAL;AACE,aAAO,QAAP;;AACF,SAAK,eAAL;AACE,aAAO,aAAP;;AACF;AACE,YAAM,IAAI5P,KAAJ,CAAU,4CAAV,CAAN;AAlBJ;AAoBD;;AACD,SAAS6P,SAAT,CAAmBhM,IAAnB,EAAyB;AACvB,SAAOuF,IAAI,CAAC0G,KAAL,CAAW1G,IAAI,CAACC,SAAL,CAAexF,IAAf,CAAX,CAAP;AACD;;AACD,SAASlF,sBAAT,CAAgCnB,IAAhC,EAAsC;AACpC;AACA,SAAOA,IAAI,YAAYyH,QAAhB,GAA2BZ,eAAe,CAACtG,OAAhB,CAAwB9C,YAAxB,CAAqCuC,IAArC,CAA3B,GACDA,IAAI,YAAY6G,eAAhB,GAAkC7G,IAAlC,GACI6G,eAAe,CAACtG,OAAhB,CAAwB6G,QAAxB,CAAiCpH,IAAjC,CAFV;AAGD;;AACD,SAASiB,mBAAT,CAA6BjB,IAA7B,EAAmCjD,QAAnC,EAA6C;AAC3C,MAAIiD,IAAI,YAAYyH,QAApB,EAA8B;AAC5B,QAAIzH,IAAI,CAACjD,QAAL,KAAkBA,QAAtB,EAAgC;AAC9B,aAAO8J,eAAe,CAACtG,OAAhB,CACJ9C,YADI,CACSuC,IADT,EAEJwD,GAFI,CAEA,UAFA,EAEYzG,QAFZ,EAGJ+I,UAHI,EAAP;AAID;;AACD,WAAO9F,IAAP;AACD;;AACD,SAAOA,IAAI,YAAY6G,eAAhB,GACH7G,IAAI,CAACwD,GAAL,CAAS,UAAT,EAAqBzG,QAArB,EAA+B+I,UAA/B,EADG,GAEHe,eAAe,CAACtG,OAAhB,CACG6G,QADH,CACYpH,IADZ,EAEGwD,GAFH,CAEO,UAFP,EAEmBzG,QAFnB,EAGG+I,UAHH,EAFJ;AAMD,C,CACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6H,yBAAT,CAAmC3N,IAAnC,EAAyCjD,QAAzC,EAAmD;AACjD,MAAIiD,IAAI,CAACjD,QAAL,KAAkBA,QAAtB,EAAgC;AAC9B,WAAO8J,eAAe,CAACtG,OAAhB,CACJ9C,YADI,CACSuC,IADT,EAEJwD,GAFI,CAEA,UAFA,EAEYzG,QAFZ,EAGJ+I,UAHI,EAAP;AAID;;AACD,SAAO9F,IAAP;AACD;;AAED,MAAMuS,eAAN,SAA8B/P,KAA9B,CAAoC;;AACpC,SAASgQ,uBAAT,CAAiC1T,OAAjC,EAA0C;AACxC,MAAI1B,KAAJ;;AACA,MAAI0B,OAAO,CAAC1B,KAAR,YAAyBqK,QAA7B,EAAuC;AACrCrK,SAAK,GAAG0B,OAAO,CAAC1B,KAAhB;AACD,GAFD,MAEO,IAAI0B,OAAO,CAAC1B,KAAR,YAAyByJ,eAA7B,EAA8C;AACnDzJ,SAAK,GAAG0B,OAAO,CAAC1B,KAAR,CAAc0I,UAAd,EAAR;AACD,GAFM,MAEA,IAAIe,eAAe,CAACtG,OAAhB,CAAwB0G,MAAxB,CAA+BnI,OAAO,CAAC1B,KAAvC,CAAJ,EAAmD;AACxDA,SAAK,GAAGyJ,eAAe,CAACtG,OAAhB,CAAwB6G,QAAxB,CAAiCtI,OAAO,CAAC1B,KAAzC,EAAgD0I,UAAhD,EAAR;AACD,GAFM,MAEA;AACL,UAAM,IAAIyM,eAAJ,CACJ,2EACE,4EAFE,CAAN;AAID;;AACD,MAAI1U,GAAJ;;AACA,MAAIiB,OAAO,CAACjB,GAAZ,EAAiB;AACf,QAAIiB,OAAO,CAACjB,GAAR,YAAuB4J,QAA3B,EAAqC;AACnC5J,SAAG,GAAGiB,OAAO,CAACjB,GAAd;AACD,KAFD,MAEO,IAAIiB,OAAO,CAACjB,GAAR,YAAuBgJ,eAA3B,EAA4C;AACjDhJ,SAAG,GAAGiB,OAAO,CAACjB,GAAR,CAAYiI,UAAZ,EAAN;AACD,KAFM,MAEA,IAAIe,eAAe,CAACtG,OAAhB,CAAwB0G,MAAxB,CAA+BnI,OAAO,CAACjB,GAAvC,CAAJ,EAAiD;AACtDA,SAAG,GAAGgJ,eAAe,CAACtG,OAAhB,CAAwB6G,QAAxB,CAAiCtI,OAAO,CAACjB,GAAzC,EAA8CiI,UAA9C,EAAN;AACD,KAFM,MAEA;AACL,YAAM,IAAIyM,eAAJ,CACJ,0FACE,4EAFE,CAAN;AAID;AACF;;AACD,MAAIzT,OAAO,CAAC+G,QAAR,KAAqB7I,SAAzB,EAAoC;AAClC,QAAI,CAACuE,MAAM,CAACC,SAAP,CAAiB1C,OAAO,CAAC+G,QAAzB,CAAL,EAAyC;AACvC,YAAM,IAAI0M,eAAJ,CAAoB,mCAApB,CAAN;AACD;;AACD,QAAIzT,OAAO,CAAC+G,QAAR,IAAoB,CAAxB,EAA2B;AACzB,YAAM,IAAI0M,eAAJ,CAAoB,mCAApB,CAAN;AACD;AACF;;AACD,MAAIzT,OAAO,CAAC2G,KAAR,KAAkBzI,SAAtB,EAAiC;AAC/B,QAAI,CAACuE,MAAM,CAACC,SAAP,CAAiB1C,OAAO,CAAC2G,KAAzB,CAAL,EAAsC;AACpC,YAAM,IAAI8M,eAAJ,CAAoB,gCAApB,CAAN;AACD;;AACD,QAAIzT,OAAO,CAAC2G,KAAR,GAAgB,CAApB,EAAuB;AACrB,YAAM,IAAI8M,eAAJ,CAAoB,gCAApB,CAAN;AACD;AACF;;AACD,MAAIzT,OAAO,CAACjB,GAAR,KAAgBb,SAAhB,IAA6B8B,OAAO,CAAC2G,KAAR,KAAkBzI,SAAnD,EAA8D;AAC5D,UAAM,IAAIuV,eAAJ,CAAoB,0CAApB,CAAN;AACD;;AACD,SAAO;AACLnV,SADK;AAELS,OAFK;AAGL4H,SAAK,EAAE3G,OAAO,CAAC2G,KAHV;AAILI,YAAQ,EAAE/G,OAAO,CAAC+G;AAJb,GAAP;AAMD;;AACD,SAASmI,oBAAT,CAA8ByE,iBAA9B,EAAiD3T,OAAjD,EAA0D;AACxD,QAAMiP,WAAW,GAAGyE,uBAAuB,CAAC1T,OAAD,CAA3C;AACA,QAAM4T,YAAY,GAAGL,SAAS,CAACvT,OAAD,CAA9B;AACA2T,mBAAiB,CAACvC,OAAlB,CAA0ByC,GAAG,IAAI;AAC/BA,OAAG,CAACC,gBAAJ,CAAqBF,YAArB,EAAmC3E,WAAnC;AACD,GAFD;AAGAnN,QAAM,CAACiS,IAAP,CAAY9E,WAAZ,EAAyBmC,OAAzB,CAAiC4C,GAAG,IAAI;AACtC,QAAI/E,WAAW,CAAC+E,GAAD,CAAX,KAAqB9V,SAAzB,EAAoC;AAClC,aAAO+Q,WAAW,CAAC+E,GAAD,CAAlB;AACD;AACF,GAJD;AAKA,SAAO/E,WAAP;AACD;;AACD,SAASD,gBAAT,CAA0BhP,OAA1B,EAAmC;AACjC,QAAMiU,GAAG,GAAGV,SAAS,CAACvT,OAAD,CAArB;AACAiU,KAAG,CAAC3V,KAAJ,GAAY0B,OAAO,CAAC1B,KAApB;AACA,MAAI0B,OAAO,CAACjB,GAAZ,EAAiBkV,GAAG,CAAClV,GAAJ,GAAUiB,OAAO,CAACjB,GAAlB;AACjB,SAAOkV,GAAP;AACD;;AAED,MAAMC,mBAAN,SAAkCxQ,KAAlC,CAAwC;;AACxC,MAAMyQ,aAAN,CAAoB;AAClBpW,aAAW,CAACmD,IAAD,EAAO;AAChB,SAAKA,IAAL,GAAYA,IAAZ;AACD;;AAHiB;;AAKpB,MAAMkT,eAAN,CAAsB;AACpBrW,aAAW,CAACmD,IAAD,EAAO;AAChB,SAAKA,IAAL,GAAYA,IAAZ;AACD;;AAHmB;;AAKtB,SAASkO,sBAAT,CAAgCiF,KAAhC,EAAuC;AACrC,SAAOhU,QAAQ,IACbgU,KAAK,CAAClV,MAAN,CAAa,CAACC,IAAD,EAAOC,IAAP,KAAgB;AAC3B,UAAMkR,IAAI,GAAGlR,IAAI,CAAC8B,GAAL,CAASd,QAAT,CAAb;AACA,QAAIkQ,IAAJ,EAAUnR,IAAI,CAAC2E,IAAL,CAAUwM,IAAV;AACV,WAAOnR,IAAP;AACD,GAJD,EAIG,EAJH,CADF;AAMD;;AAED,MAAM+P,uBAAN,CAA8B;AAC5BpR,aAAW,CAACgR,eAAD,EAAkB/O,OAAlB,EAA2BhC,IAA3B,EAAiC;AAC1C,SAAKgC,OAAL,GAAeA,OAAf;AACA,SAAKhC,IAAL,GAAYA,IAAZ;AACA,SAAKqW,KAAL,GAAa,EAAb;AACA,SAAKhU,QAAL,GACE;AACA,SAAKL,OAAL,CAAa2G,KAAb,KAAuBzI,SAAvB,GAAmC,KAAKoW,OAAL,EAAnC,GACM,KAAKtW,IAAL,CAAUgB,OAAV,GAAoB,KAAKuV,uBAAL,EAApB,GACI,KAAKC,gBAAL,EAJZ;AAKA,SAAKxU,OAAL,GAAe8B,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBwR,SAAS,CAACvT,OAAD,CAA3B,CAAd,EAAqD;AAClE1B,WAAK,EAAE0B,OAAO,CAAC1B,KADmD;AAElES,SAAG,EAAEiB,OAAO,CAACjB;AAFqD,KAArD,CAAf;AAIA,SAAKC,OAAL,GAAgB,KAAKgB,OAAL,CAAa2G,KAAb,KAAuBzI,SAAvB,IAAoCF,IAAI,CAACgB,OAA1C,IAAsD,KAArE;;AACA,kCAAuB,KAAKyV,qBAAL,CAA2BzW,IAA3B,CAAvB;AAAA,UAAQM,KAAR,yBAAQA,KAAR;AAAA,UAAeS,GAAf,yBAAeA,GAAf;;AACA,QAAIiB,OAAO,CAAC2G,KAAR,KAAkBzI,SAAtB,EAAiC;AAC/B,WAAKI,KAAL,GAAa0B,OAAO,CAAC1B,KAArB;AACD,KAFD,MAEO,IAAIA,KAAK,IAAI0B,OAAO,CAAC1B,KAArB,EAA4B;AACjC,WAAKA,KAAL,GAAaA,KAAK,CAACsD,cAAN,CAAqB5B,OAAO,CAAC1B,KAA7B,IAAsCA,KAAtC,GAA8C0B,OAAO,CAAC1B,KAAnE;AACD,KAFM,MAEA;AACL,WAAKA,KAAL,GAAaA,KAAK,IAAI0B,OAAO,CAAC1B,KAA9B;AACD;;AACD,QAAIS,GAAG,IAAIiB,OAAO,CAACjB,GAAnB,EAAwB;AACtB,WAAKA,GAAL,GAAWA,GAAG,CAACmF,eAAJ,CAAoBlE,OAAO,CAACjB,GAA5B,IAAmCA,GAAnC,GAAyCiB,OAAO,CAACjB,GAA5D;AACD,KAFD,MAEO;AACL,WAAKA,GAAL,GAAWA,GAAG,IAAIiB,OAAO,CAACjB,GAA1B;AACD;;AACD,QAAI,KAAKf,IAAL,CAAUgB,OAAV,IAAqB,EAAEgB,OAAO,CAAC2G,KAAR,KAAkBzI,SAAlB,IAA+B,KAAKa,GAAtC,CAAzB,EAAqE;AACnE,YAAM,IAAI2E,KAAJ,CACJ,uEACE,iDAFE,CAAN;AAID;;AACD,SAAK5E,UAAL,GAAkB,CAAC,KAAKC,GAAN,IAAa,KAAKiB,OAAL,CAAa2G,KAAb,KAAuBzI,SAAtD;AACA,SAAKgC,WAAL,GAAmB,CAAC,CAAC,KAAKF,OAAL,CAAa+G,QAAlC;AACA,SAAKsN,KAAL,GAAarR,KAAK,CAACwD,OAAN,CAAcuI,eAAd,IAAiCA,eAAjC,GAAmDA,eAAe,CAAC,IAAD,CAA/E;AACD;;AACe,GAAfnM,MAAM,CAACvC,QAAQ,IAAI;AAClB,WAAO,KAAKA,QAAZ;AACD;;AACD7B,MAAI,CAACR,IAAD,EAAO;AACT,WAAO,KAAKqC,QAAL,CAAc7B,IAAd,CAAmBR,IAAnB,CAAP;AACD;AACD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAC0B,GAAvBuW,uBAAuB,GAAG;AACzB,UAAMjR,KAAK,GAAGN,KAAK,CAACC,IAAN,CAAW,KAAKuR,gBAAL,EAAX,EAAoCxV,OAApC,EAAd;AACA,QAAImE,SAAJ;AACA,UAAMyE,SAAS,GAAGtE,KAAK,CAAC4D,KAAN,EAAlB;AACA,QAAIhG,IAAI,GAAG0G,SAAS,CAAChC,KAAV,EAAX;;AACA,WAAO1E,IAAP,EAAa;AACX,UAAIiC,SAAS,IAAIA,SAAS,CAAC/B,UAAvB,IAAqCF,IAAI,CAACK,OAAL,CAAa4B,SAAS,CAAC/B,UAAvB,CAAzC,EAA6E;AAC3EF,YAAI,GAAG0G,SAAS,CAAChC,KAAV,EAAP;AACA;AACD;;AACDzC,eAAS,GAAG,MAAMjC,IAAlB;;AACA,UAAIiC,SAAS,IAAIA,SAAS,CAAC/B,UAAvB,IAAqC+B,SAAS,CAAC/B,UAAV,CAAqBQ,cAArB,CAAoCV,IAApC,CAAzC,EAAoF;AAClF,cAAM,IAAIwC,KAAJ,CACJ,+EACE,gDAFE,CAAN;AAID;;AACDxC,UAAI,GAAG0G,SAAS,CAAChC,KAAV,EAAP;AACD;;AACD,WAAO1H,SAAP;AACD;;AACgB,GAAhBsW,gBAAgB,GAAG;AAClB,QAAI,KAAKxU,OAAL,CAAa2G,KAAb,KAAuB,CAA3B,EAA8B;AAC9B,UAAMhE,QAAQ,GAAG,KAAK2R,OAAL,EAAjB;AACA,UAAMhW,KAAK,GAAG,KAAKN,IAAL,CAAUM,KAAV,IAAmB,KAAKA,KAAtC;AACA,QAAI4C,IAAI,GAAGyB,QAAQ,CAACnE,IAAT,GAAgBC,KAA3B;AACA,QAAIwF,KAAK,GAAG,CAAZ;AACA,QAAId,SAAJ;;AACA,WAAOjC,IAAI,IAAI+C,KAAK,IAAI,KAAKjE,OAAL,CAAa2G,KAArC,EAA4C;AAC1C1C,WAAK;;AACL,UAAI/C,IAAI,CAACV,QAAL,CAAclC,KAAd,CAAJ,EAA0B;AACxB4C,YAAI,GAAGyB,QAAQ,CAACnE,IAAT,GAAgBC,KAAvB;AACA;AACD;;AACD,UAAI0E,SAAS,IAAIA,SAAS,CAAC/B,UAAvB,IAAqCF,IAAI,CAACV,QAAL,CAAc2C,SAAS,CAAC/B,UAAxB,CAAzC,EAA8E;AAC5EF,YAAI,GAAGyB,QAAQ,CAACnE,IAAT,GAAgBC,KAAvB;AACA;AACD;;AACD0E,eAAS,GAAG,MAAMjC,IAAlB;;AACA,UAAIiC,SAAS,IAAIA,SAAS,CAAC/B,UAAvB,IAAqC+B,SAAS,CAAC/B,UAAV,CAAqB8C,eAArB,CAAqChD,IAArC,CAAzC,EAAqF;AACnF,cAAM,IAAIwC,KAAJ,CACJ,+EACE,gDAFE,CAAN;AAID;;AACDxC,UAAI,GAAGyB,QAAQ,CAACnE,IAAT,GAAgBC,KAAvB;AACD;;AACD,WAAOP,SAAP;AACD;;AACO,GAAPoW,OAAO,GAAG;AACT,QAAII,YAAY,GAAG,KAAKpW,KAAxB;AACA,QAAI,KAAKU,OAAT,EAAkB0V,YAAY,GAAG,KAAK3V,GAApB;AAClB,QAAImC,IAAI,GAAG,KAAKyT,QAAL,CAAcD,YAAd,CAAX;;AACA,WAAOxT,IAAP,EAAa;AACX,YAAMlD,IAAI,GAAG,MAAM,KAAKsE,kBAAL,CAAwBpB,IAAxB,CAAnB;;AACA,UAAIlD,IAAI,IAAIA,IAAI,CAACoD,UAAjB,EAA6B;AAC3B,YACE,KAAKpC,OAAL,GACIhB,IAAI,CAACoD,UAAL,CAAgBQ,cAAhB,CAA+BV,IAA/B,CADJ,GAEIlD,IAAI,CAACoD,UAAL,CAAgB8C,eAAhB,CAAgChD,IAAhC,CAHN,EAIE;AACA;AACA;AACA;AACA;AACA,gBAAM,IAAIwC,KAAJ,CACJ,+EACE,gDAFE,CAAN;AAID;;AACDxC,YAAI,GAAG,KAAKyT,QAAL,CAAc3W,IAAI,CAACoD,UAAnB,CAAP;AACD,OAhBD,MAgBO;AACLF,YAAI,GAAG,KAAKyT,QAAL,CACL,KAAK3V,OAAL,GAAekC,IAAI,CAACZ,QAAL,CAAc,CAAd,EAAiB,aAAjB,CAAf,GAAiDY,IAAI,CAACD,GAAL,CAAS,CAAT,EAAY,aAAZ,CAD5C,CAAP;AAGD;AACF;;AACD,WAAO/C,SAAP;AACD;AACD;AACF;AACA;;;AACEyW,UAAQ,CAACrW,KAAD,EAAQ;AACd,QAAI2U,MAAM,GAAG,KAAK2B,QAAL,CAActW,KAAK,CAACoG,GAAN,CAAU,YAAV,EAAwB,EAAxB,CAAd,CAAb;AACA,QAAI,KAAKmQ,aAAL,CAAmB5B,MAAM,CAAC/R,IAA1B,CAAJ,EAAqC,OAAO,IAAP;AACrC,QAAI+C,KAAK,GAAG,CAAZ;;AACA,WAAOgP,MAAM,YAAYmB,eAAlB,IAAqCnQ,KAAK,GAAG,EAApD,EAAwD;AACtDgP,YAAM,GAAG,KAAK2B,QAAL,CAAc3B,MAAM,CAAC/R,IAArB,CAAT;AACA,UAAI,KAAK2T,aAAL,CAAmB5B,MAAM,CAAC/R,IAA1B,CAAJ,EAAqC,OAAO,IAAP;AACrC+C,WAAK;AACN;;AACD,QAAIgP,MAAM,YAAYmB,eAAtB,EAAuC;AACrC,YAAM,IAAIF,mBAAJ,CACH,2CAA0CjQ,KAAM,eAAjD,GACG,wBAAuBgP,MAAM,CAAC/R,IAAP,CAAYwH,WAAZ,EAA0B,GAFhD,CAAN;AAID;;AACD,QAAI,KAAK1J,OAAL,GAAeV,KAAK,CAACkC,QAAN,CAAeyS,MAAM,CAAC/R,IAAtB,CAAf,GAA6C5C,KAAK,CAACiD,OAAN,CAAc0R,MAAM,CAAC/R,IAArB,CAAjD,EAA6E;AAC3E,YAAM,IAAIgT,mBAAJ,CACJ,oEACE,sDADF,GAEE,kEAFF,GAGE,yCAJE,CAAN;AAMD;;AACD,WAAOjB,MAAM,CAAC/R,IAAd;AACD;AACD;AACF;AACA;AACA;;;AACE0T,UAAQ,CAACtW,KAAD,EAAQ;AACd,QAAI2U,MAAM,GAAG,IAAIkB,aAAJ,CAAkB7V,KAAlB,CAAb;;AACA,SAAK,MAAMiS,IAAX,IAAmB,KAAK8D,KAAxB,EAA+B;AAC7B,UAAIpB,MAAM,YAAYmB,eAAtB,EAAuC;AACrC,eAAOnB,MAAP;AACD;;AACDA,YAAM,GAAG1C,IAAI,CAACuE,GAAL,CAAS7B,MAAM,CAAC/R,IAAhB,CAAT;AACD;;AACD,WAAO+R,MAAP;AACD;;AACD4B,eAAa,CAAC3T,IAAD,EAAO;AAClB,WAAO,KAAKlC,OAAL,GAAekC,IAAI,CAACV,QAAL,CAAc,KAAKlC,KAAnB,CAAf,GAA2C,KAAKS,GAAL,IAAYmC,IAAI,CAACK,OAAL,CAAa,KAAKxC,GAAlB,CAA9D;AACD;;AACDuD,oBAAkB,CAACpB,IAAD,EAAO;AACvB,WAAO,KAAKhB,WAAL,GAAmBgB,IAAI,CAACwD,GAAL,CAAS,UAAT,EAAqB,KAAK1E,OAAL,CAAa+G,QAAlC,CAAnB,GAAiE7F,IAAxE;AACD;;AACDuT,uBAAqB,CAACzW,IAAD,EAAO;AAC1B,WAAO;AACLM,WAAK,EAAEN,IAAI,CAACM,KAAL,IAAcuQ,yBAAyB,CAAC7Q,IAAI,CAACM,KAAN,EAAa,KAAK0B,OAAL,CAAa1B,KAAb,CAAmBL,QAAhC,CADzC;AAELc,SAAG,EAAEf,IAAI,CAACe,GAAL,IAAY8P,yBAAyB,CAAC7Q,IAAI,CAACe,GAAN,EAAW,KAAKiB,OAAL,CAAa1B,KAAb,CAAmBL,QAA9B;AAFrC,KAAP;AAID;;AAxM2B;;;;;;;;;;;;;;AC3tB9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAaA,MAAM8W,cAAN,CAAqB;AACnBhX,aAAW,CAACiX,SAAD,EAAY;AACrB,SAAKA,SAAL,GAAiBA,SAAjB;AACA,SAAK1W,KAAL,GAAa0W,SAAS,CAAC1W,KAAvB;AACA,SAAKS,GAAL,GAAWiW,SAAS,CAACjW,GAArB;AACA,SAAKiB,OAAL,GAAegV,SAAS,CAAChV,OAAzB;AACD;;AANkB;;AASrB,MAAMiV,aAAN,SAA4BF,cAA5B,CAA2C;AACzChX,aAAW,CAACiX,SAAD,EAAYE,QAAZ,EAAsB;AAC/B,UAAMF,SAAN;AACA,SAAKE,QAAL,GAAgBA,QAAhB;AACA,SAAKC,YAAL,GAAoB9B,yEAAiB,CAAC,KAAKrT,OAAL,CAAaoV,SAAd,CAArC;AACA,SAAKC,sBAAL,GAA8B,KAAKC,mBAAL,CAAyB,KAAKtV,OAAL,CAAa1B,KAAtC,CAA9B;AACA,SAAKiX,iBAAL,GAAyB,KAAKF,sBAA9B;AACA,SAAKG,eAAL,GAAuB,KAAKC,iBAAL,CAAuB,KAAKJ,sBAA5B,CAAvB;AACA,SAAKK,cAAL,CAAoB,KAAKR,QAAzB;AACD;;AACDJ,KAAG,CAAC5T,IAAD,EAAO;AACR,WAAO,KAAKyU,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD;;AACDyU,cAAY,CAACtF,GAAD,EAAM;AAChB,UAAQnP,IAAR,GAAiBmP,GAAjB,CAAQnP,IAAR;;AACA,QAAImP,GAAG,YAAY8D,6DAAf,IAAgC,KAAKyB,oBAAL,CAA0B1U,IAA1B,CAApC,EAAqE;AACnE,aAAOmP,GAAP;AACD;;AACD,SAAKqF,cAAL,CAAoBxU,IAApB;AACA,WAAO,IAAIkT,+DAAJ,EACL;AACA,SAAKwB,oBAAL,CAA0B1U,IAA1B,IAAkCA,IAAlC,GAAyC,KAAK2U,oBAAL,EAFpC,CAAP;AAID;;AACDA,sBAAoB,GAAG;AACrB,WAAO,KAAKN,iBAAZ;AACD;;AACDD,qBAAmB,CAACpU,IAAD,EAAO;AACxB,QAAI,KAAKlB,OAAL,CAAaoV,SAAb,KAA2B,QAA/B,EAAyC;AACvC,aAAOlU,IAAI,CAACI,WAAL,CAAiB,MAAjB,EAAyB;AAAEmC,iBAAS,EAAE,KAAKzD,OAAL,CAAayD;AAA1B,OAAzB,CAAP;AACD;;AACD,WAAOvC,IAAI,CAACI,WAAL,CAAiB,KAAK6T,YAAtB,CAAP;AACD;;AACDM,mBAAiB,CAACnX,KAAD,EAAQ;AACvB,YAAQ,KAAK0B,OAAL,CAAaoV,SAArB;AACE,WAAK,QAAL;AACE,eAAO9W,KAAK,CAAC2C,GAAN,CAAU,CAAV,EAAa,MAAb,CAAP;;AACF,WAAK,SAAL;AACE,eAAO3C,KAAK,CAAC2C,GAAN,CAAU,CAAV,EAAa,OAAb,CAAP;;AACF,WAAK,QAAL;AACE,eAAO3C,KAAK,CAAC2C,GAAN,CAAU,CAAV,EAAa,MAAb,CAAP;;AACF,WAAK,OAAL;AACE,eAAO3C,KAAK,CAAC2C,GAAN,CAAU,CAAV,EAAa,KAAb,CAAP;;AACF,WAAK,QAAL;AACE,eAAO3C,KAAK,CAAC2C,GAAN,CAAU,CAAV,EAAa,MAAb,CAAP;;AACF,WAAK,UAAL;AACE,eAAO3C,KAAK,CAAC2C,GAAN,CAAU,CAAV,EAAa,QAAb,CAAP;;AACF,WAAK,UAAL;AACE,eAAO3C,KAAK,CAAC2C,GAAN,CAAU,CAAV,EAAa,QAAb,CAAP;;AACF,WAAK,eAAL;AACE,eAAO3C,KAAK,CAAC2C,GAAN,CAAU,CAAV,EAAa,aAAb,CAAP;;AACF;AACE,cAAM,IAAIyC,KAAJ,CAAW,qBAAoB,KAAK1D,OAAL,CAAaoV,SAAU,EAAtD,CAAN;AAlBJ;AAoBD;;AACDM,gBAAc,CAACxU,IAAD,EAAO;AACnB,UAAMiJ,MAAM,GAAG,KAAK2L,kBAAL,CAAwB5U,IAAxB,CAAf;AACA,SAAKqU,iBAAL,GAAyB,KAAKF,sBAAL,CAA4BpU,GAA5B,CAAgCkJ,MAAhC,EAAwC,KAAKgL,YAA7C,CAAzB;AACA,SAAKK,eAAL,GAAuB,KAAKC,iBAAL,CAAuB,KAAKF,iBAA5B,CAAvB;AACD;;AACDK,sBAAoB,CAAC1U,IAAD,EAAO;AACzB,WAAO,KAAKqU,iBAAL,CAAuBrR,eAAvB,CAAuChD,IAAvC,KAAgD,KAAKsU,eAAL,CAAqBjU,OAArB,CAA6BL,IAA7B,CAAvD;AACD;;AACD4U,oBAAkB,CAAC5U,IAAD,EAAO;AACvB,WAAO6U,8BAA8B,CAAC;AACpCC,WAAK,EAAE,KAAKX,sBADwB;AAEpCzL,YAAM,EAAE1I,IAF4B;AAGpCkJ,UAAI,EAAE,KAAK+K,YAHyB;AAIpCc,cAAQ,EAAE,KAAKjW,OAAL,CAAaiW,QAJa;AAKpCxS,eAAS,EAAE,KAAKzD,OAAL,CAAayD,SALY;AAMpCyS,eAAS,EAAE;AANyB,KAAD,CAArC;AAQD;;AAxEwC;AA0E3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASH,8BAAT,CAAwC;AAAEC,OAAF;AAASpM,QAAT;AAAiBQ,MAAjB;AAAuB6L,UAAvB;AAAiCxS,WAAjC;AAA4CyS;AAA5C,CAAxC,EAAiG;AAC/F,MAAIC,UAAU,GAAG,CAAC,MAAM;AACtB,QAAIC,gBAAJ;AACA,QAAIC,MAAJ;;AACA,YAAQjM,IAAR;AACE,WAAK,MAAL;AACEiM,cAAM,GAAG,CAACzM,MAAM,CAACzI,GAAP,CAAW,MAAX,IAAqB6U,KAAK,CAAC7U,GAAN,CAAU,MAAV,CAAtB,IAA2C,EAApD;AACAkV,cAAM,GAAGA,MAAM,GAAGzM,MAAM,CAACzI,GAAP,CAAW,OAAX,CAAT,GAA+B6U,KAAK,CAAC7U,GAAN,CAAU,OAAV,CAAxC;AACA,eAAOwM,IAAI,CAACC,KAAL,CAAWyI,MAAM,GAAG,EAApB,CAAP;;AACF,WAAK,OAAL;AACEA,cAAM,GAAG,CAACzM,MAAM,CAACzI,GAAP,CAAW,MAAX,IAAqB6U,KAAK,CAAC7U,GAAN,CAAU,MAAV,CAAtB,IAA2C,EAApD;AACAkV,cAAM,GAAGA,MAAM,GAAGzM,MAAM,CAACzI,GAAP,CAAW,OAAX,CAAT,GAA+B6U,KAAK,CAAC7U,GAAN,CAAU,OAAV,CAAxC;AACA,eAAOkV,MAAP;;AACF,WAAK,MAAL;AACEL,aAAK,GAAGA,KAAK,CAAC1U,WAAN,CAAkB,MAAlB,EAA0B;AAAEmC;AAAF,SAA1B,CAAR;AACA2S,wBAAgB,GAAGvN,2DAAW,CAACM,oBAA/B;AACA;;AACF,WAAK,KAAL;AACEiN,wBAAgB,GAAGvN,2DAAW,CAACK,mBAA/B;AACA;;AACF,WAAK,MAAL;AACEkN,wBAAgB,GAAGvN,2DAAW,CAACI,oBAA/B;AACA;;AACF,WAAK,QAAL;AACEmN,wBAAgB,GAAGvN,2DAAW,CAACG,sBAA/B;AACA;;AACF,WAAK,QAAL;AACEoN,wBAAgB,GAAGvN,2DAAW,CAACE,sBAA/B;AACA;;AACF,WAAK,aAAL;AACEqN,wBAAgB,GAAG,CAAnB;AACA;;AACF;AACE,cAAM,IAAI1S,KAAJ,CAAU,yBAAV,CAAN;AA7BJ;;AA+BA,UAAMgK,IAAI,GAAG9D,MAAM,CAACxC,OAAP,KAAmB4O,KAAK,CAAC5O,OAAN,EAAhC;AACA,WAAOuG,IAAI,CAACC,KAAL,CAAWF,IAAI,GAAG0I,gBAAlB,CAAP;AACD,GApCgB,GAAjB;;AAqCA,QAAM1O,EAAE,GAAGwO,SAAS,KAAK,OAAd,GAAwBvI,IAAI,CAACK,IAA7B,GAAoCL,IAAI,CAACC,KAApD;AACAuI,YAAU,GAAGzO,EAAE,CAACyO,UAAU,GAAGF,QAAd,CAAF,GAA4BA,QAAzC;AACA,SAAOE,UAAP;AACD;;AAED,MAAMG,gBAAN,SAA+BrB,aAA/B,CAA6C;AAC3CY,sBAAoB,GAAG;AACrB,WAAO,KAAKL,eAAL,CAAqBlV,QAArB,CAA8B,CAA9B,EAAiC,aAAjC,CAAP;AACD;;AACDwV,oBAAkB,CAAC5U,IAAD,EAAO;AACvB,WAAO6U,8BAA8B,CAAC;AACpCC,WAAK,EAAE,KAAKX,sBADwB;AAEpCzL,YAAM,EAAE1I,IAF4B;AAGpCkJ,UAAI,EAAE,KAAK+K,YAHyB;AAIpCc,cAAQ,EAAE,KAAKjW,OAAL,CAAaiW,QAJa;AAKpCxS,eAAS,EAAE,KAAKzD,OAAL,CAAayD,SALY;AAMpCyS,eAAS,EAAE;AANyB,KAAD,CAArC;AAQD;;AAb0C;;AAgB7C,MAAMK,WAAW,GAAG,CAClB,eADkB,EAElB,UAFkB,EAGlB,UAHkB,EAIlB,QAJkB,EAKlB,OALkB,EAMlB,QANkB,EAOlB,SAPkB,EAQlB,QARkB,CAApB;AAUA,MAAMC,mBAAmB,GAAG;AAC1BtO,MAAI,EAAE,eADoB;AAE1B/G,KAAG,EAAE6T,SAAS,IAAI;AAChB,QACEA,SAAS,CAAChV,OAAV,CAAkByW,qBAAlB,KAA4CvY,SAA5C,IACA8W,SAAS,CAAChV,OAAV,CAAkBoV,SAAlB,KAAgC,eAFlC,EAGE;AACA,aAAO,IAAP;AACD;;AACD,QAAIJ,SAAS,CAAChW,OAAd,EAAuB,OAAO,IAAIsX,gBAAJ,CAAqBtB,SAArB,EAAgCA,SAAS,CAACjW,GAA1C,CAAP;AACvB,WAAO,IAAIkW,aAAJ,CAAkBD,SAAlB,EAA6BA,SAAS,CAAC1W,KAAvC,CAAP;AACD,GAXyB;AAY1BwV,kBAAgB,EAAE,CAAC9T,OAAD,EAAU0W,IAAV,KAAmB;AACnC,QAAI,CAACH,WAAW,CAACI,QAAZ,CAAqB3W,OAAO,CAACoV,SAA7B,CAAL,EAA8C;AAC5C,YAAM,IAAI3B,+DAAJ,CAAqB,8BAA6B3G,IAAI,CAACC,SAAL,CAAewJ,WAAf,CAA4B,EAA9E,CAAN;AACD;;AACD,QAAIvW,OAAO,CAACiW,QAAR,KAAqB/X,SAAzB,EAAoC;AAClC,UAAI,CAACuE,MAAM,CAACC,SAAP,CAAiB1C,OAAO,CAACiW,QAAzB,CAAL,EAAyC;AACvC,cAAM,IAAIxC,+DAAJ,CAAoB,mCAApB,CAAN;AACD;;AACD,UAAIzT,OAAO,CAACiW,QAAR,GAAmB,CAAvB,EAA0B;AACxB,cAAM,IAAIxC,+DAAJ,CAAoB,kCAApB,CAAN;AACD;AACF;;AACD,QAAIzT,OAAO,CAACyD,SAAR,KAAsBvF,SAA1B,EAAqC;AACnC,UAAI,CAAC2K,2DAAW,CAACC,QAAZ,CAAqB6N,QAArB,CAA8B3W,OAAO,CAACyD,SAAtC,CAAL,EAAuD;AACrD,cAAM,IAAIgQ,+DAAJ,CACH,8BAA6B3G,IAAI,CAACC,SAAL,CAAelE,2DAAW,CAACC,QAA3B,CAAqC,EAD/D,CAAN;AAGD;AACF;;AACD4N,QAAI,CAACtB,SAAL,GAAiBpV,OAAO,CAACoV,SAAzB;AACAsB,QAAI,CAACT,QAAL,GAAgBjW,OAAO,CAACiW,QAAR,IAAoB,CAApC;AACAS,QAAI,CAACjT,SAAL,GAAiBzD,OAAO,CAACyD,SAAR,IAAqB,IAAtC;AACD,GAlCyB;AAmC1BmT,MAAI,EAAE,MAAM,CAACJ,mBAAD;AAnCc,CAA5B;;AAsCA,SAASK,gBAAT,CAA0BC,MAA1B,EAAkC;AAChC,SAAO9T,KAAK,CAACwD,OAAN,CAAcsQ,MAAd,KAAyBA,MAAM,CAAC5R,MAAP,GAAgB,CAAhD;AACD;;AAED,MAAM6R,SAAS,GAAG,IAAIC,OAAJ,EAAlB;;AACA,MAAMC,kBAAN,SAAiClC,cAAjC,CAAgD;AAC9ChX,aAAW,CAACiX,SAAD,EAAY;AACrB,UAAMA,SAAN;;AACA,QAAI,CAAC+B,SAAS,CAACG,GAAV,CAAc,KAAKlC,SAAnB,CAAL,EAAoC;AAClC+B,eAAS,CAACrS,GAAV,CAAc,KAAKsQ,SAAnB,EAA8B,IAAIC,aAAJ,CAAkBD,SAAlB,EAA6BA,SAAS,CAAC1W,KAAvC,CAA9B;AACD;;AACD,SAAK8W,SAAL,GAAiB2B,SAAS,CAAC5V,GAAV,CAAc,KAAK6T,SAAnB,CAAjB;AACD;;AACDW,cAAY,CAACtF,GAAD,EAAM;AAChB,WAAO,KAAK+E,SAAL,CAAeO,YAAf,CAA4BtF,GAA5B,CAAP;AACD;;AAV6C;;AAYhD,MAAM8G,qBAAN,SAAoCpC,cAApC,CAAmD;AACjDhX,aAAW,CAACiX,SAAD,EAAY;AACrB,UAAMA,SAAN;;AACA,QAAI,CAAC+B,SAAS,CAACG,GAAV,CAAc,KAAKlC,SAAnB,CAAL,EAAoC;AAClC+B,eAAS,CAACrS,GAAV,CAAc,KAAKsQ,SAAnB,EAA8B,IAAIsB,gBAAJ,CAAqBtB,SAArB,EAAgCA,SAAS,CAACjW,GAA1C,CAA9B;AACD;;AACD,SAAKqW,SAAL,GAAiB2B,SAAS,CAAC5V,GAAV,CAAc,KAAK6T,SAAnB,CAAjB;AACD;;AACDW,cAAY,CAACtF,GAAD,EAAM;AAChB,WAAO,KAAK+E,SAAL,CAAeO,YAAf,CAA4BtF,GAA5B,CAAP;AACD;;AAVgD;AAanD;AACA;AACA;AACA;;;AACA,MAAM+G,mBAAN,SAAkCD,qBAAlC,CAAwD;AACtDrC,KAAG,CAAC5T,IAAD,EAAO;AACR;AACA,UAAMmW,WAAW,GAAGnW,IAAI,CAACC,GAAL,CAAS,KAAKG,WAAd,CAApB,CAFQ,CAGR;;AACA,SAAK,MAAMgW,IAAX,IAAmB,KAAKR,MAAxB,EAAgC;AAC9B,UAAIO,WAAW,GAAGC,IAAlB,EAAwB;;AACxB,UAAID,WAAW,KAAKC,IAApB,EAA0B;AACxB,eAAO,KAAK3B,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD,OAJ6B,CAK9B;;;AACA,aAAO,KAAKyU,YAAL,CACL,IAAIvB,+DAAJ,CAAoBlT,IAAI,CAACmD,cAAL,CAAoB,KAAKkT,eAAzB,EAA0C7S,GAA1C,CAA8C,KAAKpD,WAAnD,EAAgEgW,IAAhE,CAApB,CADK,CAAP;AAGD;;AACD,WAAO,KAAK3B,YAAL,CACL,IAAIvB,+DAAJ,CACElT,IAAI,CACF;AADE,KAEDmD,cAFH,CAEkB,KAAKkT,eAFvB,EAGE;AAHF,KAIGjX,QAJH,CAIY,CAJZ,EAIe,KAAKiX,eAJpB,EAKE;AALF,KAMG7S,GANH,CAMO,KAAKpD,WANZ,EAMyB,KAAKwV,MAAL,CAAY,CAAZ,CANzB,CADF,CADK,CAAP;AAWD;;AA1BqD;;AA6BxD,MAAMU,4BAAN,SAA2CJ,mBAA3C,CAA+D;AAC7DrZ,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAKmJ,eAAL,GAAuB,QAAvB;AACA,SAAKjW,WAAL,GAAmB,aAAnB;AACA,SAAKwV,MAAL,GAAc,KAAK9W,OAAL,CAAayW,qBAAb,CAAmCvP,KAAnC,GAA2ClI,OAA3C,EAAd;AACD;;AAN4D;AAS/D;AACA;AACA;AACA;;;AACA,MAAMyY,gBAAN,SAA+BR,kBAA/B,CAAkD;AAChDnC,KAAG,CAAC5T,IAAD,EAAO;AACR;AACA,UAAMmW,WAAW,GAAGnW,IAAI,CAACC,GAAL,CAAS,KAAKG,WAAd,CAApB,CAFQ,CAGR;;AACA,SAAK,MAAMgW,IAAX,IAAmB,KAAKR,MAAxB,EAAgC;AAC9B,UAAIO,WAAW,GAAGC,IAAlB,EAAwB;;AACxB,UAAID,WAAW,KAAKC,IAApB,EAA0B;AACxB,eAAO,KAAK3B,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD,OAJ6B,CAK9B;;;AACA,aAAO,KAAKyU,YAAL,CACL,IAAIvB,+DAAJ,CAAoBlT,IAAI,CAACI,WAAL,CAAiB,KAAKiW,eAAtB,EAAuC7S,GAAvC,CAA2C,KAAKpD,WAAhD,EAA6DgW,IAA7D,CAApB,CADK,CAAP;AAGD;;AACD,WAAO,KAAK3B,YAAL,CACL,IAAIvB,+DAAJ,CACElT,IAAI,CACF;AADE,KAEDI,WAFH,CAEe,KAAKiW,eAFpB,EAGE;AAHF,KAIGtW,GAJH,CAIO,CAJP,EAIU,KAAKsW,eAJf,EAKE;AALF,KAMG7S,GANH,CAMO,KAAKpD,WANZ,EAMyB,KAAKwV,MAAL,CAAY,CAAZ,CANzB,CADF,CADK,CAAP;AAWD;;AA1B+C;;AA6BlD,MAAMY,yBAAN,SAAwCD,gBAAxC,CAAyD;AACvD1Z,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAKmJ,eAAL,GAAuB,QAAvB;AACA,SAAKjW,WAAL,GAAmB,aAAnB;AACA,SAAKwV,MAAL,GAAc,KAAK9W,OAAL,CAAayW,qBAA3B;AACD;;AANsD;;AASzD,MAAMkB,+BAA+B,GAAG;AACtCzP,MAAI,EAAE,uBADgC;AAEtC/G,KAAG,EAAE6T,SAAS,IAAI;AAChB,QAAIA,SAAS,CAAChV,OAAV,CAAkByW,qBAAlB,KAA4CvY,SAAhD,EAA2D,OAAO,IAAP;AAC3D,QAAI8W,SAAS,CAAChW,OAAd,EAAuB,OAAO,IAAIwY,4BAAJ,CAAiCxC,SAAjC,CAAP;AACvB,WAAO,IAAI0C,yBAAJ,CAA8B1C,SAA9B,CAAP;AACD,GANqC;AAOtClB,kBAAgB,EAAE,CAAC9T,OAAD,EAAU0W,IAAV,KAAmB;AACnC,QAAI1W,OAAO,CAACyW,qBAAR,KAAkCvY,SAAtC,EAAiD;AAC/C,UAAI,CAAC2Y,gBAAgB,CAAC7W,OAAO,CAACyW,qBAAT,CAArB,EAAsD;AACpD,cAAM,IAAIhD,+DAAJ,CAAoB,mDAApB,CAAN;AACD;;AACD,UAAIzT,OAAO,CAACyW,qBAAR,CAA8BtQ,IAA9B,CAAmCyR,GAAG,IAAIA,GAAG,GAAG,CAAN,IAAWA,GAAG,GAAG,GAA3D,CAAJ,EAAqE;AACnE,cAAM,IAAInE,+DAAJ,CAAoB,uDAApB,CAAN;AACD;;AACDiD,UAAI,CAACD,qBAAL,GAA6BzW,OAAO,CAACyW,qBAArC;AACAC,UAAI,CAACD,qBAAL,CAA2B/Q,IAA3B,CAAgC0N,kEAAhC;AACD,KATD,MASO,IAAIpT,OAAO,CAACoV,SAAR,KAAsB,eAA1B,EAA2C;AAChDsB,UAAI,CAACD,qBAAL,GAA6B,CAACC,IAAI,CAACpY,KAAL,CAAW6C,GAAX,CAAe,aAAf,CAAD,CAA7B;AACD;AACF,GApBqC;AAqBtCyV,MAAI,EAAE,MAAM,CAACJ,mBAAD,EAAsBmB,+BAAtB;AArB0B,CAAxC;;AAwBA,MAAME,uBAAN,SAAsCT,mBAAtC,CAA0D;AACxDrZ,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAKmJ,eAAL,GAAuB,QAAvB;AACA,SAAKjW,WAAL,GAAmB,QAAnB;AACA,SAAKwV,MAAL,GAAc,KAAK9W,OAAL,CAAa8X,gBAAb,CAA8B5Q,KAA9B,GAAsClI,OAAtC,EAAd;AACD;;AANuD;;AAS1D,MAAM+Y,oBAAN,SAAmCN,gBAAnC,CAAoD;AAClD1Z,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAKmJ,eAAL,GAAuB,QAAvB;AACA,SAAKjW,WAAL,GAAmB,QAAnB;AACA,SAAKwV,MAAL,GAAc,KAAK9W,OAAL,CAAa8X,gBAA3B;AACD;;AANiD;;AASpD,MAAME,0BAA0B,GAAG;AACjC9P,MAAI,EAAE,kBAD2B;AAEjC/G,KAAG,EAAE6T,SAAS,IAAI;AAChB,QAAIA,SAAS,CAAChV,OAAV,CAAkB8X,gBAAlB,KAAuC5Z,SAA3C,EAAsD,OAAO,IAAP;AACtD,QAAI8W,SAAS,CAAChW,OAAd,EAAuB,OAAO,IAAI6Y,uBAAJ,CAA4B7C,SAA5B,CAAP;AACvB,WAAO,IAAI+C,oBAAJ,CAAyB/C,SAAzB,CAAP;AACD,GANgC;AAOjClB,kBAAgB,EAAE,CAAC9T,OAAD,EAAU0W,IAAV,KAAmB;AACnC,QAAI1W,OAAO,CAAC8X,gBAAR,KAA6B5Z,SAAjC,EAA4C;AAC1C,UAAI,CAAC2Y,gBAAgB,CAAC7W,OAAO,CAAC8X,gBAAT,CAArB,EAAiD;AAC/C,cAAM,IAAIrE,+DAAJ,CAAoB,8CAApB,CAAN;AACD;;AACD,UAAIzT,OAAO,CAAC8X,gBAAR,CAAyB3R,IAAzB,CAA8ByR,GAAG,IAAIA,GAAG,GAAG,CAAN,IAAWA,GAAG,GAAG,EAAtD,CAAJ,EAA+D;AAC7D,cAAM,IAAInE,+DAAJ,CAAoB,iDAApB,CAAN;AACD;;AACDiD,UAAI,CAACoB,gBAAL,GAAwB9X,OAAO,CAAC8X,gBAAhC;AACApB,UAAI,CAACoB,gBAAL,CAAsBpS,IAAtB,CAA2B0N,kEAA3B;AACD,KATD,MASO,IAAI,CAAC,CAAC,UAAD,EAAa,eAAb,EAA8BuD,QAA9B,CAAuC3W,OAAO,CAACoV,SAA/C,CAAL,EAAgE;AACrEsB,UAAI,CAACoB,gBAAL,GAAwB,CAACpB,IAAI,CAACpY,KAAL,CAAW6C,GAAX,CAAe,QAAf,CAAD,CAAxB;AACD;AACF,GApBgC;AAqBjCyV,MAAI,EAAE,MAAM,CAACJ,mBAAD,EAAsBwB,0BAAtB,EAAkDL,+BAAlD;AArBqB,CAAnC;;AAwBA,MAAMM,qBAAN,SAAoCb,mBAApC,CAAwD;AACtDrZ,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAKmJ,eAAL,GAAuB,MAAvB;AACA,SAAKjW,WAAL,GAAmB,QAAnB;AACA,SAAKwV,MAAL,GAAc,KAAK9W,OAAL,CAAakY,cAAb,CAA4BhR,KAA5B,GAAoClI,OAApC,EAAd;AACD;;AANqD;;AASxD,MAAMmZ,kBAAN,SAAiCV,gBAAjC,CAAkD;AAChD1Z,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAKmJ,eAAL,GAAuB,MAAvB;AACA,SAAKjW,WAAL,GAAmB,QAAnB;AACA,SAAKwV,MAAL,GAAc,KAAK9W,OAAL,CAAakY,cAA3B;AACD;;AAN+C;;AASlD,MAAME,wBAAwB,GAAG;AAC/BlQ,MAAI,EAAE,gBADyB;AAE/B/G,KAAG,EAAE6T,SAAS,IAAI;AAChB,QAAIA,SAAS,CAAChV,OAAV,CAAkBkY,cAAlB,KAAqCha,SAAzC,EAAoD,OAAO,IAAP;AACpD,QAAI8W,SAAS,CAAChW,OAAd,EAAuB,OAAO,IAAIiZ,qBAAJ,CAA0BjD,SAA1B,CAAP;AACvB,WAAO,IAAImD,kBAAJ,CAAuBnD,SAAvB,CAAP;AACD,GAN8B;AAO/BlB,kBAAgB,EAAE,CAAC9T,OAAD,EAAU0W,IAAV,KAAmB;AACnC,QAAI1W,OAAO,CAACkY,cAAR,KAA2Bha,SAA/B,EAA0C;AACxC,UAAI,CAAC2Y,gBAAgB,CAAC7W,OAAO,CAACkY,cAAT,CAArB,EAA+C;AAC7C,cAAM,IAAIzE,+DAAJ,CAAoB,4CAApB,CAAN;AACD;;AACD,UAAIzT,OAAO,CAACkY,cAAR,CAAuB/R,IAAvB,CAA4ByR,GAAG,IAAIA,GAAG,GAAG,CAAN,IAAWA,GAAG,GAAG,EAApD,CAAJ,EAA6D;AAC3D,cAAM,IAAInE,+DAAJ,CAAoB,+CAApB,CAAN;AACD;;AACDiD,UAAI,CAACwB,cAAL,GAAsBlY,OAAO,CAACkY,cAA9B;AACAxB,UAAI,CAACwB,cAAL,CAAoBxS,IAApB,CAAyB0N,kEAAzB;AACD,KATD,MASO,IAAI,CAAC,CAAC,UAAD,EAAa,UAAb,EAAyB,eAAzB,EAA0CuD,QAA1C,CAAmD3W,OAAO,CAACoV,SAA3D,CAAL,EAA4E;AACjFsB,UAAI,CAACwB,cAAL,GAAsB,CAACxB,IAAI,CAACpY,KAAL,CAAW6C,GAAX,CAAe,QAAf,CAAD,CAAtB;AACD;AACF,GApB8B;AAqB/ByV,MAAI,EAAE,MAAM,CACVJ,mBADU,EAEV4B,wBAFU,EAGVJ,0BAHU,EAIVL,+BAJU;AArBmB,CAAjC;;AA6BA,MAAMU,kBAAN,SAAiCjB,mBAAjC,CAAqD;AACnDrZ,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAKmJ,eAAL,GAAuB,KAAvB;AACA,SAAKjW,WAAL,GAAmB,MAAnB;AACA,SAAKwV,MAAL,GAAc,KAAK9W,OAAL,CAAasY,WAAb,CAAyBpR,KAAzB,GAAiClI,OAAjC,EAAd;AACD;;AANkD;;AASrD,MAAMuZ,eAAN,SAA8Bd,gBAA9B,CAA+C;AAC7C1Z,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAKmJ,eAAL,GAAuB,KAAvB;AACA,SAAKjW,WAAL,GAAmB,MAAnB;AACA,SAAKwV,MAAL,GAAc,KAAK9W,OAAL,CAAasY,WAA3B;AACD;;AAN4C;;AAS/C,MAAME,qBAAqB,GAAG;AAC5BtQ,MAAI,EAAE,aADsB;AAE5B/G,KAAG,EAAE6T,SAAS,IAAI;AAChB,QAAIA,SAAS,CAAChV,OAAV,CAAkBsY,WAAlB,KAAkCpa,SAAtC,EAAiD,OAAO,IAAP;AACjD,QAAI8W,SAAS,CAAChW,OAAd,EAAuB,OAAO,IAAIqZ,kBAAJ,CAAuBrD,SAAvB,CAAP;AACvB,WAAO,IAAIuD,eAAJ,CAAoBvD,SAApB,CAAP;AACD,GAN2B;AAO5BlB,kBAAgB,EAAE,CAAC9T,OAAD,EAAU0W,IAAV,KAAmB;AACnC,QAAI1W,OAAO,CAACsY,WAAR,KAAwBpa,SAA5B,EAAuC;AACrC,UAAI,CAAC2Y,gBAAgB,CAAC7W,OAAO,CAACsY,WAAT,CAArB,EAA4C;AAC1C,cAAM,IAAI7E,+DAAJ,CAAoB,yCAApB,CAAN;AACD;;AACD,UAAIzT,OAAO,CAACsY,WAAR,CAAoBnS,IAApB,CAAyByR,GAAG,IAAIA,GAAG,GAAG,CAAN,IAAWA,GAAG,GAAG,EAAjD,CAAJ,EAA0D;AACxD,cAAM,IAAInE,+DAAJ,CAAoB,4CAApB,CAAN;AACD;;AACDiD,UAAI,CAAC4B,WAAL,GAAmBtY,OAAO,CAACsY,WAA3B;AACA5B,UAAI,CAAC4B,WAAL,CAAiB5S,IAAjB,CAAsB0N,kEAAtB;AACD,KATD,MASO,IAAI,CAAC,QAAD,EAAW,SAAX,EAAsB,QAAtB,EAAgC,OAAhC,EAAyCuD,QAAzC,CAAkD3W,OAAO,CAACoV,SAA1D,CAAJ,EAA0E;AAC/EsB,UAAI,CAAC4B,WAAL,GAAmB,CAAC5B,IAAI,CAACpY,KAAL,CAAW6C,GAAX,CAAe,MAAf,CAAD,CAAnB;AACD;AACF,GApB2B;AAqB5ByV,MAAI,EAAE,MAAM,CACVJ,mBADU,EAEVgC,qBAFU,EAGVJ,wBAHU,EAIVJ,0BAJU,EAKVL,+BALU;AArBgB,CAA9B;;AA8BA,SAASc,cAAT,CAAwBvX,IAAxB,EAA8BL,OAA9B,EAAuC;AACrC,SAAOK,IAAI,CAACD,GAAL,CAASI,oFAA4B,CAACH,IAAI,CAACC,GAAL,CAAS,SAAT,CAAD,EAAsBN,OAAtB,CAArC,EAAqE,KAArE,CAAP;AACD;;AAED,SAAS6X,oBAAT,CAA8BxX,IAA9B,EAAoCL,OAApC,EAA6C8X,GAA7C,EAAkD;AAChD,MAAIrZ,IAAI,GAAG4B,IAAI,CAACwD,GAAL,CAAS,KAAT,EAAgB,CAAhB,CAAX;;AACA,MAAIiU,GAAG,GAAG,CAAV,EAAa;AACXrZ,QAAI,GAAGA,IAAI,CAAC2B,GAAL,CAAS,CAAT,EAAY,OAAZ,CAAP;AACD;;AACD3B,MAAI,GAAGmZ,cAAc,CAACnZ,IAAD,EAAOuB,OAAP,CAArB,CALgD,CAMhD;;AACA,SAAO8X,GAAG,GAAG,CAAN,GAAUrZ,IAAI,CAAC2B,GAAL,CAAS0X,GAAT,EAAc,MAAd,CAAV,GAAkCrZ,IAAI,CAAC2B,GAAL,CAAS0X,GAAG,GAAG,CAAf,EAAkB,MAAlB,CAAzC;AACD;;AAED,MAAMC,gBAAN,SAA+B3B,kBAA/B,CAAkD;AAChDnC,KAAG,CAAC5T,IAAD,EAAO;AACR,UAAM2X,sBAAsB,GAAGC,qBAAqB,CAClD5X,IADkD,EAElD,KAAKlB,OAAL,CAAa+Y,YAFqC,EAGlD,KAAK/Y,OAAL,CAAagZ,WAHqC,CAApD;AAKA,UAAMC,UAAU,GAAG/X,IAAI,CAACC,GAAL,CAAS,KAAT,CAAnB;;AACA,SAAK,MAAMZ,GAAX,IAAkBsY,sBAAlB,EAA0C;AACxC,UAAII,UAAU,GAAG1Y,GAAjB,EAAsB;;AACtB,UAAI0Y,UAAU,KAAK1Y,GAAnB,EAAwB;AACtB,eAAO,KAAKoV,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD;;AACD,aAAO,KAAKyU,YAAL,CAAkB,IAAIvB,+DAAJ,CAAoBlT,IAAI,CAACI,WAAL,CAAiB,OAAjB,EAA0BoD,GAA1B,CAA8B,KAA9B,EAAqCnE,GAArC,CAApB,CAAlB,CAAP;AACD;;AACD,QAAI/B,IAAJ;AACA,QAAI0a,SAAS,GAAGhY,IAAhB;AACA,QAAI+C,KAAK,GAAG,CAAZ;;AACA,WAAO,CAACzF,IAAD,IAASyF,KAAK,GAAG,EAAxB,EAA4B;AAC1BiV,eAAS,GAAGA,SAAS,CAAC5X,WAAV,CAAsB,OAAtB,EAA+BL,GAA/B,CAAmC,CAAnC,EAAsC,OAAtC,CAAZ;AACAzC,UAAI,GAAGsa,qBAAqB,CAC1BI,SAD0B,EAE1B,KAAKlZ,OAAL,CAAa+Y,YAFa,EAG1B,KAAK/Y,OAAL,CAAagZ,WAHa,CAArB,CAIL,CAJK,CAAP;AAKA/U,WAAK;AACN;;AACD,QAAIA,KAAK,IAAI,EAAb,EAAiB;AACf,YAAM,IAAIiQ,mEAAJ,CAAwB,kCAAxB,CAAN;AACD;;AACD,WAAO,KAAKyB,YAAL,CAAkB,IAAIvB,+DAAJ,CAAoB8E,SAAS,CAACxU,GAAV,CAAc,KAAd,EAAqBlG,IAArB,CAApB,CAAlB,CAAP;AACD;;AA/B+C;AAiClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASsa,qBAAT,CAA+B5X,IAA/B,EAAqC6X,YAArC,EAAmDC,WAAnD,EAAgE;AAC9D,QAAMG,aAAa,GAAGjY,IAAI,CAACmD,cAAL,CAAoB,OAApB,EAA6BlD,GAA7B,CAAiC,KAAjC,CAAtB;AACA,MAAI0X,sBAAsB,GAAGE,YAAY,CACtCpT,MAD0B,CACnBpF,GAAG,IAAI4Y,aAAa,IAAIxL,IAAI,CAACuF,GAAL,CAAS3S,GAAT,CADL,EAE1B0B,GAF0B,CAEtB1B,GAAG,IAAKA,GAAG,GAAG,CAAN,GAAUA,GAAV,GAAgB4Y,aAAa,GAAG5Y,GAAhB,GAAsB,CAFxB,CAA7B;;AAGA,MAAIyY,WAAJ,EAAiB;AACf,UAAM1Z,IAAI,GAAG4B,IAAI,CAACI,WAAL,CAAiB,OAAjB,CAAb;AACA,UAAM8X,oBAAoB,GAAG,EAA7B;AACAJ,eAAW,CAAC5H,OAAZ,CAAoBiI,KAAK,IAAI;AAC3B,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7BD,4BAAoB,CAACrV,IAArB,CACE,GAAG8U,sBAAsB,CAAClT,MAAvB,CAA8BpF,GAAG,IAAIjB,IAAI,CAACoF,GAAL,CAAS,KAAT,EAAgBnE,GAAhB,EAAqBY,GAArB,CAAyB,SAAzB,MAAwCkY,KAA7E,CADL;AAGA;AACD;;AACD,YAAMC,iBAAiB,GAAGZ,oBAAoB,CAACxX,IAAD,EAAO,GAAGmY,KAAV,CAApB,CAAqClY,GAArC,CAAyC,KAAzC,CAA1B;;AACA,UAAI0X,sBAAsB,CAAClC,QAAvB,CAAgC2C,iBAAhC,CAAJ,EAAwD;AACtDF,4BAAoB,CAACrV,IAArB,CAA0BuV,iBAA1B;AACD;AACF,KAXD;AAYAT,0BAAsB,GAAG7V,KAAK,CAACC,IAAN,CAAW,IAAIsW,GAAJ,CAAQH,oBAAR,CAAX,CAAzB;AACD;;AACD,SAAOP,sBAAsB,CAACnT,IAAvB,CAA4B,CAACJ,CAAD,EAAIC,CAAJ,KAAU;AAC3C,QAAID,CAAC,GAAGC,CAAR,EAAW,OAAO,CAAP;AACX,QAAID,CAAC,GAAGC,CAAR,EAAW,OAAO,CAAC,CAAR,CAAX,KACK,OAAO,CAAP;AACN,GAJM,CAAP;AAKD;;AAED,MAAMiU,mBAAN,SAAkCrC,qBAAlC,CAAwD;AACtDrC,KAAG,CAAC5T,IAAD,EAAO;AACR,UAAM2X,sBAAsB,GAAGC,qBAAqB,CAClD5X,IADkD,EAElD,KAAKlB,OAAL,CAAa+Y,YAFqC,EAGlD,KAAK/Y,OAAL,CAAagZ,WAHqC,CAArB,CAI7Bha,OAJ6B,EAA/B;AAKA,UAAMia,UAAU,GAAG/X,IAAI,CAACC,GAAL,CAAS,KAAT,CAAnB;;AACA,SAAK,MAAMZ,GAAX,IAAkBsY,sBAAlB,EAA0C;AACxC,UAAII,UAAU,GAAG1Y,GAAjB,EAAsB;;AACtB,UAAI0Y,UAAU,KAAK1Y,GAAnB,EAAwB;AACtB,eAAO,KAAKoV,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD;;AACD,aAAO,KAAKyU,YAAL,CAAkB,IAAIvB,+DAAJ,CAAoBlT,IAAI,CAACmD,cAAL,CAAoB,OAApB,EAA6BK,GAA7B,CAAiC,KAAjC,EAAwCnE,GAAxC,CAApB,CAAlB,CAAP;AACD;;AACD,QAAI/B,IAAJ;AACA,QAAI0a,SAAS,GAAGhY,IAAhB;AACA,QAAI+C,KAAK,GAAG,CAAZ;;AACA,WAAO,CAACzF,IAAD,IAASyF,KAAK,GAAG,EAAxB,EAA4B;AAC1BiV,eAAS,GAAGA,SAAS,CAAC7U,cAAV,CAAyB,OAAzB,EAAkC/D,QAAlC,CAA2C,CAA3C,EAA8C,OAA9C,CAAZ;AACA9B,UAAI,GAAGsa,qBAAqB,CAC1BI,SAD0B,EAE1B,KAAKlZ,OAAL,CAAa+Y,YAFa,EAG1B,KAAK/Y,OAAL,CAAagZ,WAHa,CAArB,CAILlT,GAJK,EAAP;AAKA7B,WAAK;AACN;;AACD,QAAIA,KAAK,IAAI,EAAb,EAAiB;AACf,YAAM,IAAIiQ,mEAAJ,CAAwB,kCAAxB,CAAN;AACD;;AACD,WAAO,KAAKyB,YAAL,CAAkB,IAAIvB,+DAAJ,CAAoB8E,SAAS,CAACxU,GAAV,CAAc,KAAd,EAAqBlG,IAArB,CAApB,CAAlB,CAAP;AACD;;AA/BqD;;AAkCxD,MAAMib,sBAAsB,GAAG;AAC7BvR,MAAI,EAAE,cADuB;AAE7B/G,KAAG,EAAE6T,SAAS,IAAI;AAChB,QAAIA,SAAS,CAAChV,OAAV,CAAkB+Y,YAAlB,KAAmC7a,SAAvC,EAAkD,OAAO,IAAP;AAClD,QAAI8W,SAAS,CAAChW,OAAd,EAAuB,OAAO,IAAIwa,mBAAJ,CAAwBxE,SAAxB,CAAP;AACvB,WAAO,IAAI4D,gBAAJ,CAAqB5D,SAArB,CAAP;AACD,GAN4B;AAO7BlB,kBAAgB,EAAE,CAAC9T,OAAD,EAAU0W,IAAV,KAAmB;AACnC,QAAI1W,OAAO,CAAC+Y,YAAR,KAAyB7a,SAA7B,EAAwC;AACtC,UAAI8B,OAAO,CAACoV,SAAR,KAAsB,QAA1B,EAAoC;AAClC,cAAM,IAAI3B,+DAAJ,CAAoB,gEAApB,CAAN;AACD;;AACD,UAAI,CAACoD,gBAAgB,CAAC7W,OAAO,CAAC+Y,YAAT,CAArB,EAA6C;AAC3C,cAAM,IAAItF,+DAAJ,CAAoB,0CAApB,CAAN;AACD;;AACD,UAAIzT,OAAO,CAAC+Y,YAAR,CAAqB5S,IAArB,CAA0ByR,GAAG,IAAIA,GAAG,KAAK,CAAR,IAAaA,GAAG,GAAG,CAAC,EAApB,IAA0BA,GAAG,GAAG,EAAjE,CAAJ,EAA0E;AACxE,cAAM,IAAInE,+DAAJ,CACJ,sEADI,CAAN;AAGD;;AACDiD,UAAI,CAACqC,YAAL,GAAoB/Y,OAAO,CAAC+Y,YAAR,CAAqB7R,KAArB,EAApB;AACD,KAbD,MAaO,IACL,EAAE2P,gBAAgB,CAAC7W,OAAO,CAACgZ,WAAT,CAAhB,IAAyCnC,gBAAgB,CAAC7W,OAAO,CAAC0Z,WAAT,CAA3D,KACA,CAAC,QAAD,EAAW,SAAX,EAAsB/C,QAAtB,CAA+B3W,OAAO,CAACoV,SAAvC,CAFK,EAGL;AACAsB,UAAI,CAACqC,YAAL,GAAoB,CAACrC,IAAI,CAACpY,KAAL,CAAW6C,GAAX,CAAe,KAAf,CAAD,CAApB;AACD;AACF,GA3B4B;AA4B7ByV,MAAI,EAAE,MAAM,CACVJ,mBADU,EAEViD,sBAFU,EAGVjB,qBAHU,EAIVJ,wBAJU,EAKVJ,0BALU,EAMVL,+BANU;AA5BiB,CAA/B;;AAsCA,SAASgC,mBAAT,CAA6BzY,IAA7B,EAAmCL,OAAnC,EAA4C8X,GAA5C,EAAiD;AAC/C,MAAIrZ,IAAI,GAAG4B,IAAI,CAACwD,GAAL,CAAS,OAAT,EAAkB,CAAlB,EAAqBA,GAArB,CAAyB,KAAzB,EAAgC,CAAhC,CAAX;;AACA,MAAIiU,GAAG,GAAG,CAAV,EAAa;AACXrZ,QAAI,GAAGA,IAAI,CAAC2B,GAAL,CAAS,CAAT,EAAY,MAAZ,CAAP;AACD;;AACD3B,MAAI,GAAGmZ,cAAc,CAACnZ,IAAD,EAAOuB,OAAP,CAArB,CAL+C,CAM/C;;AACA,SAAO8X,GAAG,GAAG,CAAN,GAAUrZ,IAAI,CAAC2B,GAAL,CAAS0X,GAAT,EAAc,MAAd,CAAV,GAAkCrZ,IAAI,CAAC2B,GAAL,CAAS0X,GAAG,GAAG,CAAf,EAAkB,MAAlB,CAAzC;AACD;;AAED,SAASiB,kBAAT,CAA4B1Y,IAA5B,EAAkCL,OAAlC,EAA2C;AACzC,QAAM6M,IAAI,GAAGrM,oFAA4B,CAACH,IAAI,CAACC,GAAL,CAAS,SAAT,CAAD,EAAsBN,OAAtB,CAAzC;AACA,SAAOK,IAAI,CAACZ,QAAL,CAAcoN,IAAI,KAAK,CAAT,GAAa,CAAb,GAAiB,IAAIA,IAAnC,EAAyC,KAAzC,CAAP;AACD;;AAED,MAAMmM,kBAAN,SAAiC1C,qBAAjC,CAAuD;AACrDrC,KAAG,CAAC5T,IAAD,EAAO;AACR,QAAI,KAAKlB,OAAL,CAAaoV,SAAb,KAA2B,QAA/B,EAAyC;AACvC,aAAO,KAAKpV,OAAL,CAAa8Z,aAAb,KAA+B5b,SAA/B,GACH,KAAK6b,YAAL,CAAkB7Y,IAAlB,CADG,GAEH,KAAK8Y,aAAL,CAAmB9Y,IAAnB,CAFJ;AAGD,KAJD,MAIO,IAAI,KAAKlB,OAAL,CAAaoV,SAAb,KAA2B,SAA/B,EAA0C;AAC/C,aAAO,KAAK4E,aAAL,CAAmB9Y,IAAnB,CAAP;AACD;;AACD,WAAO,KAAK+Y,MAAL,CAAY/Y,IAAZ,CAAP;AACD;;AACD6Y,cAAY,CAAC7Y,IAAD,EAAO;AACjB,QAAI1C,IAAI,GAAG0b,qBAAqB,CAAChZ,IAAD,EAAO,KAAKlB,OAAL,CAAagZ,WAApB,CAArB,CAAsD,CAAtD,CAAX;AACA,QAAI/U,KAAK,GAAG,CAAZ;AACA,QAAI3E,IAAI,GAAG4B,IAAX,CAHiB,CAIjB;AACA;AACA;AACA;;AACA,WAAO,CAAC1C,IAAD,IAASyF,KAAK,GAAG,EAAxB,EAA4B;AAC1BA,WAAK;AACL3E,UAAI,GAAGA,IAAI,CAACgC,WAAL,CAAiB,MAAjB,EAAyBhB,QAAzB,CAAkC,CAAlC,EAAqC,aAArC,CAAP;AACA9B,UAAI,GAAG0b,qBAAqB,CAAC5a,IAAD,EAAO,KAAKU,OAAL,CAAagZ,WAApB,CAArB,CAAsD,CAAtD,CAAP;AACD;;AACD,QAAI,CAACxa,IAAL,EAAW;AACT,YAAM,IAAI0V,mEAAJ,CACJ,mEADI,CAAN;AAGD;;AACD,WAAO,KAAKjB,MAAL,CAAY/R,IAAZ,EAAkB1C,IAAlB,CAAP;AACD;;AACDwb,eAAa,CAAC9Y,IAAD,EAAO;AAClB,QAAI1C,IAAI,GAAG2b,sBAAsB,CAACjZ,IAAD,EAAO,KAAKlB,OAAL,CAAagZ,WAApB,CAAtB,CAAuD,CAAvD,CAAX;AACA,QAAI/U,KAAK,GAAG,CAAZ;AACA,QAAI3E,IAAI,GAAG4B,IAAX,CAHkB,CAIlB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,WAAO,CAAC1C,IAAD,IAASyF,KAAK,GAAG,EAAxB,EAA4B;AAC1BA,WAAK;AACL3E,UAAI,GAAGA,IAAI,CAACgC,WAAL,CAAiB,OAAjB,EAA0BhB,QAA1B,CAAmC,CAAnC,EAAsC,aAAtC,CAAP;AACA9B,UAAI,GAAG2b,sBAAsB,CAAC7a,IAAD,EAAO,KAAKU,OAAL,CAAagZ,WAApB,CAAtB,CAAuD,CAAvD,CAAP;AACD;;AACD,QAAI,CAACxa,IAAL,EAAW;AACT,YAAM,IAAI0V,mEAAJ,CACJ,mEADI,CAAN;AAGD;;AACD,WAAO,KAAKjB,MAAL,CAAY/R,IAAZ,EAAkB1C,IAAlB,CAAP;AACD;;AACDyb,QAAM,CAAC/Y,IAAD,EAAO;AACX,UAAM1C,IAAI,GAAG,KAAKwB,OAAL,CAAagZ,WAAb,CACV/W,GADU,CACNpB,OAAO,IAAI+Y,kBAAkB,CAAC1Y,IAAD,EAAOL,OAAP,CADvB,EAEV6E,IAFU,CAELiC,oEAFK,EAGV7B,GAHU,EAAb;AAIA,WAAO,KAAKmN,MAAL,CAAY/R,IAAZ,EAAkB1C,IAAlB,CAAP;AACD;;AACDyU,QAAM,CAAC/R,IAAD,EAAO1C,IAAP,EAAa;AACjB,QAAIA,IAAI,CAACiC,OAAL,CAAaS,IAAb,CAAJ,EAAwB;AACtB,aAAO,KAAKyU,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD;;AACD,WAAO,KAAKyU,YAAL,CAAkB,IAAIvB,+DAAJ,CAAoB5V,IAAI,CAAC6F,cAAL,CAAoB,KAApB,CAApB,CAAlB,CAAP;AACD;;AAlEoD;AAoEvD;;;AACA,SAAS6V,qBAAT,CAA+BhZ,IAA/B,EAAqC8X,WAArC,EAAkD;AAChD,QAAMoB,2BAA2B,GAAGpB,WAAW,CAC5CrT,MADiC,CAC1B0T,KAAK,IAAIrW,KAAK,CAACwD,OAAN,CAAc6S,KAAd,CADiB,EAEjCpX,GAFiC,CAE7BoX,KAAK,IAAIM,mBAAmB,CAACzY,IAAD,EAAO,GAAGmY,KAAV,CAFC,CAApC;AAGA,QAAMgB,sBAAsB,GAAGrB,WAAW,CACvCrT,MAD4B,CACrB0T,KAAK,IAAI,OAAOA,KAAP,KAAiB,QADL,EAE5BpX,GAF4B,CAExBpB,OAAO,IAAI+Y,kBAAkB,CAAC1Y,IAAD,EAAOL,OAAP,CAFL,EAG5B8E,MAH4B,CAGrB0T,KAAK,IAAIA,KAAK,CAAClY,GAAN,CAAU,MAAV,MAAsBD,IAAI,CAACC,GAAL,CAAS,MAAT,CAHV,CAA/B;AAIA,SAAO2R,qEAAa,CAAC,CAAC,GAAGsH,2BAAJ,EAAiC,GAAGC,sBAApC,CAAD,CAAb,CACJ1U,MADI,CACG0T,KAAK,IAAIA,KAAK,CAACnV,eAAN,CAAsBhD,IAAtB,CADZ,EAEJwE,IAFI,CAECiC,oEAFD,EAGJ3I,OAHI,EAAP;AAID;AACD;;;AACA,SAASmb,sBAAT,CAAgCjZ,IAAhC,EAAsC8X,WAAtC,EAAmD;AACjD,QAAMsB,4BAA4B,GAAGtB,WAAW,CAC7CrT,MADkC,CAC3B0T,KAAK,IAAIrW,KAAK,CAACwD,OAAN,CAAc6S,KAAd,CADkB,EAElCpX,GAFkC,CAE9BoX,KAAK,IAAIX,oBAAoB,CAACxX,IAAD,EAAO,GAAGmY,KAAV,CAFC,CAArC;AAGA,QAAMgB,sBAAsB,GAAGrB,WAAW,CACvCrT,MAD4B,CACrB0T,KAAK,IAAI,OAAOA,KAAP,KAAiB,QADL,EAE5BpX,GAF4B,CAExBpB,OAAO,IAAI+Y,kBAAkB,CAAC1Y,IAAD,EAAOL,OAAP,CAFL,EAG5B8E,MAH4B,CAI3B0T,KAAK,IAAIA,KAAK,CAAClY,GAAN,CAAU,MAAV,MAAsBD,IAAI,CAACC,GAAL,CAAS,MAAT,CAAtB,IAA0CkY,KAAK,CAAClY,GAAN,CAAU,OAAV,MAAuBD,IAAI,CAACC,GAAL,CAAS,OAAT,CAJ/C,CAA/B;AAMA,SAAO2R,qEAAa,CAAC,CAAC,GAAGwH,4BAAJ,EAAkC,GAAGD,sBAArC,CAAD,CAAb,CACJ1U,MADI,CACG0T,KAAK,IAAIA,KAAK,CAACnV,eAAN,CAAsBhD,IAAtB,CADZ,EAEJwE,IAFI,CAECiC,oEAFD,EAGJ3I,OAHI,EAAP;AAID;;AAED,MAAMub,eAAN,SAA8BtD,kBAA9B,CAAiD;AAC/CnC,KAAG,CAAC5T,IAAD,EAAO;AACR,QAAI,KAAKlB,OAAL,CAAaoV,SAAb,KAA2B,QAA/B,EAAyC;AACvC,aAAO,KAAKpV,OAAL,CAAa8Z,aAAb,KAA+B5b,SAA/B,GACH,KAAK6b,YAAL,CAAkB7Y,IAAlB,CADG,GAEH,KAAK8Y,aAAL,CAAmB9Y,IAAnB,CAFJ;AAGD,KAJD,MAIO,IAAI,KAAKlB,OAAL,CAAaoV,SAAb,KAA2B,SAA/B,EAA0C;AAC/C,aAAO,KAAK4E,aAAL,CAAmB9Y,IAAnB,CAAP;AACD;;AACD,WAAO,KAAK+Y,MAAL,CAAY/Y,IAAZ,CAAP;AACD;;AACD6Y,cAAY,CAAC7Y,IAAD,EAAO;AACjB,QAAI1C,IAAI,GAAGgc,qBAAqB,CAACtZ,IAAD,EAAO,KAAKlB,OAAL,CAAagZ,WAApB,CAArB,CAAsD,CAAtD,CAAX;AACA,QAAI/U,KAAK,GAAG,CAAZ;AACA,QAAI3E,IAAI,GAAG4B,IAAX,CAHiB,CAIjB;AACA;AACA;AACA;;AACA,WAAO,CAAC1C,IAAD,IAASyF,KAAK,GAAG,EAAxB,EAA4B;AAC1BA,WAAK;AACL3E,UAAI,GAAGA,IAAI,CAACgC,WAAL,CAAiB,MAAjB,EAAyBL,GAAzB,CAA6B,CAA7B,EAAgC,MAAhC,CAAP;AACAzC,UAAI,GAAGgc,qBAAqB,CAAClb,IAAD,EAAO,KAAKU,OAAL,CAAagZ,WAApB,CAArB,CAAsD,CAAtD,CAAP;AACD;;AACD,QAAI,CAACxa,IAAL,EAAW;AACT,YAAM,IAAI0V,mEAAJ,CACJ,mEADI,CAAN;AAGD;;AACD,WAAO,KAAKjB,MAAL,CAAY/R,IAAZ,EAAkB1C,IAAlB,CAAP;AACD;;AACDwb,eAAa,CAAC9Y,IAAD,EAAO;AAClB,QAAI1C,IAAI,GAAGic,sBAAsB,CAACvZ,IAAD,EAAO,KAAKlB,OAAL,CAAagZ,WAApB,CAAtB,CAAuD,CAAvD,CAAX;AACA,QAAI/U,KAAK,GAAG,CAAZ;AACA,QAAI3E,IAAI,GAAG4B,IAAX,CAHkB,CAIlB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,WAAO,CAAC1C,IAAD,IAASyF,KAAK,GAAG,EAAxB,EAA4B;AAC1BA,WAAK;AACL3E,UAAI,GAAGA,IAAI,CAACgC,WAAL,CAAiB,OAAjB,EAA0BL,GAA1B,CAA8B,CAA9B,EAAiC,OAAjC,CAAP;AACAzC,UAAI,GAAGic,sBAAsB,CAACnb,IAAD,EAAO,KAAKU,OAAL,CAAagZ,WAApB,CAAtB,CAAuD,CAAvD,CAAP;AACD;;AACD,QAAI,CAACxa,IAAL,EAAW;AACT,YAAM,IAAI0V,mEAAJ,CACJ,mEADI,CAAN;AAGD;;AACD,WAAO,KAAKjB,MAAL,CAAY/R,IAAZ,EAAkB1C,IAAlB,CAAP;AACD;;AACDyb,QAAM,CAAC/Y,IAAD,EAAO;AACX,UAAM1C,IAAI,GAAG,KAAKwB,OAAL,CAAagZ,WAAb,CACV/W,GADU,CACNpB,OAAO,IAAI4X,cAAc,CAACvX,IAAD,EAAOL,OAAP,CADnB,EAEV6E,IAFU,CAELiC,oEAFK,EAEiB,CAFjB,CAAb;AAGA,WAAO,KAAKsL,MAAL,CAAY/R,IAAZ,EAAkB1C,IAAlB,CAAP;AACD;;AACDyU,QAAM,CAAC/R,IAAD,EAAO1C,IAAP,EAAa;AACjB,QAAIA,IAAI,CAACiC,OAAL,CAAaS,IAAb,CAAJ,EAAwB;AACtB,aAAO,KAAKyU,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD;;AACD,WAAO,KAAKyU,YAAL,CAAkB,IAAIvB,+DAAJ,CAAoB5V,IAAI,CAAC8C,WAAL,CAAiB,KAAjB,CAApB,CAAlB,CAAP;AACD;;AAjE8C;AAmEjD;;;AACA,SAASkZ,qBAAT,CAA+BtZ,IAA/B,EAAqC8X,WAArC,EAAkD;AAChD,QAAMoB,2BAA2B,GAAGpB,WAAW,CAC5CrT,MADiC,CAC1B0T,KAAK,IAAIrW,KAAK,CAACwD,OAAN,CAAc6S,KAAd,CADiB,EAEjCpX,GAFiC,CAE7BoX,KAAK,IAAIM,mBAAmB,CAACzY,IAAD,EAAO,GAAGmY,KAAV,CAFC,CAApC;AAGA,QAAMgB,sBAAsB,GAAGrB,WAAW,CACvCrT,MAD4B,CACrB0T,KAAK,IAAI,OAAOA,KAAP,KAAiB,QADL,EAE5BpX,GAF4B,CAExBpB,OAAO,IAAI4X,cAAc,CAACvX,IAAD,EAAOL,OAAP,CAFD,EAG5B8E,MAH4B,CAGrB0T,KAAK,IAAIA,KAAK,CAAClY,GAAN,CAAU,MAAV,MAAsBD,IAAI,CAACC,GAAL,CAAS,MAAT,CAHV,CAA/B;AAIA,SAAO2R,qEAAa,CAAC,CAAC,GAAGsH,2BAAJ,EAAiC,GAAGC,sBAApC,CAAD,CAAb,CACJ1U,MADI,CACG0T,KAAK,IAAIA,KAAK,CAACzX,cAAN,CAAqBV,IAArB,CADZ,EAEJwE,IAFI,CAECiC,oEAFD,CAAP;AAGD;AACD;;;AACA,SAAS8S,sBAAT,CAAgCvZ,IAAhC,EAAsC8X,WAAtC,EAAmD;AACjD,QAAMsB,4BAA4B,GAAGtB,WAAW,CAC7CrT,MADkC,CAC3B0T,KAAK,IAAIrW,KAAK,CAACwD,OAAN,CAAc6S,KAAd,CADkB,EAElCpX,GAFkC,CAE9BoX,KAAK,IAAIX,oBAAoB,CAACxX,IAAD,EAAO,GAAGmY,KAAV,CAFC,CAArC;AAGA,QAAMgB,sBAAsB,GAAGrB,WAAW,CACvCrT,MAD4B,CACrB0T,KAAK,IAAI,OAAOA,KAAP,KAAiB,QADL,EAE5BpX,GAF4B,CAExBpB,OAAO,IAAI4X,cAAc,CAACvX,IAAD,EAAOL,OAAP,CAFD,EAG5B8E,MAH4B,CAI3B0T,KAAK,IAAIA,KAAK,CAAClY,GAAN,CAAU,MAAV,MAAsBD,IAAI,CAACC,GAAL,CAAS,MAAT,CAAtB,IAA0CkY,KAAK,CAAClY,GAAN,CAAU,OAAV,MAAuBD,IAAI,CAACC,GAAL,CAAS,OAAT,CAJ/C,CAA/B;AAMA,SAAO2R,qEAAa,CAAC,CAAC,GAAGwH,4BAAJ,EAAkC,GAAGD,sBAArC,CAAD,CAAb,CACJ1U,MADI,CACG0T,KAAK,IAAIA,KAAK,CAACzX,cAAN,CAAqBV,IAArB,CADZ,EAEJwE,IAFI,CAECiC,oEAFD,CAAP;AAGD;;AAED,MAAM+S,qBAAqB,GAAG;AAC5BxS,MAAI,EAAE,aADsB;AAE5B/G,KAAG,EAAE6T,SAAS,IAAI;AAChB,QAAIA,SAAS,CAAChV,OAAV,CAAkBgZ,WAAlB,KAAkC9a,SAAtC,EAAiD,OAAO,IAAP;AACjD,QAAI8W,SAAS,CAAChW,OAAd,EAAuB,OAAO,IAAI6a,kBAAJ,CAAuB7E,SAAvB,CAAP;AACvB,WAAO,IAAIuF,eAAJ,CAAoBvF,SAApB,CAAP;AACD,GAN2B;AAO5BlB,kBAAgB,EAAE,CAAC9T,OAAD,EAAU0W,IAAV,KAAmB;AACnC,QAAI1W,OAAO,CAACgZ,WAAR,KAAwB9a,SAA5B,EAAuC;AACrC,UAAI,CAAC2Y,gBAAgB,CAAC7W,OAAO,CAACgZ,WAAT,CAArB,EAA4C;AAC1C,cAAM,IAAIvF,+DAAJ,CAAoB,yCAApB,CAAN;AACD;;AACD,YAAMkH,aAAa,GAAG3a,OAAO,CAACgZ,WAAR,CAAoB4B,IAApB,CAAyBra,GAAG,IAChDyC,KAAK,CAACwD,OAAN,CAAcjG,GAAd,IACI,CAACsI,2DAAW,CAACC,QAAZ,CAAqB6N,QAArB,CAA8BpW,GAAG,CAAC,CAAD,CAAjC,CADL,GAEI,CAACsI,2DAAW,CAACC,QAAZ,CAAqB6N,QAArB,CAA8BpW,GAA9B,CAHe,CAAtB;;AAKA,UAAIoa,aAAJ,EAAmB;AACjB,cAAM,IAAIlH,+DAAJ,CACH,4CAAD,GACG,GAAE3G,IAAI,CAACC,SAAL,CAAelE,2DAAW,CAACC,QAA3B,CAAqC,SAAQ6R,aAAc,gBAF5D,CAAN;AAID;;AACD,UACE,CAAC,CAAC,QAAD,EAAW,SAAX,EAAsBhE,QAAtB,CAA+B3W,OAAO,CAACoV,SAAvC,CAAD,IACApV,OAAO,CAACgZ,WAAR,CAAoB7S,IAApB,CAAyBtF,OAAO,IAAImC,KAAK,CAACwD,OAAN,CAAc3F,OAAd,CAApC,CAFF,EAGE;AACA,cAAM,IAAI4S,+DAAJ,CACJ,sGACE,8BAFE,CAAN;AAID;;AACD,UACEzT,OAAO,CAACoV,SAAR,KAAsB,SAAtB,IACApV,OAAO,CAACgZ,WAAR,CAAoB7S,IAApB,CACEtF,OAAO,IACLmC,KAAK,CAACwD,OAAN,CAAc3F,OAAd,MAA2BA,OAAO,CAAC,CAAD,CAAP,GAAa,CAAC,EAAd,IAAoBA,OAAO,CAAC,CAAD,CAAP,KAAe,CAAnC,IAAwCA,OAAO,CAAC,CAAD,CAAP,GAAa,EAAhF,CAFJ,CAFF,EAME;AACA,cAAM,IAAI4S,+DAAJ,CACJ,0EACE,kDAFE,CAAN;AAID;;AACD,UACEzT,OAAO,CAACoV,SAAR,KAAsB,QAAtB,IACApV,OAAO,CAACgZ,WAAR,CAAoB7S,IAApB,CACEtF,OAAO,IACLmC,KAAK,CAACwD,OAAN,CAAc3F,OAAd,MAA2BA,OAAO,CAAC,CAAD,CAAP,GAAa,CAAC,GAAd,IAAqBA,OAAO,CAAC,CAAD,CAAP,KAAe,CAApC,IAAyCA,OAAO,CAAC,CAAD,CAAP,GAAa,GAAjF,CAFJ,CAFF,EAME;AACA,cAAM,IAAI4S,+DAAJ,CACJ,yEACE,oDAFE,CAAN;AAID;;AACDiD,UAAI,CAACsC,WAAL,GAAmBhZ,OAAO,CAACgZ,WAA3B;AACD,KAjDD,MAiDO,IAAI,CAACnC,gBAAgB,CAAC7W,OAAO,CAAC+Y,YAAT,CAAjB,IAA2C/Y,OAAO,CAACoV,SAAR,KAAsB,QAArE,EAA+E;AACpFsB,UAAI,CAACsC,WAAL,GAAmB,CAACtC,IAAI,CAACpY,KAAL,CAAW6C,GAAX,CAAe,SAAf,CAAD,CAAnB;AACD;AACF,GA5D2B;AA6D5ByV,MAAI,EAAE,MAAM,CACVJ,mBADU,EAEVkE,qBAFU,EAGVlC,qBAHU,EAIVJ,wBAJU,EAKVJ,0BALU,EAMVL,+BANU;AA7DgB,CAA9B;;AAuEA,MAAMkD,oBAAN,SAAmC1D,qBAAnC,CAAyD;AACvDpZ,aAAW,GAAG;AACZ,UAAM,GAAGqQ,SAAT;AACA,SAAK0I,MAAL,GAAc,KAAK9B,SAAL,CAAehV,OAAf,CAAuB8Z,aAAvB,CAAqC5S,KAArC,GAA6ClI,OAA7C,EAAd;AACD;;AACD8V,KAAG,CAAC5T,IAAD,EAAO;AACR,UAAM4Z,YAAY,GAAG5Z,IAAI,CAACC,GAAL,CAAS,OAAT,CAArB;;AACA,SAAK,MAAMsI,KAAX,IAAoB,KAAKqN,MAAzB,EAAiC;AAC/B,UAAIgE,YAAY,GAAGrR,KAAnB,EAA0B;;AAC1B,UAAIqR,YAAY,KAAKrR,KAArB,EAA4B;AAC1B,eAAO,KAAKkM,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD;;AACD,aAAO,KAAKyU,YAAL,CACL,IAAIvB,+DAAJ,CAAoBlT,IAAI,CAACmD,cAAL,CAAoB,MAApB,EAA4BK,GAA5B,CAAgC,OAAhC,EAAyC+E,KAAzC,CAApB,CADK,CAAP;AAGD;;AACD,WAAO,KAAKkM,YAAL,CACL,IAAIvB,+DAAJ,CACElT,IAAI,CACDmD,cADH,CACkB,MADlB,EAEG/D,QAFH,CAEY,CAFZ,EAEe,MAFf,EAGGoE,GAHH,CAGO,OAHP,EAGgB,KAAKoS,MAAL,CAAY,CAAZ,CAHhB,CADF,CADK,CAAP;AAQD;;AAxBsD;;AA2BzD,MAAMiE,iBAAN,SAAgC9D,kBAAhC,CAAmD;AACjDnC,KAAG,CAAC5T,IAAD,EAAO;AACR,UAAM4Z,YAAY,GAAG5Z,IAAI,CAACC,GAAL,CAAS,OAAT,CAArB;;AACA,SAAK,MAAMsI,KAAX,IAAoB,KAAKzJ,OAAL,CAAa8Z,aAAjC,EAAgD;AAC9C,UAAIgB,YAAY,GAAGrR,KAAnB,EAA0B;;AAC1B,UAAIqR,YAAY,KAAKrR,KAArB,EAA4B;AAC1B,eAAO,KAAKkM,YAAL,CAAkB,IAAIxB,6DAAJ,CAAkBjT,IAAlB,CAAlB,CAAP;AACD;;AACD,aAAO,KAAKyU,YAAL,CAAkB,IAAIvB,+DAAJ,CAAoBlT,IAAI,CAACI,WAAL,CAAiB,MAAjB,EAAyBoD,GAAzB,CAA6B,OAA7B,EAAsC+E,KAAtC,CAApB,CAAlB,CAAP;AACD;;AACD,WAAO,KAAKkM,YAAL,CACL,IAAIvB,+DAAJ,CACElT,IAAI,CACDI,WADH,CACe,MADf,EAEGL,GAFH,CAEO,CAFP,EAEU,MAFV,EAGGyD,GAHH,CAGO,OAHP,EAGgB,KAAK1E,OAAL,CAAa8Z,aAAb,CAA2B,CAA3B,CAHhB,CADF,CADK,CAAP;AAQD;;AAlBgD;;AAqBnD,MAAMkB,uBAAuB,GAAG;AAC9B9S,MAAI,EAAE,eADwB;AAE9B/G,KAAG,EAAE6T,SAAS,IAAI;AAChB,QAAIA,SAAS,CAAChV,OAAV,CAAkB8Z,aAAlB,KAAoC5b,SAAxC,EAAmD,OAAO,IAAP;;AACnD,QAAI8W,SAAS,CAAChW,OAAd,EAAuB;AACrB,aAAO,IAAI6b,oBAAJ,CAAyB7F,SAAzB,CAAP;AACD;;AACD,WAAO,IAAI+F,iBAAJ,CAAsB/F,SAAtB,CAAP;AACD,GAR6B;AAS9BlB,kBAAgB,EAAE,CAAC9T,OAAD,EAAU0W,IAAV,KAAmB;AACnC,QAAI1W,OAAO,CAAC8Z,aAAR,KAA0B5b,SAA9B,EAAyC;AACvC,UAAI,CAAC2Y,gBAAgB,CAAC7W,OAAO,CAAC8Z,aAAT,CAArB,EAA8C;AAC5C,cAAM,IAAIrG,+DAAJ,CAAoB,2CAApB,CAAN;AACD;;AACD,UAAIzT,OAAO,CAAC8Z,aAAR,CAAsB3T,IAAtB,CAA2ByR,GAAG,IAAIA,GAAG,GAAG,CAAN,IAAWA,GAAG,GAAG,EAAnD,CAAJ,EAA4D;AAC1D,cAAM,IAAInE,+DAAJ,CAAoB,wDAApB,CAAN;AACD;;AACDiD,UAAI,CAACoD,aAAL,GAAqB9Z,OAAO,CAAC8Z,aAAR,CAAsB5S,KAAtB,EAArB;AACAwP,UAAI,CAACoD,aAAL,CAAmBpU,IAAnB,CAAwB0N,kEAAxB;AACD,KATD,MASO,IACL,EACEyD,gBAAgB,CAAC7W,OAAO,CAAC+Y,YAAT,CAAhB,IACAlC,gBAAgB,CAAC7W,OAAO,CAACgZ,WAAT,CADhB,IAEAnC,gBAAgB,CAAC7W,OAAO,CAAC0Z,WAAT,CAHlB,KAKA1Z,OAAO,CAACoV,SAAR,KAAsB,QANjB,EAOL;AACAsB,UAAI,CAACoD,aAAL,GAAqB,CAACpD,IAAI,CAACpY,KAAL,CAAW6C,GAAX,CAAe,OAAf,CAAD,CAArB;AACD;AACF,GA7B6B;AA8B9ByV,MAAI,EAAE,MAAM,CACVJ,mBADU,EAEVwE,uBAFU,EAGVvB,sBAHU,EAIVjB,qBAJU,EAKVJ,wBALU,EAMVJ,0BANU,EAOVL,+BAPU;AA9BkB,CAAhC;AAyCA,MAAMsD,UAAU,GAAG,CACjBzE,mBADiB,EAEjBwE,uBAFiB,EAGjBvB,sBAHiB,EAIjBiB,qBAJiB,EAKjBlC,qBALiB,EAMjBJ,wBANiB,EAOjBJ,0BAPiB,EAQjBL,+BARiB,CAAnB;;;;;;;;;;;;;AC3/BA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;;AAEA/Q,gEAAK,CAACsU,SAAN,CAAgB1T,MAAhB,GAAyB,SAAS2T,SAAT,CAAmBC,IAAI,GAAG,EAA1B,EAA8B;AACrD,QAAM7T,IAAI,GAAG;AACX8T,QAAI,EAAE,OADK;AAEX/X,SAAK,EAAE,KAAKuD,QAAL,CAAc5E,GAAd,CAAkBR,OAAO,IAAIA,OAAO,CAAC+F,MAAR,EAA7B;AAFI,GAAb;AAIA,MAAI,CAAC4T,IAAI,CAACE,MAAV,EAAkB/T,IAAI,CAACtJ,QAAL,GAAgB,KAAKA,QAArB;AAClBsd,mFAAmB,CAAC,IAAD,EAAOhU,IAAP,EAAa6T,IAAb,CAAnB;AACA,SAAO7T,IAAP;AACD,CARD;;AASAX,gEAAK,CAACa,QAAN,GAAiB,SAAS+L,KAAT,CAAejM,IAAf,EAAqBvH,OAAO,GAAG,EAA/B,EAAmC;AAClD,MAAIuH,IAAI,CAAC8T,IAAL,KAAc,OAAlB,EAA2B;AACzB,UAAM,IAAIG,oEAAJ,CAAmB,oBAAnB,CAAN;AACD;;AACD,SAAO,IAAI5U,gEAAJ,CAAU;AACftD,SAAK,EAAEiE,IAAI,CAACjE,KAAL,CAAWrB,GAAX,CAAef,IAAI,IAAI6G,+DAAe,CAACtG,OAAhB,CAAwBgG,QAAxB,CAAiCvG,IAAjC,CAAvB,CADQ;AAEfqF,QAAI,EAAE,OAAOvG,OAAO,CAACuG,IAAf,KAAwB,UAAxB,GAAqCvG,OAAO,CAACuG,IAAR,CAAagB,IAAb,CAArC,GAA0DA,IAAI,CAAChB,IAFtD;AAGftI,YAAQ,EAAE+B,OAAO,CAAC/B,QAAR,IAAoBsJ,IAAI,CAACtJ;AAHpB,GAAV,CAAP;AAKD,CATD;;AAUAwd,sFAAwB,CAAC,OAAD,EAAU7U,gEAAK,CAACa,QAAhB,CAAxB;;AAEA4H,+DAAI,CAAC6L,SAAL,CAAe1T,MAAf,GAAwB,SAAS2T,SAAT,CAAmBC,IAAI,GAAG,EAA1B,EAA8B;AACpD,QAAM7T,IAAI,GAAG;AACX8T,QAAI,EAAE,MADK;AAEX7W,UAAM,EAAE1C,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBwR,iEAAS,CAAC,KAAKvT,OAAN,CAA3B,CAAd,EAA0D;AAChE1B,WAAK,EAAE,KAAK2B,kBAAL,CAAwB,KAAKD,OAAL,CAAa1B,KAArC,EAA4CkJ,MAA5C;AADyD,KAA1D;AAFG,GAAb;;AAMA,MAAI,KAAKxH,OAAL,CAAajB,GAAjB,EAAsB;AACpBwI,QAAI,CAAC/C,MAAL,CAAYzF,GAAZ,GAAkB,KAAKkB,kBAAL,CAAwB,KAAKD,OAAL,CAAajB,GAArC,EAA0CyI,MAA1C,EAAlB;AACD;;AACD,MAAI,CAAC4T,IAAI,CAACE,MAAV,EAAkB/T,IAAI,CAACtJ,QAAL,GAAgB,KAAKA,QAArB;AAClBsd,mFAAmB,CAAC,IAAD,EAAOhU,IAAP,EAAa6T,IAAb,CAAnB;AACA,SAAO7T,IAAP;AACD,CAbD;;AAcA8H,+DAAI,CAAC5H,QAAL,GAAgB,SAASA,QAAT,CAAkBF,IAAlB,EAAwBvH,OAAO,GAAG,EAAlC,EAAsC;AACpD,QAAMwE,MAAM,GAAG1C,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBwF,IAAI,CAAC/C,MAAvB,CAAd,EAA8C;AAC3DlG,SAAK,EAAEyJ,+DAAe,CAACtG,OAAhB,CAAwBgG,QAAxB,CAAiCF,IAAI,CAAC/C,MAAL,CAAYlG,KAA7C,CADoD;AAE3DS,OAAG,EAAEwI,IAAI,CAAC/C,MAAL,CAAYzF,GAAZ,IAAmBgJ,+DAAe,CAACtG,OAAhB,CAAwBgG,QAAxB,CAAiCF,IAAI,CAAC/C,MAAL,CAAYzF,GAA7C;AAFmC,GAA9C,CAAf;AAIA,SAAO,IAAIsQ,+DAAJ,CAAS7K,MAAT,EAAiB;AACtB+B,QAAI,EAAE,OAAOvG,OAAO,CAACuG,IAAf,KAAwB,UAAxB,GAAqCvG,OAAO,CAACuG,IAAR,CAAagB,IAAb,CAArC,GAA0DA,IAAI,CAAChB,IAD/C;AAEtBtI,YAAQ,EAAE+B,OAAO,CAAC/B,QAAR,IAAoBsJ,IAAI,CAACtJ;AAFb,GAAjB,CAAP;AAID,CATD;;AAUAwd,sFAAwB,CAAC,MAAD,EAASpM,+DAAI,CAAC5H,QAAd,CAAxB;;AAEAyI,mEAAQ,CAACgL,SAAT,CAAmB1T,MAAnB,GAA4B,SAAS2T,SAAT,CAAmBC,IAAI,GAAG,EAA1B,EAA8B;AACxD,QAAM7T,IAAI,GAAG;AACX8T,QAAI,EAAE,UADK;AAEXlL,UAAM,EAAE,KAAKA,MAAL,CAAYlO,GAAZ,CAAgBsO,IAAI,IAC1BA,IAAI,CAAC/I,MAAL,CAAY1F,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqZ,IAAlB,CAAd,EAAuC;AAAEE,YAAM,EAAE;AAAV,KAAvC,CAAZ,CADM,CAFG;AAKXlL,WAAO,EAAE,KAAKA,OAAL,CAAanO,GAAb,CAAiBsO,IAAI,IAC5BA,IAAI,CAAC/I,MAAL,CAAY1F,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqZ,IAAlB,CAAd,EAAuC;AAAEE,YAAM,EAAE;AAAV,KAAvC,CAAZ,CADO,CALE;AAQX9K,UAAM,EAAE,KAAKA,MAAL,CAAYhJ,MAAZ,CAAmB1F,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqZ,IAAlB,CAAd,EAAuC;AAAEE,YAAM,EAAE;AAAV,KAAvC,CAAnB,CARG;AASX7K,WAAO,EAAE,KAAKA,OAAL,CAAajJ,MAAb,CAAoB1F,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqZ,IAAlB,CAAd,EAAuC;AAAEE,YAAM,EAAE;AAAV,KAAvC,CAApB;AATE,GAAb;AAWA,MAAI,CAACF,IAAI,CAACE,MAAV,EAAkB/T,IAAI,CAACtJ,QAAL,GAAgB,KAAKA,QAArB;AAClBsd,mFAAmB,CAAC,IAAD,EAAOhU,IAAP,EAAa6T,IAAb,CAAnB;AACA,SAAO7T,IAAP;AACD,CAfD;;AAgBA2I,mEAAQ,CAACzI,QAAT,GAAoB,SAAS+L,KAAT,CAAejM,IAAf,EAAqBvH,OAAO,GAAG,EAA/B,EAAmC;AACrD,MAAIuH,IAAI,CAAC8T,IAAL,KAAc,UAAlB,EAA8B;AAC5B,UAAM,IAAIG,oEAAJ,CAAmB,uBAAnB,CAAN;AACD;;AACD,SAAO,IAAItL,mEAAJ,CAAa;AAClBC,UAAM,EAAE5I,IAAI,CAAC4I,MAAL,CAAYlO,GAAZ,CAAgBsO,IAAI,IAC1BlB,+DAAI,CAAC5H,QAAL,CAAc8I,IAAd,EAAoBzO,MAAM,CAACC,MAAP,CAAc;AAAE9D,cAAQ,EAAEsJ,IAAI,CAACtJ;AAAjB,KAAd,EAA2C+B,OAA3C,CAApB,CADM,CADU;AAIlBoQ,WAAO,EAAE7I,IAAI,CAAC6I,OAAL,CAAanO,GAAb,CAAiBsO,IAAI,IAC5BlB,+DAAI,CAAC5H,QAAL,CAAc8I,IAAd,EAAoBzO,MAAM,CAACC,MAAP,CAAc;AAAE9D,cAAQ,EAAEsJ,IAAI,CAACtJ;AAAjB,KAAd,EAA2C+B,OAA3C,CAApB,CADO,CAJS;AAOlBwQ,UAAM,EAAE5J,gEAAK,CAACa,QAAN,CAAeF,IAAI,CAACiJ,MAApB,EAA4B1O,MAAM,CAACC,MAAP,CAAc;AAAE9D,cAAQ,EAAEsJ,IAAI,CAACtJ;AAAjB,KAAd,EAA2C+B,OAA3C,CAA5B,CAPU;AAQlByQ,WAAO,EAAE7J,gEAAK,CAACa,QAAN,CAAeF,IAAI,CAACkJ,OAApB,EAA6B3O,MAAM,CAACC,MAAP,CAAc;AAAE9D,cAAQ,EAAEsJ,IAAI,CAACtJ;AAAjB,KAAd,EAA2C+B,OAA3C,CAA7B,CARS;AASlBuG,QAAI,EAAE,OAAOvG,OAAO,CAACuG,IAAf,KAAwB,UAAxB,GAAqCvG,OAAO,CAACuG,IAAR,CAAagB,IAAb,CAArC,GAA0DA,IAAI,CAAChB,IATnD;AAUlBtI,YAAQ,EAAE+B,OAAO,CAAC/B,QAAR,IAAoBsJ,IAAI,CAACtJ;AAVjB,GAAb,CAAP;AAYD,CAhBD;;AAiBAwd,sFAAwB,CAAC,UAAD,EAAavL,mEAAQ,CAACzI,QAAtB,CAAxB,C;;;;;;;;;;;;ACxFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA,MAAM+T,cAAN,SAA6B9X,KAA7B,CAAmC;;AACnC,MAAMgY,kBAAN,SAAiChY,KAAjC,CAAuC;;AACvC5F,8EAAmB,CAAC6d,WAApB,GAAkC,IAAI5I,GAAJ,EAAlC;;AACAjV,8EAAmB,CAACod,SAApB,CAA8B1T,MAA9B,GAAuC,SAAS2T,SAAT,CAAmBC,IAAnB,EAAyB;AAC9D,QAAM,IAAIM,kBAAJ,CACH,+BAA8B,KAAK3d,WAAL,CAAiBmK,IAAK,YAArD,GACG,4EAFC,CAAN;AAID,CALD;;AAMApK,8EAAmB,CAAC2J,QAApB,GAA+B,SAAS+L,KAAT,CAAejM,IAAf,EAAqBvH,OAArB,EAA8B;AAC3D,MAAI,OAAOuH,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,KAAK,IAAzC,EAA+C;AAC7C,UAAM,IAAIiU,cAAJ,CAAoB,iBAAgBjU,IAAK,GAAzC,CAAN;AACD;;AACD,QAAMG,EAAE,GAAG5J,8EAAmB,CAAC6d,WAApB,CAAgCxa,GAAhC,CAAoCoG,IAAI,CAAC8T,IAAzC,CAAX;;AACA,MAAI,CAAC3T,EAAL,EAAS;AACP,UAAM,IAAI8T,cAAJ,CACH,kCAAiCjU,IAAI,CAAC8T,IAAK,sCAA5C,GACG,QAAO9T,IAAI,CAAC8T,IAAK,KADpB,GAEG,oDAHC,CAAN;AAKD;;AACD,SAAO3T,EAAE,CAACH,IAAD,EAAOvH,OAAP,CAAT;AACD,CAbD;;AAcA,SAASub,mBAAT,CAA6BK,GAA7B,EAAkCrU,IAAlC,EAAwCiF,GAAxC,EAA6C;AAC3C,MAAI,CAACA,GAAG,CAACjG,IAAT,EAAe;;AACf,MAAIiG,GAAG,CAACjG,IAAJ,KAAa,IAAjB,EAAuB;AACrBgB,QAAI,CAAChB,IAAL,GAAYqV,GAAG,CAACrV,IAAhB;AACD,GAFD,MAEO;AACLgB,QAAI,CAAChB,IAAL,GAAYiG,GAAG,CAACjG,IAAJ,CAASqV,GAAT,CAAZ;AACD;;AACD,MAAIrU,IAAI,CAAChB,IAAL,KAAcrI,SAAlB,EAA6B,OAAOqJ,IAAI,CAAChB,IAAZ;AAC9B;;AACD,SAASkV,wBAAT,CAAkCvT,IAAlC,EAAwCR,EAAxC,EAA4C;AAC1C5J,gFAAmB,CAAC6d,WAApB,CAAgCjX,GAAhC,CAAoCwD,IAApC,EAA0CR,EAA1C;AACD;;;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;;AAEA,MAAMmU,mBAAN,SAAkC9T,+DAAlC,CAAkD;AAChDhK,aAAW,CAACmD,IAAD,EAAOlB,OAAO,GAAG,EAAjB,EAAqB;AAC9B,UAAM9B,SAAN,EAAiB8B,OAAjB;;AACA,QAAI,CAAC,CAAC,KAAD,EAAQ,IAAR,EAAc9B,SAAd,EAAyByY,QAAzB,CAAkC3W,OAAO,CAAC/B,QAA1C,CAAL,EAA0D;AACxD,YAAM,IAAI4J,uEAAJ,CACH,8CAAD,GACG,yBAAwB7H,OAAO,CAAC/B,QAAS,iBAFxC,CAAN;AAID;;AACD,SAAK+J,KAAL,GAAa,IAAIqB,IAAJ,CAASnI,IAAT,CAAb;AACA,SAAKjD,QAAL,GAAgB+B,OAAO,CAAC/B,QAAR,KAAqBC,SAArB,GAAiC8B,OAAO,CAAC/B,QAAzC,GAAoD,IAApE;AACA,SAAKqL,aAAL;AACD;;AACY,SAANnB,MAAM,CAAC6B,MAAD,EAAS;AACpB,WAAOlI,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+B/R,MAA/B,MAA2C,eAAlD;AACD;;AACc,SAAR1B,QAAQ,CAACpH,IAAD,EAAOlB,OAAP,EAAgB;AAC7B,WAAO,IAAI6b,mBAAJ,CAAwB3a,IAAxB,EAA8BlB,OAA9B,CAAP;AACD;;AACc,SAARyH,QAAQ,CAACF,IAAD,EAAO;AACpB,UAAMvJ,IAAI,GAAG,CACXuJ,IAAI,CAACiC,IADM,EAEXjC,IAAI,CAACkC,KAAL,GAAa,CAFF,EAGXlC,IAAI,CAAChH,GAHM,EAIXgH,IAAI,CAACmC,IAJM,EAKXnC,IAAI,CAACoC,MALM,EAMXpC,IAAI,CAACqC,MANM,EAOXrC,IAAI,CAACsC,WAPM,CAAb;;AASA,YAAQtC,IAAI,CAACtJ,QAAb;AACE,WAAK,KAAL;AAAY;AACV,iBAAO,IAAI4d,mBAAJ,CAAwB,IAAIxS,IAAJ,CAASA,IAAI,CAACE,GAAL,CAAS,GAAGvL,IAAZ,CAAT,CAAxB,EAAqD;AAC1DC,oBAAQ,EAAE,KADgD;AAE1D8I,oBAAQ,EAAEQ,IAAI,CAACR;AAF2C,WAArD,CAAP;AAID;;AACD,WAAK,IAAL;AAAW;AACT,iBAAO,IAAI8U,mBAAJ,CAAwB,IAAIxS,IAAJ,CAAS,GAAGrL,IAAZ,CAAxB,EAA2C;AAChDC,oBAAQ,EAAE,IADsC;AAEhD8I,oBAAQ,EAAEQ,IAAI,CAACR;AAFiC,WAA3C,CAAP;AAID;;AACD;AACE,cAAM,IAAIc,uEAAJ,CACJ,0DACG,uDADH,GAEG,kBAAiBN,IAAI,CAACtJ,QAAS,IAH9B,CAAN;AAdJ;AAoBD;;AACkB,SAAZU,YAAY,CAACqd,QAAD,EAAW;AAC5B,UAAM9a,IAAI,GAAG2a,mBAAmB,CAACpU,QAApB,CAA6BuU,QAAQ,CAACxU,MAAT,EAA7B,CAAb;AACAtG,QAAI,CAAC+G,UAAL,CAAgBlE,IAAhB,CAAqB,GAAGiY,QAAQ,CAAC/T,UAAjC;AACA,WAAO/G,IAAP;AACD;;AACO,MAAJA,IAAI,GAAG;AACT,WAAO,IAAImI,IAAJ,CAAS,KAAKrB,KAAd,CAAP;AACD;;AACM,MAAHjJ,GAAG,GAAG;AACR,QAAI,CAAC,KAAKgI,QAAV,EAAoB;AACpB,QAAI,KAAKgD,IAAT,EAAe,OAAO,KAAKA,IAAZ;AACf,SAAKA,IAAL,GAAY8R,mBAAmB,CAACld,YAApB,CACV,KAAKqI,UAAL,GAAkB/F,GAAlB,CAAsB,KAAK8F,QAA3B,EAAqC,aAArC,CADU,EAEV7F,IAFF;AAGA,WAAO,KAAK6I,IAAZ;AACD;;AACDrF,KAAG,CAACgC,IAAD,EAAOjI,KAAP,EAAc;AACf,QAAIiI,IAAI,KAAK,UAAb,EAAyB;AACvB,UAAI,KAAKzI,QAAL,KAAkBQ,KAAtB,EAA6B,OAAO,IAAP,CAA7B,KACK;AACH,eAAO,IAAIod,mBAAJ,CAAwB,KAAK7T,KAA7B,EAAoC;AACzC/J,kBAAQ,EAAEQ,KAD+B;AAEzCsI,kBAAQ,EAAE,KAAKA,QAF0B;AAGzCkB,oBAAU,EAAE,KAAKA;AAHwB,SAApC,CAAP;AAKD;AACF,KATD,MASO,IAAIvB,IAAI,KAAK,UAAb,EAAyB;AAC9B,UAAI,KAAKK,QAAL,KAAkBtI,KAAtB,EAA6B,OAAO,IAAP,CAA7B,KACK;AACH,eAAO,IAAIod,mBAAJ,CAAwB,KAAK7T,KAA7B,EAAoC;AACzC/J,kBAAQ,EAAE,KAAKA,QAD0B;AAEzC8I,kBAAQ,EAAEtI,KAF+B;AAGzCwJ,oBAAU,EAAE,KAAKA;AAHwB,SAApC,CAAP;AAKD;AACF;;AACD,UAAM,IAAIlH,6DAAJ,CAAmB,iBAAgB2F,IAAK,iCAAxC,CAAN;AACD;;AACDU,SAAO,GAAG;AACR,WAAO,KAAKY,KAAL,CAAWZ,OAAX,EAAP;AACD;;AACDI,QAAM,GAAG;AACP,QAAID,IAAJ;;AACA,QAAI,KAAKtJ,QAAL,KAAkB,KAAtB,EAA6B;AAC3BsJ,UAAI,GAAG;AACLtJ,gBAAQ,EAAE,KAAKA,QADV;AAELuL,YAAI,EAAE,KAAKxB,KAAL,CAAWuD,cAAX,EAFD;AAGL9B,aAAK,EAAE,KAAKzB,KAAL,CAAWwD,WAAX,KAA2B,CAH7B;AAILjL,WAAG,EAAE,KAAKyH,KAAL,CAAW2D,UAAX,EAJA;AAKLjC,YAAI,EAAE,KAAK1B,KAAL,CAAW4D,WAAX,EALD;AAMLjC,cAAM,EAAE,KAAK3B,KAAL,CAAW6D,aAAX,EANH;AAOLjC,cAAM,EAAE,KAAK5B,KAAL,CAAW8D,aAAX,EAPH;AAQLjC,mBAAW,EAAE,KAAK7B,KAAL,CAAW+D,kBAAX;AARR,OAAP;AAUD,KAXD,MAWO;AACLxE,UAAI,GAAG;AACLtJ,gBAAQ,EAAE,KAAKA,QADV;AAELuL,YAAI,EAAE,KAAKxB,KAAL,CAAWiU,WAAX,EAFD;AAGLxS,aAAK,EAAE,KAAKzB,KAAL,CAAWkU,QAAX,KAAwB,CAH1B;AAIL3b,WAAG,EAAE,KAAKyH,KAAL,CAAWmU,OAAX,EAJA;AAKLzS,YAAI,EAAE,KAAK1B,KAAL,CAAWoU,QAAX,EALD;AAMLzS,cAAM,EAAE,KAAK3B,KAAL,CAAWqU,UAAX,EANH;AAOLzS,cAAM,EAAE,KAAK5B,KAAL,CAAWsU,UAAX,EAPH;AAQLzS,mBAAW,EAAE,KAAK7B,KAAL,CAAWuU,eAAX;AARR,OAAP;AAUD;;AACD,QAAI,KAAKxV,QAAT,EAAmB;AACjBQ,UAAI,CAACR,QAAL,GAAgB,KAAKA,QAArB;AACD;;AACD,WAAOQ,IAAP;AACD;;AACD+B,eAAa,GAAG;AACd,QAAI,CAACuS,mBAAmB,CAAC1T,MAApB,CAA2B,KAAKH,KAAhC,CAAD,IAA2C2E,KAAK,CAAC,KAAK3E,KAAL,CAAWZ,OAAX,EAAD,CAApD,EAA4E;AAC1E,YAAM,IAAIS,uEAAJ,CAA4B,uCAA5B,CAAN;AACD,KAFD,MAEO,IAAI,CAAC,CAAC,IAAD,EAAO,KAAP,EAAc8O,QAAd,CAAuB,KAAK1Y,QAA5B,CAAL,EAA4C;AACjD,YAAM,IAAI4J,uEAAJ,CACJ,0EACG,IAAG,KAAK5J,QAAS,kBAFhB,CAAN;AAID,KALM,MAKA,IAAI,KAAK8I,QAAL,IAAiB,KAAKA,QAAL,IAAiB,CAAtC,EAAyC;AAC9C,YAAM,IAAIc,uEAAJ,CAA4B,+CAA5B,CAAN;AACD;;AACD,WAAO,IAAP;AACD;;AArI+C;;AAuIlDgU,mBAAmB,CAACjT,kBAApB,GAAyC,KAAzC;;;;;;;;;;;;;ACzIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEAb,+DAAe,CAACtG,OAAhB,GAA0Boa,oFAA1B;AACAxM,+DAAI,CAACN,eAAL,GAAuBkM,2EAAvB,C;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEC,WAASuB,IAAT,EAAete,SAAf,EAA0B;AAE1B;AAEA;AACA,MAAIue,GAAG,GAAG,EAAV,CAL0B,CAO1B;;AACAA,KAAG,CAACC,OAAJ,GAAc,OAAd;AAGA;AAEA;AACA;;AACAD,KAAG,CAACE,QAAJ,GAAe;AACdC,YAAQ,EAAE;AACTC,YAAM,EAAG,GADA;AACM;AACfC,YAAM,EAAG,MAFA;AAEQ;AACjBC,aAAO,EAAG,GAHD;AAGO;AAChBC,cAAQ,EAAG,GAJF;AAIQ;AACjBC,eAAS,EAAG,CALH;AAKO;AAChBC,cAAQ,EAAG,CANF,CAMK;;AANL,KADI;AASdC,UAAM,EAAE;AACPF,eAAS,EAAG,CADL;AACS;AAChBC,cAAQ,EAAG,CAFJ;AAEQ;AACfF,cAAQ,EAAG,GAHJ;AAIPD,aAAO,EAAG;AAJH;AATM,GAAf;AAkBA;AAEA;;AACA,MAAIK,SAAS,GAAGpa,KAAK,CAACkY,SAAN,CAAgBjZ,GAAhC;AAAA,MACCob,aAAa,GAAGra,KAAK,CAACwD,OADvB;AAAA,MAECsV,QAAQ,GAAGha,MAAM,CAACoZ,SAAP,CAAiBY,QAF7B;AAIA;AACD;AACA;AACA;;AACC,WAASwB,QAAT,CAAkBrJ,GAAlB,EAAuB;AACtB,WAAO,CAAC,EAAEA,GAAG,KAAK,EAAR,IAAeA,GAAG,IAAIA,GAAG,CAACsJ,UAAX,IAAyBtJ,GAAG,CAACuJ,MAA9C,CAAR;AACA;AAED;AACD;AACA;AACA;;;AACC,WAAShX,OAAT,CAAiByN,GAAjB,EAAsB;AACrB,WAAOoJ,aAAa,GAAGA,aAAa,CAACpJ,GAAD,CAAhB,GAAwB6H,QAAQ,CAACC,IAAT,CAAc9H,GAAd,MAAuB,gBAAnE;AACA;AAED;AACD;AACA;;;AACC,WAASwJ,QAAT,CAAkBxJ,GAAlB,EAAuB;AACtB,WAAOA,GAAG,IAAI6H,QAAQ,CAACC,IAAT,CAAc9H,GAAd,MAAuB,iBAArC;AACA;AAED;AACD;AACA;AACA;AACA;;;AACC,WAASyJ,QAAT,CAAkB1T,MAAlB,EAA0B2T,IAA1B,EAAgC;AAC/B,QAAI3J,GAAJ;AACAhK,UAAM,GAAGA,MAAM,IAAI,EAAnB;AACA2T,QAAI,GAAGA,IAAI,IAAI,EAAf,CAH+B,CAI/B;;AACA,SAAK3J,GAAL,IAAY2J,IAAZ,EAAkB;AACjB,UAAIA,IAAI,CAACC,cAAL,CAAoB5J,GAApB,CAAJ,EAA8B;AAC7B;AACA,YAAIhK,MAAM,CAACgK,GAAD,CAAN,IAAe,IAAnB,EAAyBhK,MAAM,CAACgK,GAAD,CAAN,GAAc2J,IAAI,CAAC3J,GAAD,CAAlB;AACzB;AACD;;AACD,WAAOhK,MAAP;AACA;AAED;AACD;AACA;AACA;AACA;AACA;;;AACC,WAAS/H,GAAT,CAAagS,GAAb,EAAkB5T,QAAlB,EAA4Bwd,OAA5B,EAAqC;AACpC,QAAIC,OAAO,GAAG,EAAd;AAAA,QAAkBC,CAAlB;AAAA,QAAqBC,CAArB;AAEA,QAAI,CAAC/J,GAAL,EAAU,OAAO6J,OAAP,CAH0B,CAKpC;;AACA,QAAIV,SAAS,IAAInJ,GAAG,CAAChS,GAAJ,KAAYmb,SAA7B,EAAwC,OAAOnJ,GAAG,CAAChS,GAAJ,CAAQ5B,QAAR,EAAkBwd,OAAlB,CAAP,CANJ,CAQpC;;AACA,SAAKE,CAAC,GAAG,CAAJ,EAAOC,CAAC,GAAG/J,GAAG,CAAC/O,MAApB,EAA4B6Y,CAAC,GAAGC,CAAhC,EAAmCD,CAAC,EAApC,EAAyC;AACxCD,aAAO,CAACC,CAAD,CAAP,GAAa1d,QAAQ,CAAC0b,IAAT,CAAc8B,OAAd,EAAuB5J,GAAG,CAAC8J,CAAD,CAA1B,EAA+BA,CAA/B,EAAkC9J,GAAlC,CAAb;AACA;;AACD,WAAO6J,OAAP;AACA;AAED;AACD;AACA;;;AACC,WAASG,cAAT,CAAwBC,GAAxB,EAA6B5e,IAA7B,EAAmC;AAClC4e,OAAG,GAAGvQ,IAAI,CAACwQ,KAAL,CAAWxQ,IAAI,CAACuF,GAAL,CAASgL,GAAT,CAAX,CAAN;AACA,WAAOvR,KAAK,CAACuR,GAAD,CAAL,GAAY5e,IAAZ,GAAmB4e,GAA1B;AACA;AAGD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,WAASE,mBAAT,CAA6BtB,MAA7B,EAAqC;AACpC,QAAIY,QAAQ,GAAGjB,GAAG,CAACE,QAAJ,CAAaC,QAAb,CAAsBE,MAArC,CADoC,CAGpC;;AACA,QAAK,OAAOA,MAAP,KAAkB,UAAvB,EAAoCA,MAAM,GAAGA,MAAM,EAAf,CAJA,CAMpC;;AACA,QAAKQ,QAAQ,CAAER,MAAF,CAAR,IAAsBA,MAAM,CAACuB,KAAP,CAAa,IAAb,CAA3B,EAAgD;AAE/C;AACA,aAAO;AACNC,WAAG,EAAGxB,MADA;AAENyB,WAAG,EAAGzB,MAAM,CAAC0B,OAAP,CAAe,GAAf,EAAoB,EAApB,EAAwBA,OAAxB,CAAgC,IAAhC,EAAsC,KAAtC,CAFA;AAGNC,YAAI,EAAG3B;AAHD,OAAP,CAH+C,CAShD;AACC,KAVD,MAUO,IAAK,CAACA,MAAD,IAAW,CAACA,MAAM,CAACwB,GAAnB,IAA0B,CAACxB,MAAM,CAACwB,GAAP,CAAWD,KAAX,CAAiB,IAAjB,CAAhC,EAAyD;AAE/D;AACA,aAAS,CAACf,QAAQ,CAAEI,QAAF,CAAX,GAA4BA,QAA5B,GAAuCjB,GAAG,CAACE,QAAJ,CAAaC,QAAb,CAAsBE,MAAtB,GAA+B;AAC5EwB,WAAG,EAAGZ,QADsE;AAE5Ea,WAAG,EAAGb,QAAQ,CAACc,OAAT,CAAiB,IAAjB,EAAuB,KAAvB,CAFsE;AAG5EC,YAAI,EAAGf;AAHqE,OAA7E;AAMA,KA1BmC,CA2BpC;;;AACA,WAAOZ,MAAP;AACA;AAGD;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,MAAI4B,QAAQ,GAAGjC,GAAG,CAACiC,QAAJ,GAAejC,GAAG,CAACjJ,KAAJ,GAAY,UAAS/U,KAAT,EAAgBse,OAAhB,EAAyB;AAClE;AACA,QAAIvW,OAAO,CAAC/H,KAAD,CAAX,EAAoB;AACnB,aAAOwD,GAAG,CAACxD,KAAD,EAAQ,UAASyf,GAAT,EAAc;AAC/B,eAAOQ,QAAQ,CAACR,GAAD,EAAMnB,OAAN,CAAf;AACA,OAFS,CAAV;AAGA,KANiE,CAQlE;;;AACAte,SAAK,GAAGA,KAAK,IAAI,CAAjB,CATkE,CAWlE;;AACA,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAOA,KAAP,CAZmC,CAclE;;AACAse,WAAO,GAAGA,OAAO,IAAIN,GAAG,CAACE,QAAJ,CAAaQ,MAAb,CAAoBJ,OAAzC,CAfkE,CAiBjE;;AACD,QAAI4B,KAAK,GAAG,IAAIC,MAAJ,CAAW,WAAW7B,OAAX,GAAqB,GAAhC,EAAqC,CAAC,GAAD,CAArC,CAAZ;AAAA,QACC8B,WAAW,GAAGC,UAAU,CACvB,CAAC,KAAKrgB,KAAN,EACC+f,OADD,CACS,iBADT,EAC4B,KAD5B,EACmC;AADnC,KAECA,OAFD,CAESG,KAFT,EAEgB,EAFhB,EAE4B;AAF5B,KAGCH,OAHD,CAGSzB,OAHT,EAGkB,GAHlB,CADuB,CAIK;AAJL,KADzB,CAlBkE,CA0BlE;;AACA,WAAO,CAACpQ,KAAK,CAACkS,WAAD,CAAN,GAAsBA,WAAtB,GAAoC,CAA3C;AACA,GA5BD;AA+BA;AACD;AACA;AACA;AACA;AACA;;;AACC,MAAIE,OAAO,GAAGtC,GAAG,CAACsC,OAAJ,GAAc,UAAStgB,KAAT,EAAgBwe,SAAhB,EAA2B;AACtDA,aAAS,GAAGgB,cAAc,CAAChB,SAAD,EAAYR,GAAG,CAACE,QAAJ,CAAaQ,MAAb,CAAoBF,SAAhC,CAA1B;AAEA,QAAI+B,eAAe,GAAGvc,MAAM,CAACga,GAAG,CAACiC,QAAJ,CAAajgB,KAAb,IAAsB,GAAtB,GAA4Bwe,SAA7B,CAA5B;AACA,QAAIgC,OAAO,GAAGtR,IAAI,CAACwQ,KAAL,CAAWa,eAAX,CAAd;AACA,QAAIE,WAAW,GAAGzc,MAAM,CAACwc,OAAO,GAAG,IAAV,GAAiBhC,SAAlB,CAAN,CAAmC8B,OAAnC,CAA2C9B,SAA3C,CAAlB;AACA,WAAOiC,WAAP;AACA,GAPD;AAUA;AACD;AACA;AACA;AACA;AACA;AACA;;;AACC,MAAIC,YAAY,GAAG1C,GAAG,CAAC0C,YAAJ,GAAmB1C,GAAG,CAACK,MAAJ,GAAa,UAASK,MAAT,EAAiBF,SAAjB,EAA4BD,QAA5B,EAAsCD,OAAtC,EAA+C;AACjG;AACA,QAAIvW,OAAO,CAAC2W,MAAD,CAAX,EAAqB;AACpB,aAAOlb,GAAG,CAACkb,MAAD,EAAS,UAASe,GAAT,EAAc;AAChC,eAAOiB,YAAY,CAACjB,GAAD,EAAMjB,SAAN,EAAiBD,QAAjB,EAA2BD,OAA3B,CAAnB;AACA,OAFS,CAAV;AAGA,KANgG,CAQjG;;;AACAI,UAAM,GAAGuB,QAAQ,CAACvB,MAAD,CAAjB,CATiG,CAWjG;;AACA,QAAI/B,IAAI,GAAGsC,QAAQ,CAChBD,QAAQ,CAACR,SAAD,CAAR,GAAsBA,SAAtB,GAAkC;AAClCA,eAAS,EAAGA,SADsB;AAElCD,cAAQ,EAAGA,QAFuB;AAGlCD,aAAO,EAAGA;AAHwB,KADlB,EAMjBN,GAAG,CAACE,QAAJ,CAAaQ,MANI,CAAnB;AAAA,QASC;AACAiC,gBAAY,GAAGnB,cAAc,CAAC7C,IAAI,CAAC6B,SAAN,CAV9B;AAAA,QAYC;AACAoC,YAAQ,GAAGlC,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,EAb/B;AAAA,QAcC7d,IAAI,GAAGggB,QAAQ,CAACP,OAAO,CAACpR,IAAI,CAACuF,GAAL,CAASiK,MAAM,IAAI,CAAnB,CAAD,EAAwBiC,YAAxB,CAAR,EAA+C,EAA/C,CAAR,GAA6D,EAdrE;AAAA,QAeCvL,GAAG,GAAGvU,IAAI,CAAC4F,MAAL,GAAc,CAAd,GAAkB5F,IAAI,CAAC4F,MAAL,GAAc,CAAhC,GAAoC,CAf3C,CAZiG,CA6BjG;;AACA,WAAOma,QAAQ,IAAIxL,GAAG,GAAGvU,IAAI,CAACke,MAAL,CAAY,CAAZ,EAAe3J,GAAf,IAAsBuH,IAAI,CAAC4B,QAA9B,GAAyC,EAAhD,CAAR,GAA8D1d,IAAI,CAACke,MAAL,CAAY3J,GAAZ,EAAiB2K,OAAjB,CAAyB,gBAAzB,EAA2C,OAAOpD,IAAI,CAAC4B,QAAvD,CAA9D,IAAkIoC,YAAY,GAAGhE,IAAI,CAAC2B,OAAL,GAAegC,OAAO,CAACpR,IAAI,CAACuF,GAAL,CAASiK,MAAT,CAAD,EAAmBiC,YAAnB,CAAP,CAAwCG,KAAxC,CAA8C,GAA9C,EAAmD,CAAnD,CAAlB,GAA0E,EAAxN,CAAP;AACA,GA/BD;AAkCA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,MAAIC,WAAW,GAAG/C,GAAG,CAAC+C,WAAJ,GAAkB,UAASrC,MAAT,EAAiBN,MAAjB,EAAyBI,SAAzB,EAAoCD,QAApC,EAA8CD,OAA9C,EAAuDD,MAAvD,EAA+D;AAClG;AACA,QAAItW,OAAO,CAAC2W,MAAD,CAAX,EAAqB;AACpB,aAAOlb,GAAG,CAACkb,MAAD,EAAS,UAASe,GAAT,EAAa;AAC/B,eAAOsB,WAAW,CAACtB,GAAD,EAAMrB,MAAN,EAAcI,SAAd,EAAyBD,QAAzB,EAAmCD,OAAnC,EAA4CD,MAA5C,CAAlB;AACA,OAFS,CAAV;AAGA,KANiG,CAQlG;;;AACAK,UAAM,GAAGuB,QAAQ,CAACvB,MAAD,CAAjB,CATkG,CAWlG;;AACA,QAAI/B,IAAI,GAAGsC,QAAQ,CAChBD,QAAQ,CAACZ,MAAD,CAAR,GAAmBA,MAAnB,GAA4B;AAC5BA,YAAM,EAAGA,MADmB;AAE5BI,eAAS,EAAGA,SAFgB;AAG5BD,cAAQ,EAAGA,QAHiB;AAI5BD,aAAO,EAAGA,OAJkB;AAK5BD,YAAM,EAAGA;AALmB,KADZ,EAQjBL,GAAG,CAACE,QAAJ,CAAaC,QARI,CAAnB;AAAA,QAWC;AACA6C,WAAO,GAAGrB,mBAAmB,CAAChD,IAAI,CAAC0B,MAAN,CAZ9B;AAAA,QAcC;AACA4C,aAAS,GAAGvC,MAAM,GAAG,CAAT,GAAasC,OAAO,CAACnB,GAArB,GAA2BnB,MAAM,GAAG,CAAT,GAAasC,OAAO,CAAClB,GAArB,GAA2BkB,OAAO,CAAChB,IAf3E,CAZkG,CA6BlG;;AACA,WAAOiB,SAAS,CAAClB,OAAV,CAAkB,IAAlB,EAAwBpD,IAAI,CAACyB,MAA7B,EAAqC2B,OAArC,CAA6C,IAA7C,EAAmDW,YAAY,CAACxR,IAAI,CAACuF,GAAL,CAASiK,MAAT,CAAD,EAAmBc,cAAc,CAAC7C,IAAI,CAAC6B,SAAN,CAAjC,EAAmD7B,IAAI,CAAC4B,QAAxD,EAAkE5B,IAAI,CAAC2B,OAAvE,CAA/D,CAAP;AACA,GA/BD;AAkCA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACCN,KAAG,CAACkD,YAAJ,GAAmB,UAASC,IAAT,EAAe/C,MAAf,EAAuBI,SAAvB,EAAkCD,QAAlC,EAA4CD,OAA5C,EAAqDD,MAArD,EAA6D;AAC/E,QAAI,CAAC8C,IAAD,IAAS,CAACpZ,OAAO,CAACoZ,IAAD,CAArB,EAA6B,OAAO,EAAP,CADkD,CAG/E;;AACA,QAAIxE,IAAI,GAAGsC,QAAQ,CAChBD,QAAQ,CAACZ,MAAD,CAAR,GAAmBA,MAAnB,GAA4B;AAC5BA,YAAM,EAAGA,MADmB;AAE5BI,eAAS,EAAGA,SAFgB;AAG5BD,cAAQ,EAAGA,QAHiB;AAI5BD,aAAO,EAAGA,OAJkB;AAK5BD,YAAM,EAAGA;AALmB,KADZ,EAQjBL,GAAG,CAACE,QAAJ,CAAaC,QARI,CAAnB;AAAA,QAWC;AACA6C,WAAO,GAAGrB,mBAAmB,CAAChD,IAAI,CAAC0B,MAAN,CAZ9B;AAAA,QAcC;AACA+C,kBAAc,GAAGJ,OAAO,CAACnB,GAAR,CAAYpR,OAAZ,CAAoB,IAApB,IAA4BuS,OAAO,CAACnB,GAAR,CAAYpR,OAAZ,CAAoB,IAApB,CAA5B,GAAwD,IAAxD,GAA+D,KAfjF;AAAA,QAiBC;AACA4S,aAAS,GAAG,CAlBb;AAAA,QAoBC;AACAC,aAAS,GAAG9d,GAAG,CAAC2d,IAAD,EAAO,UAAS1B,GAAT,EAAcH,CAAd,EAAiB;AACtC,UAAIvX,OAAO,CAAC0X,GAAD,CAAX,EAAkB;AACjB;AACA,eAAOzB,GAAG,CAACkD,YAAJ,CAAiBzB,GAAjB,EAAsB9C,IAAtB,CAAP;AACA,OAHD,MAGO;AACN;AACA8C,WAAG,GAAGQ,QAAQ,CAACR,GAAD,CAAd,CAFM,CAIN;;AACA,YAAIwB,SAAS,GAAGxB,GAAG,GAAG,CAAN,GAAUuB,OAAO,CAACnB,GAAlB,GAAwBJ,GAAG,GAAG,CAAN,GAAUuB,OAAO,CAAClB,GAAlB,GAAwBkB,OAAO,CAAChB,IAAxE;AAAA,YAEC;AACAuB,YAAI,GAAGN,SAAS,CAAClB,OAAV,CAAkB,IAAlB,EAAwBpD,IAAI,CAACyB,MAA7B,EAAqC2B,OAArC,CAA6C,IAA7C,EAAmDW,YAAY,CAACxR,IAAI,CAACuF,GAAL,CAASgL,GAAT,CAAD,EAAgBD,cAAc,CAAC7C,IAAI,CAAC6B,SAAN,CAA9B,EAAgD7B,IAAI,CAAC4B,QAArD,EAA+D5B,IAAI,CAAC2B,OAApE,CAA/D,CAHR;AAKA,YAAIiD,IAAI,CAAC9a,MAAL,GAAc4a,SAAlB,EAA6BA,SAAS,GAAGE,IAAI,CAAC9a,MAAjB;AAC7B,eAAO8a,IAAP;AACA;AACD,KAjBc,CArBhB,CAJ+E,CA4C/E;;AACA,WAAO/d,GAAG,CAAC8d,SAAD,EAAY,UAAS7B,GAAT,EAAcH,CAAd,EAAiB;AACtC;AACA,UAAIT,QAAQ,CAACY,GAAD,CAAR,IAAiBA,GAAG,CAAChZ,MAAJ,GAAa4a,SAAlC,EAA6C;AAC5C;AACA,eAAOD,cAAc,GAAG3B,GAAG,CAACM,OAAJ,CAAYpD,IAAI,CAACyB,MAAjB,EAAyBzB,IAAI,CAACyB,MAAL,GAAa,IAAI7Z,KAAJ,CAAU8c,SAAS,GAAG5B,GAAG,CAAChZ,MAAhB,GAAyB,CAAnC,EAAsC+a,IAAtC,CAA2C,GAA3C,CAAtC,CAAH,GAA8F,IAAIjd,KAAJ,CAAU8c,SAAS,GAAG5B,GAAG,CAAChZ,MAAhB,GAAyB,CAAnC,EAAsC+a,IAAtC,CAA2C,GAA3C,CAAD,GAAoD/B,GAAtK;AACA;;AACD,aAAOA,GAAP;AACA,KAPS,CAAV;AAQA,GArDD;AAwDA;AAEA;AACA;;;AACA,MAAI,IAAJ,EAAoC;AACnC,QAAI,SAAiCgC,MAAM,CAACC,OAA5C,EAAqD;AACpDA,aAAO,GAAGD,MAAM,CAACC,OAAP,GAAiB1D,GAA3B;AACA;;AACD0D,WAAO,CAACC,UAAR,GAAqB3D,GAArB;AACA,GALD,MAKO,EAzXmB,CAiZ1B;;AACA,CAlZA,EAkZC,IAlZD,CAAD,C;;;;;;;;;;;ACXA,MAAM4D,KAAK,GAAGC,mBAAO,CAAC,oDAAD,CAArB;;AACA,MAAMC,GAAG,GAAGD,mBAAO,CAAC,kBAAD,CAAnB;;AACA,MAAME,QAAQ,GAAGF,mBAAO,CAAC,sDAAD,CAAxB;;AACA,MAAMG,OAAO,GAAGH,mBAAO,CAAC,oDAAD,CAAvB;;AAEA,MAAMI,QAAQ,GAAG,CAACxC,GAAD,EAAMyC,GAAN,KAAe,OAAOzC,GAAP,KAAe,SAAf,GAA2BA,GAA3B,GAAiCyC,GAAjE;;AACA,MAAMC,OAAO,GAAG,CAAC1C,GAAD,EAAMyC,GAAN,KAAe,OAAOzC,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgCyC,GAA/D;;AAEA,MAAME,cAAc,GAAG;AACnB;AACAC,QAAM,EAAE,KAFW;AAGnB;AACAC,aAAW,EAAE,KAJM;AAKnB;AACAve,QAAM,EAAE6d,KAAK,CAACW,SAAN,CAAgBC,IANL;AAOnB;AACAC,IAAE,EAAE;AARe,CAAvB;;AAWAhB,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAYja,KAAtB;AAA6B;AAAclG,OAA3C,EAAoD;AACjE,MAAImhB,QAAQ,GAAG,IAAf,CADiE,CAGjE;;AACA,QAAM/F,IAAI,GAAGtZ,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACsf,MAAP,CAAc,IAAd,CAAd,EAAmCP,cAAnC,CAAb,CAJiE,CAMjE;;AACA,MAAI3a,KAAK,IAAI,aAAa,OAAOA,KAAjC,EAAwC;AACpC;AACA,QAAI,EAAEA,KAAK,YAAYmb,UAAnB,CAAJ,EAAoC;AAChCvf,YAAM,CAACC,MAAP,CAAcqZ,IAAd,EAAoBlV,KAApB;AACAA,WAAK,GAAGkV,IAAI,CAAClV,KAAL,GAAakV,IAAI,CAAClV,KAAlB,GAA0BhI,SAAlC;AACA,UAAIkd,IAAI,CAAClV,KAAT,EAAgB,OAAOkV,IAAI,CAAClV,KAAZ;AACnB,KANmC,CAQpC;;;AACA,QAAIob,MAAM,CAACC,QAAP,CAAgBrb,KAAhB,CAAJ,EAA4B;AACxBib,cAAQ,GAAGjb,KAAX;AACAkV,UAAI,CAAC5Y,MAAL,GAAc6d,KAAK,CAACW,SAAN,CAAgBQ,MAA9B;AACAtb,WAAK,GAAGhI,SAAR;AACH;AACJ,GArBgE,CAuBjE;;;AACA4D,QAAM,CAACC,MAAP,CAAcqZ,IAAd,EAAoBpb,OAApB,EAxBiE,CA0BjE;;AACA,QAAMyhB,SAAS,GAAG,IAAIpB,KAAJ,CAAUjF,IAAV,CAAlB,CA3BiE,CA6BjE;;AACA,MAAIlV,KAAK,IAAI,aAAa,OAAOA,KAAjC,EAAwC;AACpC;AACA,QAAIub,SAAS,CAACP,EAAV,CAAaQ,UAAb,CAAwBxb,KAAxB,CAAJ,EAAoC;AAChCkV,UAAI,CAAC5Y,MAAL,GAAc6d,KAAK,CAACW,SAAN,CAAgBW,IAA9B;AACAvG,UAAI,CAACwG,QAAL,GAAgB1b,KAAhB;AACAib,cAAQ,GAAGM,SAAS,CAACP,EAAV,CAAaW,YAAb,CAA0B3b,KAA1B,CAAX;AACH,KAJD,MAIO;AACH,YAAM,IAAIxC,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAaC,gBAAvB,CAAN;AACH;AACJ,GAvCgE,CAyCjE;;;AACA,QAAMC,IAAI,GAAG,IAAIvB,OAAJ,CAAYU,QAAZ,EAAsB/F,IAAtB,CAAb;;AAEA,QAAQ6G,SAAR,GAAgC5B,KAAhC,CAAQ4B,SAAR;AAAA,QAAmBC,QAAnB,GAAgC7B,KAAhC,CAAmB6B,QAAnB;;AAEA,WAASC,QAAT;AAAkB;AAAY9I,OAA9B,EAAqC;AACjC,QAAIA,KAAK,IAAI2I,IAAb,EAAmB;AACf,UAAII,IAAJ,CADe,CAEf;;AACA,UAAI,OAAO/I,KAAP,KAAiB,QAArB,EAA+B+I,IAAI,GAAGJ,IAAI,CAACG,QAAL,CAAc9I,KAAd,CAAP,CAHhB,CAIf;;AACA,UAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAK,CAACgJ,SAAb,KAA2B,WAAxD,IAAuE,OAAOhJ,KAAK,CAACiJ,MAAb,KAAwB,WAAnG,EAAgHF,IAAI,GAAGJ,IAAI,CAACG,QAAL,CAAc9I,KAAK,CAACgJ,SAApB,CAAP;;AAEhH,UAAID,IAAJ,EAAU;AACN,eAAOA,IAAP;AACH;AACJ;;AACD,WAAO,IAAP;AACH;;AAED,WAASG,OAAT,CAAiBC,OAAjB,EAA0B;AACtB,uBAAiCjC,GAAG,CAACkC,KAArC;AAAA,UAAQxC,IAAR,cAAQA,IAAR;AAAA,UAAcyC,SAAd,cAAcA,SAAd;AAAA,UAAyBC,GAAzB,cAAyBA,GAAzB,CADsB,CAEtB;;AACA,WAAO1C,IAAI,CAAC,GAAD,EAAMyC,SAAS,CAACC,GAAG,GAAGH,OAAO,CAACjD,KAAR,CAAc,IAAd,EAAoBU,IAApB,CAAyB0C,GAAzB,CAAN,GAAsCA,GAAvC,CAAf,CAAX;AACH;;AAED,SAAO;AACH;AACR;AACA;AACA;AACA;AACA;AACQC,YAAQ,EAAE;AAAU;AAAYvJ,SAAtB;AAA6B;AAAmBwJ,QAAhD,EAAsD;AAC5D,UAAIT,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;AACA,aAAQ+I,IAAI,IAAIA,IAAI,CAACU,OAAL,CAAaD,IAAb,CAAT,IAAgC,IAAvC;AACH,KAVE;;AAYH;AACR;AACA;AACA;AACA;AACA;AACA;AACQE,iBAAa,EAAE;AAAU;AAAY1J,SAAtB;AAA6B;AAAc2J,YAA3C,EAAqD;AAChE,UAAIZ,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACNA,YAAI,CAACa,YAAL,CAAkBD,QAAlB;AACH,OAFD,MAEO;AACHA,gBAAQ,CAAC,IAAD,EAAO,yBAAyB3J,KAAhC,CAAR;AACH;AACJ,KA1BE;;AA4BH;AACR;AACA;AACA;AACA;AACA;AACA;AACQ6J,cAAU,EAAE;AAAU;AAAY7J,SAAtB;AAA6B;AAAa8J,YAA1C,EAAoD;AAC5D,UAAIf,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACN,YAAI7b,IAAI,GAAG6b,IAAI,CAACU,OAAL,EAAX;;AACA,YAAIvc,IAAI,IAAIA,IAAI,CAACrB,MAAjB,EAAyB;AACrB,iBAAOqB,IAAI,CAACuV,QAAL,CAAcqH,QAAQ,IAAI,MAA1B,CAAP;AACH;AACJ;;AACD,aAAO,EAAP;AACH,KA5CE;;AA8CH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACQC,mBAAe,EAAE;AAAU;AAAY/J,SAAtB;AAA6B;AAAc2J,YAA3C;AAAqD;AAAaG,YAAlE,EAA4E;AACzF,UAAIf,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACNA,YAAI,CAACa,YAAL,CAAkB,UAAU1c,IAAV,EAAgB8c,GAAhB,EAAqB;AACnC,cAAIA,GAAJ,EAAS;AACLL,oBAAQ,CAACzc,IAAD,EAAO8c,GAAP,CAAR;AACA;AACH;;AAED,cAAI9c,IAAI,IAAIA,IAAI,CAACrB,MAAjB,EAAyB;AACrB8d,oBAAQ,CAACzc,IAAI,CAACuV,QAAL,CAAcqH,QAAQ,IAAI,MAA1B,CAAD,CAAR;AACH,WAFD,MAEO;AACHH,oBAAQ,CAAC,EAAD,CAAR;AACH;AACJ,SAXD;AAYH,OAbD,MAaO;AACHA,gBAAQ,CAAC,EAAD,CAAR;AACH;AACJ,KAxEE;;AA0EH;AACR;AACA;AACA;AACA;AACQM,cAAU,EAAE;AAAU;AAAYjK,SAAtB,EAA6B;AACrC;AACA,UAAI+I,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACNJ,YAAI,CAACuB,WAAL,CAAiBnB,IAAI,CAACC,SAAtB;AACH;AACJ,KArFE;;AAuFH;AACR;AACA;AACA;AACA;AACQmB,iBAAa,EAAE;AAAU;AAAYC,WAAtB,EAA+B;AAC1C;AACAzB,UAAI,CAACyB,OAAL,GAAeA,OAAf;AACH,KA/FE;;AAiGH;AACR;AACA;AACA;AACA;AACQC,iBAAa,EAAE,YAAY;AACvB,aAAO1B,IAAI,CAACyB,OAAL,IAAgB,EAAvB;AACH,KAxGE;;AA0GH;AACR;AACA;AACA;AACA;AACA;AACA;AACQE,sBAAkB,EAAE;AAAU;AAAYtK,SAAtB;AAA6B;AAAYoK,WAAzC,EAAkD;AAClE,UAAIrB,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACNA,YAAI,CAACqB,OAAL,GAAeA,OAAf;AACH;AACJ,KAtHE;;AAwHH;AACR;AACA;AACA;AACA;AACA;AACQG,sBAAkB,EAAE;AAAU;AAAYvK,SAAtB,EAA6B;AAC7C,UAAI+I,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACN,eAAOA,IAAI,CAACqB,OAAL,IAAgB,EAAvB;AACH;;AACD,aAAO,EAAP;AACH,KApIE;;AAsIH;AACR;AACA;AACA;AACA;AACA;AACQI,cAAU,EAAE;AAAU;AAAYxK,SAAtB;AAA6B;AAAYyK,WAAzC,EAAkD;AAC1D,UAAI1B,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACNA,YAAI,CAAC2B,OAAL,CAAaD,OAAb;AACH;AACJ,KAjJE;;AAmJH;AACR;AACA;AACA;AACA;AACA;AACA;AACQE,gBAAY,EAAE;AAAU;AAAYC,aAAtB;AAAiC;AAAazB,WAA9C;AAAuD;AAAa0B,WAApE;AAA6E;AAAYT,WAAzF,EAAkG;AAC5G,UAAIhC,SAAS,CAACP,EAAV,CAAaQ,UAAb,CAAwBuC,SAAxB,CAAJ,EAAwC;AACpC;AACAzB,eAAO,GAAGA,OAAO,GAAGD,OAAO,CAACC,OAAD,CAAV,GAAsB,EAAvC,CAFoC,CAIpC;;AACA,YAAI2B,CAAC,GAAGF,SAAS,CAAC1E,KAAV,CAAgB,IAAhB,EAAsBU,IAAtB,CAA2B,GAA3B,EAAgCV,KAAhC,CAAsC,GAAtC,EAA2CzZ,GAA3C,EAAR,CALoC,CAOpC;;AACA0c,eAAO,IAAI0B,OAAO,GAAGA,OAAH,GAAaC,CAA/B,CARoC,CAUpC;;AACA,cAAMC,KAAK,GAAG3C,SAAS,CAACP,EAAV,CAAamD,QAAb,CAAsBJ,SAAtB,CAAd,CAXoC,CAapC;;;AACA,aAAKK,OAAL,CAAa9B,OAAb,EAAsBf,SAAS,CAACP,EAAV,CAAaW,YAAb,CAA0BoC,SAA1B,CAAtB,EAA4DR,OAA5D,EAAqEW,KAArE;AACH,OAfD,MAeO;AACH,cAAM,IAAI1gB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAayC,cAAb,CAA4B/F,OAA5B,CAAoC,IAApC,EAA0CyF,SAA1C,CAAV,CAAN;AACH;AACJ,KA7KE;;AA+KH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACQO,kBAAc,EAAE;AAAU;AAAYP,aAAtB;AAAiC;AAAazB,WAA9C;AAAuD;AAAsB7c,UAA7E,EAAqF;AACjG;AACA,UAAIA,MAAM,YAAYiZ,MAAtB,EAA8B;AAC1B;AACAjZ,cAAM,GAAI,UAAU8e,EAAV,EAAc;AACpB,iBAAO,UAAU7C,QAAV,EAAoB;AACvB,mBAAO6C,EAAE,CAACC,IAAH,CAAQ9C,QAAR,CAAP;AACH,WAFD;AAGH,SAJQ,CAINjc,MAJM,CAAT;AAKH,OAPD,MAOO,IAAI,eAAe,OAAOA,MAA1B,EAAkC;AACrC;AACAA,cAAM,GAAG,YAAY;AACjB,iBAAO,IAAP;AACH,SAFD;AAGH,OAdgG,CAgBjG;;;AACA6c,aAAO,GAAGA,OAAO,GAAGD,OAAO,CAACC,OAAD,CAAV,GAAsB,EAAvC,CAjBiG,CAmBjG;;AACAyB,eAAS,GAAG1D,GAAG,CAACmC,SAAJ,CAAcuB,SAAd,CAAZ;;AAEA,UAAIxC,SAAS,CAACP,EAAV,CAAaQ,UAAb,CAAwBuC,SAAxB,CAAJ,EAAwC;AACpC,cAAMU,KAAK,GAAGlD,SAAS,CAACmD,SAAV,CAAoBX,SAApB,CAAd;AACA,cAAMY,IAAI,GAAG,IAAb;;AAEA,YAAIF,KAAK,CAACzf,MAAV,EAAkB;AACdyf,eAAK,CAACvT,OAAN,CAAc,UAAU0T,QAAV,EAAoB;AAC9B,gBAAIX,CAAC,GAAG5D,GAAG,CAACwE,QAAJ,CAAad,SAAb,EAAwBa,QAAxB,EAAkCvF,KAAlC,CAAwC,IAAxC,EAA8CU,IAA9C,CAAmD,GAAnD,CAAR,CAD8B,CACmC;;AACjE,gBAAIta,MAAM,CAACwe,CAAD,CAAV,EAAe;AACX,kBAAIa,KAAK,GAAGvD,SAAS,CAACP,EAAV,CAAamD,QAAb,CAAsBS,QAAtB,CAAZ;;AACA,kBAAIE,KAAK,CAACC,MAAN,EAAJ,EAAoB;AAChBJ,oBAAI,CAACP,OAAL,CAAa9B,OAAO,GAAG2B,CAAvB,EAA0B1C,SAAS,CAACP,EAAV,CAAaW,YAAb,CAA0BiD,QAA1B,CAA1B,EAA+D,EAA/D,EAAmEE,KAAnE;AACH,eAFD,MAEO;AACHH,oBAAI,CAACP,OAAL,CAAa9B,OAAO,GAAG2B,CAAV,GAAc,GAA3B,EAAgC7C,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAhC,EAAiD,EAAjD,EAAqDF,KAArD;AACH;AACJ;AACJ,WAVD;AAWH;AACJ,OAjBD,MAiBO;AACH,cAAM,IAAIthB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAayC,cAAb,CAA4B/F,OAA5B,CAAoC,IAApC,EAA0CyF,SAA1C,CAAV,CAAN;AACH;AACJ,KAjOE;;AAmOH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACQkB,uBAAmB,EAAE;AAAU;AAAWlB,aAArB;AAAgC;AAAajB,YAA7C;AAAuD;AAAWR,WAAlE;AAA2E;AAAoB7c,UAA/F,EAAuG;AACxH,UAAIA,MAAM,YAAYiZ,MAAtB,EAA8B;AAC1BjZ,cAAM,GAAI,UAAU8e,EAAV,EAAc;AACpB,iBAAO,UAAU7C,QAAV,EAAoB;AACvB,mBAAO6C,EAAE,CAACC,IAAH,CAAQ9C,QAAR,CAAP;AACH,WAFD;AAGH,SAJQ,CAINjc,MAJM,CAAT;AAKH,OAND,MAMO,IAAI,eAAe,OAAOA,MAA1B,EAAkC;AACrCA,cAAM,GAAG,YAAY;AACjB,iBAAO,IAAP;AACH,SAFD;AAGH,OAXuH,CAaxH;;;AACA6c,aAAO,GAAGA,OAAO,GAAGD,OAAO,CAACC,OAAD,CAAV,GAAsB,EAAvC,CAdwH,CAgBxH;;AACAyB,eAAS,GAAG1D,GAAG,CAACmC,SAAJ,CAAcuB,SAAd,CAAZ;AAEA,UAAIY,IAAI,GAAG,IAAX;AACApD,eAAS,CAACP,EAAV,CAAakE,IAAb,CAAkBnB,SAAlB,EAA6B,GAA7B,EAAkC,UAAUZ,GAAV,EAAe;AAC7C,YAAIA,GAAG,IAAIA,GAAG,CAACgC,IAAJ,KAAa,QAAxB,EAAkC;AAC9BrC,kBAAQ,CAAC9kB,SAAD,EAAYmiB,KAAK,CAACyB,MAAN,CAAayC,cAAb,CAA4B/F,OAA5B,CAAoC,IAApC,EAA0CyF,SAA1C,CAAZ,CAAR;AACH,SAFD,MAEO,IAAIZ,GAAJ,EAAS;AACZL,kBAAQ,CAAC9kB,SAAD,EAAYmlB,GAAZ,CAAR;AACH,SAFM,MAEA;AACH,cAAIsB,KAAK,GAAGlD,SAAS,CAACmD,SAAV,CAAoBX,SAApB,CAAZ;AACA,cAAIlG,CAAC,GAAG,CAAC,CAAT;;AAEA,cAAIvf,IAAI,GAAG,YAAY;AACnBuf,aAAC,IAAI,CAAL;;AACA,gBAAIA,CAAC,GAAG4G,KAAK,CAACzf,MAAd,EAAsB;AAClB,kBAAI4f,QAAQ,GAAGH,KAAK,CAAC5G,CAAD,CAApB;AACA,kBAAIoG,CAAC,GAAG5D,GAAG,CAACwE,QAAJ,CAAad,SAAb,EAAwBa,QAAxB,EAAkCvF,KAAlC,CAAwC,IAAxC,EAA8CU,IAA9C,CAAmD,GAAnD,CAAR,CAFkB,CAE+C;;AACjEkE,eAAC,GAAGA,CAAC,CACAzB,SADD,CACW,KADX,EAEClE,OAFD,CAES,kBAFT,EAE6B,EAF7B,EAGCA,OAHD,CAGS,eAHT,EAG0B,EAH1B,CAAJ,CAHkB,CAMiB;;AACnC,kBAAI7Y,MAAM,CAACwe,CAAD,CAAV,EAAe;AACX1C,yBAAS,CAACP,EAAV,CAAaoE,IAAb,CAAkBR,QAAlB,EAA4B,UAAUS,GAAV,EAAeP,KAAf,EAAsB;AAC9C,sBAAIO,GAAJ,EAASvC,QAAQ,CAAC9kB,SAAD,EAAYqnB,GAAZ,CAAR;;AACT,sBAAIP,KAAK,CAACC,MAAN,EAAJ,EAAoB;AAChBxD,6BAAS,CAACP,EAAV,CAAa0B,QAAb,CAAsBkC,QAAtB,EAAgC,UAAUU,GAAV,EAAejf,IAAf,EAAqB;AACjD,0BAAIif,GAAJ,EAAS;AACLxC,gCAAQ,CAAC9kB,SAAD,EAAYsnB,GAAZ,CAAR;AACH,uBAFD,MAEO;AACHX,4BAAI,CAACP,OAAL,CAAa9B,OAAO,GAAG2B,CAAvB,EAA0B5d,IAA1B,EAAgC,EAAhC,EAAoCye,KAApC;AACAxmB,4BAAI;AACP;AACJ,qBAPD;AAQH,mBATD,MASO;AACHqmB,wBAAI,CAACP,OAAL,CAAa9B,OAAO,GAAG2B,CAAV,GAAc,GAA3B,EAAgC7C,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAhC,EAAiD,EAAjD,EAAqDF,KAArD;AACAxmB,wBAAI;AACP;AACJ,iBAfD;AAgBH,eAjBD,MAiBO;AACHA,oBAAI;AACP;AACJ,aA3BD,MA2BO;AACHwkB,sBAAQ,CAAC,IAAD,EAAO9kB,SAAP,CAAR;AACH;AACJ,WAhCD;;AAkCAM,cAAI;AACP;AACJ,OA7CD;AA8CH,KA7SE;;AA+SH;AACR;AACA;AACA;AACA;AACA;AACA;AACQinB,yBAAqB,EAAE;AAAU;AAAWxB,aAArB;AAAgC;AAAayB,SAA7C,EAAoD;AACvE,aAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACpC,+BAA4B/jB,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB2jB,KAAlB,CAA5B;AAAA,cAAQ/f,MAAR,kBAAQA,MAAR;AAAA,cAAgB6c,OAAhB,kBAAgBA,OAAhB;;AACA,aAAK2C,mBAAL,CACIlB,SADJ,EAEI,CAACjf,IAAD,EAAOqe,GAAP,KAAe;AACX,cAAIA,GAAJ,EAASwC,MAAM,CAACxC,GAAD,CAAN;AACT,cAAIre,IAAJ,EAAU4gB,OAAO,CAAC,IAAD,CAAP;AACb,SALL,EAMIpD,OANJ,EAOI7c,MAPJ;AASH,OAXM,CAAP;AAYH,KAnUE;;AAqUH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACQ2e,WAAO,EAAE;AAAU;AAAYjC,aAAtB;AAAiC;AAAYyB,WAA7C;AAAsD;AAAYL,WAAlE;AAA2E;AAAYqC,QAAvF,EAA6F;AAClG,UAAIzM,KAAK,GAAG8I,QAAQ,CAACE,SAAD,CAApB;AACA,YAAM0D,MAAM,GAAG1M,KAAK,IAAI,IAAxB,CAFkG,CAIlG;;AACA,UAAI,CAAC0M,MAAL,EAAa;AACT1M,aAAK,GAAG,IAAImH,QAAJ,EAAR;AACAnH,aAAK,CAACgJ,SAAN,GAAkBA,SAAlB;AACH;;AACDhJ,WAAK,CAACoK,OAAN,GAAgBA,OAAO,IAAI,EAA3B;AAEA,YAAMuC,MAAM,GAAG,aAAa,OAAOF,IAApB,IAA4BA,IAAI,YAAYrE,SAAS,CAACP,EAAV,CAAa+E,KAAxE,CAXkG,CAalG;;AACA,UAAID,MAAJ,EAAY;AACR3M,aAAK,CAACiJ,MAAN,CAAahL,IAAb,GAAoBwO,IAAI,CAACI,KAAzB;AACH,OAhBiG,CAkBlG;;;AACA,UAAIC,QAAQ,GAAG9M,KAAK,CAAC+M,WAAN,GAAoB,IAApB,GAA2B,CAA1C,CAnBkG,CAmBrD;AAE7C;;AACA,UAAI,CAAC/F,KAAK,CAACgG,KAAX,EAAkB;AACd;AACA,YAAIC,IAAI,GAAGjN,KAAK,CAAC+M,WAAN,GAAoB,MAApB,GAA6B,MAAxC;;AAEA,YAAIJ,MAAJ,EAAY;AACR;AACAM,cAAI,IAAI,QAAQR,IAAI,CAACS,IAArB;AACH,SAHD,MAGO,IAAI,aAAa,OAAOT,IAAxB,EAA8B;AACjC;AACAQ,cAAI,IAAI,QAAQR,IAAhB;AACH,SAHM,MAGA;AACH;AACAQ,cAAI,IAAIjN,KAAK,CAAC+M,WAAN,GAAoB,KAApB,GAA4B,KAApC,CAFG,CAEwC;AAC9C;;AAEDD,gBAAQ,GAAG,CAACA,QAAQ,GAAIG,IAAI,IAAI,EAArB,MAA8B,CAAzC,CAfc,CAe8B;AAC/C;;AAEDjN,WAAK,CAACyM,IAAN,GAAaK,QAAb;AAEA9M,WAAK,CAAC0K,OAAN,CAAcD,OAAd;AACA,UAAI,CAACiC,MAAL,EAAa/D,IAAI,CAACwE,QAAL,CAAcnN,KAAd;AAChB,KA3XE;;AA6XH;AACR;AACA;AACA;AACA;AACQoN,cAAU,EAAE,YAAY;AACpB,aAAOzE,IAAI,GAAGA,IAAI,CAAC0E,OAAR,GAAkB,EAA7B;AACH,KApYE;;AAsYH;AACR;AACA;AACA;AACA;AACA;AACQvE,YAAQ,EAAE;AAAU;AAAYja,QAAtB,EAA4B;AAClC,aAAOia,QAAQ,CAACja,IAAD,CAAf;AACH,KA9YE;AAgZHye,iBAAa,EAAE,YAAY;AACvB,aAAO3E,IAAI,CAAC2E,aAAL,EAAP;AACH,KAlZE;AAoZHvV,WAAO,EAAE,UAAU4R,QAAV,EAAoB;AACzB,aAAOhB,IAAI,CAAC5Q,OAAL,CAAa4R,QAAb,CAAP;AACH,KAtZE;;AAwZH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACQ4D,kBAAc,EAAE;AACZ;AAAYvN,SADA;AAEZ;AAAYwN,cAFA;AAGZ;AAAaC,qBAHD;AAIZ;AAAaC,aAJD;AAKZ;AAAaC,0BALD;AAMZ;AAAaC,eAND,EAOd;AACEF,eAAS,GAAGrG,QAAQ,CAACqG,SAAD,EAAY,KAAZ,CAApB;AACAC,4BAAsB,GAAGtG,QAAQ,CAACsG,sBAAD,EAAyB,KAAzB,CAAjC;AACAF,uBAAiB,GAAGpG,QAAQ,CAACoG,iBAAD,EAAoB,IAApB,CAA5B;AACAG,iBAAW,GAAGrG,OAAO,CAACqG,WAAD,EAAcrG,OAAO,CAACoG,sBAAD,EAAyB9oB,SAAzB,CAArB,CAArB;AAEA,UAAIkkB,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI,CAAC+I,IAAL,EAAW;AACP,cAAM,IAAI1e,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAaoF,QAAvB,CAAN;AACH;;AAED,UAAI7E,SAAS,GAAGJ,SAAS,CAACG,IAAI,CAACC,SAAN,CAAzB;AAEA,UAAI8E,MAAM,GAAGjF,QAAQ,CAAC2E,UAAD,EAAaI,WAAW,IAAI,CAAC7E,IAAI,CAACgE,WAArB,GAAmCa,WAAnC,GAAiDH,iBAAiB,GAAGzE,SAAH,GAAe9B,GAAG,CAAC6G,QAAJ,CAAa/E,SAAb,CAA9F,CAArB;;AAEA,UAAID,IAAI,CAACgE,WAAT,EAAsB;AAClB,YAAIiB,QAAQ,GAAGrF,IAAI,CAACsF,gBAAL,CAAsBlF,IAAtB,CAAf;;AACAiF,gBAAQ,CAACjW,OAAT,CAAiB,UAAUmW,KAAV,EAAiB;AAC9B,cAAIA,KAAK,CAACnB,WAAV,EAAuB;AACvB,cAAItC,OAAO,GAAGyD,KAAK,CAACzE,OAAN,EAAd;;AACA,cAAI,CAACgB,OAAL,EAAc;AACV,kBAAM,IAAIpgB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAa0F,iBAAvB,CAAN;AACH;;AACD,cAAItf,IAAI,GAAG+Z,SAAS,CAACsF,KAAK,CAAClF,SAAP,CAApB;AACA,cAAIoF,SAAS,GAAGvF,QAAQ,CAAC2E,UAAD,EAAaC,iBAAiB,GAAG5e,IAAH,GAAUqY,GAAG,CAAC6G,QAAJ,CAAalf,IAAb,CAAxC,CAAxB,CAP8B,CAQ9B;;AACA,gBAAMwf,QAAQ,GAAGV,sBAAsB,GAAGO,KAAK,CAACjF,MAAN,CAAaoF,QAAhB,GAA2BxpB,SAAlE;AACAujB,mBAAS,CAACkG,WAAV,CAAsBF,SAAtB,EAAiC3D,OAAjC,EAA0CiD,SAA1C,EAAqDW,QAArD;AACH,SAXD;AAYA,eAAO,IAAP;AACH;;AAED,UAAI5D,OAAO,GAAG1B,IAAI,CAACU,OAAL,EAAd;AACA,UAAI,CAACgB,OAAL,EAAc,MAAM,IAAIpgB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAa0F,iBAAvB,CAAN;;AAEd,UAAI/F,SAAS,CAACP,EAAV,CAAaQ,UAAb,CAAwByF,MAAxB,KAAmC,CAACJ,SAAxC,EAAmD;AAC/C,cAAM,IAAIrjB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAa8F,aAAvB,CAAN;AACH,OArCH,CAsCE;;;AACA,YAAMF,QAAQ,GAAGV,sBAAsB,GAAG3N,KAAK,CAACiJ,MAAN,CAAaoF,QAAhB,GAA2BxpB,SAAlE;AACAujB,eAAS,CAACkG,WAAV,CAAsBR,MAAtB,EAA8BrD,OAA9B,EAAuCiD,SAAvC,EAAkDW,QAAlD;AAEA,aAAO,IAAP;AACH,KA1dE;;AA4dH;AACR;AACA;AACA;AACQhD,QAAI,EAAE,UAAU7B,IAAV,EAAgB;AAClB,UAAI,CAACb,IAAL,EAAW;AACP,eAAO,KAAP;AACH;;AAED,WAAK,IAAI3I,KAAT,IAAkB2I,IAAI,CAAC0E,OAAvB,EAAgC;AAC5B,YAAI;AACA,cAAIrN,KAAK,CAAC+M,WAAV,EAAuB;AACnB;AACH;;AACD,cAAItC,OAAO,GAAG9B,IAAI,CAAC0E,OAAL,CAAarN,KAAb,EAAoByJ,OAApB,CAA4BD,IAA5B,CAAd;;AACA,cAAI,CAACiB,OAAL,EAAc;AACV,mBAAO,KAAP;AACH;AACJ,SARD,CAQE,OAAOT,GAAP,EAAY;AACV,iBAAO,KAAP;AACH;AACJ;;AACD,aAAO,IAAP;AACH,KAnfE;;AAqfH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACQwE,gBAAY,EAAE;AAAU;AAAYhB,cAAtB;AAAkC;AAAaE,aAA/C;AAA0D;AAAaC,0BAAvE;AAA+F;AAAmBnE,QAAlH,EAAwH;AAClIkE,eAAS,GAAGrG,QAAQ,CAACqG,SAAD,EAAY,KAAZ,CAApB;AACAlE,UAAI,GAAGjC,OAAO,CAACoG,sBAAD,EAAyBnE,IAAzB,CAAd;AACAmE,4BAAsB,GAAGtG,QAAQ,CAACsG,sBAAD,EAAyB,KAAzB,CAAjC;;AACA,UAAI,CAAChF,IAAL,EAAW;AACP,cAAM,IAAIte,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAagG,MAAvB,CAAN;AACH;;AACD9F,UAAI,CAAC0E,OAAL,CAAatV,OAAb,CAAqB,UAAUiI,KAAV,EAAiB;AAClC,YAAIgJ,SAAS,GAAGH,QAAQ,CAAC2E,UAAD,EAAa5E,SAAS,CAAC5I,KAAK,CAACgJ,SAAN,CAAgBvG,QAAhB,EAAD,CAAtB,CAAxB;;AACA,YAAIzC,KAAK,CAAC+M,WAAV,EAAuB;AACnB3E,mBAAS,CAACsG,OAAV,CAAkB1F,SAAlB;AACA;AACH;;AACD,YAAIyB,OAAO,GAAGzK,KAAK,CAACyJ,OAAN,CAAcD,IAAd,CAAd;;AACA,YAAI,CAACiB,OAAL,EAAc;AACV,gBAAM,IAAIpgB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAa0F,iBAAvB,CAAN;AACH,SATiC,CAUlC;;;AACA,cAAME,QAAQ,GAAGV,sBAAsB,GAAG3N,KAAK,CAACiJ,MAAN,CAAaoF,QAAhB,GAA2BxpB,SAAlE;AACAujB,iBAAS,CAACkG,WAAV,CAAsBtF,SAAtB,EAAiCyB,OAAjC,EAA0CiD,SAA1C,EAAqDW,QAArD;;AACA,YAAI;AACAjG,mBAAS,CAACP,EAAV,CAAa8G,UAAb,CAAwB3F,SAAxB,EAAmChJ,KAAK,CAACiJ,MAAN,CAAahL,IAAhD,EAAsD+B,KAAK,CAACiJ,MAAN,CAAahL,IAAnE;AACH,SAFD,CAEE,OAAO+L,GAAP,EAAY;AACV,gBAAM,IAAI3f,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAa0F,iBAAvB,CAAN;AACH;AACJ,OAlBD;AAmBH,KAxhBE;;AA0hBH;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACQS,qBAAiB,EAAE;AAAU;AAAYpB,cAAtB;AAAkC;AAAaE,aAA/C;AAA0D;AAAaC,0BAAvE;AAA+F;AAAchE,YAA7G,EAAuH;AACtI,UAAI,CAACA,QAAL,EAAe;AACXA,gBAAQ,GAAG,YAAY,CAAE,CAAzB;AACH;;AACD+D,eAAS,GAAGrG,QAAQ,CAACqG,SAAD,EAAY,KAAZ,CAApB;AACA,UAAI,OAAOC,sBAAP,KAAkC,UAAlC,IAAgD,CAAChE,QAArD,EAA+DA,QAAQ,GAAGgE,sBAAX;AAC/DA,4BAAsB,GAAGtG,QAAQ,CAACsG,sBAAD,EAAyB,KAAzB,CAAjC;;AACA,UAAI,CAAChF,IAAL,EAAW;AACPgB,gBAAQ,CAAC,IAAItf,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAagG,MAAvB,CAAD,CAAR;AACA;AACH;;AAEDjB,gBAAU,GAAGtG,GAAG,CAACqF,OAAJ,CAAYiB,UAAZ,CAAb,CAZsI,CAatI;;AACA,YAAMqB,OAAO,GAAI7O,KAAD,IAAW6I,QAAQ,CAAC2E,UAAD,EAAatG,GAAG,CAACmC,SAAJ,CAAcT,SAAS,CAAC5I,KAAK,CAACgJ,SAAN,CAAgBvG,QAAhB,EAAD,CAAvB,CAAb,CAAnC;;AACA,YAAMqM,QAAQ,GAAG,CAACC,GAAD,EAAMC,IAAN,KAAe,IAAI3kB,KAAJ,CAAU0kB,GAAG,GAAG,KAAN,GAAcC,IAAd,GAAqB,GAA/B,CAAhC,CAfsI,CAiBtI;;;AACA,YAAMC,UAAU,GAAG,EAAnB;AACA,YAAMC,WAAW,GAAG,IAAIhP,GAAJ,EAApB;;AACAyI,UAAI,CAAC0E,OAAL,CAAatV,OAAb,CAAsBoX,CAAD,IAAO;AACxB,YAAIA,CAAC,CAACpC,WAAN,EAAmB;AACfkC,oBAAU,CAACvkB,IAAX,CAAgBykB,CAAhB;AACH,SAFD,MAEO;AACHD,qBAAW,CAACtnB,GAAZ,CAAgBunB,CAAhB;AACH;AACJ,OAND,EApBsI,CA4BtI;AACA;;;AACA,WAAK,MAAMnP,KAAX,IAAoBiP,UAApB,EAAgC;AAC5B,cAAMG,OAAO,GAAGP,OAAO,CAAC7O,KAAD,CAAvB,CAD4B,CAE5B;;AACA,cAAMqP,OAAO,GAAG1B,sBAAsB,GAAG3N,KAAK,CAACiJ,MAAN,CAAaoF,QAAhB,GAA2BxpB,SAAjE;;AACA,YAAI;AACAujB,mBAAS,CAACsG,OAAV,CAAkBU,OAAlB;AACA,cAAIC,OAAJ,EAAajH,SAAS,CAACP,EAAV,CAAayH,SAAb,CAAuBF,OAAvB,EAAgCC,OAAhC,EAFb,CAGA;;AACAjH,mBAAS,CAACP,EAAV,CAAa8G,UAAb,CAAwBS,OAAxB,EAAiCpP,KAAK,CAACiJ,MAAN,CAAahL,IAA9C,EAAoD+B,KAAK,CAACiJ,MAAN,CAAahL,IAAjE;AACH,SALD,CAKE,OAAOsR,EAAP,EAAW;AACT5F,kBAAQ,CAACmF,QAAQ,CAAC,yBAAD,EAA4BM,OAA5B,CAAT,CAAR;AACH;AACJ,OA1CqI,CA4CtI;;;AACA,YAAMzjB,IAAI,GAAG,MAAM;AACf,YAAIujB,WAAW,CAACM,IAAZ,KAAqB,CAAzB,EAA4B;AACxB7F,kBAAQ;AACX;AACJ,OAJD,CA7CsI,CAmDtI;;;AACA,WAAK,MAAM3J,KAAX,IAAoBkP,WAAW,CAACvV,MAAZ,EAApB,EAA0C;AACtC,cAAMqP,SAAS,GAAG9B,GAAG,CAACmC,SAAJ,CAAcT,SAAS,CAAC5I,KAAK,CAACgJ,SAAN,CAAgBvG,QAAhB,EAAD,CAAvB,CAAlB;AACA,cAAMgN,QAAQ,GAAG5G,QAAQ,CAAC2E,UAAD,EAAaxE,SAAb,CAAzB;AACAhJ,aAAK,CAAC4J,YAAN,CAAmB,UAAUa,OAAV,EAAmBiF,KAAnB,EAA0B;AACzC,cAAIA,KAAJ,EAAW;AACP/F,oBAAQ,CAAC,IAAItf,KAAJ,CAAUqlB,KAAV,CAAD,CAAR;AACA;AACH;;AACD,cAAI,CAACjF,OAAL,EAAc;AACVd,oBAAQ,CAAC,IAAItf,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAa0F,iBAAvB,CAAD,CAAR;AACH,WAFD,MAEO;AACH;AACA,kBAAME,QAAQ,GAAGV,sBAAsB,GAAG3N,KAAK,CAACiJ,MAAN,CAAaoF,QAAhB,GAA2BxpB,SAAlE;AACAujB,qBAAS,CAACuH,gBAAV,CAA2BF,QAA3B,EAAqChF,OAArC,EAA8CiD,SAA9C,EAAyDW,QAAzD,EAAmE,UAAUuB,IAAV,EAAgB;AAC/E,kBAAI,CAACA,IAAL,EAAW;AACPjG,wBAAQ,CAACmF,QAAQ,CAAC,sBAAD,EAAyBW,QAAzB,CAAT,CAAR;AACA;AACH;;AACDrH,uBAAS,CAACP,EAAV,CAAagI,MAAb,CAAoBJ,QAApB,EAA8BzP,KAAK,CAACiJ,MAAN,CAAahL,IAA3C,EAAiD+B,KAAK,CAACiJ,MAAN,CAAahL,IAA9D,EAAoE,UAAU6R,KAAV,EAAiB;AACjF,oBAAIA,KAAJ,EAAW;AACPnG,0BAAQ,CAACmF,QAAQ,CAAC,qBAAD,EAAwBW,QAAxB,CAAT,CAAR;AACA;AACH;;AACDP,2BAAW,CAACa,MAAZ,CAAmB/P,KAAnB,EALiF,CAMjF;;AACArU,oBAAI;AACP,eARD;AASH,aAdD;AAeH;AACJ,SA1BD;AA2BH,OAlFqI,CAmFtI;;;AACAA,UAAI;AACP,KAznBE;;AA2nBH;AACR;AACA;AACA;AACA;AACA;AACQqkB,YAAQ,EAAE;AAAU;AAAYC,kBAAtB;AAAsC;AAActG,YAApD,EAA8D;AACpE,UAAI5U,SAAS,CAAClJ,MAAV,KAAqB,CAAzB,EAA4B;AACxB,YAAI,OAAOokB,cAAP,KAA0B,UAA9B,EAA0C;AACtCtG,kBAAQ,GAAGsG,cAAX;AACAA,wBAAc,GAAG,EAAjB;AACH;AACJ;;AAED,UAAI,CAACA,cAAD,IAAmBlO,IAAI,CAACwG,QAA5B,EAAsC;AAClC0H,sBAAc,GAAGlO,IAAI,CAACwG,QAAtB;AACH;;AACD,UAAI,CAAC0H,cAAL,EAAqB;;AAErB,UAAIC,OAAO,GAAGvH,IAAI,CAACwH,gBAAL,EAAd;;AACA,UAAID,OAAJ,EAAa;AACT,YAAIE,EAAE,GAAGhI,SAAS,CAACkG,WAAV,CAAsB2B,cAAtB,EAAsCC,OAAtC,EAA+C,IAA/C,CAAT;AACA,YAAI,OAAOvG,QAAP,KAAoB,UAAxB,EAAoCA,QAAQ,CAAC,CAACyG,EAAD,GAAM,IAAI/lB,KAAJ,CAAU,QAAV,CAAN,GAA4B,IAA7B,EAAmC,EAAnC,CAAR;AACvC;AACJ,KAnpBE;AAqpBHgmB,mBAAe,EAAE;AAAU;AAAYJ,kBAAtB;AAAsC;AAAa5D,SAAnD,EAA0D;AACvE,8BAA4B5jB,MAAM,CAACC,MAAP,CAAc;AAAEglB,iBAAS,EAAE;AAAb,OAAd,EAAmCrB,KAAnC,CAA5B;AAAA,YAAQqB,SAAR,mBAAQA,SAAR;AAAA,YAAmB4C,IAAnB,mBAAmBA,IAAnB;;AAEA,aAAO,IAAIhE,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACpC;AACA,YAAI,CAACyD,cAAD,IAAmBlO,IAAI,CAACwG,QAA5B,EAAsC0H,cAAc,GAAGlO,IAAI,CAACwG,QAAtB;AACtC,YAAI,CAAC0H,cAAL,EAAqBzD,MAAM,CAAC,gCAAD,CAAN;AAErB,aAAK+D,eAAL,GAAuBC,IAAvB,CAA6BN,OAAD,IAAa;AACrC,gBAAMO,GAAG,GAAI9kB,IAAD,IAAWA,IAAI,GAAG4gB,OAAO,CAAC5gB,IAAD,CAAV,GAAmB6gB,MAAM,CAAC,wCAAD,CAApD;;AACApE,mBAAS,CAACuH,gBAAV,CAA2BM,cAA3B,EAA2CC,OAA3C,EAAoDxC,SAApD,EAA+D4C,IAA/D,EAAqEG,GAArE;AACH,SAHD,EAGGjE,MAHH;AAIH,OATM,CAAP;AAUH,KAlqBE;AAoqBH+D,mBAAe,EAAE,YAAY;AACzB,aAAO,IAAIjE,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACpC7D,YAAI,CAAC+H,aAAL,CAAmBnE,OAAnB,EAA4BC,MAA5B;AACH,OAFM,CAAP;AAGH,KAxqBE;;AA0qBH;AACR;AACA;AACA;AACA;AACQmE,YAAQ,EAAE;AAAU;AAAeC,aAAzB;AAAoC;AAAeC,UAAnD;AAA2D;AAAeC,eAA1E;AAAuF;AAAeC,aAAtG,EAAiH;AACvH,WAAKhjB,OAAL,GAAe,CAAf;;AACA,UAAI,OAAO6iB,SAAP,KAAqB,UAAzB,EAAqC;AACjCjI,YAAI,CAAC+H,aAAL,CAAmBE,SAAnB,EAA8BC,MAA9B,EAAsCC,WAAtC,EAAmDC,SAAnD;;AACA,eAAO,IAAP;AACH;;AACD,aAAOpI,IAAI,CAACwH,gBAAL,EAAP;AACH;AAtrBE,GAAP;AAwrBH,CA3vBD,C;;;;;;;;;;;ACnBA,IAAInJ,KAAK,GAAGC,mBAAO,CAAC,qDAAD,CAAnB;AAAA,IACIU,SAAS,GAAGX,KAAK,CAACW,SADtB;AAGA;;;AACAd,MAAM,CAACC,OAAP,GAAiB,YAAY;AACzB,MAAIkK,QAAQ,GAAG,EAAf;AAAA,MAAmB;AACfC,UAAQ,GAAG,EADf;AAAA,MACmB;AACfC,QAAM,GAAG,CAFb;AAAA,MAGIC,OAAO,GAAG,CAHd;AAAA,MAIIC,KAAK,GAAG,CAJZ;AAAA,MAKIC,IAAI,GAAG,CALX;AAAA,MAMIC,eAAe,GAAG,CANtB;AAAA,MAOIC,KAAK,GAAG,CAPZ;AAAA,MAQIC,SAAS,GAAG,CARhB;AAAA,MASIC,SAAS,GAAG,CAThB;AAAA,MAUIC,OAAO,GAAG,CAVd;AAAA,MAWIC,UAAU,GAAG,CAXjB;AAAA,MAYIC,OAAO,GAAG,CAZd;AAAA,MAaI7G,KAAK,GAAG,CAbZ;AAAA,MAcI8G,OAAO,GAAG,CAdd;AAgBAb,UAAQ,IAAIhK,KAAK,CAACgG,KAAN,GAAc,MAAd,GAAuB,MAAnC,CAjByB,CAmBzB;AACA;;AACAkE,QAAM,IAAIvJ,SAAS,CAACmK,OAApB;AAEA,MAAIC,WAAW,GAAG,EAAlB;;AAEA,WAASC,OAAT,CAAiBnN,GAAjB,EAAsB;AAClBA,OAAG,GAAG,IAAI7U,IAAJ,CAAS6U,GAAT,CAAN;AACAuM,SAAK,GACA,CAAEvM,GAAG,CAACjC,WAAJ,KAAoB,IAArB,GAA6B,IAA9B,KAAuC,EAAxC,GAA8C;AAC5CiC,OAAG,CAAChC,QAAJ,KAAiB,CAAlB,IAAwB,EADzB,GAC+B;AAC9BgC,OAAG,CAAC/B,OAAJ,MAAiB,EAFlB,GAEwB;AACxB;AACC+B,OAAG,CAAC9B,QAAJ,MAAkB,EAJnB,GAIyB;AACxB8B,OAAG,CAAC7B,UAAJ,MAAoB,CALrB,GAK0B;AACzB6B,OAAG,CAAC5B,UAAJ,MAAoB,CAPzB,CAFkB,CASW;AAChC;;AAED+O,SAAO,CAAC,CAAC,IAAIhiB,IAAJ,EAAF,CAAP;AAEA,SAAO;AACH,QAAIiiB,IAAJ,GAAW;AACP,aAAOjB,QAAP;AACH,KAHE;;AAIH,QAAIiB,IAAJ,CAASpN,GAAT,EAAc;AACVmM,cAAQ,GAAGnM,GAAX;AACH,KANE;;AAQH,QAAIxB,OAAJ,GAAc;AACV,aAAO4N,QAAP;AACH,KAVE;;AAWH,QAAI5N,OAAJ,CAAYwB,GAAZ,EAAiB;AACboM,cAAQ,GAAGpM,GAAX;AACH,KAbE;;AAeH,QAAIqN,KAAJ,GAAY;AACR,aAAOhB,MAAP;AACH,KAjBE;;AAkBH,QAAIgB,KAAJ,CAAUrN,GAAV,EAAe;AACXqM,YAAM,GAAGrM,GAAT;AACH,KApBE;;AAsBH,QAAI1b,MAAJ,GAAa;AACT,aAAOgoB,OAAP;AACH,KAxBE;;AAyBH,QAAIhoB,MAAJ,CAAW0b,GAAX,EAAgB;AACZ,cAAQA,GAAR;AACI,aAAK8C,SAAS,CAACwK,MAAf;AACI,eAAK9O,OAAL,GAAe,EAAf;;AACJ,aAAKsE,SAAS,CAACyK,QAAf;AACA;AACI,eAAK/O,OAAL,GAAe,EAAf;AALR;;AAOA8N,aAAO,GAAGtM,GAAV;AACH,KAlCE;;AAoCH,QAAI5G,IAAJ,GAAW;AACP,aAAO,IAAIjO,IAAJ,CAAS,CAAEohB,KAAK,IAAI,EAAV,GAAgB,IAAjB,IAAyB,IAAlC,EAAwC,CAAEA,KAAK,IAAI,EAAV,GAAgB,IAAjB,IAAyB,CAAjE,EAAqEA,KAAK,IAAI,EAAV,GAAgB,IAApF,EAA2FA,KAAK,IAAI,EAAV,GAAgB,IAA1G,EAAiHA,KAAK,IAAI,CAAV,GAAe,IAA/H,EAAqI,CAACA,KAAK,GAAG,IAAT,KAAkB,CAAvJ,CAAP;AACH,KAtCE;;AAuCH,QAAInT,IAAJ,CAAS4G,GAAT,EAAc;AACVmN,aAAO,CAACnN,GAAD,CAAP;AACH,KAzCE;;AA2CH,QAAIwN,GAAJ,GAAU;AACN,aAAOhB,IAAP;AACH,KA7CE;;AA8CH,QAAIgB,GAAJ,CAAQxN,GAAR,EAAa;AACTwM,UAAI,GAAG/c,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYzN,GAAZ,MAAqB,CAA5B;AACH,KAhDE;;AAkDH,QAAI0N,cAAJ,GAAqB;AACjB,aAAOjB,eAAP;AACH,KApDE;;AAqDH,QAAIiB,cAAJ,CAAmB1N,GAAnB,EAAwB;AACpByM,qBAAe,GAAGhd,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYzN,GAAZ,MAAqB,CAAvC;AACH,KAvDE;;AAyDH,QAAI2K,IAAJ,GAAW;AACP,aAAO+B,KAAP;AACH,KA3DE;;AA4DH,QAAI/B,IAAJ,CAAS3K,GAAT,EAAc;AACV0M,WAAK,GAAGjd,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYzN,GAAZ,MAAqB,CAA7B;AACH,KA9DE;;AAgEH,QAAI2N,cAAJ,GAAqB;AACjB,aAAOhB,SAAP;AACH,KAlEE;;AAmEH,QAAIgB,cAAJ,CAAmB3N,GAAnB,EAAwB;AACpB2M,eAAS,GAAG3M,GAAZ;AACH,KArEE;;AAuEH,QAAI4N,WAAJ,GAAkB;AACd,aAAOhB,SAAP;AACH,KAzEE;;AA0EH,QAAIgB,WAAJ,CAAgB5N,GAAhB,EAAqB;AACjB4M,eAAS,GAAG5M,GAAZ;AACH,KA5EE;;AA8EH,QAAI6N,aAAJ,GAAoB;AAChB,aAAOhB,OAAP;AACH,KAhFE;;AAiFH,QAAIgB,aAAJ,CAAkB7N,GAAlB,EAAuB;AACnB6M,aAAO,GAAG7M,GAAV;AACH,KAnFE;;AAqFH,QAAI8N,YAAJ,GAAmB;AACf,aAAOhB,UAAP;AACH,KAvFE;;AAwFH,QAAIgB,YAAJ,CAAiB9N,GAAjB,EAAsB;AAClB8M,gBAAU,GAAGrd,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYzN,GAAZ,MAAqB,CAAlC;AACH,KA1FE;;AA4FH,QAAI+N,MAAJ,GAAa;AACT,aAAOhB,OAAP;AACH,KA9FE;;AA+FH,QAAIgB,MAAJ,CAAW/N,GAAX,EAAgB;AACZ+M,aAAO,GAAGtd,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYzN,GAAZ,MAAqB,CAA/B;AACH,KAjGE;;AAmGH,QAAI4H,IAAJ,GAAW;AACP,aAAO1B,KAAP;AACH,KArGE;;AAsGH,QAAI0B,IAAJ,CAAS5H,GAAT,EAAc;AACVkG,WAAK,GAAGzW,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYzN,GAAZ,MAAqB,CAA7B;AACH,KAxGE;;AA0GH;AACA,QAAIwJ,QAAJ,GAAe;AACX,aAAOtD,KAAK,GAAI,CAAEA,KAAK,KAAK,CAAX,GAAgB,CAAjB,KAAuB,EAAxB,GAA8B,KAAjC,GAAyC,CAArD;AACH,KA7GE;;AA+GH,QAAI8H,MAAJ,GAAa;AACT,aAAOhB,OAAP;AACH,KAjHE;;AAkHH,QAAIgB,MAAJ,CAAWhO,GAAX,EAAgB;AACZgN,aAAO,GAAGvd,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYzN,GAAZ,MAAqB,CAA/B;AACH,KApHE;;AAsHH,QAAIiO,SAAJ,GAAgB;AACZ,aAAO,CAAC5B,MAAM,GAAG,CAAV,MAAiB,CAAxB;AACH,KAxHE;;AA0HH,QAAI6B,eAAJ,GAAsB;AAClB,aAAOpL,SAAS,CAACqL,MAAV,GAAmBxB,SAAnB,GAA+BC,SAA/B,GAA2CC,OAAlD;AACH,KA5HE;;AA8HH,QAAIuB,cAAJ,GAAqB;AACjB,aAAOpB,OAAO,GAAGlK,SAAS,CAACuL,MAApB,GAA6BnB,WAAW,CAACoB,QAAzC,GAAoDpB,WAAW,CAACqB,QAAvE;AACH,KAhIE;;AAkIH,QAAIC,UAAJ,GAAiB;AACb,aAAOtB,WAAP;AACH,KApIE;;AAsIHuB,4BAAwB,EAAE;AAAU;AAAWzmB,SAArB,EAA4B;AAClD,UAAIK,IAAI,GAAGL,KAAK,CAACgB,KAAN,CAAYgkB,OAAZ,EAAqBA,OAAO,GAAGlK,SAAS,CAACuL,MAAzC,CAAX,CADkD,CAElD;;AACA,UAAIhmB,IAAI,CAACqmB,YAAL,CAAkB,CAAlB,MAAyB5L,SAAS,CAAC6L,MAAvC,EAA+C;AAC3C,cAAM,IAAInpB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAagL,WAAvB,CAAN;AACH;;AACD1B,iBAAW,GAAG;AACV;AACA1O,eAAO,EAAEnW,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACgM,MAA5B,CAFC;AAGV;AACAzB,aAAK,EAAEhlB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACiM,MAA5B,CAJG;AAKV;AACAzqB,cAAM,EAAE+D,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACkM,MAA5B,CANE;AAOV;AACA5V,YAAI,EAAE/Q,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACmM,MAA5B,CARI;AASV;AACAzB,WAAG,EAAEnlB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACoM,MAA5B,CAVK;AAWV;AACAxB,sBAAc,EAAErlB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACqM,MAA5B,CAZN;AAaV;AACAxE,YAAI,EAAEtiB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACsM,MAA5B,CAdI;AAeV;AACAd,gBAAQ,EAAEjmB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACuM,MAA5B,CAhBA;AAiBV;AACAd,gBAAQ,EAAElmB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACwM,MAA5B;AAlBA,OAAd;AAoBH,KAhKE;AAkKHC,kBAAc,EAAE;AAAU;AAAWlnB,QAArB,EAA2B;AACvC;AACA,UAAIA,IAAI,CAACrB,MAAL,KAAgB8b,SAAS,CAACqL,MAA1B,IAAoC9lB,IAAI,CAACqmB,YAAL,CAAkB,CAAlB,MAAyB5L,SAAS,CAAC0M,MAA3E,EAAmF;AAC/E,cAAM,IAAIhqB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAa6L,WAAvB,CAAN;AACH,OAJsC,CAKvC;;;AACAtD,cAAQ,GAAG9jB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAAC4M,MAA5B,CAAX,CANuC,CAOvC;;AACAtD,cAAQ,GAAG/jB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAAC6M,MAA5B,CAAX,CARuC,CASvC;;AACAtD,YAAM,GAAGhkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAAC8M,MAA5B,CAAT,CAVuC,CAWvC;;AACAtD,aAAO,GAAGjkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAAC+M,MAA5B,CAAV,CAZuC,CAavC;;AACAtD,WAAK,GAAGlkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACgN,MAA5B,CAAR,CAduC,CAevC;;AACAtD,UAAI,GAAGnkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACiN,MAA5B,CAAP,CAhBuC,CAiBvC;;AACAtD,qBAAe,GAAGpkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACkN,MAA5B,CAAlB,CAlBuC,CAmBvC;;AACAtD,WAAK,GAAGrkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACmN,MAA5B,CAAR,CApBuC,CAqBvC;;AACAtD,eAAS,GAAGtkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACoN,MAA5B,CAAZ,CAtBuC,CAuBvC;;AACAtD,eAAS,GAAGvkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACqN,MAA5B,CAAZ,CAxBuC,CAyBvC;;AACAtD,aAAO,GAAGxkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACsN,MAA5B,CAAV,CA1BuC,CA2BvC;;AACAtD,gBAAU,GAAGzkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACuN,MAA5B,CAAb,CA5BuC,CA6BvC;;AACAtD,aAAO,GAAG1kB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACwN,MAA5B,CAAV,CA9BuC,CA+BvC;;AACApK,WAAK,GAAG7d,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACyN,MAA5B,CAAR,CAhCuC,CAiCvC;;AACAvD,aAAO,GAAG3kB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAAC0N,MAA5B,CAAV;AACH,KArME;AAuMHC,sBAAkB,EAAE,YAAY;AAC5B;AACA,UAAIpoB,IAAI,GAAG+a,MAAM,CAAC4D,KAAP,CAAalE,SAAS,CAACuL,MAAvB,CAAX,CAF4B,CAG5B;;AACAhmB,UAAI,CAACqoB,aAAL,CAAmB5N,SAAS,CAAC6L,MAA7B,EAAqC,CAArC,EAJ4B,CAK5B;;AACAtmB,UAAI,CAACsoB,aAAL,CAAmBvE,QAAnB,EAA6BtJ,SAAS,CAACgM,MAAvC,EAN4B,CAO5B;;AACAzmB,UAAI,CAACsoB,aAAL,CAAmBtE,MAAnB,EAA2BvJ,SAAS,CAACiM,MAArC,EAR4B,CAS5B;;AACA1mB,UAAI,CAACsoB,aAAL,CAAmBrE,OAAnB,EAA4BxJ,SAAS,CAACkM,MAAtC,EAV4B,CAW5B;;AACA3mB,UAAI,CAACqoB,aAAL,CAAmBnE,KAAnB,EAA0BzJ,SAAS,CAACmM,MAApC,EAZ4B,CAa5B;;AACA5mB,UAAI,CAACqoB,aAAL,CAAmBlE,IAAnB,EAAyB1J,SAAS,CAACoM,MAAnC,EAd4B,CAe5B;;AACA7mB,UAAI,CAACqoB,aAAL,CAAmBjE,eAAnB,EAAoC3J,SAAS,CAACqM,MAA9C,EAhB4B,CAiB5B;;AACA9mB,UAAI,CAACqoB,aAAL,CAAmBhE,KAAnB,EAA0B5J,SAAS,CAACsM,MAApC,EAlB4B,CAmB5B;;AACA/mB,UAAI,CAACsoB,aAAL,CAAmBhE,SAAnB,EAA8B7J,SAAS,CAACuM,MAAxC,EApB4B,CAqB5B;;AACAhnB,UAAI,CAACsoB,aAAL,CAAmB/D,SAAnB,EAA8B9J,SAAS,CAACwM,MAAxC;AACA,aAAOjnB,IAAP;AACH,KA/NE;AAiOHuoB,uBAAmB,EAAE,YAAY;AAC7B;AACA,UAAIvoB,IAAI,GAAG+a,MAAM,CAAC4D,KAAP,CAAalE,SAAS,CAACqL,MAAV,GAAmBxB,SAAnB,GAA+BC,SAA/B,GAA2CC,OAAxD,CAAX,CAF6B,CAG7B;;AACAxkB,UAAI,CAACqoB,aAAL,CAAmB5N,SAAS,CAAC0M,MAA7B,EAAqC,CAArC,EAJ6B,CAK7B;;AACAnnB,UAAI,CAACsoB,aAAL,CAAmBxE,QAAnB,EAA6BrJ,SAAS,CAAC4M,MAAvC,EAN6B,CAO7B;;AACArnB,UAAI,CAACsoB,aAAL,CAAmBvE,QAAnB,EAA6BtJ,SAAS,CAAC6M,MAAvC,EAR6B,CAS7B;;AACAtnB,UAAI,CAACsoB,aAAL,CAAmBtE,MAAnB,EAA2BvJ,SAAS,CAAC8M,MAArC,EAV6B,CAW7B;;AACAvnB,UAAI,CAACsoB,aAAL,CAAmBrE,OAAnB,EAA4BxJ,SAAS,CAAC+M,MAAtC,EAZ6B,CAa7B;;AACAxnB,UAAI,CAACqoB,aAAL,CAAmBnE,KAAnB,EAA0BzJ,SAAS,CAACgN,MAApC,EAd6B,CAe7B;;AACAznB,UAAI,CAACqoB,aAAL,CAAmBlE,IAAnB,EAAyB1J,SAAS,CAACiN,MAAnC,EAhB6B,CAiB7B;;AACA1nB,UAAI,CAACqoB,aAAL,CAAmBjE,eAAnB,EAAoC3J,SAAS,CAACkN,MAA9C,EAlB6B,CAmB7B;;AACA3nB,UAAI,CAACqoB,aAAL,CAAmBhE,KAAnB,EAA0B5J,SAAS,CAACmN,MAApC,EApB6B,CAqB7B;;AACA5nB,UAAI,CAACsoB,aAAL,CAAmBhE,SAAnB,EAA8B7J,SAAS,CAACoN,MAAxC,EAtB6B,CAuB7B;;AACA7nB,UAAI,CAACsoB,aAAL,CAAmB/D,SAAnB,EAA8B9J,SAAS,CAACqN,MAAxC,EAxB6B,CAyB7B;;AACA9nB,UAAI,CAACsoB,aAAL,CAAmB9D,OAAnB,EAA4B/J,SAAS,CAACsN,MAAtC,EA1B6B,CA2B7B;;AACA/nB,UAAI,CAACsoB,aAAL,CAAmB7D,UAAnB,EAA+BhK,SAAS,CAACuN,MAAzC,EA5B6B,CA6B7B;;AACAhoB,UAAI,CAACsoB,aAAL,CAAmB5D,OAAnB,EAA4BjK,SAAS,CAACwN,MAAtC,EA9B6B,CA+B7B;;AACAjoB,UAAI,CAACqoB,aAAL,CAAmBxK,KAAnB,EAA0BpD,SAAS,CAACyN,MAApC,EAhC6B,CAiC7B;;AACAloB,UAAI,CAACqoB,aAAL,CAAmB1D,OAAnB,EAA4BlK,SAAS,CAAC0N,MAAtC,EAlC6B,CAmC7B;;AACAnoB,UAAI,CAACwoB,IAAL,CAAU,IAAV,EAAgB/N,SAAS,CAACqL,MAA1B;AACA,aAAO9lB,IAAP;AACH,KAvQE;AAyQHiB,UAAM,EAAE,YAAY;AAChB,YAAMwnB,KAAK,GAAG,UAAUC,EAAV,EAAc;AACxB,eAAOA,EAAE,GAAG,QAAZ;AACH,OAFD;;AAIA,aAAO;AACH3D,YAAI,EAAEjB,QADH;AAEH3N,eAAO,EAAE4N,QAFN;AAGHiB,aAAK,EAAEhB,MAHJ;AAIH/nB,cAAM,EAAE6d,KAAK,CAAC6O,cAAN,CAAqB1E,OAArB,CAJL;AAKHlT,YAAI,EAAE,KAAKA,IALR;AAMHoU,WAAG,EAAE,OAAOhB,IAAI,CAAC5O,QAAL,CAAc,EAAd,EAAkBqT,WAAlB,EANT;AAOHvD,sBAAc,EAAEoD,KAAK,CAACrE,eAAD,CAPlB;AAQH9B,YAAI,EAAEmG,KAAK,CAACpE,KAAD,CARR;AASHiB,sBAAc,EAAEmD,KAAK,CAACnE,SAAD,CATlB;AAUHiB,mBAAW,EAAEkD,KAAK,CAAClE,SAAD,CAVf;AAWHiB,qBAAa,EAAEiD,KAAK,CAACjE,OAAD,CAXjB;AAYHiB,oBAAY,EAAEhB,UAZX;AAaHiB,cAAM,EAAEhB,OAbL;AAcHnF,YAAI,EAAE1B,KAdH;AAeH8H,cAAM,EAAEhB,OAfL;AAgBHkB,uBAAe,EAAE4C,KAAK,CAAChO,SAAS,CAACqL,MAAV,GAAmBxB,SAAnB,GAA+BC,SAA/B,GAA2CC,OAA5C;AAhBnB,OAAP;AAkBH,KAhSE;AAkSHjP,YAAQ,EAAE,YAAY;AAClB,aAAOhP,IAAI,CAACC,SAAL,CAAe,KAAKvF,MAAL,EAAf,EAA8B,IAA9B,EAAoC,IAApC,CAAP;AACH;AApSE,GAAP;AAsSH,CA7UD,C;;;;;;;;;;;ACJA2Y,OAAO,CAACiP,WAAR,GAAsB9O,mBAAO,CAAC,oEAAD,CAA7B;AACAH,OAAO,CAACkP,UAAR,GAAqB/O,mBAAO,CAAC,kEAAD,CAA5B,C;;;;;;;;;;;ACDA,IAAID,KAAK,GAAGC,mBAAO,CAAC,qDAAD,CAAnB;AAAA,IACIU,SAAS,GAAGX,KAAK,CAACW,SADtB;AAGA;;;AACAd,MAAM,CAACC,OAAP,GAAiB,YAAY;AACzB,MAAImP,cAAc,GAAG,CAArB;AAAA,MACIC,aAAa,GAAG,CADpB;AAAA,MAEI3E,KAAK,GAAG,CAFZ;AAAA,MAGIM,OAAO,GAAG,CAHd;AAAA,MAIIsE,cAAc,GAAG,CAJrB;AAMA,SAAO;AACH,QAAIC,WAAJ,GAAkB;AACd,aAAOH,cAAP;AACH,KAHE;;AAIH,QAAIG,WAAJ;AAAgB;AAAWvR,OAA3B,EAAgC;AAC5BoR,oBAAc,GAAGC,aAAa,GAAGrR,GAAjC;AACH,KANE;;AAQH,QAAIwR,YAAJ,GAAmB;AACf,aAAOH,aAAP;AACH,KAVE;;AAWH,QAAIG,YAAJ;AAAiB;AAAWxR,OAA5B,EAAiC;AAC7BqR,mBAAa,GAAGD,cAAc,GAAGpR,GAAjC;AACH,KAbE;;AAeH,QAAI2K,IAAJ,GAAW;AACP,aAAO+B,KAAP;AACH,KAjBE;;AAkBH,QAAI/B,IAAJ;AAAS;AAAW3K,OAApB,EAAyB;AACrB0M,WAAK,GAAG1M,GAAR;AACH,KApBE;;AAsBH,QAAIgO,MAAJ,GAAa;AACT,aAAOhB,OAAP;AACH,KAxBE;;AAyBH,QAAIgB,MAAJ;AAAW;AAAWhO,OAAtB,EAA2B;AACvBgN,aAAO,GAAGhN,GAAV;AACH,KA3BE;;AA6BH,QAAI6N,aAAJ,GAAoB;AAChB,aAAOyD,cAAP;AACH,KA/BE;;AAgCH,QAAIzD,aAAJ;AAAkB;AAAW7N,OAA7B,EAAkC;AAC9BsR,oBAAc,GAAGtR,GAAjB;AACH,KAlCE;;AAoCH,QAAIyR,cAAJ,GAAqB;AACjB,aAAO3O,SAAS,CAAC4O,MAAV,GAAmBJ,cAA1B;AACH,KAtCE;;AAwCH/B,kBAAc,EAAE;AAAU;AAAWlnB,QAArB,EAA2B;AACvC;AACA;AACA,UACI,CAACA,IAAI,CAACrB,MAAL,KAAgB8b,SAAS,CAAC4O,MAA1B,IAAoCrpB,IAAI,CAACqmB,YAAL,CAAkB,CAAlB,MAAyB5L,SAAS,CAAC6O,MAAxE,MACCtpB,IAAI,CAACrB,MAAL,GAAc8b,SAAS,CAAC8O,QAAxB,IAAoCvpB,IAAI,CAACqmB,YAAL,CAAkB,CAAlB,MAAyB5L,SAAS,CAAC+O,QADxE,CADJ,EAGE;AACE,cAAM,IAAIrsB,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAakO,WAAvB,CAAN;AACH;;AAED,UAAIzpB,IAAI,CAACqmB,YAAL,CAAkB,CAAlB,MAAyB5L,SAAS,CAAC6O,MAAvC,EAA+C;AAC3C;AACAP,sBAAc,GAAG/oB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACiP,MAA5B,CAAjB,CAF2C,CAG3C;;AACAV,qBAAa,GAAGhpB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACkP,MAA5B,CAAhB,CAJ2C,CAK3C;;AACAtF,aAAK,GAAGrkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACmP,MAA5B,CAAR,CAN2C,CAO3C;;AACAjF,eAAO,GAAG3kB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACoP,MAA5B,CAAV,CAR2C,CAS3C;;AACAZ,sBAAc,GAAGjpB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACqP,MAA5B,CAAjB;AACH,OAXD,MAWO;AACH;AACAf,sBAAc,GAAGjP,KAAK,CAACiQ,eAAN,CAAsB/pB,IAAtB,EAA4Bya,SAAS,CAACuP,QAAtC,CAAjB,CAFG,CAGH;;AACAhB,qBAAa,GAAGlP,KAAK,CAACiQ,eAAN,CAAsB/pB,IAAtB,EAA4Bya,SAAS,CAACwP,QAAtC,CAAhB,CAJG,CAKH;;AACA5F,aAAK,GAAGvK,KAAK,CAACiQ,eAAN,CAAsB/pB,IAAtB,EAA4Bya,SAAS,CAACyP,QAAtC,CAAR,CANG,CAOH;;AACAvF,eAAO,GAAG7K,KAAK,CAACiQ,eAAN,CAAsB/pB,IAAtB,EAA4Bya,SAAS,CAAC0P,QAAtC,CAAV;AAEAlB,sBAAc,GAAG,CAAjB;AACH;AACJ,KAzEE;AA2EHmB,YAAQ,EAAE,YAAY;AAClB,UAAIprB,CAAC,GAAG+b,MAAM,CAAC4D,KAAP,CAAalE,SAAS,CAAC4O,MAAV,GAAmBJ,cAAhC,CAAR,CADkB,CAElB;;AACAjqB,OAAC,CAACqpB,aAAF,CAAgB5N,SAAS,CAAC6O,MAA1B,EAAkC,CAAlC;AACAtqB,OAAC,CAACqpB,aAAF,CAAgB,CAAhB,EAAmB,CAAnB,EAJkB,CAKlB;;AACArpB,OAAC,CAACspB,aAAF,CAAgBS,cAAhB,EAAgCtO,SAAS,CAACiP,MAA1C,EANkB,CAOlB;;AACA1qB,OAAC,CAACspB,aAAF,CAAgBU,aAAhB,EAA+BvO,SAAS,CAACkP,MAAzC,EARkB,CASlB;;AACA3qB,OAAC,CAACqpB,aAAF,CAAgBhE,KAAhB,EAAuB5J,SAAS,CAACmP,MAAjC,EAVkB,CAWlB;;AACA5qB,OAAC,CAACqpB,aAAF,CAAgB1D,OAAhB,EAAyBlK,SAAS,CAACoP,MAAnC,EAZkB,CAalB;;AACA7qB,OAAC,CAACspB,aAAF,CAAgBW,cAAhB,EAAgCxO,SAAS,CAACqP,MAA1C,EAdkB,CAelB;;AACA9qB,OAAC,CAACwpB,IAAF,CAAO,GAAP,EAAY/N,SAAS,CAAC4O,MAAtB;AAEA,aAAOrqB,CAAP;AACH,KA9FE;AAgGHiC,UAAM,EAAE,YAAY;AAChB;AACA,YAAM0kB,MAAM,GAAG,UAAU+C,EAAV,EAAc2B,GAAd,EAAmB;AAC9B,YAAIC,IAAI,GAAG5B,EAAE,CAACnT,QAAH,CAAY,EAAZ,EAAgBqT,WAAhB,EAAX;;AACA,eAAO0B,IAAI,CAAC3rB,MAAL,GAAc0rB,GAArB,EAA0BC,IAAI,GAAG,MAAMA,IAAb;;AAC1B,eAAO,OAAOA,IAAd;AACH,OAJD;;AAMA,aAAO;AACHpB,mBAAW,EAAEH,cADV;AAEHI,oBAAY,EAAEH,aAFX;AAGH1G,YAAI,EAAE+B,KAAK,GAAG,QAHX;AAIHsB,cAAM,EAAEA,MAAM,CAAChB,OAAD,EAAU,CAAV,CAJX;AAKHa,qBAAa,EAAEyD;AALZ,OAAP;AAOH,KA/GE;AAiHH1T,YAAQ,EAAE,YAAY;AAClB,aAAOhP,IAAI,CAACC,SAAL,CAAe,KAAKvF,MAAL,EAAf,EAA8B,IAA9B,EAAoC,IAApC,CAAP;AACH;AAnHE,GAAP;AAqHH,CA5HD,C;;;;;;;;;;;ACJA0Y,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAW2Q,KAArB,EAA4B;AACzC,MAAIC,IAAI,GAAGzQ,mBAAO,CAAC,kBAAD,CAAlB;;AAEA,MAAIlF,IAAI,GAAG;AAAE4V,aAAS,EAAE,CAAC1R,QAAQ,CAACwR,KAAK,CAAC5rB,MAAN,GAAe,IAAhB,CAAR,GAAgC,CAAjC,IAAsC;AAAnD,GAAX;AAEA,SAAO;AACH+rB,WAAO,EAAE,YAAY;AACjB,aAAOF,IAAI,CAACG,cAAL,CAAoBJ,KAApB,EAA2B1V,IAA3B,CAAP;AACH,KAHE;AAKH+V,gBAAY,EAAE;AAAU;AAAanO,YAAvB,EAAiC;AAC3C,UAAIoO,GAAG,GAAGL,IAAI,CAACM,gBAAL,CAAsBjW,IAAtB,CAAV;AAAA,UACIkW,KAAK,GAAG,EADZ;AAAA,UAEIC,KAAK,GAAG,CAFZ;AAGAH,SAAG,CAACI,EAAJ,CAAO,MAAP,EAAe,UAAUjrB,IAAV,EAAgB;AAC3B+qB,aAAK,CAACvtB,IAAN,CAAWwC,IAAX;AACAgrB,aAAK,IAAIhrB,IAAI,CAACrB,MAAd;AACH,OAHD;AAIAksB,SAAG,CAACI,EAAJ,CAAO,KAAP,EAAc,YAAY;AACtB,YAAIC,GAAG,GAAGnQ,MAAM,CAAC4D,KAAP,CAAaqM,KAAb,CAAV;AAAA,YACIG,OAAO,GAAG,CADd;AAEAD,WAAG,CAAC1C,IAAJ,CAAS,CAAT;;AACA,aAAK,IAAIhR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuT,KAAK,CAACpsB,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACnC,cAAI4T,IAAI,GAAGL,KAAK,CAACvT,CAAD,CAAhB;AACA4T,cAAI,CAACC,IAAL,CAAUH,GAAV,EAAeC,OAAf;AACAA,iBAAO,IAAIC,IAAI,CAACzsB,MAAhB;AACH;;AACD8d,gBAAQ,IAAIA,QAAQ,CAACyO,GAAD,CAApB;AACH,OAVD;AAWAL,SAAG,CAACryB,GAAJ,CAAQ+xB,KAAR;AACH;AAzBE,GAAP;AA2BH,CAhCD,C;;;;;;;;;;;ACAA3Q,OAAO,CAAC0R,QAAR,GAAmBvR,mBAAO,CAAC,8DAAD,CAA1B;AACAH,OAAO,CAAC2R,QAAR,GAAmBxR,mBAAO,CAAC,8DAAD,CAA1B;AACAH,OAAO,CAAC4R,SAAR,GAAoBzR,mBAAO,CAAC,gEAAD,CAA3B,C;;;;;;;;;;;ACFAJ,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAW2Q,KAArB,EAA4B;AACzC,MAAIC,IAAI,GAAGzQ,mBAAO,CAAC,kBAAD,CAAlB;;AAEA,SAAO;AACH0R,WAAO,EAAE,YAAY;AACjB,aAAOjB,IAAI,CAACkB,cAAL,CAAoBnB,KAApB,CAAP;AACH,KAHE;AAKHoB,gBAAY,EAAE;AAAU;AAAalP,YAAvB,EAAiC;AAC3C,UAAIoO,GAAG,GAAGL,IAAI,CAACoB,gBAAL,EAAV;AAAA,UACIb,KAAK,GAAG,EADZ;AAAA,UAEIC,KAAK,GAAG,CAFZ;AAGAH,SAAG,CAACI,EAAJ,CAAO,MAAP,EAAe,UAAUjrB,IAAV,EAAgB;AAC3B+qB,aAAK,CAACvtB,IAAN,CAAWwC,IAAX;AACAgrB,aAAK,IAAIhrB,IAAI,CAACrB,MAAd;AACH,OAHD;AAIAksB,SAAG,CAACI,EAAJ,CAAO,KAAP,EAAc,YAAY;AACtB,YAAIC,GAAG,GAAGnQ,MAAM,CAAC4D,KAAP,CAAaqM,KAAb,CAAV;AAAA,YACIG,OAAO,GAAG,CADd;AAEAD,WAAG,CAAC1C,IAAJ,CAAS,CAAT;;AACA,aAAK,IAAIhR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuT,KAAK,CAACpsB,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACnC,cAAI4T,IAAI,GAAGL,KAAK,CAACvT,CAAD,CAAhB;AACA4T,cAAI,CAACC,IAAL,CAAUH,GAAV,EAAeC,OAAf;AACAA,iBAAO,IAAIC,IAAI,CAACzsB,MAAhB;AACH;;AACD8d,gBAAQ,IAAIA,QAAQ,CAACyO,GAAD,CAApB;AACH,OAVD;AAWAL,SAAG,CAACryB,GAAJ,CAAQ+xB,KAAR;AACH;AAzBE,GAAP;AA2BH,CA9BD,C;;;;;;;;;;;;CCEA;AACA;;AACA,iBAA2BxQ,mBAAO,CAAC,sBAAD,CAAlC;AAAA,MAAQ8R,cAAR,YAAQA,cAAR,C,CAEA;;;AACA,MAAMC,QAAQ,GAAG,IAAIC,WAAJ,CAAgB,GAAhB,EAAqBrwB,GAArB,CAAyB,CAACswB,CAAD,EAAI7G,GAAJ,KAAY;AAClD,OAAK,IAAI1N,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AACxB,QAAI,OAAO0N,GAAG,GAAG,CAAb,CAAJ,EAAqB;AACjBA,SAAG,GAAIA,GAAG,KAAK,CAAT,GAAc,UAApB;AACH,KAFD,MAEO;AACHA,SAAG,MAAM,CAAT;AACH;AACJ;;AACD,SAAOA,GAAG,KAAK,CAAf;AACH,CATgB,CAAjB,C,CAWA;;AACA,MAAM8G,IAAI,GAAG,CAACltB,CAAD,EAAIC,CAAJ,KAAUoI,IAAI,CAAC8kB,IAAL,CAAUntB,CAAV,EAAaC,CAAb,MAAoB,CAA3C,C,CAEA;;;AACA,MAAMmtB,WAAW,GAAG,CAACC,MAAD,EAASC,IAAT,KAAkB;AAClC,SAAOP,QAAQ,CAAC,CAACM,MAAM,GAAGC,IAAV,IAAkB,IAAnB,CAAR,GAAoCD,MAAM,KAAK,CAAtD;AACH,CAFD,C,CAIA;;;AACA,MAAME,OAAO,GAAG,MAAM;AAClB,MAAI,eAAe,OAAOT,cAA1B,EAA0C;AACtC,WAAOA,cAAc,CAAC9Q,MAAM,CAAC4D,KAAP,CAAa,EAAb,CAAD,CAArB;AACH,GAFD,MAEO;AACH;AACA,WAAO2N,OAAO,CAACC,IAAR,EAAP;AACH;AACJ,CAPD,C,CASA;;;AACAD,OAAO,CAACC,IAAR,GAAe,MAAM;AACjB,QAAMC,IAAI,GAAGzR,MAAM,CAAC4D,KAAP,CAAa,EAAb,CAAb;AACA,QAAM0L,GAAG,GAAGmC,IAAI,CAAC7tB,MAAjB;;AACA,OAAK,IAAI6Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6S,GAApB,EAAyB7S,CAAC,EAA1B,EAA8BgV,IAAI,CAAChV,CAAD,CAAJ,GAAWpQ,IAAI,CAACqlB,MAAL,KAAgB,GAAjB,GAAwB,IAAlC;;AAC9B,SAAOD,IAAP;AACH,CALD,C,CAOA;;;AACA,MAAMvuB,MAAM,GAAG;AACXquB;AADW,CAAf,C,CAIA;;AACA,SAASI,QAAT,CAAkBC,EAAlB,EAAsB;AAClB,QAAMrQ,IAAI,GAAGvB,MAAM,CAACC,QAAP,CAAgB2R,EAAhB,IAAsBA,EAAtB,GAA2B5R,MAAM,CAACre,IAAP,CAAYiwB,EAAZ,CAAxC;AACA,OAAKnf,IAAL,GAAY,IAAIue,WAAJ,CAAgB,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,CAAhB,CAAZ;;AACA,OAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8E,IAAI,CAAC3d,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AAClC,SAAKoV,UAAL,CAAgBtQ,IAAI,CAAC9E,CAAD,CAApB;AACH;AACJ;;AAEDkV,QAAQ,CAAC/X,SAAT,CAAmBiY,UAAnB,GAAgC,UAAUC,SAAV,EAAqB;AACjD,QAAMrf,IAAI,GAAG,KAAKA,IAAlB;AACAA,MAAI,CAAC,CAAD,CAAJ,GAAU2e,WAAW,CAAC3e,IAAI,CAAC,CAAD,CAAL,EAAUqf,SAAV,CAArB;AACArf,MAAI,CAAC,CAAD,CAAJ,IAAWA,IAAI,CAAC,CAAD,CAAJ,GAAU,IAArB;AACAA,MAAI,CAAC,CAAD,CAAJ,GAAUye,IAAI,CAACze,IAAI,CAAC,CAAD,CAAL,EAAU,SAAV,CAAJ,GAA2B,CAArC;AACAA,MAAI,CAAC,CAAD,CAAJ,GAAU2e,WAAW,CAAC3e,IAAI,CAAC,CAAD,CAAL,EAAUA,IAAI,CAAC,CAAD,CAAJ,KAAY,EAAtB,CAArB;AACA,SAAOqf,SAAP;AACH,CAPD;;AASAH,QAAQ,CAAC/X,SAAT,CAAmB1c,IAAnB,GAA0B,YAAY;AAClC,QAAM60B,CAAC,GAAG,CAAC,KAAKtf,IAAL,CAAU,CAAV,IAAe,CAAhB,MAAuB,CAAjC,CADkC,CACE;;AACpC,SAAQye,IAAI,CAACa,CAAD,EAAIA,CAAC,GAAG,CAAR,CAAJ,IAAkB,CAAnB,GAAwB,IAA/B,CAFkC,CAEG;AACxC,CAHD;;AAKA,SAASC,cAAT;AAAwB;AAAWC,GAAnC,EAAwC;AACpC;AACA,QAAMxf,IAAI,GAAG,IAAIkf,QAAJ,CAAaM,GAAb,CAAb,CAFoC,CAIpC;;AACA,SAAO;AAAU;AAAWhtB,MAArB,EAA2B;AAC9B;AACA,UAAM0M,MAAM,GAAGqO,MAAM,CAAC4D,KAAP,CAAa3e,IAAI,CAACrB,MAAlB,CAAf;AACA,QAAIoZ,GAAG,GAAG,CAAV,CAH8B,CAI9B;;AACA,SAAK,IAAIkV,CAAT,IAAcjtB,IAAd,EAAoB;AAChB;AACA;AACA0M,YAAM,CAACqL,GAAG,EAAJ,CAAN,GAAgBvK,IAAI,CAACof,UAAL,CAAgBK,CAAC,GAAGzf,IAAI,CAACvV,IAAL,EAApB,CAAhB,CAHgB,CAGkC;AACrD;;AACD,WAAOyU,MAAP;AACH,GAXD;AAYH;;AAED,SAASwgB,cAAT;AAAwB;AAAWF,GAAnC,EAAwC;AACpC;AACA,QAAMxf,IAAI,GAAG,IAAIkf,QAAJ,CAAaM,GAAb,CAAb,CAFoC,CAIpC;;AACA,SAAO;AAAU;AAAWhtB,MAArB;AAA2B;AAAW0M,QAAtC;AAA8C;AAAaqL,KAAG,GAAG,CAAjE,EAAoE;AACvE;AACA,QAAI,CAACrL,MAAL,EAAaA,MAAM,GAAGqO,MAAM,CAAC4D,KAAP,CAAa3e,IAAI,CAACrB,MAAlB,CAAT,CAF0D,CAGvE;;AACA,SAAK,IAAIsuB,CAAT,IAAcjtB,IAAd,EAAoB;AAChB,YAAM8sB,CAAC,GAAGtf,IAAI,CAACvV,IAAL,EAAV,CADgB,CACO;;AACvByU,YAAM,CAACqL,GAAG,EAAJ,CAAN,GAAgBkV,CAAC,GAAGH,CAApB,CAFgB,CAEO;;AACvBtf,UAAI,CAACof,UAAL,CAAgBK,CAAhB,EAHgB,CAGI;AACvB;;AACD,WAAOvgB,MAAP;AACH,GAVD;AAWH;;AAED,SAASygB,OAAT;AAAiB;AAAWntB,IAA5B;AAAkC;AAAW+b,MAA7C;AAAqD;AAAmBiR,GAAxE,EAA6E;AACzE,MAAI,CAAChtB,IAAD,IAAS,CAAC+a,MAAM,CAACC,QAAP,CAAgBhb,IAAhB,CAAV,IAAmCA,IAAI,CAACrB,MAAL,GAAc,EAArD,EAAyD;AACrD,WAAOoc,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP;AACH,GAHwE,CAKzE;;;AACA,QAAMyO,SAAS,GAAGL,cAAc,CAACC,GAAD,CAAhC,CANyE,CAQzE;;AACA,QAAMR,IAAI,GAAGY,SAAS,CAACptB,IAAI,CAACW,KAAL,CAAW,CAAX,EAAc,EAAd,CAAD,CAAtB,CATyE,CAWzE;;AACA,MAAI6rB,IAAI,CAAC,EAAD,CAAJ,KAAazQ,MAAM,CAACoJ,GAAP,KAAe,EAAhC,EAAoC;AAChC,UAAM,yBAAN;AACH,GAdwE,CAgBzE;;;AACA,SAAOiI,SAAS,CAACptB,IAAI,CAACW,KAAL,CAAW,EAAX,CAAD,CAAhB;AACH,C,CAED;;;AACA,SAAS0sB,OAAT,CAAiBrtB,IAAjB,EAAuB;AACnB,MAAI+a,MAAM,CAACC,QAAP,CAAgBhb,IAAhB,KAAyBA,IAAI,CAACrB,MAAL,IAAe,EAA5C,EAAgD;AAC5C;AACAV,UAAM,CAACquB,OAAP,GAAiB,YAAY;AACzB,aAAOtsB,IAAI,CAACW,KAAL,CAAW,CAAX,EAAc,EAAd,CAAP;AACH,KAFD;AAGH,GALD,MAKO,IAAIX,IAAI,KAAK,MAAb,EAAqB;AACxB;AACA/B,UAAM,CAACquB,OAAP,GAAiBA,OAAO,CAACC,IAAzB;AACH,GAHM,MAGA;AACH;AACAtuB,UAAM,CAACquB,OAAP,GAAiBA,OAAjB;AACH;AACJ;;AAED,SAASgB,OAAT;AAAiB;AAAWttB,IAA5B;AAAkC;AAAW+b,MAA7C;AAAqD;AAAmBiR,GAAxE;AAA6E;AAAYO,OAAO,GAAG,KAAnG,EAA0G;AACtG;AACA,MAAIvtB,IAAI,IAAI,IAAZ,EAAkBA,IAAI,GAAG+a,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP,CAFoF,CAGtG;;AACA,MAAI,CAAC5D,MAAM,CAACC,QAAP,CAAgBhb,IAAhB,CAAL,EAA4BA,IAAI,GAAG+a,MAAM,CAACre,IAAP,CAAYsD,IAAI,CAACuV,QAAL,EAAZ,CAAP,CAJ0E,CAMtG;;AACA,QAAMiY,SAAS,GAAGN,cAAc,CAACF,GAAD,CAAhC,CAPsG,CAStG;;AACA,QAAMR,IAAI,GAAGvuB,MAAM,CAACquB,OAAP,EAAb;AACAE,MAAI,CAAC,EAAD,CAAJ,GAAYzQ,MAAM,CAACoJ,GAAP,KAAe,EAAhB,GAAsB,IAAjC,CAXsG,CAatG;;AACA,MAAIoI,OAAJ,EAAaf,IAAI,CAAC,EAAD,CAAJ,GAAYzQ,MAAM,CAACoJ,GAAP,KAAe,EAAhB,GAAsB,IAAjC,CAdyF,CAgBtG;;AACA,QAAMzY,MAAM,GAAGqO,MAAM,CAAC4D,KAAP,CAAa3e,IAAI,CAACrB,MAAL,GAAc,EAA3B,CAAf;AACA6uB,WAAS,CAAChB,IAAD,EAAO9f,MAAP,CAAT,CAlBsG,CAoBtG;;AACA,SAAO8gB,SAAS,CAACxtB,IAAD,EAAO0M,MAAP,EAAe,EAAf,CAAhB;AACH;;AAEDiN,MAAM,CAACC,OAAP,GAAiB;AAAEuT,SAAF;AAAWG,SAAX;AAAoBD;AAApB,CAAjB,C;;;;;;;;;;;ACzKA1T,MAAM,CAACC,OAAP,GAAiB;AACb;AACAoM,QAAM,EAAa,EAFN;AAEU;AACvBM,QAAM,EAAa,UAHN;AAGkB;AAC/BG,QAAM,EAAa,CAJN;AAIS;AACtBC,QAAM,EAAa,CALN;AAKS;AACtBC,QAAM,EAAa,CANN;AAMS;AACtBC,QAAM,EAAa,EAPN;AAOU;AACvBC,QAAM,EAAa,EARN;AAQU;AACvBC,QAAM,EAAa,EATN;AASU;AACvBC,QAAM,EAAa,EAVN;AAUU;AACvBC,QAAM,EAAa,EAXN;AAWU;AACvBC,QAAM,EAAa,EAZN;AAYU;;AAEvB;AACAwG,QAAM,EAAa,UAfN;AAekB;AAC/BC,QAAM,EAAa,EAhBN;AAgBU;AACvBC,QAAM,EAAa,CAjBN;AAiBS;AACtBC,QAAM,EAAa,CAlBN;AAkBS;AACtBC,QAAM,EAAa,EAnBN;AAmBU;;AAEvB;AACA/H,QAAM,EAAa,EAtBN;AAsBU;AACvBqB,QAAM,EAAa,UAvBN;AAuBkB;AAC/BE,QAAM,EAAa,CAxBN;AAwBS;AACtBC,QAAM,EAAa,CAzBN;AAyBS;AACtBC,QAAM,EAAa,CA1BN;AA0BS;AACtBC,QAAM,EAAa,EA3BN;AA2BU;AACvBC,QAAM,EAAa,EA5BN;AA4BU;AACvBC,QAAM,EAAa,EA7BN;AA6BU;AACvBC,QAAM,EAAa,EA9BN;AA8BU;AACvBC,QAAM,EAAa,EA/BN;AA+BU;AACvBC,QAAM,EAAa,EAhCN;AAgCU;AACvBC,QAAM,EAAa,EAjCN;AAiCU;AACvBC,QAAM,EAAa,EAlCN;AAkCU;AACvBC,QAAM,EAAa,EAnCN;AAmCU;AACvBC,QAAM,EAAa,EApCN;AAoCU;AACvBC,QAAM,EAAa,EArCN;AAqCU;AACvBC,QAAM,EAAa,EAtCN;AAsCU;;AAEvB;AACAkB,QAAM,EAAa,EAzCN;AAyCU;AACvBC,QAAM,EAAa,UA1CN;AA0CkB;AAC/BI,QAAM,EAAa,CA3CN;AA2CS;AACtBC,QAAM,EAAa,EA5CN;AA4CU;AACvBC,QAAM,EAAa,EA7CN;AA6CU;AACvBC,QAAM,EAAa,EA9CN;AA8CU;AACvBC,QAAM,EAAa,EA/CN;AA+CU;AAEvBgE,UAAQ,EAAW,EAjDN;AAiDU;AACvBC,UAAQ,EAAW,UAlDN;AAkDkB;AAC/BC,YAAU,EAAS,CAnDN;AAmDS;AACtBC,UAAQ,EAAW,CApDN;AAoDS;AACtBC,eAAa,EAAM,EArDN;AAqDU;AAEvB1E,UAAQ,EAAW,UAvDN;AAuDkB;AAC/BD,UAAQ,EAAW,EAxDN;AAwDU;AACvB4E,WAAS,EAAU,EAzDN;AAyDU;AACvBC,WAAS,EAAU,CA1DN;AA0DS;AACtBC,UAAQ,EAAW,EA3DN;AA2DU;AACvBC,UAAQ,EAAW,EA5DN;AA4DU;AACvBC,UAAQ,EAAW,EA7DN;AA6DU;AACvBC,aAAW,EAAQ,EA9DN;AA8DU;AACvBxE,UAAQ,EAAW,EA/DN;AA+DU;AACvBC,UAAQ,EAAW,EAhEN;AAgEU;AACvBwE,WAAS,EAAU,EAjEN;AAiEU;AACvBtE,UAAQ,EAAW,EAlEN;AAkEU;AACvBuE,YAAU,EAAS,EAnEN;AAmEU;;AAEvB;AACAzJ,QAAM,EAAa,CAtEN;AAsES;AACtB0J,QAAM,EAAa,CAvEN;AAuES;AACtBC,UAAQ,EAAW,CAxEN;AAwES;AACtBC,UAAQ,EAAW,CAzEN;AAyES;AACtBC,UAAQ,EAAW,CA1EN;AA0ES;AACtBC,UAAQ,EAAW,CA3EN;AA2ES;AACtBC,UAAQ,EAAW,CA5EN;AA4ES;AACtB;AACA9J,UAAQ,EAAW,CA9EN;AA8ES;AACtB+J,mBAAiB,EAAE,CA/EN;AA+ES;AACtBC,QAAM,EAAa,EAhFN;AAgFS;AACtB;AACAC,OAAK,EAAc,EAlFN;AAkFU;AACvB;AACAC,MAAI,EAAe,EApFN;AAoFU;AACvB;AACAC,WAAS,EAAU,EAtFN;AAsFU;AACvBC,UAAQ,EAAW,EAvFN;AAuFU;AACvBC,aAAW,EAAQ,EAxFN;AAwFU;;AAEvB;AACA;AACAC,SAAO,EAAY,CA5FN;AA4FY;AACzBC,WAAS,EAAU,CA7FN;AA6FY;AACzBC,WAAS,EAAU,CA9FN;AA8FY;AACzBC,UAAQ,EAAW,CA/FN;AA+FY;AACzBC,SAAO,EAAY,EAhGN;AAgGY;AACzBC,WAAS,EAAU,EAjGN;AAiGY;AACzBC,SAAO,EAAY,EAlGN;AAkGY;AACA;AACzBlL,SAAO,EAAY,IApGN;AAoGY;AACA;AACA;AACA;AACzBmL,SAAO,EAAY,IAxGN;AAwGY;;AAEzB;AACA3U,MAAI,EAAe,CA3GN;AA4GbH,QAAM,EAAa,CA5GN;AA6GbP,MAAI,EAAe,CA7GN;;AA+Gb;AACAsV,OAAK,EAAc,CAhHN;AAiHbC,SAAO,EAAY,CAjHN;;AAmHb;AACAC,UAAQ,EAAW,MApHN;AAqHbC,WAAS,EAAU,MArHN;AAsHbC,QAAM,EAAa,MAtHN;AAuHbC,QAAM,EAAa,MAvHN;AAwHbC,SAAO,EAAY,MAxHN;AAyHbC,YAAU,EAAS,MAzHN;AA0HbC,SAAO,EAAY,MA1HN;AA2HbC,SAAO,EAAY,MA3HN;AA4HbC,UAAQ,EAAW,MA5HN;AA6HbC,eAAa,EAAM,MA7HN;AA8HbC,kBAAgB,EAAG,MA9HN;AA+HbC,kBAAgB,EAAG,MA/HN;AAgIbC,cAAY,EAAO,MAhIN;AAiIbC,eAAa,EAAM,MAjIN;AAkIbC,kBAAgB,EAAG,MAlIN;AAmIbC,SAAO,EAAY,MAnIN;AAoIbC,SAAO,EAAY,MApIN;AAqIbC,WAAS,EAAU,MArIN;AAuIbC,gBAAc,EAAK,UAvIN;AAwIbC,gBAAc,EAAK,MAxIN;AAyIbC,kBAAgB,EAAG,CAzIN;AA0IbC,gBAAc,EAAK,CA1IN;AA2IbC,cAAY,EAAO,EA3IN;AA4IbC,cAAY,EAAO;AA5IN,CAAjB,C;;;;;;;;;;;ACAA9X,MAAM,CAACC,OAAP,GAAiB;AACb;AACA2M,aAAW,EAAE,oCAFA;AAGba,aAAW,EAAE,oCAHA;AAIbqC,aAAW,EAAE,oCAJA;;AAMb;AACAiI,SAAO,EAAE,uBAPI;AAQbC,SAAO,EAAE,uBARI;AASbC,iBAAe,EAAE,gCATJ;AAUbC,gBAAc,EAAE,wCAVH;;AAYb;AACAC,YAAU,EAAE,mDAbC;AAcbC,kBAAgB,EAAE,4EAdL;AAebC,eAAa,EAAE,4EAfF;AAgBbC,oBAAkB,EAAE,6EAhBP;AAiBbC,sBAAoB,EAAE,8EAjBT;AAkBbC,kBAAgB,EAAE,wEAlBL;AAmBbC,sBAAoB,EAAE,wEAnBT;AAoBbC,mBAAiB,EAAE,8EApBN;AAqBbC,qBAAmB,EAAE,6DArBR;AAsBbC,oBAAkB,EAAE,yCAtBP;;AAwBb;AACAtR,mBAAiB,EAAE,4BAzBN;AA0BbI,eAAa,EAAE,4BA1BF;AA2BbE,QAAM,EAAE,wBA3BK;AA4BbZ,UAAQ,EAAE,qBA5BG;AA6Bb6R,yBAAuB,EAAE,iCA7BZ;AA8BbxU,gBAAc,EAAE,oBA9BH;AA+BbyU,iBAAe,EAAE,iBA/BJ;AAgCbjX,kBAAgB,EAAE,kBAhCL;AAiCbkX,gBAAc,EAAE;AAjCH,CAAjB,C;;;;;;;;;;;ACAA,MAAM/X,EAAE,GAAGZ,mBAAO,CAAC,+DAAD,CAAP,CAAwBA,OAAxB,EAAX;;AACA,MAAMC,GAAG,GAAGD,mBAAO,CAAC,kBAAD,CAAnB;;AAEAY,EAAE,CAACQ,UAAH,GAAgBR,EAAE,CAACQ,UAAH,IAAiBnB,GAAG,CAACmB,UAArC;;AAEAxB,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAW+Y,IAArB,EAA2B;AACxC,MAAIC,KAAK,GAAGD,IAAI,IAAI,EAApB;AAAA,MACIE,IAAI,GAAGC,OAAO,EADlB;AAAA,MAEIC,KAAK,GAAG,IAFZ;;AAIA,WAASD,OAAT,GAAmB;AACf,WAAO;AACHE,eAAS,EAAE,KADR;AAEHC,cAAQ,EAAE,KAFP;AAGHC,YAAM,EAAE,KAHL;AAIHC,gBAAU,EAAE,KAJT;AAKHxT,WAAK,EAAE,CALJ;AAMHyT,WAAK,EAAE;AANJ,KAAP;AAQH;;AAED,MAAIR,KAAK,IAAIjY,EAAE,CAACQ,UAAH,CAAcyX,KAAd,CAAb,EAAmC;AAC/BG,SAAK,GAAGpY,EAAE,CAACmD,QAAH,CAAY8U,KAAZ,CAAR;AACAC,QAAI,CAACG,SAAL,GAAiBD,KAAK,CAAClT,WAAN,EAAjB;AACAgT,QAAI,CAAClT,KAAL,GAAaoT,KAAK,CAACpT,KAAnB;AACAkT,QAAI,CAACO,KAAL,GAAaL,KAAK,CAACK,KAAnB;AACAP,QAAI,CAACM,UAAL,GAAkB,CAAC,QAAQJ,KAAK,CAAC/S,IAAf,MAAyB,CAA3C,CAL+B,CAKe;;AAC9C6S,QAAI,CAACI,QAAL,GAAgB,CAAC,QAAQF,KAAK,CAAC/S,IAAf,MAAyB,CAAzC,CAN+B,CAMa;;AAC5C6S,QAAI,CAACK,MAAL,GAAclZ,GAAG,CAAC6G,QAAJ,CAAa+R,KAAb,EAAoB,CAApB,MAA2B,GAAzC;AACH,GARD,MAQO;AACHS,WAAO,CAACC,IAAR,CAAa,mBAAmBV,KAAhC;AACH;;AAED,SAAO;AACH,QAAII,SAAJ,GAAgB;AACZ,aAAOH,IAAI,CAACG,SAAZ;AACH,KAHE;;AAKH,QAAIO,QAAJ,GAAe;AACX,aAAOV,IAAI,CAACI,QAAZ;AACH,KAPE;;AASH,QAAIC,MAAJ,GAAa;AACT,aAAOL,IAAI,CAACK,MAAZ;AACH,KAXE;;AAaH,QAAIvT,KAAJ,GAAY;AACR,aAAOkT,IAAI,CAAClT,KAAZ;AACH,KAfE;;AAiBH,QAAIyT,KAAJ,GAAY;AACR,aAAOP,IAAI,CAACO,KAAZ;AACH,KAnBE;;AAqBH,QAAID,UAAJ,GAAiB;AACb,aAAON,IAAI,CAACM,UAAZ;AACH,KAvBE;;AAyBHK,oBAAgB,EAAE,YAAY,CAAE,CAzB7B;AA2BHC,oBAAgB,EAAE,YAAY,CAAE,CA3B7B;AA6BHxyB,UAAM,EAAE,YAAY;AAChB,aAAO;AACH0xB,YAAI,EAAEC,KADH;AAEH/S,mBAAW,EAAEgT,IAAI,CAACG,SAFf;AAGHU,kBAAU,EAAEb,IAAI,CAACI,QAHd;AAIHU,gBAAQ,EAAEd,IAAI,CAACK,MAJZ;AAKHU,oBAAY,EAAEf,IAAI,CAACM,UALhB;AAMHU,aAAK,EAAEhB,IAAI,CAAClT,KANT;AAOHmU,aAAK,EAAEjB,IAAI,CAACO;AAPT,OAAP;AASH,KAvCE;AAyCH7d,YAAQ,EAAE,YAAY;AAClB,aAAOhP,IAAI,CAACC,SAAL,CAAe,KAAKvF,MAAL,EAAf,EAA8B,IAA9B,EAAoC,IAApC,CAAP;AACH;AA3CE,GAAP;AA6CH,CAzED,C;;;;;;;;;;;ACLA2Y,OAAO,CAACG,OAAR,GAAkB,YAAY;AAC1B,MAAI,OAAOga,OAAP,KAAmB,QAAnB,IAA+BA,OAAO,CAACC,QAAvC,IAAmDD,OAAO,CAACC,QAAR,CAAiB,UAAjB,CAAvD,EAAqF;AACjF,QAAI;AACA,YAAMC,UAAU,GAAGla,mBAAO,CAAC,qIAAD,CAA1B;;AACA,UAAIxe,MAAM,CAACiS,IAAP,CAAYymB,UAAZ,EAAwBt1B,MAAxB,GAAiC,CAArC,EAAwC;AACpC,eAAOs1B,UAAP;AACH;AACJ,KALD,CAKE,OAAOhS,CAAP,EAAU,CAAE;AACjB;;AACD,SAAOlI,mBAAO,CAAC,cAAD,CAAd;AACH,CAVD,C;;;;;;;;;;;ACAAJ,MAAM,CAACC,OAAP,GAAiBG,mBAAO,CAAC,qDAAD,CAAxB;AACAJ,MAAM,CAACC,OAAP,CAAea,SAAf,GAA2BV,mBAAO,CAAC,6DAAD,CAAlC;AACAJ,MAAM,CAACC,OAAP,CAAe2B,MAAf,GAAwBxB,mBAAO,CAAC,uDAAD,CAA/B;AACAJ,MAAM,CAACC,OAAP,CAAesa,QAAf,GAA0Bna,mBAAO,CAAC,qDAAD,CAAjC,C;;;;;;;;;;;ACHA,MAAMoa,OAAO,GAAGpa,mBAAO,CAAC,+DAAD,CAAP,CAAwBA,OAAxB,EAAhB;;AACA,MAAMC,GAAG,GAAGD,mBAAO,CAAC,kBAAD,CAAnB;;AACA,MAAMU,SAAS,GAAGV,mBAAO,CAAC,6DAAD,CAAzB;;AACA,MAAM+F,KAAK,GAAG,OAAOiU,OAAP,KAAmB,QAAnB,IAA+B,YAAYA,OAAO,CAACK,QAAjE;;AAEA,MAAMC,MAAM,GAAI3mB,GAAD,IAASA,GAAG,IAAI,OAAOA,GAAP,KAAe,QAA9C,C,CAEA;;;AACA,MAAM4mB,QAAQ,GAAG,IAAIvI,WAAJ,CAAgB,GAAhB,EAAqBrwB,GAArB,CAAyB,CAACswB,CAAD,EAAIiB,CAAJ,KAAU;AAChD,OAAK,IAAIH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AACxB,QAAI,CAACG,CAAC,GAAG,CAAL,MAAY,CAAhB,EAAmB;AACfA,OAAC,GAAG,aAAcA,CAAC,KAAK,CAAxB;AACH,KAFD,MAEO;AACHA,OAAC,MAAM,CAAP;AACH;AACJ;;AACD,SAAOA,CAAC,KAAK,CAAb;AACH,CATgB,CAAjB,C,CAWA;;AAEA,SAASnT,KAAT,CAAejF,IAAf,EAAqB;AACjB,OAAKuH,GAAL,GAAWpC,GAAG,CAACoC,GAAf;AACA,OAAKzB,EAAL,GAAUwZ,OAAV;;AAEA,MAAIE,MAAM,CAACxf,IAAD,CAAV,EAAkB;AACd;AACA,QAAIwf,MAAM,CAACxf,IAAI,CAAC8F,EAAN,CAAN,IAAmB,OAAO9F,IAAI,CAAC8F,EAAL,CAAQmD,QAAf,KAA4B,UAAnD,EAA+D;AAC3D,WAAKnD,EAAL,GAAU9F,IAAI,CAAC8F,EAAf;AACH;AACJ;AACJ;;AAEDhB,MAAM,CAACC,OAAP,GAAiBE,KAAjB,C,CAEA;;AAEAA,KAAK,CAACnF,SAAN,CAAgB6M,OAAhB,GAA0B;AAAU;AAAW+S,MAArB,EAA6B;AACnD,QAAMjW,IAAI,GAAG,IAAb,CADmD,CAGnD;;AACA,WAASkW,SAAT;AAAmB;AAAWC,OAA9B,EAAqC;AACjC,QAAIC,YAAY,GAAGD,KAAK,CAACzb,KAAN,CAAYsF,IAAI,CAAClC,GAAjB,EAAsB,CAAtB,CAAnB;AACAqY,SAAK,CAACzb,KAAN,CAAYsF,IAAI,CAAClC,GAAjB,EAAsBvR,OAAtB,CAA8B,UAAUlJ,IAAV,EAAgB;AAC1C,UAAI,CAACA,IAAD,IAASA,IAAI,CAACsV,MAAL,CAAY,CAAC,CAAb,EAAgB,CAAhB,MAAuB,GAApC,EAAyC;AACzCyd,kBAAY,IAAIpW,IAAI,CAAClC,GAAL,GAAWza,IAA3B;AACA,UAAIod,IAAJ;;AACA,UAAI;AACAA,YAAI,GAAGT,IAAI,CAAC3D,EAAL,CAAQmD,QAAR,CAAiB4W,YAAjB,CAAP;AACH,OAFD,CAEE,OAAOzS,CAAP,EAAU;AACR3D,YAAI,CAAC3D,EAAL,CAAQ6Z,SAAR,CAAkBE,YAAlB;AACH;;AACD,UAAI3V,IAAI,IAAIA,IAAI,CAACL,MAAL,EAAZ,EAA2B,MAAMnD,MAAM,CAACqW,eAAP,CAAuB3Z,OAAvB,CAA+B,IAA/B,EAAqCyc,YAArC,CAAN;AAC9B,KAVD;AAWH;;AAEDF,WAAS,CAACD,MAAD,CAAT;AACH,CApBD;;AAsBAza,KAAK,CAACnF,SAAN,CAAgByM,WAAhB,GAA8B;AAAU;AAAWuR,IAArB;AAA2B;AAAWpV,OAAtC;AAA+C;AAAYiD,SAA3D;AAAsE;AAAWjB,IAAjF,EAAuF;AACjH,QAAMjB,IAAI,GAAG,IAAb;;AACA,MAAIA,IAAI,CAAC3D,EAAL,CAAQQ,UAAR,CAAmBwX,IAAnB,CAAJ,EAA8B;AAC1B,QAAI,CAACnS,SAAL,EAAgB,OAAO,KAAP,CADU,CACI;;AAE9B,QAAIzB,IAAI,GAAGT,IAAI,CAAC3D,EAAL,CAAQmD,QAAR,CAAiB6U,IAAjB,CAAX;;AACA,QAAI5T,IAAI,CAACc,WAAL,EAAJ,EAAwB;AACpB,aAAO,KAAP;AACH;AACJ;;AACD,MAAI0U,MAAM,GAAGva,GAAG,CAAC2a,OAAJ,CAAYhC,IAAZ,CAAb;;AACA,MAAI,CAACrU,IAAI,CAAC3D,EAAL,CAAQQ,UAAR,CAAmBoZ,MAAnB,CAAL,EAAiC;AAC7BjW,QAAI,CAACkD,OAAL,CAAa+S,MAAb;AACH;;AAED,MAAIK,EAAJ;;AACA,MAAI;AACAA,MAAE,GAAGtW,IAAI,CAAC3D,EAAL,CAAQka,QAAR,CAAiBlC,IAAjB,EAAuB,GAAvB,EAA4B,GAA5B,CAAL,CADA,CACuC;AAC1C,GAFD,CAEE,OAAO1Q,CAAP,EAAU;AACR3D,QAAI,CAAC3D,EAAL,CAAQyH,SAAR,CAAkBuQ,IAAlB,EAAwB,GAAxB;AACAiC,MAAE,GAAGtW,IAAI,CAAC3D,EAAL,CAAQka,QAAR,CAAiBlC,IAAjB,EAAuB,GAAvB,EAA4B,GAA5B,CAAL;AACH;;AACD,MAAIiC,EAAJ,EAAQ;AACJ,QAAI;AACAtW,UAAI,CAAC3D,EAAL,CAAQma,SAAR,CAAkBF,EAAlB,EAAsBrX,OAAtB,EAA+B,CAA/B,EAAkCA,OAAO,CAAC5e,MAA1C,EAAkD,CAAlD;AACH,KAFD,SAEU;AACN2f,UAAI,CAAC3D,EAAL,CAAQoa,SAAR,CAAkBH,EAAlB;AACH;AACJ;;AACDtW,MAAI,CAAC3D,EAAL,CAAQyH,SAAR,CAAkBuQ,IAAlB,EAAwBpT,IAAI,IAAI,GAAhC;AACA,SAAO,IAAP;AACH,CA/BD;;AAiCAzF,KAAK,CAACnF,SAAN,CAAgB8N,gBAAhB,GAAmC;AAAU;AAAWkQ,IAArB;AAA2B;AAAWpV,OAAtC;AAA+C;AAAYiD,SAA3D;AAAsE;AAAWjB,IAAjF;AAAuF;AAAa9C,QAApG,EAA8G;AAC7I,MAAI,OAAO8C,IAAP,KAAgB,UAApB,EAAgC;AAC5B9C,YAAQ,GAAG8C,IAAX;AACAA,QAAI,GAAG5nB,SAAP;AACH;;AAED,QAAM2mB,IAAI,GAAG,IAAb;AAEAA,MAAI,CAAC3D,EAAL,CAAQqa,MAAR,CAAerC,IAAf,EAAqB,UAAUsC,KAAV,EAAiB;AAClC,QAAIA,KAAK,IAAI,CAACzU,SAAd,EAAyB,OAAO/D,QAAQ,CAAC,KAAD,CAAf;AAEzB6B,QAAI,CAAC3D,EAAL,CAAQoE,IAAR,CAAa4T,IAAb,EAAmB,UAAU7V,GAAV,EAAeiC,IAAf,EAAqB;AACpC,UAAIkW,KAAK,IAAIlW,IAAI,CAACc,WAAL,EAAb,EAAiC;AAC7B,eAAOpD,QAAQ,CAAC,KAAD,CAAf;AACH;;AAED,UAAI8X,MAAM,GAAGva,GAAG,CAAC2a,OAAJ,CAAYhC,IAAZ,CAAb;AACArU,UAAI,CAAC3D,EAAL,CAAQqa,MAAR,CAAeT,MAAf,EAAuB,UAAUS,MAAV,EAAkB;AACrC,YAAI,CAACA,MAAL,EAAa1W,IAAI,CAACkD,OAAL,CAAa+S,MAAb;AAEbjW,YAAI,CAAC3D,EAAL,CAAQkE,IAAR,CAAa8T,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,EAA6B,UAAU7V,GAAV,EAAe8X,EAAf,EAAmB;AAC5C,cAAI9X,GAAJ,EAAS;AACLwB,gBAAI,CAAC3D,EAAL,CAAQua,KAAR,CAAcvC,IAAd,EAAoB,GAApB,EAAyB,YAAY;AACjCrU,kBAAI,CAAC3D,EAAL,CAAQkE,IAAR,CAAa8T,IAAb,EAAmB,GAAnB,EAAwB,GAAxB,EAA6B,UAAU7V,GAAV,EAAe8X,EAAf,EAAmB;AAC5CtW,oBAAI,CAAC3D,EAAL,CAAQwa,KAAR,CAAcP,EAAd,EAAkBrX,OAAlB,EAA2B,CAA3B,EAA8BA,OAAO,CAAC5e,MAAtC,EAA8C,CAA9C,EAAiD,YAAY;AACzD2f,sBAAI,CAAC3D,EAAL,CAAQya,KAAR,CAAcR,EAAd,EAAkB,YAAY;AAC1BtW,wBAAI,CAAC3D,EAAL,CAAQua,KAAR,CAAcvC,IAAd,EAAoBpT,IAAI,IAAI,GAA5B,EAAiC,YAAY;AACzC9C,8BAAQ,CAAC,IAAD,CAAR;AACH,qBAFD;AAGH,mBAJD;AAKH,iBAND;AAOH,eARD;AASH,aAVD;AAWH,WAZD,MAYO,IAAImY,EAAJ,EAAQ;AACXtW,gBAAI,CAAC3D,EAAL,CAAQwa,KAAR,CAAcP,EAAd,EAAkBrX,OAAlB,EAA2B,CAA3B,EAA8BA,OAAO,CAAC5e,MAAtC,EAA8C,CAA9C,EAAiD,YAAY;AACzD2f,kBAAI,CAAC3D,EAAL,CAAQya,KAAR,CAAcR,EAAd,EAAkB,YAAY;AAC1BtW,oBAAI,CAAC3D,EAAL,CAAQua,KAAR,CAAcvC,IAAd,EAAoBpT,IAAI,IAAI,GAA5B,EAAiC,YAAY;AACzC9C,0BAAQ,CAAC,IAAD,CAAR;AACH,iBAFD;AAGH,eAJD;AAKH,aAND;AAOH,WARM,MAQA;AACH6B,gBAAI,CAAC3D,EAAL,CAAQua,KAAR,CAAcvC,IAAd,EAAoBpT,IAAI,IAAI,GAA5B,EAAiC,YAAY;AACzC9C,sBAAQ,CAAC,IAAD,CAAR;AACH,aAFD;AAGH;AACJ,SA1BD;AA2BH,OA9BD;AA+BH,KArCD;AAsCH,GAzCD;AA0CH,CAlDD;;AAoDA3C,KAAK,CAACnF,SAAN,CAAgB0J,SAAhB,GAA4B;AAAU;AAAWsU,IAArB,EAA2B;AACnD,QAAMrU,IAAI,GAAG,IAAb;;AAEA,WAAS+W,QAAT;AAAkB;AAAWC,KAA7B;AAAkC;AAAWC,SAA7C;AAAsD;AAAYC,WAAlE,EAA6E;AACzE,QAAI,OAAOD,OAAP,KAAmB,SAAvB,EAAkC;AAC9BC,eAAS,GAAGD,OAAZ;AACAA,aAAO,GAAG59B,SAAV;AACH;;AACD,QAAI89B,KAAK,GAAG,EAAZ;AACAnX,QAAI,CAAC3D,EAAL,CAAQ+a,WAAR,CAAoBJ,GAApB,EAAyBzqB,OAAzB,CAAiC,UAAUiX,IAAV,EAAgB;AAC7C,UAAI6Q,IAAI,GAAG3Y,GAAG,CAACN,IAAJ,CAAS4b,GAAT,EAAcxT,IAAd,CAAX;AAEA,UAAIxD,IAAI,CAAC3D,EAAL,CAAQmD,QAAR,CAAiB6U,IAAjB,EAAuB9S,WAAvB,MAAwC2V,SAA5C,EAAuDC,KAAK,GAAGA,KAAK,CAACE,MAAN,CAAaN,QAAQ,CAAC1C,IAAD,EAAO4C,OAAP,EAAgBC,SAAhB,CAArB,CAAR;;AAEvD,UAAI,CAACD,OAAD,IAAYA,OAAO,CAACpX,IAAR,CAAawU,IAAb,CAAhB,EAAoC;AAChC8C,aAAK,CAACj4B,IAAN,CAAWwc,GAAG,CAACmC,SAAJ,CAAcwW,IAAd,KAAuBrU,IAAI,CAAC3D,EAAL,CAAQmD,QAAR,CAAiB6U,IAAjB,EAAuB9S,WAAvB,KAAuCvB,IAAI,CAAClC,GAA5C,GAAkD,EAAzE,CAAX;AACH;AACJ,KARD;AASA,WAAOqZ,KAAP;AACH;;AAED,SAAOJ,QAAQ,CAAC1C,IAAD,EAAOh7B,SAAP,EAAkB,IAAlB,CAAf;AACH,CAtBD;;AAwBAmiB,KAAK,CAACnF,SAAN,CAAgBihB,aAAhB,GAAgC,YAAY,CAAE,CAA9C;;AAEA9b,KAAK,CAACnF,SAAN,CAAgBkhB,aAAhB,GAAgC,YAAY,CAAE,CAA9C,C,CAEA;AAEA;;;AACA/b,KAAK,CAACqS,WAAN,GAAoB,UAAUhH,GAAV,EAAe2Q,IAAf,EAAqB;AACrC,SAAOxB,QAAQ,CAAC,CAACnP,GAAG,GAAG2Q,IAAP,IAAe,IAAhB,CAAR,GAAiC3Q,GAAG,KAAK,CAAhD;AACH,CAFD;;AAIArL,KAAK,CAACic,KAAN,GAAc,UAAU7K,GAAV,EAAe;AACzB,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzBA,OAAG,GAAGnQ,MAAM,CAACre,IAAP,CAAYwuB,GAAZ,EAAiB,MAAjB,CAAN;AACH,GAHwB,CAIzB;;;AACA,MAAI,CAACoJ,QAAQ,CAAC31B,MAAd,EAAsBq3B,WAAW;AAEjC,MAAI3L,GAAG,GAAGa,GAAG,CAACvsB,MAAd;AACA,MAAIwmB,GAAG,GAAG,CAAC,CAAX;;AACA,OAAK,IAAI8Q,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG5L,GAAxB,GAA+BlF,GAAG,GAAGrL,KAAK,CAACqS,WAAN,CAAkBhH,GAAlB,EAAuB+F,GAAG,CAAC+K,GAAG,EAAJ,CAA1B,CAAN,CATN,CAUzB;;;AACA,SAAO,CAAC9Q,GAAD,KAAS,CAAhB;AACH,CAZD;;AAcArL,KAAK,CAAC6O,cAAN,GAAuB;AAAU;AAAW1sB,MAArB,EAA6B;AAChD,UAAQA,MAAR;AACI,SAAKwe,SAAS,CAACwK,MAAf;AACI,aAAO,aAAahpB,MAAb,GAAsB,GAA7B;;AACJ,SAAKwe,SAAS,CAACyK,QAAf;AACI,aAAO,eAAejpB,MAAf,GAAwB,GAA/B;;AACJ;AACI,aAAO,kBAAkBA,MAAlB,GAA2B,GAAlC;AANR;AAQH,CATD,C,CAWA;;;AACA6d,KAAK,CAAC4B,SAAN,GAAkB;AAAU;AAAWiX,IAArB,EAA2B;AACzC,MAAI,CAACA,IAAL,EAAW,OAAO,EAAP,CAD8B,CAEzC;;AACA,MAAIuD,UAAU,GAAGlc,GAAG,CAACkC,KAAJ,CAAUC,SAAV,CAAoB,MAAMwW,IAAI,CAAC3Z,KAAL,CAAW,IAAX,EAAiBU,IAAjB,CAAsB,GAAtB,CAA1B,CAAjB;AACA,SAAOM,GAAG,CAACN,IAAJ,CAAS,GAAT,EAAcwc,UAAd,CAAP;AACH,CALD,C,CAOA;;;AACApc,KAAK,CAAC6B,QAAN,GAAiB;AAAU;AAAWwa,MAArB;AAA6B;AAAWx0B,IAAxC,EAA8C;AAC3Dw0B,QAAM,GAAGnc,GAAG,CAACqF,OAAJ,CAAYrF,GAAG,CAACmC,SAAJ,CAAcga,MAAd,CAAZ,CAAT;AACA,MAAIpL,KAAK,GAAGppB,IAAI,CAACqX,KAAL,CAAW,GAAX,CAAZ;;AACA,OAAK,IAAIxB,CAAC,GAAG,CAAR,EAAW4e,CAAC,GAAGrL,KAAK,CAACpsB,MAA1B,EAAkC6Y,CAAC,GAAG4e,CAAtC,EAAyC5e,CAAC,EAA1C,EAA8C;AAC1C,QAAImb,IAAI,GAAG3Y,GAAG,CAACmC,SAAJ,CAAcnC,GAAG,CAACN,IAAJ,CAASyc,MAAT,EAAiBpL,KAAK,CAACpqB,KAAN,CAAY6W,CAAZ,EAAe4e,CAAf,EAAkB1c,IAAlB,CAAuBM,GAAG,CAACoC,GAA3B,CAAjB,CAAd,CAAX;;AACA,QAAIuW,IAAI,CAAChsB,OAAL,CAAawvB,MAAb,MAAyB,CAA7B,EAAgC;AAC5B,aAAOxD,IAAP;AACH;AACJ;;AACD,SAAO3Y,GAAG,CAACmC,SAAJ,CAAcnC,GAAG,CAACN,IAAJ,CAASyc,MAAT,EAAiBnc,GAAG,CAAC6G,QAAJ,CAAalf,IAAb,CAAjB,CAAd,CAAP;AACH,CAVD,C,CAYA;;;AACAmY,KAAK,CAAC2J,QAAN,GAAiB,SAASA,QAAT;AAAkB;AAA+B9jB,KAAjD,EAAwD;AACrE,MAAIob,MAAM,CAACC,QAAP,CAAgBrb,KAAhB,CAAJ,EAA4B;AACxB,WAAOA,KAAP;AACH,GAFD,MAEO,IAAIA,KAAK,YAAYmb,UAArB,EAAiC;AACpC,WAAOC,MAAM,CAACre,IAAP,CAAYiD,KAAZ,CAAP;AACH,GAFM,MAEA;AACH;AACA,WAAO,OAAOA,KAAP,KAAiB,QAAjB,GAA4Bob,MAAM,CAACre,IAAP,CAAYiD,KAAZ,EAAmB,MAAnB,CAA5B,GAAyDob,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAhE;AACH;AACJ,CATD;;AAWA7E,KAAK,CAACiQ,eAAN,GAAwB;AAAU;AAAWsM,MAArB;AAA6B;AAAQ34B,KAArC,EAA4C;AAChE,MAAIiD,KAAK,GAAGoa,MAAM,CAACre,IAAP,CAAY25B,MAAM,CAAC11B,KAAP,CAAajD,KAAb,EAAoBA,KAAK,GAAG,CAA5B,CAAZ,CAAZ;AACAiD,OAAK,CAAC21B,MAAN;AAEA,SAAOvd,QAAQ,CAAE,KAAIpY,KAAK,CAAC4U,QAAN,CAAe,KAAf,CAAsB,EAA5B,CAAf;AACH,CALD;;AAOAuE,KAAK,CAACgG,KAAN,GAAcA,KAAd,C,CAAqB;;AACrBhG,KAAK,CAACwa,QAAN,GAAiBA,QAAjB,C;;;;;;;;;;;ACrPA,IAAIxa,KAAK,GAAGC,mBAAO,CAAC,oDAAD,CAAnB;AAAA,IACIwc,OAAO,GAAGxc,mBAAO,CAAC,0DAAD,CADrB;AAAA,IAEIU,SAAS,GAAGX,KAAK,CAACW,SAFtB;AAAA,IAGI+b,OAAO,GAAGzc,mBAAO,CAAC,0DAAD,CAHrB;;AAKAJ,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAWja,KAArB,EAA4B;AACzC,MAAI82B,YAAY,GAAG,IAAIF,OAAO,CAAC1N,WAAZ,EAAnB;AAAA,MACI6N,UAAU,GAAG3b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CADjB;AAAA,MAEIgY,QAAQ,GAAG5b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAFf;AAAA,MAGIiY,YAAY,GAAG,KAHnB;AAAA,MAIIC,gBAAgB,GAAG,IAJvB;AAAA,MAKIC,MAAM,GAAG/b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CALb;;AAOA,WAASoY,wBAAT,GAAoC;AAChC,QAAI,CAACp3B,KAAD,IAAU,CAACob,MAAM,CAACC,QAAP,CAAgBrb,KAAhB,CAAf,EAAuC;AACnC,aAAOob,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP;AACH;;AACD8X,gBAAY,CAACrQ,wBAAb,CAAsCzmB,KAAtC;;AACA,WAAOA,KAAK,CAACgB,KAAN,CAAY81B,YAAY,CAAC1Q,cAAzB,EAAyC0Q,YAAY,CAAC1Q,cAAb,GAA8B0Q,YAAY,CAACpR,cAApF,CAAP;AACH;;AAED,WAAS2R,OAAT,CAAiBh3B,IAAjB,EAAuB;AACnB;AACA,QAAI,CAACy2B,YAAY,CAACzR,KAAb,GAAqB,GAAtB,MAA+B,GAAnC,EAAwC;AACpC,UAAIlL,KAAK,CAACic,KAAN,CAAY/1B,IAAZ,MAAsBy2B,YAAY,CAACtQ,UAAb,CAAwBhB,GAAlD,EAAuD;AACnD,eAAO,KAAP;AACH;AACJ,KAJD,MAIO,CACH;AACA;AACA;AACH;;AACD,WAAO,IAAP;AACH;;AAED,WAAS8R,UAAT;AAAoB;AAAYC,OAAhC;AAAuC;AAAaza,UAApD;AAA8D;AAAmBH,MAAjF,EAAuF;AACnF,QAAI,OAAOG,QAAP,KAAoB,WAApB,IAAmC,OAAOya,KAAP,KAAiB,QAAxD,EAAkE;AAC9D5a,UAAI,GAAG4a,KAAP;AACAA,WAAK,GAAG,KAAK,CAAb;AACH;;AACD,QAAIN,YAAJ,EAAkB;AACd,UAAIM,KAAK,IAAIza,QAAb,EAAuB;AACnBA,gBAAQ,CAAC1B,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAD,EAAkB7E,KAAK,CAACyB,MAAN,CAAaiX,uBAA/B,CAAR,CADmB,CAC8C;AACpE;;AACD,aAAOzX,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP;AACH;;AAED,QAAIwY,cAAc,GAAGJ,wBAAwB,EAA7C;;AAEA,QAAII,cAAc,CAACx4B,MAAf,KAA0B,CAA9B,EAAiC;AAC7B;AACA,UAAIu4B,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAAC0a,cAAD,CAAR;AACvB,aAAOA,cAAP;AACH;;AAED,QAAIV,YAAY,CAAC7Q,SAAjB,EAA4B;AACxB,UAAI,aAAa,OAAOtJ,IAApB,IAA4B,CAACvB,MAAM,CAACC,QAAP,CAAgBsB,IAAhB,CAAjC,EAAwD;AACpD,cAAM,IAAInf,KAAJ,CAAU,0CAAV,CAAN;AACH;;AACDg6B,oBAAc,GAAGX,OAAO,CAAChL,SAAR,CAAkB2B,OAAlB,CAA0BgK,cAA1B,EAA0CV,YAA1C,EAAwDna,IAAxD,CAAjB;AACH;;AAED,QAAItc,IAAI,GAAG+a,MAAM,CAAC4D,KAAP,CAAa8X,YAAY,CAACnU,IAA1B,CAAX;;AAEA,YAAQmU,YAAY,CAACx6B,MAArB;AACI,WAAK6d,KAAK,CAACW,SAAN,CAAgBwK,MAArB;AACIkS,sBAAc,CAAC9L,IAAf,CAAoBrrB,IAApB;;AACA,YAAI,CAACg3B,OAAO,CAACh3B,IAAD,CAAZ,EAAoB;AAChB,cAAIk3B,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAACzc,IAAD,EAAO8Z,KAAK,CAACyB,MAAN,CAAaoW,OAApB,CAAR,CADP,CAC6C;;AAC7D,gBAAM,IAAIx0B,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAaoW,OAAvB,CAAN;AACH,SAHD,MAGO;AACH;AACA,cAAIuF,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAACzc,IAAD,CAAR;AACvB,iBAAOA,IAAP;AACH;;AACL,WAAK8Z,KAAK,CAACW,SAAN,CAAgByK,QAArB;AACI,YAAIkS,QAAQ,GAAG,IAAIZ,OAAO,CAACjL,QAAZ,CAAqB4L,cAArB,CAAf;;AACA,YAAI,CAACD,KAAL,EAAY;AACR,gBAAMxqB,MAAM,GAAG0qB,QAAQ,CAAC3L,OAAT,CAAiBzrB,IAAjB,CAAf;AACA0M,gBAAM,CAAC2e,IAAP,CAAYrrB,IAAZ,EAAkB,CAAlB;;AACA,cAAI,CAACg3B,OAAO,CAACh3B,IAAD,CAAZ,EAAoB;AAChB,kBAAM,IAAI7C,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAaoW,OAAb,GAAuB,GAAvB,GAA6B+E,UAAU,CAACnhB,QAAX,EAAvC,CAAN;AACH;;AACD,iBAAOvV,IAAP;AACH,SAPD,MAOO;AACHo3B,kBAAQ,CAACzL,YAAT,CAAsB,UAAUjf,MAAV,EAAkB;AACpCA,kBAAM,CAAC2e,IAAP,CAAY3e,MAAZ,EAAoB,CAApB;;AACA,gBAAI+P,QAAJ,EAAc;AACV,kBAAI,CAACua,OAAO,CAACtqB,MAAD,CAAZ,EAAsB;AAClB+P,wBAAQ,CAAC/P,MAAD,EAASoN,KAAK,CAACyB,MAAN,CAAaoW,OAAtB,CAAR,CADkB,CACsB;AAC3C,eAFD,MAEO;AACHlV,wBAAQ,CAAC/P,MAAD,CAAR;AACH;AACJ;AACJ,WATD;AAUH;;AACD;;AACJ;AACI,YAAIwqB,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAAC1B,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAD,EAAkB7E,KAAK,CAACyB,MAAN,CAAasW,cAA/B,CAAR;AACvB,cAAM,IAAI10B,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAasW,cAAvB,CAAN;AAnCR;AAqCH;;AAED,WAASwF,QAAT;AAAkB;AAAYH,OAA9B;AAAqC;AAAaza,UAAlD,EAA4D;AACxD,QAAI,CAAC,CAACoa,gBAAD,IAAqB,CAACA,gBAAgB,CAACl4B,MAAxC,KAAmDoc,MAAM,CAACC,QAAP,CAAgBrb,KAAhB,CAAvD,EAA+E;AAC3E;AACA,UAAIu3B,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAACsa,wBAAwB,EAAzB,CAAR;AACvB,aAAOA,wBAAwB,EAA/B;AACH;;AAED,QAAIF,gBAAgB,CAACl4B,MAAjB,IAA2B,CAACi4B,YAAhC,EAA8C;AAC1C,UAAIO,cAAJ,CAD0C,CAE1C;;AACA,cAAQV,YAAY,CAACx6B,MAArB;AACI,aAAK6d,KAAK,CAACW,SAAN,CAAgBwK,MAArB;AACIwR,sBAAY,CAACpR,cAAb,GAA8BoR,YAAY,CAACnU,IAA3C;AAEA6U,wBAAc,GAAGpc,MAAM,CAAC4D,KAAP,CAAakY,gBAAgB,CAACl4B,MAA9B,CAAjB;AACAk4B,0BAAgB,CAACxL,IAAjB,CAAsB8L,cAAtB;AAEA,cAAID,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAAC0a,cAAD,CAAR;AACvB,iBAAOA,cAAP;;AACJ;AACA,aAAKrd,KAAK,CAACW,SAAN,CAAgByK,QAArB;AACI,cAAIoS,QAAQ,GAAG,IAAId,OAAO,CAAClL,QAAZ,CAAqBuL,gBAArB,CAAf;;AACA,cAAI,CAACK,KAAL,EAAY;AACR,gBAAIK,QAAQ,GAAGD,QAAQ,CAAC5M,OAAT,EAAf;AACA+L,wBAAY,CAACpR,cAAb,GAA8BkS,QAAQ,CAAC54B,MAAvC;AACA,mBAAO44B,QAAP;AACH,WAJD,MAIO;AACHD,oBAAQ,CAAC1M,YAAT,CAAsB,UAAU5qB,IAAV,EAAgB;AAClCm3B,4BAAc,GAAGpc,MAAM,CAAC4D,KAAP,CAAa3e,IAAI,CAACrB,MAAlB,CAAjB;AACA83B,0BAAY,CAACpR,cAAb,GAA8BrlB,IAAI,CAACrB,MAAnC;AACAqB,kBAAI,CAACqrB,IAAL,CAAU8L,cAAV;AACA1a,sBAAQ,IAAIA,QAAQ,CAAC0a,cAAD,CAApB;AACH,aALD;AAMH;;AACDG,kBAAQ,GAAG,IAAX;AACA;AAzBR;AA2BH,KA9BD,MA8BO,IAAIJ,KAAK,IAAIza,QAAb,EAAuB;AAC1BA,cAAQ,CAAC1B,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAD,CAAR;AACH,KAFM,MAEA;AACH,aAAO5D,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP;AACH;AACJ;;AAED,WAAS6Y,YAAT,CAAsBnB,MAAtB,EAA8B1Q,MAA9B,EAAsC;AAClC,WAAO,CAAC0Q,MAAM,CAAChQ,YAAP,CAAoBV,MAAM,GAAG,CAA7B,KAAmC,CAApC,IAAyC0Q,MAAM,CAAChQ,YAAP,CAAoBV,MAApB,CAAhD;AACH;;AAED,WAAS8R,UAAT,CAAoBz3B,IAApB,EAA0B;AACtB,QAAI2lB,MAAM,GAAG,CAAb;AACA,QAAI+R,SAAJ,EAAepV,IAAf,EAAqB8I,IAArB;;AACA,WAAOzF,MAAM,GAAG3lB,IAAI,CAACrB,MAArB,EAA6B;AACzB+4B,eAAS,GAAG13B,IAAI,CAACwmB,YAAL,CAAkBb,MAAlB,CAAZ;AACAA,YAAM,IAAI,CAAV;AACArD,UAAI,GAAGtiB,IAAI,CAACwmB,YAAL,CAAkBb,MAAlB,CAAP;AACAA,YAAM,IAAI,CAAV;AACAyF,UAAI,GAAGprB,IAAI,CAACW,KAAL,CAAWglB,MAAX,EAAmBA,MAAM,GAAGrD,IAA5B,CAAP;AACAqD,YAAM,IAAIrD,IAAV;;AACA,UAAI7H,SAAS,CAACyV,QAAV,KAAuBwH,SAA3B,EAAsC;AAClCC,qCAA6B,CAACvM,IAAD,CAA7B;AACH;AACJ;AACJ,GAhKwC,CAkKzC;;;AACA,WAASuM,6BAAT,CAAuC33B,IAAvC,EAA6C;AACzC,QAAIsiB,IAAJ,EAAU+C,cAAV,EAA0BM,MAA1B,EAAkCF,YAAlC;;AAEA,QAAIzlB,IAAI,CAACrB,MAAL,IAAe8b,SAAS,CAAC8W,cAA7B,EAA6C;AACzCjP,UAAI,GAAGkV,YAAY,CAACx3B,IAAD,EAAOya,SAAS,CAAC6W,gBAAjB,CAAnB;;AACA,UAAImF,YAAY,CAACnU,IAAb,KAAsB7H,SAAS,CAAC2W,cAApC,EAAoD;AAChDqF,oBAAY,CAACnU,IAAb,GAAoBA,IAApB;AACH;AACJ;;AACD,QAAItiB,IAAI,CAACrB,MAAL,IAAe8b,SAAS,CAAC+W,YAA7B,EAA2C;AACvCnM,oBAAc,GAAGmS,YAAY,CAACx3B,IAAD,EAAOya,SAAS,CAAC8W,cAAjB,CAA7B;;AACA,UAAIkF,YAAY,CAACpR,cAAb,KAAgC5K,SAAS,CAAC2W,cAA9C,EAA8D;AAC1DqF,oBAAY,CAACpR,cAAb,GAA8BA,cAA9B;AACH;AACJ;;AACD,QAAIrlB,IAAI,CAACrB,MAAL,IAAe8b,SAAS,CAACgX,YAA7B,EAA2C;AACvC9L,YAAM,GAAG6R,YAAY,CAACx3B,IAAD,EAAOya,SAAS,CAAC+W,YAAjB,CAArB;;AACA,UAAIiF,YAAY,CAAC9Q,MAAb,KAAwBlL,SAAS,CAAC2W,cAAtC,EAAsD;AAClDqF,oBAAY,CAAC9Q,MAAb,GAAsBA,MAAtB;AACH;AACJ;;AACD,QAAI3lB,IAAI,CAACrB,MAAL,IAAe8b,SAAS,CAACgX,YAAV,GAAyB,CAA5C,EAA+C;AAC3ChM,kBAAY,GAAGzlB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACgX,YAA5B,CAAf;;AACA,UAAIgF,YAAY,CAAChR,YAAb,KAA8BhL,SAAS,CAAC4W,cAA5C,EAA4D;AACxDoF,oBAAY,CAAChR,YAAb,GAA4BA,YAA5B;AACH;AACJ;AACJ;;AAED,SAAO;AACH,QAAI3J,SAAJ,GAAgB;AACZ,aAAO4a,UAAU,CAACnhB,QAAX,EAAP;AACH,KAHE;;AAIH,QAAIqiB,YAAJ,GAAmB;AACf,aAAOlB,UAAP;AACH,KANE;;AAOH,QAAI5a,SAAJ,CAAcnE,GAAd,EAAmB;AACf+e,gBAAU,GAAG5c,KAAK,CAAC2J,QAAN,CAAe9L,GAAf,CAAb;AACA,UAAIkgB,QAAQ,GAAGnB,UAAU,CAACA,UAAU,CAAC/3B,MAAX,GAAoB,CAArB,CAAzB;AACAi4B,kBAAY,GAAGiB,QAAQ,KAAK,EAAb,IAAmBA,QAAQ,KAAK,EAA/C;AACApB,kBAAY,CAACnR,cAAb,GAA8BoR,UAAU,CAAC/3B,MAAzC;AACH,KAZE;;AAcH,QAAIm5B,KAAJ,GAAY;AACR,aAAOhB,MAAP;AACH,KAhBE;;AAiBH,QAAIgB,KAAJ,CAAUngB,GAAV,EAAe;AACXmf,YAAM,GAAGnf,GAAT;AACA8e,kBAAY,CAAClR,WAAb,GAA2B5N,GAAG,CAAChZ,MAA/B;AACA84B,gBAAU,CAAC9f,GAAD,CAAV;AACH,KArBE;;AAuBH,QAAIuF,OAAJ,GAAc;AACV,aAAOyZ,QAAQ,CAACphB,QAAT,EAAP;AACH,KAzBE;;AA0BH,QAAI2H,OAAJ,CAAYvF,GAAZ,EAAiB;AACbgf,cAAQ,GAAG7c,KAAK,CAAC2J,QAAN,CAAe9L,GAAf,CAAX;AACA8e,kBAAY,CAACjR,aAAb,GAA6BmR,QAAQ,CAACh4B,MAAtC;AACH,KA7BE;;AA+BH,QAAIgD,IAAJ,GAAW;AACP,UAAIo2B,CAAC,GAAGrB,UAAU,CAACnhB,QAAX,EAAR;;AACA,aAAOqhB,YAAY,GACbmB,CAAC,CACI9gB,MADL,CACY8gB,CAAC,CAACp5B,MAAF,GAAW,CADvB,EAEKqa,KAFL,CAEW,GAFX,EAGKzZ,GAHL,EADa,GAKbw4B,CAAC,CAAC/e,KAAF,CAAQ,GAAR,EAAazZ,GAAb,EALN;AAMH,KAvCE;;AAwCH,QAAIsgB,WAAJ,GAAkB;AACd,aAAO+W,YAAP;AACH,KA1CE;;AA4CHoB,qBAAiB,EAAE,YAAY;AAC3B,aAAOX,QAAQ,CAAC,KAAD,EAAQ,IAAR,CAAf;AACH,KA9CE;AAgDHY,0BAAsB,EAAE;AAAU;AAAaxb,YAAvB,EAAiC;AACrD4a,cAAQ,CAAC,IAAD,EAAO5a,QAAP,CAAR;AACH,KAlDE;AAoDHe,WAAO,EAAE,UAAUtlB,KAAV,EAAiB;AACtB2+B,sBAAgB,GAAG/c,KAAK,CAAC2J,QAAN,CAAevrB,KAAf,CAAnB;;AACA,UAAI,CAAC0+B,YAAD,IAAiBC,gBAAgB,CAACl4B,MAAtC,EAA8C;AAC1C83B,oBAAY,CAACnU,IAAb,GAAoBuU,gBAAgB,CAACl4B,MAArC;AACA83B,oBAAY,CAACx6B,MAAb,GAAsB6d,KAAK,CAACW,SAAN,CAAgByK,QAAtC;AACAuR,oBAAY,CAACtR,GAAb,GAAmBrL,KAAK,CAACic,KAAN,CAAY79B,KAAZ,CAAnB;AACAu+B,oBAAY,CAACyB,OAAb,GAAuB,IAAvB;AACH,OALD,MAKO;AACH;AACAzB,oBAAY,CAACx6B,MAAb,GAAsB6d,KAAK,CAACW,SAAN,CAAgBwK,MAAtC;AACH;AACJ,KA/DE;AAiEH1I,WAAO,EAAE,UAAUD,IAAV,EAAgB;AACrB,UAAIma,YAAY,CAACyB,OAAjB,EAA0B;AACtB,eAAOrB,gBAAP;AACH,OAFD,MAEO;AACH,eAAOI,UAAU,CAAC,KAAD,EAAQ,IAAR,EAAc3a,IAAd,CAAjB;AACH;AACJ,KAvEE;AAyEHI,gBAAY,EAAE;AAAU;AAAaD,YAAvB,EAAiCH,IAAjC,EAAuC;AACjD,UAAIma,YAAY,CAACyB,OAAjB,EAA0B;AACtBzb,gBAAQ,CAACoa,gBAAD,CAAR;AACH,OAFD,MAEO;AACHI,kBAAU,CAAC,IAAD,EAAOxa,QAAP,EAAiBH,IAAjB,CAAV;AACH;AACJ,KA/EE;;AAiFH,QAAIiD,IAAJ,CAASA,IAAT,EAAe;AACXkX,kBAAY,CAAClX,IAAb,GAAoBA,IAApB;AACH,KAnFE;;AAoFH,QAAIA,IAAJ,GAAW;AACP,aAAOkX,YAAY,CAAClX,IAApB;AACH,KAtFE;;AAwFH,QAAIxD,MAAJ;AAAW;AAAW/b,QAAtB,EAA4B;AACxBy2B,kBAAY,CAACvP,cAAb,CAA4BlnB,IAA5B;AACH,KA1FE;;AA4FH,QAAI+b,MAAJ,GAAa;AACT,aAAO0a,YAAP;AACH,KA9FE;;AAgGH0B,cAAU,EAAE,YAAY;AACpB;AACA,UAAIpc,MAAM,GAAG0a,YAAY,CAAClO,mBAAb,EAAb;;AACA,UAAI6P,MAAM,GAAGte,KAAK,CAACW,SAAN,CAAgBqL,MAA7B,CAHoB,CAIpB;;AACA4Q,gBAAU,CAACrL,IAAX,CAAgBtP,MAAhB,EAAwBqc,MAAxB;;AACAA,YAAM,IAAI1B,UAAU,CAAC/3B,MAArB,CANoB,CAOpB;;AACA,UAAI83B,YAAY,CAAClR,WAAjB,EAA8B;AAC1BuR,cAAM,CAACzL,IAAP,CAAYtP,MAAZ,EAAoBqc,MAApB;;AACAA,cAAM,IAAI3B,YAAY,CAAClR,WAAvB;AACH,OAXmB,CAYpB;;;AACA,UAAIkR,YAAY,CAACjR,aAAjB,EAAgC;AAC5BmR,gBAAQ,CAACtL,IAAT,CAActP,MAAd,EAAsBqc,MAAtB;AACH;;AACD,aAAOrc,MAAP;AACH,KAjHE;AAmHH9a,UAAM,EAAE,YAAY;AAChB,YAAMwnB,KAAK,GAAG,UAAUC,EAAV,EAAc;AACxB,eAAO,OAAQA,EAAE,IAAIA,EAAE,CAAC/pB,MAAH,GAAY,eAAnB,IAAuC,MAA9C,IAAwD,GAA/D;AACH,OAFD;;AAIA,aAAO;AACHmd,iBAAS,EAAE,KAAKA,SADb;AAEHna,YAAI,EAAE,KAAKA,IAFR;AAGHub,eAAO,EAAE,KAAKA,OAHX;AAIH2C,mBAAW,EAAE,KAAKA,WAJf;AAKH9D,cAAM,EAAE0a,YAAY,CAACx1B,MAAb,EALL;AAMHk2B,sBAAc,EAAE1O,KAAK,CAAC9oB,KAAD,CANlB;AAOHK,YAAI,EAAEyoB,KAAK,CAACoO,gBAAD;AAPR,OAAP;AASH,KAjIE;AAmIHthB,YAAQ,EAAE,YAAY;AAClB,aAAOhP,IAAI,CAACC,SAAL,CAAe,KAAKvF,MAAL,EAAf,EAA8B,IAA9B,EAAoC,IAApC,CAAP;AACH;AArIE,GAAP;AAuIH,CAvUD,C;;;;;;;;;;;ACLA,MAAMgZ,QAAQ,GAAGF,mBAAO,CAAC,sDAAD,CAAxB;;AACA,MAAMwc,OAAO,GAAGxc,mBAAO,CAAC,0DAAD,CAAvB;;AACA,MAAMD,KAAK,GAAGC,mBAAO,CAAC,oDAAD,CAArB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAgBgB,QAA1B;AAAoC;AAAcnhB,OAAlD,EAA2D;AACxE,MAAI4+B,SAAS,GAAG,EAAhB;AAAA,MACIC,UAAU,GAAG,EADjB;AAAA,MAEI3B,QAAQ,GAAG5b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAFf;AAAA,MAGI4Z,UAAU,GAAG,IAAIhC,OAAO,CAACzN,UAAZ,EAHjB;AAAA,MAII0P,aAAa,GAAG,KAJpB,CADwE,CAOxE;;;AACA,QAAM3jB,IAAI,GAAGtZ,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACsf,MAAP,CAAc,IAAd,CAAd,EAAmCphB,OAAnC,CAAb;AAEA,QAAQ8gB,MAAR,GAAmB1F,IAAnB,CAAQ0F,MAAR;;AAEA,MAAIK,QAAJ,EAAc;AACV;AACA6d,kBAAc,CAAC5jB,IAAI,CAAC2F,WAAN,CAAd;AACH,GAHD,MAGO;AACH;AACAge,iBAAa,GAAG,IAAhB;AACH;;AAED,WAASE,cAAT,CAAwBjc,QAAxB,EAAkC;AAC9B,UAAM0M,YAAY,GAAGoP,UAAU,CAACrP,WAAhC,CAD8B,CACe;;AAC7C,QAAIxrB,KAAK,GAAG66B,UAAU,CAAC5S,MAAvB,CAF8B,CAEC;;AAE/B,SAAK,IAAInO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2R,YAApB,EAAkC3R,CAAC,EAAnC,EAAuC;AACnC,UAAIqT,GAAG,GAAGntB,KAAV;AACA,YAAMoV,KAAK,GAAG,IAAImH,QAAJ,CAAaW,QAAb,CAAd;AAEA9H,WAAK,CAACiJ,MAAN,GAAenB,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAqBA,GAAG,IAAI/Q,KAAK,CAACW,SAAN,CAAgBqL,MAA5C,CAAf;AACAhT,WAAK,CAACgJ,SAAN,GAAkBlB,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAqBA,GAAG,IAAI/X,KAAK,CAACiJ,MAAN,CAAauJ,cAAzC,CAAlB;AAEA5nB,WAAK,IAAIoV,KAAK,CAACiJ,MAAN,CAAa8J,eAAtB;AAEApJ,cAAQ,CAAC3J,KAAD,CAAR;AACH;AACJ;;AAED,WAAS0H,WAAT,GAAuB;AACnBge,iBAAa,GAAG,IAAhB;AACAF,cAAU,GAAG,EAAb;AACAD,aAAS,GAAG,IAAI57B,KAAJ,CAAU87B,UAAU,CAACrP,WAArB,CAAZ,CAHmB,CAG4B;;AAC/C,QAAIxrB,KAAK,GAAG66B,UAAU,CAAC5S,MAAvB,CAJmB,CAIY;;AAC/B,SAAK,IAAInO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6gB,SAAS,CAAC15B,MAA9B,EAAsC6Y,CAAC,EAAvC,EAA2C;AACvC,UAAIqT,GAAG,GAAGntB,KAAV;AAAA,UACIoV,KAAK,GAAG,IAAImH,QAAJ,CAAaW,QAAb,CADZ;AAEA9H,WAAK,CAACiJ,MAAN,GAAenB,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAqBA,GAAG,IAAI/Q,KAAK,CAACW,SAAN,CAAgBqL,MAA5C,CAAf;AAEAhT,WAAK,CAACgJ,SAAN,GAAkBlB,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAqBA,GAAG,IAAI/X,KAAK,CAACiJ,MAAN,CAAauJ,cAAzC,CAAlB;;AAEA,UAAIxS,KAAK,CAACiJ,MAAN,CAAawJ,WAAjB,EAA8B;AAC1BzS,aAAK,CAACglB,KAAN,GAAcld,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAqBA,GAAG,IAAI/X,KAAK,CAACiJ,MAAN,CAAawJ,WAAzC,CAAd;AACH;;AAED,UAAIzS,KAAK,CAACiJ,MAAN,CAAayJ,aAAjB,EAAgC1S,KAAK,CAACoK,OAAN,GAAgBtC,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAoBA,GAAG,GAAG/X,KAAK,CAACiJ,MAAN,CAAayJ,aAAvC,CAAhB;AAEhC9nB,WAAK,IAAIoV,KAAK,CAACiJ,MAAN,CAAa8J,eAAtB;AAEAwS,eAAS,CAAC7gB,CAAD,CAAT,GAAe1E,KAAf;AACAwlB,gBAAU,CAACxlB,KAAK,CAACgJ,SAAP,CAAV,GAA8BhJ,KAA9B;AACH;AACJ;;AAED,WAAS2lB,cAAT;AAAwB;AAAYE,SAApC,EAA6C;AACzC,QAAInhB,CAAC,GAAGoD,QAAQ,CAACjc,MAAT,GAAkBmb,KAAK,CAACW,SAAN,CAAgB4O,MAA1C;AAAA,QAAkD;AAC9CjE,OAAG,GAAGhe,IAAI,CAACge,GAAL,CAAS,CAAT,EAAY5N,CAAC,GAAG,MAAhB,CADV;AAAA,QACmC;AAC/BugB,KAAC,GAAG3S,GAFR;AAAA,QAGIwT,QAAQ,GAAGhe,QAAQ,CAACjc,MAHxB;AAAA,QAIIk6B,SAAS,GAAG,CAAC,CAJjB;AAAA,QAIoB;AAChBC,cAAU,GAAG,CALjB;;AAOA,SAAKthB,CAAL,EAAQA,CAAC,IAAIugB,CAAb,EAAgBvgB,CAAC,EAAjB,EAAqB;AACjB,UAAIoD,QAAQ,CAACpD,CAAD,CAAR,KAAgB,IAApB,EAA0B,SADT,CACmB;;AACpC,UAAIoD,QAAQ,CAACyL,YAAT,CAAsB7O,CAAtB,MAA6BsC,KAAK,CAACW,SAAN,CAAgB6O,MAAjD,EAAyD;AACrD;AACAuP,iBAAS,GAAGrhB,CAAZ;AACAshB,kBAAU,GAAGthB,CAAb;AACAohB,gBAAQ,GAAGphB,CAAC,GAAGsC,KAAK,CAACW,SAAN,CAAgB4O,MAA/B,CAJqD,CAKrD;;AACA0O,SAAC,GAAGvgB,CAAC,GAAGsC,KAAK,CAACW,SAAN,CAAgBqT,QAAxB;AACA;AACH;;AAED,UAAIlT,QAAQ,CAACyL,YAAT,CAAsB7O,CAAtB,MAA6BsC,KAAK,CAACW,SAAN,CAAgBsT,QAAjD,EAA2D;AACvD;AACAgK,SAAC,GAAG3S,GAAJ;AACA;AACH;;AAED,UAAIxK,QAAQ,CAACyL,YAAT,CAAsB7O,CAAtB,MAA6BsC,KAAK,CAACW,SAAN,CAAgB+O,QAAjD,EAA2D;AACvD;AACAqP,iBAAS,GAAGrhB,CAAZ;AACAohB,gBAAQ,GAAGphB,CAAC,GAAGsC,KAAK,CAACiQ,eAAN,CAAsBnP,QAAtB,EAAgCpD,CAAC,GAAGsC,KAAK,CAACW,SAAN,CAAgB2T,SAApD,CAAJ,GAAqEtU,KAAK,CAACW,SAAN,CAAgB0T,SAAhG;AACA;AACH;AACJ;;AAED,QAAI,CAAC,CAAC0K,SAAN,EAAiB,MAAM,IAAI17B,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAamX,cAAvB,CAAN;AAEjB6F,cAAU,CAACrR,cAAX,CAA0BtM,QAAQ,CAACja,KAAT,CAAek4B,SAAf,EAA0BD,QAA1B,CAA1B;;AACA,QAAIL,UAAU,CAAC/S,aAAf,EAA8B;AAC1BmR,cAAQ,GAAG/b,QAAQ,CAACja,KAAT,CAAem4B,UAAU,GAAGhf,KAAK,CAACW,SAAN,CAAgB4O,MAA5C,CAAX;AACH;;AACD,QAAIsP,OAAJ,EAAane,WAAW;AAC3B;;AAED,WAASue,WAAT,GAAuB;AACnB,QAAIV,SAAS,CAAC15B,MAAV,GAAmB,CAAnB,IAAwB,CAAC4b,MAA7B,EAAqC;AACjC8d,eAAS,CAACl5B,IAAV,CAAe,CAACJ,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAAC+c,SAAF,CAAYkd,WAAZ,GAA0BC,aAA1B,CAAwCj6B,CAAC,CAAC8c,SAAF,CAAYkd,WAAZ,EAAxC,CAAzB;AACH;AACJ;;AAED,SAAO;AACH;AACR;AACA;AACA;AACQ,QAAI7Y,OAAJ,GAAc;AACV,UAAI,CAACqY,aAAL,EAAoB;AAChBhe,mBAAW;AACd;;AACD,aAAO6d,SAAP;AACH,KAVE;;AAYH;AACR;AACA;AACA;AACQ,QAAInb,OAAJ,GAAc;AACV,aAAOyZ,QAAQ,CAACphB,QAAT,EAAP;AACH,KAlBE;;AAmBH,QAAI2H,OAAJ,CAAYvF,GAAZ,EAAiB;AACbgf,cAAQ,GAAG7c,KAAK,CAAC2J,QAAN,CAAe9L,GAAf,CAAX;AACA4gB,gBAAU,CAAC/S,aAAX,GAA2BmR,QAAQ,CAACh4B,MAApC;AACH,KAtBE;;AAwBHyhB,iBAAa,EAAE,YAAY;AACvB,UAAI,CAACoY,aAAL,EAAoB;AAChB,eAAOD,UAAU,CAACrP,WAAlB;AACH;;AAED,aAAOmP,SAAS,CAAC15B,MAAjB;AACH,KA9BE;AAgCHkM,WAAO,EAAE,UAAU4R,QAAV,EAAoB;AACzB,UAAI,CAAC+b,aAAL,EAAoB;AAChBE,sBAAc,CAACjc,QAAD,CAAd;AACA;AACH;;AAED4b,eAAS,CAACxtB,OAAV,CAAkB4R,QAAlB;AACH,KAvCE;;AAyCH;AACR;AACA;AACA;AACA;AACA;AACQb,YAAQ,EAAE;AAAU;AAAWE,aAArB,EAAgC;AACtC,UAAI,CAAC0c,aAAL,EAAoB;AAChBhe,mBAAW;AACd;;AACD,aAAO8d,UAAU,CAACxc,SAAD,CAAV,IAAyB,IAAhC;AACH,KApDE;;AAsDH;AACR;AACA;AACA;AACA;AACQmE,YAAQ,EAAE;AAAU;AAAanN,SAAvB,EAA8B;AACpC,UAAI,CAAC0lB,aAAL,EAAoB;AAChBhe,mBAAW;AACd;;AACD6d,eAAS,CAAC76B,IAAV,CAAesV,KAAf;AACAwlB,gBAAU,CAACxlB,KAAK,CAACgJ,SAAP,CAAV,GAA8BhJ,KAA9B;AACAylB,gBAAU,CAACpP,YAAX,GAA0BkP,SAAS,CAAC15B,MAApC;AACH,KAlEE;;AAoEH;AACR;AACA;AACA;AACA;AACA;AACQqe,eAAW,EAAE;AAAU;AAAWlB,aAArB,EAAgC;AACzC,UAAI,CAAC0c,aAAL,EAAoB;AAChBhe,mBAAW;AACd;;AACD,UAAI1H,KAAK,GAAGwlB,UAAU,CAACxc,SAAD,CAAtB;;AACA,UAAIhJ,KAAK,IAAIA,KAAK,CAAC+M,WAAnB,EAAgC;AAC5B,YAAIqZ,KAAK,GAAG,IAAZ;;AACA,aAAKnY,gBAAL,CAAsBjO,KAAtB,EAA6BjI,OAA7B,CAAqC,UAAUmW,KAAV,EAAiB;AAClD,cAAIA,KAAK,CAAClF,SAAN,KAAoBA,SAAxB,EAAmC;AAC/Bod,iBAAK,CAAClc,WAAN,CAAkBgE,KAAK,CAAClF,SAAxB;AACH;AACJ,SAJD;AAKH;;AACDuc,eAAS,CAACv3B,MAAV,CAAiBu3B,SAAS,CAAC1xB,OAAV,CAAkBmM,KAAlB,CAAjB,EAA2C,CAA3C;AACA,aAAOwlB,UAAU,CAACxc,SAAD,CAAjB;AACAyc,gBAAU,CAACpP,YAAX,GAA0BkP,SAAS,CAAC15B,MAApC;AACH,KA1FE;;AA4FH;AACR;AACA;AACA;AACA;AACA;AACQoiB,oBAAgB,EAAE;AAAU;AAAajO,SAAvB,EAA8B;AAC5C,UAAI,CAAC0lB,aAAL,EAAoB;AAChBhe,mBAAW;AACd;;AACD,UAAI1H,KAAK,IAAIA,KAAK,CAAC+M,WAAnB,EAAgC;AAC5B,cAAMxG,IAAI,GAAG,EAAb;AACA,cAAM1X,IAAI,GAAGmR,KAAK,CAACgJ,SAAnB;AACA,cAAMuO,GAAG,GAAG1oB,IAAI,CAAChD,MAAjB;AAEA05B,iBAAS,CAACxtB,OAAV,CAAkB,UAAUsuB,QAAV,EAAoB;AAClC,cAAIA,QAAQ,CAACrd,SAAT,CAAmB7E,MAAnB,CAA0B,CAA1B,EAA6BoT,GAA7B,MAAsC1oB,IAA1C,EAAgD;AAC5C0X,gBAAI,CAAC7b,IAAL,CAAU27B,QAAV;AACH;AACJ,SAJD;AAKA,eAAO9f,IAAP;AACH;;AACD,aAAO,EAAP;AACH,KAnHE;;AAqHH;AACR;AACA;AACA;AACA;AACQ4J,oBAAgB,EAAE,YAAY;AAC1B,UAAI,CAACuV,aAAL,EAAoB;AAChBhe,mBAAW;AACd;;AACDue,iBAAW;AAEX,YAAMK,SAAS,GAAG,EAAlB;AACA,YAAMC,YAAY,GAAG,EAArB;AACA,UAAIC,SAAS,GAAG,CAAhB;AACA,UAAIC,MAAM,GAAG,CAAb;AAEAhB,gBAAU,CAACjW,IAAX,GAAkB,CAAlB;AACAiW,gBAAU,CAAC5S,MAAX,GAAoB,CAApB;;AAEA,WAAK,MAAM7S,KAAX,IAAoBulB,SAApB,EAA+B;AAC3B;AACA,cAAMlB,cAAc,GAAGrkB,KAAK,CAACklB,iBAAN,EAAvB,CAF2B,CAG3B;;AACAllB,aAAK,CAACiJ,MAAN,CAAa4J,MAAb,GAAsB4T,MAAtB;AACA,cAAMpT,UAAU,GAAGrT,KAAK,CAACiJ,MAAN,CAAaqM,kBAAb,EAAnB;AACA,cAAMoR,YAAY,GAAG1mB,KAAK,CAAC8kB,YAAN,CAAmBj5B,MAAxC,CAN2B,CAO3B;;AACA,cAAM86B,UAAU,GAAG1e,MAAM,CAAC4D,KAAP,CAAa6a,YAAY,GAAG1mB,KAAK,CAACglB,KAAN,CAAYn5B,MAAxC,CAAnB;AACAmU,aAAK,CAAC8kB,YAAN,CAAmBvM,IAAnB,CAAwBoO,UAAxB,EAAoC,CAApC;AACAA,kBAAU,CAACpO,IAAX,CAAgBvY,KAAK,CAACglB,KAAtB,EAA6B0B,YAA7B,EAV2B,CAY3B;;AACA,cAAME,UAAU,GAAGvT,UAAU,CAACxnB,MAAX,GAAoB86B,UAAU,CAAC96B,MAA/B,GAAwCw4B,cAAc,CAACx4B,MAA1E;AACA46B,cAAM,IAAIG,UAAV,CAd2B,CAgB3B;;AACAN,iBAAS,CAAC57B,IAAV,CAAe2oB,UAAf;AACAiT,iBAAS,CAAC57B,IAAV,CAAei8B,UAAf;AACAL,iBAAS,CAAC57B,IAAV,CAAe25B,cAAf,EAnB2B,CAqB3B;;AACA,cAAMwC,WAAW,GAAG7mB,KAAK,CAACqlB,UAAN,EAApB;AACAkB,oBAAY,CAAC77B,IAAb,CAAkBm8B,WAAlB,EAvB2B,CAwB3B;;AACApB,kBAAU,CAACjW,IAAX,IAAmBqX,WAAW,CAACh7B,MAA/B;AACA26B,iBAAS,IAAII,UAAU,GAAGC,WAAW,CAACh7B,MAAtC;AACH;;AAED26B,eAAS,IAAIf,UAAU,CAACnP,cAAxB,CA3C0B,CA2Cc;AACxC;;AACAmP,gBAAU,CAAC5S,MAAX,GAAoB4T,MAApB;AAEAA,YAAM,GAAG,CAAT;AACA,YAAMK,SAAS,GAAG7e,MAAM,CAAC4D,KAAP,CAAa2a,SAAb,CAAlB,CAhD0B,CAiD1B;;AACA,WAAK,MAAM/b,OAAX,IAAsB6b,SAAtB,EAAiC;AAC7B7b,eAAO,CAAC8N,IAAR,CAAauO,SAAb,EAAwBL,MAAxB;AACAA,cAAM,IAAIhc,OAAO,CAAC5e,MAAlB;AACH,OArDyB,CAuD1B;;;AACA,WAAK,MAAM4e,OAAX,IAAsB8b,YAAtB,EAAoC;AAChC9b,eAAO,CAAC8N,IAAR,CAAauO,SAAb,EAAwBL,MAAxB;AACAA,cAAM,IAAIhc,OAAO,CAAC5e,MAAlB;AACH,OA3DyB,CA6D1B;;;AACA,YAAMk7B,EAAE,GAAGtB,UAAU,CAACnO,QAAX,EAAX;;AACA,UAAIuM,QAAJ,EAAc;AACVA,gBAAQ,CAACtL,IAAT,CAAcwO,EAAd,EAAkB/f,KAAK,CAACW,SAAN,CAAgB4O,MAAlC,EADU,CACiC;;AAC9C;;AACDwQ,QAAE,CAACxO,IAAH,CAAQuO,SAAR,EAAmBL,MAAnB;AAEA,aAAOK,SAAP;AACH,KA/LE;AAiMHpW,iBAAa,EAAE;AAAU;AAAaE,aAAvB;AAAkC;AAAaC,UAA/C;AAAuD;AAAaC,eAApE;AAAiF;AAAaC,aAA9F,EAAyG;AACpH,UAAI;AACA,YAAI,CAAC2U,aAAL,EAAoB;AAChBhe,qBAAW;AACd;;AACDue,mBAAW;AAEX,cAAMK,SAAS,GAAG,EAAlB;AACA,cAAMC,YAAY,GAAG,EAArB;AACA,YAAIC,SAAS,GAAG,CAAhB;AACA,YAAIC,MAAM,GAAG,CAAb;AAEAhB,kBAAU,CAACjW,IAAX,GAAkB,CAAlB;AACAiW,kBAAU,CAAC5S,MAAX,GAAoB,CAApB;;AAEA,cAAMmU,eAAe,GAAG,UAAUC,UAAV,EAAsB;AAC1C,cAAIA,UAAU,CAACp7B,MAAf,EAAuB;AACnB,kBAAMmU,KAAK,GAAGinB,UAAU,CAACx6B,GAAX,EAAd;AACA,kBAAMoC,IAAI,GAAGmR,KAAK,CAACgJ,SAAN,GAAkBhJ,KAAK,CAACglB,KAAN,CAAYviB,QAAZ,EAA/B;AACA,gBAAIqO,WAAJ,EAAiBA,WAAW,CAACjiB,IAAD,CAAX;AACjBmR,iBAAK,CAACmlB,sBAAN,CAA6B,UAAUd,cAAV,EAA0B;AACnD,kBAAItT,SAAJ,EAAeA,SAAS,CAACliB,IAAD,CAAT;AAEfmR,mBAAK,CAACiJ,MAAN,CAAa4J,MAAb,GAAsB4T,MAAtB,CAHmD,CAInD;;AACA,oBAAMpT,UAAU,GAAGrT,KAAK,CAACiJ,MAAN,CAAaqM,kBAAb,EAAnB;AACA,oBAAMqR,UAAU,GAAG1e,MAAM,CAAC4D,KAAP,CAAahd,IAAI,CAAChD,MAAlB,EAA0BgD,IAA1B,CAAnB;AACA,oBAAM+3B,UAAU,GAAGvT,UAAU,CAACxnB,MAAX,GAAoB86B,UAAU,CAAC96B,MAA/B,GAAwCw4B,cAAc,CAACx4B,MAA1E;AAEA46B,oBAAM,IAAIG,UAAV;AAEAN,uBAAS,CAAC57B,IAAV,CAAe2oB,UAAf;AACAiT,uBAAS,CAAC57B,IAAV,CAAei8B,UAAf;AACAL,uBAAS,CAAC57B,IAAV,CAAe25B,cAAf;AAEA,oBAAMwC,WAAW,GAAG7mB,KAAK,CAACqlB,UAAN,EAApB;AACAkB,0BAAY,CAAC77B,IAAb,CAAkBm8B,WAAlB;AACApB,wBAAU,CAACjW,IAAX,IAAmBqX,WAAW,CAACh7B,MAA/B;AACA26B,uBAAS,IAAII,UAAU,GAAGC,WAAW,CAACh7B,MAAtC;AAEAm7B,6BAAe,CAACC,UAAD,CAAf;AACH,aArBD;AAsBH,WA1BD,MA0BO;AACHT,qBAAS,IAAIf,UAAU,CAACnP,cAAxB,CADG,CACqC;AACxC;;AACAmP,sBAAU,CAAC5S,MAAX,GAAoB4T,MAApB;AAEAA,kBAAM,GAAG,CAAT;AACA,kBAAMK,SAAS,GAAG7e,MAAM,CAAC4D,KAAP,CAAa2a,SAAb,CAAlB;AACAF,qBAAS,CAACvuB,OAAV,CAAkB,UAAU0S,OAAV,EAAmB;AACjCA,qBAAO,CAAC8N,IAAR,CAAauO,SAAb,EAAwBL,MAAxB,EADiC,CACA;;AACjCA,oBAAM,IAAIhc,OAAO,CAAC5e,MAAlB;AACH,aAHD;AAIA06B,wBAAY,CAACxuB,OAAb,CAAqB,UAAU0S,OAAV,EAAmB;AACpCA,qBAAO,CAAC8N,IAAR,CAAauO,SAAb,EAAwBL,MAAxB,EADoC,CACH;;AACjCA,oBAAM,IAAIhc,OAAO,CAAC5e,MAAlB;AACH,aAHD;AAKA,kBAAMk7B,EAAE,GAAGtB,UAAU,CAACnO,QAAX,EAAX;;AACA,gBAAIuM,QAAJ,EAAc;AACVA,sBAAQ,CAACtL,IAAT,CAAcwO,EAAd,EAAkB/f,KAAK,CAACW,SAAN,CAAgB4O,MAAlC,EADU,CACiC;;AAC9C;;AAEDwQ,cAAE,CAACxO,IAAH,CAAQuO,SAAR,EAAmBL,MAAnB,EArBG,CAqByB;;AAE5B7V,qBAAS,CAACkW,SAAD,CAAT;AACH;AACJ,SApDD;;AAsDAE,uBAAe,CAACzB,SAAD,CAAf;AACH,OArED,CAqEE,OAAOpW,CAAP,EAAU;AACR0B,cAAM,CAAC1B,CAAD,CAAN;AACH;AACJ;AA1QE,GAAP;AA4QH,CA3XD,C;;;;;;;;;;;;ACJa;;AAEb,IAAI+X,aAAa,GAAG,CACnB,eADmB,EAEnB,gBAFmB,EAGnB,cAHmB,EAInB,cAJmB,EAKnB,YALmB,EAMnB,YANmB,EAOnB,WAPmB,EAQnB,aARmB,EASnB,aATmB,EAUnB,YAVmB,EAWnB,mBAXmB,CAApB;AAcA,IAAIC,CAAC,GAAG,OAAOC,UAAP,KAAsB,WAAtB,GAAoCC,MAApC,GAA6CD,UAArD;;AAEAvgB,MAAM,CAACC,OAAP,GAAiB,SAASwgB,oBAAT,GAAgC;AAChD,MAAIC,GAAG,GAAG,EAAV;;AACA,OAAK,IAAI7iB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwiB,aAAa,CAACr7B,MAAlC,EAA0C6Y,CAAC,EAA3C,EAA+C;AAC9C,QAAI,OAAOyiB,CAAC,CAACD,aAAa,CAACxiB,CAAD,CAAd,CAAR,KAA+B,UAAnC,EAA+C;AAC9C6iB,SAAG,CAACA,GAAG,CAAC17B,MAAL,CAAH,GAAkBq7B,aAAa,CAACxiB,CAAD,CAA/B;AACA;AACD;;AACD,SAAO6iB,GAAP;AACA,CARD,C;;;;;;;;;;;;AClBa;;AAEb,IAAIC,YAAY,GAAGvgB,mBAAO,CAAC,4DAAD,CAA1B;;AAEA,IAAIwgB,QAAQ,GAAGxgB,mBAAO,CAAC,6CAAD,CAAtB;;AAEA,IAAIygB,QAAQ,GAAGD,QAAQ,CAACD,YAAY,CAAC,0BAAD,CAAb,CAAvB;;AAEA3gB,MAAM,CAACC,OAAP,GAAiB,SAAS6gB,kBAAT,CAA4B94B,IAA5B,EAAkC+4B,YAAlC,EAAgD;AAChE,MAAIC,SAAS,GAAGL,YAAY,CAAC34B,IAAD,EAAO,CAAC,CAAC+4B,YAAT,CAA5B;;AACA,MAAI,OAAOC,SAAP,KAAqB,UAArB,IAAmCH,QAAQ,CAAC74B,IAAD,EAAO,aAAP,CAAR,GAAgC,CAAC,CAAxE,EAA2E;AAC1E,WAAO44B,QAAQ,CAACI,SAAD,CAAf;AACA;;AACD,SAAOA,SAAP;AACA,CAND,C;;;;;;;;;;;;ACRa;;AAEb,IAAIC,IAAI,GAAG7gB,mBAAO,CAAC,4DAAD,CAAlB;;AACA,IAAIugB,YAAY,GAAGvgB,mBAAO,CAAC,4DAAD,CAA1B;;AAEA,IAAI8gB,MAAM,GAAGP,YAAY,CAAC,4BAAD,CAAzB;AACA,IAAIQ,KAAK,GAAGR,YAAY,CAAC,2BAAD,CAAxB;AACA,IAAIS,aAAa,GAAGT,YAAY,CAAC,iBAAD,EAAoB,IAApB,CAAZ,IAAyCM,IAAI,CAACplB,IAAL,CAAUslB,KAAV,EAAiBD,MAAjB,CAA7D;AAEA,IAAIG,KAAK,GAAGV,YAAY,CAAC,mCAAD,EAAsC,IAAtC,CAAxB;AACA,IAAIW,eAAe,GAAGX,YAAY,CAAC,yBAAD,EAA4B,IAA5B,CAAlC;AACA,IAAIY,IAAI,GAAGZ,YAAY,CAAC,YAAD,CAAvB;;AAEA,IAAIW,eAAJ,EAAqB;AACpB,MAAI;AACHA,mBAAe,CAAC,EAAD,EAAK,GAAL,EAAU;AAAE/iC,WAAK,EAAE;AAAT,KAAV,CAAf;AACA,GAFD,CAEE,OAAO+pB,CAAP,EAAU;AACX;AACAgZ,mBAAe,GAAG,IAAlB;AACA;AACD;;AAEDthB,MAAM,CAACC,OAAP,GAAiB,SAAS2gB,QAAT,CAAkBY,gBAAlB,EAAoC;AACpD,MAAIC,IAAI,GAAGL,aAAa,CAACH,IAAD,EAAOE,KAAP,EAAcjzB,SAAd,CAAxB;;AACA,MAAImzB,KAAK,IAAIC,eAAb,EAA8B;AAC7B,QAAII,IAAI,GAAGL,KAAK,CAACI,IAAD,EAAO,QAAP,CAAhB;;AACA,QAAIC,IAAI,CAACC,YAAT,EAAuB;AACtB;AACAL,qBAAe,CACdG,IADc,EAEd,QAFc,EAGd;AAAEljC,aAAK,EAAE,IAAIgjC,IAAI,CAAC,CAAD,EAAIC,gBAAgB,CAACx8B,MAAjB,IAA2BkJ,SAAS,CAAClJ,MAAV,GAAmB,CAA9C,CAAJ;AAAjB,OAHc,CAAf;AAKA;AACD;;AACD,SAAOy8B,IAAP;AACA,CAdD;;AAgBA,IAAIG,SAAS,GAAG,SAASA,SAAT,GAAqB;AACpC,SAAOR,aAAa,CAACH,IAAD,EAAOC,MAAP,EAAehzB,SAAf,CAApB;AACA,CAFD;;AAIA,IAAIozB,eAAJ,EAAqB;AACpBA,iBAAe,CAACthB,MAAM,CAACC,OAAR,EAAiB,OAAjB,EAA0B;AAAE1hB,SAAK,EAAEqjC;AAAT,GAA1B,CAAf;AACA,CAFD,MAEO;AACN5hB,QAAM,CAACC,OAAP,CAAe4hB,KAAf,GAAuBD,SAAvB;AACA,C;;;;;;;;;;;AC9CD,IAAIE,OAAO,GAAG;AACZ;AACAC,MAAI,EAAE;AACJ;AACAC,iBAAa,EAAE,UAASC,GAAT,EAAc;AAC3B,aAAOH,OAAO,CAACI,GAAR,CAAYF,aAAZ,CAA0BG,QAAQ,CAACC,kBAAkB,CAACH,GAAD,CAAnB,CAAlC,CAAP;AACD,KAJG;AAMJ;AACAI,iBAAa,EAAE,UAASvT,KAAT,EAAgB;AAC7B,aAAOwT,kBAAkB,CAACC,MAAM,CAACT,OAAO,CAACI,GAAR,CAAYG,aAAZ,CAA0BvT,KAA1B,CAAD,CAAP,CAAzB;AACD;AATG,GAFM;AAcZ;AACAoT,KAAG,EAAE;AACH;AACAF,iBAAa,EAAE,UAASC,GAAT,EAAc;AAC3B,WAAK,IAAInT,KAAK,GAAG,EAAZ,EAAgBjR,CAAC,GAAG,CAAzB,EAA4BA,CAAC,GAAGokB,GAAG,CAACj9B,MAApC,EAA4C6Y,CAAC,EAA7C,EACEiR,KAAK,CAACjrB,IAAN,CAAWo+B,GAAG,CAAC5kB,UAAJ,CAAeQ,CAAf,IAAoB,IAA/B;;AACF,aAAOiR,KAAP;AACD,KANE;AAQH;AACAuT,iBAAa,EAAE,UAASvT,KAAT,EAAgB;AAC7B,WAAK,IAAImT,GAAG,GAAG,EAAV,EAAcpkB,CAAC,GAAG,CAAvB,EAA0BA,CAAC,GAAGiR,KAAK,CAAC9pB,MAApC,EAA4C6Y,CAAC,EAA7C,EACEokB,GAAG,CAACp+B,IAAJ,CAAS2+B,MAAM,CAACC,YAAP,CAAoB3T,KAAK,CAACjR,CAAD,CAAzB,CAAT;;AACF,aAAOokB,GAAG,CAACliB,IAAJ,CAAS,EAAT,CAAP;AACD;AAbE;AAfO,CAAd;AAgCAC,MAAM,CAACC,OAAP,GAAiB6hB,OAAjB,C;;;;;;;;;;;AChCA,CAAC,YAAW;AACV,MAAIY,SAAS,GACP,kEADN;AAAA,MAGAC,KAAK,GAAG;AACN;AACAC,QAAI,EAAE,UAASxE,CAAT,EAAY/4B,CAAZ,EAAe;AACnB,aAAQ+4B,CAAC,IAAI/4B,CAAN,GAAY+4B,CAAC,KAAM,KAAK/4B,CAA/B;AACD,KAJK;AAMN;AACAw9B,QAAI,EAAE,UAASzE,CAAT,EAAY/4B,CAAZ,EAAe;AACnB,aAAQ+4B,CAAC,IAAK,KAAK/4B,CAAZ,GAAmB+4B,CAAC,KAAK/4B,CAAhC;AACD,KATK;AAWN;AACAy9B,UAAM,EAAE,UAAS1E,CAAT,EAAY;AAClB;AACA,UAAIA,CAAC,CAACvgC,WAAF,IAAiB0E,MAArB,EAA6B;AAC3B,eAAOogC,KAAK,CAACC,IAAN,CAAWxE,CAAX,EAAc,CAAd,IAAmB,UAAnB,GAAgCuE,KAAK,CAACC,IAAN,CAAWxE,CAAX,EAAc,EAAd,IAAoB,UAA3D;AACD,OAJiB,CAMlB;;;AACA,WAAK,IAAIvgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGugB,CAAC,CAACp5B,MAAtB,EAA8B6Y,CAAC,EAA/B,EACEugB,CAAC,CAACvgB,CAAD,CAAD,GAAO8kB,KAAK,CAACG,MAAN,CAAa1E,CAAC,CAACvgB,CAAD,CAAd,CAAP;;AACF,aAAOugB,CAAP;AACD,KAtBK;AAwBN;AACA2E,eAAW,EAAE,UAAS3E,CAAT,EAAY;AACvB,WAAK,IAAItP,KAAK,GAAG,EAAjB,EAAqBsP,CAAC,GAAG,CAAzB,EAA4BA,CAAC,EAA7B,EACEtP,KAAK,CAACjrB,IAAN,CAAW4J,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACqlB,MAAL,KAAgB,GAA3B,CAAX;;AACF,aAAOhE,KAAP;AACD,KA7BK;AA+BN;AACAkU,gBAAY,EAAE,UAASlU,KAAT,EAAgB;AAC5B,WAAK,IAAImU,KAAK,GAAG,EAAZ,EAAgBplB,CAAC,GAAG,CAApB,EAAuBxY,CAAC,GAAG,CAAhC,EAAmCwY,CAAC,GAAGiR,KAAK,CAAC9pB,MAA7C,EAAqD6Y,CAAC,IAAIxY,CAAC,IAAI,CAA/D,EACE49B,KAAK,CAAC59B,CAAC,KAAK,CAAP,CAAL,IAAkBypB,KAAK,CAACjR,CAAD,CAAL,IAAa,KAAKxY,CAAC,GAAG,EAAxC;;AACF,aAAO49B,KAAP;AACD,KApCK;AAsCN;AACAC,gBAAY,EAAE,UAASD,KAAT,EAAgB;AAC5B,WAAK,IAAInU,KAAK,GAAG,EAAZ,EAAgBzpB,CAAC,GAAG,CAAzB,EAA4BA,CAAC,GAAG49B,KAAK,CAACj+B,MAAN,GAAe,EAA/C,EAAmDK,CAAC,IAAI,CAAxD,EACEypB,KAAK,CAACjrB,IAAN,CAAYo/B,KAAK,CAAC59B,CAAC,KAAK,CAAP,CAAL,KAAoB,KAAKA,CAAC,GAAG,EAA9B,GAAqC,IAAhD;;AACF,aAAOypB,KAAP;AACD,KA3CK;AA6CN;AACAqU,cAAU,EAAE,UAASrU,KAAT,EAAgB;AAC1B,WAAK,IAAIsU,GAAG,GAAG,EAAV,EAAcvlB,CAAC,GAAG,CAAvB,EAA0BA,CAAC,GAAGiR,KAAK,CAAC9pB,MAApC,EAA4C6Y,CAAC,EAA7C,EAAiD;AAC/CulB,WAAG,CAACv/B,IAAJ,CAAS,CAACirB,KAAK,CAACjR,CAAD,CAAL,KAAa,CAAd,EAAiBjC,QAAjB,CAA0B,EAA1B,CAAT;AACAwnB,WAAG,CAACv/B,IAAJ,CAAS,CAACirB,KAAK,CAACjR,CAAD,CAAL,GAAW,GAAZ,EAAiBjC,QAAjB,CAA0B,EAA1B,CAAT;AACD;;AACD,aAAOwnB,GAAG,CAACrjB,IAAJ,CAAS,EAAT,CAAP;AACD,KApDK;AAsDN;AACAsjB,cAAU,EAAE,UAASD,GAAT,EAAc;AACxB,WAAK,IAAItU,KAAK,GAAG,EAAZ,EAAgBwE,CAAC,GAAG,CAAzB,EAA4BA,CAAC,GAAG8P,GAAG,CAACp+B,MAApC,EAA4CsuB,CAAC,IAAI,CAAjD,EACExE,KAAK,CAACjrB,IAAN,CAAWub,QAAQ,CAACgkB,GAAG,CAAC9lB,MAAJ,CAAWgW,CAAX,EAAc,CAAd,CAAD,EAAmB,EAAnB,CAAnB;;AACF,aAAOxE,KAAP;AACD,KA3DK;AA6DN;AACAwU,iBAAa,EAAE,UAASxU,KAAT,EAAgB;AAC7B,WAAK,IAAIyU,MAAM,GAAG,EAAb,EAAiB1lB,CAAC,GAAG,CAA1B,EAA6BA,CAAC,GAAGiR,KAAK,CAAC9pB,MAAvC,EAA+C6Y,CAAC,IAAI,CAApD,EAAuD;AACrD,YAAI2lB,OAAO,GAAI1U,KAAK,CAACjR,CAAD,CAAL,IAAY,EAAb,GAAoBiR,KAAK,CAACjR,CAAC,GAAG,CAAL,CAAL,IAAgB,CAApC,GAAyCiR,KAAK,CAACjR,CAAC,GAAG,CAAL,CAA5D;;AACA,aAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EACE,IAAID,CAAC,GAAG,CAAJ,GAAQC,CAAC,GAAG,CAAZ,IAAiBgR,KAAK,CAAC9pB,MAAN,GAAe,CAApC,EACEu+B,MAAM,CAAC1/B,IAAP,CAAY6+B,SAAS,CAACe,MAAV,CAAkBD,OAAO,KAAK,KAAK,IAAI1lB,CAAT,CAAb,GAA4B,IAA7C,CAAZ,EADF,KAGEylB,MAAM,CAAC1/B,IAAP,CAAY,GAAZ;AACL;;AACD,aAAO0/B,MAAM,CAACxjB,IAAP,CAAY,EAAZ,CAAP;AACD,KAxEK;AA0EN;AACA2jB,iBAAa,EAAE,UAASH,MAAT,EAAiB;AAC9B;AACAA,YAAM,GAAGA,MAAM,CAACjlB,OAAP,CAAe,gBAAf,EAAiC,EAAjC,CAAT;;AAEA,WAAK,IAAIwQ,KAAK,GAAG,EAAZ,EAAgBjR,CAAC,GAAG,CAApB,EAAuB8lB,KAAK,GAAG,CAApC,EAAuC9lB,CAAC,GAAG0lB,MAAM,CAACv+B,MAAlD,EACI2+B,KAAK,GAAG,EAAE9lB,CAAF,GAAM,CADlB,EACqB;AACnB,YAAI8lB,KAAK,IAAI,CAAb,EAAgB;AAChB7U,aAAK,CAACjrB,IAAN,CAAY,CAAC6+B,SAAS,CAAC11B,OAAV,CAAkBu2B,MAAM,CAACE,MAAP,CAAc5lB,CAAC,GAAG,CAAlB,CAAlB,IACNpQ,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAY,CAAC,CAAD,GAAKD,KAAL,GAAa,CAAzB,IAA8B,CADzB,KACiCA,KAAK,GAAG,CAD1C,GAEJjB,SAAS,CAAC11B,OAAV,CAAkBu2B,MAAM,CAACE,MAAP,CAAc5lB,CAAd,CAAlB,MAAyC,IAAI8lB,KAAK,GAAG,CAF5D;AAGD;;AACD,aAAO7U,KAAP;AACD;AAvFK,GAHR;AA6FA9O,QAAM,CAACC,OAAP,GAAiB0iB,KAAjB;AACD,CA/FD,I;;;;;;;;;;;ACEA,MAAMkB,gBAAN,CAAsB;AACpBhmC,aAAW,CAAC8qB,IAAI,GAAC,GAAN,EAAU;AACnB,SAAKA,IAAL,GAAYA,IAAZ;AACA,SAAK3jB,MAAL,GAAc,CAAd;AACA,SAAKusB,GAAL,GAAWnQ,MAAM,CAAC4D,KAAP,CAAa2D,IAAb,CAAX;AACD;;AACDmb,SAAO,CAAC9lB,GAAD,EAAK;AACV,QAAGoD,MAAM,CAACC,QAAP,CAAgBrD,GAAhB,CAAH,EAAwB;AACtB,YAAMhZ,MAAM,GAAG,KAAKA,MAAL,GAAcgZ,GAAG,CAAChZ,MAAjC;;AACA,UAAGA,MAAM,IAAI,KAAK2jB,IAAlB,EAAuB;AACrB,aAAKob,MAAL;;AACA,YAAG/+B,MAAM,IAAI,KAAK2jB,IAAlB,EAAuB;AACrB,gBAAMnlB,KAAK,CAAC,sBAAD,CAAX;AACD;AACF;;AACD,YAAM+tB,GAAG,GAAG,KAAKA,GAAjB;AACA,WAAKA,GAAL,GAAWnQ,MAAM,CAAC4D,KAAP,CAAa,KAAK2D,IAAlB,CAAX;AACA3K,SAAG,CAAC0T,IAAJ,CAAS,KAAKH,GAAd,EAAmB,CAAnB;AACAA,SAAG,CAACG,IAAJ,CAAS,KAAKH,GAAd,EAAmBvT,GAAG,CAAChZ,MAAvB;AACA,WAAKA,MAAL,IAAegZ,GAAG,CAAChZ,MAAnB;AACD,KAbD,MAaK;AACH,YAAMA,MAAM,GAAG,KAAKA,MAAL,EAAf;;AACA,UAAGA,MAAM,KAAK,KAAK2jB,IAAnB,EAAwB;AACtB,aAAKob,MAAL;AACD;;AACD,YAAMxS,GAAG,GAAG,KAAKyS,KAAL,EAAZ;AACA,WAAKzS,GAAL,CAAS,CAAT,IAAcvT,GAAd;AACAuT,SAAG,CAACG,IAAJ,CAAS,KAAKH,GAAd,EAAkB,CAAlB,EAAqB,CAArB,EAAwBvsB,MAAxB;AACD;AACF;;AACDi/B,QAAM,CAACjmB,GAAD,EAAK;AACT,UAAMhZ,MAAM,GAAG,KAAKA,MAAL,EAAf;;AACA,QAAGA,MAAM,KAAK,KAAK2jB,IAAnB,EAAwB;AACtB,WAAKob,MAAL;AACD;;AACD,SAAKxS,GAAL,CAASvsB,MAAT,IAAmBgZ,GAAnB;AACD;;AACDgmB,OAAK,GAAE;AACL,WAAO5iB,MAAM,CAACre,IAAP,CAAY,KAAKwuB,GAAL,CAASvqB,KAAT,CAAe,CAAf,EAAkB,KAAKhC,MAAvB,CAAZ,CAAP;AACD;;AACD++B,QAAM,GAAE;AACN,UAAM/+B,MAAM,GAAG,KAAKA,MAApB;AACA,SAAK2jB,IAAL,GAAY,KAAKA,IAAL,GAAY,CAAxB;AACA,UAAM4I,GAAG,GAAGnQ,MAAM,CAAC4D,KAAP,CAAa,KAAK2D,IAAlB,CAAZ;AACA,SAAK4I,GAAL,CAASG,IAAT,CAAcH,GAAd,EAAkB,CAAlB,EAAqB,CAArB,EAAwBvsB,MAAxB;AACA,SAAKusB,GAAL,GAAWA,GAAX;AACD;;AACD3V,UAAQ,CAACqH,QAAD,EAAU;AAChB,QAAGA,QAAH,EAAY;AACV,aAAO,KAAKsO,GAAL,CAASvqB,KAAT,CAAe,CAAf,EAAkB,KAAKhC,MAAvB,EAA+B4W,QAA/B,CAAwCqH,QAAxC,CAAP;AACD,KAFD,MAEK;AACH,aAAO9B,UAAU,CAACnG,SAAX,CAAqBhU,KAArB,CAA2B6U,IAA3B,CAAgC,KAAK0V,GAAL,CAASvqB,KAAT,CAAe,CAAf,EAAkB,KAAKhC,MAAvB,CAAhC,CAAP;AACD;AACF;;AACDsC,QAAM,GAAE;AACN,WAAO,KAAKsU,QAAL,CAAc,MAAd,CAAP;AACD;;AACDsoB,OAAK,GAAE;AACL,SAAKl/B,MAAL,GAAc,CAAd;AACD;;AA3DmB;;AA8DtBgb,MAAM,CAACC,OAAP,GAAiB4jB,gBAAjB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AAEA,iBAAsBzjB,mBAAO,CAAC,sBAAD,CAA7B;AAAA,MAAQ+jB,SAAR,YAAQA,SAAR;;AACA,MAAMN,gBAAgB,GAAGzjB,mBAAO,CAAC,4EAAD,CAAhC,C,CAEA;AACA;AACA;AACA;;;AACA,MAAMgkB,GAAG,GAAG,CAAZ;AACA,MAAMC,EAAE,GAAG,EAAX,C,CAAc;;AACd,MAAMC,EAAE,GAAG,EAAX;AACA,MAAMC,EAAE,GAAG,EAAX,C,CAAc;;AACd,MAAMC,KAAK,GAAG,EAAd;AACA,MAAMC,IAAI,GAAG;AACX;AACA;AACA;AACA;AACA,UAAQrjB,MAAM,CAACre,IAAP,CAAY,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAZ,CALG;AAMX;AACA;AACA;AACA,aAAWqe,MAAM,CAACre,IAAP,CAAY,CAAC,GAAD,EAAM,GAAN,CAAZ;AATA,CAAb;;AAYA,MAAM2hC,MAAN,SAAqBP,SAArB,CAA+B;AAC7BtmC,aAAW,CAACqd,IAAI,GAAG,EAAR,EAAW;AACpB,wDAAU;AAACypB,wBAAkB,EAAE;AAArB,KAAV,GAAyCzpB,IAAzC;AAA+C+H,cAAQ,EAAE;AAAzD;AACA,SAAK2hB,iBAAL,GAAyB1pB,IAAzB;;AACA,SAAK2pB,kBAAL,CAAwB3pB,IAAxB;AACD;;AACD2pB,oBAAkB,CAAC3pB,IAAD,EAAM;AACtB,UAAMpb,OAAO,GAAG,EAAhB,CADsB,CAEtB;;AACA,SAAI,IAAIwM,GAAR,IAAe4O,IAAf,EAAoB;AAClBpb,aAAO,CAACglC,UAAU,CAACx4B,GAAD,CAAX,CAAP,GAA2B4O,IAAI,CAAC5O,GAAD,CAA/B;AACD,KALqB,CAMtB;AACA;AACA;;;AACA,QAAGxM,OAAO,CAACmjB,QAAR,KAAqBjlB,SAArB,IAAkC8B,OAAO,CAACmjB,QAAR,KAAqB,IAA1D,EAA+D;AAC7DnjB,aAAO,CAACmjB,QAAR,GAAmB,MAAnB;AACD,KAFD,MAEM,IAAGnjB,OAAO,CAACmjB,QAAR,KAAqB,IAArB,IAA6BnjB,OAAO,CAACmjB,QAAR,KAAqB,KAArD,EAA2D;AAC/DnjB,aAAO,CAACmjB,QAAR,GAAmB,IAAnB;AACD,KAFK,MAEA,IAAG,OAAOnjB,OAAO,CAACmjB,QAAf,KAA4B,QAA5B,IAAwCnjB,OAAO,CAACmjB,QAAR,KAAqB,IAAhE,EAAqE;AACzE,YAAM,IAAI8hB,QAAJ,CAAa,6BAAb,EAA4C,CAChD,0BADgD,EAEhD,uDAFgD,EAG/C,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACmjB,QAAvB,CAAiC,EAHQ,CAA5C,EAIHnjB,OAJG,CAAN;AAKD,KAnBqB,CAoBtB;;;AACA,QAAGA,OAAO,CAACklC,GAAR,KAAgBhnC,SAAhB,IAA6B8B,OAAO,CAACklC,GAAR,KAAgB,IAA7C,IAAqDllC,OAAO,CAACklC,GAAR,KAAgB,KAAxE,EAA8E;AAC5EllC,aAAO,CAACklC,GAAR,GAAc,KAAd;AACD,KAFD,MAEM,IAAGllC,OAAO,CAACklC,GAAR,KAAgB,IAAnB,EAAwB;AAC5B,YAAM,IAAID,QAAJ,CAAa,wBAAb,EAAuC,CAC3C,qBAD2C,EACpB,mBADoB,EAE1C,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACklC,GAAvB,CAA4B,EAFQ,CAAvC,EAGHllC,OAHG,CAAN;AAID,KA5BqB,CA6BtB;;;AACA,QAAImlC,WAAW,GAAG,IAAlB;;AACA,QAAGnlC,OAAO,CAAColC,IAAR,KAAiBlnC,SAAjB,IAA8B8B,OAAO,CAAColC,IAAR,KAAiB,IAA/C,IAAuDplC,OAAO,CAAColC,IAAR,KAAiB,KAAxE,IAAiFplC,OAAO,CAAColC,IAAR,KAAiB,EAArG,EAAwG;AACtGplC,aAAO,CAAColC,IAAR,GAAelnC,SAAf;AACD,KAFD,MAEM,IAAG,OAAO8B,OAAO,CAAColC,IAAf,KAAwB,UAA3B,EAAsC;AAC1CD,iBAAW,GAAGnlC,OAAO,CAAColC,IAAtB;AACAplC,aAAO,CAAColC,IAAR,GAAe,IAAf;AACD,KAHK,MAGA,IAAGplC,OAAO,CAAColC,IAAR,KAAiB,IAApB,EAAyB;AAC7B,YAAM,IAAIH,QAAJ,CAAa,yBAAb,EAAwC,CAC5C,sBAD4C,EACpB,kCADoB,EAE3C,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAColC,IAAvB,CAA6B,EAFQ,CAAxC,EAGHplC,OAHG,CAAN;AAID,KAzCqB,CA0CtB;;;AACA,QAAGA,OAAO,CAACqlC,SAAR,KAAsBnnC,SAAtB,IAAmC8B,OAAO,CAACqlC,SAAR,KAAsB,IAAzD,IAAiErlC,OAAO,CAACqlC,SAAR,KAAsB,KAAvF,IAAgGrlC,OAAO,CAACqlC,SAAR,KAAsB,EAAzH,EAA4H;AAC1HrlC,aAAO,CAACqlC,SAAR,GAAoB,KAApB;AACD,KAFD,MAEM,IAAGrlC,OAAO,CAACqlC,SAAR,KAAsB,IAAzB,EAA8B;AAClCrlC,aAAO,CAACqlC,SAAR,GAAoB,UAAS5mC,KAAT,EAAe;AACjC,cAAMyC,IAAI,GAAGmI,IAAI,CAACmK,KAAL,CAAW/U,KAAX,CAAb;AACA,eAAO,CAACkO,KAAK,CAACzL,IAAD,CAAN,GAAe,IAAImI,IAAJ,CAASnI,IAAT,CAAf,GAAgCzC,KAAvC;AACD,OAHD;AAID,KALK,MAKD;AACH,YAAM,IAAIwmC,QAAJ,CAAa,8BAAb,EAA6C,CACjD,2BADiD,EACpB,uCADoB,EAEhD,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACqlC,SAAvB,CAAkC,EAFQ,CAA7C,EAGHrlC,OAHG,CAAN;AAID,KAvDqB,CAwDtB;;;AACA,QAAIslC,oBAAoB,GAAG,IAA3B;;AACA,QAAGtlC,OAAO,CAACulC,OAAR,KAAoB,IAAvB,EAA4B;AAC1B;AACAD,0BAAoB,GAAGpnC,SAAvB;AACD,KAHD,MAGM,IAAG,OAAO8B,OAAO,CAACulC,OAAf,KAA2B,UAA9B,EAAyC;AAC7CD,0BAAoB,GAAGtlC,OAAO,CAACulC,OAA/B;AACAvlC,aAAO,CAACulC,OAAR,GAAkB,IAAlB;AACD,KAHK,MAGA,IAAGviC,KAAK,CAACwD,OAAN,CAAcxG,OAAO,CAACulC,OAAtB,CAAH,EAAkC;AACtCvlC,aAAO,CAACulC,OAAR,GAAkBC,qBAAqB,CAACxlC,OAAO,CAACulC,OAAT,CAAvC;AACD,KAFK,MAEA,IAAGvlC,OAAO,CAACulC,OAAR,KAAoBrnC,SAApB,IAAiC8B,OAAO,CAACulC,OAAR,KAAoB,IAArD,IAA6DvlC,OAAO,CAACulC,OAAR,KAAoB,KAApF,EAA0F;AAC9FvlC,aAAO,CAACulC,OAAR,GAAkB,KAAlB;AACD,KAFK,MAED;AACH,YAAM,IAAIN,QAAJ,CAAa,4BAAb,EAA2C,CAC/C,yBAD+C,EAE/C,sCAF+C,EAG9C,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACulC,OAAvB,CAAgC,EAHQ,CAA3C,EAIHvlC,OAJG,CAAN;AAKD,KA1EqB,CA2EtB;;;AACA,QAAGA,OAAO,CAACylC,2BAAR,KAAwCvnC,SAAxC,IAAqD8B,OAAO,CAACylC,2BAAR,KAAwC,IAA7F,IAAqGzlC,OAAO,CAACylC,2BAAR,KAAwC,KAAhJ,EAAsJ;AACpJzlC,aAAO,CAACylC,2BAAR,GAAsC,KAAtC;AACD,KAFD,MAEM,IAAGzlC,OAAO,CAACylC,2BAAR,KAAwC,IAA3C,EAAgD;AACpD,YAAM,IAAIR,QAAJ,CAAa,gDAAb,EAA+D,CACnE,6CADmE,EAEnE,oBAFmE,EAGlE,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACylC,2BAAvB,CAAoD,EAHQ,CAA/D,EAIHzlC,OAJG,CAAN;AAKD,KANK,MAMA,IAAGA,OAAO,CAACulC,OAAR,KAAoB,KAAvB,EAA6B;AACjC,YAAM,IAAIN,QAAJ,CAAa,gDAAb,EAA+D,CACnE,6CADmE,EAEnE,uCAFmE,CAA/D,EAGHjlC,OAHG,CAAN;AAID,KAzFqB,CA0FtB;;;AACA,QAAGA,OAAO,CAACyjB,OAAR,KAAoBvlB,SAApB,IAAiC8B,OAAO,CAACyjB,OAAR,KAAoB,IAArD,IAA6DzjB,OAAO,CAACyjB,OAAR,KAAoB,KAAjF,IAA0FzjB,OAAO,CAACyjB,OAAR,KAAoB,EAAjH,EAAoH;AAClHzjB,aAAO,CAACyjB,OAAR,GAAkB,IAAlB;AACD,KAFD,MAEK;AACH,UAAG,OAAOzjB,OAAO,CAACyjB,OAAf,KAA2B,QAA9B,EAAuC;AACrCzjB,eAAO,CAACyjB,OAAR,GAAkBnC,MAAM,CAACre,IAAP,CAAYjD,OAAO,CAACyjB,OAApB,EAA6BzjB,OAAO,CAACmjB,QAArC,CAAlB;AACD;;AACD,UAAG,CAAC7B,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAACyjB,OAAxB,CAAJ,EAAqC;AACnC,cAAM,IAAIwhB,QAAJ,CAAa,4BAAb,EAA2C,CAC/C,yBAD+C,EAE/C,uCAF+C,EAG9C,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACyjB,OAAvB,CAAgC,EAHQ,CAA3C,EAIHzjB,OAJG,CAAN;AAKD;AACF,KAxGqB,CAyGtB;;;AACA,UAAM0lC,cAAc,GAAG54B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC2lC,SAAvB,CAAvB;AACA,QAAG,CAAC3iC,KAAK,CAACwD,OAAN,CAAcxG,OAAO,CAAC2lC,SAAtB,CAAJ,EAAsC3lC,OAAO,CAAC2lC,SAAR,GAAoB,CAAC3lC,OAAO,CAAC2lC,SAAT,CAApB;;AACtC,QAAG3lC,OAAO,CAAC2lC,SAAR,CAAkBzgC,MAAlB,KAA6B,CAAhC,EAAkC;AAChC,YAAM,IAAI+/B,QAAJ,CAAa,8BAAb,EAA6C,CACjD,2BADiD,EAEjD,2EAFiD,EAGhD,OAAMS,cAAe,EAH2B,CAA7C,EAIH1lC,OAJG,CAAN;AAKD;;AACDA,WAAO,CAAC2lC,SAAR,GAAoB3lC,OAAO,CAAC2lC,SAAR,CAAkB1jC,GAAlB,CAAsB,UAAS0jC,SAAT,EAAmB;AAC3D,UAAGA,SAAS,KAAKznC,SAAd,IAA2BynC,SAAS,KAAK,IAAzC,IAAiDA,SAAS,KAAK,KAAlE,EAAwE;AACtE,eAAOrkB,MAAM,CAACre,IAAP,CAAY,GAAZ,EAAiBjD,OAAO,CAACmjB,QAAzB,CAAP;AACD;;AACD,UAAG,OAAOwiB,SAAP,KAAqB,QAAxB,EAAiC;AAC/BA,iBAAS,GAAGrkB,MAAM,CAACre,IAAP,CAAY0iC,SAAZ,EAAuB3lC,OAAO,CAACmjB,QAA/B,CAAZ;AACD;;AACD,UAAI,CAAC7B,MAAM,CAACC,QAAP,CAAgBokB,SAAhB,CAAD,IAA+BA,SAAS,CAACzgC,MAAV,KAAqB,CAAxD,EAA0D;AACxD,cAAM,IAAI+/B,QAAJ,CAAa,8BAAb,EAA6C,CACjD,2BADiD,EAEjD,2EAFiD,EAGhD,OAAMS,cAAe,EAH2B,CAA7C,EAIH1lC,OAJG,CAAN;AAKD;;AACD,aAAO2lC,SAAP;AACD,KAfmB,CAApB,CAnHsB,CAmItB;;AACA,QAAG3lC,OAAO,CAACyiC,MAAR,KAAmBvkC,SAAnB,IAAgC8B,OAAO,CAACyiC,MAAR,KAAmB,IAAtD,EAA2D;AACzDziC,aAAO,CAACyiC,MAAR,GAAiBnhB,MAAM,CAACre,IAAP,CAAY,GAAZ,EAAiBjD,OAAO,CAACmjB,QAAzB,CAAjB;AACD,KAFD,MAEM,IAAG,OAAOnjB,OAAO,CAACyiC,MAAf,KAA0B,QAA7B,EAAsC;AAC1CziC,aAAO,CAACyiC,MAAR,GAAiBnhB,MAAM,CAACre,IAAP,CAAYjD,OAAO,CAACyiC,MAApB,EAA4BziC,OAAO,CAACmjB,QAApC,CAAjB;AACD,KAFK,MAEA,IAAInjB,OAAO,CAACyiC,MAAR,KAAmB,IAAnB,IAA2BziC,OAAO,CAACyiC,MAAR,KAAmB,KAAlD,EAAwD;AAC5DziC,aAAO,CAACyiC,MAAR,GAAiB,IAAjB;AACD;;AACD,QAAGziC,OAAO,CAACyiC,MAAR,KAAmB,IAAtB,EAA2B;AACzB,UAAG,CAACnhB,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAACyiC,MAAxB,CAAJ,EAAoC;AAClC,cAAM,IAAI/+B,KAAJ,CAAW,uEAAsEoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACyiC,MAAvB,CAA+B,EAAhH,CAAN;AACD;AACF,KA/IqB,CAgJtB;;;AACA,QAAGziC,OAAO,CAACiD,IAAR,KAAiB/E,SAAjB,IAA8B8B,OAAO,CAACiD,IAAR,KAAiB,IAAlD,EAAuD;AACrDjD,aAAO,CAACiD,IAAR,GAAe,CAAf;AACD,KAFD,MAEK;AACH,UAAG,OAAOjD,OAAO,CAACiD,IAAf,KAAwB,QAAxB,IAAoC,MAAMyhB,IAAN,CAAW1kB,OAAO,CAACiD,IAAnB,CAAvC,EAAgE;AAC9DjD,eAAO,CAACiD,IAAR,GAAeqc,QAAQ,CAACtf,OAAO,CAACiD,IAAT,CAAvB;AACD;;AACD,UAAGR,MAAM,CAACC,SAAP,CAAiB1C,OAAO,CAACiD,IAAzB,CAAH,EAAkC;AAChC,YAAGjD,OAAO,CAACiD,IAAR,GAAe,CAAlB,EAAoB;AAClB,gBAAM,IAAIS,KAAJ,CAAW,wDAAuDoJ,IAAI,CAACC,SAAL,CAAeqO,IAAI,CAACnY,IAApB,CAA0B,EAA5F,CAAN;AACD;AACF,OAJD,MAIK;AACH,cAAM,IAAIS,KAAJ,CAAW,gDAA+CoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACiD,IAAvB,CAA6B,EAAvF,CAAN;AACD;AACF,KA9JqB,CA+JtB;;;AACA,QAAGjD,OAAO,CAAC4lC,SAAR,KAAsB1nC,SAAtB,IAAmC8B,OAAO,CAAC4lC,SAAR,KAAsB,IAA5D,EAAiE;AAC/D5lC,aAAO,CAAC4lC,SAAR,GAAoB,CAApB;AACD,KAFD,MAEK;AACH,UAAG,OAAO5lC,OAAO,CAAC4lC,SAAf,KAA6B,QAA7B,IAAyC,MAAMlhB,IAAN,CAAW1kB,OAAO,CAAC4lC,SAAnB,CAA5C,EAA0E;AACxE5lC,eAAO,CAAC4lC,SAAR,GAAoBtmB,QAAQ,CAACtf,OAAO,CAAC4lC,SAAT,CAA5B;AACD;;AACD,UAAGnjC,MAAM,CAACC,SAAP,CAAiB1C,OAAO,CAAC4lC,SAAzB,CAAH,EAAuC;AACrC,YAAG5lC,OAAO,CAAC4lC,SAAR,IAAqB,CAAxB,EAA0B;AACxB,gBAAM,IAAIliC,KAAJ,CAAW,4EAA2EoJ,IAAI,CAACC,SAAL,CAAeqO,IAAI,CAACwqB,SAApB,CAA+B,EAArH,CAAN;AACD;AACF,OAJD,MAIK;AACH,cAAM,IAAIliC,KAAJ,CAAW,qDAAoDoJ,IAAI,CAACC,SAAL,CAAeqO,IAAI,CAACwqB,SAApB,CAA+B,EAA9F,CAAN;AACD;AACF,KA7KqB,CA8KtB;;;AACA,QAAG5lC,OAAO,CAAC6lC,sBAAR,KAAmC3nC,SAAnC,IAAgD8B,OAAO,CAAC6lC,sBAAR,KAAmC,IAAtF,EAA2F;AACzF7lC,aAAO,CAAC6lC,sBAAR,GAAiC,KAAjC;AACD,KAFD,MAEM,IAAG,OAAO7lC,OAAO,CAAC6lC,sBAAf,KAA0C,QAA7C,EAAsD;AAC1D7lC,aAAO,CAAC6lC,sBAAR,GAAiCl4B,IAAI,CAACC,KAAL,CAAW5N,OAAO,CAAC6lC,sBAAnB,CAAjC;;AACA,UAAG7lC,OAAO,CAAC6lC,sBAAR,KAAmC,CAAtC,EAAwC;AACtC7lC,eAAO,CAAC6lC,sBAAR,GAAiC,KAAjC;AACD;AACF,KALK,MAKA,IAAG,OAAO7lC,OAAO,CAAC6lC,sBAAf,KAA0C,SAA7C,EAAuD;AAC3D,YAAM,IAAIZ,QAAJ,CAAa,2CAAb,EAA0D,CAC9D,0CAD8D,EAE9D,kDAF8D,EAG7D,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC6lC,sBAAvB,CAA+C,EAHQ,CAA1D,EAIH7lC,OAJG,CAAN;AAKD;;AACD,QAAGA,OAAO,CAAC6lC,sBAAR,KAAmC,IAAnC,IAA2C7lC,OAAO,CAACulC,OAAR,KAAoB,KAAlE,EAAwE;AACtE,YAAM,IAAIN,QAAJ,CAAa,6CAAb,EAA4D,CAChE,qCADgE,EAEhE,iDAFgE,CAA5D,EAGHjlC,OAHG,CAAN;AAID,KAlMqB,CAmMtB;;;AACA,QAAGA,OAAO,CAAC8lC,IAAR,KAAiB5nC,SAAjB,IAA8B8B,OAAO,CAAC8lC,IAAR,KAAiB,IAA/C,IAAuD9lC,OAAO,CAAC8lC,IAAR,KAAiB,KAA3E,EAAiF;AAC/E9lC,aAAO,CAAC8lC,IAAR,GAAe,KAAf;AACD,KAFD,MAEM,IAAG9lC,OAAO,CAAC8lC,IAAR,KAAiB,IAApB,EAAyB;AAC7B,YAAM,IAAIpiC,KAAJ,CAAW,0CAAyCoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC8lC,IAAvB,CAA6B,EAAjF,CAAN;AACD,KAxMqB,CAyMtB;;;AACA,QAAG9lC,OAAO,CAAC+lC,eAAR,KAA4B7nC,SAA5B,IAAyC8B,OAAO,CAAC+lC,eAAR,KAA4B,IAArE,IAA6E/lC,OAAO,CAAC+lC,eAAR,KAA4B,KAA5G,EAAkH;AAChH/lC,aAAO,CAAC+lC,eAAR,GAA0B,CAA1B;AACD,KAFD,MAEM,IAAGtjC,MAAM,CAACC,SAAP,CAAiB1C,OAAO,CAAC+lC,eAAzB,KAA6C/lC,OAAO,CAAC+lC,eAAR,IAA2B,CAA3E,EAA6E,CACjF;AACD,KAFK,MAEA,IAAG,OAAO/lC,OAAO,CAAC+lC,eAAf,KAAmC,QAAnC,IAA+C,MAAMrhB,IAAN,CAAW1kB,OAAO,CAAC+lC,eAAnB,CAAlD,EAAsF;AAC1F/lC,aAAO,CAAC+lC,eAAR,GAA0BzmB,QAAQ,CAACtf,OAAO,CAAC+lC,eAAT,CAAlC;AACD,KAFK,MAED;AACH,YAAM,IAAIriC,KAAJ,CAAW,mEAAkEoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC+lC,eAAvB,CAAwC,EAArH,CAAN;AACD,KAlNqB,CAmNtB;;;AACA,QAAG/lC,OAAO,CAACgmC,OAAR,KAAoB9nC,SAApB,IAAiC8B,OAAO,CAACgmC,OAAR,KAAoB,IAArD,IAA6DhmC,OAAO,CAACgmC,OAAR,KAAoB,KAApF,EAA0F;AACxFhmC,aAAO,CAACgmC,OAAR,GAAkB9nC,SAAlB;AACD,KAFD,MAEM,IAAGojB,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAACgmC,OAAxB,CAAH,EAAoC;AACxC,UAAGhmC,OAAO,CAACgmC,OAAR,CAAgB9gC,MAAhB,KAA2B,CAA9B,EAAgC;AAC9B,cAAM,IAAIxB,KAAJ,CAAW,oDAAX,CAAN;AACD;;AACD,UAAG1D,OAAO,CAACmjB,QAAR,KAAqB,IAAxB,EAA6B,CAC3B;AACD,OAFD,MAEK;AACHnjB,eAAO,CAACgmC,OAAR,GAAkBhmC,OAAO,CAACgmC,OAAR,CAAgBlqB,QAAhB,CAAyB9b,OAAO,CAACmjB,QAAjC,CAAlB;AACD;AACF,KATK,MASA,IAAG,OAAOnjB,OAAO,CAACgmC,OAAf,KAA2B,QAA9B,EAAuC;AAC3C,UAAGhmC,OAAO,CAACgmC,OAAR,CAAgB9gC,MAAhB,KAA2B,CAA9B,EAAgC;AAC9B,cAAM,IAAIxB,KAAJ,CAAW,oDAAX,CAAN;AACD,OAH0C,CAI3C;;AACD,KALK,MAKD;AACH,YAAM,IAAIA,KAAJ,CAAW,6DAA4D1D,OAAO,CAACgmC,OAAQ,EAAvF,CAAN;AACD,KAtOqB,CAuOtB;;;AACA,QAAGhmC,OAAO,CAACimC,SAAR,KAAsB/nC,SAAtB,IAAmC8B,OAAO,CAACimC,SAAR,KAAsB,IAA5D,EAAiE;AAC/DjmC,aAAO,CAACimC,SAAR,GAAoB/nC,SAApB;AACD,KAFD,MAEM,IAAG,OAAO8B,OAAO,CAACimC,SAAf,KAA6B,UAAhC,EAA2C;AAC/C,YAAM,IAAIhB,QAAJ,CAAa,8BAAb,EAA6C,CACjD,6BADiD,EAEjD,oBAFiD,EAGhD,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACimC,SAAvB,CAAkC,EAHQ,CAA7C,EAIHjmC,OAJG,CAAN;AAKD,KAhPqB,CAiPtB;;;AACA,QAAGA,OAAO,CAACkmC,KAAR,KAAkB,IAAlB,IAA0BlmC,OAAO,CAACkmC,KAAR,KAAkB,KAA5C,IAAqDlmC,OAAO,CAACkmC,KAAR,KAAkB,EAA1E,EAA6E;AAC3ElmC,aAAO,CAACkmC,KAAR,GAAgB,IAAhB;AACD,KAFD,MAEK;AACH,UAAGlmC,OAAO,CAACkmC,KAAR,KAAkBhoC,SAAlB,IAA+B8B,OAAO,CAACkmC,KAAR,KAAkB,IAApD,EAAyD;AACvDlmC,eAAO,CAACkmC,KAAR,GAAgB5kB,MAAM,CAACre,IAAP,CAAY,GAAZ,EAAiBjD,OAAO,CAACmjB,QAAzB,CAAhB;AACD,OAFD,MAEM,IAAG,OAAOnjB,OAAO,CAACkmC,KAAf,KAAyB,QAA5B,EAAqC;AACzClmC,eAAO,CAACkmC,KAAR,GAAgB5kB,MAAM,CAACre,IAAP,CAAYjD,OAAO,CAACkmC,KAApB,EAA2BlmC,OAAO,CAACmjB,QAAnC,CAAhB;AACD;;AACD,UAAG,CAAC7B,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAACkmC,KAAxB,CAAJ,EAAmC;AACjC,cAAM,IAAIxiC,KAAJ,CAAW,2DAA0DoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACkmC,KAAvB,CAA8B,EAAnG,CAAN;AACD;AACF,KA7PqB,CA8PtB;;;AACA,QAAGlmC,OAAO,CAACmmC,GAAR,KAAgBjoC,SAAhB,IAA6B8B,OAAO,CAACmmC,GAAR,KAAgB,IAA7C,IAAqDnmC,OAAO,CAACmmC,GAAR,KAAgB,KAAxE,EAA8E;AAC5EnmC,aAAO,CAACmmC,GAAR,GAAc,KAAd;AACD,KAFD,MAEM,IAAGnmC,OAAO,CAACmmC,GAAR,KAAgB,IAAnB,EAAwB;AAC5B,YAAM,IAAIziC,KAAJ,CAAW,yCAAwCoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACmmC,GAAvB,CAA4B,EAA/E,CAAN;AACD,KAnQqB,CAoQtB;;;AACA,QAAG,CAACnmC,OAAO,CAAComC,gBAAZ,EAA6B;AAC3BpmC,aAAO,CAAComC,gBAAR,GAA2B,EAA3B;AACD,KAFD,MAEM,IAAG,CAACpjC,KAAK,CAACwD,OAAN,CAAcxG,OAAO,CAAComC,gBAAtB,CAAJ,EAA4C;AAChDpmC,aAAO,CAAComC,gBAAR,GAA2B,CAACpmC,OAAO,CAAComC,gBAAT,CAA3B;AACD;;AACDpmC,WAAO,CAAComC,gBAAR,GAA2BpmC,OAAO,CAAComC,gBAAR,CAAyBnkC,GAAzB,CAA8B,UAASokC,EAAT,EAAY;AACnE,UAAG,OAAOA,EAAP,KAAc,QAAjB,EAA0B;AACxBA,UAAE,GAAG/kB,MAAM,CAACre,IAAP,CAAYojC,EAAZ,EAAgBrmC,OAAO,CAACmjB,QAAxB,CAAL;AACD;;AACD,aAAOkjB,EAAP;AACD,KAL0B,CAA3B,CA1QsB,CAgRtB;;AACA,QAAG,OAAOrmC,OAAO,CAACsmC,KAAf,KAAyB,SAA5B,EAAsC,CACpC;AACD,KAFD,MAEM,IAAGtmC,OAAO,CAACsmC,KAAR,KAAkBpoC,SAAlB,IAA+B8B,OAAO,CAACsmC,KAAR,KAAkB,IAApD,EAAyD;AAC7DtmC,aAAO,CAACsmC,KAAR,GAAgB,KAAhB;AACD,KAFK,MAED;AACH,YAAM,IAAI5iC,KAAJ,CAAW,gDAA+CoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACsmC,KAAvB,CAA8B,EAAxF,CAAN;AACD,KAvRqB,CAwRtB;;;AACA,QAAG,OAAOtmC,OAAO,CAACumC,kBAAf,KAAsC,SAAzC,EAAmD,CACjD;AACD,KAFD,MAEM,IAAGvmC,OAAO,CAACumC,kBAAR,KAA+BroC,SAA/B,IAA4C8B,OAAO,CAACumC,kBAAR,KAA+B,IAA9E,EAAmF;AACvFvmC,aAAO,CAACumC,kBAAR,GAA6B,KAA7B;AACD,KAFK,MAED;AACH,YAAM,IAAI7iC,KAAJ,CAAW,6DAA4DoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACumC,kBAAvB,CAA2C,EAAlH,CAAN;AACD;;AACD,QAAG,OAAOvmC,OAAO,CAACwmC,uBAAf,KAA2C,SAA9C,EAAwD,CACtD;AACD,KAFD,MAEM,IAAGxmC,OAAO,CAACwmC,uBAAR,KAAoCtoC,SAApC,IAAiD8B,OAAO,CAACwmC,uBAAR,KAAoC,IAAxF,EAA6F;AACjGxmC,aAAO,CAACwmC,uBAAR,GAAkC,KAAlC;AACD,KAFK,MAED;AACH,YAAM,IAAI9iC,KAAJ,CAAW,kEAAiEoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACwmC,uBAAvB,CAAgD,EAA5H,CAAN;AACD;;AACD,QAAG,OAAOxmC,OAAO,CAACymC,uBAAf,KAA2C,SAA9C,EAAwD,CACtD;AACD,KAFD,MAEM,IAAGzmC,OAAO,CAACymC,uBAAR,KAAoCvoC,SAApC,IAAiD8B,OAAO,CAACymC,uBAAR,KAAoC,IAAxF,EAA6F;AACjGzmC,aAAO,CAACymC,uBAAR,GAAkC,KAAlC;AACD,KAFK,MAED;AACH,YAAM,IAAI/iC,KAAJ,CAAW,kEAAiEoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACymC,uBAAvB,CAAgD,EAA5H,CAAN;AACD,KA7SqB,CA8StB;;;AACA,QAAG,OAAOzmC,OAAO,CAAC0mC,gBAAf,KAAoC,SAAvC,EAAiD,CAC/C;AACD,KAFD,MAEM,IAAG1mC,OAAO,CAAC0mC,gBAAR,KAA6BxoC,SAA7B,IAA0C8B,OAAO,CAAC0mC,gBAAR,KAA6B,IAA1E,EAA+E;AACnF1mC,aAAO,CAAC0mC,gBAAR,GAA2B,KAA3B;AACD,KAFK,MAED;AACH,YAAM,IAAIhjC,KAAJ,CAAW,2DAA0DoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC0mC,gBAAvB,CAAyC,EAA9G,CAAN;AACD,KArTqB,CAsTtB;;;AACA,QAAG,OAAO1mC,OAAO,CAAC2mC,4BAAf,KAAgD,SAAnD,EAA6D,CAC3D;AACD,KAFD,MAEM,IAAG3mC,OAAO,CAAC2mC,4BAAR,KAAyCzoC,SAAzC,IAAsD8B,OAAO,CAAC2mC,4BAAR,KAAyC,IAAlG,EAAuG;AAC3G3mC,aAAO,CAAC2mC,4BAAR,GAAuC,KAAvC;AACD,KAFK,MAED;AACH,YAAM,IAAIjjC,KAAJ,CAAW,uEAAsEoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC2mC,4BAAvB,CAAqD,EAAtI,CAAN;AACD,KA7TqB,CA8TtB;;;AACA,QAAG,OAAO3mC,OAAO,CAAC4mC,qBAAf,KAAyC,SAA5C,EAAsD,CACpD;AACD,KAFD,MAEM,IAAG5mC,OAAO,CAAC4mC,qBAAR,KAAkC1oC,SAAlC,IAA+C8B,OAAO,CAAC4mC,qBAAR,KAAkC,IAApF,EAAyF;AAC7F5mC,aAAO,CAAC4mC,qBAAR,GAAgC,KAAhC;AACD,KAFK,MAED;AACH,YAAM,IAAIljC,KAAJ,CAAW,gEAA+DoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC4mC,qBAAvB,CAA8C,EAAxH,CAAN;AACD,KArUqB,CAsUtB;;;AACA,QAAG5mC,OAAO,CAAC6mC,KAAR,KAAkB3oC,SAAlB,IAA+B8B,OAAO,CAAC6mC,KAAR,KAAkB,IAAjD,IAAyD7mC,OAAO,CAAC6mC,KAAR,KAAkB,KAA9E,EAAoF;AAClF7mC,aAAO,CAAC6mC,KAAR,GAAgB,KAAhB;AACD,KAFD,MAEM,IAAG7mC,OAAO,CAAC6mC,KAAR,KAAkB,IAArB,EAA0B;AAC9B,YAAM,IAAInjC,KAAJ,CAAW,gDAA+CoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC6mC,KAAvB,CAA8B,EAAxF,CAAN;AACD,KA3UqB,CA4UtB;;;AACA,QAAG7mC,OAAO,CAAC8mC,KAAR,KAAkB5oC,SAAlB,IAA+B8B,OAAO,CAAC8mC,KAAR,KAAkB,IAAjD,IAAyD9mC,OAAO,CAAC8mC,KAAR,KAAkB,KAA9E,EAAoF;AAClF9mC,aAAO,CAAC8mC,KAAR,GAAgB,KAAhB;AACD,KAFD,MAEM,IAAG9mC,OAAO,CAAC8mC,KAAR,KAAkB,IAArB,EAA0B;AAC9B,YAAM,IAAIpjC,KAAJ,CAAW,gDAA+CoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC8mC,KAAvB,CAA8B,EAAxF,CAAN;AACD,KAjVqB,CAkVtB;;;AACA,QAAG9mC,OAAO,CAAC+mC,IAAR,KAAiB7oC,SAAjB,IAA8B8B,OAAO,CAAC+mC,IAAR,KAAiB,IAA/C,IAAuD/mC,OAAO,CAAC+mC,IAAR,KAAiB,KAA3E,EAAiF;AAC/E/mC,aAAO,CAAC+mC,IAAR,GAAe,KAAf;AACD,KAFD,MAEM,IAAG/mC,OAAO,CAAC+mC,IAAR,KAAiB,IAApB,EAAyB;AAC7B,YAAM,IAAIrjC,KAAJ,CAAW,+CAA8CoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC+mC,IAAvB,CAA6B,EAAtF,CAAN;AACD,KAvVqB,CAwVtB;;;AACA,QAAG/mC,OAAO,CAAC+mC,IAAR,KAAiB,IAAjB,IAAyB3rB,IAAI,CAAC0rB,KAAL,KAAe,KAA3C,EAAiD;AAC/C9mC,aAAO,CAAC8mC,KAAR,GAAgB,IAAhB;AACD,KAFD,MAEM,IAAG9mC,OAAO,CAAC8mC,KAAR,KAAkB,IAArB,EAA0B;AAC9B9mC,aAAO,CAAC8mC,KAAR,GAAgB,KAAhB;AACD;;AACD,QAAG9mC,OAAO,CAAC+mC,IAAR,KAAiB,IAAjB,IAAyB3rB,IAAI,CAACyrB,KAAL,KAAe,KAA3C,EAAiD;AAC/C7mC,aAAO,CAAC6mC,KAAR,GAAgB,IAAhB;AACD,KAFD,MAEM,IAAG7mC,OAAO,CAAC6mC,KAAR,KAAkB,IAArB,EAA0B;AAC9B7mC,aAAO,CAAC6mC,KAAR,GAAgB,KAAhB;AACD,KAlWqB,CAmWtB;;;AACA,QAAG7mC,OAAO,CAACgnC,EAAR,KAAe9oC,SAAf,IAA4B8B,OAAO,CAACgnC,EAAR,KAAe,IAA9C,EAAmD;AACjDhnC,aAAO,CAACgnC,EAAR,GAAa,CAAC,CAAd;AACD,KAFD,MAEK;AACH,UAAG,OAAOhnC,OAAO,CAACgnC,EAAf,KAAsB,QAAtB,IAAkC,MAAMtiB,IAAN,CAAW1kB,OAAO,CAACgnC,EAAnB,CAArC,EAA4D;AAC1DhnC,eAAO,CAACgnC,EAAR,GAAa1nB,QAAQ,CAACtf,OAAO,CAACgnC,EAAT,CAArB;AACD;;AACD,UAAGvkC,MAAM,CAACC,SAAP,CAAiB1C,OAAO,CAACgnC,EAAzB,CAAH,EAAgC;AAC9B,YAAGhnC,OAAO,CAACgnC,EAAR,IAAc,CAAjB,EAAmB;AACjB,gBAAM,IAAItjC,KAAJ,CAAW,qEAAoEoJ,IAAI,CAACC,SAAL,CAAeqO,IAAI,CAAC4rB,EAApB,CAAwB,EAAvG,CAAN;AACD;AACF,OAJD,MAIK;AACH,cAAM,IAAItjC,KAAJ,CAAW,8CAA6CoJ,IAAI,CAACC,SAAL,CAAeqO,IAAI,CAAC4rB,EAApB,CAAwB,EAAhF,CAAN;AACD;AACF,KAjXqB,CAkXtB;;;AACA,QAAGhnC,OAAO,CAACinC,OAAR,KAAoB/oC,SAApB,IAAiC8B,OAAO,CAACinC,OAAR,KAAoB,IAAxD,EAA6D;AAC3DjnC,aAAO,CAACinC,OAAR,GAAkB,CAAC,CAAnB;AACD,KAFD,MAEK;AACH,UAAG,OAAOjnC,OAAO,CAACinC,OAAf,KAA2B,QAA3B,IAAuC,MAAMviB,IAAN,CAAW1kB,OAAO,CAACinC,OAAnB,CAA1C,EAAsE;AACpEjnC,eAAO,CAACinC,OAAR,GAAkB3nB,QAAQ,CAACtf,OAAO,CAACinC,OAAT,CAA1B;AACD;;AACD,UAAGxkC,MAAM,CAACC,SAAP,CAAiB1C,OAAO,CAACinC,OAAzB,CAAH,EAAqC;AACnC,YAAGjnC,OAAO,CAACinC,OAAR,IAAmB,CAAtB,EAAwB;AACtB,gBAAM,IAAIvjC,KAAJ,CAAW,0EAAyEoJ,IAAI,CAACC,SAAL,CAAeqO,IAAI,CAAC6rB,OAApB,CAA6B,EAAjH,CAAN;AACD;AACF,OAJD,MAIK;AACH,cAAM,IAAIvjC,KAAJ,CAAW,mDAAkDoJ,IAAI,CAACC,SAAL,CAAeqO,IAAI,CAAC6rB,OAApB,CAA6B,EAA1F,CAAN;AACD;AACF;;AACD,SAAKnB,IAAL,GAAY;AACV9W,WAAK,EAAE,CADG;AAEVkY,mBAAa,EAAE,CAFL;AAGVC,iBAAW,EAAE,CAHH;AAIVC,0BAAoB,EAAE,CAJZ;AAKVC,WAAK,EAAE,CALG;AAMVC,aAAO,EAAE;AANC,KAAZ;AAQA,SAAKtnC,OAAL,GAAeA,OAAf;AACA,SAAKunC,KAAL,GAAa;AACXC,gBAAU,EAAE,KADD;AAEXC,mBAAa,EAAE,CAFJ;AAGXC,eAAS,EAAEvC,WAHA;AAIXwC,gBAAU,EAAE,KAJD;AAKX;AACAC,WAAK,EAAE1pC,SANI;AAOX2pC,aAAO,EAAE7nC,OAAO,CAAC4lC,SAAR,KAAsB,CAPpB;AAQXkC,cAAQ,EAAE,KARC;AASX;AACAC,mBAAa,EAAEzmB,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAACyiC,MAAxB,KAAmCnhB,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAACkmC,KAAxB,CAAnC,IAAqE5kB,MAAM,CAAC0mB,OAAP,CAAehoC,OAAO,CAACyiC,MAAvB,EAA+BziC,OAAO,CAACkmC,KAAvC,MAAkD,CAV3H;AAWX;AACA+B,0BAAoB,EAAEjlC,KAAK,CAACwD,OAAN,CAAcxG,OAAO,CAACulC,OAAtB,IAAiCvlC,OAAO,CAACulC,OAAR,CAAgBrgC,MAAjD,GAA0DhH,SAZrE;AAaXgqC,WAAK,EAAE,IAAInE,gBAAJ,CAAqB,EAArB,CAbI;AAcXoE,wBAAkB,EAAE7C,oBAdT;AAeX8C,sBAAgB,EAAEz6B,IAAI,CAACge,GAAL,EAChB;AACA3rB,aAAO,CAACyjB,OAAR,KAAoB,IAApB,GAA2BzjB,OAAO,CAACyjB,OAAR,CAAgBve,MAA3C,GAAoD,CAFpC,EAGhB;AACA,SAAGlF,OAAO,CAAC2lC,SAAR,CAAkB1jC,GAAlB,CAAwB0jC,SAAD,IAAeA,SAAS,CAACzgC,MAAhD,CAJa,EAKhB;AACAlF,aAAO,CAACkmC,KAAR,KAAkB,IAAlB,GAAyBlmC,OAAO,CAACkmC,KAAR,CAAchhC,MAAvC,GAAgD,CANhC,CAfP;AAuBXmjC,iBAAW,EAAEnqC,SAvBF;AAwBXoqC,aAAO,EAAE,KAxBE;AAyBXC,UAAI,EAAE,KAzBK;AA0BXC,eAAS,EAAE,IAAIzE,gBAAJ,CAAqB,GAArB,CA1BA;AA2BX0E,YAAM,EAAE,EA3BG;AA4BXC,oBAAc,EAAE,KA5BL;AA6BXC,mBAAa,EAAE,CA7BJ;AA8BXC,8BAAwB,EAAE5oC,OAAO,CAAComC,gBAAR,CAAyBlhC,MAAzB,KAAoC,CAApC,GAAwC,CAAxC,GAA4CyI,IAAI,CAACge,GAAL,CAAS,GAAG3rB,OAAO,CAAComC,gBAAR,CAAyBnkC,GAAzB,CAA+B4mC,CAAD,IAAOA,CAAC,CAAC3jC,MAAvC,CAAZ,CA9B3D;AA+BX4jC,eAAS,EAAE,CAACxnB,MAAM,CAACre,IAAP,CAAY,GAAZ,EAAiBjD,OAAO,CAACmjB,QAAzB,EAAmC,CAAnC,CAAD,EAAwC7B,MAAM,CAACre,IAAP,CAAY,IAAZ,EAAkBjD,OAAO,CAACmjB,QAA1B,EAAoC,CAApC,CAAxC,CA/BA;AAgCX4lB,gBAAU,EAAE,KAhCD;AAiCXC,qBAAe,EAAE;AAjCN,KAAb;AAmCD,GAnb4B,CAob7B;;;AACAC,YAAU,CAACxX,GAAD,EAAMtO,QAAN,EAAgBH,QAAhB,EAAyB;AACjC,QAAG,KAAKukB,KAAL,CAAWgB,IAAX,KAAoB,IAAvB,EAA4B;AAC1B;AACD;;AACD,UAAMllB,GAAG,GAAG,KAAK6lB,OAAL,CAAazX,GAAb,EAAkB,KAAlB,CAAZ;;AACA,QAAGpO,GAAG,KAAKnlB,SAAX,EAAqB;AACnB,WAAKqpC,KAAL,CAAWgB,IAAX,GAAkB,IAAlB;AACD;;AACDvlB,YAAQ,CAACK,GAAD,CAAR;AACD,GA9b4B,CA+b7B;;;AACA8lB,QAAM,CAACnmB,QAAD,EAAU;AACd,QAAG,KAAKukB,KAAL,CAAWgB,IAAX,KAAoB,IAAvB,EAA4B;AAC1B;AACD;;AACD,UAAMllB,GAAG,GAAG,KAAK6lB,OAAL,CAAahrC,SAAb,EAAwB,IAAxB,CAAZ;;AACA8kB,YAAQ,CAACK,GAAD,CAAR;AACD,GAtc4B,CAuc7B;;;AACA6lB,SAAO,CAACE,OAAD,EAAUrqC,GAAV,EAAc;AACnB,0BAA2H,KAAKiB,OAAhI;AAAA,UAAOklC,GAAP,iBAAOA,GAAP;AAAA,UAAYzhB,OAAZ,iBAAYA,OAAZ;AAAA,UAAqBgf,MAArB,iBAAqBA,MAArB;AAAA,UAA6BmD,SAA7B,iBAA6BA,SAA7B;AAAA,UAAwCkB,KAAxC,iBAAwCA,KAAxC;AAAA,UAA+Cf,eAA/C,iBAA+CA,eAA/C;AAAA,UAAgEG,KAAhE,iBAAgEA,KAAhE;AAAA,UAAuEC,GAAvE,iBAAuEA,GAAvE;AAAA,UAA4EG,KAA5E,iBAA4EA,KAA5E;AAAA,UAAmFO,KAAnF,iBAAmFA,KAAnF;AAAA,UAA0FH,gBAA1F,iBAA0FA,gBAA1F;AAAA,UAA4GM,EAA5G,iBAA4GA,EAA5G;AAAA,UAAgHC,OAAhH,iBAAgHA,OAAhH;AACA,QAAKb,gBAAL,GAAyB,KAAKpmC,OAA9B,CAAKomC,gBAAL;AACA,wBAA4D,KAAKmB,KAAjE;AAAA,UAAOC,UAAP,eAAOA,UAAP;AAAA,UAAmBa,WAAnB,eAAmBA,WAAnB;AAAA,UAAgCG,SAAhC,eAAgCA,SAAhC;AAAA,UAA2CT,aAA3C,eAA2CA,aAA3C;AACA,QAAItW,GAAJ;;AACA,QAAG4W,WAAW,KAAKnqC,SAAnB,EAA6B;AAC3B,UAAGkrC,OAAO,KAAKlrC,SAAf,EAAyB;AACvB;AACA,aAAK6F,IAAL,CAAU,IAAV;AACA;AACD,OAJD,MAIK;AACH0tB,WAAG,GAAG2X,OAAN;AACD;AACF,KARD,MAQM,IAAGf,WAAW,KAAKnqC,SAAhB,IAA6BkrC,OAAO,KAAKlrC,SAA5C,EAAsD;AAC1DuzB,SAAG,GAAG4W,WAAN;AACD,KAFK,MAED;AACH5W,SAAG,GAAGnQ,MAAM,CAAC4a,MAAP,CAAc,CAACmM,WAAD,EAAce,OAAd,CAAd,CAAN;AACD,KAjBkB,CAkBnB;;;AACA,QAAG5B,UAAU,KAAK,KAAlB,EAAwB;AACtB,UAAGtC,GAAG,KAAK,KAAX,EAAiB;AACf,aAAKqC,KAAL,CAAWC,UAAX,GAAwB,IAAxB;AACD,OAFD,MAEM,IAAG/V,GAAG,CAACvsB,MAAJ,GAAa,CAAhB,EAAkB;AACtB;AACA,YAAGnG,GAAG,KAAK,KAAX,EAAiB;AACf;AACA,eAAKwoC,KAAL,CAAWc,WAAX,GAAyB5W,GAAzB;AACA;AACD;AACF,OAPK,MAOD;AACH,aAAI,IAAItO,QAAR,IAAoBwhB,IAApB,EAAyB;AACvB,cAAGA,IAAI,CAACxhB,QAAD,CAAJ,CAAe6kB,OAAf,CAAuBvW,GAAvB,EAA4B,CAA5B,EAA+BkT,IAAI,CAACxhB,QAAD,CAAJ,CAAeje,MAA9C,MAA0D,CAA7D,EAA+D;AAC7D;AACA,gBAAImkC,SAAS,GAAG1E,IAAI,CAACxhB,QAAD,CAAJ,CAAeje,MAA/B;AACA,iBAAKqiC,KAAL,CAAWE,aAAX,IAA4B4B,SAA5B;AACA5X,eAAG,GAAGA,GAAG,CAACvqB,KAAJ,CAAUmiC,SAAV,CAAN,CAJ6D,CAK7D;;AACA,iBAAKtE,kBAAL,iCAA4B,KAAKD,iBAAjC;AAAoD3hB,sBAAQ,EAAEA;AAA9D;;AACA;AACD;AACF;;AACD,aAAKokB,KAAL,CAAWC,UAAX,GAAwB,IAAxB;AACD;AACF;;AACD,UAAM8B,MAAM,GAAG7X,GAAG,CAACvsB,MAAnB;AACA,QAAIoZ,GAAJ;;AACA,SAAIA,GAAG,GAAG,CAAV,EAAaA,GAAG,GAAGgrB,MAAnB,EAA2BhrB,GAAG,EAA9B,EAAiC;AAC/B;AACA;AACA,UAAG,KAAKirB,cAAL,CAAoBjrB,GAApB,EAAyBgrB,MAAzB,EAAiCvqC,GAAjC,CAAH,EAAyC;AACvC;AACD;;AACD,UAAG,KAAKwoC,KAAL,CAAWyB,eAAX,KAA+B,IAAlC,EAAuC;AACrC,aAAKlD,IAAL,CAAUuB,KAAV;AACA,aAAKE,KAAL,CAAWyB,eAAX,GAA6B,KAA7B;AACD;;AACD,UAAG/B,OAAO,KAAK,CAAC,CAAb,IAAkB,KAAKnB,IAAL,CAAUuB,KAAV,GAAkBJ,OAAvC,EAA+C;AAC7C,aAAKM,KAAL,CAAWgB,IAAX,GAAkB,IAAlB;AACA,aAAKxkC,IAAL,CAAU,IAAV;AACA;AACD,OAd8B,CAe/B;;;AACA,UAAG,KAAKwjC,KAAL,CAAWe,OAAX,KAAuB,KAAvB,IAAgClC,gBAAgB,CAAClhC,MAAjB,KAA4B,CAA/D,EAAiE;AAC/D,cAAMskC,qBAAqB,GAAG,KAAKC,6BAAL,CAAmChY,GAAnC,EAAwCnT,GAAxC,CAA9B;;AACA,YAAGkrB,qBAAH,EAAyB;AACvBpD,0BAAgB,GAAG,KAAKpmC,OAAL,CAAaomC,gBAAhC;AACD;AACF;;AACD,YAAMsD,GAAG,GAAGjY,GAAG,CAACnT,GAAD,CAAf;;AACA,UAAG6nB,GAAG,KAAK,IAAX,EAAgB;AACdqC,iBAAS,CAACrE,MAAV,CAAiBuF,GAAjB;AACD;;AACD,UAAG,CAACA,GAAG,KAAKjF,EAAR,IAAciF,GAAG,KAAKnF,EAAvB,KAA8B,KAAKgD,KAAL,CAAWyB,eAAX,KAA+B,KAAhE,EAAuE;AACrE,aAAKzB,KAAL,CAAWyB,eAAX,GAA6B,IAA7B;AACD,OA5B8B,CA6B/B;AACA;;;AACA,UAAG,KAAKzB,KAAL,CAAWO,QAAX,KAAwB,IAA3B,EAAgC;AAC9B,aAAKP,KAAL,CAAWO,QAAX,GAAsB,KAAtB;AACD,OAFD,MAEK;AACH;AACA;AACA;AACA,YAAGrF,MAAM,KAAK,IAAX,IAAmB,KAAK8E,KAAL,CAAWe,OAAX,KAAuB,IAA1C,IAAkD,KAAKqB,UAAL,CAAgBlY,GAAhB,EAAqBnT,GAArB,EAA0BorB,GAA1B,CAAlD,IAAoFprB,GAAG,GAAGmkB,MAAM,CAACv9B,MAAb,GAAsBokC,MAA7G,EAAoH;AAClH,cAAGvB,aAAH,EAAiB;AACf,gBAAG,KAAK6B,SAAL,CAAenY,GAAf,EAAoBnT,GAAG,GAACmkB,MAAM,CAACv9B,MAA/B,CAAH,EAA0C;AACxC,mBAAKqiC,KAAL,CAAWO,QAAX,GAAsB,IAAtB;AACAxpB,iBAAG,IAAImkB,MAAM,CAACv9B,MAAP,GAAgB,CAAvB;AACA;AACD;AACF,WAND,MAMK;AACH,iBAAKqiC,KAAL,CAAWO,QAAX,GAAsB,IAAtB;AACAxpB,eAAG,IAAImkB,MAAM,CAACv9B,MAAP,GAAgB,CAAvB;AACA;AACD;AACF,SAhBE,CAiBH;AACA;;;AACA,YAAG,KAAKqiC,KAAL,CAAWI,UAAX,KAA0B,KAA1B,IAAmC,KAAKiC,SAAL,CAAenY,GAAf,EAAoBnT,GAApB,CAAtC,EAA+D;AAC7D,cAAG,KAAKipB,KAAL,CAAWe,OAAX,KAAuB,IAA1B,EAA+B;AAC7B,kBAAMuB,OAAO,GAAGpY,GAAG,CAACnT,GAAG,GAAC4nB,KAAK,CAAChhC,MAAX,CAAnB;;AACA,kBAAM4kC,iBAAiB,GAAGjD,KAAK,IAAI,KAAKkD,gBAAL,CAAsBF,OAAtB,CAAnC;;AACA,kBAAMG,gBAAgB,GAAGvmB,OAAO,KAAK,IAAZ,IAAoB,KAAKwmB,cAAL,CAAoBxmB,OAApB,EAA6BgO,GAA7B,EAAkCnT,GAAG,GAAC4nB,KAAK,CAAChhC,MAA5C,EAAoD2kC,OAApD,CAA7C;;AACA,kBAAMK,kBAAkB,GAAG,KAAKC,aAAL,CAAmB1Y,GAAnB,EAAwBnT,GAAG,GAAC4nB,KAAK,CAAChhC,MAAlC,EAA0C2kC,OAA1C,CAA3B;;AACA,kBAAMO,wBAAwB,GAAGhE,gBAAgB,CAAClhC,MAAjB,KAA4B,CAA5B,GAAgC,KAAKukC,6BAAL,CAAmChY,GAAnC,EAAwCnT,GAAG,GAAC4nB,KAAK,CAAChhC,MAAlD,CAAhC,GAA4F,KAAKmlC,mBAAL,CAAyBR,OAAzB,EAAkCpY,GAAlC,EAAuCnT,GAAG,GAAC4nB,KAAK,CAAChhC,MAAjD,CAA7H,CAL6B,CAM7B;AACA;;AACA,gBAAGu9B,MAAM,KAAK,IAAX,IAAmB,KAAKkH,UAAL,CAAgBlY,GAAhB,EAAqBnT,GAArB,EAA0BorB,GAA1B,CAAnB,IAAqD,KAAKE,SAAL,CAAenY,GAAf,EAAoBnT,GAAG,GAAGmkB,MAAM,CAACv9B,MAAjC,CAAxD,EAAiG;AAC/FoZ,iBAAG,IAAImkB,MAAM,CAACv9B,MAAP,GAAgB,CAAvB;AACD,aAFD,MAEM,IAAG,CAAC2kC,OAAD,IAAYK,kBAAZ,IAAkCE,wBAAlC,IAA8DJ,gBAA9D,IAAkFF,iBAArF,EAAuG;AAC3G,mBAAKvC,KAAL,CAAWe,OAAX,GAAqB,KAArB;AACA,mBAAKf,KAAL,CAAWwB,UAAX,GAAwB,IAAxB;AACAzqB,iBAAG,IAAI4nB,KAAK,CAAChhC,MAAN,GAAe,CAAtB;AACA;AACD,aALK,MAKA,IAAGohC,KAAK,KAAK,KAAb,EAAmB;AACvB,oBAAMjjB,GAAG,GAAG,KAAKinB,OAAL,CACV,IAAIrF,QAAJ,CAAa,2BAAb,EAA0C,CACxC,wBADwC,EAEvC,QAAOvC,MAAM,CAACC,YAAP,CAAoBkH,OAApB,CAA6B,GAFG,EAGvC,WAAU,KAAK/D,IAAL,CAAUuB,KAAM,EAHa,EAIxC,4DAJwC,EAKxC,2BALwC,CAA1C,EAMG,KAAKrnC,OANR,EAMiB,KAAKuqC,WAAL,EANjB,CADU,CAAZ;;AASA,kBAAGlnB,GAAG,KAAKnlB,SAAX,EAAsB,OAAOmlB,GAAP;AACvB,aAXK,MAWD;AACH,mBAAKkkB,KAAL,CAAWe,OAAX,GAAqB,KAArB;AACA,mBAAKf,KAAL,CAAWwB,UAAX,GAAwB,IAAxB;AACA,mBAAKxB,KAAL,CAAWW,KAAX,CAAiBlE,OAAjB,CAAyBkC,KAAzB;AACA5nB,iBAAG,IAAI4nB,KAAK,CAAChhC,MAAN,GAAe,CAAtB;AACD;AACF,WAhCD,MAgCK;AACH,gBAAG,KAAKqiC,KAAL,CAAWW,KAAX,CAAiBhjC,MAAjB,KAA4B,CAA/B,EAAiC;AAC/B;AACA,kBAAIohC,KAAK,KAAK,KAAd,EAAqB;AACnB,sBAAMjjB,GAAG,GAAG,KAAKinB,OAAL,CACV,IAAIrF,QAAJ,CAAa,uBAAb,EAAsC,CACpC,wBADoC,EAEnC,2CAA0C,KAAKa,IAAL,CAAUuB,KAAM,EAFvB,CAAtC,EAGG,KAAKrnC,OAHR,EAGiB,KAAKuqC,WAAL,EAHjB,EAGqC;AACnCrC,uBAAK,EAAE,KAAKX,KAAL,CAAWW;AADiB,iBAHrC,CADU,CAAZ;;AAQA,oBAAG7kB,GAAG,KAAKnlB,SAAX,EAAsB,OAAOmlB,GAAP;AACvB;AACF,aAbD,MAaK;AACH,mBAAKkkB,KAAL,CAAWe,OAAX,GAAqB,IAArB;AACAhqB,iBAAG,IAAI4nB,KAAK,CAAChhC,MAAN,GAAe,CAAtB;AACA;AACD;AACF;AACF;;AACD,YAAG,KAAKqiC,KAAL,CAAWe,OAAX,KAAuB,KAA1B,EAAgC;AAC9B,cAAIkC,qBAAqB,GAAG,KAAKH,mBAAL,CAAyBX,GAAzB,EAA8BjY,GAA9B,EAAmCnT,GAAnC,CAA5B;;AACA,cAAGksB,qBAAqB,KAAK,CAA7B,EAA+B;AAC7B;AACA,kBAAMC,eAAe,GAAG,KAAKlD,KAAL,CAAWI,UAAX,IAA0B,KAAKJ,KAAL,CAAWwB,UAAX,KAA0B,KAA1B,IAAmC,KAAKxB,KAAL,CAAWkB,MAAX,CAAkBvjC,MAAlB,KAA6B,CAAhE,IAAqE,KAAKqiC,KAAL,CAAWW,KAAX,CAAiBhjC,MAAjB,KAA4B,CAAnJ;;AACA,gBAAGulC,eAAH,EAAmB;AACjB,mBAAK3E,IAAL,CAAUoB,aAAV,GADiB,CAEjB;AACD,aAHD,MAGK;AACH;AACA,kBAAG,KAAKK,KAAL,CAAWM,OAAX,KAAuB,KAAvB,IAAgC,KAAK/B,IAAL,CAAUuB,KAAV,IAAmB,KAAKE,KAAL,CAAWyB,eAAX,KAA+B,IAA/B,GAAsC,CAAtC,GAAyC,CAA5D,KAAkEpD,SAArG,EAA+G;AAC7G,qBAAK2B,KAAL,CAAWM,OAAX,GAAqB,IAArB;;AACA,qBAAK6C,YAAL;;AACA,qBAAKC,aAAL;;AACArsB,mBAAG,IAAIksB,qBAAqB,GAAG,CAA/B;AACA;AACD,eARE,CASH;;;AACA,kBAAG9D,gBAAgB,KAAK,IAArB,IAA6B,KAAKa,KAAL,CAAWwB,UAAX,KAA0B,KAAvD,IAAgE,KAAKxB,KAAL,CAAWkB,MAAX,CAAkBvjC,MAAlB,KAA6B,CAA7F,IAAkG,KAAKqiC,KAAL,CAAWW,KAAX,CAAiBhjC,MAAjB,KAA4B,CAAjI,EAAmI;AACjI,qBAAK4gC,IAAL,CAAUqB,WAAV;AACA7oB,mBAAG,IAAIksB,qBAAqB,GAAG,CAA/B;AACA;AACD;;AACD,mBAAK1E,IAAL,CAAU9W,KAAV,GAAkB,KAAKuY,KAAL,CAAWE,aAAX,GAA2BnpB,GAA7C;;AACA,oBAAMssB,QAAQ,GAAG,KAAKC,SAAL,EAAjB;;AACA,kBAAGD,QAAQ,KAAK1sC,SAAhB,EAA2B,OAAO0sC,QAAP;AAC3B,mBAAK9E,IAAL,CAAU9W,KAAV,GAAkB,KAAKuY,KAAL,CAAWE,aAAX,GAA2BnpB,GAA3B,GAAiCksB,qBAAnD;;AACA,oBAAMM,SAAS,GAAG,KAAKC,UAAL,EAAlB;;AACA,kBAAGD,SAAS,KAAK5sC,SAAjB,EAA4B,OAAO4sC,SAAP;;AAC5B,kBAAG9D,EAAE,KAAK,CAAC,CAAR,IAAa,KAAKlB,IAAL,CAAUwB,OAAV,IAAqBN,EAArC,EAAwC;AACtC,qBAAKO,KAAL,CAAWgB,IAAX,GAAkB,IAAlB;AACA,qBAAKxkC,IAAL,CAAU,IAAV;AACA;AACD;AACF;;AACD,iBAAKwjC,KAAL,CAAWI,UAAX,GAAwB,KAAxB;AACArpB,eAAG,IAAIksB,qBAAqB,GAAG,CAA/B;AACA;AACD;;AACD,cAAG,KAAKjD,KAAL,CAAWI,UAAd,EAAyB;AACvB;AACD;;AACD,gBAAMqD,YAAY,GAAGvnB,OAAO,KAAK,IAAZ,GAAmB,CAAnB,GAAuB,KAAKwmB,cAAL,CAAoBxmB,OAApB,EAA6BgO,GAA7B,EAAkCnT,GAAlC,EAAuCorB,GAAvC,CAA5C;;AACA,cAAGsB,YAAY,KAAK,CAApB,EAAsB;AACpB,iBAAKzD,KAAL,CAAWI,UAAX,GAAwB,IAAxB;AACA;AACD;;AACD,cAAIsD,eAAe,GAAG,KAAKd,aAAL,CAAmB1Y,GAAnB,EAAwBnT,GAAxB,EAA6BorB,GAA7B,CAAtB;;AACA,cAAGuB,eAAe,KAAK,CAAvB,EAAyB;AACvB,iBAAKnF,IAAL,CAAU9W,KAAV,GAAkB,KAAKuY,KAAL,CAAWE,aAAX,GAA2BnpB,GAA7C;;AACA,kBAAMssB,QAAQ,GAAG,KAAKC,SAAL,EAAjB;;AACA,gBAAGD,QAAQ,KAAK1sC,SAAhB,EAA2B,OAAO0sC,QAAP;AAC3BtsB,eAAG,IAAI2sB,eAAe,GAAG,CAAzB;AACA;AACD;AACF;AACF;;AACD,UAAG,KAAK1D,KAAL,CAAWI,UAAX,KAA0B,KAA7B,EAAmC;AACjC,YAAG5B,eAAe,KAAK,CAApB,IAAyB,KAAKwB,KAAL,CAAWoB,aAAX,GAA2B,KAAKpB,KAAL,CAAWW,KAAX,CAAiBhjC,MAA5C,GAAqD6gC,eAAjF,EAAiG;AAC/F,gBAAM1iB,GAAG,GAAG,KAAKinB,OAAL,CACV,IAAIrF,QAAJ,CAAa,qBAAb,EAAoC,CAClC,kBADkC,EAElC,qDAFkC,EAGjC,MAAKc,eAAgB,EAHY,EAIjC,WAAU,KAAKD,IAAL,CAAUuB,KAAM,EAJO,CAApC,EAKG,KAAKrnC,OALR,EAKiB,KAAKuqC,WAAL,EALjB,CADU,CAAZ;;AAQA,cAAGlnB,GAAG,KAAKnlB,SAAX,EAAsB,OAAOmlB,GAAP;AACvB;AACF;;AACD,YAAM6nB,OAAO,GAAGpE,KAAK,KAAK,KAAV,IAAmB,KAAKS,KAAL,CAAWe,OAAX,KAAuB,IAA1C,IAAkD,KAAKf,KAAL,CAAWW,KAAX,CAAiBhjC,MAAjB,KAA4B,CAA9E,IAAmF,CAAC,KAAK6kC,gBAAL,CAAsBL,GAAtB,CAApG,CAhL+B,CAiL/B;;AACA,YAAMyB,OAAO,GAAGtE,KAAK,KAAK,KAAV,IAAmB,KAAKU,KAAL,CAAWwB,UAAX,KAA0B,KAA7D;;AACA,UAAImC,OAAO,KAAK,IAAZ,IAAoBC,OAAO,KAAK,IAApC,EAA0C;AACxC,aAAK5D,KAAL,CAAWW,KAAX,CAAiB/D,MAAjB,CAAwBuF,GAAxB;AACD,OAFD,MAEM,IAAG7C,KAAK,KAAK,IAAV,IAAkB,CAAC,KAAKkD,gBAAL,CAAsBL,GAAtB,CAAtB,EAAiD;AACrD,cAAMrmB,GAAG,GAAG,KAAKinB,OAAL,CACV,IAAIrF,QAAJ,CAAa,2CAAb,EAA0D,CACxD,wBADwD,EAExD,qCAFwD,EAGvD,WAAU,KAAKa,IAAL,CAAUuB,KAAM,EAH6B,CAA1D,EAIG,KAAKrnC,OAJR,EAIiB,KAAKuqC,WAAL,EAJjB,CADU,CAAZ;;AAOA,YAAGlnB,GAAG,KAAKnlB,SAAX,EAAsB,OAAOmlB,GAAP;AACvB;AACF;;AACD,QAAGtkB,GAAG,KAAK,IAAX,EAAgB;AACd;AACA,UAAG,KAAKwoC,KAAL,CAAWe,OAAX,KAAuB,IAA1B,EAA+B;AAC7B,cAAMjlB,GAAG,GAAG,KAAKinB,OAAL,CACV,IAAIrF,QAAJ,CAAa,sBAAb,EAAqC,CACnC,mBADmC,EAElC,yDAAwD,KAAKa,IAAL,CAAUuB,KAAM,EAFtC,CAArC,EAGG,KAAKrnC,OAHR,EAGiB,KAAKuqC,WAAL,EAHjB,CADU,CAAZ;;AAMA,YAAGlnB,GAAG,KAAKnlB,SAAX,EAAsB,OAAOmlB,GAAP;AACvB,OARD,MAQK;AACH;AACA,YAAG,KAAKkkB,KAAL,CAAWwB,UAAX,KAA0B,IAA1B,IAAkC,KAAKxB,KAAL,CAAWkB,MAAX,CAAkBvjC,MAAlB,KAA6B,CAA/D,IAAoE,KAAKqiC,KAAL,CAAWW,KAAX,CAAiBhjC,MAAjB,KAA4B,CAAnG,EAAqG;AACnG,eAAK4gC,IAAL,CAAU9W,KAAV,GAAkB,KAAKuY,KAAL,CAAWE,aAAX,GAA2BnpB,GAA7C;;AACA,gBAAMssB,QAAQ,GAAG,KAAKC,SAAL,EAAjB;;AACA,cAAGD,QAAQ,KAAK1sC,SAAhB,EAA2B,OAAO0sC,QAAP;;AAC3B,gBAAME,SAAS,GAAG,KAAKC,UAAL,EAAlB;;AACA,cAAGD,SAAS,KAAK5sC,SAAjB,EAA4B,OAAO4sC,SAAP;AAC7B,SAND,MAMM,IAAG,KAAKvD,KAAL,CAAWyB,eAAX,KAA+B,IAAlC,EAAuC;AAC3C,eAAKlD,IAAL,CAAUqB,WAAV;AACD,SAFK,MAEA,IAAG,KAAKI,KAAL,CAAWI,UAAX,KAA0B,IAA7B,EAAkC;AACtC,eAAK7B,IAAL,CAAUoB,aAAV;AACD;AACF;AACF,KAxBD,MAwBK;AACH,WAAKK,KAAL,CAAWE,aAAX,IAA4BnpB,GAA5B;AACA,WAAKipB,KAAL,CAAWc,WAAX,GAAyB5W,GAAG,CAACvqB,KAAJ,CAAUoX,GAAV,CAAzB;AACD;;AACD,QAAG,KAAKipB,KAAL,CAAWyB,eAAX,KAA+B,IAAlC,EAAuC;AACrC,WAAKlD,IAAL,CAAUuB,KAAV;AACA,WAAKE,KAAL,CAAWyB,eAAX,GAA6B,KAA7B;AACD;AACF;;AACD+B,YAAU,GAAE;AACV,2BAA8K,KAAK/qC,OAAnL;AAAA,UAAOulC,OAAP,kBAAOA,OAAP;AAAA,UAAgBE,2BAAhB,kBAAgBA,2BAAhB;AAAA,UAA6CtiB,QAA7C,kBAA6CA,QAA7C;AAAA,UAAuD2iB,IAAvD,kBAAuDA,IAAvD;AAAA,UAA6D7iC,IAA7D,kBAA6DA,IAA7D;AAAA,UAAmEsjC,kBAAnE,kBAAmEA,kBAAnE;AAAA,UAAuFC,uBAAvF,kBAAuFA,uBAAvF;AAAA,UAAgHC,uBAAhH,kBAAgHA,uBAAhH;AAAA,UAAyIN,GAAzI,kBAAyIA,GAAzI;AAAA,UAA8IQ,4BAA9I,kBAA8IA,4BAA9I;AACA,yBAA0B,KAAKY,KAA/B;AAAA,UAAOM,OAAP,gBAAOA,OAAP;AAAA,UAAgBY,MAAhB,gBAAgBA,MAAhB;;AACA,QAAGZ,OAAO,KAAK,KAAf,EAAqB;AACnB,aAAO,KAAK8C,aAAL,EAAP;AACD,KALS,CAMV;;;AACA,UAAMS,YAAY,GAAG3C,MAAM,CAACvjC,MAA5B;;AACA,QAAGqgC,OAAO,KAAK,IAAf,EAAoB;AAClB,UAAGoB,4BAA4B,KAAK,IAAjC,IAAyC0E,aAAa,CAAC5C,MAAD,CAAzD,EAAkE;AAChE,aAAKkC,aAAL;;AACA;AACD;;AACD,aAAO,KAAKW,oBAAL,CAA0B7C,MAA1B,CAAP;AACD;;AACD,QAAGlD,OAAO,KAAK,KAAZ,IAAqB,KAAKO,IAAL,CAAUwB,OAAV,KAAsB,CAA9C,EAAgD;AAC9C,WAAKC,KAAL,CAAWU,oBAAX,GAAkCmD,YAAlC;AACD;;AACD,QAAGA,YAAY,KAAK,KAAK7D,KAAL,CAAWU,oBAA/B,EAAoD;AAClD,YAAM5kB,GAAG,GAAGkiB,OAAO,KAAK,KAAZ,GACV;AACA;AACA,UAAIN,QAAJ,CAAa,gCAAb,EAA+C,CAC7C,wBAD6C,EAE5C,UAAS,KAAKsC,KAAL,CAAWU,oBAAqB,GAFG,EAG5C,OAAMmD,YAAa,YAAW,KAAKtF,IAAL,CAAUuB,KAAM,EAHF,CAA/C,EAIG,KAAKrnC,OAJR,EAIiB,KAAKuqC,WAAL,EAJjB,EAIqC;AACnC9B,cAAM,EAAEA;AAD2B,OAJrC,CAHU,GAWV;AACA;AACA,UAAIxD,QAAJ,CAAa,sCAAb,EAAqD,CACnD,wBADmD,EAElD,qBAAoBM,OAAO,CAACrgC,MAAO,GAFe,EAEX;AACvC,aAAMkmC,YAAa,YAAW,KAAKtF,IAAL,CAAUuB,KAAM,EAHI,CAArD,EAIG,KAAKrnC,OAJR,EAIiB,KAAKuqC,WAAL,EAJjB,EAIqC;AACnC9B,cAAM,EAAEA;AAD2B,OAJrC,CAbF;;AAoBA,UAAGlC,kBAAkB,KAAK,IAAvB,IACAC,uBAAuB,KAAK,IAA5B,IAAoC4E,YAAY,GAAG,KAAK7D,KAAL,CAAWU,oBAD9D,IAEAxB,uBAAuB,KAAK,IAA5B,IAAoC2E,YAAY,GAAG,KAAK7D,KAAL,CAAWU,oBAFjE,EAEwF;AACtF,aAAKnC,IAAL,CAAUsB,oBAAV;AACA,aAAKG,KAAL,CAAWK,KAAX,GAAmBvkB,GAAnB,CAFsF,CAGxF;AACC,OAND,MAMK;AACH,cAAMkoB,QAAQ,GAAG,KAAKjB,OAAL,CAAajnB,GAAb,CAAjB;;AACA,YAAGkoB,QAAH,EAAa,OAAOA,QAAP;AACd;AACF;;AACD,QAAG5E,4BAA4B,KAAK,IAAjC,IAAyC0E,aAAa,CAAC5C,MAAD,CAAzD,EAAkE;AAChE,WAAKkC,aAAL;;AACA;AACD;;AACD,QAAG,KAAKpD,KAAL,CAAWmB,cAAX,KAA8B,IAAjC,EAAsC;AACpC,WAAKiC,aAAL;;AACA,WAAKpD,KAAL,CAAWmB,cAAX,GAA4B,KAA5B;AACA;AACD;;AACD,SAAK5C,IAAL,CAAUwB,OAAV;;AACA,QAAGrkC,IAAI,KAAK,CAAT,IAAc,KAAK6iC,IAAL,CAAUwB,OAAV,IAAqBrkC,IAAtC,EAA2C;AACzC;AACA,UAAGsiC,OAAO,KAAK,KAAf,EAAqB;AACnB,cAAMtxB,GAAG,GAAG,EAAZ,CADmB,CAEnB;;AACA,aAAI,IAAI8J,CAAC,GAAG,CAAR,EAAW4e,CAAC,GAAG8L,MAAM,CAACvjC,MAA1B,EAAkC6Y,CAAC,GAAG4e,CAAtC,EAAyC5e,CAAC,EAA1C,EAA6C;AAC3C,cAAGwnB,OAAO,CAACxnB,CAAD,CAAP,KAAe7f,SAAf,IAA4BqnC,OAAO,CAACxnB,CAAD,CAAP,CAAWytB,QAA1C,EAAoD,SADT,CAE3C;;AACA,cAAI/F,2BAA2B,KAAK,IAAhC,IAAwCxxB,GAAG,CAACsxB,OAAO,CAACxnB,CAAD,CAAP,CAAW7V,IAAZ,CAAH,KAAyBhK,SAArE,EAAgF;AAC9E,gBAAI8E,KAAK,CAACwD,OAAN,CAAcyN,GAAG,CAACsxB,OAAO,CAACxnB,CAAD,CAAP,CAAW7V,IAAZ,CAAjB,CAAJ,EAAyC;AACvC+L,iBAAG,CAACsxB,OAAO,CAACxnB,CAAD,CAAP,CAAW7V,IAAZ,CAAH,GAAuB+L,GAAG,CAACsxB,OAAO,CAACxnB,CAAD,CAAP,CAAW7V,IAAZ,CAAH,CAAqBg0B,MAArB,CAA4BuM,MAAM,CAAC1qB,CAAD,CAAlC,CAAvB;AACD,aAFD,MAEO;AACL9J,iBAAG,CAACsxB,OAAO,CAACxnB,CAAD,CAAP,CAAW7V,IAAZ,CAAH,GAAuB,CAAC+L,GAAG,CAACsxB,OAAO,CAACxnB,CAAD,CAAP,CAAW7V,IAAZ,CAAJ,EAAuBugC,MAAM,CAAC1qB,CAAD,CAA7B,CAAvB;AACD;AACF,WAND,MAMO;AACL9J,eAAG,CAACsxB,OAAO,CAACxnB,CAAD,CAAP,CAAW7V,IAAZ,CAAH,GAAuBugC,MAAM,CAAC1qB,CAAD,CAA7B;AACD;AACF;;AACD,cAAOioB,OAAP,GAAkB,KAAKhmC,OAAvB,CAAOgmC,OAAP,CAhBmB,CAiBnB;;AACA,YAAGA,OAAO,KAAK9nC,SAAf,EAAyB;AACvB,cAAGioC,GAAG,KAAK,IAAR,IAAgBL,IAAI,KAAK,IAA5B,EAAiC;AAC/B,kBAAMziB,GAAG,GAAG,KAAKooB,MAAL,CAAY3pC,MAAM,CAACC,MAAP,CACtB;AAAC0mC,oBAAM,EAAEx0B;AAAT,aADsB,EAErBkyB,GAAG,KAAK,IAAR,GAAe;AAACA,iBAAG,EAAE,KAAKoB,KAAL,CAAWiB,SAAX,CAAqB1sB,QAArB,CAA8BqH,QAA9B;AAAN,aAAf,GAA+D,EAF1C,EAGrB2iB,IAAI,KAAK,IAAT,GAAgB;AAACA,kBAAI,EAAE,KAAK4F,YAAL;AAAP,aAAhB,GAA6C,EAHxB,CAAZ,CAAZ;;AAKA,gBAAGroB,GAAH,EAAO;AACL,qBAAOA,GAAP;AACD;AACF,WATD,MASK;AACH,kBAAMA,GAAG,GAAG,KAAKooB,MAAL,CAAYx3B,GAAZ,CAAZ;;AACA,gBAAGoP,GAAH,EAAO;AACL,qBAAOA,GAAP;AACD;AACF,WAfsB,CAgBzB;;AACC,SAjBD,MAiBK;AACH,cAAG8iB,GAAG,KAAK,IAAR,IAAgBL,IAAI,KAAK,IAA5B,EAAiC;AAC/B,kBAAMziB,GAAG,GAAG,KAAKooB,MAAL,CAAY3pC,MAAM,CAACC,MAAP,CACtB;AAAC0mC,oBAAM,EAAE,CAACx0B,GAAG,CAAC+xB,OAAD,CAAJ,EAAe/xB,GAAf;AAAT,aADsB,EAEtBkyB,GAAG,KAAK,IAAR,GAAe;AAACA,iBAAG,EAAE,KAAKoB,KAAL,CAAWiB,SAAX,CAAqB1sB,QAArB,CAA8BqH,QAA9B;AAAN,aAAf,GAA+D,EAFzC,EAGtB2iB,IAAI,KAAK,IAAT,GAAgB;AAACA,kBAAI,EAAE,KAAK4F,YAAL;AAAP,aAAhB,GAA6C,EAHvB,CAAZ,CAAZ;;AAKA,gBAAGroB,GAAH,EAAO;AACL,qBAAOA,GAAP;AACD;AACF,WATD,MASK;AACH,kBAAMA,GAAG,GAAG,KAAKooB,MAAL,CAAY,CAACx3B,GAAG,CAAC+xB,OAAD,CAAJ,EAAe/xB,GAAf,CAAZ,CAAZ;;AACA,gBAAGoP,GAAH,EAAO;AACL,qBAAOA,GAAP;AACD;AACF;AACF,SAnDkB,CAoDrB;;AACC,OArDD,MAqDK;AACH,YAAG8iB,GAAG,KAAK,IAAR,IAAgBL,IAAI,KAAK,IAA5B,EAAiC;AAC/B,gBAAMziB,GAAG,GAAG,KAAKooB,MAAL,CAAY3pC,MAAM,CAACC,MAAP,CACtB;AAAC0mC,kBAAM,EAAEA;AAAT,WADsB,EAEtBtC,GAAG,KAAK,IAAR,GAAe;AAACA,eAAG,EAAE,KAAKoB,KAAL,CAAWiB,SAAX,CAAqB1sB,QAArB,CAA8BqH,QAA9B;AAAN,WAAf,GAA+D,EAFzC,EAGtB2iB,IAAI,KAAK,IAAT,GAAgB;AAACA,gBAAI,EAAE,KAAK4F,YAAL;AAAP,WAAhB,GAA6C,EAHvB,CAAZ,CAAZ;;AAKA,cAAGroB,GAAH,EAAO;AACL,mBAAOA,GAAP;AACD;AACF,SATD,MASK;AACH,gBAAMA,GAAG,GAAG,KAAKooB,MAAL,CAAYhD,MAAZ,CAAZ;;AACA,cAAGplB,GAAH,EAAO;AACL,mBAAOA,GAAP;AACD;AACF;AACF;AACF;;AACD,SAAKsnB,aAAL;AACD;;AACDW,sBAAoB,CAAC7C,MAAD,EAAQ;AAC1B,UAAON,kBAAP,GAA6B,KAAKZ,KAAlC,CAAOY,kBAAP;;AACA,QAAG;AACD,YAAMwD,OAAO,GAAGxD,kBAAkB,KAAKjqC,SAAvB,GAAmCuqC,MAAnC,GAA4CN,kBAAkB,CAACpsB,IAAnB,CAAwB,IAAxB,EAA8B0sB,MAA9B,CAA5D;;AACA,UAAG,CAACzlC,KAAK,CAACwD,OAAN,CAAcmlC,OAAd,CAAJ,EAA2B;AACzB,eAAO,KAAKrB,OAAL,CACL,IAAIrF,QAAJ,CAAa,4BAAb,EAA2C,CACzC,yBADyC,EAEzC,uCAFyC,EAGxC,OAAMn4B,IAAI,CAACC,SAAL,CAAe4+B,OAAf,CAAwB,EAHU,CAA3C,EAIG,KAAK3rC,OAJR,EAIiB,KAAKuqC,WAAL,EAJjB,EAIqC;AACnCoB,iBAAO,EAAEA;AAD0B,SAJrC,CADK,CAAP;AASD;;AACD,YAAMC,iBAAiB,GAAGpG,qBAAqB,CAACmG,OAAD,CAA/C;AACA,WAAKpE,KAAL,CAAWU,oBAAX,GAAkC2D,iBAAiB,CAAC1mC,MAApD;AACA,WAAKlF,OAAL,CAAaulC,OAAb,GAAuBqG,iBAAvB;;AACA,WAAKjB,aAAL;;AACA;AACD,KAlBD,CAkBC,OAAMtnB,GAAN,EAAU;AACT,aAAOA,GAAP;AACD;AACF;;AACDsnB,eAAa,GAAE;AACb,QAAG,KAAK3qC,OAAL,CAAammC,GAAb,KAAqB,IAAxB,EAA6B;AAC3B,WAAKoB,KAAL,CAAWiB,SAAX,CAAqBpE,KAArB;AACD;;AACD,SAAKmD,KAAL,CAAWK,KAAX,GAAmB1pC,SAAnB;AACA,SAAKqpC,KAAL,CAAWkB,MAAX,GAAoB,EAApB;AACA,SAAKlB,KAAL,CAAWoB,aAAX,GAA2B,CAA3B;AACD;;AACDkC,WAAS,GAAE;AACT,2BAAiD,KAAK7qC,OAAtD;AAAA,UAAOolC,IAAP,kBAAOA,IAAP;AAAA,UAAajiB,QAAb,kBAAaA,QAAb;AAAA,UAAuB0jB,KAAvB,kBAAuBA,KAAvB;AAAA,UAA8Bd,eAA9B,kBAA8BA,eAA9B;AACA,yBAA8B,KAAKwB,KAAnC;AAAA,UAAOM,OAAP,gBAAOA,OAAP;AAAA,UAAgBkB,UAAhB,gBAAgBA,UAAhB,CAFS,CAGT;;AACA,QAAGlB,OAAO,KAAK,KAAf,EAAqB;AACnB,aAAO,KAAK6C,YAAL,EAAP;AACD;;AACD,QAAIxC,KAAK,GAAG,KAAKX,KAAL,CAAWW,KAAX,CAAiBpsB,QAAjB,CAA0BqH,QAA1B,CAAZ;;AACA,QAAG0jB,KAAK,KAAK,IAAV,IAAkBkC,UAAU,KAAK,KAApC,EAA0C;AACxCb,WAAK,GAAGA,KAAK,CAAC2D,SAAN,EAAR;AACD;;AACD,QAAGzG,IAAI,KAAK,IAAZ,EAAiB;AACf,2BAAiB,KAAK0G,MAAL,CAAY5D,KAAZ,CAAjB;AAAA;AAAA,YAAO7kB,GAAP;AAAA,YAAY0oB,CAAZ;;AACA,UAAG1oB,GAAG,KAAKnlB,SAAX,EAAsB,OAAOmlB,GAAP;AACtB6kB,WAAK,GAAG6D,CAAR;AACD;;AACD,SAAKxE,KAAL,CAAWkB,MAAX,CAAkB1kC,IAAlB,CAAuBmkC,KAAvB,EAhBS,CAiBT;;AACA,QAAGnC,eAAe,KAAK,CAApB,IAAyB,OAAOmC,KAAP,KAAiB,QAA7C,EAAsD;AACpD,WAAKX,KAAL,CAAWoB,aAAX,IAA4BT,KAAK,CAAChjC,MAAlC;AACD;;AACD,SAAKwlC,YAAL;AACD;;AACDA,cAAY,GAAE;AACZ,SAAKnD,KAAL,CAAWW,KAAX,CAAiB9D,KAAjB;AACA,SAAKmD,KAAL,CAAWwB,UAAX,GAAwB,KAAxB;AACD;;AACD0C,QAAM,CAAChD,MAAD,EAAQ;AACZ,UAAOxC,SAAP,GAAoB,KAAKjmC,OAAzB,CAAOimC,SAAP;;AACA,QAAGA,SAAS,KAAK/nC,SAAjB,EAA2B;AACzB,YAAM4nC,IAAI,GAAG,KAAK4F,YAAL,EAAb;;AACA,UAAG;AACDjD,cAAM,GAAGxC,SAAS,CAAClqB,IAAV,CAAe,IAAf,EAAqB0sB,MAArB,EAA6B3C,IAA7B,CAAT;AACD,OAFD,CAEC,OAAMziB,GAAN,EAAU;AACT,eAAOA,GAAP;AACD;;AACD,UAAGolB,MAAM,KAAKvqC,SAAX,IAAwBuqC,MAAM,KAAK,IAAtC,EAA2C;AAAE;AAAQ;AACtD;;AACD,SAAK1kC,IAAL,CAAU0kC,MAAV;AACD,GAr6B4B,CAs6B7B;;;AACAqD,QAAM,CAAC5D,KAAD,EAAO;AACX,2BAAsC,KAAKloC,OAA3C;AAAA,UAAOulC,OAAP,kBAAOA,OAAP;AAAA,UAAgBgB,kBAAhB,kBAAgBA,kBAAhB;AACA,UAAMyF,SAAS,GAAGhpC,KAAK,CAACwD,OAAN,CAAc++B,OAAd,CAAlB,CAFW,CAGX;AACA;AACA;;AACA,QAAIyG,SAAS,KAAK,IAAd,IAAsBzF,kBAAtB,IAA4C,KAAKvmC,OAAL,CAAaulC,OAAb,CAAqBrgC,MAArB,IAA+B,KAAKqiC,KAAL,CAAWkB,MAAX,CAAkBvjC,MAAjG,EAAyG;AACvG,aAAO,CAAChH,SAAD,EAAYA,SAAZ,CAAP;AACD;;AACD,QAAG,KAAKqpC,KAAL,CAAWG,SAAX,KAAyB,IAA5B,EAAiC;AAC/B,UAAG;AACD,cAAM5B,IAAI,GAAG,KAAKyE,WAAL,EAAb;;AACA,eAAO,CAACrsC,SAAD,EAAY,KAAKqpC,KAAL,CAAWG,SAAX,CAAqB3rB,IAArB,CAA0B,IAA1B,EAAgCmsB,KAAhC,EAAuCpC,IAAvC,CAAZ,CAAP;AACD,OAHD,CAGC,OAAMziB,GAAN,EAAU;AACT,eAAO,CAACA,GAAD,CAAP;AACD;AACF;;AACD,QAAG,KAAK4oB,SAAL,CAAe/D,KAAf,CAAH,EAAyB;AACvB,aAAO,CAAChqC,SAAD,EAAY4gB,UAAU,CAACopB,KAAD,CAAtB,CAAP;AACD,KAFD,MAEM,IAAG,KAAKloC,OAAL,CAAaqlC,SAAb,KAA2B,KAA9B,EAAoC;AACxC,YAAMS,IAAI,GAAG,KAAKyE,WAAL,EAAb;;AACA,aAAO,CAACrsC,SAAD,EAAY,KAAK8B,OAAL,CAAaqlC,SAAb,CAAuBtpB,IAAvB,CAA4B,IAA5B,EAAkCmsB,KAAlC,EAAyCpC,IAAzC,CAAZ,CAAP;AACD;;AACD,WAAO,CAAC5nC,SAAD,EAAYgqC,KAAZ,CAAP;AACD,GA/7B4B,CAg8B7B;;;AACA6B,kBAAgB,CAACL,GAAD,EAAK;AACnB,WAAOA,GAAG,KAAKhF,KAAR,IAAiBgF,GAAG,KAAKpF,GAAzB,IAAgCoF,GAAG,KAAKjF,EAAxC,IAA8CiF,GAAG,KAAKnF,EAAtD,IAA4DmF,GAAG,KAAKlF,EAA3E;AACD,GAn8B4B,CAo8B7B;AACA;AACA;AACA;AACA;AACA;;;AACAyH,WAAS,CAACxtC,KAAD,EAAO;AACd,WAAQA,KAAK,GAAGqgB,UAAU,CAAErgB,KAAF,CAAlB,GAA8B,CAA/B,IAAqC,CAA5C,CADc,CACgC;AAC/C;;AACDwrC,gBAAc,CAACiC,SAAD,EAAYC,SAAZ,EAAuBC,SAAvB,EAAkCC,SAAlC,EAA4C;AACxD,QAAGH,SAAS,CAAC,CAAD,CAAT,KAAiBG,SAApB,EAA+B,OAAO,CAAP;AAC/B,UAAMC,YAAY,GAAGJ,SAAS,CAAChnC,MAA/B;;AACA,SAAI,IAAI6Y,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAGuuB,YAAnB,EAAiCvuB,CAAC,EAAlC,EAAqC;AACnC,UAAGmuB,SAAS,CAACnuB,CAAD,CAAT,KAAiBouB,SAAS,CAACC,SAAS,GAACruB,CAAX,CAA7B,EAA4C,OAAO,CAAP;AAC7C;;AACD,WAAOuuB,YAAP;AACD;;AACD/C,gBAAc,CAACxrB,CAAD,EAAIurB,MAAJ,EAAYvqC,GAAZ,EAAgB;AAC5B,QAAGA,GAAH,EAAQ,OAAO,KAAP;AACR,UAAOmnC,KAAP,GAAgB,KAAKlmC,OAArB,CAAOkmC,KAAP;AACA,yBAA8D,KAAKqB,KAAnE;AAAA,UAAOe,OAAP,gBAAOA,OAAP;AAAA,UAAgBF,gBAAhB,gBAAgBA,gBAAhB;AAAA,UAAkCQ,wBAAlC,gBAAkCA,wBAAlC;AACA,UAAM2D,aAAa,GAAGjD,MAAM,GAAGvrB,CAAT,GAAa,CAAnC;AACA,UAAMyuB,cAAc,GAAG7+B,IAAI,CAACge,GAAL,CACrByc,gBADqB,EAErB;AACAQ,4BAHqB,EAIrB;AACA;AACAN,WAAO,GAAIpC,KAAK,CAAChhC,MAAN,GAAe0jC,wBAAnB,GAA+C,CANjC,CAAvB;AAQA,WAAO2D,aAAa,GAAGC,cAAvB;AACD;;AACDrC,eAAa,CAAC1Y,GAAD,EAAMnT,GAAN,EAAWorB,GAAX,EAAe;AAC1B,2BAA4C,KAAK1pC,OAAjD;AAAA,UAAO2lC,SAAP,kBAAOA,SAAP;AAAA,UAAkBE,sBAAlB,kBAAkBA,sBAAlB;;AACA,QAAGA,sBAAsB,KAAK,IAA3B,IAAmC,KAAK0B,KAAL,CAAWkB,MAAX,CAAkBvjC,MAAlB,KAA6B,KAAKlF,OAAL,CAAaulC,OAAb,CAAqBrgC,MAArB,GAA8B,CAAjG,EAAmG;AACjG,aAAO,CAAP;AACD,KAFD,MAEM,IAAG2gC,sBAAsB,KAAK,KAA3B,IAAoC,OAAOA,sBAAP,KAAkC,QAAtE,IAAkF,KAAK0B,KAAL,CAAWkB,MAAX,CAAkBvjC,MAAlB,KAA6B2gC,sBAAsB,GAAG,CAA3I,EAA6I;AACjJ,aAAO,CAAP;AACD;;AACD4G,SAAK,EAAE,KAAI,IAAI1uB,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAG4nB,SAAS,CAACzgC,MAA7B,EAAqC6Y,CAAC,EAAtC,EAAyC;AAC9C,YAAM2uB,GAAG,GAAG/G,SAAS,CAAC5nB,CAAD,CAArB;;AACA,UAAG2uB,GAAG,CAAC,CAAD,CAAH,KAAWhD,GAAd,EAAkB;AAChB,aAAI,IAAI1rB,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAG0uB,GAAG,CAACxnC,MAAvB,EAA+B8Y,CAAC,EAAhC,EAAmC;AACjC,cAAG0uB,GAAG,CAAC1uB,CAAD,CAAH,KAAWyT,GAAG,CAACnT,GAAG,GAACN,CAAL,CAAjB,EAA0B,SAASyuB,KAAT;AAC3B;;AACD,eAAOC,GAAG,CAACxnC,MAAX;AACD;AACF;;AACD,WAAO,CAAP;AACD;;AACDmlC,qBAAmB,CAACX,GAAD,EAAMjY,GAAN,EAAWnT,GAAX,EAAe;AAChC,UAAO8nB,gBAAP,GAA2B,KAAKpmC,OAAhC,CAAOomC,gBAAP;AACA,UAAMoE,qBAAqB,GAAGpE,gBAAgB,CAAClhC,MAA/C;;AACAunC,SAAK,EAAE,KAAI,IAAI1uB,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAGysB,qBAAnB,EAA0CzsB,CAAC,EAA3C,EAA8C;AACnD,YAAMsoB,EAAE,GAAGD,gBAAgB,CAACroB,CAAD,CAA3B;AACA,YAAM4uB,QAAQ,GAAGtG,EAAE,CAACnhC,MAApB;;AACA,UAAGmhC,EAAE,CAAC,CAAD,CAAF,KAAUqD,GAAb,EAAiB;AACf;AACD;;AACD,WAAI,IAAI1rB,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAG2uB,QAAnB,EAA6B3uB,CAAC,EAA9B,EAAiC;AAC/B,YAAGqoB,EAAE,CAACroB,CAAD,CAAF,KAAUyT,GAAG,CAACnT,GAAG,GAACN,CAAL,CAAhB,EAAwB;AACtB,mBAASyuB,KAAT;AACD;AACF;;AACD,aAAOpG,EAAE,CAACnhC,MAAV;AACD;;AACD,WAAO,CAAP;AACD;;AACDykC,YAAU,CAAClY,GAAD,EAAMnT,GAAN,EAAWorB,GAAX,EAAe;AACvB,UAAOjH,MAAP,GAAiB,KAAKziC,OAAtB,CAAOyiC,MAAP;AACA,QAAGA,MAAM,KAAK,IAAd,EAAoB,OAAO,KAAP;AACpB,UAAM9F,CAAC,GAAG8F,MAAM,CAACv9B,MAAjB;;AACA,QAAGu9B,MAAM,CAAC,CAAD,CAAN,KAAciH,GAAjB,EAAqB;AACnB,WAAI,IAAI3rB,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAG4e,CAAnB,EAAsB5e,CAAC,EAAvB,EAA0B;AACxB,YAAG0kB,MAAM,CAAC1kB,CAAD,CAAN,KAAc0T,GAAG,CAACnT,GAAG,GAACP,CAAL,CAApB,EAA4B;AAC1B,iBAAO,KAAP;AACD;AACF;;AACD,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AACD6rB,WAAS,CAACnY,GAAD,EAAMnT,GAAN,EAAU;AACjB,UAAO4nB,KAAP,GAAgB,KAAKlmC,OAArB,CAAOkmC,KAAP;AACA,QAAGA,KAAK,KAAK,IAAb,EAAmB,OAAO,KAAP;AACnB,UAAMvJ,CAAC,GAAGuJ,KAAK,CAAChhC,MAAhB;;AACA,SAAI,IAAI6Y,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAG4e,CAAnB,EAAsB5e,CAAC,EAAvB,EAA0B;AACxB,UAAGmoB,KAAK,CAACnoB,CAAD,CAAL,KAAa0T,GAAG,CAACnT,GAAG,GAACP,CAAL,CAAnB,EAA2B;AACzB,eAAO,KAAP;AACD;AACF;;AACD,WAAO,IAAP;AACD;;AACD0rB,+BAA6B,CAAChY,GAAD,EAAMnT,GAAN,EAAU;AACrC,UAAO6E,QAAP,GAAmB,KAAKnjB,OAAxB,CAAOmjB,QAAP;AACA,UAAMumB,GAAG,GAAGjY,GAAG,CAACnT,GAAD,CAAf;;AACA,QAAGorB,GAAG,KAAKjF,EAAX,EAAc;AACZ,UAAGhT,GAAG,CAACnT,GAAG,GAAC,CAAL,CAAH,KAAeimB,EAAlB,EAAqB;AACnB,aAAKvkC,OAAL,CAAaomC,gBAAb,CAA8BriC,IAA9B,CAAmCud,MAAM,CAACre,IAAP,CAAY,MAAZ,EAAoBkgB,QAApB,CAAnC;AACA,aAAKokB,KAAL,CAAWqB,wBAAX,GAAsC,CAAtC;AACA,eAAO,CAAP;AACD,OAJD,MAIK;AACH,aAAK5oC,OAAL,CAAaomC,gBAAb,CAA8BriC,IAA9B,CAAmCud,MAAM,CAACre,IAAP,CAAY,IAAZ,EAAkBkgB,QAAlB,CAAnC;AACA,aAAKokB,KAAL,CAAWqB,wBAAX,GAAsC,CAAtC;AACA,eAAO,CAAP;AACD;AACF,KAVD,MAUM,IAAGc,GAAG,KAAKnF,EAAX,EAAc;AAClB,WAAKvkC,OAAL,CAAaomC,gBAAb,CAA8BriC,IAA9B,CAAmCud,MAAM,CAACre,IAAP,CAAY,IAAZ,EAAkBkgB,QAAlB,CAAnC;AACA,WAAKokB,KAAL,CAAWqB,wBAAX,GAAsC,CAAtC;AACA,aAAO,CAAP;AACD;;AACD,WAAO,CAAP;AACD;;AACD0B,SAAO,CAACliB,GAAD,EAAK;AACV,UAAOwe,qBAAP,GAAgC,KAAK5mC,OAArC,CAAO4mC,qBAAP;AACA,UAAMvjB,GAAG,GAAG,OAAO+E,GAAP,KAAe,QAAf,GAA0B,IAAI1kB,KAAJ,CAAU0kB,GAAV,CAA1B,GAA2CA,GAAvD;;AACA,QAAGwe,qBAAH,EAAyB;AACvB,WAAKW,KAAL,CAAWmB,cAAX,GAA4B,IAA5B;AACA,WAAKkE,IAAL,CAAU,MAAV,EAAkBvpB,GAAlB;AACA,aAAOnlB,SAAP;AACD,KAJD,MAIK;AACH,aAAOmlB,GAAP;AACD;AACF;;AACDwpB,eAAa,GAAE;AACb,2CACK,KAAK/G,IADV;AAEEP,aAAO,EAAE,KAAKvlC,OAAL,CAAaulC;AAFxB;AAID;;AACDmG,cAAY,GAAE;AACZ,UAAOnG,OAAP,GAAkB,KAAKvlC,OAAvB,CAAOulC,OAAP;AACA,2CACK,KAAKsH,aAAL,EADL;AAEEjF,WAAK,EAAE,KAAKL,KAAL,CAAWK,KAFpB;AAGEtlB,YAAM,EAAEijB,OAAO,KAAK,IAHtB;AAIEthC,WAAK,EAAE,KAAKsjC,KAAL,CAAWkB,MAAX,CAAkBvjC;AAJ3B;AAMD;;AACDqlC,aAAW,GAAE;AACX,UAAOhF,OAAP,GAAkB,KAAKvlC,OAAvB,CAAOulC,OAAP;AACA,UAAMyG,SAAS,GAAGhpC,KAAK,CAACwD,OAAN,CAAc++B,OAAd,CAAlB;AACA,2CACK,KAAKmG,YAAL,EADL;AAEEoB,YAAM,EAAEd,SAAS,KAAK,IAAd,GACJzG,OAAO,CAACrgC,MAAR,GAAiB,KAAKqiC,KAAL,CAAWkB,MAAX,CAAkBvjC,MAAnC,GACAqgC,OAAO,CAAC,KAAKgC,KAAL,CAAWkB,MAAX,CAAkBvjC,MAAnB,CAAP,CAAkCgD,IADlC,GAEA,IAHI,GAKN,KAAKq/B,KAAL,CAAWkB,MAAX,CAAkBvjC,MAPtB;AAQEojC,aAAO,EAAE,KAAKf,KAAL,CAAWwB;AARtB;AAUD;;AA5lC4B;;AA+lC/B,MAAMv1B,KAAK,GAAG,YAAU;AACtB,MAAIjN,IAAJ,EAAUvG,OAAV,EAAmBgjB,QAAnB;;AACA,OAAI,IAAIjF,CAAR,IAAa3P,SAAb,EAAuB;AACrB,UAAM2+B,QAAQ,GAAG3+B,SAAS,CAAC2P,CAAD,CAA1B;AACA,UAAM1C,IAAI,GAAG,OAAO0xB,QAApB;;AACA,QAAGxmC,IAAI,KAAKrI,SAAT,KAAuB,OAAO6uC,QAAP,KAAoB,QAApB,IAAgCzrB,MAAM,CAACC,QAAP,CAAgBwrB,QAAhB,CAAvD,CAAH,EAAqF;AACnFxmC,UAAI,GAAGwmC,QAAP;AACD,KAFD,MAEM,IAAG/sC,OAAO,KAAK9B,SAAZ,IAAyBuf,QAAQ,CAACsvB,QAAD,CAApC,EAA+C;AACnD/sC,aAAO,GAAG+sC,QAAV;AACD,KAFK,MAEA,IAAG/pB,QAAQ,KAAK9kB,SAAb,IAA0Bmd,IAAI,KAAK,UAAtC,EAAiD;AACrD2H,cAAQ,GAAG+pB,QAAX;AACD,KAFK,MAED;AACH,YAAM,IAAI9H,QAAJ,CAAa,sBAAb,EAAqC,CACzC,mBADyC,EAExC,OAAMn4B,IAAI,CAACC,SAAL,CAAeggC,QAAf,CAAyB,aAAYhvB,CAAE,EAFL,CAArC,EAGH/d,OAAO,IAAI,EAHR,CAAN;AAID;AACF;;AACD,QAAMgtC,MAAM,GAAG,IAAIpI,MAAJ,CAAW5kC,OAAX,CAAf;;AACA,MAAGgjB,QAAH,EAAY;AACV,UAAMskB,OAAO,GAAGtnC,OAAO,KAAK9B,SAAZ,IAAyB8B,OAAO,CAACgmC,OAAR,KAAoB9nC,SAA7C,GAAyD,EAAzD,GAA8D,EAA9E;AACA8uC,UAAM,CAACxb,EAAP,CAAU,UAAV,EAAsB,YAAU;AAC9B,UAAIiX,MAAJ;;AACA,aAAM,CAACA,MAAM,GAAG,KAAKwE,IAAL,EAAV,MAA2B,IAAjC,EAAsC;AACpC,YAAGjtC,OAAO,KAAK9B,SAAZ,IAAyB8B,OAAO,CAACgmC,OAAR,KAAoB9nC,SAAhD,EAA0D;AACxDopC,iBAAO,CAACvjC,IAAR,CAAa0kC,MAAb;AACD,SAFD,MAEK;AACHnB,iBAAO,CAACmB,MAAM,CAAC,CAAD,CAAP,CAAP,GAAqBA,MAAM,CAAC,CAAD,CAA3B;AACD;AACF;AACF,KATD;AAUAuE,UAAM,CAACxb,EAAP,CAAU,OAAV,EAAmB,UAASnO,GAAT,EAAa;AAC9BL,cAAQ,CAACK,GAAD,EAAMnlB,SAAN,EAAiB8uC,MAAM,CAACH,aAAP,EAAjB,CAAR;AACD,KAFD;AAGAG,UAAM,CAACxb,EAAP,CAAU,KAAV,EAAiB,YAAU;AACzBxO,cAAQ,CAAC9kB,SAAD,EAAYopC,OAAZ,EAAqB0F,MAAM,CAACH,aAAP,EAArB,CAAR;AACD,KAFD;AAGD;;AACD,MAAGtmC,IAAI,KAAKrI,SAAZ,EAAsB;AACpB;AACA,QAAG,OAAOgvC,YAAP,KAAwB,UAA3B,EAAsC;AACpCA,kBAAY,CAAC,YAAU;AACrBF,cAAM,CAACtR,KAAP,CAAan1B,IAAb;AACAymC,cAAM,CAACjuC,GAAP;AACD,OAHW,CAAZ;AAID,KALD,MAKK;AACHiuC,YAAM,CAACtR,KAAP,CAAan1B,IAAb;AACAymC,YAAM,CAACjuC,GAAP;AACD;AACF;;AACD,SAAOiuC,MAAP;AACD,CAnDD;;AAqDA,MAAM/H,QAAN,SAAuBvhC,KAAvB,CAA6B;AAC3B3F,aAAW,CAACsnB,IAAD,EAAO8nB,OAAP,EAAgBntC,OAAhB,EAAyB,GAAGotC,QAA5B,EAAsC;AAC/C,QAAGpqC,KAAK,CAACwD,OAAN,CAAc2mC,OAAd,CAAH,EAA2BA,OAAO,GAAGA,OAAO,CAACltB,IAAR,CAAa,GAAb,CAAV;AAC3B,UAAMktB,OAAN;;AACA,QAAGzpC,KAAK,CAAC2pC,iBAAN,KAA4BnvC,SAA/B,EAAyC;AACvCwF,WAAK,CAAC2pC,iBAAN,CAAwB,IAAxB,EAA8BpI,QAA9B;AACD;;AACD,SAAK5f,IAAL,GAAYA,IAAZ;;AACA,SAAI,MAAMxH,OAAV,IAAqBuvB,QAArB,EAA8B;AAC5B,WAAI,MAAMp5B,GAAV,IAAiB6J,OAAjB,EAAyB;AACvB,cAAMpf,KAAK,GAAGof,OAAO,CAAC7J,GAAD,CAArB;AACA,aAAKA,GAAL,IAAYsN,MAAM,CAACC,QAAP,CAAgB9iB,KAAhB,IAAyBA,KAAK,CAACqd,QAAN,CAAe9b,OAAO,CAACmjB,QAAvB,CAAzB,GAA4D1kB,KAAK,IAAI,IAAT,GAAgBA,KAAhB,GAAwBqO,IAAI,CAAC0G,KAAL,CAAW1G,IAAI,CAACC,SAAL,CAAetO,KAAf,CAAX,CAAhG;AACD;AACF;AACF;;AAd0B;;AAiB7B+U,KAAK,CAACoxB,MAAN,GAAeA,MAAf;AAEApxB,KAAK,CAACyxB,QAAN,GAAiBA,QAAjB;AAEA/kB,MAAM,CAACC,OAAP,GAAiB3M,KAAjB;;AAEA,MAAMwxB,UAAU,GAAG,UAAS7C,GAAT,EAAa;AAC9B,SAAOA,GAAG,CAAC3jB,OAAJ,CAAY,UAAZ,EAAwB,UAASxY,CAAT,EAAYqY,KAAZ,EAAkB;AAC/C,WAAO,MAAMA,KAAK,CAACkhB,WAAN,EAAb;AACD,GAFM,CAAP;AAGD,CAJD;;AAMA,MAAM9hB,QAAQ,GAAG,UAASxJ,GAAT,EAAa;AAC5B,SAAQ,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,KAAK,IAAnC,IAA2C,CAACjR,KAAK,CAACwD,OAAN,CAAcyN,GAAd,CAApD;AACD,CAFD;;AAIA,MAAMo3B,aAAa,GAAG,UAAS5C,MAAT,EAAgB;AACpC,SAAOA,MAAM,CAACtjC,KAAP,CAAe+iC,KAAD,IAAWA,KAAK,IAAI,IAAT,IAAiBA,KAAK,CAACpsB,QAAN,IAAkBosB,KAAK,CAACpsB,QAAN,GAAiBirB,IAAjB,OAA4B,EAAxF,CAAP;AACD,CAFD;;AAIA,MAAMvB,qBAAqB,GAAG,UAASD,OAAT,EAAiB;AAC7C,QAAM+H,iBAAiB,GAAG,EAA1B;;AACA,OAAI,IAAIvvB,CAAC,GAAG,CAAR,EAAW4e,CAAC,GAAG4I,OAAO,CAACrgC,MAA3B,EAAmC6Y,CAAC,GAAG4e,CAAvC,EAA0C5e,CAAC,EAA3C,EAA8C;AAC5C,UAAM+uB,MAAM,GAAGvH,OAAO,CAACxnB,CAAD,CAAtB;;AACA,QAAG+uB,MAAM,KAAK5uC,SAAX,IAAwB4uC,MAAM,KAAK,IAAnC,IAA2CA,MAAM,KAAK,KAAzD,EAA+D;AAC7DQ,uBAAiB,CAACvvB,CAAD,CAAjB,GAAuB;AAAEytB,gBAAQ,EAAE;AAAZ,OAAvB;AACD,KAFD,MAEM,IAAG,OAAOsB,MAAP,KAAkB,QAArB,EAA8B;AAClCQ,uBAAiB,CAACvvB,CAAD,CAAjB,GAAuB;AAAE7V,YAAI,EAAE4kC;AAAR,OAAvB;AACD,KAFK,MAEA,IAAGrvB,QAAQ,CAACqvB,MAAD,CAAX,EAAoB;AACxB,UAAG,OAAOA,MAAM,CAAC5kC,IAAd,KAAuB,QAA1B,EAAmC;AACjC,cAAM,IAAI+8B,QAAJ,CAAa,iCAAb,EAAgD,CACpD,8BADoD,EAEnD,2CAA0ClnB,CAAE,EAFO,EAGpD,kCAHoD,CAAhD,CAAN;AAKD;;AACDuvB,uBAAiB,CAACvvB,CAAD,CAAjB,GAAuB+uB,MAAvB;AACD,KATK,MASD;AACH,YAAM,IAAI7H,QAAJ,CAAa,+BAAb,EAA8C,CAClD,4BADkD,EAElD,sCAFkD,EAGjD,OAAMn4B,IAAI,CAACC,SAAL,CAAe+/B,MAAf,CAAuB,gBAAe/uB,CAAE,EAHG,CAA9C,CAAN;AAKD;AACF;;AACD,SAAOuvB,iBAAP;AACD,CA1BD,C;;;;;;;;;;;ACxtCA,MAAM95B,KAAK,GAAG8M,mBAAO,CAAC,gDAAD,CAArB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,UAAS5Z,IAAT,EAAevG,OAAO,GAAC,EAAvB,EAA0B;AACzC,MAAG,OAAOuG,IAAP,KAAgB,QAAnB,EAA4B;AAC1BA,QAAI,GAAG+a,MAAM,CAACre,IAAP,CAAYsD,IAAZ,CAAP;AACD;;AACD,QAAM+gC,OAAO,GAAGtnC,OAAO,IAAIA,OAAO,CAACgmC,OAAnB,GAA6B,EAA7B,GAAkC,EAAlD;AACA,QAAMgH,MAAM,GAAG,IAAIx5B,KAAK,CAACoxB,MAAV,CAAiB5kC,OAAjB,CAAf;;AACAgtC,QAAM,CAACjpC,IAAP,GAAc,UAAS0kC,MAAT,EAAgB;AAC5B,QAAGA,MAAM,KAAK,IAAd,EAAmB;AACjB;AACD;;AACD,QAAGzoC,OAAO,CAACgmC,OAAR,KAAoB9nC,SAAvB,EACEopC,OAAO,CAACvjC,IAAR,CAAa0kC,MAAb,EADF,KAEI;AACFnB,aAAO,CAACmB,MAAM,CAAC,CAAD,CAAP,CAAP,GAAqBA,MAAM,CAAC,CAAD,CAA3B;AACD;AACF,GATD;;AAUA,QAAM8E,IAAI,GAAGP,MAAM,CAAC9D,OAAP,CAAe3iC,IAAf,EAAqB,KAArB,CAAb;;AACA,MAAGgnC,IAAI,KAAKrvC,SAAZ,EAAuB,MAAMqvC,IAAN;;AACvB,QAAMC,IAAI,GAAGR,MAAM,CAAC9D,OAAP,CAAehrC,SAAf,EAA0B,IAA1B,CAAb;;AACA,MAAGsvC,IAAI,KAAKtvC,SAAZ,EAAuB,MAAMsvC,IAAN;AACvB,SAAOlG,OAAP;AACD,CArBD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AAEA,iBAAsBhnB,mBAAO,CAAC,sBAAD,CAA7B;AAAA,MAAQ+jB,SAAR,YAAQA,SAAR;;AACA,MAAMoJ,QAAQ,GAAGnsB,MAAM,CAACre,IAAP,CAAY,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAZ,CAAjB;;AAEA,MAAMyqC,WAAN,SAA0BrJ,SAA1B,CAAoC;AAClCtmC,aAAW,CAACqd,IAAI,GAAG,EAAR,EAAW;AACpB,0CAAU;AAACuyB,wBAAkB,EAAE;AAArB,KAAV,GAAyCvyB,IAAzC;AACA,UAAMpb,OAAO,GAAG,EAAhB;AACA,QAAIqjB,GAAJ,CAHoB,CAIpB;;AACA,SAAI,IAAI7W,GAAR,IAAe4O,IAAf,EAAoB;AAClBpb,aAAO,CAACglC,UAAU,CAACx4B,GAAD,CAAX,CAAP,GAA2B4O,IAAI,CAAC5O,GAAD,CAA/B;AACD;;AACD,QAAG6W,GAAG,GAAG,KAAKX,SAAL,CAAe1iB,OAAf,CAAT,EAAkC,MAAMqjB,GAAN;;AAClC,YAAOrjB,OAAO,CAAComC,gBAAf;AACE,WAAK,MAAL;AACEpmC,eAAO,CAAComC,gBAAR,GAA2B,IAA3B;AACA;;AACF,WAAK,MAAL;AACEpmC,eAAO,CAAComC,gBAAR,GAA2B,IAA3B;AACA;;AACF,WAAK,KAAL;AACEpmC,eAAO,CAAComC,gBAAR,GAA2B,IAA3B;AACA;;AACF,WAAK,SAAL;AACEpmC,eAAO,CAAComC,gBAAR,GAA2B,MAA3B;AACA;;AACF,WAAK,OAAL;AACEpmC,eAAO,CAAComC,gBAAR,GAA2B,QAA3B;AACA;;AACF,WAAK,SAAL;AACEpmC,eAAO,CAAComC,gBAAR,GAA2B,QAA3B;AACA;AAlBJ,KAToB,CA6BpB;;;AACA,SAAKpmC,OAAL,GAAeA,OAAf,CA9BoB,CA+BpB;;AACA,SAAKunC,KAAL,GAAa;AACXgB,UAAI,EAAE;AADK,KAAb,CAhCoB,CAmCpB;;AACA,SAAKzC,IAAL,GAAY;AACVwB,aAAO,EAAE;AADC,KAAZ;AAGD;;AACD5kB,WAAS,CAAC1iB,OAAD,EAAS;AAChB;AACA,QAAGA,OAAO,CAACklC,GAAR,KAAgBhnC,SAAhB,IAA6B8B,OAAO,CAACklC,GAAR,KAAgB,IAA7C,IAAqDllC,OAAO,CAACklC,GAAR,KAAgB,KAAxE,EAA8E;AAC5EllC,aAAO,CAACklC,GAAR,GAAc,KAAd;AACD,KAFD,MAEM,IAAGllC,OAAO,CAACklC,GAAR,KAAgB,IAAnB,EAAwB;AAC5B,aAAO,IAAID,QAAJ,CAAa,iCAAb,EAAgD,CACrD,uDADqD,EAEpD,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACklC,GAAvB,CAA4B,EAFkB,CAAhD,CAAP;AAID,KATe,CAUhB;;;AACA,QAAGllC,OAAO,CAAC2lC,SAAR,KAAsBznC,SAAtB,IAAmC8B,OAAO,CAAC2lC,SAAR,KAAsB,IAA5D,EAAiE;AAC/D3lC,aAAO,CAAC2lC,SAAR,GAAoB,GAApB;AACD,KAFD,MAEM,IAAGrkB,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAAC2lC,SAAxB,CAAH,EAAsC;AAC1C3lC,aAAO,CAAC2lC,SAAR,GAAoB3lC,OAAO,CAAC2lC,SAAR,CAAkB7pB,QAAlB,EAApB;AACD,KAFK,MAEA,IAAG,OAAO9b,OAAO,CAAC2lC,SAAf,KAA6B,QAAhC,EAAyC;AAC7C,aAAO,IAAIV,QAAJ,CAAa,mCAAb,EAAkD,CACvD,kDADuD,EAEtD,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAC2lC,SAAvB,CAAkC,EAFc,CAAlD,CAAP;AAID,KApBe,CAqBhB;;;AACA,QAAG3lC,OAAO,CAACkmC,KAAR,KAAkBhoC,SAAlB,IAA+B8B,OAAO,CAACkmC,KAAR,KAAkB,IAApD,EAAyD;AACvDlmC,aAAO,CAACkmC,KAAR,GAAgB,GAAhB;AACD,KAFD,MAEM,IAAGlmC,OAAO,CAACkmC,KAAR,KAAkB,IAArB,EAA0B;AAC9BlmC,aAAO,CAACkmC,KAAR,GAAgB,GAAhB;AACD,KAFK,MAEA,IAAGlmC,OAAO,CAACkmC,KAAR,KAAkB,KAArB,EAA2B;AAC/BlmC,aAAO,CAACkmC,KAAR,GAAgB,EAAhB;AACD,KAFK,MAEA,IAAI5kB,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAACkmC,KAAxB,CAAJ,EAAmC;AACvClmC,aAAO,CAACkmC,KAAR,GAAgBlmC,OAAO,CAACkmC,KAAR,CAAcpqB,QAAd,EAAhB;AACD,KAFK,MAEA,IAAG,OAAO9b,OAAO,CAACkmC,KAAf,KAAyB,QAA5B,EAAqC;AACzC,aAAO,IAAIjB,QAAJ,CAAa,+BAAb,EAA8C,CACnD,yDADmD,EAElD,OAAMn4B,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACkmC,KAAvB,CAA8B,EAFc,CAA9C,CAAP;AAID,KAnCe,CAoChB;;;AACA,QAAGlmC,OAAO,CAAC4tC,MAAR,KAAmB1vC,SAAnB,IAAgC8B,OAAO,CAAC4tC,MAAR,KAAmB,IAAtD,EAA2D;AACzD5tC,aAAO,CAAC4tC,MAAR,GAAiB,KAAjB;AACD,KAFD,MAEK,CACH;AACD,KAzCe,CA0ChB;;;AACA,QAAG5tC,OAAO,CAAC6tC,YAAR,KAAyB3vC,SAAzB,IAAsC8B,OAAO,CAAC6tC,YAAR,KAAyB,IAAlE,EAAuE;AACrE7tC,aAAO,CAAC6tC,YAAR,GAAuB3vC,SAAvB;AACD,KAFD,MAEK,CACH;AACD,KA/Ce,CAgDhB;;;AACA,QAAG8B,OAAO,CAAC8tC,YAAR,KAAyB5vC,SAAzB,IAAsC8B,OAAO,CAAC8tC,YAAR,KAAyB,IAA/D,IAAuE9tC,OAAO,CAAC8tC,YAAR,KAAyB,KAAnG,EAAyG;AACvG9tC,aAAO,CAAC8tC,YAAR,GAAuB,IAAvB;AACD,KAFD,MAEM,IAAG,CAAC9qC,KAAK,CAACwD,OAAN,CAAcxG,OAAO,CAAC8tC,YAAtB,CAAJ,EAAwC;AAC5C9tC,aAAO,CAAC8tC,YAAR,GAAuB,CAAC9tC,OAAO,CAAC8tC,YAAT,CAAvB;AACD;;AACD,QAAG9tC,OAAO,CAAC8tC,YAAX,EAAwB;AACtB,WAAI,IAAIA,YAAR,IAAwB9tC,OAAO,CAAC8tC,YAAhC,EAA6C;AAC3C,cAAMxwB,QAAQ,GAAG,OAAOwwB,YAAP,KAAwB,QAAzC;AACA,cAAMC,QAAQ,GAAGD,YAAY,YAAYlvB,MAAzC;;AACA,YAAG,CAACtB,QAAD,IAAa,CAACywB,QAAjB,EAA0B;AACxB,iBAAOrqC,KAAK,CAAE,iEAAgEoJ,IAAI,CAACC,SAAL,CAAe+gC,YAAf,CAA6B,EAA/F,CAAZ;AACD;AACF;AACF,KA9De,CA+DhB;;;AACA,QAAG9tC,OAAO,CAACguC,aAAR,KAA0B9vC,SAA1B,IAAuC8B,OAAO,CAACguC,aAAR,KAA0B,IAApE,EAAyE;AACvEhuC,aAAO,CAACguC,aAAR,GAAwB,KAAxB;AACD,KAFD,MAEK,CACH;AACD,KApEe,CAqEhB;;;AACA,QAAGhuC,OAAO,CAACiuC,GAAR,KAAgB/vC,SAAhB,IAA6B8B,OAAO,CAACiuC,GAAR,KAAgB,IAAhD,EAAqD;AACnDjuC,aAAO,CAACiuC,GAAR,GAAc,IAAd;AACD,KAFD,MAEK,CACH;AACD,KA1Ee,CA2EhB;;;AACA,QAAGjuC,OAAO,CAACyiC,MAAR,KAAmBvkC,SAAnB,IAAgC8B,OAAO,CAACyiC,MAAR,KAAmB,IAAtD,EAA2D;AACzDziC,aAAO,CAACyiC,MAAR,GAAiB,GAAjB;AACD,KAFD,MAEM,IAAGnhB,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAACyiC,MAAxB,CAAH,EAAmC;AACvCziC,aAAO,CAACyiC,MAAR,GAAiBziC,OAAO,CAACyiC,MAAR,CAAe3mB,QAAf,EAAjB;AACD,KAFK,MAEA,IAAG,OAAO9b,OAAO,CAACyiC,MAAf,KAA0B,QAA7B,EAAsC;AAC1C,aAAO/+B,KAAK,CAAE,4DAA2DoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAACyiC,MAAvB,CAA+B,EAA5F,CAAZ;AACD;;AACD,QAAIziC,OAAO,CAACyiC,MAAR,CAAev9B,MAAf,GAAwB,CAA5B,EAA8B;AAC5B,aAAOxB,KAAK,CAAE,qDAAoD1D,OAAO,CAACyiC,MAAR,CAAev9B,MAAO,aAA5E,CAAZ;AACD,KArFe,CAsFhB;;;AACA,QAAGlF,OAAO,CAACsiB,MAAR,KAAmBpkB,SAAnB,IAAgC8B,OAAO,CAACsiB,MAAR,KAAmB,IAAtD,EAA2D;AACzDtiB,aAAO,CAACsiB,MAAR,GAAiB,KAAjB;AACD,KAFD,MAEK,CACH;AACD,KA3Fe,CA4FhB;;;AACAtiB,WAAO,CAACulC,OAAR,GAAkB,KAAK2I,iBAAL,CAAuBluC,OAAO,CAACulC,OAA/B,CAAlB,CA7FgB,CA8FhB;;AACA,QAAGvlC,OAAO,CAAC4tC,MAAR,KAAmB1vC,SAAnB,IAAgC8B,OAAO,CAAC4tC,MAAR,KAAmB,IAAtD,EAA2D;AACzD5tC,aAAO,CAAC4tC,MAAR,GAAiB,KAAjB;AACD,KAFD,MAEK,CACH;AACD,KAnGe,CAoGhB;;;AACA,QAAG5tC,OAAO,CAAColC,IAAR,KAAiBlnC,SAAjB,IAA8B8B,OAAO,CAAColC,IAAR,KAAiB,IAAlD,EAAuD;AACrDplC,aAAO,CAAColC,IAAR,GAAe,EAAf;AACD,KAFD,MAEK,CACH;AACD,KAzGe,CA0GhB;;;AACA,QAAGplC,OAAO,CAAColC,IAAR,CAAa+I,MAAb,KAAwBjwC,SAAxB,IAAqC8B,OAAO,CAAColC,IAAR,CAAa+I,MAAb,KAAwB,IAAhE,EAAqE;AACnE;AACAnuC,aAAO,CAAColC,IAAR,CAAa+I,MAAb,GAAsB1vC,KAAK,IAAI,KAAKA,KAApC;AACD,KA9Ge,CA+GhB;;;AACA,QAAGuB,OAAO,CAAColC,IAAR,CAAagJ,OAAb,KAAyBlwC,SAAzB,IAAsC8B,OAAO,CAAColC,IAAR,CAAagJ,OAAb,KAAyB,IAAlE,EAAuE;AACrE;AACApuC,aAAO,CAAColC,IAAR,CAAagJ,OAAb,GAAuB3vC,KAAK,IAAIA,KAAK,GAAG,GAAH,GAAS,EAA9C;AACD,KAnHe,CAoHhB;;;AACA,QAAGuB,OAAO,CAAColC,IAAR,CAAalkC,IAAb,KAAsBhD,SAAtB,IAAmC8B,OAAO,CAAColC,IAAR,CAAalkC,IAAb,KAAsB,IAA5D,EAAiE;AAC/D;AACAlB,aAAO,CAAColC,IAAR,CAAalkC,IAAb,GAAoBzC,KAAK,IAAI,KAAKA,KAAK,CAACmQ,OAAN,EAAlC;AACD,KAxHe,CAyHhB;;;AACA,QAAG5O,OAAO,CAAColC,IAAR,CAAajoB,MAAb,KAAwBjf,SAAxB,IAAqC8B,OAAO,CAAColC,IAAR,CAAajoB,MAAb,KAAwB,IAAhE,EAAqE;AACnE;AACAnd,aAAO,CAAColC,IAAR,CAAajoB,MAAb,GAAsB1e,KAAK,IAAI,KAAKA,KAApC;AACD,KA7He,CA8HhB;;;AACA,QAAGuB,OAAO,CAAColC,IAAR,CAAap7B,MAAb,KAAwB9L,SAAxB,IAAqC8B,OAAO,CAAColC,IAAR,CAAap7B,MAAb,KAAwB,IAAhE,EAAqE;AACnE;AACAhK,aAAO,CAAColC,IAAR,CAAap7B,MAAb,GAAsBvL,KAAK,IAAIqO,IAAI,CAACC,SAAL,CAAetO,KAAf,CAA/B;AACD,KAlIe,CAmIhB;;;AACA,QAAGuB,OAAO,CAAColC,IAAR,CAAaiJ,MAAb,KAAwBnwC,SAAxB,IAAqC8B,OAAO,CAAColC,IAAR,CAAaiJ,MAAb,KAAwB,IAAhE,EAAqE;AACnE;AACAruC,aAAO,CAAColC,IAAR,CAAaiJ,MAAb,GAAsB,UAAS5vC,KAAT,EAAe;AAAC,eAAOA,KAAP;AAAa,OAAnD;AACD,KAvIe,CAwIhB;;;AACA,QAAGuB,OAAO,CAAComC,gBAAR,KAA6BloC,SAA7B,IAA0C8B,OAAO,CAAComC,gBAAR,KAA6B,IAA1E,EAA+E;AAC7EpmC,aAAO,CAAComC,gBAAR,GAA2B,IAA3B;AACD,KAFD,MAEM,IAAG9kB,MAAM,CAACC,QAAP,CAAgBvhB,OAAO,CAAComC,gBAAxB,CAAH,EAA6C;AACjDpmC,aAAO,CAAComC,gBAAR,GAA2BpmC,OAAO,CAAComC,gBAAR,CAAyBtqB,QAAzB,EAA3B;AACD,KAFK,MAEA,IAAG,OAAO9b,OAAO,CAAComC,gBAAf,KAAoC,QAAvC,EAAgD;AACpD,aAAO1iC,KAAK,CAAE,sEAAqEoJ,IAAI,CAACC,SAAL,CAAe/M,OAAO,CAAComC,gBAAvB,CAAyC,EAAhH,CAAZ;AACD;AACF;;AACD6C,YAAU,CAACqF,KAAD,EAAQnrB,QAAR,EAAkBH,QAAlB,EAA2B;AACnC,QAAG,KAAKukB,KAAL,CAAWgB,IAAX,KAAoB,IAAvB,EAA4B;AAC1B;AACD,KAHkC,CAInC;;;AACA,QAAG,CAACvlC,KAAK,CAACwD,OAAN,CAAc8nC,KAAd,CAAD,IAAyB,OAAOA,KAAP,KAAiB,QAA7C,EAAsD;AACpD,WAAK/G,KAAL,CAAWgB,IAAX,GAAkB,IAAlB;AACA,aAAOvlB,QAAQ,CAACtf,KAAK,CAAE,qDAAoDoJ,IAAI,CAACC,SAAL,CAAeuhC,KAAf,CAAsB,EAA5E,CAAN,CAAf;AACD,KARkC,CASnC;;;AACA,QAAG,KAAKxI,IAAL,CAAUwB,OAAV,KAAsB,CAAzB,EAA2B;AACzB,UAAGtkC,KAAK,CAACwD,OAAN,CAAc8nC,KAAd,CAAH,EAAwB;AACtB,YAAG,KAAKtuC,OAAL,CAAasiB,MAAb,KAAwB,IAAxB,IAAgC,CAAC,KAAKtiB,OAAL,CAAaulC,OAAjD,EAAyD;AACvD,eAAKgC,KAAL,CAAWgB,IAAX,GAAkB,IAAlB;AACA,iBAAOvlB,QAAQ,CAACtf,KAAK,CAAC,gFAAD,CAAN,CAAf;AACD;AACF,OALD,MAKM,IAAG,KAAK1D,OAAL,CAAaulC,OAAb,KAAyBrnC,SAAzB,IAAsC,KAAK8B,OAAL,CAAaulC,OAAb,KAAyB,IAAlE,EAAuE;AAC3E,aAAKvlC,OAAL,CAAaulC,OAAb,GAAuB,KAAK2I,iBAAL,CAAuBpsC,MAAM,CAACiS,IAAP,CAAYu6B,KAAZ,CAAvB,CAAvB;AACD;AACF,KAnBkC,CAoBnC;;;AACA,QAAG,KAAKxI,IAAL,CAAUwB,OAAV,KAAsB,CAAzB,EAA2B;AACzB,WAAKpC,GAAL;AACA,WAAKyG,OAAL;AACD,KAxBkC,CAyBnC;;;AACA,QAAG;AACD,WAAKiB,IAAL,CAAU,QAAV,EAAoB0B,KAApB,EAA2B,KAAKxI,IAAL,CAAUwB,OAArC;AACD,KAFD,CAEC,OAAMjkB,GAAN,EAAU;AACT,WAAKkkB,KAAL,CAAWgB,IAAX,GAAkB,IAAlB;AACA,aAAO,KAAKqE,IAAL,CAAU,OAAV,EAAmBvpB,GAAnB,CAAP;AACD,KA/BkC,CAgCnC;;;AACA,QAAIkrB,YAAJ;;AACA,QAAG,KAAKvuC,OAAL,CAAaiuC,GAAhB,EAAoB;AAClBM,kBAAY,GAAG,KAAKxhC,SAAL,CAAeuhC,KAAf,CAAf;;AACA,UAAGC,YAAY,KAAKrwC,SAApB,EAA8B;AAC5B;AACD,OAFD,MAEK;AACHqwC,oBAAY,GAAGA,YAAY,GAAG,KAAKvuC,OAAL,CAAaomC,gBAA3C;AACD;AACF,KAPD,MAOK;AACHmI,kBAAY,GAAG,KAAKxhC,SAAL,CAAeuhC,KAAf,CAAf;;AACA,UAAGC,YAAY,KAAKrwC,SAApB,EAA8B;AAC5B;AACD,OAFD,MAEK;AACH,YAAG,KAAK8B,OAAL,CAAasiB,MAAb,IAAuB,KAAKwjB,IAAL,CAAUwB,OAApC,EAA4C;AAC1CiH,sBAAY,GAAG,KAAKvuC,OAAL,CAAaomC,gBAAb,GAAgCmI,YAA/C;AACD;AACF;AACF,KAlDkC,CAmDnC;;;AACA,SAAKzI,IAAL,CAAUwB,OAAV;AACA,SAAKvjC,IAAL,CAAUwqC,YAAV;AACAvrB,YAAQ;AACT;;AACDmmB,QAAM,CAACnmB,QAAD,EAAU;AACd,QAAG,KAAK8iB,IAAL,CAAUwB,OAAV,KAAsB,CAAzB,EAA2B;AACzB,WAAKpC,GAAL;AACA,WAAKyG,OAAL;AACD;;AACD3oB,YAAQ;AACT;;AACDjW,WAAS,CAACuhC,KAAD,EAAQE,aAAa,GAAC,KAAtB,EAA4B;AACnC,QAAG,OAAOF,KAAP,KAAiB,QAApB,EAA6B;AAC3B,aAAOA,KAAP;AACD;;AACD,0BAA0B,KAAKtuC,OAA/B;AAAA,UAAOulC,OAAP,iBAAOA,OAAP;AAAA,UAAgBjjB,MAAhB,iBAAgBA,MAAhB;AACA,UAAMmmB,MAAM,GAAG,EAAf,CALmC,CAMnC;;AACA,QAAGzlC,KAAK,CAACwD,OAAN,CAAc8nC,KAAd,CAAH,EAAwB;AACtB;AACA;AACA,UAAG/I,OAAH,EAAW;AACT+I,aAAK,CAACjnC,MAAN,CAAak+B,OAAO,CAACrgC,MAArB;AACD,OALqB,CAMtB;;;AACA,WAAI,IAAI6Y,CAAC,GAAC,CAAV,EAAaA,CAAC,GAACuwB,KAAK,CAACppC,MAArB,EAA6B6Y,CAAC,EAA9B,EAAiC;AAC/B,cAAMmqB,KAAK,GAAGoG,KAAK,CAACvwB,CAAD,CAAnB;;AACA,6BAAqB,KAAK+tB,MAAL,CAAY5D,KAAZ,EAAmB;AACtCjkC,eAAK,EAAE8Z,CAD+B;AAC5B+uB,gBAAM,EAAE/uB,CADoB;AACjBupB,iBAAO,EAAE,KAAKxB,IAAL,CAAUwB,OADF;AACWhlB,gBAAM,EAAEksB;AADnB,SAAnB,CAArB;AAAA;AAAA,cAAOnrB,GAAP;AAAA,cAAY5kB,KAAZ;;AAGA,YAAG4kB,GAAH,EAAO;AACL,eAAKupB,IAAL,CAAU,OAAV,EAAmBvpB,GAAnB;AACA;AACD;;AACDolB,cAAM,CAAC1qB,CAAD,CAAN,GAAY,CAACtf,KAAD,EAAQypC,KAAR,CAAZ;AACD,OAjBqB,CAkBxB;;AACC,KAnBD,MAmBK;AACH,UAAG3C,OAAH,EAAW;AACT,aAAI,IAAIxnB,CAAC,GAAC,CAAV,EAAaA,CAAC,GAACwnB,OAAO,CAACrgC,MAAvB,EAA+B6Y,CAAC,EAAhC,EAAmC;AACjC,gBAAMmqB,KAAK,GAAG/mC,GAAG,CAACmtC,KAAD,EAAQ/I,OAAO,CAACxnB,CAAD,CAAP,CAAW/J,GAAnB,CAAjB;;AACA,gCAAqB,KAAK83B,MAAL,CAAY5D,KAAZ,EAAmB;AACtCjkC,iBAAK,EAAE8Z,CAD+B;AAC5B+uB,kBAAM,EAAEvH,OAAO,CAACxnB,CAAD,CAAP,CAAW/J,GADS;AACJszB,mBAAO,EAAE,KAAKxB,IAAL,CAAUwB,OADf;AACwBhlB,kBAAM,EAAEksB;AADhC,WAAnB,CAArB;AAAA;AAAA,gBAAOnrB,GAAP;AAAA,gBAAY5kB,KAAZ;;AAGA,cAAG4kB,GAAH,EAAO;AACL,iBAAKupB,IAAL,CAAU,OAAV,EAAmBvpB,GAAnB;AACA;AACD;;AACDolB,gBAAM,CAAC1qB,CAAD,CAAN,GAAY,CAACtf,KAAD,EAAQypC,KAAR,CAAZ;AACD;AACF,OAZD,MAYK;AACH,aAAI,IAAI4E,MAAR,IAAkBwB,KAAlB,EAAwB;AACtB,gBAAMpG,KAAK,GAAGoG,KAAK,CAACxB,MAAD,CAAnB;;AACA,gCAAqB,KAAKhB,MAAL,CAAY5D,KAAZ,EAAmB;AACtCjkC,iBAAK,EAAE8Z,CAD+B;AAC5B+uB,kBAAM,EAAEvH,OAAO,CAACxnB,CAAD,CAAP,CAAW/J,GADS;AACJszB,mBAAO,EAAE,KAAKxB,IAAL,CAAUwB,OADf;AACwBhlB,kBAAM,EAAEksB;AADhC,WAAnB,CAArB;AAAA;AAAA,gBAAOnrB,GAAP;AAAA,gBAAY5kB,KAAZ;;AAGA,cAAG4kB,GAAH,EAAO;AACL,iBAAKupB,IAAL,CAAU,OAAV,EAAmBvpB,GAAnB;AACA;AACD;;AACDolB,gBAAM,CAAC1kC,IAAP,CAAY,CAACtF,KAAD,EAAQypC,KAAR,CAAZ;AACD;AACF;AACF;;AACD,QAAIuG,SAAS,GAAG,EAAhB;;AACA,SAAI,IAAI1wB,CAAC,GAAC,CAAV,EAAaA,CAAC,GAAC0qB,MAAM,CAACvjC,MAAtB,EAA8B6Y,CAAC,EAA/B,EAAkC;AAChC,UAAI/d,OAAJ,EAAaqjB,GAAb;;AACA,qCAAqBolB,MAAM,CAAC1qB,CAAD,CAA3B;AAAA,UAAKtf,KAAL;AAAA,UAAYypC,KAAZ;;AACA,UAAG,OAAOzpC,KAAP,KAAiB,QAApB,EAA6B;AAC3BuB,eAAO,GAAG,KAAKA,OAAf;AACD,OAFD,MAEM,IAAGyd,QAAQ,CAAChf,KAAD,CAAX,EAAmB;AACvB;AACAuB,eAAO,GAAGvB,KAAV;AACAA,aAAK,GAAGuB,OAAO,CAACvB,KAAhB;AACA,eAAOuB,OAAO,CAACvB,KAAf;;AACA,YAAG,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAKP,SAAvC,IAAoDO,KAAK,KAAK,IAAjE,EAAsE;AACpE,eAAKmuC,IAAL,CAAU,OAAV,EAAmBlpC,KAAK,CAAE,sFAAqFoJ,IAAI,CAACC,SAAL,CAAetO,KAAf,CAAsB,EAA7G,CAAxB;AACA;AACD;;AACDuB,eAAO,mCAAO,KAAKA,OAAZ,GAAwBA,OAAxB,CAAP;;AACA,YAAGqjB,GAAG,GAAG,KAAKX,SAAL,CAAe1iB,OAAf,CAAT,EAAiC;AAC/B,eAAK4sC,IAAL,CAAU,OAAV,EAAmBvpB,GAAnB;AACA;AACD;AACF,OAdK,MAcA,IAAG5kB,KAAK,KAAKP,SAAV,IAAuBO,KAAK,KAAK,IAApC,EAAyC;AAC7CuB,eAAO,GAAG,KAAKA,OAAf;AACD,OAFK,MAED;AACH,aAAK4sC,IAAL,CAAU,OAAV,EAAmBlpC,KAAK,CAAE,iGAAgGoJ,IAAI,CAACC,SAAL,CAAetO,KAAf,CAAsB,EAAxH,CAAxB;AACA;AACD;;AACD,uBAAwGuB,OAAxG;AAAA,YAAO2lC,SAAP,YAAOA,SAAP;AAAA,YAAkBlD,MAAlB,YAAkBA,MAAlB;AAAA,YAA0ByD,KAA1B,YAA0BA,KAA1B;AAAA,YAAiC0H,MAAjC,YAAiCA,MAAjC;AAAA,YAAyCC,YAAzC,YAAyCA,YAAzC;AAAA,YAAuDG,aAAvD,YAAuDA,aAAvD;AAAA,YAAsEF,YAAtE,YAAsEA,YAAtE;AAAA,YAAoF1H,gBAApF,YAAoFA,gBAApF;;AACA,UAAG3nC,KAAH,EAAS;AACP,YAAG,OAAOA,KAAP,KAAiB,QAApB,EAA6B;AAC3B,eAAKmuC,IAAL,CAAU,OAAV,EAAmBlpC,KAAK,CAAE,0DAAyDoJ,IAAI,CAACC,SAAL,CAAetO,KAAf,CAAsB,EAAjF,CAAxB;AACA,iBAAO,IAAP;AACD;;AACD,cAAMiwC,iBAAiB,GAAG/I,SAAS,CAACzgC,MAAV,IAAoBzG,KAAK,CAACyO,OAAN,CAAcy4B,SAAd,KAA4B,CAA1E;AACA,cAAMgJ,aAAa,GAAIzI,KAAK,KAAK,EAAX,IAAkBznC,KAAK,CAACyO,OAAN,CAAcg5B,KAAd,KAAwB,CAAhE;AACA,cAAM0I,cAAc,GAAGnwC,KAAK,CAACyO,OAAN,CAAcu1B,MAAd,KAAyB,CAAzB,IAA+BA,MAAM,KAAKyD,KAAjE;AACA,cAAM2I,uBAAuB,GAAGpwC,KAAK,CAACyO,OAAN,CAAck5B,gBAAd,KAAmC,CAAnE;AACA,cAAM0I,YAAY,GAAGd,aAAa,IAAI,OAAO9F,KAAP,KAAiB,QAAvD;AACA,YAAI6G,WAAW,GAAGjB,YAAY,IAAIA,YAAY,CAACnoC,MAAb,CAAqBmoC,YAAY,IAAI;AACrE,cAAG,OAAOA,YAAP,KAAwB,QAA3B,EAAoC;AAClC,mBAAOrvC,KAAK,CAACyO,OAAN,CAAc4gC,YAAd,MAAgC,CAAC,CAAxC;AACD,WAFD,MAEK;AACH,mBAAOA,YAAY,CAACppB,IAAb,CAAkBjmB,KAAlB,CAAP;AACD;AACF,SANiC,CAAlC;AAOAswC,mBAAW,GAAGA,WAAW,IAAIA,WAAW,CAAC7pC,MAAZ,GAAqB,CAAlD;AACA,cAAM8pC,WAAW,GAAGL,aAAa,KAAK,IAAlB,IAA0BD,iBAA1B,IAA+CG,uBAA/C,IAA0EjB,MAA1E,IAAoFkB,YAApF,IAAoGC,WAAxH;;AACA,YAAGC,WAAW,KAAK,IAAhB,IAAwBJ,cAAc,KAAK,IAA9C,EAAmD;AACjD,gBAAMK,MAAM,GAAGxM,MAAM,KAAK,IAAX,GACb,IAAI7jB,MAAJ,CAAW6jB,MAAM,GAAGA,MAApB,EAA4B,GAA5B,CADa,GAEb,IAAI7jB,MAAJ,CAAW6jB,MAAX,EAAmB,GAAnB,CAFF;AAGAhkC,eAAK,GAAGA,KAAK,CAAC+f,OAAN,CAAcywB,MAAd,EAAsBxM,MAAM,GAAGA,MAA/B,CAAR;AACD;;AACD,YAAGkM,aAAa,KAAK,IAArB,EAA0B;AACxB,gBAAMM,MAAM,GAAG,IAAIrwB,MAAJ,CAAWsnB,KAAX,EAAiB,GAAjB,CAAf;AACAznC,eAAK,GAAGA,KAAK,CAAC+f,OAAN,CAAcywB,MAAd,EAAsBxM,MAAM,GAAGyD,KAA/B,CAAR;AACD;;AACD,YAAG8I,WAAW,KAAK,IAAnB,EAAwB;AACtBvwC,eAAK,GAAGynC,KAAK,GAAGznC,KAAR,GAAgBynC,KAAxB;AACD;;AACDuI,iBAAS,IAAIhwC,KAAb;AACD,OAjCD,MAiCM,IAAGovC,YAAY,KAAK,IAAjB,IAA0B3F,KAAK,KAAK,EAAV,IAAgB8F,aAAa,KAAK,IAAlC,IAA0CH,YAAY,KAAK,KAAxF,EAA+F;AACnGY,iBAAS,IAAIvI,KAAK,GAAGA,KAArB;AACD;;AACD,UAAGnoB,CAAC,KAAK0qB,MAAM,CAACvjC,MAAP,GAAgB,CAAzB,EAA2B;AACzBupC,iBAAS,IAAI9I,SAAb;AACD;AACF;;AACD,WAAO8I,SAAP;AACD;;AACDvJ,KAAG,GAAE;AACH,QAAG,KAAKllC,OAAL,CAAaklC,GAAb,KAAqB,IAAxB,EAA6B;AAC3B;AACD;;AACD,SAAKnhC,IAAL,CAAU0pC,QAAV;AACD;;AACD9B,SAAO,GAAE;AACP,QAAG,KAAK3rC,OAAL,CAAasiB,MAAb,KAAwB,KAA3B,EAAiC;AAC/B;AACD;;AACD,QAAG,KAAKtiB,OAAL,CAAaulC,OAAb,KAAyBrnC,SAA5B,EAAsC;AACpC;AACD;;AACD,QAAIytC,OAAO,GAAG,KAAK3rC,OAAL,CAAaulC,OAAb,CAAqBtjC,GAArB,CAAyB6qC,MAAM,IAAIA,MAAM,CAACxqB,MAA1C,CAAd;;AACA,QAAG,KAAKtiB,OAAL,CAAaiuC,GAAhB,EAAoB;AAClBtC,aAAO,GAAG,KAAK5+B,SAAL,CAAe4+B,OAAf,EAAwB,IAAxB,IAAgC,KAAK3rC,OAAL,CAAaomC,gBAAvD;AACD,KAFD,MAEK;AACHuF,aAAO,GAAG,KAAK5+B,SAAL,CAAe4+B,OAAf,CAAV;AACD;;AACD,SAAK5nC,IAAL,CAAU4nC,OAAV;AACD;;AACDG,QAAM,CAACrtC,KAAD,EAAQof,OAAR,EAAgB;AACpB,UAAMxC,IAAI,GAAG,OAAO5c,KAApB;;AACA,QAAG;AACD,UAAG4c,IAAI,KAAK,QAAZ,EAAqB;AAAE;AACrB,eAAO,CAACnd,SAAD,EAAY,KAAK8B,OAAL,CAAaolC,IAAb,CAAkBiJ,MAAlB,CAAyB5vC,KAAzB,EAAgCof,OAAhC,CAAZ,CAAP;AACD,OAFD,MAEM,IAAGxC,IAAI,KAAK,QAAZ,EAAqB;AACzB,eAAO,CAACnd,SAAD,EAAY,KAAK8B,OAAL,CAAaolC,IAAb,CAAkB+I,MAAlB,CAAyB1vC,KAAzB,EAAgCof,OAAhC,CAAZ,CAAP;AACD,OAFK,MAEA,IAAGxC,IAAI,KAAK,QAAZ,EAAqB;AACzB,eAAO,CAACnd,SAAD,EAAY,KAAK8B,OAAL,CAAaolC,IAAb,CAAkBjoB,MAAlB,CAAyB1e,KAAzB,EAAgCof,OAAhC,CAAZ,CAAP;AACD,OAFK,MAEA,IAAGxC,IAAI,KAAK,SAAZ,EAAsB;AAC1B,eAAO,CAACnd,SAAD,EAAY,KAAK8B,OAAL,CAAaolC,IAAb,CAAkBgJ,OAAlB,CAA0B3vC,KAA1B,EAAiCof,OAAjC,CAAZ,CAAP;AACD,OAFK,MAEA,IAAGpf,KAAK,YAAY4K,IAApB,EAAyB;AAC7B,eAAO,CAACnL,SAAD,EAAY,KAAK8B,OAAL,CAAaolC,IAAb,CAAkBlkC,IAAlB,CAAuBzC,KAAvB,EAA8Bof,OAA9B,CAAZ,CAAP;AACD,OAFK,MAEA,IAAGxC,IAAI,KAAK,QAAT,IAAqB5c,KAAK,KAAK,IAAlC,EAAuC;AAC3C,eAAO,CAACP,SAAD,EAAY,KAAK8B,OAAL,CAAaolC,IAAb,CAAkBp7B,MAAlB,CAAyBvL,KAAzB,EAAgCof,OAAhC,CAAZ,CAAP;AACD,OAFK,MAED;AACH,eAAO,CAAC3f,SAAD,EAAYO,KAAZ,EAAmBA,KAAnB,CAAP;AACD;AACF,KAhBD,CAgBC,OAAM4kB,GAAN,EAAU;AACT,aAAO,CAACA,GAAD,CAAP;AACD;AACF;;AACD6qB,mBAAiB,CAAC3I,OAAD,EAAS;AACxB,QAAGA,OAAO,KAAKrnC,SAAZ,IAAyBqnC,OAAO,KAAK,IAAxC,EAA6C;AAC3C,aAAOrnC,SAAP;AACD;;AACD,QAAG,OAAOqnC,OAAP,KAAmB,QAAtB,EAA+B;AAC7B,YAAM7hC,KAAK,CAAC,wDAAD,CAAX;AACD;;AACD,QAAG,CAACV,KAAK,CAACwD,OAAN,CAAc++B,OAAd,CAAJ,EAA2B;AACzB,YAAM2J,UAAU,GAAG,EAAnB;;AACA,WAAI,IAAI7b,CAAR,IAAakS,OAAb,EAAqB;AACnB2J,kBAAU,CAACnrC,IAAX,CAAgB;AACdiQ,aAAG,EAAEqf,CADS;AAEd/Q,gBAAM,EAAEijB,OAAO,CAAClS,CAAD;AAFD,SAAhB;AAID;;AACDkS,aAAO,GAAG2J,UAAV;AACD,KATD,MASK;AACH,YAAMA,UAAU,GAAG,EAAnB;;AACA,WAAI,IAAIpC,MAAR,IAAkBvH,OAAlB,EAA0B;AACxB,YAAG,OAAOuH,MAAP,KAAkB,QAArB,EAA8B;AAC5BoC,oBAAU,CAACnrC,IAAX,CAAgB;AACdiQ,eAAG,EAAE84B,MADS;AAEdxqB,kBAAM,EAAEwqB;AAFM,WAAhB;AAID,SALD,MAKM,IAAG,OAAOA,MAAP,KAAkB,QAAlB,IAA8BA,MAAM,KAAK5uC,SAAzC,IAAsD,CAAC8E,KAAK,CAACwD,OAAN,CAAcsmC,MAAd,CAA1D,EAAgF;AACpF,cAAG,CAACA,MAAM,CAAC94B,GAAX,EAAe;AACb,kBAAMtQ,KAAK,CAAC,uDAAD,CAAX;AACD;;AACD,cAAGopC,MAAM,CAACxqB,MAAP,KAAkBpkB,SAArB,EAA+B;AAC7B4uC,kBAAM,CAACxqB,MAAP,GAAgBwqB,MAAM,CAAC94B,GAAvB;AACD;;AACDk7B,oBAAU,CAACnrC,IAAX,CAAgB+oC,MAAhB;AACD,SARK,MAQD;AACH,gBAAMppC,KAAK,CAAC,yDAAD,CAAX;AACD;AACF;;AACD6hC,aAAO,GAAG2J,UAAV;AACD;;AACD,WAAO3J,OAAP;AACD;;AArciC;;AAwcpC,MAAMx4B,SAAS,GAAG,YAAU;AAC1B,MAAIxG,IAAJ,EAAUvG,OAAV,EAAmBgjB,QAAnB;;AACA,OAAI,IAAIjF,CAAR,IAAa3P,SAAb,EAAuB;AACrB,UAAM2+B,QAAQ,GAAG3+B,SAAS,CAAC2P,CAAD,CAA1B;AACA,UAAM1C,IAAI,GAAG,OAAO0xB,QAApB;;AACA,QAAGxmC,IAAI,KAAKrI,SAAT,IAAuB8E,KAAK,CAACwD,OAAN,CAAcumC,QAAd,CAA1B,EAAmD;AACjDxmC,UAAI,GAAGwmC,QAAP;AACD,KAFD,MAEM,IAAG/sC,OAAO,KAAK9B,SAAZ,IAAyBuf,QAAQ,CAACsvB,QAAD,CAApC,EAA+C;AACnD/sC,aAAO,GAAG+sC,QAAV;AACD,KAFK,MAEA,IAAG/pB,QAAQ,KAAK9kB,SAAb,IAA0Bmd,IAAI,KAAK,UAAtC,EAAiD;AACrD2H,cAAQ,GAAG+pB,QAAX;AACD,KAFK,MAED;AACH,YAAM,IAAI9H,QAAJ,CAAa,sBAAb,EAAqC,CACzC,mBADyC,EAExC,OAAMn4B,IAAI,CAACC,SAAL,CAAeggC,QAAf,CAAyB,aAAYhvB,CAAE,EAFL,CAArC,CAAN;AAID;AACF;;AACD,QAAMoxB,WAAW,GAAG,IAAIzB,WAAJ,CAAgB1tC,OAAhB,CAApB;;AACA,MAAGgjB,QAAH,EAAY;AACV,UAAMosB,MAAM,GAAG,EAAf;AACAD,eAAW,CAAC3d,EAAZ,CAAe,UAAf,EAA2B,YAAU;AACnC,UAAI8c,KAAJ;;AACA,aAAM,CAACA,KAAK,GAAG,KAAKrB,IAAL,EAAT,MAA0B,IAAhC,EAAqC;AACnCmC,cAAM,CAACrrC,IAAP,CAAYuqC,KAAZ;AACD;AACF,KALD;AAMAa,eAAW,CAAC3d,EAAZ,CAAe,OAAf,EAAwB,UAASnO,GAAT,EAAa;AACnCL,cAAQ,CAACK,GAAD,CAAR;AACD,KAFD;AAGA8rB,eAAW,CAAC3d,EAAZ,CAAe,KAAf,EAAsB,YAAU;AAC9BxO,cAAQ,CAAC9kB,SAAD,EAAYkxC,MAAM,CAACnvB,IAAP,CAAY,EAAZ,CAAZ,CAAR;AACD,KAFD;AAGD;;AACD,MAAG1Z,IAAI,KAAKrI,SAAZ,EAAsB;AACpB;AACA,QAAG,OAAOgvC,YAAP,KAAwB,UAA3B,EAAsC;AACpCA,kBAAY,CAAC,YAAU;AACrB,aAAI,IAAIzE,MAAR,IAAkBliC,IAAlB,EAAuB;AACrB4oC,qBAAW,CAACzT,KAAZ,CAAkB+M,MAAlB;AACD;;AACD0G,mBAAW,CAACpwC,GAAZ;AACD,OALW,CAAZ;AAMD,KAPD,MAOK;AACH,WAAI,IAAI0pC,MAAR,IAAkBliC,IAAlB,EAAuB;AACrB4oC,mBAAW,CAACzT,KAAZ,CAAkB+M,MAAlB;AACD;;AACD0G,iBAAW,CAACpwC,GAAZ;AACD;AACF;;AACD,SAAOowC,WAAP;AACD,CAnDD;;AAqDA,MAAMlK,QAAN,SAAuBvhC,KAAvB,CAA6B;AAC3B3F,aAAW,CAACsnB,IAAD,EAAO8nB,OAAP,EAAgB,GAAGC,QAAnB,EAA6B;AACtC,QAAGpqC,KAAK,CAACwD,OAAN,CAAc2mC,OAAd,CAAH,EAA2BA,OAAO,GAAGA,OAAO,CAACltB,IAAR,CAAa,GAAb,CAAV;AAC3B,UAAMktB,OAAN;;AACA,QAAGzpC,KAAK,CAAC2pC,iBAAN,KAA4BnvC,SAA/B,EAAyC;AACvCwF,WAAK,CAAC2pC,iBAAN,CAAwB,IAAxB,EAA8BpI,QAA9B;AACD;;AACD,SAAK5f,IAAL,GAAYA,IAAZ;;AACA,SAAI,MAAMxH,OAAV,IAAqBuvB,QAArB,EAA8B;AAC5B,WAAI,MAAMp5B,GAAV,IAAiB6J,OAAjB,EAAyB;AACvB,cAAMpf,KAAK,GAAGof,OAAO,CAAC7J,GAAD,CAArB;AACA,aAAKA,GAAL,IAAYsN,MAAM,CAACC,QAAP,CAAgB9iB,KAAhB,IAAyBA,KAAK,CAACqd,QAAN,EAAzB,GAA4Crd,KAAK,IAAI,IAAT,GAAgBA,KAAhB,GAAwBqO,IAAI,CAAC0G,KAAL,CAAW1G,IAAI,CAACC,SAAL,CAAetO,KAAf,CAAX,CAAhF;AACD;AACF;AACF;;AAd0B;;AAiB7BsO,SAAS,CAAC2gC,WAAV,GAAwBA,WAAxB;AAEA3gC,SAAS,CAACk4B,QAAV,GAAqBA,QAArB;AAEA/kB,MAAM,CAACC,OAAP,GAAiBpT,SAAjB;;AAEA,MAAM0Q,QAAQ,GAAG,UAASxJ,GAAT,EAAa;AAC5B,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,KAAK,IAAnC,IAA2C,CAAEjR,KAAK,CAACwD,OAAN,CAAcyN,GAAd,CAApD;AACD,CAFD;;AAIA,MAAM+wB,UAAU,GAAG,UAAS7C,GAAT,EAAa;AAC9B,SAAOA,GAAG,CAAC3jB,OAAJ,CAAY,UAAZ,EAAwB,UAASxY,CAAT,EAAYqY,KAAZ,EAAkB;AAC/C,WAAO,MAAMA,KAAK,CAACkhB,WAAN,EAAb;AACD,GAFM,CAAP;AAGD,CAJD,C,CAMA;;;AAEA,MAAM8P,aAAa,GAAG,IAAI9xB,UAAJ,CAAe,CAAf,CAAtB;AACA,MAAM+xB,YAAY,GAAG,UAArB;AACA,MAAMC,UAAU,GAAG3wB,MAAM,EACvB;AACA,cAAc,GAAd,GACA;AACA,QAFA,GAGE;AACA,eAJF,GAIoB,GAJpB,GAKE;AACA,wCANF,GAOA,MAPA,GAOQ,GAPR,GAQA;AACA,oCAXuB,EAYvB,GAZuB,CAAzB;AAaA,MAAM4wB,YAAY,GAAG,kDAArB;AACA,MAAMC,aAAa,GAAG,OAAtB;;AACA,MAAMC,MAAM,GAAG,UAASjxC,KAAT,EAAe;AAC5B,MAAG,CAACA,KAAJ,EACEA,KAAK,KAAKP,SAAV,GAAsB,oBAAtB,GAA6C,eAA7C;AACF,SAAO4D,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+Btd,KAA/B,CAAP;AACD,CAJD;;AAKA,MAAMkxC,KAAK,GAAG,UAASlxC,KAAT,EAAgBuL,MAAhB,EAAuB;AACnC,MAAGhH,KAAK,CAACwD,OAAN,CAAc/H,KAAd,CAAH,EAAwB;AACtB,WAAO,KAAP;AACD;;AACD,QAAM4c,IAAI,GAAG,OAAO5c,KAApB;;AACA,MAAG4c,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAA9B,IAA0CA,IAAI,KAAK,SAAnD,IAAgE,CAAC5c,KAAjE,IAA0EmxC,QAAQ,CAACnxC,KAAD,CAArF,EAA6F;AAC3F,WAAO,IAAP;AACD;;AACD,SAAOgxC,aAAa,CAAC/qB,IAAd,CAAmBjmB,KAAnB,KAA6B,CAAC+wC,YAAY,CAAC9qB,IAAb,CAAkBjmB,KAAlB,CAA9B,IACJuL,MAAM,IAAI,IAAV,IAAkBvL,KAAK,IAAIqD,MAAM,CAACkI,MAAD,CADpC;AAED,CAVD;;AAWA,MAAM4lC,QAAQ,GAAG,UAASnxC,KAAT,EAAe;AAC9B,QAAM4c,IAAI,GAAG,OAAO5c,KAApB;AACA,SAAO4c,IAAI,KAAK,QAAT,IAAsBA,IAAI,KAAK,QAAT,IAAqB5c,KAArB,IAA8BixC,MAAM,CAACjxC,KAAD,CAAN,KAAkB,iBAA7E;AACD,CAHD;;AAIA,MAAMoxC,YAAY,GAAG,UAASxB,MAAT,EAAgB;AACnC,QAAMp7B,MAAM,GAAG,EAAf;;AACA,MAAGo7B,MAAM,CAAC9wB,UAAP,CAAkB,CAAlB,MAAyB8xB,aAA5B,EAA0C;AACxCp8B,UAAM,CAAClP,IAAP,CAAY,EAAZ;AACD;;AACDsqC,QAAM,CAAC7vB,OAAP,CAAe+wB,UAAf,EAA2B,UAASlxB,KAAT,EAAgByxB,UAAhB,EAA4B5J,KAA5B,EAAmC6J,SAAnC,EAA6C;AACtE,QAAI/7B,GAAG,GAAGqK,KAAV;;AACA,QAAG6nB,KAAH,EAAS;AACPlyB,SAAG,GAAG+7B,SAAS,CAACvxB,OAAV,CAAkB8wB,YAAlB,EAAgC,IAAhC,CAAN;AACD,KAFD,MAEM,IAAGQ,UAAH,EAAc;AAClB97B,SAAG,GAAG87B,UAAU,CAAC/I,IAAX,EAAN;AACD;;AACD9zB,UAAM,CAAClP,IAAP,CAAYiQ,GAAZ;AACD,GARD;AASA,SAAOf,MAAP;AACD,CAfD;;AAgBA,MAAM+8B,QAAQ,GAAG,UAASvxC,KAAT,EAAgBuL,MAAhB,EAAuB;AACtC,MAAGhH,KAAK,CAACwD,OAAN,CAAc/H,KAAd,CAAH,EAAwB;AACtB,WAAOA,KAAP;AACD,GAFD,MAEO;AACL,WAAOkxC,KAAK,CAAClxC,KAAD,EAAQuL,MAAR,CAAL,GAAuB,CAACvL,KAAD,CAAvB,GAAiCoxC,YAAY,CAACpxC,KAAD,CAApD;AACD;AACF,CAND;;AAOA,MAAMwxC,KAAK,GAAG,UAASxxC,KAAT,EAAe;AAC3B,MAAG,OAAOA,KAAP,KAAiB,QAAjB,IAA6BmxC,QAAQ,CAACnxC,KAAD,CAAxC,EACE,OAAOA,KAAP;AACF,QAAMwU,MAAM,GAAI,GAAExU,KAAM,EAAxB;AACA,SAAQwU,MAAM,IAAI,GAAV,IAAkB,IAAIxU,KAAL,IAAe,CAACyxC,QAAlC,GAA8C,IAA9C,GAAqDj9B,MAA5D;AACD,CALD;;AAMA,MAAM9R,GAAG,GAAG,UAAS6I,MAAT,EAAiBkvB,IAAjB,EAAsB;AAChCA,MAAI,GAAG8W,QAAQ,CAAC9W,IAAD,EAAOlvB,MAAP,CAAf;AACA,MAAI/F,KAAK,GAAG,CAAZ;AACA,QAAMiB,MAAM,GAAGg0B,IAAI,CAACh0B,MAApB;;AACA,SAAM8E,MAAM,IAAI,IAAV,IAAkB/F,KAAK,GAAGiB,MAAhC,EAAuC;AACrC8E,UAAM,GAAGA,MAAM,CAACimC,KAAK,CAAC/W,IAAI,CAACj1B,KAAK,EAAN,CAAL,CAAN,CAAf;AACD;;AACD,SAAQA,KAAK,IAAIA,KAAK,KAAKiB,MAApB,GAA8B8E,MAA9B,GAAuC9L,SAA9C;AACD,CARD,C;;;;;;;;;;;AC5mBA,MAAM6O,SAAS,GAAGuT,mBAAO,CAAC,oDAAD,CAAzB;;AACA,iBAAwBA,mBAAO,CAAC,sCAAD,CAA/B;AAAA,MAAO6vB,aAAP,YAAOA,aAAP;;AAEAjwB,MAAM,CAACC,OAAP,GAAiB,UAASmnB,OAAT,EAAkBtnC,OAAO,GAAC,EAA1B,EAA6B;AAC5C,QAAMuG,IAAI,GAAG,EAAb;;AACA,MAAG+a,MAAM,CAACC,QAAP,CAAgB+lB,OAAhB,CAAH,EAA4B;AAC1B,UAAM8I,OAAO,GAAG,IAAID,aAAJ,EAAhB;AACA7I,WAAO,GAAG8I,OAAO,CAAC1U,KAAR,CAAc4L,OAAd,CAAV;AACD;;AACD,WAAS+I,MAAT,CAAgB5H,MAAhB,EAAuB;AACrB,QAAGA,MAAH,EAAU;AACRliC,UAAI,CAACxC,IAAL,CAAU0kC,MAAM,CAAC3sB,QAAP,EAAV;AACD;AACF;;AACD,MAAIqzB,WAAW,GAAG,IAAIpiC,SAAS,CAAC2gC,WAAd,CAA0B1tC,OAA1B,CAAlB;AACAmvC,aAAW,CAAC3d,EAAZ,CAAe,MAAf,EAAuB6e,MAAvB;;AACA,OAAI,IAAI5H,MAAR,IAAkBnB,OAAlB,EAA0B;AACxB6H,eAAW,CAACzT,KAAZ,CAAkB+M,MAAlB;AACD;;AACD0G,aAAW,CAACpwC,GAAZ;AACAowC,aAAW,CAAC3S,GAAZ,CAAgB,MAAhB,EAAwB6T,MAAxB;AACA,SAAO9pC,IAAI,CAAC0Z,IAAL,CAAU,EAAV,CAAP;AACD,CAnBD,C;;;;;;;;;;;;;;;;;;;;;;ACJA,IAAIG,UAAU,GAAGE,mBAAO,CAAC,2DAAD,CAAxB;;AACA,IAAIve,MAAM,GAAGue,mBAAO,CAAC,4DAAD,CAApB;;AACA,IAAIgwB,cAAc,GAAGhwB,mBAAO,CAAC,gEAAD,CAA5B;;AACA,IAAIiwB,UAAU,GAAGjwB,mBAAO,CAAC,4EAAD,CAAxB;;AACA,IAAIkwB,aAAa,GAAGlwB,mBAAO,CAAC,kFAAD,CAA3B;;AAEA,IAAImwB,eAAe,GAAG;AACpB5zB,QAAM,EAAE,EADY;AAEpB6zB,oBAAkB,EAAE,GAFA;AAGpBC,kBAAgB,EAAE,GAHE;AAIpBC,cAAY,EAAE,IAJM;AAKpBC,6BAA2B,EAAE,KALT;AAMpBC,eAAa,EAAE;AANK,CAAtB;AASA,IAAIC,mBAAmB,GAAG,EAA1B;AAEA,IAAIC,aAAa,GAAG,CAClB;AACEJ,cAAY,EAAE,IADhB;AAEEC,6BAA2B,EAAE,KAF/B;AAGE/zB,QAAM,EAAE;AACNwB,OAAG,EAAE,MADC;AAENC,OAAG,EAAE,OAFC;AAGNE,QAAI,EAAE;AAHA;AAHV,CADkB,EAUlB;AACEmyB,cAAY,EAAE,IADhB;AAEEC,6BAA2B,EAAE,IAF/B;AAGE/zB,QAAM,EAAE;AACNwB,OAAG,EAAE,OADC;AAENC,OAAG,EAAE,QAFC;AAGNE,QAAI,EAAE;AAHA;AAHV,CAVkB,EAmBlB;AACEmyB,cAAY,EAAE,KADhB;AAEEC,6BAA2B,EAAE,KAF/B;AAGE/zB,QAAM,EAAE;AACNwB,OAAG,EAAE,MADC;AAENC,OAAG,EAAE,OAFC;AAGNE,QAAI,EAAE;AAHA;AAHV,CAnBkB,EA4BlB;AACEmyB,cAAY,EAAE,KADhB;AAEEC,6BAA2B,EAAE,IAF/B;AAGE/zB,QAAM,EAAE;AACNwB,OAAG,EAAE,OADC;AAENC,OAAG,EAAE,QAFC;AAGNE,QAAI,EAAE;AAHA;AAHV,CA5BkB,CAApB;;AAuCA,SAAS3B,MAAT,CAAgBre,KAAhB,EAAuBuB,OAAvB,EAAgC;AAC9B,MAAIqlB,IAAI,GAAGrlB,OAAO,CAACqlB,IAAR,IAAiBrlB,OAAO,CAACixC,MAAR,IAAkBX,cAAc,CAACY,WAAf,CAA2BlxC,OAAO,CAACixC,MAAnC,CAA9C;AACA,MAAIE,WAAW,GAAG,6BAA6BC,IAA7B,CAAkCpxC,OAAO,CAACixC,MAA1C,KAAqD,EAAvE;AACA,MAAII,QAAQ,GAAGF,WAAW,CAAC,CAAD,CAA1B;AACA,MAAIG,MAAM,GAAGH,WAAW,CAAC,CAAD,CAAxB;AACA,MAAII,YAAY,GAAGxvC,MAAM,CAAC,EAAD,EAAKgvC,mBAAL,EACCP,aAAa,CAACa,QAAD,CAAb,IAA2B,EAD5B,EAECb,aAAa,CAACa,QAAQ,GAAG,GAAX,GAAiBC,MAAlB,CAAb,IAA0C,EAF3C,CAAzB;AAGA,MAAI10B,QAAQ,GAAG7a,MAAM,CAAC,EAAD,EAAK0uC,eAAL,EAAsBe,YAAY,CAACnsB,IAAD,CAAlC,EAA0CksB,YAA1C,CAArB;AAEA,MAAIX,YAAY,GAAGh0B,QAAQ,CAACg0B,YAA5B;AACA,MAAIC,2BAA2B,GAAGj0B,QAAQ,CAACi0B,2BAA3C;AAEA,MAAI/zB,MAAM,GAAGk0B,aAAa,CAACrrC,MAAd,CAAqB,UAASomC,CAAT,EAAY;AAC5C,WAAOA,CAAC,CAAC6E,YAAF,IAAkBA,YAAlB,IAAkC7E,CAAC,CAAC8E,2BAAF,IAAiCA,2BAA1E;AACD,GAFY,EAEV,CAFU,EAEP/zB,MAFN;AAIA,SAAOsD,UAAU,CAACZ,WAAX,CAAuB/gB,KAAvB,EAA8B;AACnCoe,UAAM,EAAE40B,WAAW,CAACzxC,OAAO,CAAC6c,MAAT,CAAX,GACID,QAAQ,CAACC,MADb,GAEI7c,OAAO,CAAC6c,MAHe;AAKnCE,WAAO,EAAE00B,WAAW,CAACzxC,OAAO,CAAC+c,OAAT,CAAX,GACGH,QAAQ,CAAC+zB,gBADZ,GAEG3wC,OAAO,CAAC+c,OAPe;AASnCC,YAAQ,EAAEy0B,WAAW,CAACzxC,OAAO,CAACgd,QAAT,CAAX,GACEJ,QAAQ,CAAC8zB,kBADX,GAEE1wC,OAAO,CAACgd,QAXe;AAanCC,aAAS,EAAE,OAAOjd,OAAO,CAACid,SAAf,KAA6B,QAA7B,GACCjd,OAAO,CAACid,SADT,GAECL,QAAQ,CAACk0B,aAfc;AAiBnCh0B,UAAM,EAAE,CAAC,QAAD,EAAW,QAAX,EAAqB5P,OAArB,CAA6B,OAAOlN,OAAO,CAAC8c,MAA5C,IAAsD,CAAC,CAAvD,GACI9c,OAAO,CAAC8c,MADZ,GAEIA;AAnBuB,GAA9B,CAAP;AAqBD;;AAED,SAAS00B,YAAT,CAAuBE,YAAvB,EAAqC;AACnC,SAAOnB,UAAU,CAACmB,YAAD,CAAjB;AACD;;AAED,SAASD,WAAT,CAAsBvzB,GAAtB,EAA2B;AACzB,SAAO,OAAOA,GAAP,KAAe,WAAtB;AACD;;AAED,SAASQ,QAAT,CAAkBjgB,KAAlB,EAAyBuB,OAAzB,EAAkC;AAChC,MAAIqlB,IAAI,GAAGrlB,OAAO,CAACqlB,IAAR,IAAiBrlB,OAAO,CAACixC,MAAR,IAAkBX,cAAc,CAACY,WAAf,CAA2BlxC,OAAO,CAACixC,MAAnC,CAA9C;AACA,MAAIM,YAAY,GAAGf,aAAa,CAACxwC,OAAO,CAACixC,MAAT,CAAb,IAAiCF,mBAApD;AACA,MAAIn0B,QAAQ,GAAG7a,MAAM,CAAC,EAAD,EAAK0uC,eAAL,EAAsBe,YAAY,CAACnsB,IAAD,CAAlC,EAA0CksB,YAA1C,CAArB;AACA,MAAIx0B,OAAO,GAAG00B,WAAW,CAACzxC,OAAO,CAAC+c,OAAT,CAAX,GAA+BH,QAAQ,CAAC+zB,gBAAxC,GAA2D3wC,OAAO,CAAC+c,OAAjF;AACA,SAAOqD,UAAU,CAAC1B,QAAX,CAAoBjgB,KAApB,EAA2Bse,OAA3B,CAAP;AACD;;AAEDmD,MAAM,CAACC,OAAP,GAAiB;AACfswB,iBAAe,EAAEA,eADF;;AAEf,MAAIF,UAAJ,GAAiB;AACf;AACA,WAAOzuC,MAAM,CAACiS,IAAP,CAAYw8B,UAAZ,EAAwBtuC,GAAxB,CAA4B,UAAS+R,GAAT,EAAc;AAC/C,aAAOu8B,UAAU,CAACv8B,GAAD,CAAjB;AACD,KAFM,CAAP;AAGD,GAPc;;AAQfw9B,cAAY,EAAEA,YARC;AASf10B,QAAM,EAAEA,MATO;AAUf4B,UAAQ,EAAEA;AAVK,CAAjB,C;;;;;;;;;;;;;;;;;;;;;;AChHA;AAEA;AAEAwB,MAAM,CAACC,OAAP,GAAiB,UAASwxB,MAAT,EAAiBC,IAAjB,EAAuBC,KAAvB,EAA8B;AAE7C,MAAIC,UAAU,GAAGH,MAAM,CAACzsC,MAAxB;AAAA,MACI6sC,UAAU,GAAGH,IAAI,CAAC1sC,MADtB;AAAA,MAEI8sC,MAAM,GAAG,EAFb,CAF6C,CAM7C;;AACAH,OAAK,GAAG,CAACA,KAAK,KAAME,UAAU,GAAGD,UAAb,GAA0BC,UAA1B,GAAuCD,UAA7C,CAAN,IAAiE,CAAzE;;AAEA,OAAK,IAAI/zB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8zB,KAApB,EAA2B9zB,CAAC,EAA5B,EAAgC;AAC9Bi0B,UAAM,CAACj0B,CAAD,CAAN,GAAY,CAACA,CAAD,CAAZ;AACAi0B,UAAM,CAACj0B,CAAD,CAAN,CAAU7Y,MAAV,GAAmB2sC,KAAnB;AACD;;AACD,OAAK9zB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG8zB,KAAhB,EAAuB9zB,CAAC,EAAxB,EAA4B;AAC1Bi0B,UAAM,CAAC,CAAD,CAAN,CAAUj0B,CAAV,IAAeA,CAAf;AACD;;AAED,MAAIpQ,IAAI,CAACuF,GAAL,CAAS4+B,UAAU,GAAGC,UAAtB,KAAqCF,KAAK,IAAI,GAA9C,CAAJ,EAAuD;AACrD,WAAOI,OAAO,CAAEJ,KAAK,IAAI,GAAX,CAAd;AACD;;AACD,MAAIC,UAAU,KAAK,CAAnB,EAAqB;AACnB,WAAOG,OAAO,CAAEF,UAAF,CAAd;AACD;;AACD,MAAIA,UAAU,KAAK,CAAnB,EAAqB;AACnB,WAAOE,OAAO,CAAEH,UAAF,CAAd;AACD,GAzB4C,CA2B7C;;;AACA,MAAI9zB,CAAJ,EAAOk0B,MAAP,EAAeC,MAAf,EAAuBC,IAAvB,EAA6B1jC,GAA7B,EAAkC6jB,CAAlC;;AACA,OAAKxU,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+zB,UAAjB,EAA6B,EAAE/zB,CAA/B,EAAkC;AAChCm0B,UAAM,GAAGP,MAAM,CAAC5zB,CAAC,GAAC,CAAH,CAAf,CADgC,CAGhC;;AACA,SAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAI+zB,UAAjB,EAA6B,EAAE/zB,CAA/B,EAAkC;AAChC;AACA,UAAID,CAAC,KAAKC,CAAN,IAAWg0B,MAAM,CAACj0B,CAAD,CAAN,CAAUC,CAAV,IAAe,CAA9B,EAAiC,OAAOi0B,OAAO,CAAEH,UAAF,CAAd;AAEjCK,YAAM,GAAGP,IAAI,CAAC5zB,CAAC,GAAC,CAAH,CAAb;AACAo0B,UAAI,GAAIF,MAAM,KAAKC,MAAZ,GAAsB,CAAtB,GAA0B,CAAjC,CALgC,CAKI;AACpC;;AACAzjC,SAAG,GAAMsjC,MAAM,CAACj0B,CAAC,GAAG,CAAL,CAAN,CAAcC,CAAd,IAAuB,CAAhC,CAPgC,CAOG;;AACnC,UAAI,CAACuU,CAAC,GAAGyf,MAAM,CAACj0B,CAAD,CAAN,CAAcC,CAAC,GAAG,CAAlB,IAAuB,CAA5B,IAAoCtP,GAAxC,EAA6CA,GAAG,GAAG6jB,CAAN,CARb,CAQwB;;AACxD,UAAI,CAACA,CAAC,GAAGyf,MAAM,CAACj0B,CAAC,GAAG,CAAL,CAAN,CAAcC,CAAC,GAAG,CAAlB,IAAuBo0B,IAA5B,IAAoC1jC,GAAxC,EAA6CA,GAAG,GAAG6jB,CAAN,CATb,CASwB;AAExD;;AACAyf,YAAM,CAACj0B,CAAD,CAAN,CAAUC,CAAV,IAAgBD,CAAC,GAAG,CAAJ,IAASC,CAAC,GAAG,CAAb,IAAkBk0B,MAAM,KAAKN,IAAI,CAAC5zB,CAAC,GAAC,CAAH,CAAjC,IAA0C2zB,MAAM,CAAC5zB,CAAC,GAAC,CAAH,CAAN,KAAgBo0B,MAA1D,IAAoE,CAAC5f,CAAC,GAAGyf,MAAM,CAACj0B,CAAC,GAAC,CAAH,CAAN,CAAYC,CAAC,GAAC,CAAd,IAAiBo0B,IAAtB,IAA8B1jC,GAAnG,GAA0G6jB,CAA1G,GAA8G7jB,GAA7H,CAZgC,CAYkG;AACnI;AACF;;AAED,SAAOujC,OAAO,CAAED,MAAM,CAACF,UAAD,CAAN,CAAmBC,UAAnB,CAAF,CAAd;AAEF;AACA;AACA;;AACE,WAASE,OAAT,CAAiBI,KAAjB,EAAwB;AACtB,QAAIntC,MAAM,GAAGyI,IAAI,CAACge,GAAL,CAASmmB,UAAT,EAAqBC,UAArB,CAAb;AACA,QAAIhtB,QAAQ,GAAG7f,MAAM,KAAK,CAAX,GACX,CADW,GAEVmtC,KAAK,GAAGntC,MAFb;AAGA,QAAIotC,UAAU,GAAG,IAAIvtB,QAArB;AACA,WAAO;AACLstB,WAAK,EAAEA,KADF;AAELttB,cAAQ,EAAEA,QAFL;AAGLutB,gBAAU,EAAEA;AAHP,KAAP;AAKD;AAEF,CAnED,C;;;;;;;;;;;;ACJA;AAAA;AAAe,SAASC,eAAT,CAAyBp1B,MAAzB,EAAiCq1B,YAAjC,EAA+C;AAC5D,MAAIC,IAAI,GAAGt1B,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,EAA9B;AACA,MAAIu1B,MAAM,GAAG/kC,IAAI,CAACuF,GAAL,CAASiK,MAAT,EAAiBrB,QAAjB,EAAb;;AACA,SAAO42B,MAAM,CAACxtC,MAAP,GAAgBstC,YAAvB,EAAqC;AACnCE,UAAM,GAAG,MAAMA,MAAf;AACD;;AACD,SAAOD,IAAI,GAAGC,MAAd;AACD,C;;;;;;;;;;;;ACPD;AAAA;AAAe,SAAS3wC,MAAT,CAAgBolB,MAAhB,EAAwBwrB,WAAxB,EAAqC;AAClD,MAAIxrB,MAAM,IAAI,IAAd,EAAoB;AAClB,UAAM,IAAI9Y,SAAJ,CACJ,+DADI,CAAN;AAGD;;AAEDskC,aAAW,GAAGA,WAAW,IAAI,EAA7B;;AAEA,OAAK,IAAIC,QAAT,IAAqBD,WAArB,EAAkC;AAChC,QAAIA,WAAW,CAAC/0B,cAAZ,CAA2Bg1B,QAA3B,CAAJ,EAA0C;AACxCzrB,YAAM,CAACyrB,QAAD,CAAN,GAAmBD,WAAW,CAACC,QAAD,CAA9B;AACD;AACF;;AAED,SAAOzrB,MAAP;AACD,C;;;;;;;;;;;;AChBD;AAAA;AAAA;AAAA;AAEe,SAAS0rB,WAAT,CAAqBF,WAArB,EAAkC;AAC/C,SAAO5wC,gEAAM,CAAC,EAAD,EAAK4wC,WAAL,CAAb;AACD,C;;;;;;;;;;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIG,aAAa,GAAG;AAClBC,IAAE,EAAE,IADc;AAElBC,IAAE,EAAE,IAFc;AAGlBC,UAAQ,EAAE,UAHQ;AAIlBC,MAAI,EAAE,MAJY;AAKlBC,SAAO,EAAE,SALS;AAMlBC,WAAS,EAAE,WANO;AAOlBC,SAAO,EAAE,SAPS;AAQlBC,OAAK,EAAE;AARW,CAApB;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIC,UAAU,GAAG;AACf;AACAC,GAAC,EAAE,UAAStyC,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAIC,GAAG,GAAGzyC,IAAI,CAACqK,cAAL,KAAwB,CAAxB,GAA4B,CAA5B,GAAgC,CAA1C;;AACA,YAAQkoC,KAAR;AACE;AACA,WAAK,GAAL;AACA,WAAK,IAAL;AACA,WAAK,KAAL;AACE,eAAOC,QAAQ,CAACC,GAAT,CAAaA,GAAb,EAAkB;AAAEC,eAAK,EAAE;AAAT,SAAlB,CAAP;AACF;;AACA,WAAK,OAAL;AACE,eAAOF,QAAQ,CAACC,GAAT,CAAaA,GAAb,EAAkB;AAAEC,eAAK,EAAE;AAAT,SAAlB,CAAP;AACF;;AACA,WAAK,MAAL;AACA;AACE,eAAOF,QAAQ,CAACC,GAAT,CAAaA,GAAb,EAAkB;AAAEC,eAAK,EAAE;AAAT,SAAlB,CAAP;AAZJ;AAcD,GAlBc;AAoBf;AACA/mC,GAAC,EAAE,UAAS3L,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC;AACA,QAAID,KAAK,KAAK,IAAd,EAAoB;AAClB,UAAII,UAAU,GAAG3yC,IAAI,CAACqK,cAAL,EAAjB,CADkB,CAElB;;AACA,UAAI/B,IAAI,GAAGqqC,UAAU,GAAG,CAAb,GAAiBA,UAAjB,GAA8B,IAAIA,UAA7C;AACA,aAAOH,QAAQ,CAACI,aAAT,CAAuBtqC,IAAvB,EAA6B;AAAEY,YAAI,EAAE;AAAR,OAA7B,CAAP;AACD;;AAED,WAAO2pC,iEAAe,CAAClnC,CAAhB,CAAkB3L,IAAlB,EAAwBuyC,KAAxB,CAAP;AACD,GA/Bc;AAiCf;AACAO,GAAC,EAAE,UAAS9yC,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC1zC,OAAhC,EAAyC;AAC1C,QAAIi0C,cAAc,GAAGC,4EAAc,CAAChzC,IAAD,EAAOlB,OAAP,CAAnC,CAD0C,CAE1C;;AACA,QAAIm0C,QAAQ,GAAGF,cAAc,GAAG,CAAjB,GAAqBA,cAArB,GAAsC,IAAIA,cAAzD,CAH0C,CAK1C;;AACA,QAAIR,KAAK,KAAK,IAAd,EAAoB;AAClB,UAAIW,YAAY,GAAGD,QAAQ,GAAG,GAA9B;AACA,aAAO5B,yEAAe,CAAC6B,YAAD,EAAe,CAAf,CAAtB;AACD,KATyC,CAW1C;;;AACA,QAAIX,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuBK,QAAvB,EAAiC;AAAE/pC,YAAI,EAAE;AAAR,OAAjC,CAAP;AACD,KAdyC,CAgB1C;;;AACA,WAAOmoC,yEAAe,CAAC4B,QAAD,EAAWV,KAAK,CAACvuC,MAAjB,CAAtB;AACD,GApDc;AAsDf;AACAmvC,GAAC,EAAE,UAASnzC,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,QAAIa,WAAW,GAAGC,+EAAiB,CAACrzC,IAAD,CAAnC,CADuB,CAGvB;;AACA,WAAOqxC,yEAAe,CAAC+B,WAAD,EAAcb,KAAK,CAACvuC,MAApB,CAAtB;AACD,GA5Dc;AA8Df;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAsvC,GAAC,EAAE,UAAStzC,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,QAAIjqC,IAAI,GAAGtI,IAAI,CAACqK,cAAL,EAAX;AACA,WAAOgnC,yEAAe,CAAC/oC,IAAD,EAAOiqC,KAAK,CAACvuC,MAAb,CAAtB;AACD,GA1Ec;AA4Ef;AACAuvC,GAAC,EAAE,UAASvzC,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAIgB,OAAO,GAAG/mC,IAAI,CAACK,IAAL,CAAU,CAAC9M,IAAI,CAACsK,WAAL,KAAqB,CAAtB,IAA2B,CAArC,CAAd;;AACA,YAAQioC,KAAR;AACE;AACA,WAAK,GAAL;AACE,eAAO/Q,MAAM,CAACgS,OAAD,CAAb;AACF;;AACA,WAAK,IAAL;AACE,eAAOnC,yEAAe,CAACmC,OAAD,EAAU,CAAV,CAAtB;AACF;;AACA,WAAK,IAAL;AACE,eAAOhB,QAAQ,CAACI,aAAT,CAAuBY,OAAvB,EAAgC;AAAEtqC,cAAI,EAAE;AAAR,SAAhC,CAAP;AACF;;AACA,WAAK,KAAL;AACE,eAAOspC,QAAQ,CAACgB,OAAT,CAAiBA,OAAjB,EAA0B;AAC/Bd,eAAK,EAAE,aADwB;AAE/B/1B,iBAAO,EAAE;AAFsB,SAA1B,CAAP;AAIF;;AACA,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACgB,OAAT,CAAiBA,OAAjB,EAA0B;AAC/Bd,eAAK,EAAE,QADwB;AAE/B/1B,iBAAO,EAAE;AAFsB,SAA1B,CAAP;AAIF;;AACA,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACgB,OAAT,CAAiBA,OAAjB,EAA0B;AAC/Bd,eAAK,EAAE,MADwB;AAE/B/1B,iBAAO,EAAE;AAFsB,SAA1B,CAAP;AAzBJ;AA8BD,GA7Gc;AA+Gf;AACA82B,GAAC,EAAE,UAASzzC,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAIgB,OAAO,GAAG/mC,IAAI,CAACK,IAAL,CAAU,CAAC9M,IAAI,CAACsK,WAAL,KAAqB,CAAtB,IAA2B,CAArC,CAAd;;AACA,YAAQioC,KAAR;AACE;AACA,WAAK,GAAL;AACE,eAAO/Q,MAAM,CAACgS,OAAD,CAAb;AACF;;AACA,WAAK,IAAL;AACE,eAAOnC,yEAAe,CAACmC,OAAD,EAAU,CAAV,CAAtB;AACF;;AACA,WAAK,IAAL;AACE,eAAOhB,QAAQ,CAACI,aAAT,CAAuBY,OAAvB,EAAgC;AAAEtqC,cAAI,EAAE;AAAR,SAAhC,CAAP;AACF;;AACA,WAAK,KAAL;AACE,eAAOspC,QAAQ,CAACgB,OAAT,CAAiBA,OAAjB,EAA0B;AAC/Bd,eAAK,EAAE,aADwB;AAE/B/1B,iBAAO,EAAE;AAFsB,SAA1B,CAAP;AAIF;;AACA,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACgB,OAAT,CAAiBA,OAAjB,EAA0B;AAC/Bd,eAAK,EAAE,QADwB;AAE/B/1B,iBAAO,EAAE;AAFsB,SAA1B,CAAP;AAIF;;AACA,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACgB,OAAT,CAAiBA,OAAjB,EAA0B;AAC/Bd,eAAK,EAAE,MADwB;AAE/B/1B,iBAAO,EAAE;AAFsB,SAA1B,CAAP;AAzBJ;AA8BD,GAhJc;AAkJf;AACA+2B,GAAC,EAAE,UAAS1zC,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAIjqC,KAAK,GAAGvI,IAAI,CAACsK,WAAL,EAAZ;;AACA,YAAQioC,KAAR;AACE,WAAK,GAAL;AACA,WAAK,IAAL;AACE,eAAOM,iEAAe,CAACa,CAAhB,CAAkB1zC,IAAlB,EAAwBuyC,KAAxB,CAAP;AACF;;AACA,WAAK,IAAL;AACE,eAAOC,QAAQ,CAACI,aAAT,CAAuBrqC,KAAK,GAAG,CAA/B,EAAkC;AAAEW,cAAI,EAAE;AAAR,SAAlC,CAAP;AACF;;AACA,WAAK,KAAL;AACE,eAAOspC,QAAQ,CAACjqC,KAAT,CAAeA,KAAf,EAAsB;AAC3BmqC,eAAK,EAAE,aADoB;AAE3B/1B,iBAAO,EAAE;AAFkB,SAAtB,CAAP;AAIF;;AACA,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACjqC,KAAT,CAAeA,KAAf,EAAsB;AAAEmqC,eAAK,EAAE,QAAT;AAAmB/1B,iBAAO,EAAE;AAA5B,SAAtB,CAAP;AACF;;AACA,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACjqC,KAAT,CAAeA,KAAf,EAAsB;AAAEmqC,eAAK,EAAE,MAAT;AAAiB/1B,iBAAO,EAAE;AAA1B,SAAtB,CAAP;AAnBJ;AAqBD,GA1Kc;AA4Kf;AACAg3B,GAAC,EAAE,UAAS3zC,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAIjqC,KAAK,GAAGvI,IAAI,CAACsK,WAAL,EAAZ;;AACA,YAAQioC,KAAR;AACE;AACA,WAAK,GAAL;AACE,eAAO/Q,MAAM,CAACj5B,KAAK,GAAG,CAAT,CAAb;AACF;;AACA,WAAK,IAAL;AACE,eAAO8oC,yEAAe,CAAC9oC,KAAK,GAAG,CAAT,EAAY,CAAZ,CAAtB;AACF;;AACA,WAAK,IAAL;AACE,eAAOiqC,QAAQ,CAACI,aAAT,CAAuBrqC,KAAK,GAAG,CAA/B,EAAkC;AAAEW,cAAI,EAAE;AAAR,SAAlC,CAAP;AACF;;AACA,WAAK,KAAL;AACE,eAAOspC,QAAQ,CAACjqC,KAAT,CAAeA,KAAf,EAAsB;AAC3BmqC,eAAK,EAAE,aADoB;AAE3B/1B,iBAAO,EAAE;AAFkB,SAAtB,CAAP;AAIF;;AACA,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACjqC,KAAT,CAAeA,KAAf,EAAsB;AAAEmqC,eAAK,EAAE,QAAT;AAAmB/1B,iBAAO,EAAE;AAA5B,SAAtB,CAAP;AACF;;AACA,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACjqC,KAAT,CAAeA,KAAf,EAAsB;AAAEmqC,eAAK,EAAE,MAAT;AAAiB/1B,iBAAO,EAAE;AAA1B,SAAtB,CAAP;AAtBJ;AAwBD,GAvMc;AAyMf;AACAi3B,GAAC,EAAE,UAAS5zC,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC1zC,OAAhC,EAAyC;AAC1C,QAAI+0C,IAAI,GAAGC,wEAAU,CAAC9zC,IAAD,EAAOlB,OAAP,CAArB;;AAEA,QAAIyzC,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuBiB,IAAvB,EAA6B;AAAE3qC,YAAI,EAAE;AAAR,OAA7B,CAAP;AACD;;AAED,WAAOmoC,yEAAe,CAACwC,IAAD,EAAOtB,KAAK,CAACvuC,MAAb,CAAtB;AACD,GAlNc;AAoNf;AACA+vC,GAAC,EAAE,UAAS/zC,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAIwB,OAAO,GAAGC,2EAAa,CAACj0C,IAAD,CAA3B;;AAEA,QAAIuyC,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuBoB,OAAvB,EAAgC;AAAE9qC,YAAI,EAAE;AAAR,OAAhC,CAAP;AACD;;AAED,WAAOmoC,yEAAe,CAAC2C,OAAD,EAAUzB,KAAK,CAACvuC,MAAhB,CAAtB;AACD,GA7Nc;AA+Nf;AACAkwC,GAAC,EAAE,UAASl0C,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAID,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuB5yC,IAAI,CAACyK,UAAL,EAAvB,EAA0C;AAAEvB,YAAI,EAAE;AAAR,OAA1C,CAAP;AACD;;AAED,WAAO2pC,iEAAe,CAACqB,CAAhB,CAAkBl0C,IAAlB,EAAwBuyC,KAAxB,CAAP;AACD,GAtOc;AAwOf;AACA4B,GAAC,EAAE,UAASn0C,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAI4B,SAAS,GAAGC,6EAAe,CAACr0C,IAAD,CAA/B;;AAEA,QAAIuyC,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuBwB,SAAvB,EAAkC;AAAElrC,YAAI,EAAE;AAAR,OAAlC,CAAP;AACD;;AAED,WAAOmoC,yEAAe,CAAC+C,SAAD,EAAY7B,KAAK,CAACvuC,MAAlB,CAAtB;AACD,GAjPc;AAmPf;AACAswC,GAAC,EAAE,UAASt0C,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAI+B,SAAS,GAAGv0C,IAAI,CAACwK,SAAL,EAAhB;;AACA,YAAQ+nC,KAAR;AACE;AACA,WAAK,GAAL;AACA,WAAK,IAAL;AACA,WAAK,KAAL;AACE,eAAOC,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,aADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,QADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,QAAL;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,OADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAAE7B,eAAK,EAAE,MAAT;AAAiB/1B,iBAAO,EAAE;AAA1B,SAAxB,CAAP;AAxBJ;AA0BD,GAhRc;AAkRf;AACA2K,GAAC,EAAE,UAAStnB,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC1zC,OAAhC,EAAyC;AAC1C,QAAIy1C,SAAS,GAAGv0C,IAAI,CAACwK,SAAL,EAAhB;AACA,QAAIgqC,cAAc,GAAG,CAACD,SAAS,GAAGz1C,OAAO,CAAC21C,YAApB,GAAmC,CAApC,IAAyC,CAAzC,IAA8C,CAAnE;;AACA,YAAQlC,KAAR;AACE;AACA,WAAK,GAAL;AACE,eAAO/Q,MAAM,CAACgT,cAAD,CAAb;AACF;;AACA,WAAK,IAAL;AACE,eAAOnD,yEAAe,CAACmD,cAAD,EAAiB,CAAjB,CAAtB;AACF;;AACA,WAAK,IAAL;AACE,eAAOhC,QAAQ,CAACI,aAAT,CAAuB4B,cAAvB,EAAuC;AAAEtrC,cAAI,EAAE;AAAR,SAAvC,CAAP;;AACF,WAAK,KAAL;AACE,eAAOspC,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,aADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,QADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,QAAL;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,OADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAAE7B,eAAK,EAAE,MAAT;AAAiB/1B,iBAAO,EAAE;AAA1B,SAAxB,CAAP;AA9BJ;AAgCD,GAtTc;AAwTf;AACA2V,GAAC,EAAE,UAAStyB,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC1zC,OAAhC,EAAyC;AAC1C,QAAIy1C,SAAS,GAAGv0C,IAAI,CAACwK,SAAL,EAAhB;AACA,QAAIgqC,cAAc,GAAG,CAACD,SAAS,GAAGz1C,OAAO,CAAC21C,YAApB,GAAmC,CAApC,IAAyC,CAAzC,IAA8C,CAAnE;;AACA,YAAQlC,KAAR;AACE;AACA,WAAK,GAAL;AACE,eAAO/Q,MAAM,CAACgT,cAAD,CAAb;AACF;;AACA,WAAK,IAAL;AACE,eAAOnD,yEAAe,CAACmD,cAAD,EAAiBjC,KAAK,CAACvuC,MAAvB,CAAtB;AACF;;AACA,WAAK,IAAL;AACE,eAAOwuC,QAAQ,CAACI,aAAT,CAAuB4B,cAAvB,EAAuC;AAAEtrC,cAAI,EAAE;AAAR,SAAvC,CAAP;;AACF,WAAK,KAAL;AACE,eAAOspC,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,aADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,QADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,QAAL;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,OADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAAE7B,eAAK,EAAE,MAAT;AAAiB/1B,iBAAO,EAAE;AAA1B,SAAxB,CAAP;AA9BJ;AAgCD,GA5Vc;AA8Vf;AACAE,GAAC,EAAE,UAAS7c,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAI+B,SAAS,GAAGv0C,IAAI,CAACwK,SAAL,EAAhB;AACA,QAAIkqC,YAAY,GAAGH,SAAS,KAAK,CAAd,GAAkB,CAAlB,GAAsBA,SAAzC;;AACA,YAAQhC,KAAR;AACE;AACA,WAAK,GAAL;AACE,eAAO/Q,MAAM,CAACkT,YAAD,CAAb;AACF;;AACA,WAAK,IAAL;AACE,eAAOrD,yEAAe,CAACqD,YAAD,EAAenC,KAAK,CAACvuC,MAArB,CAAtB;AACF;;AACA,WAAK,IAAL;AACE,eAAOwuC,QAAQ,CAACI,aAAT,CAAuB8B,YAAvB,EAAqC;AAAExrC,cAAI,EAAE;AAAR,SAArC,CAAP;AACF;;AACA,WAAK,KAAL;AACE,eAAOspC,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,aADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,QADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,QAAL;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAC7B7B,eAAK,EAAE,OADsB;AAE7B/1B,iBAAO,EAAE;AAFoB,SAAxB,CAAP;AAIF;;AACA,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACnzC,GAAT,CAAak1C,SAAb,EAAwB;AAAE7B,eAAK,EAAE,MAAT;AAAiB/1B,iBAAO,EAAE;AAA1B,SAAxB,CAAP;AA/BJ;AAiCD,GAnYc;AAqYf;AACAvY,GAAC,EAAE,UAASpE,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAImC,KAAK,GAAG30C,IAAI,CAAC0K,WAAL,EAAZ;AACA,QAAIkqC,kBAAkB,GAAGD,KAAK,GAAG,EAAR,IAAc,CAAd,GAAkB,IAAlB,GAAyB,IAAlD;;AAEA,YAAQpC,KAAR;AACE,WAAK,GAAL;AACA,WAAK,IAAL;AACA,WAAK,KAAL;AACE,eAAOC,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,aADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;;AAIF,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,QADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;;AAIF,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,MADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;AAfJ;AAoBD,GA9Zc;AAgaf;AACAtY,GAAC,EAAE,UAASrE,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAImC,KAAK,GAAG30C,IAAI,CAAC0K,WAAL,EAAZ;AACA,QAAIkqC,kBAAJ;;AACA,QAAID,KAAK,KAAK,EAAd,EAAkB;AAChBC,wBAAkB,GAAGhD,aAAa,CAACI,IAAnC;AACD,KAFD,MAEO,IAAI2C,KAAK,KAAK,CAAd,EAAiB;AACtBC,wBAAkB,GAAGhD,aAAa,CAACG,QAAnC;AACD,KAFM,MAEA;AACL6C,wBAAkB,GAAGD,KAAK,GAAG,EAAR,IAAc,CAAd,GAAkB,IAAlB,GAAyB,IAA9C;AACD;;AAED,YAAQpC,KAAR;AACE,WAAK,GAAL;AACA,WAAK,IAAL;AACA,WAAK,KAAL;AACE,eAAOC,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,aADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;;AAIF,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,QADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;;AAIF,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,MADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;AAfJ;AAoBD,GAhcc;AAkcf;AACAm4B,GAAC,EAAE,UAAS90C,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAImC,KAAK,GAAG30C,IAAI,CAAC0K,WAAL,EAAZ;AACA,QAAIkqC,kBAAJ;;AACA,QAAID,KAAK,IAAI,EAAb,EAAiB;AACfC,wBAAkB,GAAGhD,aAAa,CAACO,OAAnC;AACD,KAFD,MAEO,IAAIwC,KAAK,IAAI,EAAb,EAAiB;AACtBC,wBAAkB,GAAGhD,aAAa,CAACM,SAAnC;AACD,KAFM,MAEA,IAAIyC,KAAK,IAAI,CAAb,EAAgB;AACrBC,wBAAkB,GAAGhD,aAAa,CAACK,OAAnC;AACD,KAFM,MAEA;AACL2C,wBAAkB,GAAGhD,aAAa,CAACQ,KAAnC;AACD;;AAED,YAAQG,KAAR;AACE,WAAK,GAAL;AACA,WAAK,IAAL;AACA,WAAK,KAAL;AACE,eAAOC,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,aADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;;AAIF,WAAK,OAAL;AACE,eAAO61B,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,QADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;;AAIF,WAAK,MAAL;AACA;AACE,eAAO61B,QAAQ,CAACqC,SAAT,CAAmBD,kBAAnB,EAAuC;AAC5ClC,eAAK,EAAE,MADqC;AAE5C/1B,iBAAO,EAAE;AAFmC,SAAvC,CAAP;AAfJ;AAoBD,GApec;AAsef;AACAo4B,GAAC,EAAE,UAAS/0C,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAID,KAAK,KAAK,IAAd,EAAoB;AAClB,UAAIoC,KAAK,GAAG30C,IAAI,CAAC0K,WAAL,KAAqB,EAAjC;AACA,UAAIiqC,KAAK,KAAK,CAAd,EAAiBA,KAAK,GAAG,EAAR;AACjB,aAAOnC,QAAQ,CAACI,aAAT,CAAuB+B,KAAvB,EAA8B;AAAEzrC,YAAI,EAAE;AAAR,OAA9B,CAAP;AACD;;AAED,WAAO2pC,iEAAe,CAACkC,CAAhB,CAAkB/0C,IAAlB,EAAwBuyC,KAAxB,CAAP;AACD,GA/ec;AAiff;AACAyC,GAAC,EAAE,UAASh1C,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAID,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuB5yC,IAAI,CAAC0K,WAAL,EAAvB,EAA2C;AAAExB,YAAI,EAAE;AAAR,OAA3C,CAAP;AACD;;AAED,WAAO2pC,iEAAe,CAACmC,CAAhB,CAAkBh1C,IAAlB,EAAwBuyC,KAAxB,CAAP;AACD,GAxfc;AA0ff;AACA0C,GAAC,EAAE,UAASj1C,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAImC,KAAK,GAAG30C,IAAI,CAAC0K,WAAL,KAAqB,EAAjC;;AAEA,QAAI6nC,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuB+B,KAAvB,EAA8B;AAAEzrC,YAAI,EAAE;AAAR,OAA9B,CAAP;AACD;;AAED,WAAOmoC,yEAAe,CAACsD,KAAD,EAAQpC,KAAK,CAACvuC,MAAd,CAAtB;AACD,GAngBc;AAqgBf;AACAmuB,GAAC,EAAE,UAASnyB,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAImC,KAAK,GAAG30C,IAAI,CAAC0K,WAAL,EAAZ;AACA,QAAIiqC,KAAK,KAAK,CAAd,EAAiBA,KAAK,GAAG,EAAR;;AAEjB,QAAIpC,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuB+B,KAAvB,EAA8B;AAAEzrC,YAAI,EAAE;AAAR,OAA9B,CAAP;AACD;;AAED,WAAOmoC,yEAAe,CAACsD,KAAD,EAAQpC,KAAK,CAACvuC,MAAd,CAAtB;AACD,GA/gBc;AAihBf;AACAkxC,GAAC,EAAE,UAASl1C,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAID,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuB5yC,IAAI,CAAC2K,aAAL,EAAvB,EAA6C;AAAEzB,YAAI,EAAE;AAAR,OAA7C,CAAP;AACD;;AAED,WAAO2pC,iEAAe,CAACqC,CAAhB,CAAkBl1C,IAAlB,EAAwBuyC,KAAxB,CAAP;AACD,GAxhBc;AA0hBf;AACAruC,GAAC,EAAE,UAASlE,IAAT,EAAeuyC,KAAf,EAAsBC,QAAtB,EAAgC;AACjC,QAAID,KAAK,KAAK,IAAd,EAAoB;AAClB,aAAOC,QAAQ,CAACI,aAAT,CAAuB5yC,IAAI,CAAC4K,aAAL,EAAvB,EAA6C;AAAE1B,YAAI,EAAE;AAAR,OAA7C,CAAP;AACD;;AAED,WAAO2pC,iEAAe,CAAC3uC,CAAhB,CAAkBlE,IAAlB,EAAwBuyC,KAAxB,CAAP;AACD,GAjiBc;AAmiBf;AACA4C,GAAC,EAAE,UAASn1C,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,QAAI6C,cAAc,GAAG7C,KAAK,CAACvuC,MAA3B;AACA,QAAIqxC,YAAY,GAAGr1C,IAAI,CAAC6K,kBAAL,EAAnB;AACA,QAAIyqC,iBAAiB,GAAG7oC,IAAI,CAACC,KAAL,CACtB2oC,YAAY,GAAG5oC,IAAI,CAACm2B,GAAL,CAAS,EAAT,EAAawS,cAAc,GAAG,CAA9B,CADO,CAAxB;AAGA,WAAO/D,yEAAe,CAACiE,iBAAD,EAAoBF,cAApB,CAAtB;AACD,GA3iBc;AA6iBf;AACAG,GAAC,EAAE,UAASv1C,IAAT,EAAeuyC,KAAf,EAAsBiD,SAAtB,EAAiC12C,OAAjC,EAA0C;AAC3C,QAAI22C,YAAY,GAAG32C,OAAO,CAAC42C,aAAR,IAAyB11C,IAA5C;AACA,QAAI21C,cAAc,GAAGF,YAAY,CAACG,iBAAb,EAArB;;AAEA,QAAID,cAAc,KAAK,CAAvB,EAA0B;AACxB,aAAO,GAAP;AACD;;AAED,YAAQpD,KAAR;AACE;AACA,WAAK,GAAL;AACE,eAAOsD,iCAAiC,CAACF,cAAD,CAAxC;AAEF;AACA;AACA;;AACA,WAAK,MAAL;AACA,WAAK,IAAL;AAAW;AACT,eAAOG,cAAc,CAACH,cAAD,CAArB;AAEF;AACA;AACA;;AACA,WAAK,OAAL;AACA,WAAK,KAAL,CAhBF,CAgBc;;AACZ;AACE,eAAOG,cAAc,CAACH,cAAD,EAAiB,GAAjB,CAArB;AAlBJ;AAoBD,GA1kBc;AA4kBf;AACAjqC,GAAC,EAAE,UAAS1L,IAAT,EAAeuyC,KAAf,EAAsBiD,SAAtB,EAAiC12C,OAAjC,EAA0C;AAC3C,QAAI22C,YAAY,GAAG32C,OAAO,CAAC42C,aAAR,IAAyB11C,IAA5C;AACA,QAAI21C,cAAc,GAAGF,YAAY,CAACG,iBAAb,EAArB;;AAEA,YAAQrD,KAAR;AACE;AACA,WAAK,GAAL;AACE,eAAOsD,iCAAiC,CAACF,cAAD,CAAxC;AAEF;AACA;AACA;;AACA,WAAK,MAAL;AACA,WAAK,IAAL;AAAW;AACT,eAAOG,cAAc,CAACH,cAAD,CAArB;AAEF;AACA;AACA;;AACA,WAAK,OAAL;AACA,WAAK,KAAL,CAhBF,CAgBc;;AACZ;AACE,eAAOG,cAAc,CAACH,cAAD,EAAiB,GAAjB,CAArB;AAlBJ;AAoBD,GArmBc;AAumBf;AACAI,GAAC,EAAE,UAAS/1C,IAAT,EAAeuyC,KAAf,EAAsBiD,SAAtB,EAAiC12C,OAAjC,EAA0C;AAC3C,QAAI22C,YAAY,GAAG32C,OAAO,CAAC42C,aAAR,IAAyB11C,IAA5C;AACA,QAAI21C,cAAc,GAAGF,YAAY,CAACG,iBAAb,EAArB;;AAEA,YAAQrD,KAAR;AACE;AACA,WAAK,GAAL;AACA,WAAK,IAAL;AACA,WAAK,KAAL;AACE,eAAO,QAAQyD,mBAAmB,CAACL,cAAD,EAAiB,GAAjB,CAAlC;AACF;;AACA,WAAK,MAAL;AACA;AACE,eAAO,QAAQG,cAAc,CAACH,cAAD,EAAiB,GAAjB,CAA7B;AATJ;AAWD,GAvnBc;AAynBf;AACAM,GAAC,EAAE,UAASj2C,IAAT,EAAeuyC,KAAf,EAAsBiD,SAAtB,EAAiC12C,OAAjC,EAA0C;AAC3C,QAAI22C,YAAY,GAAG32C,OAAO,CAAC42C,aAAR,IAAyB11C,IAA5C;AACA,QAAI21C,cAAc,GAAGF,YAAY,CAACG,iBAAb,EAArB;;AAEA,YAAQrD,KAAR;AACE;AACA,WAAK,GAAL;AACA,WAAK,IAAL;AACA,WAAK,KAAL;AACE,eAAO,QAAQyD,mBAAmB,CAACL,cAAD,EAAiB,GAAjB,CAAlC;AACF;;AACA,WAAK,MAAL;AACA;AACE,eAAO,QAAQG,cAAc,CAACH,cAAD,EAAiB,GAAjB,CAA7B;AATJ;AAWD,GAzoBc;AA2oBf;AACAtkB,GAAC,EAAE,UAASrxB,IAAT,EAAeuyC,KAAf,EAAsBiD,SAAtB,EAAiC12C,OAAjC,EAA0C;AAC3C,QAAI22C,YAAY,GAAG32C,OAAO,CAAC42C,aAAR,IAAyB11C,IAA5C;AACA,QAAIoN,SAAS,GAAGX,IAAI,CAACC,KAAL,CAAW+oC,YAAY,CAAC/nC,OAAb,KAAyB,IAApC,CAAhB;AACA,WAAO2jC,yEAAe,CAACjkC,SAAD,EAAYmlC,KAAK,CAACvuC,MAAlB,CAAtB;AACD,GAhpBc;AAkpBf;AACAkyC,GAAC,EAAE,UAASl2C,IAAT,EAAeuyC,KAAf,EAAsBiD,SAAtB,EAAiC12C,OAAjC,EAA0C;AAC3C,QAAI22C,YAAY,GAAG32C,OAAO,CAAC42C,aAAR,IAAyB11C,IAA5C;AACA,QAAIoN,SAAS,GAAGqoC,YAAY,CAAC/nC,OAAb,EAAhB;AACA,WAAO2jC,yEAAe,CAACjkC,SAAD,EAAYmlC,KAAK,CAACvuC,MAAlB,CAAtB;AACD;AAvpBc,CAAjB;;AA0pBA,SAASgyC,mBAAT,CAA6BhrB,MAA7B,EAAqCmrB,cAArC,EAAqD;AACnD,MAAI5E,IAAI,GAAGvmB,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,GAA9B;AACA,MAAIorB,SAAS,GAAG3pC,IAAI,CAACuF,GAAL,CAASgZ,MAAT,CAAhB;AACA,MAAI2pB,KAAK,GAAGloC,IAAI,CAACC,KAAL,CAAW0pC,SAAS,GAAG,EAAvB,CAAZ;AACA,MAAIC,OAAO,GAAGD,SAAS,GAAG,EAA1B;;AACA,MAAIC,OAAO,KAAK,CAAhB,EAAmB;AACjB,WAAO9E,IAAI,GAAG/P,MAAM,CAACmT,KAAD,CAApB;AACD;;AACD,MAAIlQ,SAAS,GAAG0R,cAAc,IAAI,EAAlC;AACA,SAAO5E,IAAI,GAAG/P,MAAM,CAACmT,KAAD,CAAb,GAAuBlQ,SAAvB,GAAmC4M,yEAAe,CAACgF,OAAD,EAAU,CAAV,CAAzD;AACD;;AAED,SAASR,iCAAT,CAA2C7qB,MAA3C,EAAmDmrB,cAAnD,EAAmE;AACjE,MAAInrB,MAAM,GAAG,EAAT,KAAgB,CAApB,EAAuB;AACrB,QAAIumB,IAAI,GAAGvmB,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,GAA9B;AACA,WAAOumB,IAAI,GAAGF,yEAAe,CAAC5kC,IAAI,CAACuF,GAAL,CAASgZ,MAAT,IAAmB,EAApB,EAAwB,CAAxB,CAA7B;AACD;;AACD,SAAO8qB,cAAc,CAAC9qB,MAAD,EAASmrB,cAAT,CAArB;AACD;;AAED,SAASL,cAAT,CAAwB9qB,MAAxB,EAAgCmrB,cAAhC,EAAgD;AAC9C,MAAI1R,SAAS,GAAG0R,cAAc,IAAI,EAAlC;AACA,MAAI5E,IAAI,GAAGvmB,MAAM,GAAG,CAAT,GAAa,GAAb,GAAmB,GAA9B;AACA,MAAIorB,SAAS,GAAG3pC,IAAI,CAACuF,GAAL,CAASgZ,MAAT,CAAhB;AACA,MAAI2pB,KAAK,GAAGtD,yEAAe,CAAC5kC,IAAI,CAACC,KAAL,CAAW0pC,SAAS,GAAG,EAAvB,CAAD,EAA6B,CAA7B,CAA3B;AACA,MAAIC,OAAO,GAAGhF,yEAAe,CAAC+E,SAAS,GAAG,EAAb,EAAiB,CAAjB,CAA7B;AACA,SAAO7E,IAAI,GAAGoD,KAAP,GAAelQ,SAAf,GAA2B4R,OAAlC;AACD;;AAEchE,yEAAf,E;;;;;;;;;;;;ACxvBA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIA,UAAU,GAAG;AACf;AACA1mC,GAAC,EAAE,UAAS3L,IAAT,EAAeuyC,KAAf,EAAsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,QAAII,UAAU,GAAG3yC,IAAI,CAACqK,cAAL,EAAjB,CAVuB,CAWvB;;AACA,QAAI/B,IAAI,GAAGqqC,UAAU,GAAG,CAAb,GAAiBA,UAAjB,GAA8B,IAAIA,UAA7C;AACA,WAAOtB,yEAAe,CAACkB,KAAK,KAAK,IAAV,GAAiBjqC,IAAI,GAAG,GAAxB,GAA8BA,IAA/B,EAAqCiqC,KAAK,CAACvuC,MAA3C,CAAtB;AACD,GAhBc;AAkBf;AACA0vC,GAAC,EAAE,UAAS1zC,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,QAAIhqC,KAAK,GAAGvI,IAAI,CAACsK,WAAL,EAAZ;AACA,WAAOioC,KAAK,KAAK,GAAV,GAAgB/Q,MAAM,CAACj5B,KAAK,GAAG,CAAT,CAAtB,GAAoC8oC,yEAAe,CAAC9oC,KAAK,GAAG,CAAT,EAAY,CAAZ,CAA1D;AACD,GAtBc;AAwBf;AACA2rC,GAAC,EAAE,UAASl0C,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,WAAOlB,yEAAe,CAACrxC,IAAI,CAACyK,UAAL,EAAD,EAAoB8nC,KAAK,CAACvuC,MAA1B,CAAtB;AACD,GA3Bc;AA6Bf;AACAI,GAAC,EAAE,UAASpE,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,QAAIqC,kBAAkB,GAAG50C,IAAI,CAAC0K,WAAL,KAAqB,EAArB,IAA2B,CAA3B,GAA+B,IAA/B,GAAsC,IAA/D;;AAEA,YAAQ6nC,KAAR;AACE,WAAK,GAAL;AACA,WAAK,IAAL;AACA,WAAK,KAAL;AACE,eAAOqC,kBAAkB,CAAC3mB,WAAnB,EAAP;;AACF,WAAK,OAAL;AACE,eAAO2mB,kBAAkB,CAAC,CAAD,CAAzB;;AACF,WAAK,MAAL;AACA;AACE,eAAOA,kBAAkB,KAAK,IAAvB,GAA8B,MAA9B,GAAuC,MAA9C;AATJ;AAWD,GA5Cc;AA8Cf;AACAG,GAAC,EAAE,UAAS/0C,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,WAAOlB,yEAAe,CAACrxC,IAAI,CAAC0K,WAAL,KAAqB,EAArB,IAA2B,EAA5B,EAAgC6nC,KAAK,CAACvuC,MAAtC,CAAtB;AACD,GAjDc;AAmDf;AACAgxC,GAAC,EAAE,UAASh1C,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,WAAOlB,yEAAe,CAACrxC,IAAI,CAAC0K,WAAL,EAAD,EAAqB6nC,KAAK,CAACvuC,MAA3B,CAAtB;AACD,GAtDc;AAwDf;AACAkxC,GAAC,EAAE,UAASl1C,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,WAAOlB,yEAAe,CAACrxC,IAAI,CAAC2K,aAAL,EAAD,EAAuB4nC,KAAK,CAACvuC,MAA7B,CAAtB;AACD,GA3Dc;AA6Df;AACAE,GAAC,EAAE,UAASlE,IAAT,EAAeuyC,KAAf,EAAsB;AACvB,WAAOlB,yEAAe,CAACrxC,IAAI,CAAC4K,aAAL,EAAD,EAAuB2nC,KAAK,CAACvuC,MAA7B,CAAtB;AACD;AAhEc,CAAjB;AAmEequC,yEAAf,E;;;;;;;;;;;;AClHA;AAAA,SAASiE,iBAAT,CAA2B1b,OAA3B,EAAoC2b,UAApC,EAAgD;AAC9C,UAAQ3b,OAAR;AACE,SAAK,GAAL;AACE,aAAO2b,UAAU,CAACv2C,IAAX,CAAgB;AAAE0yC,aAAK,EAAE;AAAT,OAAhB,CAAP;;AACF,SAAK,IAAL;AACE,aAAO6D,UAAU,CAACv2C,IAAX,CAAgB;AAAE0yC,aAAK,EAAE;AAAT,OAAhB,CAAP;;AACF,SAAK,KAAL;AACE,aAAO6D,UAAU,CAACv2C,IAAX,CAAgB;AAAE0yC,aAAK,EAAE;AAAT,OAAhB,CAAP;;AACF,SAAK,MAAL;AACA;AACE,aAAO6D,UAAU,CAACv2C,IAAX,CAAgB;AAAE0yC,aAAK,EAAE;AAAT,OAAhB,CAAP;AATJ;AAWD;;AAED,SAAS8D,iBAAT,CAA2B5b,OAA3B,EAAoC2b,UAApC,EAAgD;AAC9C,UAAQ3b,OAAR;AACE,SAAK,GAAL;AACE,aAAO2b,UAAU,CAACngC,IAAX,CAAgB;AAAEs8B,aAAK,EAAE;AAAT,OAAhB,CAAP;;AACF,SAAK,IAAL;AACE,aAAO6D,UAAU,CAACngC,IAAX,CAAgB;AAAEs8B,aAAK,EAAE;AAAT,OAAhB,CAAP;;AACF,SAAK,KAAL;AACE,aAAO6D,UAAU,CAACngC,IAAX,CAAgB;AAAEs8B,aAAK,EAAE;AAAT,OAAhB,CAAP;;AACF,SAAK,MAAL;AACA;AACE,aAAO6D,UAAU,CAACngC,IAAX,CAAgB;AAAEs8B,aAAK,EAAE;AAAT,OAAhB,CAAP;AATJ;AAWD;;AAED,SAAS+D,qBAAT,CAA+B7b,OAA/B,EAAwC2b,UAAxC,EAAoD;AAClD,MAAIG,WAAW,GAAG9b,OAAO,CAACzd,KAAR,CAAc,WAAd,CAAlB;AACA,MAAIw5B,WAAW,GAAGD,WAAW,CAAC,CAAD,CAA7B;AACA,MAAIE,WAAW,GAAGF,WAAW,CAAC,CAAD,CAA7B;;AAEA,MAAI,CAACE,WAAL,EAAkB;AAChB,WAAON,iBAAiB,CAAC1b,OAAD,EAAU2b,UAAV,CAAxB;AACD;;AAED,MAAIM,cAAJ;;AAEA,UAAQF,WAAR;AACE,SAAK,GAAL;AACEE,oBAAc,GAAGN,UAAU,CAACO,QAAX,CAAoB;AAAEpE,aAAK,EAAE;AAAT,OAApB,CAAjB;AACA;;AACF,SAAK,IAAL;AACEmE,oBAAc,GAAGN,UAAU,CAACO,QAAX,CAAoB;AAAEpE,aAAK,EAAE;AAAT,OAApB,CAAjB;AACA;;AACF,SAAK,KAAL;AACEmE,oBAAc,GAAGN,UAAU,CAACO,QAAX,CAAoB;AAAEpE,aAAK,EAAE;AAAT,OAApB,CAAjB;AACA;;AACF,SAAK,MAAL;AACA;AACEmE,oBAAc,GAAGN,UAAU,CAACO,QAAX,CAAoB;AAAEpE,aAAK,EAAE;AAAT,OAApB,CAAjB;AACA;AAbJ;;AAgBA,SAAOmE,cAAc,CAClBv5B,OADI,CACI,UADJ,EACgBg5B,iBAAiB,CAACK,WAAD,EAAcJ,UAAd,CADjC,EAEJj5B,OAFI,CAEI,UAFJ,EAEgBk5B,iBAAiB,CAACI,WAAD,EAAcL,UAAd,CAFjC,CAAP;AAGD;;AAED,IAAIQ,cAAc,GAAG;AACnB9zB,GAAC,EAAEuzB,iBADgB;AAEnBQ,GAAC,EAAEP;AAFgB,CAArB;AAKeM,6EAAf,E;;;;;;;;;;;;ACjEA;AAAA;AAAA,IAAIjvC,sBAAsB,GAAG,KAA7B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASmvC,+BAAT,CAA0CjqC,SAA1C,EAAqD;AAClE,MAAIhN,IAAI,GAAG,IAAImI,IAAJ,CAAS6E,SAAS,CAACU,OAAV,EAAT,CAAX;AACA,MAAIwpC,kBAAkB,GAAGl3C,IAAI,CAAC41C,iBAAL,EAAzB;AACA51C,MAAI,CAACm3C,UAAL,CAAgB,CAAhB,EAAmB,CAAnB;AACA,MAAIC,gCAAgC,GAAGp3C,IAAI,CAAC0N,OAAL,KAAiB5F,sBAAxD;AAEA,SAAOovC,kBAAkB,GAAGpvC,sBAArB,GAA8CsvC,gCAArD;AACD,C;;;;;;;;;;;;ACpBD;AAAA;AAAA;AAAA;AAEA,IAAIpvC,mBAAmB,GAAG,QAA1B,C,CAEA;AACA;;AACe,SAASqsC,eAAT,CAAyBrnC,SAAzB,EAAoC;AACjD,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAII,SAAS,GAAGpN,IAAI,CAAC0N,OAAL,EAAhB;AACA1N,MAAI,CAACiL,WAAL,CAAiB,CAAjB,EAAoB,CAApB;AACAjL,MAAI,CAACkL,WAAL,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B;AACA,MAAIosC,oBAAoB,GAAGt3C,IAAI,CAAC0N,OAAL,EAA3B;AACA,MAAIuH,UAAU,GAAG7H,SAAS,GAAGkqC,oBAA7B;AACA,SAAO7qC,IAAI,CAACC,KAAL,CAAWuI,UAAU,GAAGjN,mBAAxB,IAA+C,CAAtD;AACD,C;;;;;;;;;;;;ACpBD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA,IAAIC,oBAAoB,GAAG,SAA3B,C,CAEA;AACA;;AACe,SAASgsC,aAAT,CAAuBjnC,SAAvB,EAAkC;AAC/C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIR,IAAI,GACN+qC,2EAAiB,CAACv3C,IAAD,CAAjB,CAAwB0N,OAAxB,KAAoC8pC,+EAAqB,CAACx3C,IAAD,CAArB,CAA4B0N,OAA5B,EADtC,CAR+C,CAW/C;AACA;AACA;;AACA,SAAOjB,IAAI,CAACwQ,KAAL,CAAWzQ,IAAI,GAAGvE,oBAAlB,IAA0C,CAAjD;AACD,C;;;;;;;;;;;;ACvBD;AAAA;AAAA;AAAA;AAAA;CAGA;AACA;;AACe,SAASorC,iBAAT,CAA2BrmC,SAA3B,EAAsC;AACnD,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI1E,IAAI,GAAGtI,IAAI,CAACqK,cAAL,EAAX;AAEA,MAAIotC,yBAAyB,GAAG,IAAItvC,IAAJ,CAAS,CAAT,CAAhC;AACAsvC,2BAAyB,CAAC3sC,cAA1B,CAAyCxC,IAAI,GAAG,CAAhD,EAAmD,CAAnD,EAAsD,CAAtD;AACAmvC,2BAAyB,CAACvsC,WAA1B,CAAsC,CAAtC,EAAyC,CAAzC,EAA4C,CAA5C,EAA+C,CAA/C;AACA,MAAIwsC,eAAe,GAAGH,2EAAiB,CAACE,yBAAD,CAAvC;AAEA,MAAIE,yBAAyB,GAAG,IAAIxvC,IAAJ,CAAS,CAAT,CAAhC;AACAwvC,2BAAyB,CAAC7sC,cAA1B,CAAyCxC,IAAzC,EAA+C,CAA/C,EAAkD,CAAlD;AACAqvC,2BAAyB,CAACzsC,WAA1B,CAAsC,CAAtC,EAAyC,CAAzC,EAA4C,CAA5C,EAA+C,CAA/C;AACA,MAAI0sC,eAAe,GAAGL,2EAAiB,CAACI,yBAAD,CAAvC;;AAEA,MAAI33C,IAAI,CAAC0N,OAAL,MAAkBgqC,eAAe,CAAChqC,OAAhB,EAAtB,EAAiD;AAC/C,WAAOpF,IAAI,GAAG,CAAd;AACD,GAFD,MAEO,IAAItI,IAAI,CAAC0N,OAAL,MAAkBkqC,eAAe,CAAClqC,OAAhB,EAAtB,EAAiD;AACtD,WAAOpF,IAAP;AACD,GAFM,MAEA;AACL,WAAOA,IAAI,GAAG,CAAd;AACD;AACF,C;;;;;;;;;;;;AChCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA,IAAIL,oBAAoB,GAAG,SAA3B,C,CAEA;AACA;;AACe,SAAS6rC,UAAT,CAAoB9mC,SAApB,EAA+BlO,OAA/B,EAAwC;AACrD,MAAIoO,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIR,IAAI,GACNqrC,wEAAc,CAAC73C,IAAD,EAAOlB,OAAP,CAAd,CAA8B4O,OAA9B,KACAoqC,4EAAkB,CAAC93C,IAAD,EAAOlB,OAAP,CAAlB,CAAkC4O,OAAlC,EAFF,CARqD,CAYrD;AACA;AACA;;AACA,SAAOjB,IAAI,CAACwQ,KAAL,CAAWzQ,IAAI,GAAGvE,oBAAlB,IAA0C,CAAjD;AACD,C;;;;;;;;;;;;ACxBD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;CAGA;AACA;;AACe,SAAS+qC,cAAT,CAAyBhmC,SAAzB,EAAoC+qC,YAApC,EAAkD;AAC/D,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CAAc,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UAApE,CAAN;AACD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,EAAY+qC,YAAZ,CAAjB;AACA,MAAIzvC,IAAI,GAAGtI,IAAI,CAACqK,cAAL,EAAX;AAEA,MAAIvL,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAArB;AACA,MAAIiI,2BAA2B,GAAGjI,MAAM,IACtCA,MAAM,CAACjxC,OADyB,IAEhCixC,MAAM,CAACjxC,OAAP,CAAem5C,qBAFjB;AAGA,MAAIC,4BAA4B,GAC9BF,2BAA2B,IAAI,IAA/B,GACI,CADJ,GAEIrrC,mEAAS,CAACqrC,2BAAD,CAHf;AAIA,MAAIC,qBAAqB,GACvBn5C,OAAO,CAACm5C,qBAAR,IAAiC,IAAjC,GACIC,4BADJ,GAEIvrC,mEAAS,CAAC7N,OAAO,CAACm5C,qBAAT,CAHf,CAjB+D,CAsB/D;;AACA,MAAI,EAAEA,qBAAqB,IAAI,CAAzB,IAA8BA,qBAAqB,IAAI,CAAzD,CAAJ,EAAiE;AAC/D,UAAM,IAAIE,UAAJ,CAAe,2DAAf,CAAN;AACD;;AAED,MAAIC,mBAAmB,GAAG,IAAIjwC,IAAJ,CAAS,CAAT,CAA1B;AACAiwC,qBAAmB,CAACttC,cAApB,CAAmCxC,IAAI,GAAG,CAA1C,EAA6C,CAA7C,EAAgD2vC,qBAAhD;AACAG,qBAAmB,CAACltC,WAApB,CAAgC,CAAhC,EAAmC,CAAnC,EAAsC,CAAtC,EAAyC,CAAzC;AACA,MAAIwsC,eAAe,GAAGG,wEAAc,CAACO,mBAAD,EAAsBL,YAAtB,CAApC;AAEA,MAAIM,mBAAmB,GAAG,IAAIlwC,IAAJ,CAAS,CAAT,CAA1B;AACAkwC,qBAAmB,CAACvtC,cAApB,CAAmCxC,IAAnC,EAAyC,CAAzC,EAA4C2vC,qBAA5C;AACAI,qBAAmB,CAACntC,WAApB,CAAgC,CAAhC,EAAmC,CAAnC,EAAsC,CAAtC,EAAyC,CAAzC;AACA,MAAI0sC,eAAe,GAAGC,wEAAc,CAACQ,mBAAD,EAAsBN,YAAtB,CAApC;;AAEA,MAAI/3C,IAAI,CAAC0N,OAAL,MAAkBgqC,eAAe,CAAChqC,OAAhB,EAAtB,EAAiD;AAC/C,WAAOpF,IAAI,GAAG,CAAd;AACD,GAFD,MAEO,IAAItI,IAAI,CAAC0N,OAAL,MAAkBkqC,eAAe,CAAClqC,OAAhB,EAAtB,EAAiD;AACtD,WAAOpF,IAAP;AACD,GAFM,MAEA;AACL,WAAOA,IAAI,GAAG,CAAd;AACD;AACF,C;;;;;;;;;;;;AClDD;AAAA;AAAA;AAAA;AAAO,IAAIgwC,eAAe,GAAG,CAAC,GAAD,EAAM,IAAN,EAAY,IAAZ,EAAkB,MAAlB,CAAtB;AAEA,SAASC,gBAAT,CAA0BhG,KAA1B,EAAiC;AACtC,SAAO+F,eAAe,CAACtsC,OAAhB,CAAwBumC,KAAxB,MAAmC,CAAC,CAA3C;AACD;AAEM,SAASiG,mBAAT,CAA6BjG,KAA7B,EAAoC;AACzC,QAAM,IAAI4F,UAAJ,CACJ,kEACE5F,KADF,GAEE,oCAHE,CAAN;AAKD,C;;;;;;;;;;;;ACZD;AAAA;AAAA;AAAA;AAAA;CAGA;AACA;;AACe,SAASkG,SAAT,CAAmBzrC,SAAnB,EAA8B0rC,QAA9B,EAAwCX,YAAxC,EAAsD;AACnE,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAArB;AACA,MAAI4I,kBAAkB,GACpB5I,MAAM,IAAIA,MAAM,CAACjxC,OAAjB,IAA4BixC,MAAM,CAACjxC,OAAP,CAAe21C,YAD7C;AAEA,MAAImE,mBAAmB,GACrBD,kBAAkB,IAAI,IAAtB,GAA6B,CAA7B,GAAiChsC,mEAAS,CAACgsC,kBAAD,CAD5C;AAEA,MAAIlE,YAAY,GACd31C,OAAO,CAAC21C,YAAR,IAAwB,IAAxB,GACImE,mBADJ,GAEIjsC,mEAAS,CAAC7N,OAAO,CAAC21C,YAAT,CAHf,CAbmE,CAkBnE;;AACA,MAAI,EAAEA,YAAY,IAAI,CAAhB,IAAqBA,YAAY,IAAI,CAAvC,CAAJ,EAA+C;AAC7C,UAAM,IAAI0D,UAAJ,CAAe,kDAAf,CAAN;AACD;;AAED,MAAIn4C,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI3N,GAAG,GAAGsN,mEAAS,CAAC+rC,QAAD,CAAnB;AAEA,MAAI3gC,UAAU,GAAG/X,IAAI,CAACwK,SAAL,EAAjB;AAEA,MAAIquC,SAAS,GAAGx5C,GAAG,GAAG,CAAtB;AACA,MAAIy5C,QAAQ,GAAG,CAACD,SAAS,GAAG,CAAb,IAAkB,CAAjC;AAEA,MAAIrsC,IAAI,GAAG,CAACssC,QAAQ,GAAGrE,YAAX,GAA0B,CAA1B,GAA8B,CAA/B,IAAoCp1C,GAApC,GAA0C0Y,UAArD;AAEA/X,MAAI,CAACgL,UAAL,CAAgBhL,IAAI,CAACyK,UAAL,KAAoB+B,IAApC;AACA,SAAOxM,IAAP;AACD,C;;;;;;;;;;;;ACxCD;AAAA;AAAA;AAAA;AAAA;CAGA;AACA;;AACe,SAAS+4C,YAAT,CAAsB/rC,SAAtB,EAAiC0rC,QAAjC,EAA2C;AACxD,MAAIxrC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAI3E,GAAG,GAAGsN,mEAAS,CAAC+rC,QAAD,CAAnB;;AAEA,MAAIr5C,GAAG,GAAG,CAAN,KAAY,CAAhB,EAAmB;AACjBA,OAAG,GAAGA,GAAG,GAAG,CAAZ;AACD;;AAED,MAAIo1C,YAAY,GAAG,CAAnB;AACA,MAAIz0C,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI+K,UAAU,GAAG/X,IAAI,CAACwK,SAAL,EAAjB;AAEA,MAAIquC,SAAS,GAAGx5C,GAAG,GAAG,CAAtB;AACA,MAAIy5C,QAAQ,GAAG,CAACD,SAAS,GAAG,CAAb,IAAkB,CAAjC;AAEA,MAAIrsC,IAAI,GAAG,CAACssC,QAAQ,GAAGrE,YAAX,GAA0B,CAA1B,GAA8B,CAA/B,IAAoCp1C,GAApC,GAA0C0Y,UAArD;AAEA/X,MAAI,CAACgL,UAAL,CAAgBhL,IAAI,CAACyK,UAAL,KAAoB+B,IAApC;AACA,SAAOxM,IAAP;AACD,C;;;;;;;;;;;;AC7BD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;CAGA;AACA;;AACe,SAASg5C,aAAT,CAAuBhsC,SAAvB,EAAkCisC,YAAlC,EAAgD;AAC7D,MAAI/rC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIgnC,OAAO,GAAGrnC,mEAAS,CAACssC,YAAD,CAAvB;AACA,MAAIzsC,IAAI,GAAGynC,uEAAa,CAACj0C,IAAD,CAAb,GAAsBg0C,OAAjC;AACAh0C,MAAI,CAACgL,UAAL,CAAgBhL,IAAI,CAACyK,UAAL,KAAoB+B,IAAI,GAAG,CAA3C;AACA,SAAOxM,IAAP;AACD,C;;;;;;;;;;;;AClBD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;CAGA;AACA;;AACe,SAASk5C,UAAT,CAAoBlsC,SAApB,EAA+BmsC,SAA/B,EAA0Cr6C,OAA1C,EAAmD;AAChE,MAAIoO,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI6mC,IAAI,GAAGlnC,mEAAS,CAACwsC,SAAD,CAApB;AACA,MAAI3sC,IAAI,GAAGsnC,oEAAU,CAAC9zC,IAAD,EAAOlB,OAAP,CAAV,GAA4B+0C,IAAvC;AACA7zC,MAAI,CAACgL,UAAL,CAAgBhL,IAAI,CAACyK,UAAL,KAAoB+B,IAAI,GAAG,CAA3C;AACA,SAAOxM,IAAP;AACD,C;;;;;;;;;;;;AClBD;AAAA;AAAA;CAEA;AACA;;AACe,SAASu3C,iBAAT,CAA2BvqC,SAA3B,EAAsC;AACnD,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIywC,YAAY,GAAG,CAAnB;AAEA,MAAIz0C,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI3N,GAAG,GAAGW,IAAI,CAACwK,SAAL,EAAV;AACA,MAAIgC,IAAI,GAAG,CAACnN,GAAG,GAAGo1C,YAAN,GAAqB,CAArB,GAAyB,CAA1B,IAA+Bp1C,GAA/B,GAAqCo1C,YAAhD;AAEAz0C,MAAI,CAACgL,UAAL,CAAgBhL,IAAI,CAACyK,UAAL,KAAoB+B,IAApC;AACAxM,MAAI,CAACkL,WAAL,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B;AACA,SAAOlL,IAAP;AACD,C;;;;;;;;;;;;ACpBD;AAAA;AAAA;AAAA;AAAA;CAGA;AACA;;AACe,SAASw3C,qBAAT,CAA+BxqC,SAA/B,EAA0C;AACvD,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIsE,IAAI,GAAG+qC,2EAAiB,CAACrmC,SAAD,CAA5B;AACA,MAAIosC,eAAe,GAAG,IAAIjxC,IAAJ,CAAS,CAAT,CAAtB;AACAixC,iBAAe,CAACtuC,cAAhB,CAA+BxC,IAA/B,EAAqC,CAArC,EAAwC,CAAxC;AACA8wC,iBAAe,CAACluC,WAAhB,CAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC;AACA,MAAIlL,IAAI,GAAGu3C,2EAAiB,CAAC6B,eAAD,CAA5B;AACA,SAAOp5C,IAAP;AACD,C;;;;;;;;;;;;AClBD;AAAA;AAAA;AAAA;AAAA;CAGA;AACA;;AACe,SAAS63C,cAAT,CAAwB7qC,SAAxB,EAAmC+qC,YAAnC,EAAiD;AAC9D,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAArB;AACA,MAAI4I,kBAAkB,GACpB5I,MAAM,IAAIA,MAAM,CAACjxC,OAAjB,IAA4BixC,MAAM,CAACjxC,OAAP,CAAe21C,YAD7C;AAEA,MAAImE,mBAAmB,GACrBD,kBAAkB,IAAI,IAAtB,GAA6B,CAA7B,GAAiChsC,mEAAS,CAACgsC,kBAAD,CAD5C;AAEA,MAAIlE,YAAY,GACd31C,OAAO,CAAC21C,YAAR,IAAwB,IAAxB,GACImE,mBADJ,GAEIjsC,mEAAS,CAAC7N,OAAO,CAAC21C,YAAT,CAHf,CAb8D,CAkB9D;;AACA,MAAI,EAAEA,YAAY,IAAI,CAAhB,IAAqBA,YAAY,IAAI,CAAvC,CAAJ,EAA+C;AAC7C,UAAM,IAAI0D,UAAJ,CAAe,kDAAf,CAAN;AACD;;AAED,MAAIn4C,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI3N,GAAG,GAAGW,IAAI,CAACwK,SAAL,EAAV;AACA,MAAIgC,IAAI,GAAG,CAACnN,GAAG,GAAGo1C,YAAN,GAAqB,CAArB,GAAyB,CAA1B,IAA+Bp1C,GAA/B,GAAqCo1C,YAAhD;AAEAz0C,MAAI,CAACgL,UAAL,CAAgBhL,IAAI,CAACyK,UAAL,KAAoB+B,IAApC;AACAxM,MAAI,CAACkL,WAAL,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B;AACA,SAAOlL,IAAP;AACD,C;;;;;;;;;;;;ACnCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;CAGA;AACA;;AACe,SAAS83C,kBAAT,CAA6B9qC,SAA7B,EAAwC+qC,YAAxC,EAAsD;AACnE,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CAAc,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UAApE,CAAN;AACD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAArB;AACA,MAAIiI,2BAA2B,GAAGjI,MAAM,IACtCA,MAAM,CAACjxC,OADyB,IAEhCixC,MAAM,CAACjxC,OAAP,CAAem5C,qBAFjB;AAGA,MAAIC,4BAA4B,GAC9BF,2BAA2B,IAAI,IAA/B,GACI,CADJ,GAEIrrC,mEAAS,CAACqrC,2BAAD,CAHf;AAIA,MAAIC,qBAAqB,GACvBn5C,OAAO,CAACm5C,qBAAR,IAAiC,IAAjC,GACIC,4BADJ,GAEIvrC,mEAAS,CAAC7N,OAAO,CAACm5C,qBAAT,CAHf;AAKA,MAAI3vC,IAAI,GAAG0qC,wEAAc,CAAChmC,SAAD,EAAY+qC,YAAZ,CAAzB;AACA,MAAIsB,SAAS,GAAG,IAAIlxC,IAAJ,CAAS,CAAT,CAAhB;AACAkxC,WAAS,CAACvuC,cAAV,CAAyBxC,IAAzB,EAA+B,CAA/B,EAAkC2vC,qBAAlC;AACAoB,WAAS,CAACnuC,WAAV,CAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B;AACA,MAAIlL,IAAI,GAAG63C,wEAAc,CAACwB,SAAD,EAAYtB,YAAZ,CAAzB;AACA,SAAO/3C,IAAP;AACD,C;;;;;;;;;;;;AC/BD;AAAA;AAAe,SAAS2M,SAAT,CAAoB2sC,WAApB,EAAiC;AAC9C,MAAIA,WAAW,KAAK,IAAhB,IAAwBA,WAAW,KAAK,IAAxC,IAAgDA,WAAW,KAAK,KAApE,EAA2E;AACzE,WAAO1sC,GAAP;AACD;;AAED,MAAIqP,MAAM,GAAG1a,MAAM,CAAC+3C,WAAD,CAAnB;;AAEA,MAAI7tC,KAAK,CAACwQ,MAAD,CAAT,EAAmB;AACjB,WAAOA,MAAP;AACD;;AAED,SAAOA,MAAM,GAAG,CAAT,GAAaxP,IAAI,CAACK,IAAL,CAAUmP,MAAV,CAAb,GAAiCxP,IAAI,CAACC,KAAL,CAAWuP,MAAX,CAAxC;AACD,C;;;;;;;;;;;;ACZD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASs9B,OAAT,CAAiBvsC,SAAjB,EAA4BC,WAA5B,EAAyC;AACtD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI/D,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACAjN,MAAI,CAACw5C,OAAL,CAAax5C,IAAI,CAACib,OAAL,KAAiBhS,MAA9B;AACA,SAAOjJ,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA,IAAI+H,oBAAoB,GAAG,OAA3B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS0xC,QAAT,CAAkBzsC,SAAlB,EAA6BC,WAA7B,EAA0C;AACvD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOF,yEAAe,CAACC,SAAD,EAAY/D,MAAM,GAAGlB,oBAArB,CAAtB;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS2xC,eAAT,CAAyB1sC,SAAzB,EAAoCC,WAApC,EAAiD;AAC9D,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAO0sC,wEAAc,CAAC3sC,SAAD,EAAY4sC,wEAAc,CAAC5sC,SAAD,CAAd,GAA4B/D,MAAxC,CAArB;AACD,C;;;;;;;;;;;;AC1CD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS8D,eAAT,CAAyBC,SAAzB,EAAoCC,WAApC,EAAiD;AAC9D,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIoJ,SAAS,GAAGiqC,gEAAM,CAACrqC,SAAD,CAAN,CAAkBU,OAAlB,EAAhB;AACA,MAAIzE,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAO,IAAI9E,IAAJ,CAASiF,SAAS,GAAGnE,MAArB,CAAP;AACD,C;;;;;;;;;;;;ACnCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA,IAAInB,sBAAsB,GAAG,KAA7B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS+xC,UAAT,CAAoB7sC,SAApB,EAA+BC,WAA/B,EAA4C;AACzD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOF,yEAAe,CAACC,SAAD,EAAY/D,MAAM,GAAGnB,sBAArB,CAAtB;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASgyC,SAAT,CAAmB9sC,SAAnB,EAA8BC,WAA9B,EAA2C;AACxD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI/D,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,MAAII,YAAY,GAAGrN,IAAI,CAACgb,QAAL,KAAkB/R,MAArC;AACA,MAAIqE,oBAAoB,GAAG,IAAInF,IAAJ,CAAS,CAAT,CAA3B;AACAmF,sBAAoB,CAACysC,WAArB,CAAiC/5C,IAAI,CAAC+a,WAAL,EAAjC,EAAqD1N,YAArD,EAAmE,CAAnE;AACAC,sBAAoB,CAAC0sC,QAArB,CAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,CAAvC;AACA,MAAIzsC,WAAW,GAAG0sC,wEAAc,CAAC3sC,oBAAD,CAAhC,CAbwD,CAcxD;AACA;;AACAtN,MAAI,CAACk6C,QAAL,CAAc7sC,YAAd,EAA4BZ,IAAI,CAACe,GAAL,CAASD,WAAT,EAAsBvN,IAAI,CAACib,OAAL,EAAtB,CAA5B;AACA,SAAOjb,IAAP;AACD,C;;;;;;;;;;;;AC5CD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASm6C,WAAT,CAAqBntC,SAArB,EAAgCC,WAAhC,EAA6C;AAC1D,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,MAAIkI,MAAM,GAAGlM,MAAM,GAAG,CAAtB;AACA,SAAO6wC,mEAAS,CAAC9sC,SAAD,EAAYmI,MAAZ,CAAhB;AACD,C;;;;;;;;;;;;ACnCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASilC,UAAT,CAAoBptC,SAApB,EAA+BC,WAA/B,EAA4C;AACzD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOF,yEAAe,CAACC,SAAD,EAAY/D,MAAM,GAAG,IAArB,CAAtB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASoxC,QAAT,CAAkBrtC,SAAlB,EAA6BC,WAA7B,EAA0C;AACvD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,MAAIQ,IAAI,GAAGxE,MAAM,GAAG,CAApB;AACA,SAAOswC,iEAAO,CAACvsC,SAAD,EAAYS,IAAZ,CAAd;AACD,C;;;;;;;;;;;;ACnCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS6sC,QAAT,CAAkBttC,SAAlB,EAA6BC,WAA7B,EAA0C;AACvD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAO6sC,mEAAS,CAAC9sC,SAAD,EAAY/D,MAAM,GAAG,EAArB,CAAhB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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AG,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B;AACAtI,MAAI,CAACg6C,QAAL,CAAc,EAAd,EAAkB,EAAlB,EAAsB,EAAtB,EAA0B,GAA1B;AACA,SAAOh6C,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAIugD,sBAAsB,GAAG,uDAA7B,C,CAEA;AACA;;AACA,IAAIC,0BAA0B,GAAG,mCAAjC;AAEA,IAAIC,mBAAmB,GAAG,YAA1B;AACA,IAAIC,iBAAiB,GAAG,KAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS9kC,MAAT,CAAgB5O,SAAhB,EAA2B2zC,cAA3B,EAA2C5I,YAA3C,EAAyD;AACtE,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAI48C,SAAS,GAAGpf,MAAM,CAACmf,cAAD,CAAtB;AACA,MAAI7hD,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AAEA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAAR,IAAkB8Q,8DAA/B;AAEA,MAAI7I,2BAA2B,GAC7BjI,MAAM,CAACjxC,OAAP,IAAkBixC,MAAM,CAACjxC,OAAP,CAAem5C,qBADnC;AAEA,MAAIC,4BAA4B,GAC9BF,2BAA2B,IAAI,IAA/B,GAC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;;;;;;;AC3bD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIc,cAAc,GAAG,IAArB;AACA,IAAIC,0BAA0B,GAAG,IAAjC;AACA,IAAIC,gBAAgB,GAAG,KAAvB;AACA,IAAIC,qBAAqB,GAAG,KAA5B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,cAAT,CAAwB50C,SAAxB,EAAmC60C,aAAnC,EAAkD9J,YAAlD,EAAgE;AAC7E,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAAR,IAAkB8Q,8DAA/B;;AAEA,MAAI,CAAC9Q,MAAM,CAAC6R,cAAZ,EAA4B;AAC1B,UAAM,IAAIzJ,UAAJ,CAAe,6CAAf,CAAN;AACD;;AAED,MAAI2J,UAAU,GAAGpG,oEAAU,CAAC1uC,SAAD,EAAY60C,aAAZ,CAA3B;;AAEA,MAAIp2C,KAAK,CAACq2C,U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AAIE,gBAAgB,GAAG,KAAvB;AACA,IAAIc,eAAe,GAAG,MAAtB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,oBAAT,CACbz1C,SADa,EAEb60C,aAFa,EAGb9J,YAHa,EAIb;AACA,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAAR,IAAkB8Q,8DAA/B;;AAEA,MAAI,CAAC9Q,MAAM,CAAC6R,cAAZ,EAA4B;AAC1B,UAAM,IAAIzJ,UAAJ,CAAe,sDAAf,CAAN;AACD;;AAED,MAAI2J,UAAU,GAAGpG,oEAAU,CAAC1uC,S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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASl6B,UAAT,CAAoBnO,SAApB,EAA+B;AAC5C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIqpC,OAAO,GAAGr2C,IAAI,CAACmb,UAAL,EAAd;AACA,SAAOk7B,OAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASr7B,QAAT,CAAkBhO,SAAlB,EAA6B;AAC1C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIzE,KAAK,GAAGvI,IAAI,CAACgb,QAAL,EAAZ;AACA,SAAOzS,KAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA,IAAIP,mBAAmB,GAAG,KAAK,EAAL,GAAU,EAAV,GAAe,IAAzC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS67C,6BAAT,CACbrJ,iBADa,EAEbC,kBAFa,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AACA;AACA;AAGA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3LA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASjI,OAAT,CAAiB2M,SAAjB,EAA4BiuC,kBAA5B,EAAgD;AAC7D,MAAI/tC,SAAS,CAA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CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,SAAOqzC,gEAAM,CAACrqC,SAAD,CAAN,CAAkBszC,MAAlB,OAA+B,CAAtC;AACD,C;;;;;;;;;;;;AC/BD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASyG,UAAT,CAAoB/5C,SAApB,EAA+B;AAC5C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,SAAOqzC,gEAAM,CAACrqC,SAAD,CAAN,CAAkBszC,MAAlB,OAA+B,CAAtC;AACD,C;;;;;;;;;;;;AC/BD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS0G,SAAT,CAAmBh6C,SAAnB,EAA8B;AAC3C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,SAAOqzC,gEAAM,CAACrqC,SAAD,CAAN,CAAkBszC,MAAlB,OAA+B,CAAtC;AACD,C;;;;;;;;;;;;AC/BD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASQ,OAAT,CAAiB9zC,SAAjB,EA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6B,MAAT,EAAiBoF,KAAjB,EAAwBp1B,KAAxB,EAA+Bre,OAA/B,EAAwC;AAC7C,aAAO+uD,oBAAoB,CAAC1gB,MAAD,CAA3B;AACD,KAJA;AAKD3pC,OAAG,EAAE,UAASxD,IAAT,EAAeqqB,KAAf,EAAsB9sB,KAAtB,EAA6BuB,OAA7B,EAAsC;AACzC,aAAO,CAAC,IAAIqJ,IAAJ,CAAS5K,KAAT,CAAD,EAAkB;AAAE6xD,sBAAc,EAAE;AAAlB,OAAlB,CAAP;AACD;AAPA;AArmCS,CAAd;AAgnCeR,sEAAf,E;;;;;;;;;;;;ACj3CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA,IAAIS,sBAAsB,GAAG,EAA7B,C,CAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAI9O,sBAAsB,GAAG,uDAA7B;AAEA,IAAIE,mBAAmB,GAAG,YAA1B;AACA,IAAIC,iBAAiB,GAAG,KAAxB;AAEA,IAAI4O,mBAAmB,GAAG,IAA1B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASh9C,KAAT,CACbi9C,eADa,EAEbC,iBAFa,EAGb3N,aAHa,EAIb9J,YAJa,EAKb;AACA,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIyrD,UAAU,GAAGjuB,MAAM,CAAC+tB,eAAD,CAAvB;AACA,MAAIG,YAAY,GAAGluB,MAAM,CAACguB,iBAAD,CAAzB;AACA,MAAI1wD,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AAEA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAAR,IAAkB8Q,8DAA/B;;AAEA,MAAI,CAAC9Q,MAAM,CAAC5yB,KAAZ,EAAmB;AACjB,UAAM,IAAIg7B,UAAJ,CAAe,oCAAf,CAAN;AACD;;AAED,MAAIH,2BAA2B,GAC7BjI,MAAM,CAACjxC,OAAP,IAAkBixC,MAAM,CAACjxC,OAAP,CAAem5C,qBADnC;AAEA,MAAIC,4BAA4B,GAC9BF,2BAA2B,IAAI,IAA/B,GACI,CADJ,GAEIrrC,uEAAS,CAACqrC,2BAAD,CAHf;AAIA,MAAIC,qBAAqB,GACvBn5C,OAAO,CAACm5C,qBAAR,IAAiC,IAAjC,GACIC,4BADJ,GAEIvrC,uEAAS,CAAC7N,OAAO,CAACm5C,qBAAT,CAHf,CAvBA,CA4BA;;AACA,MAAI,EAAEA,qBAAqB,IAAI,CAAzB,IAA8BA,qBAAqB,IAAI,CAAzD,CAAJ,EAAiE;AAC/D,UAAM,IAAIE,UAAJ,CACJ,2DADI,CAAN;AAGD;;AAED,MAAIQ,kBAAkB,GAAG5I,MAAM,CAACjxC,OAAP,IAAkBixC,MAAM,CAACjxC,OAAP,CAAe21C,YAA1D;AACA,MAAImE,mBAAmB,GACrBD,kBAAkB,IAAI,IAAtB,GAA6B,CAA7B,GAAiChsC,uEAAS,CAACgsC,kBAAD,CAD5C;AAEA,MAAIlE,YAAY,GACd31C,OAAO,CAAC21C,YAAR,IAAwB,IAAxB,GACImE,mBADJ,GAEIjsC,uEAAS,CAAC7N,OAAO,CAAC21C,YAAT,CAHf,CAtCA,CA2CA;;AACA,MAAI,EAAEA,YAAY,IAAI,CAAhB,IAAqBA,YAAY,IAAI,CAAvC,CAAJ,EAA+C;AAC7C,UAAM,IAAI0D,UAAJ,CAAe,kDAAf,CAAN;AACD;;AAED,MAAIuX,YAAY,KAAK,EAArB,EAAyB;AACvB,QAAID,UAAU,KAAK,EAAnB,EAAuB;AACrB,aAAOpY,gEAAM,CAACwK,aAAD,CAAb;AACD,KAFD,MAEO;AACL,aAAO,IAAI15C,IAAJ,CAASyE,GAAT,CAAP;AACD;AACF;;AAED,MAAI+iD,YAAY,GAAG;AACjB1X,yBAAqB,EAAEA,qBADN;AAEjBxD,gBAAY,EAAEA,YAFG;AAGjB1E,UAAM,EAAEA;AAHS,GAAnB,CAxDA,CA8DA;;AACA,MAAI6f,OAAO,GAAG,CACZ;AACEf,YAAQ,EAAEQ,sBADZ;AAEE7rD,OAAG,EAAEqsD,oBAFP;AAGE9sD,SAAK,EAAE;AAHT,GADY,CAAd;AAQA,MAAI8Z,CAAJ;AAEA,MAAIizC,MAAM,GAAGJ,YAAY,CAACvyC,KAAb,CAAmBojC,sBAAnB,CAAb;;AAEA,OAAK1jC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGizC,MAAM,CAAC9rD,MAAvB,EAA+B6Y,CAAC,EAAhC,EAAoC;AAClC,QAAI01B,KAAK,GAAGud,MAAM,CAACjzC,CAAD,CAAlB;;AAEA,QAAI,CAAC/d,OAAO,CAACyiD,oBAAT,IAAiChJ,sFAAgB,CAAChG,KAAD,CAArD,EAA8D;AAC5DiG,+FAAmB,CAACjG,KAAD,CAAnB;AACD;;AAED,QAAI4O,cAAc,GAAG5O,KAAK,CAAC,CAAD,CAA1B;AACA,QAAIzG,MAAM,GAAG8iB,6DAAO,CAACzN,cAAD,CAApB;;AACA,QAAIrV,MAAJ,EAAY;AACV,UAAIkd,WAAW,GAAGld,MAAM,CAACx5B,KAAP,CAChBm9C,UADgB,EAEhBld,KAFgB,EAGhBxC,MAAM,CAAC5yB,KAHS,EAIhBwyC,YAJgB,CAAlB;;AAOA,UAAI,CAAC3G,WAAL,EAAkB;AAChB,eAAO,IAAI7gD,IAAJ,CAASyE,GAAT,CAAP;AACD;;AAEDgjD,aAAO,CAAC/sD,IAAR,CAAa;AACXgsD,gBAAQ,EAAE/iB,MAAM,CAAC+iB,QADN;AAEXrrD,WAAG,EAAEsoC,MAAM,CAACtoC,GAFD;AAGXurD,gBAAQ,EAAEjjB,MAAM,CAACijB,QAHN;AAIXxxD,aAAK,EAAEyrD,WAAW,CAACzrD,KAJR;AAKXwF,aAAK,EAAE6sD,OAAO,CAAC5rD;AALJ,OAAb;AAQAyrD,gBAAU,GAAGzG,WAAW,CAACH,IAAzB;AACD,KArBD,MAqBO;AACL;AACA,UAAItW,KAAK,KAAK,IAAd,EAAoB;AAClBA,aAAK,GAAG,GAAR;AACD,OAFD,MAEO,IAAI4O,cAAc,KAAK,GAAvB,EAA4B;AACjC5O,aAAK,GAAG8O,kBAAkB,CAAC9O,KAAD,CAA1B;AACD,OANI,CAQL;;;AACA,UAAIkd,UAAU,CAACzjD,OAAX,CAAmBumC,KAAnB,MAA8B,CAAlC,EAAqC;AACnCkd,kBAAU,GAAGA,UAAU,CAACzpD,KAAX,CAAiBusC,KAAK,CAACvuC,MAAvB,CAAb;AACD,OAFD,MAEO;AACL,eAAO,IAAImE,IAAJ,CAASyE,GAAT,CAAP;AACD;AACF;AACF,GAxHD,CA0HA;;;AACA,MAAI6iD,UAAU,CAACzrD,MAAX,GAAoB,CAApB,IAAyBsrD,mBAAmB,CAAC9rC,IAApB,CAAyBisC,UAAzB,CAA7B,EAAmE;AACjE,WAAO,IAAItnD,IAAJ,CAASyE,GAAT,CAAP;AACD;;AAED,MAAImjD,qBAAqB,GAAGH,OAAO,CAChC7uD,GADyB,CACrB,UAASivD,MAAT,EAAiB;AACpB,WAAOA,MAAM,CAACnB,QAAd;AACD,GAHyB,EAIzBrqD,IAJyB,CAIpB,UAASJ,CAAT,EAAYC,CAAZ,EAAe;AACnB,WAAOA,CAAC,GAAGD,CAAX;AACD,GANyB,EAOzBK,MAPyB,CAOlB,UAASoqD,QAAT,EAAmB9rD,KAAnB,EAA0BoJ,KAA1B,EAAiC;AACvC,WAAOA,KAAK,CAACH,OAAN,CAAc6iD,QAAd,MAA4B9rD,KAAnC;AACD,GATyB,EAUzBhC,GAVyB,CAUrB,UAAS8tD,QAAT,EAAmB;AACtB,WAAOe,OAAO,CACXnrD,MADI,CACG,UAASurD,MAAT,EAAiB;AACvB,aAAOA,MAAM,CAACnB,QAAP,KAAoBA,QAA3B;AACD,KAHI,EAIJ/wD,OAJI,EAAP;AAKD,GAhByB,EAiBzBiD,GAjByB,CAiBrB,UAASkvD,WAAT,EAAsB;AACzB,WAAOA,WAAW,CAAC,CAAD,CAAlB;AACD,GAnByB,CAA5B;AAqBA,MAAIjwD,IAAI,GAAGq3C,gEAAM,CAACwK,aAAD,CAAjB;;AAEA,MAAIp2C,KAAK,CAACzL,IAAD,CAAT,EAAiB;AACf,WAAO,IAAImI,IAAJ,CAASyE,GAAT,CAAP;AACD,GAxJD,CA0JA;AACA;AACA;;;AACA,MAAIm0C,OAAO,GAAGC,yEAAe,CAAChhD,IAAD,EAAOi3C,6FAA+B,CAACj3C,IAAD,CAAtC,CAA7B;AAEA,MAAIqqB,KAAK,GAAG,EAAZ;;AACA,OAAKxN,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGkzC,qBAAqB,CAAC/rD,MAAtC,EAA8C6Y,CAAC,EAA/C,EAAmD;AACjD,QAAImzC,MAAM,GAAGD,qBAAqB,CAAClzC,CAAD,CAAlC;;AAEA,QACEmzC,MAAM,CAACjB,QAAP,IACA,CAACiB,MAAM,CAACjB,QAAP,CAAgBhO,OAAhB,EAAyBiP,MAAM,CAACzyD,KAAhC,EAAuCoyD,YAAvC,CAFH,EAGE;AACA,aAAO,IAAIxnD,IAAJ,CAASyE,GAAT,CAAP;AACD;;AAED,QAAImF,MAAM,GAAGi+C,MAAM,CAACxsD,GAAP,CAAWu9C,OAAX,EAAoB12B,KAApB,EAA2B2lC,MAAM,CAACzyD,KAAlC,EAAyCoyD,YAAzC,CAAb,CAViD,CAWjD;;AACA,QAAI59C,MAAM,CAAC,CAAD,CAAV,EAAe;AACbgvC,aAAO,GAAGhvC,MAAM,CAAC,CAAD,CAAhB;AACAlR,0EAAM,CAACwpB,KAAD,EAAQtY,MAAM,CAAC,CAAD,CAAd,CAAN,CAFa,CAGb;AACD,KAJD,MAIO;AACLgvC,aAAO,GAAGhvC,MAAV;AACD;AACF;;AAED,SAAOgvC,OAAP;AACD;;AAED,SAAS8O,oBAAT,CAA8B7vD,IAA9B,EAAoCqqB,KAApC,EAA2C;AACzC,MAAIA,KAAK,CAAC+kC,cAAV,EAA0B;AACxB,WAAOpvD,IAAP;AACD;;AAED,MAAIkwD,aAAa,GAAG,IAAI/nD,IAAJ,CAAS,CAAT,CAApB;AACA+nD,eAAa,CAACnW,WAAd,CACE/5C,IAAI,CAACqK,cAAL,EADF,EAEErK,IAAI,CAACsK,WAAL,EAFF,EAGEtK,IAAI,CAACyK,UAAL,EAHF;AAKAylD,eAAa,CAAClW,QAAd,CACEh6C,IAAI,CAAC0K,WAAL,EADF,EAEE1K,IAAI,CAAC2K,aAAL,EAFF,EAGE3K,IAAI,CAAC4K,aAAL,EAHF,EAIE5K,IAAI,CAAC6K,kBAAL,EAJF;AAMA,SAAOqlD,aAAP;AACD;;AAED,SAAS7O,kBAAT,CAA4Br8C,KAA5B,EAAmC;AACjC,SAAOA,KAAK,CAACmY,KAAN,CAAYsjC,mBAAZ,EAAiC,CAAjC,EAAoCnjC,OAApC,CAA4CojC,iBAA5C,EAA+D,GAA/D,CAAP;AACD,C;;;;;;;;;;;;AC1gBD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA,IAAI34C,oBAAoB,GAAG,OAA3B;AACA,IAAID,sBAAsB,GAAG,KAA7B;AACA,IAAIqoD,yBAAyB,GAAG,CAAhC;AAEA,IAAIC,QAAQ,GAAG;AACbC,mBAAiB,EAAE,MADN;AAEbC,mBAAiB,EAAE,OAFN;AAGbvzD,UAAQ,EAAE;AAHG,CAAf;AAMA,IAAIwzD,SAAS,GAAG,+DAAhB;AACA,IAAIC,SAAS,GAAG,2EAAhB;AACA,IAAIC,aAAa,GAAG,+BAApB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,QAAT,CAAkB7kB,QAAlB,EAA4BkM,YAA5B,EAA0C;AACvD,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AAEA,MAAI4Y,gBAAgB,GAClB7xD,OAAO,CAAC6xD,gBAAR,IAA4B,IAA5B,GACIR,yBADJ,GAEIxjD,uEAAS,CAAC7N,OAAO,CAAC6xD,gBAAT,CAHf;;AAIA,MACEA,gBAAgB,KAAK,CAArB,IACAA,gBAAgB,KAAK,CADrB,IAEAA,gBAAgB,KAAK,CAHvB,EAIE;AACA,UAAM,IAAIxY,UAAJ,CAAe,oCAAf,CAAN;AACD;;AAED,MACE,EACE,OAAOtM,QAAP,KAAoB,QAApB,IACAjrC,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+BgxB,QAA/B,MAA6C,iBAF/C,CADF,EAKE;AACA,WAAO,IAAI1jC,IAAJ,CAASyE,GAAT,CAAP;AACD;;AAED,MAAIgkD,WAAW,GAAGC,eAAe,CAAChlB,QAAD,CAAjC;AACA,MAAIilB,eAAe,GAAGC,SAAS,CAACH,WAAW,CAAC5wD,IAAb,EAAmB2wD,gBAAnB,CAA/B;AACA,MAAI3wD,IAAI,GAAGgxD,SAAS,CAACF,eAAe,CAACG,cAAjB,EAAiCH,eAAe,CAACxoD,IAAjD,CAApB;;AAEA,MAAImD,KAAK,CAACzL,IAAD,CAAL,IAAe,CAACA,IAApB,EAA0B;AACxB,WAAO,IAAImI,IAAJ,CAASyE,GAAT,CAAP;AACD;;AAED,MAAIQ,SAAS,GAAGpN,IAAI,CAAC0N,OAAL,EAAhB;AACA,MAAI0I,IAAI,GAAG,CAAX;AACA,MAAI4U,MAAJ;;AAEA,MAAI4lC,WAAW,CAACx6C,IAAhB,EAAsB;AACpBA,QAAI,GAAG86C,SAAS,CAACN,WAAW,CAACx6C,IAAb,CAAhB;;AACA,QAAI3K,KAAK,CAAC2K,IAAD,CAAT,EAAiB;AACf,aAAO,IAAIjO,IAAJ,CAASyE,GAAT,CAAP;AACD;AACF;;AAED,MAAIgkD,WAAW,CAAC7zD,QAAhB,EAA0B;AACxBiuB,UAAM,GAAGmmC,aAAa,CAACP,WAAW,CAAC7zD,QAAb,CAAtB;;AACA,QAAI0O,KAAK,CAACuf,MAAD,CAAT,EAAmB;AACjB,aAAO,IAAI7iB,IAAJ,CAASyE,GAAT,CAAP;AACD;AACF,GALD,MAKO;AACL,QAAIwkD,QAAQ,GAAGhkD,SAAS,GAAGgJ,IAA3B;AACA,QAAIi7C,YAAY,GAAG,IAAIlpD,IAAJ,CAASipD,QAAT,CAAnB;AAEApmC,UAAM,GAAGisB,6FAA+B,CAACoa,YAAD,CAAxC,CAJK,CAML;;AACA,QAAIC,mBAAmB,GAAG,IAAInpD,IAAJ,CAASipD,QAAT,CAA1B;AACAE,uBAAmB,CAAC9X,OAApB,CAA4B6X,YAAY,CAACp2C,OAAb,KAAyB,CAArD;AACA,QAAIs2C,UAAU,GACZta,6FAA+B,CAACqa,mBAAD,CAA/B,GAAuDtmC,MADzD;;AAEA,QAAIumC,UAAU,GAAG,CAAjB,EAAoB;AAClBvmC,YAAM,IAAIumC,UAAV;AACD;AACF;;AAED,SAAO,IAAIppD,IAAJ,CAASiF,SAAS,GAAGgJ,IAAZ,GAAmB4U,MAA5B,CAAP;AACD;;AAED,SAAS6lC,eAAT,CAAyBpB,UAAzB,EAAqC;AACnC,MAAImB,WAAW,GAAG,EAAlB;AACA,MAAIzkD,KAAK,GAAGsjD,UAAU,CAACpxC,KAAX,CAAiB+xC,QAAQ,CAACC,iBAA1B,CAAZ;AACA,MAAImB,UAAJ;;AAEA,MAAI,IAAIhuC,IAAJ,CAASrX,KAAK,CAAC,CAAD,CAAd,CAAJ,EAAwB;AACtBykD,eAAW,CAAC5wD,IAAZ,GAAmB,IAAnB;AACAwxD,cAAU,GAAGrlD,KAAK,CAAC,CAAD,CAAlB;AACD,GAHD,MAGO;AACLykD,eAAW,CAAC5wD,IAAZ,GAAmBmM,KAAK,CAAC,CAAD,CAAxB;AACAqlD,cAAU,GAAGrlD,KAAK,CAAC,CAAD,CAAlB;;AACA,QAAIikD,QAAQ,CAACE,iBAAT,CAA2B9sC,IAA3B,CAAgCotC,WAAW,CAAC5wD,IAA5C,CAAJ,EAAuD;AACrD4wD,iBAAW,CAAC5wD,IAAZ,GAAmByvD,UAAU,CAACpxC,KAAX,CAAiB+xC,QAAQ,CAACE,iBAA1B,EAA6C,CAA7C,CAAnB;AACAkB,gBAAU,GAAG/B,UAAU,CAACnzC,MAAX,CAAkBs0C,WAAW,CAAC5wD,IAAZ,CAAiBgE,MAAnC,EAA2CyrD,UAAU,CAACzrD,MAAtD,CAAb;AACD;AACF;;AAED,MAAIwtD,UAAJ,EAAgB;AACd,QAAIjf,KAAK,GAAG6d,QAAQ,CAACrzD,QAAT,CAAkBmzC,IAAlB,CAAuBshB,UAAvB,CAAZ;;AACA,QAAIjf,KAAJ,EAAW;AACTqe,iBAAW,CAACx6C,IAAZ,GAAmBo7C,UAAU,CAACl0C,OAAX,CAAmBi1B,KAAK,CAAC,CAAD,CAAxB,EAA6B,EAA7B,CAAnB;AACAqe,iBAAW,CAAC7zD,QAAZ,GAAuBw1C,KAAK,CAAC,CAAD,CAA5B;AACD,KAHD,MAGO;AACLqe,iBAAW,CAACx6C,IAAZ,GAAmBo7C,UAAnB;AACD;AACF;;AAED,SAAOZ,WAAP;AACD;;AAED,SAASG,SAAT,CAAmBtB,UAAnB,EAA+BkB,gBAA/B,EAAiD;AAC/C,MAAIlzC,KAAK,GAAG,IAAIC,MAAJ,CACV,0BACG,IAAIizC,gBADP,IAEE,qBAFF,IAGG,IAAIA,gBAHP,IAIE,MALQ,CAAZ;AAQA,MAAIc,QAAQ,GAAGhC,UAAU,CAACtyC,KAAX,CAAiBM,KAAjB,CAAf,CAT+C,CAU/C;;AACA,MAAI,CAACg0C,QAAL,EAAe,OAAO;AAAEnpD,QAAI,EAAE;AAAR,GAAP;AAEf,MAAIA,IAAI,GAAGmpD,QAAQ,CAAC,CAAD,CAAR,IAAerzC,QAAQ,CAACqzC,QAAQ,CAAC,CAAD,CAAT,CAAlC;AACA,MAAIC,OAAO,GAAGD,QAAQ,CAAC,CAAD,CAAR,IAAerzC,QAAQ,CAACqzC,QAAQ,CAAC,CAAD,CAAT,CAArC;AAEA,SAAO;AACLnpD,QAAI,EAAEopD,OAAO,IAAI,IAAX,GAAkBppD,IAAlB,GAAyBopD,OAAO,GAAG,GADpC;AAELT,kBAAc,EAAExB,UAAU,CAACzpD,KAAX,CAAiB,CAACyrD,QAAQ,CAAC,CAAD,CAAR,IAAeA,QAAQ,CAAC,CAAD,CAAxB,EAA6BztD,MAA9C;AAFX,GAAP;AAID;;AAED,SAASgtD,SAAT,CAAmBvB,UAAnB,EAA+BnnD,IAA/B,EAAqC;AACnC;AACA,MAAIA,IAAI,KAAK,IAAb,EAAmB,OAAO,IAAP;AAEnB,MAAImpD,QAAQ,GAAGhC,UAAU,CAACtyC,KAAX,CAAiBozC,SAAjB,CAAf,CAJmC,CAKnC;;AACA,MAAI,CAACkB,QAAL,EAAe,OAAO,IAAP;AAEf,MAAIE,UAAU,GAAG,CAAC,CAACF,QAAQ,CAAC,CAAD,CAA3B;AACA,MAAIrd,SAAS,GAAGwd,aAAa,CAACH,QAAQ,CAAC,CAAD,CAAT,CAA7B;AACA,MAAIlpD,KAAK,GAAGqpD,aAAa,CAACH,QAAQ,CAAC,CAAD,CAAT,CAAb,GAA6B,CAAzC;AACA,MAAIpyD,GAAG,GAAGuyD,aAAa,CAACH,QAAQ,CAAC,CAAD,CAAT,CAAvB;AACA,MAAI5d,IAAI,GAAG+d,aAAa,CAACH,QAAQ,CAAC,CAAD,CAAT,CAAb,GAA6B,CAAxC;AACA,MAAIld,SAAS,GAAGqd,aAAa,CAACH,QAAQ,CAAC,CAAD,CAAT,CAAb,GAA6B,CAA7C;;AAEA,MAAIE,UAAJ,EAAgB;AACd,QAAI,CAACE,gBAAgB,CAACvpD,IAAD,EAAOurC,IAAP,EAAaU,SAAb,CAArB,EAA8C;AAC5C,aAAO,IAAIpsC,IAAJ,CAASyE,GAAT,CAAP;AACD;;AACD,WAAOklD,gBAAgB,CAACxpD,IAAD,EAAOurC,IAAP,EAAaU,SAAb,CAAvB;AACD,GALD,MAKO;AACL,QAAIv0C,IAAI,GAAG,IAAImI,IAAJ,CAAS,CAAT,CAAX;;AACA,QACE,CAACsM,YAAY,CAACnM,IAAD,EAAOC,KAAP,EAAclJ,GAAd,CAAb,IACA,CAAC0yD,qBAAqB,CAACzpD,IAAD,EAAO8rC,SAAP,CAFxB,EAGE;AACA,aAAO,IAAIjsC,IAAJ,CAASyE,GAAT,CAAP;AACD;;AACD5M,QAAI,CAAC8K,cAAL,CAAoBxC,IAApB,EAA0BC,KAA1B,EAAiCkE,IAAI,CAACge,GAAL,CAAS2pB,SAAT,EAAoB/0C,GAApB,CAAjC;AACA,WAAOW,IAAP;AACD;AACF;;AAED,SAAS4xD,aAAT,CAAuBr0D,KAAvB,EAA8B;AAC5B,SAAOA,KAAK,GAAG6gB,QAAQ,CAAC7gB,KAAD,CAAX,GAAqB,CAAjC;AACD;;AAED,SAAS2zD,SAAT,CAAmBM,UAAnB,EAA+B;AAC7B,MAAIC,QAAQ,GAAGD,UAAU,CAACr0C,KAAX,CAAiBqzC,SAAjB,CAAf;AACA,MAAI,CAACiB,QAAL,EAAe,OAAO,IAAP,CAFc,CAEF;;AAE3B,MAAI9c,KAAK,GAAGqd,aAAa,CAACP,QAAQ,CAAC,CAAD,CAAT,CAAzB;AACA,MAAIpb,OAAO,GAAG2b,aAAa,CAACP,QAAQ,CAAC,CAAD,CAAT,CAA3B;AACA,MAAIvP,OAAO,GAAG8P,aAAa,CAACP,QAAQ,CAAC,CAAD,CAAT,CAA3B;;AAEA,MAAI,CAACQ,YAAY,CAACtd,KAAD,EAAQ0B,OAAR,EAAiB6L,OAAjB,CAAjB,EAA4C;AAC1C,WAAOt1C,GAAP;AACD;;AAED,SACG+nC,KAAK,GAAG,EAAT,GAAe5sC,oBAAf,GACAsuC,OAAO,GAAGvuC,sBADV,GAEAo6C,OAAO,GAAG,IAHZ;AAKD;;AAED,SAAS8P,aAAT,CAAuBz0D,KAAvB,EAA8B;AAC5B,SAAQA,KAAK,IAAIqgB,UAAU,CAACrgB,KAAK,CAAC+f,OAAN,CAAc,GAAd,EAAmB,GAAnB,CAAD,CAApB,IAAkD,CAAzD;AACD;;AAED,SAAS6zC,aAAT,CAAuBe,cAAvB,EAAuC;AACrC,MAAIA,cAAc,KAAK,GAAvB,EAA4B,OAAO,CAAP;AAE5B,MAAIT,QAAQ,GAAGS,cAAc,CAAC/0C,KAAf,CAAqBszC,aAArB,CAAf;AACA,MAAI,CAACgB,QAAL,EAAe,OAAO,CAAP;AAEf,MAAIlgB,IAAI,GAAGkgB,QAAQ,CAAC,CAAD,CAAR,KAAgB,GAAhB,GAAsB,CAAC,CAAvB,GAA2B,CAAtC;AACA,MAAI9c,KAAK,GAAGv2B,QAAQ,CAACqzC,QAAQ,CAAC,CAAD,CAAT,CAApB;AACA,MAAIpb,OAAO,GAAIob,QAAQ,CAAC,CAAD,CAAR,IAAerzC,QAAQ,CAACqzC,QAAQ,CAAC,CAAD,CAAT,CAAxB,IAA0C,CAAxD;;AAEA,MAAI,CAACU,gBAAgB,CAACxd,KAAD,EAAQ0B,OAAR,CAArB,EAAuC;AACrC,WAAOzpC,GAAP;AACD;;AAED,SACE2kC,IAAI,IAAIoD,KAAK,GAAG5sC,oBAAR,GAA+BsuC,OAAO,GAAGvuC,sBAA7C,CADN;AAGD;;AAED,SAASgqD,gBAAT,CAA0B1e,WAA1B,EAAuCS,IAAvC,EAA6Cx0C,GAA7C,EAAkD;AAChD,MAAIW,IAAI,GAAG,IAAImI,IAAJ,CAAS,CAAT,CAAX;AACAnI,MAAI,CAAC8K,cAAL,CAAoBsoC,WAApB,EAAiC,CAAjC,EAAoC,CAApC;AACA,MAAIgf,kBAAkB,GAAGpyD,IAAI,CAACwK,SAAL,MAAoB,CAA7C;AACA,MAAIgC,IAAI,GAAG,CAACqnC,IAAI,IAAI,CAAT,IAAc,CAAd,IAAmBx0C,GAAG,IAAI,CAA1B,IAA+B,CAA/B,GAAmC+yD,kBAA9C;AACApyD,MAAI,CAACgL,UAAL,CAAgBhL,IAAI,CAACyK,UAAL,KAAoB+B,IAApC;AACA,SAAOxM,IAAP;AACD,C,CAED;AAEA;;;AACA,IAAIqyD,YAAY,GAAG,CAAC,EAAD,EAAK,IAAL,EAAW,EAAX,EAAe,EAAf,EAAmB,EAAnB,EAAuB,EAAvB,EAA2B,EAA3B,EAA+B,EAA/B,EAAmC,EAAnC,EAAuC,EAAvC,EAA2C,EAA3C,EAA+C,EAA/C,CAAnB;;AAEA,SAAS1D,eAAT,CAAyBrmD,IAAzB,EAA+B;AAC7B,SAAOA,IAAI,GAAG,GAAP,KAAe,CAAf,IAAqBA,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkBA,IAAI,GAAG,GAArD;AACD;;AAED,SAASmM,YAAT,CAAsBnM,IAAtB,EAA4BC,KAA5B,EAAmCvI,IAAnC,EAAyC;AACvC,SAAO,EACLuI,KAAK,GAAG,CAAR,IACAA,KAAK,GAAG,EADR,IAEAvI,IAAI,GAAG,CAFP,IAGAA,IAAI,IAAIqyD,YAAY,CAAC9pD,KAAD,CAAZ,KAAwBomD,eAAe,CAACrmD,IAAD,CAAf,GAAwB,EAAxB,GAA6B,EAArD,CAAJ,CAJC,CAAP;AAMD;;AAED,SAASypD,qBAAT,CAA+BzpD,IAA/B,EAAqC8rC,SAArC,EAAgD;AAC9C,SAAO,EAAEA,SAAS,GAAG,CAAZ,IAAiBA,SAAS,IAAIua,eAAe,CAACrmD,IAAD,CAAf,GAAwB,GAAxB,GAA8B,GAAlC,CAA5B,CAAP;AACD;;AAED,SAASupD,gBAAT,CAA0BS,KAA1B,EAAiCze,IAAjC,EAAuCx0C,GAAvC,EAA4C;AAC1C,SAAO,EAAEw0C,IAAI,GAAG,CAAP,IAAYA,IAAI,GAAG,EAAnB,IAAyBx0C,GAAG,GAAG,CAA/B,IAAoCA,GAAG,GAAG,CAA5C,CAAP;AACD;;AAED,SAAS4yD,YAAT,CAAsBtd,KAAtB,EAA6B0B,OAA7B,EAAsC6L,OAAtC,EAA+C;AAC7C,SAAO,EACLA,OAAO,GAAG,CAAV,IACAA,OAAO,IAAI,EADX,IAEA7L,OAAO,GAAG,CAFV,IAGAA,OAAO,IAAI,EAHX,IAIA1B,KAAK,GAAG,CAJR,IAKAA,KAAK,IAAI,EANJ,CAAP;AAQD;;AAED,SAASwd,gBAAT,CAA0BI,MAA1B,EAAkClc,OAAlC,EAA2C;AACzC,SAAO,EAAEA,OAAO,GAAG,CAAV,IAAeA,OAAO,GAAG,EAA3B,CAAP;AACD,C;;;;;;;;;;;;ACtUD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASmc,qBAAT,CAA+BxlD,SAA/B,EAA0ClO,OAA1C,EAAmD;AAChE,MAAIoO,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CAAc,qDAAd,CAAN;AACD;;AAED,MAAIslD,SAAS,GACX3zD,OAAO,IAAI,eAAeA,OAA1B,GAAoC6N,uEAAS,CAAC7N,OAAO,CAAC2zD,SAAT,CAA7C,GAAmE,CADrE;;AAGA,MAAIA,SAAS,GAAG,CAAZ,IAAiBA,SAAS,GAAG,EAAjC,EAAqC;AACnC,UAAM,IAAIta,UAAJ,CAAe,8CAAf,CAAN;AACD;;AAED,MAAIn4C,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIk1C,OAAO,GAAGliD,IAAI,CAACob,UAAL,EAAd,CAbgE,CAahC;;AAChC,MAAIi7B,OAAO,GAAGr2C,IAAI,CAACmb,UAAL,KAAoB+mC,OAAO,GAAG,EAA5C;AACA,MAAIwQ,cAAc,GAAGjmD,IAAI,CAACC,KAAL,CAAW2pC,OAAO,GAAGoc,SAArB,IAAkCA,SAAvD;AACA,MAAIE,gBAAgB,GAAGtc,OAAO,GAAGoc,SAAjC;AACA,MAAIG,YAAY,GAAGnmD,IAAI,CAACwQ,KAAL,CAAW01C,gBAAgB,GAAGF,SAA9B,IAA2CA,SAA9D;AAEA,SAAO,IAAItqD,IAAJ,CACLnI,IAAI,CAAC+a,WAAL,EADK,EAEL/a,IAAI,CAACgb,QAAL,EAFK,EAGLhb,IAAI,CAACib,OAAL,EAHK,EAILjb,IAAI,CAACkb,QAAL,EAJK,EAKLw3C,cAAc,GAAGE,YALZ,CAAP;AAOD,C;;;;;;;;;;;;ACrDD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASpZ,OAAT,CAAiBxsC,SAAjB,EAA4B6lD,eAA5B,EAA6C;AAC1D,MAAI3lD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIk2C,UAAU,GAAGv2C,uEAAS,CAACkmD,eAAD,CAA1B;AACA7yD,MAAI,CAACw5C,OAAL,CAAa0J,UAAb;AACA,SAAOljD,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS8yD,MAAT,CAAgB9lD,SAAhB,EAA2B0rC,QAA3B,EAAqCX,YAArC,EAAmD;AAChE,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAArB;AACA,MAAI4I,kBAAkB,GACpB5I,MAAM,IAAIA,MAAM,CAACjxC,OAAjB,IAA4BixC,MAAM,CAACjxC,OAAP,CAAe21C,YAD7C;AAEA,MAAImE,mBAAmB,GACrBD,kBAAkB,IAAI,IAAtB,GAA6B,CAA7B,GAAiChsC,uEAAS,CAACgsC,kBAAD,CAD5C;AAEA,MAAIlE,YAAY,GACd31C,OAAO,CAAC21C,YAAR,IAAwB,IAAxB,GACImE,mBADJ,GAEIjsC,uEAAS,CAAC7N,OAAO,CAAC21C,YAAT,CAHf,CAbgE,CAkBhE;;AACA,MAAI,EAAEA,YAAY,IAAI,CAAhB,IAAqBA,YAAY,IAAI,CAAvC,CAAJ,EAA+C;AAC7C,UAAM,IAAI0D,UAAJ,CAAe,kDAAf,CAAN;AACD;;AAED,MAAIn4C,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,EAAYlO,OAAZ,CAAjB;AACA,MAAIO,GAAG,GAAGsN,uEAAS,CAAC+rC,QAAD,CAAnB;AACA,MAAI3gC,UAAU,GAAG/X,IAAI,CAACsgD,MAAL,EAAjB;AAEA,MAAIzH,SAAS,GAAGx5C,GAAG,GAAG,CAAtB;AACA,MAAIy5C,QAAQ,GAAG,CAACD,SAAS,GAAG,CAAb,IAAkB,CAAjC;AAEA,MAAIrsC,IAAI,GAAG,CAACssC,QAAQ,GAAGrE,YAAX,GAA0B,CAA1B,GAA8B,CAA/B,IAAoCp1C,GAApC,GAA0C0Y,UAArD;AACA,SAAOwhC,iEAAO,CAACv5C,IAAD,EAAOwM,IAAP,EAAa1N,OAAb,CAAd;AACD,C;;;;;;;;;;;;ACnED;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASi0D,YAAT,CAAsB/lD,SAAtB,EAAiCgmD,cAAjC,EAAiD;AAC9D,MAAI9lD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIonC,SAAS,GAAGznC,uEAAS,CAACqmD,cAAD,CAAzB;AACAhzD,MAAI,CAACk6C,QAAL,CAAc,CAAd;AACAl6C,MAAI,CAACw5C,OAAL,CAAapF,SAAb;AACA,SAAOp0C,IAAP;AACD,C;;;;;;;;;;;;ACrCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASg6C,QAAT,CAAkBhtC,SAAlB,EAA6BimD,UAA7B,EAAyC;AACtD,MAAI/lD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI2nC,KAAK,GAAGhoC,uEAAS,CAACsmD,UAAD,CAArB;AACAjzD,MAAI,CAACg6C,QAAL,CAAcrF,KAAd;AACA,SAAO30C,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASkzD,SAAT,CAAmBlmD,SAAnB,EAA8B0rC,QAA9B,EAAwC;AACrD,MAAIxrC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI3N,GAAG,GAAGsN,uEAAS,CAAC+rC,QAAD,CAAnB;AACA,MAAI3gC,UAAU,GAAGwrC,mEAAS,CAACvjD,IAAD,CAA1B;AACA,MAAIwM,IAAI,GAAGnN,GAAG,GAAG0Y,UAAjB;AACA,SAAOwhC,iEAAO,CAACv5C,IAAD,EAAOwM,IAAP,CAAd;AACD,C;;;;;;;;;;;;ACzCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS2mD,UAAT,CAAoBnmD,SAApB,EAA+BisC,YAA/B,EAA6C;AAC1D,MAAI/rC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIgnC,OAAO,GAAGrnC,uEAAS,CAACssC,YAAD,CAAvB;AACA,MAAIzsC,IAAI,GAAGg3C,oEAAU,CAACxjD,IAAD,CAAV,GAAmBg0C,OAA9B;AACAh0C,MAAI,CAACw5C,OAAL,CAAax5C,IAAI,CAACib,OAAL,KAAiBzO,IAAI,GAAG,CAArC;AACA,SAAOxM,IAAP;AACD,C;;;;;;;;;;;;ACxCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS25C,cAAT,CAAwB3sC,SAAxB,EAAmComD,gBAAnC,EAAqD;AAClE,MAAIlmD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIomC,WAAW,GAAGzmC,uEAAS,CAACymD,gBAAD,CAA3B;AACA,MAAI5mD,IAAI,GAAGwvC,kFAAwB,CAACh8C,IAAD,EAAOyjD,4EAAkB,CAACzjD,IAAD,CAAzB,CAAnC;AACA,MAAIo5C,eAAe,GAAG,IAAIjxC,IAAJ,CAAS,CAAT,CAAtB;AACAixC,iBAAe,CAACW,WAAhB,CAA4B3G,WAA5B,EAAyC,CAAzC,EAA4C,CAA5C;AACAgG,iBAAe,CAACY,QAAhB,CAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC;AACAh6C,MAAI,GAAGyjD,4EAAkB,CAACrK,eAAD,CAAzB;AACAp5C,MAAI,CAACw5C,OAAL,CAAax5C,IAAI,CAACib,OAAL,KAAiBzO,IAA9B;AACA,SAAOxM,IAAP;AACD,C;;;;;;;;;;;;ACnDD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASkgD,eAAT,CAAyBlzC,SAAzB,EAAoCqmD,iBAApC,EAAuD;AACpE,MAAInmD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIqoC,YAAY,GAAG1oC,uEAAS,CAAC0mD,iBAAD,CAA5B;AACArzD,MAAI,CAACkgD,eAAL,CAAqB7K,YAArB;AACA,SAAOr1C,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS8/C,UAAT,CAAoB9yC,SAApB,EAA+BsmD,YAA/B,EAA6C;AAC1D,MAAIpmD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIqpC,OAAO,GAAG1pC,uEAAS,CAAC2mD,YAAD,CAAvB;AACAtzD,MAAI,CAAC8/C,UAAL,CAAgBzJ,OAAhB;AACA,SAAOr2C,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASk6C,QAAT,CAAkBltC,SAAlB,EAA6BumD,UAA7B,EAAyC;AACtD,MAAIrmD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIzE,KAAK,GAAGoE,uEAAS,CAAC4mD,UAAD,CAArB;AACA,MAAIjrD,IAAI,GAAGtI,IAAI,CAAC+a,WAAL,EAAX;AACA,MAAI1b,GAAG,GAAGW,IAAI,CAACib,OAAL,EAAV;AAEA,MAAI3N,oBAAoB,GAAG,IAAInF,IAAJ,CAAS,CAAT,CAA3B;AACAmF,sBAAoB,CAACysC,WAArB,CAAiCzxC,IAAjC,EAAuCC,KAAvC,EAA8C,EAA9C;AACA+E,sBAAoB,CAAC0sC,QAArB,CAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,CAAvC;AACA,MAAIzsC,WAAW,GAAG0sC,wEAAc,CAAC3sC,oBAAD,CAAhC,CAfsD,CAgBtD;AACA;;AACAtN,MAAI,CAACk6C,QAAL,CAAc3xC,KAAd,EAAqBkE,IAAI,CAACe,GAAL,CAASnO,GAAT,EAAckO,WAAd,CAArB;AACA,SAAOvN,IAAP;AACD,C;;;;;;;;;;;;AC9CD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASwzD,UAAT,CAAoBxmD,SAApB,EAA+BymD,YAA/B,EAA6C;AAC1D,MAAIvmD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIwmC,OAAO,GAAG7mC,uEAAS,CAAC8mD,YAAD,CAAvB;AACA,MAAIC,UAAU,GAAGjnD,IAAI,CAACC,KAAL,CAAW1M,IAAI,CAACgb,QAAL,KAAkB,CAA7B,IAAkC,CAAnD;AACA,MAAIxO,IAAI,GAAGgnC,OAAO,GAAGkgB,UAArB;AACA,SAAOxZ,kEAAQ,CAACl6C,IAAD,EAAOA,IAAI,CAACgb,QAAL,KAAkBxO,IAAI,GAAG,CAAhC,CAAf;AACD,C;;;;;;;;;;;;ACtCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS2qC,UAAT,CAAoBnqC,SAApB,EAA+B2mD,YAA/B,EAA6C;AAC1D,MAAIzmD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIk1C,OAAO,GAAGv1C,uEAAS,CAACgnD,YAAD,CAAvB;AACA3zD,MAAI,CAACm3C,UAAL,CAAgB+K,OAAhB;AACA,SAAOliD,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS4zD,OAAT,CAAiB5mD,SAAjB,EAA4BmsC,SAA5B,EAAuCpB,YAAvC,EAAqD;AAClE,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI6mC,IAAI,GAAGlnC,uEAAS,CAACwsC,SAAD,CAApB;AACA,MAAI3sC,IAAI,GAAG23C,iEAAO,CAACnkD,IAAD,EAAO+3C,YAAP,CAAP,GAA8BlE,IAAzC;AACA7zC,MAAI,CAACw5C,OAAL,CAAax5C,IAAI,CAACib,OAAL,KAAiBzO,IAAI,GAAG,CAArC;AACA,SAAOxM,IAAP;AACD,C;;;;;;;;;;;;AC3DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS6zD,WAAT,CAAqB7mD,SAArB,EAAgC8mD,aAAhC,EAA+C/b,YAA/C,EAA6D;AAC1E,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAArB;AACA,MAAIiI,2BAA2B,GAC7BjI,MAAM,IAAIA,MAAM,CAACjxC,OAAjB,IAA4BixC,MAAM,CAACjxC,OAAP,CAAem5C,qBAD7C;AAEA,MAAIC,4BAA4B,GAC9BF,2BAA2B,IAAI,IAA/B,GACI,CADJ,GAEIrrC,uEAAS,CAACqrC,2BAAD,CAHf;AAIA,MAAIC,qBAAqB,GACvBn5C,OAAO,CAACm5C,qBAAR,IAAiC,IAAjC,GACIC,4BADJ,GAEIvrC,uEAAS,CAAC7N,OAAO,CAACm5C,qBAAT,CAHf;AAKA,MAAIj4C,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAIimC,QAAQ,GAAGtmC,uEAAS,CAACmnD,aAAD,CAAxB;AACA,MAAItnD,IAAI,GAAGwvC,kFAAwB,CAACh8C,IAAD,EAAOokD,yEAAe,CAACpkD,IAAD,EAAO+3C,YAAP,CAAtB,CAAnC;AACA,MAAIsB,SAAS,GAAG,IAAIlxC,IAAJ,CAAS,CAAT,CAAhB;AACAkxC,WAAS,CAACU,WAAV,CAAsB9G,QAAtB,EAAgC,CAAhC,EAAmCgF,qBAAnC;AACAoB,WAAS,CAACW,QAAV,CAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B;AACAh6C,MAAI,GAAGokD,yEAAe,CAAC/K,SAAD,EAAYtB,YAAZ,CAAtB;AACA/3C,MAAI,CAACw5C,OAAL,CAAax5C,IAAI,CAACib,OAAL,KAAiBzO,IAA9B;AACA,SAAOxM,IAAP;AACD,C;;;;;;;;;;;;AC9ED;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS+zD,OAAT,CAAiB/mD,SAAjB,EAA4BgnD,SAA5B,EAAuC;AACpD,MAAI9mD,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI1E,IAAI,GAAGqE,uEAAS,CAACqnD,SAAD,CAApB,CARoD,CAUpD;;AACA,MAAIvoD,KAAK,CAACzL,IAAD,CAAT,EAAiB;AACf,WAAO,IAAImI,IAAJ,CAASyE,GAAT,CAAP;AACD;;AAED5M,MAAI,CAAC+5C,WAAL,CAAiBzxC,IAAjB;AACA,SAAOtI,IAAP;AACD,C;;;;;;;;;;;;AC1CD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASk8C,UAAT,CAAoBlvC,SAApB,EAA+B;AAC5C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACAhN,MAAI,CAACg6C,QAAL,CAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB;AACA,SAAOh6C,IAAP;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASi0D,aAAT,CAAuBjnD,SAAvB,EAAkC;AAC/C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI1E,IAAI,GAAGtI,IAAI,CAAC+a,WAAL,EAAX;AACA,MAAI6kC,MAAM,GAAGnzC,IAAI,CAACC,KAAL,CAAWpE,IAAI,GAAG,EAAlB,IAAwB,EAArC;AACAtI,MAAI,CAAC+5C,WAAL,CAAiB6F,MAAjB,EAAyB,CAAzB,EAA4B,CAA5B;AACA5/C,MAAI,CAACg6C,QAAL,CAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB;AACA,SAAOh6C,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASulD,WAAT,CAAqBv4C,SAArB,EAAgC;AAC7C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACAhN,MAAI,CAAC8/C,UAAL,CAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB;AACA,SAAO9/C,IAAP;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASy8C,cAAT,CAAwBzvC,SAAxB,EAAmC;AAChD,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,SAAOm5C,qEAAW,CAACnwC,SAAD,EAAY;AAAEynC,gBAAY,EAAE;AAAhB,GAAZ,CAAlB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASgP,kBAAT,CAA4Bz2C,SAA5B,EAAuC;AACpD,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIsE,IAAI,GAAGsxC,wEAAc,CAAC5sC,SAAD,CAAzB;AACA,MAAIosC,eAAe,GAAG,IAAIjxC,IAAJ,CAAS,CAAT,CAAtB;AACAixC,iBAAe,CAACW,WAAhB,CAA4BzxC,IAA5B,EAAkC,CAAlC,EAAqC,CAArC;AACA8wC,iBAAe,CAACY,QAAhB,CAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC;AACA,MAAIh6C,IAAI,GAAGy8C,wEAAc,CAACrD,eAAD,CAAzB;AACA,SAAOp5C,IAAP;AACD,C;;;;;;;;;;;;ACzCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASgmD,aAAT,CAAuBh5C,SAAvB,EAAkC;AAC/C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACAhN,MAAI,CAACm3C,UAAL,CAAgB,CAAhB,EAAmB,CAAnB;AACA,SAAOn3C,IAAP;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASq/C,YAAT,CAAsBryC,SAAtB,EAAiC;AAC9C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACAhN,MAAI,CAACw5C,OAAL,CAAa,CAAb;AACAx5C,MAAI,CAACg6C,QAAL,CAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB;AACA,SAAOh6C,IAAP;AACD,C;;;;;;;;;;;;ACnCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASqmD,cAAT,CAAwBr5C,SAAxB,EAAmC;AAChD,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI4M,YAAY,GAAG5Z,IAAI,CAACgb,QAAL,EAAnB;AACA,MAAIzS,KAAK,GAAGqR,YAAY,GAAIA,YAAY,GAAG,CAA3C;AACA5Z,MAAI,CAACk6C,QAAL,CAAc3xC,KAAd,EAAqB,CAArB;AACAvI,MAAI,CAACg6C,QAAL,CAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB;AACA,SAAOh6C,IAAP;AACD,C;;;;;;;;;;;;ACrCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASymD,aAAT,CAAuBz5C,SAAvB,EAAkC;AAC/C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIhE,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACAhN,MAAI,CAACkgD,eAAL,CAAqB,CAArB;AACA,SAAOlgD,IAAP;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASm9C,WAAT,CAAqBnwC,SAArB,EAAgC+qC,YAAhC,EAA8C;AAC3D,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAArB;AACA,MAAI4I,kBAAkB,GACpB5I,MAAM,IAAIA,MAAM,CAACjxC,OAAjB,IAA4BixC,MAAM,CAACjxC,OAAP,CAAe21C,YAD7C;AAEA,MAAImE,mBAAmB,GACrBD,kBAAkB,IAAI,IAAtB,GAA6B,CAA7B,GAAiChsC,uEAAS,CAACgsC,kBAAD,CAD5C;AAEA,MAAIlE,YAAY,GACd31C,OAAO,CAAC21C,YAAR,IAAwB,IAAxB,GACImE,mBADJ,GAEIjsC,uEAAS,CAAC7N,OAAO,CAAC21C,YAAT,CAHf,CAb2D,CAkB3D;;AACA,MAAI,EAAEA,YAAY,IAAI,CAAhB,IAAqBA,YAAY,IAAI,CAAvC,CAAJ,EAA+C;AAC7C,UAAM,IAAI0D,UAAJ,CAAe,kDAAf,CAAN;AACD;;AAED,MAAIn4C,IAAI,GAAGq3C,gEAAM,CAACrqC,SAAD,CAAjB;AACA,MAAI3N,GAAG,GAAGW,IAAI,CAACsgD,MAAL,EAAV;AACA,MAAI9zC,IAAI,GAAG,CAACnN,GAAG,GAAGo1C,YAAN,GAAqB,CAArB,GAAyB,CAA1B,IAA+Bp1C,GAA/B,GAAqCo1C,YAAhD;AAEAz0C,MAAI,CAACw5C,OAAL,CAAax5C,IAAI,CAACib,OAAL,KAAiBzO,IAA9B;AACAxM,MAAI,CAACg6C,QAAL,CAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB;AACA,SAAOh6C,IAAP;AACD,C;;;;;;;;;;;;AChED;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASokD,eAAT,CAAyBp3C,SAAzB,EAAoC+qC,YAApC,EAAkD;AAC/D,MAAI7qC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIlF,OAAO,GAAGi5C,YAAY,IAAI,EAA9B;AACA,MAAIhI,MAAM,GAAGjxC,OAAO,CAACixC,MAArB;AACA,MAAIiI,2BAA2B,GAC7BjI,MAAM,IAAIA,MAAM,CAACjxC,OAAjB,IAA4BixC,MAAM,CAACjxC,OAAP,CAAem5C,qBAD7C;AAEA,MAAIC,4BAA4B,GAC9BF,2BAA2B,IAAI,IAA/B,GACI,CADJ,GAEIrrC,uEAAS,CAACqrC,2BAAD,CAHf;AAIA,MAAIC,qBAAqB,GACvBn5C,OAAO,CAACm5C,qBAAR,IAAiC,IAAjC,GACIC,4BADJ,GAEIvrC,uEAAS,CAAC7N,OAAO,CAACm5C,qBAAT,CAHf;AAKA,MAAI3vC,IAAI,GAAGm8C,qEAAW,CAACz3C,SAAD,EAAY+qC,YAAZ,CAAtB;AACA,MAAIsB,SAAS,GAAG,IAAIlxC,IAAJ,CAAS,CAAT,CAAhB;AACAkxC,WAAS,CAACU,WAAV,CAAsBzxC,IAAtB,EAA4B,CAA5B,EAA+B2vC,qBAA/B;AACAoB,WAAS,CAACW,QAAV,CAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B;AACA,MAAIh6C,IAAI,GAAGm9C,qEAAW,CAAC9D,SAAD,EAAYtB,YAAZ,CAAtB;AACA,SAAO/3C,IAAP;AACD,C;;;;;;;;;;;;ACxED;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASw/C,WAAT,CAAqBxyC,SAArB,EAAgC;AAC7C,MAAIE,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIkwD,SAAS,GAAG7c,gEAAM,CAACrqC,SAAD,CAAtB;AACA,MAAIhN,IAAI,GAAG,IAAImI,IAAJ,CAAS,CAAT,CAAX;AACAnI,MAAI,CAAC+5C,WAAL,CAAiBma,SAAS,CAACn5C,WAAV,EAAjB,EAA0C,CAA1C,EAA6C,CAA7C;AACA/a,MAAI,CAACg6C,QAAL,CAAc,CAAd,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB;AACA,SAAOh6C,IAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASm0D,OAAT,CAAiBnnD,SAAjB,EAA4BC,WAA5B,EAAyC;AACtD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOssC,iEAAO,CAACvsC,SAAD,EAAY,CAAC/D,MAAb,CAAd;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASmrD,QAAT,CAAkBpnD,SAAlB,EAA6BC,WAA7B,EAA0C;AACvD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOwsC,kEAAQ,CAACzsC,SAAD,EAAY,CAAC/D,MAAb,CAAf;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS00C,eAAT,CAAyB3wC,SAAzB,EAAoCC,WAApC,EAAiD;AAC9D,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOysC,yEAAe,CAAC1sC,SAAD,EAAY,CAAC/D,MAAb,CAAtB;AACD,C;;;;;;;;;;;;ACzCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS+3C,eAAT,CAAyBh0C,SAAzB,EAAoCC,WAApC,EAAiD;AAC9D,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOF,yEAAe,CAACC,SAAD,EAAY,CAAC/D,MAAb,CAAtB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASorD,UAAT,CAAoBrnD,SAApB,EAA+BC,WAA/B,EAA4C;AACzD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAO4sC,oEAAU,CAAC7sC,SAAD,EAAY,CAAC/D,MAAb,CAAjB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASqrD,SAAT,CAAmBtnD,SAAnB,EAA8BC,WAA9B,EAA2C;AACxD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAO6sC,mEAAS,CAAC9sC,SAAD,EAAY,CAAC/D,MAAb,CAAhB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASsrD,WAAT,CAAqBvnD,SAArB,EAAgCC,WAAhC,EAA6C;AAC1D,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOktC,qEAAW,CAACntC,SAAD,EAAY,CAAC/D,MAAb,CAAlB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASurD,UAAT,CAAoBxnD,SAApB,EAA+BC,WAA/B,EAA4C;AACzD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOmtC,oEAAU,CAACptC,SAAD,EAAY,CAAC/D,MAAb,CAAjB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASwrD,QAAT,CAAkBznD,SAAlB,EAA6BC,WAA7B,EAA0C;AACvD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOotC,kEAAQ,CAACrtC,SAAD,EAAY,CAAC/D,MAAb,CAAf;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASyrD,QAAT,CAAkB1nD,SAAlB,EAA6BC,WAA7B,EAA0C;AACvD,MAAIC,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,oCAAoCD,SAAS,CAAClJ,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAIiF,MAAM,GAAG0D,uEAAS,CAACM,WAAD,CAAtB;AACA,SAAOqtC,kEAAQ,CAACttC,SAAD,EAAY,CAAC/D,MAAb,CAAf;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASouC,MAAT,CAAgBxL,QAAhB,EAA0B;AACvC,MAAI3+B,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAImJ,SAAJ,CACJ,mCAAmCD,SAAS,CAAClJ,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI2wD,MAAM,GAAG/zD,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+BgxB,QAA/B,CAAb,CAPuC,CASvC;;AACA,MACEA,QAAQ,YAAY1jC,IAApB,IACC,OAAO0jC,QAAP,KAAoB,QAApB,IAAgC8oB,MAAM,KAAK,eAF9C,EAGE;AACA;AACA,WAAO,IAAIxsD,IAAJ,CAAS0jC,QAAQ,CAACn+B,OAAT,EAAT,CAAP;AACD,GAND,MAMO,IAAI,OAAOm+B,QAAP,KAAoB,QAApB,IAAgC8oB,MAAM,KAAK,iBAA/C,EAAkE;AACvE,WAAO,IAAIxsD,IAAJ,CAAS0jC,QAAT,CAAP;AACD,GAFM,MAEA;AACL,QACE,CAAC,OAAOA,QAAP,KAAoB,QAApB,IAAgC8oB,MAAM,KAAK,iBAA5C,KACA,OAAOj8B,OAAP,KAAmB,WAFrB,EAGE;AACAA,aAAO,CAACC,IAAR,CACE,6IADF;AAGAD,aAAO,CAACC,IAAR,CAAa,IAAIn2B,KAAJ,GAAYoyD,KAAzB;AACD;;AACD,WAAO,IAAIzsD,IAAJ,CAASyE,GAAT,CAAP;AACD;AACF,C;;;;;;;;;;;;AC5DY;;AAEb,IAAIioD,UAAU,GAAGz1C,mBAAO,CAAC,wDAAD,CAAxB;;AACA,IAAI01C,WAAW,GAAG11C,mBAAO,CAAC,0DAAD,CAAzB;;AACA,IAAI21C,EAAE,GAAG31C,mBAAO,CAAC,oDAAD,CAAhB;;AACA,IAAI41C,OAAO,GAAG51C,mBAAO,CAAC,kDAAD,CAArB;;AACA,IAAIiL,KAAK,GAAGjL,mBAAO,CAAC,8EAAD,CAAnB;;AACA,IAAI9Z,OAAO,GAAG8Z,mBAAO,CAAC,wEAAD,CAArB;;AACA,IAAInY,MAAM,GAAGmY,mBAAO,CAAC,8DAAD,CAApB;;AACA,IAAI61C,mBAAmB,GAAG71C,mBAAO,CAAC,4EAAD,CAAjC;;AACA,IAAIugB,YAAY,GAAGvgB,mBAAO,CAAC,4DAAD,CAA1B;;AACA,IAAI81C,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AACA,IAAI+1C,eAAe,GAAG/1C,mBAAO,CAAC,kEAAD,CAA7B;;AACA,IAAIg2C,WAAW,GAAGh2C,mBAAO,CAAC,gEAAD,CAAzB;;AACA,IAAIi2C,cAAc,GAAGj2C,mBAAO,CAAC,0DAAD,CAA5B;;AACA,IAAIk2C,eAAe,GAAGl2C,mBAAO,CAAC,oEAAD,CAA7B;;AACA,IAAIve,MAAM,GAAGue,mBAAO,CAAC,4DAAD,CAApB;;AAEA,IAAIm2C,QAAQ,GAAGL,SAAS,CAAC,wBAAD,CAAxB;AACA,IAAIM,GAAG,GAAG50D,MAAM,CAAC60D,cAAjB;AACA,IAAIC,YAAY,GAAGR,SAAS,CAAC,2BAAD,CAA5B;AAEA,IAAIS,IAAI,GAAGh2B,YAAY,CAAC,OAAD,EAAU,IAAV,CAAvB;AACA,IAAIi2B,OAAO,GAAGV,SAAS,CAAC,mBAAD,EAAsB,IAAtB,CAAvB;AACA,IAAIW,OAAO,GAAGX,SAAS,CAAC,mBAAD,EAAsB,IAAtB,CAAvB;AACA,IAAIY,QAAQ,GAAGZ,SAAS,CAAC,oBAAD,EAAuB,IAAvB,CAAxB;AACA,IAAIa,OAAO,GAAGb,SAAS,CAAC,mBAAD,EAAsB,IAAtB,CAAvB;AACA,IAAIc,UAAU,GAAGd,SAAS,CAAC,sBAAD,EAAyB,IAAzB,CAA1B;AACA,IAAIe,OAAO,GAAGf,SAAS,CAAC,mBAAD,EAAsB,IAAtB,CAAvB;AACA,IAAIgB,QAAQ,GAAGhB,SAAS,CAAC,oBAAD,EAAuB,IAAvB,CAAxB,C,CAEA;;AACA,SAASiB,kBAAT,CAA4B3yD,GAA5B,EAAiC4yD,IAAjC,EAAuCl8C,IAAvC,EAA6Cm8C,OAA7C,EAAsD;AACpD,MAAIx5C,CAAC,GAAGu4C,WAAW,CAAC5xD,GAAD,CAAnB;AACA,MAAIuO,MAAJ;;AACA,SAAO,CAACA,MAAM,GAAG8K,CAAC,CAACvf,IAAF,EAAV,KAAuB,CAACyU,MAAM,CAACjO,IAAtC,EAA4C;AAC1C,QAAIwyD,iBAAiB,CAACF,IAAD,EAAOrkD,MAAM,CAACxU,KAAd,EAAqB2c,IAArB,EAA2Bm8C,OAA3B,CAArB,EAA0D;AAAE;AAC1D;AACAL,gBAAU,CAACxyD,GAAD,EAAMuO,MAAM,CAACxU,KAAb,CAAV;AACA,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD,C,CAED;;;AACA,SAASg5D,2BAAT,CAAqCC,IAArC,EAA2C;AACzC,MAAI,OAAOA,IAAP,KAAgB,WAApB,EAAiC;AAC/B,WAAO,IAAP;AACD;;AACD,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAAE;AAC9B,WAAO,KAAK,CAAZ;AACD;;AACD,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,WAAO,KAAP;AACD;;AACD,MAAI,OAAOA,IAAP,KAAgB,QAAhB,IAA4B,OAAOA,IAAP,KAAgB,QAAhD,EAA0D;AACxD;AACA,WAAO,CAACA,IAAD,KAAU,CAACA,IAAlB,CAFwD,CAEhC;AACzB;;AACD,SAAO,IAAP;AACD,C,CAED;;;AACA,SAASC,qBAAT,CAA+BryD,CAA/B,EAAkCC,CAAlC,EAAqCmyD,IAArC,EAA2Ct1C,IAA3C,EAAiDhH,IAAjD,EAAuDm8C,OAAvD,EAAgE;AAC9D,MAAIK,QAAQ,GAAGH,2BAA2B,CAACC,IAAD,CAA1C;;AACA,MAAIE,QAAQ,IAAI,IAAhB,EAAsB;AACpB,WAAOA,QAAP;AACD;;AACD,MAAIC,IAAI,GAAGd,OAAO,CAACxxD,CAAD,EAAIqyD,QAAJ,CAAlB;AACA,MAAIE,SAAS,GAAG/1D,MAAM,CAAC,EAAD,EAAKqZ,IAAL,EAAW;AAAE28C,UAAM,EAAE;AAAV,GAAX,CAAtB;;AACA,MACG,OAAOF,IAAP,KAAgB,WAAhB,IAA+B,CAACf,OAAO,CAACvxD,CAAD,EAAIqyD,QAAJ,CAAxC,CACA;AADA,KAEG,CAACJ,iBAAiB,CAACp1C,IAAD,EAAOy1C,IAAP,EAAaC,SAAb,EAAwBP,OAAxB,CAHvB,EAIE;AACA,WAAO,KAAP;AACD,GAb6D,CAc9D;;;AACA,SAAO,CAACT,OAAO,CAACxxD,CAAD,EAAIsyD,QAAJ,CAAR,IAAyBJ,iBAAiB,CAACp1C,IAAD,EAAOy1C,IAAP,EAAaC,SAAb,EAAwBP,OAAxB,CAAjD;AACD,C,CAED;;;AACA,SAASS,qBAAT,CAA+B1yD,CAA/B,EAAkCC,CAAlC,EAAqCmyD,IAArC,EAA2C;AACzC,MAAIE,QAAQ,GAAGH,2BAA2B,CAACC,IAAD,CAA1C;;AACA,MAAIE,QAAQ,IAAI,IAAhB,EAAsB;AACpB,WAAOA,QAAP;AACD;;AAED,SAAOT,OAAO,CAAC5xD,CAAD,EAAIqyD,QAAJ,CAAP,IAAwB,CAACT,OAAO,CAAC7xD,CAAD,EAAIsyD,QAAJ,CAAvC;AACD,C,CAED;;;AACA,SAASK,gBAAT,CAA0BvzD,GAA1B,EAA+BzC,GAA/B,EAAoCi2D,IAApC,EAA0CC,KAA1C,EAAiD/8C,IAAjD,EAAuDm8C,OAAvD,EAAgE;AAC9D,MAAIx5C,CAAC,GAAGu4C,WAAW,CAAC5xD,GAAD,CAAnB;AACA,MAAIuO,MAAJ;AACA,MAAImlD,IAAJ;;AACA,SAAO,CAACnlD,MAAM,GAAG8K,CAAC,CAACvf,IAAF,EAAV,KAAuB,CAACyU,MAAM,CAACjO,IAAtC,EAA4C;AAC1CozD,QAAI,GAAGnlD,MAAM,CAACxU,KAAd;;AACA,SACE;AACA+4D,qBAAiB,CAACU,IAAD,EAAOE,IAAP,EAAah9C,IAAb,EAAmBm8C,OAAnB,CAAjB,CACA;AADA,OAEGC,iBAAiB,CAACW,KAAD,EAAQpB,OAAO,CAAC90D,GAAD,EAAMm2D,IAAN,CAAf,EAA4Bh9C,IAA5B,EAAkCm8C,OAAlC,CAJtB,EAKE;AACAL,gBAAU,CAACxyD,GAAD,EAAM0zD,IAAN,CAAV;AACA,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD;;AAED,SAASZ,iBAAT,CAA2Ba,MAA3B,EAAmCC,QAAnC,EAA6Ct4D,OAA7C,EAAsDu3D,OAAtD,EAA+D;AAC7D,MAAIn8C,IAAI,GAAGpb,OAAO,IAAI,EAAtB,CAD6D,CAG7D;;AACA,MAAIob,IAAI,CAAC28C,MAAL,GAAc9B,EAAE,CAACoC,MAAD,EAASC,QAAT,CAAhB,GAAqCD,MAAM,KAAKC,QAApD,EAA8D;AAC5D,WAAO,IAAP;AACD;;AAED,MAAIC,WAAW,GAAGpC,mBAAmB,CAACkC,MAAD,CAArC;AACA,MAAIG,aAAa,GAAGrC,mBAAmB,CAACmC,QAAD,CAAvC;;AACA,MAAIC,WAAW,KAAKC,aAApB,EAAmC;AACjC,WAAO,KAAP;AACD,GAZ4D,CAc7D;;;AACA,MAAI,CAACH,MAAD,IAAW,CAACC,QAAZ,IAAyB,OAAOD,MAAP,KAAkB,QAAlB,IAA8B,OAAOC,QAAP,KAAoB,QAA/E,EAA0F;AACxF,WAAOl9C,IAAI,CAAC28C,MAAL,GAAc9B,EAAE,CAACoC,MAAD,EAASC,QAAT,CAAhB,GAAqCD,MAAM,IAAIC,QAAtD,CADwF,CACxB;AACjE;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE;;;AAEA,MAAIG,SAAS,GAAGlB,OAAO,CAACrgD,GAAR,CAAYmhD,MAAZ,CAAhB;AACA,MAAIK,WAAW,GAAGnB,OAAO,CAACrgD,GAAR,CAAYohD,QAAZ,CAAlB;AACA,MAAIK,QAAJ;;AACA,MAAIF,SAAS,IAAIC,WAAjB,EAA8B;AAC5B,QAAInB,OAAO,CAACp2D,GAAR,CAAYk3D,MAAZ,MAAwBd,OAAO,CAACp2D,GAAR,CAAYm3D,QAAZ,CAA5B,EAAmD;AACjD,aAAO,IAAP;AACD;AACF,GAJD,MAIO;AACLK,YAAQ,GAAG,EAAX;AACD;;AACD,MAAI,CAACF,SAAL,EAAgB;AAAElB,WAAO,CAAC7yD,GAAR,CAAY2zD,MAAZ,EAAoBM,QAApB;AAAgC;;AAClD,MAAI,CAACD,WAAL,EAAkB;AAAEnB,WAAO,CAAC7yD,GAAR,CAAY4zD,QAAZ,EAAsBK,QAAtB;AAAkC,GAxCO,CA0C7D;;;AACA,SAAOC,QAAQ,CAACP,MAAD,EAASC,QAAT,EAAmBl9C,IAAnB,EAAyBm8C,OAAzB,CAAf;AACD;;AAED,SAASh2C,QAAT,CAAkB3U,CAAlB,EAAqB;AACnB,MAAI,CAACA,CAAD,IAAM,OAAOA,CAAP,KAAa,QAAnB,IAA+B,OAAOA,CAAC,CAAC1H,MAAT,KAAoB,QAAvD,EAAiE;AAC/D,WAAO,KAAP;AACD;;AACD,MAAI,OAAO0H,CAAC,CAACglB,IAAT,KAAkB,UAAlB,IAAgC,OAAOhlB,CAAC,CAAC1F,KAAT,KAAmB,UAAvD,EAAmE;AACjE,WAAO,KAAP;AACD;;AACD,MAAI0F,CAAC,CAAC1H,MAAF,GAAW,CAAX,IAAgB,OAAO0H,CAAC,CAAC,CAAD,CAAR,KAAgB,QAApC,EAA8C;AAC5C,WAAO,KAAP;AACD;;AAED,SAAO,CAAC,EAAEA,CAAC,CAAC7O,WAAF,IAAiB6O,CAAC,CAAC7O,WAAF,CAAcwjB,QAA/B,IAA2C3U,CAAC,CAAC7O,WAAF,CAAcwjB,QAAd,CAAuB3U,CAAvB,CAA7C,CAAR;AACD;;AAED,SAASisD,QAAT,CAAkBvzD,CAAlB,EAAqBC,CAArB,EAAwB6V,IAAxB,EAA8Bm8C,OAA9B,EAAuC;AACrC,MAAIH,QAAQ,CAAC9xD,CAAD,CAAR,KAAgB8xD,QAAQ,CAAC7xD,CAAD,CAA5B,EAAiC;AAC/B,WAAO,KAAP;AACD;;AACD,MAAIuzD,EAAE,GAAGxC,WAAW,CAAChxD,CAAD,CAApB;AACA,MAAIyzD,EAAE,GAAGzC,WAAW,CAAC/wD,CAAD,CAApB;AACA,MAAIyzD,OAAJ;AACA,MAAIC,OAAJ;AACA,MAAIv0D,GAAJ;;AACA,SAAO,CAACs0D,OAAO,GAAGF,EAAE,CAACt6D,IAAH,EAAX,KAAyB,CAACw6D,OAAO,CAACh0D,IAAzC,EAA+C;AAC7C,QAAIg0D,OAAO,CAACv6D,KAAR,IAAiB,OAAOu6D,OAAO,CAACv6D,KAAf,KAAyB,QAA9C,EAAwD;AACtD,UAAI,CAACiG,GAAL,EAAU;AAAEA,WAAG,GAAG,IAAImyD,IAAJ,EAAN;AAAmB;;AAC/BI,aAAO,CAACvyD,GAAD,EAAMs0D,OAAO,CAACv6D,KAAd,CAAP;AACD,KAHD,MAGO,IAAI,CAAC04D,OAAO,CAAC5xD,CAAD,EAAIyzD,OAAO,CAACv6D,KAAZ,CAAZ,EAAgC;AACrC,UAAI2c,IAAI,CAAC28C,MAAT,EAAiB;AAAE,eAAO,KAAP;AAAe;;AAClC,UAAI,CAACC,qBAAqB,CAAC1yD,CAAD,EAAIC,CAAJ,EAAOyzD,OAAO,CAACv6D,KAAf,CAA1B,EAAiD;AAC/C,eAAO,KAAP;AACD;;AACD,UAAI,CAACiG,GAAL,EAAU;AAAEA,WAAG,GAAG,IAAImyD,IAAJ,EAAN;AAAmB;;AAC/BI,aAAO,CAACvyD,GAAD,EAAMs0D,OAAO,CAACv6D,KAAd,CAAP;AACD;AACF;;AACD,MAAIiG,GAAJ,EAAS;AACP,WAAO,CAACu0D,OAAO,GAAGF,EAAE,CAACv6D,IAAH,EAAX,KAAyB,CAACy6D,OAAO,CAACj0D,IAAzC,EAA+C;AAC7C;AACA,UAAIi0D,OAAO,CAACx6D,KAAR,IAAiB,OAAOw6D,OAAO,CAACx6D,KAAf,KAAyB,QAA9C,EAAwD;AACtD,YAAI,CAAC44D,kBAAkB,CAAC3yD,GAAD,EAAMu0D,OAAO,CAACx6D,KAAd,EAAqB2c,IAAI,CAAC28C,MAA1B,EAAkCR,OAAlC,CAAvB,EAAmE;AACjE,iBAAO,KAAP;AACD;AACF,OAJD,MAIO,IACL,CAACn8C,IAAI,CAAC28C,MAAN,IACG,CAACZ,OAAO,CAAC7xD,CAAD,EAAI2zD,OAAO,CAACx6D,KAAZ,CADX,IAEG,CAAC44D,kBAAkB,CAAC3yD,GAAD,EAAMu0D,OAAO,CAACx6D,KAAd,EAAqB2c,IAAI,CAAC28C,MAA1B,EAAkCR,OAAlC,CAHjB,EAIL;AACA,eAAO,KAAP;AACD;AACF;;AACD,WAAOH,QAAQ,CAAC1yD,GAAD,CAAR,KAAkB,CAAzB;AACD;;AACD,SAAO,IAAP;AACD;;AAED,SAASw0D,QAAT,CAAkB5zD,CAAlB,EAAqBC,CAArB,EAAwB6V,IAAxB,EAA8Bm8C,OAA9B,EAAuC;AACrC,MAAIP,QAAQ,CAAC1xD,CAAD,CAAR,KAAgB0xD,QAAQ,CAACzxD,CAAD,CAA5B,EAAiC;AAC/B,WAAO,KAAP;AACD;;AACD,MAAIuzD,EAAE,GAAGxC,WAAW,CAAChxD,CAAD,CAApB;AACA,MAAIyzD,EAAE,GAAGzC,WAAW,CAAC/wD,CAAD,CAApB;AACA,MAAIyzD,OAAJ;AACA,MAAIC,OAAJ;AACA,MAAIv0D,GAAJ;AACA,MAAIsP,GAAJ;AACA,MAAImkD,KAAJ;AACA,MAAIgB,KAAJ;;AACA,SAAO,CAACH,OAAO,GAAGF,EAAE,CAACt6D,IAAH,EAAX,KAAyB,CAACw6D,OAAO,CAACh0D,IAAzC,EAA+C;AAC7CgP,OAAG,GAAGglD,OAAO,CAACv6D,KAAR,CAAc,CAAd,CAAN;AACA05D,SAAK,GAAGa,OAAO,CAACv6D,KAAR,CAAc,CAAd,CAAR;;AACA,QAAIuV,GAAG,IAAI,OAAOA,GAAP,KAAe,QAA1B,EAAoC;AAClC,UAAI,CAACtP,GAAL,EAAU;AAAEA,WAAG,GAAG,IAAImyD,IAAJ,EAAN;AAAmB;;AAC/BI,aAAO,CAACvyD,GAAD,EAAMsP,GAAN,CAAP;AACD,KAHD,MAGO;AACLmlD,WAAK,GAAGpC,OAAO,CAACxxD,CAAD,EAAIyO,GAAJ,CAAf;;AACA,UAAK,OAAOmlD,KAAP,KAAiB,WAAjB,IAAgC,CAACrC,OAAO,CAACvxD,CAAD,EAAIyO,GAAJ,CAAzC,IAAsD,CAACwjD,iBAAiB,CAACW,KAAD,EAAQgB,KAAR,EAAe/9C,IAAf,EAAqBm8C,OAArB,CAA5E,EAA2G;AACzG,YAAIn8C,IAAI,CAAC28C,MAAT,EAAiB;AACf,iBAAO,KAAP;AACD;;AACD,YAAI,CAACJ,qBAAqB,CAACryD,CAAD,EAAIC,CAAJ,EAAOyO,GAAP,EAAYmkD,KAAZ,EAAmB/8C,IAAnB,EAAyBm8C,OAAzB,CAA1B,EAA6D;AAC3D,iBAAO,KAAP;AACD;;AACD,YAAI,CAAC7yD,GAAL,EAAU;AAAEA,aAAG,GAAG,IAAImyD,IAAJ,EAAN;AAAmB;;AAC/BI,eAAO,CAACvyD,GAAD,EAAMsP,GAAN,CAAP;AACD;AACF;AACF;;AAED,MAAItP,GAAJ,EAAS;AACP,WAAO,CAACu0D,OAAO,GAAGF,EAAE,CAACv6D,IAAH,EAAX,KAAyB,CAACy6D,OAAO,CAACj0D,IAAzC,EAA+C;AAC7CgP,SAAG,GAAGilD,OAAO,CAACx6D,KAAR,CAAc,CAAd,CAAN;AACA06D,WAAK,GAAGF,OAAO,CAACx6D,KAAR,CAAc,CAAd,CAAR;;AACA,UAAIuV,GAAG,IAAI,OAAOA,GAAP,KAAe,QAA1B,EAAoC;AAClC,YAAI,CAACikD,gBAAgB,CAACvzD,GAAD,EAAMY,CAAN,EAAS0O,GAAT,EAAcmlD,KAAd,EAAqB/9C,IAArB,EAA2Bm8C,OAA3B,CAArB,EAA0D;AACxD,iBAAO,KAAP;AACD;AACF,OAJD,MAIO,IACL,CAACn8C,IAAI,CAAC28C,MAAN,KACI,CAACzyD,CAAC,CAAC4R,GAAF,CAAMlD,GAAN,CAAD,IAAe,CAACwjD,iBAAiB,CAACT,OAAO,CAACzxD,CAAD,EAAI0O,GAAJ,CAAR,EAAkBmlD,KAAlB,EAAyB/9C,IAAzB,EAA+Bm8C,OAA/B,CADrC,KAEG,CAACU,gBAAgB,CAACvzD,GAAD,EAAMY,CAAN,EAAS0O,GAAT,EAAcmlD,KAAd,EAAqBp3D,MAAM,CAAC,EAAD,EAAKqZ,IAAL,EAAW;AAAE28C,cAAM,EAAE;AAAV,OAAX,CAA3B,EAA0DR,OAA1D,CAHf,EAIL;AACA,eAAO,KAAP;AACD;AACF;;AACD,WAAOH,QAAQ,CAAC1yD,GAAD,CAAR,KAAkB,CAAzB;AACD;;AACD,SAAO,IAAP;AACD;;AAED,SAASk0D,QAAT,CAAkBtzD,CAAlB,EAAqBC,CAArB,EAAwB6V,IAAxB,EAA8Bm8C,OAA9B,EAAuC;AACrC;AACA,MAAIx5C,CAAJ,EAAO/J,GAAP;;AAEA,MAAI,OAAO1O,CAAP,KAAa,OAAOC,CAAxB,EAA2B;AAAE,WAAO,KAAP;AAAe;;AAC5C,MAAID,CAAC,IAAI,IAAL,IAAaC,CAAC,IAAI,IAAtB,EAA4B;AAAE,WAAO,KAAP;AAAe;;AAE7C,MAAIqxD,YAAY,CAACtxD,CAAD,CAAZ,KAAoBsxD,YAAY,CAACrxD,CAAD,CAApC,EAAyC;AAAE,WAAO,KAAP;AAAe;;AAE1D,MAAIywD,WAAW,CAAC1wD,CAAD,CAAX,KAAmB0wD,WAAW,CAACzwD,CAAD,CAAlC,EAAuC;AAAE,WAAO,KAAP;AAAe;;AAExD,MAAI6zD,QAAQ,GAAG5yD,OAAO,CAAClB,CAAD,CAAtB;AACA,MAAI+zD,QAAQ,GAAG7yD,OAAO,CAACjB,CAAD,CAAtB;;AACA,MAAI6zD,QAAQ,KAAKC,QAAjB,EAA2B;AAAE,WAAO,KAAP;AAAe,GAbP,CAerC;;;AACA,MAAIC,QAAQ,GAAGh0D,CAAC,YAAY5B,KAA5B;AACA,MAAI61D,QAAQ,GAAGh0D,CAAC,YAAY7B,KAA5B;;AACA,MAAI41D,QAAQ,KAAKC,QAAjB,EAA2B;AAAE,WAAO,KAAP;AAAe;;AAC5C,MAAID,QAAQ,IAAIC,QAAhB,EAA0B;AACxB,QAAIj0D,CAAC,CAAC4C,IAAF,KAAW3C,CAAC,CAAC2C,IAAb,IAAqB5C,CAAC,CAAC6nC,OAAF,KAAc5nC,CAAC,CAAC4nC,OAAzC,EAAkD;AAAE,aAAO,KAAP;AAAe;AACpE;;AAED,MAAIqsB,QAAQ,GAAGtD,OAAO,CAAC5wD,CAAD,CAAtB;AACA,MAAIm0D,QAAQ,GAAGvD,OAAO,CAAC3wD,CAAD,CAAtB;;AACA,MAAIi0D,QAAQ,KAAKC,QAAjB,EAA2B;AAAE,WAAO,KAAP;AAAe;;AAC5C,MAAI,CAACD,QAAQ,IAAIC,QAAb,MAA2Bn0D,CAAC,CAACo0D,MAAF,KAAan0D,CAAC,CAACm0D,MAAf,IAAyBnuC,KAAK,CAACjmB,CAAD,CAAL,KAAaimB,KAAK,CAAChmB,CAAD,CAAtE,CAAJ,EAAgF;AAC9E,WAAO,KAAP;AACD;;AAED,MAAIo0D,OAAO,GAAGxxD,MAAM,CAAC7C,CAAD,CAApB;AACA,MAAIs0D,OAAO,GAAGzxD,MAAM,CAAC5C,CAAD,CAApB;;AACA,MAAIo0D,OAAO,KAAKC,OAAhB,EAAyB;AAAE,WAAO,KAAP;AAAe;;AAC1C,MAAID,OAAO,IAAIC,OAAf,EAAwB;AAAE;AACxB,QAAInD,QAAQ,CAACnxD,CAAD,CAAR,KAAgBmxD,QAAQ,CAAClxD,CAAD,CAA5B,EAAiC;AAAE,aAAO,KAAP;AAAe;AACnD;;AACD,MAAI6V,IAAI,CAAC28C,MAAL,IAAerB,GAAf,IAAsBA,GAAG,CAACpxD,CAAD,CAAH,KAAWoxD,GAAG,CAACnxD,CAAD,CAAxC,EAA6C;AAAE,WAAO,KAAP;AAAe;;AAE9D,MAAIixD,eAAe,CAAClxD,CAAD,CAAf,KAAuBkxD,eAAe,CAACjxD,CAAD,CAA1C,EAA+C;AAC7C,WAAO,KAAP;AACD;;AAED,MAAIs0D,SAAS,GAAGt4C,QAAQ,CAACjc,CAAD,CAAxB;AACA,MAAIw0D,SAAS,GAAGv4C,QAAQ,CAAChc,CAAD,CAAxB;;AACA,MAAIs0D,SAAS,KAAKC,SAAlB,EAA6B;AAAE,WAAO,KAAP;AAAe;;AAC9C,MAAID,SAAS,IAAIC,SAAjB,EAA4B;AAAE;AAC5B,QAAIx0D,CAAC,CAACJ,MAAF,KAAaK,CAAC,CAACL,MAAnB,EAA2B;AAAE,aAAO,KAAP;AAAe;;AAC5C,SAAK6Y,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGzY,CAAC,CAACJ,MAAlB,EAA0B6Y,CAAC,EAA3B,EAA+B;AAC7B,UAAIzY,CAAC,CAACyY,CAAD,CAAD,KAASxY,CAAC,CAACwY,CAAD,CAAd,EAAmB;AAAE,eAAO,KAAP;AAAe;AACrC;;AACD,WAAO,IAAP;AACD;;AAED,MAAI,OAAOzY,CAAP,KAAa,OAAOC,CAAxB,EAA2B;AAAE,WAAO,KAAP;AAAe;;AAE5C,MAAIw0D,EAAE,GAAGhE,UAAU,CAACzwD,CAAD,CAAnB;AACA,MAAI00D,EAAE,GAAGjE,UAAU,CAACxwD,CAAD,CAAnB,CAxDqC,CAyDrC;;AACA,MAAIw0D,EAAE,CAAC70D,MAAH,KAAc80D,EAAE,CAAC90D,MAArB,EAA6B;AAAE,WAAO,KAAP;AAAe,GA1DT,CA4DrC;;;AACA60D,IAAE,CAACr0D,IAAH;AACAs0D,IAAE,CAACt0D,IAAH,GA9DqC,CA+DrC;;AACA,OAAKqY,CAAC,GAAGg8C,EAAE,CAAC70D,MAAH,GAAY,CAArB,EAAwB6Y,CAAC,IAAI,CAA7B,EAAgCA,CAAC,EAAjC,EAAqC;AACnC,QAAIg8C,EAAE,CAACh8C,CAAD,CAAF,IAASi8C,EAAE,CAACj8C,CAAD,CAAf,EAAoB;AAAE,aAAO,KAAP;AAAe,KADF,CACG;;AACvC,GAlEoC,CAoErC;;;AACA,OAAKA,CAAC,GAAGg8C,EAAE,CAAC70D,MAAH,GAAY,CAArB,EAAwB6Y,CAAC,IAAI,CAA7B,EAAgCA,CAAC,EAAjC,EAAqC;AACnC/J,OAAG,GAAG+lD,EAAE,CAACh8C,CAAD,CAAR;;AACA,QAAI,CAACy5C,iBAAiB,CAAClyD,CAAC,CAAC0O,GAAD,CAAF,EAASzO,CAAC,CAACyO,GAAD,CAAV,EAAiBoH,IAAjB,EAAuBm8C,OAAvB,CAAtB,EAAuD;AAAE,aAAO,KAAP;AAAe;AACzE;;AAED,MAAI0C,WAAW,GAAG5D,eAAe,CAAC/wD,CAAD,CAAjC;AACA,MAAI40D,WAAW,GAAG7D,eAAe,CAAC9wD,CAAD,CAAjC;;AACA,MAAI00D,WAAW,KAAKC,WAApB,EAAiC;AAC/B,WAAO,KAAP;AACD;;AACD,MAAID,WAAW,KAAK,KAAhB,IAAyBC,WAAW,KAAK,KAA7C,EAAoD;AAAE;AACpD,WAAOrB,QAAQ,CAACvzD,CAAD,EAAIC,CAAJ,EAAO6V,IAAP,EAAam8C,OAAb,CAAf;AACD;;AACD,MAAI0C,WAAW,KAAK,KAApB,EAA2B;AAAE;AAC3B,WAAOf,QAAQ,CAAC5zD,CAAD,EAAIC,CAAJ,EAAO6V,IAAP,EAAam8C,OAAb,CAAf;AACD;;AAED,SAAO,IAAP;AACD;;AAEDr3C,MAAM,CAACC,OAAP,GAAiB,SAASg6C,SAAT,CAAmB70D,CAAnB,EAAsBC,CAAtB,EAAyB6V,IAAzB,EAA+B;AAC9C,SAAOo8C,iBAAiB,CAAClyD,CAAD,EAAIC,CAAJ,EAAO6V,IAAP,EAAam7C,cAAc,EAA3B,CAAxB;AACD,CAFD,C;;;;;;;;;;;ACvWA,IAAIz6C,QAAQ,GAAG,GAAGA,QAAlB;;AAEAoE,MAAM,CAACC,OAAP,GAAiBnd,KAAK,CAACwD,OAAN,IAAiB,UAAU4zD,GAAV,EAAe;AAC/C,SAAOt+C,QAAQ,CAACC,IAAT,CAAcq+C,GAAd,KAAsB,gBAA7B;AACD,CAFD,C;;;;;;;;;;;;ACFa;;AAEb,IAAIrmD,IAAI,GAAGuM,mBAAO,CAAC,wDAAD,CAAlB;;AACA,IAAI+5C,UAAU,GAAG,OAAOz3D,MAAP,KAAkB,UAAlB,IAAgC,OAAOA,MAAM,CAAC,KAAD,CAAb,KAAyB,QAA1E;AAEA,IAAI03D,KAAK,GAAGx4D,MAAM,CAACoZ,SAAP,CAAiBY,QAA7B;AACA,IAAIogB,MAAM,GAAGl5B,KAAK,CAACkY,SAAN,CAAgBghB,MAA7B;AACA,IAAIq+B,kBAAkB,GAAGz4D,MAAM,CAAC04D,cAAhC;;AAEA,IAAIC,UAAU,GAAG,UAAU/yD,EAAV,EAAc;AAC9B,SAAO,OAAOA,EAAP,KAAc,UAAd,IAA4B4yD,KAAK,CAACv+C,IAAN,CAAWrU,EAAX,MAAmB,mBAAtD;AACA,CAFD;;AAIA,IAAIgzD,+BAA+B,GAAG,YAAY;AACjD,MAAIzmD,GAAG,GAAG,EAAV;;AACA,MAAI;AACHsmD,sBAAkB,CAACtmD,GAAD,EAAM,GAAN,EAAW;AAAE0mD,gBAAU,EAAE,KAAd;AAAqBl8D,WAAK,EAAEwV;AAA5B,KAAX,CAAlB,CADG,CAEH;;AACA,SAAK,IAAIjO,CAAT,IAAciO,GAAd,EAAmB;AAAE;AACpB,aAAO,KAAP;AACA;;AACD,WAAOA,GAAG,CAACrH,CAAJ,KAAUqH,GAAjB;AACA,GAPD,CAOE,OAAOuU,CAAP,EAAU;AAAE;AACb,WAAO,KAAP;AACA;AACD,CAZD;;AAaA,IAAIoyC,mBAAmB,GAAGL,kBAAkB,IAAIG,+BAA+B,EAA/E;;AAEA,IAAIF,cAAc,GAAG,UAAUxwD,MAAV,EAAkB9B,IAAlB,EAAwBzJ,KAAxB,EAA+BurD,SAA/B,EAA0C;AAC9D,MAAI9hD,IAAI,IAAI8B,MAAR,KAAmB,CAACywD,UAAU,CAACzQ,SAAD,CAAX,IAA0B,CAACA,SAAS,EAAvD,CAAJ,EAAgE;AAC/D;AACA;;AACD,MAAI4Q,mBAAJ,EAAyB;AACxBL,sBAAkB,CAACvwD,MAAD,EAAS9B,IAAT,EAAe;AAChC25B,kBAAY,EAAE,IADkB;AAEhC84B,gBAAU,EAAE,KAFoB;AAGhCl8D,WAAK,EAAEA,KAHyB;AAIhCo8D,cAAQ,EAAE;AAJsB,KAAf,CAAlB;AAMA,GAPD,MAOO;AACN7wD,UAAM,CAAC9B,IAAD,CAAN,GAAezJ,KAAf;AACA;AACD,CAdD;;AAgBA,IAAIq8D,gBAAgB,GAAG,UAAU9wD,MAAV,EAAkB/H,GAAlB,EAAuB;AAC7C,MAAI84D,UAAU,GAAG3sD,SAAS,CAAClJ,MAAV,GAAmB,CAAnB,GAAuBkJ,SAAS,CAAC,CAAD,CAAhC,GAAsC,EAAvD;AACA,MAAIsX,KAAK,GAAG3R,IAAI,CAAC9R,GAAD,CAAhB;;AACA,MAAIo4D,UAAJ,EAAgB;AACf30C,SAAK,GAAGwW,MAAM,CAACngB,IAAP,CAAY2J,KAAZ,EAAmB5jB,MAAM,CAACk5D,qBAAP,CAA6B/4D,GAA7B,CAAnB,CAAR;AACA;;AACD,OAAK,IAAI8b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2H,KAAK,CAACxgB,MAA1B,EAAkC6Y,CAAC,IAAI,CAAvC,EAA0C;AACzCy8C,kBAAc,CAACxwD,MAAD,EAAS0b,KAAK,CAAC3H,CAAD,CAAd,EAAmB9b,GAAG,CAACyjB,KAAK,CAAC3H,CAAD,CAAN,CAAtB,EAAkCg9C,UAAU,CAACr1C,KAAK,CAAC3H,CAAD,CAAN,CAA5C,CAAd;AACA;AACD,CATD;;AAWA+8C,gBAAgB,CAACF,mBAAjB,GAAuC,CAAC,CAACA,mBAAzC;AAEA16C,MAAM,CAACC,OAAP,GAAiB26C,gBAAjB,C;;;;;;;;;;;;ACzDa;;AAEb,IAAIj6B,YAAY,GAAGvgB,mBAAO,CAAC,4DAAD,CAA1B;;AAEA,IAAIihB,KAAK,GAAGV,YAAY,CAAC,mCAAD,EAAsC,IAAtC,CAAxB;;AACA,IAAIU,KAAJ,EAAW;AACV,MAAI;AACHA,SAAK,CAAC,EAAD,EAAK,QAAL,CAAL;AACA,GAFD,CAEE,OAAO/Y,CAAP,EAAU;AACX;AACA+Y,SAAK,GAAG,IAAR;AACA;AACD;;AAEDrhB,MAAM,CAACC,OAAP,GAAiBohB,KAAjB,C;;;;;;;;;;;;ACda;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIy0B,WAAW,GAAG11C,mBAAO,CAAC,0DAAD,CAAzB;;AAEA,IAAIA,mBAAO,CAAC,wDAAD,CAAP,MAA4BA,mBAAO,CAAC,8DAAD,CAAP,EAAhC,EAAgE;AAC/D,MAAI26C,SAAS,GAAGr4D,MAAM,CAACvC,QAAvB,CAD+D,CAE/D;AACA;AACA;AACA;AACA;AACA;AACA;;AACA6f,QAAM,CAACC,OAAP,GAAiB,SAASm2C,WAAT,CAAqB3zD,QAArB,EAA+B;AAC/C;AACA,QAAIA,QAAQ,IAAI,IAAZ,IAAoB,OAAOA,QAAQ,CAACs4D,SAAD,CAAf,KAA+B,WAAvD,EAAoE;AACnE,aAAOt4D,QAAQ,CAACs4D,SAAD,CAAR,EAAP;AACA;;AACD,QAAIjF,WAAW,CAACrzD,QAAD,CAAf,EAA2B;AAC1B;AACA;AACA,aAAOK,KAAK,CAACkY,SAAN,CAAgB+/C,SAAhB,EAA2Bl/C,IAA3B,CAAgCpZ,QAAhC,CAAP;AACA;AACD,GAVD;AAWA,CApBD,MAoBO;AACN;AACA,MAAI6D,OAAO,GAAG8Z,mBAAO,CAAC,6EAAD,CAArB;;AACA,MAAIhD,QAAQ,GAAGgD,mBAAO,CAAC,oDAAD,CAAtB;;AACA,MAAIugB,YAAY,GAAGvgB,mBAAO,CAAC,4DAAD,CAA1B;;AACA,MAAI46C,IAAI,GAAGr6B,YAAY,CAAC,OAAD,EAAU,IAAV,CAAvB;AACA,MAAIg2B,IAAI,GAAGh2B,YAAY,CAAC,OAAD,EAAU,IAAV,CAAvB;;AACA,MAAIu1B,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AACA,MAAI66C,UAAU,GAAG/E,SAAS,CAAC,sBAAD,CAA1B;AACA,MAAIgF,WAAW,GAAGhF,SAAS,CAAC,6BAAD,CAA3B;AACA,MAAIiF,YAAY,GAAGjF,SAAS,CAAC,wBAAD,CAA5B;;AAEA,MAAIkF,kBAAkB,GAAG,SAASA,kBAAT,CAA4BjlB,CAA5B,EAA+BpyC,KAA/B,EAAsC;AAC9D,QAAIiB,MAAM,GAAGmxC,CAAC,CAACnxC,MAAf;;AACA,QAAKjB,KAAK,GAAG,CAAT,IAAeiB,MAAnB,EAA2B;AAC1B,aAAOjB,KAAK,GAAG,CAAf;AACA;;AAED,QAAI+R,KAAK,GAAGolD,WAAW,CAAC/kB,CAAD,EAAIpyC,KAAJ,CAAvB;;AACA,QAAI+R,KAAK,GAAG,MAAR,IAAkBA,KAAK,GAAG,MAA9B,EAAsC;AACrC,aAAO/R,KAAK,GAAG,CAAf;AACA;;AAED,QAAI2F,MAAM,GAAGwxD,WAAW,CAAC/kB,CAAD,EAAIpyC,KAAK,GAAG,CAAZ,CAAxB;;AACA,QAAI2F,MAAM,GAAG,MAAT,IAAmBA,MAAM,GAAG,MAAhC,EAAwC;AACvC,aAAO3F,KAAK,GAAG,CAAf;AACA;;AAED,WAAOA,KAAK,GAAG,CAAf;AACA,GAjBD;;AAmBA,MAAIs3D,gBAAgB,GAAG,SAASA,gBAAT,CAA0BC,SAA1B,EAAqC;AAC3D,QAAIz9C,CAAC,GAAG,CAAR;AACA,WAAO;AACNvf,UAAI,EAAE,SAASA,IAAT,GAAgB;AACrB,YAAIwG,IAAI,GAAG+Y,CAAC,IAAIy9C,SAAS,CAACt2D,MAA1B;AACA,YAAIzG,KAAJ;;AACA,YAAI,CAACuG,IAAL,EAAW;AACVvG,eAAK,GAAG+8D,SAAS,CAACz9C,CAAD,CAAjB;AACAA,WAAC,IAAI,CAAL;AACA;;AACD,eAAO;AACN/Y,cAAI,EAAEA,IADA;AAENvG,eAAK,EAAEA;AAFD,SAAP;AAIA;AAZK,KAAP;AAcA,GAhBD;;AAkBA,MAAIg9D,wBAAwB,GAAG,SAASA,wBAAT,CAAkC94D,QAAlC,EAA4C+4D,uBAA5C,EAAqE;AACnG,QAAIl1D,OAAO,CAAC7D,QAAD,CAAP,IAAqBqzD,WAAW,CAACrzD,QAAD,CAApC,EAAgD;AAC/C,aAAO44D,gBAAgB,CAAC54D,QAAD,CAAvB;AACA;;AACD,QAAI2a,QAAQ,CAAC3a,QAAD,CAAZ,EAAwB;AACvB,UAAIob,CAAC,GAAG,CAAR;AACA,aAAO;AACNvf,YAAI,EAAE,SAASA,IAAT,GAAgB;AACrB,cAAIm9D,SAAS,GAAGL,kBAAkB,CAAC34D,QAAD,EAAWob,CAAX,CAAlC;AACA,cAAItf,KAAK,GAAG48D,YAAY,CAAC14D,QAAD,EAAWob,CAAX,EAAc49C,SAAd,CAAxB;AACA59C,WAAC,GAAG49C,SAAJ;AACA,iBAAO;AACN32D,gBAAI,EAAE22D,SAAS,GAAGh5D,QAAQ,CAACuC,MADrB;AAENzG,iBAAK,EAAEA;AAFD,WAAP;AAIA;AATK,OAAP;AAWA,KAjBkG,CAmBnG;;;AACA,QAAIi9D,uBAAuB,IAAI,OAAO/4D,QAAQ,CAAC,qBAAD,CAAf,KAA2C,WAA1E,EAAuF;AACtF,aAAOA,QAAQ,CAAC,qBAAD,CAAR,EAAP;AACA;AACD,GAvBD;;AAyBA,MAAI,CAACu4D,IAAD,IAAS,CAACrE,IAAd,EAAoB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AAEA32C,UAAM,CAACC,OAAP,GAAiB,SAASm2C,WAAT,CAAqB3zD,QAArB,EAA+B;AAC/C,UAAIA,QAAQ,IAAI,IAAhB,EAAsB;AACrB,eAAO84D,wBAAwB,CAAC94D,QAAD,EAAW,IAAX,CAA/B;AACA;AACD,KAJD;AAKA,GAdD,MAcO;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,QAAIi5D,KAAK,GAAGt7C,mBAAO,CAAC,8CAAD,CAAnB;;AACA,QAAIu7C,KAAK,GAAGv7C,mBAAO,CAAC,8CAAD,CAAnB,CAVM,CAYN;;;AACA,QAAIw7C,WAAW,GAAG1F,SAAS,CAAC,uBAAD,EAA0B,IAA1B,CAA3B;AACA,QAAI2F,WAAW,GAAG3F,SAAS,CAAC,uBAAD,EAA0B,IAA1B,CAA3B;;AACA,QAAI,OAAO97B,OAAP,KAAmB,WAAnB,IAAkC,CAACA,OAAO,CAACC,QAA3C,IAAuD,CAACD,OAAO,CAACC,QAAR,CAAiBzH,IAA7E,EAAmF;AAAE;AAEpF;AACA;AACA;AACA,UAAIkpC,YAAY,GAAG5F,SAAS,CAAC,wBAAD,EAA2B,IAA3B,CAA5B;AACA,UAAI6F,YAAY,GAAG7F,SAAS,CAAC,wBAAD,EAA2B,IAA3B,CAA5B;;AACA,UAAI8F,wBAAwB,GAAG,UAAU77D,QAAV,EAAoB;AAClD,YAAI2E,IAAI,GAAG,KAAX;AACA,eAAO;AACNxG,cAAI,EAAE,SAASA,IAAT,GAAgB;AACrB,gBAAI;AACH,qBAAO;AACNwG,oBAAI,EAAEA,IADA;AAENvG,qBAAK,EAAEuG,IAAI,GAAG9G,SAAH,GAAemC,QAAQ,CAAC7B,IAAT;AAFpB,eAAP;AAIA,aALD,CAKE,OAAOgqB,CAAP,EAAU;AACXxjB,kBAAI,GAAG,IAAP;AACA,qBAAO;AACNA,oBAAI,EAAE,IADA;AAENvG,qBAAK,EAAEP;AAFD,eAAP;AAIA;AACD;AAdK,SAAP;AAgBA,OAlBD;AAmBA,KAzCK,CA0CN;AACA;AACA;;;AACA,QAAIi+D,gBAAgB,GAAG/F,SAAS,CAAC,0BAAD,EAA6B,IAA7B,CAAT,IAA+CA,SAAS,CAAC,mCAAD,EAAsC,IAAtC,CAA/E;AACA,QAAIgG,gBAAgB,GAAGhG,SAAS,CAAC,0BAAD,EAA6B,IAA7B,CAAT,IAA+CA,SAAS,CAAC,mCAAD,EAAsC,IAAtC,CAA/E;;AAEA,QAAIiG,qBAAqB,GAAG,SAASA,qBAAT,CAA+B15D,QAA/B,EAAyC;AACpE,UAAIi5D,KAAK,CAACj5D,QAAD,CAAT,EAAqB;AACpB,YAAIq5D,YAAJ,EAAkB;AACjB,iBAAOE,wBAAwB,CAACF,YAAY,CAACr5D,QAAD,CAAb,CAA/B;AACA;;AACD,YAAIw5D,gBAAJ,EAAsB;AACrB,iBAAOA,gBAAgB,CAACx5D,QAAD,CAAvB;AACA;;AACD,YAAIm5D,WAAJ,EAAiB;AAChB,cAAIp1C,OAAO,GAAG,EAAd;AACAo1C,qBAAW,CAACn5D,QAAD,EAAW,UAAUkmC,CAAV,EAAaxV,CAAb,EAAgB;AACrC8nC,sBAAU,CAACz0C,OAAD,EAAU,CAAC2M,CAAD,EAAIwV,CAAJ,CAAV,CAAV;AACA,WAFU,CAAX;AAGA,iBAAO0yB,gBAAgB,CAAC70C,OAAD,CAAvB;AACA;AACD;;AACD,UAAIm1C,KAAK,CAACl5D,QAAD,CAAT,EAAqB;AACpB,YAAIs5D,YAAJ,EAAkB;AACjB,iBAAOC,wBAAwB,CAACD,YAAY,CAACt5D,QAAD,CAAb,CAA/B;AACA;;AACD,YAAIy5D,gBAAJ,EAAsB;AACrB,iBAAOA,gBAAgB,CAACz5D,QAAD,CAAvB;AACA;;AACD,YAAIo5D,WAAJ,EAAiB;AAChB,cAAI/oD,MAAM,GAAG,EAAb;AACA+oD,qBAAW,CAACp5D,QAAD,EAAW,UAAUkmC,CAAV,EAAa;AAClCsyB,sBAAU,CAACnoD,MAAD,EAAS61B,CAAT,CAAV;AACA,WAFU,CAAX;AAGA,iBAAO0yB,gBAAgB,CAACvoD,MAAD,CAAvB;AACA;AACD;AACD,KA/BD;;AAiCAkN,UAAM,CAACC,OAAP,GAAiB,SAASm2C,WAAT,CAAqB3zD,QAArB,EAA+B;AAC/C,aAAO05D,qBAAqB,CAAC15D,QAAD,CAArB,IAAmC84D,wBAAwB,CAAC94D,QAAD,CAAlE;AACA,KAFD;AAGA;AACD,C;;;;;;;;;;;AC9MD,IAAImZ,QAAQ,GAAG,GAAGA,QAAlB;;AAEAoE,MAAM,CAACC,OAAP,GAAiBnd,KAAK,CAACwD,OAAN,IAAiB,UAAU4zD,GAAV,EAAe;AAC/C,SAAOt+C,QAAQ,CAACC,IAAT,CAAcq+C,GAAd,KAAsB,gBAA7B;AACD,CAFD,C;;;;;;;;;;;ACDA,IAAIkC,MAAM,GAAGx6D,MAAM,CAACoZ,SAAP,CAAiB0C,cAA9B;AACA,IAAI9B,QAAQ,GAAGha,MAAM,CAACoZ,SAAP,CAAiBY,QAAhC;;AAEAoE,MAAM,CAACC,OAAP,GAAiB,SAAS/O,OAAT,CAAkB6C,GAAlB,EAAuBvM,EAAvB,EAA2B60D,GAA3B,EAAgC;AAC7C,MAAIzgD,QAAQ,CAACC,IAAT,CAAcrU,EAAd,MAAsB,mBAA1B,EAA+C;AAC3C,UAAM,IAAI2G,SAAJ,CAAc,6BAAd,CAAN;AACH;;AACD,MAAIsuB,CAAC,GAAG1oB,GAAG,CAAC/O,MAAZ;;AACA,MAAIy3B,CAAC,KAAK,CAACA,CAAX,EAAc;AACV,SAAK,IAAI5e,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4e,CAApB,EAAuB5e,CAAC,EAAxB,EAA4B;AACxBrW,QAAE,CAACqU,IAAH,CAAQwgD,GAAR,EAAatoD,GAAG,CAAC8J,CAAD,CAAhB,EAAqBA,CAArB,EAAwB9J,GAAxB;AACH;AACJ,GAJD,MAIO;AACH,SAAK,IAAIof,CAAT,IAAcpf,GAAd,EAAmB;AACf,UAAIqoD,MAAM,CAACvgD,IAAP,CAAY9H,GAAZ,EAAiBof,CAAjB,CAAJ,EAAyB;AACrB3rB,UAAE,CAACqU,IAAH,CAAQwgD,GAAR,EAAatoD,GAAG,CAACof,CAAD,CAAhB,EAAqBA,CAArB,EAAwBpf,GAAxB;AACH;AACJ;AACJ;AACJ,CAhBD,C;;;;;;;;;;;;ACJa;AAEb;;AAEA,IAAIuoD,aAAa,GAAG,iDAApB;AACA,IAAIt1D,KAAK,GAAGlE,KAAK,CAACkY,SAAN,CAAgBhU,KAA5B;AACA,IAAIozD,KAAK,GAAGx4D,MAAM,CAACoZ,SAAP,CAAiBY,QAA7B;AACA,IAAI2gD,QAAQ,GAAG,mBAAf;;AAEAv8C,MAAM,CAACC,OAAP,GAAiB,SAASghB,IAAT,CAAcyQ,IAAd,EAAoB;AACjC,MAAIzqB,MAAM,GAAG,IAAb;;AACA,MAAI,OAAOA,MAAP,KAAkB,UAAlB,IAAgCmzC,KAAK,CAACv+C,IAAN,CAAWoL,MAAX,MAAuBs1C,QAA3D,EAAqE;AACjE,UAAM,IAAIpuD,SAAJ,CAAcmuD,aAAa,GAAGr1C,MAA9B,CAAN;AACH;;AACD,MAAInpB,IAAI,GAAGkJ,KAAK,CAAC6U,IAAN,CAAW3N,SAAX,EAAsB,CAAtB,CAAX;AAEA,MAAIsuD,KAAJ;;AACA,MAAIC,MAAM,GAAG,YAAY;AACrB,QAAI,gBAAgBD,KAApB,EAA2B;AACvB,UAAIzpD,MAAM,GAAGkU,MAAM,CAAC4a,KAAP,CACT,IADS,EAET/jC,IAAI,CAACk+B,MAAL,CAAYh1B,KAAK,CAAC6U,IAAN,CAAW3N,SAAX,CAAZ,CAFS,CAAb;;AAIA,UAAItM,MAAM,CAACmR,MAAD,CAAN,KAAmBA,MAAvB,EAA+B;AAC3B,eAAOA,MAAP;AACH;;AACD,aAAO,IAAP;AACH,KATD,MASO;AACH,aAAOkU,MAAM,CAAC4a,KAAP,CACH6P,IADG,EAEH5zC,IAAI,CAACk+B,MAAL,CAAYh1B,KAAK,CAAC6U,IAAN,CAAW3N,SAAX,CAAZ,CAFG,CAAP;AAIH;AACJ,GAhBD;;AAkBA,MAAIwuD,WAAW,GAAGjvD,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYxE,MAAM,CAACjiB,MAAP,GAAgBlH,IAAI,CAACkH,MAAjC,CAAlB;AACA,MAAI23D,SAAS,GAAG,EAAhB;;AACA,OAAK,IAAI9+C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6+C,WAApB,EAAiC7+C,CAAC,EAAlC,EAAsC;AAClC8+C,aAAS,CAAC94D,IAAV,CAAe,MAAMga,CAArB;AACH;;AAED2+C,OAAK,GAAGI,QAAQ,CAAC,QAAD,EAAW,sBAAsBD,SAAS,CAAC58C,IAAV,CAAe,GAAf,CAAtB,GAA4C,2CAAvD,CAAR,CAA4G08C,MAA5G,CAAR;;AAEA,MAAIx1C,MAAM,CAACjM,SAAX,EAAsB;AAClB,QAAI6hD,KAAK,GAAG,SAASA,KAAT,GAAiB,CAAE,CAA/B;;AACAA,SAAK,CAAC7hD,SAAN,GAAkBiM,MAAM,CAACjM,SAAzB;AACAwhD,SAAK,CAACxhD,SAAN,GAAkB,IAAI6hD,KAAJ,EAAlB;AACAA,SAAK,CAAC7hD,SAAN,GAAkB,IAAlB;AACH;;AAED,SAAOwhD,KAAP;AACH,CA1CD,C;;;;;;;;;;;;ACTa;;AAEb,IAAIM,cAAc,GAAG18C,mBAAO,CAAC,wEAAD,CAA5B;;AAEAJ,MAAM,CAACC,OAAP,GAAiB28C,QAAQ,CAAC5hD,SAAT,CAAmBimB,IAAnB,IAA2B67B,cAA5C,C;;;;;;;;;;;;ACJa;;AAEb,IAAI9+D,SAAJ;AAEA,IAAI++D,YAAY,GAAGC,WAAnB;AACA,IAAIC,SAAS,GAAGL,QAAhB;AACA,IAAIM,UAAU,GAAG/uD,SAAjB,C,CAEA;;AACA,IAAIgvD,qBAAqB,GAAG,UAAUC,gBAAV,EAA4B;AACvD,MAAI;AACH,WAAOH,SAAS,CAAC,2BAA2BG,gBAA3B,GAA8C,gBAA/C,CAAT,EAAP;AACA,GAFD,CAEE,OAAO90C,CAAP,EAAU,CAAE;AACd,CAJD;;AAMA,IAAI+Y,KAAK,GAAGz/B,MAAM,CAACy7D,wBAAnB;;AACA,IAAIh8B,KAAJ,EAAW;AACV,MAAI;AACHA,SAAK,CAAC,EAAD,EAAK,EAAL,CAAL;AACA,GAFD,CAEE,OAAO/Y,CAAP,EAAU;AACX+Y,SAAK,GAAG,IAAR,CADW,CACG;AACd;AACD;;AAED,IAAIi8B,cAAc,GAAG,YAAY;AAChC,QAAM,IAAIJ,UAAJ,EAAN;AACA,CAFD;;AAGA,IAAIK,cAAc,GAAGl8B,KAAK,GACtB,YAAY;AACd,MAAI;AACH;AACAnzB,aAAS,CAACsvD,MAAV,CAFG,CAEe;;AAClB,WAAOF,cAAP;AACA,GAJD,CAIE,OAAOG,YAAP,EAAqB;AACtB,QAAI;AACH;AACA,aAAOp8B,KAAK,CAACnzB,SAAD,EAAY,QAAZ,CAAL,CAA2BjN,GAAlC;AACA,KAHD,CAGE,OAAOy8D,UAAP,EAAmB;AACpB,aAAOJ,cAAP;AACA;AACD;AACD,CAbE,EADsB,GAevBA,cAfH;;AAiBA,IAAInD,UAAU,GAAG/5C,mBAAO,CAAC,wDAAD,CAAP,EAAjB;;AAEA,IAAIu9C,QAAQ,GAAG/7D,MAAM,CAAC60D,cAAP,IAAyB,UAAU/pD,CAAV,EAAa;AAAE,SAAOA,CAAC,CAACkxD,SAAT;AAAqB,CAA5E,C,CAA8E;;;AAE9E,IAAIC,SAAS,GAAG,EAAhB;AAEA,IAAIC,UAAU,GAAG,OAAO38C,UAAP,KAAsB,WAAtB,GAAoCnjB,SAApC,GAAgD2/D,QAAQ,CAACx8C,UAAD,CAAzE;AAEA,IAAI48C,UAAU,GAAG;AAChB,sBAAoB,OAAOC,cAAP,KAA0B,WAA1B,GAAwChgE,SAAxC,GAAoDggE,cADxD;AAEhB,aAAWl7D,KAFK;AAGhB,mBAAiB,OAAOm7D,WAAP,KAAuB,WAAvB,GAAqCjgE,SAArC,GAAiDigE,WAHlD;AAIhB,8BAA4B9D,UAAU,GAAGwD,QAAQ,CAAC,GAAGj7D,MAAM,CAACvC,QAAV,GAAD,CAAX,GAAqCnC,SAJ3D;AAKhB,sCAAoCA,SALpB;AAMhB,qBAAmB6/D,SANH;AAOhB,sBAAoBA,SAPJ;AAQhB,8BAA4BA,SARZ;AAShB,8BAA4BA,SATZ;AAUhB,eAAa,OAAOK,OAAP,KAAmB,WAAnB,GAAiClgE,SAAjC,GAA6CkgE,OAV1C;AAWhB,cAAY,OAAOC,MAAP,KAAkB,WAAlB,GAAgCngE,SAAhC,GAA4CmgE,MAXxC;AAYhB,eAAalb,OAZG;AAahB,gBAAc,OAAOmb,QAAP,KAAoB,WAApB,GAAkCpgE,SAAlC,GAA8CogE,QAb5C;AAchB,YAAUj1D,IAdM;AAehB,iBAAek1D,SAfC;AAgBhB,0BAAwB/7B,kBAhBR;AAiBhB,iBAAeg8B,SAjBC;AAkBhB,0BAAwBl8B,kBAlBR;AAmBhB,aAAW5+B,KAnBK;AAoBhB,YAAU+6D,IApBM;AAoBA;AAChB,iBAAeC,SArBC;AAsBhB,oBAAkB,OAAOC,YAAP,KAAwB,WAAxB,GAAsCzgE,SAAtC,GAAkDygE,YAtBpD;AAuBhB,oBAAkB,OAAOC,YAAP,KAAwB,WAAxB,GAAsC1gE,SAAtC,GAAkD0gE,YAvBpD;AAwBhB,4BAA0B,OAAOC,oBAAP,KAAgC,WAAhC,GAA8C3gE,SAA9C,GAA0D2gE,oBAxBpE;AAyBhB,gBAAc1B,SAzBE;AA0BhB,yBAAuBY,SA1BP;AA2BhB,iBAAe,OAAOe,SAAP,KAAqB,WAArB,GAAmC5gE,SAAnC,GAA+C4gE,SA3B9C;AA4BhB,kBAAgB,OAAOC,UAAP,KAAsB,WAAtB,GAAoC7gE,SAApC,GAAgD6gE,UA5BhD;AA6BhB,kBAAgB,OAAOC,UAAP,KAAsB,WAAtB,GAAoC9gE,SAApC,GAAgD8gE,UA7BhD;AA8BhB,gBAAcC,QA9BE;AA+BhB,aAAWtyD,KA/BK;AAgChB,yBAAuB0tD,UAAU,GAAGwD,QAAQ,CAACA,QAAQ,CAAC,GAAGj7D,MAAM,CAACvC,QAAV,GAAD,CAAT,CAAX,GAA+CnC,SAhChE;AAiChB,YAAU,OAAO4O,IAAP,KAAgB,QAAhB,GAA2BA,IAA3B,GAAkC5O,SAjC5B;AAkChB,WAAS,OAAO6U,GAAP,KAAe,WAAf,GAA6B7U,SAA7B,GAAyC6U,GAlClC;AAmChB,4BAA0B,OAAOA,GAAP,KAAe,WAAf,IAA8B,CAACsnD,UAA/B,GAA4Cn8D,SAA5C,GAAwD2/D,QAAQ,CAAC,IAAI9qD,GAAJ,GAAUnQ,MAAM,CAACvC,QAAjB,GAAD,CAnC1E;AAoChB,YAAUsN,IApCM;AAqChB,cAAYlL,MArCI;AAsChB,cAAYX,MAtCI;AAuChB,kBAAgBgd,UAvCA;AAwChB,gBAAcQ,QAxCE;AAyChB,eAAa,OAAOqG,OAAP,KAAmB,WAAnB,GAAiCznB,SAAjC,GAA6CynB,OAzC1C;AA0ChB,aAAW,OAAOu5C,KAAP,KAAiB,WAAjB,GAA+BhhE,SAA/B,GAA2CghE,KA1CtC;AA2ChB,kBAAgB7lB,UA3CA;AA4ChB,sBAAoB8lB,cA5CJ;AA6ChB,eAAa,OAAOC,OAAP,KAAmB,WAAnB,GAAiClhE,SAAjC,GAA6CkhE,OA7C1C;AA8ChB,cAAYxgD,MA9CI;AA+ChB,WAAS,OAAOrF,GAAP,KAAe,WAAf,GAA6Brb,SAA7B,GAAyCqb,GA/ClC;AAgDhB,4BAA0B,OAAOA,GAAP,KAAe,WAAf,IAA8B,CAAC8gD,UAA/B,GAA4Cn8D,SAA5C,GAAwD2/D,QAAQ,CAAC,IAAItkD,GAAJ,GAAU3W,MAAM,CAACvC,QAAjB,GAAD,CAhD1E;AAiDhB,yBAAuB,OAAOg/D,iBAAP,KAA6B,WAA7B,GAA2CnhE,SAA3C,GAAuDmhE,iBAjD9D;AAkDhB,cAAY38B,MAlDI;AAmDhB,+BAA6B23B,UAAU,GAAGwD,QAAQ,CAAC,GAAGj7D,MAAM,CAACvC,QAAV,GAAD,CAAX,GAAqCnC,SAnD5D;AAoDhB,cAAYm8D,UAAU,GAAGz3D,MAAH,GAAY1E,SApDlB;AAqDhB,mBAAiB++D,YArDD;AAsDhB,sBAAoBQ,cAtDJ;AAuDhB,kBAAgBO,UAvDA;AAwDhB,iBAAeZ,UAxDC;AAyDhB,kBAAgB,OAAO/7C,UAAP,KAAsB,WAAtB,GAAoCnjB,SAApC,GAAgDmjB,UAzDhD;AA0DhB,yBAAuB,OAAOi+C,iBAAP,KAA6B,WAA7B,GAA2CphE,SAA3C,GAAuDohE,iBA1D9D;AA2DhB,mBAAiB,OAAOC,WAAP,KAAuB,WAAvB,GAAqCrhE,SAArC,GAAiDqhE,WA3DlD;AA4DhB,mBAAiB,OAAOjtC,WAAP,KAAuB,WAAvB,GAAqCp0B,SAArC,GAAiDo0B,WA5DlD;AA6DhB,gBAAcktC,QA7DE;AA8DhB,eAAa,OAAOxoD,OAAP,KAAmB,WAAnB,GAAiC9Y,SAAjC,GAA6C8Y,OA9D1C;AA+DhB,eAAa,OAAOyoD,OAAP,KAAmB,WAAnB,GAAiCvhE,SAAjC,GAA6CuhE,OA/D1C;AAgEhB,eAAa,OAAOC,OAAP,KAAmB,WAAnB,GAAiCxhE,SAAjC,GAA6CwhE;AAhE1C,CAAjB;;AAmEA,IAAIC,MAAM,GAAG,SAASA,MAAT,CAAgBz3D,IAAhB,EAAsB;AAClC,MAAIzJ,KAAJ;;AACA,MAAIyJ,IAAI,KAAK,iBAAb,EAAgC;AAC/BzJ,SAAK,GAAG4+D,qBAAqB,CAAC,sBAAD,CAA7B;AACA,GAFD,MAEO,IAAIn1D,IAAI,KAAK,qBAAb,EAAoC;AAC1CzJ,SAAK,GAAG4+D,qBAAqB,CAAC,iBAAD,CAA7B;AACA,GAFM,MAEA,IAAIn1D,IAAI,KAAK,0BAAb,EAAyC;AAC/CzJ,SAAK,GAAG4+D,qBAAqB,CAAC,uBAAD,CAA7B;AACA,GAFM,MAEA,IAAIn1D,IAAI,KAAK,kBAAb,EAAiC;AACvC,QAAIR,EAAE,GAAGi4D,MAAM,CAAC,0BAAD,CAAf;;AACA,QAAIj4D,EAAJ,EAAQ;AACPjJ,WAAK,GAAGiJ,EAAE,CAACwT,SAAX;AACA;AACD,GALM,MAKA,IAAIhT,IAAI,KAAK,0BAAb,EAAyC;AAC/C,QAAI0T,GAAG,GAAG+jD,MAAM,CAAC,kBAAD,CAAhB;;AACA,QAAI/jD,GAAJ,EAAS;AACRnd,WAAK,GAAGo/D,QAAQ,CAACjiD,GAAG,CAACV,SAAL,CAAhB;AACA;AACD;;AAED+iD,YAAU,CAAC/1D,IAAD,CAAV,GAAmBzJ,KAAnB;AAEA,SAAOA,KAAP;AACA,CAvBD;;AAyBA,IAAImhE,cAAc,GAAG;AACpB,4BAA0B,CAAC,aAAD,EAAgB,WAAhB,CADN;AAEpB,sBAAoB,CAAC,OAAD,EAAU,WAAV,CAFA;AAGpB,0BAAwB,CAAC,OAAD,EAAU,WAAV,EAAuB,SAAvB,CAHJ;AAIpB,0BAAwB,CAAC,OAAD,EAAU,WAAV,EAAuB,SAAvB,CAJJ;AAKpB,uBAAqB,CAAC,OAAD,EAAU,WAAV,EAAuB,MAAvB,CALD;AAMpB,yBAAuB,CAAC,OAAD,EAAU,WAAV,EAAuB,QAAvB,CANH;AAOpB,8BAA4B,CAAC,eAAD,EAAkB,WAAlB,CAPR;AAQpB,sBAAoB,CAAC,wBAAD,EAA2B,WAA3B,CARA;AASpB,+BAA6B,CAAC,wBAAD,EAA2B,WAA3B,EAAwC,WAAxC,CATT;AAUpB,wBAAsB,CAAC,SAAD,EAAY,WAAZ,CAVF;AAWpB,yBAAuB,CAAC,UAAD,EAAa,WAAb,CAXH;AAYpB,qBAAmB,CAAC,MAAD,EAAS,WAAT,CAZC;AAapB,sBAAoB,CAAC,OAAD,EAAU,WAAV,CAbA;AAcpB,0BAAwB,CAAC,WAAD,EAAc,WAAd,CAdJ;AAepB,6BAA2B,CAAC,cAAD,EAAiB,WAAjB,CAfP;AAgBpB,6BAA2B,CAAC,cAAD,EAAiB,WAAjB,CAhBP;AAiBpB,yBAAuB,CAAC,UAAD,EAAa,WAAb,CAjBH;AAkBpB,iBAAe,CAAC,mBAAD,EAAsB,WAAtB,CAlBK;AAmBpB,0BAAwB,CAAC,mBAAD,EAAsB,WAAtB,EAAmC,WAAnC,CAnBJ;AAoBpB,0BAAwB,CAAC,WAAD,EAAc,WAAd,CApBJ;AAqBpB,2BAAyB,CAAC,YAAD,EAAe,WAAf,CArBL;AAsBpB,2BAAyB,CAAC,YAAD,EAAe,WAAf,CAtBL;AAuBpB,iBAAe,CAAC,MAAD,EAAS,OAAT,CAvBK;AAwBpB,qBAAmB,CAAC,MAAD,EAAS,WAAT,CAxBC;AAyBpB,oBAAkB,CAAC,KAAD,EAAQ,WAAR,CAzBE;AA0BpB,uBAAqB,CAAC,QAAD,EAAW,WAAX,CA1BD;AA2BpB,uBAAqB,CAAC,QAAD,EAAW,WAAX,CA3BD;AA4BpB,yBAAuB,CAAC,QAAD,EAAW,WAAX,EAAwB,UAAxB,CA5BH;AA6BpB,wBAAsB,CAAC,QAAD,EAAW,WAAX,EAAwB,SAAxB,CA7BF;AA8BpB,wBAAsB,CAAC,SAAD,EAAY,WAAZ,CA9BF;AA+BpB,yBAAuB,CAAC,SAAD,EAAY,WAAZ,EAAyB,MAAzB,CA/BH;AAgCpB,mBAAiB,CAAC,SAAD,EAAY,KAAZ,CAhCG;AAiCpB,sBAAoB,CAAC,SAAD,EAAY,QAAZ,CAjCA;AAkCpB,uBAAqB,CAAC,SAAD,EAAY,SAAZ,CAlCD;AAmCpB,2BAAyB,CAAC,YAAD,EAAe,WAAf,CAnCL;AAoCpB,+BAA6B,CAAC,gBAAD,EAAmB,WAAnB,CApCT;AAqCpB,uBAAqB,CAAC,QAAD,EAAW,WAAX,CArCD;AAsCpB,oBAAkB,CAAC,KAAD,EAAQ,WAAR,CAtCE;AAuCpB,kCAAgC,CAAC,mBAAD,EAAsB,WAAtB,CAvCZ;AAwCpB,uBAAqB,CAAC,QAAD,EAAW,WAAX,CAxCD;AAyCpB,uBAAqB,CAAC,QAAD,EAAW,WAAX,CAzCD;AA0CpB,4BAA0B,CAAC,aAAD,EAAgB,WAAhB,CA1CN;AA2CpB,2BAAyB,CAAC,YAAD,EAAe,WAAf,CA3CL;AA4CpB,0BAAwB,CAAC,WAAD,EAAc,WAAd,CA5CJ;AA6CpB,2BAAyB,CAAC,YAAD,EAAe,WAAf,CA7CL;AA8CpB,kCAAgC,CAAC,mBAAD,EAAsB,WAAtB,CA9CZ;AA+CpB,4BAA0B,CAAC,aAAD,EAAgB,WAAhB,CA/CN;AAgDpB,4BAA0B,CAAC,aAAD,EAAgB,WAAhB,CAhDN;AAiDpB,yBAAuB,CAAC,UAAD,EAAa,WAAb,CAjDH;AAkDpB,wBAAsB,CAAC,SAAD,EAAY,WAAZ,CAlDF;AAmDpB,wBAAsB,CAAC,SAAD,EAAY,WAAZ;AAnDF,CAArB;;AAsDA,IAAIz+B,IAAI,GAAG7gB,mBAAO,CAAC,4DAAD,CAAlB;;AACA,IAAIg8C,MAAM,GAAGh8C,mBAAO,CAAC,4CAAD,CAApB;;AACA,IAAIu/C,OAAO,GAAG1+B,IAAI,CAACplB,IAAL,CAAU+gD,QAAQ,CAAC/gD,IAAnB,EAAyB/Y,KAAK,CAACkY,SAAN,CAAgBghB,MAAzC,CAAd;AACA,IAAI4jC,YAAY,GAAG3+B,IAAI,CAACplB,IAAL,CAAU+gD,QAAQ,CAAC/6B,KAAnB,EAA0B/+B,KAAK,CAACkY,SAAN,CAAgB7T,MAA1C,CAAnB;AACA,IAAI04D,QAAQ,GAAG5+B,IAAI,CAACplB,IAAL,CAAU+gD,QAAQ,CAAC/gD,IAAnB,EAAyB2mB,MAAM,CAACxnB,SAAP,CAAiBsD,OAA1C,CAAf;AACA,IAAIwhD,SAAS,GAAG7+B,IAAI,CAACplB,IAAL,CAAU+gD,QAAQ,CAAC/gD,IAAnB,EAAyB2mB,MAAM,CAACxnB,SAAP,CAAiBhU,KAA1C,CAAhB;AAEA;;AACA,IAAIqoC,UAAU,GAAG,oGAAjB;AACA,IAAID,YAAY,GAAG,UAAnB;AAA+B;;AAC/B,IAAIO,YAAY,GAAG,SAASA,YAAT,CAAsBxB,MAAtB,EAA8B;AAChD,MAAIr4B,KAAK,GAAGgqD,SAAS,CAAC3xB,MAAD,EAAS,CAAT,EAAY,CAAZ,CAArB;AACA,MAAIl9B,IAAI,GAAG6uD,SAAS,CAAC3xB,MAAD,EAAS,CAAC,CAAV,CAApB;;AACA,MAAIr4B,KAAK,KAAK,GAAV,IAAiB7E,IAAI,KAAK,GAA9B,EAAmC;AAClC,UAAM,IAAI8rD,YAAJ,CAAiB,gDAAjB,CAAN;AACA,GAFD,MAEO,IAAI9rD,IAAI,KAAK,GAAT,IAAgB6E,KAAK,KAAK,GAA9B,EAAmC;AACzC,UAAM,IAAIinD,YAAJ,CAAiB,gDAAjB,CAAN;AACA;;AACD,MAAIhqD,MAAM,GAAG,EAAb;AACA8sD,UAAQ,CAAC1xB,MAAD,EAASkB,UAAT,EAAqB,UAAUlxB,KAAV,EAAiBlB,MAAjB,EAAyB+oB,KAAzB,EAAgC6J,SAAhC,EAA2C;AACvE98B,UAAM,CAACA,MAAM,CAAC/N,MAAR,CAAN,GAAwBghC,KAAK,GAAG65B,QAAQ,CAAChwB,SAAD,EAAYT,YAAZ,EAA0B,IAA1B,CAAX,GAA6CnyB,MAAM,IAAIkB,KAApF;AACA,GAFO,CAAR;AAGA,SAAOpL,MAAP;AACA,CAbD;AAcA;;;AAEA,IAAIgtD,gBAAgB,GAAG,SAASA,gBAAT,CAA0B/3D,IAA1B,EAAgC+4B,YAAhC,EAA8C;AACpE,MAAIi/B,aAAa,GAAGh4D,IAApB;AACA,MAAIi4D,KAAJ;;AACA,MAAI7D,MAAM,CAACsD,cAAD,EAAiBM,aAAjB,CAAV,EAA2C;AAC1CC,SAAK,GAAGP,cAAc,CAACM,aAAD,CAAtB;AACAA,iBAAa,GAAG,MAAMC,KAAK,CAAC,CAAD,CAAX,GAAiB,GAAjC;AACA;;AAED,MAAI7D,MAAM,CAAC2B,UAAD,EAAaiC,aAAb,CAAV,EAAuC;AACtC,QAAIzhE,KAAK,GAAGw/D,UAAU,CAACiC,aAAD,CAAtB;;AACA,QAAIzhE,KAAK,KAAKs/D,SAAd,EAAyB;AACxBt/D,WAAK,GAAGkhE,MAAM,CAACO,aAAD,CAAd;AACA;;AACD,QAAI,OAAOzhE,KAAP,KAAiB,WAAjB,IAAgC,CAACwiC,YAArC,EAAmD;AAClD,YAAM,IAAIm8B,UAAJ,CAAe,eAAel1D,IAAf,GAAsB,sDAArC,CAAN;AACA;;AAED,WAAO;AACNi4D,WAAK,EAAEA,KADD;AAENj4D,UAAI,EAAEg4D,aAFA;AAGNzhE,WAAK,EAAEA;AAHD,KAAP;AAKA;;AAED,QAAM,IAAIw+D,YAAJ,CAAiB,eAAe/0D,IAAf,GAAsB,kBAAvC,CAAN;AACA,CAzBD;;AA2BAgY,MAAM,CAACC,OAAP,GAAiB,SAAS0gB,YAAT,CAAsB34B,IAAtB,EAA4B+4B,YAA5B,EAA0C;AAC1D,MAAI,OAAO/4B,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAAChD,MAAL,KAAgB,CAAhD,EAAmD;AAClD,UAAM,IAAIk4D,UAAJ,CAAe,2CAAf,CAAN;AACA;;AACD,MAAIhvD,SAAS,CAAClJ,MAAV,GAAmB,CAAnB,IAAwB,OAAO+7B,YAAP,KAAwB,SAApD,EAA+D;AAC9D,UAAM,IAAIm8B,UAAJ,CAAe,2CAAf,CAAN;AACA;;AAED,MAAI9rC,KAAK,GAAGue,YAAY,CAAC3nC,IAAD,CAAxB;AACA,MAAIk4D,iBAAiB,GAAG9uC,KAAK,CAACpsB,MAAN,GAAe,CAAf,GAAmBosB,KAAK,CAAC,CAAD,CAAxB,GAA8B,EAAtD;AAEA,MAAI4P,SAAS,GAAG++B,gBAAgB,CAAC,MAAMG,iBAAN,GAA0B,GAA3B,EAAgCn/B,YAAhC,CAAhC;AACA,MAAIo/B,iBAAiB,GAAGn/B,SAAS,CAACh5B,IAAlC;AACA,MAAIzJ,KAAK,GAAGyiC,SAAS,CAACziC,KAAtB;AACA,MAAI6hE,kBAAkB,GAAG,KAAzB;AAEA,MAAIH,KAAK,GAAGj/B,SAAS,CAACi/B,KAAtB;;AACA,MAAIA,KAAJ,EAAW;AACVC,qBAAiB,GAAGD,KAAK,CAAC,CAAD,CAAzB;AACAL,gBAAY,CAACxuC,KAAD,EAAQuuC,OAAO,CAAC,CAAC,CAAD,EAAI,CAAJ,CAAD,EAASM,KAAT,CAAf,CAAZ;AACA;;AAED,OAAK,IAAIpiD,CAAC,GAAG,CAAR,EAAWwiD,KAAK,GAAG,IAAxB,EAA8BxiD,CAAC,GAAGuT,KAAK,CAACpsB,MAAxC,EAAgD6Y,CAAC,IAAI,CAArD,EAAwD;AACvD,QAAI4T,IAAI,GAAGL,KAAK,CAACvT,CAAD,CAAhB;AACA,QAAI/H,KAAK,GAAGgqD,SAAS,CAACruC,IAAD,EAAO,CAAP,EAAU,CAAV,CAArB;AACA,QAAIxgB,IAAI,GAAG6uD,SAAS,CAACruC,IAAD,EAAO,CAAC,CAAR,CAApB;;AACA,QACC,CACE3b,KAAK,KAAK,GAAV,IAAiBA,KAAK,KAAK,GAA3B,IAAkCA,KAAK,KAAK,GAA7C,IACI7E,IAAI,KAAK,GAAT,IAAgBA,IAAI,KAAK,GAAzB,IAAgCA,IAAI,KAAK,GAF9C,KAIG6E,KAAK,KAAK7E,IALd,EAME;AACD,YAAM,IAAI8rD,YAAJ,CAAiB,sDAAjB,CAAN;AACA;;AACD,QAAItrC,IAAI,KAAK,aAAT,IAA0B,CAAC4uC,KAA/B,EAAsC;AACrCD,wBAAkB,GAAG,IAArB;AACA;;AAEDF,qBAAiB,IAAI,MAAMzuC,IAA3B;AACA0uC,qBAAiB,GAAG,MAAMD,iBAAN,GAA0B,GAA9C;;AAEA,QAAI9D,MAAM,CAAC2B,UAAD,EAAaoC,iBAAb,CAAV,EAA2C;AAC1C5hE,WAAK,GAAGw/D,UAAU,CAACoC,iBAAD,CAAlB;AACA,KAFD,MAEO,IAAI5hE,KAAK,IAAI,IAAb,EAAmB;AACzB,UAAI,EAAEkzB,IAAI,IAAIlzB,KAAV,CAAJ,EAAsB;AACrB,YAAI,CAACwiC,YAAL,EAAmB;AAClB,gBAAM,IAAIm8B,UAAJ,CAAe,wBAAwBl1D,IAAxB,GAA+B,6CAA9C,CAAN;AACA;;AACD,eAAO,KAAKhK,SAAZ;AACA;;AACD,UAAIqjC,KAAK,IAAKxjB,CAAC,GAAG,CAAL,IAAWuT,KAAK,CAACpsB,MAA9B,EAAsC;AACrC,YAAI08B,IAAI,GAAGL,KAAK,CAAC9iC,KAAD,EAAQkzB,IAAR,CAAhB;AACA4uC,aAAK,GAAG,CAAC,CAAC3+B,IAAV,CAFqC,CAIrC;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,YAAI2+B,KAAK,IAAI,SAAS3+B,IAAlB,IAA0B,EAAE,mBAAmBA,IAAI,CAACzgC,GAA1B,CAA9B,EAA8D;AAC7D1C,eAAK,GAAGmjC,IAAI,CAACzgC,GAAb;AACA,SAFD,MAEO;AACN1C,eAAK,GAAGA,KAAK,CAACkzB,IAAD,CAAb;AACA;AACD,OAhBD,MAgBO;AACN4uC,aAAK,GAAGjE,MAAM,CAAC79D,KAAD,EAAQkzB,IAAR,CAAd;AACAlzB,aAAK,GAAGA,KAAK,CAACkzB,IAAD,CAAb;AACA;;AAED,UAAI4uC,KAAK,IAAI,CAACD,kBAAd,EAAkC;AACjCrC,kBAAU,CAACoC,iBAAD,CAAV,GAAgC5hE,KAAhC;AACA;AACD;AACD;;AACD,SAAOA,KAAP;AACA,CA9ED,C;;;;;;;;;;;AC3PA,IAAI+hE,OAAO,GAACA,OAAO,IAAE,EAArB;AAAwBA,OAAO,CAACC,KAAR,GAAc,EAAd;;AAAiBD,OAAO,CAACE,YAAR,GAAqB,UAASp7D,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,YAAYo9B,MAAb,KAAsBp9B,CAAC,GAACo9B,MAAM,CAACp9B,CAAD,CAA9B;;AAAmC,OAAI,IAAI8vC,CAAC,GAAC9vC,CAAC,CAACJ,MAAR,EAAesjB,CAAC,GAAC,CAArB,EAAuBA,CAAC,GAAC4sB,CAAzB,EAA2B5sB,CAAC,EAA5B,EAA+B;AAAC,QAAIujB,CAAC,GAACzmC,CAAC,CAACkjB,CAAD,CAAP;AAAW,QAAGjjB,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASuY,CAAT,EAAWvjB,CAAX,EAAaljB,CAAb,CAAH,EAAmB,OAAM;AAACyY,OAAC,EAACyK,CAAH;AAAKqgB,OAAC,EAACkD;AAAP,KAAN;AAAgB;;AAAA,SAAM;AAAChuB,KAAC,EAAC,CAAC,CAAJ;AAAM8qB,KAAC,EAAC,KAAK;AAAb,GAAN;AAAsB,CAA5K;;AAA6K23B,OAAO,CAACG,UAAR,GAAmB,CAAC,CAApB;AAAsBH,OAAO,CAACI,oBAAR,GAA6B,CAAC,CAA9B;AAAgCJ,OAAO,CAACK,oBAAR,GAA6B,CAAC,CAA9B;AAAgCL,OAAO,CAACM,sBAAR,GAA+B,CAAC,CAAhC;AAC5SN,OAAO,CAAChG,cAAR,GAAuBgG,OAAO,CAACG,UAAR,IAAoB,cAAY,OAAO7+D,MAAM,CAACg5D,gBAA9C,GAA+Dh5D,MAAM,CAAC04D,cAAtE,GAAqF,UAASl1D,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,IAAEtC,KAAK,CAACkY,SAAT,IAAoB5V,CAAC,IAAExD,MAAM,CAACoZ,SAA9B,KAA0C5V,CAAC,CAACC,CAAD,CAAD,GAAKiuB,CAAC,CAAC/0B,KAAjD;AAAwD,CAApL;;AAAqL+hE,OAAO,CAACO,SAAR,GAAkB,UAASz7D,CAAT,EAAW;AAAC,SAAM,eAAa,OAAO07D,MAApB,IAA4BA,MAAM,KAAG17D,CAArC,GAAuCA,CAAvC,GAAyC,eAAa,OAAOo7B,MAApB,IAA4B,QAAMA,MAAlC,GAAyCA,MAAzC,GAAgDp7B,CAA/F;AAAiG,CAA/H;;AAAgIk7D,OAAO,CAAC9/B,MAAR,GAAe8/B,OAAO,CAACO,SAAR,CAAkB,IAAlB,CAAf;;AACrTP,OAAO,CAACS,QAAR,GAAiB,UAAS37D,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAG7vC,CAAH,EAAK;AAACiuB,KAAC,GAACgtC,OAAO,CAAC9/B,MAAV;AAAiBp7B,KAAC,GAACA,CAAC,CAACia,KAAF,CAAQ,GAAR,CAAF;;AAAe,SAAI61B,CAAC,GAAC,CAAN,EAAQA,CAAC,GAAC9vC,CAAC,CAACJ,MAAF,GAAS,CAAnB,EAAqBkwC,CAAC,EAAtB,EAAyB;AAAC,UAAI5sB,CAAC,GAACljB,CAAC,CAAC8vC,CAAD,CAAP;AAAW5sB,OAAC,IAAIgL,CAAL,KAASA,CAAC,CAAChL,CAAD,CAAD,GAAK,EAAd;AAAkBgL,OAAC,GAACA,CAAC,CAAChL,CAAD,CAAH;AAAO;;AAAAljB,KAAC,GAACA,CAAC,CAACA,CAAC,CAACJ,MAAF,GAAS,CAAV,CAAH;AAAgBkwC,KAAC,GAAC5hB,CAAC,CAACluB,CAAD,CAAH;AAAOC,KAAC,GAACA,CAAC,CAAC6vC,CAAD,CAAH;AAAO7vC,KAAC,IAAE6vC,CAAH,IAAM,QAAM7vC,CAAZ,IAAei7D,OAAO,CAAChG,cAAR,CAAuBhnC,CAAvB,EAAyBluB,CAAzB,EAA2B;AAACu8B,kBAAY,EAAC,CAAC,CAAf;AAAiBg5B,cAAQ,EAAC,CAAC,CAA3B;AAA6Bp8D,WAAK,EAAC8G;AAAnC,KAA3B,CAAf;AAAiF;AAAC,CAAvP;;AAAwPi7D,OAAO,CAACS,QAAR,CAAiB,2BAAjB,EAA6C,UAAS37D,CAAT,EAAW;AAAC,SAAOA,CAAC,GAACA,CAAD,GAAG,UAASA,CAAT,EAAWkuB,CAAX,EAAa;AAAC,WAAOgtC,OAAO,CAACE,YAAR,CAAqB,IAArB,EAA0Bp7D,CAA1B,EAA4BkuB,CAA5B,EAA+BzV,CAAtC;AAAwC,GAAjE;AAAkE,CAA3H,EAA4H,KAA5H,EAAkI,KAAlI;;AACxPyiD,OAAO,CAACU,eAAR,GAAwB,UAAS57D,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAG,QAAMluB,CAAT,EAAW,MAAM,IAAI+I,SAAJ,CAAc,2CAAyCmlB,CAAzC,GAA2C,gCAAzD,CAAN;AAAiG,MAAGjuB,CAAC,YAAYqZ,MAAhB,EAAuB,MAAM,IAAIvQ,SAAJ,CAAc,wCAAsCmlB,CAAtC,GAAwC,mCAAtD,CAAN;AAAiG,SAAOluB,CAAC,GAAC,EAAT;AAAY,CAAxR;;AACAk7D,OAAO,CAACS,QAAR,CAAiB,2BAAjB,EAA6C,UAAS37D,CAAT,EAAW;AAAC,SAAOA,CAAC,GAACA,CAAD,GAAG,UAASA,CAAT,EAAWkuB,CAAX,EAAa;AAAC,QAAIjuB,CAAC,GAACi7D,OAAO,CAACU,eAAR,CAAwB,IAAxB,EAA6B57D,CAA7B,EAA+B,UAA/B,CAAN;AAAiDA,KAAC,IAAE,EAAH;AAAM,SAAK,CAAL,KAASkuB,CAAT,KAAaA,CAAC,GAACjuB,CAAC,CAACL,MAAjB;AAAyBsuB,KAAC,GAAC7lB,IAAI,CAACge,GAAL,CAAS,CAAT,EAAWhe,IAAI,CAACe,GAAL,CAAS8kB,CAAC,GAAC,CAAX,EAAajuB,CAAC,CAACL,MAAf,CAAX,CAAF;;AAAqC,SAAI,IAAIsjB,CAAC,GAACljB,CAAC,CAACJ,MAAZ,EAAmB,IAAEsjB,CAAF,IAAK,IAAEgL,CAA1B,GAA6B,IAAGjuB,CAAC,CAAC,EAAEiuB,CAAH,CAAD,IAAQluB,CAAC,CAAC,EAAEkjB,CAAH,CAAZ,EAAkB,OAAM,CAAC,CAAP;;AAAS,WAAO,KAAGA,CAAV;AAAY,GAAlN;AAAmN,CAA5Q,EAA6Q,KAA7Q,EAAmR,KAAnR;AAA0Rg4C,OAAO,CAACS,QAAR,CAAiB,sBAAjB,EAAwC,UAAS37D,CAAT,EAAW;AAAC,SAAOA,CAAC,GAACA,CAAD,GAAG,UAASA,CAAT,EAAWkuB,CAAX,EAAa;AAAC,WAAOgtC,OAAO,CAACE,YAAR,CAAqB,IAArB,EAA0Bp7D,CAA1B,EAA4BkuB,CAA5B,EAA+BqV,CAAtC;AAAwC,GAAjE;AAAkE,CAAtH,EAAuH,KAAvH,EAA6H,KAA7H;AAC1R23B,OAAO,CAACS,QAAR,CAAiB,6BAAjB,EAA+C,UAAS37D,CAAT,EAAW;AAAC,SAAOA,CAAC,GAACA,CAAD,GAAG,UAASA,CAAT,EAAWkuB,CAAX,EAAa;AAAC,QAAIjuB,CAAC,GAACi7D,OAAO,CAACU,eAAR,CAAwB,IAAxB,EAA6B57D,CAA7B,EAA+B,YAA/B,CAAN;AAAmDA,KAAC,IAAE,EAAH;AAAM,QAAIkjB,CAAC,GAACjjB,CAAC,CAACL,MAAR;AAAA,QAAe6mC,CAAC,GAACzmC,CAAC,CAACJ,MAAnB;AAA0BsuB,KAAC,GAAC7lB,IAAI,CAACge,GAAL,CAAS,CAAT,EAAWhe,IAAI,CAACe,GAAL,CAAS8kB,CAAC,GAAC,CAAX,EAAajuB,CAAC,CAACL,MAAf,CAAX,CAAF;;AAAqC,SAAI,IAAIs7B,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACuL,CAAF,IAAKvY,CAAC,GAAChL,CAAnB,GAAsB,IAAGjjB,CAAC,CAACiuB,CAAC,EAAF,CAAD,IAAQluB,CAAC,CAACk7B,CAAC,EAAF,CAAZ,EAAkB,OAAM,CAAC,CAAP;;AAAS,WAAOA,CAAC,IAAEuL,CAAV;AAAY,GAA9M;AAA+M,CAA1Q,EAA2Q,KAA3Q,EAAiR,KAAjR;AACAy0B,OAAO,CAACS,QAAR,CAAiB,yBAAjB,EAA2C,UAAS37D,CAAT,EAAW;AAAC,SAAOA,CAAC,GAACA,CAAD,GAAG,UAASA,CAAT,EAAW;AAAC,QAAIC,CAAC,GAACi7D,OAAO,CAACU,eAAR,CAAwB,IAAxB,EAA6B,IAA7B,EAAkC,QAAlC,CAAN;AAAkD,QAAG,IAAE57D,CAAF,IAAK,aAAWA,CAAnB,EAAqB,MAAM,IAAI+zC,UAAJ,CAAe,qBAAf,CAAN;AAA4C/zC,KAAC,IAAE,CAAH;;AAAK,SAAI,IAAI8vC,CAAC,GAAC,EAAV,EAAa9vC,CAAb,GAAgB,IAAGA,CAAC,GAAC,CAAF,KAAM8vC,CAAC,IAAE7vC,CAAT,GAAYD,CAAC,MAAI,CAApB,EAAsBC,CAAC,IAAEA,CAAH;;AAAK,WAAO6vC,CAAP;AAAS,GAAnM;AAAoM,CAA3P,EAA4P,KAA5P,EAAkQ,KAAlQ;AAAyQ,IAAI+rB,QAAQ,GAAC,CAAC,CAAd;AAAA,IAAgBC,IAAI,GAACA,IAAI,IAAE,EAA3B;AAA8BA,IAAI,CAAC1gC,MAAL,GAAY,QAAM7b,IAAlB;;AAAuBu8C,IAAI,CAACC,KAAL,GAAW,UAAS/7D,CAAT,EAAW;AAAC,SAAO,KAAK,CAAL,KAASA,CAAhB;AAAkB,CAAzC;;AAA0C87D,IAAI,CAAC9jD,QAAL,GAAc,UAAShY,CAAT,EAAW;AAAC,SAAM,YAAU,OAAOA,CAAvB;AAAyB,CAAnD;;AAAoD87D,IAAI,CAACE,SAAL,GAAe,UAASh8D,CAAT,EAAW;AAAC,SAAM,aAAW,OAAOA,CAAxB;AAA0B,CAArD;;AAC5Z87D,IAAI,CAACG,QAAL,GAAc,UAASj8D,CAAT,EAAW;AAAC,SAAM,YAAU,OAAOA,CAAvB;AAAyB,CAAnD;;AAAoD87D,IAAI,CAACI,WAAL,GAAiB,UAASl8D,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,GAACA,CAAC,CAACia,KAAF,CAAQ,GAAR,CAAF;AAAeiU,GAAC,GAACA,CAAC,IAAE4tC,IAAI,CAAC1gC,MAAV;AAAiBp7B,GAAC,CAAC,CAAD,CAAD,IAAOkuB,CAAP,IAAU,eAAa,OAAOA,CAAC,CAACiuC,UAAhC,IAA4CjuC,CAAC,CAACiuC,UAAF,CAAa,SAAOn8D,CAAC,CAAC,CAAD,CAArB,CAA5C;;AAAsE,OAAI,IAAI8vC,CAAR,EAAU9vC,CAAC,CAACJ,MAAF,KAAWkwC,CAAC,GAAC9vC,CAAC,CAACM,KAAF,EAAb,CAAV,GAAmC,CAACN,CAAC,CAACJ,MAAH,IAAWk8D,IAAI,CAACC,KAAL,CAAW97D,CAAX,CAAX,GAAyBiuB,CAAC,CAAC4hB,CAAD,CAAD,GAAK7vC,CAA9B,GAAgCiuB,CAAC,GAACA,CAAC,CAAC4hB,CAAD,CAAD,IAAM5hB,CAAC,CAAC4hB,CAAD,CAAD,KAAOtzC,MAAM,CAACoZ,SAAP,CAAiBk6B,CAAjB,CAAb,GAAiC5hB,CAAC,CAAC4hB,CAAD,CAAlC,GAAsC5hB,CAAC,CAAC4hB,CAAD,CAAD,GAAK,EAA7E;AAAgF,CAA1P;;AACpDgsB,IAAI,CAACM,MAAL,GAAY,UAASp8D,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,CAAC47D,QAAJ,EAAa;AAAC,QAAI3tC,CAAC,GAAC4tC,IAAI,CAAC1gC,MAAL,CAAYihC,0BAAlB;AAAA,QAA6CvsB,CAAC,GAACgsB,IAAI,CAAC1gC,MAAL,CAAYkhC,eAA3D;AAA2EpuC,KAAC,IAAE,KAAK,CAAL,KAASA,CAAC,CAACquC,QAAd,IAAwB//D,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCyX,CAArC,EAAuCluB,CAAvC,CAAxB,GAAkEC,CAAC,GAACiuB,CAAC,CAACluB,CAAD,CAArE,GAAyE8vC,CAAC,IAAE,KAAK,CAAL,KAASA,CAAC,CAACysB,QAAd,IAAwB//D,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCq5B,CAArC,EAAuC9vC,CAAvC,CAAxB,KAAoEC,CAAC,GAAC6vC,CAAC,CAAC9vC,CAAD,CAAvE,CAAzE;AAAqJ;;AAAA,SAAOC,CAAP;AAAS,CAAjR;;AAAkR67D,IAAI,CAACU,eAAL,GAAqB,IAArB;AAA0BV,IAAI,CAACW,KAAL,GAAW,CAAC,CAAZ;AAAcX,IAAI,CAACY,MAAL,GAAY,IAAZ;AAAiBZ,IAAI,CAACa,YAAL,GAAkB,CAAC,CAAnB;AAAqBb,IAAI,CAACc,sBAAL,GAA4B,CAAC,CAA7B;AAA+Bd,IAAI,CAACe,uBAAL,GAA6BhB,QAAQ,IAAE,CAACC,IAAI,CAACW,KAA7C;AAAmDX,IAAI,CAACgB,qCAAL,GAA2C,CAAC,CAA5C;;AAClbhB,IAAI,CAACiB,OAAL,GAAa,UAAS/8D,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAACkB,iBAAL,EAAH,EAA4B,MAAM5+D,KAAK,CAAC,8CAAD,CAAX;AAA4D,MAAG,CAACy9D,QAAD,IAAWC,IAAI,CAACmB,WAAL,CAAiBj9D,CAAjB,CAAd,EAAkC,MAAM5B,KAAK,CAAC,gBAAc4B,CAAd,GAAgB,qBAAjB,CAAX;AAAmD87D,MAAI,CAACoB,mBAAL,CAAyBl9D,CAAzB;AAA4B,CAAlO;;AAAmO87D,IAAI,CAACoB,mBAAL,GAAyB,UAASl9D,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,CAAC47D,QAAJ,EAAa;AAAC,WAAOC,IAAI,CAACqB,mBAAL,CAAyBn9D,CAAzB,CAAP;;AAAmC,SAAI,IAAIkuB,CAAC,GAACluB,CAAV,EAAY,CAACkuB,CAAC,GAACA,CAAC,CAAC4uB,SAAF,CAAY,CAAZ,EAAc5uB,CAAC,CAACkvC,WAAF,CAAc,GAAd,CAAd,CAAH,KAAuC,CAACtB,IAAI,CAACuB,eAAL,CAAqBnvC,CAArB,CAApD,GAA6E4tC,IAAI,CAACqB,mBAAL,CAAyBjvC,CAAzB,IAA4B,CAAC,CAA7B;AAA+B;;AAAA4tC,MAAI,CAACI,WAAL,CAAiBl8D,CAAjB,EAAmBC,CAAnB;AAAsB,CAA1N;;AACnO67D,IAAI,CAACwB,cAAL,GAAoB,UAASt9D,CAAT,EAAW;AAAC,MAAGA,CAAC,IAAEA,CAAC,IAAE87D,IAAI,CAAC1gC,MAAd,EAAqB,OAAO0gC,IAAI,CAACyB,eAAL,CAAqBv9D,CAAC,CAACw9D,QAAvB,CAAP;AAAwC,WAAO1B,IAAI,CAAC2B,SAAZ,KAAwB3B,IAAI,CAAC2B,SAAL,GAAe3B,IAAI,CAACyB,eAAL,CAAqBzB,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAjC,CAAvC;AAAmF,SAAO1B,IAAI,CAAC2B,SAAZ;AAAsB,CAAtM;;AAAuM3B,IAAI,CAAC4B,cAAL,GAAoB,qBAApB;AAA0C5B,IAAI,CAAC2B,SAAL,GAAe,IAAf;;AAAoB3B,IAAI,CAACyB,eAAL,GAAqB,UAASv9D,CAAT,EAAW;AAAC,SAAM,CAACA,CAAC,GAACA,CAAC,CAAC29D,aAAF,IAAiB39D,CAAC,CAAC29D,aAAF,CAAgB,eAAhB,CAApB,MAAwD39D,CAAC,GAACA,CAAC,CAAC49D,KAAF,IAAS59D,CAAC,CAAC69D,YAAF,CAAe,OAAf,CAAnE,KAA6F/B,IAAI,CAAC4B,cAAL,CAAoBt+C,IAApB,CAAyBpf,CAAzB,CAA7F,GAAyHA,CAAzH,GAA2H,EAAjI;AAAoI,CAArK;;AAAsK87D,IAAI,CAACgC,gBAAL,GAAsB,6BAAtB;;AAC3ahC,IAAI,CAAClhD,MAAL,GAAY,UAAS5a,CAAT,EAAW;AAAC,MAAG,CAAC87D,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,CAAD,IAAmB,CAACA,CAApB,IAAuB,CAAC,CAAD,IAAIA,CAAC,CAAC+9D,MAAF,CAASjC,IAAI,CAACgC,gBAAd,CAA9B,EAA8D,MAAM1/D,KAAK,CAAC,2BAAD,CAAX;AAAyC,MAAG,CAAC09D,IAAI,CAACkC,qBAAL,EAAJ,EAAiC,MAAM5/D,KAAK,CAAC,YAAU4B,CAAV,GAAY,0XAAb,CAAX;AAChK,MAAG87D,IAAI,CAACmC,kBAAL,CAAwBC,UAA3B,EAAsC,MAAM9/D,KAAK,CAAC,iDAAD,CAAX;AAA+D09D,MAAI,CAACmC,kBAAL,CAAwBC,UAAxB,GAAmCl+D,CAAnC;;AAAqC,MAAG,CAAC67D,QAAJ,EAAa;AAAC,QAAGC,IAAI,CAACmB,WAAL,CAAiBj9D,CAAjB,CAAH,EAAuB,MAAM5B,KAAK,CAAC,gBAAc4B,CAAd,GAAgB,qBAAjB,CAAX;AAAmD,WAAO87D,IAAI,CAACqB,mBAAL,CAAyBn9D,CAAzB,CAAP;AAAmC;AAAC,CADtQ;;AACuQ87D,IAAI,CAAClhD,MAAL,CAAY/e,GAAZ,GAAgB,UAASmE,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAAClhD,MAAL,CAAYujD,YAAZ,CAAyBn+D,CAAzB,CAAP;AAAmC,CAA/D;;AACvQ87D,IAAI,CAAClhD,MAAL,CAAYujD,YAAZ,GAAyB,UAASn+D,CAAT,EAAW;AAAC,MAAG,CAAC67D,QAAJ,EAAa;AAAC,QAAG77D,CAAC,IAAI87D,IAAI,CAACsC,cAAb,EAA4B,OAAOtC,IAAI,CAACsC,cAAL,CAAoBp+D,CAApB,EAAuB6a,OAA9B;AAAsC,QAAG,CAACihD,IAAI,CAACqB,mBAAL,CAAyBn9D,CAAzB,CAAJ,EAAgC,OAAOA,CAAC,GAAC87D,IAAI,CAACuB,eAAL,CAAqBr9D,CAArB,CAAF,EAA0B,QAAMA,CAAN,GAAQA,CAAR,GAAU,IAA3C;AAAgD;;AAAA,SAAO,IAAP;AAAY,CAAjN;;AAAkN87D,IAAI,CAACuC,UAAL,GAAgB;AAACC,KAAG,EAAC,KAAL;AAAWC,MAAI,EAAC;AAAhB,CAAhB;AAAwCzC,IAAI,CAACmC,kBAAL,GAAwB,IAAxB;;AAA6BnC,IAAI,CAACkB,iBAAL,GAAuB,YAAU;AAAC,SAAOlB,IAAI,CAACkC,qBAAL,MAA8BlC,IAAI,CAAC0C,oBAAL,EAArC;AAAiE,CAAnG;;AAAoG1C,IAAI,CAACkC,qBAAL,GAA2B,YAAU;AAAC,SAAM,CAAC,CAAClC,IAAI,CAACmC,kBAAP,IAA2BnC,IAAI,CAACmC,kBAAL,CAAwBloD,IAAxB,IAA8B+lD,IAAI,CAACuC,UAAL,CAAgBE,IAA/E;AAAoF,CAA1H;;AAC3XzC,IAAI,CAAC0C,oBAAL,GAA0B,YAAU;AAAC,MAAG1C,IAAI,CAACmC,kBAAL,IAAyBnC,IAAI,CAACmC,kBAAL,CAAwBloD,IAAxB,IAA8B+lD,IAAI,CAACuC,UAAL,CAAgBC,GAA1E,EAA8E,OAAM,CAAC,CAAP;AAAS,MAAIt+D,CAAC,GAAC87D,IAAI,CAAC1gC,MAAL,CAAY8/B,OAAlB;AAA0B,SAAOl7D,CAAC,GAAC,cAAY,OAAOA,CAAC,CAACy+D,oBAArB,GAA0C,CAAC,CAA3C,GAA6C,CAAC,CAACz+D,CAAC,CAACy+D,oBAAF,EAAhD,GAAyE,CAAC,CAAlF;AAAoF,CAA1O;;AACA3C,IAAI,CAAClhD,MAAL,CAAY8jD,sBAAZ,GAAmC,YAAU;AAAC,MAAG,CAAC7C,QAAD,IAAW,CAACC,IAAI,CAACkC,qBAAL,EAAf,EAA4C,MAAM5/D,KAAK,CAAC,6EAAD,CAAX;AAA2F,MAAG,CAACy9D,QAAD,IAAW,CAACC,IAAI,CAACmC,kBAAL,CAAwBC,UAAvC,EAAkD,MAAM9/D,KAAK,CAAC,yEAAD,CAAX;AAAuF09D,MAAI,CAACmC,kBAAL,CAAwBS,sBAAxB,GAA+C,CAAC,CAAhD;AAAkD,CAAhX;;AACA5C,IAAI,CAAC6C,eAAL,GAAqB,UAAS3+D,CAAT,EAAW;AAAC,MAAG,CAAC67D,QAAJ,EAAa;AAAC,QAAG,CAACC,IAAI,CAAC0C,oBAAL,EAAJ,EAAgC,MAAMpgE,KAAK,CAAC,mEAAD,CAAX;AAAiF,QAAG09D,IAAI,CAACmC,kBAAL,IAAyBnC,IAAI,CAACmC,kBAAL,CAAwBC,UAApD,EAA+D,MAAM9/D,KAAK,CAAC,0DAAD,CAAX;AAAwE,QAAG4B,CAAC,IAAI87D,IAAI,CAACsC,cAAb,EAA4B,MAAMhgE,KAAK,CAAC,4BAA0B4B,CAA1B,GAA4B,mBAA7B,CAAX;AAA8D;;AAAA,MAAG87D,IAAI,CAACmC,kBAAR,EAA2BnC,IAAI,CAACmC,kBAAL,CAAwBC,UAAxB,GAAmCl+D,CAAnC,CAA3B,KAAoE;AAAC,QAAIC,CAAC,GAAC67D,IAAI,CAAC1gC,MAAL,CAAY8/B,OAAlB;AAA0B,QAAG,CAACj7D,CAAD,IAAI,cAAY,OAAOA,CAAC,CAACw+D,oBAA5B,EAAiD,MAAMrgE,KAAK,CAAC,4BAC7hB4B,CAD6hB,GAC3hB,gCAD0hB,CAAX;AAC7eC,KAAC,GAACA,CAAC,CAAC+a,OAAF,CAAU/a,CAAC,CAACw+D,oBAAF,EAAV,CAAF;AAAsC3C,QAAI,CAACsC,cAAL,CAAoBp+D,CAApB,IAAuB;AAAC6a,aAAO,EAAC5a,CAAT;AAAW8V,UAAI,EAAC+lD,IAAI,CAACuC,UAAL,CAAgBC,GAAhC;AAAoCM,cAAQ,EAAC5+D;AAA7C,KAAvB;AAAuE;AAAC,CADlJ;;AACmJ87D,IAAI,CAAC+C,WAAL,GAAiB,UAAS7+D,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAACe,uBAAR,EAAgC,MAAM78D,CAAC,GAACA,CAAC,IAAE,EAAL,EAAQ5B,KAAK,CAAC,yDAAuD4B,CAAC,GAAC,OAAKA,CAAN,GAAQ,GAAhE,CAAD,CAAnB;AAA2F,CAAxJ;;AAAyJ87D,IAAI,CAACgD,cAAL,GAAoB,UAAS9+D,CAAT,EAAW,CAAE,CAAjC;;AAC5S67D,QAAQ,KAAGC,IAAI,CAACmB,WAAL,GAAiB,UAASj9D,CAAT,EAAW;AAAC,SAAOA,CAAC,IAAI87D,IAAI,CAACsC,cAAV,IAA0B,CAACtC,IAAI,CAACqB,mBAAL,CAAyBn9D,CAAzB,CAAD,IAA8B87D,IAAI,CAACiD,eAAL,CAAqBjD,IAAI,CAACuB,eAAL,CAAqBr9D,CAArB,CAArB,CAA/D;AAA6G,CAA1I,EAA2I87D,IAAI,CAACqB,mBAAL,GAAyB;AAAC,iBAAc,CAAC;AAAhB,CAAvK,CAAR;;AAAmMrB,IAAI,CAACuB,eAAL,GAAqB,UAASr9D,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAACA,CAAC,CAACia,KAAF,CAAQ,GAAR,CAAF;AAAeha,GAAC,GAACA,CAAC,IAAE67D,IAAI,CAAC1gC,MAAV;;AAAiB,OAAI,IAAIlN,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACluB,CAAC,CAACJ,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,IAAGjuB,CAAC,GAACA,CAAC,CAACD,CAAC,CAACkuB,CAAD,CAAF,CAAH,EAAU,CAAC4tC,IAAI,CAACiD,eAAL,CAAqB9+D,CAArB,CAAd,EAAsC,OAAO,IAAP;;AAAY,SAAOA,CAAP;AAAS,CAAzJ;;AAA0J67D,IAAI,CAACkD,SAAL,GAAe,UAASh/D,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAACA,CAAC,IAAE67D,IAAI,CAAC1gC,MAAV;;AAAiB,OAAI,IAAIlN,CAAR,IAAaluB,CAAb,EAAeC,CAAC,CAACiuB,CAAD,CAAD,GAAKluB,CAAC,CAACkuB,CAAD,CAAN;AAAU,CAAvE;;AAC7V4tC,IAAI,CAACmD,aAAL,GAAmB,UAASj/D,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,GAAC+rB,QAAD,IAAWC,IAAI,CAACoD,oBAAhB,IAAsCpD,IAAI,CAACqD,YAAL,CAAkBF,aAAlB,CAAgCj/D,CAAhC,EAAkCC,CAAlC,EAAoCiuB,CAApC,EAAsC4hB,CAAtC,CAAtC;AAA+E,CAApH;;AAAqHgsB,IAAI,CAACsD,mBAAL,GAAyB,CAAC,CAA1B;;AAA4BtD,IAAI,CAACuD,aAAL,GAAmB,UAASr/D,CAAT,EAAW;AAAC87D,MAAI,CAAC1gC,MAAL,CAAY9G,OAAZ,IAAqBwnC,IAAI,CAAC1gC,MAAL,CAAY9G,OAAZ,CAAoBgO,KAApB,CAA0BtiC,CAA1B,CAArB;AAAkD,CAAjF;;AACjJ87D,IAAI,CAAC9gD,OAAL,GAAa,UAAShb,CAAT,EAAW;AAAC,MAAG,CAAC67D,QAAJ,EAAa;AAACC,QAAI,CAACsD,mBAAL,IAA0BtD,IAAI,CAACqD,YAAL,CAAkBG,SAAlB,CAA4Bt/D,CAA5B,CAA1B;;AAAyD,QAAG87D,IAAI,CAACmB,WAAL,CAAiBj9D,CAAjB,CAAH,EAAuB;AAAC,UAAG87D,IAAI,CAACkB,iBAAL,EAAH,EAA4B,OAAOlB,IAAI,CAAClhD,MAAL,CAAYujD,YAAZ,CAAyBn+D,CAAzB,CAAP;AAAmC,KAAvF,MAA4F,IAAG87D,IAAI,CAACsD,mBAAR,EAA4B;AAAC,UAAIn/D,CAAC,GAAC67D,IAAI,CAACmC,kBAAX;AAA8BnC,UAAI,CAACmC,kBAAL,GAAwB,IAAxB;;AAA6B,UAAG;AAACnC,YAAI,CAACqD,YAAL,CAAkBI,KAAlB,CAAwBv/D,CAAxB;AAA2B,OAA/B,SAAsC;AAAC87D,YAAI,CAACmC,kBAAL,GAAwBh+D,CAAxB;AAA0B;AAAC;;AAAA,WAAO,IAAP;AAAY;AAAC,CAAnW;;AAAoW67D,IAAI,CAAC0D,WAAL,GAAiB,UAASx/D,CAAT,EAAW;AAAC,SAAM,EAAN;AAAS,CAAtC;;AAAuC87D,IAAI,CAAC2D,QAAL,GAAc,EAAd;;AAAiB3D,IAAI,CAAC4D,YAAL,GAAkB,YAAU,CAAE,CAA9B;;AAC5Z5D,IAAI,CAAC6D,cAAL,GAAoB,YAAU;AAAC,QAAMvhE,KAAK,CAAC,+BAAD,CAAX;AAA8C,CAA7E;;AAA8E09D,IAAI,CAAC8D,kBAAL,GAAwB,UAAS5/D,CAAT,EAAW;AAACA,GAAC,CAAC6/D,SAAF,GAAY,KAAK,CAAjB;;AAAmB7/D,GAAC,CAAC8/D,WAAF,GAAc,YAAU;AAAC,QAAG9/D,CAAC,CAAC6/D,SAAL,EAAe,OAAO7/D,CAAC,CAAC6/D,SAAT;AAAmB/D,QAAI,CAACW,KAAL,KAAaX,IAAI,CAACiE,uBAAL,CAA6BjE,IAAI,CAACiE,uBAAL,CAA6BngE,MAA1D,IAAkEI,CAA/E;AAAkF,WAAOA,CAAC,CAAC6/D,SAAF,GAAY,IAAI7/D,CAAJ,EAAnB;AAAyB,GAAtK;AAAuK,CAA9N;;AAA+N87D,IAAI,CAACiE,uBAAL,GAA6B,EAA7B;AAAgCjE,IAAI,CAACkE,sBAAL,GAA4B,CAAC,CAA7B;AAA+BlE,IAAI,CAACmE,mBAAL,GAAyBnE,IAAI,CAACW,KAA9B;AAAoCX,IAAI,CAACsC,cAAL,GAAoB,EAApB;AAAuBtC,IAAI,CAACoD,oBAAL,GAA0B,CAACrD,QAAD,IAAWC,IAAI,CAACsD,mBAA1C;AAA8DtD,IAAI,CAACoE,SAAL,GAAe,QAAf;AACrepE,IAAI,CAACqE,4BAAL,GAAkC,CAAC,CAAnC;AAAqCrE,IAAI,CAACsE,qBAAL,GAA2B,EAA3B;AAA8BtE,IAAI,CAACuE,UAAL,GAAgB,cAAhB;AAA+BvE,IAAI,CAACwE,gBAAL,GAAsB,IAAtB;;AAA2BxE,IAAI,CAACyE,qBAAL,GAA2B,YAAU;AAAC,MAAG,QAAMzE,IAAI,CAACwE,gBAAd,EAA+B;AAAC,QAAG;AAAC,UAAItgE,CAAC,GAAC,CAACm5D,IAAI,CAAC,4EAAD,CAAX;AAA0F,KAA9F,CAA8F,OAAMl5D,CAAN,EAAQ;AAACD,OAAC,GAAC,CAAC,CAAH;AAAK;;AAAA87D,QAAI,CAACwE,gBAAL,GAAsBtgE,CAAtB;AAAwB;;AAAA,SAAO87D,IAAI,CAACwE,gBAAZ;AAA6B,CAAvO;;AAAwOxE,IAAI,CAAC0E,yBAAL,GAA+B,UAASxgE,CAAT,EAAW;AAAC,SAAM,iBAAeA,CAAf,GAAiB,YAAvB;AAAoC,CAA/E;;AACrW87D,IAAI,CAAC2E,UAAL,GAAgB,UAASzgE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC67D,IAAI,CAACmC,kBAAX;;AAA8B,MAAG;AAACnC,QAAI,CAACmC,kBAAL,GAAwB;AAACC,gBAAU,EAAC,EAAZ;AAAeQ,4BAAsB,EAAC,CAAC,CAAvC;AAAyC3oD,UAAI,EAAC+lD,IAAI,CAACuC,UAAL,CAAgBE;AAA9D,KAAxB;AAA4F,QAAGzC,IAAI,CAAC3G,UAAL,CAAgBn1D,CAAhB,CAAH,EAAsB,IAAIkuB,CAAC,GAACluB,CAAC,CAACyW,IAAF,CAAO,KAAK,CAAZ,EAAc,EAAd,CAAN,CAAtB,KAAmD,IAAGqlD,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,CAAH,EAAoB87D,IAAI,CAACyE,qBAAL,OAA+BvgE,CAAC,GAAC87D,IAAI,CAAC0E,yBAAL,CAA+BxgE,CAA/B,CAAjC,GAAoEkuB,CAAC,GAAC4tC,IAAI,CAAC4E,qBAAL,CAA2BjqD,IAA3B,CAAgC,KAAK,CAArC,EAAuCzW,CAAvC,CAAtE,CAApB,KAAyI,MAAM5B,KAAK,CAAC,2BAAD,CAAX;AAAyC,QAAI0xC,CAAC,GAACgsB,IAAI,CAACmC,kBAAL,CAAwBC,UAA9B;AAAyC,QAAGpC,IAAI,CAAC9jD,QAAL,CAAc83B,CAAd,KAAkBA,CAArB,EAAuBgsB,IAAI,CAACmC,kBAAL,CAAwBS,sBAAxB,GAA+C5C,IAAI,CAACoB,mBAAL,CAAyBptB,CAAzB,EAC9e5hB,CAD8e,CAA/C,GAC5b4tC,IAAI,CAACmE,mBAAL,IAA0BzjE,MAAM,CAACmkE,IAAjC,IAAuC,YAAU,OAAOzyC,CAAxD,IAA2D,QAAMA,CAAjE,IAAoE1xB,MAAM,CAACmkE,IAAP,CAAYzyC,CAAZ,CADwX,EACzW4tC,IAAI,CAACsC,cAAL,CAAoBtuB,CAApB,IAAuB;AAACj1B,aAAO,EAACqT,CAAT;AAAWnY,UAAI,EAAC+lD,IAAI,CAACuC,UAAL,CAAgBE,IAAhC;AAAqCK,cAAQ,EAAC9C,IAAI,CAACmC,kBAAL,CAAwBC;AAAtE,KADkV,CAAvB,KACpO,MAAM9/D,KAAK,CAAC,0BAAwB0xC,CAAxB,GAA0B,GAA3B,CAAX;AAA4C,GADtL,SAC6L;AAACgsB,QAAI,CAACmC,kBAAL,GAAwBh+D,CAAxB;AAA0B;AAAC,CADnR;;AACoR67D,IAAI,CAAC4E,qBAAL,GAA2B,UAAS1gE,CAAT,EAAW;AAACm5D,MAAI,CAACn5D,CAAD,CAAJ;AAAQ,SAAM,EAAN;AAAS,CAAxD;;AAAyD87D,IAAI,CAAC8E,cAAL,GAAoB,UAAS5gE,CAAT,EAAW;AAACA,GAAC,GAACA,CAAC,CAACia,KAAF,CAAQ,GAAR,CAAF;;AAAe,OAAI,IAAIha,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACD,CAAC,CAACJ,MAAhB,GAAwB,OAAKI,CAAC,CAACC,CAAD,CAAN,GAAUD,CAAC,CAAC+B,MAAF,CAAS9B,CAAT,EAAW,CAAX,CAAV,GAAwBA,CAAC,IAAE,QAAMD,CAAC,CAACC,CAAD,CAAV,IAAeD,CAAC,CAACC,CAAC,GAAC,CAAH,CAAhB,IAAuB,QAAMD,CAAC,CAACC,CAAC,GAAC,CAAH,CAA9B,GAAoCD,CAAC,CAAC+B,MAAF,CAAS,EAAE9B,CAAX,EAAa,CAAb,CAApC,GAAoDA,CAAC,EAA7E;;AAAgF,SAAOD,CAAC,CAAC2a,IAAF,CAAO,GAAP,CAAP;AAAmB,CAA1K;;AAC7UmhD,IAAI,CAAC+E,aAAL,GAAmB,UAAS7gE,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAAC1gC,MAAL,CAAY0lC,sBAAf,EAAsC,OAAOhF,IAAI,CAAC1gC,MAAL,CAAY0lC,sBAAZ,CAAmC9gE,CAAnC,CAAP;;AAA6C,MAAG;AAAC,QAAIC,CAAC,GAAC,IAAI67D,IAAI,CAAC1gC,MAAL,CAAY2lC,cAAhB,EAAN;AAAqC9gE,KAAC,CAAC6f,IAAF,CAAO,KAAP,EAAa9f,CAAb,EAAe,CAAC,CAAhB;AAAmBC,KAAC,CAAC+gE,IAAF;AAAS,WAAO,KAAG/gE,CAAC,CAACghE,MAAL,IAAa,OAAKhhE,CAAC,CAACghE,MAApB,GAA2BhhE,CAAC,CAACihE,YAA7B,GAA0C,IAAjD;AAAsD,GAA3H,CAA2H,OAAMhzC,CAAN,EAAQ;AAAC,WAAO,IAAP;AAAY;AAAC,CAAnQ;;AACA4tC,IAAI,CAACqF,UAAL,GAAgB,UAASnhE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAACgsB,IAAI,CAAC1gC,MAAL,CAAY8/B,OAAlB;AAA0BprB,GAAC,KAAGgsB,IAAI,CAAC1gC,MAAL,CAAY8/B,OAAZ,GAAoBprB,CAAC,GAAC,EAAzB,CAAD;AAA8B,MAAI5sB,CAAC,GAAC4sB,CAAC,CAACsxB,SAAR;;AAAkB,MAAG,CAACl+C,CAAJ,EAAM;AAAC,QAAIujB,CAAC,GAACq1B,IAAI,CAAC2D,QAAL,GAAc3D,IAAI,CAACuE,UAAzB;AAAA,QAAoCnlC,CAAC,GAAC4gC,IAAI,CAAC+E,aAAL,CAAmBp6B,CAAnB,CAAtC;;AAA4D,QAAGvL,CAAH,EAAK;AAAC,OAAC,YAAU;AAAC,SAAC,GAAEi+B,IAAH,EAASj+B,CAAC,GAAC,kBAAF,GAAqBuL,CAA9B;AAAiC,OAA7C,EAA+ChwB,IAA/C,CAAoDqlD,IAAI,CAAC1gC,MAAzD;AAAiE,UAAG0gC,IAAI,CAAC1gC,MAAL,CAAYimC,UAAZ,IAAwBvF,IAAI,CAAC1gC,MAAL,CAAYimC,UAAZ,CAAuBnG,OAA/C,IAAwD,CAACY,IAAI,CAAC1gC,MAAL,CAAYimC,UAAZ,CAAuBnG,OAAvB,CAA+BkG,SAA3F,EAAqG,MAAMhjE,KAAK,CAAC,gFAA8EoJ,IAAI,CAACC,SAAL,CAAeq0D,IAAI,CAAC1gC,MAAL,CAAYimC,UAA3B,CAA/E,CAAX;AAAkIvF,UAAI,CAAC1gC,MAAL,CAAY8/B,OAAZ,CAAoBkG,SAApB,GAC3dtF,IAAI,CAAC1gC,MAAL,CAAYimC,UAAZ,CAAuBnG,OAAvB,CAA+BkG,SAD4b;AAClbtxB,OAAC,GAACgsB,IAAI,CAAC1gC,MAAL,CAAY8/B,OAAd;AAAsBh4C,OAAC,GAAC4sB,CAAC,CAACsxB,SAAJ;AAAc;AAAC;;AAAAl+C,GAAC,KAAGA,CAAC,GAAC4sB,CAAC,CAACsxB,SAAF,GAAY,UAASphE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,QAAI,CAACuD,aAAL,CAAmBp/D,CAAC,GAAC,sDAArB;AAA6E,WAAOD,CAAP;AAAS,GAArH,CAAD;AAAwH,SAAOkjB,CAAC,CAACljB,CAAD,EAAGC,CAAH,EAAKiuB,CAAL,CAAR;AAAgB,CADtN;;AAEA4tC,IAAI,CAACwF,MAAL,GAAY,UAASthE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,OAAOD,CAAb;AAAe,MAAG,YAAUC,CAAb;AAAe,QAAGD,CAAH,EAAK;AAAC,UAAGA,CAAC,YAAYtC,KAAhB,EAAsB,OAAM,OAAN;AAAc,UAAGsC,CAAC,YAAYxD,MAAhB,EAAuB,OAAOyD,CAAP;AAAS,UAAIiuB,CAAC,GAAC1xB,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+BzW,CAA/B,CAAN;AAAwC,UAAG,qBAAmBkuB,CAAtB,EAAwB,OAAM,QAAN;AAAe,UAAG,oBAAkBA,CAAlB,IAAqB,YAAU,OAAOluB,CAAC,CAACJ,MAAnB,IAA2B,eAAa,OAAOI,CAAC,CAAC+B,MAAjD,IAAyD,eAAa,OAAO/B,CAAC,CAACuhE,oBAA/E,IAAqG,CAACvhE,CAAC,CAACuhE,oBAAF,CAAuB,QAAvB,CAA9H,EAA+J,OAAM,OAAN;AAAc,UAAG,uBAAqBrzC,CAArB,IAAwB,eAAa,OAAOluB,CAAC,CAACyW,IAAtB,IAA4B,eAAa,OAAOzW,CAAC,CAACuhE,oBAAlD,IAAwE,CAACvhE,CAAC,CAACuhE,oBAAF,CAAuB,MAAvB,CAApG,EAAmI,OAAM,UAAN;AAAiB,KAA1d,MAA+d,OAAM,MAAN;AAA9e,SAClC,IAAG,cAAYthE,CAAZ,IAAe,eAAa,OAAOD,CAAC,CAACyW,IAAxC,EAA6C,OAAM,QAAN;AAAe,SAAOxW,CAAP;AAAS,CAD1E;;AAC2E67D,IAAI,CAAC0F,MAAL,GAAY,UAASxhE,CAAT,EAAW;AAAC,SAAO,SAAOA,CAAd;AAAgB,CAAxC;;AAAyC87D,IAAI,CAACiD,eAAL,GAAqB,UAAS/+D,CAAT,EAAW;AAAC,SAAO,QAAMA,CAAb;AAAe,CAAhD;;AAAiD87D,IAAI,CAAC56D,OAAL,GAAa,UAASlB,CAAT,EAAW;AAAC,SAAM,WAAS87D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAf;AAA8B,CAAvD;;AAAwD87D,IAAI,CAAC2F,WAAL,GAAiB,UAASzhE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC67D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAN;AAAqB,SAAM,WAASC,CAAT,IAAY,YAAUA,CAAV,IAAa,YAAU,OAAOD,CAAC,CAACJ,MAAlD;AAAyD,CAA3G;;AAA4Gk8D,IAAI,CAAC4F,UAAL,GAAgB,UAAS1hE,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAAC3jD,QAAL,CAAcnY,CAAd,KAAkB,cAAY,OAAOA,CAAC,CAAC2W,WAA9C;AAA0D,CAAtF;;AAAuFmlD,IAAI,CAAC3G,UAAL,GAAgB,UAASn1D,CAAT,EAAW;AAAC,SAAM,cAAY87D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAlB;AAAiC,CAA7D;;AACha87D,IAAI,CAAC3jD,QAAL,GAAc,UAASnY,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,OAAOD,CAAb;AAAe,SAAM,YAAUC,CAAV,IAAa,QAAMD,CAAnB,IAAsB,cAAYC,CAAxC;AAA0C,CAAnF;;AAAoF67D,IAAI,CAAC6F,MAAL,GAAY,UAAS3hE,CAAT,EAAW;AAAC,SAAOA,CAAC,CAAC87D,IAAI,CAAC8F,aAAN,CAAD,KAAwB5hE,CAAC,CAAC87D,IAAI,CAAC8F,aAAN,CAAD,GAAsB,EAAE9F,IAAI,CAAC+F,WAArD,CAAP;AAAyE,CAAjG;;AAAkG/F,IAAI,CAACgG,MAAL,GAAY,UAAS9hE,CAAT,EAAW;AAAC,SAAM,CAAC,CAACA,CAAC,CAAC87D,IAAI,CAAC8F,aAAN,CAAT;AAA8B,CAAtD;;AAAuD9F,IAAI,CAACiG,SAAL,GAAe,UAAS/hE,CAAT,EAAW;AAAC,WAAOA,CAAP,IAAU,qBAAoBA,CAA9B,IAAiCA,CAAC,CAACgiE,eAAF,CAAkBlG,IAAI,CAAC8F,aAAvB,CAAjC;;AAAuE,MAAG;AAAC,WAAO5hE,CAAC,CAAC87D,IAAI,CAAC8F,aAAN,CAAR;AAA6B,GAAjC,CAAiC,OAAM3hE,CAAN,EAAQ,CAAE;AAAC,CAA9I;;AAA+I67D,IAAI,CAAC8F,aAAL,GAAmB,kBAAgB,MAAIv5D,IAAI,CAACqlB,MAAL,EAAJ,KAAoB,CAApC,CAAnB;AAA0DouC,IAAI,CAAC+F,WAAL,GAAiB,CAAjB;AAAmB/F,IAAI,CAACmG,WAAL,GAAiBnG,IAAI,CAAC6F,MAAtB;AACzc7F,IAAI,CAACoG,cAAL,GAAoBpG,IAAI,CAACiG,SAAzB;;AAAmCjG,IAAI,CAACvuB,WAAL,GAAiB,UAASvtC,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC67D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAN;;AAAqB,MAAG,YAAUC,CAAV,IAAa,WAASA,CAAzB,EAA2B;AAAC,QAAG,eAAa,OAAOD,CAAC,CAAC4+B,KAAzB,EAA+B,OAAO5+B,CAAC,CAAC4+B,KAAF,EAAP;AAAiB3+B,KAAC,GAAC,WAASA,CAAT,GAAW,EAAX,GAAc,EAAhB;;AAAmB,SAAI,IAAIiuB,CAAR,IAAaluB,CAAb,EAAeC,CAAC,CAACiuB,CAAD,CAAD,GAAK4tC,IAAI,CAACvuB,WAAL,CAAiBvtC,CAAC,CAACkuB,CAAD,CAAlB,CAAL;;AAA4B,WAAOjuB,CAAP;AAAS;;AAAA,SAAOD,CAAP;AAAS,CAA9M;;AAA+M87D,IAAI,CAACqG,WAAL,GAAiB,UAASniE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOluB,CAAC,CAACyW,IAAF,CAAOgmB,KAAP,CAAaz8B,CAAC,CAAC67B,IAAf,EAAoB/yB,SAApB,CAAP;AAAsC,CAAvE;;AAClPgzD,IAAI,CAACsG,OAAL,GAAa,UAASpiE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAG,CAACluB,CAAJ,EAAM,MAAM5B,KAAK,EAAX;;AAAc,MAAG,IAAE0K,SAAS,CAAClJ,MAAf,EAAsB;AAAC,QAAIkwC,CAAC,GAACpyC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAN;AAA8C,WAAO,YAAU;AAAC,UAAIolB,CAAC,GAACxwB,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,CAAN;AAA4CpL,WAAK,CAACkY,SAAN,CAAgB7Q,OAAhB,CAAwB03B,KAAxB,CAA8BvO,CAA9B,EAAgC4hB,CAAhC;AAAmC,aAAO9vC,CAAC,CAACy8B,KAAF,CAAQx8B,CAAR,EAAUiuB,CAAV,CAAP;AAAoB,KAArH;AAAsH;;AAAA,SAAO,YAAU;AAAC,WAAOluB,CAAC,CAACy8B,KAAF,CAAQx8B,CAAR,EAAU6I,SAAV,CAAP;AAA4B,GAA9C;AAA+C,CAA3R;;AAA4RgzD,IAAI,CAACjgC,IAAL,GAAU,UAAS77B,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACspC,UAAQ,CAAC5hD,SAAT,CAAmBimB,IAAnB,IAAyB,CAAC,CAAD,IAAI27B,QAAQ,CAAC5hD,SAAT,CAAmBimB,IAAnB,CAAwBrlB,QAAxB,GAAmC5O,OAAnC,CAA2C,aAA3C,CAA7B,GAAuFk0D,IAAI,CAACjgC,IAAL,GAAUigC,IAAI,CAACqG,WAAtG,GAAkHrG,IAAI,CAACjgC,IAAL,GAAUigC,IAAI,CAACsG,OAAjI;AAAyI,SAAOtG,IAAI,CAACjgC,IAAL,CAAUY,KAAV,CAAgB,IAAhB,EAAqB3zB,SAArB,CAAP;AAAuC,CAA1M;;AAC5RgzD,IAAI,CAACuG,OAAL,GAAa,UAASriE,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACxwB,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAN;AAA8C,SAAO,YAAU;AAAC,QAAI7I,CAAC,GAACiuB,CAAC,CAACtsB,KAAF,EAAN;AAAgB3B,KAAC,CAACxB,IAAF,CAAOg+B,KAAP,CAAax8B,CAAb,EAAe6I,SAAf;AAA0B,WAAO9I,CAAC,CAACy8B,KAAF,CAAQ,IAAR,EAAax8B,CAAb,CAAP;AAAuB,GAAnF;AAAoF,CAA7J;;AAA8J67D,IAAI,CAACwG,KAAL,GAAW,UAAStiE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAR,IAAajuB,CAAb,EAAeD,CAAC,CAACkuB,CAAD,CAAD,GAAKjuB,CAAC,CAACiuB,CAAD,CAAN;AAAU,CAAlD;;AAAmD4tC,IAAI,CAAC3zD,GAAL,GAAS2zD,IAAI,CAACa,YAAL,IAAmB54D,IAAI,CAACoE,GAAxB,IAA6B,YAAU;AAAC,SAAM,CAAC,IAAIpE,IAAJ,EAAP;AAAgB,CAAjE;;AACjN+3D,IAAI,CAACyG,UAAL,GAAgB,UAASviE,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAAC1gC,MAAL,CAAY+gC,UAAf,EAA0BL,IAAI,CAAC1gC,MAAL,CAAY+gC,UAAZ,CAAuBn8D,CAAvB,EAAyB,YAAzB,EAA1B,KAAsE,IAAG87D,IAAI,CAAC1gC,MAAL,CAAY+9B,IAAf,EAAoB;AAAC,QAAG,QAAM2C,IAAI,CAAC0G,oBAAd,EAAmC;AAAC,UAAG;AAAC1G,YAAI,CAAC1gC,MAAL,CAAY+9B,IAAZ,CAAiB,qBAAjB;AAAwC,OAA5C,CAA4C,OAAMrpB,CAAN,EAAQ,CAAE;;AAAA,UAAG,eAAa,OAAOgsB,IAAI,CAAC1gC,MAAL,CAAYqnC,UAAnC,EAA8C;AAAC,YAAG;AAAC,iBAAO3G,IAAI,CAAC1gC,MAAL,CAAYqnC,UAAnB;AAA8B,SAAlC,CAAkC,OAAM3yB,CAAN,EAAQ,CAAE;;AAAAgsB,YAAI,CAAC0G,oBAAL,GAA0B,CAAC,CAA3B;AAA6B,OAAxH,MAA6H1G,IAAI,CAAC0G,oBAAL,GAA0B,CAAC,CAA3B;AAA6B;;AAAA,QAAG1G,IAAI,CAAC0G,oBAAR,EAA6B1G,IAAI,CAAC1gC,MAAL,CAAY+9B,IAAZ,CAAiBn5D,CAAjB,EAA7B,KAAqD;AAAC,UAAIC,CAAC,GAAC67D,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAlB;AAAA,UAA2BtvC,CAAC,GAACjuB,CAAC,CAACyiE,aAAF,CAAgB,QAAhB,CAA7B;AAAuDx0C,OAAC,CAACnY,IAAF,GAAO,iBAAP;AAAyBmY,OAAC,CAACy0C,KAAF,GACjf,CAAC,CADgf;AAC9ez0C,OAAC,CAAC00C,WAAF,CAAc3iE,CAAC,CAAC4iE,cAAF,CAAiB7iE,CAAjB,CAAd;AAAmCC,OAAC,CAAC6iE,IAAF,CAAOF,WAAP,CAAmB10C,CAAnB;AAAsBjuB,OAAC,CAAC6iE,IAAF,CAAOC,WAAP,CAAmB70C,CAAnB;AAAsB;AAAC,GADe,MACV,MAAM9vB,KAAK,CAAC,+BAAD,CAAX;AAA8C,CADtI;;AACuI09D,IAAI,CAAC0G,oBAAL,GAA0B,IAA1B;;AACvI1G,IAAI,CAACkH,UAAL,GAAgB,UAAShjE,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,OAAKm9B,MAAM,CAACp9B,CAAD,CAAN,CAAUq+B,MAAV,CAAiB,CAAjB,CAAR,EAA4B,MAAMjgC,KAAK,CAAC,8EAA4E4B,CAA7E,CAAX;;AAA2F,MAAIkuB,CAAC,GAAC,UAASluB,CAAT,EAAW;AAAC,WAAO87D,IAAI,CAACmH,eAAL,CAAqBjjE,CAArB,KAAyBA,CAAhC;AAAkC,GAApD;AAAA,MAAqD8vC,CAAC,GAAC,UAAS9vC,CAAT,EAAW;AAACA,KAAC,GAACA,CAAC,CAACia,KAAF,CAAQ,GAAR,CAAF;;AAAe,SAAI,IAAIha,CAAC,GAAC,EAAN,EAAS6vC,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC9vC,CAAC,CAACJ,MAArB,EAA4BkwC,CAAC,EAA7B,EAAgC7vC,CAAC,CAACxB,IAAF,CAAOyvB,CAAC,CAACluB,CAAC,CAAC8vC,CAAD,CAAF,CAAR;;AAAgB,WAAO7vC,CAAC,CAAC0a,IAAF,CAAO,GAAP,CAAP;AAAmB,GAArJ;;AAAsJm1B,GAAC,GAACgsB,IAAI,CAACmH,eAAL,GAAqB,cAAYnH,IAAI,CAACoH,oBAAjB,GAAsCh1C,CAAtC,GAAwC4hB,CAA7D,GAA+D,UAAS9vC,CAAT,EAAW;AAAC,WAAOA,CAAP;AAAS,GAAtF;AAAuFA,GAAC,GAACC,CAAC,GAACD,CAAC,GAAC,GAAF,GAAM8vC,CAAC,CAAC7vC,CAAD,CAAR,GAAY6vC,CAAC,CAAC9vC,CAAD,CAAhB;AAAoB,SAAO87D,IAAI,CAAC1gC,MAAL,CAAY+nC,uBAAZ,GAAoCrH,IAAI,CAAC1gC,MAAL,CAAY+nC,uBAAZ,CAAoCnjE,CAApC,CAApC,GAA2EA,CAAlF;AAAoF,CAA1e;;AACA87D,IAAI,CAACsH,iBAAL,GAAuB,UAASpjE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACmH,eAAL,GAAqBjjE,CAArB;AAAuB87D,MAAI,CAACoH,oBAAL,GAA0BjjE,CAA1B;AAA4B,CAAxF;;AAAyF,CAAC47D,QAAD,IAAWC,IAAI,CAAC1gC,MAAL,CAAYioC,wBAAvB,KAAkDvH,IAAI,CAACmH,eAAL,GAAqBnH,IAAI,CAAC1gC,MAAL,CAAYioC,wBAAnF;;AAA6GvH,IAAI,CAACwH,MAAL,GAAY,UAAStjE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACA,GAAC,IAAEA,CAAC,CAACq1C,IAAL,KAAYvjE,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU,IAAV,EAAe,MAAf,CAAd;AAAsCjZ,GAAC,KAAGD,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU,eAAV,EAA0B,UAASlZ,CAAT,EAAWkuB,CAAX,EAAa;AAAC,WAAO,QAAMjuB,CAAN,IAASiuB,CAAC,IAAIjuB,CAAd,GAAgBA,CAAC,CAACiuB,CAAD,CAAjB,GAAqBluB,CAA5B;AAA8B,GAAtE,CAAL,CAAD;AAA+E,SAAOA,CAAP;AAAS,CAA1J;;AAA2J87D,IAAI,CAAC0H,kBAAL,GAAwB,UAASxjE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAP;AAAS,CAA/C;;AAAgD87D,IAAI,CAAC2H,YAAL,GAAkB,UAASzjE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACI,WAAL,CAAiBl8D,CAAjB,EAAmBC,CAAnB,EAAqBiuB,CAArB;AAAwB,CAA1D;;AACjZ4tC,IAAI,CAAC4H,cAAL,GAAoB,UAAS1jE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,CAACC,CAAD,CAAD,GAAKiuB,CAAL;AAAO,CAA3C;;AAA4C4tC,IAAI,CAAC6H,QAAL,GAAc,UAAS3jE,CAAT,EAAWC,CAAX,EAAa;AAAC,WAASiuB,CAAT,GAAY,CAAE;;AAAAA,GAAC,CAACtY,SAAF,GAAY3V,CAAC,CAAC2V,SAAd;AAAwB5V,GAAC,CAAC4jE,WAAF,GAAc3jE,CAAC,CAAC2V,SAAhB;AAA0B5V,GAAC,CAAC4V,SAAF,GAAY,IAAIsY,CAAJ,EAAZ;AAAkBluB,GAAC,CAAC4V,SAAF,CAAYnd,WAAZ,GAAwBuH,CAAxB;;AAA0BA,GAAC,CAAChG,IAAF,GAAO,UAASgG,CAAT,EAAWkuB,CAAX,EAAauY,CAAb,EAAe;AAAC,SAAI,IAAIqJ,CAAC,GAACpyC,KAAK,CAACoL,SAAS,CAAClJ,MAAV,GAAiB,CAAlB,CAAX,EAAgCsjB,CAAC,GAAC,CAAtC,EAAwCA,CAAC,GAACpa,SAAS,CAAClJ,MAApD,EAA2DsjB,CAAC,EAA5D,EAA+D4sB,CAAC,CAAC5sB,CAAC,GAAC,CAAH,CAAD,GAAOpa,SAAS,CAACoa,CAAD,CAAhB;;AAAoB,WAAOjjB,CAAC,CAAC2V,SAAF,CAAYsY,CAAZ,EAAeuO,KAAf,CAAqBz8B,CAArB,EAAuB8vC,CAAvB,CAAP;AAAiC,GAA3I;AAA4I,CAApR;;AAC5CgsB,IAAI,CAAC9hE,IAAL,GAAU,UAASgG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAChnC,SAAS,CAACsvD,MAAV,CAAiByL,MAAvB;AAA8B,MAAG/H,IAAI,CAACc,sBAAL,IAA6Bd,IAAI,CAACW,KAAL,IAAY,CAAC3sB,CAA7C,EAA+C,MAAM1xC,KAAK,CAAC,4IAAD,CAAX;;AAA0J,MAAG,gBAAc,OAAO0xC,CAAC,CAAC8zB,WAA1B,EAAsC;AAAC,SAAI,IAAI1gD,CAAC,GAACxlB,KAAK,CAACoL,SAAS,CAAClJ,MAAV,GAAiB,CAAlB,CAAX,EAAgC6mC,CAAC,GAAC,CAAtC,EAAwCA,CAAC,GAAC39B,SAAS,CAAClJ,MAApD,EAA2D6mC,CAAC,EAA5D,EAA+DvjB,CAAC,CAACujB,CAAC,GAAC,CAAH,CAAD,GAAO39B,SAAS,CAAC29B,CAAD,CAAhB;;AAAoB,WAAOqJ,CAAC,CAAC8zB,WAAF,CAAcnrE,WAAd,CAA0BgkC,KAA1B,CAAgCz8B,CAAhC,EAAkCkjB,CAAlC,CAAP;AAA4C;;AAAA,MAAG,YAAU,OAAOjjB,CAAjB,IAAoB,YAAU,OAAOA,CAAxC,EAA0C,MAAM7B,KAAK,CAAC,iEAAD,CAAX;AACjd8kB,GAAC,GAACxlB,KAAK,CAACoL,SAAS,CAAClJ,MAAV,GAAiB,CAAlB,CAAP;;AAA4B,OAAI6mC,CAAC,GAAC,CAAN,EAAQA,CAAC,GAAC39B,SAAS,CAAClJ,MAApB,EAA2B6mC,CAAC,EAA5B,EAA+BvjB,CAAC,CAACujB,CAAC,GAAC,CAAH,CAAD,GAAO39B,SAAS,CAAC29B,CAAD,CAAhB;;AAAoBA,GAAC,GAAC,CAAC,CAAH;;AAAK,OAAI,IAAIvL,CAAC,GAACl7B,CAAC,CAACvH,WAAF,CAAcmd,SAAxB,EAAkCslB,CAAlC,EAAoCA,CAAC,GAAC1+B,MAAM,CAAC60D,cAAP,CAAsBn2B,CAAtB,CAAtC,EAA+D,IAAGA,CAAC,CAACj7B,CAAD,CAAD,KAAO6vC,CAAV,EAAYrJ,CAAC,GAAC,CAAC,CAAH,CAAZ,KAAsB,IAAGA,CAAH,EAAK,OAAOvL,CAAC,CAACj7B,CAAD,CAAD,CAAKw8B,KAAL,CAAWz8B,CAAX,EAAakjB,CAAb,CAAP;;AAAuB,MAAGljB,CAAC,CAACC,CAAD,CAAD,KAAO6vC,CAAV,EAAY,OAAO9vC,CAAC,CAACvH,WAAF,CAAcmd,SAAd,CAAwB3V,CAAxB,EAA2Bw8B,KAA3B,CAAiCz8B,CAAjC,EAAmCkjB,CAAnC,CAAP;AAA6C,QAAM9kB,KAAK,CAAC,4EAAD,CAAX;AAA2F,CADzV;;AAC0V09D,IAAI,CAACX,KAAL,GAAW,UAASn7D,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAACkB,iBAAL,EAAH,EAA4B,MAAM5+D,KAAK,CAAC,8CAAD,CAAX;AAA4D4B,GAAC,CAACyW,IAAF,CAAOqlD,IAAI,CAAC1gC,MAAZ;AAAoB,CAAnI;;AAC1VygC,QAAQ,KAAGC,IAAI,CAAC1gC,MAAL,CAAYygC,QAAZ,GAAqBA,QAAxB,CAAR;;AAA0CC,IAAI,CAACgI,WAAL,GAAiB,UAAS9jE,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACjuB,CAAC,CAACxH,WAAR;AAAA,MAAoBq3C,CAAC,GAAC7vC,CAAC,CAAC8jE,OAAxB;AAAgC71C,GAAC,IAAEA,CAAC,IAAE1xB,MAAM,CAACoZ,SAAP,CAAiBnd,WAAvB,KAAqCy1B,CAAC,GAAC,YAAU;AAAC,UAAM9vB,KAAK,CAAC,2DAAD,CAAX;AAA0E,GAA5H;AAA8H8vB,GAAC,GAAC4tC,IAAI,CAACgI,WAAL,CAAiBE,yBAAjB,CAA2C91C,CAA3C,EAA6CluB,CAA7C,CAAF;AAAkDA,GAAC,IAAE87D,IAAI,CAAC6H,QAAL,CAAcz1C,CAAd,EAAgBluB,CAAhB,CAAH;AAAsB,SAAOC,CAAC,CAACxH,WAAT;AAAqB,SAAOwH,CAAC,CAAC8jE,OAAT;AAAiBjI,MAAI,CAACgI,WAAL,CAAiBG,gBAAjB,CAAkC/1C,CAAC,CAACtY,SAApC,EAA8C3V,CAA9C;AAAiD,UAAM6vC,CAAN,KAAUA,CAAC,YAAY0nB,QAAb,GAAsB1nB,CAAC,CAAC5hB,CAAD,CAAvB,GAA2B4tC,IAAI,CAACgI,WAAL,CAAiBG,gBAAjB,CAAkC/1C,CAAlC,EAAoC4hB,CAApC,CAArC;AAA6E,SAAO5hB,CAAP;AAAS,CAAlb;;AAC1C4tC,IAAI,CAACgI,WAAL,CAAiBI,oBAAjB,GAAsCpI,IAAI,CAACW,KAA3C;;AAAiDX,IAAI,CAACgI,WAAL,CAAiBE,yBAAjB,GAA2C,UAAShkE,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,CAAC67D,IAAI,CAACgI,WAAL,CAAiBI,oBAArB,EAA0C,OAAOlkE,CAAP;;AAAS,MAAIkuB,CAAC,GAAC,CAAC4tC,IAAI,CAACgI,WAAL,CAAiBK,aAAjB,CAA+BlkE,CAA/B,CAAP;AAAA,MAAyC6vC,CAAC,GAAC,YAAU;AAAC,QAAI7vC,CAAC,GAACD,CAAC,CAACy8B,KAAF,CAAQ,IAAR,EAAa3zB,SAAb,KAAyB,IAA/B;AAAoC7I,KAAC,CAAC67D,IAAI,CAAC8F,aAAN,CAAD,GAAsB3hE,CAAC,CAAC67D,IAAI,CAAC8F,aAAN,CAAvB;AAA4C,SAAKnpE,WAAL,KAAmBq3C,CAAnB,IAAsB5hB,CAAtB,IAAyB1xB,MAAM,CAACmkE,IAAP,YAAuBnJ,QAAhD,IAA0Dh7D,MAAM,CAACmkE,IAAP,CAAY1gE,CAAZ,CAA1D;AAAyE,WAAOA,CAAP;AAAS,GAAxN;;AAAyN,SAAO6vC,CAAP;AAAS,CAA9U;;AAA+UgsB,IAAI,CAACgI,WAAL,CAAiBK,aAAjB,GAA+B,UAASnkE,CAAT,EAAW;AAAC,SAAOA,CAAC,IAAEA,CAAC,CAAC4V,SAAL,IAAgB5V,CAAC,CAAC4V,SAAF,CAAYkmD,IAAI,CAACsI,gCAAjB,CAAvB;AAA0E,CAArH;;AAChYtI,IAAI,CAACgI,WAAL,CAAiBO,wBAAjB,GAA0C,gGAAgGpqD,KAAhG,CAAsG,GAAtG,CAA1C;;AAAqJ6hD,IAAI,CAACgI,WAAL,CAAiBG,gBAAjB,GAAkC,UAASjkE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAR,IAAajuB,CAAb,EAAezD,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCxW,CAArC,EAAuCiuB,CAAvC,MAA4CluB,CAAC,CAACkuB,CAAD,CAAD,GAAKjuB,CAAC,CAACiuB,CAAD,CAAlD;;AAAuD,OAAI,IAAI4hB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACgsB,IAAI,CAACgI,WAAL,CAAiBO,wBAAjB,CAA0CzkE,MAAxD,EAA+DkwC,CAAC,EAAhE,EAAmE5hB,CAAC,GAAC4tC,IAAI,CAACgI,WAAL,CAAiBO,wBAAjB,CAA0Cv0B,CAA1C,CAAF,EAA+CtzC,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCxW,CAArC,EAAuCiuB,CAAvC,MAA4CluB,CAAC,CAACkuB,CAAD,CAAD,GAAKjuB,CAAC,CAACiuB,CAAD,CAAlD,CAA/C;AAAsG,CAA/R;;AACrJ4tC,IAAI,CAACwI,kBAAL,GAAwB,UAAStkE,CAAT,EAAW;AAAC,GAAC67D,QAAD,IAAWC,IAAI,CAACgI,WAAL,CAAiBI,oBAA5B,KAAmDlkE,CAAC,CAAC4V,SAAF,CAAYkmD,IAAI,CAACsI,gCAAjB,IAAmD,CAAC,CAAvG;AAA0G,CAA9I;;AAA+ItI,IAAI,CAACsI,gCAAL,GAAsC,oCAAtC;AAC/I,CAACvI,QAAD,IAAWC,IAAI,CAACoD,oBAAhB,KAAuCpD,IAAI,CAACyI,eAAL,GAAqB,YAAU;AAAC,MAAIvkE,CAAC,GAAC87D,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAlB;AAA2B,SAAO,QAAMx9D,CAAN,IAAS,WAAUA,CAA1B;AAA4B,CAAvF,EAAwF87D,IAAI,CAAC0I,kBAAL,GAAwB,YAAU;AAAC,MAAIxkE,CAAC,GAAC87D,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAlB;AAA2B,SAAOx9D,CAAC,CAACykE,WAAF,GAAc,cAAYzkE,CAAC,CAAC0kE,UAA5B,GAAuC,aAAW1kE,CAAC,CAAC0kE,UAA3D;AAAsE,CAA5N,EAA6N5I,IAAI,CAAC6I,aAAL,GAAmB,YAAU;AAAC,MAAG7I,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC1gC,MAAL,CAAYwpC,iBAAvB,KAA2C9I,IAAI,CAAC9jD,QAAL,CAAc8jD,IAAI,CAAC1gC,MAAL,CAAYwpC,iBAA1B,CAA9C,EAA2F9I,IAAI,CAAC2D,QAAL,GAAc3D,IAAI,CAAC1gC,MAAL,CAAYwpC,iBAA1B,CAA3F,KAA4I,IAAG9I,IAAI,CAACyI,eAAL,EAAH,EAA0B;AAAC,QAAIvkE,CAAC,GAAC87D,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAlB;AAAA,QAA2Bv9D,CAAC,GAACD,CAAC,CAAC6kE,aAA/B;AACzc7kE,KAAC,GAACC,CAAC,GAAC,CAACA,CAAD,CAAD,GAAKD,CAAC,CAAC8kE,oBAAF,CAAuB,QAAvB,CAAR;;AAAyC,SAAI7kE,CAAC,GAACD,CAAC,CAACJ,MAAF,GAAS,CAAf,EAAiB,KAAGK,CAApB,EAAsB,EAAEA,CAAxB,EAA0B;AAAC,UAAIiuB,CAAC,GAACluB,CAAC,CAACC,CAAD,CAAD,CAAK8kE,GAAX;AAAA,UAAej1B,CAAC,GAAC5hB,CAAC,CAACkvC,WAAF,CAAc,GAAd,CAAjB;AAAoCttB,OAAC,GAAC,CAAC,CAAD,IAAIA,CAAJ,GAAM5hB,CAAC,CAACtuB,MAAR,GAAekwC,CAAjB;;AAAmB,UAAG,aAAW5hB,CAAC,CAAChW,MAAF,CAAS43B,CAAC,GAAC,CAAX,EAAa,CAAb,CAAd,EAA8B;AAACgsB,YAAI,CAAC2D,QAAL,GAAcvxC,CAAC,CAAChW,MAAF,CAAS,CAAT,EAAW43B,CAAC,GAAC,CAAb,CAAd;AAA8B;AAAM;AAAC;AAAC;AAAC,CAD1J,EAC2JgsB,IAAI,CAAC6I,aAAL,EAD3J,EACgL7I,IAAI,CAACkJ,UAAL,GAAgB,YAAU;AAAC,OAAKC,sBAAL,GAA4B,IAA5B;AAAiC,OAAKC,oBAAL,GAA0BpJ,IAAI,CAACsE,qBAA/B;AAAqD,CADjS,EACkStE,IAAI,CAACkJ,UAAL,CAAgBpvD,SAAhB,CAA0BuvD,4BAA1B,GAAuD,YAAU;AAAC,WAASnlE,CAAT,CAAWA,CAAX,EAAaC,CAAb,EAAe;AAACijB,KAAC,GAAC4sB,CAAC,CAAC9vC,CAAD,CAAD,GAAK,CAAC,CAAP,GAASC,CAAC,MAAIiuB,CAAC,GAACluB,CAAF,EAAI8vC,CAAC,CAAC9vC,CAAD,CAAD,GAAK,CAAC,CAAd,IAAiBkjB,CAAC,GAAC4sB,CAAC,CAAC9vC,CAAD,CAAD,GAAK,CAAC,CAApC;AAAsC;;AAAA,WAASC,CAAT,CAAWD,CAAX,EAAa;AAAC,QAAG;AAAC,aAAM,CAAC,CAACm5D,IAAI,CAACn5D,CAAD,CAAZ;AAAgB,KAApB,CAAoB,OAAM2wC,CAAN,EAAQ;AAAC,aAAM,CAAC,CAAP;AAAS;AAAC;;AACtf,MAAIziB,CAAC,GAAC,KAAN;AAAA,MAAY4hB,CAAC,GAAC;AAACs1B,OAAG,EAAC,CAAC;AAAN,GAAd;AAAA,MAAuBliD,CAAC,GAAC,CAAC,CAA1B;AAAA,MAA4BujB,CAAC,GAACq1B,IAAI,CAAC1gC,MAAL,CAAYiqC,SAAZ,IAAuBvJ,IAAI,CAAC1gC,MAAL,CAAYiqC,SAAZ,CAAsBC,SAA7C,GAAuDxJ,IAAI,CAAC1gC,MAAL,CAAYiqC,SAAZ,CAAsBC,SAA7E,GAAuF,EAArH;AAAwHtlE,GAAC,CAAC,KAAD,EAAO,YAAU;AAAC,WAAOC,CAAC,CAAC,gBAAD,CAAR;AAA2B,GAA7C,CAAD;AAAgDD,GAAC,CAAC,KAAD,EAAO,YAAU;AAAC,WAAOymC,CAAC,CAAC1tB,KAAF,CAAQ,qBAAR,IAA+B,CAAC,CAAhC,GAAkC9Y,CAAC,CAAC,0RAAD,CAA1C;AAAuU,GAAzV,CAAD;AACxKD,GAAC,CAAC,KAAD,EAAO,YAAU;AAAC,WAAOC,CAAC,CAAC,aAAD,CAAR;AAAwB,GAA1C,CAAD;AAA6CD,GAAC,CAAC,KAAD,EAAO,YAAU;AAAC,WAAOC,CAAC,CAAC,qBAAD,CAAR;AAAgC,GAAlD,CAAD;AAAqDD,GAAC,CAAC,KAAD,EAAO,YAAU;AAAC,WAAOC,CAAC,CAAC,wBAAD,CAAR;AAAmC,GAArD,CAAD;AAAwDD,GAAC,CAAC,SAAD,EAAW,YAAU;AAAC,WAAM,CAAC,CAAP;AAAS,GAA/B,CAAD;AAAkC,SAAM;AAAC6hB,UAAM,EAACqM,CAAR;AAAUvxB,OAAG,EAACmzC;AAAd,GAAN;AAAuB,CAH5K,EAG6KgsB,IAAI,CAACkJ,UAAL,CAAgBpvD,SAAhB,CAA0B2vD,cAA1B,GAAyC,UAASvlE,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,YAAU67D,IAAI,CAACoE,SAAlB,EAA4B,OAAM,CAAC,CAAP;AAAS,MAAG,WAASpE,IAAI,CAACoE,SAAjB,EAA2B,OAAM,CAAC,CAAP;;AAAS,MAAG,CAAC,KAAK+E,sBAAT,EAAgC;AAAC,QAAI/2C,CAAC,GAAC,KAAKi3C,4BAAL,EAAN;AAA0C,SAAKF,sBAAL,GAA4B/2C,CAAC,CAACvxB,GAA9B;AAAkC,SAAKuoE,oBAAL,GAA0B,KAAKA,oBAAL,IAC3dh3C,CAAC,CAACrM,MAD+b;AACxb;;AAAA,MAAG7hB,CAAC,IAAI,KAAKilE,sBAAb,EAAoC,OAAO,KAAKA,sBAAL,CAA4BjlE,CAA5B,IAA+B,CAAC,CAAhC,GAAkC,CAAC87D,IAAI,CAACyI,eAAL,EAAD,IAAyB,SAAOtkE,CAAhC,IAAmC,cAAa67D,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAZ,CAAqBkF,aAArB,CAAmC,QAAnC,CAAhD,GAA6F,CAAC,CAA9F,GAAgG,CAAC,CAA1I;AAA4I,QAAMtkE,KAAK,CAAC,4BAA0B4B,CAA3B,CAAX;AAA0C,CAJ5L,EAI6L87D,IAAI,CAACkJ,UAAL,CAAgBpvD,SAAhB,CAA0BwrD,SAA1B,GAAoC,UAASphE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACqF,UAAL,CAAgBnhE,CAAhB,EAAkBC,CAAlB,EAAoB,KAAKilE,oBAAzB,CAAP;AAAsD,CAJrS,EAIsSpJ,IAAI,CAAC0J,WAAL,GAAiB,IAAI1J,IAAI,CAACkJ,UAAT,EAJvT,EAI2UlJ,IAAI,CAAC2J,iBAAL,GAAuB,UAASzlE,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,eAAV,EAA0B,UAA1B,CAAP;AAA6C,CAJ3Z,EAI4Z4iD,IAAI,CAAC4J,YAAL,GAAkB,YAAU;AAAC,OAAKC,aAAL,GAAmB,EAAnB;AAChe,OAAKC,SAAL,GAAe,EAAf;AAAkB,OAAKC,QAAL,GAAc,EAAd;AAAiB,OAAKC,YAAL,GAAkB,EAAlB;AAAqB,OAAKC,WAAL,GAAiB,EAAjB;AAAoB,OAAKC,OAAL,GAAa,CAAC,CAAd;AAAgB,OAAKC,QAAL,GAAc,IAAInK,IAAI,CAACoK,iBAAT,CAA2BpK,IAAI,CAAC0J,WAAhC,CAAd;AAA2D,OAAKW,kBAAL,GAAwB,EAAxB;AAA2B,OAAKC,cAAL,GAAoB,EAApB;AAAuB,CALlK,EAKmKtK,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4BywD,SAA5B,GAAsC,UAASrmE,CAAT,EAAWC,CAAX,EAAa;AAAC,WAASiuB,CAAT,GAAY;AAAC4hB,KAAC,KAAGgsB,IAAI,CAAC1gC,MAAL,CAAYkrC,UAAZ,CAAuBx2B,CAAvB,EAAyB,CAAzB,GAA4BA,CAAC,GAAC,IAAjC,CAAD;AAAwC;;AAAA,MAAIA,CAAC,GAAC7vC,CAAN;;AAAQ,MAAGD,CAAC,CAACJ,MAAL,EAAY;AAACK,KAAC,GAAC,EAAF;;AAAK,SAAI,IAAIijB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACljB,CAAC,CAACJ,MAAhB,EAAuBsjB,CAAC,EAAxB,EAA2B;AAAC,UAAIujB,CAAC,GAAC,KAAK8/B,gBAAL,CAAsBvmE,CAAC,CAACkjB,CAAD,CAAvB,CAAN;AAAkC,UAAG,CAACujB,CAAJ,EAAM,MAAMroC,KAAK,CAAC,4BAA0B4B,CAAC,CAACkjB,CAAD,CAA5B,CAAX;AAA4CjjB,OAAC,CAACxB,IAAF,CAAO,KAAKknE,aAAL,CAAmBl/B,CAAnB,CAAP;AAA8B;;AAAAA,KAAC,GAACq1B,IAAI,CAAC9gD,OAAP;AAAe,QAAIkgB,CAAC,GAAC,CAAN;;AAAQ,SAAIhY,CAAC,GACvf,CADkf,EAChfA,CAAC,GAACljB,CAAC,CAACJ,MAD4e,EACresjB,CAAC,EADoe,EACjeujB,CAAC,CAACzmC,CAAC,CAACkjB,CAAD,CAAF,CAAD,EAAQjjB,CAAC,CAACijB,CAAD,CAAD,CAAKsjD,MAAL,CAAY,YAAU;AAAC,QAAEtrC,CAAF,IAAKl7B,CAAC,CAACJ,MAAP,IAAesuB,CAAC,EAAhB;AAAmB,KAA1C,CAAR;AAAoD,GADsP,MACjPA,CAAC;AAAG,CANvC,EAMwC4tC,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4B6wD,eAA5B,GAA4C,YAAU;AAAC,OAAKV,WAAL,CAAiBtnE,IAAjB,CAAsB,KAAKwnE,QAAL,CAAcS,gBAAd,CAA+B5K,IAAI,CAAC8E,cAAL,CAAoB9E,IAAI,CAAC2D,QAAL,GAAc,SAAlC,CAA/B,EAA4E,SAA5E,EAAsF,EAAtF,EAAyF,EAAzF,EAA4F,EAA5F,EAA+F,CAAC,CAAhG,CAAtB;AAA0H,OAAKkH,SAAL;AAAiB,CAN1O,EAM2O7K,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4B0pD,SAA5B,GAAsC,UAASt/D,CAAT,EAAWC,CAAX,EAAa;AAAC,GAACD,CAAC,GAAC,KAAKumE,gBAAL,CAAsBvmE,CAAtB,CAAH,MAA+BC,CAAC,IAAE,KAAK2mE,cAAL,CAAoB,KAAKjB,aAAL,CAAmB3lE,CAAnB,EAAsB6mE,QAA1C,CAAlC,MAAyF5mE,CAAC,GAAC,KAAKkmE,kBAAL,CAAwBnmE,CAAxB,CAA3F,MAAyH,OAAO,KAAKmmE,kBAAL,CAAwBnmE,CAAxB,CAAP,EAAkCC,CAAC,EAA5J;AAAgK,CAN/b,EAMgc67D,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4BkxD,oBAA5B,GACve,UAAS9mE,CAAT,EAAW;AAAC,OAAKimE,QAAL,GAAcjmE,CAAd;AAAgB,CAPW,EAOV87D,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4B2pD,KAA5B,GAAkC,UAASv/D,CAAT,EAAW;AAAC,MAAG,KAAKumE,gBAAL,CAAsBvmE,CAAtB,CAAH,EAA4B;AAAC,QAAIC,CAAC,GAAC,IAAN;AAAA,QAAWiuB,CAAC,GAAC,EAAb;AAAA,QAAgB4hB,CAAC,GAAC,UAAS9vC,CAAT,EAAW;AAAC,UAAIkjB,CAAC,GAACjjB,CAAC,CAACsmE,gBAAF,CAAmBvmE,CAAnB,CAAN;AAA4B,UAAG,CAACkjB,CAAJ,EAAM,MAAM9kB,KAAK,CAAC,oCAAkC4B,CAAnC,CAAX;;AAAiD,UAAG,CAACC,CAAC,CAAC4lE,QAAF,CAAW3iD,CAAX,CAAJ,EAAkB;AAACjjB,SAAC,CAAC4lE,QAAF,CAAW3iD,CAAX,IAAc,CAAC,CAAf;AAAiBljB,SAAC,GAACC,CAAC,CAAC0lE,aAAF,CAAgBziD,CAAhB,CAAF;;AAAqB,aAAIA,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACljB,CAAC,CAAC6mE,QAAF,CAAWjnE,MAArB,EAA4BsjB,CAAC,EAA7B,EAAgC44C,IAAI,CAACmB,WAAL,CAAiBj9D,CAAC,CAAC6mE,QAAF,CAAW3jD,CAAX,CAAjB,KAAiC4sB,CAAC,CAAC9vC,CAAC,CAAC6mE,QAAF,CAAW3jD,CAAX,CAAD,CAAlC;;AAAkDgL,SAAC,CAACzvB,IAAF,CAAOuB,CAAP;AAAU;AAAC,KAAvQ;;AAAwQ8vC,KAAC,CAAC9vC,CAAD,CAAD;AAAKA,KAAC,GAAC,CAAC,CAAC,KAAK+lE,WAAL,CAAiBnmE,MAArB;AAA4B,SAAKmmE,WAAL,GAAiB,KAAKA,WAAL,CAAiBnvC,MAAjB,CAAwB1I,CAAxB,CAAjB;AAA4C,SAAK83C,OAAL,IAAchmE,CAAd,IAAiB,KAAK2mE,SAAL,EAAjB;AAAkC,GAApZ,MAAyZ,MAAM3mE,CAAC,GAAC,kCAC5eA,CAD0e,EACxe87D,IAAI,CAACuD,aAAL,CAAmBr/D,CAAnB,CADwe,EACld5B,KAAK,CAAC4B,CAAD,CADuc;AAClc,CARK,EAQJ87D,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4B+wD,SAA5B,GAAsC,YAAU;AAAC,OAAI,IAAI3mE,CAAC,GAAC,IAAN,EAAWC,CAAC,GAAC,KAAK+lE,OAAtB,EAA8B,KAAKD,WAAL,CAAiBnmE,MAAjB,IAAyB,CAACK,CAAxD,GAA2D,CAAC,YAAU;AAAC,QAAIiuB,CAAC,GAAC,CAAC,CAAP;AAAA,QAAS4hB,CAAC,GAAC9vC,CAAC,CAAC+lE,WAAF,CAAczlE,KAAd,EAAX;AAAA,QAAiC4iB,CAAC,GAAC,CAAC,CAApC;AAAsCljB,KAAC,CAAC+mE,QAAF,CAAWj3B,CAAX;AAAc,QAAIrJ,CAAC,GAAC;AAACugC,WAAK,EAAC,YAAU;AAAC,YAAG94C,CAAH,EAAK,MAAM9vB,KAAK,CAAC,2CAAD,CAAX;AAAyD6B,SAAC,GAAC,CAAC,CAAH;AAAK,OAArF;AAAsFgnE,YAAM,EAAC,YAAU;AAAC/4C,SAAC,GAACluB,CAAC,CAACknE,OAAF,EAAD,GAAajnE,CAAC,GAAC,CAAC,CAAjB;AAAmB,OAA3H;AAA4HknE,YAAM,EAAC,YAAU;AAAC,YAAGjkD,CAAH,EAAK,MAAM9kB,KAAK,CAAC,wBAAD,CAAX;AAAsC8kB,SAAC,GAAC,CAAC,CAAH;AAAKljB,SAAC,CAAConE,OAAF,CAAUt3B,CAAV;AAAa,OAA3M;AAA4Mu3B,aAAO,EAAC,YAAU;AAAC,aAAI,IAAIpnE,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACluB,CAAC,CAAC8lE,YAAF,CAAelmE,MAAlC,EAAyCsuB,CAAC,EAA1C,EAA6CjuB,CAAC,CAACxB,IAAF,CAAOuB,CAAC,CAAC8lE,YAAF,CAAe53C,CAAf,CAAP;;AACje,eAAOjuB,CAAP;AAAS,OAD4M;AAC3MqnE,oBAAc,EAAC,UAAStnE,CAAT,EAAW;AAAC87D,YAAI,CAACmC,kBAAL,GAAwB;AAACloD,cAAI,EAAC/V,CAAN;AAAQk+D,oBAAU,EAAC,EAAnB;AAAsBQ,gCAAsB,EAAC,CAAC;AAA9C,SAAxB;AAAyE,OADuG;AACtG6I,8BAAwB,EAAC,UAASvnE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACA,SAAC,KAAG4tC,IAAI,CAACsC,cAAL,CAAoBlwC,CAApB,IAAuB;AAACrT,iBAAO,EAAC5a,CAAT;AAAW8V,cAAI,EAAC+lD,IAAI,CAACuC,UAAL,CAAgBC,GAAhC;AAAoCM,kBAAQ,EAAC1wC,CAAC,IAAE;AAAhD,SAA1B,CAAD;AAAgF,OADnB;AACoBs5C,+BAAyB,EAAC,UAASxnE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,YAAI,CAACsC,cAAL,CAAoBp+D,CAApB,IAAuB;AAAC6a,iBAAO,EAAC5a,CAAT;AAAW8V,cAAI,EAAC+lD,IAAI,CAACuC,UAAL,CAAgBE,IAAhC;AAAqCK,kBAAQ,EAAC5+D;AAA9C,SAAvB;AAAwE,OADpI;AACqIynE,sBAAgB,EAAC,YAAU;AAAC3L,YAAI,CAACmC,kBAAL,GAAwB,IAAxB;AAA6B,OAD9L;AAC+L0E,WAAK,EAAC,UAAS1iE,CAAT,EAAW;AAAC,YAAGiuB,CAAH,EAAK,MAAM9vB,KAAK,CAAC,oDAAD,CAAX;AAAkE4B,SAAC,CAAC0nE,MAAF,CAAS53B,CAAT,EAC7e7vC,CAD6e;AAC1e,OAFkN;AAEjN0nE,mBAAa,EAAC,YAAU;AAAC,eAAO3nE,CAAC,CAAC4mE,cAAF,CAAiB92B,CAAC,CAAC+2B,QAAnB,CAAP;AAAoC;AAFoJ,KAAN;;AAE5I,QAAG;AAAC/2B,OAAC,CAAC83B,IAAF,CAAOnhC,CAAP;AAAU,KAAd,SAAqB;AAACvY,OAAC,GAAC,CAAC,CAAH;AAAK;AAAC,GAFgD;;AAE5CjuB,GAAC,IAAE,KAAK4nE,MAAL,EAAH;AAAiB,CAV7E,EAU8E/L,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4BiyD,MAA5B,GAAmC,YAAU;AAAC,OAAK7B,OAAL,GAAa,CAAC,CAAd;AAAgB,CAV5I,EAU6IlK,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4BsxD,OAA5B,GAAoC,YAAU;AAAC,OAAKlB,OAAL,KAAe,KAAKA,OAAL,GAAa,CAAC,CAAd,EAAgB,KAAKW,SAAL,EAA/B;AAAiD,CAV7O,EAU8O7K,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4BmxD,QAA5B,GAAqC,UAAS/mE,CAAT,EAAW;AAAC,OAAK8lE,YAAL,CAAkBrnE,IAAlB,CAAuBuB,CAAvB;AAA0B,CAVzT,EAU0T87D,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4BwxD,OAA5B,GAAoC,UAASpnE,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC,KAAK6lE,YAAL,CAAkBlmE,MAAhC,EAAuCK,CAAC,EAAxC,EAA2C,IAAG,KAAK6lE,YAAL,CAAkB7lE,CAAlB,KAAsBD,CAAzB,EAA2B;AAAC,SAAK8lE,YAAL,CAAkB/jE,MAAlB,CAAyB9B,CAAzB,EAA2B,CAA3B;AACxd;AAAM;;AAAA,OAAIA,CAAC,GAAC,CAAN,EAAQA,CAAC,GAAC,KAAKmmE,cAAL,CAAoBxmE,MAA9B,EAAqCK,CAAC,EAAtC,EAAyC,IAAG,KAAKmmE,cAAL,CAAoBnmE,CAApB,KAAwBD,CAAC,CAAC4zB,IAA7B,EAAkC;AAAC,SAAKwyC,cAAL,CAAoBrkE,MAApB,CAA2B9B,CAA3B,EAA6B,CAA7B;AAAgC;AAAM;;AAAA,MAAG,KAAK6lE,YAAL,CAAkBlmE,MAAlB,IAA0B,KAAKwmE,cAAL,CAAoBxmE,MAA9C,IAAsD,CAAC,KAAKmmE,WAAL,CAAiBnmE,MAA3E,EAAkF,OAAK,KAAKwmE,cAAL,CAAoBxmE,MAAzB,GAAiC,KAAK0/D,SAAL,CAAe,KAAK8G,cAAL,CAAoB9lE,KAApB,EAAf,EAA2C,CAAC,CAA5C;AAA+CN,GAAC,CAACmnE,MAAF;AAAW,CAX9P,EAW+PrL,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4BgxD,cAA5B,GAA2C,UAAS5mE,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACD,CAAC,CAACJ,MAAhB,EAAuBK,CAAC,EAAxB,EAA2B;AAAC,QAAIiuB,CAAC,GAAC,KAAKq4C,gBAAL,CAAsBvmE,CAAC,CAACC,CAAD,CAAvB,CAAN;AAAkC,QAAG,CAACiuB,CAAD,IAAI,EAAEA,CAAC,IAAI,KAAKi4C,kBAAV,IAA8BrK,IAAI,CAACmB,WAAL,CAAiBj9D,CAAC,CAACC,CAAD,CAAlB,CAAhC,CAAP,EAA+D,OAAM,CAAC,CAAP;AAAS;;AAAA,SAAM,CAAC,CAAP;AAAS,CAXrc,EAWsc67D,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4B2wD,gBAA5B,GAC7e,UAASvmE,CAAT,EAAW;AAAC,SAAOA,CAAC,IAAI,KAAK4lE,SAAV,GAAoB,KAAKA,SAAL,CAAe5lE,CAAf,CAApB,GAAsCA,CAAC,IAAI,KAAK2lE,aAAV,GAAwB3lE,CAAxB,GAA0B,IAAvE;AAA4E,CAZjD,EAYkD87D,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4B8xD,MAA5B,GAAmC,UAAS1nE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAKkmE,kBAAL,CAAwBnmE,CAAC,CAAC4zB,IAA1B,IAAgC3zB,CAAhC;AAAkC,OAAKmmE,cAAL,CAAoB3nE,IAApB,CAAyBuB,CAAC,CAAC4zB,IAA3B;AAAiC,CAZtK,EAYuKkoC,IAAI,CAACgM,cAAL,GAAoB,YAAU,CAAE,CAZvM,EAYwMhM,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8BoxD,KAA9B,GAAoC,YAAU,CAAE,CAZxP,EAYyPlL,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8BqxD,MAA9B,GAAqC,YAAU,CAAE,CAZ1S,EAY2SnL,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8BuxD,MAA9B,GAAqC,YAAU,CAAE,CAZ5V,EAY6VrL,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8ByxD,OAA9B,GAAsC,YAAU,CAAE,CAZ/Y,EAYgZvL,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8B2xD,wBAA9B,GAAuD,UAASvnE,CAAT,EAC9eC,CAD8e,EAC5eiuB,CAD4e,EAC1e,CAAE,CAbiC,EAahC4tC,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8B0xD,cAA9B,GAA6C,UAAStnE,CAAT,EAAW,CAAE,CAb1B,EAa2B87D,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8B6xD,gBAA9B,GAA+C,YAAU,CAAE,CAbtF,EAauF3L,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8B+sD,KAA9B,GAAoC,UAAS3iE,CAAT,EAAW,CAAE,CAbxI,EAayI87D,IAAI,CAACgM,cAAL,CAAoBlyD,SAApB,CAA8B+xD,aAA9B,GAA4C,YAAU,CAAE,CAbjM,EAakM7L,IAAI,CAACiM,UAAL,GAAgB,UAAS/nE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC,OAAK0Q,IAAL,GAAU5zB,CAAV;AAAY,OAAKgoE,YAAL,GAAkB/nE,CAAlB;AAAoB,OAAKgoE,QAAL,GAAc/5C,CAAd;AAAgB,OAAK24C,QAAL,GAAc/2B,CAAd;AAAgB,OAAKo4B,SAAL,GAAehlD,CAAf;AAAiB,OAAKkkD,OAAL,GAAa,CAAC,CAAd;AAAgB,OAAKe,cAAL,GAAoB,EAApB;AAAuB,CAb9V,EAa+VrM,IAAI,CAACiM,UAAL,CAAgBnyD,SAAhB,CAA0BwyD,WAA1B,GAAsC,YAAU;AAAC,MAAIpoE,CAAC,GAAC,KAAK4zB,IAAX;AAAA,MAAgB3zB,CAAC,GAACD,CAAC,CAAC4H,OAAF,CAAU,KAAV,CAAlB;AAAmC,OAAG3H,CAAH,KAAOD,CAAC,GAACA,CAAC,CAAC88C,SAAF,CAAY78C,CAAC,GAAC,CAAd,CAAF,EAAmBA,CAAC,GACrfD,CAAC,CAAC4H,OAAF,CAAU,GAAV,CADie,EACld,KAAG3H,CAAH,KAAOD,CAAC,GAACA,CAAC,CAAC88C,SAAF,CAAY78C,CAAC,GAAC,CAAd,CAAT,CAD2c;AAC/a,SAAOD,CAAP;AAAS,CAdb,EAcc87D,IAAI,CAACiM,UAAL,CAAgBnyD,SAAhB,CAA0B4wD,MAA1B,GAAiC,UAASxmE,CAAT,EAAW;AAAC,OAAKonE,OAAL,GAAapnE,CAAC,EAAd,GAAiB,KAAKmoE,cAAL,CAAoB1pE,IAApB,CAAyBuB,CAAzB,CAAjB;AAA6C,CAdxG,EAcyG87D,IAAI,CAACiM,UAAL,CAAgBnyD,SAAhB,CAA0BuxD,MAA1B,GAAiC,YAAU;AAAC,OAAKC,OAAL,GAAa,CAAC,CAAd;AAAgB,MAAIpnE,CAAC,GAAC,KAAKmoE,cAAX;AAA0B,OAAKA,cAAL,GAAoB,EAApB;;AAAuB,OAAI,IAAIloE,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACD,CAAC,CAACJ,MAAhB,EAAuBK,CAAC,EAAxB,EAA2BD,CAAC,CAACC,CAAD,CAAD;AAAO,CAdxP,EAcyP67D,IAAI,CAACiM,UAAL,CAAgBL,MAAhB,GAAuB,CAAC,CAdjR,EAcmR5L,IAAI,CAACiM,UAAL,CAAgBM,YAAhB,GAA6B,EAdhT,EAcmTvM,IAAI,CAACiM,UAAL,CAAgBO,iBAAhB,GAAkC,UAAStoE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACoI,IAAI,CAACqlB,MAAL,GAAclX,QAAd,CAAuB,EAAvB,CAAN;AAAiCslD,MAAI,CAACiM,UAAL,CAAgBM,YAAhB,CAA6BpoE,CAA7B,IAAgCD,CAAhC;AAAkC,SAAOC,CAAP;AAAS,CAd7a,EAc8a67D,IAAI,CAACiM,UAAL,CAAgBQ,mBAAhB,GACrd,UAASvoE,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACiM,UAAL,CAAgBM,YAAhB,CAA6BroE,CAA7B,CAAP;AAAuC,CAfZ,EAea87D,IAAI,CAACiM,UAAL,CAAgBS,SAAhB,GAA0B,UAASxoE,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAGD,CAAC,IAAI87D,IAAI,CAACiM,UAAL,CAAgBM,YAAxB,EAAqC;AAAC,SAAI,IAAIn6C,CAAC,GAAC4tC,IAAI,CAACiM,UAAL,CAAgBM,YAAhB,CAA6BroE,CAA7B,CAAN,EAAsC8vC,CAAC,GAAC,EAAxC,EAA2C5sB,CAAC,GAAC,CAAjD,EAAmDA,CAAC,GAACpa,SAAS,CAAClJ,MAA/D,EAAsEsjB,CAAC,EAAvE,EAA0E4sB,CAAC,CAACrxC,IAAF,CAAOqK,SAAS,CAACoa,CAAD,CAAhB;;AAAqBgL,KAAC,CAACuO,KAAF,CAAQ,KAAK,CAAb,EAAeqT,CAAf;AAAkB,GAAvJ,MAA4J,MAAM1xC,KAAK,CAAC,kBAAgB4B,CAAhB,GAAkB,uDAAnB,CAAX;AAAwF,CAfzS,EAe0S87D,IAAI,CAACiM,UAAL,CAAgBnyD,SAAhB,CAA0BgyD,IAA1B,GAA+B,UAAS5nE,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAAC1gC,MAAL,CAAYqtC,qBAAf,EAAqC3M,IAAI,CAAC1gC,MAAL,CAAYqtC,qBAAZ,CAAkC,KAAK70C,IAAvC,IAA6C5zB,CAAC,CAACmnE,MAAF,EAA7C,GAAwDnnE,CAAC,CAACgnE,KAAF,EAAxD,CAArC,KAA4G,IAAGlL,IAAI,CAACyI,eAAL,EAAH,EAA0B;AAAC,QAAItkE,CAAC,GACxgB67D,IAAI,CAAC1gC,MAAL,CAAYoiC,QADuf;;AAC9e,QAAG,cAAYv9D,CAAC,CAACykE,UAAd,IAA0B,CAAC5I,IAAI,CAACgB,qCAAnC,EAAyE;AAAC,UAAG,aAAa19C,IAAb,CAAkB,KAAKwU,IAAvB,CAAH,EAAgC;AAAC5zB,SAAC,CAACmnE,MAAF;AAAW;AAAO;;AAAA,YAAM/oE,KAAK,CAAC,mBAAiB,KAAKw1B,IAAtB,GAA2B,uBAA5B,CAAX;AAAiE;;AAAA,QAAG,CAACkoC,IAAI,CAACgB,qCAAN,IAA6ChB,IAAI,CAAC0I,kBAAL,EAAhD,EAA0E;AAAC,UAAIt2C,CAAC,GAAC4tC,IAAI,CAACiM,UAAL,CAAgBO,iBAAhB,CAAkC,UAASroE,CAAT,EAAW;AAAC67D,YAAI,CAAC4J,YAAL,CAAkBgD,UAAlB,IAA8B,cAAYzoE,CAAC,CAACykE,UAA5C,KAAyD5I,IAAI,CAACiM,UAAL,CAAgBQ,mBAAhB,CAAoCr6C,CAApC,GAAuCluB,CAAC,CAACmnE,MAAF,EAAhG;AAA4G,OAA1J,CAAN;AAAA,UAAkKr3B,CAAC,GAAC,CAACgsB,IAAI,CAAC4J,YAAL,CAAkBgD,UAAnB,IAA+B5M,IAAI,CAACwB,cAAL,EAA/B,GAClc,aAAWxB,IAAI,CAACwB,cAAL,EAAX,GAAiC,GADia,GAC7Z,EADyP;AACtPxtB,OAAC,GAAC,kBAAgB,KAAKlc,IAArB,GAA0B,IAA1B,IAAgCkoC,IAAI,CAAC4J,YAAL,CAAkBgD,UAAlB,GAA6B,oBAA7B,GAAkD,QAAlF,IAA4F,gCAA5F,GAA6Hx6C,CAA7H,GAA+H,oCAA/H,IAAqK4tC,IAAI,CAACiM,UAAL,CAAgBL,MAAhB,GAAuB,OAAvB,GAA+B,EAApM,IAAwM53B,CAAxM,GAA0M,eAA5M;AAA4N7vC,OAAC,CAACm2B,KAAF,CAAQ0lC,IAAI,CAAC6M,qBAAL,GAA2B7M,IAAI,CAAC6M,qBAAL,CAA2BC,UAA3B,CAAsC94B,CAAtC,CAA3B,GAAoEA,CAA5E;AAA+E,KADhI,MACoI;AAAC,UAAI5sB,CAAC,GAACjjB,CAAC,CAACyiE,aAAF,CAAgB,QAAhB,CAAN;AAAgCx/C,OAAC,CAACy/C,KAAF,GAAQ7G,IAAI,CAACiM,UAAL,CAAgBL,MAAxB;AAA+BxkD,OAAC,CAACiV,KAAF,GAAQ,CAAC,CAAT;AAAWjV,OAAC,CAACnN,IAAF,GAAO,iBAAP;AAAyB,OAAC+5B,CAAC,GAACgsB,IAAI,CAACwB,cAAL,EAAH,KAA2Bp6C,CAAC,CAAC2lD,YAAF,CAAe,OAAf,EAAuB/4B,CAAvB,CAA3B;AAAqDgsB,UAAI,CAAC4J,YAAL,CAAkBgD,UAAlB,IAC/e1oE,CAAC,CAACgnE,KAAF,IAAU9jD,CAAC,CAAC4lD,kBAAF,GAAqB,YAAU;AAAC,YAAG,YAAU5lD,CAAC,CAACwhD,UAAZ,IAAwB,cAAYxhD,CAAC,CAACwhD,UAAzC,EAAoD1kE,CAAC,CAACmnE,MAAF,IAAWnnE,CAAC,CAACinE,MAAF,EAAX;AAAsB,OAD2X,IACzX/jD,CAAC,CAAC6lD,MAAF,GAAS,YAAU;AAAC7lD,SAAC,CAAC6lD,MAAF,GAAS,IAAT;AAAc/oE,SAAC,CAACmnE,MAAF;AAAW,OAD4U;AAC3UjkD,OAAC,CAAC6hD,GAAF,GAAMjJ,IAAI,CAAC6M,qBAAL,GAA2B7M,IAAI,CAAC6M,qBAAL,CAA2BK,eAA3B,CAA2C,KAAKp1C,IAAhD,CAA3B,GAAiF,KAAKA,IAA5F;AAAiG3zB,OAAC,CAAC6iE,IAAF,CAAOF,WAAP,CAAmB1/C,CAAnB;AAAsB;AAAC,GAH2M,MAGtM44C,IAAI,CAACuD,aAAL,CAAmB,4DAAnB,GAAiF,aAAW,KAAK2I,YAAhB,IAA8BlM,IAAI,CAACuD,aAAL,CAAmB,oGAAnB,GACjZr/D,CAAC,CAACmnE,MAAF,EADmX,IACvWnnE,CAAC,CAACgnE,KAAF,EADsR;AAC5Q,CAnBiB,EAmBhBlL,IAAI,CAACmN,mBAAL,GAAyB,UAASjpE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC44C,MAAI,CAACiM,UAAL,CAAgBtxD,IAAhB,CAAqB,IAArB,EAA0BzW,CAA1B,EAA4BC,CAA5B,EAA8BiuB,CAA9B,EAAgC4hB,CAAhC,EAAkC5sB,CAAlC;AAAqC,CAnBlE,EAmBmE44C,IAAI,CAAC6H,QAAL,CAAc7H,IAAI,CAACmN,mBAAnB,EAAuCnN,IAAI,CAACiM,UAA5C,CAnBnE,EAmB2HjM,IAAI,CAACmN,mBAAL,CAAyBrzD,SAAzB,CAAmCgyD,IAAnC,GAAwC,UAAS5nE,CAAT,EAAW;AAAC,WAASC,CAAT,CAAWD,CAAX,EAAaC,CAAb,EAAe;AAACD,KAAC,GAACC,CAAC,GAAC,uCAAqCA,CAArC,GAAuC,cAAxC,GAAuD,4CAA0CD,CAA1C,GAA4C,gBAAtG;AAAuH8vC,KAAC,CAAC1Z,KAAF,CAAQ0lC,IAAI,CAAC6M,qBAAL,GAA2B7M,IAAI,CAAC6M,qBAAL,CAA2BC,UAA3B,CAAsC5oE,CAAtC,CAA3B,GAAoEA,CAA5E;AAA+E;;AAAA,WAASkuB,CAAT,CAAWluB,CAAX,EAAaC,CAAb,EAAe;AAAC,QAAIiuB,CAAC,GAAC4hB,CAAC,CAAC4yB,aAAF,CAAgB,QAAhB,CAAN;AAAgCx0C,KAAC,CAACy0C,KAAF,GAAQ,CAAC,CAAT;AAAWz0C,KAAC,CAACiK,KAAF,GAAQ,CAAC,CAAT;AAAWjK,KAAC,CAACnY,IAAF,GAClf,QADkf;AACzemY,KAAC,CAAC26C,YAAF,CAAe,aAAf,EAA6B,CAAC,CAA9B;AAAiC,QAAI3lD,CAAC,GAAC44C,IAAI,CAACwB,cAAL,EAAN;AAA4Bp6C,KAAC,IAAEgL,CAAC,CAAC26C,YAAF,CAAe,OAAf,EAAuB3lD,CAAvB,CAAH;AAA6BjjB,KAAC,GAACiuB,CAAC,CAACg7C,WAAF,GAAcpN,IAAI,CAAC6M,qBAAL,GAA2B7M,IAAI,CAAC6M,qBAAL,CAA2BQ,YAA3B,CAAwClpE,CAAxC,CAA3B,GAAsEA,CAArF,GAAuFiuB,CAAC,CAAC62C,GAAF,GAAMjJ,IAAI,CAAC6M,qBAAL,GAA2B7M,IAAI,CAAC6M,qBAAL,CAA2BK,eAA3B,CAA2ChpE,CAA3C,CAA3B,GAAyEA,CAAvK;AAAyK8vC,KAAC,CAACgzB,IAAF,CAAOF,WAAP,CAAmB10C,CAAnB;AAAsB;;AAAA,MAAG4tC,IAAI,CAAC1gC,MAAL,CAAYqtC,qBAAf,EAAqC3M,IAAI,CAAC1gC,MAAL,CAAYqtC,qBAAZ,CAAkC,KAAK70C,IAAvC,IAA6C5zB,CAAC,CAACmnE,MAAF,EAA7C,GAAwDnnE,CAAC,CAACgnE,KAAF,EAAxD,CAArC,KAA4G,IAAGlL,IAAI,CAACyI,eAAL,EAAH,EAA0B;AAAC,QAAIz0B,CAAC,GAACgsB,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAlB;AAAA,QAA2Bt6C,CAAC,GAAC,IAA7B;;AAAkC,QAAG44C,IAAI,CAAC0I,kBAAL,EAAH,EAA6B;AAAC,UAAI/9B,CAAC,GAACxmC,CAAN;AAAQ67D,UAAI,CAACiM,UAAL,CAAgBL,MAAhB,GACjf,CAAC,CADgf;AAC9e,KADwc,MACncjhC,CAAC,GAACvY,CAAF;;AAAI,QAAIgN,CAAC,GAAC4gC,IAAI,CAACiM,UAAL,CAAgBO,iBAAhB,CAAkC,YAAU;AAACxM,UAAI,CAACiM,UAAL,CAAgBQ,mBAAhB,CAAoCrtC,CAApC;AAAuCl7B,OAAC,CAACsnE,cAAF,CAAiBxL,IAAI,CAACuC,UAAL,CAAgBC,GAAjC;AAAsC,KAA1H,CAAN;AAAkI73B,KAAC,CAAC,KAAK,CAAN,EAAQ,gCAA8BvL,CAA9B,GAAgC,IAAxC,CAAD;AAA+CuL,KAAC,CAAC,KAAK7S,IAAN,EAAW,KAAK,CAAhB,CAAD;AAAoB,QAAI+c,CAAC,GAACmrB,IAAI,CAACiM,UAAL,CAAgBO,iBAAhB,CAAkC,UAASroE,CAAT,EAAW;AAAC67D,UAAI,CAACiM,UAAL,CAAgBQ,mBAAhB,CAAoC53B,CAApC;AAAuC3wC,OAAC,CAACunE,wBAAF,CAA2BrkD,CAAC,CAAC0Q,IAA7B,EAAkC3zB,CAAlC,EAAoC67D,IAAI,CAACmC,kBAAL,CAAwBC,UAA5D;AAAwE,KAA7J,CAAN;AAAqKz3B,KAAC,CAAC,KAAK,CAAN,EAAQ,yBAAuB,KAAK7S,IAA5B,GAAiC,gCAAjC,GAAkE+c,CAAlE,GAAoE,OAA5E,CAAD;AAAsF,QAAI5iB,CAAC,GAAC+tC,IAAI,CAACiM,UAAL,CAAgBO,iBAAhB,CAAkC,YAAU;AAACxM,UAAI,CAACiM,UAAL,CAAgBQ,mBAAhB,CAAoCx6C,CAApC;AAC/f/tB,OAAC,CAACynE,gBAAF;AAAqBznE,OAAC,CAACmnE,MAAF;AAAW,KADkb,CAAN;AAC1a1gC,KAAC,CAAC,KAAK,CAAN,EAAQ,gCAA8B1Y,CAA9B,GAAgC,IAAxC,CAAD;AAA+C,GAF6T,MAExT+tC,IAAI,CAACuD,aAAL,CAAmB,4DAAnB,GAAiFr/D,CAAC,CAACgnE,KAAF,EAAjF;AAA2F,CAtB1I,EAsB2IlL,IAAI,CAACsN,qBAAL,GAA2B,UAASppE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC44C,MAAI,CAACiM,UAAL,CAAgBtxD,IAAhB,CAAqB,IAArB,EAA0BzW,CAA1B,EAA4BC,CAA5B,EAA8BiuB,CAA9B,EAAgC4hB,CAAhC,EAAkC5sB,CAAlC;AAAqC,OAAKmmD,SAAL,GAAe,IAAf;AAAoB,OAAKC,UAAL,GAAgB,CAACxN,IAAI,CAACyI,eAAL,EAAD,IAAyB,EAAE,cAAazI,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAZ,CAAqBkF,aAArB,CAAmC,QAAnC,CAAf,CAAzC;AAAsG,CAtBzV,EAsB0V5G,IAAI,CAAC6H,QAAL,CAAc7H,IAAI,CAACsN,qBAAnB,EAAyCtN,IAAI,CAACiM,UAA9C,CAtB1V,EAsBoZjM,IAAI,CAACsN,qBAAL,CAA2BxzD,SAA3B,CAAqCgyD,IAArC,GAA0C,UAAS5nE,CAAT,EAAW;AAAC,WAASC,CAAT,GAAY;AAACijB,KAAC,CAACmmD,SAAF,GAC9fvN,IAAI,CAAC+E,aAAL,CAAmB39C,CAAC,CAAC0Q,IAArB,CAD8f;AACne1Q,KAAC,CAACmmD,SAAF,KAAcnmD,CAAC,CAACmmD,SAAF,GAAYnmD,CAAC,CAACqmD,SAAF,CAAYrmD,CAAC,CAACmmD,SAAd,CAAZ,EAAqCnmD,CAAC,CAACmmD,SAAF,KAAcnmD,CAAC,CAACmmD,SAAF,IAAa,qBAAmBnmD,CAAC,CAAC0Q,IAAhD,CAAnD;AAA0G;;AAAA,WAAS1F,CAAT,GAAY;AAAChL,KAAC,CAAComD,UAAF,IAAcrpE,CAAC,EAAf;;AAAkB,QAAGijB,CAAC,CAACmmD,SAAL,EAAe;AAAC5iC,OAAC,IAAEzmC,CAAC,CAACsnE,cAAF,CAAiBxL,IAAI,CAACuC,UAAL,CAAgBC,GAAjC,CAAH;;AAAyC,UAAG;AAAC,YAAIpwC,CAAC,GAAChL,CAAC,CAACmmD,SAAR;AAAkBnmD,SAAC,CAACmmD,SAAF,GAAY,IAAZ;AAAiBvN,YAAI,CAACyG,UAAL,CAAgBr0C,CAAhB;AAAmB,YAAGuY,CAAH,EAAK,IAAIqJ,CAAC,GAACgsB,IAAI,CAACmC,kBAAL,CAAwBC,UAA9B;AAAyC,OAAxG,SAA+G;AAACz3B,SAAC,IAAEzmC,CAAC,CAACynE,gBAAF,EAAH;AAAwB;;AAAAhhC,OAAC,IAAEq1B,IAAI,CAAC1gC,MAAL,CAAY8/B,OAAZ,CAAoBlgD,OAApB,CAA4BwuD,MAA5B,CAAmC,CAACtmD,CAAC,CAACklD,WAAF,EAAD,CAAnC,EAAqD,YAAU;AAACpoE,SAAC,CAACunE,wBAAF,CAA2BrkD,CAAC,CAAC0Q,IAA7B,EAAkCkoC,IAAI,CAAC1gC,MAAL,CAAY8/B,OAAZ,CAAoBlgD,OAApB,CAA4BkI,CAAC,CAACklD,WAAF,EAA5B,CAAlC,EACxat4B,CADwa;AACra,OADqW,CAAH;AAChW9vC,OAAC,CAACmnE,MAAF;AAAW;AAAC;;AAAA,WAASr3B,CAAT,GAAY;AAAC,QAAI9vC,CAAC,GAAC87D,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAlB;AAAA,QAA2Bv9D,CAAC,GAAC67D,IAAI,CAACiM,UAAL,CAAgBO,iBAAhB,CAAkC,YAAU;AAACxM,UAAI,CAACiM,UAAL,CAAgBQ,mBAAhB,CAAoCtoE,CAApC;AAAuCiuB,OAAC;AAAG,KAAxF,CAA7B;AAAA,QAAuH4hB,CAAC,GAAC,oCAAkCgsB,IAAI,CAAC2J,iBAAL,CAAuB,gCAA8BxlE,CAA9B,GAAgC,KAAvD,CAAlC,GAAgG,cAAzN;AAAwOD,KAAC,CAACo2B,KAAF,CAAQ0lC,IAAI,CAAC6M,qBAAL,GAA2B7M,IAAI,CAAC6M,qBAAL,CAA2BC,UAA3B,CAAsC94B,CAAtC,CAA3B,GAAoEA,CAA5E;AAA+E;;AAAA,MAAI5sB,CAAC,GAAC,IAAN;AAAW,MAAG44C,IAAI,CAAC1gC,MAAL,CAAYqtC,qBAAf,EAAqCxoE,CAAC,IAAG,KAAKopE,SAAL,IAAgBvN,IAAI,CAAC1gC,MAAL,CAAYqtC,qBAAZ,CAAkC,EAAlC,EAAqC,KAAKY,SAA1C,CAAhB,IAAsE,KAAKA,SAAL,GAAe,IAAf,EAAoBrpE,CAAC,CAACmnE,MAAF,EAA1F,IAAsGnnE,CAAC,CAACgnE,KAAF,EAA1G,CAArC,KAC5V;AAAC,QAAIvgC,CAAC,GAAC,KAAKyhC,SAAL,CAAettD,MAAf,IAAuBkhD,IAAI,CAACuC,UAAL,CAAgBC,GAA7C;AAAiD,SAAKgL,UAAL,IAAiBrpE,CAAC,EAAlB;AAAqB,QAAIi7B,CAAC,GAAC,IAAEl7B,CAAC,CAACqnE,OAAF,GAAYznE,MAApB;AAAA,QAA2B+wC,CAAC,GAACzV,CAAC,IAAE4gC,IAAI,CAAC4J,YAAL,CAAkBgD,UAAlD;AAA6DxtC,KAAC,GAAC4gC,IAAI,CAACiM,UAAL,CAAgBL,MAAhB,KAAyBxsC,CAAC,IAAE4gC,IAAI,CAAC0I,kBAAL,EAA5B,CAAF;AAAyD,QAAG7zB,CAAC,IAAEzV,CAAN,EAAQl7B,CAAC,CAAC2iE,KAAF,CAAQ,YAAU;AAACz0C,OAAC;AAAG,KAAvB,EAAR,KAAqC;AAAC,UAAIH,CAAC,GAAC+tC,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAlB;AAA2B7sB,OAAC,GAACmrB,IAAI,CAACyI,eAAL,MAAwB,mBAAkBzI,IAAI,CAAC1gC,MAAjD;;AAAwD,UAAGqL,CAAC,IAAEq1B,IAAI,CAACyI,eAAL,EAAH,IAA2BzI,IAAI,CAAC0I,kBAAL,EAA3B,IAAsD,CAAC7zB,CAA1D,EAA4D;AAACmrB,YAAI,CAACiM,UAAL,CAAgBL,MAAhB,GAAuB,CAAC,CAAxB;AAA0B1nE,SAAC,CAACgnE,KAAF;AAAU,YAAI3vC,CAAC,GAACtJ,CAAC,CAAC+6C,kBAAR;;AAA2B/6C,SAAC,CAAC+6C,kBAAF,GAAqB,YAAU;AAAC,2BAAe/6C,CAAC,CAAC22C,UAAjB,KAA8B32C,CAAC,CAAC+6C,kBAAF,GACpfzxC,CADof,EAClfnJ,CAAC,EADif,EAC9eluB,CAAC,CAACinE,MAAF,EADgd;AACpcnL,cAAI,CAAC3G,UAAL,CAAgB99B,CAAhB,KAAoBA,CAAC,CAACoF,KAAF,CAAQ,KAAK,CAAb,EAAe3zB,SAAf,CAApB;AAA8C,SADsX;AACrX,OADyP,MACrP,CAACgzD,IAAI,CAAC4J,YAAL,CAAkBgD,UAAnB,IAA+B5M,IAAI,CAACyI,eAAL,EAA/B,IAAuDzI,IAAI,CAAC0I,kBAAL,EAAvD,GAAiF10B,CAAC,EAAlF,GAAqF5hB,CAAC,EAAtF;AAAyF;AAAC;AAAC,CA1BzH,EA0B0H4tC,IAAI,CAACsN,qBAAL,CAA2BxzD,SAA3B,CAAqC2zD,SAArC,GAA+C,UAASvpE,CAAT,EAAW,CAAE,CA1BtL,EA0BuL87D,IAAI,CAAC2N,oBAAL,GAA0B,UAASzpE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmBujB,CAAnB,EAAqB;AAACq1B,MAAI,CAACsN,qBAAL,CAA2B3yD,IAA3B,CAAgC,IAAhC,EAAqCzW,CAArC,EAAuCC,CAAvC,EAAyCiuB,CAAzC,EAA2C4hB,CAA3C,EAA6C5sB,CAA7C;AAAgD,OAAKwmD,UAAL,GAAgBjjC,CAAhB;AAAkB,CA1BzS,EA0B0Sq1B,IAAI,CAAC6H,QAAL,CAAc7H,IAAI,CAAC2N,oBAAnB,EAAwC3N,IAAI,CAACsN,qBAA7C,CA1B1S,EA0B8WtN,IAAI,CAAC2N,oBAAL,CAA0B7zD,SAA1B,CAAoC2zD,SAApC,GAA8C,UAASvpE,CAAT,EAAW;AAAC,SAAO,KAAK0pE,UAAL,CAAgBtI,SAAhB,CAA0BphE,CAA1B,EAA4B,KAAKooE,WAAL,EAA5B,CAAP;AAAuD,CA1B/d,EA2BvCtM,IAAI,CAAC6N,gCAAL,GAAsC,UAAS3pE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC44C,MAAI,CAACsN,qBAAL,CAA2B3yD,IAA3B,CAAgC,IAAhC,EAAqCzW,CAArC,EAAuCC,CAAvC,EAAyCiuB,CAAzC,EAA2C4hB,CAA3C,EAA6C5sB,CAA7C;AAAgD,CA3BnE,EA2BoE44C,IAAI,CAAC6H,QAAL,CAAc7H,IAAI,CAAC6N,gCAAnB,EAAoD7N,IAAI,CAACsN,qBAAzD,CA3BpE,EA2BoJtN,IAAI,CAAC6N,gCAAL,CAAsC/zD,SAAtC,CAAgD2zD,SAAhD,GAA0D,UAASvpE,CAAT,EAAW;AAAC,SAAOA,CAAP;AAAS,CA3BnO,EA2BoO87D,IAAI,CAAC8N,oBAAL,GAA0B,UAAS5pE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmBujB,CAAnB,EAAqBvL,CAArB,EAAuB;AAAC4gC,MAAI,CAACsN,qBAAL,CAA2B3yD,IAA3B,CAAgC,IAAhC,EAAqCzW,CAArC,EAAuCC,CAAvC,EAAyCiuB,CAAzC,EAA2C4hB,CAA3C,EAA6C5sB,CAA7C;AAAgD,OAAK2mD,eAAL,GAAqBpjC,CAArB;AAAuB,OAAK++B,WAAL,GAAiBtqC,CAAjB;AAAmB,CA3BhX,EA2BiX4gC,IAAI,CAAC6H,QAAL,CAAc7H,IAAI,CAAC8N,oBAAnB,EAAwC9N,IAAI,CAACsN,qBAA7C,CA3BjX,EA2BqbtN,IAAI,CAAC8N,oBAAL,CAA0Bh0D,SAA1B,CAAoC2zD,SAApC,GAC5d,UAASvpE,CAAT,EAAW;AAAC,OAAK6pE,eAAL,KAAuB7pE,CAAC,GAAC,KAAKwlE,WAAL,CAAiBpE,SAAjB,CAA2BphE,CAA3B,EAA6B,KAAKooE,WAAL,EAA7B,CAAzB;AAA2E,SAAOtM,IAAI,CAACkE,sBAAL,IAA6BlE,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC1gC,MAAL,CAAY5zB,IAAvB,CAA7B,GAA0D,qBAAmBs0D,IAAI,CAAC1gC,MAAL,CAAY5zB,IAAZ,CAAiBC,SAAjB,CAA2BzH,CAAC,GAAC,kBAAF,GAAqB,KAAK4zB,IAA1B,GAA+B,IAA1D,CAAnB,GAAmF,IAA7I,GAAkJ,qDAAmD5zB,CAAnD,GAAqD,sCAArD,GAA4F,KAAK4zB,IAAjG,GAAsG,IAA/P;AAAoQ,CA5BpT,EA4BqTkoC,IAAI,CAAC4J,YAAL,CAAkBgD,UAAlB,GAA6B,EAAE5M,IAAI,CAAC1gC,MAAL,CAAY0uC,IAAZ,IAAkB,CAAChO,IAAI,CAAC1gC,MAAL,CAAYoiC,QAA/B,IAAyC,CAAC1B,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAZ,CAAqBuM,GAAjE,CA5BlV,EA4BwZjO,IAAI,CAAC4J,YAAL,CAAkB9vD,SAAlB,CAA4BqpD,aAA5B,GAA0C,UAASj/D,CAAT,EAAWC,CAAX,EACzeiuB,CADye,EACve4hB,CADue,EACre;AAAC7vC,GAAC,GAACA,CAAC,IAAE,EAAL;AAAQD,GAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU,KAAV,EAAgB,GAAhB,CAAF;AAAuB,MAAIgK,CAAC,GAAC44C,IAAI,CAAC8E,cAAL,CAAoB9E,IAAI,CAAC2D,QAAL,GAAcz/D,CAAlC,CAAN;AAA2C8vC,GAAC,IAAE,cAAY,OAAOA,CAAtB,KAA0BA,CAAC,GAACA,CAAC,GAAC;AAACl1B,UAAM,EAACkhD,IAAI,CAACuC,UAAL,CAAgBE;AAAxB,GAAD,GAA+B,EAA5D;AAAgErwC,GAAC,GAAC,KAAK+3C,QAAL,CAAcS,gBAAd,CAA+BxjD,CAA/B,EAAiCljB,CAAjC,EAAmCC,CAAnC,EAAqCiuB,CAArC,EAAuC4hB,CAAvC,EAAyCgsB,IAAI,CAAC0J,WAAL,CAAiBD,cAAjB,CAAgCz1B,CAAC,CAACk6B,IAAF,IAAQ,KAAxC,EAA8Cl6B,CAAC,CAACl1B,MAAhD,CAAzC,CAAF;AAAoG,OAAK+qD,aAAL,CAAmBziD,CAAnB,IAAsBgL,CAAtB;;AAAwB,OAAIA,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACjuB,CAAC,CAACL,MAAZ,EAAmBsuB,CAAC,EAApB,EAAuB,KAAK03C,SAAL,CAAe3lE,CAAC,CAACiuB,CAAD,CAAhB,IAAqBhL,CAArB;;AAAuB,OAAK0iD,SAAL,CAAe5lE,CAAf,IAAkBkjB,CAAlB;AAAoB,CA7BtS,EA6BuS44C,IAAI,CAACoK,iBAAL,GAAuB,UAASlmE,CAAT,EAAW;AAAC,OAAK0pE,UAAL,GAAgB1pE,CAAhB;AAAkB,CA7B5V,EA6B6V87D,IAAI,CAACoK,iBAAL,CAAuBtwD,SAAvB,CAAiC8wD,gBAAjC,GAAkD,UAAS1mE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmBujB,CAAnB,EAAqB;AAAC,SAAOvjB,CAAC,CAACtI,MAAF,IAAUkhD,IAAI,CAACuC,UAAL,CAAgBE,IAA1B,GAA+B,IAAIzC,IAAI,CAAC8N,oBAAT,CAA8B5pE,CAA9B,EAClfC,CADkf,EAChfiuB,CADgf,EAC9e4hB,CAD8e,EAC5e5sB,CAD4e,EAC1eujB,CAD0e,EACxe,KAAKijC,UADme,CAA/B,GACxbjjC,CAAC,GAAC,IAAIq1B,IAAI,CAAC2N,oBAAT,CAA8BzpE,CAA9B,EAAgCC,CAAhC,EAAkCiuB,CAAlC,EAAoC4hB,CAApC,EAAsC5sB,CAAtC,EAAwC,KAAKwmD,UAA7C,CAAD,GAA0DxmD,CAAC,CAACtI,MAAF,IAAUkhD,IAAI,CAACuC,UAAL,CAAgBC,GAA1B,GAA8B,WAASxC,IAAI,CAACoE,SAAd,IAAyBpE,IAAI,CAACqE,4BAA9B,GAA2D,IAAIrE,IAAI,CAAC6N,gCAAT,CAA0C3pE,CAA1C,EAA4CC,CAA5C,EAA8CiuB,CAA9C,EAAgD4hB,CAAhD,EAAkD5sB,CAAlD,CAA3D,GAAgH,IAAI44C,IAAI,CAACmN,mBAAT,CAA6BjpE,CAA7B,EAA+BC,CAA/B,EAAiCiuB,CAAjC,EAAmC4hB,CAAnC,EAAqC5sB,CAArC,CAA9I,GAAsL,IAAI44C,IAAI,CAACiM,UAAT,CAAoB/nE,CAApB,EAAsBC,CAAtB,EAAwBiuB,CAAxB,EAA0B4hB,CAA1B,EAA4B5sB,CAA5B,CADgM;AACjK,CA9BpQ,EA8BqQ44C,IAAI,CAACqD,YAAL,GAAkB,IAAIrD,IAAI,CAAC4J,YAAT,EA9BvR,EA8B6S5J,IAAI,CAAC2K,eAAL,GAAqB,YAAU;AAAC3K,MAAI,CAACqD,YAAL,CAAkBsH,eAAlB;AAAoC,CA9BjX,EA8BkX3K,IAAI,CAACgL,oBAAL,GAA0B,UAAS9mE,CAAT,EAAW;AAAC87D,MAAI,CAACqD,YAAL,CAAkB2H,oBAAlB,CAAuC9mE,CAAvC;AAA0C,CA9Blc,EA8Bmc87D,IAAI,CAAC1gC,MAAL,CAAY6uC,eAAZ,IAC1enO,IAAI,CAACqD,YAAL,CAAkBsH,eAAlB,EA/BuC,EA+BH3K,IAAI,CAACuK,SAAL,GAAe,UAASrmE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqD,YAAL,CAAkBkH,SAAlB,CAA4BrmE,CAA5B,EAA8BC,CAA9B;AAAiC,CA/BlG;AA+BoG67D,IAAI,CAACoO,yBAAL,GAA+B,EAA/B;;AAAkCpO,IAAI,CAACqO,SAAL,GAAe,UAASnqE,CAAT,EAAW;AAAC,SAAOA,CAAP;AAAS,CAApC;;AAAqC87D,IAAI,CAACsO,wBAAL,GAA8B,UAASpqE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAN;AAAW,MAAG,gBAAc,OAAOoqE,YAArB,IAAmC,CAACA,YAAY,CAACC,YAApD,EAAiE,OAAOrqE,CAAP;;AAAS,MAAG;AAACA,KAAC,GAACoqE,YAAY,CAACC,YAAb,CAA0BtqE,CAA1B,EAA4B;AAAC4oE,gBAAU,EAAC9M,IAAI,CAACqO,SAAjB;AAA2BhB,kBAAY,EAACrN,IAAI,CAACqO,SAA7C;AAAuDnB,qBAAe,EAAClN,IAAI,CAACqO,SAA5E;AAAsFI,eAAS,EAACzO,IAAI,CAACqO;AAArG,KAA5B,CAAF;AAA+I,GAAnJ,CAAmJ,OAAMj8C,CAAN,EAAQ;AAAC4tC,QAAI,CAACuD,aAAL,CAAmBnxC,CAAC,CAAC2Z,OAArB;AAA8B;;AAAA,SAAO5nC,CAAP;AAAS,CAAlU;;AAC3K67D,IAAI,CAAC6M,qBAAL,GAA2B7M,IAAI,CAACoO,yBAAL,GAA+BpO,IAAI,CAACsO,wBAAL,CAA8BtO,IAAI,CAACoO,yBAAL,GAA+B,OAA7D,CAA/B,GAAqG,IAAhI;AAAqIpO,IAAI,CAACp3D,MAAL,GAAY,EAAZ;;AAAeo3D,IAAI,CAACp3D,MAAL,CAAYisD,EAAZ,GAAe,UAAS3wD,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,KAAGC,CAAJ,GAAM,MAAID,CAAJ,IAAO,IAAEA,CAAF,KAAM,IAAEC,CAArB,GAAuBD,CAAC,KAAGA,CAAJ,IAAOC,CAAC,KAAGA,CAAzC;AAA2C,CAAxE;;AAAyE67D,IAAI,CAACp3D,MAAL,CAAYoH,OAAZ,GAAoB,UAAS9L,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAR,IAAa9vC,CAAb,EAAeC,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASluB,CAAC,CAAC8vC,CAAD,CAAV,EAAcA,CAAd,EAAgB9vC,CAAhB;AAAmB,CAAtE;;AAAuE87D,IAAI,CAACp3D,MAAL,CAAYrE,MAAZ,GAAmB,UAASL,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,EAAN;AAAA,MAAS5sB,CAAT;;AAAW,OAAIA,CAAJ,IAASljB,CAAT,EAAWC,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASluB,CAAC,CAACkjB,CAAD,CAAV,EAAcA,CAAd,EAAgBljB,CAAhB,MAAqB8vC,CAAC,CAAC5sB,CAAD,CAAD,GAAKljB,CAAC,CAACkjB,CAAD,CAA3B;;AAAgC,SAAO4sB,CAAP;AAAS,CAAlG;;AAAmGgsB,IAAI,CAACp3D,MAAL,CAAY/H,GAAZ,GAAgB,UAASqD,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,EAAN;AAAA,MAAS5sB,CAAT;;AAAW,OAAIA,CAAJ,IAASljB,CAAT,EAAW8vC,CAAC,CAAC5sB,CAAD,CAAD,GAAKjjB,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASluB,CAAC,CAACkjB,CAAD,CAAV,EAAcA,CAAd,EAAgBljB,CAAhB,CAAL;;AAAwB,SAAO8vC,CAAP;AAAS,CAAvF;;AAAwFgsB,IAAI,CAACp3D,MAAL,CAAY7D,IAAZ,GAAiB,UAASb,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAR,IAAa9vC,CAAb,EAAe,IAAGC,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASluB,CAAC,CAAC8vC,CAAD,CAAV,EAAcA,CAAd,EAAgB9vC,CAAhB,CAAH,EAAsB,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAAxF;;AAC/d87D,IAAI,CAACp3D,MAAL,CAAY7E,KAAZ,GAAkB,UAASG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAR,IAAa9vC,CAAb,EAAe,IAAG,CAACC,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASluB,CAAC,CAAC8vC,CAAD,CAAV,EAAcA,CAAd,EAAgB9vC,CAAhB,CAAJ,EAAuB,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAA1F;;AAA2F87D,IAAI,CAACp3D,MAAL,CAAY8lE,QAAZ,GAAqB,UAASxqE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,CAAN;AAAA,MAAQiuB,CAAR;;AAAU,OAAIA,CAAJ,IAASluB,CAAT,EAAWC,CAAC;;AAAG,SAAOA,CAAP;AAAS,CAAnE;;AAAoE67D,IAAI,CAACp3D,MAAL,CAAY+lE,SAAZ,GAAsB,UAASzqE,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAR,IAAaD,CAAb,EAAe,OAAOC,CAAP;AAAS,CAA1D;;AAA2D67D,IAAI,CAACp3D,MAAL,CAAYgmE,WAAZ,GAAwB,UAAS1qE,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAR,IAAaD,CAAb,EAAe,OAAOA,CAAC,CAACC,CAAD,CAAR;AAAY,CAA/D;;AAAgE67D,IAAI,CAACp3D,MAAL,CAAYimE,QAAZ,GAAqB,UAAS3qE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACp3D,MAAL,CAAYkmE,aAAZ,CAA0B5qE,CAA1B,EAA4BC,CAA5B,CAAP;AAAsC,CAAzE;;AAA0E67D,IAAI,CAACp3D,MAAL,CAAYmmE,SAAZ,GAAsB,UAAS7qE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,EAAN;AAAA,MAASiuB,CAAC,GAAC,CAAX;AAAA,MAAa4hB,CAAb;;AAAe,OAAIA,CAAJ,IAAS9vC,CAAT,EAAWC,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOluB,CAAC,CAAC8vC,CAAD,CAAR;;AAAY,SAAO7vC,CAAP;AAAS,CAAjF;;AACpW67D,IAAI,CAACp3D,MAAL,CAAYomE,OAAZ,GAAoB,UAAS9qE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,EAAN;AAAA,MAASiuB,CAAC,GAAC,CAAX;AAAA,MAAa4hB,CAAb;;AAAe,OAAIA,CAAJ,IAAS9vC,CAAT,EAAWC,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAO4hB,CAAP;;AAAS,SAAO7vC,CAAP;AAAS,CAA5E;;AAA6E67D,IAAI,CAACp3D,MAAL,CAAYqmE,cAAZ,GAA2B,UAAS/qE,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC4tC,IAAI,CAAC2F,WAAL,CAAiBxhE,CAAjB,CAAN;AAAA,MAA0B6vC,CAAC,GAAC5hB,CAAC,GAACjuB,CAAD,GAAG6I,SAAhC;;AAA0C,OAAIolB,CAAC,GAACA,CAAC,GAAC,CAAD,GAAG,CAAV,EAAYA,CAAC,GAAC4hB,CAAC,CAAClwC,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B;AAAC,QAAG,QAAMluB,CAAT,EAAW;AAAOA,KAAC,GAACA,CAAC,CAAC8vC,CAAC,CAAC5hB,CAAD,CAAF,CAAH;AAAU;;AAAA,SAAOluB,CAAP;AAAS,CAApJ;;AAAqJ87D,IAAI,CAACp3D,MAAL,CAAYsmE,WAAZ,GAAwB,UAAShrE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO,SAAOD,CAAP,IAAUC,CAAC,IAAID,CAAtB;AAAwB,CAA9D;;AAA+D87D,IAAI,CAACp3D,MAAL,CAAYkmE,aAAZ,GAA0B,UAAS5qE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAR,IAAaluB,CAAb,EAAe,IAAGA,CAAC,CAACkuB,CAAD,CAAD,IAAMjuB,CAAT,EAAW,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAApF;;AAAqF67D,IAAI,CAACp3D,MAAL,CAAY6/C,OAAZ,GAAoB,UAASvkD,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAR,IAAa9vC,CAAb,EAAe,IAAGC,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASluB,CAAC,CAAC8vC,CAAD,CAAV,EAAcA,CAAd,EAAgB9vC,CAAhB,CAAH,EAAsB,OAAO8vC,CAAP;AAAS,CAAlF;;AACtXgsB,IAAI,CAACp3D,MAAL,CAAYumE,SAAZ,GAAsB,UAASjrE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAM,CAACjuB,CAAC,GAAC67D,IAAI,CAACp3D,MAAL,CAAY6/C,OAAZ,CAAoBvkD,CAApB,EAAsBC,CAAtB,EAAwBiuB,CAAxB,CAAH,KAAgCluB,CAAC,CAACC,CAAD,CAAvC;AAA2C,CAAjF;;AAAkF67D,IAAI,CAACp3D,MAAL,CAAYwmE,OAAZ,GAAoB,UAASlrE,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAR,IAAaD,CAAb,EAAe,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAAjE;;AAAkE87D,IAAI,CAACp3D,MAAL,CAAYymE,KAAZ,GAAkB,UAASnrE,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAR,IAAaD,CAAb,EAAe,OAAOA,CAAC,CAACC,CAAD,CAAR;AAAY,CAAzD;;AAA0D67D,IAAI,CAACp3D,MAAL,CAAY/C,MAAZ,GAAmB,UAAS3B,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAJ;AAAM,GAACA,CAAC,GAACjuB,CAAC,IAAID,CAAR,KAAY,OAAOA,CAAC,CAACC,CAAD,CAApB;AAAwB,SAAOiuB,CAAP;AAAS,CAAxE;;AAAyE4tC,IAAI,CAACp3D,MAAL,CAAY/I,GAAZ,GAAgB,UAASqE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAG,SAAOluB,CAAP,IAAUC,CAAC,IAAID,CAAlB,EAAoB,MAAM5B,KAAK,CAAC,0CAAwC6B,CAAxC,GAA0C,GAA3C,CAAX;AAA2D67D,MAAI,CAACp3D,MAAL,CAAYtF,GAAZ,CAAgBY,CAAhB,EAAkBC,CAAlB,EAAoBiuB,CAApB;AAAuB,CAAtI;;AAAuI4tC,IAAI,CAACp3D,MAAL,CAAY7I,GAAZ,GAAgB,UAASmE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAO,SAAOluB,CAAP,IAAUC,CAAC,IAAID,CAAf,GAAiBA,CAAC,CAACC,CAAD,CAAlB,GAAsBiuB,CAA7B;AAA+B,CAA/D;;AAC9Z4tC,IAAI,CAACp3D,MAAL,CAAYtF,GAAZ,GAAgB,UAASY,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,CAACC,CAAD,CAAD,GAAKiuB,CAAL;AAAO,CAAvC;;AAAwC4tC,IAAI,CAACp3D,MAAL,CAAY0mE,cAAZ,GAA2B,UAASprE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOjuB,CAAC,IAAID,CAAL,GAAOA,CAAC,CAACC,CAAD,CAAR,GAAYD,CAAC,CAACC,CAAD,CAAD,GAAKiuB,CAAxB;AAA0B,CAArE;;AAAsE4tC,IAAI,CAACp3D,MAAL,CAAY2mE,0BAAZ,GAAuC,UAASrrE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAGjuB,CAAC,IAAID,CAAR,EAAU,OAAOA,CAAC,CAACC,CAAD,CAAR;AAAYiuB,GAAC,GAACA,CAAC,EAAH;AAAM,SAAOluB,CAAC,CAACC,CAAD,CAAD,GAAKiuB,CAAZ;AAAc,CAAjG;;AAAkG4tC,IAAI,CAACp3D,MAAL,CAAY4mE,MAAZ,GAAmB,UAAStrE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAR,IAAaluB,CAAb,EAAe,IAAG,EAAEkuB,CAAC,IAAIjuB,CAAP,KAAWD,CAAC,CAACkuB,CAAD,CAAD,KAAOjuB,CAAC,CAACiuB,CAAD,CAAtB,EAA0B,OAAM,CAAC,CAAP;;AAAS,OAAI,IAAI4hB,CAAR,IAAa7vC,CAAb,EAAe,IAAG,EAAE6vC,CAAC,IAAI9vC,CAAP,CAAH,EAAa,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAAjI;;AAAkI87D,IAAI,CAACp3D,MAAL,CAAYk6B,KAAZ,GAAkB,UAAS5+B,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,EAAN;AAAA,MAASiuB,CAAT;;AAAW,OAAIA,CAAJ,IAASluB,CAAT,EAAWC,CAAC,CAACiuB,CAAD,CAAD,GAAKluB,CAAC,CAACkuB,CAAD,CAAN;;AAAU,SAAOjuB,CAAP;AAAS,CAAvE;;AAClV67D,IAAI,CAACp3D,MAAL,CAAY6mE,WAAZ,GAAwB,UAASvrE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC67D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAN;;AAAqB,MAAG,YAAUC,CAAV,IAAa,WAASA,CAAzB,EAA2B;AAAC,QAAG67D,IAAI,CAAC3G,UAAL,CAAgBn1D,CAAC,CAAC4+B,KAAlB,CAAH,EAA4B,OAAO5+B,CAAC,CAAC4+B,KAAF,EAAP;AAAiB3+B,KAAC,GAAC,WAASA,CAAT,GAAW,EAAX,GAAc,EAAhB;;AAAmB,SAAI,IAAIiuB,CAAR,IAAaluB,CAAb,EAAeC,CAAC,CAACiuB,CAAD,CAAD,GAAK4tC,IAAI,CAACp3D,MAAL,CAAY6mE,WAAZ,CAAwBvrE,CAAC,CAACkuB,CAAD,CAAzB,CAAL;;AAAmC,WAAOjuB,CAAP;AAAS;;AAAA,SAAOD,CAAP;AAAS,CAAzN;;AAA0N87D,IAAI,CAACp3D,MAAL,CAAY8mE,SAAZ,GAAsB,UAASxrE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,EAAN;AAAA,MAASiuB,CAAT;;AAAW,OAAIA,CAAJ,IAASluB,CAAT,EAAWC,CAAC,CAACD,CAAC,CAACkuB,CAAD,CAAF,CAAD,GAAQA,CAAR;;AAAU,SAAOjuB,CAAP;AAAS,CAA3E;;AAA4E67D,IAAI,CAACp3D,MAAL,CAAY+mE,iBAAZ,GAA8B,gGAAgGxxD,KAAhG,CAAsG,GAAtG,CAA9B;;AACtS6hD,IAAI,CAACp3D,MAAL,CAAYgnE,MAAZ,GAAmB,UAAS1rE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAJ,EAAM4hB,CAAN,EAAQ5sB,CAAC,GAAC,CAAd,EAAgBA,CAAC,GAACpa,SAAS,CAAClJ,MAA5B,EAAmCsjB,CAAC,EAApC,EAAuC;AAAC4sB,KAAC,GAAChnC,SAAS,CAACoa,CAAD,CAAX;;AAAe,SAAIgL,CAAJ,IAAS4hB,CAAT,EAAW9vC,CAAC,CAACkuB,CAAD,CAAD,GAAK4hB,CAAC,CAAC5hB,CAAD,CAAN;;AAAU,SAAI,IAAIuY,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACq1B,IAAI,CAACp3D,MAAL,CAAY+mE,iBAAZ,CAA8B7rE,MAA5C,EAAmD6mC,CAAC,EAApD,EAAuDvY,CAAC,GAAC4tC,IAAI,CAACp3D,MAAL,CAAY+mE,iBAAZ,CAA8BhlC,CAA9B,CAAF,EAAmCjqC,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCq5B,CAArC,EAAuC5hB,CAAvC,MAA4CluB,CAAC,CAACkuB,CAAD,CAAD,GAAK4hB,CAAC,CAAC5hB,CAAD,CAAlD,CAAnC;AAA0F;AAAC,CAA/P;;AACA4tC,IAAI,CAACp3D,MAAL,CAAYoX,MAAZ,GAAmB,UAAS9b,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC6I,SAAS,CAAClJ,MAAhB;AAAuB,MAAG,KAAGK,CAAH,IAAM67D,IAAI,CAAC56D,OAAL,CAAa4H,SAAS,CAAC,CAAD,CAAtB,CAAT,EAAoC,OAAOgzD,IAAI,CAACp3D,MAAL,CAAYoX,MAAZ,CAAmB2gB,KAAnB,CAAyB,IAAzB,EAA8B3zB,SAAS,CAAC,CAAD,CAAvC,CAAP;AAAmD,MAAG7I,CAAC,GAAC,CAAL,EAAO,MAAM7B,KAAK,CAAC,4BAAD,CAAX;;AAA0C,OAAI,IAAI8vB,CAAC,GAAC,EAAN,EAAS4hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC7vC,CAAnB,EAAqB6vC,CAAC,IAAE,CAAxB,EAA0B5hB,CAAC,CAACplB,SAAS,CAACgnC,CAAD,CAAV,CAAD,GAAgBhnC,SAAS,CAACgnC,CAAC,GAAC,CAAH,CAAzB;;AAA+B,SAAO5hB,CAAP;AAAS,CAAhQ;;AAAiQ4tC,IAAI,CAACp3D,MAAL,CAAYinE,SAAZ,GAAsB,UAAS3rE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC6I,SAAS,CAAClJ,MAAhB;AAAuB,MAAG,KAAGK,CAAH,IAAM67D,IAAI,CAAC56D,OAAL,CAAa4H,SAAS,CAAC,CAAD,CAAtB,CAAT,EAAoC,OAAOgzD,IAAI,CAACp3D,MAAL,CAAYinE,SAAZ,CAAsBlvC,KAAtB,CAA4B,IAA5B,EAAiC3zB,SAAS,CAAC,CAAD,CAA1C,CAAP;;AAAsD,OAAI,IAAIolB,CAAC,GAAC,EAAN,EAAS4hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC7vC,CAAnB,EAAqB6vC,CAAC,EAAtB,EAAyB5hB,CAAC,CAACplB,SAAS,CAACgnC,CAAD,CAAV,CAAD,GAAgB,CAAC,CAAjB;;AAAmB,SAAO5hB,CAAP;AAAS,CAAxM;;AACjQ4tC,IAAI,CAACp3D,MAAL,CAAYknE,mBAAZ,GAAgC,UAAS5rE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACD,CAAN;AAAQxD,QAAM,CAACqvE,QAAP,IAAiB,CAACrvE,MAAM,CAACqvE,QAAP,CAAgB7rE,CAAhB,CAAlB,KAAuCC,CAAC,GAACzD,MAAM,CAACsf,MAAP,CAAc9b,CAAd,CAAF,EAAmBxD,MAAM,CAACsvE,MAAP,CAAc7rE,CAAd,CAA1D;AAA4E,SAAOA,CAAP;AAAS,CAAzI;;AAA0I67D,IAAI,CAACp3D,MAAL,CAAYqnE,eAAZ,GAA4B,UAAS/rE,CAAT,EAAW;AAAC,SAAM,CAAC,CAACxD,MAAM,CAACqvE,QAAT,IAAmBrvE,MAAM,CAACqvE,QAAP,CAAgB7rE,CAAhB,CAAzB;AAA4C,CAApF;;AAC1I87D,IAAI,CAACp3D,MAAL,CAAYsnE,mBAAZ,GAAgC,UAAShsE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAG,CAACluB,CAAJ,EAAM,OAAM,EAAN;AAAS,MAAG,CAACxD,MAAM,CAACyvE,mBAAR,IAA6B,CAACzvE,MAAM,CAAC60D,cAAxC,EAAuD,OAAOyK,IAAI,CAACp3D,MAAL,CAAYomE,OAAZ,CAAoB9qE,CAApB,CAAP;;AAA8B,OAAI,IAAI8vC,CAAC,GAAC,EAAV,EAAa9vC,CAAC,KAAGA,CAAC,KAAGxD,MAAM,CAACoZ,SAAX,IAAsB3V,CAAzB,CAAD,KAA+BD,CAAC,KAAGw3D,QAAQ,CAAC5hD,SAAb,IAAwBsY,CAAvD,CAAb,GAAwE;AAAC,SAAI,IAAIhL,CAAC,GAAC1mB,MAAM,CAACyvE,mBAAP,CAA2BjsE,CAA3B,CAAN,EAAoCymC,CAAC,GAAC,CAA1C,EAA4CA,CAAC,GAACvjB,CAAC,CAACtjB,MAAhD,EAAuD6mC,CAAC,EAAxD,EAA2DqJ,CAAC,CAAC5sB,CAAC,CAACujB,CAAD,CAAF,CAAD,GAAQ,CAAC,CAAT;;AAAWzmC,KAAC,GAACxD,MAAM,CAAC60D,cAAP,CAAsBrxD,CAAtB,CAAF;AAA2B;;AAAA,SAAO87D,IAAI,CAACp3D,MAAL,CAAYomE,OAAZ,CAAoBh7B,CAApB,CAAP;AAA8B,CAA5V;;AAA6VgsB,IAAI,CAACp3D,MAAL,CAAYwnE,aAAZ,GAA0B,UAASlsE,CAAT,EAAW;AAAC,SAAM,CAACA,CAAC,GAACxD,MAAM,CAAC60D,cAAP,CAAsBrxD,CAAC,CAAC4V,SAAxB,CAAH,KAAwC5V,CAAC,CAACvH,WAAhD;AAA4D,CAAlG;;AAAmGqjE,IAAI,CAACqQ,KAAL,GAAW,EAAX;;AAAcrQ,IAAI,CAACqQ,KAAL,CAAW/tE,KAAX,GAAiB,UAAS4B,CAAT,EAAW;AAAC,MAAG5B,KAAK,CAAC2pC,iBAAT,EAA2B3pC,KAAK,CAAC2pC,iBAAN,CAAwB,IAAxB,EAA6B+zB,IAAI,CAACqQ,KAAL,CAAW/tE,KAAxC,EAA3B,KAA8E;AAAC,QAAI6B,CAAC,GAAC7B,KAAK,GAAGoyD,KAAd;AAAoBvwD,KAAC,KAAG,KAAKuwD,KAAL,GAAWvwD,CAAd,CAAD;AAAkB;AAAAD,GAAC,KAAG,KAAK6nC,OAAL,GAAazK,MAAM,CAACp9B,CAAD,CAAtB,CAAD;AAA4B,OAAKosE,mBAAL,GAAyB,CAAC,CAA1B;AAA4B,CAA1M;;AAA2MtQ,IAAI,CAAC6H,QAAL,CAAc7H,IAAI,CAACqQ,KAAL,CAAW/tE,KAAzB,EAA+BA,KAA/B;AAAsC09D,IAAI,CAACqQ,KAAL,CAAW/tE,KAAX,CAAiBwX,SAAjB,CAA2BhT,IAA3B,GAAgC,aAAhC;AAA8Ck5D,IAAI,CAACuQ,GAAL,GAAS,EAAT;AAAYvQ,IAAI,CAACuQ,GAAL,CAASC,QAAT,GAAkB;AAACC,SAAO,EAAC,CAAT;AAAWC,WAAS,EAAC,CAArB;AAAuBC,MAAI,EAAC,CAA5B;AAA8BC,eAAa,EAAC,CAA5C;AAA8CC,kBAAgB,EAAC,CAA/D;AAAiEC,QAAM,EAAC,CAAxE;AAA0EC,wBAAsB,EAAC,CAAjG;AAAmGC,SAAO,EAAC,CAA3G;AAA6GC,UAAQ,EAAC,CAAtH;AAAwHC,eAAa,EAAC,EAAtI;AAAyIC,mBAAiB,EAAC,EAA3J;AAA8JC,UAAQ,EAAC;AAAvK,CAAlB;AAA6LpR,IAAI,CAACqR,OAAL,GAAa,EAAb;AAAgBrR,IAAI,CAACqR,OAAL,CAAaC,cAAb,GAA4BtR,IAAI,CAACW,KAAjC;;AAAuCX,IAAI,CAACqR,OAAL,CAAaE,cAAb,GAA4B,UAASrtE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqQ,KAAL,CAAW/tE,KAAX,CAAiBqY,IAAjB,CAAsB,IAAtB,EAA2BqlD,IAAI,CAACqR,OAAL,CAAaG,KAAb,CAAmBttE,CAAnB,EAAqBC,CAArB,CAA3B;AAAoD,OAAKstE,cAAL,GAAoBvtE,CAApB;AAAsB,CAApH;;AAAqH87D,IAAI,CAAC6H,QAAL,CAAc7H,IAAI,CAACqR,OAAL,CAAaE,cAA3B,EAA0CvR,IAAI,CAACqQ,KAAL,CAAW/tE,KAArD;AAA4D09D,IAAI,CAACqR,OAAL,CAAaE,cAAb,CAA4Bz3D,SAA5B,CAAsChT,IAAtC,GAA2C,gBAA3C;;AAA4Dk5D,IAAI,CAACqR,OAAL,CAAaK,qBAAb,GAAmC,UAASxtE,CAAT,EAAW;AAAC,QAAMA,CAAN;AAAS,CAAxD;;AAAyD87D,IAAI,CAACqR,OAAL,CAAaM,aAAb,GAA2B3R,IAAI,CAACqR,OAAL,CAAaK,qBAAxC;;AACnxC1R,IAAI,CAACqR,OAAL,CAAaG,KAAb,GAAmB,UAASttE,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAACA,CAAC,CAACia,KAAF,CAAQ,IAAR,CAAF;;AAAgB,OAAI,IAAIiU,CAAC,GAAC,EAAN,EAAS4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAF,GAAS,CAApB,EAAsBsjB,CAAC,GAAC,CAA5B,EAA8BA,CAAC,GAAC4sB,CAAhC,EAAkC5sB,CAAC,EAAnC,EAAsCgL,CAAC,IAAEluB,CAAC,CAACkjB,CAAD,CAAD,IAAMA,CAAC,GAACjjB,CAAC,CAACL,MAAJ,GAAWK,CAAC,CAACijB,CAAD,CAAZ,GAAgB,IAAtB,CAAH;;AAA+B,SAAOgL,CAAC,GAACluB,CAAC,CAAC8vC,CAAD,CAAV;AAAc,CAApI;;AAAqIgsB,IAAI,CAACqR,OAAL,CAAaO,gBAAb,GAA8B,UAAS1tE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAI5sB,CAAC,GAAC,kBAAN;;AAAyB,MAAGgL,CAAH,EAAK;AAAChL,KAAC,IAAE,OAAKgL,CAAR;AAAU,QAAIuY,CAAC,GAACqJ,CAAN;AAAQ,GAAxB,MAA6B9vC,CAAC,KAAGkjB,CAAC,IAAE,OAAKljB,CAAR,EAAUymC,CAAC,GAACxmC,CAAf,CAAD;;AAAmBD,GAAC,GAAC,IAAI87D,IAAI,CAACqR,OAAL,CAAaE,cAAjB,CAAgC,KAAGnqD,CAAnC,EAAqCujB,CAAC,IAAE,EAAxC,CAAF;AAA8Cq1B,MAAI,CAACqR,OAAL,CAAaM,aAAb,CAA2BztE,CAA3B;AAA8B,CAArM;;AAAsM87D,IAAI,CAACqR,OAAL,CAAaQ,eAAb,GAA6B,UAAS3tE,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaC,cAAb,KAA8BtR,IAAI,CAACqR,OAAL,CAAaM,aAAb,GAA2BztE,CAAzD;AAA4D,CAArG;;AAC3U87D,IAAI,CAACqR,OAAL,CAAaS,MAAb,GAAoB,UAAS5tE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6B,CAACptE,CAA9B,IAAiC87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,EAA9B,EAAiC,IAAjC,EAAsCztE,CAAtC,EAAwCvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAxC,CAAjC;AAAkH,SAAO9I,CAAP;AAAS,CAA/J;;AAAgK87D,IAAI,CAACqR,OAAL,CAAaU,YAAb,GAA0B,UAAS7tE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6B,QAAMptE,CAAnC,IAAsC87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,wBAA9B,EAAuD,CAAC1tE,CAAD,CAAvD,EAA2DC,CAA3D,EAA6DvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAA7D,CAAtC;AAA4I,SAAO9I,CAAP;AAAS,CAA/L;;AAChK87D,IAAI,CAACqR,OAAL,CAAaW,IAAb,GAAkB,UAAS9tE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6BtR,IAAI,CAACqR,OAAL,CAAaM,aAAb,CAA2B,IAAI3R,IAAI,CAACqR,OAAL,CAAaE,cAAjB,CAAgC,aAAWrtE,CAAC,GAAC,OAAKA,CAAN,GAAQ,EAApB,CAAhC,EAAwDtC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAxD,CAA3B,CAA7B;AAA0J,CAA1L;;AAA2LgzD,IAAI,CAACqR,OAAL,CAAaY,YAAb,GAA0B,UAAS/tE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6B,CAACtR,IAAI,CAACG,QAAL,CAAcj8D,CAAd,CAA9B,IAAgD87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,iCAA9B,EAAgE,CAAC5R,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAD,EAAgBA,CAAhB,CAAhE,EAAmFC,CAAnF,EAAqFvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAArF,CAAhD;AAA8K,SAAO9I,CAAP;AAAS,CAAjO;;AAC3L87D,IAAI,CAACqR,OAAL,CAAaa,YAAb,GAA0B,UAAShuE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6B,CAACtR,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,CAA9B,IAAgD87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,iCAA9B,EAAgE,CAAC5R,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAD,EAAgBA,CAAhB,CAAhE,EAAmFC,CAAnF,EAAqFvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAArF,CAAhD;AAA8K,SAAO9I,CAAP;AAAS,CAAjO;;AAAkO87D,IAAI,CAACqR,OAAL,CAAac,cAAb,GAA4B,UAASjuE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6B,CAACtR,IAAI,CAAC3G,UAAL,CAAgBn1D,CAAhB,CAA9B,IAAkD87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,mCAA9B,EAAkE,CAAC5R,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAD,EAAgBA,CAAhB,CAAlE,EAAqFC,CAArF,EAAuFvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAvF,CAAlD;AAAkL,SAAO9I,CAAP;AAAS,CAAvO;;AAClO87D,IAAI,CAACqR,OAAL,CAAae,YAAb,GAA0B,UAASluE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6B,CAACtR,IAAI,CAAC3jD,QAAL,CAAcnY,CAAd,CAA9B,IAAgD87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,iCAA9B,EAAgE,CAAC5R,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAD,EAAgBA,CAAhB,CAAhE,EAAmFC,CAAnF,EAAqFvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAArF,CAAhD;AAA8K,SAAO9I,CAAP;AAAS,CAAjO;;AAAkO87D,IAAI,CAACqR,OAAL,CAAagB,WAAb,GAAyB,UAASnuE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6B,CAACtR,IAAI,CAAC56D,OAAL,CAAalB,CAAb,CAA9B,IAA+C87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,gCAA9B,EAA+D,CAAC5R,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAD,EAAgBA,CAAhB,CAA/D,EAAkFC,CAAlF,EAAoFvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAApF,CAA/C;AAA4K,SAAO9I,CAAP;AAAS,CAA9N;;AAClO87D,IAAI,CAACqR,OAAL,CAAaiB,aAAb,GAA2B,UAASpuE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaC,cAAb,IAA6B,CAACtR,IAAI,CAACE,SAAL,CAAeh8D,CAAf,CAA9B,IAAiD87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,kCAA9B,EAAiE,CAAC5R,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAD,EAAgBA,CAAhB,CAAjE,EAAoFC,CAApF,EAAsFvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAtF,CAAjD;AAAgL,SAAO9I,CAAP;AAAS,CAApO;;AAAqO87D,IAAI,CAACqR,OAAL,CAAakB,aAAb,GAA2B,UAASruE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,GAAC4tC,IAAI,CAACqR,OAAL,CAAaC,cAAd,IAA8BtR,IAAI,CAAC3jD,QAAL,CAAcnY,CAAd,KAAkBA,CAAC,CAACu8D,QAAF,IAAYT,IAAI,CAACuQ,GAAL,CAASC,QAAT,CAAkBC,OAA9E,IAAuFzQ,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,kCAA9B,EAAiE,CAAC5R,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAD,EAAgBA,CAAhB,CAAjE,EAAoFC,CAApF,EAAsFvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAtF,CAAvF;AAAsN,SAAO9I,CAAP;AAAS,CAA1Q;;AACrO87D,IAAI,CAACqR,OAAL,CAAamB,gBAAb,GAA8B,UAAStuE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,GAACgsB,IAAI,CAACqR,OAAL,CAAaC,cAAd,IAA8BptE,CAAC,YAAYC,CAA3C,IAA8C67D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,oCAA9B,EAAmE,CAAC5R,IAAI,CAACqR,OAAL,CAAaoB,QAAb,CAAsBtuE,CAAtB,CAAD,EAA0B67D,IAAI,CAACqR,OAAL,CAAaoB,QAAb,CAAsBvuE,CAAtB,CAA1B,CAAnE,EAAuHkuB,CAAvH,EAAyHxwB,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAzH,CAA9C;AAAgN,SAAO9I,CAAP;AAAS,CAAzQ;;AAA0Q87D,IAAI,CAACqR,OAAL,CAAaqB,YAAb,GAA0B,UAASxuE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,GAAC4tC,IAAI,CAACqR,OAAL,CAAaC,cAAd,IAA8B,YAAU,OAAOptE,CAAjB,IAAoB25D,QAAQ,CAAC35D,CAAD,CAA1D,IAA+D87D,IAAI,CAACqR,OAAL,CAAaO,gBAAb,CAA8B,kDAA9B,EAAiF,CAAC1tE,CAAD,CAAjF,EAAqFC,CAArF,EAAuFvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAvF,CAA/D;AAA+L,SAAO9I,CAAP;AAAS,CAAlP;;AAC1Q87D,IAAI,CAACqR,OAAL,CAAasB,6BAAb,GAA2C,YAAU;AAAC,OAAI,IAAIzuE,CAAR,IAAaxD,MAAM,CAACoZ,SAApB,EAA8BkmD,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB9tE,CAAC,GAAC,gDAApB;AAAsE,CAA1J;;AAA2J87D,IAAI,CAACqR,OAAL,CAAaoB,QAAb,GAAsB,UAASvuE,CAAT,EAAW;AAAC,SAAOA,CAAC,YAAYw3D,QAAb,GAAsBx3D,CAAC,CAAC0uE,WAAF,IAAe1uE,CAAC,CAAC4C,IAAjB,IAAuB,mBAA7C,GAAiE5C,CAAC,YAAYxD,MAAb,GAAoBwD,CAAC,CAACvH,WAAF,CAAci2E,WAAd,IAA2B1uE,CAAC,CAACvH,WAAF,CAAcmK,IAAzC,IAA+CpG,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+BzW,CAA/B,CAAnE,GAAqG,SAAOA,CAAP,GAAS,MAAT,GAAgB,OAAOA,CAApM;AAAsM,CAAxO;;AAAyO,IAAI2uE,IAAI,GAAC;AAACC,iBAAe,EAAC,EAAjB;AAAoBC,oBAAkB,EAAC,YAAU,CAAE,CAAnD;AAAoDC,eAAa,EAAC,YAAU,CAAE;AAA9E,CAAT;AAAyFH,IAAI,CAACC,eAAL,CAAqBG,SAArB,GAA+B;AAACC,SAAO,EAAC,CAAC,CAAV;AAAYC,QAAM,EAAC,CAAnB;AAAqBC,OAAK,EAAC,CAA3B;AAA6BC,OAAK,EAAC,CAAnC;AAAqCC,QAAM,EAAC,CAA5C;AAA8CC,OAAK,EAAC,CAApD;AAAsDC,SAAO,EAAC,CAA9D;AAAgEC,SAAO,EAAC,CAAxE;AAA0EC,MAAI,EAAC,CAA/E;AAAiFC,QAAM,EAAC,CAAxF;AAA0FC,OAAK,EAAC,EAAhG;AAAmGC,SAAO,EAAC,EAA3G;AAA8GC,OAAK,EAAC,EAApH;AAAuHC,QAAM,EAAC,EAA9H;AAAiIC,MAAI,EAAC,EAAtI;AAAyIC,UAAQ,EAAC,EAAlJ;AAAqJC,UAAQ,EAAC,EAA9J;AAAiKC,QAAM,EAAC,EAAxK;AAA2KC,QAAM,EAAC,EAAlL;AAAqLC,SAAO,EAAC,EAA7L;AAAgMC,SAAO,EAAC;AAAxM,CAA/B;AAA2OzB,IAAI,CAACC,eAAL,CAAqByB,QAArB,GAA8B;AAACrB,SAAO,EAAC,CAAC,CAAV;AAAYsB,QAAM,EAAC,CAAnB;AAAqBhB,SAAO,EAAC,CAA7B;AAA+BiB,WAAS,EAAC,CAAzC;AAA2CC,aAAW,EAAC,CAAvD;AAAyDC,WAAS,EAAC,CAAnE;AAAqElB,SAAO,EAAC;AAA7E,CAA9B;;AACxsBZ,IAAI,CAACC,eAAL,CAAqB8B,mBAArB,GAAyC,UAAS1wE,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqBG,SAA3B;AAAA,MAAqC7gD,CAAC,GAACygD,IAAI,CAACC,eAAL,CAAqByB,QAA5D;;AAAqE,UAAOrwE,CAAP;AAAU,SAAKC,CAAC,CAACovE,KAAP;AAAa,SAAKpvE,CAAC,CAACkvE,KAAP;AAAa,SAAKlvE,CAAC,CAAC4vE,MAAP;AAAc,SAAK5vE,CAAC,CAACmvE,MAAP;AAAc,SAAKnvE,CAAC,CAACgwE,MAAP;AAAc,SAAKhwE,CAAC,CAACiwE,MAAP;AAAc,SAAKjwE,CAAC,CAACuvE,IAAP;AAAY,SAAKvvE,CAAC,CAAC6vE,IAAP;AAAY,SAAK7vE,CAAC,CAACmwE,OAAP;AAAe,aAAOliD,CAAC,CAACoiD,MAAT;;AAAgB,SAAKrwE,CAAC,CAACgvE,MAAP;AAAc,SAAKhvE,CAAC,CAACqvE,OAAP;AAAe,SAAKrvE,CAAC,CAAC+vE,QAAP;AAAgB,SAAK/vE,CAAC,CAACkwE,OAAP;AAAe,aAAOjiD,CAAC,CAACohD,OAAT;;AAAiB,SAAKrvE,CAAC,CAACwvE,MAAP;AAAc,SAAKxvE,CAAC,CAAC0vE,OAAP;AAAe,SAAK1vE,CAAC,CAAC2vE,KAAP;AAAa,aAAO1hD,CAAC,CAACqiD,SAAT;;AAAmB,SAAKtwE,CAAC,CAACivE,KAAP;AAAa,SAAKjvE,CAAC,CAACsvE,OAAP;AAAe,SAAKtvE,CAAC,CAAC8vE,QAAP;AAAgB,aAAO7hD,CAAC,CAACqhD,OAAT;;AAAiB;AAAQ,aAAOrhD,CAAC,CAAC8gD,OAAT;AAAlW;AAAoX,CAA9e;;AACAL,IAAI,CAACC,eAAL,CAAqB+B,oBAArB,GAA0C,CAAC,CAA3C;AAA6ChC,IAAI,CAACC,eAAL,CAAqBgC,WAArB,GAAiC,qBAAjC;AAAuDjC,IAAI,CAACC,eAAL,CAAqBiC,WAArB,GAAiC,sBAAjC;AAAwDlC,IAAI,CAACC,eAAL,CAAqBkC,WAArB,GAAiC,qBAAjC;AAAuDnC,IAAI,CAACC,eAAL,CAAqBmC,WAArB,GAAiC,QAAjC;AAA0CpC,IAAI,CAACC,eAAL,CAAqBoC,WAArB,GAAiC,uBAAjC;AAAyDrC,IAAI,CAACC,eAAL,CAAqBqC,WAArB,GAAiC,sBAAjC;AAAwDtC,IAAI,CAACC,eAAL,CAAqBsC,SAArB,GAA+B,OAA/B;AAAuCvC,IAAI,CAACC,eAAL,CAAqBuC,SAArB,GAA+B,OAA/B;AAAuCxC,IAAI,CAACC,eAAL,CAAqBwC,SAArB,GAA+B,UAA/B;AAC5bzC,IAAI,CAACC,eAAL,CAAqByC,SAArB,GAA+B,UAA/B;AAA0C1C,IAAI,CAACC,eAAL,CAAqB0C,SAArB,GAA+B,gBAA/B;AAAgD3C,IAAI,CAACC,eAAL,CAAqB2C,SAArB,GAA+B,kBAA/B;AAAkD5C,IAAI,CAACC,eAAL,CAAqB4C,SAArB,GAA+B,qBAA/B;AAAqD7C,IAAI,CAACC,eAAL,CAAqB6C,SAArB,GAA+B,kCAA/B;AAAkE3V,IAAI,CAAC/zD,KAAL,GAAW,EAAX;AAAc+zD,IAAI,CAAC4V,uBAAL,GAA6B5V,IAAI,CAACa,YAAlC;AAA+Cb,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,GAAmC,OAAK7V,IAAI,CAACU,eAA7C;;AAA6DV,IAAI,CAAC/zD,KAAL,CAAW6pE,IAAX,GAAgB,UAAS5xE,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACA,CAAC,CAACJ,MAAF,GAAS,CAAV,CAAR;AAAqB,CAAjD;;AAAkDk8D,IAAI,CAAC/zD,KAAL,CAAW8D,IAAX,GAAgBiwD,IAAI,CAAC/zD,KAAL,CAAW6pE,IAA3B;AAC/a9V,IAAI,CAAC/zD,KAAL,CAAWH,OAAX,GAAmBk0D,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgBhO,OAAnF,IAA4F,UAAS5H,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAOlC,KAAK,CAACkY,SAAN,CAAgBhO,OAAhB,CAAwB6O,IAAxB,CAA6BzW,CAA7B,EAA+BC,CAA/B,EAAiCiuB,CAAjC,CAAP;AAA2C,CAA3L,GAA4L,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACA,GAAC,GAAC,QAAMA,CAAN,GAAQ,CAAR,GAAU,IAAEA,CAAF,GAAI7lB,IAAI,CAACge,GAAL,CAAS,CAAT,EAAWrmB,CAAC,CAACJ,MAAF,GAASsuB,CAApB,CAAJ,GAA2BA,CAAvC;AAAyC,MAAG4tC,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,CAAH,EAAoB,OAAO87D,IAAI,CAAC9jD,QAAL,CAAc/X,CAAd,KAAkB,KAAGA,CAAC,CAACL,MAAvB,GAA8BI,CAAC,CAAC4H,OAAF,CAAU3H,CAAV,EAAYiuB,CAAZ,CAA9B,GAA6C,CAAC,CAArD;;AAAuD,SAAKA,CAAC,GAACluB,CAAC,CAACJ,MAAT,EAAgBsuB,CAAC,EAAjB,EAAoB,IAAGA,CAAC,IAAIluB,CAAL,IAAQA,CAAC,CAACkuB,CAAD,CAAD,KAAOjuB,CAAlB,EAAoB,OAAOiuB,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAA7Y;AACA4tC,IAAI,CAAC/zD,KAAL,CAAWq1D,WAAX,GAAuBtB,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgBwnD,WAAnF,IAAgG,UAASp9D,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAOlC,KAAK,CAACkY,SAAN,CAAgBwnD,WAAhB,CAA4B3mD,IAA5B,CAAiCzW,CAAjC,EAAmCC,CAAnC,EAAqC,QAAMiuB,CAAN,GAAQluB,CAAC,CAACJ,MAAF,GAAS,CAAjB,GAAmBsuB,CAAxD,CAAP;AAAkE,CAAtN,GAAuN,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACA,GAAC,GAAC,QAAMA,CAAN,GAAQluB,CAAC,CAACJ,MAAF,GAAS,CAAjB,GAAmBsuB,CAArB;AAAuB,MAAEA,CAAF,KAAMA,CAAC,GAAC7lB,IAAI,CAACge,GAAL,CAAS,CAAT,EAAWrmB,CAAC,CAACJ,MAAF,GAASsuB,CAApB,CAAR;AAAgC,MAAG4tC,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,CAAH,EAAoB,OAAO87D,IAAI,CAAC9jD,QAAL,CAAc/X,CAAd,KAAkB,KAAGA,CAAC,CAACL,MAAvB,GAA8BI,CAAC,CAACo9D,WAAF,CAAcn9D,CAAd,EAAgBiuB,CAAhB,CAA9B,GAAiD,CAAC,CAAzD;;AAA2D,SAAK,KAAGA,CAAR,EAAUA,CAAC,EAAX,EAAc,IAAGA,CAAC,IAAIluB,CAAL,IAAQA,CAAC,CAACkuB,CAAD,CAAD,KAAOjuB,CAAlB,EAAoB,OAAOiuB,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAAxb;AACA4tC,IAAI,CAAC/zD,KAAL,CAAW+D,OAAX,GAAmBgwD,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgB9J,OAAnF,IAA4F,UAAS9L,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoClC,OAAK,CAACkY,SAAN,CAAgB9J,OAAhB,CAAwB2K,IAAxB,CAA6BzW,CAA7B,EAA+BC,CAA/B,EAAiCiuB,CAAjC;AAAoC,CAApL,GAAqL,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAR,EAAesjB,CAAC,GAAC44C,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACia,KAAF,CAAQ,EAAR,CAAjB,GAA6Bja,CAA9C,EAAgDymC,CAAC,GAAC,CAAtD,EAAwDA,CAAC,GAACqJ,CAA1D,EAA4DrJ,CAAC,EAA7D,EAAgEA,CAAC,IAAIvjB,CAAL,IAAQjjB,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAAShL,CAAC,CAACujB,CAAD,CAAV,EAAcA,CAAd,EAAgBzmC,CAAhB,CAAR;AAA2B,CAAnT;;AAAoT87D,IAAI,CAAC/zD,KAAL,CAAW8pE,YAAX,GAAwB,UAAS7xE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAR;AAAA,MAAesjB,CAAC,GAAC44C,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACia,KAAF,CAAQ,EAAR,CAAjB,GAA6Bja,CAA9C;;AAAgD,OAAI,EAAE8vC,CAAN,EAAQ,KAAGA,CAAX,EAAa,EAAEA,CAAf,EAAiBA,CAAC,IAAI5sB,CAAL,IAAQjjB,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAAShL,CAAC,CAAC4sB,CAAD,CAAV,EAAcA,CAAd,EAAgB9vC,CAAhB,CAAR;AAA2B,CAApI;;AACpT87D,IAAI,CAAC/zD,KAAL,CAAW1H,MAAX,GAAkBy7D,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgBvV,MAAnF,IAA2F,UAASL,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAOlC,KAAK,CAACkY,SAAN,CAAgBvV,MAAhB,CAAuBoW,IAAvB,CAA4BzW,CAA5B,EAA8BC,CAA9B,EAAgCiuB,CAAhC,CAAP;AAA0C,CAAzL,GAA0L,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAR,EAAesjB,CAAC,GAAC,EAAjB,EAAoBujB,CAAC,GAAC,CAAtB,EAAwBvL,CAAC,GAAC4gC,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACia,KAAF,CAAQ,EAAR,CAAjB,GAA6Bja,CAAvD,EAAyD2wC,CAAC,GAAC,CAA/D,EAAiEA,CAAC,GAACb,CAAnE,EAAqEa,CAAC,EAAtE,EAAyE,IAAGA,CAAC,IAAIzV,CAAR,EAAU;AAAC,QAAInN,CAAC,GAACmN,CAAC,CAACyV,CAAD,CAAP;AAAW1wC,KAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASH,CAAT,EAAW4iB,CAAX,EAAa3wC,CAAb,MAAkBkjB,CAAC,CAACujB,CAAC,EAAF,CAAD,GAAO1Y,CAAzB;AAA4B;;AAAA,SAAO7K,CAAP;AAAS,CAAhW;AACA44C,IAAI,CAAC/zD,KAAL,CAAWpL,GAAX,GAAem/D,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgBjZ,GAAnF,IAAwF,UAASqD,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAOlC,KAAK,CAACkY,SAAN,CAAgBjZ,GAAhB,CAAoB8Z,IAApB,CAAyBzW,CAAzB,EAA2BC,CAA3B,EAA6BiuB,CAA7B,CAAP;AAAuC,CAAnL,GAAoL,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAR,EAAesjB,CAAC,GAACxlB,KAAK,CAACoyC,CAAD,CAAtB,EAA0BrJ,CAAC,GAACq1B,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACia,KAAF,CAAQ,EAAR,CAAjB,GAA6Bja,CAAzD,EAA2Dk7B,CAAC,GAAC,CAAjE,EAAmEA,CAAC,GAAC4U,CAArE,EAAuE5U,CAAC,EAAxE,EAA2EA,CAAC,IAAIuL,CAAL,KAASvjB,CAAC,CAACgY,CAAD,CAAD,GAAKj7B,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASuY,CAAC,CAACvL,CAAD,CAAV,EAAcA,CAAd,EAAgBl7B,CAAhB,CAAd;;AAAkC,SAAOkjB,CAAP;AAAS,CAAzU;AACA44C,IAAI,CAAC/zD,KAAL,CAAWlO,MAAX,GAAkBiiE,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgB/b,MAAnF,IAA2F,UAASmG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAACgsB,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoCkwC,GAAC,KAAG7vC,CAAC,GAAC67D,IAAI,CAACjgC,IAAL,CAAU57B,CAAV,EAAY6vC,CAAZ,CAAL,CAAD;AAAsB,SAAOpyC,KAAK,CAACkY,SAAN,CAAgB/b,MAAhB,CAAuB4c,IAAvB,CAA4BzW,CAA5B,EAA8BC,CAA9B,EAAgCiuB,CAAhC,CAAP;AAA0C,CAAjN,GAAkN,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAI5sB,CAAC,GAACgL,CAAN;AAAQ4tC,MAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB9L,CAAnB,EAAqB,UAASkuB,CAAT,EAAWgN,CAAX,EAAa;AAAChY,KAAC,GAACjjB,CAAC,CAACwW,IAAF,CAAOq5B,CAAP,EAAS5sB,CAAT,EAAWgL,CAAX,EAAagN,CAAb,EAAel7B,CAAf,CAAF;AAAoB,GAAvD;AAAyD,SAAOkjB,CAAP;AAAS,CAAhU;AACA44C,IAAI,CAAC/zD,KAAL,CAAW+pE,WAAX,GAAuBhW,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgBk8D,WAAnF,IAAgG,UAAS9xE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAACgsB,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoCk8D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM3tE,CAA1B;AAA6B6vC,GAAC,KAAG7vC,CAAC,GAAC67D,IAAI,CAACjgC,IAAL,CAAU57B,CAAV,EAAY6vC,CAAZ,CAAL,CAAD;AAAsB,SAAOpyC,KAAK,CAACkY,SAAN,CAAgBk8D,WAAhB,CAA4Br7D,IAA5B,CAAiCzW,CAAjC,EAAmCC,CAAnC,EAAqCiuB,CAArC,CAAP;AAA+C,CAAxP,GAAyP,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAI5sB,CAAC,GAACgL,CAAN;AAAQ4tC,MAAI,CAAC/zD,KAAL,CAAW8pE,YAAX,CAAwB7xE,CAAxB,EAA0B,UAASkuB,CAAT,EAAWgN,CAAX,EAAa;AAAChY,KAAC,GAACjjB,CAAC,CAACwW,IAAF,CAAOq5B,CAAP,EAAS5sB,CAAT,EAAWgL,CAAX,EAAagN,CAAb,EAAel7B,CAAf,CAAF;AAAoB,GAA5D;AAA8D,SAAOkjB,CAAP;AAAS,CAAjX;AACA44C,IAAI,CAAC/zD,KAAL,CAAWlH,IAAX,GAAgBi7D,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgB/U,IAAnF,IAAyF,UAASb,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAOlC,KAAK,CAACkY,SAAN,CAAgB/U,IAAhB,CAAqB4V,IAArB,CAA0BzW,CAA1B,EAA4BC,CAA5B,EAA8BiuB,CAA9B,CAAP;AAAwC,CAArL,GAAsL,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAR,EAAesjB,CAAC,GAAC44C,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACia,KAAF,CAAQ,EAAR,CAAjB,GAA6Bja,CAA9C,EAAgDymC,CAAC,GAAC,CAAtD,EAAwDA,CAAC,GAACqJ,CAA1D,EAA4DrJ,CAAC,EAA7D,EAAgE,IAAGA,CAAC,IAAIvjB,CAAL,IAAQjjB,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAAShL,CAAC,CAACujB,CAAD,CAAV,EAAcA,CAAd,EAAgBzmC,CAAhB,CAAX,EAA8B,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAAtU;AACA87D,IAAI,CAAC/zD,KAAL,CAAWlI,KAAX,GAAiBi8D,IAAI,CAAC4V,uBAAL,KAA+B5V,IAAI,CAAC/zD,KAAL,CAAW4pE,uBAAX,IAAoCj0E,KAAK,CAACkY,SAAN,CAAgB/V,KAAnF,IAA0F,UAASG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAOlC,KAAK,CAACkY,SAAN,CAAgB/V,KAAhB,CAAsB4W,IAAtB,CAA2BzW,CAA3B,EAA6BC,CAA7B,EAA+BiuB,CAA/B,CAAP;AAAyC,CAAvL,GAAwL,UAASluB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAR,EAAesjB,CAAC,GAAC44C,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACia,KAAF,CAAQ,EAAR,CAAjB,GAA6Bja,CAA9C,EAAgDymC,CAAC,GAAC,CAAtD,EAAwDA,CAAC,GAACqJ,CAA1D,EAA4DrJ,CAAC,EAA7D,EAAgE,IAAGA,CAAC,IAAIvjB,CAAL,IAAQ,CAACjjB,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAAShL,CAAC,CAACujB,CAAD,CAAV,EAAcA,CAAd,EAAgBzmC,CAAhB,CAAZ,EAA+B,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAA1U;;AAA2U87D,IAAI,CAAC/zD,KAAL,CAAW1G,KAAX,GAAiB,UAASrB,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,CAAN;AAAQgsB,MAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB9L,CAAnB,EAAqB,UAASA,CAAT,EAAWymC,CAAX,EAAavL,CAAb,EAAe;AAACj7B,KAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASluB,CAAT,EAAWymC,CAAX,EAAavL,CAAb,KAAiB,EAAE4U,CAAnB;AAAqB,GAA1D,EAA2D5hB,CAA3D;AAA8D,SAAO4hB,CAAP;AAAS,CAAhH;;AAC3UgsB,IAAI,CAAC/zD,KAAL,CAAWuN,IAAX,GAAgB,UAAStV,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACjuB,GAAC,GAAC67D,IAAI,CAAC/zD,KAAL,CAAWlG,SAAX,CAAqB7B,CAArB,EAAuBC,CAAvB,EAAyBiuB,CAAzB,CAAF;AAA8B,SAAO,IAAEjuB,CAAF,GAAI,IAAJ,GAAS67D,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACq+B,MAAF,CAASp+B,CAAT,CAAjB,GAA6BD,CAAC,CAACC,CAAD,CAA9C;AAAkD,CAAhH;;AAAiH67D,IAAI,CAAC/zD,KAAL,CAAWlG,SAAX,GAAqB,UAAS7B,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAR,EAAesjB,CAAC,GAAC44C,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACia,KAAF,CAAQ,EAAR,CAAjB,GAA6Bja,CAA9C,EAAgDymC,CAAC,GAAC,CAAtD,EAAwDA,CAAC,GAACqJ,CAA1D,EAA4DrJ,CAAC,EAA7D,EAAgE,IAAGA,CAAC,IAAIvjB,CAAL,IAAQjjB,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAAShL,CAAC,CAACujB,CAAD,CAAV,EAAcA,CAAd,EAAgBzmC,CAAhB,CAAX,EAA8B,OAAOymC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAArJ;;AAAsJq1B,IAAI,CAAC/zD,KAAL,CAAWgqE,SAAX,GAAqB,UAAS/xE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACjuB,GAAC,GAAC67D,IAAI,CAAC/zD,KAAL,CAAWiqE,cAAX,CAA0BhyE,CAA1B,EAA4BC,CAA5B,EAA8BiuB,CAA9B,CAAF;AAAmC,SAAO,IAAEjuB,CAAF,GAAI,IAAJ,GAAS67D,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACq+B,MAAF,CAASp+B,CAAT,CAAjB,GAA6BD,CAAC,CAACC,CAAD,CAA9C;AAAkD,CAA1H;;AACvQ67D,IAAI,CAAC/zD,KAAL,CAAWiqE,cAAX,GAA0B,UAAShyE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC9vC,CAAC,CAACJ,MAAR;AAAA,MAAesjB,CAAC,GAAC44C,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiBA,CAAC,CAACia,KAAF,CAAQ,EAAR,CAAjB,GAA6Bja,CAA9C;;AAAgD,OAAI,EAAE8vC,CAAN,EAAQ,KAAGA,CAAX,EAAaA,CAAC,EAAd,EAAiB,IAAGA,CAAC,IAAI5sB,CAAL,IAAQjjB,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAAShL,CAAC,CAAC4sB,CAAD,CAAV,EAAcA,CAAd,EAAgB9vC,CAAhB,CAAX,EAA8B,OAAO8vC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAA3J;;AAA4JgsB,IAAI,CAAC/zD,KAAL,CAAW4iE,QAAX,GAAoB,UAAS3qE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO,KAAG67D,IAAI,CAAC/zD,KAAL,CAAWH,OAAX,CAAmB5H,CAAnB,EAAqBC,CAArB,CAAV;AAAkC,CAApE;;AAAqE67D,IAAI,CAAC/zD,KAAL,CAAWmjE,OAAX,GAAmB,UAASlrE,CAAT,EAAW;AAAC,SAAO,KAAGA,CAAC,CAACJ,MAAZ;AAAmB,CAAlD;;AAAmDk8D,IAAI,CAAC/zD,KAAL,CAAWojE,KAAX,GAAiB,UAASnrE,CAAT,EAAW;AAAC,MAAG,CAAC87D,IAAI,CAAC56D,OAAL,CAAalB,CAAb,CAAJ,EAAoB,KAAI,IAAIC,CAAC,GAACD,CAAC,CAACJ,MAAF,GAAS,CAAnB,EAAqB,KAAGK,CAAxB,EAA0BA,CAAC,EAA3B,EAA8B,OAAOD,CAAC,CAACC,CAAD,CAAR;AAAYD,GAAC,CAACJ,MAAF,GAAS,CAAT;AAAW,CAAtG;;AAAuGk8D,IAAI,CAAC/zD,KAAL,CAAWkqE,MAAX,GAAkB,UAASjyE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAAC/zD,KAAL,CAAW4iE,QAAX,CAAoB3qE,CAApB,EAAsBC,CAAtB,KAA0BD,CAAC,CAACvB,IAAF,CAAOwB,CAAP,CAA1B;AAAoC,CAApE;;AAC3X67D,IAAI,CAAC/zD,KAAL,CAAWmqE,QAAX,GAAoB,UAASlyE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAAC/zD,KAAL,CAAWhG,MAAX,CAAkB/B,CAAlB,EAAoBkuB,CAApB,EAAsB,CAAtB,EAAwBjuB,CAAxB;AAA2B,CAA/D;;AAAgE67D,IAAI,CAAC/zD,KAAL,CAAWoqE,aAAX,GAAyB,UAASnyE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACuG,OAAL,CAAavG,IAAI,CAAC/zD,KAAL,CAAWhG,MAAxB,EAA+B/B,CAA/B,EAAiCkuB,CAAjC,EAAmC,CAAnC,EAAsCuO,KAAtC,CAA4C,IAA5C,EAAiDx8B,CAAjD;AAAoD,CAA7F;;AAA8F67D,IAAI,CAAC/zD,KAAL,CAAWqqE,YAAX,GAAwB,UAASpyE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAJ;AAAM,OAAGhnC,SAAS,CAAClJ,MAAb,IAAqB,KAAGkwC,CAAC,GAACgsB,IAAI,CAAC/zD,KAAL,CAAWH,OAAX,CAAmB5H,CAAnB,EAAqBkuB,CAArB,CAAL,CAArB,GAAmDluB,CAAC,CAACvB,IAAF,CAAOwB,CAAP,CAAnD,GAA6D67D,IAAI,CAAC/zD,KAAL,CAAWmqE,QAAX,CAAoBlyE,CAApB,EAAsBC,CAAtB,EAAwB6vC,CAAxB,CAA7D;AAAwF,CAAtI;;AAAuIgsB,IAAI,CAAC/zD,KAAL,CAAWpG,MAAX,GAAkB,UAAS3B,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAAC67D,IAAI,CAAC/zD,KAAL,CAAWH,OAAX,CAAmB5H,CAAnB,EAAqBC,CAArB,CAAF;AAA0B,MAAIiuB,CAAJ;AAAM,GAACA,CAAC,GAAC,KAAGjuB,CAAN,KAAU67D,IAAI,CAAC/zD,KAAL,CAAWsqE,QAAX,CAAoBryE,CAApB,EAAsBC,CAAtB,CAAV;AAAmC,SAAOiuB,CAAP;AAAS,CAA5G;;AACrS4tC,IAAI,CAAC/zD,KAAL,CAAWuqE,UAAX,GAAsB,UAAStyE,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAAC67D,IAAI,CAAC/zD,KAAL,CAAWq1D,WAAX,CAAuBp9D,CAAvB,EAAyBC,CAAzB,CAAF;AAA8B,SAAO,KAAGA,CAAH,IAAM67D,IAAI,CAAC/zD,KAAL,CAAWsqE,QAAX,CAAoBryE,CAApB,EAAsBC,CAAtB,GAAyB,CAAC,CAAhC,IAAmC,CAAC,CAA3C;AAA6C,CAA/G;;AAAgH67D,IAAI,CAAC/zD,KAAL,CAAWsqE,QAAX,GAAoB,UAASryE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAO,KAAGlC,KAAK,CAACkY,SAAN,CAAgB7T,MAAhB,CAAuB0U,IAAvB,CAA4BzW,CAA5B,EAA8BC,CAA9B,EAAgC,CAAhC,EAAmCL,MAA7C;AAAoD,CAA1H;;AAA2Hk8D,IAAI,CAAC/zD,KAAL,CAAWwqE,QAAX,GAAoB,UAASvyE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACjuB,GAAC,GAAC67D,IAAI,CAAC/zD,KAAL,CAAWlG,SAAX,CAAqB7B,CAArB,EAAuBC,CAAvB,EAAyBiuB,CAAzB,CAAF;AAA8B,SAAO,KAAGjuB,CAAH,IAAM67D,IAAI,CAAC/zD,KAAL,CAAWsqE,QAAX,CAAoBryE,CAApB,EAAsBC,CAAtB,GAAyB,CAAC,CAAhC,IAAmC,CAAC,CAA3C;AAA6C,CAA/G;;AAAgH67D,IAAI,CAAC/zD,KAAL,CAAWyqE,WAAX,GAAuB,UAASxyE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,CAAN;AAAQgsB,MAAI,CAAC/zD,KAAL,CAAW8pE,YAAX,CAAwB7xE,CAAxB,EAA0B,UAASkjB,CAAT,EAAWujB,CAAX,EAAa;AAACxmC,KAAC,CAACwW,IAAF,CAAOyX,CAAP,EAAShL,CAAT,EAAWujB,CAAX,EAAazmC,CAAb,KAAiB87D,IAAI,CAAC/zD,KAAL,CAAWsqE,QAAX,CAAoBryE,CAApB,EAAsBymC,CAAtB,CAAjB,IAA2CqJ,CAAC,EAA5C;AAA+C,GAAvF;AAAyF,SAAOA,CAAP;AAAS,CAAjJ;;AAC3VgsB,IAAI,CAAC/zD,KAAL,CAAW6uB,MAAX,GAAkB,UAAS52B,CAAT,EAAW;AAAC,SAAOtC,KAAK,CAACkY,SAAN,CAAgBghB,MAAhB,CAAuB6F,KAAvB,CAA6B,EAA7B,EAAgC3zB,SAAhC,CAAP;AAAkD,CAAhF;;AAAiFgzD,IAAI,CAAC/zD,KAAL,CAAW4S,IAAX,GAAgB,UAAS3a,CAAT,EAAW;AAAC,SAAOtC,KAAK,CAACkY,SAAN,CAAgBghB,MAAhB,CAAuB6F,KAAvB,CAA6B,EAA7B,EAAgC3zB,SAAhC,CAAP;AAAkD,CAA9E;;AAA+EgzD,IAAI,CAAC/zD,KAAL,CAAWvK,OAAX,GAAmB,UAASwC,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACD,CAAC,CAACJ,MAAR;;AAAe,MAAG,IAAEK,CAAL,EAAO;AAAC,SAAI,IAAIiuB,CAAC,GAACxwB,KAAK,CAACuC,CAAD,CAAX,EAAe6vC,CAAC,GAAC,CAArB,EAAuBA,CAAC,GAAC7vC,CAAzB,EAA2B6vC,CAAC,EAA5B,EAA+B5hB,CAAC,CAAC4hB,CAAD,CAAD,GAAK9vC,CAAC,CAAC8vC,CAAD,CAAN;;AAAU,WAAO5hB,CAAP;AAAS;;AAAA,SAAM,EAAN;AAAS,CAAjH;;AAAkH4tC,IAAI,CAAC/zD,KAAL,CAAW62B,KAAX,GAAiBk9B,IAAI,CAAC/zD,KAAL,CAAWvK,OAA5B;;AAAoCs+D,IAAI,CAAC/zD,KAAL,CAAW2jE,MAAX,GAAkB,UAAS1rE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACplB,SAAS,CAAClJ,MAAxB,EAA+BsuB,CAAC,EAAhC,EAAmC;AAAC,QAAI4hB,CAAC,GAAChnC,SAAS,CAAColB,CAAD,CAAf;;AAAmB,QAAG4tC,IAAI,CAAC2F,WAAL,CAAiB3xB,CAAjB,CAAH,EAAuB;AAAC,UAAI5sB,CAAC,GAACljB,CAAC,CAACJ,MAAF,IAAU,CAAhB;AAAA,UAAkB6mC,CAAC,GAACqJ,CAAC,CAAClwC,MAAF,IAAU,CAA9B;AAAgCI,OAAC,CAACJ,MAAF,GAASsjB,CAAC,GAACujB,CAAX;;AAAa,WAAI,IAAIvL,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACuL,CAAd,EAAgBvL,CAAC,EAAjB,EAAoBl7B,CAAC,CAACkjB,CAAC,GAACgY,CAAH,CAAD,GAAO4U,CAAC,CAAC5U,CAAD,CAAR;AAAY,KAArG,MAA0Gl7B,CAAC,CAACvB,IAAF,CAAOqxC,CAAP;AAAU;AAAC,CAA5M;;AACtTgsB,IAAI,CAAC/zD,KAAL,CAAWhG,MAAX,GAAkB,UAAS/B,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAACgsB,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAOlC,KAAK,CAACkY,SAAN,CAAgB7T,MAAhB,CAAuB06B,KAAvB,CAA6Bz8B,CAA7B,EAA+B87D,IAAI,CAAC/zD,KAAL,CAAWnG,KAAX,CAAiBkH,SAAjB,EAA2B,CAA3B,CAA/B,CAAP;AAAqE,CAA7I;;AAA8IgzD,IAAI,CAAC/zD,KAAL,CAAWnG,KAAX,GAAiB,UAAS5B,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoC,SAAO,KAAGkJ,SAAS,CAAClJ,MAAb,GAAoBlC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2BzW,CAA3B,EAA6BC,CAA7B,CAApB,GAAoDvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2BzW,CAA3B,EAA6BC,CAA7B,EAA+BiuB,CAA/B,CAA3D;AAA6F,CAAlK;;AAC9I4tC,IAAI,CAAC/zD,KAAL,CAAW0qE,gBAAX,GAA4B,UAASzyE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACjuB,GAAC,GAACA,CAAC,IAAED,CAAL;;AAAO,MAAI8vC,CAAC,GAAC,UAAS9vC,CAAT,EAAW;AAAC,WAAO87D,IAAI,CAAC3jD,QAAL,CAAcnY,CAAd,IAAiB,MAAI87D,IAAI,CAAC6F,MAAL,CAAY3hE,CAAZ,CAArB,GAAoC,CAAC,OAAOA,CAAR,EAAWq+B,MAAX,CAAkB,CAAlB,IAAqBr+B,CAAhE;AAAkE,GAApF;;AAAqFkuB,GAAC,GAACA,CAAC,IAAE4hB,CAAL;AAAOA,GAAC,GAAC,EAAF;;AAAK,OAAI,IAAI5sB,CAAC,GAAC,CAAN,EAAQujB,CAAC,GAAC,CAAd,EAAgBA,CAAC,GAACzmC,CAAC,CAACJ,MAApB,GAA4B;AAAC,QAAIs7B,CAAC,GAACl7B,CAAC,CAACymC,CAAC,EAAF,CAAP;AAAA,QAAakK,CAAC,GAACziB,CAAC,CAACgN,CAAD,CAAhB;AAAoB1+B,UAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCq5B,CAArC,EAAuCa,CAAvC,MAA4Cb,CAAC,CAACa,CAAD,CAAD,GAAK,CAAC,CAAN,EAAQ1wC,CAAC,CAACijB,CAAC,EAAF,CAAD,GAAOgY,CAA3D;AAA8D;;AAAAj7B,GAAC,CAACL,MAAF,GAASsjB,CAAT;AAAW,CAA9Q;;AAA+Q44C,IAAI,CAAC/zD,KAAL,CAAW2qE,YAAX,GAAwB,UAAS1yE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAO4tC,IAAI,CAAC/zD,KAAL,CAAW4qE,aAAX,CAAyB3yE,CAAzB,EAA2BkuB,CAAC,IAAE4tC,IAAI,CAAC/zD,KAAL,CAAW6qE,cAAzC,EAAwD,CAAC,CAAzD,EAA2D3yE,CAA3D,CAAP;AAAqE,CAA7G;;AAA8G67D,IAAI,CAAC/zD,KAAL,CAAW8qE,YAAX,GAAwB,UAAS7yE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAO4tC,IAAI,CAAC/zD,KAAL,CAAW4qE,aAAX,CAAyB3yE,CAAzB,EAA2BC,CAA3B,EAA6B,CAAC,CAA9B,EAAgC,KAAK,CAArC,EAAuCiuB,CAAvC,CAAP;AAAiD,CAAzF;;AAC7X4tC,IAAI,CAAC/zD,KAAL,CAAW4qE,aAAX,GAAyB,UAAS3yE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC,OAAI,IAAIujB,CAAC,GAAC,CAAN,EAAQvL,CAAC,GAACl7B,CAAC,CAACJ,MAAZ,EAAmB+wC,CAAvB,EAAyBlK,CAAC,GAACvL,CAA3B,GAA8B;AAAC,QAAInN,CAAC,GAAC0Y,CAAC,GAACvL,CAAF,IAAK,CAAX;AAAa,QAAI7D,CAAC,GAACnJ,CAAC,GAACjuB,CAAC,CAACwW,IAAF,CAAOyM,CAAP,EAASljB,CAAC,CAAC+tB,CAAD,CAAV,EAAcA,CAAd,EAAgB/tB,CAAhB,CAAD,GAAoBC,CAAC,CAAC6vC,CAAD,EAAG9vC,CAAC,CAAC+tB,CAAD,CAAJ,CAA5B;AAAqC,QAAEsJ,CAAF,GAAIoP,CAAC,GAAC1Y,CAAC,GAAC,CAAR,IAAWmN,CAAC,GAACnN,CAAF,EAAI4iB,CAAC,GAAC,CAACtZ,CAAlB;AAAqB;;AAAA,SAAOsZ,CAAC,GAAClK,CAAD,GAAG,CAACA,CAAZ;AAAc,CAAjK;;AAAkKq1B,IAAI,CAAC/zD,KAAL,CAAW3H,IAAX,GAAgB,UAASJ,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,CAACI,IAAF,CAAOH,CAAC,IAAE67D,IAAI,CAAC/zD,KAAL,CAAW6qE,cAArB;AAAqC,CAAnE;;AAAoE9W,IAAI,CAAC/zD,KAAL,CAAW+qE,UAAX,GAAsB,UAAS9yE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAC,GAACxwB,KAAK,CAACsC,CAAC,CAACJ,MAAH,CAAX,EAAsBkwC,CAAC,GAAC,CAA5B,EAA8BA,CAAC,GAAC9vC,CAAC,CAACJ,MAAlC,EAAyCkwC,CAAC,EAA1C,EAA6C5hB,CAAC,CAAC4hB,CAAD,CAAD,GAAK;AAACnxC,SAAK,EAACmxC,CAAP;AAAS32C,SAAK,EAAC6G,CAAC,CAAC8vC,CAAD;AAAhB,GAAL;;AAA0B,MAAI5sB,CAAC,GAACjjB,CAAC,IAAE67D,IAAI,CAAC/zD,KAAL,CAAW6qE,cAApB;AAAmC9W,MAAI,CAAC/zD,KAAL,CAAW3H,IAAX,CAAgB8tB,CAAhB,EAAkB,UAASluB,CAAT,EAAWC,CAAX,EAAa;AAAC,WAAOijB,CAAC,CAACljB,CAAC,CAAC7G,KAAH,EAAS8G,CAAC,CAAC9G,KAAX,CAAD,IAAoB6G,CAAC,CAACrB,KAAF,GAAQsB,CAAC,CAACtB,KAArC;AAA2C,GAA3E;;AAA6E,OAAImxC,CAAC,GAAC,CAAN,EAAQA,CAAC,GAAC9vC,CAAC,CAACJ,MAAZ,EAAmBkwC,CAAC,EAApB,EAAuB9vC,CAAC,CAAC8vC,CAAD,CAAD,GAAK5hB,CAAC,CAAC4hB,CAAD,CAAD,CAAK32C,KAAV;AAAgB,CAAlQ;;AACtO2iE,IAAI,CAAC/zD,KAAL,CAAWgrE,SAAX,GAAqB,UAAS/yE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC5hB,CAAC,IAAE4tC,IAAI,CAAC/zD,KAAL,CAAW6qE,cAApB;AAAmC9W,MAAI,CAAC/zD,KAAL,CAAW3H,IAAX,CAAgBJ,CAAhB,EAAkB,UAASA,CAAT,EAAWkuB,CAAX,EAAa;AAAC,WAAO4hB,CAAC,CAAC7vC,CAAC,CAACD,CAAD,CAAF,EAAMC,CAAC,CAACiuB,CAAD,CAAP,CAAR;AAAoB,GAApD;AAAsD,CAA9H;;AAA+H4tC,IAAI,CAAC/zD,KAAL,CAAWirE,gBAAX,GAA4B,UAAShzE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAAC/zD,KAAL,CAAWgrE,SAAX,CAAqB/yE,CAArB,EAAuB,UAASA,CAAT,EAAW;AAAC,WAAOA,CAAC,CAACC,CAAD,CAAR;AAAY,GAA/C,EAAgDiuB,CAAhD;AAAmD,CAA/F;;AAAgG4tC,IAAI,CAAC/zD,KAAL,CAAWkrE,QAAX,GAAoB,UAASjzE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACjuB,GAAC,GAACA,CAAC,IAAE67D,IAAI,CAAC/zD,KAAL,CAAW6qE,cAAhB;;AAA+B,OAAI,IAAI9iC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC9vC,CAAC,CAACJ,MAAhB,EAAuBkwC,CAAC,EAAxB,EAA2B;AAAC,QAAI5sB,CAAC,GAACjjB,CAAC,CAACD,CAAC,CAAC8vC,CAAC,GAAC,CAAH,CAAF,EAAQ9vC,CAAC,CAAC8vC,CAAD,CAAT,CAAP;AAAqB,QAAG,IAAE5sB,CAAF,IAAK,KAAGA,CAAH,IAAMgL,CAAd,EAAgB,OAAM,CAAC,CAAP;AAAS;;AAAA,SAAM,CAAC,CAAP;AAAS,CAAtJ;;AAC/N4tC,IAAI,CAAC/zD,KAAL,CAAWujE,MAAX,GAAkB,UAAStrE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAG,CAAC4tC,IAAI,CAAC2F,WAAL,CAAiBzhE,CAAjB,CAAD,IAAsB,CAAC87D,IAAI,CAAC2F,WAAL,CAAiBxhE,CAAjB,CAAvB,IAA4CD,CAAC,CAACJ,MAAF,IAAUK,CAAC,CAACL,MAA3D,EAAkE,OAAM,CAAC,CAAP;AAAS,MAAIkwC,CAAC,GAAC9vC,CAAC,CAACJ,MAAR;AAAesuB,GAAC,GAACA,CAAC,IAAE4tC,IAAI,CAAC/zD,KAAL,CAAWmrE,sBAAhB;;AAAuC,OAAI,IAAIhwD,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC4sB,CAAd,EAAgB5sB,CAAC,EAAjB,EAAoB,IAAG,CAACgL,CAAC,CAACluB,CAAC,CAACkjB,CAAD,CAAF,EAAMjjB,CAAC,CAACijB,CAAD,CAAP,CAAL,EAAiB,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAA1N;;AAA2N44C,IAAI,CAAC/zD,KAAL,CAAWorE,QAAX,GAAoB,UAASnzE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACA,GAAC,GAACA,CAAC,IAAE4tC,IAAI,CAAC/zD,KAAL,CAAW6qE,cAAhB;;AAA+B,OAAI,IAAI9iC,CAAC,GAACznC,IAAI,CAACe,GAAL,CAASpJ,CAAC,CAACJ,MAAX,EAAkBK,CAAC,CAACL,MAApB,CAAN,EAAkCsjB,CAAC,GAAC,CAAxC,EAA0CA,CAAC,GAAC4sB,CAA5C,EAA8C5sB,CAAC,EAA/C,EAAkD;AAAC,QAAIujB,CAAC,GAACvY,CAAC,CAACluB,CAAC,CAACkjB,CAAD,CAAF,EAAMjjB,CAAC,CAACijB,CAAD,CAAP,CAAP;AAAmB,QAAG,KAAGujB,CAAN,EAAQ,OAAOA,CAAP;AAAS;;AAAA,SAAOq1B,IAAI,CAAC/zD,KAAL,CAAW6qE,cAAX,CAA0B5yE,CAAC,CAACJ,MAA5B,EAAmCK,CAAC,CAACL,MAArC,CAAP;AAAoD,CAA9M;;AAA+Mk8D,IAAI,CAAC/zD,KAAL,CAAW6qE,cAAX,GAA0B,UAAS5yE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,GAACC,CAAF,GAAI,CAAJ,GAAMD,CAAC,GAACC,CAAF,GAAI,CAAC,CAAL,GAAO,CAApB;AAAsB,CAA9D;;AAC1a67D,IAAI,CAAC/zD,KAAL,CAAWqrE,qBAAX,GAAiC,UAASpzE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAM,CAAC67D,IAAI,CAAC/zD,KAAL,CAAW6qE,cAAX,CAA0B5yE,CAA1B,EAA4BC,CAA5B,CAAP;AAAsC,CAArF;;AAAsF67D,IAAI,CAAC/zD,KAAL,CAAWmrE,sBAAX,GAAkC,UAASlzE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,KAAGC,CAAX;AAAa,CAA7D;;AAA8D67D,IAAI,CAAC/zD,KAAL,CAAWsrE,YAAX,GAAwB,UAASrzE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACA,GAAC,GAAC4tC,IAAI,CAAC/zD,KAAL,CAAW2qE,YAAX,CAAwB1yE,CAAxB,EAA0BC,CAA1B,EAA4BiuB,CAA5B,CAAF;AAAiC,SAAO,IAAEA,CAAF,IAAK4tC,IAAI,CAAC/zD,KAAL,CAAWmqE,QAAX,CAAoBlyE,CAApB,EAAsBC,CAAtB,EAAwB,EAAEiuB,CAAC,GAAC,CAAJ,CAAxB,GAAgC,CAAC,CAAtC,IAAyC,CAAC,CAAjD;AAAmD,CAA5H;;AAA6H4tC,IAAI,CAAC/zD,KAAL,CAAWurE,YAAX,GAAwB,UAAStzE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACjuB,GAAC,GAAC67D,IAAI,CAAC/zD,KAAL,CAAW2qE,YAAX,CAAwB1yE,CAAxB,EAA0BC,CAA1B,EAA4BiuB,CAA5B,CAAF;AAAiC,SAAO,KAAGjuB,CAAH,GAAK67D,IAAI,CAAC/zD,KAAL,CAAWsqE,QAAX,CAAoBryE,CAApB,EAAsBC,CAAtB,CAAL,GAA8B,CAAC,CAAtC;AAAwC,CAAjH;;AACjR67D,IAAI,CAAC/zD,KAAL,CAAWoF,MAAX,GAAkB,UAASnN,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC,EAAN,EAAS5sB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACljB,CAAC,CAACJ,MAArB,EAA4BsjB,CAAC,EAA7B,EAAgC;AAAC,QAAIujB,CAAC,GAACzmC,CAAC,CAACkjB,CAAD,CAAP;AAAA,QAAWgY,CAAC,GAACj7B,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAASuY,CAAT,EAAWvjB,CAAX,EAAaljB,CAAb,CAAb;AAA6B87D,QAAI,CAACC,KAAL,CAAW7gC,CAAX,KAAe,CAAC4U,CAAC,CAAC5U,CAAD,CAAD,KAAO4U,CAAC,CAAC5U,CAAD,CAAD,GAAK,EAAZ,CAAD,EAAkBz8B,IAAlB,CAAuBgoC,CAAvB,CAAf;AAAyC;;AAAA,SAAOqJ,CAAP;AAAS,CAAlJ;;AAAmJgsB,IAAI,CAAC/zD,KAAL,CAAWwrE,QAAX,GAAoB,UAASvzE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,EAAN;AAASgsB,MAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB9L,CAAnB,EAAqB,UAASkjB,CAAT,EAAWujB,CAAX,EAAa;AAACqJ,KAAC,CAAC7vC,CAAC,CAACwW,IAAF,CAAOyX,CAAP,EAAShL,CAAT,EAAWujB,CAAX,EAAazmC,CAAb,CAAD,CAAD,GAAmBkjB,CAAnB;AAAqB,GAAxD;AAA0D,SAAO4sB,CAAP;AAAS,CAAhH;;AAAiHgsB,IAAI,CAAC/zD,KAAL,CAAWyrE,KAAX,GAAiB,UAASxzE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,EAAN;AAAA,MAAS5sB,CAAC,GAAC,CAAX;AAAA,MAAaujB,CAAC,GAACzmC,CAAf;AAAiBkuB,GAAC,GAACA,CAAC,IAAE,CAAL;AAAO,OAAK,CAAL,KAASjuB,CAAT,KAAaijB,CAAC,GAACljB,CAAF,EAAIymC,CAAC,GAACxmC,CAAnB;AAAsB,MAAG,IAAEiuB,CAAC,IAAEuY,CAAC,GAACvjB,CAAJ,CAAN,EAAa,OAAM,EAAN;AAAS,MAAG,IAAEgL,CAAL,EAAO,KAAIluB,CAAC,GAACkjB,CAAN,EAAQljB,CAAC,GAACymC,CAAV,EAAYzmC,CAAC,IAAEkuB,CAAf,EAAiB4hB,CAAC,CAACrxC,IAAF,CAAOuB,CAAP,EAAxB,KAAuC,KAAIA,CAAC,GAACkjB,CAAN,EAAQljB,CAAC,GAACymC,CAAV,EAAYzmC,CAAC,IAAEkuB,CAAf,EAAiB4hB,CAAC,CAACrxC,IAAF,CAAOuB,CAAP;AAAU,SAAO8vC,CAAP;AAAS,CAAhL;;AACpQgsB,IAAI,CAAC/zD,KAAL,CAAW0rE,MAAX,GAAkB,UAASzzE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAC,GAAC,EAAN,EAAS4hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC7vC,CAAnB,EAAqB6vC,CAAC,EAAtB,EAAyB5hB,CAAC,CAAC4hB,CAAD,CAAD,GAAK9vC,CAAL;;AAAO,SAAOkuB,CAAP;AAAS,CAAzE;;AAA0E4tC,IAAI,CAAC/zD,KAAL,CAAW2rE,OAAX,GAAmB,UAAS1zE,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACplB,SAAS,CAAClJ,MAA7B,EAAoCsuB,CAAC,EAArC,EAAwC;AAAC,QAAI4hB,CAAC,GAAChnC,SAAS,CAAColB,CAAD,CAAf;AAAmB,QAAG4tC,IAAI,CAAC56D,OAAL,CAAa4uC,CAAb,CAAH,EAAmB,KAAI,IAAI5sB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC4sB,CAAC,CAAClwC,MAAhB,EAAuBsjB,CAAC,IAAE,IAA1B,EAA+B;AAAC,UAAIujB,CAAC,GAACq1B,IAAI,CAAC/zD,KAAL,CAAWnG,KAAX,CAAiBkuC,CAAjB,EAAmB5sB,CAAnB,EAAqBA,CAAC,GAAC,IAAvB,CAAN;AAAmCujB,OAAC,GAACq1B,IAAI,CAAC/zD,KAAL,CAAW2rE,OAAX,CAAmBj3C,KAAnB,CAAyB,IAAzB,EAA8BgK,CAA9B,CAAF;;AAAmC,WAAI,IAAIvL,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACuL,CAAC,CAAC7mC,MAAhB,EAAuBs7B,CAAC,EAAxB,EAA2Bj7B,CAAC,CAACxB,IAAF,CAAOgoC,CAAC,CAACvL,CAAD,CAAR;AAAa,KAAjK,MAAsKj7B,CAAC,CAACxB,IAAF,CAAOqxC,CAAP;AAAU;;AAAA,SAAO7vC,CAAP;AAAS,CAApR;;AAC1E67D,IAAI,CAAC/zD,KAAL,CAAW4rE,MAAX,GAAkB,UAAS3zE,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,QAAM5tE,CAAC,CAACJ,MAA5B;AAAoCI,GAAC,CAACJ,MAAF,KAAWK,CAAC,IAAED,CAAC,CAACJ,MAAL,EAAY,IAAEK,CAAF,GAAIvC,KAAK,CAACkY,SAAN,CAAgB7Q,OAAhB,CAAwB03B,KAAxB,CAA8Bz8B,CAA9B,EAAgCA,CAAC,CAAC+B,MAAF,CAAS,CAAC9B,CAAV,EAAYA,CAAZ,CAAhC,CAAJ,GAAoD,IAAEA,CAAF,IAAKvC,KAAK,CAACkY,SAAN,CAAgBnX,IAAhB,CAAqBg+B,KAArB,CAA2Bz8B,CAA3B,EAA6BA,CAAC,CAAC+B,MAAF,CAAS,CAAT,EAAW,CAAC9B,CAAZ,CAA7B,CAAhF;AAA8H,SAAOD,CAAP;AAAS,CAA3M;;AAA4M87D,IAAI,CAAC/zD,KAAL,CAAW6rE,QAAX,GAAoB,UAAS5zE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAH,IAAMA,CAAC,GAACD,CAAC,CAACJ,MAA9B;AAAsCk8D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG1/C,CAAH,IAAMA,CAAC,GAACluB,CAAC,CAACJ,MAA9B;AAAsCK,GAAC,GAACvC,KAAK,CAACkY,SAAN,CAAgB7T,MAAhB,CAAuB0U,IAAvB,CAA4BzW,CAA5B,EAA8BC,CAA9B,EAAgC,CAAhC,CAAF;AAAqCvC,OAAK,CAACkY,SAAN,CAAgB7T,MAAhB,CAAuB0U,IAAvB,CAA4BzW,CAA5B,EAA8BkuB,CAA9B,EAAgC,CAAhC,EAAkCjuB,CAAC,CAAC,CAAD,CAAnC;AAAwC,CAA7L;;AAC5M67D,IAAI,CAAC/zD,KAAL,CAAW8rE,GAAX,GAAe,UAAS7zE,CAAT,EAAW;AAAC,MAAG,CAAC8I,SAAS,CAAClJ,MAAd,EAAqB,OAAM,EAAN;;AAAS,OAAI,IAAIK,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAACplB,SAAS,CAAC,CAAD,CAAT,CAAalJ,MAAxB,EAA+BkwC,CAAC,GAAC,CAArC,EAAuCA,CAAC,GAAChnC,SAAS,CAAClJ,MAAnD,EAA0DkwC,CAAC,EAA3D,EAA8DhnC,SAAS,CAACgnC,CAAD,CAAT,CAAalwC,MAAb,GAAoBsuB,CAApB,KAAwBA,CAAC,GAACplB,SAAS,CAACgnC,CAAD,CAAT,CAAalwC,MAAvC;;AAA+C,OAAIkwC,CAAC,GAAC,CAAN,EAAQA,CAAC,GAAC5hB,CAAV,EAAY4hB,CAAC,EAAb,EAAgB;AAAC,SAAI,IAAI5sB,CAAC,GAAC,EAAN,EAASujB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC39B,SAAS,CAAClJ,MAA7B,EAAoC6mC,CAAC,EAArC,EAAwCvjB,CAAC,CAACzkB,IAAF,CAAOqK,SAAS,CAAC29B,CAAD,CAAT,CAAaqJ,CAAb,CAAP;;AAAwB7vC,KAAC,CAACxB,IAAF,CAAOykB,CAAP;AAAU;;AAAA,SAAOjjB,CAAP;AAAS,CAA1Q;;AAA2Q67D,IAAI,CAAC/zD,KAAL,CAAW+rE,OAAX,GAAmB,UAAS9zE,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAACA,CAAC,IAAEoI,IAAI,CAACqlB,MAAV;;AAAiB,OAAI,IAAIQ,CAAC,GAACluB,CAAC,CAACJ,MAAF,GAAS,CAAnB,EAAqB,IAAEsuB,CAAvB,EAAyBA,CAAC,EAA1B,EAA6B;AAAC,QAAI4hB,CAAC,GAACznC,IAAI,CAACC,KAAL,CAAWrI,CAAC,MAAIiuB,CAAC,GAAC,CAAN,CAAZ,CAAN;AAAA,QAA4BhL,CAAC,GAACljB,CAAC,CAACkuB,CAAD,CAA/B;AAAmCluB,KAAC,CAACkuB,CAAD,CAAD,GAAKluB,CAAC,CAAC8vC,CAAD,CAAN;AAAU9vC,KAAC,CAAC8vC,CAAD,CAAD,GAAK5sB,CAAL;AAAO;AAAC,CAArI;;AAAsI44C,IAAI,CAAC/zD,KAAL,CAAWgsE,WAAX,GAAuB,UAAS/zE,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,EAAN;AAAS4tC,MAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB7L,CAAnB,EAAqB,UAASA,CAAT,EAAW;AAACiuB,KAAC,CAACzvB,IAAF,CAAOuB,CAAC,CAACC,CAAD,CAAR;AAAa,GAA9C;AAAgD,SAAOiuB,CAAP;AAAS,CAAvG;;AACjZ4tC,IAAI,CAAC/zD,KAAL,CAAWisE,SAAX,GAAqB,UAASh0E,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAO4tC,IAAI,CAAC/zD,KAAL,CAAW6uB,MAAX,CAAkB6F,KAAlB,CAAwB,EAAxB,EAA2Bq/B,IAAI,CAAC/zD,KAAL,CAAWpL,GAAX,CAAeqD,CAAf,EAAiBC,CAAjB,EAAmBiuB,CAAnB,CAA3B,CAAP;AAAyD,CAA9F;;AAA+F4tC,IAAI,CAACv+B,KAAL,GAAW,EAAX;;AAAcu+B,IAAI,CAACv+B,KAAL,CAAW02C,iBAAX,GAA6B,UAASj0E,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAX,EAAa4hB,CAAC,GAAC,CAAnB,EAAqBA,CAAC,GAAC9vC,CAAC,CAACJ,MAAzB,EAAgCkwC,CAAC,EAAjC,EAAoC;AAAC,QAAI5sB,CAAC,GAACljB,CAAC,CAACiY,UAAF,CAAa63B,CAAb,CAAN;AAAsB,UAAI5sB,CAAJ,KAAQjjB,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAC,GAAC,GAAT,EAAaA,CAAC,KAAG,CAAzB;AAA4BjjB,KAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAP;AAAS;;AAAA,SAAOjjB,CAAP;AAAS,CAAlJ;;AAAmJ67D,IAAI,CAACv+B,KAAL,CAAW22C,iBAAX,GAA6B,UAASl0E,CAAT,EAAW;AAAC,MAAG,QAAMA,CAAC,CAACJ,MAAX,EAAkB,OAAOw9B,MAAM,CAACC,YAAP,CAAoBZ,KAApB,CAA0B,IAA1B,EAA+Bz8B,CAA/B,CAAP;;AAAyC,OAAI,IAAIC,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACluB,CAAC,CAACJ,MAArB,EAA4BsuB,CAAC,IAAE,IAA/B,EAAoC;AAAC,QAAI4hB,CAAC,GAACgsB,IAAI,CAAC/zD,KAAL,CAAWnG,KAAX,CAAiB5B,CAAjB,EAAmBkuB,CAAnB,EAAqBA,CAAC,GAAC,IAAvB,CAAN;AAAmCjuB,KAAC,IAAEm9B,MAAM,CAACC,YAAP,CAAoBZ,KAApB,CAA0B,IAA1B,EAA+BqT,CAA/B,CAAH;AAAqC;;AAAA,SAAO7vC,CAAP;AAAS,CAA1N;;AAChQ67D,IAAI,CAACv+B,KAAL,CAAW42C,cAAX,GAA0B,UAASn0E,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAAC/zD,KAAL,CAAWpL,GAAX,CAAeqD,CAAf,EAAiB,UAASA,CAAT,EAAW;AAACA,KAAC,GAACA,CAAC,CAACwW,QAAF,CAAW,EAAX,CAAF;AAAiB,WAAO,IAAExW,CAAC,CAACJ,MAAJ,GAAWI,CAAX,GAAa,MAAIA,CAAxB;AAA0B,GAAxE,EAA0E2a,IAA1E,CAA+E1a,CAAC,IAAE,EAAlF,CAAP;AAA6F,CAArI;;AAAsI67D,IAAI,CAACv+B,KAAL,CAAW62C,cAAX,GAA0B,UAASp0E,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAC,CAACJ,MAAF,GAAS,CAAhC,EAAkC,yCAAlC;;AAA6E,OAAI,IAAIK,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACluB,CAAC,CAACJ,MAArB,EAA4BsuB,CAAC,IAAE,CAA/B,EAAiCjuB,CAAC,CAACxB,IAAF,CAAOub,QAAQ,CAACha,CAAC,CAAC88C,SAAF,CAAY5uB,CAAZ,EAAcA,CAAC,GAAC,CAAhB,CAAD,EAAoB,EAApB,CAAf;;AAAwC,SAAOjuB,CAAP;AAAS,CAArM;;AACtI67D,IAAI,CAACv+B,KAAL,CAAW82C,qBAAX,GAAiC,UAASr0E,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAX,EAAa4hB,CAAC,GAAC,CAAnB,EAAqBA,CAAC,GAAC9vC,CAAC,CAACJ,MAAzB,EAAgCkwC,CAAC,EAAjC,EAAoC;AAAC,QAAI5sB,CAAC,GAACljB,CAAC,CAACiY,UAAF,CAAa63B,CAAb,CAAN;AAAsB,UAAI5sB,CAAJ,GAAMjjB,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAb,IAAgB,OAAKA,CAAL,GAAOjjB,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAC,IAAE,CAAH,GAAK,GAAnB,IAAwB,UAAQA,CAAC,GAAC,KAAV,KAAkB4sB,CAAC,GAAC,CAAF,GAAI9vC,CAAC,CAACJ,MAAxB,IAAgC,UAAQI,CAAC,CAACiY,UAAF,CAAa63B,CAAC,GAAC,CAAf,IAAkB,KAA1B,CAAhC,IAAkE5sB,CAAC,GAAC,SAAO,CAACA,CAAC,GAAC,IAAH,KAAU,EAAjB,KAAsBljB,CAAC,CAACiY,UAAF,CAAa,EAAE63B,CAAf,IAAkB,IAAxC,CAAF,EAAgD7vC,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAC,IAAE,EAAH,GAAM,GAA7D,EAAiEjjB,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAC,IAAE,EAAH,GAAM,EAAN,GAAS,GAAnJ,IAAwJjjB,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAC,IAAE,EAAH,GAAM,GAArK,EAAyKjjB,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAC,IAAE,CAAH,GAAK,EAAL,GAAQ,GAAhN,GAAqNjjB,CAAC,CAACiuB,CAAC,EAAF,CAAD,GAAOhL,CAAC,GAAC,EAAF,GAAK,GAAjP;AAAsP;;AAAA,SAAOjjB,CAAP;AAAS,CAAvW;;AACA67D,IAAI,CAACv+B,KAAL,CAAW+2C,qBAAX,GAAiC,UAASt0E,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAX,EAAa4hB,CAAC,GAAC,CAAnB,EAAqB5hB,CAAC,GAACluB,CAAC,CAACJ,MAAzB,GAAiC;AAAC,QAAIsjB,CAAC,GAACljB,CAAC,CAACkuB,CAAC,EAAF,CAAP;AAAa,QAAG,MAAIhL,CAAP,EAASjjB,CAAC,CAAC6vC,CAAC,EAAF,CAAD,GAAO1S,MAAM,CAACC,YAAP,CAAoBna,CAApB,CAAP,CAAT,KAA4C,IAAG,MAAIA,CAAJ,IAAO,MAAIA,CAAd,EAAgB;AAAC,UAAIujB,CAAC,GAACzmC,CAAC,CAACkuB,CAAC,EAAF,CAAP;AAAajuB,OAAC,CAAC6vC,CAAC,EAAF,CAAD,GAAO1S,MAAM,CAACC,YAAP,CAAoB,CAACna,CAAC,GAAC,EAAH,KAAQ,CAAR,GAAUujB,CAAC,GAAC,EAAhC,CAAP;AAA2C,KAAzE,MAA8E,IAAG,MAAIvjB,CAAJ,IAAO,MAAIA,CAAd,EAAgB;AAACujB,OAAC,GAACzmC,CAAC,CAACkuB,CAAC,EAAF,CAAH;AAAS,UAAIgN,CAAC,GAACl7B,CAAC,CAACkuB,CAAC,EAAF,CAAP;AAAA,UAAayiB,CAAC,GAAC3wC,CAAC,CAACkuB,CAAC,EAAF,CAAhB;AAAsBhL,OAAC,GAAC,CAAC,CAACA,CAAC,GAAC,CAAH,KAAO,EAAP,GAAU,CAACujB,CAAC,GAAC,EAAH,KAAQ,EAAlB,GAAqB,CAACvL,CAAC,GAAC,EAAH,KAAQ,CAA7B,GAA+ByV,CAAC,GAAC,EAAlC,IAAsC,KAAxC;AAA8C1wC,OAAC,CAAC6vC,CAAC,EAAF,CAAD,GAAO1S,MAAM,CAACC,YAAP,CAAoB,SAAOna,CAAC,IAAE,EAAV,CAApB,CAAP;AAA0CjjB,OAAC,CAAC6vC,CAAC,EAAF,CAAD,GAAO1S,MAAM,CAACC,YAAP,CAAoB,SAAOna,CAAC,GAAC,IAAT,CAApB,CAAP;AAA2C,KAAnL,MAAwLujB,CAAC,GAACzmC,CAAC,CAACkuB,CAAC,EAAF,CAAH,EAASgN,CAAC,GAACl7B,CAAC,CAACkuB,CAAC,EAAF,CAAZ,EAAkBjuB,CAAC,CAAC6vC,CAAC,EAAF,CAAD,GAAO1S,MAAM,CAACC,YAAP,CAAoB,CAACna,CAAC,GAAC,EAAH,KAAQ,EAAR,GAAW,CAACujB,CAAC,GAAC,EAAH,KAAQ,CAAnB,GAAqBvL,CAAC,GAAC,EAA3C,CAAzB;AAAwE;;AAAA,SAAOj7B,CAAC,CAAC0a,IAAF,CAAO,EAAP,CAAP;AAAkB,CAAxe;;AACAmhD,IAAI,CAACv+B,KAAL,CAAWg3C,YAAX,GAAwB,UAASv0E,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,CAACJ,MAAF,IAAUK,CAAC,CAACL,MAAhC,EAAuC,8BAAvC;;AAAuE,OAAI,IAAIsuB,CAAC,GAAC,EAAN,EAAS4hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC9vC,CAAC,CAACJ,MAArB,EAA4BkwC,CAAC,EAA7B,EAAgC5hB,CAAC,CAACzvB,IAAF,CAAOuB,CAAC,CAAC8vC,CAAD,CAAD,GAAK7vC,CAAC,CAAC6vC,CAAD,CAAb;;AAAkB,SAAO5hB,CAAP;AAAS,CAAxK;;AAAyK4tC,IAAI,CAACuQ,GAAL,CAASc,OAAT,GAAiB,EAAjB;;AAAoBrR,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBqH,gBAAjB,GAAkC,UAASx0E,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAACqR,OAAL,CAAaC,cAAhB,EAA+B;AAAC,QAAIntE,CAAC,GAAC67D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBsH,UAAjB,CAA4Bz0E,CAA5B,CAAN;AAAqCC,KAAC,KAAG,CAACD,CAAD,IAAI,EAAEA,CAAC,YAAYC,CAAC,CAACy0E,QAAjB,KAA4B10E,CAAC,YAAYC,CAAC,CAAC00E,OAAlD,CAAD,IAA6D7Y,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,6DAAlB,EAAgFhS,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiByH,mBAAjB,CAAqC50E,CAArC,CAAhF,CAA7D;AAAsL;;AAAA,SAAOA,CAAP;AAAS,CAAlT;;AAC7L87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,GAAsC,UAAS70E,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG67D,IAAI,CAACqR,OAAL,CAAaC,cAAhB,EAA+B;AAAC,QAAIl/C,CAAC,GAAC4tC,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBsH,UAAjB,CAA4Bz0E,CAA5B,CAAN;AAAqCkuB,KAAC,IAAE,eAAa,OAAOA,CAAC,CAACjuB,CAAD,CAAxB,KAA8BD,CAAC,KAAGA,CAAC,YAAYkuB,CAAC,CAACjuB,CAAD,CAAd,IAAmB,EAAED,CAAC,YAAYkuB,CAAC,CAACwmD,QAAf,IAAyB10E,CAAC,YAAYkuB,CAAC,CAACymD,OAA1C,CAAtB,CAAD,IAA4E7Y,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,qEAAlB,EAAwF7tE,CAAxF,EAA0F67D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiByH,mBAAjB,CAAqC50E,CAArC,CAA1F,CAA1G;AAA8O;;AAAA,SAAOA,CAAP;AAAS,CAAhX;;AAAiX87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB2H,yBAAjB,GAA2C,UAAS90E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,mBAAxC,CAAP;AAAoE,CAA3H;;AACjX87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB4H,yBAAjB,GAA2C,UAAS/0E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,mBAAxC,CAAP;AAAoE,CAA3H;;AAA4H87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB6H,uBAAjB,GAAyC,UAASh1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,iBAAxC,CAAP;AAAkE,CAAvH;;AAAwH87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB8H,wBAAjB,GAA0C,UAASj1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,kBAAxC,CAAP;AAAmE,CAAzH;;AAA0H87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB+H,wBAAjB,GAA0C,UAASl1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,kBAAxC,CAAP;AAAmE,CAAzH;;AAC9W87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBgI,wBAAjB,GAA0C,UAASn1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,kBAAxC,CAAP;AAAmE,CAAzH;;AAA0H87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBiI,wBAAjB,GAA0C,UAASp1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,kBAAxC,CAAP;AAAmE,CAAzH;;AAA0H87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBkI,2BAAjB,GAA6C,UAASr1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,qBAAxC,CAAP;AAAsE,CAA/H;;AAAgI87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBmI,yBAAjB,GAA2C,UAASt1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,mBAAxC,CAAP;AAAoE,CAA3H;;AACpX87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBoI,wBAAjB,GAA0C,UAASv1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,kBAAxC,CAAP;AAAmE,CAAzH;;AAA0H87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBqI,uBAAjB,GAAyC,UAASx1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,iBAAxC,CAAP;AAAkE,CAAvH;;AAAwH87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBsI,wBAAjB,GAA0C,UAASz1E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,kBAAxC,CAAP;AAAmE,CAAzH;;AAA0H87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBuI,yBAAjB,GAA2C,UAAS11E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,mBAAxC,CAAP;AAAoE,CAA3H;;AAC5W87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBwI,yBAAjB,GAA2C,UAAS31E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,mBAAxC,CAAP;AAAoE,CAA3H;;AAA4H87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiByI,yBAAjB,GAA2C,UAAS51E,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB0H,oBAAjB,CAAsC70E,CAAtC,EAAwC,mBAAxC,CAAP;AAAoE,CAA3H;;AAC5H87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiByH,mBAAjB,GAAqC,UAAS50E,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAAC3jD,QAAL,CAAcnY,CAAd,CAAH,EAAoB,IAAG;AAAC,WAAOA,CAAC,CAACvH,WAAF,CAAci2E,WAAd,IAA2B1uE,CAAC,CAACvH,WAAF,CAAcmK,IAAzC,IAA+CpG,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+BzW,CAA/B,CAAtD;AAAwF,GAA5F,CAA4F,OAAMC,CAAN,EAAQ;AAAC,WAAM,mCAAN;AAA0C,GAAnK,MAAwK,OAAO,KAAK,CAAL,KAASD,CAAT,GAAW,WAAX,GAAuB,SAAOA,CAAP,GAAS,MAAT,GAAgB,OAAOA,CAArD;AAAuD,CAAhR;;AAAiR87D,IAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBsH,UAAjB,GAA4B,UAASz0E,CAAT,EAAW;AAAC,MAAG;AAAC,QAAIC,CAAC,GAACD,CAAC,IAAEA,CAAC,CAAC61E,aAAX;AAAA,QAAyB3nD,CAAC,GAACjuB,CAAC,KAAGA,CAAC,CAAC61E,WAAF,IAAe71E,CAAC,CAAC81E,YAApB,CAA5B;AAA8D7nD,KAAC,GAACA,CAAC,IAAE4tC,IAAI,CAAC1gC,MAAV;AAAiB,QAAGlN,CAAC,CAACymD,OAAF,IAAWzmD,CAAC,CAACwmD,QAAhB,EAAyB,OAAOxmD,CAAP;AAAS,GAArH,CAAqH,OAAM4hB,CAAN,EAAQ,CAAE;;AAAA,SAAO,IAAP;AAAY,CAAnL;;AAAoLgsB,IAAI,CAACka,SAAL,GAAe,EAAf;;AAAkBla,IAAI,CAACka,SAAL,CAAeC,QAAf,GAAwB,UAASj2E,CAAT,EAAW;AAAC,SAAO,YAAU;AAAC,WAAOA,CAAP;AAAS,GAA3B;AAA4B,CAAhE;;AAAiE87D,IAAI,CAACka,SAAL,CAAeE,KAAf,GAAqB,YAAU;AAAC,SAAM,CAAC,CAAP;AAAS,CAAzC;;AAA0Cpa,IAAI,CAACka,SAAL,CAAeG,IAAf,GAAoB,YAAU;AAAC,SAAM,CAAC,CAAP;AAAS,CAAxC;;AAAyCra,IAAI,CAACka,SAAL,CAAeI,IAAf,GAAoB,YAAU;AAAC,SAAO,IAAP;AAAY,CAA3C;;AAA4Cta,IAAI,CAACka,SAAL,CAAeK,QAAf,GAAwB,UAASr2E,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAP;AAAS,CAA/C;;AAAgD87D,IAAI,CAACka,SAAL,CAAe1zC,KAAf,GAAqB,UAAStiC,CAAT,EAAW;AAAC,SAAO,YAAU;AAAC,UAAM5B,KAAK,CAAC4B,CAAD,CAAX;AAAgB,GAAlC;AAAmC,CAApE;;AAAqE87D,IAAI,CAACka,SAAL,CAAelI,IAAf,GAAoB,UAAS9tE,CAAT,EAAW;AAAC,SAAO,YAAU;AAAC,UAAMA,CAAN;AAAS,GAA3B;AAA4B,CAA5D;;AAC5wB87D,IAAI,CAACka,SAAL,CAAeM,IAAf,GAAoB,UAASt2E,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAACA,CAAC,IAAE,CAAL;AAAO,SAAO,YAAU;AAAC,WAAOD,CAAC,CAACy8B,KAAF,CAAQ,IAAR,EAAa/+B,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,EAAuC7I,CAAvC,CAAb,CAAP;AAA+D,GAAjF;AAAkF,CAA3H;;AAA4H67D,IAAI,CAACka,SAAL,CAAe3iE,GAAf,GAAmB,UAASrT,CAAT,EAAW;AAAC,SAAO,YAAU;AAAC,WAAO8I,SAAS,CAAC9I,CAAD,CAAhB;AAAoB,GAAtC;AAAuC,CAAtE;;AAAuE87D,IAAI,CAACka,SAAL,CAAeO,YAAf,GAA4B,UAASv2E,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACxwB,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAN;AAA8C,SAAO,YAAU;AAAC,QAAI7I,CAAC,GAACvC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,CAAN;AAA4C7I,KAAC,CAACxB,IAAF,CAAOg+B,KAAP,CAAax8B,CAAb,EAAeiuB,CAAf;AAAkB,WAAOluB,CAAC,CAACy8B,KAAF,CAAQ,IAAR,EAAax8B,CAAb,CAAP;AAAuB,GAAvG;AAAwG,CAAhM;;AAAiM67D,IAAI,CAACka,SAAL,CAAeQ,eAAf,GAA+B,UAASx2E,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACka,SAAL,CAAeS,QAAf,CAAwBz2E,CAAxB,EAA0B87D,IAAI,CAACka,SAAL,CAAeC,QAAf,CAAwBh2E,CAAxB,CAA1B,CAAP;AAA6D,CAA1G;;AACpY67D,IAAI,CAACka,SAAL,CAAeU,OAAf,GAAuB,UAAS12E,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO,UAASiuB,CAAT,EAAW;AAAC,WAAOjuB,CAAC,GAACD,CAAC,IAAEkuB,CAAJ,GAAMluB,CAAC,KAAGkuB,CAAlB;AAAoB,GAAvC;AAAwC,CAA7E;;AAA8E4tC,IAAI,CAACka,SAAL,CAAeW,OAAf,GAAuB,UAAS32E,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACplB,SAAN;AAAA,MAAgBgnC,CAAC,GAAC5hB,CAAC,CAACtuB,MAApB;AAA2B,SAAO,YAAU;AAAC,QAAII,CAAJ;AAAM8vC,KAAC,KAAG9vC,CAAC,GAACkuB,CAAC,CAAC4hB,CAAC,GAAC,CAAH,CAAD,CAAOrT,KAAP,CAAa,IAAb,EAAkB3zB,SAAlB,CAAL,CAAD;;AAAoC,SAAI,IAAI7I,CAAC,GAAC6vC,CAAC,GAAC,CAAZ,EAAc,KAAG7vC,CAAjB,EAAmBA,CAAC,EAApB,EAAuBD,CAAC,GAACkuB,CAAC,CAACjuB,CAAD,CAAD,CAAKwW,IAAL,CAAU,IAAV,EAAezW,CAAf,CAAF;;AAAoB,WAAOA,CAAP;AAAS,GAAhH;AAAiH,CAAjL;;AAAkL87D,IAAI,CAACka,SAAL,CAAeS,QAAf,GAAwB,UAASz2E,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC6I,SAAN;AAAA,MAAgBolB,CAAC,GAACjuB,CAAC,CAACL,MAApB;AAA2B,SAAO,YAAU;AAAC,SAAI,IAAII,CAAJ,EAAMkjB,CAAC,GAAC,CAAZ,EAAcA,CAAC,GAACgL,CAAhB,EAAkBhL,CAAC,EAAnB,EAAsBljB,CAAC,GAACC,CAAC,CAACijB,CAAD,CAAD,CAAKuZ,KAAL,CAAW,IAAX,EAAgB3zB,SAAhB,CAAF;;AAA6B,WAAO9I,CAAP;AAAS,GAA9E;AAA+E,CAA9I;;AAChQ87D,IAAI,CAACka,SAAL,CAAeY,GAAf,GAAmB,UAAS52E,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC6I,SAAN;AAAA,MAAgBolB,CAAC,GAACjuB,CAAC,CAACL,MAApB;AAA2B,SAAO,YAAU;AAAC,SAAI,IAAII,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACkuB,CAAd,EAAgBluB,CAAC,EAAjB,EAAoB,IAAG,CAACC,CAAC,CAACD,CAAD,CAAD,CAAKy8B,KAAL,CAAW,IAAX,EAAgB3zB,SAAhB,CAAJ,EAA+B,OAAM,CAAC,CAAP;;AAAS,WAAM,CAAC,CAAP;AAAS,GAAvF;AAAwF,CAAlJ;;AAAmJgzD,IAAI,CAACka,SAAL,CAAea,EAAf,GAAkB,UAAS72E,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC6I,SAAN;AAAA,MAAgBolB,CAAC,GAACjuB,CAAC,CAACL,MAApB;AAA2B,SAAO,YAAU;AAAC,SAAI,IAAII,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACkuB,CAAd,EAAgBluB,CAAC,EAAjB,EAAoB,IAAGC,CAAC,CAACD,CAAD,CAAD,CAAKy8B,KAAL,CAAW,IAAX,EAAgB3zB,SAAhB,CAAH,EAA8B,OAAM,CAAC,CAAP;;AAAS,WAAM,CAAC,CAAP;AAAS,GAAtF;AAAuF,CAAhJ;;AAAiJgzD,IAAI,CAACka,SAAL,CAAec,GAAf,GAAmB,UAAS92E,CAAT,EAAW;AAAC,SAAO,YAAU;AAAC,WAAM,CAACA,CAAC,CAACy8B,KAAF,CAAQ,IAAR,EAAa3zB,SAAb,CAAP;AAA+B,GAAjD;AAAkD,CAAjF;;AACpSgzD,IAAI,CAACka,SAAL,CAAel6D,MAAf,GAAsB,UAAS9b,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,YAAU,CAAE,CAAlB;;AAAmBA,GAAC,CAACtY,SAAF,GAAY5V,CAAC,CAAC4V,SAAd;AAAwBsY,GAAC,GAAC,IAAIA,CAAJ,EAAF;AAAQluB,GAAC,CAACy8B,KAAF,CAAQvO,CAAR,EAAUxwB,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAAV;AAAmD,SAAOolB,CAAP;AAAS,CAAnJ;;AAAoJ4tC,IAAI,CAACka,SAAL,CAAee,kBAAf,GAAkC,CAAC,CAAnC;;AAAqCjb,IAAI,CAACka,SAAL,CAAegB,gBAAf,GAAgC,UAASh3E,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,CAAC,CAAP;AAAA,MAASiuB,CAAT;AAAW,SAAO,YAAU;AAAC,QAAG,CAAC4tC,IAAI,CAACka,SAAL,CAAee,kBAAnB,EAAsC,OAAO/2E,CAAC,EAAR;AAAWC,KAAC,KAAGiuB,CAAC,GAACluB,CAAC,EAAH,EAAMC,CAAC,GAAC,CAAC,CAAZ,CAAD;AAAgB,WAAOiuB,CAAP;AAAS,GAA5F;AAA6F,CAApJ;;AAAqJ4tC,IAAI,CAACka,SAAL,CAAeiB,IAAf,GAAoB,UAASj3E,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACD,CAAN;AAAQ,SAAO,YAAU;AAAC,QAAGC,CAAH,EAAK;AAAC,UAAID,CAAC,GAACC,CAAN;AAAQA,OAAC,GAAC,IAAF;AAAOD,OAAC;AAAG;AAAC,GAA5C;AAA6C,CAArF;;AAC9U87D,IAAI,CAACka,SAAL,CAAekB,QAAf,GAAwB,UAASl3E,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,CAAN;AAAQ,SAAO,UAAS5sB,CAAT,EAAW;AAAC44C,QAAI,CAAC1gC,MAAL,CAAY+7C,YAAZ,CAAyBrnC,CAAzB;AAA4B,QAAIrJ,CAAC,GAAC39B,SAAN;AAAgBgnC,KAAC,GAACgsB,IAAI,CAAC1gC,MAAL,CAAYkrC,UAAZ,CAAuB,YAAU;AAACtmE,OAAC,CAACy8B,KAAF,CAAQvO,CAAR,EAAUuY,CAAV;AAAa,KAA/C,EAAgDxmC,CAAhD,CAAF;AAAqD,GAApH;AAAqH,CAArK;;AAAsK67D,IAAI,CAACka,SAAL,CAAeoB,QAAf,GAAwB,UAASp3E,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,CAAN;AAAA,MAAQ5sB,CAAC,GAAC,CAAC,CAAX;AAAA,MAAaujB,CAAC,GAAC,EAAf;AAAA,MAAkBvL,CAAC,GAAC,YAAU;AAAC4U,KAAC,GAAC,CAAF;AAAI5sB,KAAC,KAAGA,CAAC,GAAC,CAAC,CAAH,EAAKytB,CAAC,EAAT,CAAD;AAAc,GAAjD;AAAA,MAAkDA,CAAC,GAAC,YAAU;AAACb,KAAC,GAACgsB,IAAI,CAAC1gC,MAAL,CAAYkrC,UAAZ,CAAuBprC,CAAvB,EAAyBj7B,CAAzB,CAAF;AAA8BD,KAAC,CAACy8B,KAAF,CAAQvO,CAAR,EAAUuY,CAAV;AAAa,GAA1G;;AAA2G,SAAO,UAASzmC,CAAT,EAAW;AAACymC,KAAC,GAAC39B,SAAF;AAAYgnC,KAAC,GAAC5sB,CAAC,GAAC,CAAC,CAAJ,GAAMytB,CAAC,EAAR;AAAW,GAA1C;AAA2C,CAA9L;;AAA+LmrB,IAAI,CAACka,SAAL,CAAeqB,SAAf,GAAyB,UAASr3E,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,CAAN;AAAA,MAAQ5sB,CAAC,GAAC,YAAU;AAAC4sB,KAAC,GAAC,CAAF;AAAI,GAAzB;;AAA0B,SAAO,UAASrJ,CAAT,EAAW;AAACqJ,KAAC,KAAGA,CAAC,GAACgsB,IAAI,CAAC1gC,MAAL,CAAYkrC,UAAZ,CAAuBpjD,CAAvB,EAAyBjjB,CAAzB,CAAF,EAA8BD,CAAC,CAACy8B,KAAF,CAAQvO,CAAR,EAAUplB,SAAV,CAAjC,CAAD;AAAwD,GAA3E;AAA4E,CAA/I;;AAAgJgzD,IAAI,CAACuQ,GAAL,CAASiL,WAAT,GAAqB,YAAU,CAAE,CAAjC;;AAAkCxb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,GAAiB,UAASv3E,CAAT,EAAW;AAAC,OAAKw3E,QAAL,GAAcx3E,CAAd;AAAgB,CAA7C;;AAA8C87D,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB3hE,SAAjB,CAA2BY,QAA3B,GAAoC,YAAU;AAAC,SAAO,KAAKghE,QAAZ;AAAqB,CAApE;;AAAqE1b,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBE,CAAjB,GAAmB,IAAI3b,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,GAArB,CAAnB;AAA6Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBG,IAAjB,GAAsB,IAAI5b,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBI,OAAjB,GAAyB,IAAI7b,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBK,OAAjB,GAAyB,IAAI9b,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBM,MAAjB,GAAwB,IAAI/b,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBO,IAAjB,GAAsB,IAAIhc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBQ,OAAjB,GAAyB,IAAIjc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AACt8Bzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBS,KAAjB,GAAuB,IAAIlc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBU,KAAjB,GAAuB,IAAInc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB7mC,CAAjB,GAAmB,IAAIorB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,GAArB,CAAnB;AAA6Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBW,IAAjB,GAAsB,IAAIpc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBY,QAAjB,GAA0B,IAAIrc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBa,GAAjB,GAAqB,IAAItc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBc,GAAjB,GAAqB,IAAIvc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBe,GAAjB,GAAqB,IAAIxc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBgB,UAAjB,GAA4B,IAAIzc,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,YAArB,CAA5B;AAA+Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBiB,IAAjB,GAAsB,IAAI1c,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AACvdzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBkB,EAAjB,GAAoB,IAAI3c,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBmB,MAAjB,GAAwB,IAAI5c,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBoB,MAAjB,GAAwB,IAAI7c,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBqB,OAAjB,GAAyB,IAAI9c,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBsB,MAAjB,GAAwB,IAAI/c,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBuB,IAAjB,GAAsB,IAAIhd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBwB,IAAjB,GAAsB,IAAIjd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiByB,GAAjB,GAAqB,IAAIld,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB0B,QAAjB,GAA0B,IAAInd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AACpazb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB2B,OAAjB,GAAyB,IAAIpd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB4B,IAAjB,GAAsB,IAAIrd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB6B,QAAjB,GAA0B,IAAItd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB8B,EAAjB,GAAoB,IAAIvd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB+B,GAAjB,GAAqB,IAAIxd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBgC,OAAjB,GAAyB,IAAIzd,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBiC,GAAjB,GAAqB,IAAI1d,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBkC,MAAjB,GAAwB,IAAI3d,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBmC,GAAjB,GAAqB,IAAI5d,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBoC,GAAjB,GAAqB,IAAI7d,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AACzdzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBqC,EAAjB,GAAoB,IAAI9d,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBsC,EAAjB,GAAoB,IAAI/d,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBuC,EAAjB,GAAoB,IAAIhe,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBwC,KAAjB,GAAuB,IAAIje,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiByC,QAAjB,GAA0B,IAAIle,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB0C,UAAjB,GAA4B,IAAIne,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,YAArB,CAA5B;AAA+Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB2C,MAAjB,GAAwB,IAAIpe,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB4C,IAAjB,GAAsB,IAAIre,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB6C,MAAjB,GAAwB,IAAIte,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB8C,IAAjB,GAAsB,IAAIve,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAC7dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB+C,KAAjB,GAAuB,IAAIxe,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBgD,QAAjB,GAA0B,IAAIze,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBiD,EAAjB,GAAoB,IAAI1e,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBkD,EAAjB,GAAoB,IAAI3e,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBmD,EAAjB,GAAoB,IAAI5e,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBoD,EAAjB,GAAoB,IAAI7e,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBqD,EAAjB,GAAoB,IAAI9e,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBsD,EAAjB,GAAoB,IAAI/e,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBuD,IAAjB,GAAsB,IAAIhf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBwD,MAAjB,GAAwB,IAAIjf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAC7bzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiByD,MAAjB,GAAwB,IAAIlf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB0D,EAAjB,GAAoB,IAAInf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB2D,IAAjB,GAAsB,IAAIpf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB5nC,CAAjB,GAAmB,IAAImsB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,GAArB,CAAnB;AAA6Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB4D,MAAjB,GAAwB,IAAIrf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB6D,GAAjB,GAAqB,IAAItf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB8D,KAAjB,GAAuB,IAAIvf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB+D,GAAjB,GAAqB,IAAIxf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBgE,OAAjB,GAAyB,IAAIzf,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBiE,GAAjB,GAAqB,IAAI1f,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAC7czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBkE,MAAjB,GAAwB,IAAI3f,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBmE,KAAjB,GAAuB,IAAI5f,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBoE,MAAjB,GAAwB,IAAI7f,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBqE,EAAjB,GAAoB,IAAI9f,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBsE,IAAjB,GAAsB,IAAI/f,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBuE,IAAjB,GAAsB,IAAIhgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBwE,GAAjB,GAAqB,IAAIjgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiByE,IAAjB,GAAsB,IAAIlgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB0E,IAAjB,GAAsB,IAAIngB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB2E,IAAjB,GAAsB,IAAIpgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAC/czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB4E,QAAjB,GAA0B,IAAIrgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB6E,IAAjB,GAAsB,IAAItgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB8E,KAAjB,GAAuB,IAAIvgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB+E,GAAjB,GAAqB,IAAIxgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBgF,QAAjB,GAA0B,IAAIzgB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBiF,QAAjB,GAA0B,IAAI1gB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBkF,MAAjB,GAAwB,IAAI3gB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBmF,EAAjB,GAAoB,IAAI5gB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBoF,QAAjB,GAA0B,IAAI7gB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAChbzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBqF,MAAjB,GAAwB,IAAI9gB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBsF,MAAjB,GAAwB,IAAI/gB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB3kC,CAAjB,GAAmB,IAAIkpB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,GAArB,CAAnB;AAA6Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBuF,KAAjB,GAAuB,IAAIhhB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBwF,OAAjB,GAAyB,IAAIjhB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiByF,GAAjB,GAAqB,IAAIlhB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB0F,QAAjB,GAA0B,IAAInhB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBpoC,CAAjB,GAAmB,IAAI2sB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,GAArB,CAAnB;AAA6Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB2F,EAAjB,GAAoB,IAAIphB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB4F,EAAjB,GAAoB,IAAIrhB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AACjdzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB6F,GAAjB,GAAqB,IAAIthB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB8F,IAAjB,GAAsB,IAAIvhB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBxmC,CAAjB,GAAmB,IAAI+qB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,GAArB,CAAnB;AAA6Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB+F,IAAjB,GAAsB,IAAIxhB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBgG,MAAjB,GAAwB,IAAIzhB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBiG,OAAjB,GAAyB,IAAI1hB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBkG,MAAjB,GAAwB,IAAI3hB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBmG,KAAjB,GAAuB,IAAI5hB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBoG,MAAjB,GAAwB,IAAI7hB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBqG,IAAjB,GAAsB,IAAI9hB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AACvdzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBsG,MAAjB,GAAwB,IAAI/hB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBuG,MAAjB,GAAwB,IAAIhiB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,QAArB,CAAxB;AAAuDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBwG,KAAjB,GAAuB,IAAIjiB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiByG,GAAjB,GAAqB,IAAIliB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB0G,OAAjB,GAAyB,IAAIniB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,SAArB,CAAzB;AAAyDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB2G,GAAjB,GAAqB,IAAIpiB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB4G,GAAjB,GAAqB,IAAIriB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB6G,KAAjB,GAAuB,IAAItiB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB8G,KAAjB,GAAuB,IAAIviB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB+G,EAAjB,GAAoB,IAAIxiB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AACzdzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBgH,QAAjB,GAA0B,IAAIziB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBiH,QAAjB,GAA0B,IAAI1iB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,UAArB,CAA1B;AAA2Dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBkH,KAAjB,GAAuB,IAAI3iB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBmH,EAAjB,GAAoB,IAAI5iB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBoH,KAAjB,GAAuB,IAAI7iB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBqH,IAAjB,GAAsB,IAAI9iB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,MAArB,CAAtB;AAAmDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBsH,KAAjB,GAAuB,IAAI/iB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBuH,EAAjB,GAAoB,IAAIhjB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiBwH,KAAjB,GAAuB,IAAIjjB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiByH,EAAjB,GAAoB,IAAIljB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAC3dzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB0H,CAAjB,GAAmB,IAAInjB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,GAArB,CAAnB;AAA6Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB2H,EAAjB,GAAoB,IAAIpjB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,IAArB,CAApB;AAA+Czb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB4H,GAAjB,GAAqB,IAAIrjB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB6H,KAAjB,GAAuB,IAAItjB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,OAArB,CAAvB;AAAqDzb,IAAI,CAACuQ,GAAL,CAASkL,OAAT,CAAiB8H,GAAjB,GAAqB,IAAIvjB,IAAI,CAACuQ,GAAL,CAASkL,OAAb,CAAqB,KAArB,CAArB;AAAiDzb,IAAI,CAACuQ,GAAL,CAASiT,IAAT,GAAc,EAAd;AAAiBxjB,IAAI,CAACuQ,GAAL,CAASiT,IAAT,CAAcC,UAAd,GAAyB;AAACC,MAAI,EAAC,CAAC,CAAP;AAASxlF,MAAI,EAAC,CAAC,CAAf;AAAiBylF,IAAE,EAAC,CAAC,CAArB;AAAuBC,KAAG,EAAC,CAAC,CAA5B;AAA8BC,SAAO,EAAC,CAAC,CAAvC;AAAyCC,OAAK,EAAC,CAAC,CAAhD;AAAkDC,IAAE,EAAC,CAAC,CAAtD;AAAwDC,KAAG,EAAC,CAAC,CAA7D;AAA+Dl/E,OAAK,EAAC,CAAC,CAAtE;AAAwEm/E,QAAM,EAAC,CAAC,CAAhF;AAAkFC,MAAI,EAAC,CAAC,CAAxF;AAA0FC,MAAI,EAAC,CAAC,CAAhG;AAAkGC,OAAK,EAAC,CAAC,CAAzG;AAA2G9rB,QAAM,EAAC,CAAC,CAAnH;AAAqH+rB,OAAK,EAAC,CAAC,CAA5H;AAA8HC,KAAG,EAAC,CAAC;AAAnI,CAAzB;;AAA+JtkB,IAAI,CAACuQ,GAAL,CAASiT,IAAT,CAAce,SAAd,GAAwB,UAASrgF,CAAT,EAAW;AAAC,SAAM,CAAC,CAAD,KAAK87D,IAAI,CAACuQ,GAAL,CAASiT,IAAT,CAAcC,UAAd,CAAyBv/E,CAAzB,CAAX;AAAuC,CAA3E;;AAA4E87D,IAAI,CAACyH,IAAL,GAAU,EAAV;AAAazH,IAAI,CAACyH,IAAL,CAAU+c,YAAV,GAAuB,EAAvB;AAA0BxkB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,GAA4DzkB,IAAI,CAACoO,yBAAL,GAA+BpO,IAAI,CAACsO,wBAAL,CAA8BtO,IAAI,CAACoO,yBAAL,GAA+B,OAA7D,CAA/B,GAAqG,IAAjK;AAAsKpO,IAAI,CAAC/yB,MAAL,GAAY,EAAZ;;AAAe+yB,IAAI,CAAC/yB,MAAL,CAAYy3C,WAAZ,GAAwB,YAAU,CAAE,CAApC;;AAAqC1kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,GAAkB,UAASzgF,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAKygF,gEAAL,GAAsE1gF,CAAC,KAAG87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBE,sCAAtB,IAA8D1gF,CAA9D,IAAiE,EAAvI;AAA0I,OAAK2gF,uDAAL,GAA6D9kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBI,YAA/E;AAA4F,CAAtQ;;AAAuQ/kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkB7qE,SAAlB,CAA4BkrE,+BAA5B,GAA4D,CAAC,CAA7D;;AAA+DhlB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkB7qE,SAAlB,CAA4BmrE,mBAA5B,GAAgD,YAAU;AAAC,SAAO,KAAKL,gEAAZ;AAA6E,CAAxI;;AACtjC5kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkB7qE,SAAlB,CAA4BY,QAA5B,GAAqC,YAAU;AAAC,SAAM,WAAS,KAAKkqE,gEAAd,GAA+E,GAArF;AAAyF,CAAzI;;AAA0I5kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,GAAyB,UAAShhF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAzB,IAAgCzgF,CAAC,CAACvH,WAAF,KAAgBqjE,IAAI,CAAC/yB,MAAL,CAAY03C,KAA5D,IAAmEzgF,CAAC,CAAC4gF,uDAAF,KAA4D9kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBI,YAApJ,EAAiK,OAAO7gF,CAAC,CAAC0gF,gEAAT;AAA0E5kB,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,yCAAuC9tE,CAAvC,GAAyC,GAA3D;AAAgE,SAAM,kBAAN;AAAyB,CAAzW;;AAC1I87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkB9iF,IAAlB,GAAuB,UAASqC,CAAT,EAAW;AAAC,SAAO,IAAI87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAhB,CAAsB3kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBE,sCAAxC,EAA+E3gF,CAA/E,CAAP;AAAyF,CAA5H;;AAA6H87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBI,YAAlB,GAA+B,EAA/B;AAAkC/kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBE,sCAAlB,GAAyD,EAAzD;AAA4D7kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBQ,KAAlB,GAAwBnlB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkB9iF,IAAlB,CAAuB,EAAvB,CAAxB;;AAAmDm+D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,GAAqB,YAAU;AAAC,OAAKC,+CAAL,GAAqD,EAArD;AAAwD,OAAKC,mDAAL,GAAyDtlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBG,uCAA9E;AAAsH,CAA9M;;AAA+MvlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBtrE,SAArB,CAA+BkrE,+BAA/B,GAA+D,CAAC,CAAhE;AAAkEhlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBG,uCAArB,GAA6D,EAA7D;;AAAgEvlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBI,YAArB,GAAkC,UAASthF,CAAT,EAAW;AAACA,GAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAF;AAA8B,SAAO,MAAIA,CAAC,CAACJ,MAAN,GAAak8D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBD,KAAlC,GAAwCnlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBK,gDAArB,CAAsEvhF,CAAtE,CAA/C;AAAwH,CAApM;;AAC/lB87D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBM,mBAArB,GAAyC,UAASxhF,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAC,GAAC,EAAN,EAAS4hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAChnC,SAAS,CAAClJ,MAA7B,EAAoCkwC,CAAC,EAArC,EAAwC5hB,CAAC,CAACzvB,IAAF,CAAOq9D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBO,UAArB,CAAgC34E,SAAS,CAACgnC,CAAD,CAAzC,CAAP;;AAAsD,SAAOgsB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBK,gDAArB,CAAsE,MAAIzlB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAJ,GAAgC,IAAhC,GAAqCkuB,CAAC,CAACvT,IAAF,CAAO,IAAP,CAArC,GAAkD,IAAxH,CAAP;AAAqI,CAA1R;;AAA2RmhD,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBQ,QAArB,GAA8B,UAAS1hF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBK,gDAArB,CAAsEzlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBO,UAArB,CAAgCzhF,CAAhC,CAAtE,CAAP;AAAiH,CAA3J;;AAA4J87D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBtrE,SAArB,CAA+BmrE,mBAA/B,GAAmD,YAAU;AAAC,SAAO,KAAKI,+CAAL,CAAqD3qE,QAArD,EAAP;AAAuE,CAArI;;AACvbslD,IAAI,CAACW,KAAL,KAAaX,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBtrE,SAArB,CAA+BY,QAA/B,GAAwC,YAAU;AAAC,SAAM,gBAAc,KAAK2qE,+CAAnB,GAAmE,GAAzE;AAA6E,CAA7I;;AAA+IrlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBF,MAArB,GAA4B,UAAShhF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBS,mBAArB,CAAyC3hF,CAAzC,EAA4CwW,QAA5C,EAAP;AAA8D,CAAtG;;AAC/IslD,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBS,mBAArB,GAAyC,UAAS3hF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAU2d,UAAvB,IAAmClhF,CAAC,CAACvH,WAAF,KAAgBqjE,IAAI,CAACyH,IAAL,CAAU2d,UAA7D,IAAyElhF,CAAC,CAACohF,mDAAF,KAAwDtlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBG,uCAAzJ,EAAiM,OAAOrhF,CAAC,CAACmhF,+CAAT;AAAyDrlB,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,8CAA4C9tE,CAA5C,GAA8C,YAA9C,GAA2D87D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAA7E;AAA6F,SAAM,uBAAN;AAA8B,CAA1a;;AACA87D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBO,UAArB,GAAgC,UAASzhF,CAAT,EAAW;AAAC,SAAOwH,IAAI,CAACC,SAAL,CAAezH,CAAf,EAAkBkZ,OAAlB,CAA0B,IAA1B,EAA+B,OAA/B,CAAP;AAA+C,CAA3F;;AAA4F4iD,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBK,gDAArB,GAAsE,UAASvhF,CAAT,EAAW;AAAC,SAAO,IAAI87D,IAAI,CAACyH,IAAL,CAAU2d,UAAd,EAAD,CAA2BU,qCAA3B,CAAiE5hF,CAAjE,CAAN;AAA0E,CAA5J;;AAC5F87D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBtrE,SAArB,CAA+BgsE,qCAA/B,GAAqE,UAAS5hF,CAAT,EAAW;AAAC,OAAKmhF,+CAAL,GAAqDrlB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,GAA4DzkB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,CAA4DpX,YAA5D,CAAyEnpE,CAAzE,CAA5D,GAAwIA,CAA7L;AAA+L,SAAO,IAAP;AAAY,CAA5R;;AAA6R87D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBD,KAArB,GAA2BnlB,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBK,gDAArB,CAAsE,EAAtE,CAA3B;AAAqGzlB,IAAI,CAAClgD,EAAL,GAAQ,EAAR;AAAWkgD,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,GAAY,EAAZ;;AAAe/lB,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYC,eAAZ,GAA4B,UAAS9hF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYE,aAAZ,GAA4BC,eAA5B,CAA4ChiF,CAA5C,CAAP;AAAsD,CAA9F;;AAA+F87D,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYI,eAAZ,GAA4B,UAASjiF,CAAT,EAAW;AAAC87D,MAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYE,aAAZ,GAA4BG,eAA5B,CAA4CliF,CAA5C;AAA+C,CAAvF;;AAAwF87D,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYE,aAAZ,GAA0B,YAAU;AAAC,MAAI/hF,CAAC,GAAC87D,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYM,cAAZ,EAAN;AAAmC,MAAG,QAAMniF,CAAT,EAAW,OAAOA,CAAP;AAAS,QAAM5B,KAAK,CAAC,gDAAD,CAAX;AAA+D,CAA3J;;AACnlB09D,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYM,cAAZ,GAA2B,YAAU;AAAC,SAAOrmB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC1gC,MAAL,CAAYgnD,GAAvB,KAA6BtmB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC1gC,MAAL,CAAYgnD,GAAZ,CAAgBJ,eAA3B,CAA7B,GAAyElmB,IAAI,CAAC1gC,MAAL,CAAYgnD,GAArF,GAAyFtmB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC1gC,MAAL,CAAYinD,SAAvB,KAAmCvmB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC1gC,MAAL,CAAYinD,SAAZ,CAAsBL,eAAjC,CAAnC,GAAqFlmB,IAAI,CAAC1gC,MAAL,CAAYinD,SAAjG,GAA2GvmB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC1gC,MAAL,CAAY4mD,eAAvB,IAAwClmB,IAAI,CAAC1gC,MAA7C,GAAoD,IAA/P;AAAoQ,CAA1S;;AAA2S0gC,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYS,yBAAZ,GAAsC,YAAU;AAAC,SAAO,QAAMxmB,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYM,cAAZ,EAAb;AAA0C,CAA3F;;AAA4FrmB,IAAI,CAACymB,IAAL,GAAU,EAAV;AAAazmB,IAAI,CAACymB,IAAL,CAAUC,IAAV,GAAe,EAAf;AAAkB1mB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeC,SAAf,GAAyB,CAAC,CAA1B;AACta3mB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeE,MAAf,GAAsB5mB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeC,SAAf,IAA0B,CAAC,QAAM3mB,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAN,IAAgD,QAAM6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAtD,IAAgG,QAAM6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAtG,IAAgJ,QAAM6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAtJ,IAAgM,QAAM6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAtM,IAAgP,QAAM6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAtP,IAAgS,QAAM6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAtS,IAAgV,QAAM6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAtV,IAAgY,QAAM6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAvY,MAAmb,KAAG6hC,IAAI,CAACY,MAAL,CAAY98D,MAAf,IACne,OAAKk8D,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,CAD8d,IAClc,OAAKgf,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,CADU,CAA1B,IAC6C,KAAGgf,IAAI,CAACY,MAAL,CAAY98D,MAAf,IAAuB,SAAOk8D,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAA9B,KAAyE,KAAG6hC,IAAI,CAACY,MAAL,CAAY98D,MAAf,IAAuB,OAAKk8D,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,CAA5B,IAAwD,OAAKgf,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,CAAtI,CAD7C,IACgN,KAAGgf,IAAI,CAACY,MAAL,CAAY98D,MAAf,KAAwB,OAAKk8D,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,CAAL,IAAiC,OAAKgf,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,CAA9D,MAA4F,UAAQgf,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAR,IAAkD,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAA1D,IAAoG,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAA5G,IAAsJ,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAChe,CADge,EAC7d7iB,WAD6d,EAA9J,IAChT,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EADwS,IAC9P,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAD0J,CADhN,IAEiG,KAAG6hC,IAAI,CAACY,MAAL,CAAY98D,MAAf,KAAwB,OAAKk8D,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,CAAL,IAAiC,OAAKgf,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,CAA9D,MAA4F,UAAQgf,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAR,IAAkD,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAA1D,IAAoG,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAA5G,IAAsJ,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAA9J,IAAwM,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAAhN,IAA0P,UAAQ6hC,IAAI,CAACY,MAAL,CAAY5f,SAAZ,CAAsB,CAAtB,EAAwB,CAAxB,EAA2B7iB,WAA3B,EAA9V,CAFvH;AAGA6hC,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeG,MAAf,GAAsB;AAACC,KAAG,EAAC,QAAL;AAAcC,KAAG,EAAC,QAAlB;AAA2BC,KAAG,EAAC,QAA/B;AAAwCC,KAAG,EAAC,QAA5C;AAAqDC,KAAG,EAAC;AAAzD,CAAtB;AAAyFlnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,GAAmB;AAACC,KAAG,EAAC,CAAL;AAAOC,KAAG,EAAC,CAAC,CAAZ;AAAcC,SAAO,EAAC;AAAtB,CAAnB;AAA4CtnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAea,KAAf,GAAqB,OAArB;AAA6BvnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAec,IAAf,GAAoB,MAApB;AAA2BxnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAee,UAAf,GAA0BznB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeE,MAAf,GAAsB5mB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAec,IAArC,GAA0CxnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAea,KAAnF;AAAyFvnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAegB,SAAf,GAAyB1nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeE,MAAf,GAAsB5mB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAea,KAArC,GAA2CvnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAec,IAAnF;;AACtRxnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeiB,KAAf,GAAqB,UAASzjF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAM,YAAU,OAAOD,CAAjB,GAAmB,IAAEA,CAAF,GAAI87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBC,GAAvB,GAA2B,IAAEljF,CAAF,GAAI87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBE,GAAvB,GAA2BljF,CAAC,GAAC,IAAD,GAAM67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAAnG,GAA2G,QAAMpjF,CAAN,GAAQ,IAAR,GAAaA,CAAC,GAAC87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBE,GAApB,GAAwBrnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBC,GAA1K;AAA8K,CAAjN;;AAAkNpnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekB,SAAf,GAAyB,6JAAzB;AAAuL5nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemB,SAAf,GAAyB,sFAAzB;AACzY7nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeoB,YAAf,GAA4B,kBAA5B;;AAA+C9nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,GAAkC,UAAS7jF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOA,CAAC,GAACD,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeoB,YAAzB,EAAsC,EAAtC,CAAD,GAA2C5jF,CAAnD;AAAqD,CAArG;;AAAsG87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAesB,WAAf,GAA2B,IAAIxqE,MAAJ,CAAW,MAAIwiD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemB,SAAnB,GAA6B,GAAxC,CAA3B;AAAwE7nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeuB,WAAf,GAA2B,IAAIzqE,MAAJ,CAAW,MAAIwiD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekB,SAAnB,GAA6B,GAAxC,CAA3B;;AAAwE5nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAewB,SAAf,GAAyB,UAAShkF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAesB,WAAf,CAA2B1kE,IAA3B,CAAgC08C,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,CAAkC7jF,CAAlC,EAAoCC,CAApC,CAAhC,CAAP;AAA+E,CAAtH;;AAAuH67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeyB,UAAf,GAA0BnoB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAewB,SAAzC;;AAC5ZloB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe0B,SAAf,GAAyB,UAASlkF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeuB,WAAf,CAA2B3kE,IAA3B,CAAgC08C,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,CAAkC7jF,CAAlC,EAAoCC,CAApC,CAAhC,CAAP;AAA+E,CAAtH;;AAAuH67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe2B,MAAf,GAAsB,IAAI7qE,MAAJ,CAAW,OAAKwiD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekB,SAApB,GAA8B,GAAzC,CAAtB;AAAoE5nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe4B,MAAf,GAAsB,IAAI9qE,MAAJ,CAAW,OAAKwiD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemB,SAApB,GAA8B,GAAzC,CAAtB;;AAAoE7nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe6B,SAAf,GAAyB,UAASrkF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe4B,MAAf,CAAsBhlE,IAAtB,CAA2Bpf,CAA3B,CAAP;AAAqC,CAA1E;;AAA2E87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe8B,SAAf,GAAyB,UAAStkF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe2B,MAAf,CAAsB/kE,IAAtB,CAA2Bpf,CAA3B,CAAP;AAAqC,CAA1E;;AAA2E87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe+B,aAAf,GAA6B,UAASvkF,CAAT,EAAW;AAAC,SAAM,CAAC87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe8B,SAAf,CAAyBtkF,CAAzB,CAAD,IAA8B,CAAC87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe6B,SAAf,CAAyBrkF,CAAzB,CAArC;AAAiE,CAA1G;;AACrZ87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAegC,cAAf,GAA8B,IAAIlrE,MAAJ,CAAW,QAAMwiD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemB,SAArB,GAA+B,KAA/B,GAAqC7nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekB,SAApD,GAA8D,GAAzE,CAA9B;AAA4G5nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeiC,cAAf,GAA8B,IAAInrE,MAAJ,CAAW,QAAMwiD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekB,SAArB,GAA+B,KAA/B,GAAqC5nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemB,SAApD,GAA8D,GAAzE,CAA9B;;AAA4G7nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekC,aAAf,GAA6B,UAAS1kF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeiC,cAAf,CAA8BrlE,IAA9B,CAAmC08C,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,CAAkC7jF,CAAlC,EAAoCC,CAApC,CAAnC,CAAP;AAAkF,CAA7H;;AAA8H67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemC,SAAf,GAAyB7oB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekC,aAAxC;;AACtV5oB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeoC,aAAf,GAA6B,UAAS5kF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAegC,cAAf,CAA8BplE,IAA9B,CAAmC08C,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,CAAkC7jF,CAAlC,EAAoCC,CAApC,CAAnC,CAAP;AAAkF,CAA7H;;AAA8H67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqC,SAAf,GAAyB/oB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeoC,aAAxC;AAAsD9oB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAesC,gBAAf,GAAgC,cAAhC;;AAA+ChpB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeuC,aAAf,GAA6B,UAAS/kF,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAAC87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,CAAkC7jF,CAAlC,EAAoCC,CAApC,CAAF;AAAyC,SAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAesC,gBAAf,CAAgC1lE,IAAhC,CAAqCpf,CAArC,KAAyC,CAAC87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe0B,SAAf,CAAyBlkF,CAAzB,CAAD,IAA8B,CAAC87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAewB,SAAf,CAAyBhkF,CAAzB,CAA/E;AAA2G,CAA/L;;AACnO87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAewC,kBAAf,GAAkC,IAAI1rE,MAAJ,CAAW,MAAIwiD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekB,SAAnB,GAA6B,KAA7B,GAAmC5nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemB,SAAlD,GAA4D,KAAvE,CAAlC;AAAgH7nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeyC,kBAAf,GAAkC,IAAI3rE,MAAJ,CAAW,MAAIwiD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemB,SAAnB,GAA6B,KAA7B,GAAmC7nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekB,SAAlD,GAA4D,KAAvE,CAAlC;;AAAgH5nB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe0C,WAAf,GAA2B,UAASllF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAewC,kBAAf,CAAkC5lE,IAAlC,CAAuC08C,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,CAAkC7jF,CAAlC,EAAoCC,CAApC,CAAvC,CAAP;AAAsF,CAA/H;;AAAgI67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe2C,aAAf,GAA6BrpB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe0C,WAA5C;;AAChWppB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe4C,WAAf,GAA2B,UAASplF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeyC,kBAAf,CAAkC7lE,IAAlC,CAAuC08C,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,CAAkC7jF,CAAlC,EAAoCC,CAApC,CAAvC,CAAP;AAAsF,CAA/H;;AAAgI67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe6C,aAAf,GAA6BvpB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe4C,WAA5C;AAAwDtpB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe8C,aAAf,GAA6B,oHAA7B;;AAAkJxpB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe+C,aAAf,GAA6B,UAASvlF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe8C,aAAf,CAA6BlmE,IAA7B,CAAkCpf,CAAlC,CAAP;AAA4C,CAArF;;AAAsF87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAegD,mBAAf,GAAmC,4CAAnC;;AACha1pB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeiD,kBAAf,GAAkC,UAASzlF,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAAC,CAAC,KAAK,CAAL,KAASA,CAAT,GAAW67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAewB,SAAf,CAAyBhkF,CAAzB,CAAX,GAAuCC,CAAxC,IAA2C67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeG,MAAf,CAAsBK,GAAjE,GAAqElnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeG,MAAf,CAAsBI,GAA7F;AAAiG,SAAO/iF,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAegD,mBAAzB,EAA6CvlF,CAAC,GAAC,IAAF,GAAOA,CAApD,CAAP;AAA8D,CAA/M;;AAAgN67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekD,gBAAf,GAAgC,UAAS1lF,CAAT,EAAW;AAAC,SAAM,OAAKA,CAAC,CAACq+B,MAAF,CAAS,CAAT,CAAL,GAAiBr+B,CAAC,CAACkZ,OAAF,CAAU,MAAV,EAAiB,YAAjB,CAAjB,GAAgD,qBAAmBlZ,CAAnB,GAAqB,SAA3E;AAAqF,CAAjI;;AAAkI87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemD,gBAAf,GAAgC,UAAS3lF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeG,MAAf,CAAsBE,GAAtB,GAA0B7iF,CAA1B,GAA4B87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeG,MAAf,CAAsBG,GAAzD;AAA6D,CAAzG;;AAClVhnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeoD,gBAAf,GAAgC,UAAS5lF,CAAT,EAAW;AAAC,SAAM,OAAKA,CAAC,CAACq+B,MAAF,CAAS,CAAT,CAAL,GAAiBr+B,CAAC,CAACkZ,OAAF,CAAU,MAAV,EAAiB,YAAjB,CAAjB,GAAgD,qBAAmBlZ,CAAnB,GAAqB,SAA3E;AAAqF,CAAjI;;AAAkI87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqD,gBAAf,GAAgC,UAAS7lF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeG,MAAf,CAAsBC,GAAtB,GAA0B5iF,CAA1B,GAA4B87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeG,MAAf,CAAsBG,GAAzD;AAA6D,CAAzG;;AAA0GhnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAesD,aAAf,GAA6B,oEAA7B;AAAkGhqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeuD,OAAf,GAAuB,QAAvB;AAAgCjqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAewD,QAAf,GAAwB,SAAxB;AAAkClqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeyD,OAAf,GAAuB,OAAvB;;AAChZnqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe0D,SAAf,GAAyB,UAASlmF,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAesD,aAAzB,EAAuC,cAAvC,EAAuD5sE,OAAvD,CAA+D4iD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeuD,OAA9E,EAAsF,MAAtF,EAA8F7sE,OAA9F,CAAsG4iD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAewD,QAArH,EAA8HlqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAec,IAA7I,EAAmJpqE,OAAnJ,CAA2J4iD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeyD,OAA1K,EAAkLnqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAea,KAAjM,CAAP;AAA+M,CAApP;;AAAqPvnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe2D,wBAAf,GAAwC,qBAAxC;AAA8DrqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe4D,wBAAf,GAAwC,qBAAxC;;AACnTtqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe6D,oBAAf,GAAoC,UAASrmF,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe2D,wBAAzB,EAAkD,UAAlD,EAA8DjtE,OAA9D,CAAsE4iD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe4D,wBAArF,EAA8G,UAA9G,CAAP;AAAiI,CAAjL;;AAAkLtqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe8D,gBAAf,GAAgC,KAAhC;AAAsCxqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe+D,cAAf,GAA8B,mBAA9B;AAAkDzqB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAegE,sBAAf,GAAsC,EAAtC;;AAC1Q1qB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeiE,iBAAf,GAAiC,UAASzmF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,CAAN;AAAA,MAAQ4hB,CAAC,GAAC,CAAV;AAAA,MAAY5sB,CAAC,GAAC,CAAC,CAAf;AAAiBljB,GAAC,GAAC87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeqB,kBAAf,CAAkC7jF,CAAlC,EAAoCC,CAApC,EAAuCga,KAAvC,CAA6C6hD,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe8D,gBAA5D,CAAF;;AAAgF,OAAIrmF,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACD,CAAC,CAACJ,MAAZ,EAAmBK,CAAC,EAApB,EAAuB;AAAC,QAAIwmC,CAAC,GAACzmC,CAAC,CAACC,CAAD,CAAP;AAAW67D,QAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekC,aAAf,CAA6Bj+C,CAA7B,KAAiCvY,CAAC,IAAG4hB,CAAC,EAAtC,IAA0CgsB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAesC,gBAAf,CAAgC1lE,IAAhC,CAAqCqnB,CAArC,IAAwCvjB,CAAC,GAAC,CAAC,CAA3C,GAA6C44C,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe0B,SAAf,CAAyBz9C,CAAzB,IAA4BqJ,CAAC,EAA7B,GAAgCgsB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAe+D,cAAf,CAA8BnnE,IAA9B,CAAmCqnB,CAAnC,MAAwCvjB,CAAC,GAAC,CAAC,CAA3C,CAAvH;AAAqK;;AAAA,SAAO,KAAG4sB,CAAH,GAAK5sB,CAAC,GAAC44C,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBC,GAApB,GAAwBpnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAAjD,GAAyDl1D,CAAC,GAAC4hB,CAAF,GAAIgsB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAegE,sBAAnB,GAA0C1qB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBE,GAA7D,GAAiErnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBC,GAApJ;AAAwJ,CAAhf;;AACApnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAekE,uBAAf,GAAuC,UAAS1mF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeiE,iBAAf,CAAiCzmF,CAAjC,EAAmCC,CAAnC,KAAuC67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBE,GAAjE;AAAqE,CAA1H;;AAA2HrnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAemE,qBAAf,GAAqC,UAAS3mF,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,KAAGC,CAAC,GAAC67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeiB,KAAf,CAAqBxjF,CAArB,CAAL,CAAD,KAAiCD,CAAC,CAAC4mF,KAAF,CAAQC,SAAR,GAAkB5mF,CAAC,IAAE67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBE,GAAtB,GAA0BrnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAea,KAAzC,GAA+CvnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAec,IAAhF,EAAqFtjF,CAAC,CAACu2B,GAAF,GAAMt2B,CAAC,IAAE67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBE,GAAtB,GAA0B,KAA1B,GAAgC,KAA5J;AAAmK,CAAtN;;AAC3HrnB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAesE,iCAAf,GAAiD,UAAS9mF,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAO67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeiE,iBAAf,CAAiCxmF,CAAjC,CAAP;AAA4C,SAAK67D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBC,GAAxB;AAA4BljF,OAAC,CAACu2B,GAAF,GAAM,KAAN;AAAY;;AAAM,SAAKulC,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBE,GAAxB;AAA4BnjF,OAAC,CAACu2B,GAAF,GAAM,KAAN;AAAY;;AAAM;AAAQv2B,OAAC,CAACgiE,eAAF,CAAkB,KAAlB;AAAhJ;AAA0K,CAAzO;;AAA0OlG,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeuE,iBAAf,GAAiC,YAAU,CAAE,CAA7C;;AAA8CjrB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,GAA6B,YAAU;AAAC,OAAKC,uDAAL,GAA6D,EAA7D;AAAgE,OAAKC,WAAL,GAAiB,IAAjB;AAAsB,OAAKC,4DAAL,GAAkErrB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6B3F,uCAA/F;AAAuI,CAArQ;;AAAsQvlB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BpxE,SAA7B,CAAuCkrE,+BAAvC,GAAuE,CAAC,CAAxE;;AAA0EhlB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BpxE,SAA7B,CAAuCmrE,mBAAvC,GAA2D,YAAU;AAAC,SAAO,KAAKkG,uDAAL,CAA6DzwE,QAA7D,EAAP;AAA+E,CAArJ;;AACxmBslD,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BpxE,SAA7B,CAAuCwxE,uCAAvC,GAA+E,CAAC,CAAhF;;AAAkFtrB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BpxE,SAA7B,CAAuCyxE,YAAvC,GAAoD,YAAU;AAAC,SAAOvrB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBC,GAA1B;AAA8B,CAA7F;;AAClFpnB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BpxE,SAA7B,CAAuC0xE,eAAvC,GAAuD,UAAStnF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC4tC,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BhG,MAA7B,CAAoC,IAApC,CAAN;AAAgD9yD,GAAC,GAAC4tC,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BO,iBAA7B,CAA+Cz7C,IAA/C,CAAoD5d,CAApD,CAAF;AAAyD,MAAI4hB,CAAC,GAAC5hB,CAAC,CAAC,CAAD,CAAD,IAAM,EAAZ;AAAe,SAAO4tC,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BQ,wDAA7B,CAAsFt5D,CAAC,CAAC,CAAD,CAAD,GAAK4tC,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BS,gBAA7B,CAA8C,GAA9C,EAAkDv5D,CAAC,CAAC,CAAD,CAAD,IAAM,EAAxD,EAA2DluB,CAA3D,CAAL,GAAmE87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BS,gBAA7B,CAA8C,GAA9C,EAAkD33C,CAAlD,EAAoD7vC,CAApD,CAAzJ,CAAP;AAAwN,CAArZ;;AACA67D,IAAI,CAACW,KAAL,KAAaX,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BpxE,SAA7B,CAAuCY,QAAvC,GAAgD,YAAU;AAAC,SAAM,wBAAsB,KAAKywE,uDAA3B,GAAmF,GAAzF;AAA6F,CAArK;;AAAuKnrB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BhG,MAA7B,GAAoC,UAAShhF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BU,sBAA7B,CAAoD1nF,CAApD,EAAuDwW,QAAvD,EAAP;AAAyE,CAAzH;;AACvKslD,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BU,sBAA7B,GAAoD,UAAS1nF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAvB,IAA2ChnF,CAAC,CAACvH,WAAF,KAAgBqjE,IAAI,CAACyH,IAAL,CAAUyjB,kBAArE,IAAyFhnF,CAAC,CAACmnF,4DAAF,KAAiErrB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6B3F,uCAA1L,EAAkO,OAAOrhF,CAAC,CAACinF,uDAAT;AAAiEnrB,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,sDAAoD9tE,CAApD,GAAsD,YAAtD,GAAmE87D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAArF;AAAqG,SAAM,+BAAN;AAAsC,CAA9e;;AACA87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BW,gBAA7B,GAA8C,UAAS3nF,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACknF,WAAF,GAAclnF,CAAC,CAACknF,WAAhB,GAA4BprB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BhG,MAA7B,CAAoChhF,CAApC,CAAnC;AAA0E,CAApI;;AACA87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BxvE,MAA7B,GAAoC,UAASxX,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC4tC,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAN;AAAkC,MAAG,CAAC87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BY,SAA7B,CAAuCxoE,IAAvC,CAA4C8O,CAA5C,CAAJ,EAAmD,MAAM9vB,KAAK,CAAC,wCAAsC8vB,CAAvC,CAAX;AAAqDluB,GAAC,GAACkuB,CAAC,CAAChV,OAAF,CAAU4iD,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6Ba,cAAvC,EAAsD,UAAS7nF,CAAT,EAAWkjB,CAAX,EAAa;AAAC,QAAG,CAAC1mB,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCxW,CAArC,EAAuCijB,CAAvC,CAAJ,EAA8C,MAAM9kB,KAAK,CAAC,oBAAkB8kB,CAAlB,GAAoB,wBAApB,GAA6CgL,CAA7C,GAA+C,+CAA/C,GAA+F1mB,IAAI,CAACC,SAAL,CAAexH,CAAf,CAAhG,CAAX;AAA8HD,KAAC,GAACC,CAAC,CAACijB,CAAD,CAAH;AAAO,WAAOljB,CAAC,YAAY87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAzB,GAA+B3kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAA/B,GAC5bg9B,kBAAkB,CAACI,MAAM,CAACp9B,CAAD,CAAP,CADma;AACvZ,GADgK,CAAF;AAC5J,SAAO87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BQ,wDAA7B,CAAsFxnF,CAAtF,CAAP;AAAgG,CADhI;;AACiI87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6Ba,cAA7B,GAA4C,WAA5C;AAAwD/rB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BY,SAA7B,GAAuC,oFAAvC;AAA4H9rB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BO,iBAA7B,GAA+C,gCAA/C;;AACrTzrB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6Bc,gBAA7B,GAA8C,UAAS9nF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,SAAOgsB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BxvE,MAA7B,CAAoCxX,CAApC,EAAsCC,CAAtC,EAAyCqnF,eAAzC,CAAyDp5D,CAAzD,EAA2D4hB,CAA3D,CAAP;AAAqE,CAArI;;AAAsIgsB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6B1F,YAA7B,GAA0C,UAASthF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BQ,wDAA7B,CAAsF1rB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAtF,CAAP;AAA0H,CAAhL;;AAAiL87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6Be,aAA7B,GAA2C,UAAS/nF,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACluB,CAAC,CAACJ,MAArB,EAA4BsuB,CAAC,EAA7B,EAAgCjuB,CAAC,IAAE67D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAC,CAACkuB,CAAD,CAA1B,CAAH;;AAAkC,SAAO4tC,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BQ,wDAA7B,CAAsFvnF,CAAtF,CAAP;AAAgG,CAAzN;;AACvT67D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6B3F,uCAA7B,GAAqE,EAArE;;AACAvlB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BQ,wDAA7B,GAAsF,UAASxnF,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAI67D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAd,EAAN;AAAuC/mF,GAAC,CAACgnF,uDAAF,GAA0DnrB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,GAA4DzkB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,CAA4DvX,eAA5D,CAA4EhpE,CAA5E,CAA5D,GAA2IA,CAArM;AAAuM87D,MAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,KAA8DtgF,CAAC,CAACinF,WAAF,GAAcprB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,CAA4DhW,SAA5D,CAAsEvqE,CAAtE,CAA5E;AAAsJ,SAAOC,CAAP;AAAS,CAA/e;;AACA67D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BS,gBAA7B,GAA8C,UAASznF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAG,QAAMA,CAAT,EAAW,OAAOjuB,CAAP;AAAS,MAAG67D,IAAI,CAAC9jD,QAAL,CAAckW,CAAd,CAAH,EAAoB,OAAOA,CAAC,GAACluB,CAAC,GAACg9B,kBAAkB,CAAC9O,CAAD,CAArB,GAAyB,EAAjC;;AAAoC,OAAI,IAAI4hB,CAAR,IAAa5hB,CAAb,EAAe;AAAC,QAAIhL,CAAC,GAACgL,CAAC,CAAC4hB,CAAD,CAAP;AAAW5sB,KAAC,GAAC44C,IAAI,CAAC56D,OAAL,CAAagiB,CAAb,IAAgBA,CAAhB,GAAkB,CAACA,CAAD,CAApB;;AAAwB,SAAI,IAAIujB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACvjB,CAAC,CAACtjB,MAAhB,EAAuB6mC,CAAC,EAAxB,EAA2B;AAAC,UAAIvL,CAAC,GAAChY,CAAC,CAACujB,CAAD,CAAP;AAAW,cAAMvL,CAAN,KAAUj7B,CAAC,KAAGA,CAAC,GAACD,CAAL,CAAD,EAASC,CAAC,IAAE,CAACA,CAAC,CAACL,MAAF,GAASI,CAAC,CAACJ,MAAX,GAAkB,GAAlB,GAAsB,EAAvB,IAA2Bo9B,kBAAkB,CAAC8S,CAAD,CAA7C,GAAiD,GAAjD,GAAqD9S,kBAAkB,CAACI,MAAM,CAAClC,CAAD,CAAP,CAA7F;AAA0G;AAAC;;AAAA,SAAOj7B,CAAP;AAAS,CAAxV;;AAAyV67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,GAAqB,EAArB;;AAAwBlsB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBC,UAArB,GAAgC,UAASjoF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO,KAAGD,CAAC,CAACo9D,WAAF,CAAcn9D,CAAd,EAAgB,CAAhB,CAAV;AAA6B,CAA3E;;AAA4E67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBE,QAArB,GAA8B,UAASloF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACluB,CAAC,CAACJ,MAAF,GAASK,CAAC,CAACL,MAAjB;AAAwB,SAAO,KAAGsuB,CAAH,IAAMluB,CAAC,CAAC4H,OAAF,CAAU3H,CAAV,EAAYiuB,CAAZ,KAAgBA,CAA7B;AAA+B,CAAnG;;AAAoG4tC,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBG,yBAArB,GAA+C,UAASnoF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO,KAAG67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBI,sBAArB,CAA4CnoF,CAA5C,EAA8CD,CAAC,CAACkY,MAAF,CAAS,CAAT,EAAWjY,CAAC,CAACL,MAAb,CAA9C,CAAV;AAA8E,CAA3I;;AAA4Ik8D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBK,uBAArB,GAA6C,UAASroF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO,KAAG67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBI,sBAArB,CAA4CnoF,CAA5C,EAA8CD,CAAC,CAACkY,MAAF,CAASlY,CAAC,CAACJ,MAAF,GAASK,CAAC,CAACL,MAApB,EAA2BK,CAAC,CAACL,MAA7B,CAA9C,CAAV;AAA8F,CAAzJ;;AAC7qBk8D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBM,qBAArB,GAA2C,UAAStoF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,CAACi6B,WAAF,MAAiBh6B,CAAC,CAACg6B,WAAF,EAAxB;AAAwC,CAAjG;;AAAkG6hC,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBO,mBAArB,GAAyC,UAASvoF,CAAT,EAAW;AAAC,SAAM,cAAcof,IAAd,CAAmBpf,CAAnB,CAAN;AAA4B,CAAjF;;AAAkF87D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBvmD,IAArB,GAA0Bq6B,IAAI,CAACa,YAAL,IAAmBv/B,MAAM,CAACxnB,SAAP,CAAiB6rB,IAApC,GAAyC,UAASzhC,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACyhC,IAAF,EAAP;AAAgB,CAArE,GAAsE,UAASzhC,CAAT,EAAW;AAAC,SAAM,iCAAiC8rC,IAAjC,CAAsC9rC,CAAtC,EAAyC,CAAzC,CAAN;AAAkD,CAA9J;;AAA+J87D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBI,sBAArB,GAA4C,UAASpoF,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAACo9B,MAAM,CAACp9B,CAAD,CAAN,CAAUi6B,WAAV,EAAF;AAA0Bh6B,GAAC,GAACm9B,MAAM,CAACn9B,CAAD,CAAN,CAAUg6B,WAAV,EAAF;AAA0B,SAAOj6B,CAAC,GAACC,CAAF,GAAI,CAAC,CAAL,GAAOD,CAAC,IAAEC,CAAH,GAAK,CAAL,GAAO,CAArB;AAAuB,CAArI;;AACnV67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBQ,WAArB,GAAiC,UAASxoF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,CAACkZ,OAAF,CAAU,eAAV,EAA0BjZ,CAAC,GAAC,QAAD,GAAU,MAArC,CAAP;AAAoD,CAAnG;;AACA67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBS,UAArB,GAAgC,UAASzoF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAGA,CAAH,EAAKD,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBU,OAA/B,EAAuC,OAAvC,EAAgDxvE,OAAhD,CAAwD4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBW,MAA7E,EAAoF,MAApF,EAA4FzvE,OAA5F,CAAoG4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBY,MAAzH,EAAgI,MAAhI,EAAwI1vE,OAAxI,CAAgJ4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBa,QAArK,EAA8K,QAA9K,EAAwL3vE,OAAxL,CAAgM4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBc,gBAArN,EAAsO,OAAtO,EAA+O5vE,OAA/O,CAAuP4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBe,QAA5Q,EAAqR,MAArR,CAAF,CAAL,KAAwS;AAAC,QAAG,CAACjtB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBgB,OAArB,CAA6B5pE,IAA7B,CAAkCpf,CAAlC,CAAJ,EAAyC,OAAOA,CAAP;AAAS,KAAC,CAAD,IAAIA,CAAC,CAAC4H,OAAF,CAAU,GAAV,CAAJ,KAAqB5H,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBU,OAA/B,EAAuC,OAAvC,CAAvB;AAAwE,KAAC,CAAD,IAAI1oF,CAAC,CAAC4H,OAAF,CAAU,GAAV,CAAJ,KAAqB5H,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBW,MAA/B,EACxe,MADwe,CAAvB;AACxc,KAAC,CAAD,IAAI3oF,CAAC,CAAC4H,OAAF,CAAU,GAAV,CAAJ,KAAqB5H,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBY,MAA/B,EAAsC,MAAtC,CAAvB;AAAsE,KAAC,CAAD,IAAI5oF,CAAC,CAAC4H,OAAF,CAAU,GAAV,CAAJ,KAAqB5H,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBa,QAA/B,EAAwC,QAAxC,CAAvB;AAA0E,KAAC,CAAD,IAAI7oF,CAAC,CAAC4H,OAAF,CAAU,GAAV,CAAJ,KAAqB5H,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBc,gBAA/B,EAAgD,OAAhD,CAAvB;AAAiF,KAAC,CAAD,IAAI9oF,CAAC,CAAC4H,OAAF,CAAU,MAAV,CAAJ,KAAwB5H,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBe,QAA/B,EAAwC,MAAxC,CAA1B;AAA2E;AAAA,SAAO/oF,CAAP;AAAS,CAD9T;;AAC+T87D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBU,OAArB,GAA6B,IAA7B;AAAkC5sB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBW,MAArB,GAA4B,IAA5B;AAAiC7sB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBY,MAArB,GAA4B,IAA5B;AAAiC9sB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBa,QAArB,GAA8B,IAA9B;AAAmC/sB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBc,gBAArB,GAAsC,IAAtC;AACtchtB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBe,QAArB,GAA8B,OAA9B;AAAsCjtB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBgB,OAArB,GAA6B,aAA7B;;AAA2CltB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBiB,gBAArB,GAAsC,UAASjpF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBQ,WAArB,CAAiCxoF,CAAC,CAACkZ,OAAF,CAAU,KAAV,EAAgB,SAAhB,CAAjC,EAA4DjZ,CAA5D,CAAP;AAAsE,CAA1H;;AAA2H67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBrd,QAArB,GAA8B,UAAS3qE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAM,CAAC,CAAD,IAAID,CAAC,CAAC4H,OAAF,CAAU3H,CAAV,CAAV;AAAuB,CAAnE;;AAAoE67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBkB,uBAArB,GAA6C,UAASlpF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBrd,QAArB,CAA8B3qE,CAAC,CAACi6B,WAAF,EAA9B,EAA8Ch6B,CAAC,CAACg6B,WAAF,EAA9C,CAAP;AAAsE,CAAjI;;AAChR6hC,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBmB,eAArB,GAAqC,UAASnpF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,CAAN;AAAQluB,GAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBvmD,IAArB,CAA0BrE,MAAM,CAACp9B,CAAD,CAAhC,EAAqCia,KAArC,CAA2C,GAA3C,CAAF;AAAkDha,GAAC,GAAC67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBvmD,IAArB,CAA0BrE,MAAM,CAACn9B,CAAD,CAAhC,EAAqCga,KAArC,CAA2C,GAA3C,CAAF;;AAAkD,OAAI,IAAI61B,CAAC,GAACznC,IAAI,CAACge,GAAL,CAASrmB,CAAC,CAACJ,MAAX,EAAkBK,CAAC,CAACL,MAApB,CAAN,EAAkCsjB,CAAC,GAAC,CAAxC,EAA0C,KAAGgL,CAAH,IAAMhL,CAAC,GAAC4sB,CAAlD,EAAoD5sB,CAAC,EAArD,EAAwD;AAAC,QAAIujB,CAAC,GAACzmC,CAAC,CAACkjB,CAAD,CAAD,IAAM,EAAZ;AAAA,QAAegY,CAAC,GAACj7B,CAAC,CAACijB,CAAD,CAAD,IAAM,EAAvB;;AAA0B,OAAE;AAACujB,OAAC,GAAC,iBAAiBqF,IAAjB,CAAsBrF,CAAtB,KAA0B,CAAC,EAAD,EAAI,EAAJ,EAAO,EAAP,EAAU,EAAV,CAA5B;AAA0CvL,OAAC,GAAC,iBAAiB4Q,IAAjB,CAAsB5Q,CAAtB,KAA0B,CAAC,EAAD,EAAI,EAAJ,EAAO,EAAP,EAAU,EAAV,CAA5B;AAA0C,UAAG,KAAGuL,CAAC,CAAC,CAAD,CAAD,CAAK7mC,MAAR,IAAgB,KAAGs7B,CAAC,CAAC,CAAD,CAAD,CAAKt7B,MAA3B,EAAkC;AAAMsuB,OAAC,GAAC,KAAGuY,CAAC,CAAC,CAAD,CAAD,CAAK7mC,MAAR,GAAe,CAAf,GAAiBoa,QAAQ,CAACysB,CAAC,CAAC,CAAD,CAAF,EAAM,EAAN,CAA3B;AAAqC,UAAIkK,CAAC,GAAC,KAAGzV,CAAC,CAAC,CAAD,CAAD,CAAKt7B,MAAR,GAAe,CAAf,GAAiBoa,QAAQ,CAACkhB,CAAC,CAAC,CAAD,CAAF,EAAM,EAAN,CAA/B;AAAyChN,OAAC,GAAC4tC,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBoB,gBAArB,CAAsCl7D,CAAtC,EAAwCyiB,CAAxC,KAA4CmrB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBoB,gBAArB,CAAsC,KACnhB3iD,CAAC,CAAC,CAAD,CAAD,CAAK7mC,MADwe,EACje,KAAGs7B,CAAC,CAAC,CAAD,CAAD,CAAKt7B,MADyd,CAA5C,IACpak8D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBoB,gBAArB,CAAsC3iD,CAAC,CAAC,CAAD,CAAvC,EAA2CvL,CAAC,CAAC,CAAD,CAA5C,CADka;AACjXuL,OAAC,GAACA,CAAC,CAAC,CAAD,CAAH;AAAOvL,OAAC,GAACA,CAAC,CAAC,CAAD,CAAH;AAAO,KADsJ,QAChJ,KAAGhN,CAD6I;AAC1I;;AAAA,SAAOA,CAAP;AAAS,CADjH;;AACkH4tC,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBoB,gBAArB,GAAsC,UAASppF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,GAACC,CAAF,GAAI,CAAC,CAAL,GAAOD,CAAC,GAACC,CAAF,GAAI,CAAJ,GAAM,CAApB;AAAsB,CAA1E;;AAA2E67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,GAAkB,YAAU;AAAC,OAAKC,4CAAL,GAAkD,EAAlD;AAAqD,OAAKC,gDAAL,GAAsDztB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBhI,uCAAxE;AAAgH,CAAlM;;AAAmMvlB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAAlB,GAAmC,yBAAnC;AAA6D1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzzE,SAAlB,CAA4BkrE,+BAA5B,GAA4D,CAAC,CAA7D;;AAA+DhlB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzzE,SAAlB,CAA4BmrE,mBAA5B,GAAgD,YAAU;AAAC,SAAO,KAAKuI,4CAAL,CAAkD9yE,QAAlD,EAAP;AAAoE,CAA/H;;AAC5fslD,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzzE,SAAlB,CAA4BwxE,uCAA5B,GAAoE,CAAC,CAArE;;AAAuEtrB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzzE,SAAlB,CAA4ByxE,YAA5B,GAAyC,YAAU;AAAC,SAAOvrB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBC,GAA1B;AAA8B,CAAlF;;AAAmFpnB,IAAI,CAACW,KAAL,KAAaX,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzzE,SAAlB,CAA4BY,QAA5B,GAAqC,YAAU;AAAC,SAAM,aAAW,KAAK8yE,4CAAhB,GAA6D,GAAnE;AAAuE,CAApI;;AAAsIxtB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBrI,MAAlB,GAAyB,UAAShhF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC3nF,CAAnC,EAAsCwW,QAAtC,EAAP;AAAwD,CAA7F;;AAChSslD,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,GAAmC,UAAS3nF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,IAAgCrpF,CAAC,CAACvH,WAAF,KAAgBqjE,IAAI,CAACyH,IAAL,CAAU8lB,OAA1D,IAAmErpF,CAAC,CAACupF,gDAAF,KAAqDztB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBhI,uCAA7I,EAAqL,OAAOrhF,CAAC,CAACspF,4CAAT;AAAsDxtB,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,2CAAyC9tE,CAAzC,GAA2C,YAA3C,GAAwD87D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAA1E;AAA0F,SAAM,oBAAN;AAA2B,CAA/Y;;AAAgZ87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB/H,YAAlB,GAA+B,UAASthF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgE3tB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAhE,CAAP;AAAoG,CAA/I;;AAChZ87D,IAAI,CAACyH,IAAL,CAAUmmB,uBAAV,GAAkC,uNAAlC;;AAA0P5tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBM,cAAlB,GAAiC,UAAS3pF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAUmmB,uBAAV,CAAkCtqE,IAAlC,CAAuCpf,CAAvC,CAAP;AAAiD,CAA9F;;AAA+F87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBO,QAAlB,GAA2B,UAAS5pF,CAAT,EAAW;AAACA,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUmmB,uBAAV,CAAkCtqE,IAAlC,CAAuCpf,CAAC,CAAC+V,IAAzC,IAA+C+lD,IAAI,CAAClgD,EAAL,CAAQimE,GAAR,CAAYC,eAAZ,CAA4B9hF,CAA5B,CAA/C,GAA8E87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAAlG;AAAmH,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAApO;;AACzV87D,IAAI,CAACyH,IAAL,CAAUsmB,iBAAV,GAA4B,uCAA5B;;AAAoE/tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBS,WAAlB,GAA8B,UAAS9pF,CAAT,EAAW;AAACA,GAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU,YAAV,EAAuB,EAAvB,CAAF;AAA6B,MAAIjZ,CAAC,GAACD,CAAC,CAAC+Y,KAAF,CAAQ+iD,IAAI,CAACyH,IAAL,CAAUsmB,iBAAlB,CAAN;AAA2C5pF,GAAC,GAACA,CAAC,IAAE67D,IAAI,CAACyH,IAAL,CAAUmmB,uBAAV,CAAkCtqE,IAAlC,CAAuCnf,CAAC,CAAC,CAAD,CAAxC,CAAL;AAAkD,SAAO67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgExpF,CAAC,GAACD,CAAD,GAAG87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAAtF,CAAP;AAA+G,CAAnR;;AAAoR1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBU,UAAlB,GAA6B,UAAS/pF,CAAT,EAAW;AAAC87D,MAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBG,yBAArB,CAA+CnoF,CAA/C,EAAiD,MAAjD,MAA2DA,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAA/E;AAAiG,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAApN;;AACxV87D,IAAI,CAACyH,IAAL,CAAUymB,gBAAV,GAA2B,uEAA3B;;AAAmGluB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBY,UAAlB,GAA6B,UAASjqF,CAAT,EAAW;AAAC87D,MAAI,CAACyH,IAAL,CAAUymB,gBAAV,CAA2B5qE,IAA3B,CAAgC8d,kBAAkB,CAACl9B,CAAD,CAAlD,MAAyDA,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAA7E;AAA+F,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAAlN;;AAAmN87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBa,wBAAlB,GAA2C,UAASlqF,CAAT,EAAW;AAAC87D,MAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBG,yBAArB,CAA+CnoF,CAA/C,EAAiD,sBAAjD,MAA2EA,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAA/F;AAAiH,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAAlP;;AACtT87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBc,eAAlB,GAAkC,UAASnqF,CAAT,EAAW;AAAC87D,MAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBG,yBAArB,CAA+CnoF,CAA/C,EAAiD,iBAAjD,MAAsEA,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAA1F;AAA4G,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAApO;;AAAqO87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBe,UAAlB,GAA6B,UAASpqF,CAAT,EAAW;AAAC87D,MAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBG,yBAArB,CAA+CnoF,CAA/C,EAAiD,MAAjD,KAA0D87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBgB,kBAAlB,CAAqCrqF,CAArC,CAA1D,KAAoGA,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAAxH;AAA0I,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAA7P;;AACrO87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBgB,kBAAlB,GAAqC,UAASrqF,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACD,CAAC,CAAC4H,OAAF,CAAU,GAAV,CAAN;AAAqB,MAAE3H,CAAF,KAAMD,CAAC,GAACA,CAAC,CAAC88C,SAAF,CAAY,CAAZ,EAAc78C,CAAd,CAAR;AAA0BA,GAAC,GAACD,CAAC,CAAC+Y,KAAF,CAAQ,aAAR,CAAF;AAAyB,MAAG,CAAC9Y,CAAJ,EAAM,OAAM,CAAC,CAAP;AAAS,MAAG,IAAEA,CAAC,CAACL,MAAP,EAAc,OAAM,CAAC,CAAP;AAASI,GAAC,GAACA,CAAC,CAAC+Y,KAAF,CAAQ,kBAAR,EAA4B,CAA5B,CAAF;AAAiC,MAAG,CAAC/Y,CAAJ,EAAM,OAAM,CAAC,CAAP;;AAAS,MAAG;AAACk9B,sBAAkB,CAACl9B,CAAD,CAAlB;AAAsB,GAA1B,CAA0B,OAAMkuB,CAAN,EAAQ;AAAC,WAAM,CAAC,CAAP;AAAS;;AAAA,SAAM,qCAAqC9O,IAArC,CAA0Cpf,CAA1C,CAAN;AAAmD,CAA9S;;AAA+S87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBiB,UAAlB,GAA6B,UAAStqF,CAAT,EAAW;AAAC87D,MAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBG,yBAArB,CAA+CnoF,CAA/C,EAAiD,QAAjD,MAA6DA,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAAjF;AAAmG,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAAtN;;AAC/S87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBkB,0BAAlB,GAA6C,UAASvqF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBmB,qBAAlB,CAAwC,kCAAxC,EAA2ExqF,CAA3E,EAA6EC,CAA7E,CAAP;AAAuF,CAAlJ;;AAAmJ67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBoB,2BAAlB,GAA8C,UAASzqF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBmB,qBAAlB,CAAwC,+BAAxC,EAAwExqF,CAAxE,EAA0EC,CAA1E,CAAP;AAAoF,CAAhJ;;AAAiJ67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBqB,wBAAlB,GAA2C,UAAS1qF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBmB,qBAAlB,CAAwC,sCAAxC,EAA+ExqF,CAA/E,EAAiFC,CAAjF,CAAP;AAA2F,CAApJ;;AACpS67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBmB,qBAAlB,GAAwC,UAASxqF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,GAACluB,CAAC,GAACA,CAAC,CAAC8rC,IAAF,CAAO7rC,CAAP,CAAH,KAAeD,CAAC,GAACA,CAAC,CAAC,CAAD,CAAH,EAAO,CAAC,CAAD,IAAI,CAACkuB,CAAC,YAAY4tC,IAAI,CAAC/yB,MAAL,CAAY03C,KAAzB,GAA+B,CAAC3kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyB9yD,CAAzB,CAAD,CAA/B,GAA6DA,CAAC,CAACvxB,GAAF,CAAM,UAASqD,CAAT,EAAW;AAAC,WAAO87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAP;AAAmC,GAArD,CAA9D,EAAsH4H,OAAtH,CAA8H5H,CAA9H,CAAJ,KAAuIC,CAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAA3J,CAAtB,IAAoMvpF,CAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAAxN;AAAyO,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgExpF,CAAhE,CAAP;AAA0E,CAA3W;;AAA4W67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBsB,sBAAlB,GAAyC,UAAS3qF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgE3tB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BhG,MAA7B,CAAoChhF,CAApC,CAAhE,CAAP;AAA+G,CAApK;;AAC5W87D,IAAI,CAACyH,IAAL,CAAUqnB,iBAAV,GAA4B,kDAA5B;AAA+E9uB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBwB,gBAAlB,GAAmC/uB,IAAI,CAACyH,IAAL,CAAUqnB,iBAA7C;;AAA+D9uB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzsE,QAAlB,GAA2B,UAAS5c,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAU8lB,OAA1B,EAAkC,OAAOrpF,CAAP;AAASA,GAAC,GAAC,YAAU,OAAOA,CAAjB,IAAoBA,CAAC,CAAC8gF,+BAAtB,GAAsD9gF,CAAC,CAAC+gF,mBAAF,EAAtD,GAA8E3jD,MAAM,CAACp9B,CAAD,CAAtF;AAA0F87D,MAAI,CAACyH,IAAL,CAAUqnB,iBAAV,CAA4BxrE,IAA5B,CAAiCpf,CAAjC,MAAsCA,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAA1D;AAA4E,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAAlU;;AAC9I87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,GAA0C,UAAS9qF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAGD,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAU8lB,OAA1B,EAAkC,OAAOrpF,CAAP;AAASA,GAAC,GAAC,YAAU,OAAOA,CAAjB,IAAoBA,CAAC,CAAC8gF,+BAAtB,GAAsD9gF,CAAC,CAAC+gF,mBAAF,EAAtD,GAA8E3jD,MAAM,CAACp9B,CAAD,CAAtF;AAA0F,MAAGC,CAAC,IAAE,UAAUmf,IAAV,CAAepf,CAAf,CAAH,KAAuBC,CAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBS,WAAlB,CAA8B9pF,CAA9B,CAAF,EAAmCC,CAAC,CAAC8gF,mBAAF,MAAyB/gF,CAAnF,CAAH,EAAyF,OAAOC,CAAP;AAAS67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB9R,IAAI,CAACyH,IAAL,CAAUqnB,iBAAV,CAA4BxrE,IAA5B,CAAiCpf,CAAjC,CAApB,EAAwD,wCAAxD,EAAiGA,CAAjG,MAAsGA,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBG,gBAA1H;AAA4I,SAAO1tB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgEzpF,CAAhE,CAAP;AAA0E,CAArf;;AACA87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBhI,uCAAlB,GAA0D,EAA1D;;AAA6DvlB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,GAAgE,UAASzpF,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAI67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAd,EAAN;AAA4BppF,GAAC,CAACqpF,4CAAF,GAA+CxtB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,GAA4DzkB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,CAA4DhW,SAA5D,CAAsEvqE,CAAtE,CAA5D,GAAqIA,CAApL;AAAsL,SAAOC,CAAP;AAAS,CAAvS;;AAAwS67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB0B,WAAlB,GAA8BjvB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgE,aAAhE,CAA9B;;AAA6G3tB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,GAAoB,YAAU;AAAC,OAAKC,8CAAL,GAAoD,EAApD;AAAuD,OAAKC,kDAAL,GAAwDpvB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoB3J,uCAA5E;AAAoH,CAA1M;;AAA2MvlB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBp1E,SAApB,CAA8BkrE,+BAA9B,GAA8D,CAAC,CAA/D;AAAiEhlB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoB3J,uCAApB,GAA4D,EAA5D;;AAC9tBvlB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoB1J,YAApB,GAAiC,UAASthF,CAAT,EAAW;AAACA,GAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAF;AAA8B,MAAG,MAAIA,CAAC,CAACJ,MAAT,EAAgB,OAAOk8D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoB/J,KAA3B;AAAiCnlB,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBE,QAArB,CAA8BloF,CAA9B,EAAgC,GAAhC,CAApB,EAAyD,gDAA8CA,CAAvG;AAA0G87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBrd,QAArB,CAA8B3qE,CAA9B,EAAgC,GAAhC,CAApB,EAAyD,oFAAkFA,CAA3I;AAA8I,SAAO87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBG,+CAApB,CAAoEnrF,CAApE,CAAP;AAA8E,CAAlc;;AACA87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBp1E,SAApB,CAA8BmrE,mBAA9B,GAAkD,YAAU;AAAC,SAAO,KAAKkK,8CAAZ;AAA2D,CAAxH;;AAAyHnvB,IAAI,CAACW,KAAL,KAAaX,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBp1E,SAApB,CAA8BY,QAA9B,GAAuC,YAAU;AAAC,SAAM,eAAa,KAAKy0E,8CAAlB,GAAiE,GAAvE;AAA2E,CAA1I;;AACzHnvB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBhK,MAApB,GAA2B,UAAShhF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAUynB,SAAvB,IAAkChrF,CAAC,CAACvH,WAAF,KAAgBqjE,IAAI,CAACyH,IAAL,CAAUynB,SAA5D,IAAuEhrF,CAAC,CAACkrF,kDAAF,KAAuDpvB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoB3J,uCAArJ,EAA6L,OAAOrhF,CAAC,CAACirF,8CAAT;AAAwDnvB,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,6CAA2C9tE,CAA3C,GAA6C,YAA7C,GAA0D87D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAA5E;AAA4F,SAAM,sBAAN;AAA6B,CAArZ;;AAAsZ87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBG,+CAApB,GAAoE,UAASnrF,CAAT,EAAW;AAAC,SAAO,IAAI87D,IAAI,CAACyH,IAAL,CAAUynB,SAAd,EAAD,CAA0BpJ,qCAA1B,CAAgE5hF,CAAhE,CAAN;AAAyE,CAAzJ;;AACtZ87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBp1E,SAApB,CAA8BgsE,qCAA9B,GAAoE,UAAS5hF,CAAT,EAAW;AAAC,OAAKirF,8CAAL,GAAoDjrF,CAApD;AAAsD,SAAO,IAAP;AAAY,CAAlJ;;AAAmJ87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoB/J,KAApB,GAA0BnlB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBG,+CAApB,CAAoE,EAApE,CAA1B;AAAkGrvB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBxB,gBAApB,GAAqC,WAArC;;AACrP1tB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBlvE,MAApB,GAA2B,UAAS9b,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,EAAN;AAAA,MAASiuB,CAAT;;AAAW,OAAIA,CAAJ,IAASluB,CAAT,EAAW;AAAC,QAAG,CAAC,mBAAmBof,IAAnB,CAAwB8O,CAAxB,CAAJ,EAA+B,MAAM9vB,KAAK,CAAC,0CAAwC8vB,CAAzC,CAAX;AAAuD,QAAI4hB,CAAC,GAAC9vC,CAAC,CAACkuB,CAAD,CAAP;AAAW,YAAM4hB,CAAN,KAAUA,CAAC,GAACgsB,IAAI,CAAC56D,OAAL,CAAa4uC,CAAb,IAAgBgsB,IAAI,CAAC/zD,KAAL,CAAWpL,GAAX,CAAemzC,CAAf,EAAiBgsB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBI,sBAArC,EAA6DzwE,IAA7D,CAAkE,GAAlE,CAAhB,GAAuFmhD,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBI,sBAApB,CAA2Ct7C,CAA3C,CAAzF,EAAuI7vC,CAAC,IAAEiuB,CAAC,GAAC,GAAF,GAAM4hB,CAAN,GAAQ,GAA5J;AAAiK;;AAAA,SAAO7vC,CAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBG,+CAApB,CAAoElrF,CAApE,CAAD,GAAwE67D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoB/J,KAApG;AAA0G,CAA1a;;AACAnlB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBI,sBAApB,GAA2C,UAASprF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAU8lB,OAA1B,EAAkC,OAAM,UAAQvtB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBrI,MAAlB,CAAyBhhF,CAAzB,EAA4BkZ,OAA5B,CAAoC,IAApC,EAAyC,KAAzC,EAAgDA,OAAhD,CAAwD,QAAxD,EAAiE,MAAjE,CAAR,GAAiF,IAAvF;AAA4FlZ,GAAC,GAACA,CAAC,YAAY87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAzB,GAA+B3kB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAA/B,GAA2D87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBK,4BAApB,CAAiDjuD,MAAM,CAACp9B,CAAD,CAAvD,CAA7D;AAAyH,MAAG,QAAQof,IAAR,CAAapf,CAAb,CAAH,EAAmB,MAAM,IAAI87D,IAAI,CAACqR,OAAL,CAAaE,cAAjB,CAAgC,sCAAhC,EAAuE,CAACrtE,CAAD,CAAvE,CAAN;AAAkF,SAAOA,CAAP;AAAS,CAA5Z;;AACA87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBK,4BAApB,GAAiD,UAASrrF,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACD,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBM,aAA9B,EAA4C,IAA5C,EAAkDpyE,OAAlD,CAA0D4iD,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBM,aAA9E,EAA4F,IAA5F,EAAkGpyE,OAAlG,CAA0G4iD,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBO,OAA9H,EAAsI,KAAtI,CAAN;;AAAmJ,MAAGzvB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBQ,SAApB,CAA8BpsE,IAA9B,CAAmCnf,CAAnC,CAAH,EAAyC;AAAC,QAAG67D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBS,WAApB,CAAgCrsE,IAAhC,CAAqCpf,CAArC,CAAH,EAA2C,OAAO87D,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,2CAAyC9tE,CAA3D,GAA8D87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBxB,gBAAzF;AAA0G,QAAG,CAAC1tB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBU,kBAApB,CAAuC1rF,CAAvC,CAAJ,EAA8C,OAAO87D,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,iDACtd9tE,CADoc,GACjc87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBxB,gBADsa;AACrZ,QAAG,CAAC1tB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBW,0BAApB,CAA+C3rF,CAA/C,CAAJ,EAAsD,OAAO87D,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,kGAAgG9tE,CAAlH,GAAqH87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBxB,gBAAhJ;AAAiK,GAD/C,MACoD,OAAO1tB,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,8BAA4BhS,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBY,oBAAhD,GAAqE,8BAArE,GAAoG5rF,CAAtH,GAAyH87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBxB,gBAApJ;;AAAqK,SAAO1tB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBa,YAApB,CAAiC7rF,CAAjC,CAAP;AAA2C,CADpd;;AAEA87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBU,kBAApB,GAAuC,UAAS1rF,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,CAAC,CAAP,EAASiuB,CAAC,GAAC,CAAC,CAAZ,EAAc4hB,CAAC,GAAC,CAApB,EAAsBA,CAAC,GAAC9vC,CAAC,CAACJ,MAA1B,EAAiCkwC,CAAC,EAAlC,EAAqC;AAAC,QAAI5sB,CAAC,GAACljB,CAAC,CAACq+B,MAAF,CAASyR,CAAT,CAAN;AAAkB,WAAK5sB,CAAL,IAAQgL,CAAR,GAAUjuB,CAAC,GAAC,CAACA,CAAb,GAAe,OAAKijB,CAAL,IAAQjjB,CAAR,KAAYiuB,CAAC,GAAC,CAACA,CAAf,CAAf;AAAiC;;AAAA,SAAOjuB,CAAC,IAAEiuB,CAAV;AAAY,CAAxJ;;AAAyJ4tC,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBW,0BAApB,GAA+C,UAAS3rF,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,CAAC,CAAP,EAASiuB,CAAC,GAAC,iBAAX,EAA6B4hB,CAAC,GAAC,CAAnC,EAAqCA,CAAC,GAAC9vC,CAAC,CAACJ,MAAzC,EAAgDkwC,CAAC,EAAjD,EAAoD;AAAC,QAAI5sB,CAAC,GAACljB,CAAC,CAACq+B,MAAF,CAASyR,CAAT,CAAN;;AAAkB,QAAG,OAAK5sB,CAAR,EAAU;AAAC,UAAGjjB,CAAH,EAAK,OAAM,CAAC,CAAP;AAASA,OAAC,GAAC,CAAC,CAAH;AAAK,KAA9B,MAAmC,IAAG,OAAKijB,CAAR,EAAU;AAAC,UAAG,CAACjjB,CAAJ,EAAM,OAAM,CAAC,CAAP;AAASA,OAAC,GAAC,CAAC,CAAH;AAAK,KAA/B,MAAoC,IAAG,CAACA,CAAD,IAAI,CAACiuB,CAAC,CAAC9O,IAAF,CAAO8D,CAAP,CAAR,EAAkB,OAAM,CAAC,CAAP;AAAS;;AAAA,SAAOjjB,CAAP;AAAS,CAA7O;;AAA8O67D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBY,oBAApB,GAAyC,8BAAzC;AACvY9vB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBQ,SAApB,GAA8B,IAAIlyE,MAAJ,CAAW,MAAIwiD,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBY,oBAAxB,GAA6C,IAAxD,CAA9B;AAA4F9vB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBO,OAApB,GAA4B,kFAA5B;AAA+GzvB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBM,aAApB,GAAkC,2HAAlC;AAA8JxvB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBS,WAApB,GAAgC,MAAhC;;AACzW3vB,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBa,YAApB,GAAiC,UAAS7rF,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBO,OAA9B,EAAsC,UAASvrF,CAAT,EAAWkuB,CAAX,EAAa4hB,CAAb,EAAe5sB,CAAf,EAAiB;AAAC,QAAIjjB,CAAC,GAAC,EAAN;AAAS6vC,KAAC,GAACA,CAAC,CAAC52B,OAAF,CAAU,gBAAV,EAA2B,UAASlZ,CAAT,EAAWkuB,CAAX,EAAa4hB,CAAb,EAAe;AAAC7vC,OAAC,GAACiuB,CAAF;AAAI,aAAO4hB,CAAP;AAAS,KAAxD,CAAF;AAA4D9vC,KAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzsE,QAAlB,CAA2BkzB,CAA3B,EAA8BixC,mBAA9B,EAAF;AAAsD,WAAO7yD,CAAC,GAACjuB,CAAF,GAAID,CAAJ,GAAMC,CAAN,GAAQijB,CAAf;AAAiB,GAApM,CAAP;AAA6M,CAA1P;;AAA2P44C,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBp0D,MAApB,GAA2B,UAAS52B,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,EAAN;AAAA,MAASiuB,CAAC,GAAC,UAASluB,CAAT,EAAW;AAAC87D,QAAI,CAAC56D,OAAL,CAAalB,CAAb,IAAgB87D,IAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB9L,CAAnB,EAAqBkuB,CAArB,CAAhB,GAAwCjuB,CAAC,IAAE67D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBhK,MAApB,CAA2BhhF,CAA3B,CAA3C;AAAyE,GAAhG;;AAAiG87D,MAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmBhD,SAAnB,EAA6BolB,CAA7B;AAAgC,SAAOjuB,CAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBG,+CAApB,CAAoElrF,CAApE,CAAD,GAAwE67D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoB/J,KAApG;AAA0G,CAAlR;;AAAmRnlB,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,GAAyB,YAAU;AAAC,OAAKC,mDAAL,GAAyD,EAAzD;AAA4D,OAAKC,wDAAL,GAA8DlwB,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBzK,uCAAvF;AAA+H,CAA/N;;AAAgOvlB,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBl2E,SAAzB,CAAmCkrE,+BAAnC,GAAmE,CAAC,CAApE;AAAsEhlB,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBzK,uCAAzB,GAAiE,EAAjE;;AACpzBvlB,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBG,UAAzB,GAAoC,UAASjsF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBrd,QAArB,CAA8B3qE,CAA9B,EAAgC,GAAhC,CAAH,EAAwC,MAAM5B,KAAK,CAAC,uCAAqC4B,CAAtC,CAAX;AAAoD,MAAIkuB,CAAC,GAACluB,CAAC,CAACkZ,OAAF,CAAU,uCAAV,EAAkD,EAAlD,CAAN;AAA4D,MAAG,CAAC,qCAAqCkG,IAArC,CAA0C8O,CAA1C,CAAJ,EAAiD,MAAM9vB,KAAK,CAAC,6EAA2E4B,CAA5E,CAAX;AAA0F,MAAG,CAAC87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBI,oBAAzB,CAA8Ch+D,CAA9C,CAAJ,EAAqD,MAAM9vB,KAAK,CAAC,kDAAgD4B,CAAjD,CAAX;AAA+DC,GAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAUynB,SAAvB,KAAmC/qF,CAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBlvE,MAApB,CAA2B7b,CAA3B,CAArC;AACzcD,GAAC,GAACA,CAAC,GAAC,GAAF,GAAM87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBhK,MAApB,CAA2B/gF,CAA3B,EAA8BiZ,OAA9B,CAAsC,IAAtC,EAA2C,OAA3C,CAAN,GAA0D,GAA5D;AAAgE,SAAO4iD,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBK,oDAAzB,CAA8EnsF,CAA9E,CAAP;AAAwF,CADxJ;;AACyJ87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBI,oBAAzB,GAA8C,UAASlsF,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC;AAAC,SAAI,GAAL;AAAS,SAAI;AAAb,GAAN,EAAwBiuB,CAAC,GAAC,EAA1B,EAA6B4hB,CAAC,GAAC,CAAnC,EAAqCA,CAAC,GAAC9vC,CAAC,CAACJ,MAAzC,EAAgDkwC,CAAC,EAAjD,EAAoD;AAAC,QAAI5sB,CAAC,GAACljB,CAAC,CAAC8vC,CAAD,CAAP;AAAW,QAAG7vC,CAAC,CAACijB,CAAD,CAAJ,EAAQgL,CAAC,CAACzvB,IAAF,CAAOwB,CAAC,CAACijB,CAAD,CAAR,EAAR,KAA0B,IAAG44C,IAAI,CAACp3D,MAAL,CAAYimE,QAAZ,CAAqB1qE,CAArB,EAAuBijB,CAAvB,KAA2BgL,CAAC,CAAC1tB,GAAF,MAAS0iB,CAAvC,EAAyC,OAAM,CAAC,CAAP;AAAS;;AAAA,SAAO,KAAGgL,CAAC,CAACtuB,MAAZ;AAAmB,CAAzN;;AACzJk8D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBl1D,MAAzB,GAAgC,UAAS52B,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,EAAN;AAAA,MAASiuB,CAAC,GAAC,UAASluB,CAAT,EAAW;AAAC87D,QAAI,CAAC56D,OAAL,CAAalB,CAAb,IAAgB87D,IAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB9L,CAAnB,EAAqBkuB,CAArB,CAAhB,GAAwCjuB,CAAC,IAAE67D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyB9K,MAAzB,CAAgChhF,CAAhC,CAA3C;AAA8E,GAArG;;AAAsG87D,MAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmBhD,SAAnB,EAA6BolB,CAA7B;AAAgC,SAAO4tC,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBK,oDAAzB,CAA8ElsF,CAA9E,CAAP;AAAwF,CAA1Q;;AACA67D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBxK,YAAzB,GAAsC,UAASthF,CAAT,EAAW;AAACA,GAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAF;AAA8B,MAAG,MAAIA,CAAC,CAACJ,MAAT,EAAgB,OAAOk8D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyB7K,KAAhC;AAAsCnlB,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBrd,QAArB,CAA8B3qE,CAA9B,EAAgC,GAAhC,CAArB,EAA0D,oDAAkDA,CAA5G;AAA+G,SAAO87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBK,oDAAzB,CAA8EnsF,CAA9E,CAAP;AAAwF,CAA7U;;AAA8U87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBl2E,SAAzB,CAAmCmrE,mBAAnC,GAAuD,YAAU;AAAC,SAAO,KAAKgL,mDAAZ;AAAgE,CAAlI;;AAC9UjwB,IAAI,CAACW,KAAL,KAAaX,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBl2E,SAAzB,CAAmCY,QAAnC,GAA4C,YAAU;AAAC,SAAM,oBAAkB,KAAKu1E,mDAAvB,GAA2E,GAAjF;AAAqF,CAAzJ;;AACAjwB,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyB9K,MAAzB,GAAgC,UAAShhF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAvB,IAAuC9rF,CAAC,CAACvH,WAAF,KAAgBqjE,IAAI,CAACyH,IAAL,CAAUuoB,cAAjE,IAAiF9rF,CAAC,CAACgsF,wDAAF,KAA6DlwB,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBzK,uCAA1K,EAAkN,OAAOrhF,CAAC,CAAC+rF,mDAAT;AAA6DjwB,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,kDAAgD9tE,CAAhD,GAAkD,YAAlD,GAA+D87D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAjF;AAAiG,SAAM,2BAAN;AAAkC,CAA9b;;AACA87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBK,oDAAzB,GAA8E,UAASnsF,CAAT,EAAW;AAAC,SAAO,IAAI87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAd,EAAD,CAA+BlK,qCAA/B,CAAqE5hF,CAArE,CAAN;AAA8E,CAAxK;;AAAyK87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBl2E,SAAzB,CAAmCgsE,qCAAnC,GAAyE,UAAS5hF,CAAT,EAAW;AAAC,OAAK+rF,mDAAL,GAAyD/rF,CAAzD;AAA2D,SAAO,IAAP;AAAY,CAA5J;;AAA6J87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyB7K,KAAzB,GAA+BnlB,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBK,oDAAzB,CAA8E,EAA9E,CAA/B;AAAiHrwB,IAAI,CAACswB,IAAL,GAAU,EAAV;AAAatwB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,GAAoB,EAApB;AAAuBxJ,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,GAAyB,EAAzB;;AAA4BvwB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBC,yBAAzB,GAAmD,YAAU;AAAC,MAAItsF,CAAC,GAAC87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBE,aAAzB,EAAN;AAA+C,SAAOvsF,CAAC,KAAGA,CAAC,GAACA,CAAC,CAACslE,SAAP,CAAD,GAAmBtlE,CAAnB,GAAqB,EAA5B;AAA+B,CAA5I;;AAA6I87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBE,aAAzB,GAAuC,YAAU;AAAC,SAAOzwB,IAAI,CAAC1gC,MAAL,CAAYiqC,SAAnB;AAA6B,CAA/E;;AAAgFvJ,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBG,UAAzB,GAAoC1wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBC,yBAAzB,EAApC;;AAAyFxwB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBI,YAAzB,GAAsC,UAASzsF,CAAT,EAAW;AAAC87D,MAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBG,UAAzB,GAAoCxsF,CAAC,IAAE87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBC,yBAAzB,EAAvC;AAA4F,CAA9I;;AAC7yBxwB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBK,YAAzB,GAAsC,YAAU;AAAC,SAAO5wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBG,UAAhC;AAA2C,CAA5F;;AAA6F1wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,GAAwC,UAAS3sF,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC67D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBK,YAAzB,EAAN;AAA8C,SAAO5wB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBrd,QAArB,CAA8B1qE,CAA9B,EAAgCD,CAAhC,CAAP;AAA0C,CAA5I;;AAA6I87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBO,wBAAzB,GAAkD,UAAS5sF,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC67D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBK,YAAzB,EAAN;AAA8C,SAAO5wB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBkB,uBAArB,CAA6CjpF,CAA7C,EAA+CD,CAA/C,CAAP;AAAyD,CAArK;;AAC1O87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBQ,oBAAzB,GAA8C,UAAS7sF,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,wCAAN,EAA+CiuB,CAAC,GAAC,EAAjD,EAAoD4hB,CAAxD,EAA0DA,CAAC,GAAC7vC,CAAC,CAAC6rC,IAAF,CAAO9rC,CAAP,CAA5D,GAAuEkuB,CAAC,CAACzvB,IAAF,CAAO,CAACqxC,CAAC,CAAC,CAAD,CAAF,EAAMA,CAAC,CAAC,CAAD,CAAP,EAAWA,CAAC,CAAC,CAAD,CAAD,IAAM,KAAK,CAAtB,CAAP;;AAAiC,SAAO5hB,CAAP;AAAS,CAA3K;;AAA4K4tC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,GAA4B,EAA5B;;AAA+BhxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BC,WAA5B,GAAwC,YAAU;AAAC,SAAOjxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,OAAxC,CAAP;AAAwD,CAA3G;;AAA4G7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BE,QAA5B,GAAqC,YAAU;AAAC,SAAOlxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,SAAxC,KAAoD7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAA3D;AAA2G,CAA3J;;AAA4J7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BG,cAA5B,GAA2C,YAAU;AAAC,SAAOnxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAAP;AAAuD,CAA7G;;AAA8G7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BI,kBAA5B,GAA+C,YAAU;AAAC,SAAOpxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAAP;AAAuD,CAAjH;;AACjkB7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BK,mBAA5B,GAAgD,YAAU;AAAC,SAAOrxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,KAAxC,CAAP;AAAsD,CAAjH;;AAAkH7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BM,aAA5B,GAA0C,YAAU;AAAC,SAAOtxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,SAAxC,KAAoD7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,OAAxC,CAA3D;AAA4G,CAAjK;;AAClH7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BO,YAA5B,GAAyC,YAAU;AAAC,SAAOvxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,QAAxC,KAAmD,EAAE7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BQ,YAA5B,MAA4CxxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BS,WAA5B,EAA5C,IAAuFzxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BC,WAA5B,EAAvF,IAAkIjxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BG,cAA5B,EAAlI,IAAgLnxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BI,kBAA5B,EAAhL,IAAkOpxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BK,mBAA5B,EAAlO,IAAqRrxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BM,aAA5B,EAArR,IAAkUtxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BU,MAA5B,EAAlU,IAAwW1xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,SAAxC,CAA1W,CAA1D;AAAwd,CAA5gB;;AACA7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BS,WAA5B,GAAwC,YAAU;AAAC,SAAOzxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,OAAxC,CAAP;AAAwD,CAA3G;;AAA4G7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BW,gBAA5B,GAA6C,YAAU;AAAC,SAAM,CAAC3xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,KAAiD7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,QAAxC,CAAlD,KAAsG,CAAC7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BO,YAA5B,EAAvG,IAAmJ,CAACvxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BQ,YAA5B,EAApJ,IAAgM,CAACxxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BS,WAA5B,EAAjM,IAA4O,CAACzxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BM,aAA5B,EAA7O,IAA0RtxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,aAAxC,CAAhS;AAAuV,CAA/Y;;AAC5G7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BQ,YAA5B,GAAyC,YAAU;AAAC,SAAM,CAACxxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,QAAxC,KAAmD7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,OAAxC,CAApD,KAAuG,CAAC7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BG,cAA5B,EAA9G;AAA2J,CAA/M;;AAAgNnxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BY,oBAA5B,GAAiD,YAAU;AAAC,SAAO5xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,SAAxC,KAAoD,EAAE7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Ba,QAA5B,MAAwC7xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Bc,SAA5B,EAAxC,IAAiF9xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Be,OAA5B,EAAjF,IAAwH/xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BU,MAA5B,EAA1H,CAA3D;AAA2N,CAAvR;;AAChN1xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Be,OAA5B,GAAoC/xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BC,WAAhE;AAA4EjxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BgB,IAA5B,GAAiChyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BE,QAA7D;AAAsElxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BiB,MAA5B,GAAmCjyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BG,cAA/D;AAA8EnxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BkB,cAA5B,GAA2ClyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BI,kBAAvE;AAA0FpxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BmB,eAA5B,GAA4CnyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BK,mBAAxE;AAA4FrxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Bc,SAA5B,GAAsC9xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BM,aAAlE;AACtZtxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BoB,QAA5B,GAAqCpyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BO,YAAjE;AAA8EvxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BqB,OAA5B,GAAoCryB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BS,WAAhE;AAA4EzxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BsB,YAA5B,GAAyCtyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BW,gBAArE;AAAsF3xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Ba,QAA5B,GAAqC7xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BQ,YAAjE;AAA8ExxB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BuB,gBAA5B,GAA6CvyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BY,oBAAzE;;AAA8F5xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BU,MAA5B,GAAmC,YAAU;AAAC,SAAO1xB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAAP;AAAuD,CAArG;;AAC5Z7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BwB,UAA5B,GAAuC,YAAU;AAAC,WAAStuF,CAAT,CAAWA,CAAX,EAAa;AAACA,KAAC,GAAC87D,IAAI,CAAC/zD,KAAL,CAAWuN,IAAX,CAAgBtV,CAAhB,EAAkB8vC,CAAlB,CAAF;AAAuB,WAAO5hB,CAAC,CAACluB,CAAD,CAAD,IAAM,EAAb;AAAgB;;AAAA,MAAIC,CAAC,GAAC67D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBK,YAAzB,EAAN;AAA8C,MAAG5wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BgB,IAA5B,EAAH,EAAsC,OAAOhyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4ByB,aAA5B,CAA0CtuF,CAA1C,CAAP;AAAoDA,GAAC,GAAC67D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBQ,oBAAzB,CAA8C5sF,CAA9C,CAAF;AAAmD,MAAIiuB,CAAC,GAAC,EAAN;AAAS4tC,MAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB7L,CAAnB,EAAqB,UAASD,CAAT,EAAW;AAACkuB,KAAC,CAACluB,CAAC,CAAC,CAAD,CAAF,CAAD,GAAQA,CAAC,CAAC,CAAD,CAAT;AAAa,GAA9C;AAAgD,MAAI8vC,CAAC,GAACgsB,IAAI,CAACuG,OAAL,CAAavG,IAAI,CAACp3D,MAAL,CAAYsmE,WAAzB,EAAqC98C,CAArC,CAAN;AAA8C,SAAO4tC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Be,OAA5B,KAAsC7tF,CAAC,CAAC,CAAC,SAAD,EAAW,OAAX,CAAD,CAAvC,GAA6D87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BiB,MAA5B,KAAqC/tF,CAAC,CAAC,CAAC,MAAD,CAAD,CAAtC,GAC7c87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BkB,cAA5B,KAA6ChuF,CAAC,CAAC,CAAC,KAAD,CAAD,CAA9C,GAAwD87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Ba,QAA5B,KAAuC3tF,CAAC,CAAC,CAAC,QAAD,EAAU,OAAV,CAAD,CAAxC,GAA6D,CAACC,CAAC,GAACA,CAAC,CAAC,CAAD,CAAJ,KAAUA,CAAC,CAAC,CAAD,CAAX,IAAgB,EADoQ;AACjQ,CADxI;;AACyI67D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4B0B,iBAA5B,GAA8C,UAASxuF,CAAT,EAAW;AAAC,SAAO,KAAG87D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBmB,eAArB,CAAqCrtB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BwB,UAA5B,EAArC,EAA8EtuF,CAA9E,CAAV;AAA2F,CAArJ;;AACzI87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4ByB,aAA5B,GAA0C,UAASvuF,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,iBAAiB6rC,IAAjB,CAAsB9rC,CAAtB,CAAN;AAA+B,MAAGC,CAAC,IAAEA,CAAC,CAAC,CAAD,CAAP,EAAW,OAAOA,CAAC,CAAC,CAAD,CAAR;AAAYA,GAAC,GAAC,EAAF;AAAK,MAAIiuB,CAAC,GAAC,kBAAkB4d,IAAlB,CAAuB9rC,CAAvB,CAAN;AAAgC,MAAGkuB,CAAC,IAAEA,CAAC,CAAC,CAAD,CAAP,EAAW,IAAGluB,CAAC,GAAC,mBAAmB8rC,IAAnB,CAAwB9rC,CAAxB,CAAF,EAA6B,SAAOkuB,CAAC,CAAC,CAAD,CAAxC;AAA4C,QAAGluB,CAAC,IAAEA,CAAC,CAAC,CAAD,CAAP,EAAW,QAAOA,CAAC,CAAC,CAAD,CAAR;AAAa,WAAK,KAAL;AAAWC,SAAC,GAAC,KAAF;AAAQ;;AAAM,WAAK,KAAL;AAAWA,SAAC,GAAC,KAAF;AAAQ;;AAAM,WAAK,KAAL;AAAWA,SAAC,GAAC,MAAF;AAAS;;AAAM,WAAK,KAAL;AAAWA,SAAC,GAAC,MAAF;AAApG,KAAX,MAA6HA,CAAC,GAAC,KAAF;AAAzK,SAAsLA,CAAC,GAACiuB,CAAC,CAAC,CAAD,CAAH;AAAO,SAAOjuB,CAAP;AAAS,CAAlW;;AAAmW67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,GAAmB,YAAU;AAAC,OAAKC,6CAAL,GAAmD,EAAnD;AAAsD,OAAKC,iDAAL,GAAuD7yB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBpN,uCAA1E;AAAkH,OAAKuN,IAAL,GAAU,IAAV;AAAe,CAArN;;AAAsN9yB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB74E,SAAnB,CAA6BwxE,uCAA7B,GAAqE,CAAC,CAAtE;;AAAwEtrB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB74E,SAAnB,CAA6ByxE,YAA7B,GAA0C,YAAU;AAAC,SAAO,KAAKuH,IAAZ;AAAiB,CAAtE;;AAAuE9yB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB74E,SAAnB,CAA6BkrE,+BAA7B,GAA6D,CAAC,CAA9D;;AAAgEhlB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB74E,SAAnB,CAA6BmrE,mBAA7B,GAAiD,YAAU;AAAC,SAAO,KAAK2N,6CAAL,CAAmDl4E,QAAnD,EAAP;AAAqE,CAAjI;;AACxwBslD,IAAI,CAACW,KAAL,KAAaX,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB74E,SAAnB,CAA6BY,QAA7B,GAAsC,YAAU;AAAC,SAAM,cAAY,KAAKk4E,6CAAjB,GAA+D,GAArE;AAAyE,CAAvI;;AAAyI5yB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBzN,MAAnB,GAA0B,UAAShhF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,CAAqC7uF,CAArC,EAAwCwW,QAAxC,EAAP;AAA0D,CAAhG;;AACzIslD,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,GAAqC,UAAS7uF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAvB,IAAiCzuF,CAAC,CAACvH,WAAF,KAAgBqjE,IAAI,CAACyH,IAAL,CAAUkrB,QAA3D,IAAqEzuF,CAAC,CAAC2uF,iDAAF,KAAsD7yB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBpN,uCAAjJ,EAAyL,OAAOrhF,CAAC,CAAC0uF,6CAAT;AAAuD5yB,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,4CAA0C9tE,CAA1C,GAA4C,YAA5C,GAAyD87D,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAA3E;AAA2F,SAAM,qBAAN;AAA4B,CAAxZ;;AACA87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBhG,UAAnB,GAA8B,UAASzoF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAUkrB,QAA1B,EAAmC,OAAOzuF,CAAP;AAAS,MAAIC,CAAC,GAAC,YAAU,OAAOD,CAAvB;AAAA,MAAyBkuB,CAAC,GAAC,IAA3B;AAAgCjuB,GAAC,IAAED,CAAC,CAAConF,uCAAL,KAA+Cl5D,CAAC,GAACluB,CAAC,CAACqnF,YAAF,EAAjD;AAAmErnF,GAAC,GAACC,CAAC,IAAED,CAAC,CAAC8gF,+BAAL,GAAqC9gF,CAAC,CAAC+gF,mBAAF,EAArC,GAA6D3jD,MAAM,CAACp9B,CAAD,CAArE;AAAyE,SAAO87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkEhzB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBS,UAArB,CAAgCzoF,CAAhC,CAAlE,EAAqGkuB,CAArG,CAAP;AAA+G,CAAjX;;AACA4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBM,4BAAnB,GAAgD,UAAS/uF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAUkrB,QAA1B,EAAmC,OAAOzuF,CAAP;AAASA,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBhG,UAAnB,CAA8BzoF,CAA9B,CAAF;AAAmC,SAAO87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkEhzB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBQ,WAArB,CAAiC1sB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBzN,MAAnB,CAA0BhhF,CAA1B,CAAjC,CAAlE,EAAiIA,CAAC,CAACqnF,YAAF,EAAjI,CAAP;AAA0J,CAArS;;AACAvrB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBO,qCAAnB,GAAyD,UAAShvF,CAAT,EAAW;AAAC,MAAGA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAUkrB,QAA1B,EAAmC,OAAOzuF,CAAP;AAASA,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBhG,UAAnB,CAA8BzoF,CAA9B,CAAF;AAAmC,SAAO87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkEhzB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBiB,gBAArB,CAAsCntB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBzN,MAAnB,CAA0BhhF,CAA1B,CAAtC,CAAlE,EAAsIA,CAAC,CAACqnF,YAAF,EAAtI,CAAP;AAA+J,CAAnT;;AAAoTvrB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB9wF,IAAnB,GAAwBm+D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBhG,UAA3C;AAAsD3sB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBQ,mBAAnB,GAAuC,iBAAvC;AAC1WnzB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBS,eAAnB,GAAmC;AAACC,QAAM,EAAC,CAAC,CAAT;AAAWC,MAAI,EAAC,CAAC,CAAjB;AAAmBnuF,MAAI,EAAC,CAAC,CAAzB;AAA2BouF,YAAU,EAAC,CAAC,CAAvC;AAAyCC,MAAI,EAAC,CAAC,CAA/C;AAAiDC,UAAQ,EAAC,CAAC,CAA3D;AAA6DC,QAAM,EAAC,CAAC,CAArE;AAAuEzqB,KAAG,EAAC,CAAC;AAA5E,CAAnC;AAAkHjJ,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBgB,sBAAnB,GAA0C;AAAC5X,QAAM,EAAC,CAAC,CAAT;AAAWK,MAAI,EAAC,CAAC,CAAjB;AAAmB6B,OAAK,EAAC,CAAC,CAA1B;AAA4BoB,QAAM,EAAC,CAAC,CAApC;AAAsCU,MAAI,EAAC,CAAC,CAA5C;AAA8CI,MAAI,EAAC,CAAC,CAApD;AAAsDG,MAAI,EAAC,CAAC,CAA5D;AAA8DK,QAAM,EAAC,CAAC,CAAtE;AAAwEc,QAAM,EAAC,CAAC,CAAhF;AAAkFQ,OAAK,EAAC,CAAC,CAAzF;AAA2FI,KAAG,EAAC,CAAC,CAAhG;AAAkGI,UAAQ,EAAC,CAAC;AAA5G,CAA1C;;AAAyJziB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB3yE,MAAnB,GAA0B,UAAS9b,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBiB,aAAnB,CAAiCtyD,MAAM,CAACp9B,CAAD,CAAvC;AAA4C,SAAO87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkB,iDAAnB,CAAqEvyD,MAAM,CAACp9B,CAAD,CAA3E,EAA+EC,CAA/E,EAAiFiuB,CAAjF,CAAP;AAA2F,CAAjL;;AAC3Q4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBiB,aAAnB,GAAiC,UAAS1vF,CAAT,EAAW;AAAC,MAAG,CAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBQ,mBAAnB,CAAuC7vE,IAAvC,CAA4Cpf,CAA5C,CAAJ,EAAmD,MAAM5B,KAAK,CAAC,uBAAqB4B,CAArB,GAAuB,IAAxB,CAAX;AAAyC,MAAGA,CAAC,CAAC6pB,WAAF,MAAkBiyC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBgB,sBAAxC,EAA+D,MAAMrxF,KAAK,CAAC,eAAa4B,CAAb,GAAe,gCAAhB,CAAX;AAA8D,CAAtQ;;AACA87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBmB,YAAnB,GAAgC,UAAS5vF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC9vC,GAAC,IAAE87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BhG,MAA7B,CAAoChhF,CAApC,CAAH;AAA0C,MAAIkjB,CAAC,GAAC,EAAN;AAASA,GAAC,CAAC6hD,GAAF,GAAM/kE,CAAC,IAAE,IAAT;AAAckjB,GAAC,CAAC2sE,MAAF,GAAS5vF,CAAC,IAAE67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBzN,MAAnB,CAA0B/gF,CAA1B,CAAZ;AAAyCD,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBqB,iBAAnB,CAAqC5sE,CAArC,EAAuC;AAAC6sE,WAAO,EAAC;AAAT,GAAvC,EAAoD7hE,CAApD,CAAF;AAAyD,SAAO4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkB,iDAAnB,CAAqE,QAArE,EAA8E3vF,CAA9E,EAAgF8vC,CAAhF,CAAP;AAA0F,CAA/S;;AACAgsB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBuB,mBAAnB,GAAuC,UAAShwF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAG,CAACgsB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBwB,mBAAnB,EAAJ,EAA6C,MAAM7xF,KAAK,CAAC,iDAAD,CAAX;AAA+D,MAAI8kB,CAAC,GAAC,EAAN;AAASA,GAAC,CAAC6hD,GAAF,GAAM/kE,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBrI,MAAlB,CAAyBllB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzsE,QAAlB,CAA2B5c,CAA3B,CAAzB,CAAD,GAAyD,IAAhE;AAAqEkjB,GAAC,CAAC2sE,MAAF,GAAS5vF,CAAC,IAAE,IAAZ;AAAiBijB,GAAC,CAAC6sE,OAAF,GAAU,EAAV;AAAa/vF,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBqB,iBAAnB,CAAqC5sE,CAArC,EAAuC,EAAvC,EAA0CgL,CAA1C,CAAF;AAA+C,SAAO4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkB,iDAAnB,CAAqE,QAArE,EAA8E3vF,CAA9E,EAAgF8vC,CAAhF,CAAP;AAA0F,CAA1Z;;AACAgsB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBwB,mBAAnB,GAAuC,YAAU;AAAC,SAAOn0B,IAAI,CAAC1gC,MAAL,CAAY80D,iBAAZ,IAA+B,aAAYp0B,IAAI,CAAC1gC,MAAL,CAAY80D,iBAAZ,CAA8Bt6E,SAAhF;AAA0F,CAA5I;;AAA6IkmD,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB0B,eAAnB,GAAmC,UAASnwF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BhG,MAA7B,CAAoChhF,CAApC;AAAuCA,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBqB,iBAAnB,CAAqC;AAAC/qB,OAAG,EAAC/kE;AAAL,GAArC,EAA6C,EAA7C,EAAgDC,CAAhD,CAAF;AAAqD,SAAO67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkB,iDAAnB,CAAqE,QAArE,EAA8E3vF,CAA9E,CAAP;AAAwF,CAArO;;AAC7I87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBtlB,YAAnB,GAAgC,UAASnpE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAR,IAAajuB,CAAb,EAAe;AAAC,QAAI6vC,CAAC,GAAC5hB,CAAC,CAAC+L,WAAF,EAAN;AAAsB,QAAG,cAAY6V,CAAZ,IAAe,SAAOA,CAAtB,IAAyB,UAAQA,CAAjC,IAAoC,UAAQA,CAA/C,EAAiD,MAAM1xC,KAAK,CAAC,iBAAe0xC,CAAf,GAAiB,aAAlB,CAAX;AAA6C;;AAAA5hB,GAAC,GAAC,EAAF;AAAKluB,GAAC,GAAC87D,IAAI,CAAC/zD,KAAL,CAAW6uB,MAAX,CAAkB52B,CAAlB,CAAF;;AAAuB,OAAI8vC,CAAC,GAAC,CAAN,EAAQA,CAAC,GAAC9vC,CAAC,CAACJ,MAAZ,EAAmBkwC,CAAC,EAApB,EAAuB5hB,CAAC,IAAE4tC,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBF,MAArB,CAA4BhhF,CAAC,CAAC8vC,CAAD,CAA7B,CAAH;;AAAqC9vC,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkE5gE,CAAlE,EAAoE4tC,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAAvF,CAAF;AAAkG,SAAOtnB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkB,iDAAnB,CAAqE,QAArE,EAA8E1vF,CAA9E,EAAgFD,CAAhF,CAAP;AAA0F,CAAtc;;AACA87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB2B,WAAnB,GAA+B,UAASpwF,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBqB,iBAAnB,CAAqC;AAAC/5E,QAAI,EAAC;AAAN,GAArC,EAAuD,EAAvD,EAA0D9V,CAA1D,CAAF;AAA+D,MAAIiuB,CAAC,GAAC,EAAN;AAASluB,GAAC,GAAC87D,IAAI,CAAC/zD,KAAL,CAAW6uB,MAAX,CAAkB52B,CAAlB,CAAF;;AAAuB,OAAI,IAAI8vC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC9vC,CAAC,CAACJ,MAAhB,EAAuBkwC,CAAC,EAAxB,EAA2B5hB,CAAC,IAAE4tC,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyB9K,MAAzB,CAAgChhF,CAAC,CAAC8vC,CAAD,CAAjC,CAAH;;AAAyC9vC,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkE5gE,CAAlE,EAAoE4tC,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAAvF,CAAF;AAAkG,SAAOtnB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkB,iDAAnB,CAAqE,OAArE,EAA6E1vF,CAA7E,EAA+ED,CAA/E,CAAP;AAAyF,CAA3Y;;AACA87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB4B,iBAAnB,GAAqC,UAASrwF,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBrI,MAAlB,CAAyBllB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzsE,QAAlB,CAA2B5c,CAA3B,CAAzB,CAAF;AAA0D,GAAC87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BgB,IAA5B,MAAoChyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BiB,MAA5B,EAArC,KAA4EjyB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBrd,QAArB,CAA8B3qE,CAA9B,EAAgC,GAAhC,CAA5E,KAAmHA,CAAC,GAAC,MAAIA,CAAC,CAACkZ,OAAF,CAAU,IAAV,EAAe,KAAf,CAAJ,GAA0B,GAA/I;AAAoJ,SAAO4iD,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkB,iDAAnB,CAAqE,MAArE,EAA4E;AAAC,kBAAa,SAAd;AAAwBnxE,WAAO,EAAC,CAACve,CAAC,IAAE,CAAJ,IAAO,QAAP,GAAgBD;AAAhD,GAA5E,CAAP;AAAuI,CAAxY;;AACA87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB6B,oBAAnB,GAAwC,UAAStwF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAGA,CAAC,YAAY4tC,IAAI,CAAC/yB,MAAL,CAAY03C,KAA5B,EAAkCvyD,CAAC,GAAC4tC,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyB9yD,CAAzB,CAAF,CAAlC,KAAqE,IAAG,WAASjuB,CAAC,CAACg6B,WAAF,EAAZ,EAA4B/L,CAAC,GAAC4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB8B,cAAnB,CAAkCriE,CAAlC,CAAF,CAA5B,KAAuE;AAAC,QAAG,OAAO9O,IAAP,CAAYnf,CAAZ,CAAH,EAAkB,MAAM7B,KAAK,CAAC,gBAAc6B,CAAd,GAAgB,uCAAhB,GAAwDiuB,CAAxD,GAA0D,UAA3D,CAAX;AAAkF,QAAGjuB,CAAC,CAACg6B,WAAF,MAAkB6hC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBS,eAAxC,EAAwD,IAAGhhE,CAAC,YAAY4tC,IAAI,CAACyH,IAAL,CAAUyjB,kBAA1B,EAA6C94D,CAAC,GAAC4tC,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BhG,MAA7B,CAAoC9yD,CAApC,CAAF,CAA7C,KAA2F,IAAGA,CAAC,YAAY4tC,IAAI,CAACyH,IAAL,CAAU8lB,OAA1B,EAAkCn7D,CAAC,GAAC4tC,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBrI,MAAlB,CAAyB9yD,CAAzB,CAAF,CAAlC,KACvb,IAAG4tC,IAAI,CAAC9jD,QAAL,CAAckW,CAAd,CAAH,EAAoBA,CAAC,GAAC4tC,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBzsE,QAAlB,CAA2BsR,CAA3B,EAA8B6yD,mBAA9B,EAAF,CAApB,KAA+E,MAAM3iF,KAAK,CAAC,gBAAc6B,CAAd,GAAgB,YAAhB,GAA6BD,CAA7B,GAA+B,qEAA/B,GAAqGkuB,CAArG,GAAuG,UAAxG,CAAX;AAAgI;AAAAA,GAAC,CAAC4yD,+BAAF,KAAoC5yD,CAAC,GAACA,CAAC,CAAC6yD,mBAAF,EAAtC;AAA+DjlB,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB9R,IAAI,CAAC9jD,QAAL,CAAckW,CAAd,KAAkB4tC,IAAI,CAACG,QAAL,CAAc/tC,CAAd,CAAtC,EAAuD,0CAAwC,OAAOA,CAA/C,GAAiD,eAAjD,GAAiEA,CAAxH;AAA2H,SAAOjuB,CAAC,GAAC,IAAF,GAAO67D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBS,UAArB,CAAgCrrD,MAAM,CAAClP,CAAD,CAAtC,CAAP,GAAkD,GAAzD;AAA6D,CAD3c;;AAEA4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB8B,cAAnB,GAAkC,UAASvwF,CAAT,EAAW;AAAC,MAAG,CAAC87D,IAAI,CAAC3jD,QAAL,CAAcnY,CAAd,CAAJ,EAAqB,MAAM5B,KAAK,CAAC,oFAAkF,OAAO4B,CAAzF,GAA2F,UAA3F,GAAsGA,CAAvG,CAAX;AAAqHA,GAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAUynB,SAAvB,KAAmChrF,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBlvE,MAApB,CAA2B9b,CAA3B,CAArC;AAAoE,SAAO87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBhK,MAApB,CAA2BhhF,CAA3B,CAAP;AAAqC,CAAjS;;AAAkS87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB+B,aAAnB,GAAiC,UAASxwF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC7vC,GAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB3yE,MAAnB,CAA0B7b,CAA1B,EAA4BiuB,CAA5B,EAA8B4hB,CAA9B,CAAF;AAAmC7vC,GAAC,CAAC2uF,IAAF,GAAO5uF,CAAP;AAAS,SAAOC,CAAP;AAAS,CAAxG;;AAClS67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB9zE,IAAnB,GAAwB,UAAS3a,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBhG,UAAnB,CAA8BzoF,CAA9B,CAAF;;AAAmC,MAAIkuB,CAAC,GAACluB,CAAC,CAACqnF,YAAF,EAAN;AAAA,MAAuBv3C,CAAC,GAAC,EAAzB;AAAA,MAA4B5sB,CAAC,GAAC,UAASljB,CAAT,EAAW;AAAC87D,QAAI,CAAC56D,OAAL,CAAalB,CAAb,IAAgB87D,IAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB9L,CAAnB,EAAqBkjB,CAArB,CAAhB,IAAyCljB,CAAC,GAAC87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBhG,UAAnB,CAA8BzoF,CAA9B,CAAF,EAAmC8vC,CAAC,CAACrxC,IAAF,CAAOq9D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBzN,MAAnB,CAA0BhhF,CAA1B,CAAP,CAAnC,EAAwEA,CAAC,GAACA,CAAC,CAACqnF,YAAF,EAA1E,EAA2Fn5D,CAAC,IAAE4tC,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAAtB,GAA8Bl1D,CAAC,GAACluB,CAAhC,GAAkCA,CAAC,IAAE87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAAtB,IAA+Bl1D,CAAC,IAAEluB,CAAlC,KAAsCkuB,CAAC,GAAC,IAAxC,CAAtK;AAAqN,GAA/P;;AAAgQ4tC,MAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB7L,CAAnB,EAAqBijB,CAArB;AAAwB,SAAO44C,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkEh/C,CAAC,CAACn1B,IAAF,CAAOmhD,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBzN,MAAnB,CAA0BhhF,CAA1B,CAAP,CAAlE,EAAuGkuB,CAAvG,CAAP;AAAiH,CAAld;;AACA4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB73D,MAAnB,GAA0B,UAAS52B,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB9zE,IAAnB,CAAwBmhD,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBxN,KAA3C,EAAiDvjF,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,CAAjD,CAAP;AAA+F,CAArI;;AAAsIgzD,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBgC,aAAnB,GAAiC,UAASzwF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB73D,MAAnB,CAA0BklC,IAAI,CAAC/zD,KAAL,CAAWnG,KAAX,CAAiBkH,SAAjB,EAA2B,CAA3B,CAA1B,CAAN;AAA+DolB,GAAC,CAAC0gE,IAAF,GAAO5uF,CAAP;AAAS,SAAOkuB,CAAP;AAAS,CAAhI;;AAAiI4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBpN,uCAAnB,GAA2D,EAA3D;;AAA8DvlB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,GAAkE,UAAS9uF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO,IAAI67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAd,EAAD,CAAyB7M,qCAAzB,CAA+D5hF,CAA/D,EAAiEC,CAAjE,CAAN;AAA0E,CAA1J;;AACrU67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB74E,SAAnB,CAA6BgsE,qCAA7B,GAAmE,UAAS5hF,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAKyuF,6CAAL,GAAmD5yB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,GAA4DzkB,IAAI,CAACyH,IAAL,CAAU+c,YAAV,CAAuBC,oCAAvB,CAA4D3X,UAA5D,CAAuE5oE,CAAvE,CAA5D,GAAsIA,CAAzL;AAA2L,OAAK4uF,IAAL,GAAU3uF,CAAV;AAAY,SAAO,IAAP;AAAY,CAApS;;AACA67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkB,iDAAnB,GAAqE,UAAS3vF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,IAAN;AAAW,MAAI5sB,CAAC,GAAC,MAAIljB,CAAJ,GAAM87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBiC,mBAAnB,CAAuC1wF,CAAvC,EAAyCC,CAAzC,CAAZ;AAAwD67D,MAAI,CAACiD,eAAL,CAAqB7wC,CAArB,IAAwB4tC,IAAI,CAAC56D,OAAL,CAAagtB,CAAb,MAAkBA,CAAC,GAAC,CAACA,CAAD,CAApB,CAAxB,GAAiDA,CAAC,GAAC,EAAnD;AAAsD4tC,MAAI,CAACuQ,GAAL,CAASiT,IAAT,CAAce,SAAd,CAAwBrgF,CAAC,CAACi6B,WAAF,EAAxB,KAA0C6hC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC1/C,CAAC,CAACtuB,MAAvB,EAA8B,eAAaI,CAAb,GAAe,2BAA7C,GAA0EkjB,CAAC,IAAE,GAAvH,KAA6H4sB,CAAC,GAACgsB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB73D,MAAnB,CAA0B1I,CAA1B,CAAF,EAA+BhL,CAAC,IAAE,MAAI44C,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBzN,MAAnB,CAA0BlxC,CAA1B,CAAJ,GAAiC,IAAjC,GAAsC9vC,CAAtC,GAAwC,GAA1E,EAA8E8vC,CAAC,GAACA,CAAC,CAACu3C,YAAF,EAA7M;AAA+N,GAACrnF,CAAC,GAACC,CAAC,IAAEA,CAAC,CAACs2B,GAAR,MAAeuZ,CAAC,GAAC,oBAAoB1wB,IAApB,CAAyBpf,CAAzB,IAA4B87D,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAA/C,GAC9b,IAD6a;AACva,SAAOtnB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkE5rE,CAAlE,EAAoE4sB,CAApE,CAAP;AAA8E,CADpF;;AACqFgsB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBiC,mBAAnB,GAAuC,UAAS1wF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,EAAN;AAAS,MAAGjuB,CAAH,EAAK,KAAI,IAAI6vC,CAAR,IAAa7vC,CAAb,EAAe;AAAC,QAAG,CAAC67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBQ,mBAAnB,CAAuC7vE,IAAvC,CAA4C0wB,CAA5C,CAAJ,EAAmD,MAAM1xC,KAAK,CAAC,6BAA2B0xC,CAA3B,GAA6B,IAA9B,CAAX;AAA+C,QAAI5sB,CAAC,GAACjjB,CAAC,CAAC6vC,CAAD,CAAP;AAAWgsB,QAAI,CAACiD,eAAL,CAAqB77C,CAArB,MAA0BgL,CAAC,IAAE,MAAI4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmB6B,oBAAnB,CAAwCtwF,CAAxC,EAA0C8vC,CAA1C,EAA4C5sB,CAA5C,CAAjC;AAAiF;AAAA,SAAOgL,CAAP;AAAS,CAA1R;;AACrF4tC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBqB,iBAAnB,GAAqC,UAAS9vF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,EAAN;AAAA,MAAS5sB,CAAT;;AAAW,OAAIA,CAAJ,IAASljB,CAAT,EAAW87D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB1qD,CAAC,CAAC+W,WAAF,MAAiB/W,CAArC,EAAuC,oBAAvC,GAA6D4sB,CAAC,CAAC5sB,CAAD,CAAD,GAAKljB,CAAC,CAACkjB,CAAD,CAAnE;;AAAuE,OAAIA,CAAJ,IAASjjB,CAAT,EAAW67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB1qD,CAAC,CAAC+W,WAAF,MAAiB/W,CAArC,EAAuC,oBAAvC,GAA6D4sB,CAAC,CAAC5sB,CAAD,CAAD,GAAKjjB,CAAC,CAACijB,CAAD,CAAnE;;AAAuE,OAAIA,CAAJ,IAASgL,CAAT,EAAW;AAAC,QAAIuY,CAAC,GAACvjB,CAAC,CAAC+W,WAAF,EAAN;AAAsB,QAAGwM,CAAC,IAAIzmC,CAAR,EAAU,MAAM5B,KAAK,CAAC,sBAAoBqoC,CAApB,GAAsB,oBAAtB,GAA2CvjB,CAA3C,GAA6C,gBAA7C,GAA8DgL,CAAC,CAAChL,CAAD,CAA/D,GAAmE,GAApE,CAAX;AAAoFujB,KAAC,IAAIxmC,CAAL,IAAQ,OAAO6vC,CAAC,CAACrJ,CAAD,CAAhB;AAAoBqJ,KAAC,CAAC5sB,CAAD,CAAD,GAAKgL,CAAC,CAAChL,CAAD,CAAN;AAAU;;AAAA,SAAO4sB,CAAP;AAAS,CAA3Y;;AACAgsB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBkC,YAAnB,GAAgC70B,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkE,iBAAlE,EAAoFhzB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAAvG,CAAhC;AAAgJtnB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBxN,KAAnB,GAAyBnlB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkE,EAAlE,EAAqEhzB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAAxF,CAAzB;AAA0HtnB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBhW,EAAnB,GAAsB3c,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkE,MAAlE,EAAyEhzB,IAAI,CAACymB,IAAL,CAAUC,IAAV,CAAeS,GAAf,CAAmBG,OAA5F,CAAtB;AAA2HtnB,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,GAA+B,EAA/B;;AAAkC90B,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,CAA+BC,4CAA/B,GAA4E,UAAS7wF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaa,YAAb,CAA0BlS,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAA1B,EAAsD,4BAAtD;AAAoF87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBO,mBAArB,CAAyCzsB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAzC,CAArB,EAA2F,sCAA3F;AAAmI,SAAO87D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBK,8CAAnB,CAAkE7uF,CAAlE,EAAoEiuB,CAAC,IAAE,IAAvE,CAAP;AAAoF,CAAvY;;AACva4tC,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,CAA+BE,8CAA/B,GAA8E,UAAS9wF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaa,YAAb,CAA0BlS,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAA1B,EAAsD,4BAAtD;AAAoF87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBO,mBAArB,CAAyCzsB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAzC,CAArB,EAA2F,sCAA3F;AAAmI,SAAO87D,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBK,gDAArB,CAAsEthF,CAAtE,CAAP;AAAgF,CAAnY;;AACA67D,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,CAA+BG,6CAA/B,GAA6E,UAAS/wF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaa,YAAb,CAA0BlS,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAA1B,EAAsD,4BAAtD;AAAoF87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBO,mBAArB,CAAyCzsB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAzC,CAArB,EAA2F,sCAA3F;AAAmI,SAAO87D,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBG,+CAApB,CAAoElrF,CAApE,CAAP;AAA8E,CAAhY;;AACA67D,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,CAA+BI,kDAA/B,GAAkF,UAAShxF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaa,YAAb,CAA0BlS,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAA1B,EAAsD,4BAAtD;AAAoF87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBO,mBAArB,CAAyCzsB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAzC,CAArB,EAA2F,sCAA3F;AAAmI,SAAO87D,IAAI,CAACyH,IAAL,CAAUuoB,cAAV,CAAyBK,oDAAzB,CAA8ElsF,CAA9E,CAAP;AAAwF,CAA/Y;;AACA67D,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,CAA+BK,2CAA/B,GAA2E,UAASjxF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaa,YAAb,CAA0BlS,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAA1B,EAAsD,4BAAtD;AAAoF87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBO,mBAArB,CAAyCzsB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAzC,CAArB,EAA2F,sCAA3F;AAAmI,SAAO87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkBI,6CAAlB,CAAgExpF,CAAhE,CAAP;AAA0E,CAA1X;;AACA67D,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,CAA+BM,sDAA/B,GAAsF,UAASlxF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaa,YAAb,CAA0BlS,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAA1B,EAAsD,4BAAtD;AAAoF87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC9R,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBO,mBAArB,CAAyCzsB,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyBhhF,CAAzB,CAAzC,CAArB,EAA2F,sCAA3F;AAAmI,SAAO87D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BQ,wDAA7B,CAAsFvnF,CAAtF,CAAP;AAAgG,CAA3Z;;AAA4Z67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,GAAc,EAAd;AAAiBr1B,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcC,0BAAd,GAAyC;AAACC,YAAU,EAAC,YAAZ;AAAyBC,UAAQ,EAAC,UAAlC;AAA6CC,aAAW,EAAC,aAAzD;AAAuEC,WAAS,EAAC;AAAjF,CAAzC;;AAAuI11B,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcM,kBAAd,GAAiC,UAASzxF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,CAAC0xF,kBAAF,CAAqBzxF,CAArB,EAAuB67D,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,CAAqC3gE,CAArC,CAAvB;AAAgE,CAAjH;;AAAkH4tC,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcQ,+BAAd,GAA8C;AAAC1V,MAAI,EAAC,CAAC,CAAP;AAASsB,QAAM,EAAC,CAAC,CAAjB;AAAmBQ,OAAK,EAAC,CAAC,CAA1B;AAA4BI,KAAG,EAAC,CAAC,CAAjC;AAAmCI,UAAQ,EAAC,CAAC;AAA7C,CAA9C;AACtqBziB,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcS,4BAAd,GAA2C91B,IAAI,CAACka,SAAL,CAAegB,gBAAf,CAAgC,YAAU;AAAC,MAAGlb,IAAI,CAACW,KAAL,IAAY,gBAAc,OAAOe,QAApC,EAA6C,OAAM,CAAC,CAAP;AAAS,MAAIx9D,CAAC,GAACw9D,QAAQ,CAACkF,aAAT,CAAuB,KAAvB,CAAN;AAAA,MAAoCziE,CAAC,GAACu9D,QAAQ,CAACkF,aAAT,CAAuB,KAAvB,CAAtC;AAAoEziE,GAAC,CAAC2iE,WAAF,CAAcpF,QAAQ,CAACkF,aAAT,CAAuB,KAAvB,CAAd;AAA6C1iE,GAAC,CAAC4iE,WAAF,CAAc3iE,CAAd;AAAiB,MAAG67D,IAAI,CAACW,KAAL,IAAY,CAACz8D,CAAC,CAAC6xF,UAAlB,EAA6B,OAAM,CAAC,CAAP;AAAS5xF,GAAC,GAACD,CAAC,CAAC6xF,UAAF,CAAaA,UAAf;AAA0B7xF,GAAC,CAAC8xF,SAAF,GAAYh2B,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,CAAqC/yB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBxN,KAAxD,CAAZ;AAA2E,SAAM,CAAChhF,CAAC,CAAC8xF,aAAT;AAAuB,CAArY,CAA3C;;AACAj2B,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAca,gCAAd,GAA+C,UAAShyF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcS,4BAAd,EAAH,EAAgD,OAAK5xF,CAAC,CAACiyF,SAAP,GAAkBjyF,CAAC,CAAC+iE,WAAF,CAAc/iE,CAAC,CAACiyF,SAAhB;AAA2BjyF,GAAC,CAAC8xF,SAAF,GAAYh2B,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,CAAqC5uF,CAArC,CAAZ;AAAoD,CAA9M;;AACA67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAce,YAAd,GAA2B,UAASlyF,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG67D,IAAI,CAACqR,OAAL,CAAaC,cAAhB,EAA+B;AAAC,QAAIl/C,CAAC,GAACluB,CAAC,CAACmyF,OAAF,CAAUtoE,WAAV,EAAN;AAA8B,QAAGiyC,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcQ,+BAAd,CAA8CzjE,CAA9C,CAAH,EAAoD,MAAM9vB,KAAK,CAAC,iEAA+D4B,CAAC,CAACmyF,OAAjE,GAAyE,GAA1E,CAAX;AAA2F;;AAAAr2B,MAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAca,gCAAd,CAA+ChyF,CAA/C,EAAiDC,CAAjD;AAAoD,CAA1S;;AAA2S67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAciB,YAAd,GAA2B,UAASpyF,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,CAACqyF,SAAF,GAAYv2B,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,CAAqC5uF,CAArC,CAAZ;AAAoD,CAA7F;;AAC3S67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcmB,oBAAd,GAAmC,UAAStyF,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAACA,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BppF,CAA/B,GAAiC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,CAAnC;AAAgF67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBqI,uBAAjB,CAAyCx1E,CAAzC,EAA4CmvF,MAA5C,GAAmDrzB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAnD;AAAyF,CAA1N;;AAA2N67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcoB,mBAAd,GAAkC,UAASvyF,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAACA,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BppF,CAA/B,GAAiC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,CAAnC;AAAgF67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB4H,yBAAjB,CAA2C/0E,CAA3C,EAA8CwyF,UAA9C,GAAyD12B,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAzD;AAA+F,CAA/N;;AAC3N67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcsB,kBAAd,GAAiC,UAASzyF,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAACA,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BppF,CAA/B,GAAiC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,CAAnC;AAAgF67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBiI,wBAAjB,CAA0Cp1E,CAA1C,EAA6CwyF,UAA7C,GAAwD12B,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAxD;AAA8F,CAA7N;;AAA8N67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcuB,QAAd,GAAuB,UAAS1yF,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,CAAC4mF,KAAF,CAAQ+L,OAAR,GAAgB72B,IAAI,CAACyH,IAAL,CAAUynB,SAAV,CAAoBhK,MAApB,CAA2B/gF,CAA3B,CAAhB;AAA8C,CAAnF;;AAAoF67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcyB,aAAd,GAA4B,UAAS5yF,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,CAACo2B,KAAF,CAAQ0lC,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,CAAqC5uF,CAArC,CAAR;AAAiD,CAA3F;;AAClT67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc0B,aAAd,GAA4B,UAAS7yF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB2H,yBAAjB,CAA2C90E,CAA3C;AAA8CC,GAAC,GAACA,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BppF,CAA/B,GAAiC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,CAAnC;AAAgFD,GAAC,CAACsvF,IAAF,GAAOxzB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAP;AAA6C,CAArN;;AAAsN67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc2B,WAAd,GAA0B,UAAS9yF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB8H,wBAAjB,CAA0Cj1E,CAA1C;;AAA6C,MAAG,EAAEC,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAzB,CAAH,EAAqC;AAAC,QAAIn7D,CAAC,GAAC,iBAAiB9O,IAAjB,CAAsBnf,CAAtB,CAAN;AAA+BA,KAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,EAA4CiuB,CAA5C,CAAF;AAAiD;;AAAAluB,GAAC,CAAC+kE,GAAF,GAAMjJ,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAN;AAA4C,CAAvP;;AACtN67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc4B,WAAd,GAA0B,UAAS/yF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB+H,wBAAjB,CAA0Cl1E,CAA1C;;AAA6C,MAAG,EAAEC,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAzB,CAAH,EAAqC;AAAC,QAAIn7D,CAAC,GAAC,iBAAiB9O,IAAjB,CAAsBnf,CAAtB,CAAN;AAA+BA,KAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,EAA4CiuB,CAA5C,CAAF;AAAiD;;AAAAluB,GAAC,CAAC+kE,GAAF,GAAMjJ,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAN;AAA4C,CAAvP;;AAAwP67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc6B,WAAd,GAA0B,UAAShzF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBgI,wBAAjB,CAA0Cn1E,CAA1C;;AAA6C,MAAG,EAAEC,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAzB,CAAH,EAAqC;AAAC,QAAIn7D,CAAC,GAAC,iBAAiB9O,IAAjB,CAAsBnf,CAAtB,CAAN;AAA+BA,KAAC,GAAC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,EAA4CiuB,CAA5C,CAAF;AAAiD;;AAAAluB,GAAC,CAAC+kE,GAAF,GAAMjJ,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAN;AAA4C,CAAvP;;AACxP67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc8B,WAAd,GAA0B,UAASjzF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBoI,wBAAjB,CAA0Cv1E,CAA1C;AAA6CA,GAAC,CAAC+kE,GAAF,GAAMjJ,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BU,sBAA7B,CAAoDznF,CAApD,CAAN;AAA6D,CAAlJ;;AAAmJ67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc+B,WAAd,GAA0B,UAASlzF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBsI,wBAAjB,CAA0Cz1E,CAA1C;AAA6CA,GAAC,CAAC+kE,GAAF,GAAMjJ,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BW,gBAA7B,CAA8C1nF,CAA9C,CAAN;AAAuD,CAA5I;;AAA6I67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcgC,YAAd,GAA2B,UAASnzF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBuI,yBAAjB,CAA2C11E,CAA3C;AAA8CA,GAAC,CAAC+kE,GAAF,GAAMjJ,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BW,gBAA7B,CAA8C1nF,CAA9C,CAAN;AAAuD,CAA9I;;AAChS67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAciC,eAAd,GAA8B,UAASpzF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBuI,yBAAjB,CAA2C11E,CAA3C;AAA8CA,GAAC,CAAC6vF,MAAF,GAAS/zB,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,CAAqC5uF,CAArC,CAAT;AAAiD,CAA3I;;AACA67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAckC,iBAAd,GAAgC,UAASrzF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiB6H,uBAAjB,CAAyCh1E,CAAzC;AAA4CA,GAAC,CAACszF,GAAF,GAAMplE,CAAN;AAAQ4tC,MAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBkB,uBAArB,CAA6Ch7D,CAA7C,EAA+C,YAA/C,KAA8D4tC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAUyjB,kBAA3C,EAA8D,oEAA9D,GAAoIhnF,CAAC,CAACsvF,IAAF,GAAOxzB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BW,gBAA7B,CAA8C1nF,CAA9C,CAAzM,IAA2PD,CAAC,CAACsvF,IAAF,GAAOrvF,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAvB,GAA0ClrB,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BW,gBAA7B,CAA8C1nF,CAA9C,CAA1C,GAA2FA,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BvtB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAA/B,GACjc67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC7rB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,CAAnC,CADoG;AACnB,CADjF;;AACkF67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcoC,aAAd,GAA4B,UAASvzF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBwI,yBAAjB,CAA2C31E,CAA3C;AAA8CA,GAAC,CAACiB,IAAF,GAAO66D,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BU,sBAA7B,CAAoDznF,CAApD,CAAP;AAA8D,CAAtJ;;AAAuJ67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcqC,YAAd,GAA2B,UAASxzF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiByI,yBAAjB,CAA2C51E,CAA3C;AAA8CA,GAAC,CAAC+kE,GAAF,GAAMjJ,IAAI,CAACyH,IAAL,CAAUyjB,kBAAV,CAA6BU,sBAA7B,CAAoDznF,CAApD,CAAN;AAA6D,GAACA,CAAC,GAAC67D,IAAI,CAACwB,cAAL,EAAH,KAA2Bt9D,CAAC,CAAC6oE,YAAF,CAAe,OAAf,EAAuB5oE,CAAvB,CAA3B;AAAqD,CAAzM;;AACzO67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcsC,gBAAd,GAA+B,UAASzzF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiByI,yBAAjB,CAA2C51E,CAA3C;AAA8CA,GAAC,CAAC0zF,IAAF,GAAO53B,IAAI,CAACyH,IAAL,CAAU2d,UAAV,CAAqBS,mBAArB,CAAyC1hF,CAAzC,CAAP;AAAmD,GAACA,CAAC,GAAC67D,IAAI,CAACwB,cAAL,EAAH,KAA2Bt9D,CAAC,CAAC6oE,YAAF,CAAe,OAAf,EAAuB5oE,CAAvB,CAA3B;AAAqD,CAAnM;;AAAoM67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcwC,eAAd,GAA8B,UAAS3zF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBqH,gBAAjB,CAAkCx0E,CAAlC;AAAqCC,GAAC,GAACA,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BppF,CAA/B,GAAiC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,CAAnC;AAAgFD,GAAC,CAACsvF,IAAF,GAAOxzB,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAP;AAA6C,CAA9M;;AACpM67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAcyC,cAAd,GAA6B,UAAS5zF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBqH,gBAAjB,CAAkCx0E,CAAlC;AAAqCC,GAAC,GAACA,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BppF,CAA/B,GAAiC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,CAAnC;AAAgFD,GAAC,CAACvD,MAAF,CAASq/D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAT;AAAgD,CAAhN;;AAAiN67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc0C,eAAd,GAA8B,UAAS7zF,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACuQ,GAAL,CAASc,OAAT,CAAiBqH,gBAAjB,CAAkCx0E,CAAlC;AAAqCC,GAAC,GAACA,CAAC,YAAY67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BppF,CAA/B,GAAiC67D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C7qF,CAA1C,CAAnC;AAAgFD,GAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC1nF,CAAnC,CAAV;AAAiD,CAAlN;;AACjN67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc2C,YAAd,GAA2B,UAAS9zF,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAACljB,GAAC,GAACA,CAAC,YAAY87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAvB,GAA+BrpF,CAA/B,GAAiC87D,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkByB,uBAAlB,CAA0C9qF,CAA1C,CAAnC;AAAgF,SAAM,CAACC,CAAC,IAAE67D,IAAI,CAAC1gC,MAAT,EAAiBtb,IAAjB,CAAsBg8C,IAAI,CAACyH,IAAL,CAAU8lB,OAAV,CAAkB1B,gBAAlB,CAAmC3nF,CAAnC,CAAtB,EAA4DkuB,CAAC,GAAC4tC,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkBO,MAAlB,CAAyB9yD,CAAzB,CAAD,GAA6B,EAA1F,EAA6F4hB,CAA7F,EAA+F5sB,CAA/F,CAAN;AAAwG,CAAvO;;AAAwO44C,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc4C,mBAAd,GAAkC,UAAS/zF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc6C,eAAd,CAA8Bh0F,CAA9B,EAAgCC,CAAhC,EAAkC,WAAlC,CAAP;AAAsD,CAAtG;;AAAuG67D,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc6C,eAAd,GAA8B,UAASh0F,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOluB,CAAC,CAACg0F,eAAF,CAAkBl4B,IAAI,CAACyH,IAAL,CAAUkrB,QAAV,CAAmBI,iBAAnB,CAAqC5uF,CAArC,CAAlB,EAA0DiuB,CAA1D,CAAP;AAAoE,CAAlH;;AAC/U4tC,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc8C,mBAAd,GAAkC,UAASj0F,CAAT,EAAW;AAAC,MAAG,CAAC,cAAcof,IAAd,CAAmBpf,CAAC,CAAC+V,IAArB,CAAJ,EAA+B,MAAM3X,KAAK,CAAC,oEAAD,CAAX;AAAkF,MAAI6B,CAAC,GAAC67D,IAAI,CAAC1gC,MAAL,CAAYgnD,GAAZ,CAAgBJ,eAAhB,CAAgChiF,CAAhC,CAAN;AAAyCA,GAAC,GAAC,IAAI87D,IAAI,CAAC1gC,MAAL,CAAY84D,KAAhB,EAAF;;AAAwBl0F,GAAC,CAAC+oE,MAAF,GAAS,YAAU;AAACjN,QAAI,CAAC1gC,MAAL,CAAYgnD,GAAZ,CAAgBF,eAAhB,CAAgCjiF,CAAhC;AAAmC,GAAvD;;AAAwD67D,MAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAc2B,WAAd,CAA0B9yF,CAA1B,EAA4B87D,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,CAA+BK,2CAA/B,CAA2En1B,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkB9iF,IAAlB,CAAuB,iBAAvB,CAA3E,EAAqHsC,CAArH,CAA5B;AAAqJ,SAAOD,CAAP;AAAS,CAAtb;;AAAub87D,IAAI,CAAC/yB,MAAL,CAAYorD,sBAAZ,GAAmC,CAAC,CAApC;AAAsCr4B,IAAI,CAAC/yB,MAAL,CAAYqrD,6BAAZ,GAA0C,CAAC,CAA3C;AAA6Ct4B,IAAI,CAAC/yB,MAAL,CAAYsrD,OAAZ,GAAoB;AAACC,MAAI,EAAC;AAAN,CAApB;AAAoCx4B,IAAI,CAAC/yB,MAAL,CAAYk/C,UAAZ,GAAuBnsB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBC,UAA5C;AAAuDnsB,IAAI,CAAC/yB,MAAL,CAAYm/C,QAAZ,GAAqBpsB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBE,QAA1C;AAAmDpsB,IAAI,CAAC/yB,MAAL,CAAYo/C,yBAAZ,GAAsCrsB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBG,yBAA3D;AAAqFrsB,IAAI,CAAC/yB,MAAL,CAAYs/C,uBAAZ,GAAoCvsB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBK,uBAAzD;AAAiFvsB,IAAI,CAAC/yB,MAAL,CAAYu/C,qBAAZ,GAAkCxsB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBM,qBAAvD;;AAC9zBxsB,IAAI,CAAC/yB,MAAL,CAAYwrD,IAAZ,GAAiB,UAASv0F,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAC,GAACluB,CAAC,CAACia,KAAF,CAAQ,IAAR,CAAN,EAAoB61B,CAAC,GAAC,EAAtB,EAAyB5sB,CAAC,GAACxlB,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2B3N,SAA3B,EAAqC,CAArC,CAA/B,EAAuEoa,CAAC,CAACtjB,MAAF,IAAU,IAAEsuB,CAAC,CAACtuB,MAArF,GAA6FkwC,CAAC,IAAE5hB,CAAC,CAAC5tB,KAAF,KAAU4iB,CAAC,CAAC5iB,KAAF,EAAb;;AAAuB,SAAOwvC,CAAC,GAAC5hB,CAAC,CAACvT,IAAF,CAAO,IAAP,CAAT;AAAsB,CAAzK;;AAA0KmhD,IAAI,CAAC/yB,MAAL,CAAYyrD,kBAAZ,GAA+B,UAASx0F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,YAAV,EAAuB,GAAvB,EAA4BA,OAA5B,CAAoC,YAApC,EAAiD,EAAjD,CAAP;AAA4D,CAAvG;;AAAwG4iD,IAAI,CAAC/yB,MAAL,CAAYw/C,mBAAZ,GAAgCzsB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBO,mBAArD;;AAAyEzsB,IAAI,CAAC/yB,MAAL,CAAY0rD,aAAZ,GAA0B,UAASz0F,CAAT,EAAW;AAAC,SAAO,KAAGA,CAAC,CAACJ,MAAZ;AAAmB,CAAzD;;AAA0Dk8D,IAAI,CAAC/yB,MAAL,CAAYmiC,OAAZ,GAAoBpP,IAAI,CAAC/yB,MAAL,CAAYw/C,mBAAhC;;AAAoDzsB,IAAI,CAAC/yB,MAAL,CAAY2rD,uBAAZ,GAAoC,UAAS10F,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAAC/yB,MAAL,CAAYw/C,mBAAZ,CAAgCzsB,IAAI,CAAC/yB,MAAL,CAAY4rD,QAAZ,CAAqB30F,CAArB,CAAhC,CAAP;AAAgE,CAAhH;;AACzc87D,IAAI,CAAC/yB,MAAL,CAAY6rD,WAAZ,GAAwB94B,IAAI,CAAC/yB,MAAL,CAAY2rD,uBAApC;;AAA4D54B,IAAI,CAAC/yB,MAAL,CAAY8rD,oBAAZ,GAAiC,UAAS70F,CAAT,EAAW;AAAC,SAAM,CAAC,aAAaof,IAAb,CAAkBpf,CAAlB,CAAP;AAA4B,CAAzE;;AAA0E87D,IAAI,CAAC/yB,MAAL,CAAY+rD,OAAZ,GAAoB,UAAS90F,CAAT,EAAW;AAAC,SAAM,CAAC,YAAYof,IAAZ,CAAiBpf,CAAjB,CAAP;AAA2B,CAA3D;;AAA4D87D,IAAI,CAAC/yB,MAAL,CAAYgsD,SAAZ,GAAsB,UAAS/0F,CAAT,EAAW;AAAC,SAAM,CAAC,SAASof,IAAT,CAAcpf,CAAd,CAAP;AAAwB,CAA1D;;AAA2D87D,IAAI,CAAC/yB,MAAL,CAAYisD,cAAZ,GAA2B,UAASh1F,CAAT,EAAW;AAAC,SAAM,CAAC,eAAeof,IAAf,CAAoBpf,CAApB,CAAP;AAA8B,CAArE;;AAAsE87D,IAAI,CAAC/yB,MAAL,CAAYksD,OAAZ,GAAoB,UAASj1F,CAAT,EAAW;AAAC,SAAM,OAAKA,CAAX;AAAa,CAA7C;;AAA8C87D,IAAI,CAAC/yB,MAAL,CAAYmsD,aAAZ,GAA0B,UAASl1F,CAAT,EAAW;AAAC,SAAO,KAAGA,CAAC,CAACJ,MAAL,IAAa,OAAKI,CAAlB,IAAqB,OAAKA,CAA1B,IAA6B,YAAUA,CAAV,IAAa,YAAUA,CAA3D;AAA6D,CAAnG;;AACjX87D,IAAI,CAAC/yB,MAAL,CAAYosD,aAAZ,GAA0B,UAASn1F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,gBAAV,EAA2B,GAA3B,CAAP;AAAuC,CAA7E;;AAA8E4iD,IAAI,CAAC/yB,MAAL,CAAYqsD,oBAAZ,GAAiC,UAASp1F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,eAAV,EAA0B,IAA1B,CAAP;AAAuC,CAApF;;AAAqF4iD,IAAI,CAAC/yB,MAAL,CAAYssD,mBAAZ,GAAgC,UAASr1F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,UAAV,EAAqB,GAArB,CAAP;AAAiC,CAA7E;;AAA8E4iD,IAAI,CAAC/yB,MAAL,CAAYusD,eAAZ,GAA4B,UAASt1F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,cAAV,EAAyB,GAAzB,CAAP;AAAqC,CAA7E;;AAA8E4iD,IAAI,CAAC/yB,MAAL,CAAYwsD,sBAAZ,GAAmC,UAASv1F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,aAAV,EAAwB,GAAxB,EAA6BA,OAA7B,CAAqC,0BAArC,EAAgE,EAAhE,CAAP;AAA2E,CAA1H;;AAA2H4iD,IAAI,CAAC/yB,MAAL,CAAYtH,IAAZ,GAAiBq6B,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBvmD,IAAtC;;AAC1bq6B,IAAI,CAAC/yB,MAAL,CAAYysD,QAAZ,GAAqB,UAASx1F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,YAAV,EAAuB,EAAvB,CAAP;AAAkC,CAAnE;;AAAoE4iD,IAAI,CAAC/yB,MAAL,CAAYxC,SAAZ,GAAsB,UAASvmC,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,YAAV,EAAuB,EAAvB,CAAP;AAAkC,CAApE;;AAAqE4iD,IAAI,CAAC/yB,MAAL,CAAYq/C,sBAAZ,GAAmCtsB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBI,sBAAxD;;AACzItsB,IAAI,CAAC/yB,MAAL,CAAY0sD,mBAAZ,GAAgC,UAASz1F,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAGluB,CAAC,IAAEC,CAAN,EAAQ,OAAO,CAAP;AAAS,MAAG,CAACD,CAAJ,EAAM,OAAM,CAAC,CAAP;AAAS,MAAG,CAACC,CAAJ,EAAM,OAAO,CAAP;;AAAS,OAAI,IAAI6vC,CAAC,GAAC9vC,CAAC,CAACi6B,WAAF,GAAgBlhB,KAAhB,CAAsBmV,CAAtB,CAAN,EAA+BhL,CAAC,GAACjjB,CAAC,CAACg6B,WAAF,GAAgBlhB,KAAhB,CAAsBmV,CAAtB,CAAjC,EAA0DuY,CAAC,GAACp+B,IAAI,CAACe,GAAL,CAAS0mC,CAAC,CAAClwC,MAAX,EAAkBsjB,CAAC,CAACtjB,MAApB,CAA5D,EAAwFs7B,CAAC,GAAC,CAA9F,EAAgGA,CAAC,GAACuL,CAAlG,EAAoGvL,CAAC,EAArG,EAAwG;AAAChN,KAAC,GAAC4hB,CAAC,CAAC5U,CAAD,CAAH;AAAO,QAAIyV,CAAC,GAACztB,CAAC,CAACgY,CAAD,CAAP;AAAW,QAAGhN,CAAC,IAAEyiB,CAAN,EAAQ,OAAO3wC,CAAC,GAACga,QAAQ,CAACkU,CAAD,EAAG,EAAH,CAAV,EAAiB,CAAC7mB,KAAK,CAACrH,CAAD,CAAN,KAAYC,CAAC,GAAC+Z,QAAQ,CAAC22B,CAAD,EAAG,EAAH,CAAV,EAAiB,CAACtpC,KAAK,CAACpH,CAAD,CAAN,IAAWD,CAAC,GAACC,CAA1C,IAA6CD,CAAC,GAACC,CAA/C,GAAiDiuB,CAAC,GAACyiB,CAAF,GAAI,CAAC,CAAL,GAAO,CAAhF;AAAkF;;AAAA,SAAOb,CAAC,CAAClwC,MAAF,IAAUsjB,CAAC,CAACtjB,MAAZ,GAAmBkwC,CAAC,CAAClwC,MAAF,GAASsjB,CAAC,CAACtjB,MAA9B,GAAqCI,CAAC,GAACC,CAAF,GAAI,CAAC,CAAL,GAAO,CAAnD;AAAqD,CAAzW;;AAA0W67D,IAAI,CAAC/yB,MAAL,CAAY2sD,eAAZ,GAA4B,UAAS11F,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAAC/yB,MAAL,CAAY0sD,mBAAZ,CAAgCz1F,CAAhC,EAAkCC,CAAlC,EAAoC,UAApC,CAAP;AAAuD,CAAjG;;AAC1W67D,IAAI,CAAC/yB,MAAL,CAAY4sD,iBAAZ,GAA8B,UAAS31F,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAAC/yB,MAAL,CAAY0sD,mBAAZ,CAAgCz1F,CAAhC,EAAkCC,CAAlC,EAAoC,gBAApC,CAAP;AAA6D,CAAzG;;AAA0G67D,IAAI,CAAC/yB,MAAL,CAAY6sD,eAAZ,GAA4B95B,IAAI,CAAC/yB,MAAL,CAAY4sD,iBAAxC;;AAA0D75B,IAAI,CAAC/yB,MAAL,CAAY8sD,SAAZ,GAAsB,UAAS71F,CAAT,EAAW;AAAC,SAAOg9B,kBAAkB,CAACI,MAAM,CAACp9B,CAAD,CAAP,CAAzB;AAAqC,CAAvE;;AAAwE87D,IAAI,CAAC/yB,MAAL,CAAY+sD,SAAZ,GAAsB,UAAS91F,CAAT,EAAW;AAAC,SAAOk9B,kBAAkB,CAACl9B,CAAC,CAACkZ,OAAF,CAAU,KAAV,EAAgB,GAAhB,CAAD,CAAzB;AAAgD,CAAlF;;AAAmF4iD,IAAI,CAAC/yB,MAAL,CAAYy/C,WAAZ,GAAwB1sB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBQ,WAA7C;;AAC/T1sB,IAAI,CAAC/yB,MAAL,CAAY0/C,UAAZ,GAAuB,UAASzoF,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBS,UAArB,CAAgCzoF,CAAhC,EAAkCC,CAAlC,CAAF;AAAuC67D,MAAI,CAAC/yB,MAAL,CAAYorD,sBAAZ,KAAqCn0F,CAAC,GAACA,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYgtD,KAAtB,EAA4B,QAA5B,CAAvC;AAA8E,SAAO/1F,CAAP;AAAS,CAAnK;;AAAoK87D,IAAI,CAAC/yB,MAAL,CAAYgtD,KAAZ,GAAkB,IAAlB;;AAAuBj6B,IAAI,CAAC/yB,MAAL,CAAYitD,gBAAZ,GAA6B,UAASh2F,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAAC/yB,MAAL,CAAY4hC,QAAZ,CAAqB3qE,CAArB,EAAuB,GAAvB,IAA4B,CAAC87D,IAAI,CAAC/yB,MAAL,CAAYqrD,6BAAb,IAA4C,cAAat4B,IAAI,CAAC1gC,MAA9D,GAAqE0gC,IAAI,CAAC/yB,MAAL,CAAYktD,yBAAZ,CAAsCj2F,CAAtC,CAArE,GAA8G87D,IAAI,CAAC/yB,MAAL,CAAYmtD,wBAAZ,CAAqCl2F,CAArC,CAA1I,GAAkLA,CAAzL;AAA2L,CAApO;;AAC3L87D,IAAI,CAAC/yB,MAAL,CAAYotD,4BAAZ,GAAyC,UAASn2F,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAAC/yB,MAAL,CAAY4hC,QAAZ,CAAqB3qE,CAArB,EAAuB,GAAvB,IAA4B87D,IAAI,CAAC/yB,MAAL,CAAYktD,yBAAZ,CAAsCj2F,CAAtC,EAAwCC,CAAxC,CAA5B,GAAuED,CAA9E;AAAgF,CAAvI;;AACA87D,IAAI,CAAC/yB,MAAL,CAAYktD,yBAAZ,GAAsC,UAASj2F,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC;AAAC,aAAQ,GAAT;AAAa,YAAO,GAApB;AAAwB,YAAO,GAA/B;AAAmC,cAAS;AAA5C,GAAN;AAAuD,MAAI4hB,CAAC,GAAC7vC,CAAC,GAACA,CAAC,CAACyiE,aAAF,CAAgB,KAAhB,CAAD,GAAwB5G,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAZ,CAAqBkF,aAArB,CAAmC,KAAnC,CAA/B;AAAyE,SAAO1iE,CAAC,CAACkZ,OAAF,CAAU4iD,IAAI,CAAC/yB,MAAL,CAAYqtD,oBAAtB,EAA2C,UAASp2F,CAAT,EAAWC,CAAX,EAAa;AAAC,QAAIijB,CAAC,GAACgL,CAAC,CAACluB,CAAD,CAAP;AAAW,QAAGkjB,CAAH,EAAK,OAAOA,CAAP;AAAS,WAAKjjB,CAAC,CAACo+B,MAAF,CAAS,CAAT,CAAL,KAAmBp+B,CAAC,GAAC9C,MAAM,CAAC,MAAI8C,CAAC,CAACiY,MAAF,CAAS,CAAT,CAAL,CAAR,EAA0B7Q,KAAK,CAACpH,CAAD,CAAL,KAAWijB,CAAC,GAACka,MAAM,CAACC,YAAP,CAAoBp9B,CAApB,CAAb,CAA7C;AAAmFijB,KAAC,KAAG44C,IAAI,CAACuQ,GAAL,CAAS8kB,IAAT,CAAce,YAAd,CAA2BpiD,CAA3B,EAA6BgsB,IAAI,CAACyH,IAAL,CAAUqtB,oBAAV,CAA+BC,4CAA/B,CAA4E/0B,IAAI,CAAC/yB,MAAL,CAAY03C,KAAZ,CAAkB9iF,IAAlB,CAAuB,qBAAvB,CAA5E,EACjYqC,CAAC,GAAC,GAD+X,CAA7B,GAC5VkjB,CAAC,GAAC4sB,CAAC,CAAC+hD,UAAF,CAAawE,SAAb,CAAuBz0F,KAAvB,CAA6B,CAA7B,EAA+B,CAAC,CAAhC,CADuV,CAAD;AAClT,WAAOssB,CAAC,CAACluB,CAAD,CAAD,GAAKkjB,CAAZ;AAAc,GAD+H,CAAP;AACtH,CAD9D;;AAC+D44C,IAAI,CAAC/yB,MAAL,CAAYmtD,wBAAZ,GAAqC,UAASl2F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,YAAV,EAAuB,UAASlZ,CAAT,EAAWkuB,CAAX,EAAa;AAAC,YAAOA,CAAP;AAAU,WAAK,KAAL;AAAW,eAAM,GAAN;;AAAU,WAAK,IAAL;AAAU,eAAM,GAAN;;AAAU,WAAK,IAAL;AAAU,eAAM,GAAN;;AAAU,WAAK,MAAL;AAAY,eAAM,GAAN;;AAAU;AAAQ,eAAM,OAAKA,CAAC,CAACmQ,MAAF,CAAS,CAAT,CAAL,KAAmBnQ,CAAC,GAAC/wB,MAAM,CAAC,MAAI+wB,CAAC,CAAChW,MAAF,CAAS,CAAT,CAAL,CAAR,EAA0B7Q,KAAK,CAAC6mB,CAAD,CAAlD,IAAuDluB,CAAvD,GAAyDo9B,MAAM,CAACC,YAAP,CAAoBnP,CAApB,CAA/D;AAArG;AAA4L,GAAjO,CAAP;AAA0O,CAA3R;;AAA4R4tC,IAAI,CAAC/yB,MAAL,CAAYqtD,oBAAZ,GAAiC,iBAAjC;;AAAmDt6B,IAAI,CAAC/yB,MAAL,CAAYkgD,gBAAZ,GAA6B,UAASjpF,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAAC/yB,MAAL,CAAYy/C,WAAZ,CAAwBxoF,CAAC,CAACkZ,OAAF,CAAU,KAAV,EAAgB,SAAhB,CAAxB,EAAmDjZ,CAAnD,CAAP;AAA6D,CAAxG;;AAC9Y67D,IAAI,CAAC/yB,MAAL,CAAYutD,cAAZ,GAA2B,UAASt2F,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACkZ,OAAF,CAAU,aAAV,EAAwB,OAAK4iD,IAAI,CAAC/yB,MAAL,CAAYsrD,OAAZ,CAAoBC,IAAjD,CAAP;AAA8D,CAArG;;AAAsGx4B,IAAI,CAAC/yB,MAAL,CAAYwtD,WAAZ,GAAwB,UAASv2F,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAC,GAACjuB,CAAC,CAACL,MAAR,EAAekwC,CAAC,GAAC,CAArB,EAAuBA,CAAC,GAAC5hB,CAAzB,EAA2B4hB,CAAC,EAA5B,EAA+B;AAAC,QAAI5sB,CAAC,GAAC,KAAGgL,CAAH,GAAKjuB,CAAL,GAAOA,CAAC,CAACo+B,MAAF,CAASyR,CAAT,CAAb;AAAyB,QAAG9vC,CAAC,CAACq+B,MAAF,CAAS,CAAT,KAAanb,CAAb,IAAgBljB,CAAC,CAACq+B,MAAF,CAASr+B,CAAC,CAACJ,MAAF,GAAS,CAAlB,KAAsBsjB,CAAzC,EAA2C,OAAOljB,CAAC,CAAC88C,SAAF,CAAY,CAAZ,EAAc98C,CAAC,CAACJ,MAAF,GAAS,CAAvB,CAAP;AAAiC;;AAAA,SAAOI,CAAP;AAAS,CAApL;;AAAqL87D,IAAI,CAAC/yB,MAAL,CAAYytD,QAAZ,GAAqB,UAASx2F,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACA,GAAC,KAAGluB,CAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAYitD,gBAAZ,CAA6Bh2F,CAA7B,CAAL,CAAD;AAAuCA,GAAC,CAACJ,MAAF,GAASK,CAAT,KAAaD,CAAC,GAACA,CAAC,CAAC88C,SAAF,CAAY,CAAZ,EAAc78C,CAAC,GAAC,CAAhB,IAAmB,KAAlC;AAAyCiuB,GAAC,KAAGluB,CAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAY0/C,UAAZ,CAAuBzoF,CAAvB,CAAL,CAAD;AAAiC,SAAOA,CAAP;AAAS,CAA/J;;AAC3R87D,IAAI,CAAC/yB,MAAL,CAAY0tD,cAAZ,GAA2B,UAASz2F,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC5hB,GAAC,KAAGluB,CAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAYitD,gBAAZ,CAA6Bh2F,CAA7B,CAAL,CAAD;;AAAuC,MAAG8vC,CAAC,IAAE9vC,CAAC,CAACJ,MAAF,GAASK,CAAf,EAAiB;AAAC6vC,KAAC,GAAC7vC,CAAF,KAAM6vC,CAAC,GAAC7vC,CAAR;AAAW,QAAIijB,CAAC,GAACljB,CAAC,CAACJ,MAAF,GAASkwC,CAAf;AAAiB9vC,KAAC,GAACA,CAAC,CAAC88C,SAAF,CAAY,CAAZ,EAAc78C,CAAC,GAAC6vC,CAAhB,IAAmB,KAAnB,GAAyB9vC,CAAC,CAAC88C,SAAF,CAAY55B,CAAZ,CAA3B;AAA0C,GAAxF,MAA6FljB,CAAC,CAACJ,MAAF,GAASK,CAAT,KAAa6vC,CAAC,GAACznC,IAAI,CAACC,KAAL,CAAWrI,CAAC,GAAC,CAAb,CAAF,EAAkBijB,CAAC,GAACljB,CAAC,CAACJ,MAAF,GAASkwC,CAA7B,EAA+B9vC,CAAC,GAACA,CAAC,CAAC88C,SAAF,CAAY,CAAZ,EAAchN,CAAC,GAAC7vC,CAAC,GAAC,CAAlB,IAAqB,KAArB,GAA2BD,CAAC,CAAC88C,SAAF,CAAY55B,CAAZ,CAAzE;;AAAyFgL,GAAC,KAAGluB,CAAC,GAAC87D,IAAI,CAAC/yB,MAAL,CAAY0/C,UAAZ,CAAuBzoF,CAAvB,CAAL,CAAD;AAAiC,SAAOA,CAAP;AAAS,CAApT;;AAAqT87D,IAAI,CAAC/yB,MAAL,CAAY2tD,mBAAZ,GAAgC;AAAC,UAAO,KAAR;AAAc,QAAK,KAAnB;AAAyB,QAAK,KAA9B;AAAoC,QAAK,KAAzC;AAA+C,QAAK,KAApD;AAA0D,QAAK,KAA/D;AAAqE,UAAO,OAA5E;AAAoF,OAAI,KAAxF;AAA8F,QAAK,MAAnG;AAA0G,OAAI;AAA9G,CAAhC;AAAyJ56B,IAAI,CAAC/yB,MAAL,CAAY4tD,cAAZ,GAA2B;AAAC,OAAI;AAAL,CAA3B;;AAC9c76B,IAAI,CAAC/yB,MAAL,CAAYnI,KAAZ,GAAkB,UAAS5gC,CAAT,EAAW;AAACA,GAAC,GAACo9B,MAAM,CAACp9B,CAAD,CAAR;;AAAY,OAAI,IAAIC,CAAC,GAAC,CAAC,GAAD,CAAN,EAAYiuB,CAAC,GAAC,CAAlB,EAAoBA,CAAC,GAACluB,CAAC,CAACJ,MAAxB,EAA+BsuB,CAAC,EAAhC,EAAmC;AAAC,QAAI4hB,CAAC,GAAC9vC,CAAC,CAACq+B,MAAF,CAASnQ,CAAT,CAAN;AAAA,QAAkBhL,CAAC,GAAC4sB,CAAC,CAAC73B,UAAF,CAAa,CAAb,CAApB;AAAoChY,KAAC,CAACiuB,CAAC,GAAC,CAAH,CAAD,GAAO4tC,IAAI,CAAC/yB,MAAL,CAAY2tD,mBAAZ,CAAgC5mD,CAAhC,MAAqC,KAAG5sB,CAAH,IAAM,MAAIA,CAAV,GAAY4sB,CAAZ,GAAcgsB,IAAI,CAAC/yB,MAAL,CAAY6tD,UAAZ,CAAuB9mD,CAAvB,CAAnD,CAAP;AAAqF;;AAAA7vC,GAAC,CAACxB,IAAF,CAAO,GAAP;AAAY,SAAOwB,CAAC,CAAC0a,IAAF,CAAO,EAAP,CAAP;AAAkB,CAArO;;AAAsOmhD,IAAI,CAAC/yB,MAAL,CAAY8tD,YAAZ,GAAyB,UAAS72F,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACluB,CAAC,CAACJ,MAArB,EAA4BsuB,CAAC,EAA7B,EAAgCjuB,CAAC,CAACiuB,CAAD,CAAD,GAAK4tC,IAAI,CAAC/yB,MAAL,CAAY6tD,UAAZ,CAAuB52F,CAAC,CAACq+B,MAAF,CAASnQ,CAAT,CAAvB,CAAL;;AAAyC,SAAOjuB,CAAC,CAAC0a,IAAF,CAAO,EAAP,CAAP;AAAkB,CAAhI;;AACtOmhD,IAAI,CAAC/yB,MAAL,CAAY6tD,UAAZ,GAAuB,UAAS52F,CAAT,EAAW;AAAC,MAAGA,CAAC,IAAI87D,IAAI,CAAC/yB,MAAL,CAAY4tD,cAApB,EAAmC,OAAO76B,IAAI,CAAC/yB,MAAL,CAAY4tD,cAAZ,CAA2B32F,CAA3B,CAAP;AAAqC,MAAGA,CAAC,IAAI87D,IAAI,CAAC/yB,MAAL,CAAY2tD,mBAApB,EAAwC,OAAO56B,IAAI,CAAC/yB,MAAL,CAAY4tD,cAAZ,CAA2B32F,CAA3B,IAA8B87D,IAAI,CAAC/yB,MAAL,CAAY2tD,mBAAZ,CAAgC12F,CAAhC,CAArC;AAAwE,MAAIC,CAAC,GAACD,CAAC,CAACiY,UAAF,CAAa,CAAb,CAAN;AAAsB,MAAG,KAAGhY,CAAH,IAAM,MAAIA,CAAb,EAAe,IAAIiuB,CAAC,GAACluB,CAAN,CAAf,KAA2B;AAAC,QAAG,MAAIC,CAAP,EAAS;AAAC,UAAGiuB,CAAC,GAAC,KAAF,EAAQ,KAAGjuB,CAAH,IAAM,MAAIA,CAArB,EAAuBiuB,CAAC,IAAE,GAAH;AAAO,KAAxC,MAA6CA,CAAC,GAAC,KAAF,EAAQ,OAAKjuB,CAAL,KAASiuB,CAAC,IAAE,GAAZ,CAAR;;AAAyBA,KAAC,IAAEjuB,CAAC,CAACuW,QAAF,CAAW,EAAX,EAAeqT,WAAf,EAAH;AAAgC;AAAA,SAAOiyC,IAAI,CAAC/yB,MAAL,CAAY4tD,cAAZ,CAA2B32F,CAA3B,IAA8BkuB,CAArC;AAAuC,CAA1Z;;AAA2Z4tC,IAAI,CAAC/yB,MAAL,CAAY4hC,QAAZ,GAAqB7O,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBrd,QAA1C;AAAmD7O,IAAI,CAAC/yB,MAAL,CAAYmgD,uBAAZ,GAAoCptB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBkB,uBAAzD;;AAC9cptB,IAAI,CAAC/yB,MAAL,CAAY+tD,OAAZ,GAAoB,UAAS92F,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,IAAEC,CAAH,GAAKD,CAAC,CAACia,KAAF,CAAQha,CAAR,EAAWL,MAAX,GAAkB,CAAvB,GAAyB,CAAhC;AAAkC,CAApE;;AAAqEk8D,IAAI,CAAC/yB,MAAL,CAAYspC,QAAZ,GAAqB,UAASryE,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC9vC,CAAN;AAAQ,OAAGC,CAAH,IAAMA,CAAC,GAACD,CAAC,CAACJ,MAAV,IAAkB,IAAEsuB,CAApB,KAAwB4hB,CAAC,GAAC9vC,CAAC,CAACkY,MAAF,CAAS,CAAT,EAAWjY,CAAX,IAAcD,CAAC,CAACkY,MAAF,CAASjY,CAAC,GAACiuB,CAAX,EAAaluB,CAAC,CAACJ,MAAF,GAASK,CAAT,GAAWiuB,CAAxB,CAAxC;AAAoE,SAAO4hB,CAAP;AAAS,CAA1H;;AAA2HgsB,IAAI,CAAC/yB,MAAL,CAAYpnC,MAAZ,GAAmB,UAAS3B,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,CAACkZ,OAAF,CAAUjZ,CAAV,EAAY,EAAZ,CAAP;AAAuB,CAAxD;;AAAyD67D,IAAI,CAAC/yB,MAAL,CAAYguD,SAAZ,GAAsB,UAAS/2F,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAAC,IAAIqZ,MAAJ,CAAWwiD,IAAI,CAAC/yB,MAAL,CAAYiuD,YAAZ,CAAyB/2F,CAAzB,CAAX,EAAuC,GAAvC,CAAF;AAA8C,SAAOD,CAAC,CAACkZ,OAAF,CAAUjZ,CAAV,EAAY,EAAZ,CAAP;AAAuB,CAAzG;;AAA0G67D,IAAI,CAAC/yB,MAAL,CAAYkuD,UAAZ,GAAuB,UAASj3F,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACjuB,GAAC,GAAC,IAAIqZ,MAAJ,CAAWwiD,IAAI,CAAC/yB,MAAL,CAAYiuD,YAAZ,CAAyB/2F,CAAzB,CAAX,EAAuC,GAAvC,CAAF;AAA8C,SAAOD,CAAC,CAACkZ,OAAF,CAAUjZ,CAAV,EAAYiuB,CAAC,CAAChV,OAAF,CAAU,KAAV,EAAgB,MAAhB,CAAZ,CAAP;AAA4C,CAAjI;;AACnW4iD,IAAI,CAAC/yB,MAAL,CAAYiuD,YAAZ,GAAyB,UAASh3F,CAAT,EAAW;AAAC,SAAOo9B,MAAM,CAACp9B,CAAD,CAAN,CAAUkZ,OAAV,CAAkB,+BAAlB,EAAkD,MAAlD,EAA0DA,OAA1D,CAAkE,OAAlE,EAA0E,OAA1E,CAAP;AAA0F,CAA/H;;AAAgI4iD,IAAI,CAAC/yB,MAAL,CAAY0qC,MAAZ,GAAmBr2C,MAAM,CAACxnB,SAAP,CAAiB69D,MAAjB,GAAwB,UAASzzE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,CAACyzE,MAAF,CAASxzE,CAAT,CAAP;AAAmB,CAAzD,GAA0D,UAASD,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOvC,KAAK,CAACuC,CAAC,GAAC,CAAH,CAAL,CAAW0a,IAAX,CAAgB3a,CAAhB,CAAP;AAA0B,CAArH;;AAAsH87D,IAAI,CAAC/yB,MAAL,CAAYmuD,SAAZ,GAAsB,UAASl3F,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,GAAC87D,IAAI,CAACC,KAAL,CAAW7tC,CAAX,IAAcluB,CAAC,CAACyZ,OAAF,CAAUyU,CAAV,CAAd,GAA2BkP,MAAM,CAACp9B,CAAD,CAAnC;AAAuCkuB,GAAC,GAACluB,CAAC,CAAC4H,OAAF,CAAU,GAAV,CAAF;AAAiB,GAAC,CAAD,IAAIsmB,CAAJ,KAAQA,CAAC,GAACluB,CAAC,CAACJ,MAAZ;AAAoB,SAAOk8D,IAAI,CAAC/yB,MAAL,CAAY0qC,MAAZ,CAAmB,GAAnB,EAAuBprE,IAAI,CAACge,GAAL,CAAS,CAAT,EAAWpmB,CAAC,GAACiuB,CAAb,CAAvB,IAAwCluB,CAA/C;AAAiD,CAAnK;;AAAoK87D,IAAI,CAAC/yB,MAAL,CAAY4rD,QAAZ,GAAqB,UAAS30F,CAAT,EAAW;AAAC,SAAO,QAAMA,CAAN,GAAQ,EAAR,GAAWo9B,MAAM,CAACp9B,CAAD,CAAxB;AAA4B,CAA7D;;AAC1Z87D,IAAI,CAAC/yB,MAAL,CAAYouD,WAAZ,GAAwB,UAASn3F,CAAT,EAAW;AAAC,SAAOtC,KAAK,CAACkY,SAAN,CAAgB+E,IAAhB,CAAqBlE,IAArB,CAA0B3N,SAA1B,EAAoC,EAApC,CAAP;AAA+C,CAAnF;;AAAoFgzD,IAAI,CAAC/yB,MAAL,CAAYquD,eAAZ,GAA4B,YAAU;AAAC,SAAO/uF,IAAI,CAACC,KAAL,CAAW,aAAWD,IAAI,CAACqlB,MAAL,EAAtB,EAAqClX,QAArC,CAA8C,EAA9C,IAAkDnO,IAAI,CAACuF,GAAL,CAASvF,IAAI,CAACC,KAAL,CAAW,aAAWD,IAAI,CAACqlB,MAAL,EAAtB,IAAqCouC,IAAI,CAAC3zD,GAAL,EAA9C,EAA0DqO,QAA1D,CAAmE,EAAnE,CAAzD;AAAgI,CAAvK;;AAAwKslD,IAAI,CAAC/yB,MAAL,CAAYogD,eAAZ,GAA4BrtB,IAAI,CAAC/yB,MAAL,CAAYi/C,QAAZ,CAAqBmB,eAAjD;;AAAiErtB,IAAI,CAAC/yB,MAAL,CAAYsuD,QAAZ,GAAqB,UAASr3F,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,CAAN,EAAQiuB,CAAC,GAAC,CAAd,EAAgBA,CAAC,GAACluB,CAAC,CAACJ,MAApB,EAA2B,EAAEsuB,CAA7B,EAA+BjuB,CAAC,GAAC,KAAGA,CAAH,GAAKD,CAAC,CAACiY,UAAF,CAAaiW,CAAb,CAAL,KAAuB,CAAzB;;AAA2B,SAAOjuB,CAAP;AAAS,CAApG;;AAAqG67D,IAAI,CAAC/yB,MAAL,CAAYuuD,oBAAZ,GAAiC,aAAWjvF,IAAI,CAACqlB,MAAL,EAAX,GAAyB,CAA1D;;AAClaouC,IAAI,CAAC/yB,MAAL,CAAYwuD,kBAAZ,GAA+B,YAAU;AAAC,SAAM,UAAQz7B,IAAI,CAAC/yB,MAAL,CAAYuuD,oBAAZ,EAAd;AAAiD,CAA3F;;AAA4Fx7B,IAAI,CAAC/yB,MAAL,CAAYyuD,QAAZ,GAAqB,UAASx3F,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC9C,MAAM,CAAC6C,CAAD,CAAZ;AAAgB,SAAO,KAAGC,CAAH,IAAM67D,IAAI,CAAC/yB,MAAL,CAAYw/C,mBAAZ,CAAgCvoF,CAAhC,CAAN,GAAyCwI,GAAzC,GAA6CvI,CAApD;AAAsD,CAAvG;;AAAwG67D,IAAI,CAAC/yB,MAAL,CAAY0uD,gBAAZ,GAA6B,UAASz3F,CAAT,EAAW;AAAC,SAAM,yBAAyBof,IAAzB,CAA8Bpf,CAA9B,CAAN;AAAuC,CAAhF;;AAAiF87D,IAAI,CAAC/yB,MAAL,CAAY2uD,gBAAZ,GAA6B,UAAS13F,CAAT,EAAW;AAAC,SAAM,mBAAmBof,IAAnB,CAAwBpf,CAAxB,CAAN;AAAiC,CAA1E;;AAA2E87D,IAAI,CAAC/yB,MAAL,CAAY4uD,WAAZ,GAAwB,UAAS33F,CAAT,EAAW;AAAC,SAAOo9B,MAAM,CAACp9B,CAAD,CAAN,CAAUkZ,OAAV,CAAkB,YAAlB,EAA+B,UAASlZ,CAAT,EAAWkuB,CAAX,EAAa;AAAC,WAAOA,CAAC,CAACrE,WAAF,EAAP;AAAuB,GAApE,CAAP;AAA6E,CAAjH;;AAChWiyC,IAAI,CAAC/yB,MAAL,CAAY6uD,cAAZ,GAA2B,UAAS53F,CAAT,EAAW;AAAC,SAAOo9B,MAAM,CAACp9B,CAAD,CAAN,CAAUkZ,OAAV,CAAkB,UAAlB,EAA6B,KAA7B,EAAoC+gB,WAApC,EAAP;AAAyD,CAAhG;;AAAiG6hC,IAAI,CAAC/yB,MAAL,CAAY8uD,WAAZ,GAAwB,UAAS73F,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAAC67D,IAAI,CAAC9jD,QAAL,CAAc/X,CAAd,IAAiB67D,IAAI,CAAC/yB,MAAL,CAAYiuD,YAAZ,CAAyB/2F,CAAzB,CAAjB,GAA6C,KAA/C;AAAqD,SAAOD,CAAC,CAACkZ,OAAF,CAAU,IAAII,MAAJ,CAAW,QAAMrZ,CAAC,GAAC,OAAKA,CAAL,GAAO,IAAR,GAAa,EAApB,IAAwB,UAAnC,EAA8C,GAA9C,CAAV,EAA6D,UAASD,CAAT,EAAWC,CAAX,EAAaijB,CAAb,EAAe;AAAC,WAAOjjB,CAAC,GAACijB,CAAC,CAAC2G,WAAF,EAAT;AAAyB,GAAtG,CAAP;AAA+G,CAA1M;;AAA2MiyC,IAAI,CAAC/yB,MAAL,CAAY+uD,UAAZ,GAAuB,UAAS93F,CAAT,EAAW;AAAC,SAAOo9B,MAAM,CAACp9B,CAAC,CAACq+B,MAAF,CAAS,CAAT,CAAD,CAAN,CAAoBxU,WAApB,KAAkCuT,MAAM,CAACp9B,CAAC,CAACkY,MAAF,CAAS,CAAT,CAAD,CAAN,CAAoB+hB,WAApB,EAAzC;AAA2E,CAA9G;;AAC5S6hC,IAAI,CAAC/yB,MAAL,CAAY/uB,QAAZ,GAAqB,UAASha,CAAT,EAAW;AAAC25D,UAAQ,CAAC35D,CAAD,CAAR,KAAcA,CAAC,GAACo9B,MAAM,CAACp9B,CAAD,CAAtB;AAA2B,SAAO87D,IAAI,CAAC9jD,QAAL,CAAchY,CAAd,IAAiB,YAAYof,IAAZ,CAAiBpf,CAAjB,IAAoBga,QAAQ,CAACha,CAAD,EAAG,EAAH,CAA5B,GAAmCga,QAAQ,CAACha,CAAD,EAAG,EAAH,CAA5D,GAAmEwI,GAA1E;AAA8E,CAA1I;;AAA2IszD,IAAI,CAAC/yB,MAAL,CAAYgvD,UAAZ,GAAuB,UAAS/3F,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,GAACA,CAAC,CAACia,KAAF,CAAQha,CAAR,CAAF;;AAAa,OAAI,IAAI6vC,CAAC,GAAC,EAAV,EAAa,IAAE5hB,CAAF,IAAKluB,CAAC,CAACJ,MAApB,GAA4BkwC,CAAC,CAACrxC,IAAF,CAAOuB,CAAC,CAACM,KAAF,EAAP,GAAkB4tB,CAAC,EAAnB;;AAAsBluB,GAAC,CAACJ,MAAF,IAAUkwC,CAAC,CAACrxC,IAAF,CAAOuB,CAAC,CAAC2a,IAAF,CAAO1a,CAAP,CAAP,CAAV;AAA4B,SAAO6vC,CAAP;AAAS,CAA3I;;AAA4IgsB,IAAI,CAAC/yB,MAAL,CAAYivD,aAAZ,GAA0B,UAASh4F,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAGA,CAAH,EAAK,YAAU,OAAOA,CAAjB,KAAqBA,CAAC,GAAC,CAACA,CAAD,CAAvB,EAAL,KAAsC,OAAOD,CAAP;;AAAS,OAAI,IAAIkuB,CAAC,GAAC,CAAC,CAAP,EAAS4hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC7vC,CAAC,CAACL,MAArB,EAA4BkwC,CAAC,EAA7B,EAAgC,IAAG,MAAI7vC,CAAC,CAAC6vC,CAAD,CAAR,EAAY;AAAC,QAAI5sB,CAAC,GAACljB,CAAC,CAACo9D,WAAF,CAAcn9D,CAAC,CAAC6vC,CAAD,CAAf,CAAN;AAA0B5sB,KAAC,GAACgL,CAAF,KAAMA,CAAC,GAAChL,CAAR;AAAW;;AAAA,SAAM,CAAC,CAAD,IAAIgL,CAAJ,GAAMluB,CAAN,GAAQA,CAAC,CAAC4B,KAAF,CAAQssB,CAAC,GAAC,CAAV,CAAd;AAA2B,CAApM;;AACvR4tC,IAAI,CAAC/yB,MAAL,CAAYkvD,YAAZ,GAAyB,UAASj4F,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,EAAN;AAAA,MAAS4hB,CAAC,GAAC,EAAX;AAAc,MAAG9vC,CAAC,IAAEC,CAAN,EAAQ,OAAO,CAAP;AAAS,MAAG,CAACD,CAAC,CAACJ,MAAH,IAAW,CAACK,CAAC,CAACL,MAAjB,EAAwB,OAAOyI,IAAI,CAACge,GAAL,CAASrmB,CAAC,CAACJ,MAAX,EAAkBK,CAAC,CAACL,MAApB,CAAP;;AAAmC,OAAI,IAAIsjB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjjB,CAAC,CAACL,MAAF,GAAS,CAAvB,EAAyBsjB,CAAC,EAA1B,EAA6BgL,CAAC,CAAChL,CAAD,CAAD,GAAKA,CAAL;;AAAO,OAAIA,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACljB,CAAC,CAACJ,MAAZ,EAAmBsjB,CAAC,EAApB,EAAuB;AAAC4sB,KAAC,CAAC,CAAD,CAAD,GAAK5sB,CAAC,GAAC,CAAP;;AAAS,SAAI,IAAIujB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACxmC,CAAC,CAACL,MAAhB,EAAuB6mC,CAAC,EAAxB,EAA2BqJ,CAAC,CAACrJ,CAAC,GAAC,CAAH,CAAD,GAAOp+B,IAAI,CAACe,GAAL,CAAS0mC,CAAC,CAACrJ,CAAD,CAAD,GAAK,CAAd,EAAgBvY,CAAC,CAACuY,CAAC,GAAC,CAAH,CAAD,GAAO,CAAvB,EAAyBvY,CAAC,CAACuY,CAAD,CAAD,GAAKtpC,MAAM,CAAC6C,CAAC,CAACkjB,CAAD,CAAD,IAAMjjB,CAAC,CAACwmC,CAAD,CAAR,CAApC,CAAP;;AAAyD,SAAIA,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACvY,CAAC,CAACtuB,MAAZ,EAAmB6mC,CAAC,EAApB,EAAuBvY,CAAC,CAACuY,CAAD,CAAD,GAAKqJ,CAAC,CAACrJ,CAAD,CAAN;AAAU;;AAAA,SAAOqJ,CAAC,CAAC7vC,CAAC,CAACL,MAAH,CAAR;AAAmB,CAA9U;;AAA+Uk8D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,GAA2B,EAA3B;;AAA8Bp8B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BC,QAA3B,GAAoC,YAAU;AAAC,SAAOr8B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,QAAxC,CAAP;AAAyD,CAAxG;;AAAyG7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BE,SAA3B,GAAqC,YAAU;AAAC,SAAOt8B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,SAAxC,KAAoD7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAA3D;AAA2G,CAA3J;;AAA4J7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BnK,MAA3B,GAAkC,YAAU;AAAC,SAAOjyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAAP;AAAuD,CAApG;;AAClnB7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BG,QAA3B,GAAoC,YAAU;AAAC,SAAOv8B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBO,wBAAzB,CAAkD,QAAlD,KAA6D,CAAC9wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BnK,MAA3B,EAArE;AAAyG,CAAxJ;;AAAyJjyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BI,OAA3B,GAAmC,YAAU;AAAC,SAAOx8B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,OAAxC,KAAkD,CAAC7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BG,QAA3B,EAAnD,IAA0F,CAACv8B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BE,SAA3B,EAA3F,IAAmI,CAACt8B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BnK,MAA3B,EAA3I;AAA+K,CAA7N;;AACzJjyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2B5J,UAA3B,GAAsC,YAAU;AAAC,MAAItuF,CAAC,GAAC87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBK,YAAzB,EAAN;;AAA8C,MAAG1sF,CAAH,EAAK;AAACA,KAAC,GAAC87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBQ,oBAAzB,CAA8C7sF,CAA9C,CAAF;AAAmD,QAAIC,CAAC,GAAC67D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BK,eAA3B,CAA2Cv4F,CAA3C,CAAN;AAAoD,QAAGC,CAAH,EAAK,OAAM,WAASA,CAAC,CAAC,CAAD,CAAV,GAAc67D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BM,iBAA3B,CAA6Cx4F,CAA7C,EAA+C,SAA/C,CAAd,GAAwEC,CAAC,CAAC,CAAD,CAA/E;AAAmFD,KAAC,GAACA,CAAC,CAAC,CAAD,CAAH;AAAO,QAAIkuB,CAAJ;AAAM,QAAGluB,CAAC,KAAGkuB,CAAC,GAACluB,CAAC,CAAC,CAAD,CAAN,CAAD,KAAckuB,CAAC,GAAC,qBAAqB4d,IAArB,CAA0B5d,CAA1B,CAAhB,CAAH,EAAiD,OAAOA,CAAC,CAAC,CAAD,CAAR;AAAY;;AAAA,SAAM,EAAN;AAAS,CAAvX;;AACA4tC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BK,eAA3B,GAA2C,UAASv4F,CAAT,EAAW;AAAC,MAAG,CAAC87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BnK,MAA3B,EAAJ,EAAwC,OAAO/tF,CAAC,CAAC,CAAD,CAAR;;AAAY,OAAI,IAAIC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACD,CAAC,CAACJ,MAAhB,EAAuBK,CAAC,EAAxB,EAA2B;AAAC,QAAIiuB,CAAC,GAACluB,CAAC,CAACC,CAAD,CAAP;AAAW,QAAG,UAAQiuB,CAAC,CAAC,CAAD,CAAZ,EAAgB,OAAOA,CAAP;AAAS;AAAC,CAA5K;;AAA6K4tC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2B1J,iBAA3B,GAA6C,UAASxuF,CAAT,EAAW;AAAC,SAAO,KAAG87D,IAAI,CAAC/yB,MAAL,CAAYogD,eAAZ,CAA4BrtB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2B5J,UAA3B,EAA5B,EAAoEtuF,CAApE,CAAV;AAAiF,CAA1I;;AAA2I87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BM,iBAA3B,GAA6C,UAASx4F,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAM,CAACD,CAAC,GAAC87D,IAAI,CAAC/zD,KAAL,CAAWuN,IAAX,CAAgBtV,CAAhB,EAAkB,UAASA,CAAT,EAAW;AAAC,WAAOC,CAAC,IAAED,CAAC,CAAC,CAAD,CAAX;AAAe,GAA7C,CAAH,KAAoDA,CAAC,CAAC,CAAD,CAArD,IAA0D,EAAhE;AAAmE,CAA9H;;AAA+H87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,GAA6B,EAA7B;;AAAgCymC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BojE,SAA7B,GAAuC,YAAU;AAAC,SAAO38B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,SAAxC,CAAP;AAA0D,CAA5G;;AAA6G7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BqjE,MAA7B,GAAoC,YAAU;AAAC,SAAO58B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAAP;AAAuD,CAAtG;;AAAuG7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BsjE,QAA7B,GAAsC,YAAU;AAAC,SAAO78B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,QAAxC,KAAmD,CAAC7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAApD,IAAqG,CAAC7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAA7G;AAA6J,CAA9M;;AAA+M7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BujE,MAA7B,GAAoC,YAAU;AAAC,SAAO98B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAAP;AAAuD,CAAtG;;AAC13B7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BwjE,KAA7B,GAAmC,YAAU;AAAC,SAAO/8B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BsjE,QAA7B,MAAyC78B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BujE,MAA7B,EAAzC,IAAgF98B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BqjE,MAA7B,EAAvF;AAA6H,CAA3K;;AAA4K58B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6ByjE,WAA7B,GAAyC,YAAU;AAAC,SAAOh9B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,WAAxC,CAAP;AAA4D,CAAhH;;AAAiH7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B0jE,OAA7B,GAAqC,YAAU;AAAC,SAAOj9B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,OAAxC,CAAP;AAAwD,CAAxG;;AAAyG7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B2jE,SAA7B,GAAuC,YAAU;AAAC,SAAOl9B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,SAAxC,CAAP;AAA0D,CAA5G;;AACtY7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B4jE,UAA7B,GAAwC,YAAU;AAAC,SAAOn9B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,MAAxC,CAAP;AAAuD,CAA1G;;AAA2G7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B6jE,YAA7B,GAA0C,YAAU;AAAC,SAAOp9B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,OAAxC,CAAP;AAAwD,CAA7G;;AAA8G7wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B8jE,OAA7B,GAAqC,YAAU;AAAC,SAAOr9B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBO,wBAAzB,CAAkD,OAAlD,CAAP;AAAkE,CAAlH;;AAAmH9wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B+jE,UAA7B,GAAwC,YAAU;AAAC,SAAOt9B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBO,wBAAzB,CAAkD,MAAlD,CAAP;AAAiE,CAApH;;AAC5U9wB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6Bi5D,UAA7B,GAAwC,YAAU;AAAC,MAAItuF,CAAC,GAAC87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBK,YAAzB,EAAN;AAAA,MAA8CzsF,CAAC,GAAC,EAAhD;AAAmD67D,MAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B2jE,SAA7B,MAA0C/4F,CAAC,GAAC,gCAAF,EAAmCA,CAAC,GAAC,CAACD,CAAC,GAACC,CAAC,CAAC6rC,IAAF,CAAO9rC,CAAP,CAAH,IAAcA,CAAC,CAAC,CAAD,CAAf,GAAmB,KAAlG,IAAyG87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BwjE,KAA7B,MAAsC54F,CAAC,GAAC,uCAAF,EAA0CA,CAAC,GAAC,CAACD,CAAC,GAACC,CAAC,CAAC6rC,IAAF,CAAO9rC,CAAP,CAAH,KAAeA,CAAC,CAAC,CAAD,CAAD,CAAKkZ,OAAL,CAAa,IAAb,EAAkB,GAAlB,CAAjG,IAAyH4iD,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6ByjE,WAA7B,MAA4C74F,CAAC,GAAC,qBAAF,EAAwBA,CAAC,GAAC,CAACD,CAAC,GAACC,CAAC,CAAC6rC,IAAF,CAAO9rC,CAAP,CAAH,IAAcA,CAAC,CAAC,CAAD,CAAD,CAAKkZ,OAAL,CAAa,IAAb,EAAkB,GAAlB,CAAd,GAAqC,IAA3G,IAAiH4iD,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B8jE,OAA7B,MAAwCl5F,CAAC,GAAC,mBAAF,EACjeA,CAAC,GAAC,CAACD,CAAC,GAACC,CAAC,CAAC6rC,IAAF,CAAO9rC,CAAP,CAAH,KAAeA,CAAC,CAAC,CAAD,CADua,IACla87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BojE,SAA7B,MAA0Cx4F,CAAC,GAAC,2BAAF,EAA8BA,CAAC,GAAC,CAACD,CAAC,GAACC,CAAC,CAAC6rC,IAAF,CAAO9rC,CAAP,CAAH,KAAeA,CAAC,CAAC,CAAD,CAA1F,IAA+F87D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B4jE,UAA7B,OAA4Ch5F,CAAC,GAAC,wCAAF,EAA2CA,CAAC,GAAC,CAACD,CAAC,GAACC,CAAC,CAAC6rC,IAAF,CAAO9rC,CAAP,CAAH,KAAeA,CAAC,CAAC,CAAD,CAAzG,CADhB;AAC8H,SAAOC,CAAC,IAAE,EAAV;AAAa,CADjP;;AACkP67D,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6Bm5D,iBAA7B,GAA+C,UAASxuF,CAAT,EAAW;AAAC,SAAO,KAAG87D,IAAI,CAAC/yB,MAAL,CAAYogD,eAAZ,CAA4BrtB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6Bi5D,UAA7B,EAA5B,EAAsEtuF,CAAtE,CAAV;AAAmF,CAA9I;;AAA+I87D,IAAI,CAACu9B,OAAL,GAAa,EAAb;;AAAgBv9B,IAAI,CAACu9B,OAAL,CAAa30F,MAAb,GAAoB,UAAS1E,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOA,CAAP;AAAS,CAA3C;;AAA4C67D,IAAI,CAACu9B,OAAL,CAAaC,cAAb,GAA4B,UAASt5F,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAP;AAAS,CAAnD;;AAAoD87D,IAAI,CAACu9B,OAAL,CAAaE,SAAb,GAAuB,UAASv5F,CAAT,EAAW;AAAC87D,MAAI,CAACu9B,OAAL,CAAaE,SAAb,CAAuB,GAAvB,EAA4Bv5F,CAA5B;AAA+B,SAAOA,CAAP;AAAS,CAA3E;;AAA4E87D,IAAI,CAACu9B,OAAL,CAAaE,SAAb,CAAuB,GAAvB,IAA4Bz9B,IAAI,CAAC4D,YAAjC;;AAA8C5D,IAAI,CAACu9B,OAAL,CAAaG,iBAAb,GAA+B,UAASx5F,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG;AAAC,WAAO67D,IAAI,CAACu9B,OAAL,CAAaE,SAAb,CAAuBv5F,CAAC,CAACC,CAAD,CAAxB,GAA6B,CAAC,CAArC;AAAuC,GAA3C,CAA2C,OAAMiuB,CAAN,EAAQ,CAAE;;AAAA,SAAM,CAAC,CAAP;AAAS,CAA3G;;AAA4G4tC,IAAI,CAACu9B,OAAL,CAAaI,KAAb,GAAmB,UAASz5F,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAACA,GAAC,GAACA,CAAC,GAACA,CAAC,CAAC7vC,CAAD,CAAF,GAAMA,CAAT;AAAW,SAAOzD,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCzW,CAArC,EAAuC8vC,CAAvC,IAA0C9vC,CAAC,CAAC8vC,CAAD,CAA3C,GAA+C9vC,CAAC,CAAC8vC,CAAD,CAAD,GAAK5hB,CAAC,CAACjuB,CAAD,CAA5D;AAAgE,CAAhH;;AAAiH67D,IAAI,CAACwJ,SAAL,GAAe,EAAf;AAAkBxJ,IAAI,CAACwJ,SAAL,CAAeo0B,SAAf,GAAyB,CAAC,CAA1B;AAA4B59B,IAAI,CAACwJ,SAAL,CAAeq0B,WAAf,GAA2B,CAAC,CAA5B;AAA8B79B,IAAI,CAACwJ,SAAL,CAAes0B,YAAf,GAA4B,CAAC,CAA7B;AAA+B99B,IAAI,CAACwJ,SAAL,CAAeu0B,aAAf,GAA6B,CAAC,CAA9B;AAAgC/9B,IAAI,CAACwJ,SAAL,CAAew0B,oBAAf,GAAoC,CAAC,CAArC;AAAuCh+B,IAAI,CAACwJ,SAAL,CAAey0B,YAAf,GAA4B,CAAC,CAA7B;AAA+Bj+B,IAAI,CAACwJ,SAAL,CAAe00B,kBAAf,GAAkC,CAAC,CAAnC;AAAqCl+B,IAAI,CAACwJ,SAAL,CAAe20B,cAAf,GAA8Bn+B,IAAI,CAACwJ,SAAL,CAAeo0B,SAAf,IAA0B59B,IAAI,CAACwJ,SAAL,CAAeq0B,WAAzC,IAAsD79B,IAAI,CAACwJ,SAAL,CAAes0B,YAArE,IAAmF99B,IAAI,CAACwJ,SAAL,CAAew0B,oBAAlG,IAAwHh+B,IAAI,CAACwJ,SAAL,CAAeu0B,aAAvI,IAAsJ/9B,IAAI,CAACwJ,SAAL,CAAey0B,YAAnM;;AAAgNj+B,IAAI,CAACwJ,SAAL,CAAe40B,kBAAf,GAAkC,YAAU;AAAC,SAAOp+B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBK,YAAzB,EAAP;AAA+C,CAA5F;;AAC9wC5wB,IAAI,CAACwJ,SAAL,CAAe60B,iBAAf,GAAiC,YAAU;AAAC,SAAOr+B,IAAI,CAAC1gC,MAAL,CAAYiqC,SAAZ,IAAuB,IAA9B;AAAmC,CAA/E;;AAAgFvJ,IAAI,CAACwJ,SAAL,CAAe80B,YAAf,GAA4B,YAAU;AAAC,SAAOt+B,IAAI,CAACwJ,SAAL,CAAe60B,iBAAf,EAAP;AAA0C,CAAjF;;AAAkFr+B,IAAI,CAACwJ,SAAL,CAAe+0B,KAAf,GAAqBv+B,IAAI,CAACwJ,SAAL,CAAe20B,cAAf,GAA8Bn+B,IAAI,CAACwJ,SAAL,CAAey0B,YAA7C,GAA0Dj+B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Be,OAA5B,EAA/E;AAAqH/xB,IAAI,CAACwJ,SAAL,CAAeg1B,EAAf,GAAkBx+B,IAAI,CAACwJ,SAAL,CAAe20B,cAAf,GAA8Bn+B,IAAI,CAACwJ,SAAL,CAAeo0B,SAA7C,GAAuD59B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BgB,IAA5B,EAAzE;AAA4GhyB,IAAI,CAACwJ,SAAL,CAAei1B,IAAf,GAAoBz+B,IAAI,CAACwJ,SAAL,CAAe20B,cAAf,GAA8Bn+B,IAAI,CAACwJ,SAAL,CAAeq0B,WAA7C,GAAyD79B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BnK,MAA3B,EAA7E;AACnYjyB,IAAI,CAACwJ,SAAL,CAAek1B,UAAf,GAA0B1+B,IAAI,CAACwJ,SAAL,CAAei1B,IAAf,IAAqBz+B,IAAI,CAACwJ,SAAL,CAAeg1B,EAA9D;AAAiEx+B,IAAI,CAACwJ,SAAL,CAAem1B,KAAf,GAAqB3+B,IAAI,CAACwJ,SAAL,CAAe20B,cAAf,GAA8Bn+B,IAAI,CAACwJ,SAAL,CAAes0B,YAA7C,GAA0D99B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BI,OAA3B,EAA/E;AAAoHx8B,IAAI,CAACwJ,SAAL,CAAeo1B,MAAf,GAAsB5+B,IAAI,CAACwJ,SAAL,CAAe20B,cAAf,GAA8Bn+B,IAAI,CAACwJ,SAAL,CAAeu0B,aAAf,IAA8B/9B,IAAI,CAACwJ,SAAL,CAAew0B,oBAA3E,GAAgGh+B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB4yB,MAApB,CAA2BG,QAA3B,EAAtH;;AAA4Jv8B,IAAI,CAACwJ,SAAL,CAAeq1B,SAAf,GAAyB,YAAU;AAAC,SAAO7+B,IAAI,CAACwJ,SAAL,CAAeo1B,MAAf,IAAuB5+B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoB+mB,IAApB,CAAyBM,cAAzB,CAAwC,QAAxC,CAA9B;AAAgF,CAApH;;AACjV7wB,IAAI,CAACwJ,SAAL,CAAes1B,MAAf,GAAsB9+B,IAAI,CAACwJ,SAAL,CAAew0B,oBAAf,IAAqCh+B,IAAI,CAACwJ,SAAL,CAAeq1B,SAAf,EAA3D;AAAsF7+B,IAAI,CAACwJ,SAAL,CAAeu1B,MAAf,GAAsB/+B,IAAI,CAACwJ,SAAL,CAAeo1B,MAArC;;AAA4C5+B,IAAI,CAACwJ,SAAL,CAAew1B,kBAAf,GAAkC,YAAU;AAAC,MAAI96F,CAAC,GAAC87D,IAAI,CAACwJ,SAAL,CAAe60B,iBAAf,EAAN;AAAyC,SAAOn6F,CAAC,IAAEA,CAAC,CAACq1B,QAAL,IAAe,EAAtB;AAAyB,CAA/G;;AAAgHymC,IAAI,CAACwJ,SAAL,CAAey1B,QAAf,GAAwBj/B,IAAI,CAACwJ,SAAL,CAAew1B,kBAAf,EAAxB;AAA4Dh/B,IAAI,CAACwJ,SAAL,CAAe01B,UAAf,GAA0B,CAAC,CAA3B;AAA6Bl/B,IAAI,CAACwJ,SAAL,CAAe21B,cAAf,GAA8B,CAAC,CAA/B;AAAiCn/B,IAAI,CAACwJ,SAAL,CAAe41B,YAAf,GAA4B,CAAC,CAA7B;AAA+Bp/B,IAAI,CAACwJ,SAAL,CAAe61B,UAAf,GAA0B,CAAC,CAA3B;AAA6Br/B,IAAI,CAACwJ,SAAL,CAAe81B,cAAf,GAA8B,CAAC,CAA/B;AAAiCt/B,IAAI,CAACwJ,SAAL,CAAe+1B,aAAf,GAA6B,CAAC,CAA9B;AACzcv/B,IAAI,CAACwJ,SAAL,CAAeg2B,WAAf,GAA2B,CAAC,CAA5B;AAA8Bx/B,IAAI,CAACwJ,SAAL,CAAei2B,WAAf,GAA2B,CAAC,CAA5B;AAA8Bz/B,IAAI,CAACwJ,SAAL,CAAek2B,YAAf,GAA4B,CAAC,CAA7B;AAA+B1/B,IAAI,CAACwJ,SAAL,CAAem2B,eAAf,GAA+B,CAAC,CAAhC;AAAkC3/B,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAe01B,UAAf,IAA2Bl/B,IAAI,CAACwJ,SAAL,CAAe21B,cAA1C,IAA0Dn/B,IAAI,CAACwJ,SAAL,CAAe41B,YAAzE,IAAuFp/B,IAAI,CAACwJ,SAAL,CAAe61B,UAAtG,IAAkHr/B,IAAI,CAACwJ,SAAL,CAAe81B,cAAjI,IAAiJt/B,IAAI,CAACwJ,SAAL,CAAe+1B,aAAhK,IAA+Kv/B,IAAI,CAACwJ,SAAL,CAAeg2B,WAA9L,IAA2Mx/B,IAAI,CAACwJ,SAAL,CAAei2B,WAAzP;AAAqQz/B,IAAI,CAACwJ,SAAL,CAAeq2B,GAAf,GAAmB7/B,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAe01B,UAA9C,GAAyDl/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6ByjE,WAA7B,EAA5E;AAClYh9B,IAAI,CAACwJ,SAAL,CAAes2B,OAAf,GAAuB9/B,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAe21B,cAA9C,GAA6Dn/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B2jE,SAA7B,EAApF;;AAA6Hl9B,IAAI,CAACwJ,SAAL,CAAeu2B,cAAf,GAA8B,YAAU;AAAC,SAAO//B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B0jE,OAA7B,MAAwCj9B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B4jE,UAA7B,EAA/C;AAAyF,CAAlI;;AAAmIn9B,IAAI,CAACwJ,SAAL,CAAew2B,KAAf,GAAqBhgC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAe41B,YAA9C,GAA2Dp/B,IAAI,CAACwJ,SAAL,CAAeu2B,cAAf,EAAhF;;AAAgH//B,IAAI,CAACwJ,SAAL,CAAey2B,MAAf,GAAsB,YAAU;AAAC,MAAI/7F,CAAC,GAAC87D,IAAI,CAACwJ,SAAL,CAAe60B,iBAAf,EAAN;AAAyC,SAAM,CAAC,CAACn6F,CAAF,IAAK87D,IAAI,CAAC/yB,MAAL,CAAY4hC,QAAZ,CAAqB3qE,CAAC,CAACg8F,UAAF,IAAc,EAAnC,EAAsC,KAAtC,CAAX;AAAwD,CAAlI;;AAChXlgC,IAAI,CAACwJ,SAAL,CAAe22B,GAAf,GAAmBngC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAe61B,UAA9C,GAAyDr/B,IAAI,CAACwJ,SAAL,CAAey2B,MAAf,EAA5E;AAAoGjgC,IAAI,CAACwJ,SAAL,CAAe42B,OAAf,GAAuBpgC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAe81B,cAA9C,GAA6Dt/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BojE,SAA7B,EAApF;AAA6H38B,IAAI,CAACwJ,SAAL,CAAe62B,MAAf,GAAsBrgC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAe+1B,aAA9C,GAA4Dv/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BsjE,QAA7B,EAAlF;AAA0H78B,IAAI,CAACwJ,SAAL,CAAe82B,IAAf,GAAoBtgC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAeg2B,WAA9C,GAA0Dx/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BujE,MAA7B,EAA9E;AAC3V98B,IAAI,CAACwJ,SAAL,CAAe+2B,IAAf,GAAoBvgC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAei2B,WAA9C,GAA0Dz/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BqjE,MAA7B,EAA9E;AAAoH58B,IAAI,CAACwJ,SAAL,CAAeg3B,GAAf,GAAmBxgC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAe+1B,aAAf,IAA8Bv/B,IAAI,CAACwJ,SAAL,CAAeg2B,WAA7C,IAA0Dx/B,IAAI,CAACwJ,SAAL,CAAei2B,WAAxG,GAAoHz/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BwjE,KAA7B,EAAvI;AAA4K/8B,IAAI,CAACwJ,SAAL,CAAei3B,KAAf,GAAqBzgC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAek2B,YAA9C,GAA2D1/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B8jE,OAA7B,EAAhF;AAAuHr9B,IAAI,CAACwJ,SAAL,CAAek3B,QAAf,GAAwB1gC,IAAI,CAACwJ,SAAL,CAAeo2B,eAAf,GAA+B5/B,IAAI,CAACwJ,SAAL,CAAem2B,eAA9C,GAA8D3/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6B+jE,UAA7B,EAAtF;;AACvZt9B,IAAI,CAACwJ,SAAL,CAAem3B,iBAAf,GAAiC,YAAU;AAAC,MAAIz8F,CAAC,GAAC,EAAN;AAAA,MAASC,CAAC,GAAC67D,IAAI,CAACwJ,SAAL,CAAeo3B,sBAAf,EAAX;AAAmDz8F,GAAC,KAAGD,CAAC,GAACC,CAAC,GAACA,CAAC,CAAC,CAAD,CAAF,GAAM,EAAZ,CAAD;AAAiB,SAAO67D,IAAI,CAACwJ,SAAL,CAAeg1B,EAAf,KAAoBr6F,CAAC,GAAC67D,IAAI,CAACwJ,SAAL,CAAeq3B,gBAAf,EAAF,EAAoC,QAAM18F,CAAN,IAASA,CAAC,GAACuZ,UAAU,CAACxZ,CAAD,CAA7E,IAAkFo9B,MAAM,CAACn9B,CAAD,CAAxF,GAA4FD,CAAnG;AAAqG,CAArN;;AACA87D,IAAI,CAACwJ,SAAL,CAAeo3B,sBAAf,GAAsC,YAAU;AAAC,MAAI18F,CAAC,GAAC87D,IAAI,CAACwJ,SAAL,CAAe40B,kBAAf,EAAN;AAA0C,MAAGp+B,IAAI,CAACwJ,SAAL,CAAem1B,KAAlB,EAAwB,OAAM,qBAAqB3uD,IAArB,CAA0B9rC,CAA1B,CAAN;AAAmC,MAAG87D,IAAI,CAACwJ,SAAL,CAAei1B,IAAlB,EAAuB,OAAM,kBAAkBzuD,IAAlB,CAAuB9rC,CAAvB,CAAN;AAAgC,MAAG87D,IAAI,CAACwJ,SAAL,CAAeg1B,EAAlB,EAAqB,OAAM,mCAAmCxuD,IAAnC,CAAwC9rC,CAAxC,CAAN;AAAiD,MAAG87D,IAAI,CAACwJ,SAAL,CAAeo1B,MAAlB,EAAyB,OAAM,gBAAgB5uD,IAAhB,CAAqB9rC,CAArB,CAAN;AAA8B,MAAG87D,IAAI,CAACwJ,SAAL,CAAe+0B,KAAlB,EAAwB,OAAM,yBAAyBvuD,IAAzB,CAA8B9rC,CAA9B,CAAN;AAAuC,CAAzY;;AAA0Y87D,IAAI,CAACwJ,SAAL,CAAeq3B,gBAAf,GAAgC,YAAU;AAAC,MAAI38F,CAAC,GAAC87D,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAlB;AAA2B,SAAOx9D,CAAC,GAACA,CAAC,CAAC48F,YAAH,GAAgB,KAAK,CAA7B;AAA+B,CAArG;;AAC1Y9gC,IAAI,CAACwJ,SAAL,CAAeu3B,OAAf,GAAuB/gC,IAAI,CAACwJ,SAAL,CAAem3B,iBAAf,EAAvB;;AAA0D3gC,IAAI,CAACwJ,SAAL,CAAe5iC,OAAf,GAAuB,UAAS1iC,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAAC/yB,MAAL,CAAYogD,eAAZ,CAA4BnpF,CAA5B,EAA8BC,CAA9B,CAAP;AAAwC,CAA7E;;AAA8E67D,IAAI,CAACwJ,SAAL,CAAew3B,uBAAf,GAAuC,EAAvC;;AAA0ChhC,IAAI,CAACwJ,SAAL,CAAekpB,iBAAf,GAAiC,UAASxuF,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACwJ,SAAL,CAAe00B,kBAAf,IAAmCl+B,IAAI,CAACu9B,OAAL,CAAaI,KAAb,CAAmB39B,IAAI,CAACwJ,SAAL,CAAew3B,uBAAlC,EAA0D98F,CAA1D,EAA4D,YAAU;AAAC,WAAO,KAAG87D,IAAI,CAAC/yB,MAAL,CAAYogD,eAAZ,CAA4BrtB,IAAI,CAACwJ,SAAL,CAAeu3B,OAA3C,EAAmD78F,CAAnD,CAAV;AAAgE,GAAvI,CAA1C;AAAmL,CAAhO;;AAAiO87D,IAAI,CAACwJ,SAAL,CAAey3B,SAAf,GAAyBjhC,IAAI,CAACwJ,SAAL,CAAekpB,iBAAxC;;AACnZ1yB,IAAI,CAACwJ,SAAL,CAAe03B,sBAAf,GAAsC,UAASh9F,CAAT,EAAW;AAAC,SAAO7C,MAAM,CAAC2+D,IAAI,CAACwJ,SAAL,CAAe23B,aAAhB,CAAN,IAAsCj9F,CAA7C;AAA+C,CAAjG;;AAAkG87D,IAAI,CAACwJ,SAAL,CAAe43B,cAAf,GAA8BphC,IAAI,CAACwJ,SAAL,CAAe03B,sBAA7C;;AAAoElhC,IAAI,CAACwJ,SAAL,CAAe23B,aAAf,GAA6B,YAAU;AAAC,MAAGnhC,IAAI,CAAC1gC,MAAL,CAAYoiC,QAAZ,IAAsB1B,IAAI,CAACwJ,SAAL,CAAeg1B,EAAxC,EAA2C,OAAOx+B,IAAI,CAACwJ,SAAL,CAAeq3B,gBAAf,EAAP;AAAyC,CAA/F,EAA7B;;AAA+H7gC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,GAAuB,EAAvB;AAA0BrhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBC,cAAvB,GAAsC,CAAC,CAAvC;AAAyCthC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB9B,aAAvB,GAAqC,CAAC,CAAtC;AAAwCv/B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB7B,WAAvB,GAAmC,CAAC,CAApC;AAAsCx/B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB/B,cAAvB,GAAsC,CAAC,CAAvC;AAAyCt/B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBE,aAAvB,GAAqC,CAAC,CAAtC;AAAwCvhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBG,aAAvB,GAAqC,CAAC,CAAtC;AACvgBxhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBI,cAAvB,GAAsCzhC,IAAI,CAACwJ,SAAL,CAAeo0B,SAAf,IAA0B59B,IAAI,CAACwJ,SAAL,CAAeq0B,WAAzC,IAAsD79B,IAAI,CAACwJ,SAAL,CAAey0B,YAArE,IAAmFj+B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBC,cAA1G,IAA0HthC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB9B,aAAjJ,IAAgKv/B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB7B,WAAvL,IAAoMx/B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB/B,cAA3N,IAA2Ot/B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBE,aAAlQ,IAAiRvhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBG,aAA9U;AAA4VxhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB9C,KAAvB,GAA6Bv+B,IAAI,CAACwJ,SAAL,CAAe+0B,KAA5C;AAAkDv+B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB7C,EAAvB,GAA0Bx+B,IAAI,CAACwJ,SAAL,CAAeg1B,EAAzC;AAA4Cx+B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB5C,IAAvB,GAA4Bz+B,IAAI,CAACwJ,SAAL,CAAei1B,IAA3C;AAC1bz+B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBK,OAAvB,GAA+B1hC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBI,cAAvB,GAAsCzhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBC,cAA7D,GAA4EthC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Bc,SAA5B,EAA3G;;AAAmJ9xB,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBM,eAAvB,GAAuC,YAAU;AAAC,SAAO3hC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BsjE,QAA7B,MAAyC78B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BqjE,MAA7B,EAAhD;AAAsF,CAAxI;;AAAyI58B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBhB,MAAvB,GAA8BrgC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBI,cAAvB,GAAsCzhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB9B,aAA7D,GAA2Ev/B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBM,eAAvB,EAAzG;AAC5R3hC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBf,IAAvB,GAA4BtgC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBI,cAAvB,GAAsCzhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB7B,WAA7D,GAAyEx/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BujE,MAA7B,EAArG;AAA2I98B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBjB,OAAvB,GAA+BpgC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBI,cAAvB,GAAsCzhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuB/B,cAA7D,GAA4Et/B,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BuB,gBAA5B,EAA3G;AAA0JvyB,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBO,MAAvB,GAA8B5hC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBI,cAAvB,GAAsCzhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBE,aAA7D,GAA2EvhC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4Ba,QAA5B,EAAzG;;AACrS7xB,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBQ,gBAAvB,GAAwC,YAAU;AAAC,SAAO7hC,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBwnB,OAApB,CAA4BoB,QAA5B,MAAwC,CAACpyB,IAAI,CAACswB,IAAL,CAAU9mB,SAAV,CAAoBjwC,QAApB,CAA6BwjE,KAA7B,EAAhD;AAAqF,CAAxI;;AAAyI/8B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBtC,MAAvB,GAA8B/+B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBI,cAAvB,GAAsCzhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBG,aAA7D,GAA2ExhC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBQ,gBAAvB,EAAzG;AAAmJ7hC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,GAAkB,EAAlB;AAAqB29B,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBy/D,wBAAlB,GAA2C,gEAA3C;AAA4G9hC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB0/D,YAAlB,GAA+B/hC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBy/D,wBAAlB,GAA2C,KAA1E;AAAgF9hC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB2/D,oBAAlB,GAAuChiC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBy/D,wBAAlB,GAA2C,KAAlF;AAAwF9hC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB4/D,QAAlB,GAA2B;AAACC,SAAO,EAAC,CAAT;AAAWC,YAAU,EAAC,CAAtB;AAAwBC,SAAO,EAAC,CAAhC;AAAkCC,qBAAmB,EAAC,CAAtD;AAAwDC,oBAAkB,EAAC;AAA3E,CAA3B;AAAyGtiC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBkgE,aAAlB,GAAgC,IAAhC;;AAC9qBviC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBmgE,UAAlB,GAA6B,UAASt+F,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAAC/yB,MAAL,CAAY4hC,QAAZ,CAAqB7O,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBkgE,aAAvC,EAAqDr+F,CAArD,CAAP;AAA+D,CAAxG;;AAAyG87D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBogE,eAAlB,GAAkC,EAAlC;AAAqCziC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBqgE,cAAlB,GAAiC,IAAjC;AAAsC1iC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBsgE,sBAAlB,GAAyC3iC,IAAI,CAACwJ,SAAL,CAAem1B,KAAf,IAAsB3+B,IAAI,CAACwJ,SAAL,CAAeo1B,MAAf,IAAuB,CAAC5+B,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBtC,MAArE,IAA6E/+B,IAAI,CAACwJ,SAAL,CAAe+0B,KAArI;AAA2Iv+B,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBugE,kBAAlB,GAAqC5iC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBsgE,sBAAlB,IAA0C,cAAY,OAAO3iC,IAAI,CAAC1gC,MAAL,CAAYujE,IAA9G;AAC/T7iC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBygE,kBAAlB,GAAqC9iC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBsgE,sBAAlB,IAA0C,CAAC3iC,IAAI,CAACwJ,SAAL,CAAe63B,OAAf,CAAuBtC,MAAxB,IAAgC,CAAC/+B,IAAI,CAACwJ,SAAL,CAAeg1B,EAAhD,IAAoD,cAAY,OAAOx+B,IAAI,CAAC1gC,MAAL,CAAY0uC,IAAlK;;AACAhO,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB0gE,eAAlB,GAAkC,UAAS7+F,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB9R,IAAI,CAAC2F,WAAL,CAAiBzhE,CAAjB,CAApB,EAAwC,+CAAxC;AAAyF,OAAK,CAAL,KAASC,CAAT,KAAaA,CAAC,GAAC67D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB4/D,QAAlB,CAA2BC,OAA1C;AAAmDliC,MAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB2gE,KAAlB;AAA0B7+F,GAAC,GAAC67D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBogE,eAAlB,CAAkCt+F,CAAlC,CAAF;;AAAuC,OAAI,IAAIiuB,CAAC,GAAC,EAAN,EAAS4hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC9vC,CAAC,CAACJ,MAArB,EAA4BkwC,CAAC,IAAE,CAA/B,EAAiC;AAAC,QAAI5sB,CAAC,GAACljB,CAAC,CAAC8vC,CAAD,CAAP;AAAA,QAAWrJ,CAAC,GAACqJ,CAAC,GAAC,CAAF,GAAI9vC,CAAC,CAACJ,MAAnB;AAAA,QAA0Bs7B,CAAC,GAACuL,CAAC,GAACzmC,CAAC,CAAC8vC,CAAC,GAAC,CAAH,CAAF,GAAQ,CAArC;AAAA,QAAuCa,CAAC,GAACb,CAAC,GAAC,CAAF,GAAI9vC,CAAC,CAACJ,MAA/C;AAAA,QAAsDmuB,CAAC,GAAC4iB,CAAC,GAAC3wC,CAAC,CAAC8vC,CAAC,GAAC,CAAH,CAAF,GAAQ,CAAjE;AAAA,QAAmEzY,CAAC,GAACnU,CAAC,IAAE,CAAxE;AAA0EA,KAAC,GAAC,CAACA,CAAC,GAAC,CAAH,KAAO,CAAP,GAASgY,CAAC,IAAE,CAAd;AAAgBA,KAAC,GAAC,CAACA,CAAC,GAAC,EAAH,KAAQ,CAAR,GAAUnN,CAAC,IAAE,CAAf;AAAiBA,KAAC,IAAE,EAAH;AAAM4iB,KAAC,KAAG5iB,CAAC,GAAC,EAAF,EAAK0Y,CAAC,KAAGvL,CAAC,GAAC,EAAL,CAAT,CAAD;AAAoBhN,KAAC,CAACzvB,IAAF,CAAOwB,CAAC,CAACo3B,CAAD,CAAR,EAAYp3B,CAAC,CAACijB,CAAD,CAAb,EAAiBjjB,CAAC,CAACi7B,CAAD,CAAD,IAAM,EAAvB,EAA0Bj7B,CAAC,CAAC8tB,CAAD,CAAD,IAAM,EAAhC;AAAoC;;AAAA,SAAOG,CAAC,CAACvT,IAAF,CAAO,EAAP,CAAP;AAAkB,CAA1d;;AACAmhD,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB4gE,YAAlB,GAA+B,UAAS/+F,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO67D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBugE,kBAAlB,IAAsC,CAACz+F,CAAvC,GAAyC67D,IAAI,CAAC1gC,MAAL,CAAYujE,IAAZ,CAAiB3+F,CAAjB,CAAzC,GAA6D87D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB0gE,eAAlB,CAAkC/iC,IAAI,CAACv+B,KAAL,CAAW02C,iBAAX,CAA6Bj0E,CAA7B,CAAlC,EAAkEC,CAAlE,CAApE;AAAyI,CAAtL;;AAAuL67D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB6gE,YAAlB,GAA+B,UAASh/F,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG67D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBygE,kBAAlB,IAAsC,CAAC3+F,CAA1C,EAA4C,OAAO67D,IAAI,CAAC1gC,MAAL,CAAY0uC,IAAZ,CAAiB9pE,CAAjB,CAAP;AAA2B,MAAIkuB,CAAC,GAAC,EAAN;AAAS4tC,MAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB8gE,qBAAlB,CAAwCj/F,CAAxC,EAA0C,UAASA,CAAT,EAAW;AAACkuB,KAAC,IAAEkP,MAAM,CAACC,YAAP,CAAoBr9B,CAApB,CAAH;AAA0B,GAAhF;AAAkF,SAAOkuB,CAAP;AAAS,CAAxN;;AACvL4tC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB+gE,uBAAlB,GAA0C,UAASl/F,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,EAAN;AAAS4tC,MAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB8gE,qBAAlB,CAAwCj/F,CAAxC,EAA0C,UAASA,CAAT,EAAW;AAACkuB,KAAC,CAACzvB,IAAF,CAAOuB,CAAP;AAAU,GAAhE;AAAkE,SAAOkuB,CAAP;AAAS,CAA5I;;AACA4tC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBghE,wBAAlB,GAA2C,UAASn/F,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC9R,IAAI,CAACwJ,SAAL,CAAeg1B,EAAhB,IAAoBx+B,IAAI,CAACwJ,SAAL,CAAekpB,iBAAf,CAAiC,IAAjC,CAAxC,EAA+E,uCAA/E;AAAwH,MAAIvuF,CAAC,GAACD,CAAC,CAACJ,MAAR;AAAA,MAAesuB,CAAC,GAAC,IAAEjuB,CAAF,GAAI,CAArB;AAAuBiuB,GAAC,GAAC,CAAF,GAAIA,CAAC,GAAC7lB,IAAI,CAACC,KAAL,CAAW4lB,CAAX,CAAN,GAAoB4tC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBmgE,UAAlB,CAA6Bt+F,CAAC,CAACC,CAAC,GAAC,CAAH,CAA9B,MAAuCiuB,CAAC,GAAC4tC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBmgE,UAAlB,CAA6Bt+F,CAAC,CAACC,CAAC,GAAC,CAAH,CAA9B,IAAqCiuB,CAAC,GAAC,CAAvC,GAAyCA,CAAC,GAAC,CAApF,CAApB;AAA2G,MAAI4hB,CAAC,GAAC,IAAI/zB,UAAJ,CAAemS,CAAf,CAAN;AAAA,MAAwBhL,CAAC,GAAC,CAA1B;AAA4B44C,MAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB8gE,qBAAlB,CAAwCj/F,CAAxC,EAA0C,UAASA,CAAT,EAAW;AAAC8vC,KAAC,CAAC5sB,CAAC,EAAF,CAAD,GAAOljB,CAAP;AAAS,GAA/D;AAAiE,SAAO8vC,CAAC,CAACsvD,QAAF,CAAW,CAAX,EAAal8E,CAAb,CAAP;AAAuB,CAAra;;AACA44C,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB8gE,qBAAlB,GAAwC,UAASj/F,CAAT,EAAWC,CAAX,EAAa;AAAC,WAASiuB,CAAT,CAAWjuB,CAAX,EAAa;AAAC,WAAK6vC,CAAC,GAAC9vC,CAAC,CAACJ,MAAT,GAAiB;AAAC,UAAIsuB,CAAC,GAACluB,CAAC,CAACq+B,MAAF,CAASyR,CAAC,EAAV,CAAN;AAAA,UAAoB5sB,CAAC,GAAC44C,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBqgE,cAAlB,CAAiCtwE,CAAjC,CAAtB;AAA0D,UAAG,QAAMhL,CAAT,EAAW,OAAOA,CAAP;AAAS,UAAG,CAAC44C,IAAI,CAAC/yB,MAAL,CAAYw/C,mBAAZ,CAAgCr6D,CAAhC,CAAJ,EAAuC,MAAM9vB,KAAK,CAAC,sCAAoC8vB,CAArC,CAAX;AAAoD;;AAAA,WAAOjuB,CAAP;AAAS;;AAAA67D,MAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB2gE,KAAlB;;AAA0B,OAAI,IAAIhvD,CAAC,GAAC,CAAV,IAAc;AAAC,QAAI5sB,CAAC,GAACgL,CAAC,CAAC,CAAC,CAAF,CAAP;AAAA,QAAYuY,CAAC,GAACvY,CAAC,CAAC,CAAD,CAAf;AAAA,QAAmBgN,CAAC,GAAChN,CAAC,CAAC,EAAD,CAAtB;AAAA,QAA2ByiB,CAAC,GAACziB,CAAC,CAAC,EAAD,CAA9B;AAAmC,QAAG,OAAKyiB,CAAL,IAAQ,CAAC,CAAD,KAAKztB,CAAhB,EAAkB;AAAMjjB,KAAC,CAACijB,CAAC,IAAE,CAAH,GAAKujB,CAAC,IAAE,CAAT,CAAD;AAAa,UAAIvL,CAAJ,KAAQj7B,CAAC,CAACwmC,CAAC,IAAE,CAAH,GAAK,GAAL,GAASvL,CAAC,IAAE,CAAb,CAAD,EAAiB,MAAIyV,CAAJ,IAAO1wC,CAAC,CAACi7B,CAAC,IAAE,CAAH,GAAK,GAAL,GAASyV,CAAV,CAAjC;AAA+C;AAAC,CAAza;;AACAmrB,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB2gE,KAAlB,GAAwB,YAAU;AAAC,MAAG,CAAChjC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBqgE,cAAtB,EAAqC;AAAC1iC,QAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBqgE,cAAlB,GAAiC,EAAjC;;AAAoC,SAAI,IAAIx+F,CAAC,GAAC87D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBy/D,wBAAlB,CAA2C3jF,KAA3C,CAAiD,EAAjD,CAAN,EAA2Dha,CAAC,GAAC,CAAC,KAAD,EAAO,IAAP,EAAY,KAAZ,EAAkB,KAAlB,EAAwB,IAAxB,CAA7D,EAA2FiuB,CAAC,GAAC,CAAjG,EAAmG,IAAEA,CAArG,EAAuGA,CAAC,EAAxG,EAA2G;AAAC,UAAI4hB,CAAC,GAAC9vC,CAAC,CAAC42B,MAAF,CAAS32B,CAAC,CAACiuB,CAAD,CAAD,CAAKjU,KAAL,CAAW,EAAX,CAAT,CAAN;AAA+B6hD,UAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBogE,eAAlB,CAAkCrwE,CAAlC,IAAqC4hB,CAArC;;AAAuC,WAAI,IAAI5sB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC4sB,CAAC,CAAClwC,MAAhB,EAAuBsjB,CAAC,EAAxB,EAA2B;AAAC,YAAIujB,CAAC,GAACqJ,CAAC,CAAC5sB,CAAD,CAAP;AAAA,YAAWgY,CAAC,GAAC4gC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBqgE,cAAlB,CAAiC/3D,CAAjC,CAAb;AAAiD,aAAK,CAAL,KAASvL,CAAT,GAAW4gC,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBqgE,cAAlB,CAAiC/3D,CAAjC,IAAoCvjB,CAA/C,GAAiD44C,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB1yC,CAAC,KAAGhY,CAAxB,CAAjD;AAA4E;AAAC;AAAC;AAAC,CAA3b;;AAA4byrD,IAAI,CAAC0wB,KAAL,GAAW,EAAX;AAAc1wB,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,CAAtB;AAAwB3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAAvB;;AAAyB5wB,IAAI,CAAC0wB,KAAL,CAAWG,WAAX,GAAuB,UAASx/F,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACD,CAAC,KAAG,CAAV;AAAYA,GAAC,GAACqI,IAAI,CAACC,KAAL,CAAW,CAACtI,CAAC,GAACC,CAAH,IAAM0uE,IAAI,CAACC,eAAL,CAAqByC,SAAtC,MAAmD,CAArD;AAAuD1C,MAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsBr/F,CAAtB;AAAwB0uE,MAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuBv/F,CAAvB;AAAyB,CAAvJ;;AAAwJ2uE,IAAI,CAAC0wB,KAAL,CAAWI,UAAX,GAAsB,UAASz/F,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAED,CAAR;AAAUA,GAAC,GAACqI,IAAI,CAACuF,GAAL,CAAS5N,CAAT,CAAF;AAAc,MAAIkuB,CAAC,GAACluB,CAAC,KAAG,CAAV;AAAYA,GAAC,GAACqI,IAAI,CAACC,KAAL,CAAW,CAACtI,CAAC,GAACkuB,CAAH,IAAMygD,IAAI,CAACC,eAAL,CAAqByC,SAAtC,CAAF;AAAmDrxE,GAAC,MAAI,CAAL;AAAOC,GAAC,KAAGD,CAAC,GAAC,CAACA,CAAD,KAAK,CAAP,EAASkuB,CAAC,GAAC,CAAC,CAACA,CAAD,KAAK,CAAN,IAAS,CAApB,EAAsB,aAAWA,CAAX,KAAeA,CAAC,GAAC,CAAF,EAAIluB,CAAC,EAAL,EAAQ,aAAWA,CAAX,KAAeA,CAAC,GAAC,CAAjB,CAAvB,CAAzB,CAAD;AAAuE2uE,MAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsBpxE,CAAtB;AAAwBygD,MAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuBv/F,CAAvB;AAAyB,CAAxP;;AACnpB2uE,IAAI,CAAC0wB,KAAL,CAAWK,aAAX,GAAyB,UAAS1/F,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAED,CAAR;AAAUA,GAAC,GAAC,IAAEqI,IAAI,CAACuF,GAAL,CAAS5N,CAAT,CAAJ;AAAgB2uE,MAAI,CAAC0wB,KAAL,CAAWG,WAAX,CAAuBx/F,CAAvB;AAA0BA,GAAC,GAAC2uE,IAAI,CAAC0wB,KAAL,CAAWC,UAAb;AAAwB,MAAIpxE,CAAC,GAACygD,IAAI,CAAC0wB,KAAL,CAAWE,WAAjB;AAA6Bt/F,GAAC,KAAG,KAAGD,CAAH,GAAK,KAAGkuB,CAAH,GAAKA,CAAC,GAACluB,CAAC,GAAC,UAAT,IAAqBkuB,CAAC,IAAGluB,CAAC,GAAC,UAA3B,CAAL,GAA4CA,CAAC,EAAhD,CAAD;AAAqD2uE,MAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsBt/F,CAAtB;AAAwB2uE,MAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuBrxE,CAAvB;AAAyB,CAApP;;AACAygD,IAAI,CAAC0wB,KAAL,CAAWM,YAAX,GAAwB,UAAS3/F,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAED,CAAF,GAAI,CAAJ,GAAM,CAAZ;AAAcA,GAAC,GAACC,CAAC,GAAC,CAACD,CAAF,GAAIA,CAAP;AAAS,MAAG,MAAIA,CAAP,EAAS,IAAE,IAAEA,CAAJ,IAAO2uE,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAAvB,EAAyB5wB,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,CAAtD,KAA0D3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAAvB,EAAyB5wB,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,UAAzG,EAAT,KAAmI,IAAGj4F,KAAK,CAACrH,CAAD,CAAR,EAAY2uE,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAAvB,EAAyB5wB,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,UAA/C,CAAZ,KAA2E,IAAGt/F,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBkC,WAA1B,EAAsCnC,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAAvB,EAAyB5wB,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,CAACr/F,CAAC,IAAE,EAAH,GAAM,UAAP,MAAqB,CAApE,CAAtC,KAAiH,IAAGD,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBiC,WAA1B,EAAsC7wE,CAAC,GAACqI,IAAI,CAACwQ,KAAL,CAAW7Y,CAAC,GAACqI,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAW,CAAC,GAAZ,CAAb,CAAF,EAAiCmwC,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAAxD,EAA0D5wB,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,CAACr/F,CAAC,IAAE,EAAH,GACjfD,CADgf,MAC3e,CAD2Z,CAAtC,KAC/W;AAAC,QAAIkuB,CAAC,GAAC7lB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACu3F,GAAL,CAAS5/F,CAAT,IAAYqI,IAAI,CAACw3F,GAA5B,CAAN;AAAuC7/F,KAAC,IAAEqI,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAW,CAACtQ,CAAZ,CAAH;AAAkBluB,KAAC,GAACqI,IAAI,CAACwQ,KAAL,CAAW7Y,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBuC,SAAlC,CAAF;AAA+C,gBAAUnxE,CAAV,IAAa,EAAEkuB,CAAf;AAAiBygD,QAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAAvB;AAAyB5wB,QAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,CAACr/F,CAAC,IAAE,EAAH,GAAMiuB,CAAC,GAAC,GAAF,IAAO,EAAb,GAAgBluB,CAAC,GAAC,OAAnB,MAA8B,CAApD;AAAsD;AAAC,CADrN;;AAEA2uE,IAAI,CAAC0wB,KAAL,CAAWS,YAAX,GAAwB,UAAS9/F,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAED,CAAF,GAAI,CAAJ,GAAM,CAAZ;AAAcA,GAAC,GAACC,CAAC,GAAC,CAACD,CAAF,GAAIA,CAAP;AAAS,MAAG,MAAIA,CAAP,EAAS2uE,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,IAAE,IAAEv/F,CAAJ,GAAM,CAAN,GAAQ,UAA/B,EAA0C2uE,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,CAAhE,CAAT,KAAgF,IAAGj4F,KAAK,CAACrH,CAAD,CAAR,EAAY2uE,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,UAAvB,EAAkC5wB,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,UAAxD,CAAZ,KAAoF,IAAGt/F,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBqC,WAA1B,EAAsCtC,IAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAACt/F,CAAC,IAAE,EAAH,GAAM,UAAP,MAAqB,CAA5C,EAA8C0uE,IAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsB,CAApE,CAAtC,KAAiH,IAAGt/F,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBoC,WAA1B,EAAsC;AAAC,QAAI9iD,CAAC,GAACluB,CAAC,GAACqI,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAW,CAAC,IAAZ,CAAR;AAA0Bx+B,KAAC,GAACkuB,CAAC,GAACygD,IAAI,CAACC,eAAL,CAAqByC,SAAzB;AAAmC1C,QAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAACt/F,CAAC,IAAE,EAAH,GAAMD,CAAP,MAAY,CAAnC;AAAqC2uE,QAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsBpxE,CAAC,KAAG,CAA1B;AAA4B,GAArK,MAAyK;AAACA,KAAC,GAC3fluB,CAD0f;AACxf,QAAI8vC,CAAC,GAAC,CAAN;AAAQ,QAAG,KAAG5hB,CAAN,EAAQ,OAAK,KAAGA,CAAH,IAAM,OAAK4hB,CAAhB,GAAmBA,CAAC,IAAG5hB,CAAC,IAAE,CAAP,CAA3B,KAAyC,OAAK,IAAEA,CAAF,IAAK,CAAC,IAAD,GAAM4hB,CAAhB,GAAmB5hB,CAAC,IAAE,CAAH,EAAK4hB,CAAC,EAAN;AAAS5hB,KAAC,GAACluB,CAAC,GAACqI,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAW,CAACsR,CAAZ,CAAJ;AAAmB9vC,KAAC,GAACkuB,CAAC,GAACygD,IAAI,CAACC,eAAL,CAAqBsC,SAAvB,GAAiC,OAAnC;AAA2ChjD,KAAC,GAACA,CAAC,GAACygD,IAAI,CAACC,eAAL,CAAqB0C,SAAvB,KAAmC,CAArC;AAAuC3C,QAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB,CAACt/F,CAAC,IAAE,EAAH,GAAM6vC,CAAC,GAAC,IAAF,IAAQ,EAAd,GAAiB9vC,CAAlB,MAAuB,CAA9C;AAAgD2uE,QAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsBpxE,CAAtB;AAAwB;AAAC,CAD7P;;AAEAygD,IAAI,CAAC0wB,KAAL,CAAWU,WAAX,GAAuB,UAAS//F,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACD,CAAC,CAACiY,UAAF,CAAa,CAAb,CAAN;AAAA,MAAsBiW,CAAC,GAACluB,CAAC,CAACiY,UAAF,CAAa,CAAb,CAAxB;AAAA,MAAwC63B,CAAC,GAAC9vC,CAAC,CAACiY,UAAF,CAAa,CAAb,CAA1C;AAAA,MAA0DiL,CAAC,GAACljB,CAAC,CAACiY,UAAF,CAAa,CAAb,CAA5D;AAAA,MAA4EwuB,CAAC,GAACzmC,CAAC,CAACiY,UAAF,CAAa,CAAb,CAA9E;AAAA,MAA8FijB,CAAC,GAACl7B,CAAC,CAACiY,UAAF,CAAa,CAAb,CAAhG;AAAA,MAAgH04B,CAAC,GAAC3wC,CAAC,CAACiY,UAAF,CAAa,CAAb,CAAlH;AAAkIjY,GAAC,GAACA,CAAC,CAACiY,UAAF,CAAa,CAAb,CAAF;AAAkB02D,MAAI,CAAC0wB,KAAL,CAAWC,UAAX,GAAsBr/F,CAAC,IAAEiuB,CAAC,IAAE,CAAL,CAAD,IAAU4hB,CAAC,IAAE,EAAb,KAAkB5sB,CAAC,IAAE,EAArB,MAA2B,CAAjD;AAAmDyrD,MAAI,CAAC0wB,KAAL,CAAWE,WAAX,GAAuB94D,CAAC,IAAEvL,CAAC,IAAE,CAAL,CAAD,IAAUyV,CAAC,IAAE,EAAb,KAAkB3wC,CAAC,IAAE,EAArB,MAA2B,CAAlD;AAAoD,CAA9R;;AAA+R2uE,IAAI,CAAC0wB,KAAL,CAAWW,UAAX,GAAsB,UAAShgG,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOA,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqByC,SAAvB,IAAkCrxE,CAAC,KAAG,CAAtC,CAAP;AAAgD,CAApF;;AAC/R2uE,IAAI,CAAC0wB,KAAL,CAAWY,SAAX,GAAqB,UAASjgG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACjuB,CAAC,GAAC,UAAR;AAAmBiuB,GAAC,KAAGluB,CAAC,GAAC,CAACA,CAAD,GAAG,CAAH,KAAO,CAAT,EAAWC,CAAC,GAAC,CAACA,CAAD,KAAK,CAAlB,EAAoB,KAAGD,CAAH,KAAOC,CAAC,GAACA,CAAC,GAAC,CAAF,KAAM,CAAf,CAAvB,CAAD;AAA2CD,GAAC,GAAC2uE,IAAI,CAAC0wB,KAAL,CAAWW,UAAX,CAAsBhgG,CAAtB,EAAwBC,CAAxB,CAAF;AAA6B,SAAOiuB,CAAC,GAAC,CAACluB,CAAF,GAAIA,CAAZ;AAAc,CAA5I;;AAA6I2uE,IAAI,CAAC0wB,KAAL,CAAWa,UAAX,GAAsB,UAASlgG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC7vC,CAAC,IAAE,EAAT;AAAY,SAAOiuB,CAAC,CAACluB,CAAC,IAAE,CAAH,GAAK8vC,CAAN,EAAQ,CAAC7vC,CAAC,IAAE,CAAH,GAAKD,CAAC,KAAG,EAAV,IAAc8vC,CAAtB,CAAR;AAAiC,CAAnF;;AAAoF6+B,IAAI,CAAC0wB,KAAL,CAAWc,YAAX,GAAwB,UAASngG,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO0uE,IAAI,CAAC0wB,KAAL,CAAWe,YAAX,CAAwBpgG,CAAxB,EAA0BC,CAA1B,EAA4B0uE,IAAI,CAAC0wB,KAAL,CAAWY,SAAvC,CAAP;AAAyD,CAA/F;;AAAgGtxB,IAAI,CAAC0wB,KAAL,CAAWe,YAAX,GAAwB,UAASpgG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC,EAAE9vC,CAAC,GAAC,CAAJ,CAAN;AAAa,SAAOkuB,CAAC,CAAC,CAACluB,CAAC,KAAG,CAAJ,GAAMC,CAAC,IAAE,EAAV,IAAc6vC,CAAf,EAAiB7vC,CAAC,KAAG,CAAJ,GAAM6vC,CAAvB,CAAR;AAAkC,CAAvF;;AACjU6+B,IAAI,CAAC0wB,KAAL,CAAWgB,WAAX,GAAuB,UAASrgG,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,GAAC,KAAGD,CAAC,IAAE,EAAN,IAAU,CAAZ;AAAc,MAAIkuB,CAAC,GAACluB,CAAC,KAAG,EAAJ,GAAO,GAAb;AAAiBA,GAAC,IAAE,OAAH;AAAW,SAAO,OAAKkuB,CAAL,GAAOluB,CAAC,GAACwI,GAAD,GAAK83F,QAAQ,GAACrgG,CAAtB,GAAwB,KAAGiuB,CAAH,GAAKjuB,CAAC,GAACoI,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAW,CAAC,GAAZ,CAAF,GAAmBx+B,CAAxB,GAA0BC,CAAC,GAACoI,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAWtQ,CAAC,GAAC,GAAb,CAAF,IAAqBluB,CAAC,GAACqI,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAW,EAAX,CAAvB,CAAzD;AAAgG,CAA/K;;AAAgLmwC,IAAI,CAAC0wB,KAAL,CAAWkB,WAAX,GAAuB,UAASvgG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,KAAGjuB,CAAC,IAAE,EAAN,IAAU,CAAhB;AAAA,MAAkB6vC,CAAC,GAAC7vC,CAAC,KAAG,EAAJ,GAAO,IAA3B;AAAgCD,GAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqByC,SAArB,IAAgCpxE,CAAC,GAAC,OAAlC,IAA2CD,CAA7C;AAA+C,SAAO,QAAM8vC,CAAN,GAAQ9vC,CAAC,GAACwI,GAAD,GAAK83F,QAAQ,GAACpyE,CAAvB,GAAyB,KAAG4hB,CAAH,GAAK5hB,CAAC,GAAC7lB,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAW,CAAC,IAAZ,CAAF,GAAoBx+B,CAAzB,GAA2BkuB,CAAC,GAAC7lB,IAAI,CAACm2B,GAAL,CAAS,CAAT,EAAWsR,CAAC,GAAC,IAAb,CAAF,IAAsB9vC,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqB0C,SAA7C,CAA3D;AAAmH,CAAvO;;AAChL3C,IAAI,CAAC0wB,KAAL,CAAWmB,UAAX,GAAsB,UAASxgG,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOm9B,MAAM,CAACC,YAAP,CAAoBr9B,CAAC,KAAG,CAAJ,GAAM,GAA1B,EAA8BA,CAAC,KAAG,CAAJ,GAAM,GAApC,EAAwCA,CAAC,KAAG,EAAJ,GAAO,GAA/C,EAAmDA,CAAC,KAAG,EAAJ,GAAO,GAA1D,EAA8DC,CAAC,KAAG,CAAJ,GAAM,GAApE,EAAwEA,CAAC,KAAG,CAAJ,GAAM,GAA9E,EAAkFA,CAAC,KAAG,EAAJ,GAAO,GAAzF,EAA6FA,CAAC,KAAG,EAAJ,GAAO,GAApG,CAAP;AAAgH,CAApJ;;AAAqJ0uE,IAAI,CAAC0wB,KAAL,CAAWoB,MAAX,GAAkB,mBAAmBxmF,KAAnB,CAAyB,EAAzB,CAAlB;AAA+C00D,IAAI,CAAC0wB,KAAL,CAAWqB,eAAX,GAA2B,EAA3B;AAA8B/xB,IAAI,CAAC0wB,KAAL,CAAWsB,YAAX,GAAwB,EAAxB;;AAClOhyB,IAAI,CAAC0wB,KAAL,CAAWuB,yBAAX,GAAqC,UAAS5gG,CAAT,EAAWC,CAAX,EAAa;AAAC,WAASiuB,CAAT,CAAWluB,CAAX,EAAaC,CAAb,EAAe;AAACD,KAAC,GAACA,CAAC,GAACo9B,MAAM,CAACp9B,CAAD,CAAP,GAAW,EAAd;AAAiB,WAAOC,CAAC,GAAC,UAAU2B,KAAV,CAAgB5B,CAAC,CAACJ,MAAlB,IAA0BI,CAA3B,GAA6BA,CAArC;AAAuC;;AAAA,MAAG,WAASC,CAAZ,EAAc,OAAM,KAAG0uE,IAAI,CAAC0wB,KAAL,CAAWW,UAAX,CAAsBhgG,CAAtB,EAAwBC,CAAxB,CAAT;AAAoC,MAAI6vC,CAAC,GAAC,CAAC9vC,CAAC,KAAG,EAAJ,GAAOC,CAAC,IAAE,CAAX,MAAgB,CAAhB,GAAkB,QAAxB;AAAiCA,GAAC,GAACA,CAAC,IAAE,EAAH,GAAM,KAAR;AAAcD,GAAC,GAAC,CAACA,CAAC,GAAC,QAAH,IAAa,UAAQ8vC,CAArB,GAAuB,UAAQ7vC,CAAjC;AAAmC6vC,GAAC,IAAE,UAAQ7vC,CAAX;AAAaA,GAAC,IAAE,CAAH;AAAK,SAAKD,CAAL,KAAS8vC,CAAC,IAAEznC,IAAI,CAACC,KAAL,CAAWtI,CAAC,GAAC,GAAb,CAAH,EAAqBA,CAAC,IAAE,GAAjC;AAAsC,SAAK8vC,CAAL,KAAS7vC,CAAC,IAAEoI,IAAI,CAACC,KAAL,CAAWwnC,CAAC,GAAC,GAAb,CAAH,EAAqBA,CAAC,IAAE,GAAjC;AAAsC,SAAO5hB,CAAC,CAACjuB,CAAD,EAAG,CAAH,CAAD,GAAOiuB,CAAC,CAAC4hB,CAAD,EAAG7vC,CAAH,CAAR,GAAciuB,CAAC,CAACluB,CAAD,EAAG,CAAH,CAAtB;AAA4B,CAAzX;;AACA2uE,IAAI,CAAC0wB,KAAL,CAAWwB,uBAAX,GAAmC,UAAS7gG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACjuB,CAAC,GAAC,UAAR;AAAmBiuB,GAAC,KAAGluB,CAAC,GAAC,CAACA,CAAD,GAAG,CAAH,KAAO,CAAT,EAAWC,CAAC,GAAC,CAACA,CAAD,IAAI,KAAGD,CAAH,GAAK,CAAL,GAAO,CAAX,MAAgB,CAAhC,CAAD;AAAoCA,GAAC,GAAC2uE,IAAI,CAAC0wB,KAAL,CAAWuB,yBAAX,CAAqC5gG,CAArC,EAAuCC,CAAvC,CAAF;AAA4C,SAAOiuB,CAAC,GAAC,MAAIluB,CAAL,GAAOA,CAAf;AAAiB,CAArK;;AAAsK2uE,IAAI,CAAC0wB,KAAL,CAAWyB,qBAAX,GAAiC,UAAS9gG,CAAT,EAAWC,CAAX,EAAa;AAAC0uE,MAAI,CAAC0wB,KAAL,CAAWU,WAAX,CAAuB//F,CAAvB;AAA0BA,GAAC,GAAC2uE,IAAI,CAAC0wB,KAAL,CAAWC,UAAb;AAAwB,MAAIpxE,CAAC,GAACygD,IAAI,CAAC0wB,KAAL,CAAWE,WAAjB;AAA6B,SAAOt/F,CAAC,GAAC0uE,IAAI,CAAC0wB,KAAL,CAAWwB,uBAAX,CAAmC7gG,CAAnC,EAAqCkuB,CAArC,CAAD,GAAyCygD,IAAI,CAAC0wB,KAAL,CAAWuB,yBAAX,CAAqC5gG,CAArC,EAAuCkuB,CAAvC,CAAjD;AAA2F,CAAzN;;AACtKygD,IAAI,CAAC0wB,KAAL,CAAW0B,2BAAX,GAAuC,UAAS/gG,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAC,GAACxwB,KAAK,CAACsC,CAAC,CAACJ,MAAH,CAAX,EAAsBkwC,CAAC,GAAC,CAA5B,EAA8BA,CAAC,GAAC9vC,CAAC,CAACJ,MAAlC,EAAyCkwC,CAAC,EAA1C,EAA6C5hB,CAAC,CAAC4hB,CAAD,CAAD,GAAK6+B,IAAI,CAAC0wB,KAAL,CAAWyB,qBAAX,CAAiC9gG,CAAC,CAAC8vC,CAAD,CAAlC,EAAsC7vC,CAAtC,CAAL;;AAA8C,SAAOiuB,CAAP;AAAS,CAAzJ;;AACAygD,IAAI,CAAC0wB,KAAL,CAAW2B,qBAAX,GAAiC,UAAShhG,CAAT,EAAW;AAAC,WAASC,CAAT,CAAWD,CAAX,EAAaC,CAAb,EAAe;AAAC,SAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAY,IAAEA,CAAF,KAAM,MAAIluB,CAAJ,IAAO,IAAEC,CAAf,CAAZ,EAA8BiuB,CAAC,EAA/B,EAAkCjuB,CAAC,GAACD,CAAC,GAACkjB,CAAC,CAACgL,CAAD,CAAH,GAAOjuB,CAAT,EAAWijB,CAAC,CAACgL,CAAD,CAAD,GAAKjuB,CAAC,GAAC,GAAlB,EAAsBA,CAAC,MAAI,CAA3B;AAA6B;;AAAA,WAASiuB,CAAT,GAAY;AAAC,SAAI,IAAIluB,CAAC,GAAC,CAAV,EAAY,IAAEA,CAAd,EAAgBA,CAAC,EAAjB,EAAoBkjB,CAAC,CAACljB,CAAD,CAAD,GAAK,CAACkjB,CAAC,CAACljB,CAAD,CAAF,GAAM,GAAX;AAAe;;AAAA87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,IAAE5tE,CAAC,CAACJ,MAAxB;AAAgC,MAAIkwC,CAAC,GAAC,CAAC,CAAP;AAAS,UAAM9vC,CAAC,CAAC,CAAD,CAAP,KAAa8vC,CAAC,GAAC,CAAC,CAAH,EAAK9vC,CAAC,GAACA,CAAC,CAAC4B,KAAF,CAAQ,CAAR,CAApB;;AAAgC,OAAI,IAAIshB,CAAC,GAAC,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,EAAO,CAAP,EAAS,CAAT,EAAW,CAAX,EAAa,CAAb,EAAe,CAAf,CAAN,EAAwBujB,CAAC,GAAC,CAA9B,EAAgCA,CAAC,GAACzmC,CAAC,CAACJ,MAApC,EAA2C6mC,CAAC,EAA5C,EAA+CxmC,CAAC,CAAC,EAAD,EAAID,CAAC,CAACiY,UAAF,CAAawuB,CAAb,IAAgBkoC,IAAI,CAAC0wB,KAAL,CAAWqB,eAA/B,CAAD;;AAAiD5wD,GAAC,KAAG5hB,CAAC,IAAGjuB,CAAC,CAAC,CAAD,EAAG,CAAH,CAAR,CAAD;AAAgB,SAAO67D,IAAI,CAACv+B,KAAL,CAAW22C,iBAAX,CAA6BhxD,CAA7B,CAAP;AAAuC,CAA5Y;;AAA6YyrD,IAAI,CAAC0wB,KAAL,CAAW4B,kBAAX,GAA8B,UAASjhG,CAAT,EAAW;AAAC2uE,MAAI,CAAC0wB,KAAL,CAAWU,WAAX,CAAuBpxB,IAAI,CAAC0wB,KAAL,CAAW2B,qBAAX,CAAiChhG,CAAjC,CAAvB;AAA4D,CAAtG;;AAC7Y2uE,IAAI,CAAC0wB,KAAL,CAAW6B,WAAX,GAAuB,UAASlhG,CAAT,EAAW;AAAC,SAAOo9B,MAAM,CAACC,YAAP,CAAoB,KAAGr9B,CAAH,GAAK2uE,IAAI,CAAC0wB,KAAL,CAAWqB,eAAX,GAA2B1gG,CAAhC,GAAkC2uE,IAAI,CAAC0wB,KAAL,CAAWsB,YAAX,GAAwB,EAAxB,GAA2B3gG,CAAjF,CAAP;AAA2F,CAA9H;;AAA+H2uE,IAAI,CAAC0wB,KAAL,CAAW8B,gBAAX,GAA4B,UAASnhG,CAAT,EAAW;AAAC,SAAOA,CAAC,IAAE2uE,IAAI,CAAC0wB,KAAL,CAAWsB,YAAd,GAA2B3gG,CAAC,GAAC2uE,IAAI,CAAC0wB,KAAL,CAAWsB,YAAb,GAA0B,EAArD,GAAwD3gG,CAAC,GAAC2uE,IAAI,CAAC0wB,KAAL,CAAWqB,eAA5E;AAA4F,CAApI;;AAAqI/xB,IAAI,CAAC0wB,KAAL,CAAW+B,iBAAX,GAA6B,UAASphG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACvC,KAAK,CAAC,EAAD,CAAX;AAAgBuC,GAAC,CAAC,CAAD,CAAD,GAAK,GAAL;AAASA,GAAC,CAAC,CAAD,CAAD,GAAK,GAAL;;AAAS,OAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAY,IAAEA,CAAd,EAAgBA,CAAC,EAAjB,EAAoB;AAAC,QAAI4hB,CAAC,GAAC9vC,CAAC,CAACiY,UAAF,CAAa,IAAEiW,CAAf,CAAN;AAAwBjuB,KAAC,CAAC,IAAEiuB,CAAF,GAAI,CAAL,CAAD,GAASygD,IAAI,CAAC0wB,KAAL,CAAW6B,WAAX,CAAuBpxD,CAAC,IAAE,CAA1B,CAAT;AAAsC7vC,KAAC,CAAC,IAAEiuB,CAAF,GAAI,CAAL,CAAD,GAASygD,IAAI,CAAC0wB,KAAL,CAAW6B,WAAX,CAAuBpxD,CAAC,GAAC,EAAzB,CAAT;AAAsC;;AAAA,SAAO7vC,CAAC,CAAC0a,IAAF,CAAO,EAAP,CAAP;AAAkB,CAAtN;;AACpQg0D,IAAI,CAAC0wB,KAAL,CAAWgC,iBAAX,GAA6B,UAASrhG,CAAT,EAAW;AAACA,GAAC,GAACA,CAAC,CAACi6B,WAAF,EAAF;AAAkB6hC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,MAAI5tE,CAAC,CAACJ,MAA1B;AAAkCk8D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,OAAK5tE,CAAC,CAAC,CAAD,CAA1B;AAA+B87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,OAAK5tE,CAAC,CAAC,CAAD,CAA1B;;AAA+B,OAAI,IAAIC,CAAC,GAAC,EAAN,EAASiuB,CAAC,GAAC,CAAf,EAAiB,IAAEA,CAAnB,EAAqBA,CAAC,EAAtB,EAAyB;AAAC,QAAI4hB,CAAC,GAAC6+B,IAAI,CAAC0wB,KAAL,CAAW8B,gBAAX,CAA4BnhG,CAAC,CAACiY,UAAF,CAAa,IAAEiW,CAAF,GAAI,CAAjB,CAA5B,CAAN;AAAA,QAAuDhL,CAAC,GAACyrD,IAAI,CAAC0wB,KAAL,CAAW8B,gBAAX,CAA4BnhG,CAAC,CAACiY,UAAF,CAAa,IAAEiW,CAAF,GAAI,CAAjB,CAA5B,CAAzD;AAA0GjuB,KAAC,GAACm9B,MAAM,CAACC,YAAP,CAAoB,KAAGyS,CAAH,GAAK5sB,CAAzB,IAA4BjjB,CAA9B;AAAgC;;AAAA,SAAOA,CAAP;AAAS,CAAxU;;AACA0uE,IAAI,CAAC0wB,KAAL,CAAWiC,cAAX,GAA0B,UAASthG,CAAT,EAAWC,CAAX,EAAa;AAAC0uE,MAAI,CAAC0wB,KAAL,CAAWU,WAAX,CAAuB//F,CAAvB;AAA0BA,GAAC,GAAC2uE,IAAI,CAAC0wB,KAAL,CAAWC,UAAb;AAAwB,MAAIpxE,CAAC,GAACygD,IAAI,CAAC0wB,KAAL,CAAWE,WAAjB;AAA6B,SAAOt/F,CAAC,GAAC0uE,IAAI,CAAC0wB,KAAL,CAAWY,SAAX,CAAqBjgG,CAArB,EAAuBkuB,CAAvB,CAAD,GAA2BygD,IAAI,CAAC0wB,KAAL,CAAWW,UAAX,CAAsBhgG,CAAtB,EAAwBkuB,CAAxB,CAAnC;AAA8D,CAArL;;AAAsLygD,IAAI,CAAC0wB,KAAL,CAAWkC,cAAX,GAA0B,UAASvhG,CAAT,EAAW;AAAC2uE,MAAI,CAAC0wB,KAAL,CAAWI,UAAX,CAAsBz/F,CAAtB;AAAyB,SAAO2uE,IAAI,CAAC0wB,KAAL,CAAWmB,UAAX,CAAsB7xB,IAAI,CAAC0wB,KAAL,CAAWC,UAAjC,EAA4C3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAvD,CAAP;AAA2E,CAA1I;;AAA2I5wB,IAAI,CAAC0wB,KAAL,CAAWmC,YAAX,GAAwB,UAASxhG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC,CAAN,EAAQ5sB,CAAC,GAACjjB,CAAd,EAAgBijB,CAAC,GAACgL,CAAlB,EAAoBhL,CAAC,EAArB,EAAwB4sB,CAAC,IAAE9vC,CAAC,CAACkjB,CAAD,CAAD,IAAM,CAAT;;AAAW,SAAOgL,CAAC,GAACjuB,CAAF,GAAI6vC,CAAX;AAAa,CAAxF;;AACjU6+B,IAAI,CAAC0wB,KAAL,CAAWoC,iBAAX,GAA6B,UAASzhG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAI5sB,CAAC,GAAC,CAAN;AAAQ4sB,GAAC,GAAC,IAAEA,CAAF,GAAI6+B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAApC;AAA2C,MAAG,MAAIxgC,CAAP,EAAS,OAAK7vC,CAAC,GAACiuB,CAAF,IAAKluB,CAAC,CAACC,CAAC,EAAF,CAAD,IAAQ6vC,CAAlB,GAAqB,KAAI5sB,CAAC,EAAL,IAAU;AAAC,QAAIujB,CAAC,GAACzmC,CAAC,CAACC,CAAC,EAAF,CAAP;AAAa,QAAG,MAAIwmC,CAAC,GAAC,GAAN,CAAH,EAAc;AAAM,GAA1E,MAA+E,OAAKxmC,CAAC,GAACiuB,CAAP,GAAU;AAAC,SAAIuY,CAAC,GAACqJ,CAAN,EAAQ,MAAIrJ,CAAZ,GAAe;AAAC,UAAGzmC,CAAC,CAACC,CAAD,CAAD,KAAOwmC,CAAC,GAAC,GAAF,GAAM,GAAb,CAAH,EAAqB,OAAOvjB,CAAP;AAASjjB,OAAC;AAAGwmC,OAAC,KAAG,CAAJ;AAAM;;AAAA,QAAGzmC,CAAC,CAACC,CAAC,EAAF,CAAD,IAAQwmC,CAAX,EAAa;;AAAM,SAAIvjB,CAAC,EAAL,EAAQujB,CAAC,GAACzmC,CAAC,CAACC,CAAC,EAAF,CAAH,EAAS,MAAIwmC,CAAC,GAAC,GAAN,CAAjB,EAA6B;AAAE;AAAA,SAAOvjB,CAAP;AAAS,CAA/S;;AAAgTyrD,IAAI,CAAC0wB,KAAL,CAAWqC,iBAAX,GAA6B,UAAS1hG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC,MAAIujB,CAAC,GAAC,CAAN;AAAQ,MAAG,MAAIqJ,CAAP,EAAS,OAAK7vC,CAAC,GAACiuB,CAAF,IAAKluB,CAAC,CAACC,CAAC,EAAF,CAAD,IAAQ6vC,CAAlB,GAAqBrJ,CAAC,IAAGxmC,CAAC,IAAEijB,CAAP,CAA9B,KAA4C,OAAKjjB,CAAC,GAACiuB,CAAP,GAAU;AAAC,SAAI,IAAIgN,CAAC,GAAC4U,CAAV,EAAY,MAAI5U,CAAhB,GAAmB;AAAC,UAAGl7B,CAAC,CAACC,CAAC,EAAF,CAAD,KAASi7B,CAAC,GAAC,GAAF,GAAM,GAAf,CAAH,EAAuB,OAAOuL,CAAP;AAASvL,OAAC,KAAG,CAAJ;AAAM;;AAAA,QAAGl7B,CAAC,CAACC,CAAC,EAAF,CAAD,IAAQi7B,CAAX,EAAa;AAAMuL,KAAC;AAAGxmC,KAAC,IAAEijB,CAAH;AAAK;AAAA,SAAOujB,CAAP;AAAS,CAA/M;;AAChTkoC,IAAI,CAAC0wB,KAAL,CAAWsC,kBAAX,GAA8B,UAAS3hG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,SAAO6+B,IAAI,CAAC0wB,KAAL,CAAWqC,iBAAX,CAA6B1hG,CAA7B,EAA+BC,CAA/B,EAAiCiuB,CAAjC,EAAmC,IAAE4hB,CAAF,GAAI6+B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAArE,EAA6E,CAA7E,CAAP;AAAuF,CAAvI;;AAAwIZ,IAAI,CAAC0wB,KAAL,CAAWuC,kBAAX,GAA8B,UAAS5hG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,SAAO6+B,IAAI,CAAC0wB,KAAL,CAAWqC,iBAAX,CAA6B1hG,CAA7B,EAA+BC,CAA/B,EAAiCiuB,CAAjC,EAAmC,IAAE4hB,CAAF,GAAI6+B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAArE,EAA6E,CAA7E,CAAP;AAAuF,CAAvI;;AACxIX,IAAI,CAAC0wB,KAAL,CAAWwC,oBAAX,GAAgC,UAAS7hG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAI5sB,CAAC,GAAC,CAAN;;AAAQ,OAAI4sB,CAAC,GAAC,IAAEA,CAAF,GAAI6+B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAxC,EAAkDtwE,CAAC,GAACiuB,CAApD,GAAuD;AAAC,SAAI,IAAIuY,CAAC,GAACqJ,CAAV,EAAY,MAAIrJ,CAAhB,GAAmB;AAAC,UAAGzmC,CAAC,CAACC,CAAC,EAAF,CAAD,KAASwmC,CAAC,GAAC,GAAF,GAAM,GAAf,CAAH,EAAuB,OAAOvjB,CAAP;AAASujB,OAAC,KAAG,CAAJ;AAAM;;AAAA,QAAGzmC,CAAC,CAACC,CAAC,EAAF,CAAD,IAAQwmC,CAAX,EAAa;AAAMvjB,KAAC;;AAAG,SAAI,IAAIgY,CAAC,GAAC,CAAN,EAAQyV,CAAC,GAAC,CAAd,EAAgBlK,CAAC,GAACzmC,CAAC,CAACC,CAAC,EAAF,CAAH,EAASi7B,CAAC,IAAE,CAACuL,CAAC,GAAC,GAAH,IAAQkK,CAApB,EAAsBA,CAAC,IAAE,GAAzB,EAA6B,MAAIlK,CAAC,GAAC,GAAN,CAA7C,EAAyD;;AAACxmC,KAAC,IAAEi7B,CAAH;AAAK;;AAAA,SAAOhY,CAAP;AAAS,CAA3Q;;AAA4QyrD,IAAI,CAAC0wB,KAAL,CAAWyC,sBAAX,GAAkC,UAAS9hG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,GAAN;;AAAU,MAAGD,CAAH,EAAK;AAACA,KAAC,GAAC2uE,IAAI,CAAC0wB,KAAL,CAAW0C,sBAAX,CAAkC/hG,CAAlC,CAAF;;AAAuC,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACluB,CAAC,CAACJ,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2BjuB,CAAC,IAAE,KAAH,EAAS,KAAGD,CAAC,CAACkuB,CAAD,CAAJ,KAAUjuB,CAAC,IAAE,GAAb,CAAT,EAA2BA,CAAC,IAAED,CAAC,CAACkuB,CAAD,CAAD,CAAK1X,QAAL,CAAc,EAAd,CAA9B;AAAgD;;AAAA,SAAOvW,CAAC,GAAC,GAAT;AAAa,CAA7L;;AAC5Q0uE,IAAI,CAAC0wB,KAAL,CAAW2C,uBAAX,GAAmC,UAAShiG,CAAT,EAAW;AAAC,SAAM,aAAW,OAAOA,CAAlB,GAAoB87D,IAAI,CAAC/yB,MAAL,CAAYnI,KAAZ,CAAkB5gC,CAAlB,CAApB,GAAyCA,CAAC,CAACwW,QAAF,EAA/C;AAA4D,CAA3G;;AAA4Gm4D,IAAI,CAAC0wB,KAAL,CAAWprB,iBAAX,GAA6B,UAASj0E,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,IAAI8b,UAAJ,CAAe/b,CAAC,CAACJ,MAAjB,CAAN,EAA+BsuB,CAAC,GAAC,CAArC,EAAuCA,CAAC,GAACluB,CAAC,CAACJ,MAA3C,EAAkDsuB,CAAC,EAAnD,EAAsD;AAAC,QAAI4hB,CAAC,GAAC9vC,CAAC,CAACiY,UAAF,CAAaiW,CAAb,CAAN;AAAsB,QAAG,MAAI4hB,CAAP,EAAS,MAAM1xC,KAAK,CAAC,mEAAD,CAAX;AAAiF6B,KAAC,CAACiuB,CAAD,CAAD,GAAK4hB,CAAL;AAAO;;AAAA,SAAO7vC,CAAP;AAAS,CAAhO;;AAC5G0uE,IAAI,CAAC0wB,KAAL,CAAW0C,sBAAX,GAAkC,UAAS/hG,CAAT,EAAW;AAAC,MAAGA,CAAC,CAACvH,WAAF,KAAgBsjB,UAAnB,EAA8B,OAAO/b,CAAP;AAAS,MAAGA,CAAC,CAACvH,WAAF,KAAgBogE,WAAhB,IAA6B,eAAa,OAAO78C,MAApB,IAA4Bhc,CAAC,CAACvH,WAAF,KAAgBujB,MAAzE,IAAiFhc,CAAC,CAACvH,WAAF,KAAgBiF,KAApG,EAA0G,OAAO,IAAIqe,UAAJ,CAAe/b,CAAf,CAAP;AAAyB,MAAGA,CAAC,CAACvH,WAAF,KAAgB2kC,MAAnB,EAA0B,OAAO0+B,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBghE,wBAAlB,CAA2Cn/F,CAA3C,CAAP;AAAqD87D,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,qCAAlB;AAAyD,SAAO,IAAI/xD,UAAJ,CAAe,CAAf,CAAP;AAAyB,CAAzX;;AAA0X4yD,IAAI,CAACszB,aAAL,GAAmB,UAASjiG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAKg0E,MAAL,GAAY,IAAZ;AAAiB,OAAKC,OAAL,GAAa,KAAKC,IAAL,GAAU,KAAKC,MAAL,GAAY,CAAnC;AAAqC,OAAKC,MAAL,GAAY,CAAC,CAAb;AAAetiG,GAAC,IAAE,KAAKuiG,QAAL,CAAcviG,CAAd,EAAgBC,CAAhB,EAAkBiuB,CAAlB,CAAH;AAAwB,CAAhI;;AAAiIygD,IAAI,CAACszB,aAAL,CAAmBO,cAAnB,GAAkC,EAAlC;;AAAqC7zB,IAAI,CAACszB,aAAL,CAAmBriF,KAAnB,GAAyB,UAAS5f,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAGygD,IAAI,CAACszB,aAAL,CAAmBO,cAAnB,CAAkC5iG,MAArC,EAA4C;AAAC,QAAIkwC,CAAC,GAAC6+B,IAAI,CAACszB,aAAL,CAAmBO,cAAnB,CAAkChiG,GAAlC,EAAN;AAA8CR,KAAC,IAAE8vC,CAAC,CAACyyD,QAAF,CAAWviG,CAAX,EAAaC,CAAb,EAAeiuB,CAAf,CAAH;AAAqB,WAAO4hB,CAAP;AAAS;;AAAA,SAAO,IAAI6+B,IAAI,CAACszB,aAAT,CAAuBjiG,CAAvB,EAAyBC,CAAzB,EAA2BiuB,CAA3B,CAAP;AAAqC,CAAvM;;AAAwMygD,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B6sF,IAA7B,GAAkC,YAAU;AAAC,OAAKt3B,KAAL;AAAa,QAAIwD,IAAI,CAACszB,aAAL,CAAmBO,cAAnB,CAAkC5iG,MAAtC,IAA8C+uE,IAAI,CAACszB,aAAL,CAAmBO,cAAnB,CAAkC/jG,IAAlC,CAAuC,IAAvC,CAA9C;AAA2F,CAArJ;;AACxuBkwE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BgpB,KAA7B,GAAmC,YAAU;AAAC,SAAO+vC,IAAI,CAACszB,aAAL,CAAmBriF,KAAnB,CAAyB,KAAKsiF,MAA9B,EAAqC,KAAKG,MAA1C,EAAiD,KAAKD,IAAL,GAAU,KAAKC,MAAhE,CAAP;AAA+E,CAA7H;;AAA8H1zB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6Bu1D,KAA7B,GAAmC,YAAU;AAAC,OAAK+2B,MAAL,GAAY,IAAZ;AAAiB,OAAKC,OAAL,GAAa,KAAKC,IAAL,GAAU,KAAKC,MAAL,GAAY,CAAnC;AAAqC,OAAKC,MAAL,GAAY,CAAC,CAAb;AAAe,CAAnH;;AAAoH3zB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B8sF,SAA7B,GAAuC,YAAU;AAAC,SAAO,KAAKR,MAAZ;AAAmB,CAArE;;AAClPvzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B2sF,QAA7B,GAAsC,UAASviG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAKg0E,MAAL,GAAYvzB,IAAI,CAAC0wB,KAAL,CAAW0C,sBAAX,CAAkC/hG,CAAlC,CAAZ;AAAiD,OAAKqiG,MAAL,GAAY,KAAK,CAAL,KAASpiG,CAAT,GAAWA,CAAX,GAAa,CAAzB;AAA2B,OAAKmiG,IAAL,GAAU,KAAK,CAAL,KAASl0E,CAAT,GAAW,KAAKm0E,MAAL,GAAYn0E,CAAvB,GAAyB,KAAKg0E,MAAL,CAAYtiG,MAA/C;AAAsD,OAAKuiG,OAAL,GAAa,KAAKE,MAAlB;AAAyB,CAAjN;;AAAkN1zB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B+sF,MAA7B,GAAoC,YAAU;AAAC,SAAO,KAAKP,IAAZ;AAAiB,CAAhE;;AAAiEzzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BgtF,MAA7B,GAAoC,UAAS5iG,CAAT,EAAW;AAAC,OAAKoiG,IAAL,GAAUpiG,CAAV;AAAY,CAA5D;;AAA6D2uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BkpB,KAA7B,GAAmC,YAAU;AAAC,OAAKqjE,OAAL,GAAa,KAAKE,MAAlB;AAAyB,CAAvE;;AAAwE1zB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BitF,SAA7B,GAAuC,YAAU;AAAC,SAAO,KAAKV,OAAZ;AAAoB,CAAtE;;AACxZxzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BktF,SAA7B,GAAuC,UAAS9iG,CAAT,EAAW;AAAC,OAAKmiG,OAAL,GAAaniG,CAAb;AAAe,CAAlE;;AAAmE2uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BmtF,OAA7B,GAAqC,UAAS/iG,CAAT,EAAW;AAAC,OAAKmiG,OAAL,IAAcniG,CAAd;AAAgB87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,CAA9G;;AAA+GzzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BotF,KAA7B,GAAmC,YAAU;AAAC,SAAO,KAAKb,OAAL,IAAc,KAAKC,IAA1B;AAA+B,CAA7E;;AAA8EzzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BqtF,OAA7B,GAAqC,YAAU;AAAC,SAAO,KAAKd,OAAL,GAAa,KAAKC,IAAzB;AAA8B,CAA9E;;AAA+EzzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BiN,QAA7B,GAAsC,YAAU;AAAC,SAAO,KAAKy/E,MAAL,IAAa,IAAE,KAAKH,OAApB,IAA6B,KAAKA,OAAL,GAAa,KAAKC,IAAtD;AAA2D,CAA5G;;AAC/UzzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BstF,iBAA7B,GAA+C,UAASljG,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,GAAN,EAAUiuB,CAAC,GAAC,CAAZ,EAAc4hB,CAAC,GAAC,CAAhB,EAAkB5sB,CAAC,GAAC,CAAxB,EAA0B,IAAEA,CAAF,IAAK,OAAKjjB,CAApC,EAAsCijB,CAAC,EAAvC,EAA0CjjB,CAAC,GAAC,KAAKiiG,MAAL,CAAY,KAAKC,OAAL,EAAZ,CAAF,EAA8Bj0E,CAAC,IAAE,CAACjuB,CAAC,GAAC,GAAH,KAAS,IAAEijB,CAA5C;;AAA8C,SAAKjjB,CAAL,KAASA,CAAC,GAAC,KAAKiiG,MAAL,CAAY,KAAKC,OAAL,EAAZ,CAAF,EAA8Bj0E,CAAC,IAAE,CAACjuB,CAAC,GAAC,GAAH,KAAS,EAA1C,EAA6C6vC,CAAC,IAAE,CAAC7vC,CAAC,GAAC,GAAH,KAAS,CAAlE;AAAqE,MAAG,OAAKA,CAAR,EAAU,KAAIijB,CAAC,GAAC,CAAN,EAAQ,IAAEA,CAAF,IAAK,OAAKjjB,CAAlB,EAAoBijB,CAAC,EAArB,EAAwBjjB,CAAC,GAAC,KAAKiiG,MAAL,CAAY,KAAKC,OAAL,EAAZ,CAAF,EAA8BryD,CAAC,IAAE,CAAC7vC,CAAC,GAAC,GAAH,KAAS,IAAEijB,CAAF,GAAI,CAA9C;AAAgD,MAAG,MAAIjjB,CAAP,EAAS,OAAOD,CAAC,CAACkuB,CAAC,KAAG,CAAL,EAAO4hB,CAAC,KAAG,CAAX,CAAR;AAAsBgsB,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,6CAAlB;AAAiE,OAAKw0B,MAAL,GAAY,CAAC,CAAb;AAAe,CAAzZ;;AACA3zB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6ButF,uBAA7B,GAAqD,UAASnjG,CAAT,EAAW;AAAC,SAAO,KAAKkjG,iBAAL,CAAuB,UAASjjG,CAAT,EAAWiuB,CAAX,EAAa;AAAC,WAAOygD,IAAI,CAAC0wB,KAAL,CAAWe,YAAX,CAAwBngG,CAAxB,EAA0BiuB,CAA1B,EAA4BluB,CAA5B,CAAP;AAAsC,GAA3E,CAAP;AAAoF,CAArJ;;AAAsJ2uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BwtF,gBAA7B,GAA8C,UAASpjG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,KAAKiiG,MAAX;AAAA,MAAkBh0E,CAAC,GAAC,KAAKi0E,OAAzB;AAAiC,OAAKA,OAAL,IAAc,CAAd;;AAAgB,OAAI,IAAIryD,CAAC,GAAC,CAAN,EAAQ5sB,CAAC,GAAC,CAAV,EAAYujB,CAAC,GAACvY,CAAC,GAAC,CAApB,EAAsBuY,CAAC,IAAEvY,CAAzB,EAA2BuY,CAAC,EAA5B,EAA+BqJ,CAAC,GAACA,CAAC,IAAE,CAAH,GAAK7vC,CAAC,CAACwmC,CAAD,CAAR,EAAYvjB,CAAC,GAACA,CAAC,IAAE,CAAH,GAAKjjB,CAAC,CAACwmC,CAAC,GAAC,CAAH,CAApB;;AAA0B,SAAOzmC,CAAC,CAAC8vC,CAAD,EAAG5sB,CAAH,CAAR;AAAc,CAAlL;;AAAmLyrD,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BytF,UAA7B,GAAwC,YAAU;AAAC,SAAK,KAAKnB,MAAL,CAAY,KAAKC,OAAjB,IAA0B,GAA/B,GAAoC,KAAKA,OAAL;;AAAe,OAAKA,OAAL;AAAe,CAArH;;AACzUxzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B0tF,YAA7B,GAA0C,UAAStjG,CAAT,EAAW;AAAC,SAAK,MAAIA,CAAT,GAAY,KAAKmiG,OAAL,IAAeniG,CAAC,MAAI,CAApB;;AAAsB,OAAKmiG,OAAL;AAAe,CAAvG;;AACAxzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B2tF,oBAA7B,GAAkD,YAAU;AAAC,MAAIvjG,CAAC,GAAC,KAAKkiG,MAAX;AAAkB,MAAIjiG,CAAC,GAACD,CAAC,CAAC,KAAKmiG,OAAL,GAAa,CAAd,CAAP;AAAwB,MAAIj0E,CAAC,GAACjuB,CAAC,GAAC,GAAR;AAAY,MAAG,MAAIA,CAAP,EAAS,OAAO,KAAKkiG,OAAL,IAAc,CAAd,EAAgBrmC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC,CAAhB,EAA6Dl0E,CAApE;AAAsEjuB,GAAC,GAACD,CAAC,CAAC,KAAKmiG,OAAL,GAAa,CAAd,CAAH;AAAoBj0E,GAAC,IAAE,CAACjuB,CAAC,GAAC,GAAH,KAAS,CAAZ;AAAc,MAAG,MAAIA,CAAP,EAAS,OAAO,KAAKkiG,OAAL,IAAc,CAAd,EAAgBrmC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC,CAAhB,EAA6Dl0E,CAApE;AAAsEjuB,GAAC,GAACD,CAAC,CAAC,KAAKmiG,OAAL,GAAa,CAAd,CAAH;AAAoBj0E,GAAC,IAAE,CAACjuB,CAAC,GAAC,GAAH,KAAS,EAAZ;AAAe,MAAG,MAAIA,CAAP,EAAS,OAAO,KAAKkiG,OAAL,IAAc,CAAd,EAAgBrmC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC,CAAhB,EAA6Dl0E,CAApE;AAAsEjuB,GAAC,GAACD,CAAC,CAAC,KAAKmiG,OAAL,GAAa,CAAd,CAAH;AAAoBj0E,GAAC,IAAE,CAACjuB,CAAC,GAAC,GAAH,KAAS,EAAZ;AAAe,MAAG,MAAIA,CAAP,EAAS,OAAO,KAAKkiG,OAAL,IAAc,CAAd,EAAgBrmC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAC5f,KAAKC,IADme,CAAhB,EAC7cl0E,CADsc;AACpcjuB,GAAC,GAACD,CAAC,CAAC,KAAKmiG,OAAL,GAAa,CAAd,CAAH;AAAoBj0E,GAAC,IAAE,CAACjuB,CAAC,GAAC,EAAH,KAAQ,EAAX;AAAc,MAAG,MAAIA,CAAP,EAAS,OAAO,KAAKkiG,OAAL,IAAc,CAAd,EAAgBrmC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC,CAAhB,EAA6Dl0E,CAAC,KAAG,CAAxE;AAA0E,OAAKi0E,OAAL,IAAc,CAAd;AAAgB,SAAKniG,CAAC,CAAC,KAAKmiG,OAAL,EAAD,CAAN,IAAwB,OAAKniG,CAAC,CAAC,KAAKmiG,OAAL,EAAD,CAA9B,IAAgD,OAAKniG,CAAC,CAAC,KAAKmiG,OAAL,EAAD,CAAtD,IAAwE,OAAKniG,CAAC,CAAC,KAAKmiG,OAAL,EAAD,CAA9E,IAAgG,OAAKniG,CAAC,CAAC,KAAKmiG,OAAL,EAAD,CAAtG,IAAwHrmC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC,CAArB,CAAxH;AAAgJ9R,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,SAAOl0E,CAAP;AAAS,CADxV;;AACyVygD,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B4tF,kBAA7B,GAAgD70B,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B2tF,oBAA7E;;AAAkG50B,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B6tF,0BAA7B,GAAwD,YAAU;AAAC,SAAO,KAAKF,oBAAL,GAA4B/sF,QAA5B,EAAP;AAA8C,CAAjH;;AAC3bm4D,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B8tF,wBAA7B,GAAsD,YAAU;AAAC,SAAO,KAAKF,kBAAL,GAA0BhtF,QAA1B,EAAP;AAA4C,CAA7G;;AAA8Gm4D,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B+tF,kBAA7B,GAAgD,YAAU;AAAC,MAAI3jG,CAAC,GAAC,KAAKujG,oBAAL,EAAN;AAAkC,SAAOvjG,CAAC,KAAG,CAAJ,GAAM,EAAEA,CAAC,GAAC,CAAJ,CAAb;AAAoB,CAAjH;;AAAkH2uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BguF,oBAA7B,GAAkD,YAAU;AAAC,SAAO,KAAKV,iBAAL,CAAuBv0B,IAAI,CAAC0wB,KAAL,CAAWW,UAAlC,CAAP;AAAqD,CAAlH;;AAAmHrxB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BiuF,0BAA7B,GAAwD,YAAU;AAAC,SAAO,KAAKX,iBAAL,CAAuBv0B,IAAI,CAAC0wB,KAAL,CAAWuB,yBAAlC,CAAP;AAAoE,CAAvI;;AACnVjyB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BkuF,kBAA7B,GAAgD,YAAU;AAAC,SAAO,KAAKZ,iBAAL,CAAuBv0B,IAAI,CAAC0wB,KAAL,CAAWY,SAAlC,CAAP;AAAoD,CAA/G;;AAAgHtxB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BmuF,wBAA7B,GAAsD,YAAU;AAAC,SAAO,KAAKb,iBAAL,CAAuBv0B,IAAI,CAAC0wB,KAAL,CAAWwB,uBAAlC,CAAP;AAAkE,CAAnI;;AAAoIlyB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BouF,kBAA7B,GAAgD,YAAU;AAAC,SAAO,KAAKd,iBAAL,CAAuBv0B,IAAI,CAAC0wB,KAAL,CAAWc,YAAlC,CAAP;AAAuD,CAAlH;;AAAmHxxB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BquF,sBAA7B,GAAoD,YAAU;AAAC,SAAO,KAAKd,uBAAL,CAA6Bx0B,IAAI,CAAC0wB,KAAL,CAAWmB,UAAxC,CAAP;AAA2D,CAA1H;;AACvW7xB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BsuF,wBAA7B,GAAsD,YAAU;AAAC,SAAO,KAAKf,uBAAL,CAA6Bx0B,IAAI,CAAC0wB,KAAL,CAAWwB,uBAAxC,CAAP;AAAwE,CAAzI;;AAA0IlyB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BuuF,SAA7B,GAAuC,YAAU;AAAC,MAAInkG,CAAC,GAAC,KAAKkiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAN;AAAkC,OAAKA,OAAL,IAAc,CAAd;AAAgBrmC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,SAAOpiG,CAAP;AAAS,CAA1J;;AAA2J2uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BwuF,UAA7B,GAAwC,YAAU;AAAC,MAAIpkG,CAAC,GAAC,KAAKkiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAN;AAAA,MAAkCliG,CAAC,GAAC,KAAKiiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAApC;AAAgE,OAAKA,OAAL,IAAc,CAAd;AAAgBrmC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,SAAOpiG,CAAC,IAAE,CAAH,GAAKC,CAAC,IAAE,CAAf;AAAiB,CAAjM;;AACrS0uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6ByuF,UAA7B,GAAwC,YAAU;AAAC,MAAIrkG,CAAC,GAAC,KAAKkiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAN;AAAA,MAAkCliG,CAAC,GAAC,KAAKiiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAApC;AAAA,MAAgEj0E,CAAC,GAAC,KAAKg0E,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAlE;AAAA,MAA8FryD,CAAC,GAAC,KAAKoyD,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAhG;AAA4H,OAAKA,OAAL,IAAc,CAAd;AAAgBrmC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,SAAM,CAACpiG,CAAC,IAAE,CAAH,GAAKC,CAAC,IAAE,CAAR,GAAUiuB,CAAC,IAAE,EAAb,GAAgB4hB,CAAC,IAAE,EAApB,MAA0B,CAAhC;AAAkC,CAA9Q;;AAA+Q6+B,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B0uF,UAA7B,GAAwC,YAAU;AAAC,MAAItkG,CAAC,GAAC,KAAKqkG,UAAL,EAAN;AAAA,MAAwBpkG,CAAC,GAAC,KAAKokG,UAAL,EAA1B;AAA4C,SAAO11B,IAAI,CAAC0wB,KAAL,CAAWW,UAAX,CAAsBhgG,CAAtB,EAAwBC,CAAxB,CAAP;AAAkC,CAAjI;;AAC/Q0uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B2uF,gBAA7B,GAA8C,YAAU;AAAC,MAAIvkG,CAAC,GAAC,KAAKqkG,UAAL,EAAN;AAAA,MAAwBpkG,CAAC,GAAC,KAAKokG,UAAL,EAA1B;AAA4C,SAAO11B,IAAI,CAAC0wB,KAAL,CAAWuB,yBAAX,CAAqC5gG,CAArC,EAAuCC,CAAvC,CAAP;AAAiD,CAAtJ;;AAAuJ0uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B4uF,QAA7B,GAAsC,YAAU;AAAC,MAAIxkG,CAAC,GAAC,KAAKkiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAN;AAAkC,OAAKA,OAAL,IAAc,CAAd;AAAgBrmC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,SAAOpiG,CAAC,IAAE,EAAH,IAAO,EAAd;AAAiB,CAAjK;;AACvJ2uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B6uF,SAA7B,GAAuC,YAAU;AAAC,MAAIzkG,CAAC,GAAC,KAAKkiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAN;AAAA,MAAkCliG,CAAC,GAAC,KAAKiiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAApC;AAAgE,OAAKA,OAAL,IAAc,CAAd;AAAgBrmC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,SAAM,CAACpiG,CAAC,IAAE,CAAH,GAAKC,CAAC,IAAE,CAAT,KAAa,EAAb,IAAiB,EAAvB;AAA0B,CAAzM;;AAA0M0uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B8uF,SAA7B,GAAuC,YAAU;AAAC,MAAI1kG,CAAC,GAAC,KAAKkiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAN;AAAA,MAAkCliG,CAAC,GAAC,KAAKiiG,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAApC;AAAA,MAAgEj0E,CAAC,GAAC,KAAKg0E,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAlE;AAAA,MAA8FryD,CAAC,GAAC,KAAKoyD,MAAL,CAAY,KAAKC,OAAL,GAAa,CAAzB,CAAhG;AAA4H,OAAKA,OAAL,IAAc,CAAd;AAAgBrmC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,SAAOpiG,CAAC,IAAE,CAAH,GAAKC,CAAC,IAAE,CAAR,GAAUiuB,CAAC,IAAE,EAAb,GAAgB4hB,CAAC,IAAE,EAA1B;AAA6B,CAAxQ;;AAC1M6+B,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6B+uF,SAA7B,GAAuC,YAAU;AAAC,MAAI3kG,CAAC,GAAC,KAAKqkG,UAAL,EAAN;AAAA,MAAwBpkG,CAAC,GAAC,KAAKokG,UAAL,EAA1B;AAA4C,SAAO11B,IAAI,CAAC0wB,KAAL,CAAWY,SAAX,CAAqBjgG,CAArB,EAAuBC,CAAvB,CAAP;AAAiC,CAA/H;;AAAgI0uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BgvF,eAA7B,GAA6C,YAAU;AAAC,MAAI5kG,CAAC,GAAC,KAAKqkG,UAAL,EAAN;AAAA,MAAwBpkG,CAAC,GAAC,KAAKokG,UAAL,EAA1B;AAA4C,SAAO11B,IAAI,CAAC0wB,KAAL,CAAWwB,uBAAX,CAAmC7gG,CAAnC,EAAqCC,CAArC,CAAP;AAA+C,CAAnJ;;AAAoJ0uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BivF,SAA7B,GAAuC,YAAU;AAAC,MAAI7kG,CAAC,GAAC,KAAKqkG,UAAL,EAAN;AAAwB,SAAO11B,IAAI,CAAC0wB,KAAL,CAAWgB,WAAX,CAAuBrgG,CAAvB,EAAyB,CAAzB,CAAP;AAAmC,CAA7G;;AACpR2uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BkvF,UAA7B,GAAwC,YAAU;AAAC,MAAI9kG,CAAC,GAAC,KAAKqkG,UAAL,EAAN;AAAA,MAAwBpkG,CAAC,GAAC,KAAKokG,UAAL,EAA1B;AAA4C,SAAO11B,IAAI,CAAC0wB,KAAL,CAAWkB,WAAX,CAAuBvgG,CAAvB,EAAyBC,CAAzB,CAAP;AAAmC,CAAlI;;AAAmI0uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BmvF,QAA7B,GAAsC,YAAU;AAAC,SAAM,CAAC,CAAC,KAAK7C,MAAL,CAAY,KAAKC,OAAL,EAAZ,CAAR;AAAoC,CAArF;;AAAsFxzB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BovF,QAA7B,GAAsC,YAAU;AAAC,SAAO,KAAKxB,kBAAL,EAAP;AAAiC,CAAlF;;AACzN70B,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BqvF,UAA7B,GAAwC,UAASjlG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,KAAKiiG,MAAX;AAAA,MAAkBh0E,CAAC,GAAC,KAAKi0E,OAAzB;AAAiCniG,GAAC,GAACkuB,CAAC,GAACluB,CAAJ;;AAAM,OAAI,IAAI8vC,CAAC,GAAC,EAAN,EAAS5sB,CAAC,GAAC,EAAf,EAAkBgL,CAAC,GAACluB,CAApB,GAAuB;AAAC,QAAIymC,CAAC,GAACxmC,CAAC,CAACiuB,CAAC,EAAF,CAAP;AAAa,QAAG,MAAIuY,CAAP,EAASqJ,CAAC,CAACrxC,IAAF,CAAOgoC,CAAP,EAAT,KAAwB,IAAG,MAAIA,CAAP,EAAS,SAAT,KAAuB,IAAG,MAAIA,CAAP,EAAS;AAAC,UAAIvL,CAAC,GAACj7B,CAAC,CAACiuB,CAAC,EAAF,CAAP;AAAa4hB,OAAC,CAACrxC,IAAF,CAAO,CAACgoC,CAAC,GAAC,EAAH,KAAQ,CAAR,GAAUvL,CAAC,GAAC,EAAnB;AAAuB,KAA9C,MAAmD,IAAG,MAAIuL,CAAP,EAAS;AAACvL,OAAC,GAACj7B,CAAC,CAACiuB,CAAC,EAAF,CAAH;AAAS,UAAIyiB,CAAC,GAAC1wC,CAAC,CAACiuB,CAAC,EAAF,CAAP;AAAa4hB,OAAC,CAACrxC,IAAF,CAAO,CAACgoC,CAAC,GAAC,EAAH,KAAQ,EAAR,GAAW,CAACvL,CAAC,GAAC,EAAH,KAAQ,CAAnB,GAAqByV,CAAC,GAAC,EAA9B;AAAkC,KAAlE,MAAuE,IAAG,MAAIlK,CAAP,EAAS;AAACvL,OAAC,GAACj7B,CAAC,CAACiuB,CAAC,EAAF,CAAH;AAASyiB,OAAC,GAAC1wC,CAAC,CAACiuB,CAAC,EAAF,CAAH;AAAS,UAAIH,CAAC,GAAC9tB,CAAC,CAACiuB,CAAC,EAAF,CAAP;AAAauY,OAAC,GAAC,CAACA,CAAC,GAAC,CAAH,KAAO,EAAP,GAAU,CAACvL,CAAC,GAAC,EAAH,KAAQ,EAAlB,GAAqB,CAACyV,CAAC,GAAC,EAAH,KAAQ,CAA7B,GAA+B5iB,CAAC,GAAC,EAAnC;AAAsC0Y,OAAC,IAAE,KAAH;AAASqJ,OAAC,CAACrxC,IAAF,CAAO,CAACgoC,CAAC,IAAE,EAAH,GAAM,IAAP,IAAa,KAApB,EAA0B,CAACA,CAAC,GAAC,IAAH,IAAS,KAAnC;AAA0C;AAAA,YAAMqJ,CAAC,CAAClwC,MAAR,KAAiBsjB,CAAC,IAAEka,MAAM,CAACC,YAAP,CAAoBZ,KAApB,CAA0B,IAA1B,EAA+BqT,CAA/B,CAAH,EAAqCA,CAAC,CAAClwC,MAAF,GAAS,CAA/D;AAAkE;;AAAAsjB,GAAC,IAAE44C,IAAI,CAACv+B,KAAL,CAAW22C,iBAAX,CAA6BpkC,CAA7B,CAAH;AAC7e,OAAKqyD,OAAL,GAAaj0E,CAAb;AAAe,SAAOhL,CAAP;AAAS,CADxB;;AACyByrD,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BsvF,oBAA7B,GAAkD,YAAU;AAAC,MAAIllG,CAAC,GAAC,KAAKujG,oBAAL,EAAN;AAAkC,SAAO,KAAK0B,UAAL,CAAgBjlG,CAAhB,CAAP;AAA0B,CAAzH;;AAA0H2uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BuvF,SAA7B,GAAuC,UAASnlG,CAAT,EAAW;AAAC,MAAG,IAAEA,CAAF,IAAK,KAAKmiG,OAAL,GAAaniG,CAAb,GAAe,KAAKkiG,MAAL,CAAYtiG,MAAnC,EAA0C,OAAO,KAAK0iG,MAAL,GAAY,CAAC,CAAb,EAAexmC,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,sBAAlB,CAAf,EAAyD,IAAI/xD,UAAJ,CAAe,CAAf,CAAhE;AAAkF,MAAI9b,CAAC,GAAC,KAAKiiG,MAAL,CAAY9C,QAAZ,CAAqB,KAAK+C,OAA1B,EAAkC,KAAKA,OAAL,GAAaniG,CAA/C,CAAN;AAAwD,OAAKmiG,OAAL,IAAcniG,CAAd;AAAgB87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAKu0B,OAAL,IAAc,KAAKC,IAAvC;AAA6C,SAAOniG,CAAP;AAAS,CAA7S;;AAA8S0uE,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6BwvF,gBAA7B,GAA8C,YAAU;AAAC,SAAO,KAAKlC,iBAAL,CAAuBv0B,IAAI,CAAC0wB,KAAL,CAAWmB,UAAlC,CAAP;AAAqD,CAA9G;;AACjc7xB,IAAI,CAACszB,aAAL,CAAmBrsF,SAAnB,CAA6ByvF,eAA7B,GAA6C,YAAU;AAAC,MAAIrlG,CAAC,GAAC,KAAKkiG,MAAX;AAAA,MAAkBjiG,CAAC,GAAC,KAAKkiG,OAAzB;AAAA,MAAiCj0E,CAAC,GAACluB,CAAC,CAACC,CAAC,GAAC,CAAH,CAApC;AAAA,MAA0C6vC,CAAC,GAAC9vC,CAAC,CAACC,CAAC,GAAC,CAAH,CAA7C;AAAA,MAAmDijB,CAAC,GAACljB,CAAC,CAACC,CAAC,GAAC,CAAH,CAAtD;AAAA,MAA4DwmC,CAAC,GAACzmC,CAAC,CAACC,CAAC,GAAC,CAAH,CAA/D;AAAA,MAAqEi7B,CAAC,GAACl7B,CAAC,CAACC,CAAC,GAAC,CAAH,CAAxE;AAAA,MAA8E0wC,CAAC,GAAC3wC,CAAC,CAACC,CAAC,GAAC,CAAH,CAAjF;AAAA,MAAuF8tB,CAAC,GAAC/tB,CAAC,CAACC,CAAC,GAAC,CAAH,CAA1F;AAAgGD,GAAC,GAACA,CAAC,CAACC,CAAC,GAAC,CAAH,CAAH;AAAS,OAAKkiG,OAAL,IAAc,CAAd;AAAgB,SAAO/kE,MAAM,CAACC,YAAP,CAAoBnP,CAApB,EAAsB4hB,CAAtB,EAAwB5sB,CAAxB,EAA0BujB,CAA1B,EAA4BvL,CAA5B,EAA8ByV,CAA9B,EAAgC5iB,CAAhC,EAAkC/tB,CAAlC,CAAP;AAA4C,CAA7N;;AAA8N2uE,IAAI,CAAC22B,YAAL,GAAkB,UAAStlG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAKq3E,QAAL,GAAc52B,IAAI,CAACszB,aAAL,CAAmBriF,KAAnB,CAAyB5f,CAAzB,EAA2BC,CAA3B,EAA6BiuB,CAA7B,CAAd;AAA8C,OAAKs3E,YAAL,GAAkB,KAAKD,QAAL,CAAc1C,SAAd,EAAlB;AAA4C,OAAK4C,UAAL,GAAgB92B,IAAI,CAACC,eAAL,CAAqB+B,oBAArC;AAA0D,OAAK+0B,aAAL,GAAmB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BrB,OAAjD;AAAyD,OAAKszB,MAAL,GAAY,CAAC,CAAb;AAAe,OAAKqD,cAAL,GAAoB,IAApB;AAAyB,CAAvR;;AAAwRh3B,IAAI,CAAC22B,YAAL,CAAkB9C,cAAlB,GAAiC,EAAjC;;AACtf7zB,IAAI,CAAC22B,YAAL,CAAkB1lF,KAAlB,GAAwB,UAAS5f,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAGygD,IAAI,CAAC22B,YAAL,CAAkB9C,cAAlB,CAAiC5iG,MAApC,EAA2C;AAAC,QAAIkwC,CAAC,GAAC6+B,IAAI,CAAC22B,YAAL,CAAkB9C,cAAlB,CAAiChiG,GAAjC,EAAN;AAA6CR,KAAC,IAAE8vC,CAAC,CAACy1D,QAAF,CAAWhD,QAAX,CAAoBviG,CAApB,EAAsBC,CAAtB,EAAwBiuB,CAAxB,CAAH;AAA8B,WAAO4hB,CAAP;AAAS;;AAAA,SAAO,IAAI6+B,IAAI,CAAC22B,YAAT,CAAsBtlG,CAAtB,EAAwBC,CAAxB,EAA0BiuB,CAA1B,CAAP;AAAoC,CAA5M;;AAA6MygD,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BgK,KAA5B,GAAkC+uD,IAAI,CAAC22B,YAAL,CAAkB1lF,KAApD;;AAC7M+uD,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B6sF,IAA5B,GAAiC,YAAU;AAAC,OAAK8C,QAAL,CAAcp6B,KAAd;AAAsB,OAAKs6B,UAAL,GAAgB92B,IAAI,CAACC,eAAL,CAAqB+B,oBAArC;AAA0D,OAAK+0B,aAAL,GAAmB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BrB,OAAjD;AAAyD,OAAKszB,MAAL,GAAY,CAAC,CAAb;AAAe,OAAKqD,cAAL,GAAoB,IAApB;AAAyB,QAAIh3B,IAAI,CAAC22B,YAAL,CAAkB9C,cAAlB,CAAiC5iG,MAArC,IAA6C+uE,IAAI,CAAC22B,YAAL,CAAkB9C,cAAlB,CAAiC/jG,IAAjC,CAAsC,IAAtC,CAA7C;AAAyF,CAAtT;;AAAuTkwE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BgwF,cAA5B,GAA2C,YAAU;AAAC,SAAO,KAAKJ,YAAZ;AAAyB,CAA/E;;AAAgF72B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BitF,SAA5B,GAAsC,YAAU;AAAC,SAAO,KAAK0C,QAAL,CAAc1C,SAAd,EAAP;AAAiC,CAAlF;;AACvYl0B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B8sF,SAA5B,GAAsC,YAAU;AAAC,SAAO,KAAK6C,QAAL,CAAc7C,SAAd,EAAP;AAAiC,CAAlF;;AAAmF/zB,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BiwF,cAA5B,GAA2C,YAAU;AAAC,SAAO,KAAKJ,UAAZ;AAAuB,CAA7E;;AAA8E92B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BkwF,WAA5B,GAAwC,YAAU;AAAC,SAAO,KAAKJ,aAAZ;AAA0B,CAA7E;;AAA8E/2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BmwF,WAA5B,GAAwC,YAAU;AAAC,SAAO,KAAKL,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAzD;AAAmE,CAAtH;;AAAuH5B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BowF,UAA5B,GAAuC,YAAU;AAAC,SAAO,KAAKN,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BI,SAAzD;AAAmE,CAArH;;AACtW9B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BiN,QAA5B,GAAqC,YAAU;AAAC,SAAO,KAAKy/E,MAAL,IAAa,KAAKiD,QAAL,CAAc1iF,QAAd,EAApB;AAA6C,CAA7F;;AAA8F8rD,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B2sF,QAA5B,GAAqC,UAASviG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAKq3E,QAAL,CAAchD,QAAd,CAAuBviG,CAAvB,EAAyBC,CAAzB,EAA2BiuB,CAA3B;AAA8B,OAAKu3E,UAAL,GAAgB92B,IAAI,CAACC,eAAL,CAAqB+B,oBAArC;AAA0D,OAAK+0B,aAAL,GAAmB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BrB,OAAjD;AAAyD,CAAtM;;AAAuML,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BkpB,KAA5B,GAAkC,YAAU;AAAC,OAAKymE,QAAL,CAAczmE,KAAd;AAAsB,OAAK2mE,UAAL,GAAgB92B,IAAI,CAACC,eAAL,CAAqB+B,oBAArC;AAA0D,OAAK+0B,aAAL,GAAmB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BrB,OAAjD;AAAyD,CAAtL;;AACrSL,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BmtF,OAA5B,GAAoC,UAAS/iG,CAAT,EAAW;AAAC,OAAKulG,QAAL,CAAcxC,OAAd,CAAsB/iG,CAAtB;AAAyB,CAAzE;;AACA2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BqwF,SAA5B,GAAsC,YAAU;AAAC,MAAG,KAAKV,QAAL,CAAcvC,KAAd,EAAH,EAAyB,OAAM,CAAC,CAAP;AAAS,MAAG,KAAKngF,QAAL,EAAH,EAAmB,OAAOi5C,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,sBAAlB,GAA0C,CAAC,CAAlD;AAAoD,OAAK03B,YAAL,GAAkB,KAAKD,QAAL,CAAc1C,SAAd,EAAlB;AAA4C,MAAI7iG,CAAC,GAAC,KAAKulG,QAAL,CAAchC,oBAAd,EAAN;AAAA,MAA2CtjG,CAAC,GAACD,CAAC,KAAG,CAAjD;AAAmDA,GAAC,IAAE,CAAH;AAAK,MAAGA,CAAC,IAAE2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAjC,IAAyCtwE,CAAC,IAAE2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAA1E,IAAmFvvE,CAAC,IAAE2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAApH,IAA6HtvE,CAAC,IAAE2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAA9J,IAAyKvwE,CAAC,IAAE2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BG,WAA1M,IAAuNxwE,CAAC,IAAE2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BI,SAA3P,EAAqQ,OAAO3U,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,wCAAlB,EAC1gB9tE,CAD0gB,EACxgB,KAAKwlG,YADmgB,GACrf,KAAKlD,MAAL,GAAY,CAAC,CADwe,EACte,CAAC,CAD8d;AAC5d,OAAKmD,UAAL,GAAgBxlG,CAAhB;AAAkB,OAAKylG,aAAL,GAAmB1lG,CAAnB;AAAqB,SAAM,CAAC,CAAP;AAAS,CADvF;;AACwF2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BswF,YAA5B,GAAyC,YAAU;AAAC,OAAKX,QAAL,CAAcjC,YAAd,CAA2B,KAAKmC,UAAL,IAAiB,CAAjB,GAAmB,KAAKC,aAAnD;AAAkE,CAAtH;;AAAuH/2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BuwF,kBAA5B,GAA+C,YAAU;AAAC,MAAInmG,CAAC,GAAC,KAAKylG,UAAX;;AAAsB,OAAI,KAAKS,YAAL,EAAJ,EAAwB,KAAKD,SAAL,MAAkB,KAAKJ,cAAL,MAAuB7lG,CAAjE,GAAoE,KAAKomG,SAAL;;AAAiB,OAAKb,QAAL,CAAcvC,KAAd,MAAuB,KAAKkD,YAAL,EAAvB;AAA2C,CAAhN;;AAC/Mv3B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BywF,eAA5B,GAA4C,YAAU;AAAC,OAAKX,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAlD,IAA0DxU,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,uCAAlB,GAA2D,KAAKs4B,SAAL,EAArH,IAAuI,KAAKb,QAAL,CAAclC,UAAd,EAAvI;AAAkK,CAAzN;;AAA0N10B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B0wF,kBAA5B,GAA+C,YAAU;AAAC,MAAG,KAAKZ,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAArD,EAA+DzU,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,0CAAlB,GAA8D,KAAKs4B,SAAL,EAA9D,CAA/D,KAAkJ;AAAC,QAAIpmG,CAAC,GAAC,KAAKulG,QAAL,CAAchC,oBAAd,EAAN;AAA2C,SAAKgC,QAAL,CAAcxC,OAAd,CAAsB/iG,CAAtB;AAAyB;AAAC,CAAlR;;AAC1N2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B2wF,gBAA5B,GAA6C,YAAU;AAAC,OAAKb,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAlD,IAA2DzT,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,wCAAlB,GAA4D,KAAKs4B,SAAL,EAAvH,IAAyI,KAAKb,QAAL,CAAcxC,OAAd,CAAsB,CAAtB,CAAzI;AAAkK,CAA1N;;AAA2Np0B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B4wF,gBAA5B,GAA6C,YAAU;AAAC,OAAKd,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAlD,IAA2DxT,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,wCAAlB,GAA4D,KAAKs4B,SAAL,EAAvH,IAAyI,KAAKb,QAAL,CAAcxC,OAAd,CAAsB,CAAtB,CAAzI;AAAkK,CAA1N;;AAC3Np0B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B6wF,SAA5B,GAAsC,YAAU;AAAC,MAAIzmG,CAAC,GAAC,KAAKylG,UAAX;;AAAsB,KAAE;AAAC,QAAG,CAAC,KAAKQ,SAAL,EAAJ,EAAqB;AAACnqC,UAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,uCAAlB;AAA2D,WAAKw0B,MAAL,GAAY,CAAC,CAAb;AAAe;AAAM;;AAAA,QAAG,KAAKoD,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BI,SAArD,EAA+D;AAAC,WAAKg1B,UAAL,IAAiBzlG,CAAjB,KAAqB87D,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,yBAAlB,GAA6C,KAAKw0B,MAAL,GAAY,CAAC,CAA/E;AAAkF;AAAM;;AAAA,SAAK8D,SAAL;AAAiB,GAAlR,QAAwR,CAAxR;AAA2R,CAAlW;;AACAz3B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BwwF,SAA5B,GAAsC,YAAU;AAAC,UAAO,KAAKV,aAAZ;AAA2B,SAAK/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAnC;AAA0C,WAAK+1B,eAAL;AAAuB;;AAAM,SAAK13B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAnC;AAA2C,WAAKk3B,gBAAL;AAAwB;;AAAM,SAAK73B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAnC;AAA6C,WAAK+1B,kBAAL;AAA0B;;AAAM,SAAK33B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAnC;AAA2C,WAAKg3B,gBAAL;AAAwB;;AAAM,SAAK53B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BG,WAAnC;AAA+C,WAAKi2B,SAAL;AAAiB;;AAAM;AAAQ3qC,UAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,kCAAlB;AAA/Y;AAAsc,CAAvf;;AACAa,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B8wF,oBAA5B,GAAiD,UAAS1mG,CAAT,EAAWC,CAAX,EAAa;AAAC,WAAO,KAAK0lG,cAAZ,KAA6B,KAAKA,cAAL,GAAoB,EAAjD;AAAqD7pC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC,KAAK+3B,cAAL,CAAoB3lG,CAApB,CAArB;AAA6C,OAAK2lG,cAAL,CAAoB3lG,CAApB,IAAuBC,CAAvB;AAAyB,CAA1L;;AAA2L0uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B+wF,eAA5B,GAA4C,UAAS3mG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,SAAO,KAAK+3B,cAAhC;AAAgD3lG,GAAC,GAAC,KAAK2lG,cAAL,CAAoB3lG,CAApB,CAAF;AAAyB87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAApB;AAAuB,SAAOA,CAAC,CAAC,IAAD,CAAR;AAAe,CAAvK;;AAC3L2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BgxF,OAA5B,GAAoC,UAAS5mG,CAAT,EAAW;AAAC,OAAK0lG,aAAL,GAAmB/2B,IAAI,CAACC,eAAL,CAAqB8B,mBAArB,CAAyC1wE,CAAzC,CAAnB;AAA+D,MAAIC,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqBG,SAA3B;;AAAqC,UAAO/uE,CAAP;AAAU,SAAKC,CAAC,CAACgvE,MAAP;AAAc,aAAO,KAAK61B,UAAL,EAAP;;AAAyB,SAAK7kG,CAAC,CAACivE,KAAP;AAAa,aAAO,KAAK21B,SAAL,EAAP;;AAAwB,SAAK5kG,CAAC,CAACkvE,KAAP;AAAa,aAAO,KAAKw1B,SAAL,EAAP;;AAAwB,SAAK1kG,CAAC,CAACmvE,MAAP;AAAc,aAAO,KAAKk1B,UAAL,EAAP;;AAAyB,SAAKrkG,CAAC,CAACovE,KAAP;AAAa,aAAO,KAAKq1B,SAAL,EAAP;;AAAwB,SAAKzkG,CAAC,CAACqvE,OAAP;AAAe,aAAO,KAAKu3B,WAAL,EAAP;;AAA0B,SAAK5mG,CAAC,CAACsvE,OAAP;AAAe,aAAO,KAAKu3B,WAAL,EAAP;;AAA0B,SAAK7mG,CAAC,CAACuvE,IAAP;AAAY,aAAO,KAAKu1B,QAAL,EAAP;;AAAuB,SAAK9kG,CAAC,CAACwvE,MAAP;AAAc,aAAO,KAAKw1B,UAAL,EAAP;;AAC9d,SAAKhlG,CAAC,CAACyvE,KAAP;AAAa5T,UAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,6CAAlB;;AAAiE,SAAK7tE,CAAC,CAAC0vE,OAAP;AAAe7T,UAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,+CAAlB;;AAAmE,SAAK7tE,CAAC,CAAC2vE,KAAP;AAAa,aAAO,KAAKu1B,SAAL,EAAP;;AAAwB,SAAKllG,CAAC,CAAC4vE,MAAP;AAAc,aAAO,KAAKw0B,UAAL,EAAP;;AAAyB,SAAKpkG,CAAC,CAAC6vE,IAAP;AAAY,aAAO,KAAKk1B,QAAL,EAAP;;AAAuB,SAAK/kG,CAAC,CAAC8vE,QAAP;AAAgB,aAAO,KAAKg3B,YAAL,EAAP;;AAA2B,SAAK9mG,CAAC,CAAC+vE,QAAP;AAAgB,aAAO,KAAKg3B,YAAL,EAAP;;AAA2B,SAAK/mG,CAAC,CAACgwE,MAAP;AAAc,aAAO,KAAKg3B,UAAL,EAAP;;AAAyB,SAAKhnG,CAAC,CAACiwE,MAAP;AAAc,aAAO,KAAKg3B,UAAL,EAAP;;AAAyB,SAAKjnG,CAAC,CAACkwE,OAAP;AAAe,aAAO,KAAKk1B,eAAL,EAAP;;AAA8B,SAAKplG,CAAC,CAACmwE,OAAP;AAAe,aAAO,KAAKg1B,gBAAL,EAAP;;AAC/e;AAAQtpC,UAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,iCAAlB;AAF4I;;AAEvF,SAAO,CAAP;AAAS,CAFtE;;AAEuEa,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BuxF,WAA5B,GAAwC,UAASnnG,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAtE;AAAiF,MAAIriD,CAAC,GAAC,KAAKq3E,QAAL,CAAc5C,MAAd,EAAN;AAAA,MAA6B7yD,CAAC,GAAC,KAAKy1D,QAAL,CAAchC,oBAAd,EAA/B;AAAoEzzD,GAAC,GAAC,KAAKy1D,QAAL,CAAc1C,SAAd,KAA0B/yD,CAA5B;AAA8B,OAAKy1D,QAAL,CAAc3C,MAAd,CAAqB9yD,CAArB;AAAwB7vC,GAAC,CAACD,CAAD,EAAG,IAAH,CAAD;AAAU,OAAKulG,QAAL,CAAczC,SAAd,CAAwBhzD,CAAxB;AAA2B,OAAKy1D,QAAL,CAAc3C,MAAd,CAAqB10E,CAArB;AAAwB,CAA9T;;AACvEygD,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BwxF,SAA5B,GAAsC,UAASpnG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BG,WAAtE;AAAmF1U,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK63B,UAAL,IAAiBzlG,CAArC;AAAwCkuB,GAAC,CAACjuB,CAAD,EAAG,IAAH,CAAD;AAAU,OAAKqiG,MAAL,IAAa,KAAKoD,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BI,SAA/D,KAA2E3U,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,oDAAlB,GAAwE,KAAKw0B,MAAL,GAAY,CAAC,CAAhK;AAAmK,CAA9V;;AACA3zB,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4ByxF,eAA5B,GAA4C,YAAU;AAACvrC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAtE;AAAiF,MAAIvwE,CAAC,GAAC,KAAKulG,QAAL,CAAchC,oBAAd,EAAN;AAAA,MAA2CtjG,CAAC,GAAC,KAAKslG,QAAL,CAAc1C,SAAd,EAA7C;AAAA,MAAuE30E,CAAC,GAACjuB,CAAC,GAACD,CAA3E;AAA6EA,GAAC,GAAC2uE,IAAI,CAACszB,aAAL,CAAmBriF,KAAnB,CAAyB,KAAK2lF,QAAL,CAAc7C,SAAd,EAAzB,EAAmDziG,CAAnD,EAAqDD,CAArD,CAAF;AAA0D,OAAKulG,QAAL,CAAczC,SAAd,CAAwB50E,CAAxB;AAA2B,SAAOluB,CAAP;AAAS,CAAnT;;AAAoT2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B8uF,SAA5B,GAAsC,YAAU;AAAC5oC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAc/B,kBAAd,EAAP;AAA0C,CAAzK;;AACpT70B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B0xF,eAA5B,GAA4C,YAAU;AAACxrC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAc7B,wBAAd,EAAP;AAAgD,CAArL;;AAAsL/0B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B+uF,SAA5B,GAAsC,YAAU;AAAC7oC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAczB,kBAAd,EAAP;AAA0C,CAAzK;;AAA0Kn1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BgvF,eAA5B,GAA4C,YAAU;AAAC9oC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAcxB,wBAAd,EAAP;AAAgD,CAArL;;AAChWp1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4ByuF,UAA5B,GAAuC,YAAU;AAACvoC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAchC,oBAAd,EAAP;AAA4C,CAA5K;;AAA6K50B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B2xF,gBAA5B,GAA6C,YAAU;AAACzrC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAc9B,0BAAd,EAAP;AAAkD,CAAxL;;AAAyL90B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B0uF,UAA5B,GAAuC,YAAU;AAACxoC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAc3B,oBAAd,EAAP;AAA4C,CAA5K;;AACtWj1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B2uF,gBAA5B,GAA6C,YAAU;AAACzoC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAc1B,0BAAd,EAAP;AAAkD,CAAxL;;AAAyLl1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BqxF,UAA5B,GAAuC,YAAU;AAACnrC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAc5B,kBAAd,EAAP;AAA0C,CAA1K;;AAA2Kh1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BsxF,UAA5B,GAAuC,YAAU;AAACprC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAcvB,kBAAd,EAAP;AAA0C,CAA1K;;AACpWr1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B4xF,gBAA5B,GAA6C,YAAU;AAAC1rC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAcrB,wBAAd,EAAP;AAAgD,CAAtL;;AAAuLv1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BkxF,WAA5B,GAAwC,YAAU;AAAChrC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAtE;AAA+E,SAAO,KAAKg2B,QAAL,CAAclB,UAAd,EAAP;AAAkC,CAApK;;AAAqK11B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BixF,WAA5B,GAAwC,YAAU;AAAC/qC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAtE;AAA+E,SAAO,KAAKi2B,QAAL,CAAcjB,UAAd,EAAP;AAAkC,CAApK;;AAC5V31B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B6xF,iBAA5B,GAA8C,YAAU;AAAC3rC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAtE;AAA+E,SAAO,KAAKi2B,QAAL,CAAchB,gBAAd,EAAP;AAAwC,CAAhL;;AAAiL51B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BmxF,YAA5B,GAAyC,YAAU;AAACjrC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAtE;AAA+E,SAAO,KAAKg2B,QAAL,CAAcb,SAAd,EAAP;AAAiC,CAApK;;AAAqK/1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B8xF,kBAA5B,GAA+C,YAAU;AAAC5rC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAtE;AAA+E,SAAO,KAAKg2B,QAAL,CAAcb,SAAd,GAA0BluF,QAA1B,EAAP;AAA4C,CAArL;;AACtVm4D,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BoxF,YAA5B,GAAyC,YAAU;AAAClrC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAtE;AAA+E,SAAO,KAAKi2B,QAAL,CAAcZ,SAAd,EAAP;AAAiC,CAApK;;AAAqKh2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B+xF,kBAA5B,GAA+C,YAAU;AAAC7rC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAtE;AAA+E,SAAO,KAAKi2B,QAAL,CAAcX,eAAd,EAAP;AAAuC,CAAhL;;AAAiLj2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BivF,SAA5B,GAAsC,YAAU;AAAC/oC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAtE;AAA+E,SAAO,KAAKg2B,QAAL,CAAcV,SAAd,EAAP;AAAiC,CAAjK;;AACtVl2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BkvF,UAA5B,GAAuC,YAAU;AAAChpC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAtE;AAA+E,SAAO,KAAKi2B,QAAL,CAAcT,UAAd,EAAP;AAAkC,CAAnK;;AAAoKn2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BmvF,QAA5B,GAAqC,YAAU;AAACjpC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAM,CAAC,CAAC,KAAKi1B,QAAL,CAAchC,oBAAd,EAAR;AAA6C,CAA3K;;AAA4K50B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BovF,QAA5B,GAAqC,YAAU;AAAClpC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAczB,kBAAd,EAAP;AAA0C,CAAxK;;AAChVn1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BqvF,UAA5B,GAAuC,YAAU;AAACnpC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAtE;AAAiF,MAAIvwE,CAAC,GAAC,KAAKulG,QAAL,CAAchC,oBAAd,EAAN;AAA2C,SAAO,KAAKgC,QAAL,CAAcN,UAAd,CAAyBjlG,CAAzB,CAAP;AAAmC,CAAjN;;AAAkN2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BuvF,SAA5B,GAAsC,YAAU;AAACrpC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAtE;AAAiF,MAAIvwE,CAAC,GAAC,KAAKulG,QAAL,CAAchC,oBAAd,EAAN;AAA2C,SAAO,KAAKgC,QAAL,CAAcJ,SAAd,CAAwBnlG,CAAxB,CAAP;AAAkC,CAA/M;;AAClN2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BwvF,gBAA5B,GAA6C,YAAU;AAACtpC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAcH,gBAAd,EAAP;AAAwC,CAA9K;;AAA+Kz2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BgyF,cAA5B,GAA2C,YAAU;AAAC9rC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAActB,sBAAd,EAAP;AAA8C,CAAlL;;AAAmLt1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BstF,iBAA5B,GAA8C,UAASljG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAcrC,iBAAd,CAAgCljG,CAAhC,CAAP;AAA0C,CAAlL;;AAClW2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4ButF,uBAA5B,GAAoD,UAASnjG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAtE;AAA8E,SAAO,KAAKi1B,QAAL,CAAcrC,iBAAd,CAAgC,UAASjjG,CAAT,EAAWiuB,CAAX,EAAa;AAAC,WAAOygD,IAAI,CAAC0wB,KAAL,CAAWe,YAAX,CAAwBngG,CAAxB,EAA0BiuB,CAA1B,EAA4BluB,CAA5B,CAAP;AAAsC,GAApF,CAAP;AAA6F,CAA3O;;AAA4O2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4ByvF,eAA5B,GAA4C,YAAU;AAACvpC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAtE;AAA+E,SAAO,KAAKi2B,QAAL,CAAcF,eAAd,EAAP;AAAuC,CAA7K;;AAC5O12B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BwtF,gBAA5B,GAA6C,UAASpjG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAtE;AAA+E,SAAO,KAAKi2B,QAAL,CAAcnC,gBAAd,CAA+BpjG,CAA/B,CAAP;AAAyC,CAAjL;;AAAkL2uE,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BiyF,gBAA5B,GAA6C,UAAS7nG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK83B,aAAL,IAAoB/2B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAtE;AAAiF,MAAItwE,CAAC,GAAC,KAAKslG,QAAL,CAAchC,oBAAd,EAAN;AAA2CtjG,GAAC,GAAC,KAAKslG,QAAL,CAAc1C,SAAd,KAA0B5iG,CAA5B;;AAA8B,OAAI,IAAIiuB,CAAC,GAAC,EAAV,EAAa,KAAKq3E,QAAL,CAAc1C,SAAd,KAA0B5iG,CAAvC,GAA0CiuB,CAAC,CAACzvB,IAAF,CAAOuB,CAAC,CAACyW,IAAF,CAAO,KAAK8uF,QAAZ,CAAP;;AAA8B,SAAOr3E,CAAP;AAAS,CAApS;;AAClLygD,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BkyF,eAA5B,GAA4C,YAAU;AAAC,SAAO,KAAKD,gBAAL,CAAsB,KAAKtC,QAAL,CAAc/B,kBAApC,CAAP;AAA+D,CAAtH;;AAAuH70B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BmyF,qBAA5B,GAAkD,YAAU;AAAC,SAAO,KAAKF,gBAAL,CAAsB,KAAKtC,QAAL,CAAc7B,wBAApC,CAAP;AAAqE,CAAlI;;AAAmI/0B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BoyF,eAA5B,GAA4C,YAAU;AAAC,SAAO,KAAKH,gBAAL,CAAsB,KAAKtC,QAAL,CAAczB,kBAApC,CAAP;AAA+D,CAAtH;;AAAuHn1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BqyF,qBAA5B,GAAkD,YAAU;AAAC,SAAO,KAAKJ,gBAAL,CAAsB,KAAKtC,QAAL,CAAcxB,wBAApC,CAAP;AAAqE,CAAlI;;AACjXp1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BsyF,gBAA5B,GAA6C,YAAU;AAAC,SAAO,KAAKL,gBAAL,CAAsB,KAAKtC,QAAL,CAAchC,oBAApC,CAAP;AAAiE,CAAzH;;AAA0H50B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BuyF,sBAA5B,GAAmD,YAAU;AAAC,SAAO,KAAKN,gBAAL,CAAsB,KAAKtC,QAAL,CAAc9B,0BAApC,CAAP;AAAuE,CAArI;;AAAsI90B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BwyF,gBAA5B,GAA6C,YAAU;AAAC,SAAO,KAAKP,gBAAL,CAAsB,KAAKtC,QAAL,CAAc3B,oBAApC,CAAP;AAAiE,CAAzH;;AAA0Hj1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4ByyF,sBAA5B,GAAmD,YAAU;AAAC,SAAO,KAAKR,gBAAL,CAAsB,KAAKtC,QAAL,CAAc1B,0BAApC,CAAP;AAAuE,CAArI;;AAC1Xl1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B0yF,gBAA5B,GAA6C,YAAU;AAAC,SAAO,KAAKT,gBAAL,CAAsB,KAAKtC,QAAL,CAAc5B,kBAApC,CAAP;AAA+D,CAAvH;;AAAwHh1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B2yF,gBAA5B,GAA6C,YAAU;AAAC,SAAO,KAAKV,gBAAL,CAAsB,KAAKtC,QAAL,CAAcvB,kBAApC,CAAP;AAA+D,CAAvH;;AAAwHr1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B4yF,sBAA5B,GAAmD,YAAU;AAAC,SAAO,KAAKX,gBAAL,CAAsB,KAAKtC,QAAL,CAAcrB,wBAApC,CAAP;AAAqE,CAAnI;;AAAoIv1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B6yF,iBAA5B,GAA8C,YAAU;AAAC,SAAO,KAAKZ,gBAAL,CAAsB,KAAKtC,QAAL,CAAclB,UAApC,CAAP;AAAuD,CAAhH;;AACpX11B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B8yF,iBAA5B,GAA8C,YAAU;AAAC,SAAO,KAAKb,gBAAL,CAAsB,KAAKtC,QAAL,CAAcjB,UAApC,CAAP;AAAuD,CAAhH;;AAAiH31B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4B+yF,uBAA5B,GAAoD,YAAU;AAAC,SAAO,KAAKd,gBAAL,CAAsB,KAAKtC,QAAL,CAAchB,gBAApC,CAAP;AAA6D,CAA5H;;AAA6H51B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BgzF,kBAA5B,GAA+C,YAAU;AAAC,SAAO,KAAKf,gBAAL,CAAsB,KAAKtC,QAAL,CAAcb,SAApC,CAAP;AAAsD,CAAhH;;AAAiH/1B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BizF,kBAA5B,GAA+C,YAAU;AAAC,SAAO,KAAKhB,gBAAL,CAAsB,KAAKtC,QAAL,CAAcZ,SAApC,CAAP;AAAsD,CAAhH;;AAC/Vh2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BkzF,wBAA5B,GAAqD,YAAU;AAAC,SAAO,KAAKjB,gBAAL,CAAsB,KAAKtC,QAAL,CAAcX,eAApC,CAAP;AAA4D,CAA5H;;AAA6Hj2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BmzF,eAA5B,GAA4C,YAAU;AAAC,SAAO,KAAKlB,gBAAL,CAAsB,KAAKtC,QAAL,CAAcV,SAApC,CAAP;AAAsD,CAA7G;;AAA8Gl2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BozF,gBAA5B,GAA6C,YAAU;AAAC,SAAO,KAAKnB,gBAAL,CAAsB,KAAKtC,QAAL,CAAcT,UAApC,CAAP;AAAuD,CAA/G;;AAAgHn2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BqzF,cAA5B,GAA2C,YAAU;AAAC,SAAO,KAAKpB,gBAAL,CAAsB,KAAKtC,QAAL,CAAcR,QAApC,CAAP;AAAqD,CAA3G;;AAA4Gp2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BszF,cAA5B,GAA2C,YAAU;AAAC,SAAO,KAAKrB,gBAAL,CAAsB,KAAKtC,QAAL,CAAcP,QAApC,CAAP;AAAqD,CAA3G;;AACvcr2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BuzF,sBAA5B,GAAmD,YAAU;AAAC,SAAO,KAAKtB,gBAAL,CAAsB,KAAKtC,QAAL,CAAcH,gBAApC,CAAP;AAA6D,CAA3H;;AAA4Hz2B,IAAI,CAAC22B,YAAL,CAAkB1vF,SAAlB,CAA4BwzF,qBAA5B,GAAkD,YAAU;AAAC,SAAO,KAAKvB,gBAAL,CAAsB,KAAKtC,QAAL,CAAcF,eAApC,CAAP;AAA4D,CAAzH;;AAA0H12B,IAAI,CAAC06B,aAAL,GAAmB,YAAU;AAAC,OAAKC,OAAL,GAAa,EAAb;AAAgB,CAA9C;;AAA+C36B,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6BhW,MAA7B,GAAoC,YAAU;AAAC,SAAO,KAAK0pG,OAAL,CAAa1pG,MAApB;AAA2B,CAA1E;;AAA2E+uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bnc,GAA7B,GAAiC,YAAU;AAAC,MAAIuG,CAAC,GAAC,KAAKspG,OAAX;AAAmB,OAAKA,OAAL,GAAa,EAAb;AAAgB,SAAOtpG,CAAP;AAAS,CAAxF;;AAChX2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B2zF,kBAA7B,GAAgD,UAASvpG,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAEoI,IAAI,CAACC,KAAL,CAAWrI,CAAX,CAAvB;AAAsC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAMA,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD;;AAA4D,OAAIvV,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAH,IAAMA,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD,CAAJ,EAAgE,IAAEpxE,CAAF,IAAK,MAAID,CAAzE,GAA4E,KAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,GAAC,GAAF,GAAM,GAAxB,GAA6BA,CAAC,GAAC,CAACA,CAAC,KAAG,CAAJ,GAAMC,CAAC,IAAE,EAAV,MAAgB,CAA/C,EAAiDA,CAAC,MAAI,CAAtD;;AAAwD,OAAKqpG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAlB;AAAqB,CAA/V;;AACA2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B4zF,iBAA7B,GAA+C,UAASxpG,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAEoI,IAAI,CAACC,KAAL,CAAWrI,CAAX,CAAvB;AAAsC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAMA,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD;AAA4DvV,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAH,IAAMA,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD;AAA4D,OAAKo4B,WAAL,CAAiBzpG,CAAjB;AAAoB,OAAKypG,WAAL,CAAiBxpG,CAAjB;AAAoB,CAAzS;;AACA0uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B8zF,qBAA7B,GAAmD,UAAS1pG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;;AAAsC,OAAI87D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAMA,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD,CAAJ,EAAgE,MAAIrxE,CAApE,GAAuE,KAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,GAAC,GAAF,GAAM,GAAxB,GAA6BA,CAAC,MAAI,CAAlC;;AAAoC,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAlB;AAAqB,CAArO;;AACA2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B+zF,mBAA7B,GAAiD,UAAS3pG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCpxE,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E;AAA0F,MAAG,KAAGpxE,CAAN,EAAQ,KAAK0pG,qBAAL,CAA2B1pG,CAA3B,EAAR,KAA0C;AAAC,SAAI,IAAIC,CAAC,GAAC,CAAV,EAAY,IAAEA,CAAd,EAAgBA,CAAC,EAAjB,EAAoB,KAAKqpG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,GAAC,GAAF,GAAM,GAAxB,GAA6BA,CAAC,KAAG,CAAjC;;AAAmC,SAAKspG,OAAL,CAAa7qG,IAAb,CAAkB,CAAlB;AAAqB;AAAC,CAArT;;AACAkwE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bg0F,qBAA7B,GAAmD,UAAS5pG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAMA,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqB4C,SAAjD;AAA4D7C,MAAI,CAAC0wB,KAAL,CAAWI,UAAX,CAAsBz/F,CAAtB;AAAyB,OAAKupG,kBAAL,CAAwB56B,IAAI,CAAC0wB,KAAL,CAAWC,UAAnC,EAA8C3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAzD;AAAsE,CAAhQ;;AACA5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bi0F,mBAA7B,GAAiD,UAAS7pG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqB2C,SAAzB,IAAoCvxE,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqB2C,SAA/E;AAA0F5C,MAAI,CAAC0wB,KAAL,CAAWI,UAAX,CAAsBz/F,CAAtB;AAAyB,OAAKupG,kBAAL,CAAwB56B,IAAI,CAAC0wB,KAAL,CAAWC,UAAnC,EAA8C3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAzD;AAAsE,CAA5R;;AACA5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bk0F,mBAA7B,GAAiD,UAAS9pG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCpxE,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E;AAA0F,OAAKs4B,qBAAL,CAA2B,CAAC1pG,CAAC,IAAE,CAAH,GAAKA,CAAC,IAAE,EAAT,MAAe,CAA1C;AAA6C,CAA1O;;AAA2O2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bm0F,mBAA7B,GAAiD,UAAS/pG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqB2C,SAAzB,IAAoCvxE,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqB2C,SAA/E;AAA0F5C,MAAI,CAAC0wB,KAAL,CAAWK,aAAX,CAAyB1/F,CAAzB;AAA4B,OAAKupG,kBAAL,CAAwB56B,IAAI,CAAC0wB,KAAL,CAAWC,UAAnC,EAA8C3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAzD;AAAsE,CAA/R;;AAC3O5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bo0F,yBAA7B,GAAuD,UAAShqG,CAAT,EAAW;AAAC,OAAKiqG,uBAAL,CAA6Bt7B,IAAI,CAAC0wB,KAAL,CAAW2B,qBAAX,CAAiChhG,CAAjC,CAA7B;AAAkE,CAArI;;AAAsI2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bq0F,uBAA7B,GAAqD,UAASjqG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAN;AAAW0uE,MAAI,CAAC0wB,KAAL,CAAWU,WAAX,CAAuB//F,CAAvB;AAA0B2uE,MAAI,CAAC0wB,KAAL,CAAWa,UAAX,CAAsBvxB,IAAI,CAAC0wB,KAAL,CAAWC,UAAjC,EAA4C3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAvD,EAAmE,UAASv/F,CAAT,EAAW8vC,CAAX,EAAa;AAAC7vC,KAAC,CAACspG,kBAAF,CAAqBvpG,CAAC,KAAG,CAAzB,EAA2B8vC,CAAC,KAAG,CAA/B;AAAkC,GAAnH;AAAqH,CAA3N;;AACtI6+B,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bs0F,UAA7B,GAAwC,UAASlqG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAM,MAAIA,CAA9B;AAAiC,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,CAAxJ;;AAAyJ2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bu0F,WAA7B,GAAyC,UAASnqG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAM,QAAMA,CAAhC;AAAmC,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,CAAxL;;AACzJ2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B6zF,WAA7B,GAAyC,UAASzpG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAMA,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD;AAA4D,OAAKi4B,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,EAAJ,GAAO,GAAzB;AAA8B,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,EAAJ,GAAO,GAAzB;AAA8B,CAA7Q;;AAA8Q2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bw0F,WAA7B,GAAyC,UAASpqG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAMA,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqB4C,SAAjD;AAA4D7C,MAAI,CAAC0wB,KAAL,CAAWG,WAAX,CAAuBx/F,CAAvB;AAA0B,OAAKypG,WAAL,CAAiB96B,IAAI,CAAC0wB,KAAL,CAAWC,UAA5B;AAAwC,OAAKmK,WAAL,CAAiB96B,IAAI,CAAC0wB,KAAL,CAAWE,WAA5B;AAAyC,CAAlQ;;AAC9Q5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6By0F,SAA7B,GAAuC,UAASrqG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC,GAAD,IAAM5tE,CAAN,IAAS,MAAIA,CAAjC;AAAoC,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,CAA1J;;AAA2J2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B00F,UAA7B,GAAwC,UAAStqG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC,KAAD,IAAQ5tE,CAAR,IAAW,QAAMA,CAArC;AAAwC,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,CAA5L;;AAC3J2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B20F,UAA7B,GAAwC,UAASvqG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCpxE,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E;AAA0F,OAAKk4B,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,CAAJ,GAAM,GAAxB;AAA6B,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,EAAJ,GAAO,GAAzB;AAA8B,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,KAAG,EAAJ,GAAO,GAAzB;AAA8B,CAA1S;;AACA2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B40F,UAA7B,GAAwC,UAASxqG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqB2C,SAAzB,IAAoCvxE,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqB2C,SAA/E;AAA0F5C,MAAI,CAAC0wB,KAAL,CAAWI,UAAX,CAAsBz/F,CAAtB;AAAyB,OAAKwpG,iBAAL,CAAuB76B,IAAI,CAAC0wB,KAAL,CAAWC,UAAlC,EAA6C3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAxD;AAAqE,CAAlR;;AACA5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B60F,gBAA7B,GAA8C,UAASzqG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,CAAC5tE,CAAD,IAAI,CAAC2uE,IAAI,CAACC,eAAL,CAAqB2C,SAA1B,IAAqC,CAACvxE,CAAD,GAAG2uE,IAAI,CAACC,eAAL,CAAqB2C,SAAjF;AAA4F5C,MAAI,CAAC0wB,KAAL,CAAWU,WAAX,CAAuBpxB,IAAI,CAAC0wB,KAAL,CAAW2B,qBAAX,CAAiChhG,CAAjC,CAAvB;AAA4D,OAAKwpG,iBAAL,CAAuB76B,IAAI,CAAC0wB,KAAL,CAAWC,UAAlC,EAA6C3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAxD;AAAqE,CAA7T;;AACA5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B80F,UAA7B,GAAwC,UAAS1qG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB0yB,QAAQ,KAAGtgG,CAAX,IAAc,CAACsgG,QAAD,KAAYtgG,CAA1B,IAA6BqH,KAAK,CAACrH,CAAD,CAAlC,IAAuCA,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqBkC,WAAzB,IAAsC9wE,CAAC,IAAE2uE,IAAI,CAACC,eAAL,CAAqBkC,WAAzH;AAAsInC,MAAI,CAAC0wB,KAAL,CAAWM,YAAX,CAAwB3/F,CAAxB;AAA2B,OAAKypG,WAAL,CAAiB96B,IAAI,CAAC0wB,KAAL,CAAWC,UAA5B;AAAwC,CAA7P;;AACA3wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6B+0F,WAA7B,GAAyC,UAAS3qG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB0yB,QAAQ,KAAGtgG,CAAX,IAAc,CAACsgG,QAAD,KAAYtgG,CAA1B,IAA6BqH,KAAK,CAACrH,CAAD,CAAlC,IAAuCA,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqBqC,WAAzB,IAAsCjxE,CAAC,IAAE2uE,IAAI,CAACC,eAAL,CAAqBqC,WAAzH;AAAsItC,MAAI,CAAC0wB,KAAL,CAAWS,YAAX,CAAwB9/F,CAAxB;AAA2B,OAAKypG,WAAL,CAAiB96B,IAAI,CAAC0wB,KAAL,CAAWC,UAA5B;AAAwC,OAAKmK,WAAL,CAAiB96B,IAAI,CAAC0wB,KAAL,CAAWE,WAA5B;AAAyC,CAAvS;;AAAwS5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bg1F,SAA7B,GAAuC,UAAS5qG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,cAAY,OAAO5tE,CAAnB,IAAsB,aAAW,OAAOA,CAA5D;AAA+D,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBuB,CAAC,GAAC,CAAD,GAAG,CAAtB;AAAyB,CAA3I;;AACxS2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bi1F,SAA7B,GAAuC,UAAS7qG,CAAT,EAAW;AAAC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAAvB;AAAsC87D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,IAAE,CAAC2uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCpxE,CAAC,GAAC2uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E;AAA0F,OAAKu4B,mBAAL,CAAyB3pG,CAAzB;AAA4B,CAA/M;;AAAgN2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bk1F,UAA7B,GAAwC,UAAS9qG,CAAT,EAAW;AAAC,OAAKspG,OAAL,CAAa7qG,IAAb,CAAkBg+B,KAAlB,CAAwB,KAAK6sE,OAA7B,EAAqCtpG,CAArC;AAAwC,CAA5F;;AAA6F2uE,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bm1F,iBAA7B,GAA+C,UAAS/qG,CAAT,EAAW;AAAC2uE,MAAI,CAAC0wB,KAAL,CAAWU,WAAX,CAAuB//F,CAAvB;AAA0B,OAAKupG,kBAAL,CAAwB56B,IAAI,CAAC0wB,KAAL,CAAWC,UAAnC,EAA8C3wB,IAAI,CAAC0wB,KAAL,CAAWE,WAAzD;AAAsE,CAA3J;;AAC7S5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bo1F,gBAA7B,GAA8C,UAAShrG,CAAT,EAAW;AAAC2uE,MAAI,CAAC0wB,KAAL,CAAWU,WAAX,CAAuB//F,CAAvB;AAA0B,OAAKypG,WAAL,CAAiB96B,IAAI,CAAC0wB,KAAL,CAAWC,UAA5B;AAAwC,OAAKmK,WAAL,CAAiB96B,IAAI,CAAC0wB,KAAL,CAAWE,WAA5B;AAAyC,CAArK;;AACA5wB,IAAI,CAAC06B,aAAL,CAAmBzzF,SAAnB,CAA6Bq1F,WAA7B,GAAyC,UAASjrG,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,KAAKqpG,OAAL,CAAa1pG,MAAnB,EAA0BsuB,CAAC,GAAC,CAAhC,EAAkCA,CAAC,GAACluB,CAAC,CAACJ,MAAtC,EAA6CsuB,CAAC,EAA9C,EAAiD;AAAC,QAAI4hB,CAAC,GAAC9vC,CAAC,CAACiY,UAAF,CAAaiW,CAAb,CAAN;AAAsB,QAAG,MAAI4hB,CAAP,EAAS,KAAKw5D,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAlB,EAAT,KAAmC,IAAG,OAAKA,CAAR,EAAU,KAAKw5D,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,IAAE,CAAH,GAAK,GAAvB,GAA4B,KAAKw5D,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,GAAC,EAAF,GAAK,GAAvB,CAA5B,CAAV,KAAuE,IAAG,QAAMA,CAAT,EAAW,IAAG,SAAOA,CAAP,IAAU,SAAOA,CAAjB,IAAoB5hB,CAAC,GAAC,CAAF,GAAIluB,CAAC,CAACJ,MAA7B,EAAoC;AAAC,UAAIsjB,CAAC,GAACljB,CAAC,CAACiY,UAAF,CAAaiW,CAAC,GAAC,CAAf,CAAN;AAAwB,eAAOhL,CAAP,IAAU,SAAOA,CAAjB,KAAqB4sB,CAAC,GAAC,QAAMA,CAAC,GAAC,KAAR,IAAe5sB,CAAf,GAAiB,KAAjB,GAAuB,KAAzB,EAA+B,KAAKomF,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,IAAE,EAAH,GAAM,GAAxB,CAA/B,EAA4D,KAAKw5D,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,IAAE,EAAH,GAAM,EAAN,GAAS,GAA3B,CAA5D,EAA4F,KAAKw5D,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,IAAE,CAAH,GAAK,EAAL,GAAQ,GAA1B,CAA5F,EAA2H,KAAKw5D,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,GAAC,EAAF,GAAK,GAAvB,CAA3H,EAAuJ5hB,CAAC,EAA7K;AAAiL,KAA9O,MAAmP,KAAKo7E,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,IACxf,EADuf,GACpf,GADke,GAC7d,KAAKw5D,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,IAAE,CAAH,GAAK,EAAL,GAAQ,GAA1B,CAD6d,EAC9b,KAAKw5D,OAAL,CAAa7qG,IAAb,CAAkBqxC,CAAC,GAAC,EAAF,GAAK,GAAvB,CAD8b;AACla;;AAAA,SAAO,KAAKw5D,OAAL,CAAa1pG,MAAb,GAAoBK,CAA3B;AAA6B,CADhG;;AACiG0uE,IAAI,CAACu8B,KAAL,GAAW,EAAX;;AAAcv8B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,GAAkB,UAASnrG,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAKmrG,EAAL,GAAQprG,CAAR;AAAU,OAAKqrG,EAAL,GAAQprG,CAAR;AAAU,CAApD;;AAAqD0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4B01F,GAA5B,GAAgC,UAAStrG,CAAT,EAAW;AAAC,SAAO,KAAKqrG,EAAL,GAAQrrG,CAAC,CAACqrG,EAAV,IAAc,KAAKA,EAAL,IAASrrG,CAAC,CAACqrG,EAAX,IAAe,KAAKD,EAAL,GAAQprG,CAAC,CAACorG,EAAvC,GAA0C,CAAC,CAA3C,GAA6C,KAAKC,EAAL,IAASrrG,CAAC,CAACqrG,EAAX,IAAe,KAAKD,EAAL,IAASprG,CAAC,CAACorG,EAA1B,GAA6B,CAA7B,GAA+B,CAAnF;AAAqF,CAAjI;;AAAkIz8B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4B21F,UAA5B,GAAuC,YAAU;AAAC,SAAO,IAAI58B,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAC,KAAKC,EAAL,KAAU,CAAV,GAAY,CAAC,KAAKC,EAAL,GAAQ,CAAT,KAAa,EAA1B,MAAgC,CAAtD,EAAwD,KAAKA,EAAL,KAAU,CAAV,KAAc,CAAtE,CAAP;AAAgF,CAAlI;;AAAmI18B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4B41F,SAA5B,GAAsC,YAAU;AAAC,SAAO,IAAI78B,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,KAAKC,EAAL,IAAS,CAAT,KAAa,CAAnC,EAAqC,CAAC,KAAKC,EAAL,IAAS,CAAT,GAAW,KAAKD,EAAL,KAAU,EAAtB,MAA4B,CAAjE,CAAP;AAA2E,CAA5H;;AACzaz8B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4B61F,GAA5B,GAAgC,YAAU;AAAC,SAAM,CAAC,EAAE,KAAKJ,EAAL,GAAQ,UAAV,CAAP;AAA6B,CAAxE;;AAAyE18B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4B81F,GAA5B,GAAgC,YAAU;AAAC,SAAM,CAAC,EAAE,KAAKN,EAAL,GAAQ,CAAV,CAAP;AAAoB,CAA/D;;AAAgEz8B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4BuD,IAA5B,GAAiC,YAAU;AAAC,SAAO,KAAG,KAAKiyF,EAAR,IAAY,KAAG,KAAKC,EAA3B;AAA8B,CAA1E;;AAA2E18B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4Bja,GAA5B,GAAgC,UAASqE,CAAT,EAAW;AAAC,SAAO,IAAI2uE,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAC,KAAKC,EAAL,GAAQprG,CAAC,CAACorG,EAAV,GAAa,UAAd,MAA4B,CAA5B,KAAgC,CAAtD,EAAwD,CAAC,CAAC,KAAKC,EAAL,GAAQrrG,CAAC,CAACqrG,EAAV,GAAa,UAAd,MAA4B,CAA7B,KAAiC,cAAY,KAAKD,EAAL,GAAQprG,CAAC,CAACorG,EAAtB,GAAyB,CAAzB,GAA2B,CAA5D,MAAiE,CAAzH,CAAP;AAAmI,CAA/K;;AACpNz8B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4B+1F,GAA5B,GAAgC,UAAS3rG,CAAT,EAAW;AAAC,SAAO,IAAI2uE,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAC,KAAKC,EAAL,GAAQprG,CAAC,CAACorG,EAAV,GAAa,UAAd,MAA4B,CAA5B,KAAgC,CAAtD,EAAwD,CAAC,CAAC,KAAKC,EAAL,GAAQrrG,CAAC,CAACqrG,EAAV,GAAa,UAAd,MAA4B,CAA7B,KAAiC,IAAE,KAAKD,EAAL,GAAQprG,CAAC,CAACorG,EAAZ,GAAe,CAAf,GAAiB,CAAlD,MAAuD,CAA/G,CAAP;AAAyH,CAArK;;AAAsKz8B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBS,QAAlB,GAA2B,UAAS5rG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACluB,CAAC,GAAC,KAAR;AAAcA,GAAC,MAAI,EAAL;AAAQ,MAAI8vC,CAAC,GAAC7vC,CAAC,GAAC,KAAR;AAAA,MAAcijB,CAAC,GAACjjB,CAAC,KAAG,EAApB;AAAuBA,GAAC,GAACiuB,CAAC,GAAC4hB,CAAF,GAAI,SAAO5hB,CAAC,GAAChL,CAAF,GAAI,KAAX,CAAJ,GAAsB,SAAOljB,CAAC,GAAC8vC,CAAF,GAAI,KAAX,CAAxB;;AAA0C,OAAI5hB,CAAC,GAACluB,CAAC,GAACkjB,CAAF,IAAKgL,CAAC,GAAChL,CAAF,KAAM,EAAX,KAAgBljB,CAAC,GAAC8vC,CAAF,KAAM,EAAtB,CAAN,EAAgC,cAAY7vC,CAA5C,GAA+CA,CAAC,IAAE,UAAH,EAAciuB,CAAC,IAAE,CAAjB;;AAAmB,SAAO,IAAIygD,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsBlrG,CAAC,KAAG,CAA1B,EAA4BiuB,CAAC,KAAG,CAAhC,CAAP;AAA0C,CAA5O;;AACtKygD,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4Bi2F,GAA5B,GAAgC,UAAS7rG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBS,QAAlB,CAA2B,KAAKR,EAAhC,EAAmCprG,CAAnC,CAAN;AAA4CA,GAAC,GAAC2uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBS,QAAlB,CAA2B,KAAKP,EAAhC,EAAmCrrG,CAAnC,CAAF;AAAwCA,GAAC,CAACqrG,EAAF,GAAKrrG,CAAC,CAACorG,EAAP;AAAUprG,GAAC,CAACorG,EAAF,GAAK,CAAL;AAAO,SAAOnrG,CAAC,CAACtE,GAAF,CAAMqE,CAAN,CAAP;AAAgB,CAAjK;;AACA2uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4Bk2F,GAA5B,GAAgC,UAAS9rG,CAAT,EAAW;AAAC,MAAG,KAAGA,CAAN,EAAQ,OAAM,EAAN;AAAS,MAAIC,CAAC,GAAC,IAAI0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAtB,EAAwB,CAAxB,CAAN;AAAA,MAAiCj9E,CAAC,GAAC,IAAIygD,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,KAAKC,EAA3B,EAA8B,KAAKC,EAAnC,CAAnC;AAA0ErrG,GAAC,GAAC,IAAI2uE,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsBnrG,CAAtB,EAAwB,CAAxB,CAAF;;AAA6B,OAAI,IAAI8vC,CAAC,GAAC,IAAI6+B,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAtB,EAAwB,CAAxB,CAAV,EAAqC,CAACnrG,CAAC,CAACyrG,GAAF,EAAtC,GAA+CzrG,CAAC,GAACA,CAAC,CAACwrG,SAAF,EAAF,EAAgB17D,CAAC,GAACA,CAAC,CAAC07D,SAAF,EAAlB;;AAAgC,SAAK,CAAC17D,CAAC,CAAC32B,IAAF,EAAN,GAAgB,KAAGnZ,CAAC,CAACsrG,GAAF,CAAMp9E,CAAN,CAAH,KAAcjuB,CAAC,GAACA,CAAC,CAACtE,GAAF,CAAMm0C,CAAN,CAAF,EAAW5hB,CAAC,GAACA,CAAC,CAACy9E,GAAF,CAAM3rG,CAAN,CAA3B,GAAqCA,CAAC,GAACA,CAAC,CAACurG,UAAF,EAAvC,EAAsDz7D,CAAC,GAACA,CAAC,CAACy7D,UAAF,EAAxD;;AAAuE,SAAM,CAACtrG,CAAD,EAAGiuB,CAAH,CAAN;AAAY,CAAtV;;AAAuVygD,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4BY,QAA5B,GAAqC,YAAU;AAAC,OAAI,IAAIxW,CAAC,GAAC,EAAN,EAASC,CAAC,GAAC,IAAf,EAAoB,CAACA,CAAC,CAACkZ,IAAF,EAArB,GAA+B;AAAClZ,KAAC,GAACA,CAAC,CAAC6rG,GAAF,CAAM,EAAN,CAAF;AAAY,QAAI59E,CAAC,GAACjuB,CAAC,CAAC,CAAD,CAAP;AAAWD,KAAC,GAACC,CAAC,CAAC,CAAD,CAAD,CAAKmrG,EAAL,GAAQprG,CAAV;AAAYC,KAAC,GAACiuB,CAAF;AAAI;;AAAA,QAAIluB,CAAJ,KAAQA,CAAC,GAAC,GAAV;AAAe,SAAOA,CAAP;AAAS,CAA/I;;AACvV2uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBY,UAAlB,GAA6B,UAAS/rG,CAAT,EAAW;AAAC,OAAI,IAAIC,CAAC,GAAC,IAAI0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAtB,EAAwB,CAAxB,CAAN,EAAiCj9E,CAAC,GAAC,IAAIygD,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAtB,EAAwB,CAAxB,CAAnC,EAA8Dr7D,CAAC,GAAC,CAApE,EAAsEA,CAAC,GAAC9vC,CAAC,CAACJ,MAA1E,EAAiFkwC,CAAC,EAAlF,EAAqF;AAAC,QAAG,MAAI9vC,CAAC,CAAC8vC,CAAD,CAAL,IAAU,MAAI9vC,CAAC,CAAC8vC,CAAD,CAAlB,EAAsB,OAAO,IAAP;AAAY,QAAI5sB,CAAC,GAAClJ,QAAQ,CAACha,CAAC,CAAC8vC,CAAD,CAAF,EAAM,EAAN,CAAd;AAAwB5hB,KAAC,CAACk9E,EAAF,GAAKloF,CAAL;AAAOjjB,KAAC,GAACA,CAAC,CAAC4rG,GAAF,CAAM,EAAN,EAAUlwG,GAAV,CAAcuyB,CAAd,CAAF;AAAmB;;AAAA,SAAOjuB,CAAP;AAAS,CAA5N;;AAA6N0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBv1F,SAAlB,CAA4BgpB,KAA5B,GAAkC,YAAU;AAAC,SAAO,IAAI+vC,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,KAAKC,EAA3B,EAA8B,KAAKC,EAAnC,CAAP;AAA8C,CAA3F;;AAA4F18B,IAAI,CAACu8B,KAAL,CAAWc,KAAX,GAAiB,UAAShsG,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAKmrG,EAAL,GAAQprG,CAAR;AAAU,OAAKqrG,EAAL,GAAQprG,CAAR;AAAU,CAAnD;;AACzT0uE,IAAI,CAACu8B,KAAL,CAAWc,KAAX,CAAiBp2F,SAAjB,CAA2Bja,GAA3B,GAA+B,UAASqE,CAAT,EAAW;AAAC,SAAO,IAAI2uE,IAAI,CAACu8B,KAAL,CAAWc,KAAf,CAAqB,CAAC,KAAKZ,EAAL,GAAQprG,CAAC,CAACorG,EAAV,GAAa,UAAd,MAA4B,CAA5B,KAAgC,CAArD,EAAuD,CAAC,CAAC,KAAKC,EAAL,GAAQrrG,CAAC,CAACqrG,EAAV,GAAa,UAAd,MAA4B,CAA7B,KAAiC,cAAY,KAAKD,EAAL,GAAQprG,CAAC,CAACorG,EAAtB,GAAyB,CAAzB,GAA2B,CAA5D,MAAiE,CAAxH,CAAP;AAAkI,CAA7K;;AAA8Kz8B,IAAI,CAACu8B,KAAL,CAAWc,KAAX,CAAiBp2F,SAAjB,CAA2B+1F,GAA3B,GAA+B,UAAS3rG,CAAT,EAAW;AAAC,SAAO,IAAI2uE,IAAI,CAACu8B,KAAL,CAAWc,KAAf,CAAqB,CAAC,KAAKZ,EAAL,GAAQprG,CAAC,CAACorG,EAAV,GAAa,UAAd,MAA4B,CAA5B,KAAgC,CAArD,EAAuD,CAAC,CAAC,KAAKC,EAAL,GAAQrrG,CAAC,CAACqrG,EAAV,GAAa,UAAd,MAA4B,CAA7B,KAAiC,IAAE,KAAKD,EAAL,GAAQprG,CAAC,CAACorG,EAAZ,GAAe,CAAf,GAAiB,CAAlD,MAAuD,CAA9G,CAAP;AAAwH,CAAnK;;AAAoKz8B,IAAI,CAACu8B,KAAL,CAAWc,KAAX,CAAiBp2F,SAAjB,CAA2BgpB,KAA3B,GAAiC,YAAU;AAAC,SAAO,IAAI+vC,IAAI,CAACu8B,KAAL,CAAWc,KAAf,CAAqB,KAAKZ,EAA1B,EAA6B,KAAKC,EAAlC,CAAP;AAA6C,CAAzF;;AAClV18B,IAAI,CAACu8B,KAAL,CAAWc,KAAX,CAAiBp2F,SAAjB,CAA2BY,QAA3B,GAAoC,YAAU;AAAC,MAAIxW,CAAC,GAAC,MAAI,KAAKqrG,EAAL,GAAQ,UAAZ,CAAN;AAAA,MAA8BprG,CAAC,GAAC,IAAI0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,KAAKC,EAA3B,EAA8B,KAAKC,EAAnC,CAAhC;AAAuErrG,GAAC,KAAGC,CAAC,GAAE,IAAI0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAtB,EAAwB,CAAxB,CAAD,CAA6BQ,GAA7B,CAAiC1rG,CAAjC,CAAL,CAAD;AAA2C,SAAM,CAACD,CAAC,GAAC,GAAD,GAAK,EAAP,IAAWC,CAAC,CAACuW,QAAF,EAAjB;AAA8B,CAA/L;;AAAgMm4D,IAAI,CAACu8B,KAAL,CAAWc,KAAX,CAAiBD,UAAjB,GAA4B,UAAS/rG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,IAAED,CAAC,CAACJ,MAAJ,IAAY,OAAKI,CAAC,CAAC,CAAD,CAAxB;AAA4BC,GAAC,KAAGD,CAAC,GAACA,CAAC,CAAC88C,SAAF,CAAY,CAAZ,CAAL,CAAD;AAAsB98C,GAAC,GAAC2uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBY,UAAlB,CAA6B/rG,CAA7B,CAAF;AAAkC,MAAG,SAAOA,CAAV,EAAY,OAAO,IAAP;AAAYC,GAAC,KAAGD,CAAC,GAAE,IAAI2uE,IAAI,CAACu8B,KAAL,CAAWC,MAAf,CAAsB,CAAtB,EAAwB,CAAxB,CAAD,CAA6BQ,GAA7B,CAAiC3rG,CAAjC,CAAL,CAAD;AAA2C,SAAO,IAAI2uE,IAAI,CAACu8B,KAAL,CAAWc,KAAf,CAAqBhsG,CAAC,CAACorG,EAAvB,EAA0BprG,CAAC,CAACqrG,EAA5B,CAAP;AAAuC,CAAtO;;AAAuO18B,IAAI,CAACs9B,YAAL,GAAkB,YAAU;AAAC,OAAKC,OAAL,GAAa,EAAb;AAAgB,OAAKC,YAAL,GAAkB,CAAlB;AAAoB,OAAKC,QAAL,GAAc,IAAIz9B,IAAI,CAAC06B,aAAT,EAAd;AAAqC,OAAKgD,UAAL,GAAgB,EAAhB;AAAmB,CAAzH;;AAA0H19B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B02F,iBAA5B,GAA8C,UAAStsG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC,KAAKmsG,QAAL,CAAc3yG,GAAd,EAAN;AAA0B,OAAKyyG,OAAL,CAAaztG,IAAb,CAAkBwB,CAAlB;AAAqB,OAAKisG,OAAL,CAAaztG,IAAb,CAAkBuB,CAAlB;AAAqB,OAAKmsG,YAAL,IAAmBlsG,CAAC,CAACL,MAAF,GAASI,CAAC,CAACJ,MAA9B;AAAqC,CAAnK;;AACjiB+uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B22F,eAA5B,GAA4C,UAASvsG,CAAT,EAAW;AAAC,OAAKwsG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD;AAAkEvwE,GAAC,GAAC,KAAKosG,QAAL,CAAc3yG,GAAd,EAAF;AAAsB,OAAKyyG,OAAL,CAAaztG,IAAb,CAAkBuB,CAAlB;AAAqB,OAAKmsG,YAAL,IAAmBnsG,CAAC,CAACJ,MAArB;AAA4BI,GAAC,CAACvB,IAAF,CAAO,KAAK0tG,YAAZ;AAA0B,SAAOnsG,CAAP;AAAS,CAApO;;AAAqO2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B62F,aAA5B,GAA0C,UAASzsG,CAAT,EAAW;AAAC,MAAIC,CAAC,GAACD,CAAC,CAACQ,GAAF,EAAN;AAAcP,GAAC,GAAC,KAAKksG,YAAL,GAAkB,KAAKC,QAAL,CAAcxsG,MAAd,EAAlB,GAAyCK,CAA3C;;AAA6C,OAAI67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAvB,CAAJ,EAA8B,MAAIA,CAAlC,GAAqCD,CAAC,CAACvB,IAAF,CAAOwB,CAAC,GAAC,GAAF,GAAM,GAAb,GAAkBA,CAAC,MAAI,CAAvB,EAAyB,KAAKksG,YAAL,EAAzB;;AAA6CnsG,GAAC,CAACvB,IAAF,CAAOwB,CAAP;AAAU,OAAKksG,YAAL;AAAoB,CAAjO;;AACrOx9B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B82F,sBAA5B,GAAmD,UAAS1sG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAKo+E,iBAAL,CAAuBtsG,CAAC,CAACo/F,QAAF,CAAWn/F,CAAX,EAAaiuB,CAAb,CAAvB;AAAwC,CAA3G;;AAA4GygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B+2F,2BAA5B,GAAwD,UAAS3sG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,UAAMluB,CAAN,IAAS,QAAMC,CAAf,IAAkB,QAAMiuB,CAAxB,IAA2B,KAAKw+E,sBAAL,CAA4B1sG,CAA5B,EAA8BC,CAA9B,EAAgCiuB,CAAhC,CAA3B;AAA8D,CAAtI;;AAAuIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4BkpB,KAA5B,GAAkC,YAAU;AAAC,OAAKotE,OAAL,GAAa,EAAb;AAAgB,OAAKE,QAAL,CAAc3yG,GAAd;AAAoB,OAAK0yG,YAAL,GAAkB,CAAlB;AAAoB,OAAKE,UAAL,GAAgB,EAAhB;AAAmB,CAAxH;;AACnP19B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bg3F,eAA5B,GAA4C,YAAU;AAAC9wC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG,KAAKy+B,UAAL,CAAgBzsG,MAAvC;;AAA+C,OAAI,IAAII,CAAC,GAAC,IAAI+b,UAAJ,CAAe,KAAKowF,YAAL,GAAkB,KAAKC,QAAL,CAAcxsG,MAAd,EAAjC,CAAN,EAA+DK,CAAC,GAAC,KAAKisG,OAAtE,EAA8Eh+E,CAAC,GAACjuB,CAAC,CAACL,MAAlF,EAAyFkwC,CAAC,GAAC,CAA3F,EAA6F5sB,CAAC,GAAC,CAAnG,EAAqGA,CAAC,GAACgL,CAAvG,EAAyGhL,CAAC,EAA1G,EAA6G;AAAC,QAAIujB,CAAC,GAACxmC,CAAC,CAACijB,CAAD,CAAP;AAAWljB,KAAC,CAACZ,GAAF,CAAMqnC,CAAN,EAAQqJ,CAAR;AAAWA,KAAC,IAAErJ,CAAC,CAAC7mC,MAAL;AAAY;;AAAAK,GAAC,GAAC,KAAKmsG,QAAL,CAAc3yG,GAAd,EAAF;AAAsBuG,GAAC,CAACZ,GAAF,CAAMa,CAAN,EAAQ6vC,CAAR;AAAWA,GAAC,IAAE7vC,CAAC,CAACL,MAAL;AAAYk8D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB99B,CAAC,IAAE9vC,CAAC,CAACJ,MAAzB;AAAiC,OAAKssG,OAAL,GAAa,CAAClsG,CAAD,CAAb;AAAiB,SAAOA,CAAP;AAAS,CAA9V;;AAA+V2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bi3F,qBAA5B,GAAkD,UAAS7sG,CAAT,EAAW;AAAC,SAAO87D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB0gE,eAAlB,CAAkC,KAAK+N,eAAL,EAAlC,EAAyD5sG,CAAzD,CAAP;AAAmE,CAAjI;;AAC/V2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bk3F,eAA5B,GAA4C,UAAS9sG,CAAT,EAAW;AAAC,OAAKqsG,UAAL,CAAgB5tG,IAAhB,CAAqB,KAAK8tG,eAAL,CAAqBvsG,CAArB,CAArB;AAA8C,CAAtG;;AAAuG2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bm3F,aAA5B,GAA0C,YAAU;AAACjxC,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG,KAAKy+B,UAAL,CAAgBzsG,MAAvC;AAA+C,OAAK6sG,aAAL,CAAmB,KAAKJ,UAAL,CAAgB7rG,GAAhB,EAAnB;AAA0C,CAA9I;;AAA+ImuE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B42F,iBAA5B,GAA8C,UAASxsG,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG5tE,CAAH,IAAMA,CAAC,IAAEqI,IAAI,CAACC,KAAL,CAAWtI,CAAX,CAA7B;AAA4C,OAAKosG,QAAL,CAAc1C,qBAAd,CAAoC,IAAE1pG,CAAF,GAAIC,CAAxC;AAA2C,CAAnJ;;AACtP0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bo3F,QAA5B,GAAqC,UAAShtG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAI4hB,CAAC,GAAC6+B,IAAI,CAACC,eAAL,CAAqBG,SAA3B;;AAAqC,UAAO/uE,CAAP;AAAU,SAAK8vC,CAAC,CAACm/B,MAAP;AAAc,WAAK07B,WAAL,CAAiB1qG,CAAjB,EAAmBiuB,CAAnB;AAAsB;;AAAM,SAAK4hB,CAAC,CAACo/B,KAAP;AAAa,WAAKw7B,UAAL,CAAgBzqG,CAAhB,EAAkBiuB,CAAlB;AAAqB;;AAAM,SAAK4hB,CAAC,CAACq/B,KAAP;AAAa,WAAKq7B,UAAL,CAAgBvqG,CAAhB,EAAkBiuB,CAAlB;AAAqB;;AAAM,SAAK4hB,CAAC,CAACs/B,MAAP;AAAc,WAAKg7B,WAAL,CAAiBnqG,CAAjB,EAAmBiuB,CAAnB;AAAsB;;AAAM,SAAK4hB,CAAC,CAACu/B,KAAP;AAAa,WAAKk7B,UAAL,CAAgBtqG,CAAhB,EAAkBiuB,CAAlB;AAAqB;;AAAM,SAAK4hB,CAAC,CAACw/B,OAAP;AAAe,WAAK29B,YAAL,CAAkBhtG,CAAlB,EAAoBiuB,CAApB;AAAuB;;AAAM,SAAK4hB,CAAC,CAACy/B,OAAP;AAAe,WAAK29B,YAAL,CAAkBjtG,CAAlB,EAAoBiuB,CAApB;AAAuB;;AAAM,SAAK4hB,CAAC,CAAC0/B,IAAP;AAAY,WAAKo7B,SAAL,CAAe3qG,CAAf,EAAiBiuB,CAAjB;AAAoB;;AAAM,SAAK4hB,CAAC,CAAC2/B,MAAP;AAAc,WAAKw7B,WAAL,CAAiBhrG,CAAjB,EAAmBiuB,CAAnB;AAAsB;;AAAM,SAAK4hB,CAAC,CAAC4/B,KAAP;AAAa5T,UAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,8CAAlB;AACre;;AAAM,SAAKh+B,CAAC,CAAC6/B,OAAP;AAAe7T,UAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,gDAAlB;AAAoE;;AAAM,SAAKh+B,CAAC,CAAC8/B,KAAP;AAAa,WAAKk7B,UAAL,CAAgB7qG,CAAhB,EAAkBiuB,CAAlB;AAAqB;;AAAM,SAAK4hB,CAAC,CAAC+/B,MAAP;AAAc,WAAK45B,WAAL,CAAiBxpG,CAAjB,EAAmBiuB,CAAnB;AAAsB;;AAAM,SAAK4hB,CAAC,CAACggC,IAAP;AAAY,WAAK+6B,SAAL,CAAe5qG,CAAf,EAAiBiuB,CAAjB;AAAoB;;AAAM,SAAK4hB,CAAC,CAACigC,QAAP;AAAgB,WAAKo9B,aAAL,CAAmBltG,CAAnB,EAAqBiuB,CAArB;AAAwB;;AAAM,SAAK4hB,CAAC,CAACkgC,QAAP;AAAgB,WAAKo9B,aAAL,CAAmBntG,CAAnB,EAAqBiuB,CAArB;AAAwB;;AAAM,SAAK4hB,CAAC,CAACmgC,MAAP;AAAc,WAAKo9B,WAAL,CAAiBptG,CAAjB,EAAmBiuB,CAAnB;AAAsB;;AAAM,SAAK4hB,CAAC,CAACogC,MAAP;AAAc,WAAKo9B,WAAL,CAAiBrtG,CAAjB,EAAmBiuB,CAAnB;AAAsB;;AAAM,SAAK4hB,CAAC,CAACqgC,OAAP;AAAe,WAAK66B,gBAAL,CAAsB/qG,CAAtB,EAAwBiuB,CAAxB;AAA2B;;AAAM,SAAK4hB,CAAC,CAACsgC,OAAP;AAAe,WAAK26B,iBAAL,CAAuB9qG,CAAvB,EAAyBiuB,CAAzB;AAA4B;;AAAM;AAAQ4tC,UAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,kCAAlB;AADtZ;AAC6c,CADviB;;AAEAa,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B23F,sBAA5B,GAAmD,UAASvtG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,GAA+D,KAAK87B,QAAL,CAAc1C,qBAAd,CAAoCzpG,CAApC,CAAzE;AAAiH,CAAlL;;AAAmL0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B43F,oBAA5B,GAAiD,UAASxtG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,GAA+D,KAAK87B,QAAL,CAAczC,mBAAd,CAAkC1pG,CAAlC,CAAzE;AAA+G,CAA9K;;AAA+K0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B63F,sBAA5B,GAAmD,UAASztG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,GAA+D,KAAK87B,QAAL,CAAcxC,qBAAd,CAAoC3pG,CAApC,CAAzE;AAAiH,CAAlL;;AAClW0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B83F,oBAA5B,GAAiD,UAAS1tG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,GAA+D,KAAK87B,QAAL,CAAcvC,mBAAd,CAAkC5pG,CAAlC,CAAzE;AAA+G,CAA9K;;AAA+K0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B+3F,oBAA5B,GAAiD,UAAS3tG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,GAA+D,KAAK87B,QAAL,CAActC,mBAAd,CAAkC7pG,CAAlC,CAAzE;AAA+G,CAA9K;;AAA+K0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bg4F,oBAA5B,GAAiD,UAAS5tG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,GAA+D,KAAK87B,QAAL,CAAcrC,mBAAd,CAAkC9pG,CAAlC,CAAzE;AAA+G,CAA9K;;AAC9V0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bi4F,0BAA5B,GAAuD,UAAS7tG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,GAA+D,KAAK87B,QAAL,CAAcpC,yBAAd,CAAwC/pG,CAAxC,CAAzE;AAAqH,CAA1L;;AAA2L0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bk4F,wBAA5B,GAAqD,UAAS9tG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,GAA+D,KAAK87B,QAAL,CAAcnC,uBAAd,CAAsChqG,CAAtC,CAAzE;AAAmH,CAAtL;;AAC3L0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B20F,UAA5B,GAAuC,UAASvqG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAE,CAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCnxE,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E,GAA0F,KAAKo8B,oBAAL,CAA0BxtG,CAA1B,EAA4BC,CAA5B,CAApG;AAAoI,CAAzL;;AAA0L0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bm4F,gBAA5B,GAA6C,UAAS/tG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAUA,CAAC,GAAC+Z,QAAQ,CAAC/Z,CAAD,EAAG,EAAH,CAAV,EAAiB67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAE,CAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCnxE,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E,CAAjB,EAA2G,KAAKo8B,oBAAL,CAA0BxtG,CAA1B,EAA4BC,CAA5B,CAArH;AAAqJ,CAAhN;;AAC1L0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B40F,UAA5B,GAAuC,UAASxqG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAE,CAAC0uE,IAAI,CAACC,eAAL,CAAqB2C,SAAzB,IAAoCtxE,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqB2C,SAA/E,GAA0F,KAAKm8B,oBAAL,CAA0B1tG,CAA1B,EAA4BC,CAA5B,CAApG;AAAoI,CAAzL;;AAA0L0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B60F,gBAA5B,GAA6C,UAASzqG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAUA,CAAC,GAAC0uE,IAAI,CAACu8B,KAAL,CAAWc,KAAX,CAAiBD,UAAjB,CAA4B9rG,CAA5B,CAAF,EAAiC,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,CAAjC,EAAgG,KAAK87B,QAAL,CAAc7C,kBAAd,CAAiCtpG,CAAC,CAACmrG,EAAnC,EAAsCnrG,CAAC,CAACorG,EAAxC,CAA1G;AAAuJ,CAAlN;;AAC1L18B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B6zF,WAA5B,GAAwC,UAASzpG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAH,IAAMA,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD,GAA4D,KAAKk8B,sBAAL,CAA4BvtG,CAA5B,EAA8BC,CAA9B,CAAtE;AAAwG,CAA9J;;AAA+J0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bo4F,iBAA5B,GAA8C,UAAShuG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAUA,CAAC,GAAC+Z,QAAQ,CAAC/Z,CAAD,EAAG,EAAH,CAAV,EAAiB67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAH,IAAMA,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD,CAAjB,EAA6E,KAAKk8B,sBAAL,CAA4BvtG,CAA5B,EAA8BC,CAA9B,CAAvF;AAAyH,CAArL;;AAAsL0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bw0F,WAA5B,GAAwC,UAASpqG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAH,IAAMA,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqB4C,SAAjD,GAA4D,KAAKi8B,sBAAL,CAA4BztG,CAA5B,EAA8BC,CAA9B,CAAtE;AAAwG,CAA9J;;AACrV0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bq4F,iBAA5B,GAA8C,UAASjuG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAUA,CAAC,GAAC0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBY,UAAlB,CAA6B9rG,CAA7B,CAAF,EAAkC,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,CAAlC,EAAiG,KAAK87B,QAAL,CAAc7C,kBAAd,CAAiCtpG,CAAC,CAACmrG,EAAnC,EAAsCnrG,CAAC,CAACorG,EAAxC,CAA3G;AAAwJ,CAApN;;AAAqN18B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4By3F,WAA5B,GAAwC,UAASrtG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAE,CAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCnxE,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E,GAA0F,KAAKu8B,oBAAL,CAA0B3tG,CAA1B,EAA4BC,CAA5B,CAApG;AAAoI,CAA1L;;AACrN0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B03F,WAA5B,GAAwC,UAASttG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAE,CAAC0uE,IAAI,CAACC,eAAL,CAAqB2C,SAAzB,IAAoCtxE,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqB2C,SAA/E,GAA0F,KAAKq8B,oBAAL,CAA0B5tG,CAA1B,EAA4BC,CAA5B,CAApG;AAAoI,CAA1L;;AAA2L0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bs4F,eAA5B,GAA4C,UAASluG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,IAAS,KAAK6tG,wBAAL,CAA8B9tG,CAA9B,EAAgCC,CAAhC,CAAT;AAA4C,CAAtG;;AAAuG0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bu4F,iBAA5B,GAA8C,UAASnuG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,IAAS,KAAK4tG,0BAAL,CAAgC7tG,CAAhC,EAAkCC,CAAlC,CAAT;AAA8C,CAA1G;;AAClS0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bs3F,YAA5B,GAAyC,UAASltG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAH,IAAMA,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqByC,SAAjD,GAA4D,KAAKm7B,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAvD,CAA5D,EAA4H,KAAK68B,QAAL,CAAc3C,WAAd,CAA0BxpG,CAA1B,CAAtI;AAAoK,CAA3N;;AAA4N0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bq3F,YAA5B,GAAyC,UAASjtG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAH,IAAMA,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqB4C,SAAjD,GAA4D,KAAKg7B,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAvD,CAA5D,EAA4H,KAAK88B,QAAL,CAAchC,WAAd,CAA0BnqG,CAA1B,CAAtI;AAAoK,CAA3N;;AAC5N0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bw4F,kBAA5B,GAA+C,UAASpuG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAUA,CAAC,GAAC0uE,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBY,UAAlB,CAA6B9rG,CAA7B,CAAF,EAAkC,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAvD,CAAlC,EAAkG,KAAK88B,QAAL,CAAc5C,iBAAd,CAAgCvpG,CAAC,CAACmrG,EAAlC,EAAqCnrG,CAAC,CAACorG,EAAvC,CAA5G;AAAwJ,CAArN;;AAAsN18B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bu3F,aAA5B,GAA0C,UAASntG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAE,CAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCnxE,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E,GAA0F,KAAKo7B,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAvD,CAA1F,EAA0J,KAAK68B,QAAL,CAAc7B,UAAd,CAAyBtqG,CAAzB,CAApK;AAAiM,CAAzP;;AACtN0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bw3F,aAA5B,GAA0C,UAASptG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAE,CAAC0uE,IAAI,CAACC,eAAL,CAAqB2C,SAAzB,IAAoCtxE,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqB2C,SAA/E,GAA0F,KAAKi7B,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAvD,CAA1F,EAA0J,KAAK88B,QAAL,CAAc5B,UAAd,CAAyBvqG,CAAzB,CAApK;AAAiM,CAAzP;;AAA0P0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4By4F,mBAA5B,GAAgD,UAASruG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAUA,CAAC,GAAC0uE,IAAI,CAACu8B,KAAL,CAAWc,KAAX,CAAiBD,UAAjB,CAA4B9rG,CAA5B,CAAF,EAAiC,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAvD,CAAjC,EAAiG,KAAK88B,QAAL,CAAc5C,iBAAd,CAAgCvpG,CAAC,CAACmrG,EAAlC,EAAqCnrG,CAAC,CAACorG,EAAvC,CAA3G;AAAuJ,CAArN;;AAC1P18B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B80F,UAA5B,GAAuC,UAAS1qG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bd,OAAvD,GAAgE,KAAK68B,QAAL,CAAc1B,UAAd,CAAyBzqG,CAAzB,CAA1E;AAAuG,CAA5J;;AAA6J0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B+0F,WAA5B,GAAwC,UAAS3qG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAvD,GAAgE,KAAK88B,QAAL,CAAczB,WAAd,CAA0B1qG,CAA1B,CAA1E;AAAwG,CAA9J;;AAC7J0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bg1F,SAA5B,GAAsC,UAAS5qG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,cAAY,OAAO3tE,CAAnB,IAAsB,aAAW,OAAOA,CAA5D,GAA+D,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,CAA/D,EAA8H,KAAK87B,QAAL,CAAcxB,SAAd,CAAwB3qG,CAAxB,CAAxI;AAAoK,CAAxN;;AAAyN0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bi1F,SAA5B,GAAsC,UAAS7qG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAAC,IAAE,CAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAAzB,IAAoCnxE,CAAC,GAAC0uE,IAAI,CAACC,eAAL,CAAqBwC,SAA/E,GAA0F,KAAKo7B,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,CAA1F,EAAyJ,KAAK87B,QAAL,CAAczC,mBAAd,CAAkC1pG,CAAlC,CAAnK;AAAyM,CAA7P;;AACzN0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bq1F,WAA5B,GAAwC,UAASjrG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAUD,CAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF,EAA0B,KAAKosG,QAAL,CAAcnB,WAAd,CAA0BhrG,CAA1B,CAA1B,EAAuD,KAAKwsG,aAAL,CAAmBzsG,CAAnB,CAAjE;AAAwF,CAA9I;;AAA+I2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bk1F,UAA5B,GAAuC,UAAS9qG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAUA,CAAC,GAAC0uE,IAAI,CAAC0wB,KAAL,CAAW0C,sBAAX,CAAkC9hG,CAAlC,CAAF,EAAuC,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,CAAvC,EAAyG,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoCzpG,CAAC,CAACL,MAAtC,CAAzG,EAAuJ,KAAK0sG,iBAAL,CAAuBrsG,CAAvB,CAAjK;AAA4L,CAAjP;;AAAkP0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B04F,YAA5B,GAAyC,UAAStuG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,UAAMjuB,CAAN,KAAUD,CAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF,EAA0BkuB,CAAC,CAACjuB,CAAD,EAAG,IAAH,CAA3B,EAAoC,KAAKwsG,aAAL,CAAmBzsG,CAAnB,CAA9C;AAAqE,CAA9H;;AACjY2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B24F,eAA5B,GAA4C,UAASvuG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,UAAMjuB,CAAN,KAAU,KAAKusG,iBAAL,CAAuB,CAAvB,EAAyB79B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BG,WAAvD,GAAoE,KAAKg8B,iBAAL,CAAuB,CAAvB,EAAyB79B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,CAApE,EAAmI,KAAK87B,QAAL,CAAczC,mBAAd,CAAkC3pG,CAAlC,CAAnI,EAAwKA,CAAC,GAAC,KAAKusG,eAAL,CAAqB,CAArB,CAA1K,EAAkMr+E,CAAC,CAACjuB,CAAD,EAAG,IAAH,CAAnM,EAA4M,KAAKwsG,aAAL,CAAmBzsG,CAAnB,CAA5M,EAAkO,KAAKwsG,iBAAL,CAAuB,CAAvB,EAAyB79B,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BI,SAAvD,CAA5O;AAA+S,CAA3W;;AACA9B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B44F,UAA5B,GAAuC,UAASxuG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,UAAMjuB,CAAN,KAAU,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BG,WAAvD,GAAoEtiD,CAAC,CAACjuB,CAAD,EAAG,IAAH,CAArE,EAA8E,KAAKusG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BI,SAAvD,CAAxF;AAA2J,CAAlN;;AAAmN9B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bo1F,gBAA5B,GAA6C,UAAShrG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAC,CAACL,MAAzB,GAAiC,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAvD,CAAjC,EAAiG,KAAK88B,QAAL,CAAcpB,gBAAd,CAA+B/qG,CAA/B,CAA3G;AAA8I,CAAzM;;AACnN0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bm1F,iBAA5B,GAA8C,UAAS/qG,CAAT,EAAWC,CAAX,EAAa;AAAC,UAAMA,CAAN,KAAU67D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAG3tE,CAAC,CAACL,MAAzB,GAAiC,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD,CAAjC,EAAgG,KAAK87B,QAAL,CAAcrB,iBAAd,CAAgC9qG,CAAhC,CAA1G;AAA8I,CAA1M;;AAA2M0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B4zF,iBAA5B,GAA8C,UAASxpG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAKs+E,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8Bf,OAAvD;AAAgE,OAAK88B,QAAL,CAAc5C,iBAAd,CAAgCvpG,CAAhC,EAAkCiuB,CAAlC;AAAqC,CAAnK;;AAC3MygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B2zF,kBAA5B,GAA+C,UAASvpG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAKs+E,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD;AAA+D,OAAK87B,QAAL,CAAc7C,kBAAd,CAAiCtpG,CAAjC,EAAmCiuB,CAAnC;AAAsC,CAApK;;AAAqKygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B64F,wBAA5B,GAAqD,UAASzuG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAKs+E,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BC,MAAvD;AAA+D,MAAIxgC,CAAC,GAAC,KAAKs8D,QAAX;AAAoBz9B,MAAI,CAAC0wB,KAAL,CAAWa,UAAX,CAAsBjgG,CAAtB,EAAwBiuB,CAAxB,EAA0B,UAASluB,CAAT,EAAWC,CAAX,EAAa;AAAC6vC,KAAC,CAACy5D,kBAAF,CAAqBvpG,CAAC,KAAG,CAAzB,EAA2BC,CAAC,KAAG,CAA/B;AAAkC,GAA1E;AAA4E,CAApO;;AACrK0uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B84F,kBAA5B,GAA+C,UAAS1uG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKs/E,oBAAL,CAA0BxtG,CAA1B,EAA4BC,CAAC,CAACiuB,CAAD,CAA7B;AAAkC,CAArI;;AAAsIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B+4F,wBAA5B,GAAqD,UAAS3uG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK6/E,gBAAL,CAAsB/tG,CAAtB,EAAwBC,CAAC,CAACiuB,CAAD,CAAzB;AAA8B,CAAvI;;AAAwIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bg5F,kBAA5B,GAA+C,UAAS5uG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKw/E,oBAAL,CAA0B1tG,CAA1B,EAA4BC,CAAC,CAACiuB,CAAD,CAA7B;AAAkC,CAArI;;AAC9QygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bi5F,yBAA5B,GAAsD,UAAS7uG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAG,QAAM7vC,CAAT,EAAW,KAAI,IAAIijB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjjB,CAAC,CAACL,MAAhB,EAAuBsjB,CAAC,EAAxB,EAA2B,KAAKsmF,iBAAL,CAAuBxpG,CAAvB,EAAyBkuB,CAAC,CAACjuB,CAAC,CAACijB,CAAD,CAAF,CAA1B,EAAiC4sB,CAAC,CAAC7vC,CAAC,CAACijB,CAAD,CAAF,CAAlC;AAA0C,CAAxJ;;AAAyJyrD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bk5F,0BAA5B,GAAuD,UAAS9uG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAG,QAAM7vC,CAAT,EAAW,KAAI,IAAIijB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjjB,CAAC,CAACL,MAAhB,EAAuBsjB,CAAC,EAAxB,EAA2B,KAAKqmF,kBAAL,CAAwBvpG,CAAxB,EAA0BkuB,CAAC,CAACjuB,CAAC,CAACijB,CAAD,CAAF,CAA3B,EAAkC4sB,CAAC,CAAC7vC,CAAC,CAACijB,CAAD,CAAF,CAAnC;AAA2C,CAA1J;;AAA2JyrD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bm5F,gCAA5B,GAA6D,UAAS/uG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAG,QAAM7vC,CAAT,EAAW,KAAI,IAAIijB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjjB,CAAC,CAACL,MAAhB,EAAuBsjB,CAAC,EAAxB,EAA2B,KAAKurF,wBAAL,CAA8BzuG,CAA9B,EAAgCkuB,CAAC,CAACjuB,CAAC,CAACijB,CAAD,CAAF,CAAjC,EAAwC4sB,CAAC,CAAC7vC,CAAC,CAACijB,CAAD,CAAF,CAAzC;AAAiD,CAAtK;;AACpTyrD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bo5F,wBAA5B,GAAqD,UAAShvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKu8E,gBAAL,CAAsBzqG,CAAtB,EAAwBC,CAAC,CAACiuB,CAAD,CAAzB;AAA8B,CAAvI;;AAAwIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bq5F,mBAA5B,GAAgD,UAASjvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKq/E,sBAAL,CAA4BvtG,CAA5B,EAA8BC,CAAC,CAACiuB,CAAD,CAA/B;AAAoC,CAAxI;;AAAyIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bs5F,yBAA5B,GAAsD,UAASlvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK8/E,iBAAL,CAAuBhuG,CAAvB,EAAyBC,CAAC,CAACiuB,CAAD,CAA1B;AAA+B,CAAzI;;AACjRygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bu5F,mBAA5B,GAAgD,UAASnvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKu/E,sBAAL,CAA4BztG,CAA5B,EAA8BC,CAAC,CAACiuB,CAAD,CAA/B;AAAoC,CAAxI;;AAAyIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bw5F,yBAA5B,GAAsD,UAASpvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK+/E,iBAAL,CAAuBjuG,CAAvB,EAAyBC,CAAC,CAACiuB,CAAD,CAA1B;AAA+B,CAAzI;;AAA0IygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4By5F,mBAA5B,GAAgD,UAASrvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKy/E,oBAAL,CAA0B3tG,CAA1B,EAA4BC,CAAC,CAACiuB,CAAD,CAA7B;AAAkC,CAAtI;;AACnRygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B05F,mBAA5B,GAAgD,UAAStvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK0/E,oBAAL,CAA0B5tG,CAA1B,EAA4BC,CAAC,CAACiuB,CAAD,CAA7B;AAAkC,CAAtI;;AAAuIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B25F,yBAA5B,GAAsD,UAASvvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK2/E,0BAAL,CAAgC7tG,CAAhC,EAAkCC,CAAC,CAACiuB,CAAD,CAAnC;AAAwC,CAAlJ;;AAAmJygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B45F,uBAA5B,GAAoD,UAASxvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK4/E,wBAAL,CAA8B9tG,CAA9B,EAAgCC,CAAC,CAACiuB,CAAD,CAAjC;AAAsC,CAA9I;;AAC1RygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B65F,oBAA5B,GAAiD,UAASzvG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKg/E,YAAL,CAAkBltG,CAAlB,EAAoBC,CAAC,CAACiuB,CAAD,CAArB;AAA0B,CAA/H;;AAAgIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B85F,oBAA5B,GAAiD,UAAS1vG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK++E,YAAL,CAAkBjtG,CAAlB,EAAoBC,CAAC,CAACiuB,CAAD,CAArB;AAA0B,CAA/H;;AAAgIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B+5F,0BAA5B,GAAuD,UAAS3vG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKkgF,kBAAL,CAAwBpuG,CAAxB,EAA0BC,CAAC,CAACiuB,CAAD,CAA3B;AAAgC,CAA3I;;AAChQygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bg6F,qBAA5B,GAAkD,UAAS5vG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKi/E,aAAL,CAAmBntG,CAAnB,EAAqBC,CAAC,CAACiuB,CAAD,CAAtB;AAA2B,CAAjI;;AAAkIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bi6F,qBAA5B,GAAkD,UAAS7vG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk/E,aAAL,CAAmBptG,CAAnB,EAAqBC,CAAC,CAACiuB,CAAD,CAAtB;AAA2B,CAAjI;;AAAkIygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bk6F,2BAA5B,GAAwD,UAAS9vG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKmgF,mBAAL,CAAyBruG,CAAzB,EAA2BC,CAAC,CAACiuB,CAAD,CAA5B;AAAiC,CAA7I;;AACpQygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bm6F,kBAA5B,GAA+C,UAAS/vG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKw8E,UAAL,CAAgB1qG,CAAhB,EAAkBC,CAAC,CAACiuB,CAAD,CAAnB;AAAwB,CAA3H;;AAA4HygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bo6F,mBAA5B,GAAgD,UAAShwG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKy8E,WAAL,CAAiB3qG,CAAjB,EAAmBC,CAAC,CAACiuB,CAAD,CAApB;AAAyB,CAA7H;;AAA8HygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bq6F,iBAA5B,GAA8C,UAASjwG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK08E,SAAL,CAAe5qG,CAAf,EAAiBC,CAAC,CAACiuB,CAAD,CAAlB;AAAuB,CAAzH;;AAA0HygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bs6F,iBAA5B,GAA8C,UAASlwG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK28E,SAAL,CAAe7qG,CAAf,EAAiBC,CAAC,CAACiuB,CAAD,CAAlB;AAAuB,CAAzH;;AACpXygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bu6F,mBAA5B,GAAgD,UAASnwG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK+8E,WAAL,CAAiBjrG,CAAjB,EAAmBC,CAAC,CAACiuB,CAAD,CAApB;AAAyB,CAA7H;;AAA8HygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bw6F,kBAA5B,GAA+C,UAASpwG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK48E,UAAL,CAAgB9qG,CAAhB,EAAkBC,CAAC,CAACiuB,CAAD,CAAnB;AAAwB,CAA3H;;AAA4HygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4By6F,oBAA5B,GAAiD,UAASrwG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAG,QAAMjuB,CAAT,EAAW,KAAI,IAAI6vC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC7vC,CAAC,CAACL,MAAhB,EAAuBkwC,CAAC,EAAxB,EAA2B;AAAC,QAAI5sB,CAAC,GAAC,KAAKqpF,eAAL,CAAqBvsG,CAArB,CAAN;AAA8BkuB,KAAC,CAACjuB,CAAC,CAAC6vC,CAAD,CAAF,EAAM,IAAN,CAAD;AAAa,SAAK28D,aAAL,CAAmBvpF,CAAnB;AAAsB;AAAC,CAA1K;;AAC1PyrD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B06F,kBAA5B,GAA+C,UAAStwG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,MAAG,QAAMjuB,CAAT,EAAW,KAAI,IAAI6vC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC7vC,CAAC,CAACL,MAAhB,EAAuBkwC,CAAC,EAAxB,EAA2B,KAAK08D,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BG,WAAvD,GAAoEtiD,CAAC,CAACjuB,CAAC,CAAC6vC,CAAD,CAAF,EAAM,IAAN,CAArE,EAAiF,KAAK08D,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BI,SAAvD,CAAjF;AAAmJ,CAAxP;;AAAyP9B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B26F,wBAA5B,GAAqD,UAASvwG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK88E,gBAAL,CAAsBhrG,CAAtB,EAAwBC,CAAC,CAACiuB,CAAD,CAAzB;AAA8B,CAAvI;;AACzPygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B46F,yBAA5B,GAAsD,UAASxwG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAT,EAAW,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAK68E,iBAAL,CAAuB/qG,CAAvB,EAAyBC,CAAC,CAACiuB,CAAD,CAA1B;AAA+B,CAAzI;;AAA0IygD,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B66F,gBAA5B,GAA6C,UAASzwG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAczC,mBAAd,CAAkC1pG,CAAC,CAACiuB,CAAD,CAAnC;;AAAwC,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAArM;;AAC1I2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B86F,sBAA5B,GAAmD,UAAS1wG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAczC,mBAAd,CAAkC3vF,QAAQ,CAAC/Z,CAAC,CAACiuB,CAAD,CAAF,EAAM,EAAN,CAA1C;;AAAqD,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAAxN;;AAAyN2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B+6F,gBAA5B,GAA6C,UAAS3wG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAcvC,mBAAd,CAAkC5pG,CAAC,CAACiuB,CAAD,CAAnC;;AAAwC,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAArM;;AACzN2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bg7F,uBAA5B,GAAoD,UAAS5wG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAG,QAAM7vC,CAAT,EAAW;AAACD,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkjB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjjB,CAAC,CAACL,MAAhB,EAAuBsjB,CAAC,EAAxB,EAA2B,KAAKkpF,QAAL,CAAc5C,iBAAd,CAAgCt7E,CAAC,CAACjuB,CAAC,CAACijB,CAAD,CAAF,CAAjC,EAAwC4sB,CAAC,CAAC7vC,CAAC,CAACijB,CAAD,CAAF,CAAzC;;AAAiD,SAAKupF,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAA/M;;AAAgN2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bi7F,wBAA5B,GAAqD,UAAS7wG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAG,QAAM7vC,CAAT,EAAW;AAACD,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkjB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjjB,CAAC,CAACL,MAAhB,EAAuBsjB,CAAC,EAAxB,EAA2B,KAAKkpF,QAAL,CAAc7C,kBAAd,CAAiCr7E,CAAC,CAACjuB,CAAC,CAACijB,CAAD,CAAF,CAAlC,EAAyC4sB,CAAC,CAAC7vC,CAAC,CAACijB,CAAD,CAAF,CAA1C;;AAAkD,SAAKupF,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAAjN;;AAChN2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bk7F,8BAA5B,GAA2D,UAAS9wG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,MAAG,QAAM7vC,CAAT,EAAW;AAACD,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkjB,CAAC,GAAC,KAAKkpF,QAAX,EAAoB3lE,CAAC,GAAC,CAA1B,EAA4BA,CAAC,GAACxmC,CAAC,CAACL,MAAhC,EAAuC6mC,CAAC,EAAxC,EAA2CkoC,IAAI,CAAC0wB,KAAL,CAAWa,UAAX,CAAsBhyE,CAAC,CAACjuB,CAAC,CAACwmC,CAAD,CAAF,CAAvB,EAA8BqJ,CAAC,CAAC7vC,CAAC,CAACwmC,CAAD,CAAF,CAA/B,EAAsC,UAASzmC,CAAT,EAAWC,CAAX,EAAa;AAACijB,OAAC,CAACqmF,kBAAF,CAAqBvpG,CAAC,KAAG,CAAzB,EAA2BC,CAAC,KAAG,CAA/B;AAAkC,KAAtF;;AAAwF,SAAKwsG,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAA7Q;;AAA8Q2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bm7F,sBAA5B,GAAmD,UAAS/wG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B;AAAC,UAAI4hB,CAAC,GAAC6+B,IAAI,CAACu8B,KAAL,CAAWc,KAAX,CAAiBD,UAAjB,CAA4B9rG,CAAC,CAACiuB,CAAD,CAA7B,CAAN;AAAwC,WAAKk+E,QAAL,CAAc7C,kBAAd,CAAiCz5D,CAAC,CAACs7D,EAAnC,EAAsCt7D,CAAC,CAACu7D,EAAxC;AAA4C;;AAAA,SAAKoB,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAAxP;;AAC9Q2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bo7F,iBAA5B,GAA8C,UAAShxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAc1C,qBAAd,CAAoCzpG,CAAC,CAACiuB,CAAD,CAArC;;AAA0C,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAAxM;;AAAyM2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bq7F,uBAA5B,GAAoD,UAASjxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAc1C,qBAAd,CAAoC1vF,QAAQ,CAAC/Z,CAAC,CAACiuB,CAAD,CAAF,EAAM,EAAN,CAA5C;;AAAuD,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAA3N;;AACzM2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bs7F,iBAA5B,GAA8C,UAASlxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAcxC,qBAAd,CAAoC3pG,CAAC,CAACiuB,CAAD,CAArC;;AAA0C,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAAxM;;AAAyM2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bu7F,uBAA5B,GAAoD,UAASnxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B;AAAC,UAAI4hB,CAAC,GAAC6+B,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBY,UAAlB,CAA6B9rG,CAAC,CAACiuB,CAAD,CAA9B,CAAN;AAAyC,WAAKk+E,QAAL,CAAc7C,kBAAd,CAAiCz5D,CAAC,CAACs7D,EAAnC,EAAsCt7D,CAAC,CAACu7D,EAAxC;AAA4C;;AAAA,SAAKoB,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAA1P;;AACzM2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bw7F,iBAA5B,GAA8C,UAASpxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAActC,mBAAd,CAAkC7pG,CAAC,CAACiuB,CAAD,CAAnC;;AAAwC,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAAtM;;AAAuM2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4By7F,iBAA5B,GAA8C,UAASrxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAcrC,mBAAd,CAAkC9pG,CAAC,CAACiuB,CAAD,CAAnC;;AAAwC,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAAtM;;AACvM2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B07F,uBAA5B,GAAoD,UAAStxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAcnC,uBAAd,CAAsCt7B,IAAI,CAAC0wB,KAAL,CAAW2B,qBAAX,CAAiC/gG,CAAC,CAACiuB,CAAD,CAAlC,CAAtC;;AAA8E,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAAlP;;AAAmP2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B27F,qBAA5B,GAAkD,UAASvxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAcnC,uBAAd,CAAsChqG,CAAC,CAACiuB,CAAD,CAAvC;;AAA4C,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAA9M;;AACnP2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B47F,kBAA5B,GAA+C,UAASxxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI,KAAKosG,QAAL,CAAc3C,WAAd,CAA0BxpG,CAAC,CAACD,CAAD,CAA3B;AAAgC,CAA3P;;AAA4P2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B67F,kBAA5B,GAA+C,UAASzxG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI,KAAKosG,QAAL,CAAchC,WAAd,CAA0BnqG,CAAC,CAACD,CAAD,CAA3B;AAAgC,CAA3P;;AAC5P2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B87F,wBAA5B,GAAqD,UAAS1xG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI;AAAC,QAAIkuB,CAAC,GAACygD,IAAI,CAACu8B,KAAL,CAAWC,MAAX,CAAkBY,UAAlB,CAA6B9rG,CAAC,CAACD,CAAD,CAA9B,CAAN;AAAyC,SAAKosG,QAAL,CAAc5C,iBAAd,CAAgCt7E,CAAC,CAACk9E,EAAlC,EAAqCl9E,CAAC,CAACm9E,EAAvC;AAA2C;AAAC,CAAvT;;AACA18B,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4B+7F,mBAA5B,GAAgD,UAAS3xG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI,KAAKosG,QAAL,CAAc7B,UAAd,CAAyBtqG,CAAC,CAACD,CAAD,CAA1B;AAA+B,CAA3P;;AAA4P2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bg8F,mBAA5B,GAAgD,UAAS5xG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI,KAAKosG,QAAL,CAAc5B,UAAd,CAAyBvqG,CAAC,CAACD,CAAD,CAA1B;AAA+B,CAA3P;;AAC5P2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bi8F,yBAA5B,GAAsD,UAAS7xG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI,KAAKosG,QAAL,CAAc3B,gBAAd,CAA+BxqG,CAAC,CAACD,CAAD,CAAhC;AAAqC,CAAvQ;;AAAwQ2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bk8F,gBAA5B,GAA6C,UAAS9xG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI,KAAKosG,QAAL,CAAc1B,UAAd,CAAyBzqG,CAAC,CAACD,CAAD,CAA1B;AAA+B,CAAxP;;AACxQ2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bm8F,iBAA5B,GAA8C,UAAS/xG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI,KAAKosG,QAAL,CAAczB,WAAd,CAA0B1qG,CAAC,CAACD,CAAD,CAA3B;AAAgC,CAA1P;;AAA2P2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bo8F,eAA5B,GAA4C,UAAShyG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoCzpG,CAAC,CAACL,MAAtC,CAAlE,EAAgHI,CAAC,GAAC,CAAtH,EAAwHA,CAAC,GAACC,CAAC,CAACL,MAA5H,EAAmII,CAAC,EAApI,EAAuI,KAAKosG,QAAL,CAAcxB,SAAd,CAAwB3qG,CAAC,CAACD,CAAD,CAAzB;AAA8B,CAApP;;AAC3P2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bq8F,eAA5B,GAA4C,UAASjyG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAcvB,SAAd,CAAwB5qG,CAAC,CAACiuB,CAAD,CAAzB;;AAA8B,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAA1L;;AAA2L2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bs8F,sBAA5B,GAAmD,UAASlyG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB,KAAI,KAAK4sG,iBAAL,CAAuBxsG,CAAvB,EAAyB2uE,IAAI,CAACC,eAAL,CAAqByB,QAArB,CAA8BE,SAAvD,GAAkE,KAAK67B,QAAL,CAAc1C,qBAAd,CAAoC,IAAEzpG,CAAC,CAACL,MAAxC,CAAlE,EAAkHI,CAAC,GAAC,CAAxH,EAA0HA,CAAC,GAACC,CAAC,CAACL,MAA9H,EAAqII,CAAC,EAAtI,EAAyI,KAAKosG,QAAL,CAAcpB,gBAAd,CAA+B/qG,CAAC,CAACD,CAAD,CAAhC;AAAqC,CAApQ;;AAC3L2uE,IAAI,CAACs9B,YAAL,CAAkBr2F,SAAlB,CAA4Bu8F,uBAA5B,GAAoD,UAASnyG,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,CAACL,MAAd,EAAqB;AAACI,KAAC,GAAC,KAAKusG,eAAL,CAAqBvsG,CAArB,CAAF;;AAA0B,SAAI,IAAIkuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,KAAKk+E,QAAL,CAAcrB,iBAAd,CAAgC9qG,CAAC,CAACiuB,CAAD,CAAjC;;AAAsC,SAAKu+E,aAAL,CAAmBzsG,CAAnB;AAAsB;AAAC,CAA1M;;AAA2M2uE,IAAI,CAAClhE,GAAL,GAAS,UAASzN,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAKmyG,IAAL,GAAUpyG,CAAV;AAAY,OAAKqyG,UAAL,GAAgBpyG,CAAhB;AAAkB,OAAKqyG,IAAL,GAAU,EAAV;AAAa,OAAKC,QAAL,GAAc,CAAC,CAAf;AAAiB,MAAE,KAAKH,IAAL,CAAUxyG,MAAZ,IAAoB,KAAK4yG,cAAL,EAApB;AAA0C,CAA7H;;AAA8H7jC,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmB48F,cAAnB,GAAkC,YAAU;AAAC,OAAI,IAAIxyG,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC,KAAKoyG,IAAL,CAAUxyG,MAAxB,EAA+BI,CAAC,EAAhC,EAAmC;AAAC,QAAIC,CAAC,GAAC,KAAKmyG,IAAL,CAAUpyG,CAAV,CAAN;AAAA,QAAmBkuB,CAAC,GAACjuB,CAAC,CAAC,CAAD,CAAtB;AAA0B,SAAKqyG,IAAL,CAAUpkF,CAAC,CAAC1X,QAAF,EAAV,IAAwB,IAAIm4D,IAAI,CAAClhE,GAAL,CAASglG,MAAb,CAAoBvkF,CAApB,EAAsBjuB,CAAC,CAAC,CAAD,CAAvB,CAAxB;AAAoD;;AAAA,OAAKsyG,QAAL,GAAc,CAAC,CAAf;AAAiB,CAAhL;;AACzU5jC,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBpY,OAAnB,GAA2B,YAAU;AAAC,MAAG,KAAK+0G,QAAR,EAAiB;AAAC,QAAG,KAAKF,UAAR,EAAmB;AAAC,UAAIryG,CAAC,GAAC,KAAKsyG,IAAX;AAAA,UAAgBryG,CAAhB;;AAAkB,WAAIA,CAAJ,IAASD,CAAT,EAAW,IAAGxD,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCzW,CAArC,EAAuCC,CAAvC,CAAH,EAA6C;AAAC,YAAIiuB,CAAC,GAACluB,CAAC,CAACC,CAAD,CAAD,CAAKyyG,YAAX;AAAwBxkF,SAAC,IAAEA,CAAC,CAAC1wB,OAAF,EAAH;AAAe;AAAC;AAAC,GAA1J,MAA8J;AAAC,SAAK40G,IAAL,CAAUxyG,MAAV,GAAiB,CAAjB;AAAmBI,KAAC,GAAC,KAAK2yG,WAAL,EAAF;AAAqB3yG,KAAC,CAACI,IAAF;;AAAS,SAAIH,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACD,CAAC,CAACJ,MAAZ,EAAmBK,CAAC,EAApB,EAAuB;AAAC,UAAI6vC,CAAC,GAAC,KAAKwiE,IAAL,CAAUtyG,CAAC,CAACC,CAAD,CAAX,CAAN;AAAsB,OAACiuB,CAAC,GAAC4hB,CAAC,CAAC4iE,YAAL,KAAoBxkF,CAAC,CAAC1wB,OAAF,EAApB;AAAgC,WAAK40G,IAAL,CAAU3zG,IAAV,CAAe,CAACqxC,CAAC,CAACphC,GAAH,EAAOohC,CAAC,CAAC32C,KAAT,CAAf;AAAgC;;AAAA,SAAKo5G,QAAL,GAAc,CAAC,CAAf;AAAiB;;AAAA,SAAO,KAAKH,IAAZ;AAAiB,CAAtY;;AACAzjC,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmB29D,QAAnB,GAA4B,UAASvzE,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAC,GAAC,KAAK1wB,OAAL,EAAN,EAAqBsyC,CAAC,GAAC,EAAvB,EAA0B5sB,CAAC,GAAC,CAAhC,EAAkCA,CAAC,GAACgL,CAAC,CAACtuB,MAAtC,EAA6CsjB,CAAC,EAA9C,EAAiD;AAAC,QAAIujB,CAAC,GAAC,KAAK6rE,IAAL,CAAUpkF,CAAC,CAAChL,CAAD,CAAD,CAAK,CAAL,EAAQ1M,QAAR,EAAV,CAAN;AAAoC,SAAKo8F,UAAL,CAAgBnsE,CAAhB;AAAmB,QAAIvL,CAAC,GAACuL,CAAC,CAACisE,YAAR;AAAqBx3E,KAAC,IAAE4gC,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB3tE,CAApB,GAAuB6vC,CAAC,CAACrxC,IAAF,CAAO,CAACgoC,CAAC,CAAC/3B,GAAH,EAAOzO,CAAC,CAACD,CAAD,EAAGk7B,CAAH,CAAR,CAAP,CAAzB,IAAiD4U,CAAC,CAACrxC,IAAF,CAAO,CAACgoC,CAAC,CAAC/3B,GAAH,EAAO+3B,CAAC,CAACttC,KAAT,CAAP,CAAlD;AAA0E;;AAAA,SAAO22C,CAAP;AAAS,CAA3P;;AAA4P6+B,IAAI,CAAClhE,GAAL,CAASolG,UAAT,GAAoB,UAAS7yG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACjuB,GAAC,GAAC,IAAI0uE,IAAI,CAAClhE,GAAT,CAAa,EAAb,EAAgBxN,CAAhB,CAAF;;AAAqB,OAAI,IAAI6vC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC9vC,CAAC,CAACJ,MAAhB,EAAuBkwC,CAAC,EAAxB,EAA2B;AAAC,QAAI5sB,CAAC,GAACljB,CAAC,CAAC8vC,CAAD,CAAD,CAAK,CAAL,CAAN;AAAA,QAAcrJ,CAAC,GAACvY,CAAC,CAACluB,CAAC,CAAC8vC,CAAD,CAAD,CAAK,CAAL,CAAD,CAAjB;AAA2B7vC,KAAC,CAACb,GAAF,CAAM8jB,CAAN,EAAQujB,CAAR;AAAW;;AAAA,SAAOxmC,CAAP;AAAS,CAApI;;AAAqI0uE,IAAI,CAAClhE,GAAL,CAASqlG,sBAAT,GAAgC,UAAS9yG,CAAT,EAAW;AAAC,OAAK+yG,IAAL,GAAU,CAAV;AAAY,OAAKX,IAAL,GAAUpyG,CAAV;AAAY,CAApE;;AACjY2uE,IAAI,CAAClhE,GAAL,CAASqlG,sBAAT,CAAgCl9F,SAAhC,CAA0C1c,IAA1C,GAA+C,YAAU;AAAC,SAAO,KAAK65G,IAAL,GAAU,KAAKX,IAAL,CAAUxyG,MAApB,GAA2B;AAACF,QAAI,EAAC,CAAC,CAAP;AAASvG,SAAK,EAAC,KAAKi5G,IAAL,CAAU,KAAKW,IAAL,EAAV;AAAf,GAA3B,GAAkE;AAACrzG,QAAI,EAAC,CAAC,CAAP;AAASvG,SAAK,EAAC,KAAK;AAApB,GAAzE;AAAgG,CAA1J;;AAA2J,eAAa,OAAOmE,MAApB,KAA6BqxE,IAAI,CAAClhE,GAAL,CAASqlG,sBAAT,CAAgCl9F,SAAhC,CAA0CtY,MAAM,CAACvC,QAAjD,IAA2D,YAAU;AAAC,SAAO,IAAP;AAAY,CAA/G;;AAAiH4zE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBo9F,SAAnB,GAA6B,YAAU;AAAC,SAAO,KAAKL,WAAL,GAAmB/yG,MAA1B;AAAiC,CAAzE;;AAA0E+uE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBu1D,KAAnB,GAAyB,YAAU;AAAC,OAAKmnC,IAAL,GAAU,EAAV;AAAa,OAAKC,QAAL,GAAc,CAAC,CAAf;AAAiB,CAAlE;;AACtV5jC,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBwxB,GAAnB,GAAuB,UAASpnC,CAAT,EAAW;AAACA,GAAC,GAACA,CAAC,CAACwW,QAAF,EAAF;AAAe,MAAIvW,CAAC,GAAC,KAAKqyG,IAAL,CAAUh6F,cAAV,CAAyBtY,CAAzB,CAAN;AAAkC,SAAO,KAAKsyG,IAAL,CAAUtyG,CAAV,CAAP;AAAoB,OAAKuyG,QAAL,GAAc,CAAC,CAAf;AAAiB,SAAOtyG,CAAP;AAAS,CAAlI;;AAAmI0uE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBq9F,YAAnB,GAAgC,YAAU;AAAC,MAAIjzG,CAAC,GAAC,EAAN;AAAA,MAASC,CAAC,GAAC,KAAK0yG,WAAL,EAAX;AAA8B1yG,GAAC,CAACG,IAAF;;AAAS,OAAI,IAAI8tB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B;AAAC,QAAI4hB,CAAC,GAAC,KAAKwiE,IAAL,CAAUryG,CAAC,CAACiuB,CAAD,CAAX,CAAN;AAAsBluB,KAAC,CAACvB,IAAF,CAAO,CAACqxC,CAAC,CAACphC,GAAH,EAAOohC,CAAC,CAAC32C,KAAT,CAAP;AAAwB;;AAAA,SAAO6G,CAAP;AAAS,CAArK;;AAAsK2uE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBwL,OAAnB,GAA2B,YAAU;AAAC,MAAIphB,CAAC,GAAC,EAAN;AAAA,MAASC,CAAC,GAAC,KAAK0yG,WAAL,EAAX;AAA8B1yG,GAAC,CAACG,IAAF;;AAAS,OAAI,IAAI8tB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B;AAAC,QAAI4hB,CAAC,GAAC,KAAKwiE,IAAL,CAAUryG,CAAC,CAACiuB,CAAD,CAAX,CAAN;AAAsBluB,KAAC,CAACvB,IAAF,CAAO,CAACqxC,CAAC,CAACphC,GAAH,EAAO,KAAKkkG,UAAL,CAAgB9iE,CAAhB,CAAP,CAAP;AAAmC;;AAAA,SAAO,IAAI6+B,IAAI,CAAClhE,GAAL,CAASqlG,sBAAb,CAAoC9yG,CAApC,CAAP;AAA8C,CAAhN;;AACzS2uE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBnH,IAAnB,GAAwB,YAAU;AAAC,MAAIzO,CAAC,GAAC,EAAN;AAAA,MAASC,CAAC,GAAC,KAAK0yG,WAAL,EAAX;AAA8B1yG,GAAC,CAACG,IAAF;;AAAS,OAAI,IAAI8tB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2BluB,CAAC,CAACvB,IAAF,CAAO,KAAK6zG,IAAL,CAAUryG,CAAC,CAACiuB,CAAD,CAAX,EAAgBxf,GAAvB;;AAA4B,SAAO,IAAIigE,IAAI,CAAClhE,GAAL,CAASqlG,sBAAb,CAAoC9yG,CAApC,CAAP;AAA8C,CAA/K;;AAAgL2uE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBlI,MAAnB,GAA0B,YAAU;AAAC,MAAI1N,CAAC,GAAC,EAAN;AAAA,MAASC,CAAC,GAAC,KAAK0yG,WAAL,EAAX;AAA8B1yG,GAAC,CAACG,IAAF;;AAAS,OAAI,IAAI8tB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2BluB,CAAC,CAACvB,IAAF,CAAO,KAAKm0G,UAAL,CAAgB,KAAKN,IAAL,CAAUryG,CAAC,CAACiuB,CAAD,CAAX,CAAhB,CAAP;;AAAyC,SAAO,IAAIygD,IAAI,CAAClhE,GAAL,CAASqlG,sBAAb,CAAoC9yG,CAApC,CAAP;AAA8C,CAA9L;;AAChL2uE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmB9J,OAAnB,GAA2B,UAAS9L,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,KAAKykF,WAAL,EAAN;AAAyBzkF,GAAC,CAAC9tB,IAAF;;AAAS,OAAI,IAAI0vC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC5hB,CAAC,CAACtuB,MAAhB,EAAuBkwC,CAAC,EAAxB,EAA2B;AAAC,QAAI5sB,CAAC,GAAC,KAAKovF,IAAL,CAAUpkF,CAAC,CAAC4hB,CAAD,CAAX,CAAN;AAAsB9vC,KAAC,CAACyW,IAAF,CAAOxW,CAAP,EAAS,KAAK2yG,UAAL,CAAgB1vF,CAAhB,CAAT,EAA4BA,CAAC,CAACxU,GAA9B,EAAkC,IAAlC;AAAwC;AAAC,CAAtK;;AAAuKigE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBxW,GAAnB,GAAuB,UAASY,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAAC,IAAIygD,IAAI,CAAClhE,GAAL,CAASglG,MAAb,CAAoBzyG,CAApB,CAAN;AAA6B,OAAKqyG,UAAL,IAAiBnkF,CAAC,CAACwkF,YAAF,GAAezyG,CAAf,EAAiBiuB,CAAC,CAAC/0B,KAAF,GAAQ8G,CAAC,CAACzC,OAAF,EAA1C,IAAuD0wB,CAAC,CAAC/0B,KAAF,GAAQ8G,CAA/D;AAAiE,OAAKqyG,IAAL,CAAUtyG,CAAC,CAACwW,QAAF,EAAV,IAAwB0X,CAAxB;AAA0B,OAAKqkF,QAAL,GAAc,CAAC,CAAf;AAAiB,SAAO,IAAP;AAAY,CAA1L;;AAA2L5jC,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBg9F,UAAnB,GAA8B,UAAS5yG,CAAT,EAAW;AAAC,SAAO,KAAKqyG,UAAL,IAAiBryG,CAAC,CAAC0yG,YAAF,KAAiB1yG,CAAC,CAAC0yG,YAAF,GAAe,IAAI,KAAKL,UAAT,CAAoBryG,CAAC,CAAC7G,KAAtB,CAAhC,GAA8D6G,CAAC,CAAC0yG,YAAjF,IAA+F1yG,CAAC,CAAC7G,KAAxG;AAA8G,CAAxJ;;AAClWw1E,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmB/Z,GAAnB,GAAuB,UAASmE,CAAT,EAAW;AAAC,MAAGA,CAAC,GAAC,KAAKsyG,IAAL,CAAUtyG,CAAC,CAACwW,QAAF,EAAV,CAAL,EAA6B,OAAO,KAAKo8F,UAAL,CAAgB5yG,CAAhB,CAAP;AAA0B,CAA1F;;AAA2F2uE,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBhE,GAAnB,GAAuB,UAAS5R,CAAT,EAAW;AAAC,SAAOA,CAAC,CAACwW,QAAF,MAAe,KAAK87F,IAA3B;AAAgC,CAAnE;;AAAoE3jC,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmBs9F,eAAnB,GAAmC,UAASlzG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC,MAAIujB,CAAC,GAAC,KAAKksE,WAAL,EAAN;AAAyBlsE,GAAC,CAACrmC,IAAF;;AAAS,OAAI,IAAI86B,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACuL,CAAC,CAAC7mC,MAAhB,EAAuBs7B,CAAC,EAAxB,EAA2B;AAAC,QAAIyV,CAAC,GAAC,KAAK2hE,IAAL,CAAU7rE,CAAC,CAACvL,CAAD,CAAX,CAAN;AAAsBj7B,KAAC,CAAC6sG,eAAF,CAAkB9sG,CAAlB;AAAqBkuB,KAAC,CAACzX,IAAF,CAAOxW,CAAP,EAAS,CAAT,EAAW0wC,CAAC,CAACjiC,GAAb;AAAkB,SAAK2jG,UAAL,GAAgBviE,CAAC,CAACr5B,IAAF,CAAOxW,CAAP,EAAS,CAAT,EAAW,KAAK2yG,UAAL,CAAgBjiE,CAAhB,CAAX,EAA8BztB,CAA9B,CAAhB,GAAiD4sB,CAAC,CAACr5B,IAAF,CAAOxW,CAAP,EAAS,CAAT,EAAW0wC,CAAC,CAACx3C,KAAb,CAAjD;AAAqE8G,KAAC,CAAC8sG,aAAF;AAAkB;AAAC,CAA1Q;;AAC/Jp+B,IAAI,CAAClhE,GAAL,CAAS0lG,iBAAT,GAA2B,UAASnzG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmBujB,CAAnB,EAAqBvL,CAArB,EAAuB;AAAC,SAAKj7B,CAAC,CAACgmG,SAAF,MAAe,CAAChmG,CAAC,CAAC+lG,UAAF,EAArB,GAAqC;AAAC,QAAIr1D,CAAC,GAAC1wC,CAAC,CAAC4lG,cAAF,EAAN;AAAyB,SAAGl1D,CAAH,GAAKlK,CAAC,GAACvY,CAAC,CAACzX,IAAF,CAAOxW,CAAP,CAAP,GAAiB,KAAG0wC,CAAH,KAAO3wC,CAAC,CAACqyG,UAAF,IAAcv2C,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB1qD,CAApB,GAAuBgY,CAAC,KAAGA,CAAC,GAAC,IAAIl7B,CAAC,CAACqyG,UAAN,EAAL,CAAxB,EAA+CviE,CAAC,CAACr5B,IAAF,CAAOxW,CAAP,EAASi7B,CAAT,EAAWhY,CAAX,CAA7D,IAA4EgY,CAAC,GAAC4U,CAAC,CAACr5B,IAAF,CAAOxW,CAAP,CAArF,CAAjB;AAAiH;;AAAA67D,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK,CAAL,IAAQnnC,CAA5B;AAA+Bq1B,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK,CAAL,IAAQ1yC,CAA5B;AAA+Bl7B,GAAC,CAACZ,GAAF,CAAMqnC,CAAN,EAAQvL,CAAR;AAAW,CAA5S;;AAA6SyzC,IAAI,CAAClhE,GAAL,CAASmI,SAAT,CAAmB+8F,WAAnB,GAA+B,YAAU;AAAC,MAAI3yG,CAAC,GAAC,KAAKsyG,IAAX;AAAA,MAAgBryG,CAAC,GAAC,EAAlB;AAAA,MAAqBiuB,CAArB;;AAAuB,OAAIA,CAAJ,IAASluB,CAAT,EAAWxD,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,CAAgC7B,IAAhC,CAAqCzW,CAArC,EAAuCkuB,CAAvC,KAA2CjuB,CAAC,CAACxB,IAAF,CAAOyvB,CAAP,CAA3C;;AAAqD,SAAOjuB,CAAP;AAAS,CAA1I;;AAC7S0uE,IAAI,CAAClhE,GAAL,CAASglG,MAAT,GAAgB,UAASzyG,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAKyO,GAAL,GAAS1O,CAAT;AAAW,OAAK7G,KAAL,GAAW8G,CAAX;AAAa,OAAKyyG,YAAL,GAAkB,KAAK,CAAvB;AAAyB,CAA/E;;AAAgF/jC,IAAI,CAACykC,kBAAL,GAAwB,UAASpzG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC,OAAKmwF,UAAL,GAAgBrzG,CAAhB;AAAkB,OAAKszG,SAAL,GAAerzG,CAAf;AAAiB,OAAKszG,IAAL,GAAUrlF,CAAV;AAAY,OAAKslF,UAAL,GAAgB1jE,CAAhB;AAAkB,OAAK2jE,UAAL,GAAgBvwF,CAAhB;AAAkB,CAA/H;;AAAgIyrD,IAAI,CAAC+kC,wBAAL,GAA8B,UAAS1zG,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmBujB,CAAnB,EAAqB;AAAC,OAAKktE,SAAL,GAAe3zG,CAAf;AAAiB,OAAK4zG,cAAL,GAAoB3zG,CAApB;AAAsB,OAAK4zG,cAAL,GAAoB3lF,CAApB;AAAsB,OAAK4lF,wBAAL,GAA8BhkE,CAA9B;AAAgC,OAAKikE,0BAAL,GAAgC7wF,CAAhC;AAAkC,OAAK8wF,QAAL,GAAcvtE,CAAd;AAAgB,CAAnM;;AAAoMkoC,IAAI,CAACykC,kBAAL,CAAwBx9F,SAAxB,CAAkCq+F,aAAlC,GAAgD,YAAU;AAAC,SAAM,CAAC,CAAC,KAAKV,IAAb;AAAkB,CAA7E;;AAA8E5kC,IAAI,CAACulC,OAAL,GAAa,YAAU,CAAE,CAAzB;;AAA0BvlC,IAAI,CAACulC,OAAL,CAAaC,kBAAb,GAAgC,CAAC,CAAjC;AAAmCxlC,IAAI,CAACulC,OAAL,CAAaE,oBAAb,GAAkC,CAACt4C,IAAI,CAACe,uBAAxC;AAC/hB8R,IAAI,CAACulC,OAAL,CAAaG,kBAAb,GAAgC,CAAC,CAAjC;AAAmC1lC,IAAI,CAACulC,OAAL,CAAaI,mBAAb,GAAiC,CAAC,CAAlC;AAAoC3lC,IAAI,CAACulC,OAAL,CAAaK,+BAAb,GAA6C,CAAC,CAA9C;AAAgD5lC,IAAI,CAACulC,OAAL,CAAaM,oBAAb,GAAkC,cAAY,OAAOz4F,UAArD;;AAAgE4yD,IAAI,CAACulC,OAAL,CAAat+F,SAAb,CAAuB6+F,gBAAvB,GAAwC,YAAU;AAAC,SAAO,KAAKC,UAAZ;AAAuB,CAA1E;;AAA2E/lC,IAAI,CAACulC,OAAL,CAAaS,SAAb,GAAuB,UAAS30G,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOA,CAAC,GAACD,CAAC,CAAC40G,iBAAX;AAA6B,CAAlE;;AAAmEjmC,IAAI,CAACulC,OAAL,CAAaW,kBAAb,GAAgC,YAAU,CAAE,CAA5C;;AAA6ClmC,IAAI,CAACulC,OAAL,CAAaY,eAAb,GAA6B,UAAS90G,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOA,CAAC,GAACD,CAAC,CAAC40G,iBAAX;AAA6B,CAAxE;;AAClXjmC,IAAI,CAACulC,OAAL,CAAaa,UAAb,GAAwB,UAAS/0G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmBujB,CAAnB,EAAqB;AAACzmC,GAAC,CAACg1G,SAAF,GAAY,IAAZ;AAAiB/0G,GAAC,KAAGA,CAAC,GAACiuB,CAAC,GAAC,CAACA,CAAD,CAAD,GAAK,EAAX,CAAD;AAAgBluB,GAAC,CAAC00G,UAAF,GAAaxmF,CAAC,GAACkP,MAAM,CAAClP,CAAD,CAAP,GAAW,KAAK,CAA9B;AAAgCluB,GAAC,CAAC40G,iBAAF,GAAoB,MAAI1mF,CAAJ,GAAM,CAAC,CAAP,GAAS,CAA7B;AAA+BluB,GAAC,CAAC+H,KAAF,GAAQ9H,CAAR;AAAU0uE,MAAI,CAACulC,OAAL,CAAae,4BAAb,CAA0Cj1G,CAA1C,EAA4C8vC,CAA5C;AAA+C9vC,GAAC,CAACk1G,yBAAF,GAA4B,EAA5B;AAA+BvmC,MAAI,CAACulC,OAAL,CAAaK,+BAAb,KAA+Cv0G,CAAC,CAACm1G,cAAF,GAAiBjyF,CAAhE;AAAmE,MAAGA,CAAH,EAAK,KAAIjjB,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACijB,CAAC,CAACtjB,MAAZ,EAAmBK,CAAC,EAApB,EAAuBiuB,CAAC,GAAChL,CAAC,CAACjjB,CAAD,CAAH,EAAOiuB,CAAC,GAACluB,CAAC,CAACo1G,MAAJ,IAAYlnF,CAAC,GAACygD,IAAI,CAACulC,OAAL,CAAaS,SAAb,CAAuB30G,CAAvB,EAAyBkuB,CAAzB,CAAF,EAA8BluB,CAAC,CAAC+H,KAAF,CAAQmmB,CAAR,IAAWluB,CAAC,CAAC+H,KAAF,CAAQmmB,CAAR,KAAYygD,IAAI,CAACulC,OAAL,CAAamB,oBAA9E,KAAqG1mC,IAAI,CAACulC,OAAL,CAAaoB,8BAAb,CAA4Ct1G,CAA5C,GAA+CA,CAAC,CAACu1G,gBAAF,CAAmBrnF,CAAnB,IACheluB,CAAC,CAACu1G,gBAAF,CAAmBrnF,CAAnB,KAAuBygD,IAAI,CAACulC,OAAL,CAAamB,oBADwS,CAAP;AAC3Q,MAAG5uE,CAAC,IAAEA,CAAC,CAAC7mC,MAAR,EAAe,KAAIK,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACwmC,CAAC,CAAC7mC,MAAZ,EAAmBK,CAAC,EAApB,EAAuB0uE,IAAI,CAACulC,OAAL,CAAasB,gBAAb,CAA8Bx1G,CAA9B,EAAgCymC,CAAC,CAACxmC,CAAD,CAAjC;AAAsC,CADtI;;AACuI0uE,IAAI,CAACulC,OAAL,CAAamB,oBAAb,GAAkCv5C,IAAI,CAACW,KAAL,IAAYjgE,MAAM,CAACsvE,MAAnB,GAA0BtvE,MAAM,CAACsvE,MAAP,CAAc,EAAd,CAA1B,GAA4C,EAA9E;;AAAiF6C,IAAI,CAACulC,OAAL,CAAauB,QAAb,GAAsB,UAASz1G,CAAT,EAAW;AAAC,SAAO2uE,IAAI,CAACulC,OAAL,CAAaI,mBAAb,GAAiCt0G,CAAC,YAAYtC,KAA9C,GAAoDA,KAAK,CAACwD,OAAN,CAAclB,CAAd,CAA3D;AAA4E,CAA9G;;AAA+G2uE,IAAI,CAACulC,OAAL,CAAawB,kBAAb,GAAgC,UAAS11G,CAAT,EAAW;AAAC,SAAO,SAAOA,CAAP,IAAU,YAAU,OAAOA,CAA3B,IAA8B,CAAC2uE,IAAI,CAACulC,OAAL,CAAauB,QAAb,CAAsBz1G,CAAtB,CAA/B,IAAyD,EAAE2uE,IAAI,CAACulC,OAAL,CAAaM,oBAAb,IAAmCx0G,CAAC,YAAY+b,UAAlD,CAAhE;AAA8H,CAA1K;;AACvU4yD,IAAI,CAACulC,OAAL,CAAae,4BAAb,GAA0C,UAASj1G,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACluB,CAAC,CAAC+H,KAAF,CAAQnI,MAAd;AAAA,MAAqBkwC,CAAC,GAAC,CAAC,CAAxB;;AAA0B,MAAG5hB,CAAC,KAAG4hB,CAAC,GAAC5hB,CAAC,GAAC,CAAJ,EAAMA,CAAC,GAACluB,CAAC,CAAC+H,KAAF,CAAQ+nC,CAAR,CAAR,EAAmB6+B,IAAI,CAACulC,OAAL,CAAawB,kBAAb,CAAgCxnF,CAAhC,CAAtB,CAAJ,EAA8D;AAACluB,KAAC,CAACo1G,MAAF,GAASzmC,IAAI,CAACulC,OAAL,CAAaY,eAAb,CAA6B90G,CAA7B,EAA+B8vC,CAA/B,CAAT;AAA2C9vC,KAAC,CAACu1G,gBAAF,GAAmBrnF,CAAnB;AAAqB;AAAO;;AAAA,GAAC,CAAD,GAAGjuB,CAAH,IAAMD,CAAC,CAACo1G,MAAF,GAAS/sG,IAAI,CAACge,GAAL,CAASpmB,CAAT,EAAW0uE,IAAI,CAACulC,OAAL,CAAaY,eAAb,CAA6B90G,CAA7B,EAA+B8vC,CAAC,GAAC,CAAjC,CAAX,CAAT,EAAyD9vC,CAAC,CAACu1G,gBAAF,GAAmB,IAAlF,IAAwFv1G,CAAC,CAACo1G,MAAF,GAASj4G,MAAM,CAACw4G,SAAxG;AAAkH,CAA1U;;AAA2UhnC,IAAI,CAACulC,OAAL,CAAaoB,8BAAb,GAA4C,UAASt1G,CAAT,EAAW;AAAC,MAAIC,CAAC,GAAC0uE,IAAI,CAACulC,OAAL,CAAaS,SAAb,CAAuB30G,CAAvB,EAAyBA,CAAC,CAACo1G,MAA3B,CAAN;AAAyCp1G,GAAC,CAAC+H,KAAF,CAAQ9H,CAAR,MAAaD,CAAC,CAACu1G,gBAAF,GAAmBv1G,CAAC,CAAC+H,KAAF,CAAQ9H,CAAR,IAAW,EAA3C;AAA+C,CAAhJ;;AAC3U0uE,IAAI,CAACulC,OAAL,CAAa0B,YAAb,GAA0B,UAAS51G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,OAAI,IAAI4hB,CAAC,GAAC,EAAN,EAAS5sB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACljB,CAAC,CAACJ,MAArB,EAA4BsjB,CAAC,EAA7B,EAAgC4sB,CAAC,CAAC5sB,CAAD,CAAD,GAAKjjB,CAAC,CAACwW,IAAF,CAAOzW,CAAC,CAACkjB,CAAD,CAAR,EAAYgL,CAAZ,EAAcluB,CAAC,CAACkjB,CAAD,CAAf,CAAL;;AAAyB,SAAO4sB,CAAP;AAAS,CAA5G;;AAA6G6+B,IAAI,CAACulC,OAAL,CAAa2B,iBAAb,GAA+B,UAAS71G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC,OAAI,IAAIujB,CAAR,IAAavY,CAAb,EAAe;AAAC,QAAIgN,CAAC,GAAChN,CAAC,CAACuY,CAAD,CAAP;AAAA,QAAWkK,CAAC,GAACb,CAAC,CAACr5B,IAAF,CAAOzW,CAAP,EAASk7B,CAAT,CAAb;;AAAyB,QAAG,QAAMyV,CAAT,EAAW;AAAC,WAAI,IAAI5iB,CAAR,IAAamN,CAAC,CAACo4E,SAAf,EAAyB,IAAGp4E,CAAC,CAACo4E,SAAF,CAAYh7F,cAAZ,CAA2ByV,CAA3B,CAAH,EAAiC;;AAAM9tB,OAAC,CAAC8tB,CAAD,CAAD,GAAKmN,CAAC,CAACs4E,UAAF,GAAat4E,CAAC,CAACu4E,UAAF,GAAa9kC,IAAI,CAACulC,OAAL,CAAa0B,YAAb,CAA0BjlE,CAA1B,EAA4BzV,CAAC,CAACs4E,UAA9B,EAAyCtwF,CAAzC,CAAb,GAAyDgY,CAAC,CAACs4E,UAAF,CAAatwF,CAAb,EAAeytB,CAAf,CAAtE,GAAwFA,CAA7F;AAA+F;AAAC;AAAC,CAAzQ;;AAC7Gg+B,IAAI,CAACulC,OAAL,CAAa4B,yBAAb,GAAuC,UAAS91G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,OAAI,IAAI5sB,CAAR,IAAagL,CAAb,EAAe;AAAC,QAAIuY,CAAC,GAACvY,CAAC,CAAChL,CAAD,CAAP;AAAA,QAAWgY,CAAC,GAACuL,CAAC,CAACktE,SAAf;AAAyB,QAAG,CAACltE,CAAC,CAACotE,cAAN,EAAqB,MAAMz1G,KAAK,CAAC,mFAAD,CAAX;AAAiG,QAAIuyC,CAAC,GAACb,CAAC,CAACr5B,IAAF,CAAOzW,CAAP,EAASk7B,CAAT,CAAN;AAAkB,QAAG,QAAMyV,CAAT,EAAW,IAAGzV,CAAC,CAAC+4E,aAAF,EAAH;AAAqB,UAAGxtE,CAAC,CAACqtE,wBAAL,EAA8BrtE,CAAC,CAACotE,cAAF,CAAiBp9F,IAAjB,CAAsBxW,CAAtB,EAAwBi7B,CAAC,CAACm4E,UAA1B,EAAqC1iE,CAArC,EAAuClK,CAAC,CAACqtE,wBAAzC,EAA9B,KAAsG,MAAM11G,KAAK,CAAC,+HAAD,CAAX;AAA3H,WAChPqoC,CAAC,CAACotE,cAAF,CAAiBp9F,IAAjB,CAAsBxW,CAAtB,EAAwBi7B,CAAC,CAACm4E,UAA1B,EAAqC1iE,CAArC;AAAwC;AAAC,CAD9C;;AAC+Cg+B,IAAI,CAACulC,OAAL,CAAa6B,mBAAb,GAAiC,UAAS/1G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAAC,MAAIujB,CAAC,GAACvY,CAAC,CAACjuB,CAAC,CAAC4lG,cAAF,EAAD,CAAP;;AAA4B,MAAGp/D,CAAH,EAAK;AAACvY,KAAC,GAACuY,CAAC,CAACktE,SAAJ;AAAc,QAAG,CAACltE,CAAC,CAACmtE,cAAN,EAAqB,MAAMx1G,KAAK,CAAC,6EAAD,CAAX;;AAA2F,QAAG8vB,CAAC,CAAC+lF,aAAF,EAAH,EAAqB;AAAC,UAAI/4E,CAAC,GAAC,IAAIhN,CAAC,CAACqlF,IAAN,EAAN;AAAiB9sE,OAAC,CAACmtE,cAAF,CAAiBn9F,IAAjB,CAAsBxW,CAAtB,EAAwBi7B,CAAxB,EAA0BuL,CAAC,CAACstE,0BAA5B;AAAwD,KAA/F,MAAoG74E,CAAC,GAACuL,CAAC,CAACmtE,cAAF,CAAiBn9F,IAAjB,CAAsBxW,CAAtB,CAAF;;AAA2BiuB,KAAC,CAACulF,UAAF,IAAc,CAAChtE,CAAC,CAACutE,QAAjB,GAA0B,CAAC/zG,CAAC,GAAC6vC,CAAC,CAACr5B,IAAF,CAAOzW,CAAP,EAASkuB,CAAT,CAAH,IAAgBjuB,CAAC,CAACxB,IAAF,CAAOy8B,CAAP,CAAhB,GAA0BhY,CAAC,CAACzM,IAAF,CAAOzW,CAAP,EAASkuB,CAAT,EAAW,CAACgN,CAAD,CAAX,CAApD,GAAoEhY,CAAC,CAACzM,IAAF,CAAOzW,CAAP,EAASkuB,CAAT,EAAWgN,CAAX,CAApE;AAAkF,GAArV,MAA0Vj7B,CAAC,CAACmmG,SAAF;AAAc,CAAzb;;AAC/Cz3B,IAAI,CAACulC,OAAL,CAAa8B,QAAb,GAAsB,UAASh2G,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAGA,CAAC,GAACD,CAAC,CAACo1G,MAAP,EAAc;AAACn1G,KAAC,GAAC0uE,IAAI,CAACulC,OAAL,CAAaS,SAAb,CAAuB30G,CAAvB,EAAyBC,CAAzB,CAAF;AAA8B,QAAIiuB,CAAC,GAACluB,CAAC,CAAC+H,KAAF,CAAQ9H,CAAR,CAAN;AAAiB,WAAOiuB,CAAC,KAAGygD,IAAI,CAACulC,OAAL,CAAamB,oBAAjB,GAAsCr1G,CAAC,CAAC+H,KAAF,CAAQ9H,CAAR,IAAW,EAAjD,GAAoDiuB,CAA3D;AAA6D;;AAAA,MAAGluB,CAAC,CAACu1G,gBAAL,EAAsB,OAAOrnF,CAAC,GAACluB,CAAC,CAACu1G,gBAAF,CAAmBt1G,CAAnB,CAAF,EAAwBiuB,CAAC,KAAGygD,IAAI,CAACulC,OAAL,CAAamB,oBAAjB,GAAsCr1G,CAAC,CAACu1G,gBAAF,CAAmBt1G,CAAnB,IAAsB,EAA5D,GAA+DiuB,CAA9F;AAAgG,CAArR;;AAAsRygD,IAAI,CAACulC,OAAL,CAAa+B,gBAAb,GAA8B,UAASj2G,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAO0uE,IAAI,CAACulC,OAAL,CAAa8B,QAAb,CAAsBh2G,CAAtB,EAAwBC,CAAxB,CAAP;AAAkC,CAA9E;;AAA+E0uE,IAAI,CAACulC,OAAL,CAAagC,6BAAb,GAA2C,UAASl2G,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAAC2uE,IAAI,CAACulC,OAAL,CAAa8B,QAAb,CAAsBh2G,CAAtB,EAAwBC,CAAxB,CAAF;AAA6B,SAAO,QAAMD,CAAN,GAAQA,CAAR,GAAU,CAACA,CAAlB;AAAoB,CAA1G;;AACrW2uE,IAAI,CAACulC,OAAL,CAAaiC,eAAb,GAA6B,UAASn2G,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAAC2uE,IAAI,CAACulC,OAAL,CAAa8B,QAAb,CAAsBh2G,CAAtB,EAAwBC,CAAxB,CAAF;AAA6B,SAAO,QAAMD,CAAN,GAAQA,CAAR,GAAU,CAAC,CAACA,CAAnB;AAAqB,CAA7F;;AAA8F2uE,IAAI,CAACulC,OAAL,CAAakC,6BAAb,GAA2C,UAASp2G,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACygD,IAAI,CAACulC,OAAL,CAAa+B,gBAAb,CAA8Bj2G,CAA9B,EAAgCC,CAAhC,CAAN;AAAyCD,GAAC,CAACk1G,yBAAF,KAA8Bl1G,CAAC,CAACk1G,yBAAF,GAA4B,EAA1D;;AAA8D,MAAG,CAACl1G,CAAC,CAACk1G,yBAAF,CAA4Bj1G,CAA5B,CAAJ,EAAmC;AAAC,SAAI,IAAI6vC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC5hB,CAAC,CAACtuB,MAAhB,EAAuBkwC,CAAC,EAAxB,EAA2B5hB,CAAC,CAAC4hB,CAAD,CAAD,GAAK,CAAC5hB,CAAC,CAAC4hB,CAAD,CAAP;;AAAW9vC,KAAC,CAACk1G,yBAAF,CAA4Bj1G,CAA5B,IAA+B,CAAC,CAAhC;AAAkC;;AAAA,SAAOiuB,CAAP;AAAS,CAArR;;AAC9FygD,IAAI,CAACulC,OAAL,CAAamC,uBAAb,GAAqC,UAASr2G,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAIiuB,CAAC,GAACygD,IAAI,CAACulC,OAAL,CAAa+B,gBAAb,CAA8Bj2G,CAA9B,EAAgCC,CAAhC,CAAN;AAAyCD,GAAC,CAACk1G,yBAAF,KAA8Bl1G,CAAC,CAACk1G,yBAAF,GAA4B,EAA1D;;AAA8D,MAAG,CAACl1G,CAAC,CAACk1G,yBAAF,CAA4Bj1G,CAA5B,CAAJ,EAAmC;AAAC,SAAI,IAAI6vC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC5hB,CAAC,CAACtuB,MAAhB,EAAuBkwC,CAAC,EAAxB,EAA2B5hB,CAAC,CAAC4hB,CAAD,CAAD,GAAK,CAAC,CAAC5hB,CAAC,CAAC4hB,CAAD,CAAR;;AAAY9vC,KAAC,CAACk1G,yBAAF,CAA4Bj1G,CAA5B,IAA+B,CAAC,CAAhC;AAAkC;;AAAA,SAAOiuB,CAAP;AAAS,CAAhR;;AACAygD,IAAI,CAACulC,OAAL,CAAaoC,UAAb,GAAwB,UAASt2G,CAAT,EAAW;AAAC,MAAG,QAAMA,CAAN,IAAS,aAAW,OAAOA,CAA9B,EAAgC,OAAOA,CAAP;AAAS,MAAG2uE,IAAI,CAACulC,OAAL,CAAaM,oBAAb,IAAmCx0G,CAAC,YAAY+b,UAAnD,EAA8D,OAAO+/C,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkB0gE,eAAlB,CAAkC7+F,CAAlC,CAAP;AAA4C87D,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,kCAAgChS,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAlD;AAAkE,SAAO,IAAP;AAAY,CAArQ;;AAAsQ2uE,IAAI,CAACulC,OAAL,CAAaqC,SAAb,GAAuB,UAASv2G,CAAT,EAAW;AAAC,MAAG,QAAMA,CAAN,IAASA,CAAC,YAAY+b,UAAzB,EAAoC,OAAO/b,CAAP;AAAS,MAAG,aAAW,OAAOA,CAArB,EAAuB,OAAO87D,IAAI,CAACv+B,KAAL,CAAWY,MAAX,CAAkBghE,wBAAlB,CAA2Cn/F,CAA3C,CAAP;AAAqD87D,MAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,kCAAgChS,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAlD;AAAkE,SAAO,IAAP;AAAY,CAA1O;;AACtQ2uE,IAAI,CAACulC,OAAL,CAAasC,cAAb,GAA4B,UAASx2G,CAAT,EAAW;AAAC2uE,MAAI,CAACulC,OAAL,CAAauC,sBAAb,CAAoCz2G,CAApC;AAAuC,SAAOA,CAAC,CAACJ,MAAF,IAAU,aAAW,OAAOI,CAAC,CAAC,CAAD,CAA7B,GAAiC87D,IAAI,CAAC/zD,KAAL,CAAWpL,GAAX,CAAeqD,CAAf,EAAiB2uE,IAAI,CAACulC,OAAL,CAAaoC,UAA9B,CAAjC,GAA2Et2G,CAAlF;AAAoF,CAAnK;;AAAoK2uE,IAAI,CAACulC,OAAL,CAAawC,aAAb,GAA2B,UAAS12G,CAAT,EAAW;AAAC2uE,MAAI,CAACulC,OAAL,CAAauC,sBAAb,CAAoCz2G,CAApC;AAAuC,SAAM,CAACA,CAAC,CAACJ,MAAH,IAAWI,CAAC,CAAC,CAAD,CAAD,YAAe+b,UAA1B,GAAqC/b,CAArC,GAAuC87D,IAAI,CAAC/zD,KAAL,CAAWpL,GAAX,CAAeqD,CAAf,EAAiB2uE,IAAI,CAACulC,OAAL,CAAaqC,SAA9B,CAA7C;AAAsF,CAApK;;AACpK5nC,IAAI,CAACulC,OAAL,CAAauC,sBAAb,GAAoC,UAASz2G,CAAT,EAAW;AAAC,MAAG87D,IAAI,CAACW,KAAL,IAAYz8D,CAAZ,IAAe,IAAEA,CAAC,CAACJ,MAAtB,EAA6B;AAAC,QAAIK,CAAC,GAAC67D,IAAI,CAACwF,MAAL,CAAYthE,CAAC,CAAC,CAAD,CAAb,CAAN;AAAwB87D,QAAI,CAAC/zD,KAAL,CAAW+D,OAAX,CAAmB9L,CAAnB,EAAqB,UAASA,CAAT,EAAW;AAAC87D,UAAI,CAACwF,MAAL,CAAYthE,CAAZ,KAAgBC,CAAhB,IAAmB67D,IAAI,CAACqR,OAAL,CAAaW,IAAb,CAAkB,yDAAuDhS,IAAI,CAACwF,MAAL,CAAYthE,CAAZ,CAAvD,GAAsE,YAAtE,GAAmFC,CAArG,CAAnB;AAA2H,KAA5J;AAA8J;AAAC,CAArQ;;AAAsQ0uE,IAAI,CAACulC,OAAL,CAAayC,mBAAb,GAAiC,UAAS32G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,GAAC2uE,IAAI,CAACulC,OAAL,CAAa8B,QAAb,CAAsBh2G,CAAtB,EAAwBC,CAAxB,CAAF;AAA6B,SAAO,QAAMD,CAAN,GAAQkuB,CAAR,GAAUluB,CAAjB;AAAmB,CAAjG;;AAAkG2uE,IAAI,CAACulC,OAAL,CAAa0C,0BAAb,GAAwC,UAAS52G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,GAAC2uE,IAAI,CAACulC,OAAL,CAAaiC,eAAb,CAA6Bn2G,CAA7B,EAA+BC,CAA/B,CAAF;AAAoC,SAAO,QAAMD,CAAN,GAAQkuB,CAAR,GAAUluB,CAAjB;AAAmB,CAA/G;;AACxW2uE,IAAI,CAACulC,OAAL,CAAa2C,gCAAb,GAA8C,UAAS72G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,GAAC2uE,IAAI,CAACulC,OAAL,CAAagC,6BAAb,CAA2Cl2G,CAA3C,EAA6CC,CAA7C,CAAF;AAAkD,SAAO,QAAMD,CAAN,GAAQkuB,CAAR,GAAUluB,CAAjB;AAAmB,CAAnI;;AAAoI2uE,IAAI,CAACulC,OAAL,CAAa4C,cAAb,GAA4BnoC,IAAI,CAACulC,OAAL,CAAayC,mBAAzC;;AAA6DhoC,IAAI,CAACulC,OAAL,CAAa6C,WAAb,GAAyB,UAAS/2G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC9vC,GAAC,CAACg1G,SAAF,KAAch1G,CAAC,CAACg1G,SAAF,GAAY,EAA1B;AAA8B,MAAG/0G,CAAC,IAAID,CAAC,CAACg1G,SAAV,EAAoB,OAAOh1G,CAAC,CAACg1G,SAAF,CAAY/0G,CAAZ,CAAP;AAAsB,MAAIijB,CAAC,GAACyrD,IAAI,CAACulC,OAAL,CAAa8B,QAAb,CAAsBh2G,CAAtB,EAAwBC,CAAxB,CAAN;;AAAiC,MAAG,CAACijB,CAAJ,EAAM;AAAC,QAAGgL,CAAH,EAAK;AAAOhL,KAAC,GAAC,EAAF;AAAKyrD,QAAI,CAACulC,OAAL,CAAa8C,QAAb,CAAsBh3G,CAAtB,EAAwBC,CAAxB,EAA0BijB,CAA1B;AAA6B;;AAAA,SAAOljB,CAAC,CAACg1G,SAAF,CAAY/0G,CAAZ,IAAe,IAAI0uE,IAAI,CAAClhE,GAAT,CAAayV,CAAb,EAAe4sB,CAAf,CAAtB;AAAwC,CAAjP;;AACjM6+B,IAAI,CAACulC,OAAL,CAAa8C,QAAb,GAAsB,UAASh3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BtuE,CAA9B,EAAgC2uE,IAAI,CAACulC,OAArC;AAA8Cj0G,GAAC,GAACD,CAAC,CAACo1G,MAAJ,GAAWp1G,CAAC,CAAC+H,KAAF,CAAQ4mE,IAAI,CAACulC,OAAL,CAAaS,SAAb,CAAuB30G,CAAvB,EAAyBC,CAAzB,CAAR,IAAqCiuB,CAAhD,IAAmDygD,IAAI,CAACulC,OAAL,CAAaoB,8BAAb,CAA4Ct1G,CAA5C,GAA+CA,CAAC,CAACu1G,gBAAF,CAAmBt1G,CAAnB,IAAsBiuB,CAAxH;AAA2H,SAAOluB,CAAP;AAAS,CAAxN;;AAAyN2uE,IAAI,CAACulC,OAAL,CAAa+C,iBAAb,GAA+B,UAASj3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOygD,IAAI,CAACulC,OAAL,CAAagD,wBAAb,CAAsCl3G,CAAtC,EAAwCC,CAAxC,EAA0CiuB,CAA1C,EAA4C,CAA5C,CAAP;AAAsD,CAArG;;AAAsGygD,IAAI,CAACulC,OAAL,CAAaiD,mBAAb,GAAiC,UAASn3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOygD,IAAI,CAACulC,OAAL,CAAagD,wBAAb,CAAsCl3G,CAAtC,EAAwCC,CAAxC,EAA0CiuB,CAA1C,EAA4C,CAA5C,CAAP;AAAsD,CAAvG;;AAC/TygD,IAAI,CAACulC,OAAL,CAAakD,qBAAb,GAAmC,UAASp3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOygD,IAAI,CAACulC,OAAL,CAAagD,wBAAb,CAAsCl3G,CAAtC,EAAwCC,CAAxC,EAA0CiuB,CAA1C,EAA4C,CAAC,CAA7C,CAAP;AAAuD,CAA1G;;AAA2GygD,IAAI,CAACulC,OAAL,CAAamD,oBAAb,GAAkC,UAASr3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOygD,IAAI,CAACulC,OAAL,CAAagD,wBAAb,CAAsCl3G,CAAtC,EAAwCC,CAAxC,EAA0CiuB,CAA1C,EAA4C,EAA5C,CAAP;AAAuD,CAAzG;;AAA0GygD,IAAI,CAACulC,OAAL,CAAaoD,mBAAb,GAAiC,UAASt3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOygD,IAAI,CAACulC,OAAL,CAAagD,wBAAb,CAAsCl3G,CAAtC,EAAwCC,CAAxC,EAA0CiuB,CAA1C,EAA4C,EAA5C,CAAP;AAAuD,CAAxG;;AAAyGygD,IAAI,CAACulC,OAAL,CAAaqD,kBAAb,GAAgC,UAASv3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOygD,IAAI,CAACulC,OAAL,CAAagD,wBAAb,CAAsCl3G,CAAtC,EAAwCC,CAAxC,EAA0CiuB,CAA1C,EAA4C,CAA5C,CAAP;AAAsD,CAAtG;;AAC9TygD,IAAI,CAACulC,OAAL,CAAasD,uBAAb,GAAqC,UAASx3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC,SAAOygD,IAAI,CAACulC,OAAL,CAAagD,wBAAb,CAAsCl3G,CAAtC,EAAwCC,CAAxC,EAA0CiuB,CAA1C,EAA4C,GAA5C,CAAP;AAAwD,CAA7G;;AAA8GygD,IAAI,CAACulC,OAAL,CAAagD,wBAAb,GAAsC,UAASl3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAACgsB,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BtuE,CAA9B,EAAgC2uE,IAAI,CAACulC,OAArC;AAA8ChmF,GAAC,KAAG4hB,CAAJ,GAAM6+B,IAAI,CAACulC,OAAL,CAAa8C,QAAb,CAAsBh3G,CAAtB,EAAwBC,CAAxB,EAA0BiuB,CAA1B,CAAN,GAAmCjuB,CAAC,GAACD,CAAC,CAACo1G,MAAJ,GAAWp1G,CAAC,CAAC+H,KAAF,CAAQ4mE,IAAI,CAACulC,OAAL,CAAaS,SAAb,CAAuB30G,CAAvB,EAAyBC,CAAzB,CAAR,IAAqC,IAAhD,IAAsD0uE,IAAI,CAACulC,OAAL,CAAaoB,8BAAb,CAA4Ct1G,CAA5C,GAA+C,OAAOA,CAAC,CAACu1G,gBAAF,CAAmBt1G,CAAnB,CAA5G,CAAnC;AAAsK,SAAOD,CAAP;AAAS,CAArR;;AAC9G2uE,IAAI,CAACulC,OAAL,CAAauD,kBAAb,GAAgC,UAASz3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAACgsB,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BtuE,CAA9B,EAAgC2uE,IAAI,CAACulC,OAArC;AAA8Cj0G,GAAC,GAAC0uE,IAAI,CAACulC,OAAL,CAAa+B,gBAAb,CAA8Bj2G,CAA9B,EAAgCC,CAAhC,CAAF;AAAqC,OAAK,CAAL,IAAQ6vC,CAAR,GAAU7vC,CAAC,CAAC8B,MAAF,CAAS+tC,CAAT,EAAW,CAAX,EAAa5hB,CAAb,CAAV,GAA0BjuB,CAAC,CAACxB,IAAF,CAAOyvB,CAAP,CAA1B;AAAoC,SAAOluB,CAAP;AAAS,CAAlL;;AAAmL2uE,IAAI,CAACulC,OAAL,CAAawD,aAAb,GAA2B,UAAS13G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAACgsB,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BtuE,CAA9B,EAAgC2uE,IAAI,CAACulC,OAArC;AAA8C,GAAChmF,CAAC,GAACygD,IAAI,CAACulC,OAAL,CAAasB,gBAAb,CAA8Bx1G,CAA9B,EAAgCkuB,CAAhC,CAAH,KAAwCA,CAAC,KAAGjuB,CAA5C,IAA+C,KAAK,CAAL,KAAS6vC,CAAxD,KAA4D9vC,CAAC,CAACg1G,SAAF,IAAa9mF,CAAC,IAAIluB,CAAC,CAACg1G,SAApB,KAAgCh1G,CAAC,CAACg1G,SAAF,CAAY9mF,CAAZ,IAAe,KAAK,CAApD,GAAuDygD,IAAI,CAACulC,OAAL,CAAa8C,QAAb,CAAsBh3G,CAAtB,EAAwBkuB,CAAxB,EAA0B,KAAK,CAA/B,CAAnH;AAAsJ,SAAOygD,IAAI,CAACulC,OAAL,CAAa8C,QAAb,CAAsBh3G,CAAtB,EAAwBC,CAAxB,EAA0B6vC,CAA1B,CAAP;AAAoC,CAArR;;AACnL6+B,IAAI,CAACulC,OAAL,CAAasB,gBAAb,GAA8B,UAASx1G,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAI,IAAIiuB,CAAJ,EAAM4hB,CAAN,EAAQ5sB,CAAC,GAAC,CAAd,EAAgBA,CAAC,GAACjjB,CAAC,CAACL,MAApB,EAA2BsjB,CAAC,EAA5B,EAA+B;AAAC,QAAIujB,CAAC,GAACxmC,CAAC,CAACijB,CAAD,CAAP;AAAA,QAAWgY,CAAC,GAACyzC,IAAI,CAACulC,OAAL,CAAa8B,QAAb,CAAsBh2G,CAAtB,EAAwBymC,CAAxB,CAAb;AAAwC,YAAMvL,CAAN,KAAUhN,CAAC,GAACuY,CAAF,EAAIqJ,CAAC,GAAC5U,CAAN,EAAQyzC,IAAI,CAACulC,OAAL,CAAa8C,QAAb,CAAsBh3G,CAAtB,EAAwBymC,CAAxB,EAA0B,KAAK,CAA/B,CAAlB;AAAqD;;AAAA,SAAOvY,CAAC,IAAEygD,IAAI,CAACulC,OAAL,CAAa8C,QAAb,CAAsBh3G,CAAtB,EAAwBkuB,CAAxB,EAA0B4hB,CAA1B,GAA6B5hB,CAA/B,IAAkC,CAA1C;AAA4C,CAArN;;AAAsNygD,IAAI,CAACulC,OAAL,CAAayD,eAAb,GAA6B,UAAS33G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC9vC,GAAC,CAACg1G,SAAF,KAAch1G,CAAC,CAACg1G,SAAF,GAAY,EAA1B;;AAA8B,MAAG,CAACh1G,CAAC,CAACg1G,SAAF,CAAY9mF,CAAZ,CAAJ,EAAmB;AAAC,QAAIhL,CAAC,GAACyrD,IAAI,CAACulC,OAAL,CAAa8B,QAAb,CAAsBh2G,CAAtB,EAAwBkuB,CAAxB,CAAN;AAAiC,QAAG4hB,CAAC,IAAE5sB,CAAN,EAAQljB,CAAC,CAACg1G,SAAF,CAAY9mF,CAAZ,IAAe,IAAIjuB,CAAJ,CAAMijB,CAAN,CAAf;AAAwB;;AAAA,SAAOljB,CAAC,CAACg1G,SAAF,CAAY9mF,CAAZ,CAAP;AAAsB,CAAxL;;AACtNygD,IAAI,CAACulC,OAAL,CAAa0D,uBAAb,GAAqC,UAAS53G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACygD,MAAI,CAACulC,OAAL,CAAa2D,kBAAb,CAAgC73G,CAAhC,EAAkCC,CAAlC,EAAoCiuB,CAApC;AAAuCjuB,GAAC,GAACD,CAAC,CAACg1G,SAAF,CAAY9mF,CAAZ,CAAF;AAAiBjuB,GAAC,IAAE0uE,IAAI,CAACulC,OAAL,CAAamB,oBAAhB,KAAuCp1G,CAAC,GAACD,CAAC,CAACg1G,SAAF,CAAY9mF,CAAZ,IAAe,EAAxD;AAA4D,SAAOjuB,CAAP;AAAS,CAAlL;;AAAmL0uE,IAAI,CAACulC,OAAL,CAAa2D,kBAAb,GAAgC,UAAS73G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAACluB,GAAC,CAACg1G,SAAF,KAAch1G,CAAC,CAACg1G,SAAF,GAAY,EAA1B;;AAA8B,MAAG,CAACh1G,CAAC,CAACg1G,SAAF,CAAY9mF,CAAZ,CAAJ,EAAmB;AAAC,SAAI,IAAI4hB,CAAC,GAAC6+B,IAAI,CAACulC,OAAL,CAAa+B,gBAAb,CAA8Bj2G,CAA9B,EAAgCkuB,CAAhC,CAAN,EAAyChL,CAAC,GAAC,EAA3C,EAA8CujB,CAAC,GAAC,CAApD,EAAsDA,CAAC,GAACqJ,CAAC,CAAClwC,MAA1D,EAAiE6mC,CAAC,EAAlE,EAAqEvjB,CAAC,CAACujB,CAAD,CAAD,GAAK,IAAIxmC,CAAJ,CAAM6vC,CAAC,CAACrJ,CAAD,CAAP,CAAL;;AAAiBzmC,KAAC,CAACg1G,SAAF,CAAY9mF,CAAZ,IAAehL,CAAf;AAAiB;AAAC,CAA1M;;AACnLyrD,IAAI,CAACulC,OAAL,CAAa4D,eAAb,GAA6B,UAAS93G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BtuE,CAA9B,EAAgC2uE,IAAI,CAACulC,OAArC;AAA8Cl0G,GAAC,CAACg1G,SAAF,KAAch1G,CAAC,CAACg1G,SAAF,GAAY,EAA1B;AAA8B,MAAIllE,CAAC,GAAC5hB,CAAC,GAACA,CAAC,CAAC1wB,OAAF,EAAD,GAAa0wB,CAApB;AAAsBluB,GAAC,CAACg1G,SAAF,CAAY/0G,CAAZ,IAAeiuB,CAAf;AAAiB,SAAOygD,IAAI,CAACulC,OAAL,CAAa8C,QAAb,CAAsBh3G,CAAtB,EAAwBC,CAAxB,EAA0B6vC,CAA1B,CAAP;AAAoC,CAApM;;AAAqM6+B,IAAI,CAACulC,OAAL,CAAa6D,oBAAb,GAAkC,UAAS/3G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAACgsB,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BtuE,CAA9B,EAAgC2uE,IAAI,CAACulC,OAArC;AAA8Cl0G,GAAC,CAACg1G,SAAF,KAAch1G,CAAC,CAACg1G,SAAF,GAAY,EAA1B;AAA8B,MAAI9xF,CAAC,GAAC4sB,CAAC,GAACA,CAAC,CAACtyC,OAAF,EAAD,GAAasyC,CAApB;AAAsB9vC,GAAC,CAACg1G,SAAF,CAAY/0G,CAAZ,IAAe6vC,CAAf;AAAiB,SAAO6+B,IAAI,CAACulC,OAAL,CAAawD,aAAb,CAA2B13G,CAA3B,EAA6BC,CAA7B,EAA+BiuB,CAA/B,EAAiChL,CAAjC,CAAP;AAA2C,CAAlN;;AACrMyrD,IAAI,CAACulC,OAAL,CAAa8D,uBAAb,GAAqC,UAASh4G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe;AAAC4tC,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BtuE,CAA9B,EAAgC2uE,IAAI,CAACulC,OAArC;AAA8Cl0G,GAAC,CAACg1G,SAAF,KAAch1G,CAAC,CAACg1G,SAAF,GAAY,EAA1B;AAA8B9mF,GAAC,GAACA,CAAC,IAAE,EAAL;;AAAQ,OAAI,IAAI4hB,CAAC,GAAC,EAAN,EAAS5sB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACgL,CAAC,CAACtuB,MAArB,EAA4BsjB,CAAC,EAA7B,EAAgC4sB,CAAC,CAAC5sB,CAAD,CAAD,GAAKgL,CAAC,CAAChL,CAAD,CAAD,CAAK1lB,OAAL,EAAL;;AAAoBwC,GAAC,CAACg1G,SAAF,CAAY/0G,CAAZ,IAAeiuB,CAAf;AAAiB,SAAOygD,IAAI,CAACulC,OAAL,CAAa8C,QAAb,CAAsBh3G,CAAtB,EAAwBC,CAAxB,EAA0B6vC,CAA1B,CAAP;AAAoC,CAAlP;;AACA6+B,IAAI,CAACulC,OAAL,CAAa+D,yBAAb,GAAuC,UAASj4G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB5sB,CAAjB,EAAmB;AAACyrD,MAAI,CAACulC,OAAL,CAAa2D,kBAAb,CAAgC73G,CAAhC,EAAkC8vC,CAAlC,EAAoC7vC,CAApC;AAAuC,MAAIwmC,CAAC,GAACzmC,CAAC,CAACg1G,SAAF,CAAY/0G,CAAZ,CAAN;AAAqBwmC,GAAC,KAAGA,CAAC,GAACzmC,CAAC,CAACg1G,SAAF,CAAY/0G,CAAZ,IAAe,EAApB,CAAD;AAAyBiuB,GAAC,GAACA,CAAC,GAACA,CAAD,GAAG,IAAI4hB,CAAJ,EAAN;AAAY9vC,GAAC,GAAC2uE,IAAI,CAACulC,OAAL,CAAa+B,gBAAb,CAA8Bj2G,CAA9B,EAAgCC,CAAhC,CAAF;AAAqC,OAAK,CAAL,IAAQijB,CAAR,IAAWujB,CAAC,CAAC1kC,MAAF,CAASmhB,CAAT,EAAW,CAAX,EAAagL,CAAb,GAAgBluB,CAAC,CAAC+B,MAAF,CAASmhB,CAAT,EAAW,CAAX,EAAagL,CAAC,CAAC1wB,OAAF,EAAb,CAA3B,KAAuDipC,CAAC,CAAChoC,IAAF,CAAOyvB,CAAP,GAAUluB,CAAC,CAACvB,IAAF,CAAOyvB,CAAC,CAAC1wB,OAAF,EAAP,CAAjE;AAAsF,SAAO0wB,CAAP;AAAS,CAAhS;;AAAiSygD,IAAI,CAACulC,OAAL,CAAagE,KAAb,GAAmB,UAASl4G,CAAT,EAAWC,CAAX,EAAaiuB,CAAb,EAAe4hB,CAAf,EAAiB;AAAC,OAAI,IAAI5sB,CAAC,GAAC,EAAN,EAASujB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAACzmC,CAAC,CAACJ,MAArB,EAA4B6mC,CAAC,EAA7B,EAAgCvjB,CAAC,CAACjjB,CAAC,CAACwW,IAAF,CAAOzW,CAAC,CAACymC,CAAD,CAAR,CAAD,CAAD,GAAgBvY,CAAC,GAACA,CAAC,CAACzX,IAAF,CAAOzW,CAAC,CAACymC,CAAD,CAAR,EAAYqJ,CAAZ,EAAc9vC,CAAC,CAACymC,CAAD,CAAf,CAAD,GAAqBzmC,CAAC,CAACymC,CAAD,CAAvC;;AAA2C,SAAOvjB,CAAP;AAAS,CAAzH;;AACjSyrD,IAAI,CAACulC,OAAL,CAAat+F,SAAb,CAAuBuiG,cAAvB,GAAsC,YAAU;AAAC,MAAG,KAAKnD,SAAR,EAAkB,KAAI,IAAIh1G,CAAR,IAAa,KAAKg1G,SAAlB,EAA4B;AAAC,QAAI/0G,CAAC,GAAC,KAAK+0G,SAAL,CAAeh1G,CAAf,CAAN;AAAwB,QAAGtC,KAAK,CAACwD,OAAN,CAAcjB,CAAd,CAAH,EAAoB,KAAI,IAAIiuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACjuB,CAAC,CAACL,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2BjuB,CAAC,CAACiuB,CAAD,CAAD,IAAMjuB,CAAC,CAACiuB,CAAD,CAAD,CAAK1wB,OAAL,EAAN,CAA/C,KAAyEyC,CAAC,IAAEA,CAAC,CAACzC,OAAF,EAAH;AAAe;AAAC,CAAjN;;AAAkNmxE,IAAI,CAACulC,OAAL,CAAat+F,SAAb,CAAuBpY,OAAvB,GAA+B,YAAU;AAAC,OAAK26G,cAAL;AAAsB,SAAO,KAAKpwG,KAAZ;AAAkB,CAAlF;;AAAmF4mE,IAAI,CAACulC,OAAL,CAAaG,kBAAb,KAAkC1lC,IAAI,CAACulC,OAAL,CAAat+F,SAAb,CAAuBY,QAAvB,GAAgC,YAAU;AAAC,OAAK2hG,cAAL;AAAsB,SAAO,KAAKpwG,KAAL,CAAWyO,QAAX,EAAP;AAA6B,CAAhI;;AACrSm4D,IAAI,CAACulC,OAAL,CAAat+F,SAAb,CAAuBwiG,YAAvB,GAAoC,UAASp4G,CAAT,EAAW;AAAC,MAAG,KAAKu1G,gBAAR,EAAyB;AAAC,SAAKP,SAAL,KAAiB,KAAKA,SAAL,GAAe,EAAhC;AAAoC,QAAI/0G,CAAC,GAACD,CAAC,CAACqzG,UAAR;;AAAmB,QAAGrzG,CAAC,CAACyzG,UAAL,EAAgB;AAAC,UAAGzzG,CAAC,CAACi0G,aAAF,EAAH,EAAqB,OAAO,KAAKe,SAAL,CAAe/0G,CAAf,MAAoB,KAAK+0G,SAAL,CAAe/0G,CAAf,IAAkB67D,IAAI,CAAC/zD,KAAL,CAAWpL,GAAX,CAAe,KAAK44G,gBAAL,CAAsBt1G,CAAtB,KAA0B,EAAzC,EAA4C,UAASA,CAAT,EAAW;AAAC,eAAO,IAAID,CAAC,CAACuzG,IAAN,CAAWtzG,CAAX,CAAP;AAAqB,OAA7E,CAAtC,GAAsH,KAAK+0G,SAAL,CAAe/0G,CAAf,CAA7H;AAA+I,KAArL,MAA0L,IAAGD,CAAC,CAACi0G,aAAF,EAAH,EAAqB,OAAM,CAAC,KAAKe,SAAL,CAAe/0G,CAAf,CAAD,IAAoB,KAAKs1G,gBAAL,CAAsBt1G,CAAtB,CAApB,KAA+C,KAAK+0G,SAAL,CAAe/0G,CAAf,IAAkB,IAAID,CAAC,CAACuzG,IAAN,CAAW,KAAKgC,gBAAL,CAAsBt1G,CAAtB,CAAX,CAAjE,GAAuG,KAAK+0G,SAAL,CAAe/0G,CAAf,CAA7G;;AAA+H,WAAO,KAAKs1G,gBAAL,CAAsBt1G,CAAtB,CAAP;AAAgC;AAAC,CAAhf;;AACA0uE,IAAI,CAACulC,OAAL,CAAat+F,SAAb,CAAuByiG,YAAvB,GAAoC,UAASr4G,CAAT,EAAWC,CAAX,EAAa;AAAC,OAAK+0G,SAAL,KAAiB,KAAKA,SAAL,GAAe,EAAhC;AAAoCrmC,MAAI,CAACulC,OAAL,CAAaoB,8BAAb,CAA4C,IAA5C;AAAkD,MAAIpnF,CAAC,GAACluB,CAAC,CAACqzG,UAAR;AAAmBrzG,GAAC,CAACyzG,UAAF,IAAcxzG,CAAC,GAACA,CAAC,IAAE,EAAL,EAAQD,CAAC,CAACi0G,aAAF,MAAmB,KAAKe,SAAL,CAAe9mF,CAAf,IAAkBjuB,CAAlB,EAAoB,KAAKs1G,gBAAL,CAAsBrnF,CAAtB,IAAyB4tC,IAAI,CAAC/zD,KAAL,CAAWpL,GAAX,CAAesD,CAAf,EAAiB,UAASD,CAAT,EAAW;AAAC,WAAOA,CAAC,CAACxC,OAAF,EAAP;AAAmB,GAAhD,CAAhE,IAAmH,KAAK+3G,gBAAL,CAAsBrnF,CAAtB,IAAyBjuB,CAAlK,IAAqKD,CAAC,CAACi0G,aAAF,MAAmB,KAAKe,SAAL,CAAe9mF,CAAf,IAAkBjuB,CAAlB,EAAoB,KAAKs1G,gBAAL,CAAsBrnF,CAAtB,IAAyBjuB,CAAC,GAACA,CAAC,CAACzC,OAAF,EAAD,GAAayC,CAA9E,IAAiF,KAAKs1G,gBAAL,CAAsBrnF,CAAtB,IAAyBjuB,CAA/Q;AAAiR,SAAO,IAAP;AAAY,CAAxb;;AACA0uE,IAAI,CAACulC,OAAL,CAAarjG,UAAb,GAAwB,UAAS7Q,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAG,EAAED,CAAC,YAAYC,CAAC,CAACxH,WAAjB,CAAH,EAAiC,MAAM2F,KAAK,CAAC,gCAAD,CAAX;AAA8C,MAAI8vB,CAAC,GAACluB,CAAC,CAACxC,OAAF,EAAN;AAAkByC,GAAC,GAACA,CAAC,CAACzC,OAAF,EAAF;AAAc,MAAIsyC,CAAC,GAAC,EAAN;AAAA,MAAS5sB,CAAC,GAAC,CAAX;AAAA,MAAaujB,CAAC,GAACvY,CAAC,CAACtuB,MAAF,GAASK,CAAC,CAACL,MAAX,GAAkBsuB,CAAC,CAACtuB,MAApB,GAA2BK,CAAC,CAACL,MAA5C;AAAmDI,GAAC,CAACy0G,gBAAF,OAAuB3kE,CAAC,CAAC,CAAD,CAAD,GAAK9vC,CAAC,CAACy0G,gBAAF,EAAL,EAA0BvxF,CAAC,GAAC,CAAnD;;AAAsD,SAAKA,CAAC,GAACujB,CAAP,EAASvjB,CAAC,EAAV,EAAayrD,IAAI,CAACulC,OAAL,CAAaoE,aAAb,CAA2BpqF,CAAC,CAAChL,CAAD,CAA5B,EAAgCjjB,CAAC,CAACijB,CAAD,CAAjC,MAAwC4sB,CAAC,CAAC5sB,CAAD,CAAD,GAAKjjB,CAAC,CAACijB,CAAD,CAA9C;;AAAmD,SAAO,IAAIljB,CAAC,CAACvH,WAAN,CAAkBq3C,CAAlB,CAAP;AAA4B,CAA1V;;AAA2V6+B,IAAI,CAACulC,OAAL,CAAa5oC,MAAb,GAAoB,UAAStrE,CAAT,EAAWC,CAAX,EAAa;AAAC,SAAOD,CAAC,IAAEC,CAAH,IAAM,EAAE,CAACD,CAAD,IAAI,CAACC,CAAP,KAAWD,CAAC,YAAYC,CAAC,CAACxH,WAA1B,IAAuCk2E,IAAI,CAACulC,OAAL,CAAaoE,aAAb,CAA2Bt4G,CAAC,CAACxC,OAAF,EAA3B,EAAuCyC,CAAC,CAACzC,OAAF,EAAvC,CAApD;AAAwG,CAA1I;;AAC3VmxE,IAAI,CAACulC,OAAL,CAAaqE,iBAAb,GAA+B,UAASv4G,CAAT,EAAWC,CAAX,EAAa;AAACD,GAAC,GAACA,CAAC,IAAE,EAAL;AAAQC,GAAC,GAACA,CAAC,IAAE,EAAL;AAAQ,MAAIiuB,CAAC,GAAC,EAAN;AAAA,MAAS4hB,CAAT;;AAAW,OAAIA,CAAJ,IAAS9vC,CAAT,EAAWkuB,CAAC,CAAC4hB,CAAD,CAAD,GAAK,CAAL;;AAAO,OAAIA,CAAJ,IAAS7vC,CAAT,EAAWiuB,CAAC,CAAC4hB,CAAD,CAAD,GAAK,CAAL;;AAAO,OAAIA,CAAJ,IAAS5hB,CAAT,EAAW,IAAG,CAACygD,IAAI,CAACulC,OAAL,CAAaoE,aAAb,CAA2Bt4G,CAAC,CAAC8vC,CAAD,CAA5B,EAAgC7vC,CAAC,CAAC6vC,CAAD,CAAjC,CAAJ,EAA0C,OAAM,CAAC,CAAP;;AAAS,SAAM,CAAC,CAAP;AAAS,CAAnL;;AACA6+B,IAAI,CAACulC,OAAL,CAAaoE,aAAb,GAA2B,UAASt4G,CAAT,EAAWC,CAAX,EAAa;AAAC,MAAGD,CAAC,IAAEC,CAAN,EAAQ,OAAM,CAAC,CAAP;AAAS,MAAG,CAAC67D,IAAI,CAAC3jD,QAAL,CAAcnY,CAAd,CAAD,IAAmB,CAAC87D,IAAI,CAAC3jD,QAAL,CAAclY,CAAd,CAAvB,EAAwC,OAAM,aAAW,OAAOD,CAAlB,IAAqBqH,KAAK,CAACrH,CAAD,CAA1B,IAA+B,aAAW,OAAOC,CAAlB,IAAqBoH,KAAK,CAACpH,CAAD,CAAzD,GAA6Dm9B,MAAM,CAACp9B,CAAD,CAAN,IAAWo9B,MAAM,CAACn9B,CAAD,CAA9E,GAAkF,CAAC,CAAzF;AAA2F,MAAGD,CAAC,CAACvH,WAAF,IAAewH,CAAC,CAACxH,WAApB,EAAgC,OAAM,CAAC,CAAP;;AAAS,MAAGk2E,IAAI,CAACulC,OAAL,CAAaM,oBAAb,IAAmCx0G,CAAC,CAACvH,WAAF,KAAgBsjB,UAAtD,EAAiE;AAAC,QAAG/b,CAAC,CAACJ,MAAF,IAAUK,CAAC,CAACL,MAAf,EAAsB,OAAM,CAAC,CAAP;;AAAS,SAAI,IAAIsuB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACluB,CAAC,CAACJ,MAAhB,EAAuBsuB,CAAC,EAAxB,EAA2B,IAAGluB,CAAC,CAACkuB,CAAD,CAAD,IAAMjuB,CAAC,CAACiuB,CAAD,CAAV,EAAc,OAAM,CAAC,CAAP;;AAAS,WAAM,CAAC,CAAP;AAAS;;AAAA,MAAGluB,CAAC,CAACvH,WAAF,KAAgBiF,KAAnB,EAAyB;AAAC,QAAIoyC,CAAC,GAAC,KAAK,CAAX;AAAA,QAAa5sB,CAAC,GAAC,KAAK,CAApB;AAAA,QAAsBujB,CAAC,GAACp+B,IAAI,CAACge,GAAL,CAASrmB,CAAC,CAACJ,MAAX,EAAkBK,CAAC,CAACL,MAApB,CAAxB;;AAAoD,SAAIsuB,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACuY,CAAV,EAAYvY,CAAC,EAAb,EAAgB;AAAC,UAAIgN,CAAC,GAACl7B,CAAC,CAACkuB,CAAD,CAAP;AAAA,UAAWyiB,CAAC,GAAC1wC,CAAC,CAACiuB,CAAD,CAAd;AAAkBgN,OAAC,IACpfA,CAAC,CAACziC,WAAF,IAAe+D,MADoe,KAC3ds/D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK,CAAL,KAAS99B,CAA7B,GAAgCgsB,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB1/C,CAAC,KAAGluB,CAAC,CAACJ,MAAF,GAAS,CAAjC,CAAhC,EAAoEkwC,CAAC,GAAC5U,CAAtE,EAAwEA,CAAC,GAAC,KAAK,CAD4Y;AACzYyV,OAAC,IAAEA,CAAC,CAACl4C,WAAF,IAAe+D,MAAlB,KAA2Bs/D,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB,KAAK,CAAL,KAAS1qD,CAA7B,GAAgC44C,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB1/C,CAAC,KAAGjuB,CAAC,CAACL,MAAF,GAAS,CAAjC,CAAhC,EAAoEsjB,CAAC,GAACytB,CAAtE,EAAwEA,CAAC,GAAC,KAAK,CAA1G;AAA6G,UAAG,CAACg+B,IAAI,CAACulC,OAAL,CAAaoE,aAAb,CAA2Bp9E,CAA3B,EAA6ByV,CAA7B,CAAJ,EAAoC,OAAM,CAAC,CAAP;AAAS;;AAAA,WAAOb,CAAC,IAAE5sB,CAAH,IAAM4sB,CAAC,GAACA,CAAC,IAAE,EAAL,EAAQ5sB,CAAC,GAACA,CAAC,IAAE,EAAb,EAAgByrD,IAAI,CAACulC,OAAL,CAAaqE,iBAAb,CAA+BzoE,CAA/B,EAAiC5sB,CAAjC,CAAtB,IAA2D,CAAC,CAAnE;AAAqE;;AAAA,MAAGljB,CAAC,CAACvH,WAAF,KAAgB+D,MAAnB,EAA0B,OAAOmyE,IAAI,CAACulC,OAAL,CAAaqE,iBAAb,CAA+Bv4G,CAA/B,EAAiCC,CAAjC,CAAP;AAA2C,QAAM7B,KAAK,CAAC,4BAAD,CAAX;AAA2C,CADzb;;AAC0buwE,IAAI,CAACulC,OAAL,CAAat+F,SAAb,CAAuB4iG,YAAvB,GAAoC,YAAU;AAAC,SAAO7pC,IAAI,CAACulC,OAAL,CAAasE,YAAb,CAA0B,IAA1B,CAAP;AAAuC,CAAtF;;AAC1b7pC,IAAI,CAACulC,OAAL,CAAat+F,SAAb,CAAuBgpB,KAAvB,GAA6B,YAAU;AAAC,SAAO+vC,IAAI,CAACulC,OAAL,CAAasE,YAAb,CAA0B,IAA1B,CAAP;AAAuC,CAA/E;;AAAgF7pC,IAAI,CAACulC,OAAL,CAAat1E,KAAb,GAAmB,UAAS5+B,CAAT,EAAW;AAAC,SAAO2uE,IAAI,CAACulC,OAAL,CAAasE,YAAb,CAA0Bx4G,CAA1B,CAAP;AAAoC,CAAnE;;AAAoE2uE,IAAI,CAACulC,OAAL,CAAasE,YAAb,GAA0B,UAASx4G,CAAT,EAAW;AAAC,SAAO,IAAIA,CAAC,CAACvH,WAAN,CAAkBk2E,IAAI,CAACulC,OAAL,CAAauE,MAAb,CAAoBz4G,CAAC,CAACxC,OAAF,EAApB,CAAlB,CAAP;AAA2D,CAAjG;;AACpJmxE,IAAI,CAACulC,OAAL,CAAawE,QAAb,GAAsB,UAAS14G,CAAT,EAAWC,CAAX,EAAa;AAAC67D,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BtuE,CAA9B,EAAgC2uE,IAAI,CAACulC,OAArC;AAA8Cp4C,MAAI,CAACqR,OAAL,CAAamB,gBAAb,CAA8BruE,CAA9B,EAAgC0uE,IAAI,CAACulC,OAArC;AAA8Cp4C,MAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB5tE,CAAC,CAACvH,WAAF,IAAewH,CAAC,CAACxH,WAArC,EAAiD,2DAAjD;AAA8GuH,GAAC,GAAC2uE,IAAI,CAACulC,OAAL,CAAat1E,KAAb,CAAmB5+B,CAAnB,CAAF;;AAAwB,OAAI,IAAIkuB,CAAC,GAACjuB,CAAC,CAACzC,OAAF,EAAN,EAAkBsyC,CAAC,GAAC9vC,CAAC,CAACxC,OAAF,EAApB,EAAgC0lB,CAAC,GAACgL,CAAC,CAACtuB,MAAF,GAAS,CAA/C,EAAiDsjB,CAAC,GAAC4sB,CAAC,CAAClwC,MAArD,EAA4DsjB,CAAC,EAA7D,EAAgEgL,CAAC,CAAChL,CAAD,CAAD,GAAK4sB,CAAC,CAAC5sB,CAAD,CAAN;;AAAUjjB,GAAC,CAAC+0G,SAAF,GAAYh1G,CAAC,CAACg1G,SAAd;AAAwB/0G,GAAC,CAACs1G,gBAAF,GAAmBv1G,CAAC,CAACu1G,gBAArB;AAAsC,CAA9Y;;AACA5mC,IAAI,CAACulC,OAAL,CAAauE,MAAb,GAAoB,UAASz4G,CAAT,EAAW;AAAC,MAAGtC,KAAK,CAACwD,OAAN,CAAclB,CAAd,CAAH,EAAoB;AAAC,SAAI,IAAIC,CAAC,GAACvC,KAAK,CAACsC,CAAC,CAACJ,MAAH,CAAX,EAAsBsuB,CAAC,GAAC,CAA5B,EAA8BA,CAAC,GAACluB,CAAC,CAACJ,MAAlC,EAAyCsuB,CAAC,EAA1C,EAA6C;AAAC,UAAI4hB,CAAC,GAAC9vC,CAAC,CAACkuB,CAAD,CAAP;AAAW,cAAM4hB,CAAN,KAAU7vC,CAAC,CAACiuB,CAAD,CAAD,GAAK,YAAU,OAAO4hB,CAAjB,GAAmB6+B,IAAI,CAACulC,OAAL,CAAauE,MAAb,CAAoB38C,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB99B,CAApB,CAApB,CAAnB,GAA+DA,CAA9E;AAAiF;;AAAA,WAAO7vC,CAAP;AAAS;;AAAA,MAAG0uE,IAAI,CAACulC,OAAL,CAAaM,oBAAb,IAAmCx0G,CAAC,YAAY+b,UAAnD,EAA8D,OAAO,IAAIA,UAAJ,CAAe/b,CAAf,CAAP;AAAyBC,GAAC,GAAC,EAAF;;AAAK,OAAIiuB,CAAJ,IAASluB,CAAT,EAAW8vC,CAAC,GAAC9vC,CAAC,CAACkuB,CAAD,CAAH,EAAO,QAAM4hB,CAAN,KAAU7vC,CAAC,CAACiuB,CAAD,CAAD,GAAK,YAAU,OAAO4hB,CAAjB,GAAmB6+B,IAAI,CAACulC,OAAL,CAAauE,MAAb,CAAoB38C,IAAI,CAACqR,OAAL,CAAaS,MAAb,CAAoB99B,CAApB,CAApB,CAAnB,GAA+DA,CAA9E,CAAP;;AAAwF,SAAO7vC,CAAP;AAAS,CAAhZ;;AAAiZ0uE,IAAI,CAACulC,OAAL,CAAayE,mBAAb,GAAiC,UAAS34G,CAAT,EAAWC,CAAX,EAAa;AAACA,GAAC,CAAC24G,SAAF,GAAY54G,CAAZ;AAAc,CAA7D;;AAA8D2uE,IAAI,CAACulC,OAAL,CAAa2E,oBAAb,GAAkC,EAAlC;AAC/clqC,IAAI,CAACulC,OAAL,CAAa4E,0BAAb,GAAwC,EAAxC;AAA2CnqC,IAAI,CAACoqC,MAAL,GAAY,EAAZ;AAAe,UAA4Bl+F,OAAO,CAACpN,GAAR,GAAYkhE,IAAI,CAAClhE,GAAjB,EAAqBoN,OAAO,CAACq5F,OAAR,GAAgBvlC,IAAI,CAACulC,OAA1C,EAAkDr5F,OAAO,CAACyqF,YAAR,GAAqB32B,IAAI,CAAC22B,YAA5E,EAAyFzqF,OAAO,CAACoxF,YAAR,GAAqBt9B,IAAI,CAACs9B,YAAnH,EAAgIpxF,OAAO,CAACu4F,kBAAR,GAA2BzkC,IAAI,CAACykC,kBAAhK,EAAmLv4F,OAAO,CAAC64F,wBAAR,GAAiC/kC,IAAI,CAAC+kC,wBAAzN,EAAkP74F,OAAO,CAAC4oD,YAAR,GAAqB3H,IAAI,CAAC2H,YAA5Q,EAAyR5oD,OAAO,CAAC8oD,QAAR,GAAiB7H,IAAI,CAAC6H,QAA/S,EAAwT9oD,OAAO,CAACnW,MAAR,GAAe;AAACgnE,QAAM,EAAC5P,IAAI,CAACp3D,MAAL,CAAYgnE;AAApB,CAAvU,EAAmW7wD,OAAO,CAACymD,MAAR,GAAexF,IAAI,CAACwF,MAAnZ,E;;;;;;;;;;;;AC1gB7C;;AAEb,IAAI03C,OAAO,GAAG59E,MAAM,CAAC29B,MAArB;;AAEAn+C,MAAM,CAACC,OAAP,GAAiB,SAASo+F,gBAAT,GAA4B;AAC5C,SAAO,OAAOD,OAAP,KAAmB,UAAnB,IACH,OAAOjgD,MAAP,KAAkB,UADf,IAEH,OAAOigD,OAAO,CAAC,EAAD,CAAd,KAAuB,QAFpB,CAE6B;AAF7B,KAGH,OAAOjgD,MAAM,CAAC,EAAD,CAAb,KAAsB,QAH1B,CAD4C,CAIR;AACpC,CALD,C;;;;;;;;;;;;ACJa;;AAEb,IAAImgD,UAAU,GAAG,OAAO57G,MAAP,KAAkB,WAAlB,IAAiCA,MAAlD;;AACA,IAAI67G,aAAa,GAAGn+F,mBAAO,CAAC,oDAAD,CAA3B;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAASu+F,gBAAT,GAA4B;AAC5C,MAAI,OAAOF,UAAP,KAAsB,UAA1B,EAAsC;AAAE,WAAO,KAAP;AAAe;;AACvD,MAAI,OAAO57G,MAAP,KAAkB,UAAtB,EAAkC;AAAE,WAAO,KAAP;AAAe;;AACnD,MAAI,OAAO47G,UAAU,CAAC,KAAD,CAAjB,KAA6B,QAAjC,EAA2C;AAAE,WAAO,KAAP;AAAe;;AAC5D,MAAI,OAAO57G,MAAM,CAAC,KAAD,CAAb,KAAyB,QAA7B,EAAuC;AAAE,WAAO,KAAP;AAAe;;AAExD,SAAO67G,aAAa,EAApB;AACA,CAPD,C;;;;;;;;;;;;ACLa;AAEb;;AACAv+F,MAAM,CAACC,OAAP,GAAiB,SAASk6C,UAAT,GAAsB;AACtC,MAAI,OAAOz3D,MAAP,KAAkB,UAAlB,IAAgC,OAAOd,MAAM,CAACk5D,qBAAd,KAAwC,UAA5E,EAAwF;AAAE,WAAO,KAAP;AAAe;;AACzG,MAAI,OAAOp4D,MAAM,CAACvC,QAAd,KAA2B,QAA/B,EAAyC;AAAE,WAAO,IAAP;AAAc;;AAEzD,MAAI4T,GAAG,GAAG,EAAV;AACA,MAAI0qG,GAAG,GAAG/7G,MAAM,CAAC,MAAD,CAAhB;AACA,MAAIg8G,MAAM,GAAG98G,MAAM,CAAC68G,GAAD,CAAnB;;AACA,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAAE,WAAO,KAAP;AAAe;;AAE9C,MAAI78G,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+B4iG,GAA/B,MAAwC,iBAA5C,EAA+D;AAAE,WAAO,KAAP;AAAe;;AAChF,MAAI78G,MAAM,CAACoZ,SAAP,CAAiBY,QAAjB,CAA0BC,IAA1B,CAA+B6iG,MAA/B,MAA2C,iBAA/C,EAAkE;AAAE,WAAO,KAAP;AAAe,GAV7C,CAYtC;AACA;AACA;AACA;AAEA;AACA;;;AAEA,MAAIC,MAAM,GAAG,EAAb;AACA5qG,KAAG,CAAC0qG,GAAD,CAAH,GAAWE,MAAX;;AACA,OAAKF,GAAL,IAAY1qG,GAAZ,EAAiB;AAAE,WAAO,KAAP;AAAe,GAtBI,CAsBH;;;AACnC,MAAI,OAAOnS,MAAM,CAACiS,IAAd,KAAuB,UAAvB,IAAqCjS,MAAM,CAACiS,IAAP,CAAYE,GAAZ,EAAiB/O,MAAjB,KAA4B,CAArE,EAAwE;AAAE,WAAO,KAAP;AAAe;;AAEzF,MAAI,OAAOpD,MAAM,CAACyvE,mBAAd,KAAsC,UAAtC,IAAoDzvE,MAAM,CAACyvE,mBAAP,CAA2Bt9D,GAA3B,EAAgC/O,MAAhC,KAA2C,CAAnG,EAAsG;AAAE,WAAO,KAAP;AAAe;;AAEvH,MAAI45G,IAAI,GAAGh9G,MAAM,CAACk5D,qBAAP,CAA6B/mD,GAA7B,CAAX;;AACA,MAAI6qG,IAAI,CAAC55G,MAAL,KAAgB,CAAhB,IAAqB45G,IAAI,CAAC,CAAD,CAAJ,KAAYH,GAArC,EAA0C;AAAE,WAAO,KAAP;AAAe;;AAE3D,MAAI,CAAC78G,MAAM,CAACoZ,SAAP,CAAiB2rD,oBAAjB,CAAsC9qD,IAAtC,CAA2C9H,GAA3C,EAAgD0qG,GAAhD,CAAL,EAA2D;AAAE,WAAO,KAAP;AAAe;;AAE5E,MAAI,OAAO78G,MAAM,CAACy7D,wBAAd,KAA2C,UAA/C,EAA2D;AAC1D,QAAIwhD,UAAU,GAAGj9G,MAAM,CAACy7D,wBAAP,CAAgCtpD,GAAhC,EAAqC0qG,GAArC,CAAjB;;AACA,QAAII,UAAU,CAACtgH,KAAX,KAAqBogH,MAArB,IAA+BE,UAAU,CAACpkD,UAAX,KAA0B,IAA7D,EAAmE;AAAE,aAAO,KAAP;AAAe;AACpF;;AAED,SAAO,IAAP;AACA,CAtCD,C;;;;;;;;;;;;ACHa;;AAEb,IAAIN,UAAU,GAAG/5C,mBAAO,CAAC,8DAAD,CAAxB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAAS6+F,mBAAT,GAA+B;AAC/C,SAAO3kD,UAAU,MAAM,CAAC,CAACz3D,MAAM,CAACq8G,WAAhC;AACA,CAFD,C;;;;;;;;;;;;ACJa;;AAEb,IAAI99E,IAAI,GAAG7gB,mBAAO,CAAC,4DAAD,CAAlB;;AAEAJ,MAAM,CAACC,OAAP,GAAiBghB,IAAI,CAACplB,IAAL,CAAU+gD,QAAQ,CAAC/gD,IAAnB,EAAyBja,MAAM,CAACoZ,SAAP,CAAiB0C,cAA1C,CAAjB,C;;;;;;;;;;;;ACJa;;AAEb,IAAIshG,cAAc,GAAG5+F,mBAAO,CAAC,sEAAD,CAAP,EAArB;;AACA,IAAI81C,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AAEA,IAAI6+F,SAAS,GAAG/oD,SAAS,CAAC,2BAAD,CAAzB;;AAEA,IAAIgpD,mBAAmB,GAAG,SAASppD,WAAT,CAAqBv3D,KAArB,EAA4B;AACrD,MAAIygH,cAAc,IAAIzgH,KAAlB,IAA2B,OAAOA,KAAP,KAAiB,QAA5C,IAAwDmE,MAAM,CAACq8G,WAAP,IAAsBxgH,KAAlF,EAAyF;AACxF,WAAO,KAAP;AACA;;AACD,SAAO0gH,SAAS,CAAC1gH,KAAD,CAAT,KAAqB,oBAA5B;AACA,CALD;;AAOA,IAAI4gH,iBAAiB,GAAG,SAASrpD,WAAT,CAAqBv3D,KAArB,EAA4B;AACnD,MAAI2gH,mBAAmB,CAAC3gH,KAAD,CAAvB,EAAgC;AAC/B,WAAO,IAAP;AACA;;AACD,SAAOA,KAAK,KAAK,IAAV,IACN,OAAOA,KAAP,KAAiB,QADX,IAEN,OAAOA,KAAK,CAACyG,MAAb,KAAwB,QAFlB,IAGNzG,KAAK,CAACyG,MAAN,IAAgB,CAHV,IAINi6G,SAAS,CAAC1gH,KAAD,CAAT,KAAqB,gBAJf,IAKN0gH,SAAS,CAAC1gH,KAAK,CAACi/D,MAAP,CAAT,KAA4B,mBAL7B;AAMA,CAVD;;AAYA,IAAI4hD,yBAAyB,GAAI,YAAY;AAC5C,SAAOF,mBAAmB,CAAChxG,SAAD,CAA1B;AACA,CAFgC,EAAjC;;AAIAgxG,mBAAmB,CAACC,iBAApB,GAAwCA,iBAAxC,C,CAA2D;;AAE3Dn/F,MAAM,CAACC,OAAP,GAAiBm/F,yBAAyB,GAAGF,mBAAH,GAAyBC,iBAAnE,C;;;;;;;;;;;;AChCa;;AAEb,IAAIE,UAAU,GAAGj/F,mBAAO,CAAC,wDAAD,CAAP,EAAjB;;AAEA,IAAIi/F,UAAJ,EAAgB;AACf,MAAIC,aAAa,GAAGnhD,MAAM,CAACnjD,SAAP,CAAiB9T,OAArC;;AACA,MAAIq4G,SAAS,GAAG,SAASC,eAAT,CAAyBjhH,KAAzB,EAAgC;AAC/C,QAAI;AACH+gH,mBAAa,CAACzjG,IAAd,CAAmBtd,KAAnB;AACA,aAAO,IAAP;AACA,KAHD,CAGE,OAAO+pB,CAAP,EAAU,CACX;;AACD,WAAO,KAAP;AACA,GAPD;;AASAtI,QAAM,CAACC,OAAP,GAAiB,SAASw/F,QAAT,CAAkBlhH,KAAlB,EAAyB;AACzC,QACCA,KAAK,KAAK,IAAV,IACG,OAAOA,KAAP,KAAiB,WADpB,IAEG,OAAOA,KAAP,KAAiB,SAFpB,IAGG,OAAOA,KAAP,KAAiB,QAHpB,IAIG,OAAOA,KAAP,KAAiB,QAJpB,IAKG,OAAOA,KAAP,KAAiB,QALpB,IAMG,OAAOA,KAAP,KAAiB,UAPrB,EAQE;AACD,aAAO,KAAP;AACA;;AACD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC9B,aAAO,IAAP;AACA;;AAED,WAAOghH,SAAS,CAAChhH,KAAD,CAAhB;AACA,GAjBD;AAkBA,CA7BD,MA6BO;AACNyhB,QAAM,CAACC,OAAP,GAAiB,SAASw/F,QAAT,CAAkBlhH,KAAlB,EAAyB;AACzC,WAAO,MAAK,IAAIA,KAAhB;AACA,GAFD;AAGA,C;;;;;;;;;;;;ACrCY;;AAEb,IAAI23D,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AACA,IAAIs/F,UAAU,GAAGxpD,SAAS,CAAC,4BAAD,CAA1B;AACA,IAAI+oD,SAAS,GAAG/oD,SAAS,CAAC,2BAAD,CAAzB;;AAEA,IAAIypD,gBAAgB,GAAG,SAASC,iBAAT,CAA2BrhH,KAA3B,EAAkC;AACxD,MAAI;AACHmhH,cAAU,CAACnhH,KAAD,CAAV;AACA,WAAO,IAAP;AACA,GAHD,CAGE,OAAO+pB,CAAP,EAAU;AACX,WAAO,KAAP;AACA;AACD,CAPD;;AAQA,IAAIu3F,SAAS,GAAG,kBAAhB;;AACA,IAAIb,cAAc,GAAG5+F,mBAAO,CAAC,sEAAD,CAAP,EAArB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAASmhD,SAAT,CAAmB7iE,KAAnB,EAA0B;AAC1C,MAAI,OAAOA,KAAP,KAAiB,SAArB,EAAgC;AAC/B,WAAO,IAAP;AACA;;AACD,MAAIA,KAAK,KAAK,IAAV,IAAkB,OAAOA,KAAP,KAAiB,QAAvC,EAAiD;AAChD,WAAO,KAAP;AACA;;AACD,SAAOygH,cAAc,IAAIt8G,MAAM,CAACq8G,WAAP,IAAsBxgH,KAAxC,GAAgDohH,gBAAgB,CAACphH,KAAD,CAAhE,GAA0E0gH,SAAS,CAAC1gH,KAAD,CAAT,KAAqBshH,SAAtG;AACA,CARD,C;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA7/F,MAAM,CAACC,OAAP,GAAiB,UAAUlM,GAAV,EAAe;AAC9B,SAAOA,GAAG,IAAI,IAAP,KAAgBsN,QAAQ,CAACtN,GAAD,CAAR,IAAiB+rG,YAAY,CAAC/rG,GAAD,CAA7B,IAAsC,CAAC,CAACA,GAAG,CAACgsG,SAA5D,CAAP;AACD,CAFD;;AAIA,SAAS1+F,QAAT,CAAmBtN,GAAnB,EAAwB;AACtB,SAAO,CAAC,CAACA,GAAG,CAAClW,WAAN,IAAqB,OAAOkW,GAAG,CAAClW,WAAJ,CAAgBwjB,QAAvB,KAAoC,UAAzD,IAAuEtN,GAAG,CAAClW,WAAJ,CAAgBwjB,QAAhB,CAAyBtN,GAAzB,CAA9E;AACD,C,CAED;;;AACA,SAAS+rG,YAAT,CAAuB/rG,GAAvB,EAA4B;AAC1B,SAAO,OAAOA,GAAG,CAACisG,WAAX,KAA2B,UAA3B,IAAyC,OAAOjsG,GAAG,CAAC/M,KAAX,KAAqB,UAA9D,IAA4Eqa,QAAQ,CAACtN,GAAG,CAAC/M,KAAJ,CAAU,CAAV,EAAa,CAAb,CAAD,CAA3F;AACD,C;;;;;;;;;;;;ACpBY;;AAEb,IAAIs6C,MAAM,GAAGn4C,IAAI,CAAC6R,SAAL,CAAesmC,MAA5B;;AACA,IAAI2+D,aAAa,GAAG,SAASC,iBAAT,CAA2B3hH,KAA3B,EAAkC;AACrD,MAAI;AACH+iD,UAAM,CAACzlC,IAAP,CAAYtd,KAAZ;AACA,WAAO,IAAP;AACA,GAHD,CAGE,OAAO+pB,CAAP,EAAU;AACX,WAAO,KAAP;AACA;AACD,CAPD;;AASA,IAAI8xC,KAAK,GAAGx4D,MAAM,CAACoZ,SAAP,CAAiBY,QAA7B;AACA,IAAIukG,SAAS,GAAG,eAAhB;;AACA,IAAInB,cAAc,GAAG5+F,mBAAO,CAAC,sEAAD,CAAP,EAArB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAASmgG,YAAT,CAAsB7hH,KAAtB,EAA6B;AAC7C,MAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAA3C,EAAiD;AAChD,WAAO,KAAP;AACA;;AACD,SAAOygH,cAAc,GAAGiB,aAAa,CAAC1hH,KAAD,CAAhB,GAA0B67D,KAAK,CAACv+C,IAAN,CAAWtd,KAAX,MAAsB4hH,SAArE;AACA,CALD,C;;;;;;;;;;;;AChBa;;AAEb,IAAInlD,IAAI,GAAG,OAAOnoD,GAAP,KAAe,UAAf,IAA6BA,GAAG,CAACmI,SAAjC,GAA6CnI,GAA7C,GAAmD,IAA9D;AACA,IAAI8jD,IAAI,GAAG,OAAOt9C,GAAP,KAAe,UAAf,IAA6BA,GAAG,CAAC2B,SAAjC,GAA6C3B,GAA7C,GAAmD,IAA9D;AAEA,IAAIgnG,QAAJ;;AAEA,IAAI,CAACrlD,IAAL,EAAW;AACV;AACAqlD,UAAQ,GAAG,SAAS3kD,KAAT,CAAehvD,CAAf,EAAkB;AAC5B;AACA,WAAO,KAAP;AACA,GAHD;AAIA;;AAED,IAAIkqD,OAAO,GAAGoE,IAAI,GAAGnoD,GAAG,CAACmI,SAAJ,CAAchE,GAAjB,GAAuB,IAAzC;AACA,IAAIigD,OAAO,GAAGN,IAAI,GAAGt9C,GAAG,CAAC2B,SAAJ,CAAchE,GAAjB,GAAuB,IAAzC;;AACA,IAAI,CAACqpG,QAAD,IAAa,CAACzpD,OAAlB,EAA2B;AAC1B;AACAypD,UAAQ,GAAG,SAAS3kD,KAAT,CAAehvD,CAAf,EAAkB;AAC5B;AACA,WAAO,KAAP;AACA,GAHD;AAIA;;AAEDsT,MAAM,CAACC,OAAP,GAAiBogG,QAAQ,IAAI,SAAS3kD,KAAT,CAAehvD,CAAf,EAAkB;AAC9C,MAAI,CAACA,CAAD,IAAM,OAAOA,CAAP,KAAa,QAAvB,EAAiC;AAChC,WAAO,KAAP;AACA;;AACD,MAAI;AACHkqD,WAAO,CAAC/6C,IAAR,CAAanP,CAAb;;AACA,QAAIuqD,OAAJ,EAAa;AACZ,UAAI;AACHA,eAAO,CAACp7C,IAAR,CAAanP,CAAb;AACA,OAFD,CAEE,OAAO4b,CAAP,EAAU;AACX,eAAO,IAAP;AACA;AACD;;AACD,WAAO5b,CAAC,YAAYsuD,IAApB,CATG,CASuB;AAC1B,GAVD,CAUE,OAAO1yC,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACA,CAhBD,C;;;;;;;;;;;;ACzBa;;AAEb,IAAIg4F,QAAQ,GAAG/9G,MAAM,CAACyY,SAAP,CAAiBY,QAAhC;;AACA,IAAI2kG,eAAe,GAAG,SAASA,eAAT,CAAyBhiH,KAAzB,EAAgC;AACrD,MAAI;AACH+hH,YAAQ,CAACzkG,IAAT,CAActd,KAAd;AACA,WAAO,IAAP;AACA,GAHD,CAGE,OAAO+pB,CAAP,EAAU;AACX,WAAO,KAAP;AACA;AACD,CAPD;;AAQA,IAAI8xC,KAAK,GAAGx4D,MAAM,CAACoZ,SAAP,CAAiBY,QAA7B;AACA,IAAI4kG,QAAQ,GAAG,iBAAf;;AACA,IAAIxB,cAAc,GAAG5+F,mBAAO,CAAC,sEAAD,CAAP,EAArB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAASwgG,cAAT,CAAwBliH,KAAxB,EAA+B;AAC/C,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC9B,WAAO,IAAP;AACA;;AACD,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC9B,WAAO,KAAP;AACA;;AACD,SAAOygH,cAAc,GAAGuB,eAAe,CAAChiH,KAAD,CAAlB,GAA4B67D,KAAK,CAACv+C,IAAN,CAAWtd,KAAX,MAAsBiiH,QAAvE;AACA,CARD,C;;;;;;;;;;;;ACfa;;AAEb,IAAItqD,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AACA,IAAI4+F,cAAc,GAAG5+F,mBAAO,CAAC,sEAAD,CAAP,EAArB;;AACA,IAAIpJ,GAAJ;AACA,IAAI0pG,KAAJ;AACA,IAAIC,aAAJ;AACA,IAAIC,cAAJ;;AAEA,IAAI5B,cAAJ,EAAoB;AACnBhoG,KAAG,GAAGk/C,SAAS,CAAC,iCAAD,CAAf;AACAwqD,OAAK,GAAGxqD,SAAS,CAAC,uBAAD,CAAjB;AACAyqD,eAAa,GAAG,EAAhB;;AAEA,MAAIE,gBAAgB,GAAG,YAAY;AAClC,UAAMF,aAAN;AACA,GAFD;;AAGAC,gBAAc,GAAG;AAChBhlG,YAAQ,EAAEilG,gBADM;AAEhB35G,WAAO,EAAE25G;AAFO,GAAjB;;AAKA,MAAI,OAAOn+G,MAAM,CAACo+G,WAAd,KAA8B,QAAlC,EAA4C;AAC3CF,kBAAc,CAACl+G,MAAM,CAACo+G,WAAR,CAAd,GAAqCD,gBAArC;AACA;AACD;;AAED,IAAI5B,SAAS,GAAG/oD,SAAS,CAAC,2BAAD,CAAzB;AACA,IAAI6qD,IAAI,GAAGn/G,MAAM,CAACy7D,wBAAlB;AACA,IAAI2jD,UAAU,GAAG,iBAAjB;AAEAhhG,MAAM,CAACC,OAAP,GAAiB++F,cAAc,CAC9B;AAD8B,EAE5B,SAAShpD,OAAT,CAAiBz3D,KAAjB,EAAwB;AACzB,MAAI,CAACA,KAAD,IAAU,OAAOA,KAAP,KAAiB,QAA/B,EAAyC;AACxC,WAAO,KAAP;AACA;;AAED,MAAIsgH,UAAU,GAAGkC,IAAI,CAACxiH,KAAD,EAAQ,WAAR,CAArB;AACA,MAAI0iH,wBAAwB,GAAGpC,UAAU,IAAI7nG,GAAG,CAAC6nG,UAAD,EAAa,OAAb,CAAhD;;AACA,MAAI,CAACoC,wBAAL,EAA+B;AAC9B,WAAO,KAAP;AACA;;AAED,MAAI;AACHP,SAAK,CAACniH,KAAD,EAAQqiH,cAAR,CAAL;AACA,GAFD,CAEE,OAAOt4F,CAAP,EAAU;AACX,WAAOA,CAAC,KAAKq4F,aAAb;AACA;AACD,CAlB6B,GAmB5B,SAAS3qD,OAAT,CAAiBz3D,KAAjB,EAAwB;AACzB;AACA,MAAI,CAACA,KAAD,IAAW,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,UAA7D,EAA0E;AACzE,WAAO,KAAP;AACA;;AAED,SAAO0gH,SAAS,CAAC1gH,KAAD,CAAT,KAAqByiH,UAA5B;AACA,CA1BF,C;;;;;;;;;;;;AC/Ba;;AAEb,IAAIhmD,IAAI,GAAG,OAAOnoD,GAAP,KAAe,UAAf,IAA6BA,GAAG,CAACmI,SAAjC,GAA6CnI,GAA7C,GAAmD,IAA9D;AACA,IAAI8jD,IAAI,GAAG,OAAOt9C,GAAP,KAAe,UAAf,IAA6BA,GAAG,CAAC2B,SAAjC,GAA6C3B,GAA7C,GAAmD,IAA9D;AAEA,IAAIgnG,QAAJ;;AAEA,IAAI,CAAC1pD,IAAL,EAAW;AACV;AACA0pD,UAAQ,GAAG,SAAS1kD,KAAT,CAAejvD,CAAf,EAAkB;AAC5B;AACA,WAAO,KAAP;AACA,GAHD;AAIA;;AAED,IAAIkqD,OAAO,GAAGoE,IAAI,GAAGnoD,GAAG,CAACmI,SAAJ,CAAchE,GAAjB,GAAuB,IAAzC;AACA,IAAIigD,OAAO,GAAGN,IAAI,GAAGt9C,GAAG,CAAC2B,SAAJ,CAAchE,GAAjB,GAAuB,IAAzC;;AACA,IAAI,CAACqpG,QAAD,IAAa,CAACppD,OAAlB,EAA2B;AAC1B;AACAopD,UAAQ,GAAG,SAAS1kD,KAAT,CAAejvD,CAAf,EAAkB;AAC5B;AACA,WAAO,KAAP;AACA,GAHD;AAIA;;AAEDsT,MAAM,CAACC,OAAP,GAAiBogG,QAAQ,IAAI,SAAS1kD,KAAT,CAAejvD,CAAf,EAAkB;AAC9C,MAAI,CAACA,CAAD,IAAM,OAAOA,CAAP,KAAa,QAAvB,EAAiC;AAChC,WAAO,KAAP;AACA;;AACD,MAAI;AACHuqD,WAAO,CAACp7C,IAAR,CAAanP,CAAb;;AACA,QAAIkqD,OAAJ,EAAa;AACZ,UAAI;AACHA,eAAO,CAAC/6C,IAAR,CAAanP,CAAb;AACA,OAFD,CAEE,OAAO4b,CAAP,EAAU;AACX,eAAO,IAAP;AACA;AACD;;AACD,WAAO5b,CAAC,YAAYiqD,IAApB,CATG,CASuB;AAC1B,GAVD,CAUE,OAAOruC,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACA,CAhBD,C;;;;;;;;;;;;ACzBa;;AAEb,IAAI44F,QAAQ,GAAG1+E,MAAM,CAACxnB,SAAP,CAAiB9T,OAAhC;;AACA,IAAIi6G,eAAe,GAAG,SAASA,eAAT,CAAyB5iH,KAAzB,EAAgC;AACrD,MAAI;AACH2iH,YAAQ,CAACrlG,IAAT,CAActd,KAAd;AACA,WAAO,IAAP;AACA,GAHD,CAGE,OAAO+pB,CAAP,EAAU;AACX,WAAO,KAAP;AACA;AACD,CAPD;;AAQA,IAAI8xC,KAAK,GAAGx4D,MAAM,CAACoZ,SAAP,CAAiBY,QAA7B;AACA,IAAIwlG,QAAQ,GAAG,iBAAf;;AACA,IAAIpC,cAAc,GAAG5+F,mBAAO,CAAC,sEAAD,CAAP,EAArB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAAS7C,QAAT,CAAkB7e,KAAlB,EAAyB;AACzC,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC9B,WAAO,IAAP;AACA;;AACD,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC9B,WAAO,KAAP;AACA;;AACD,SAAOygH,cAAc,GAAGmC,eAAe,CAAC5iH,KAAD,CAAlB,GAA4B67D,KAAK,CAACv+C,IAAN,CAAWtd,KAAX,MAAsB6iH,QAAvE;AACA,CARD,C;;;;;;;;;;;;ACfa;;AAEb,IAAIhnD,KAAK,GAAGx4D,MAAM,CAACoZ,SAAP,CAAiBY,QAA7B;;AACA,IAAIu+C,UAAU,GAAG/5C,mBAAO,CAAC,wDAAD,CAAP,EAAjB;;AAEA,IAAI+5C,UAAJ,EAAgB;AACf,MAAIknD,QAAQ,GAAG3+G,MAAM,CAACsY,SAAP,CAAiBY,QAAhC;AACA,MAAI0lG,cAAc,GAAG,gBAArB;;AACA,MAAIC,cAAc,GAAG,SAASC,kBAAT,CAA4BjjH,KAA5B,EAAmC;AACvD,QAAI,OAAOA,KAAK,CAAC2I,OAAN,EAAP,KAA2B,QAA/B,EAAyC;AACxC,aAAO,KAAP;AACA;;AACD,WAAOo6G,cAAc,CAAC98F,IAAf,CAAoB68F,QAAQ,CAACxlG,IAAT,CAActd,KAAd,CAApB,CAAP;AACA,GALD;;AAOAyhB,QAAM,CAACC,OAAP,GAAiB,SAASyvB,QAAT,CAAkBnxC,KAAlB,EAAyB;AACzC,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC9B,aAAO,IAAP;AACA;;AACD,QAAI67D,KAAK,CAACv+C,IAAN,CAAWtd,KAAX,MAAsB,iBAA1B,EAA6C;AAC5C,aAAO,KAAP;AACA;;AACD,QAAI;AACH,aAAOgjH,cAAc,CAAChjH,KAAD,CAArB;AACA,KAFD,CAEE,OAAO+pB,CAAP,EAAU;AACX,aAAO,KAAP;AACA;AACD,GAZD;AAaA,CAvBD,MAuBO;AAENtI,QAAM,CAACC,OAAP,GAAiB,SAASyvB,QAAT,CAAkBnxC,KAAlB,EAAyB;AACzC;AACA,WAAO,MAAK,IAAIA,KAAhB;AACA,GAHD;AAIA,C;;;;;;;;;;;;AClCY;;AAEb,IAAI2S,OAAO,GAAGkP,mBAAO,CAAC,gDAAD,CAArB;;AACA,IAAIqgB,oBAAoB,GAAGrgB,mBAAO,CAAC,8EAAD,CAAlC;;AACA,IAAI81C,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AAEA,IAAI6+F,SAAS,GAAG/oD,SAAS,CAAC,2BAAD,CAAzB;;AACA,IAAI8oD,cAAc,GAAG5+F,mBAAO,CAAC,sEAAD,CAAP,EAArB;;AAEA,IAAIkgB,CAAC,GAAG,OAAOC,UAAP,KAAsB,WAAtB,GAAoCC,MAApC,GAA6CD,UAArD;AACA,IAAIkhF,WAAW,GAAGhhF,oBAAoB,EAAtC;;AAEA,IAAII,QAAQ,GAAGq1B,SAAS,CAAC,yBAAD,EAA4B,IAA5B,CAAT,IAA8C,SAASlpD,OAAT,CAAiBG,KAAjB,EAAwB5O,KAAxB,EAA+B;AAC3F,OAAK,IAAIsf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1Q,KAAK,CAACnI,MAA1B,EAAkC6Y,CAAC,IAAI,CAAvC,EAA0C;AACzC,QAAI1Q,KAAK,CAAC0Q,CAAD,CAAL,KAAatf,KAAjB,EAAwB;AACvB,aAAOsf,CAAP;AACA;AACD;;AACD,SAAO,CAAC,CAAR;AACA,CAPD;;AAQA,IAAI6jG,MAAM,GAAGxrD,SAAS,CAAC,wBAAD,CAAtB;AACA,IAAIyrD,SAAS,GAAG,EAAhB;;AACA,IAAIZ,IAAI,GAAG3gG,mBAAO,CAAC,oHAAD,CAAlB;;AACA,IAAIq2C,cAAc,GAAG70D,MAAM,CAAC60D,cAA5B,C,CAA4C;;AAC5C,IAAIuoD,cAAc,IAAI+B,IAAlB,IAA0BtqD,cAA9B,EAA8C;AAC7CvlD,SAAO,CAACuwG,WAAD,EAAc,UAAUG,UAAV,EAAsB;AAC1C,QAAI1nD,GAAG,GAAG,IAAI55B,CAAC,CAACshF,UAAD,CAAL,EAAV;;AACA,QAAIl/G,MAAM,CAACq8G,WAAP,IAAsB7kD,GAA1B,EAA+B;AAC9B,UAAI2nD,KAAK,GAAGprD,cAAc,CAACyD,GAAD,CAA1B;AACA,UAAI2kD,UAAU,GAAGkC,IAAI,CAACc,KAAD,EAAQn/G,MAAM,CAACq8G,WAAf,CAArB;;AACA,UAAI,CAACF,UAAL,EAAiB;AAChB,YAAIiD,UAAU,GAAGrrD,cAAc,CAACorD,KAAD,CAA/B;AACAhD,kBAAU,GAAGkC,IAAI,CAACe,UAAD,EAAap/G,MAAM,CAACq8G,WAApB,CAAjB;AACA;;AACD4C,eAAS,CAACC,UAAD,CAAT,GAAwB/C,UAAU,CAAC59G,GAAnC;AACA;AACD,GAXM,CAAP;AAYA;;AAED,IAAI8gH,cAAc,GAAG,SAASC,iBAAT,CAA2BzjH,KAA3B,EAAkC;AACtD,MAAI0jH,OAAO,GAAG,KAAd;AACA/wG,SAAO,CAACywG,SAAD,EAAY,UAAUO,MAAV,EAAkBN,UAAlB,EAA8B;AAChD,QAAI,CAACK,OAAL,EAAc;AACb,UAAI;AACHA,eAAO,GAAGC,MAAM,CAACrmG,IAAP,CAAYtd,KAAZ,MAAuBqjH,UAAjC;AACA,OAFD,CAEE,OAAOt5F,CAAP,EAAU;AAAE;AAAM;AACpB;AACD,GANM,CAAP;AAOA,SAAO25F,OAAP;AACA,CAVD;;AAYAjiG,MAAM,CAACC,OAAP,GAAiB,SAASkiG,YAAT,CAAsB5jH,KAAtB,EAA6B;AAC7C,MAAI,CAACA,KAAD,IAAU,OAAOA,KAAP,KAAiB,QAA/B,EAAyC;AAAE,WAAO,KAAP;AAAe;;AAC1D,MAAI,CAACygH,cAAD,IAAmB,EAAEt8G,MAAM,CAACq8G,WAAP,IAAsBxgH,KAAxB,CAAvB,EAAuD;AACtD,QAAI6jH,GAAG,GAAGV,MAAM,CAACzC,SAAS,CAAC1gH,KAAD,CAAV,EAAmB,CAAnB,EAAsB,CAAC,CAAvB,CAAhB;AACA,WAAOsiC,QAAQ,CAAC4gF,WAAD,EAAcW,GAAd,CAAR,GAA6B,CAAC,CAArC;AACA;;AACD,MAAI,CAACrB,IAAL,EAAW;AAAE,WAAO,KAAP;AAAe;;AAC5B,SAAOgB,cAAc,CAACxjH,KAAD,CAArB;AACA,CARD,C;;;;;;;;;;;;ACnDa;;AAEb,IAAI8jH,QAAQ,GAAG,OAAOvrG,OAAP,KAAmB,UAAnB,IAAiCA,OAAO,CAACkE,SAAzC,GAAqDlE,OAArD,GAA+D,IAA9E;AACA,IAAIwrG,QAAQ,GAAG,OAAO9iD,OAAP,KAAmB,UAAnB,IAAiCA,OAAO,CAACxkD,SAAzC,GAAqDwkD,OAArD,GAA+D,IAA9E;AAEA,IAAI6gD,QAAJ;;AAEA,IAAI,CAACgC,QAAL,EAAe;AACd;AACAhC,UAAQ,GAAG,SAASkC,SAAT,CAAmB71G,CAAnB,EAAsB;AAChC;AACA,WAAO,KAAP;AACA,GAHD;AAIA;;AAED,IAAIkqD,OAAO,GAAGyrD,QAAQ,GAAGA,QAAQ,CAACrnG,SAAT,CAAmBhE,GAAtB,GAA4B,IAAlD;AACA,IAAIigD,OAAO,GAAGqrD,QAAQ,GAAGA,QAAQ,CAACtnG,SAAT,CAAmBhE,GAAtB,GAA4B,IAAlD;;AACA,IAAI,CAACqpG,QAAD,IAAa,CAACzpD,OAAlB,EAA2B;AAC1B;AACAypD,UAAQ,GAAG,SAASkC,SAAT,CAAmB71G,CAAnB,EAAsB;AAChC;AACA,WAAO,KAAP;AACA,GAHD;AAIA;;AAEDsT,MAAM,CAACC,OAAP,GAAiBogG,QAAQ,IAAI,SAASkC,SAAT,CAAmB71G,CAAnB,EAAsB;AAClD,MAAI,CAACA,CAAD,IAAM,OAAOA,CAAP,KAAa,QAAvB,EAAiC;AAChC,WAAO,KAAP;AACA;;AACD,MAAI;AACHkqD,WAAO,CAAC/6C,IAAR,CAAanP,CAAb,EAAgBkqD,OAAhB;;AACA,QAAIK,OAAJ,EAAa;AACZ,UAAI;AACHA,eAAO,CAACp7C,IAAR,CAAanP,CAAb,EAAgBuqD,OAAhB;AACA,OAFD,CAEE,OAAO3uC,CAAP,EAAU;AACX,eAAO,IAAP;AACA;AACD;;AACD,WAAO5b,CAAC,YAAY21G,QAApB,CATG,CAS2B;AAC9B,GAVD,CAUE,OAAO/5F,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACA,CAhBD,C;;;;;;;;;;;;ACzBa;;AAEb,IAAIqY,YAAY,GAAGvgB,mBAAO,CAAC,4DAAD,CAA1B;;AACA,IAAI81C,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AAEA,IAAIkiG,QAAQ,GAAG3hF,YAAY,CAAC,WAAD,EAAc,IAAd,CAA3B;AAEA,IAAIs2B,OAAO,GAAGf,SAAS,CAAC,uBAAD,EAA0B,IAA1B,CAAvB;;AAEA,IAAIe,OAAJ,EAAa;AACZ,MAAIL,OAAO,GAAGV,SAAS,CAAC,uBAAD,EAA0B,IAA1B,CAAvB;;AAEAl2C,QAAM,CAACC,OAAP,GAAiB,SAASuiG,SAAT,CAAmB91G,CAAnB,EAAsB;AACtC,QAAI,CAACA,CAAD,IAAM,OAAOA,CAAP,KAAa,QAAvB,EAAiC;AAChC,aAAO,KAAP;AACA;;AACD,QAAI;AACHuqD,aAAO,CAACvqD,CAAD,EAAIuqD,OAAJ,CAAP;;AACA,UAAIL,OAAJ,EAAa;AACZ,YAAI;AACHA,iBAAO,CAAClqD,CAAD,EAAIkqD,OAAJ,CAAP;AACA,SAFD,CAEE,OAAOtuC,CAAP,EAAU;AACX,iBAAO,IAAP;AACA;AACD;;AACD,aAAO5b,CAAC,YAAY41G,QAApB,CATG,CAS2B;AAC9B,KAVD,CAUE,OAAOh6F,CAAP,EAAU,CAAE;;AACd,WAAO,KAAP;AACA,GAhBD;AAiBA,CApBD,MAoBO;AACN;AACAtI,QAAM,CAACC,OAAP,GAAiB,SAASuiG,SAAT,CAAmB91G,CAAnB,EAAsB;AACtC;AACA,WAAO,KAAP;AACA,GAHD;AAIA,C;;;;;;;;;;;ACnCD,IAAI3K,GAAG,GAAGqe,mBAAO,CAAC,oDAAD,CAAjB;;AAEA,IAAIqiG,cAAc,GAAG,UAASC,YAAT,EAAuB;AACxC,MAAIC,UAAU,GAAGD,YAAY,CAACrjG,KAAb,CAAmB,GAAnB,CAAjB;;AACA,MAAIsjG,UAAU,CAAC39G,MAAX,IAAqB,CAAzB,EAA4B;AACxB,WAAO29G,UAAU,CAAC/8G,GAAX,EAAP;AACH;;AACD+8G,YAAU,GAAGD,YAAY,CAACrjG,KAAb,CAAmB,GAAnB,CAAb;;AACA,MAAIsjG,UAAU,CAAC39G,MAAX,IAAqB,CAAzB,EAA4B;AACxB,WAAO29G,UAAU,CAAC/8G,GAAX,EAAP;AACH;;AACD,SAAO88G,YAAP;AACH,CAVD;;AAYAziG,OAAO,CAAC+wB,WAAR,GAAsB,UAASD,MAAT,EAAiB;AACnC,MAAI6xE,WAAW,GAAGH,cAAc,CAAC1xE,MAAD,CAAd,CAAuB9hB,WAAvB,EAAlB;;AACA,MAAI2zF,WAAW,IAAI7gH,GAAnB,EAAwB;AACpB,WAAOA,GAAG,CAAC6gH,WAAD,CAAV;AACH;;AACD,SAAO,IAAP;AACH,CAND;;AAQA3iG,OAAO,CAAC4iG,UAAR,GAAqB,UAASrxE,YAAT,EAAuB;AACxCA,cAAY,GAAGA,YAAY,CAACviB,WAAb,EAAf;AACA,MAAI6zF,OAAO,GAAG,EAAd;;AACA,OAAKF,WAAL,IAAoB7gH,GAApB,EAAyB;AACrB,QAAIA,GAAG,CAAC6gH,WAAD,CAAH,KAAqBpxE,YAAzB,EAAuC;AACnCsxE,aAAO,CAACj/G,IAAR,CAAa++G,WAAb;AACH;AACJ;;AACD,SAAOE,OAAP;AACH,CATD,C;;;;;;;;;;;ACtBA;AACA,IAAI/gH,GAAG,GAAG;AACVghH,IAAE,EAAE,KADM;AAEVC,IAAE,EAAE,KAFM;AAGVC,IAAE,EAAE,KAHM;AAIVC,IAAE,EAAE,KAJM;AAKVC,IAAE,EAAE,KALM;AAMVC,IAAE,EAAE,KANM;AAOVC,IAAE,EAAE,KAPM;AAQVC,IAAE,EAAE,KARM;AASVC,IAAE,EAAE,KATM;AAUVC,IAAE,EAAE,KAVM;AAWVC,IAAE,EAAE,KAXM;AAYVC,IAAE,EAAE,KAZM;AAaVC,IAAE,EAAE,KAbM;AAcVC,IAAE,EAAE,KAdM;AAeVC,IAAE,EAAE,KAfM;AAgBVC,IAAE,EAAE,KAhBM;AAiBVC,IAAE,EAAE,KAjBM;AAkBVC,IAAE,EAAE,KAlBM;AAmBVC,IAAE,EAAE,KAnBM;AAoBVC,IAAE,EAAE,KApBM;AAqBVC,IAAE,EAAE,KArBM;AAsBVC,IAAE,EAAE,KAtBM;AAuBVC,IAAE,EAAE,KAvBM;AAwBVC,IAAE,EAAE,KAxBM;AAyBVC,IAAE,EAAE,KAzBM;AA0BVC,IAAE,EAAE,KA1BM;AA2BVC,IAAE,EAAE,KA3BM;AA4BVC,IAAE,EAAE,KA5BM;AA6BVC,IAAE,EAAE,KA7BM;AA8BVC,IAAE,EAAE,KA9BM;AA+BV/mC,IAAE,EAAE,KA/BM;AAgCVgnC,IAAE,EAAE,KAhCM;AAiCVC,IAAE,EAAE,KAjCM;AAkCVC,IAAE,EAAE,KAlCM;AAmCVC,IAAE,EAAE,KAnCM;AAoCVC,IAAE,EAAE,KApCM;AAqCVC,IAAE,EAAE,KArCM;AAsCVC,IAAE,EAAE,KAtCM;AAuCVC,IAAE,EAAE,KAvCM;AAwCVC,IAAE,EAAE,KAxCM;AAyCVC,IAAE,EAAE,KAzCM;AA0CVC,IAAE,EAAE,KA1CM;AA2CVC,IAAE,EAAE,KA3CM;AA4CVC,IAAE,EAAE,KA5CM;AA6CVC,IAAE,EAAE,KA7CM;AA8CVC,IAAE,EAAE,KA9CM;AA+CVC,IAAE,EAAE,KA/CM;AAgDVC,IAAE,EAAE,KAhDM;AAiDVC,IAAE,EAAE,KAjDM;AAkDVC,IAAE,EAAE,KAlDM;AAmDVC,IAAE,EAAE,KAnDM;AAoDVC,IAAE,EAAE,KApDM;AAqDVC,IAAE,EAAE,KArDM;AAsDVC,IAAE,EAAE,KAtDM;AAuDVC,IAAE,EAAE,KAvDM;AAwDVC,IAAE,EAAE,KAxDM;AAyDVC,IAAE,EAAE,KAzDM;AA0DVC,IAAE,EAAE,KA1DM;AA2DVC,IAAE,EAAE,KA3DM;AA4DVC,IAAE,EAAE,KA5DM;AA6DVC,IAAE,EAAE,KA7DM;AA8DVC,IAAE,EAAE,KA9DM;AA+DVC,IAAE,EAAE,KA/DM;AAgEVC,IAAE,EAAE,KAhEM;AAiEVC,IAAE,EAAE,KAjEM;AAkEVC,IAAE,EAAE,KAlEM;AAmEVC,IAAE,EAAE,KAnEM;AAoEVC,IAAE,EAAE,KApEM;AAqEVC,IAAE,EAAE,KArEM;AAsEVC,IAAE,EAAE,KAtEM;AAuEVC,IAAE,EAAE,KAvEM;AAwEVC,IAAE,EAAE,KAxEM;AAyEVC,IAAE,EAAE,KAzEM;AA0EVC,IAAE,EAAE,KA1EM;AA2EVC,IAAE,EAAE,KA3EM;AA4EVC,IAAE,EAAE,KA5EM;AA6EVC,IAAE,EAAE,KA7EM;AA8EVC,IAAE,EAAE,KA9EM;AA+EVC,IAAE,EAAE,KA/EM;AAgFVC,IAAE,EAAE,KAhFM;AAiFVC,IAAE,EAAE,KAjFM;AAkFVC,IAAE,EAAE,KAlFM;AAmFVC,IAAE,EAAE,KAnFM;AAoFVC,IAAE,EAAE,KApFM;AAqFVC,IAAE,EAAE,KArFM;AAsFVC,IAAE,EAAE,KAtFM;AAuFVC,IAAE,EAAE,KAvFM;AAwFVC,IAAE,EAAE,KAxFM;AAyFVC,IAAE,EAAE,KAzFM;AA0FVC,IAAE,EAAE,KA1FM;AA2FVC,IAAE,EAAE,KA3FM;AA4FVC,IAAE,EAAE,KA5FM;AA6FVC,IAAE,EAAE,KA7FM;AA8FVC,IAAE,EAAE,KA9FM;AA+FVC,IAAE,EAAE,KA/FM;AAgGVC,IAAE,EAAE,KAhGM;AAiGVC,IAAE,EAAE,KAjGM;AAkGVzoC,IAAE,EAAE,KAlGM;AAmGV0oC,IAAE,EAAE,KAnGM;AAoGVC,IAAE,EAAE,KApGM;AAqGVC,IAAE,EAAE,KArGM;AAsGVvpB,IAAE,EAAE,KAtGM;AAuGVwpB,IAAE,EAAE,KAvGM;AAwGVC,IAAE,EAAE,KAxGM;AAyGVC,IAAE,EAAE,KAzGM;AA0GVC,IAAE,EAAE,KA1GM;AA2GVC,IAAE,EAAE,KA3GM;AA4GVC,IAAE,EAAE,KA5GM;AA6GVC,IAAE,EAAE,KA7GM;AA8GVC,IAAE,EAAE,KA9GM;AA+GVC,IAAE,EAAE,KA/GM;AAgHVC,IAAE,EAAE,KAhHM;AAiHVC,IAAE,EAAE,KAjHM;AAkHVC,IAAE,EAAE,KAlHM;AAmHVC,IAAE,EAAE,KAnHM;AAoHVC,IAAE,EAAE,KApHM;AAqHVC,IAAE,EAAE,KArHM;AAsHVC,IAAE,EAAE,KAtHM;AAuHVC,IAAE,EAAE,KAvHM;AAwHVC,IAAE,EAAE,KAxHM;AAyHVC,IAAE,EAAE,KAzHM;AA0HVC,IAAE,EAAE,KA1HM;AA2HVC,IAAE,EAAE,KA3HM;AA4HVC,IAAE,EAAE,KA5HM;AA6HVC,IAAE,EAAE,KA7HM;AA8HVC,IAAE,EAAE,KA9HM;AA+HVC,IAAE,EAAE,KA/HM;AAgIVC,IAAE,EAAE,KAhIM;AAiIV3pC,IAAE,EAAE,KAjIM;AAkIV4pC,IAAE,EAAE,KAlIM;AAmIVC,IAAE,EAAE,KAnIM;AAoIVC,IAAE,EAAE,KApIM;AAqIVC,IAAE,EAAE,KArIM;AAsIVC,IAAE,EAAE,KAtIM;AAuIVC,IAAE,EAAE,KAvIM;AAwIVC,IAAE,EAAE,KAxIM;AAyIVC,IAAE,EAAE,KAzIM;AA0IVC,IAAE,EAAE,KA1IM;AA2IVC,IAAE,EAAE,KA3IM;AA4IVC,IAAE,EAAE,KA5IM;AA6IVC,IAAE,EAAE,KA7IM;AA8IVC,IAAE,EAAE,KA9IM;AA+IVC,IAAE,EAAE,KA/IM;AAgJVC,IAAE,EAAE,KAhJM;AAiJVC,IAAE,EAAE,KAjJM;AAkJVC,IAAE,EAAE,KAlJM;AAmJVC,IAAE,EAAE,KAnJM;AAoJVC,IAAE,EAAE,KApJM;AAqJVC,IAAE,EAAE,KArJM;AAsJVC,IAAE,EAAE,KAtJM;AAuJVC,IAAE,EAAE,KAvJM;AAwJVC,IAAE,EAAE,KAxJM;AAyJVC,IAAE,EAAE,KAzJM;AA0JVC,IAAE,EAAE,KA1JM;AA2JVC,IAAE,EAAE,KA3JM;AA4JVC,IAAE,EAAE,KA5JM;AA6JVC,IAAE,EAAE,KA7JM;AA8JVC,IAAE,EAAE,KA9JM;AA+JVC,IAAE,EAAE,KA/JM;AAgKVC,IAAE,EAAE,KAhKM;AAiKVC,IAAE,EAAE,KAjKM;AAkKVC,IAAE,EAAE,KAlKM;AAmKVC,IAAE,EAAE,KAnKM;AAoKVC,IAAE,EAAE,KApKM;AAqKVC,IAAE,EAAE,KArKM;AAsKVC,IAAE,EAAE,KAtKM;AAuKVC,IAAE,EAAE,KAvKM;AAwKVC,IAAE,EAAE,KAxKM;AAyKVC,IAAE,EAAE,KAzKM;AA0KVC,IAAE,EAAE,KA1KM;AA2KVC,IAAE,EAAE,KA3KM;AA4KVC,IAAE,EAAE,KA5KM;AA6KVC,IAAE,EAAE,KA7KM;AA8KVC,IAAE,EAAE,KA9KM;AA+KVC,IAAE,EAAE,KA/KM;AAgLVC,IAAE,EAAE,KAhLM;AAiLVC,IAAE,EAAE,KAjLM;AAkLVC,IAAE,EAAE,KAlLM;AAmLVC,IAAE,EAAE,KAnLM;AAoLVC,IAAE,EAAE,KApLM;AAqLVC,IAAE,EAAE,KArLM;AAsLVC,IAAE,EAAE,KAtLM;AAuLVC,IAAE,EAAE,KAvLM;AAwLVC,IAAE,EAAE,KAxLM;AAyLVC,IAAE,EAAE,KAzLM;AA0LVC,IAAE,EAAE,KA1LM;AA2LVC,IAAE,EAAE,KA3LM;AA4LVC,IAAE,EAAE,KA5LM;AA6LVC,IAAE,EAAE,KA7LM;AA8LVC,IAAE,EAAE,KA9LM;AA+LVC,IAAE,EAAE,KA/LM;AAgMVC,IAAE,EAAE,KAhMM;AAiMVC,IAAE,EAAE,KAjMM;AAkMVC,IAAE,EAAE,KAlMM;AAmMVC,IAAE,EAAE,KAnMM;AAoMVC,IAAE,EAAE,KApMM;AAqMVC,IAAE,EAAE,KArMM;AAsMVC,IAAE,EAAE,KAtMM;AAuMVC,IAAE,EAAE,KAvMM;AAwMVC,IAAE,EAAE,KAxMM;AAyMVC,IAAE,EAAE,KAzMM;AA0MVC,IAAE,EAAE,KA1MM;AA2MVC,IAAE,EAAE,KA3MM;AA4MVC,IAAE,EAAE,KA5MM;AA6MVC,IAAE,EAAE,KA7MM;AA8MVC,IAAE,EAAE,KA9MM;AA+MVC,IAAE,EAAE,KA/MM;AAgNVC,IAAE,EAAE,KAhNM;AAiNVC,IAAE,EAAE,KAjNM;AAkNVC,IAAE,EAAE,KAlNM;AAmNVC,IAAE,EAAE,KAnNM;AAoNVC,IAAE,EAAE,KApNM;AAqNVC,IAAE,EAAE,KArNM;AAsNVrsC,IAAE,EAAE,KAtNM;AAuNVssC,IAAE,EAAE,KAvNM;AAwNVC,IAAE,EAAE,KAxNM;AAyNVnsC,IAAE,EAAE,KAzNM;AA0NVosC,IAAE,EAAE,KA1NM;AA2NVC,IAAE,EAAE,KA3NM;AA4NVC,IAAE,EAAE,KA5NM;AA6NVC,IAAE,EAAE,KA7NM;AA8NVC,IAAE,EAAE,KA9NM;AA+NVC,IAAE,EAAE,KA/NM;AAgOVrsC,IAAE,EAAE,KAhOM;AAiOVE,IAAE,EAAE,KAjOM;AAkOVosC,IAAE,EAAE,KAlOM;AAmOVC,IAAE,EAAE,KAnOM;AAoOVC,IAAE,EAAE,KApOM;AAqOVC,IAAE,EAAE,KArOM;AAsOVC,IAAE,EAAE,KAtOM;AAuOVC,IAAE,EAAE,KAvOM;AAwOVC,IAAE,EAAE,KAxOM;AAyOVC,IAAE,EAAE,KAzOM;AA0OVC,IAAE,EAAE,KA1OM;AA2OVC,IAAE,EAAE,KA3OM;AA4OVC,IAAE,EAAE,KA5OM;AA6OVC,IAAE,EAAE,KA7OM;AA8OVC,IAAE,EAAE,KA9OM;AA+OVC,IAAE,EAAE,KA/OM;AAgPVC,IAAE,EAAE,KAhPM;AAiPVC,IAAE,EAAE,KAjPM;AAkPVC,IAAE,EAAE,KAlPM;AAmPVC,IAAE,EAAE,KAnPM;AAoPVC,IAAE,EAAE,KApPM;AAqPVC,IAAE,EAAE,KArPM;AAsPVC,IAAE,EAAE,KAtPM;AAuPVC,IAAE,EAAE,KAvPM;AAwPVC,IAAE,EAAE;AAxPM,CAAV;AA2PA9xG,MAAM,CAACC,OAAP,GAAiBle,GAAjB,C;;;;;;;;;;;;CC1PA;;AACA,MAAMgwH,OAAO,GAAG3xG,mBAAO,CAAC,yEAAD,CAAvB;;AAEA,MAAM4xG,GAAG,GAAGtvH,MAAM,CAAC,KAAD,CAAlB;AACA,MAAMuvH,MAAM,GAAGvvH,MAAM,CAAC,QAAD,CAArB;AACA,MAAMwvH,iBAAiB,GAAGxvH,MAAM,CAAC,kBAAD,CAAhC;AACA,MAAMyvH,WAAW,GAAGzvH,MAAM,CAAC,YAAD,CAA1B;AACA,MAAM0vH,OAAO,GAAG1vH,MAAM,CAAC,QAAD,CAAtB;AACA,MAAM2vH,OAAO,GAAG3vH,MAAM,CAAC,SAAD,CAAtB;AACA,MAAM4vH,iBAAiB,GAAG5vH,MAAM,CAAC,gBAAD,CAAhC;AACA,MAAM6vH,QAAQ,GAAG7vH,MAAM,CAAC,SAAD,CAAvB;AACA,MAAM8vH,KAAK,GAAG9vH,MAAM,CAAC,OAAD,CAApB;AACA,MAAM+vH,iBAAiB,GAAG/vH,MAAM,CAAC,gBAAD,CAAhC;;AAEA,MAAMgwH,WAAW,GAAG,MAAM,CAA1B,C,CAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,QAAN,CAAe;AACb90H,aAAW,CAAEiC,OAAF,EAAW;AACpB,QAAI,OAAOA,OAAP,KAAmB,QAAvB,EACEA,OAAO,GAAG;AAAE2rB,SAAG,EAAE3rB;AAAP,KAAV;AAEF,QAAI,CAACA,OAAL,EACEA,OAAO,GAAG,EAAV;AAEF,QAAIA,OAAO,CAAC2rB,GAAR,KAAgB,OAAO3rB,OAAO,CAAC2rB,GAAf,KAAuB,QAAvB,IAAmC3rB,OAAO,CAAC2rB,GAAR,GAAc,CAAjE,CAAJ,EACE,MAAM,IAAItd,SAAJ,CAAc,mCAAd,CAAN,CARkB,CASpB;;AACA,UAAMsd,GAAG,GAAG,KAAKumG,GAAL,IAAYlyH,OAAO,CAAC2rB,GAAR,IAAei6E,QAAvC;AAEA,UAAMktB,EAAE,GAAG9yH,OAAO,CAACkF,MAAR,IAAkB0tH,WAA7B;AACA,SAAKR,iBAAL,IAA2B,OAAOU,EAAP,KAAc,UAAf,GAA6BF,WAA7B,GAA2CE,EAArE;AACA,SAAKT,WAAL,IAAoBryH,OAAO,CAAC+yH,KAAR,IAAiB,KAArC;AACA,QAAI/yH,OAAO,CAACgzH,MAAR,IAAkB,OAAOhzH,OAAO,CAACgzH,MAAf,KAA0B,QAAhD,EACE,MAAM,IAAI3kH,SAAJ,CAAc,yBAAd,CAAN;AACF,SAAKikH,OAAL,IAAgBtyH,OAAO,CAACgzH,MAAR,IAAkB,CAAlC;AACA,SAAKT,OAAL,IAAgBvyH,OAAO,CAACizH,OAAxB;AACA,SAAKT,iBAAL,IAA0BxyH,OAAO,CAACkzH,cAAR,IAA0B,KAApD;AACA,SAAKP,iBAAL,IAA0B3yH,OAAO,CAACmzH,cAAR,IAA0B,KAApD;AACA,SAAK/uF,KAAL;AACD,GAvBY,CAyBb;;;AACO,MAAHzY,GAAG,CAAEynG,EAAF,EAAM;AACX,QAAI,OAAOA,EAAP,KAAc,QAAd,IAA0BA,EAAE,GAAG,CAAnC,EACE,MAAM,IAAI/kH,SAAJ,CAAc,mCAAd,CAAN;AAEF,SAAK6jH,GAAL,IAAYkB,EAAE,IAAIxtB,QAAlB;AACA7+D,QAAI,CAAC,IAAD,CAAJ;AACD;;AACM,MAAHpb,GAAG,GAAI;AACT,WAAO,KAAKumG,GAAL,CAAP;AACD;;AAEa,MAAVmB,UAAU,CAAEA,UAAF,EAAc;AAC1B,SAAKhB,WAAL,IAAoB,CAAC,CAACgB,UAAtB;AACD;;AACa,MAAVA,UAAU,GAAI;AAChB,WAAO,KAAKhB,WAAL,CAAP;AACD;;AAES,MAANW,MAAM,CAAEM,EAAF,EAAM;AACd,QAAI,OAAOA,EAAP,KAAc,QAAlB,EACE,MAAM,IAAIjlH,SAAJ,CAAc,sCAAd,CAAN;AAEF,SAAKikH,OAAL,IAAgBgB,EAAhB;AACAvsF,QAAI,CAAC,IAAD,CAAJ;AACD;;AACS,MAANisF,MAAM,GAAI;AACZ,WAAO,KAAKV,OAAL,CAAP;AACD,GArDY,CAuDb;;;AACoB,MAAhBiB,gBAAgB,CAAEC,EAAF,EAAM;AACxB,QAAI,OAAOA,EAAP,KAAc,UAAlB,EACEA,EAAE,GAAGZ,WAAL;;AAEF,QAAIY,EAAE,KAAK,KAAKpB,iBAAL,CAAX,EAAoC;AAClC,WAAKA,iBAAL,IAA0BoB,EAA1B;AACA,WAAKrB,MAAL,IAAe,CAAf;AACA,WAAKM,QAAL,EAAerhH,OAAf,CAAuBqiH,GAAG,IAAI;AAC5BA,WAAG,CAACvuH,MAAJ,GAAa,KAAKktH,iBAAL,EAAwBqB,GAAG,CAACh1H,KAA5B,EAAmCg1H,GAAG,CAACz/G,GAAvC,CAAb;AACA,aAAKm+G,MAAL,KAAgBsB,GAAG,CAACvuH,MAApB;AACD,OAHD;AAID;;AACD6hC,QAAI,CAAC,IAAD,CAAJ;AACD;;AACmB,MAAhBwsF,gBAAgB,GAAI;AAAE,WAAO,KAAKnB,iBAAL,CAAP;AAAgC;;AAEhD,MAANltH,MAAM,GAAI;AAAE,WAAO,KAAKitH,MAAL,CAAP;AAAqB;;AACxB,MAATuB,SAAS,GAAI;AAAE,WAAO,KAAKjB,QAAL,EAAevtH,MAAtB;AAA8B;;AAEjDyuH,UAAQ,CAAEjsH,EAAF,EAAMksH,KAAN,EAAa;AACnBA,SAAK,GAAGA,KAAK,IAAI,IAAjB;;AACA,SAAK,IAAIC,MAAM,GAAG,KAAKpB,QAAL,EAAeqB,IAAjC,EAAuCD,MAAM,KAAK,IAAlD,GAAyD;AACvD,YAAMz0H,IAAI,GAAGy0H,MAAM,CAACz0H,IAApB;AACA20H,iBAAW,CAAC,IAAD,EAAOrsH,EAAP,EAAWmsH,MAAX,EAAmBD,KAAnB,CAAX;AACAC,YAAM,GAAGz0H,IAAT;AACD;AACF;;AAEDgS,SAAO,CAAE1J,EAAF,EAAMksH,KAAN,EAAa;AAClBA,SAAK,GAAGA,KAAK,IAAI,IAAjB;;AACA,SAAK,IAAIC,MAAM,GAAG,KAAKpB,QAAL,EAAerqD,IAAjC,EAAuCyrD,MAAM,KAAK,IAAlD,GAAyD;AACvD,YAAMr1H,IAAI,GAAGq1H,MAAM,CAACr1H,IAApB;AACAu1H,iBAAW,CAAC,IAAD,EAAOrsH,EAAP,EAAWmsH,MAAX,EAAmBD,KAAnB,CAAX;AACAC,YAAM,GAAGr1H,IAAT;AACD;AACF;;AAEDuV,MAAI,GAAI;AACN,WAAO,KAAK0+G,QAAL,EAAe3vH,OAAf,GAAyBb,GAAzB,CAA6BoxB,CAAC,IAAIA,CAAC,CAACrf,GAApC,CAAP;AACD;;AAEDhB,QAAM,GAAI;AACR,WAAO,KAAKy/G,QAAL,EAAe3vH,OAAf,GAAyBb,GAAzB,CAA6BoxB,CAAC,IAAIA,CAAC,CAAC50B,KAApC,CAAP;AACD;;AAED2lC,OAAK,GAAI;AACP,QAAI,KAAKmuF,OAAL,KACA,KAAKE,QAAL,CADA,IAEA,KAAKA,QAAL,EAAevtH,MAFnB,EAE2B;AACzB,WAAKutH,QAAL,EAAerhH,OAAf,CAAuBqiH,GAAG,IAAI,KAAKlB,OAAL,EAAckB,GAAG,CAACz/G,GAAlB,EAAuBy/G,GAAG,CAACh1H,KAA3B,CAA9B;AACD;;AAED,SAAKi0H,KAAL,IAAc,IAAI3/G,GAAJ,EAAd,CAPO,CAOiB;;AACxB,SAAK0/G,QAAL,IAAiB,IAAIR,OAAJ,EAAjB,CARO,CAQwB;;AAC/B,SAAKE,MAAL,IAAe,CAAf,CATO,CASU;AAClB;;AAED6B,MAAI,GAAI;AACN,WAAO,KAAKvB,QAAL,EAAexwH,GAAf,CAAmBwxH,GAAG,IAC3BQ,OAAO,CAAC,IAAD,EAAOR,GAAP,CAAP,GAAqB,KAArB,GAA6B;AAC3BpgG,OAAC,EAAEogG,GAAG,CAACz/G,GADoB;AAE3B60B,OAAC,EAAE4qF,GAAG,CAACh1H,KAFoB;AAG3B+pB,OAAC,EAAEirG,GAAG,CAAChmH,GAAJ,IAAWgmH,GAAG,CAACT,MAAJ,IAAc,CAAzB;AAHwB,KADxB,EAKFlwH,OALE,GAKQ6C,MALR,CAKeswC,CAAC,IAAIA,CALpB,CAAP;AAMD;;AAEDi+E,SAAO,GAAI;AACT,WAAO,KAAKzB,QAAL,CAAP;AACD;;AAED/tH,KAAG,CAAEsP,GAAF,EAAOvV,KAAP,EAAcu0H,MAAd,EAAsB;AACvBA,UAAM,GAAGA,MAAM,IAAI,KAAKV,OAAL,CAAnB;AAEA,QAAIU,MAAM,IAAI,OAAOA,MAAP,KAAkB,QAAhC,EACE,MAAM,IAAI3kH,SAAJ,CAAc,yBAAd,CAAN;AAEF,UAAMZ,GAAG,GAAGulH,MAAM,GAAG3pH,IAAI,CAACoE,GAAL,EAAH,GAAgB,CAAlC;AACA,UAAMmjB,GAAG,GAAG,KAAKwhG,iBAAL,EAAwB3zH,KAAxB,EAA+BuV,GAA/B,CAAZ;;AAEA,QAAI,KAAK0+G,KAAL,EAAYx7G,GAAZ,CAAgBlD,GAAhB,CAAJ,EAA0B;AACxB,UAAI4c,GAAG,GAAG,KAAKshG,GAAL,CAAV,EAAqB;AACnBxlF,WAAG,CAAC,IAAD,EAAO,KAAKgmF,KAAL,EAAYvxH,GAAZ,CAAgB6S,GAAhB,CAAP,CAAH;AACA,eAAO,KAAP;AACD;;AAED,YAAM8e,IAAI,GAAG,KAAK4/F,KAAL,EAAYvxH,GAAZ,CAAgB6S,GAAhB,CAAb;AACA,YAAMoO,IAAI,GAAG0Q,IAAI,CAACr0B,KAAlB,CAPwB,CASxB;AACA;;AACA,UAAI,KAAK8zH,OAAL,CAAJ,EAAmB;AACjB,YAAI,CAAC,KAAKC,iBAAL,CAAL,EACE,KAAKD,OAAL,EAAcv+G,GAAd,EAAmBoO,IAAI,CAAC3jB,KAAxB;AACH;;AAED2jB,UAAI,CAAC3U,GAAL,GAAWA,GAAX;AACA2U,UAAI,CAAC4wG,MAAL,GAAcA,MAAd;AACA5wG,UAAI,CAAC3jB,KAAL,GAAaA,KAAb;AACA,WAAK0zH,MAAL,KAAgBvhG,GAAG,GAAGxO,IAAI,CAACld,MAA3B;AACAkd,UAAI,CAACld,MAAL,GAAc0rB,GAAd;AACA,WAAKzvB,GAAL,CAAS6S,GAAT;AACA+yB,UAAI,CAAC,IAAD,CAAJ;AACA,aAAO,IAAP;AACD;;AAED,UAAM0sF,GAAG,GAAG,IAAIU,KAAJ,CAAUngH,GAAV,EAAevV,KAAf,EAAsBmyB,GAAtB,EAA2BnjB,GAA3B,EAAgCulH,MAAhC,CAAZ,CAnCuB,CAqCvB;;AACA,QAAIS,GAAG,CAACvuH,MAAJ,GAAa,KAAKgtH,GAAL,CAAjB,EAA4B;AAC1B,UAAI,KAAKK,OAAL,CAAJ,EACE,KAAKA,OAAL,EAAcv+G,GAAd,EAAmBvV,KAAnB;AAEF,aAAO,KAAP;AACD;;AAED,SAAK0zH,MAAL,KAAgBsB,GAAG,CAACvuH,MAApB;AACA,SAAKutH,QAAL,EAAepoH,OAAf,CAAuBopH,GAAvB;AACA,SAAKf,KAAL,EAAYhuH,GAAZ,CAAgBsP,GAAhB,EAAqB,KAAKy+G,QAAL,EAAerqD,IAApC;AACArhC,QAAI,CAAC,IAAD,CAAJ;AACA,WAAO,IAAP;AACD;;AAED7vB,KAAG,CAAElD,GAAF,EAAO;AACR,QAAI,CAAC,KAAK0+G,KAAL,EAAYx7G,GAAZ,CAAgBlD,GAAhB,CAAL,EAA2B,OAAO,KAAP;AAC3B,UAAMy/G,GAAG,GAAG,KAAKf,KAAL,EAAYvxH,GAAZ,CAAgB6S,GAAhB,EAAqBvV,KAAjC;AACA,WAAO,CAACw1H,OAAO,CAAC,IAAD,EAAOR,GAAP,CAAf;AACD;;AAEDtyH,KAAG,CAAE6S,GAAF,EAAO;AACR,WAAO7S,GAAG,CAAC,IAAD,EAAO6S,GAAP,EAAY,IAAZ,CAAV;AACD;;AAEDkjE,MAAI,CAAEljE,GAAF,EAAO;AACT,WAAO7S,GAAG,CAAC,IAAD,EAAO6S,GAAP,EAAY,KAAZ,CAAV;AACD;;AAEDlO,KAAG,GAAI;AACL,UAAMgtB,IAAI,GAAG,KAAK2/F,QAAL,EAAeqB,IAA5B;AACA,QAAI,CAAChhG,IAAL,EACE,OAAO,IAAP;AAEF4Z,OAAG,CAAC,IAAD,EAAO5Z,IAAP,CAAH;AACA,WAAOA,IAAI,CAACr0B,KAAZ;AACD;;AAEDiuC,KAAG,CAAE14B,GAAF,EAAO;AACR04B,OAAG,CAAC,IAAD,EAAO,KAAKgmF,KAAL,EAAYvxH,GAAZ,CAAgB6S,GAAhB,CAAP,CAAH;AACD;;AAEDk5D,MAAI,CAAE9S,GAAF,EAAO;AACT;AACA,SAAKh2B,KAAL;AAEA,UAAM32B,GAAG,GAAGpE,IAAI,CAACoE,GAAL,EAAZ,CAJS,CAKT;;AACA,SAAK,IAAIkvB,CAAC,GAAGy9B,GAAG,CAACl1D,MAAJ,GAAa,CAA1B,EAA6By3B,CAAC,IAAI,CAAlC,EAAqCA,CAAC,EAAtC,EAA0C;AACxC,YAAM82F,GAAG,GAAGr5D,GAAG,CAACz9B,CAAD,CAAf;AACA,YAAMy3F,SAAS,GAAGX,GAAG,CAACjrG,CAAJ,IAAS,CAA3B;AACA,UAAI4rG,SAAS,KAAK,CAAlB,EACE;AACA,aAAK1vH,GAAL,CAAS+uH,GAAG,CAACpgG,CAAb,EAAgBogG,GAAG,CAAC5qF,CAApB,EAFF,KAGK;AACH,cAAMmqF,MAAM,GAAGoB,SAAS,GAAG3mH,GAA3B,CADG,CAEH;;AACA,YAAIulH,MAAM,GAAG,CAAb,EAAgB;AACd,eAAKtuH,GAAL,CAAS+uH,GAAG,CAACpgG,CAAb,EAAgBogG,GAAG,CAAC5qF,CAApB,EAAuBmqF,MAAvB;AACD;AACF;AACF;AACF;;AAEDqB,OAAK,GAAI;AACP,SAAK3B,KAAL,EAAYthH,OAAZ,CAAoB,CAAC3S,KAAD,EAAQuV,GAAR,KAAgB7S,GAAG,CAAC,IAAD,EAAO6S,GAAP,EAAY,KAAZ,CAAvC;AACD;;AArOY;;AAwOf,MAAM7S,GAAG,GAAG,CAAC0jB,IAAD,EAAO7Q,GAAP,EAAYsgH,KAAZ,KAAsB;AAChC,QAAMxhG,IAAI,GAAGjO,IAAI,CAAC6tG,KAAD,CAAJ,CAAYvxH,GAAZ,CAAgB6S,GAAhB,CAAb;;AACA,MAAI8e,IAAJ,EAAU;AACR,UAAM2gG,GAAG,GAAG3gG,IAAI,CAACr0B,KAAjB;;AACA,QAAIw1H,OAAO,CAACpvG,IAAD,EAAO4uG,GAAP,CAAX,EAAwB;AACtB/mF,SAAG,CAAC7nB,IAAD,EAAOiO,IAAP,CAAH;AACA,UAAI,CAACjO,IAAI,CAACwtG,WAAD,CAAT,EACE,OAAOn0H,SAAP;AACH,KAJD,MAIO;AACL,UAAIo2H,KAAJ,EAAW;AACT,YAAIzvG,IAAI,CAAC8tG,iBAAD,CAAR,EACE7/F,IAAI,CAACr0B,KAAL,CAAWgP,GAAX,GAAiBpE,IAAI,CAACoE,GAAL,EAAjB;AACFoX,YAAI,CAAC4tG,QAAD,CAAJ,CAAe8B,WAAf,CAA2BzhG,IAA3B;AACD;AACF;;AACD,WAAO2gG,GAAG,CAACh1H,KAAX;AACD;AACF,CAjBD;;AAmBA,MAAMw1H,OAAO,GAAG,CAACpvG,IAAD,EAAO4uG,GAAP,KAAe;AAC7B,MAAI,CAACA,GAAD,IAAS,CAACA,GAAG,CAACT,MAAL,IAAe,CAACnuG,IAAI,CAACytG,OAAD,CAAjC,EACE,OAAO,KAAP;AAEF,QAAM5kH,IAAI,GAAGrE,IAAI,CAACoE,GAAL,KAAagmH,GAAG,CAAChmH,GAA9B;AACA,SAAOgmH,GAAG,CAACT,MAAJ,GAAatlH,IAAI,GAAG+lH,GAAG,CAACT,MAAxB,GACHnuG,IAAI,CAACytG,OAAD,CAAJ,IAAkB5kH,IAAI,GAAGmX,IAAI,CAACytG,OAAD,CADjC;AAED,CAPD;;AASA,MAAMvrF,IAAI,GAAGliB,IAAI,IAAI;AACnB,MAAIA,IAAI,CAACstG,MAAD,CAAJ,GAAettG,IAAI,CAACqtG,GAAD,CAAvB,EAA8B;AAC5B,SAAK,IAAI2B,MAAM,GAAGhvG,IAAI,CAAC4tG,QAAD,CAAJ,CAAeqB,IAAjC,EACEjvG,IAAI,CAACstG,MAAD,CAAJ,GAAettG,IAAI,CAACqtG,GAAD,CAAnB,IAA4B2B,MAAM,KAAK,IADzC,GACgD;AAC9C;AACA;AACA;AACA,YAAMz0H,IAAI,GAAGy0H,MAAM,CAACz0H,IAApB;AACAstC,SAAG,CAAC7nB,IAAD,EAAOgvG,MAAP,CAAH;AACAA,YAAM,GAAGz0H,IAAT;AACD;AACF;AACF,CAZD;;AAcA,MAAMstC,GAAG,GAAG,CAAC7nB,IAAD,EAAOiO,IAAP,KAAgB;AAC1B,MAAIA,IAAJ,EAAU;AACR,UAAM2gG,GAAG,GAAG3gG,IAAI,CAACr0B,KAAjB;AACA,QAAIomB,IAAI,CAAC0tG,OAAD,CAAR,EACE1tG,IAAI,CAAC0tG,OAAD,CAAJ,CAAckB,GAAG,CAACz/G,GAAlB,EAAuBy/G,GAAG,CAACh1H,KAA3B;AAEFomB,QAAI,CAACstG,MAAD,CAAJ,IAAgBsB,GAAG,CAACvuH,MAApB;AACA2f,QAAI,CAAC6tG,KAAD,CAAJ,CAAYtpG,MAAZ,CAAmBqqG,GAAG,CAACz/G,GAAvB;AACA6Q,QAAI,CAAC4tG,QAAD,CAAJ,CAAe+B,UAAf,CAA0B1hG,IAA1B;AACD;AACF,CAVD;;AAYA,MAAMqhG,KAAN,CAAY;AACVp2H,aAAW,CAAEiW,GAAF,EAAOvV,KAAP,EAAcyG,MAAd,EAAsBuI,GAAtB,EAA2BulH,MAA3B,EAAmC;AAC5C,SAAKh/G,GAAL,GAAWA,GAAX;AACA,SAAKvV,KAAL,GAAaA,KAAb;AACA,SAAKyG,MAAL,GAAcA,MAAd;AACA,SAAKuI,GAAL,GAAWA,GAAX;AACA,SAAKulH,MAAL,GAAcA,MAAM,IAAI,CAAxB;AACD;;AAPS;;AAUZ,MAAMe,WAAW,GAAG,CAAClvG,IAAD,EAAOnd,EAAP,EAAWorB,IAAX,EAAiB8gG,KAAjB,KAA2B;AAC7C,MAAIH,GAAG,GAAG3gG,IAAI,CAACr0B,KAAf;;AACA,MAAIw1H,OAAO,CAACpvG,IAAD,EAAO4uG,GAAP,CAAX,EAAwB;AACtB/mF,OAAG,CAAC7nB,IAAD,EAAOiO,IAAP,CAAH;AACA,QAAI,CAACjO,IAAI,CAACwtG,WAAD,CAAT,EACEoB,GAAG,GAAGv1H,SAAN;AACH;;AACD,MAAIu1H,GAAJ,EACE/rH,EAAE,CAACqU,IAAH,CAAQ63G,KAAR,EAAeH,GAAG,CAACh1H,KAAnB,EAA0Bg1H,GAAG,CAACz/G,GAA9B,EAAmC6Q,IAAnC;AACH,CATD;;AAWA3E,MAAM,CAACC,OAAP,GAAiB0yG,QAAjB,C;;;;;;;;;;;;AC7UA;;AACA3yG,MAAM,CAACC,OAAP,GAAiB,UAAU8xG,OAAV,EAAmB;AAClCA,SAAO,CAAC/2G,SAAR,CAAkBtY,MAAM,CAACvC,QAAzB,IAAqC,aAAa;AAChD,SAAK,IAAIwzH,MAAM,GAAG,KAAKzrD,IAAvB,EAA6ByrD,MAA7B,EAAqCA,MAAM,GAAGA,MAAM,CAACr1H,IAArD,EAA2D;AACzD,YAAMq1H,MAAM,CAACp1H,KAAb;AACD;AACF,GAJD;AAKD,CAND,C;;;;;;;;;;;;ACDA;;AACAyhB,MAAM,CAACC,OAAP,GAAiB8xG,OAAjB;AAEAA,OAAO,CAACwC,IAAR,GAAeA,IAAf;AACAxC,OAAO,CAAC7wG,MAAR,GAAiB6wG,OAAjB;;AAEA,SAASA,OAAT,CAAkBryG,IAAlB,EAAwB;AACtB,MAAIiF,IAAI,GAAG,IAAX;;AACA,MAAI,EAAEA,IAAI,YAAYotG,OAAlB,CAAJ,EAAgC;AAC9BptG,QAAI,GAAG,IAAIotG,OAAJ,EAAP;AACD;;AAEDptG,MAAI,CAACivG,IAAL,GAAY,IAAZ;AACAjvG,MAAI,CAACujD,IAAL,GAAY,IAAZ;AACAvjD,MAAI,CAAC3f,MAAL,GAAc,CAAd;;AAEA,MAAI0a,IAAI,IAAI,OAAOA,IAAI,CAACxO,OAAZ,KAAwB,UAApC,EAAgD;AAC9CwO,QAAI,CAACxO,OAAL,CAAa,UAAUgR,IAAV,EAAgB;AAC3ByC,UAAI,CAAC9gB,IAAL,CAAUqe,IAAV;AACD,KAFD;AAGD,GAJD,MAIO,IAAIhU,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AAC/B,SAAK,IAAI6Y,CAAC,GAAG,CAAR,EAAW4e,CAAC,GAAGvuB,SAAS,CAAClJ,MAA9B,EAAsC6Y,CAAC,GAAG4e,CAA1C,EAA6C5e,CAAC,EAA9C,EAAkD;AAChD8G,UAAI,CAAC9gB,IAAL,CAAUqK,SAAS,CAAC2P,CAAD,CAAnB;AACD;AACF;;AAED,SAAO8G,IAAP;AACD;;AAEDotG,OAAO,CAAC/2G,SAAR,CAAkBs5G,UAAlB,GAA+B,UAAU1hG,IAAV,EAAgB;AAC7C,MAAIA,IAAI,CAAClT,IAAL,KAAc,IAAlB,EAAwB;AACtB,UAAM,IAAIlc,KAAJ,CAAU,kDAAV,CAAN;AACD;;AAED,MAAIlF,IAAI,GAAGs0B,IAAI,CAACt0B,IAAhB;AACA,MAAIY,IAAI,GAAG0zB,IAAI,CAAC1zB,IAAhB;;AAEA,MAAIZ,IAAJ,EAAU;AACRA,QAAI,CAACY,IAAL,GAAYA,IAAZ;AACD;;AAED,MAAIA,IAAJ,EAAU;AACRA,QAAI,CAACZ,IAAL,GAAYA,IAAZ;AACD;;AAED,MAAIs0B,IAAI,KAAK,KAAKs1C,IAAlB,EAAwB;AACtB,SAAKA,IAAL,GAAY5pE,IAAZ;AACD;;AACD,MAAIs0B,IAAI,KAAK,KAAKghG,IAAlB,EAAwB;AACtB,SAAKA,IAAL,GAAY10H,IAAZ;AACD;;AAED0zB,MAAI,CAAClT,IAAL,CAAU1a,MAAV;AACA4tB,MAAI,CAACt0B,IAAL,GAAY,IAAZ;AACAs0B,MAAI,CAAC1zB,IAAL,GAAY,IAAZ;AACA0zB,MAAI,CAAClT,IAAL,GAAY,IAAZ;AAEA,SAAOphB,IAAP;AACD,CA7BD;;AA+BAyzH,OAAO,CAAC/2G,SAAR,CAAkBq5G,WAAlB,GAAgC,UAAUzhG,IAAV,EAAgB;AAC9C,MAAIA,IAAI,KAAK,KAAKs1C,IAAlB,EAAwB;AACtB;AACD;;AAED,MAAIt1C,IAAI,CAAClT,IAAT,EAAe;AACbkT,QAAI,CAAClT,IAAL,CAAU40G,UAAV,CAAqB1hG,IAArB;AACD;;AAED,MAAIs1C,IAAI,GAAG,KAAKA,IAAhB;AACAt1C,MAAI,CAAClT,IAAL,GAAY,IAAZ;AACAkT,MAAI,CAACt0B,IAAL,GAAY4pE,IAAZ;;AACA,MAAIA,IAAJ,EAAU;AACRA,QAAI,CAAChpE,IAAL,GAAY0zB,IAAZ;AACD;;AAED,OAAKs1C,IAAL,GAAYt1C,IAAZ;;AACA,MAAI,CAAC,KAAKghG,IAAV,EAAgB;AACd,SAAKA,IAAL,GAAYhhG,IAAZ;AACD;;AACD,OAAK5tB,MAAL;AACD,CArBD;;AAuBA+sH,OAAO,CAAC/2G,SAAR,CAAkBw5G,QAAlB,GAA6B,UAAU5hG,IAAV,EAAgB;AAC3C,MAAIA,IAAI,KAAK,KAAKghG,IAAlB,EAAwB;AACtB;AACD;;AAED,MAAIhhG,IAAI,CAAClT,IAAT,EAAe;AACbkT,QAAI,CAAClT,IAAL,CAAU40G,UAAV,CAAqB1hG,IAArB;AACD;;AAED,MAAIghG,IAAI,GAAG,KAAKA,IAAhB;AACAhhG,MAAI,CAAClT,IAAL,GAAY,IAAZ;AACAkT,MAAI,CAAC1zB,IAAL,GAAY00H,IAAZ;;AACA,MAAIA,IAAJ,EAAU;AACRA,QAAI,CAACt1H,IAAL,GAAYs0B,IAAZ;AACD;;AAED,OAAKghG,IAAL,GAAYhhG,IAAZ;;AACA,MAAI,CAAC,KAAKs1C,IAAV,EAAgB;AACd,SAAKA,IAAL,GAAYt1C,IAAZ;AACD;;AACD,OAAK5tB,MAAL;AACD,CArBD;;AAuBA+sH,OAAO,CAAC/2G,SAAR,CAAkBnX,IAAlB,GAAyB,YAAY;AACnC,OAAK,IAAIga,CAAC,GAAG,CAAR,EAAW4e,CAAC,GAAGvuB,SAAS,CAAClJ,MAA9B,EAAsC6Y,CAAC,GAAG4e,CAA1C,EAA6C5e,CAAC,EAA9C,EAAkD;AAChDha,QAAI,CAAC,IAAD,EAAOqK,SAAS,CAAC2P,CAAD,CAAhB,CAAJ;AACD;;AACD,SAAO,KAAK7Y,MAAZ;AACD,CALD;;AAOA+sH,OAAO,CAAC/2G,SAAR,CAAkB7Q,OAAlB,GAA4B,YAAY;AACtC,OAAK,IAAI0T,CAAC,GAAG,CAAR,EAAW4e,CAAC,GAAGvuB,SAAS,CAAClJ,MAA9B,EAAsC6Y,CAAC,GAAG4e,CAA1C,EAA6C5e,CAAC,EAA9C,EAAkD;AAChD1T,WAAO,CAAC,IAAD,EAAO+D,SAAS,CAAC2P,CAAD,CAAhB,CAAP;AACD;;AACD,SAAO,KAAK7Y,MAAZ;AACD,CALD;;AAOA+sH,OAAO,CAAC/2G,SAAR,CAAkBpV,GAAlB,GAAwB,YAAY;AAClC,MAAI,CAAC,KAAKguH,IAAV,EAAgB;AACd,WAAO51H,SAAP;AACD;;AAED,MAAIy2H,GAAG,GAAG,KAAKb,IAAL,CAAUr1H,KAApB;AACA,OAAKq1H,IAAL,GAAY,KAAKA,IAAL,CAAU10H,IAAtB;;AACA,MAAI,KAAK00H,IAAT,EAAe;AACb,SAAKA,IAAL,CAAUt1H,IAAV,GAAiB,IAAjB;AACD,GAFD,MAEO;AACL,SAAK4pE,IAAL,GAAY,IAAZ;AACD;;AACD,OAAKljE,MAAL;AACA,SAAOyvH,GAAP;AACD,CAdD;;AAgBA1C,OAAO,CAAC/2G,SAAR,CAAkBtV,KAAlB,GAA0B,YAAY;AACpC,MAAI,CAAC,KAAKwiE,IAAV,EAAgB;AACd,WAAOlqE,SAAP;AACD;;AAED,MAAIy2H,GAAG,GAAG,KAAKvsD,IAAL,CAAU3pE,KAApB;AACA,OAAK2pE,IAAL,GAAY,KAAKA,IAAL,CAAU5pE,IAAtB;;AACA,MAAI,KAAK4pE,IAAT,EAAe;AACb,SAAKA,IAAL,CAAUhpE,IAAV,GAAiB,IAAjB;AACD,GAFD,MAEO;AACL,SAAK00H,IAAL,GAAY,IAAZ;AACD;;AACD,OAAK5uH,MAAL;AACA,SAAOyvH,GAAP;AACD,CAdD;;AAgBA1C,OAAO,CAAC/2G,SAAR,CAAkB9J,OAAlB,GAA4B,UAAU1J,EAAV,EAAcksH,KAAd,EAAqB;AAC/CA,OAAK,GAAGA,KAAK,IAAI,IAAjB;;AACA,OAAK,IAAIC,MAAM,GAAG,KAAKzrD,IAAlB,EAAwBrqD,CAAC,GAAG,CAAjC,EAAoC81G,MAAM,KAAK,IAA/C,EAAqD91G,CAAC,EAAtD,EAA0D;AACxDrW,MAAE,CAACqU,IAAH,CAAQ63G,KAAR,EAAeC,MAAM,CAACp1H,KAAtB,EAA6Bsf,CAA7B,EAAgC,IAAhC;AACA81G,UAAM,GAAGA,MAAM,CAACr1H,IAAhB;AACD;AACF,CAND;;AAQAyzH,OAAO,CAAC/2G,SAAR,CAAkB05G,cAAlB,GAAmC,UAAUltH,EAAV,EAAcksH,KAAd,EAAqB;AACtDA,OAAK,GAAGA,KAAK,IAAI,IAAjB;;AACA,OAAK,IAAIC,MAAM,GAAG,KAAKC,IAAlB,EAAwB/1G,CAAC,GAAG,KAAK7Y,MAAL,GAAc,CAA/C,EAAkD2uH,MAAM,KAAK,IAA7D,EAAmE91G,CAAC,EAApE,EAAwE;AACtErW,MAAE,CAACqU,IAAH,CAAQ63G,KAAR,EAAeC,MAAM,CAACp1H,KAAtB,EAA6Bsf,CAA7B,EAAgC,IAAhC;AACA81G,UAAM,GAAGA,MAAM,CAACz0H,IAAhB;AACD;AACF,CAND;;AAQA6yH,OAAO,CAAC/2G,SAAR,CAAkB/Z,GAAlB,GAAwB,UAAUm9B,CAAV,EAAa;AACnC,OAAK,IAAIvgB,CAAC,GAAG,CAAR,EAAW81G,MAAM,GAAG,KAAKzrD,IAA9B,EAAoCyrD,MAAM,KAAK,IAAX,IAAmB91G,CAAC,GAAGugB,CAA3D,EAA8DvgB,CAAC,EAA/D,EAAmE;AACjE;AACA81G,UAAM,GAAGA,MAAM,CAACr1H,IAAhB;AACD;;AACD,MAAIuf,CAAC,KAAKugB,CAAN,IAAWu1F,MAAM,KAAK,IAA1B,EAAgC;AAC9B,WAAOA,MAAM,CAACp1H,KAAd;AACD;AACF,CARD;;AAUAwzH,OAAO,CAAC/2G,SAAR,CAAkB25G,UAAlB,GAA+B,UAAUv2F,CAAV,EAAa;AAC1C,OAAK,IAAIvgB,CAAC,GAAG,CAAR,EAAW81G,MAAM,GAAG,KAAKC,IAA9B,EAAoCD,MAAM,KAAK,IAAX,IAAmB91G,CAAC,GAAGugB,CAA3D,EAA8DvgB,CAAC,EAA/D,EAAmE;AACjE;AACA81G,UAAM,GAAGA,MAAM,CAACz0H,IAAhB;AACD;;AACD,MAAI2e,CAAC,KAAKugB,CAAN,IAAWu1F,MAAM,KAAK,IAA1B,EAAgC;AAC9B,WAAOA,MAAM,CAACp1H,KAAd;AACD;AACF,CARD;;AAUAwzH,OAAO,CAAC/2G,SAAR,CAAkBjZ,GAAlB,GAAwB,UAAUyF,EAAV,EAAcksH,KAAd,EAAqB;AAC3CA,OAAK,GAAGA,KAAK,IAAI,IAAjB;AACA,MAAIe,GAAG,GAAG,IAAI1C,OAAJ,EAAV;;AACA,OAAK,IAAI4B,MAAM,GAAG,KAAKzrD,IAAvB,EAA6ByrD,MAAM,KAAK,IAAxC,GAA+C;AAC7Cc,OAAG,CAAC5wH,IAAJ,CAAS2D,EAAE,CAACqU,IAAH,CAAQ63G,KAAR,EAAeC,MAAM,CAACp1H,KAAtB,EAA6B,IAA7B,CAAT;AACAo1H,UAAM,GAAGA,MAAM,CAACr1H,IAAhB;AACD;;AACD,SAAOm2H,GAAP;AACD,CARD;;AAUA1C,OAAO,CAAC/2G,SAAR,CAAkB45G,UAAlB,GAA+B,UAAUptH,EAAV,EAAcksH,KAAd,EAAqB;AAClDA,OAAK,GAAGA,KAAK,IAAI,IAAjB;AACA,MAAIe,GAAG,GAAG,IAAI1C,OAAJ,EAAV;;AACA,OAAK,IAAI4B,MAAM,GAAG,KAAKC,IAAvB,EAA6BD,MAAM,KAAK,IAAxC,GAA+C;AAC7Cc,OAAG,CAAC5wH,IAAJ,CAAS2D,EAAE,CAACqU,IAAH,CAAQ63G,KAAR,EAAeC,MAAM,CAACp1H,KAAtB,EAA6B,IAA7B,CAAT;AACAo1H,UAAM,GAAGA,MAAM,CAACz0H,IAAhB;AACD;;AACD,SAAOu1H,GAAP;AACD,CARD;;AAUA1C,OAAO,CAAC/2G,SAAR,CAAkB/b,MAAlB,GAA2B,UAAUuI,EAAV,EAAcqtH,OAAd,EAAuB;AAChD,MAAIC,GAAJ;AACA,MAAInB,MAAM,GAAG,KAAKzrD,IAAlB;;AACA,MAAIh6D,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB8vH,OAAG,GAAGD,OAAN;AACD,GAFD,MAEO,IAAI,KAAK3sD,IAAT,EAAe;AACpByrD,UAAM,GAAG,KAAKzrD,IAAL,CAAU5pE,IAAnB;AACAw2H,OAAG,GAAG,KAAK5sD,IAAL,CAAU3pE,KAAhB;AACD,GAHM,MAGA;AACL,UAAM,IAAI4P,SAAJ,CAAc,4CAAd,CAAN;AACD;;AAED,OAAK,IAAI0P,CAAC,GAAG,CAAb,EAAgB81G,MAAM,KAAK,IAA3B,EAAiC91G,CAAC,EAAlC,EAAsC;AACpCi3G,OAAG,GAAGttH,EAAE,CAACstH,GAAD,EAAMnB,MAAM,CAACp1H,KAAb,EAAoBsf,CAApB,CAAR;AACA81G,UAAM,GAAGA,MAAM,CAACr1H,IAAhB;AACD;;AAED,SAAOw2H,GAAP;AACD,CAlBD;;AAoBA/C,OAAO,CAAC/2G,SAAR,CAAkB+5G,aAAlB,GAAkC,UAAUvtH,EAAV,EAAcqtH,OAAd,EAAuB;AACvD,MAAIC,GAAJ;AACA,MAAInB,MAAM,GAAG,KAAKC,IAAlB;;AACA,MAAI1lH,SAAS,CAAClJ,MAAV,GAAmB,CAAvB,EAA0B;AACxB8vH,OAAG,GAAGD,OAAN;AACD,GAFD,MAEO,IAAI,KAAKjB,IAAT,EAAe;AACpBD,UAAM,GAAG,KAAKC,IAAL,CAAU10H,IAAnB;AACA41H,OAAG,GAAG,KAAKlB,IAAL,CAAUr1H,KAAhB;AACD,GAHM,MAGA;AACL,UAAM,IAAI4P,SAAJ,CAAc,4CAAd,CAAN;AACD;;AAED,OAAK,IAAI0P,CAAC,GAAG,KAAK7Y,MAAL,GAAc,CAA3B,EAA8B2uH,MAAM,KAAK,IAAzC,EAA+C91G,CAAC,EAAhD,EAAoD;AAClDi3G,OAAG,GAAGttH,EAAE,CAACstH,GAAD,EAAMnB,MAAM,CAACp1H,KAAb,EAAoBsf,CAApB,CAAR;AACA81G,UAAM,GAAGA,MAAM,CAACz0H,IAAhB;AACD;;AAED,SAAO41H,GAAP;AACD,CAlBD;;AAoBA/C,OAAO,CAAC/2G,SAAR,CAAkBpY,OAAlB,GAA4B,YAAY;AACtC,MAAIs3D,GAAG,GAAG,IAAIp3D,KAAJ,CAAU,KAAKkC,MAAf,CAAV;;AACA,OAAK,IAAI6Y,CAAC,GAAG,CAAR,EAAW81G,MAAM,GAAG,KAAKzrD,IAA9B,EAAoCyrD,MAAM,KAAK,IAA/C,EAAqD91G,CAAC,EAAtD,EAA0D;AACxDq8C,OAAG,CAACr8C,CAAD,CAAH,GAAS81G,MAAM,CAACp1H,KAAhB;AACAo1H,UAAM,GAAGA,MAAM,CAACr1H,IAAhB;AACD;;AACD,SAAO47D,GAAP;AACD,CAPD;;AASA63D,OAAO,CAAC/2G,SAAR,CAAkBg6G,cAAlB,GAAmC,YAAY;AAC7C,MAAI96D,GAAG,GAAG,IAAIp3D,KAAJ,CAAU,KAAKkC,MAAf,CAAV;;AACA,OAAK,IAAI6Y,CAAC,GAAG,CAAR,EAAW81G,MAAM,GAAG,KAAKC,IAA9B,EAAoCD,MAAM,KAAK,IAA/C,EAAqD91G,CAAC,EAAtD,EAA0D;AACxDq8C,OAAG,CAACr8C,CAAD,CAAH,GAAS81G,MAAM,CAACp1H,KAAhB;AACAo1H,UAAM,GAAGA,MAAM,CAACz0H,IAAhB;AACD;;AACD,SAAOg7D,GAAP;AACD,CAPD;;AASA63D,OAAO,CAAC/2G,SAAR,CAAkBhU,KAAlB,GAA0B,UAAUjE,IAAV,EAAgB+jC,EAAhB,EAAoB;AAC5CA,IAAE,GAAGA,EAAE,IAAI,KAAK9hC,MAAhB;;AACA,MAAI8hC,EAAE,GAAG,CAAT,EAAY;AACVA,MAAE,IAAI,KAAK9hC,MAAX;AACD;;AACDjC,MAAI,GAAGA,IAAI,IAAI,CAAf;;AACA,MAAIA,IAAI,GAAG,CAAX,EAAc;AACZA,QAAI,IAAI,KAAKiC,MAAb;AACD;;AACD,MAAI4kB,GAAG,GAAG,IAAImoG,OAAJ,EAAV;;AACA,MAAIjrF,EAAE,GAAG/jC,IAAL,IAAa+jC,EAAE,GAAG,CAAtB,EAAyB;AACvB,WAAOld,GAAP;AACD;;AACD,MAAI7mB,IAAI,GAAG,CAAX,EAAc;AACZA,QAAI,GAAG,CAAP;AACD;;AACD,MAAI+jC,EAAE,GAAG,KAAK9hC,MAAd,EAAsB;AACpB8hC,MAAE,GAAG,KAAK9hC,MAAV;AACD;;AACD,OAAK,IAAI6Y,CAAC,GAAG,CAAR,EAAW81G,MAAM,GAAG,KAAKzrD,IAA9B,EAAoCyrD,MAAM,KAAK,IAAX,IAAmB91G,CAAC,GAAG9a,IAA3D,EAAiE8a,CAAC,EAAlE,EAAsE;AACpE81G,UAAM,GAAGA,MAAM,CAACr1H,IAAhB;AACD;;AACD,SAAOq1H,MAAM,KAAK,IAAX,IAAmB91G,CAAC,GAAGipB,EAA9B,EAAkCjpB,CAAC,IAAI81G,MAAM,GAAGA,MAAM,CAACr1H,IAAvD,EAA6D;AAC3DsrB,OAAG,CAAC/lB,IAAJ,CAAS8vH,MAAM,CAACp1H,KAAhB;AACD;;AACD,SAAOqrB,GAAP;AACD,CA1BD;;AA4BAmoG,OAAO,CAAC/2G,SAAR,CAAkBi6G,YAAlB,GAAiC,UAAUlyH,IAAV,EAAgB+jC,EAAhB,EAAoB;AACnDA,IAAE,GAAGA,EAAE,IAAI,KAAK9hC,MAAhB;;AACA,MAAI8hC,EAAE,GAAG,CAAT,EAAY;AACVA,MAAE,IAAI,KAAK9hC,MAAX;AACD;;AACDjC,MAAI,GAAGA,IAAI,IAAI,CAAf;;AACA,MAAIA,IAAI,GAAG,CAAX,EAAc;AACZA,QAAI,IAAI,KAAKiC,MAAb;AACD;;AACD,MAAI4kB,GAAG,GAAG,IAAImoG,OAAJ,EAAV;;AACA,MAAIjrF,EAAE,GAAG/jC,IAAL,IAAa+jC,EAAE,GAAG,CAAtB,EAAyB;AACvB,WAAOld,GAAP;AACD;;AACD,MAAI7mB,IAAI,GAAG,CAAX,EAAc;AACZA,QAAI,GAAG,CAAP;AACD;;AACD,MAAI+jC,EAAE,GAAG,KAAK9hC,MAAd,EAAsB;AACpB8hC,MAAE,GAAG,KAAK9hC,MAAV;AACD;;AACD,OAAK,IAAI6Y,CAAC,GAAG,KAAK7Y,MAAb,EAAqB2uH,MAAM,GAAG,KAAKC,IAAxC,EAA8CD,MAAM,KAAK,IAAX,IAAmB91G,CAAC,GAAGipB,EAArE,EAAyEjpB,CAAC,EAA1E,EAA8E;AAC5E81G,UAAM,GAAGA,MAAM,CAACz0H,IAAhB;AACD;;AACD,SAAOy0H,MAAM,KAAK,IAAX,IAAmB91G,CAAC,GAAG9a,IAA9B,EAAoC8a,CAAC,IAAI81G,MAAM,GAAGA,MAAM,CAACz0H,IAAzD,EAA+D;AAC7D0qB,OAAG,CAAC/lB,IAAJ,CAAS8vH,MAAM,CAACp1H,KAAhB;AACD;;AACD,SAAOqrB,GAAP;AACD,CA1BD;;AA4BAmoG,OAAO,CAAC/2G,SAAR,CAAkB7T,MAAlB,GAA2B,UAAU/I,KAAV,EAAiB82H;AAAY;AAA7B,EAA8C;AACvE,MAAI92H,KAAK,GAAG,KAAK4G,MAAjB,EAAyB;AACvB5G,SAAK,GAAG,KAAK4G,MAAL,GAAc,CAAtB;AACD;;AACD,MAAI5G,KAAK,GAAG,CAAZ,EAAe;AACbA,SAAK,GAAG,KAAK4G,MAAL,GAAc5G,KAAtB;AACD;;AAED,OAAK,IAAIyf,CAAC,GAAG,CAAR,EAAW81G,MAAM,GAAG,KAAKzrD,IAA9B,EAAoCyrD,MAAM,KAAK,IAAX,IAAmB91G,CAAC,GAAGzf,KAA3D,EAAkEyf,CAAC,EAAnE,EAAuE;AACrE81G,UAAM,GAAGA,MAAM,CAACr1H,IAAhB;AACD;;AAED,MAAIsrB,GAAG,GAAG,EAAV;;AACA,OAAK,IAAI/L,CAAC,GAAG,CAAb,EAAgB81G,MAAM,IAAI91G,CAAC,GAAGq3G,WAA9B,EAA2Cr3G,CAAC,EAA5C,EAAgD;AAC9C+L,OAAG,CAAC/lB,IAAJ,CAAS8vH,MAAM,CAACp1H,KAAhB;AACAo1H,UAAM,GAAG,KAAKW,UAAL,CAAgBX,MAAhB,CAAT;AACD;;AACD,MAAIA,MAAM,KAAK,IAAf,EAAqB;AACnBA,UAAM,GAAG,KAAKC,IAAd;AACD;;AAED,MAAID,MAAM,KAAK,KAAKzrD,IAAhB,IAAwByrD,MAAM,KAAK,KAAKC,IAA5C,EAAkD;AAChDD,UAAM,GAAGA,MAAM,CAACz0H,IAAhB;AACD;;AAED,OAAK,IAAI2e,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3P,SAAS,CAAClJ,MAA9B,EAAsC6Y,CAAC,EAAvC,EAA2C;AACzC81G,UAAM,GAAGt8C,MAAM,CAAC,IAAD,EAAOs8C,MAAP,EAAezlH,SAAS,CAAC2P,CAAD,CAAxB,CAAf;AACD;;AACD,SAAO+L,GAAP;AACD,CA7BD;;AA+BAmoG,OAAO,CAAC/2G,SAAR,CAAkBlc,OAAlB,GAA4B,YAAY;AACtC,MAAIopE,IAAI,GAAG,KAAKA,IAAhB;AACA,MAAI0rD,IAAI,GAAG,KAAKA,IAAhB;;AACA,OAAK,IAAID,MAAM,GAAGzrD,IAAlB,EAAwByrD,MAAM,KAAK,IAAnC,EAAyCA,MAAM,GAAGA,MAAM,CAACz0H,IAAzD,EAA+D;AAC7D,QAAI+kB,CAAC,GAAG0vG,MAAM,CAACz0H,IAAf;AACAy0H,UAAM,CAACz0H,IAAP,GAAcy0H,MAAM,CAACr1H,IAArB;AACAq1H,UAAM,CAACr1H,IAAP,GAAc2lB,CAAd;AACD;;AACD,OAAKikD,IAAL,GAAY0rD,IAAZ;AACA,OAAKA,IAAL,GAAY1rD,IAAZ;AACA,SAAO,IAAP;AACD,CAXD;;AAaA,SAASmP,MAAT,CAAiB1yD,IAAjB,EAAuBiO,IAAvB,EAA6Br0B,KAA7B,EAAoC;AAClC,MAAI42H,QAAQ,GAAGviG,IAAI,KAAKjO,IAAI,CAACujD,IAAd,GACb,IAAIqsD,IAAJ,CAASh2H,KAAT,EAAgB,IAAhB,EAAsBq0B,IAAtB,EAA4BjO,IAA5B,CADa,GAEb,IAAI4vG,IAAJ,CAASh2H,KAAT,EAAgBq0B,IAAhB,EAAsBA,IAAI,CAACt0B,IAA3B,EAAiCqmB,IAAjC,CAFF;;AAIA,MAAIwwG,QAAQ,CAAC72H,IAAT,KAAkB,IAAtB,EAA4B;AAC1BqmB,QAAI,CAACivG,IAAL,GAAYuB,QAAZ;AACD;;AACD,MAAIA,QAAQ,CAACj2H,IAAT,KAAkB,IAAtB,EAA4B;AAC1BylB,QAAI,CAACujD,IAAL,GAAYitD,QAAZ;AACD;;AAEDxwG,MAAI,CAAC3f,MAAL;AAEA,SAAOmwH,QAAP;AACD;;AAED,SAAStxH,IAAT,CAAe8gB,IAAf,EAAqBzC,IAArB,EAA2B;AACzByC,MAAI,CAACivG,IAAL,GAAY,IAAIW,IAAJ,CAASryG,IAAT,EAAeyC,IAAI,CAACivG,IAApB,EAA0B,IAA1B,EAAgCjvG,IAAhC,CAAZ;;AACA,MAAI,CAACA,IAAI,CAACujD,IAAV,EAAgB;AACdvjD,QAAI,CAACujD,IAAL,GAAYvjD,IAAI,CAACivG,IAAjB;AACD;;AACDjvG,MAAI,CAAC3f,MAAL;AACD;;AAED,SAASmF,OAAT,CAAkBwa,IAAlB,EAAwBzC,IAAxB,EAA8B;AAC5ByC,MAAI,CAACujD,IAAL,GAAY,IAAIqsD,IAAJ,CAASryG,IAAT,EAAe,IAAf,EAAqByC,IAAI,CAACujD,IAA1B,EAAgCvjD,IAAhC,CAAZ;;AACA,MAAI,CAACA,IAAI,CAACivG,IAAV,EAAgB;AACdjvG,QAAI,CAACivG,IAAL,GAAYjvG,IAAI,CAACujD,IAAjB;AACD;;AACDvjD,MAAI,CAAC3f,MAAL;AACD;;AAED,SAASuvH,IAAT,CAAeh2H,KAAf,EAAsBW,IAAtB,EAA4BZ,IAA5B,EAAkCohB,IAAlC,EAAwC;AACtC,MAAI,EAAE,gBAAgB60G,IAAlB,CAAJ,EAA6B;AAC3B,WAAO,IAAIA,IAAJ,CAASh2H,KAAT,EAAgBW,IAAhB,EAAsBZ,IAAtB,EAA4BohB,IAA5B,CAAP;AACD;;AAED,OAAKA,IAAL,GAAYA,IAAZ;AACA,OAAKnhB,KAAL,GAAaA,KAAb;;AAEA,MAAIW,IAAJ,EAAU;AACRA,QAAI,CAACZ,IAAL,GAAY,IAAZ;AACA,SAAKY,IAAL,GAAYA,IAAZ;AACD,GAHD,MAGO;AACL,SAAKA,IAAL,GAAY,IAAZ;AACD;;AAED,MAAIZ,IAAJ,EAAU;AACRA,QAAI,CAACY,IAAL,GAAY,IAAZ;AACA,SAAKZ,IAAL,GAAYA,IAAZ;AACD,GAHD,MAGO;AACL,SAAKA,IAAL,GAAY,IAAZ;AACD;AACF;;AAED,IAAI;AACF;AACA8hB,qBAAO,CAAC,gFAAD,CAAP,CAAyB2xG,OAAzB;AACD,CAHD,CAGE,OAAOrpG,EAAP,EAAW,CAAE,C;;;;;;;;;;;ACzaf,CAAC,YAAU;AACT,MAAIia,KAAK,GAAGviB,mBAAO,CAAC,4CAAD,CAAnB;AAAA,MACI2hB,IAAI,GAAG3hB,mBAAO,CAAC,kDAAD,CAAP,CAAmB2hB,IAD9B;AAAA,MAEI1gB,QAAQ,GAAGjB,mBAAO,CAAC,oDAAD,CAFtB;AAAA,MAGI8hB,GAAG,GAAG9hB,mBAAO,CAAC,kDAAD,CAAP,CAAmB8hB,GAH7B;AAAA,MAKA;AACAkzF,KAAG,GAAG,UAAUnoF,OAAV,EAAmBntC,OAAnB,EAA4B;AAChC;AACA,QAAImtC,OAAO,CAACpvC,WAAR,IAAuB2kC,MAA3B;AACE,UAAI1iC,OAAO,IAAIA,OAAO,CAACmjB,QAAR,KAAqB,QAApC,EACEgqB,OAAO,GAAG/K,GAAG,CAACF,aAAJ,CAAkBiL,OAAlB,CAAV,CADF,KAGEA,OAAO,GAAGlL,IAAI,CAACC,aAAL,CAAmBiL,OAAnB,CAAV;AAJJ,WAKK,IAAI5rB,QAAQ,CAAC4rB,OAAD,CAAZ,EACHA,OAAO,GAAGnqC,KAAK,CAACkY,SAAN,CAAgBhU,KAAhB,CAAsB6U,IAAtB,CAA2BoxB,OAA3B,EAAoC,CAApC,CAAV,CADG,KAEA,IAAI,CAACnqC,KAAK,CAACwD,OAAN,CAAc2mC,OAAd,CAAD,IAA2BA,OAAO,CAACpvC,WAAR,KAAwBsjB,UAAvD,EACH8rB,OAAO,GAAGA,OAAO,CAACrxB,QAAR,EAAV,CAV8B,CAWhC;;AAEA,QAAIs6B,CAAC,GAAGvT,KAAK,CAACK,YAAN,CAAmBiK,OAAnB,CAAR;AAAA,QACIxQ,CAAC,GAAGwQ,OAAO,CAACjoC,MAAR,GAAiB,CADzB;AAAA,QAEII,CAAC,GAAI,UAFT;AAAA,QAGIC,CAAC,GAAG,CAAC,SAHT;AAAA,QAIIiuB,CAAC,GAAG,CAAC,UAJT;AAAA,QAKI4hB,CAAC,GAAI,SALT,CAbgC,CAoBhC;;AACA,SAAK,IAAIr3B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq4B,CAAC,CAAClxC,MAAtB,EAA8B6Y,CAAC,EAA/B,EAAmC;AACjCq4B,OAAC,CAACr4B,CAAD,CAAD,GAAO,CAAEq4B,CAAC,CAACr4B,CAAD,CAAD,IAAS,CAAV,GAAgBq4B,CAAC,CAACr4B,CAAD,CAAD,KAAS,EAA1B,IAAiC,UAAjC,GACA,CAAEq4B,CAAC,CAACr4B,CAAD,CAAD,IAAQ,EAAT,GAAgBq4B,CAAC,CAACr4B,CAAD,CAAD,KAAU,CAA3B,IAAiC,UADxC;AAED,KAxB+B,CA0BhC;;;AACAq4B,KAAC,CAACzZ,CAAC,KAAK,CAAP,CAAD,IAAc,QAASA,CAAC,GAAG,EAA3B;AACAyZ,KAAC,CAAC,CAAGzZ,CAAC,GAAG,EAAL,KAAa,CAAd,IAAoB,CAArB,IAA0B,EAA3B,CAAD,GAAkCA,CAAlC,CA5BgC,CA8BhC;;AACA,QAAI44F,EAAE,GAAGD,GAAG,CAACE,GAAb;AAAA,QACIxN,EAAE,GAAGsN,GAAG,CAACG,GADb;AAAA,QAEIC,EAAE,GAAGJ,GAAG,CAACK,GAFb;AAAA,QAGIC,EAAE,GAAGN,GAAG,CAACO,GAHb;;AAKA,SAAK,IAAI93G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq4B,CAAC,CAAClxC,MAAtB,EAA8B6Y,CAAC,IAAI,EAAnC,EAAuC;AAErC,UAAI+3G,EAAE,GAAGxwH,CAAT;AAAA,UACIywH,EAAE,GAAGxwH,CADT;AAAA,UAEIywH,EAAE,GAAGxiG,CAFT;AAAA,UAGIyiG,EAAE,GAAG7gF,CAHT;AAKA9vC,OAAC,GAAGiwH,EAAE,CAACjwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,SAA3B,CAAN;AACAq3B,OAAC,GAAGmgF,EAAE,CAACngF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAyV,OAAC,GAAG+hG,EAAE,CAAC/hG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA2B,SAA3B,CAAN;AACAxY,OAAC,GAAGgwH,EAAE,CAAChwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAzY,OAAC,GAAGiwH,EAAE,CAACjwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,SAA3B,CAAN;AACAq3B,OAAC,GAAGmgF,EAAE,CAACngF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA2B,UAA3B,CAAN;AACAyV,OAAC,GAAG+hG,EAAE,CAAC/hG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAxY,OAAC,GAAGgwH,EAAE,CAAChwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,QAA3B,CAAN;AACAzY,OAAC,GAAGiwH,EAAE,CAACjwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA2B,UAA3B,CAAN;AACAq3B,OAAC,GAAGmgF,EAAE,CAACngF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAyV,OAAC,GAAG+hG,EAAE,CAAC/hG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,KAA3B,CAAN;AACAxY,OAAC,GAAGgwH,EAAE,CAAChwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAzY,OAAC,GAAGiwH,EAAE,CAACjwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAuB,CAAvB,EAA2B,UAA3B,CAAN;AACAq3B,OAAC,GAAGmgF,EAAE,CAACngF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,QAA3B,CAAN;AACAyV,OAAC,GAAG+hG,EAAE,CAAC/hG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAxY,OAAC,GAAGgwH,EAAE,CAAChwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA2B,UAA3B,CAAN;AAEAzY,OAAC,GAAG0iH,EAAE,CAAC1iH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,SAA3B,CAAN;AACAq3B,OAAC,GAAG4yE,EAAE,CAAC5yE,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,UAA3B,CAAN;AACAyV,OAAC,GAAGw0F,EAAE,CAACx0F,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA2B,SAA3B,CAAN;AACAxY,OAAC,GAAGyiH,EAAE,CAACziH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAzY,OAAC,GAAG0iH,EAAE,CAAC1iH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,SAA3B,CAAN;AACAq3B,OAAC,GAAG4yE,EAAE,CAAC5yE,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAuB,CAAvB,EAA2B,QAA3B,CAAN;AACAyV,OAAC,GAAGw0F,EAAE,CAACx0F,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAxY,OAAC,GAAGyiH,EAAE,CAACziH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAzY,OAAC,GAAG0iH,EAAE,CAAC1iH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA2B,SAA3B,CAAN;AACAq3B,OAAC,GAAG4yE,EAAE,CAAC5yE,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAuB,CAAvB,EAA0B,CAAC,UAA3B,CAAN;AACAyV,OAAC,GAAGw0F,EAAE,CAACx0F,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAxY,OAAC,GAAGyiH,EAAE,CAACziH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA2B,UAA3B,CAAN;AACAzY,OAAC,GAAG0iH,EAAE,CAAC1iH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAuB,CAAvB,EAA0B,CAAC,UAA3B,CAAN;AACAq3B,OAAC,GAAG4yE,EAAE,CAAC5yE,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,QAA3B,CAAN;AACAyV,OAAC,GAAGw0F,EAAE,CAACx0F,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA2B,UAA3B,CAAN;AACAxY,OAAC,GAAGyiH,EAAE,CAACziH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AAEAzY,OAAC,GAAGowH,EAAE,CAACpwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,MAA3B,CAAN;AACAq3B,OAAC,GAAGsgF,EAAE,CAACtgF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAyV,OAAC,GAAGkiG,EAAE,CAACliG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA2B,UAA3B,CAAN;AACAxY,OAAC,GAAGmwH,EAAE,CAACnwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,QAA3B,CAAN;AACAzY,OAAC,GAAGowH,EAAE,CAACpwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,UAA3B,CAAN;AACAq3B,OAAC,GAAGsgF,EAAE,CAACtgF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA2B,UAA3B,CAAN;AACAyV,OAAC,GAAGkiG,EAAE,CAACliG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAxY,OAAC,GAAGmwH,EAAE,CAACnwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAzY,OAAC,GAAGowH,EAAE,CAACpwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAuB,CAAvB,EAA2B,SAA3B,CAAN;AACAq3B,OAAC,GAAGsgF,EAAE,CAACtgF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAyV,OAAC,GAAGkiG,EAAE,CAACliG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAxY,OAAC,GAAGmwH,EAAE,CAACnwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA2B,QAA3B,CAAN;AACAzY,OAAC,GAAGowH,EAAE,CAACpwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,SAA3B,CAAN;AACAq3B,OAAC,GAAGsgF,EAAE,CAACtgF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AACAyV,OAAC,GAAGkiG,EAAE,CAACliG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA2B,SAA3B,CAAN;AACAxY,OAAC,GAAGmwH,EAAE,CAACnwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AAEAzY,OAAC,GAAGswH,EAAE,CAACtwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,SAA3B,CAAN;AACAq3B,OAAC,GAAGwgF,EAAE,CAACxgF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA2B,UAA3B,CAAN;AACAyV,OAAC,GAAGoiG,EAAE,CAACpiG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAxY,OAAC,GAAGqwH,EAAE,CAACrwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,QAA3B,CAAN;AACAzY,OAAC,GAAGswH,EAAE,CAACtwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAuB,CAAvB,EAA2B,UAA3B,CAAN;AACAq3B,OAAC,GAAGwgF,EAAE,CAACxgF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAyV,OAAC,GAAGoiG,EAAE,CAACpiG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,OAA3B,CAAN;AACAxY,OAAC,GAAGqwH,EAAE,CAACrwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAzY,OAAC,GAAGswH,EAAE,CAACtwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA2B,UAA3B,CAAN;AACAq3B,OAAC,GAAGwgF,EAAE,CAACxgF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,QAA3B,CAAN;AACAyV,OAAC,GAAGoiG,EAAE,CAACpiG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAxY,OAAC,GAAGqwH,EAAE,CAACrwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA2B,UAA3B,CAAN;AACAzY,OAAC,GAAGswH,EAAE,CAACtwH,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,EAAagB,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAuB,CAAvB,EAA0B,CAAC,SAA3B,CAAN;AACAq3B,OAAC,GAAGwgF,EAAE,CAACxgF,CAAD,EAAI9vC,CAAJ,EAAOC,CAAP,EAAUiuB,CAAV,EAAa4iB,CAAC,CAACr4B,CAAC,GAAC,EAAH,CAAd,EAAsB,EAAtB,EAA0B,CAAC,UAA3B,CAAN;AACAyV,OAAC,GAAGoiG,EAAE,CAACpiG,CAAD,EAAI4hB,CAAJ,EAAO9vC,CAAP,EAAUC,CAAV,EAAa6wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA2B,SAA3B,CAAN;AACAxY,OAAC,GAAGqwH,EAAE,CAACrwH,CAAD,EAAIiuB,CAAJ,EAAO4hB,CAAP,EAAU9vC,CAAV,EAAa8wC,CAAC,CAACr4B,CAAC,GAAE,CAAJ,CAAd,EAAsB,EAAtB,EAA0B,CAAC,SAA3B,CAAN;AAEAzY,OAAC,GAAIA,CAAC,GAAGwwH,EAAL,KAAa,CAAjB;AACAvwH,OAAC,GAAIA,CAAC,GAAGwwH,EAAL,KAAa,CAAjB;AACAviG,OAAC,GAAIA,CAAC,GAAGwiG,EAAL,KAAa,CAAjB;AACA5gF,OAAC,GAAIA,CAAC,GAAG6gF,EAAL,KAAa,CAAjB;AACD;;AAED,WAAOpzF,KAAK,CAACG,MAAN,CAAa,CAAC19B,CAAD,EAAIC,CAAJ,EAAOiuB,CAAP,EAAU4hB,CAAV,CAAb,CAAP;AACD,GA5HD,CADS,CA+HT;;;AACAkgF,KAAG,CAACE,GAAJ,GAAW,UAAUlwH,CAAV,EAAaC,CAAb,EAAgBiuB,CAAhB,EAAmB4hB,CAAnB,EAAsBxoC,CAAtB,EAAyBxH,CAAzB,EAA4BmtB,CAA5B,EAA+B;AACxC,QAAI+L,CAAC,GAAGh5B,CAAC,IAAIC,CAAC,GAAGiuB,CAAJ,GAAQ,CAACjuB,CAAD,GAAK6vC,CAAjB,CAAD,IAAwBxoC,CAAC,KAAK,CAA9B,IAAmC2lB,CAA3C;AACA,WAAO,CAAE+L,CAAC,IAAIl5B,CAAN,GAAYk5B,CAAC,KAAM,KAAKl5B,CAAzB,IAAgCG,CAAvC;AACD,GAHD;;AAIA+vH,KAAG,CAACG,GAAJ,GAAW,UAAUnwH,CAAV,EAAaC,CAAb,EAAgBiuB,CAAhB,EAAmB4hB,CAAnB,EAAsBxoC,CAAtB,EAAyBxH,CAAzB,EAA4BmtB,CAA5B,EAA+B;AACxC,QAAI+L,CAAC,GAAGh5B,CAAC,IAAIC,CAAC,GAAG6vC,CAAJ,GAAQ5hB,CAAC,GAAG,CAAC4hB,CAAjB,CAAD,IAAwBxoC,CAAC,KAAK,CAA9B,IAAmC2lB,CAA3C;AACA,WAAO,CAAE+L,CAAC,IAAIl5B,CAAN,GAAYk5B,CAAC,KAAM,KAAKl5B,CAAzB,IAAgCG,CAAvC;AACD,GAHD;;AAIA+vH,KAAG,CAACK,GAAJ,GAAW,UAAUrwH,CAAV,EAAaC,CAAb,EAAgBiuB,CAAhB,EAAmB4hB,CAAnB,EAAsBxoC,CAAtB,EAAyBxH,CAAzB,EAA4BmtB,CAA5B,EAA+B;AACxC,QAAI+L,CAAC,GAAGh5B,CAAC,IAAIC,CAAC,GAAGiuB,CAAJ,GAAQ4hB,CAAZ,CAAD,IAAmBxoC,CAAC,KAAK,CAAzB,IAA8B2lB,CAAtC;AACA,WAAO,CAAE+L,CAAC,IAAIl5B,CAAN,GAAYk5B,CAAC,KAAM,KAAKl5B,CAAzB,IAAgCG,CAAvC;AACD,GAHD;;AAIA+vH,KAAG,CAACO,GAAJ,GAAW,UAAUvwH,CAAV,EAAaC,CAAb,EAAgBiuB,CAAhB,EAAmB4hB,CAAnB,EAAsBxoC,CAAtB,EAAyBxH,CAAzB,EAA4BmtB,CAA5B,EAA+B;AACxC,QAAI+L,CAAC,GAAGh5B,CAAC,IAAIkuB,CAAC,IAAIjuB,CAAC,GAAG,CAAC6vC,CAAT,CAAL,CAAD,IAAsBxoC,CAAC,KAAK,CAA5B,IAAiC2lB,CAAzC;AACA,WAAO,CAAE+L,CAAC,IAAIl5B,CAAN,GAAYk5B,CAAC,KAAM,KAAKl5B,CAAzB,IAAgCG,CAAvC;AACD,GAHD,CA5IS,CAiJT;;;AACA+vH,KAAG,CAACY,UAAJ,GAAiB,EAAjB;AACAZ,KAAG,CAACa,WAAJ,GAAkB,EAAlB;;AAEAj2G,QAAM,CAACC,OAAP,GAAiB,UAAUgtB,OAAV,EAAmBntC,OAAnB,EAA4B;AAC3C,QAAImtC,OAAO,KAAKjvC,SAAZ,IAAyBivC,OAAO,KAAK,IAAzC,EACE,MAAM,IAAIzpC,KAAJ,CAAU,sBAAsBypC,OAAhC,CAAN;AAEF,QAAIipF,WAAW,GAAGvzF,KAAK,CAACO,YAAN,CAAmBkyF,GAAG,CAACnoF,OAAD,EAAUntC,OAAV,CAAtB,CAAlB;AACA,WAAOA,OAAO,IAAIA,OAAO,CAACq2H,OAAnB,GAA6BD,WAA7B,GACHp2H,OAAO,IAAIA,OAAO,CAACs2H,QAAnB,GAA8Bl0F,GAAG,CAACG,aAAJ,CAAkB6zF,WAAlB,CAA9B,GACAvzF,KAAK,CAACQ,UAAN,CAAiB+yF,WAAjB,CAFJ;AAGD,GARD;AAUD,CA/JD,I;;;;;;;;;;;;ACAA;AAAA,IAAIG,aAAa,GAAG,SAASA,aAAT,CAAuBjxH,CAAvB,EAA0BC,CAA1B,EAA6B;AAC/C,SAAOD,CAAC,KAAKC,CAAb;AACD,CAFD;;AAIA,SAAStB,KAAT,CAAgBuyH,QAAhB,EAA0B/1H,OAA1B,EAAmC;AACjC,MAAIA,OAAO,KAAK,KAAK,CAArB,EAAwB;AACtBA,WAAO,GAAG81H,aAAV;AACD;;AAED,MAAIE,QAAJ;AACA,MAAIC,QAAQ,GAAG,EAAf;AACA,MAAIC,UAAJ;AACA,MAAIC,UAAU,GAAG,KAAjB;;AAEA,MAAIC,mBAAmB,GAAG,SAASA,mBAAT,CAA6BC,MAA7B,EAAqC7yH,KAArC,EAA4C;AACpE,WAAOxD,OAAO,CAACq2H,MAAD,EAASJ,QAAQ,CAACzyH,KAAD,CAAjB,EAA0BA,KAA1B,CAAd;AACD,GAFD;;AAIA,MAAIgP,MAAM,GAAG,SAASA,MAAT,GAAkB;AAC7B,SAAK,IAAI8jH,IAAI,GAAG3oH,SAAS,CAAClJ,MAArB,EAA6B8xH,OAAO,GAAG,IAAIh0H,KAAJ,CAAU+zH,IAAV,CAAvC,EAAwDE,IAAI,GAAG,CAApE,EAAuEA,IAAI,GAAGF,IAA9E,EAAoFE,IAAI,EAAxF,EAA4F;AAC1FD,aAAO,CAACC,IAAD,CAAP,GAAgB7oH,SAAS,CAAC6oH,IAAD,CAAzB;AACD;;AAED,QAAIL,UAAU,IAAIH,QAAQ,KAAK,IAA3B,IAAmCO,OAAO,CAAC9xH,MAAR,KAAmBwxH,QAAQ,CAACxxH,MAA/D,IAAyE8xH,OAAO,CAAC7xH,KAAR,CAAc0xH,mBAAd,CAA7E,EAAiH;AAC/G,aAAOF,UAAP;AACD;;AAEDA,cAAU,GAAGH,QAAQ,CAACz0F,KAAT,CAAe,IAAf,EAAqBi1F,OAArB,CAAb;AACAJ,cAAU,GAAG,IAAb;AACAH,YAAQ,GAAG,IAAX;AACAC,YAAQ,GAAGM,OAAX;AACA,WAAOL,UAAP;AACD,GAdD;;AAgBA,SAAO1jH,MAAP;AACD;;AAEchP,oEAAf,E;;;;;;;;;;;ACrCC,aAAU;AACT,MAAIizH,OAAO,GAAG,IAAd;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,WAASC,YAAT,CAAsBh1F,GAAtB,EAA2Bi1F,IAA3B,EAAiC;AAC/B,QACEz6F,CAAC,GAAGwF,GAAG,CAACj9B,MADV;AAAA,QAEE+wC,CAAC,GAAGmhF,IAAI,GAAGz6F,CAFb;AAAA,QAGE5e,CAAC,GAAG,CAHN;AAAA,QAIEsV,CAJF;;AAMA,WAAOsJ,CAAC,IAAI,CAAZ,EAAe;AACbtJ,OAAC,GACG8O,GAAG,CAAC5kB,UAAJ,CAAeQ,CAAf,IAAoB,IAAtB,GACC,CAACokB,GAAG,CAAC5kB,UAAJ,CAAe,EAAEQ,CAAjB,IAAsB,IAAvB,KAAgC,CADjC,GAEC,CAACokB,GAAG,CAAC5kB,UAAJ,CAAe,EAAEQ,CAAjB,IAAsB,IAAvB,KAAgC,EAFjC,GAGC,CAACokB,GAAG,CAAC5kB,UAAJ,CAAe,EAAEQ,CAAjB,IAAsB,IAAvB,KAAgC,EAJnC;AAMAsV,OAAC,GAAK,CAACA,CAAC,GAAG,MAAL,IAAe,UAAhB,IAA+B,CAAE,CAACA,CAAC,KAAK,EAAP,IAAa,UAAd,GAA4B,MAA7B,KAAwC,EAAvE,CAAL;AACAA,OAAC,IAAIA,CAAC,KAAK,EAAX;AACAA,OAAC,GAAK,CAACA,CAAC,GAAG,MAAL,IAAe,UAAhB,IAA+B,CAAE,CAACA,CAAC,KAAK,EAAP,IAAa,UAAd,GAA4B,MAA7B,KAAwC,EAAvE,CAAL;AAEF4iB,OAAC,GAAK,CAACA,CAAC,GAAG,MAAL,IAAe,UAAhB,IAA+B,CAAE,CAACA,CAAC,KAAK,EAAP,IAAa,UAAd,GAA4B,MAA7B,KAAwC,EAAvE,CAAD,GAA+E5iB,CAAnF;AAEEsJ,OAAC,IAAI,CAAL;AACA,QAAE5e,CAAF;AACD;;AAED,YAAQ4e,CAAR;AACA,WAAK,CAAL;AAAQsZ,SAAC,IAAI,CAAC9T,GAAG,CAAC5kB,UAAJ,CAAeQ,CAAC,GAAG,CAAnB,IAAwB,IAAzB,KAAkC,EAAvC;;AACR,WAAK,CAAL;AAAQk4B,SAAC,IAAI,CAAC9T,GAAG,CAAC5kB,UAAJ,CAAeQ,CAAC,GAAG,CAAnB,IAAwB,IAAzB,KAAkC,CAAvC;;AACR,WAAK,CAAL;AAAQk4B,SAAC,IAAK9T,GAAG,CAAC5kB,UAAJ,CAAeQ,CAAf,IAAoB,IAA1B;AACAk4B,SAAC,GAAK,CAACA,CAAC,GAAG,MAAL,IAAe,UAAhB,IAA+B,CAAE,CAACA,CAAC,KAAK,EAAP,IAAa,UAAd,GAA4B,MAA7B,KAAwC,EAAvE,CAAL;AAJR;;AAOAA,KAAC,IAAIA,CAAC,KAAK,EAAX;AACAA,KAAC,GAAK,CAACA,CAAC,GAAG,MAAL,IAAe,UAAhB,IAA+B,CAAE,CAACA,CAAC,KAAK,EAAP,IAAa,UAAd,GAA4B,MAA7B,KAAwC,EAAvE,CAAL;AACAA,KAAC,IAAIA,CAAC,KAAK,EAAX;AAEA,WAAOA,CAAC,KAAK,CAAb;AACD;;AAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACE,WAASohF,YAAT,CAAsBrjH,GAAtB,EAA2BojH,IAA3B,EAAiC;AAC/B,QAAIr9E,SAAJ,EAAe/qB,KAAf,EAAsBsoG,EAAtB,EAA0BC,GAA1B,EAA+BC,EAA/B,EAAmCC,GAAnC,EAAwCC,EAAxC,EAA4CC,GAA5C,EAAiDC,EAAjD,EAAqD75G,CAArD;AAEAg8B,aAAS,GAAG/lC,GAAG,CAAC9O,MAAJ,GAAa,CAAzB,CAH+B,CAGH;;AAC5B8pB,SAAK,GAAGhb,GAAG,CAAC9O,MAAJ,GAAa60C,SAArB;AACAu9E,MAAE,GAAGF,IAAL;AACAI,MAAE,GAAG,UAAL;AACAE,MAAE,GAAG,UAAL;AACA35G,KAAC,GAAG,CAAJ;;AAEA,WAAOA,CAAC,GAAGiR,KAAX,EAAkB;AACd4oG,QAAE,GACE5jH,GAAG,CAACuJ,UAAJ,CAAeQ,CAAf,IAAoB,IAAtB,GACC,CAAC/J,GAAG,CAACuJ,UAAJ,CAAe,EAAEQ,CAAjB,IAAsB,IAAvB,KAAgC,CADjC,GAEC,CAAC/J,GAAG,CAACuJ,UAAJ,CAAe,EAAEQ,CAAjB,IAAsB,IAAvB,KAAgC,EAFjC,GAGC,CAAC/J,GAAG,CAACuJ,UAAJ,CAAe,EAAEQ,CAAjB,IAAsB,IAAvB,KAAgC,EAJnC;AAKF,QAAEA,CAAF;AAEA65G,QAAE,GAAM,CAACA,EAAE,GAAG,MAAN,IAAgBJ,EAAjB,IAAwB,CAAE,CAACI,EAAE,KAAK,EAAR,IAAcJ,EAAf,GAAqB,MAAtB,KAAiC,EAAzD,CAAF,GAAmE,UAAxE;AACAI,QAAE,GAAIA,EAAE,IAAI,EAAP,GAAcA,EAAE,KAAK,EAA1B;AACAA,QAAE,GAAM,CAACA,EAAE,GAAG,MAAN,IAAgBF,EAAjB,IAAwB,CAAE,CAACE,EAAE,KAAK,EAAR,IAAcF,EAAf,GAAqB,MAAtB,KAAiC,EAAzD,CAAF,GAAmE,UAAxE;AAEAJ,QAAE,IAAIM,EAAN;AACIN,QAAE,GAAIA,EAAE,IAAI,EAAP,GAAcA,EAAE,KAAK,EAA1B;AACJC,SAAG,GAAM,CAACD,EAAE,GAAG,MAAN,IAAgB,CAAjB,IAAuB,CAAE,CAACA,EAAE,KAAK,EAAR,IAAc,CAAf,GAAoB,MAArB,KAAgC,EAAvD,CAAF,GAAiE,UAAvE;AACAA,QAAE,GAAK,CAACC,GAAG,GAAG,MAAP,IAAiB,MAAlB,IAA6B,CAAE,CAACA,GAAG,KAAK,EAAT,IAAe,MAAhB,GAA0B,MAA3B,KAAsC,EAAnE,CAAN;AACD;;AAEDK,MAAE,GAAG,CAAL;;AAEA,YAAQ79E,SAAR;AACE,WAAK,CAAL;AAAQ69E,UAAE,IAAI,CAAC5jH,GAAG,CAACuJ,UAAJ,CAAeQ,CAAC,GAAG,CAAnB,IAAwB,IAAzB,KAAkC,EAAxC;;AACR,WAAK,CAAL;AAAQ65G,UAAE,IAAI,CAAC5jH,GAAG,CAACuJ,UAAJ,CAAeQ,CAAC,GAAG,CAAnB,IAAwB,IAAzB,KAAkC,CAAxC;;AACR,WAAK,CAAL;AAAQ65G,UAAE,IAAK5jH,GAAG,CAACuJ,UAAJ,CAAeQ,CAAf,IAAoB,IAA3B;AAER65G,UAAE,GAAK,CAACA,EAAE,GAAG,MAAN,IAAgBJ,EAAjB,IAAwB,CAAE,CAACI,EAAE,KAAK,EAAR,IAAcJ,EAAf,GAAqB,MAAtB,KAAiC,EAAzD,CAAD,GAAiE,UAAtE;AACAI,UAAE,GAAIA,EAAE,IAAI,EAAP,GAAcA,EAAE,KAAK,EAA1B;AACAA,UAAE,GAAK,CAACA,EAAE,GAAG,MAAN,IAAgBF,EAAjB,IAAwB,CAAE,CAACE,EAAE,KAAK,EAAR,IAAcF,EAAf,GAAqB,MAAtB,KAAiC,EAAzD,CAAD,GAAiE,UAAtE;AACAJ,UAAE,IAAIM,EAAN;AARF;;AAWAN,MAAE,IAAItjH,GAAG,CAAC9O,MAAV;AAEAoyH,MAAE,IAAIA,EAAE,KAAK,EAAb;AACAA,MAAE,GAAK,CAACA,EAAE,GAAG,MAAN,IAAgB,UAAjB,IAAgC,CAAE,CAACA,EAAE,KAAK,EAAR,IAAc,UAAf,GAA6B,MAA9B,KAAyC,EAAzE,CAAD,GAAiF,UAAtF;AACAA,MAAE,IAAIA,EAAE,KAAK,EAAb;AACAA,MAAE,GAAM,CAACA,EAAE,GAAG,MAAN,IAAgB,UAAjB,IAAgC,CAAE,CAACA,EAAE,KAAK,EAAR,IAAc,UAAf,GAA6B,MAA9B,KAAyC,EAAzE,CAAF,GAAmF,UAAxF;AACAA,MAAE,IAAIA,EAAE,KAAK,EAAb;AAEA,WAAOA,EAAE,KAAK,CAAd;AACD;;AAED,MAAIO,MAAM,GAAGR,YAAb;AACAQ,QAAM,CAACC,EAAP,GAAYX,YAAZ;AACAU,QAAM,CAACE,EAAP,GAAYV,YAAZ;;AAEA,MAAI,IAAJ,EAAmC;AACjCn3G,UAAM,CAACC,OAAP,GAAiB03G,MAAjB;AACD,GAFD,MAEO,sBAON;AACF,CAnIA,GAAD,C;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AAEa;AACb;;AACA,IAAI78D,qBAAqB,GAAGl5D,MAAM,CAACk5D,qBAAnC;AACA,IAAIp9C,cAAc,GAAG9b,MAAM,CAACoZ,SAAP,CAAiB0C,cAAtC;AACA,IAAIo6G,gBAAgB,GAAGl2H,MAAM,CAACoZ,SAAP,CAAiB2rD,oBAAxC;;AAEA,SAASgS,QAAT,CAAkB36D,GAAlB,EAAuB;AACtB,MAAIA,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAKhgB,SAA5B,EAAuC;AACtC,UAAM,IAAImQ,SAAJ,CAAc,uDAAd,CAAN;AACA;;AAED,SAAOvM,MAAM,CAACoc,GAAD,CAAb;AACA;;AAED,SAAS+5G,eAAT,GAA2B;AAC1B,MAAI;AACH,QAAI,CAACn2H,MAAM,CAACC,MAAZ,EAAoB;AACnB,aAAO,KAAP;AACA,KAHE,CAKH;AAEA;;;AACA,QAAIm2H,KAAK,GAAG,IAAIx1F,MAAJ,CAAW,KAAX,CAAZ,CARG,CAQ6B;;AAChCw1F,SAAK,CAAC,CAAD,CAAL,GAAW,IAAX;;AACA,QAAIp2H,MAAM,CAACyvE,mBAAP,CAA2B2mD,KAA3B,EAAkC,CAAlC,MAAyC,GAA7C,EAAkD;AACjD,aAAO,KAAP;AACA,KAZE,CAcH;;;AACA,QAAIC,KAAK,GAAG,EAAZ;;AACA,SAAK,IAAIp6G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,EAAzB,EAA6B;AAC5Bo6G,WAAK,CAAC,MAAMz1F,MAAM,CAACC,YAAP,CAAoB5kB,CAApB,CAAP,CAAL,GAAsCA,CAAtC;AACA;;AACD,QAAIq6G,MAAM,GAAGt2H,MAAM,CAACyvE,mBAAP,CAA2B4mD,KAA3B,EAAkCl2H,GAAlC,CAAsC,UAAUq8B,CAAV,EAAa;AAC/D,aAAO65F,KAAK,CAAC75F,CAAD,CAAZ;AACA,KAFY,CAAb;;AAGA,QAAI85F,MAAM,CAACn4G,IAAP,CAAY,EAAZ,MAAoB,YAAxB,EAAsC;AACrC,aAAO,KAAP;AACA,KAxBE,CA0BH;;;AACA,QAAIo4G,KAAK,GAAG,EAAZ;AACA,2BAAuB94G,KAAvB,CAA6B,EAA7B,EAAiCnO,OAAjC,CAAyC,UAAUknH,MAAV,EAAkB;AAC1DD,WAAK,CAACC,MAAD,CAAL,GAAgBA,MAAhB;AACA,KAFD;;AAGA,QAAIx2H,MAAM,CAACiS,IAAP,CAAYjS,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBs2H,KAAlB,CAAZ,EAAsCp4G,IAAtC,CAA2C,EAA3C,MACF,sBADF,EAC0B;AACzB,aAAO,KAAP;AACA;;AAED,WAAO,IAAP;AACA,GArCD,CAqCE,OAAOoD,GAAP,EAAY;AACb;AACA,WAAO,KAAP;AACA;AACD;;AAEDnD,MAAM,CAACC,OAAP,GAAiB83G,eAAe,KAAKn2H,MAAM,CAACC,MAAZ,GAAqB,UAAUolB,MAAV,EAAkBuyC,MAAlB,EAA0B;AAC9E,MAAIz2D,IAAJ;AACA,MAAI+jC,EAAE,GAAG6xC,QAAQ,CAAC1xD,MAAD,CAAjB;AACA,MAAIoxG,OAAJ;;AAEA,OAAK,IAAInzH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgJ,SAAS,CAAClJ,MAA9B,EAAsCE,CAAC,EAAvC,EAA2C;AAC1CnC,QAAI,GAAGnB,MAAM,CAACsM,SAAS,CAAChJ,CAAD,CAAV,CAAb;;AAEA,SAAK,IAAI4O,GAAT,IAAgB/Q,IAAhB,EAAsB;AACrB,UAAI2a,cAAc,CAAC7B,IAAf,CAAoB9Y,IAApB,EAA0B+Q,GAA1B,CAAJ,EAAoC;AACnCgzB,UAAE,CAAChzB,GAAD,CAAF,GAAU/Q,IAAI,CAAC+Q,GAAD,CAAd;AACA;AACD;;AAED,QAAIgnD,qBAAJ,EAA2B;AAC1Bu9D,aAAO,GAAGv9D,qBAAqB,CAAC/3D,IAAD,CAA/B;;AACA,WAAK,IAAI8a,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGw6G,OAAO,CAACrzH,MAA5B,EAAoC6Y,CAAC,EAArC,EAAyC;AACxC,YAAIi6G,gBAAgB,CAACj8G,IAAjB,CAAsB9Y,IAAtB,EAA4Bs1H,OAAO,CAACx6G,CAAD,CAAnC,CAAJ,EAA6C;AAC5CipB,YAAE,CAACuxF,OAAO,CAACx6G,CAAD,CAAR,CAAF,GAAiB9a,IAAI,CAACs1H,OAAO,CAACx6G,CAAD,CAAR,CAArB;AACA;AACD;AACD;AACD;;AAED,SAAOipB,EAAP;AACA,CAzBD,C;;;;;;;;;;;AChEA,IAAIwxF,MAAM,GAAG,OAAOzlH,GAAP,KAAe,UAAf,IAA6BA,GAAG,CAACmI,SAA9C;AACA,IAAIu9G,iBAAiB,GAAG32H,MAAM,CAACy7D,wBAAP,IAAmCi7D,MAAnC,GAA4C12H,MAAM,CAACy7D,wBAAP,CAAgCxqD,GAAG,CAACmI,SAApC,EAA+C,MAA/C,CAA5C,GAAqG,IAA7H;AACA,IAAIw9G,OAAO,GAAGF,MAAM,IAAIC,iBAAV,IAA+B,OAAOA,iBAAiB,CAACt3H,GAAzB,KAAiC,UAAhE,GAA6Es3H,iBAAiB,CAACt3H,GAA/F,GAAqG,IAAnH;AACA,IAAIw3H,UAAU,GAAGH,MAAM,IAAIzlH,GAAG,CAACmI,SAAJ,CAAc9J,OAAzC;AACA,IAAIwnH,MAAM,GAAG,OAAOr/G,GAAP,KAAe,UAAf,IAA6BA,GAAG,CAAC2B,SAA9C;AACA,IAAI29G,iBAAiB,GAAG/2H,MAAM,CAACy7D,wBAAP,IAAmCq7D,MAAnC,GAA4C92H,MAAM,CAACy7D,wBAAP,CAAgChkD,GAAG,CAAC2B,SAApC,EAA+C,MAA/C,CAA5C,GAAqG,IAA7H;AACA,IAAI49G,OAAO,GAAGF,MAAM,IAAIC,iBAAV,IAA+B,OAAOA,iBAAiB,CAAC13H,GAAzB,KAAiC,UAAhE,GAA6E03H,iBAAiB,CAAC13H,GAA/F,GAAqG,IAAnH;AACA,IAAI43H,UAAU,GAAGH,MAAM,IAAIr/G,GAAG,CAAC2B,SAAJ,CAAc9J,OAAzC;AACA,IAAI4nH,UAAU,GAAG,OAAOhiH,OAAP,KAAmB,UAAnB,IAAiCA,OAAO,CAACkE,SAA1D;AACA,IAAI+9G,UAAU,GAAGD,UAAU,GAAGhiH,OAAO,CAACkE,SAAR,CAAkBhE,GAArB,GAA2B,IAAtD;AACA,IAAIgiH,UAAU,GAAG,OAAOx5D,OAAP,KAAmB,UAAnB,IAAiCA,OAAO,CAACxkD,SAA1D;AACA,IAAIi+G,UAAU,GAAGD,UAAU,GAAGx5D,OAAO,CAACxkD,SAAR,CAAkBhE,GAArB,GAA2B,IAAtD;AACA,IAAIkiH,UAAU,GAAG,OAAO35D,OAAP,KAAmB,UAAnB,IAAiCA,OAAO,CAACvkD,SAA1D;AACA,IAAIm+G,YAAY,GAAGD,UAAU,GAAG35D,OAAO,CAACvkD,SAAR,CAAkBo+G,KAArB,GAA6B,IAA1D;AACA,IAAIC,cAAc,GAAGp2E,OAAO,CAACjoC,SAAR,CAAkB9T,OAAvC;AACA,IAAIoyH,cAAc,GAAG13H,MAAM,CAACoZ,SAAP,CAAiBY,QAAtC;AACA,IAAI29G,gBAAgB,GAAG38D,QAAQ,CAAC5hD,SAAT,CAAmBY,QAA1C;AACA,IAAI49G,MAAM,GAAGh3F,MAAM,CAACxnB,SAAP,CAAiBmD,KAA9B;AACA,IAAIujG,MAAM,GAAGl/E,MAAM,CAACxnB,SAAP,CAAiBhU,KAA9B;AACA,IAAI64D,QAAQ,GAAGr9B,MAAM,CAACxnB,SAAP,CAAiBsD,OAAhC;AACA,IAAIm7G,YAAY,GAAGj3F,MAAM,CAACxnB,SAAP,CAAiBiU,WAApC;AACA,IAAIyqG,YAAY,GAAGl3F,MAAM,CAACxnB,SAAP,CAAiBqkB,WAApC;AACA,IAAIs6F,KAAK,GAAGj7G,MAAM,CAAC1D,SAAP,CAAiBwJ,IAA7B;AACA,IAAIm7C,OAAO,GAAG78D,KAAK,CAACkY,SAAN,CAAgBghB,MAA9B;AACA,IAAI49F,KAAK,GAAG92H,KAAK,CAACkY,SAAN,CAAgB+E,IAA5B;AACA,IAAI85G,SAAS,GAAG/2H,KAAK,CAACkY,SAAN,CAAgBhU,KAAhC;AACA,IAAI8yH,MAAM,GAAGrsH,IAAI,CAACC,KAAlB;AACA,IAAI4xG,aAAa,GAAG,OAAOnhD,MAAP,KAAkB,UAAlB,GAA+BA,MAAM,CAACnjD,SAAP,CAAiB9T,OAAhD,GAA0D,IAA9E;AACA,IAAI6yH,IAAI,GAAGn4H,MAAM,CAACk5D,qBAAlB;AACA,IAAIk/D,WAAW,GAAG,OAAOt3H,MAAP,KAAkB,UAAlB,IAAgC,OAAOA,MAAM,CAACvC,QAAd,KAA2B,QAA3D,GAAsEuC,MAAM,CAACsY,SAAP,CAAiBY,QAAvF,GAAkG,IAApH;AACA,IAAIq+G,iBAAiB,GAAG,OAAOv3H,MAAP,KAAkB,UAAlB,IAAgC,OAAOA,MAAM,CAACvC,QAAd,KAA2B,QAAnF,C,CACA;;AACA,IAAI4+G,WAAW,GAAG,OAAOr8G,MAAP,KAAkB,UAAlB,IAAgCA,MAAM,CAACq8G,WAAvC,KAAuD,OAAOr8G,MAAM,CAACq8G,WAAd,KAA8Bkb,iBAA9B,GAAkD,QAAlD,GAA6D,QAApH,IACZv3H,MAAM,CAACq8G,WADK,GAEZ,IAFN;AAGA,IAAImb,YAAY,GAAGt4H,MAAM,CAACoZ,SAAP,CAAiB2rD,oBAApC;AAEA,IAAInQ,GAAG,GAAG,CAAC,OAAO0I,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAACzI,cAAxC,GAAyD70D,MAAM,CAAC60D,cAAjE,MACN,GAAGmH,SAAH,KAAiB96D,KAAK,CAACkY,SAAvB,CAAiC;AAAjC,EACM,UAAU+7B,CAAV,EAAa;AACX,SAAOA,CAAC,CAAC6mB,SAAT,CADW,CACS;AACvB,CAHL,GAIM,IALA,CAAV;;AAQA,SAASu8D,mBAAT,CAA6BziH,GAA7B,EAAkCuqB,GAAlC,EAAuC;AACnC,MACIvqB,GAAG,KAAKguF,QAAR,IACGhuF,GAAG,KAAK,CAACguF,QADZ,IAEGhuF,GAAG,KAAKA,GAFX,IAGIA,GAAG,IAAIA,GAAG,GAAG,CAAC,IAAd,IAAsBA,GAAG,GAAG,IAHhC,IAIGiiH,KAAK,CAAC99G,IAAN,CAAW,GAAX,EAAgBomB,GAAhB,CALP,EAME;AACE,WAAOA,GAAP;AACH;;AACD,MAAIm4F,QAAQ,GAAG,kCAAf;;AACA,MAAI,OAAO1iH,GAAP,KAAe,QAAnB,EAA6B;AACzB,QAAI7J,GAAG,GAAG6J,GAAG,GAAG,CAAN,GAAU,CAACoiH,MAAM,CAAC,CAACpiH,GAAF,CAAjB,GAA0BoiH,MAAM,CAACpiH,GAAD,CAA1C,CADyB,CACwB;;AACjD,QAAI7J,GAAG,KAAK6J,GAAZ,EAAiB;AACb,UAAI2iH,MAAM,GAAG73F,MAAM,CAAC30B,GAAD,CAAnB;AACA,UAAIysH,GAAG,GAAG5Y,MAAM,CAAC7lG,IAAP,CAAYomB,GAAZ,EAAiBo4F,MAAM,CAACr1H,MAAP,GAAgB,CAAjC,CAAV;AACA,aAAO66D,QAAQ,CAAChkD,IAAT,CAAcw+G,MAAd,EAAsBD,QAAtB,EAAgC,KAAhC,IAAyC,GAAzC,GAA+Cv6D,QAAQ,CAAChkD,IAAT,CAAcgkD,QAAQ,CAAChkD,IAAT,CAAcy+G,GAAd,EAAmB,aAAnB,EAAkC,KAAlC,CAAd,EAAwD,IAAxD,EAA8D,EAA9D,CAAtD;AACH;AACJ;;AACD,SAAOz6D,QAAQ,CAAChkD,IAAT,CAAcomB,GAAd,EAAmBm4F,QAAnB,EAA6B,KAA7B,CAAP;AACH;;AAED,IAAIG,aAAa,GAAGn6G,mBAAO,CAAC,qEAAD,CAAP,CAA0Bo6G,MAA9C;;AACA,IAAIC,aAAa,GAAGF,aAAa,IAAI7qF,QAAQ,CAAC6qF,aAAD,CAAzB,GAA2CA,aAA3C,GAA2D,IAA/E;;AAEAv6G,MAAM,CAACC,OAAP,GAAiB,SAASy6G,QAAT,CAAkB3mH,GAAlB,EAAuBjU,OAAvB,EAAgC66H,KAAhC,EAAuCC,IAAvC,EAA6C;AAC1D,MAAI1/G,IAAI,GAAGpb,OAAO,IAAI,EAAtB;;AAEA,MAAIkX,GAAG,CAACkE,IAAD,EAAO,YAAP,CAAH,IAA4BA,IAAI,CAAC2/G,UAAL,KAAoB,QAApB,IAAgC3/G,IAAI,CAAC2/G,UAAL,KAAoB,QAApF,EAA+F;AAC3F,UAAM,IAAI1sH,SAAJ,CAAc,kDAAd,CAAN;AACH;;AACD,MACI6I,GAAG,CAACkE,IAAD,EAAO,iBAAP,CAAH,KAAiC,OAAOA,IAAI,CAAC4/G,eAAZ,KAAgC,QAAhC,GAC3B5/G,IAAI,CAAC4/G,eAAL,GAAuB,CAAvB,IAA4B5/G,IAAI,CAAC4/G,eAAL,KAAyBp1B,QAD1B,GAE3BxqF,IAAI,CAAC4/G,eAAL,KAAyB,IAF/B,CADJ,EAKE;AACE,UAAM,IAAI3sH,SAAJ,CAAc,wFAAd,CAAN;AACH;;AACD,MAAI4sH,aAAa,GAAG/jH,GAAG,CAACkE,IAAD,EAAO,eAAP,CAAH,GAA6BA,IAAI,CAAC6/G,aAAlC,GAAkD,IAAtE;;AACA,MAAI,OAAOA,aAAP,KAAyB,SAAzB,IAAsCA,aAAa,KAAK,QAA5D,EAAsE;AAClE,UAAM,IAAI5sH,SAAJ,CAAc,+EAAd,CAAN;AACH;;AAED,MACI6I,GAAG,CAACkE,IAAD,EAAO,QAAP,CAAH,IACGA,IAAI,CAAC8/G,MAAL,KAAgB,IADnB,IAEG9/G,IAAI,CAAC8/G,MAAL,KAAgB,IAFnB,IAGG,EAAE57G,QAAQ,CAAClE,IAAI,CAAC8/G,MAAN,EAAc,EAAd,CAAR,KAA8B9/G,IAAI,CAAC8/G,MAAnC,IAA6C9/G,IAAI,CAAC8/G,MAAL,GAAc,CAA7D,CAJP,EAKE;AACE,UAAM,IAAI7sH,SAAJ,CAAc,0DAAd,CAAN;AACH;;AACD,MAAI6I,GAAG,CAACkE,IAAD,EAAO,kBAAP,CAAH,IAAiC,OAAOA,IAAI,CAAC+/G,gBAAZ,KAAiC,SAAtE,EAAiF;AAC7E,UAAM,IAAI9sH,SAAJ,CAAc,mEAAd,CAAN;AACH;;AACD,MAAI8sH,gBAAgB,GAAG//G,IAAI,CAAC+/G,gBAA5B;;AAEA,MAAI,OAAOlnH,GAAP,KAAe,WAAnB,EAAgC;AAC5B,WAAO,WAAP;AACH;;AACD,MAAIA,GAAG,KAAK,IAAZ,EAAkB;AACd,WAAO,MAAP;AACH;;AACD,MAAI,OAAOA,GAAP,KAAe,SAAnB,EAA8B;AAC1B,WAAOA,GAAG,GAAG,MAAH,GAAY,OAAtB;AACH;;AAED,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAOmnH,aAAa,CAACnnH,GAAD,EAAMmH,IAAN,CAApB;AACH;;AACD,MAAI,OAAOnH,GAAP,KAAe,QAAnB,EAA6B;AACzB,QAAIA,GAAG,KAAK,CAAZ,EAAe;AACX,aAAO2xF,QAAQ,GAAG3xF,GAAX,GAAiB,CAAjB,GAAqB,GAArB,GAA2B,IAAlC;AACH;;AACD,QAAIkuB,GAAG,GAAGO,MAAM,CAACzuB,GAAD,CAAhB;AACA,WAAOknH,gBAAgB,GAAGd,mBAAmB,CAACpmH,GAAD,EAAMkuB,GAAN,CAAtB,GAAmCA,GAA1D;AACH;;AACD,MAAI,OAAOluB,GAAP,KAAe,QAAnB,EAA6B;AACzB,QAAIonH,SAAS,GAAG34F,MAAM,CAACzuB,GAAD,CAAN,GAAc,GAA9B;AACA,WAAOknH,gBAAgB,GAAGd,mBAAmB,CAACpmH,GAAD,EAAMonH,SAAN,CAAtB,GAAyCA,SAAhE;AACH;;AAED,MAAIC,QAAQ,GAAG,OAAOlgH,IAAI,CAACy/G,KAAZ,KAAsB,WAAtB,GAAoC,CAApC,GAAwCz/G,IAAI,CAACy/G,KAA5D;;AACA,MAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;AAAEA,SAAK,GAAG,CAAR;AAAY;;AAChD,MAAIA,KAAK,IAAIS,QAAT,IAAqBA,QAAQ,GAAG,CAAhC,IAAqC,OAAOrnH,GAAP,KAAe,QAAxD,EAAkE;AAC9D,WAAOzN,OAAO,CAACyN,GAAD,CAAP,GAAe,SAAf,GAA2B,UAAlC;AACH;;AAED,MAAIinH,MAAM,GAAGK,SAAS,CAACngH,IAAD,EAAOy/G,KAAP,CAAtB;;AAEA,MAAI,OAAOC,IAAP,KAAgB,WAApB,EAAiC;AAC7BA,QAAI,GAAG,EAAP;AACH,GAFD,MAEO,IAAI5tH,OAAO,CAAC4tH,IAAD,EAAO7mH,GAAP,CAAP,IAAsB,CAA1B,EAA6B;AAChC,WAAO,YAAP;AACH;;AAED,WAASunH,OAAT,CAAiB/8H,KAAjB,EAAwBwE,IAAxB,EAA8Bw4H,QAA9B,EAAwC;AACpC,QAAIx4H,IAAJ,EAAU;AACN63H,UAAI,GAAGf,SAAS,CAACh+G,IAAV,CAAe++G,IAAf,CAAP;AACAA,UAAI,CAAC/2H,IAAL,CAAUd,IAAV;AACH;;AACD,QAAIw4H,QAAJ,EAAc;AACV,UAAIC,OAAO,GAAG;AACVb,aAAK,EAAEz/G,IAAI,CAACy/G;AADF,OAAd;;AAGA,UAAI3jH,GAAG,CAACkE,IAAD,EAAO,YAAP,CAAP,EAA6B;AACzBsgH,eAAO,CAACX,UAAR,GAAqB3/G,IAAI,CAAC2/G,UAA1B;AACH;;AACD,aAAOH,QAAQ,CAACn8H,KAAD,EAAQi9H,OAAR,EAAiBb,KAAK,GAAG,CAAzB,EAA4BC,IAA5B,CAAf;AACH;;AACD,WAAOF,QAAQ,CAACn8H,KAAD,EAAQ2c,IAAR,EAAcy/G,KAAK,GAAG,CAAtB,EAAyBC,IAAzB,CAAf;AACH;;AAED,MAAI,OAAO7mH,GAAP,KAAe,UAAnB,EAA+B;AAC3B,QAAI/L,IAAI,GAAGyzH,MAAM,CAAC1nH,GAAD,CAAjB;AACA,QAAIF,IAAI,GAAG6nH,UAAU,CAAC3nH,GAAD,EAAMunH,OAAN,CAArB;AACA,WAAO,eAAetzH,IAAI,GAAG,OAAOA,IAAV,GAAiB,cAApC,IAAsD,GAAtD,IAA6D6L,IAAI,CAAC7O,MAAL,GAAc,CAAd,GAAkB,QAAQ40H,KAAK,CAAC/9G,IAAN,CAAWhI,IAAX,EAAiB,IAAjB,CAAR,GAAiC,IAAnD,GAA0D,EAAvH,CAAP;AACH;;AACD,MAAI67B,QAAQ,CAAC37B,GAAD,CAAZ,EAAmB;AACf,QAAI4nH,SAAS,GAAG1B,iBAAiB,GAAGp6D,QAAQ,CAAChkD,IAAT,CAAc2mB,MAAM,CAACzuB,GAAD,CAApB,EAA2B,wBAA3B,EAAqD,IAArD,CAAH,GAAgEimH,WAAW,CAACn+G,IAAZ,CAAiB9H,GAAjB,CAAjG;AACA,WAAO,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACkmH,iBAA5B,GAAgD2B,SAAS,CAACD,SAAD,CAAzD,GAAuEA,SAA9E;AACH;;AACD,MAAIE,SAAS,CAAC9nH,GAAD,CAAb,EAAoB;AAChB,QAAI7O,CAAC,GAAG,MAAMw0H,YAAY,CAAC79G,IAAb,CAAkB2mB,MAAM,CAACzuB,GAAG,CAAC+nH,QAAL,CAAxB,CAAd;AACA,QAAIC,KAAK,GAAGhoH,GAAG,CAACioH,UAAJ,IAAkB,EAA9B;;AACA,SAAK,IAAIn+G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGk+G,KAAK,CAAC/2H,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACnC3Y,OAAC,IAAI,MAAM62H,KAAK,CAACl+G,CAAD,CAAL,CAAS7V,IAAf,GAAsB,GAAtB,GAA4Bi0H,UAAU,CAACj2F,KAAK,CAAC+1F,KAAK,CAACl+G,CAAD,CAAL,CAAStf,KAAV,CAAN,EAAwB,QAAxB,EAAkC2c,IAAlC,CAA3C;AACH;;AACDhW,KAAC,IAAI,GAAL;;AACA,QAAI6O,GAAG,CAACmoH,UAAJ,IAAkBnoH,GAAG,CAACmoH,UAAJ,CAAel3H,MAArC,EAA6C;AAAEE,OAAC,IAAI,KAAL;AAAa;;AAC5DA,KAAC,IAAI,OAAOw0H,YAAY,CAAC79G,IAAb,CAAkB2mB,MAAM,CAACzuB,GAAG,CAAC+nH,QAAL,CAAxB,CAAP,GAAiD,GAAtD;AACA,WAAO52H,CAAP;AACH;;AACD,MAAIoB,OAAO,CAACyN,GAAD,CAAX,EAAkB;AACd,QAAIA,GAAG,CAAC/O,MAAJ,KAAe,CAAnB,EAAsB;AAAE,aAAO,IAAP;AAAc;;AACtC,QAAIm3H,EAAE,GAAGT,UAAU,CAAC3nH,GAAD,EAAMunH,OAAN,CAAnB;;AACA,QAAIN,MAAM,IAAI,CAACoB,gBAAgB,CAACD,EAAD,CAA/B,EAAqC;AACjC,aAAO,MAAME,YAAY,CAACF,EAAD,EAAKnB,MAAL,CAAlB,GAAiC,GAAxC;AACH;;AACD,WAAO,OAAOpB,KAAK,CAAC/9G,IAAN,CAAWsgH,EAAX,EAAe,IAAf,CAAP,GAA8B,IAArC;AACH;;AACD,MAAIG,OAAO,CAACvoH,GAAD,CAAX,EAAkB;AACd,QAAIqd,KAAK,GAAGsqG,UAAU,CAAC3nH,GAAD,EAAMunH,OAAN,CAAtB;;AACA,QAAI,WAAWvnH,GAAX,IAAkB,CAACmmH,YAAY,CAACr+G,IAAb,CAAkB9H,GAAlB,EAAuB,OAAvB,CAAvB,EAAwD;AACpD,aAAO,QAAQyuB,MAAM,CAACzuB,GAAD,CAAd,GAAsB,IAAtB,GAA6B6lH,KAAK,CAAC/9G,IAAN,CAAW8jD,OAAO,CAAC9jD,IAAR,CAAa,cAAcy/G,OAAO,CAACvnH,GAAG,CAACwoH,KAAL,CAAlC,EAA+CnrG,KAA/C,CAAX,EAAkE,IAAlE,CAA7B,GAAuG,IAA9G;AACH;;AACD,QAAIA,KAAK,CAACpsB,MAAN,KAAiB,CAArB,EAAwB;AAAE,aAAO,MAAMw9B,MAAM,CAACzuB,GAAD,CAAZ,GAAoB,GAA3B;AAAiC;;AAC3D,WAAO,QAAQyuB,MAAM,CAACzuB,GAAD,CAAd,GAAsB,IAAtB,GAA6B6lH,KAAK,CAAC/9G,IAAN,CAAWuV,KAAX,EAAkB,IAAlB,CAA7B,GAAuD,IAA9D;AACH;;AACD,MAAI,OAAOrd,GAAP,KAAe,QAAf,IAA2BgnH,aAA/B,EAA8C;AAC1C,QAAIN,aAAa,IAAI,OAAO1mH,GAAG,CAAC0mH,aAAD,CAAV,KAA8B,UAAnD,EAA+D;AAC3D,aAAO1mH,GAAG,CAAC0mH,aAAD,CAAH,EAAP;AACH,KAFD,MAEO,IAAIM,aAAa,KAAK,QAAlB,IAA8B,OAAOhnH,GAAG,CAACunH,OAAX,KAAuB,UAAzD,EAAqE;AACxE,aAAOvnH,GAAG,CAACunH,OAAJ,EAAP;AACH;AACJ;;AACD,MAAI5/D,KAAK,CAAC3nD,GAAD,CAAT,EAAgB;AACZ,QAAIyoH,QAAQ,GAAG,EAAf;AACA/D,cAAU,CAAC58G,IAAX,CAAgB9H,GAAhB,EAAqB,UAAUxV,KAAV,EAAiBuV,GAAjB,EAAsB;AACvC0oH,cAAQ,CAAC34H,IAAT,CAAcy3H,OAAO,CAACxnH,GAAD,EAAMC,GAAN,EAAW,IAAX,CAAP,GAA0B,MAA1B,GAAmCunH,OAAO,CAAC/8H,KAAD,EAAQwV,GAAR,CAAxD;AACH,KAFD;AAGA,WAAO0oH,YAAY,CAAC,KAAD,EAAQjE,OAAO,CAAC38G,IAAR,CAAa9H,GAAb,CAAR,EAA2ByoH,QAA3B,EAAqCxB,MAArC,CAAnB;AACH;;AACD,MAAIr/D,KAAK,CAAC5nD,GAAD,CAAT,EAAgB;AACZ,QAAI2oH,QAAQ,GAAG,EAAf;AACA7D,cAAU,CAACh9G,IAAX,CAAgB9H,GAAhB,EAAqB,UAAUxV,KAAV,EAAiB;AAClCm+H,cAAQ,CAAC74H,IAAT,CAAcy3H,OAAO,CAAC/8H,KAAD,EAAQwV,GAAR,CAArB;AACH,KAFD;AAGA,WAAO0oH,YAAY,CAAC,KAAD,EAAQ7D,OAAO,CAAC/8G,IAAR,CAAa9H,GAAb,CAAR,EAA2B2oH,QAA3B,EAAqC1B,MAArC,CAAnB;AACH;;AACD,MAAIzY,SAAS,CAACxuG,GAAD,CAAb,EAAoB;AAChB,WAAO4oH,gBAAgB,CAAC,SAAD,CAAvB;AACH;;AACD,MAAIna,SAAS,CAACzuG,GAAD,CAAb,EAAoB;AAChB,WAAO4oH,gBAAgB,CAAC,SAAD,CAAvB;AACH;;AACD,MAAIC,SAAS,CAAC7oH,GAAD,CAAb,EAAoB;AAChB,WAAO4oH,gBAAgB,CAAC,SAAD,CAAvB;AACH;;AACD,MAAIt7D,QAAQ,CAACttD,GAAD,CAAZ,EAAmB;AACf,WAAO6nH,SAAS,CAACN,OAAO,CAAC/4H,MAAM,CAACwR,GAAD,CAAP,CAAR,CAAhB;AACH;;AACD,MAAI0rG,QAAQ,CAAC1rG,GAAD,CAAZ,EAAmB;AACf,WAAO6nH,SAAS,CAACN,OAAO,CAAChc,aAAa,CAACzjG,IAAd,CAAmB9H,GAAnB,CAAD,CAAR,CAAhB;AACH;;AACD,MAAIqtD,SAAS,CAACrtD,GAAD,CAAb,EAAoB;AAChB,WAAO6nH,SAAS,CAACvC,cAAc,CAACx9G,IAAf,CAAoB9H,GAApB,CAAD,CAAhB;AACH;;AACD,MAAIqJ,QAAQ,CAACrJ,GAAD,CAAZ,EAAmB;AACf,WAAO6nH,SAAS,CAACN,OAAO,CAAC94F,MAAM,CAACzuB,GAAD,CAAP,CAAR,CAAhB;AACH;;AACD,MAAI,CAAC9L,MAAM,CAAC8L,GAAD,CAAP,IAAgB,CAAC85B,QAAQ,CAAC95B,GAAD,CAA7B,EAAoC;AAChC,QAAI8oH,EAAE,GAAGnB,UAAU,CAAC3nH,GAAD,EAAMunH,OAAN,CAAnB;AACA,QAAIwB,aAAa,GAAGtmE,GAAG,GAAGA,GAAG,CAACziD,GAAD,CAAH,KAAanS,MAAM,CAACoZ,SAAvB,GAAmCjH,GAAG,YAAYnS,MAAf,IAAyBmS,GAAG,CAAClW,WAAJ,KAAoB+D,MAAvG;AACA,QAAIm7H,QAAQ,GAAGhpH,GAAG,YAAYnS,MAAf,GAAwB,EAAxB,GAA6B,gBAA5C;AACA,QAAIo7H,SAAS,GAAG,CAACF,aAAD,IAAkB/d,WAAlB,IAAiCn9G,MAAM,CAACmS,GAAD,CAAN,KAAgBA,GAAjD,IAAwDgrG,WAAW,IAAIhrG,GAAvE,GAA6E2tG,MAAM,CAAC7lG,IAAP,CAAYu+C,KAAK,CAACrmD,GAAD,CAAjB,EAAwB,CAAxB,EAA2B,CAAC,CAA5B,CAA7E,GAA8GgpH,QAAQ,GAAG,QAAH,GAAc,EAApJ;AACA,QAAIE,cAAc,GAAGH,aAAa,IAAI,OAAO/oH,GAAG,CAAClW,WAAX,KAA2B,UAA5C,GAAyD,EAAzD,GAA8DkW,GAAG,CAAClW,WAAJ,CAAgBmK,IAAhB,GAAuB+L,GAAG,CAAClW,WAAJ,CAAgBmK,IAAhB,GAAuB,GAA9C,GAAoD,EAAvI;AACA,QAAIo6G,GAAG,GAAG6a,cAAc,IAAID,SAAS,IAAID,QAAb,GAAwB,MAAMnD,KAAK,CAAC/9G,IAAN,CAAW8jD,OAAO,CAAC9jD,IAAR,CAAa,EAAb,EAAiBmhH,SAAS,IAAI,EAA9B,EAAkCD,QAAQ,IAAI,EAA9C,CAAX,EAA8D,IAA9D,CAAN,GAA4E,IAApG,GAA2G,EAA/G,CAAxB;;AACA,QAAIF,EAAE,CAAC73H,MAAH,KAAc,CAAlB,EAAqB;AAAE,aAAOo9G,GAAG,GAAG,IAAb;AAAoB;;AAC3C,QAAI4Y,MAAJ,EAAY;AACR,aAAO5Y,GAAG,GAAG,GAAN,GAAYia,YAAY,CAACQ,EAAD,EAAK7B,MAAL,CAAxB,GAAuC,GAA9C;AACH;;AACD,WAAO5Y,GAAG,GAAG,IAAN,GAAawX,KAAK,CAAC/9G,IAAN,CAAWghH,EAAX,EAAe,IAAf,CAAb,GAAoC,IAA3C;AACH;;AACD,SAAOr6F,MAAM,CAACzuB,GAAD,CAAb;AACH,CApLD;;AAsLA,SAASkoH,UAAT,CAAoB/2H,CAApB,EAAuBg4H,YAAvB,EAAqChiH,IAArC,EAA2C;AACvC,MAAIiiH,SAAS,GAAG,CAACjiH,IAAI,CAAC2/G,UAAL,IAAmBqC,YAApB,MAAsC,QAAtC,GAAiD,GAAjD,GAAuD,GAAvE;AACA,SAAOC,SAAS,GAAGj4H,CAAZ,GAAgBi4H,SAAvB;AACH;;AAED,SAASn3F,KAAT,CAAe9gC,CAAf,EAAkB;AACd,SAAO26D,QAAQ,CAAChkD,IAAT,CAAc2mB,MAAM,CAACt9B,CAAD,CAApB,EAAyB,IAAzB,EAA+B,QAA/B,CAAP;AACH;;AAED,SAASoB,OAAT,CAAiByN,GAAjB,EAAsB;AAAE,SAAOqmD,KAAK,CAACrmD,GAAD,CAAL,KAAe,gBAAf,KAAoC,CAACgrG,WAAD,IAAgB,EAAE,OAAOhrG,GAAP,KAAe,QAAf,IAA2BgrG,WAAW,IAAIhrG,GAA5C,CAApD,CAAP;AAA+G;;AACvI,SAAS9L,MAAT,CAAgB8L,GAAhB,EAAqB;AAAE,SAAOqmD,KAAK,CAACrmD,GAAD,CAAL,KAAe,eAAf,KAAmC,CAACgrG,WAAD,IAAgB,EAAE,OAAOhrG,GAAP,KAAe,QAAf,IAA2BgrG,WAAW,IAAIhrG,GAA5C,CAAnD,CAAP;AAA8G;;AACrI,SAAS85B,QAAT,CAAkB95B,GAAlB,EAAuB;AAAE,SAAOqmD,KAAK,CAACrmD,GAAD,CAAL,KAAe,iBAAf,KAAqC,CAACgrG,WAAD,IAAgB,EAAE,OAAOhrG,GAAP,KAAe,QAAf,IAA2BgrG,WAAW,IAAIhrG,GAA5C,CAArD,CAAP;AAAgH;;AACzI,SAASuoH,OAAT,CAAiBvoH,GAAjB,EAAsB;AAAE,SAAOqmD,KAAK,CAACrmD,GAAD,CAAL,KAAe,gBAAf,KAAoC,CAACgrG,WAAD,IAAgB,EAAE,OAAOhrG,GAAP,KAAe,QAAf,IAA2BgrG,WAAW,IAAIhrG,GAA5C,CAApD,CAAP;AAA+G;;AACvI,SAASqJ,QAAT,CAAkBrJ,GAAlB,EAAuB;AAAE,SAAOqmD,KAAK,CAACrmD,GAAD,CAAL,KAAe,iBAAf,KAAqC,CAACgrG,WAAD,IAAgB,EAAE,OAAOhrG,GAAP,KAAe,QAAf,IAA2BgrG,WAAW,IAAIhrG,GAA5C,CAArD,CAAP;AAAgH;;AACzI,SAASstD,QAAT,CAAkBttD,GAAlB,EAAuB;AAAE,SAAOqmD,KAAK,CAACrmD,GAAD,CAAL,KAAe,iBAAf,KAAqC,CAACgrG,WAAD,IAAgB,EAAE,OAAOhrG,GAAP,KAAe,QAAf,IAA2BgrG,WAAW,IAAIhrG,GAA5C,CAArD,CAAP;AAAgH;;AACzI,SAASqtD,SAAT,CAAmBrtD,GAAnB,EAAwB;AAAE,SAAOqmD,KAAK,CAACrmD,GAAD,CAAL,KAAe,kBAAf,KAAsC,CAACgrG,WAAD,IAAgB,EAAE,OAAOhrG,GAAP,KAAe,QAAf,IAA2BgrG,WAAW,IAAIhrG,GAA5C,CAAtD,CAAP;AAAiH,C,CAE3I;;;AACA,SAAS27B,QAAT,CAAkB37B,GAAlB,EAAuB;AACnB,MAAIkmH,iBAAJ,EAAuB;AACnB,WAAOlmH,GAAG,IAAI,OAAOA,GAAP,KAAe,QAAtB,IAAkCA,GAAG,YAAYrR,MAAxD;AACH;;AACD,MAAI,OAAOqR,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAO,IAAP;AACH;;AACD,MAAI,CAACA,GAAD,IAAQ,OAAOA,GAAP,KAAe,QAAvB,IAAmC,CAACimH,WAAxC,EAAqD;AACjD,WAAO,KAAP;AACH;;AACD,MAAI;AACAA,eAAW,CAACn+G,IAAZ,CAAiB9H,GAAjB;AACA,WAAO,IAAP;AACH,GAHD,CAGE,OAAOuU,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACH;;AAED,SAASm3F,QAAT,CAAkB1rG,GAAlB,EAAuB;AACnB,MAAI,CAACA,GAAD,IAAQ,OAAOA,GAAP,KAAe,QAAvB,IAAmC,CAACurG,aAAxC,EAAuD;AACnD,WAAO,KAAP;AACH;;AACD,MAAI;AACAA,iBAAa,CAACzjG,IAAd,CAAmB9H,GAAnB;AACA,WAAO,IAAP;AACH,GAHD,CAGE,OAAOuU,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACH;;AAED,IAAI8zC,MAAM,GAAGx6D,MAAM,CAACoZ,SAAP,CAAiB0C,cAAjB,IAAmC,UAAU5J,GAAV,EAAe;AAAE,SAAOA,GAAG,IAAI,IAAd;AAAqB,CAAtF;;AACA,SAASkD,GAAT,CAAajD,GAAb,EAAkBD,GAAlB,EAAuB;AACnB,SAAOsoD,MAAM,CAACvgD,IAAP,CAAY9H,GAAZ,EAAiBD,GAAjB,CAAP;AACH;;AAED,SAASsmD,KAAT,CAAermD,GAAf,EAAoB;AAChB,SAAOulH,cAAc,CAACz9G,IAAf,CAAoB9H,GAApB,CAAP;AACH;;AAED,SAAS0nH,MAAT,CAAgB5vF,CAAhB,EAAmB;AACf,MAAIA,CAAC,CAAC7jC,IAAN,EAAY;AAAE,WAAO6jC,CAAC,CAAC7jC,IAAT;AAAgB;;AAC9B,MAAIkuC,CAAC,GAAGsjF,MAAM,CAAC39G,IAAP,CAAY09G,gBAAgB,CAAC19G,IAAjB,CAAsBgwB,CAAtB,CAAZ,EAAsC,sBAAtC,CAAR;;AACA,MAAIqK,CAAJ,EAAO;AAAE,WAAOA,CAAC,CAAC,CAAD,CAAR;AAAc;;AACvB,SAAO,IAAP;AACH;;AAED,SAASlpC,OAAT,CAAiBmvH,EAAjB,EAAqBzvH,CAArB,EAAwB;AACpB,MAAIyvH,EAAE,CAACnvH,OAAP,EAAgB;AAAE,WAAOmvH,EAAE,CAACnvH,OAAH,CAAWN,CAAX,CAAP;AAAuB;;AACzC,OAAK,IAAImR,CAAC,GAAG,CAAR,EAAW4e,CAAC,GAAG0/F,EAAE,CAACn3H,MAAvB,EAA+B6Y,CAAC,GAAG4e,CAAnC,EAAsC5e,CAAC,EAAvC,EAA2C;AACvC,QAAIs+G,EAAE,CAACt+G,CAAD,CAAF,KAAUnR,CAAd,EAAiB;AAAE,aAAOmR,CAAP;AAAW;AACjC;;AACD,SAAO,CAAC,CAAR;AACH;;AAED,SAAS69C,KAAT,CAAehvD,CAAf,EAAkB;AACd,MAAI,CAAC8rH,OAAD,IAAY,CAAC9rH,CAAb,IAAkB,OAAOA,CAAP,KAAa,QAAnC,EAA6C;AACzC,WAAO,KAAP;AACH;;AACD,MAAI;AACA8rH,WAAO,CAAC38G,IAAR,CAAanP,CAAb;;AACA,QAAI;AACAksH,aAAO,CAAC/8G,IAAR,CAAanP,CAAb;AACH,KAFD,CAEE,OAAOxH,CAAP,EAAU;AACR,aAAO,IAAP;AACH;;AACD,WAAOwH,CAAC,YAAYmG,GAApB,CAPA,CAOyB;AAC5B,GARD,CAQE,OAAOyV,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACH;;AAED,SAASi6F,SAAT,CAAmB71G,CAAnB,EAAsB;AAClB,MAAI,CAACqsH,UAAD,IAAe,CAACrsH,CAAhB,IAAqB,OAAOA,CAAP,KAAa,QAAtC,EAAgD;AAC5C,WAAO,KAAP;AACH;;AACD,MAAI;AACAqsH,cAAU,CAACl9G,IAAX,CAAgBnP,CAAhB,EAAmBqsH,UAAnB;;AACA,QAAI;AACAE,gBAAU,CAACp9G,IAAX,CAAgBnP,CAAhB,EAAmBusH,UAAnB;AACH,KAFD,CAEE,OAAO/zH,CAAP,EAAU;AACR,aAAO,IAAP;AACH;;AACD,WAAOwH,CAAC,YAAYoK,OAApB,CAPA,CAO6B;AAChC,GARD,CAQE,OAAOwR,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACH;;AAED,SAASs0G,SAAT,CAAmBlwH,CAAnB,EAAsB;AAClB,MAAI,CAACysH,YAAD,IAAiB,CAACzsH,CAAlB,IAAuB,OAAOA,CAAP,KAAa,QAAxC,EAAkD;AAC9C,WAAO,KAAP;AACH;;AACD,MAAI;AACAysH,gBAAY,CAACt9G,IAAb,CAAkBnP,CAAlB;AACA,WAAO,IAAP;AACH,GAHD,CAGE,OAAO4b,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACH;;AAED,SAASqzC,KAAT,CAAejvD,CAAf,EAAkB;AACd,MAAI,CAACksH,OAAD,IAAY,CAAClsH,CAAb,IAAkB,OAAOA,CAAP,KAAa,QAAnC,EAA6C;AACzC,WAAO,KAAP;AACH;;AACD,MAAI;AACAksH,WAAO,CAAC/8G,IAAR,CAAanP,CAAb;;AACA,QAAI;AACA8rH,aAAO,CAAC38G,IAAR,CAAanP,CAAb;AACH,KAFD,CAEE,OAAOwpC,CAAP,EAAU;AACR,aAAO,IAAP;AACH;;AACD,WAAOxpC,CAAC,YAAY2M,GAApB,CAPA,CAOyB;AAC5B,GARD,CAQE,OAAOiP,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACH;;AAED,SAASk6F,SAAT,CAAmB91G,CAAnB,EAAsB;AAClB,MAAI,CAACusH,UAAD,IAAe,CAACvsH,CAAhB,IAAqB,OAAOA,CAAP,KAAa,QAAtC,EAAgD;AAC5C,WAAO,KAAP;AACH;;AACD,MAAI;AACAusH,cAAU,CAACp9G,IAAX,CAAgBnP,CAAhB,EAAmBusH,UAAnB;;AACA,QAAI;AACAF,gBAAU,CAACl9G,IAAX,CAAgBnP,CAAhB,EAAmBqsH,UAAnB;AACH,KAFD,CAEE,OAAO7zH,CAAP,EAAU;AACR,aAAO,IAAP;AACH;;AACD,WAAOwH,CAAC,YAAY8yD,OAApB,CAPA,CAO6B;AAChC,GARD,CAQE,OAAOl3C,CAAP,EAAU,CAAE;;AACd,SAAO,KAAP;AACH;;AAED,SAASuzG,SAAT,CAAmBnvH,CAAnB,EAAsB;AAClB,MAAI,CAACA,CAAD,IAAM,OAAOA,CAAP,KAAa,QAAvB,EAAiC;AAAE,WAAO,KAAP;AAAe;;AAClD,MAAI,OAAO0wH,WAAP,KAAuB,WAAvB,IAAsC1wH,CAAC,YAAY0wH,WAAvD,EAAoE;AAChE,WAAO,IAAP;AACH;;AACD,SAAO,OAAO1wH,CAAC,CAACovH,QAAT,KAAsB,QAAtB,IAAkC,OAAOpvH,CAAC,CAACu2D,YAAT,KAA0B,UAAnE;AACH;;AAED,SAASi4D,aAAT,CAAuBj5F,GAAvB,EAA4B/mB,IAA5B,EAAkC;AAC9B,MAAI+mB,GAAG,CAACj9B,MAAJ,GAAakW,IAAI,CAAC4/G,eAAtB,EAAuC;AACnC,QAAIuC,SAAS,GAAGp7F,GAAG,CAACj9B,MAAJ,GAAakW,IAAI,CAAC4/G,eAAlC;AACA,QAAIwC,OAAO,GAAG,SAASD,SAAT,GAAqB,iBAArB,IAA0CA,SAAS,GAAG,CAAZ,GAAgB,GAAhB,GAAsB,EAAhE,CAAd;AACA,WAAOnC,aAAa,CAACxZ,MAAM,CAAC7lG,IAAP,CAAYomB,GAAZ,EAAiB,CAAjB,EAAoB/mB,IAAI,CAAC4/G,eAAzB,CAAD,EAA4C5/G,IAA5C,CAAb,GAAiEoiH,OAAxE;AACH,GAL6B,CAM9B;;;AACA,MAAIp4H,CAAC,GAAG26D,QAAQ,CAAChkD,IAAT,CAAcgkD,QAAQ,CAAChkD,IAAT,CAAcomB,GAAd,EAAmB,UAAnB,EAA+B,MAA/B,CAAd,EAAsD,cAAtD,EAAsEs7F,OAAtE,CAAR;AACA,SAAOtB,UAAU,CAAC/2H,CAAD,EAAI,QAAJ,EAAcgW,IAAd,CAAjB;AACH;;AAED,SAASqiH,OAAT,CAAiBjqG,CAAjB,EAAoB;AAChB,MAAI8K,CAAC,GAAG9K,CAAC,CAACjW,UAAF,CAAa,CAAb,CAAR;AACA,MAAI3Q,CAAC,GAAG;AACJ,OAAG,GADC;AAEJ,OAAG,GAFC;AAGJ,QAAI,GAHA;AAIJ,QAAI,GAJA;AAKJ,QAAI;AALA,IAMN0xB,CANM,CAAR;;AAOA,MAAI1xB,CAAJ,EAAO;AAAE,WAAO,OAAOA,CAAd;AAAkB;;AAC3B,SAAO,SAAS0xB,CAAC,GAAG,IAAJ,GAAW,GAAX,GAAiB,EAA1B,IAAgCq7F,YAAY,CAAC59G,IAAb,CAAkBuiB,CAAC,CAACxiB,QAAF,CAAW,EAAX,CAAlB,CAAvC;AACH;;AAED,SAASggH,SAAT,CAAmB35F,GAAnB,EAAwB;AACpB,SAAO,YAAYA,GAAZ,GAAkB,GAAzB;AACH;;AAED,SAAS06F,gBAAT,CAA0BxhH,IAA1B,EAAgC;AAC5B,SAAOA,IAAI,GAAG,QAAd;AACH;;AAED,SAASshH,YAAT,CAAsBthH,IAAtB,EAA4BwN,IAA5B,EAAkCnC,OAAlC,EAA2Cw0G,MAA3C,EAAmD;AAC/C,MAAIwC,aAAa,GAAGxC,MAAM,GAAGqB,YAAY,CAAC71G,OAAD,EAAUw0G,MAAV,CAAf,GAAmCpB,KAAK,CAAC/9G,IAAN,CAAW2K,OAAX,EAAoB,IAApB,CAA7D;AACA,SAAOrL,IAAI,GAAG,IAAP,GAAcwN,IAAd,GAAqB,KAArB,GAA6B60G,aAA7B,GAA6C,GAApD;AACH;;AAED,SAASpB,gBAAT,CAA0BD,EAA1B,EAA8B;AAC1B,OAAK,IAAIt+G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGs+G,EAAE,CAACn3H,MAAvB,EAA+B6Y,CAAC,EAAhC,EAAoC;AAChC,QAAI7Q,OAAO,CAACmvH,EAAE,CAACt+G,CAAD,CAAH,EAAQ,IAAR,CAAP,IAAwB,CAA5B,EAA+B;AAC3B,aAAO,KAAP;AACH;AACJ;;AACD,SAAO,IAAP;AACH;;AAED,SAASw9G,SAAT,CAAmBngH,IAAnB,EAAyBy/G,KAAzB,EAAgC;AAC5B,MAAI8C,UAAJ;;AACA,MAAIviH,IAAI,CAAC8/G,MAAL,KAAgB,IAApB,EAA0B;AACtByC,cAAU,GAAG,IAAb;AACH,GAFD,MAEO,IAAI,OAAOviH,IAAI,CAAC8/G,MAAZ,KAAuB,QAAvB,IAAmC9/G,IAAI,CAAC8/G,MAAL,GAAc,CAArD,EAAwD;AAC3DyC,cAAU,GAAG7D,KAAK,CAAC/9G,IAAN,CAAW/Y,KAAK,CAACoY,IAAI,CAAC8/G,MAAL,GAAc,CAAf,CAAhB,EAAmC,GAAnC,CAAb;AACH,GAFM,MAEA;AACH,WAAO,IAAP;AACH;;AACD,SAAO;AACH57H,QAAI,EAAEq+H,UADH;AAEHv+H,QAAI,EAAE06H,KAAK,CAAC/9G,IAAN,CAAW/Y,KAAK,CAAC63H,KAAK,GAAG,CAAT,CAAhB,EAA6B8C,UAA7B;AAFH,GAAP;AAIH;;AAED,SAASpB,YAAT,CAAsBF,EAAtB,EAA0BnB,MAA1B,EAAkC;AAC9B,MAAImB,EAAE,CAACn3H,MAAH,KAAc,CAAlB,EAAqB;AAAE,WAAO,EAAP;AAAY;;AACnC,MAAI04H,UAAU,GAAG,OAAO1C,MAAM,CAAC97H,IAAd,GAAqB87H,MAAM,CAAC57H,IAA7C;AACA,SAAOs+H,UAAU,GAAG9D,KAAK,CAAC/9G,IAAN,CAAWsgH,EAAX,EAAe,MAAMuB,UAArB,CAAb,GAAgD,IAAhD,GAAuD1C,MAAM,CAAC97H,IAArE;AACH;;AAED,SAASw8H,UAAT,CAAoB3nH,GAApB,EAAyBunH,OAAzB,EAAkC;AAC9B,MAAIqC,KAAK,GAAGr3H,OAAO,CAACyN,GAAD,CAAnB;AACA,MAAIooH,EAAE,GAAG,EAAT;;AACA,MAAIwB,KAAJ,EAAW;AACPxB,MAAE,CAACn3H,MAAH,GAAY+O,GAAG,CAAC/O,MAAhB;;AACA,SAAK,IAAI6Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9J,GAAG,CAAC/O,MAAxB,EAAgC6Y,CAAC,EAAjC,EAAqC;AACjCs+G,QAAE,CAACt+G,CAAD,CAAF,GAAQ7G,GAAG,CAACjD,GAAD,EAAM8J,CAAN,CAAH,GAAcy9G,OAAO,CAACvnH,GAAG,CAAC8J,CAAD,CAAJ,EAAS9J,GAAT,CAArB,GAAqC,EAA7C;AACH;AACJ;;AACD,MAAI6qG,IAAI,GAAG,OAAOmb,IAAP,KAAgB,UAAhB,GAA6BA,IAAI,CAAChmH,GAAD,CAAjC,GAAyC,EAApD;AACA,MAAI6pH,MAAJ;;AACA,MAAI3D,iBAAJ,EAAuB;AACnB2D,UAAM,GAAG,EAAT;;AACA,SAAK,IAAIzqG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyrF,IAAI,CAAC55G,MAAzB,EAAiCmuB,CAAC,EAAlC,EAAsC;AAClCyqG,YAAM,CAAC,MAAMhf,IAAI,CAACzrF,CAAD,CAAX,CAAN,GAAwByrF,IAAI,CAACzrF,CAAD,CAA5B;AACH;AACJ;;AAED,OAAK,IAAIrf,GAAT,IAAgBC,GAAhB,EAAqB;AAAE;AACnB,QAAI,CAACiD,GAAG,CAACjD,GAAD,EAAMD,GAAN,CAAR,EAAoB;AAAE;AAAW,KADhB,CACiB;;;AAClC,QAAI6pH,KAAK,IAAIn7F,MAAM,CAACjgC,MAAM,CAACuR,GAAD,CAAP,CAAN,KAAwBA,GAAjC,IAAwCA,GAAG,GAAGC,GAAG,CAAC/O,MAAtD,EAA8D;AAAE;AAAW,KAF1D,CAE2D;;;AAC5E,QAAIi1H,iBAAiB,IAAI2D,MAAM,CAAC,MAAM9pH,GAAP,CAAN,YAA6BpR,MAAtD,EAA8D;AAC1D;AACA,eAF0D,CAEhD;AACb,KAHD,MAGO,IAAIi3H,KAAK,CAAC99G,IAAN,CAAW,QAAX,EAAqB/H,GAArB,CAAJ,EAA+B;AAClCqoH,QAAE,CAACt4H,IAAH,CAAQy3H,OAAO,CAACxnH,GAAD,EAAMC,GAAN,CAAP,GAAoB,IAApB,GAA2BunH,OAAO,CAACvnH,GAAG,CAACD,GAAD,CAAJ,EAAWC,GAAX,CAA1C;AACH,KAFM,MAEA;AACHooH,QAAE,CAACt4H,IAAH,CAAQiQ,GAAG,GAAG,IAAN,GAAawnH,OAAO,CAACvnH,GAAG,CAACD,GAAD,CAAJ,EAAWC,GAAX,CAA5B;AACH;AACJ;;AACD,MAAI,OAAOgmH,IAAP,KAAgB,UAApB,EAAgC;AAC5B,SAAK,IAAIj8G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8gG,IAAI,CAAC55G,MAAzB,EAAiC8Y,CAAC,EAAlC,EAAsC;AAClC,UAAIo8G,YAAY,CAACr+G,IAAb,CAAkB9H,GAAlB,EAAuB6qG,IAAI,CAAC9gG,CAAD,CAA3B,CAAJ,EAAqC;AACjCq+G,UAAE,CAACt4H,IAAH,CAAQ,MAAMy3H,OAAO,CAAC1c,IAAI,CAAC9gG,CAAD,CAAL,CAAb,GAAyB,KAAzB,GAAiCw9G,OAAO,CAACvnH,GAAG,CAAC6qG,IAAI,CAAC9gG,CAAD,CAAL,CAAJ,EAAe/J,GAAf,CAAhD;AACH;AACJ;AACJ;;AACD,SAAOooH,EAAP;AACH,C;;;;;;;;;;;AC9fDn8G,MAAM,CAACC,OAAP,GAAiBG,mBAAO,CAAC,kBAAD,CAAP,CAAgBk7G,OAAjC,C;;;;;;;;;;;;ACAa;;AAEb,IAAIuC,WAAW,GAAG,UAAUt/H,KAAV,EAAiB;AAClC,SAAOA,KAAK,KAAKA,KAAjB;AACA,CAFD;;AAIAyhB,MAAM,CAACC,OAAP,GAAiB,SAAS81C,EAAT,CAAY3wD,CAAZ,EAAeC,CAAf,EAAkB;AAClC,MAAID,CAAC,KAAK,CAAN,IAAWC,CAAC,KAAK,CAArB,EAAwB;AACvB,WAAO,IAAID,CAAJ,KAAU,IAAIC,CAArB;AACA;;AACD,MAAID,CAAC,KAAKC,CAAV,EAAa;AACZ,WAAO,IAAP;AACA;;AACD,MAAIw4H,WAAW,CAACz4H,CAAD,CAAX,IAAkBy4H,WAAW,CAACx4H,CAAD,CAAjC,EAAsC;AACrC,WAAO,IAAP;AACA;;AACD,SAAO,KAAP;AACA,CAXD,C;;;;;;;;;;;;ACNa;;AAEb,IAAIm8D,MAAM,GAAGphD,mBAAO,CAAC,oEAAD,CAApB;;AACA,IAAIwgB,QAAQ,GAAGxgB,mBAAO,CAAC,oDAAD,CAAtB;;AAEA,IAAI08C,cAAc,GAAG18C,mBAAO,CAAC,oEAAD,CAA5B;;AACA,IAAI09G,WAAW,GAAG19G,mBAAO,CAAC,wDAAD,CAAzB;;AACA,IAAI29G,IAAI,GAAG39G,mBAAO,CAAC,gDAAD,CAAlB;;AAEA,IAAI2gD,QAAQ,GAAGngC,QAAQ,CAACk9F,WAAW,EAAZ,EAAgBl8H,MAAhB,CAAvB;AAEA4/D,MAAM,CAACT,QAAD,EAAW;AAChB+8D,aAAW,EAAEA,WADG;AAEhBhhE,gBAAc,EAAEA,cAFA;AAGhBihE,MAAI,EAAEA;AAHU,CAAX,CAAN;AAMA/9G,MAAM,CAACC,OAAP,GAAiB8gD,QAAjB,C;;;;;;;;;;;;ACjBa;;AAEb,IAAIjE,cAAc,GAAG18C,mBAAO,CAAC,oEAAD,CAA5B;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAAS69G,WAAT,GAAuB;AACvC,SAAO,OAAOl8H,MAAM,CAACm0D,EAAd,KAAqB,UAArB,GAAkCn0D,MAAM,CAACm0D,EAAzC,GAA8C+G,cAArD;AACA,CAFD,C;;;;;;;;;;;;ACJa;;AAEb,IAAIghE,WAAW,GAAG19G,mBAAO,CAAC,wDAAD,CAAzB;;AACA,IAAIohD,MAAM,GAAGphD,mBAAO,CAAC,oEAAD,CAApB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAAS+9G,YAAT,GAAwB;AACxC,MAAIj9D,QAAQ,GAAG+8D,WAAW,EAA1B;AACAt8D,QAAM,CAAC5/D,MAAD,EAAS;AAAEm0D,MAAE,EAAEgL;AAAN,GAAT,EAA2B;AAChChL,MAAE,EAAE,SAASkoE,YAAT,GAAwB;AAC3B,aAAOr8H,MAAM,CAACm0D,EAAP,KAAcgL,QAArB;AACA;AAH+B,GAA3B,CAAN;AAKA,SAAOA,QAAP;AACA,CARD,C;;;;;;;;;;;;ACLa;;AAEb,IAAIm9D,QAAJ;;AACA,IAAI,CAACt8H,MAAM,CAACiS,IAAZ,EAAkB;AACjB;AACA,MAAImD,GAAG,GAAGpV,MAAM,CAACoZ,SAAP,CAAiB0C,cAA3B;AACA,MAAI08C,KAAK,GAAGx4D,MAAM,CAACoZ,SAAP,CAAiBY,QAA7B;;AACA,MAAIuiH,MAAM,GAAG/9G,mBAAO,CAAC,gEAAD,CAApB,CAJiB,CAIsB;;;AACvC,MAAI85G,YAAY,GAAGt4H,MAAM,CAACoZ,SAAP,CAAiB2rD,oBAApC;AACA,MAAIy3D,cAAc,GAAG,CAAClE,YAAY,CAACr+G,IAAb,CAAkB;AAAED,YAAQ,EAAE;AAAZ,GAAlB,EAAsC,UAAtC,CAAtB;AACA,MAAIyiH,eAAe,GAAGnE,YAAY,CAACr+G,IAAb,CAAkB,YAAY,CAAE,CAAhC,EAAkC,WAAlC,CAAtB;AACA,MAAIyiH,SAAS,GAAG,CACf,UADe,EAEf,gBAFe,EAGf,SAHe,EAIf,gBAJe,EAKf,eALe,EAMf,sBANe,EAOf,aAPe,CAAhB;;AASA,MAAIC,0BAA0B,GAAG,UAAUC,CAAV,EAAa;AAC7C,QAAI7lB,IAAI,GAAG6lB,CAAC,CAAC3gI,WAAb;AACA,WAAO86G,IAAI,IAAIA,IAAI,CAAC39F,SAAL,KAAmBwjH,CAAlC;AACA,GAHD;;AAIA,MAAIC,YAAY,GAAG;AAClBC,qBAAiB,EAAE,IADD;AAElBC,YAAQ,EAAE,IAFQ;AAGlBC,aAAS,EAAE,IAHO;AAIlBC,UAAM,EAAE,IAJU;AAKlBC,iBAAa,EAAE,IALG;AAMlBC,WAAO,EAAE,IANS;AAOlBC,gBAAY,EAAE,IAPI;AAQlBC,eAAW,EAAE,IARK;AASlBC,0BAAsB,EAAE,IATN;AAUlBC,yBAAqB,EAAE,IAVL;AAWlBC,gBAAY,EAAE,IAXI;AAYlBC,eAAW,EAAE,IAZK;AAalBC,gBAAY,EAAE,IAbI;AAclBC,gBAAY,EAAE,IAdI;AAelBC,WAAO,EAAE,IAfS;AAgBlBC,eAAW,EAAE,IAhBK;AAiBlBC,cAAU,EAAE,IAjBM;AAkBlBC,YAAQ,EAAE,IAlBQ;AAmBlBC,YAAQ,EAAE,IAnBQ;AAoBlBC,SAAK,EAAE,IApBW;AAqBlBC,oBAAgB,EAAE,IArBA;AAsBlBC,sBAAkB,EAAE,IAtBF;AAuBlBC,WAAO,EAAE;AAvBS,GAAnB;;AAyBA,MAAIC,wBAAwB,GAAI,YAAY;AAC3C;AACA,QAAI,OAAOn/D,MAAP,KAAkB,WAAtB,EAAmC;AAAE,aAAO,KAAP;AAAe;;AACpD,SAAK,IAAI3tC,CAAT,IAAc2tC,MAAd,EAAsB;AACrB,UAAI;AACH,YAAI,CAAC29D,YAAY,CAAC,MAAMtrG,CAAP,CAAb,IAA0Bnc,GAAG,CAAC6E,IAAJ,CAASilD,MAAT,EAAiB3tC,CAAjB,CAA1B,IAAiD2tC,MAAM,CAAC3tC,CAAD,CAAN,KAAc,IAA/D,IAAuE,OAAO2tC,MAAM,CAAC3tC,CAAD,CAAb,KAAqB,QAAhG,EAA0G;AACzG,cAAI;AACHorG,sCAA0B,CAACz9D,MAAM,CAAC3tC,CAAD,CAAP,CAA1B;AACA,WAFD,CAEE,OAAO7K,CAAP,EAAU;AACX,mBAAO,IAAP;AACA;AACD;AACD,OARD,CAQE,OAAOA,CAAP,EAAU;AACX,eAAO,IAAP;AACA;AACD;;AACD,WAAO,KAAP;AACA,GAjB+B,EAAhC;;AAkBA,MAAI43G,oCAAoC,GAAG,UAAU1B,CAAV,EAAa;AACvD;AACA,QAAI,OAAO19D,MAAP,KAAkB,WAAlB,IAAiC,CAACm/D,wBAAtC,EAAgE;AAC/D,aAAO1B,0BAA0B,CAACC,CAAD,CAAjC;AACA;;AACD,QAAI;AACH,aAAOD,0BAA0B,CAACC,CAAD,CAAjC;AACA,KAFD,CAEE,OAAOl2G,CAAP,EAAU;AACX,aAAO,KAAP;AACA;AACD,GAVD;;AAYA41G,UAAQ,GAAG,SAASrqH,IAAT,CAAc/J,MAAd,EAAsB;AAChC,QAAIyT,QAAQ,GAAGzT,MAAM,KAAK,IAAX,IAAmB,OAAOA,MAAP,KAAkB,QAApD;AACA,QAAIywD,UAAU,GAAGH,KAAK,CAACv+C,IAAN,CAAW/R,MAAX,MAAuB,mBAAxC;AACA,QAAIgsD,WAAW,GAAGqoE,MAAM,CAACr0H,MAAD,CAAxB;AACA,QAAIsT,QAAQ,GAAGG,QAAQ,IAAI68C,KAAK,CAACv+C,IAAN,CAAW/R,MAAX,MAAuB,iBAAlD;AACA,QAAIq2H,OAAO,GAAG,EAAd;;AAEA,QAAI,CAAC5iH,QAAD,IAAa,CAACg9C,UAAd,IAA4B,CAACzE,WAAjC,EAA8C;AAC7C,YAAM,IAAI3nD,SAAJ,CAAc,oCAAd,CAAN;AACA;;AAED,QAAIiyH,SAAS,GAAG/B,eAAe,IAAI9jE,UAAnC;;AACA,QAAIn9C,QAAQ,IAAItT,MAAM,CAAC9E,MAAP,GAAgB,CAA5B,IAAiC,CAACgS,GAAG,CAAC6E,IAAJ,CAAS/R,MAAT,EAAiB,CAAjB,CAAtC,EAA2D;AAC1D,WAAK,IAAI+T,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG/T,MAAM,CAAC9E,MAA3B,EAAmC,EAAE6Y,CAArC,EAAwC;AACvCsiH,eAAO,CAACt8H,IAAR,CAAa2+B,MAAM,CAAC3kB,CAAD,CAAnB;AACA;AACD;;AAED,QAAIi4C,WAAW,IAAIhsD,MAAM,CAAC9E,MAAP,GAAgB,CAAnC,EAAsC;AACrC,WAAK,IAAI8Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhU,MAAM,CAAC9E,MAA3B,EAAmC,EAAE8Y,CAArC,EAAwC;AACvCqiH,eAAO,CAACt8H,IAAR,CAAa2+B,MAAM,CAAC1kB,CAAD,CAAnB;AACA;AACD,KAJD,MAIO;AACN,WAAK,IAAI9V,IAAT,IAAiB8B,MAAjB,EAAyB;AACxB,YAAI,EAAEs2H,SAAS,IAAIp4H,IAAI,KAAK,WAAxB,KAAwCgP,GAAG,CAAC6E,IAAJ,CAAS/R,MAAT,EAAiB9B,IAAjB,CAA5C,EAAoE;AACnEm4H,iBAAO,CAACt8H,IAAR,CAAa2+B,MAAM,CAACx6B,IAAD,CAAnB;AACA;AACD;AACD;;AAED,QAAIo2H,cAAJ,EAAoB;AACnB,UAAIiC,eAAe,GAAGH,oCAAoC,CAACp2H,MAAD,CAA1D;;AAEA,WAAK,IAAIqpB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmrG,SAAS,CAACt5H,MAA9B,EAAsC,EAAEmuB,CAAxC,EAA2C;AAC1C,YAAI,EAAEktG,eAAe,IAAI/B,SAAS,CAACnrG,CAAD,CAAT,KAAiB,aAAtC,KAAwDnc,GAAG,CAAC6E,IAAJ,CAAS/R,MAAT,EAAiBw0H,SAAS,CAACnrG,CAAD,CAA1B,CAA5D,EAA4F;AAC3FgtG,iBAAO,CAACt8H,IAAR,CAAay6H,SAAS,CAACnrG,CAAD,CAAtB;AACA;AACD;AACD;;AACD,WAAOgtG,OAAP;AACA,GAxCD;AAyCA;;AACDngH,MAAM,CAACC,OAAP,GAAiBi+G,QAAjB,C;;;;;;;;;;;;ACzHa;;AAEb,IAAIl3H,KAAK,GAAGlE,KAAK,CAACkY,SAAN,CAAgBhU,KAA5B;;AACA,IAAIm3H,MAAM,GAAG/9G,mBAAO,CAAC,gEAAD,CAApB;;AAEA,IAAIkgH,QAAQ,GAAG1+H,MAAM,CAACiS,IAAtB;AACA,IAAIqqH,QAAQ,GAAGoC,QAAQ,GAAG,SAASzsH,IAAT,CAAc2qH,CAAd,EAAiB;AAAE,SAAO8B,QAAQ,CAAC9B,CAAD,CAAf;AAAqB,CAA3C,GAA8Cp+G,mBAAO,CAAC,sEAAD,CAA5E;AAEA,IAAImgH,YAAY,GAAG3+H,MAAM,CAACiS,IAA1B;;AAEAqqH,QAAQ,CAACH,IAAT,GAAgB,SAASyC,cAAT,GAA0B;AACzC,MAAI5+H,MAAM,CAACiS,IAAX,EAAiB;AAChB,QAAI4sH,sBAAsB,GAAI,YAAY;AACzC;AACA,UAAI3iI,IAAI,GAAG8D,MAAM,CAACiS,IAAP,CAAY3F,SAAZ,CAAX;AACA,aAAOpQ,IAAI,IAAIA,IAAI,CAACkH,MAAL,KAAgBkJ,SAAS,CAAClJ,MAAzC;AACA,KAJ6B,CAI5B,CAJ4B,EAIzB,CAJyB,CAA9B;;AAKA,QAAI,CAACy7H,sBAAL,EAA6B;AAC5B7+H,YAAM,CAACiS,IAAP,GAAc,SAASA,IAAT,CAAc/J,MAAd,EAAsB;AAAE;AACrC,YAAIq0H,MAAM,CAACr0H,MAAD,CAAV,EAAoB;AACnB,iBAAOy2H,YAAY,CAACv5H,KAAK,CAAC6U,IAAN,CAAW/R,MAAX,CAAD,CAAnB;AACA;;AACD,eAAOy2H,YAAY,CAACz2H,MAAD,CAAnB;AACA,OALD;AAMA;AACD,GAdD,MAcO;AACNlI,UAAM,CAACiS,IAAP,GAAcqqH,QAAd;AACA;;AACD,SAAOt8H,MAAM,CAACiS,IAAP,IAAeqqH,QAAtB;AACA,CAnBD;;AAqBAl+G,MAAM,CAACC,OAAP,GAAiBi+G,QAAjB,C;;;;;;;;;;;;AC/Ba;;AAEb,IAAI9jE,KAAK,GAAGx4D,MAAM,CAACoZ,SAAP,CAAiBY,QAA7B;;AAEAoE,MAAM,CAACC,OAAP,GAAiB,SAAS61C,WAAT,CAAqBv3D,KAArB,EAA4B;AAC5C,MAAI0jC,GAAG,GAAGm4B,KAAK,CAACv+C,IAAN,CAAWtd,KAAX,CAAV;AACA,MAAI4/H,MAAM,GAAGl8F,GAAG,KAAK,oBAArB;;AACA,MAAI,CAACk8F,MAAL,EAAa;AACZA,UAAM,GAAGl8F,GAAG,KAAK,gBAAR,IACR1jC,KAAK,KAAK,IADF,IAER,OAAOA,KAAP,KAAiB,QAFT,IAGR,OAAOA,KAAK,CAACyG,MAAb,KAAwB,QAHhB,IAIRzG,KAAK,CAACyG,MAAN,IAAgB,CAJR,IAKRo1D,KAAK,CAACv+C,IAAN,CAAWtd,KAAK,CAACi/D,MAAjB,MAA6B,mBAL9B;AAMA;;AACD,SAAO2gE,MAAP;AACA,CAZD,C;;;;;;;;;;;;CCFA;;AACA,IAAItqH,IAAI,GAAGuM,mBAAO,CAAC,wDAAD,CAAlB;;AACA,IAAIsgH,WAAW,GAAG,UAAU3sH,GAAV,EAAe;AAChC,SAAO,OAAOA,GAAP,KAAe,WAAf,IAA8BA,GAAG,KAAK,IAA7C;AACA,CAFD;;AAGA,IAAIomD,UAAU,GAAG/5C,mBAAO,CAAC,8DAAD,CAAP,EAAjB;;AACA,IAAI81C,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AACA,IAAIu4D,QAAQ,GAAG/2E,MAAf;AACA,IAAI++H,KAAK,GAAGzqE,SAAS,CAAC,sBAAD,CAArB;AACA,IAAI0qE,iBAAiB,GAAG1qE,SAAS,CAAC,uCAAD,CAAjC;AACA,IAAI2qE,kBAAkB,GAAG1mE,UAAU,GAAGv4D,MAAM,CAACk5D,qBAAV,GAAkC,IAArE,C,CAEA;;AACA96C,MAAM,CAACC,OAAP,GAAiB,SAASpe,MAAT,CAAgBolB,MAAhB,EAAwB65G,OAAxB,EAAiC;AACjD,MAAI,CAACJ,WAAW,CAACz5G,MAAD,CAAhB,EAA0B;AAAE,UAAM,IAAI9Y,SAAJ,CAAc,0BAAd,CAAN;AAAkD;;AAC9E,MAAI4yH,SAAS,GAAGpoD,QAAQ,CAAC1xD,MAAD,CAAxB;AACA,MAAI/hB,CAAJ,EAAOs0D,MAAP,EAAe37C,CAAf,EAAkB2H,KAAlB,EAAyBo5F,IAAzB,EAA+BrgH,KAA/B,EAAsCuV,GAAtC;;AACA,OAAK5O,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgJ,SAAS,CAAClJ,MAA1B,EAAkC,EAAEE,CAApC,EAAuC;AACtCs0D,UAAM,GAAGmf,QAAQ,CAACzqE,SAAS,CAAChJ,CAAD,CAAV,CAAjB;AACAsgB,SAAK,GAAG3R,IAAI,CAAC2lD,MAAD,CAAZ;AACA,QAAIwnE,UAAU,GAAG7mE,UAAU,KAAKv4D,MAAM,CAACk5D,qBAAP,IAAgC+lE,kBAArC,CAA3B;;AACA,QAAIG,UAAJ,EAAgB;AACfpiB,UAAI,GAAGoiB,UAAU,CAACxnE,MAAD,CAAjB;;AACA,WAAK37C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+gG,IAAI,CAAC55G,MAArB,EAA6B,EAAE6Y,CAA/B,EAAkC;AACjC/J,WAAG,GAAG8qG,IAAI,CAAC/gG,CAAD,CAAV;;AACA,YAAI+iH,iBAAiB,CAACpnE,MAAD,EAAS1lD,GAAT,CAArB,EAAoC;AACnC6sH,eAAK,CAACn7G,KAAD,EAAQ1R,GAAR,CAAL;AACA;AACD;AACD;;AACD,SAAK+J,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG2H,KAAK,CAACxgB,MAAtB,EAA8B,EAAE6Y,CAAhC,EAAmC;AAClC/J,SAAG,GAAG0R,KAAK,CAAC3H,CAAD,CAAX;AACAtf,WAAK,GAAGi7D,MAAM,CAAC1lD,GAAD,CAAd;;AACA,UAAI8sH,iBAAiB,CAACpnE,MAAD,EAAS1lD,GAAT,CAArB,EAAoC;AACnCitH,iBAAS,CAACjtH,GAAD,CAAT,GAAiBvV,KAAjB;AACA;AACD;AACD;;AACD,SAAOwiI,SAAP;AACA,CA1BD,C;;;;;;;;;;;;ACfa;;AAEb,IAAInmE,gBAAgB,GAAGx6C,mBAAO,CAAC,oEAAD,CAA9B;;AACA,IAAIwgB,QAAQ,GAAGxgB,mBAAO,CAAC,oDAAD,CAAtB;;AAEA,IAAI08C,cAAc,GAAG18C,mBAAO,CAAC,wEAAD,CAA5B;;AACA,IAAI09G,WAAW,GAAG19G,mBAAO,CAAC,4DAAD,CAAzB;;AACA,IAAI29G,IAAI,GAAG39G,mBAAO,CAAC,oDAAD,CAAlB;;AAEA,IAAI2gD,QAAQ,GAAGngC,QAAQ,CAACiB,KAAT,CAAei8F,WAAW,EAA1B,CAAf,C,CACA;;AACA,IAAIthE,KAAK,GAAG,SAAS36D,MAAT,CAAgBolB,MAAhB,EAAwB65G,OAAxB,EAAiC;AAC5C,SAAO//D,QAAQ,CAACn/D,MAAD,EAASsM,SAAT,CAAf;AACA,CAFD;;AAIA0sD,gBAAgB,CAAC4B,KAAD,EAAQ;AACvBshE,aAAW,EAAEA,WADU;AAEvBhhE,gBAAc,EAAEA,cAFO;AAGvBihE,MAAI,EAAEA;AAHiB,CAAR,CAAhB;AAMA/9G,MAAM,CAACC,OAAP,GAAiBu8C,KAAjB,C;;;;;;;;;;;;ACrBa;;AAEb,IAAIM,cAAc,GAAG18C,mBAAO,CAAC,wEAAD,CAA5B;;AAEA,IAAI6gH,2BAA2B,GAAG,YAAY;AAC7C,MAAI,CAACr/H,MAAM,CAACC,MAAZ,EAAoB;AACnB,WAAO,KAAP;AACA;AACD;AACD;AACA;AACA;;;AACC,MAAIogC,GAAG,GAAG,sBAAV;AACA,MAAIi/F,OAAO,GAAGj/F,GAAG,CAAC5iB,KAAJ,CAAU,EAAV,CAAd;AACA,MAAItd,GAAG,GAAG,EAAV;;AACA,OAAK,IAAI8b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqjH,OAAO,CAACl8H,MAA5B,EAAoC,EAAE6Y,CAAtC,EAAyC;AACxC9b,OAAG,CAACm/H,OAAO,CAACrjH,CAAD,CAAR,CAAH,GAAkBqjH,OAAO,CAACrjH,CAAD,CAAzB;AACA;;AACD,MAAI9J,GAAG,GAAGnS,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBE,GAAlB,CAAV;AACA,MAAIo2D,MAAM,GAAG,EAAb;;AACA,OAAK,IAAIhlC,CAAT,IAAcpf,GAAd,EAAmB;AAClBokD,UAAM,IAAIhlC,CAAV;AACA;;AACD,SAAO8O,GAAG,KAAKk2B,MAAf;AACA,CApBD;;AAsBA,IAAIgpE,0BAA0B,GAAG,YAAY;AAC5C,MAAI,CAACv/H,MAAM,CAACC,MAAR,IAAkB,CAACD,MAAM,CAACw/H,iBAA9B,EAAiD;AAChD,WAAO,KAAP;AACA;AACD;AACD;AACA;AACA;;;AACC,MAAIC,OAAO,GAAGz/H,MAAM,CAACw/H,iBAAP,CAAyB;AAAE,OAAG;AAAL,GAAzB,CAAd;;AACA,MAAI;AACHx/H,UAAM,CAACC,MAAP,CAAcw/H,OAAd,EAAuB,IAAvB;AACA,GAFD,CAEE,OAAO/4G,CAAP,EAAU;AACX,WAAO+4G,OAAO,CAAC,CAAD,CAAP,KAAe,GAAtB;AACA;;AACD,SAAO,KAAP;AACA,CAfD;;AAiBArhH,MAAM,CAACC,OAAP,GAAiB,SAAS69G,WAAT,GAAuB;AACvC,MAAI,CAACl8H,MAAM,CAACC,MAAZ,EAAoB;AACnB,WAAOi7D,cAAP;AACA;;AACD,MAAImkE,2BAA2B,EAA/B,EAAmC;AAClC,WAAOnkE,cAAP;AACA;;AACD,MAAIqkE,0BAA0B,EAA9B,EAAkC;AACjC,WAAOrkE,cAAP;AACA;;AACD,SAAOl7D,MAAM,CAACC,MAAd;AACA,CAXD,C;;;;;;;;;;;;AC3Ca;;AAEb,IAAI2/D,MAAM,GAAGphD,mBAAO,CAAC,oEAAD,CAApB;;AACA,IAAI09G,WAAW,GAAG19G,mBAAO,CAAC,4DAAD,CAAzB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAASqhH,UAAT,GAAsB;AACtC,MAAIvgE,QAAQ,GAAG+8D,WAAW,EAA1B;AACAt8D,QAAM,CACL5/D,MADK,EAEL;AAAEC,UAAM,EAAEk/D;AAAV,GAFK,EAGL;AAAEl/D,UAAM,EAAE,YAAY;AAAE,aAAOD,MAAM,CAACC,MAAP,KAAkBk/D,QAAzB;AAAoC;AAA5D,GAHK,CAAN;AAKA,SAAOA,QAAP;AACA,CARD,C;;;;;;;;;;;;ACLa;;AAEb,IAAIwgE,OAAO,GAAG3/H,MAAd;AACA,IAAIs7D,UAAU,GAAG/uD,SAAjB;;AAEA6R,MAAM,CAACC,OAAP,GAAiB,SAASoL,KAAT,GAAiB;AACjC,MAAI,QAAQ,IAAR,IAAgB,SAASk2G,OAAO,CAAC,IAAD,CAApC,EAA4C;AAC3C,UAAM,IAAIrkE,UAAJ,CAAe,oDAAf,CAAN;AACA;;AACD,MAAInqD,MAAM,GAAG,EAAb;;AACA,MAAI,KAAKyuH,UAAT,EAAqB;AACpBzuH,UAAM,IAAI,GAAV;AACA;;AACD,MAAI,KAAKytB,MAAT,EAAiB;AAChBztB,UAAM,IAAI,GAAV;AACA;;AACD,MAAI,KAAK0uH,UAAT,EAAqB;AACpB1uH,UAAM,IAAI,GAAV;AACA;;AACD,MAAI,KAAK2uH,SAAT,EAAoB;AACnB3uH,UAAM,IAAI,GAAV;AACA;;AACD,MAAI,KAAK4uH,MAAT,EAAiB;AAChB5uH,UAAM,IAAI,GAAV;AACA;;AACD,MAAI,KAAK6uH,OAAT,EAAkB;AACjB7uH,UAAM,IAAI,GAAV;AACA;;AACD,MAAI,KAAK8uH,MAAT,EAAiB;AAChB9uH,UAAM,IAAI,GAAV;AACA;;AACD,SAAOA,MAAP;AACA,CA3BD,C;;;;;;;;;;;;ACLa;;AAEb,IAAIyuD,MAAM,GAAGphD,mBAAO,CAAC,oEAAD,CAApB;;AACA,IAAIwgB,QAAQ,GAAGxgB,mBAAO,CAAC,oDAAD,CAAtB;;AAEA,IAAI08C,cAAc,GAAG18C,mBAAO,CAAC,iFAAD,CAA5B;;AACA,IAAI09G,WAAW,GAAG19G,mBAAO,CAAC,qEAAD,CAAzB;;AACA,IAAI29G,IAAI,GAAG39G,mBAAO,CAAC,6DAAD,CAAlB;;AAEA,IAAI0hH,UAAU,GAAGlhG,QAAQ,CAACk9F,WAAW,EAAZ,CAAzB;AAEAt8D,MAAM,CAACsgE,UAAD,EAAa;AAClBhE,aAAW,EAAEA,WADK;AAElBhhE,gBAAc,EAAEA,cAFE;AAGlBihE,MAAI,EAAEA;AAHY,CAAb,CAAN;AAMA/9G,MAAM,CAACC,OAAP,GAAiB6hH,UAAjB,C;;;;;;;;;;;;ACjBa;;AAEb,IAAIhlE,cAAc,GAAG18C,mBAAO,CAAC,iFAAD,CAA5B;;AAEA,IAAIs6C,mBAAmB,GAAGt6C,mBAAO,CAAC,oEAAD,CAAP,CAA6Bs6C,mBAAvD;;AACA,IAAIr5B,KAAK,GAAGz/B,MAAM,CAACy7D,wBAAnB;;AAEAr9C,MAAM,CAACC,OAAP,GAAiB,SAAS69G,WAAT,GAAuB;AACvC,MAAIpjE,mBAAmB,IAAK,MAAD,CAASrvC,KAAT,KAAmB,KAA9C,EAAqD;AACpD,QAAIwzF,UAAU,GAAGx9E,KAAK,CAAC3iB,MAAM,CAAC1D,SAAR,EAAmB,OAAnB,CAAtB;;AACA,QAAI6jG,UAAU,IAAI,OAAOA,UAAU,CAAC59G,GAAlB,KAA0B,UAAxC,IAAsD,OAAQ,GAAD,CAAM0gI,MAAb,KAAwB,SAAlF,EAA6F;AAC5F,aAAO9iB,UAAU,CAAC59G,GAAlB;AACA;AACD;;AACD,SAAO67D,cAAP;AACA,CARD,C;;;;;;;;;;;;ACPa;;AAEb,IAAIpC,mBAAmB,GAAGt6C,mBAAO,CAAC,oEAAD,CAAP,CAA6Bs6C,mBAAvD;;AACA,IAAIojE,WAAW,GAAG19G,mBAAO,CAAC,qEAAD,CAAzB;;AACA,IAAI2gG,IAAI,GAAGn/G,MAAM,CAACy7D,wBAAlB;AACA,IAAI/C,cAAc,GAAG14D,MAAM,CAAC04D,cAA5B;AACA,IAAIynE,OAAO,GAAG5zH,SAAd;AACA,IAAIwvD,QAAQ,GAAG/7D,MAAM,CAAC60D,cAAtB;AACA,IAAIh4C,KAAK,GAAG,GAAZ;;AAEAuB,MAAM,CAACC,OAAP,GAAiB,SAAS+hH,SAAT,GAAqB;AACrC,MAAI,CAACtnE,mBAAD,IAAwB,CAACiD,QAA7B,EAAuC;AACtC,UAAM,IAAIokE,OAAJ,CAAY,2FAAZ,CAAN;AACA;;AACD,MAAIhhE,QAAQ,GAAG+8D,WAAW,EAA1B;AACA,MAAIjc,KAAK,GAAGlkD,QAAQ,CAACl/C,KAAD,CAApB;AACA,MAAIogG,UAAU,GAAGkC,IAAI,CAACc,KAAD,EAAQ,OAAR,CAArB;;AACA,MAAI,CAAChD,UAAD,IAAeA,UAAU,CAAC59G,GAAX,KAAmB8/D,QAAtC,EAAgD;AAC/CzG,kBAAc,CAACunD,KAAD,EAAQ,OAAR,EAAiB;AAC9BlgF,kBAAY,EAAE,IADgB;AAE9B84B,gBAAU,EAAE,KAFkB;AAG9Bx5D,SAAG,EAAE8/D;AAHyB,KAAjB,CAAd;AAKA;;AACD,SAAOA,QAAP;AACA,CAfD,C;;;;;;;;;;;;ACVa;;AAEb,IAAIpgC,YAAY,GAAGvgB,mBAAO,CAAC,4DAAD,CAA1B;;AACA,IAAI81C,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AACA,IAAIk7G,OAAO,GAAGl7G,mBAAO,CAAC,8DAAD,CAArB;;AAEA,IAAI88C,UAAU,GAAGv8B,YAAY,CAAC,aAAD,CAA7B;AACA,IAAI0hF,QAAQ,GAAG1hF,YAAY,CAAC,WAAD,EAAc,IAAd,CAA3B;AACA,IAAIq6B,IAAI,GAAGr6B,YAAY,CAAC,OAAD,EAAU,IAAV,CAAvB;AAEA,IAAIshG,WAAW,GAAG/rE,SAAS,CAAC,uBAAD,EAA0B,IAA1B,CAA3B;AACA,IAAIgsE,WAAW,GAAGhsE,SAAS,CAAC,uBAAD,EAA0B,IAA1B,CAA3B;AACA,IAAIisE,WAAW,GAAGjsE,SAAS,CAAC,uBAAD,EAA0B,IAA1B,CAA3B;AACA,IAAIW,OAAO,GAAGX,SAAS,CAAC,mBAAD,EAAsB,IAAtB,CAAvB;AACA,IAAIksE,OAAO,GAAGlsE,SAAS,CAAC,mBAAD,EAAsB,IAAtB,CAAvB;AACA,IAAIU,OAAO,GAAGV,SAAS,CAAC,mBAAD,EAAsB,IAAtB,CAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAImsE,WAAW,GAAG,UAAU3iH,IAAV,EAAgB5L,GAAhB,EAAqB;AAAE;AACxC,OAAK,IAAI5U,IAAI,GAAGwgB,IAAX,EAAiBvgB,IAAtB,EAA4B,CAACA,IAAI,GAAGD,IAAI,CAACZ,IAAb,MAAuB,IAAnD,EAAyDY,IAAI,GAAGC,IAAhE,EAAsE;AACrE,QAAIA,IAAI,CAAC2U,GAAL,KAAaA,GAAjB,EAAsB;AACrB5U,UAAI,CAACZ,IAAL,GAAYa,IAAI,CAACb,IAAjB;AACAa,UAAI,CAACb,IAAL,GAAYohB,IAAI,CAACphB,IAAjB;AACAohB,UAAI,CAACphB,IAAL,GAAYa,IAAZ,CAHqB,CAGH;;AAClB,aAAOA,IAAP;AACA;AACD;AACD,CATD;;AAWA,IAAImjI,OAAO,GAAG,UAAUC,OAAV,EAAmBzuH,GAAnB,EAAwB;AACrC,MAAI8e,IAAI,GAAGyvG,WAAW,CAACE,OAAD,EAAUzuH,GAAV,CAAtB;AACA,SAAO8e,IAAI,IAAIA,IAAI,CAACr0B,KAApB;AACA,CAHD;;AAIA,IAAIikI,OAAO,GAAG,UAAUD,OAAV,EAAmBzuH,GAAnB,EAAwBvV,KAAxB,EAA+B;AAC5C,MAAIq0B,IAAI,GAAGyvG,WAAW,CAACE,OAAD,EAAUzuH,GAAV,CAAtB;;AACA,MAAI8e,IAAJ,EAAU;AACTA,QAAI,CAACr0B,KAAL,GAAaA,KAAb;AACA,GAFD,MAEO;AACN;AACAgkI,WAAO,CAACjkI,IAAR,GAAe;AAAE;AAChBwV,SAAG,EAAEA,GADS;AAEdxV,UAAI,EAAEikI,OAAO,CAACjkI,IAFA;AAGdC,WAAK,EAAEA;AAHO,KAAf;AAKA;AACD,CAZD;;AAaA,IAAIkkI,OAAO,GAAG,UAAUF,OAAV,EAAmBzuH,GAAnB,EAAwB;AACrC,SAAO,CAAC,CAACuuH,WAAW,CAACE,OAAD,EAAUzuH,GAAV,CAApB;AACA,CAFD;;AAIAkM,MAAM,CAACC,OAAP,GAAiB,SAASo2C,cAAT,GAA0B;AAC1C,MAAIqsE,GAAJ;AACA,MAAIC,EAAJ;AACA,MAAIC,EAAJ;AACA,MAAIvrE,OAAO,GAAG;AACb2b,UAAM,EAAE,UAAUl/D,GAAV,EAAe;AACtB,UAAI,CAACujD,OAAO,CAACrgD,GAAR,CAAYlD,GAAZ,CAAL,EAAuB;AACtB,cAAM,IAAIopD,UAAJ,CAAe,mCAAmCo+D,OAAO,CAACxnH,GAAD,CAAzD,CAAN;AACA;AACD,KALY;AAMb7S,OAAG,EAAE,UAAU6S,GAAV,EAAe;AAAE;AACrB,UAAIuuG,QAAQ,IAAIvuG,GAAZ,KAAoB,OAAOA,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAA9D,CAAJ,EAA+E;AAC9E,YAAI4uH,GAAJ,EAAS;AACR,iBAAOT,WAAW,CAACS,GAAD,EAAM5uH,GAAN,CAAlB;AACA;AACD,OAJD,MAIO,IAAIknD,IAAJ,EAAU;AAChB,YAAI2nE,EAAJ,EAAQ;AACP,iBAAO9rE,OAAO,CAAC8rE,EAAD,EAAK7uH,GAAL,CAAd;AACA;AACD,OAJM,MAIA;AACN,YAAI8uH,EAAJ,EAAQ;AAAE;AACT,iBAAON,OAAO,CAACM,EAAD,EAAK9uH,GAAL,CAAd;AACA;AACD;AACD,KApBY;AAqBbkD,OAAG,EAAE,UAAUlD,GAAV,EAAe;AACnB,UAAIuuG,QAAQ,IAAIvuG,GAAZ,KAAoB,OAAOA,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAA9D,CAAJ,EAA+E;AAC9E,YAAI4uH,GAAJ,EAAS;AACR,iBAAOP,WAAW,CAACO,GAAD,EAAM5uH,GAAN,CAAlB;AACA;AACD,OAJD,MAIO,IAAIknD,IAAJ,EAAU;AAChB,YAAI2nE,EAAJ,EAAQ;AACP,iBAAO/rE,OAAO,CAAC+rE,EAAD,EAAK7uH,GAAL,CAAd;AACA;AACD,OAJM,MAIA;AACN,YAAI8uH,EAAJ,EAAQ;AAAE;AACT,iBAAOH,OAAO,CAACG,EAAD,EAAK9uH,GAAL,CAAd;AACA;AACD;;AACD,aAAO,KAAP;AACA,KApCY;AAqCbtP,OAAG,EAAE,UAAUsP,GAAV,EAAevV,KAAf,EAAsB;AAC1B,UAAI8jH,QAAQ,IAAIvuG,GAAZ,KAAoB,OAAOA,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAA9D,CAAJ,EAA+E;AAC9E,YAAI,CAAC4uH,GAAL,EAAU;AACTA,aAAG,GAAG,IAAIrgB,QAAJ,EAAN;AACA;;AACD6f,mBAAW,CAACQ,GAAD,EAAM5uH,GAAN,EAAWvV,KAAX,CAAX;AACA,OALD,MAKO,IAAIy8D,IAAJ,EAAU;AAChB,YAAI,CAAC2nE,EAAL,EAAS;AACRA,YAAE,GAAG,IAAI3nE,IAAJ,EAAL;AACA;;AACDonE,eAAO,CAACO,EAAD,EAAK7uH,GAAL,EAAUvV,KAAV,CAAP;AACA,OALM,MAKA;AACN,YAAI,CAACqkI,EAAL,EAAS;AACR;AACL;AACA;AACA;AACA;AACKA,YAAE,GAAG;AAAE9uH,eAAG,EAAE,EAAP;AAAWxV,gBAAI,EAAE;AAAjB,WAAL;AACA;;AACDkkI,eAAO,CAACI,EAAD,EAAK9uH,GAAL,EAAUvV,KAAV,CAAP;AACA;AACD;AA3DY,GAAd;AA6DA,SAAO84D,OAAP;AACA,CAlED,C;;;;;;;;;;;;ACzDa;;AACbr3C,MAAM,CAACC,OAAP,GAAiB+Y,IAAI,IAAI;AACxB,QAAM6pG,oBAAoB,GAAG,YAAYr+G,IAAZ,CAAiBwU,IAAjB,CAA7B;AACA,QAAM8pG,WAAW,GAAG,oBAAoBt+G,IAApB,CAAyBwU,IAAzB,CAApB,CAFwB,CAE4B;;AAEpD,MAAI6pG,oBAAoB,IAAIC,WAA5B,EAAyC;AACxC,WAAO9pG,IAAP;AACA;;AAED,SAAOA,IAAI,CAAC1a,OAAL,CAAa,KAAb,EAAoB,GAApB,CAAP;AACA,CATD,C;;;;;;;;;;;ACDA,IAAIykH,EAAE,GAAG3iH,mBAAO,CAAC,uCAAD,CAAhB;;AACA,IAAI4iH,EAAE,GAAG5iH,mBAAO,CAAC,uCAAD,CAAhB;;AAEA,IAAI6iH,IAAI,GAAGD,EAAX;AACAC,IAAI,CAACF,EAAL,GAAUA,EAAV;AACAE,IAAI,CAACD,EAAL,GAAUA,EAAV;AAEAhjH,MAAM,CAACC,OAAP,GAAiBgjH,IAAjB,C;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA,IAAIC,SAAS,GAAG,EAAhB;;AACA,KAAK,IAAIrlH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,GAApB,EAAyB,EAAEA,CAA3B,EAA8B;AAC5BqlH,WAAS,CAACrlH,CAAD,CAAT,GAAe,CAACA,CAAC,GAAG,KAAL,EAAYjC,QAAZ,CAAqB,EAArB,EAAyB0B,MAAzB,CAAgC,CAAhC,CAAf;AACD;;AAED,SAAS6lH,WAAT,CAAqB5xG,GAArB,EAA0BvF,MAA1B,EAAkC;AAChC,MAAInO,CAAC,GAAGmO,MAAM,IAAI,CAAlB;AACA,MAAIo3G,GAAG,GAAGF,SAAV,CAFgC,CAGhC;;AACA,SAAQ,CAACE,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAAJ,EAAgBulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAAnB,EACTulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CADM,EACMulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CADT,EACqB,GADrB,EAETulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAFM,EAEMulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAFT,EAEqB,GAFrB,EAGTulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAHM,EAGMulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAHT,EAGqB,GAHrB,EAITulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAJM,EAIMulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAJT,EAIqB,GAJrB,EAKTulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CALM,EAKMulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CALT,EAMTulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CANM,EAMMulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CANT,EAOTulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAPM,EAOMulH,GAAG,CAAC7xG,GAAG,CAAC1T,CAAC,EAAF,CAAJ,CAPT,CAAD,CAOuBkC,IAPvB,CAO4B,EAP5B,CAAP;AAQD;;AAEDC,MAAM,CAACC,OAAP,GAAiBkjH,WAAjB,C;;;;;;;;;;;ACvBA;AACA;AAEA,IAAIE,MAAM,GAAGjjH,mBAAO,CAAC,sBAAD,CAApB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAASqjH,OAAT,GAAmB;AAClC,SAAOD,MAAM,CAACtgG,WAAP,CAAmB,EAAnB,CAAP;AACD,CAFD,C;;;;;;;;;;;ACLA,IAAIwgG,GAAG,GAAGnjH,mBAAO,CAAC,iDAAD,CAAjB;;AACA,IAAI+iH,WAAW,GAAG/iH,mBAAO,CAAC,iEAAD,CAAzB,C,CAEA;AACA;AACA;AACA;;;AAEA,IAAIojH,OAAJ;;AACA,IAAIC,SAAJ,C,CAEA;;;AACA,IAAIC,UAAU,GAAG,CAAjB;AACA,IAAIC,UAAU,GAAG,CAAjB,C,CAEA;;AACA,SAASZ,EAAT,CAAYjjI,OAAZ,EAAqByxB,GAArB,EAA0BvF,MAA1B,EAAkC;AAChC,MAAInO,CAAC,GAAG0T,GAAG,IAAIvF,MAAP,IAAiB,CAAzB;AACA,MAAI3mB,CAAC,GAAGksB,GAAG,IAAI,EAAf;AAEAzxB,SAAO,GAAGA,OAAO,IAAI,EAArB;AACA,MAAI8yB,IAAI,GAAG9yB,OAAO,CAAC8yB,IAAR,IAAgB4wG,OAA3B;AACA,MAAII,QAAQ,GAAG9jI,OAAO,CAAC8jI,QAAR,KAAqB5lI,SAArB,GAAiC8B,OAAO,CAAC8jI,QAAzC,GAAoDH,SAAnE,CANgC,CAQhC;AACA;AACA;;AACA,MAAI7wG,IAAI,IAAI,IAAR,IAAgBgxG,QAAQ,IAAI,IAAhC,EAAsC;AACpC,QAAIC,SAAS,GAAGN,GAAG,EAAnB;;AACA,QAAI3wG,IAAI,IAAI,IAAZ,EAAkB;AAChB;AACAA,UAAI,GAAG4wG,OAAO,GAAG,CACfK,SAAS,CAAC,CAAD,CAAT,GAAe,IADA,EAEfA,SAAS,CAAC,CAAD,CAFM,EAEDA,SAAS,CAAC,CAAD,CAFR,EAEaA,SAAS,CAAC,CAAD,CAFtB,EAE2BA,SAAS,CAAC,CAAD,CAFpC,EAEyCA,SAAS,CAAC,CAAD,CAFlD,CAAjB;AAID;;AACD,QAAID,QAAQ,IAAI,IAAhB,EAAsB;AACpB;AACAA,cAAQ,GAAGH,SAAS,GAAG,CAACI,SAAS,CAAC,CAAD,CAAT,IAAgB,CAAhB,GAAoBA,SAAS,CAAC,CAAD,CAA9B,IAAqC,MAA5D;AACD;AACF,GAxB+B,CA0BhC;AACA;AACA;AACA;;;AACA,MAAIC,KAAK,GAAGhkI,OAAO,CAACgkI,KAAR,KAAkB9lI,SAAlB,GAA8B8B,OAAO,CAACgkI,KAAtC,GAA8C,IAAI36H,IAAJ,GAAWuF,OAAX,EAA1D,CA9BgC,CAgChC;AACA;;AACA,MAAIq1H,KAAK,GAAGjkI,OAAO,CAACikI,KAAR,KAAkB/lI,SAAlB,GAA8B8B,OAAO,CAACikI,KAAtC,GAA8CJ,UAAU,GAAG,CAAvE,CAlCgC,CAoChC;;AACA,MAAIK,EAAE,GAAIF,KAAK,GAAGJ,UAAT,GAAuB,CAACK,KAAK,GAAGJ,UAAT,IAAqB,KAArD,CArCgC,CAuChC;;AACA,MAAIK,EAAE,GAAG,CAAL,IAAUlkI,OAAO,CAAC8jI,QAAR,KAAqB5lI,SAAnC,EAA8C;AAC5C4lI,YAAQ,GAAGA,QAAQ,GAAG,CAAX,GAAe,MAA1B;AACD,GA1C+B,CA4ChC;AACA;;;AACA,MAAI,CAACI,EAAE,GAAG,CAAL,IAAUF,KAAK,GAAGJ,UAAnB,KAAkC5jI,OAAO,CAACikI,KAAR,KAAkB/lI,SAAxD,EAAmE;AACjE+lI,SAAK,GAAG,CAAR;AACD,GAhD+B,CAkDhC;;;AACA,MAAIA,KAAK,IAAI,KAAb,EAAoB;AAClB,UAAM,IAAIvgI,KAAJ,CAAU,kDAAV,CAAN;AACD;;AAEDkgI,YAAU,GAAGI,KAAb;AACAH,YAAU,GAAGI,KAAb;AACAN,WAAS,GAAGG,QAAZ,CAzDgC,CA2DhC;;AACAE,OAAK,IAAI,cAAT,CA5DgC,CA8DhC;;AACA,MAAIG,EAAE,GAAG,CAAC,CAACH,KAAK,GAAG,SAAT,IAAsB,KAAtB,GAA8BC,KAA/B,IAAwC,WAAjD;AACA1+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAASomH,EAAE,KAAK,EAAP,GAAY,IAArB;AACA5+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAASomH,EAAE,KAAK,EAAP,GAAY,IAArB;AACA5+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAASomH,EAAE,KAAK,CAAP,GAAW,IAApB;AACA5+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAASomH,EAAE,GAAG,IAAd,CAnEgC,CAqEhC;;AACA,MAAIC,GAAG,GAAIJ,KAAK,GAAG,WAAR,GAAsB,KAAvB,GAAgC,SAA1C;AACAz+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAASqmH,GAAG,KAAK,CAAR,GAAY,IAArB;AACA7+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAASqmH,GAAG,GAAG,IAAf,CAxEgC,CA0EhC;;AACA7+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAASqmH,GAAG,KAAK,EAAR,GAAa,GAAb,GAAmB,IAA5B,CA3EgC,CA2EE;;AAClC7+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAASqmH,GAAG,KAAK,EAAR,GAAa,IAAtB,CA5EgC,CA8EhC;;AACA7+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAAS+lH,QAAQ,KAAK,CAAb,GAAiB,IAA1B,CA/EgC,CAiFhC;;AACAv+H,GAAC,CAACwY,CAAC,EAAF,CAAD,GAAS+lH,QAAQ,GAAG,IAApB,CAlFgC,CAoFhC;;AACA,OAAK,IAAIxlG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;AAC1B/4B,KAAC,CAACwY,CAAC,GAAGugB,CAAL,CAAD,GAAWxL,IAAI,CAACwL,CAAD,CAAf;AACD;;AAED,SAAO7M,GAAG,GAAGA,GAAH,GAAS4xG,WAAW,CAAC99H,CAAD,CAA9B;AACD;;AAED2a,MAAM,CAACC,OAAP,GAAiB8iH,EAAjB,C;;;;;;;;;;;AC5GA,IAAIQ,GAAG,GAAGnjH,mBAAO,CAAC,iDAAD,CAAjB;;AACA,IAAI+iH,WAAW,GAAG/iH,mBAAO,CAAC,iEAAD,CAAzB;;AAEA,SAAS4iH,EAAT,CAAYljI,OAAZ,EAAqByxB,GAArB,EAA0BvF,MAA1B,EAAkC;AAChC,MAAInO,CAAC,GAAG0T,GAAG,IAAIvF,MAAP,IAAiB,CAAzB;;AAEA,MAAI,OAAOlsB,OAAP,IAAmB,QAAvB,EAAiC;AAC/ByxB,OAAG,GAAGzxB,OAAO,KAAK,QAAZ,GAAuB,IAAIgD,KAAJ,CAAU,EAAV,CAAvB,GAAuC,IAA7C;AACAhD,WAAO,GAAG,IAAV;AACD;;AACDA,SAAO,GAAGA,OAAO,IAAI,EAArB;AAEA,MAAIqkI,IAAI,GAAGrkI,OAAO,CAACgzB,MAAR,IAAkB,CAAChzB,OAAO,CAACyjI,GAAR,IAAeA,GAAhB,GAA7B,CATgC,CAWhC;;AACAY,MAAI,CAAC,CAAD,CAAJ,GAAWA,IAAI,CAAC,CAAD,CAAJ,GAAU,IAAX,GAAmB,IAA7B;AACAA,MAAI,CAAC,CAAD,CAAJ,GAAWA,IAAI,CAAC,CAAD,CAAJ,GAAU,IAAX,GAAmB,IAA7B,CAbgC,CAehC;;AACA,MAAI5yG,GAAJ,EAAS;AACP,SAAK,IAAI6yG,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAG,EAAtB,EAA0B,EAAEA,EAA5B,EAAgC;AAC9B7yG,SAAG,CAAC1T,CAAC,GAAGumH,EAAL,CAAH,GAAcD,IAAI,CAACC,EAAD,CAAlB;AACD;AACF;;AAED,SAAO7yG,GAAG,IAAI4xG,WAAW,CAACgB,IAAD,CAAzB;AACD;;AAEDnkH,MAAM,CAACC,OAAP,GAAiB+iH,EAAjB,C;;;;;;;;;;;;AC5Ba;;AAEb,IAAI5lH,QAAQ,GAAGgD,mBAAO,CAAC,oDAAD,CAAtB;;AACA,IAAIihD,QAAQ,GAAGjhD,mBAAO,CAAC,kEAAD,CAAtB;;AACA,IAAIghD,SAAS,GAAGhhD,mBAAO,CAAC,oEAAD,CAAvB;;AACA,IAAIsvB,QAAQ,GAAGtvB,mBAAO,CAAC,oDAAD,CAAtB;;AACA,IAAIq/F,QAAQ,GAAGr/F,mBAAO,CAAC,oDAAD,CAAtB,C,CAEA;;;AACAJ,MAAM,CAACC,OAAP,GAAiB,SAASg2C,mBAAT,CAA6B13D,KAA7B,EAAoC;AACpD;AACA,MAAIA,KAAK,IAAI,IAAT,IAAkB,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,UAApE,EAAiF;AAChF,WAAO,IAAP;AACA;;AACD,MAAI6e,QAAQ,CAAC7e,KAAD,CAAZ,EAAqB;AACpB,WAAO,QAAP;AACA;;AACD,MAAI8iE,QAAQ,CAAC9iE,KAAD,CAAZ,EAAqB;AACpB,WAAO,QAAP;AACA;;AACD,MAAI6iE,SAAS,CAAC7iE,KAAD,CAAb,EAAsB;AACrB,WAAO,SAAP;AACA;;AACD,MAAImxC,QAAQ,CAACnxC,KAAD,CAAZ,EAAqB;AACpB,WAAO,QAAP;AACA;;AACD,MAAIkhH,QAAQ,CAAClhH,KAAD,CAAZ,EAAqB;AACpB,WAAO,QAAP;AACA;AACD,CApBD,C;;;;;;;;;;;;ACTa;;AAEb,IAAIm9D,KAAK,GAAGt7C,mBAAO,CAAC,8CAAD,CAAnB;;AACA,IAAIu7C,KAAK,GAAGv7C,mBAAO,CAAC,8CAAD,CAAnB;;AACA,IAAImiG,SAAS,GAAGniG,mBAAO,CAAC,sDAAD,CAAvB;;AACA,IAAIoiG,SAAS,GAAGpiG,mBAAO,CAAC,sDAAD,CAAvB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAASk2C,eAAT,CAAyB53D,KAAzB,EAAgC;AAChD,MAAIA,KAAK,IAAI,OAAOA,KAAP,KAAiB,QAA9B,EAAwC;AACvC,QAAIm9D,KAAK,CAACn9D,KAAD,CAAT,EAAkB;AACjB,aAAO,KAAP;AACA;;AACD,QAAIo9D,KAAK,CAACp9D,KAAD,CAAT,EAAkB;AACjB,aAAO,KAAP;AACA;;AACD,QAAIgkH,SAAS,CAAChkH,KAAD,CAAb,EAAsB;AACrB,aAAO,SAAP;AACA;;AACD,QAAIikH,SAAS,CAACjkH,KAAD,CAAb,EAAsB;AACrB,aAAO,SAAP;AACA;AACD;;AACD,SAAO,KAAP;AACA,CAhBD,C;;;;;;;;;;;;ACPa;;AAEb,IAAI2S,OAAO,GAAGkP,mBAAO,CAAC,gDAAD,CAArB;;AACA,IAAIqgB,oBAAoB,GAAGrgB,mBAAO,CAAC,8EAAD,CAAlC;;AACA,IAAI81C,SAAS,GAAG91C,mBAAO,CAAC,kEAAD,CAAvB;;AAEA,IAAI6+F,SAAS,GAAG/oD,SAAS,CAAC,2BAAD,CAAzB;;AACA,IAAI8oD,cAAc,GAAG5+F,mBAAO,CAAC,sEAAD,CAAP,EAArB;;AAEA,IAAIkgB,CAAC,GAAG,OAAOC,UAAP,KAAsB,WAAtB,GAAoCC,MAApC,GAA6CD,UAArD;AACA,IAAIkhF,WAAW,GAAGhhF,oBAAoB,EAAtC;AAEA,IAAIihF,MAAM,GAAGxrD,SAAS,CAAC,wBAAD,CAAtB;AACA,IAAIyrD,SAAS,GAAG,EAAhB;;AACA,IAAIZ,IAAI,GAAG3gG,mBAAO,CAAC,oHAAD,CAAlB;;AACA,IAAIq2C,cAAc,GAAG70D,MAAM,CAAC60D,cAA5B,C,CAA4C;;AAC5C,IAAIuoD,cAAc,IAAI+B,IAAlB,IAA0BtqD,cAA9B,EAA8C;AAC7CvlD,SAAO,CAACuwG,WAAD,EAAc,UAAUG,UAAV,EAAsB;AAC1C,QAAI,OAAOthF,CAAC,CAACshF,UAAD,CAAR,KAAyB,UAA7B,EAAyC;AACxC,UAAI1nD,GAAG,GAAG,IAAI55B,CAAC,CAACshF,UAAD,CAAL,EAAV;;AACA,UAAIl/G,MAAM,CAACq8G,WAAP,IAAsB7kD,GAA1B,EAA+B;AAC9B,YAAI2nD,KAAK,GAAGprD,cAAc,CAACyD,GAAD,CAA1B;AACA,YAAI2kD,UAAU,GAAGkC,IAAI,CAACc,KAAD,EAAQn/G,MAAM,CAACq8G,WAAf,CAArB;;AACA,YAAI,CAACF,UAAL,EAAiB;AAChB,cAAIiD,UAAU,GAAGrrD,cAAc,CAACorD,KAAD,CAA/B;AACAhD,oBAAU,GAAGkC,IAAI,CAACe,UAAD,EAAap/G,MAAM,CAACq8G,WAApB,CAAjB;AACA;;AACD4C,iBAAS,CAACC,UAAD,CAAT,GAAwB/C,UAAU,CAAC59G,GAAnC;AACA;AACD;AACD,GAbM,CAAP;AAcA;;AAED,IAAI8gH,cAAc,GAAG,SAASC,iBAAT,CAA2BzjH,KAA3B,EAAkC;AACtD,MAAI8lI,SAAS,GAAG,KAAhB;AACAnzH,SAAO,CAACywG,SAAD,EAAY,UAAUO,MAAV,EAAkBN,UAAlB,EAA8B;AAChD,QAAI,CAACyiB,SAAL,EAAgB;AACf,UAAI;AACH,YAAIr8H,IAAI,GAAGk6G,MAAM,CAACrmG,IAAP,CAAYtd,KAAZ,CAAX;;AACA,YAAIyJ,IAAI,KAAK45G,UAAb,EAAyB;AACxByiB,mBAAS,GAAGr8H,IAAZ;AACA;AACD,OALD,CAKE,OAAOsgB,CAAP,EAAU,CAAE;AACd;AACD,GATM,CAAP;AAUA,SAAO+7G,SAAP;AACA,CAbD;;AAeA,IAAIliB,YAAY,GAAG/hG,mBAAO,CAAC,8DAAD,CAA1B;;AAEAJ,MAAM,CAACC,OAAP,GAAiB,SAASq2C,eAAT,CAAyB/3D,KAAzB,EAAgC;AAChD,MAAI,CAAC4jH,YAAY,CAAC5jH,KAAD,CAAjB,EAA0B;AAAE,WAAO,KAAP;AAAe;;AAC3C,MAAI,CAACygH,cAAD,IAAmB,EAAEt8G,MAAM,CAACq8G,WAAP,IAAsBxgH,KAAxB,CAAvB,EAAuD;AAAE,WAAOmjH,MAAM,CAACzC,SAAS,CAAC1gH,KAAD,CAAV,EAAmB,CAAnB,EAAsB,CAAC,CAAvB,CAAb;AAAyC;;AAClG,SAAOwjH,cAAc,CAACxjH,KAAD,CAArB;AACA,CAJD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDA,MAAM+lI,KAAN,CAAY;AACVzmI,aAAW,CAACwpC,KAAD,EAAQ;AACjB,SAAKA,KAAL;AACEk9F,uBAAiB,EAAEl9F,KAAK,CAACk9F,iBAAN,IAA2B,EADhD;AAEEC,uBAAiB,EAAEn9F,KAAK,CAACm9F,iBAAN,IAA2B,EAFhD;AAGEC,sBAAgB,EAAEp9F,KAAK,CAACo9F,gBAAN,IAA0B,EAH9C;AAIEC,sBAAgB,EAAEr9F,KAAK,CAACq9F,gBAAN,IAA0B,EAJ9C;AAKEC,iBAAW,EAAE,KALf;AAMEC,aAAO,EAAE,KANX;AAOEC,cAAQ,EAAE,KAPZ;AAQEC,kBAAY,EAAE,IARhB;AASEnzF,WAAK,EAAE,IATT;AAUE3lB,YAAM,EAAE;AAVV,OAWKqb,KAXL;AAaD;;AAED5hC,QAAM,CAACs/H,IAAD,EAAO;AACX,WAAO,IAAIT,KAAJ,iCACF,KAAKj9F,KADH;AAELk9F,uBAAiB,EAAE,CAAC,GAAG,KAAKl9F,KAAL,CAAWk9F,iBAAf,EAAkCQ,IAAlC;AAFd,OAAP;AAID;;AAEDC,UAAQ,CAACC,KAAD,EAAQ;AACd,QAAIC,OAAO,GAAG,IAAI7rH,GAAJ,CAAQ4rH,KAAR,CAAd;AACA,WAAO,IAAIX,KAAJ,iCACF,KAAKj9F,KADH;AAELk9F,uBAAiB,EAAE,KAAKl9F,KAAL,CAAWk9F,iBAAX,CAA6B9+H,MAA7B,CACjBs/H,IAAI,IAAI,CAACG,OAAO,CAACluH,GAAR,CAAYpV,MAAM,CAACiS,IAAP,CAAYkxH,IAAZ,EAAkB,CAAlB,CAAZ,CADQ;AAFd,OAAP;AAMD;;AAEDI,QAAM,CAACF,KAAK,GAAG,EAAT,EAAa;AACjB,QAAI,CAACniI,KAAK,CAACwD,OAAN,CAAc2+H,KAAd,CAAL,EAA2B;AACzBA,WAAK,GAAG,CAACA,KAAD,CAAR;AACD;;AAED,QAAIG,KAAK,GAAG,IAAId,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Bm9F,uBAAiB,EAAES;AAA9C,OAAZ;AACAG,SAAK,CAAC/9F,KAAN,CAAYs9F,WAAZ,GAA0B,KAA1B;AACA,WAAOS,KAAP;AACD;;AAEDC,WAAS,CAACN,IAAD,EAAO;AACd,QAAIK,KAAK,GAAG,KAAKD,MAAL,CAAY;AAAEpyH,YAAM,EAAEgyH;AAAV,KAAZ,CAAZ;AACAK,SAAK,CAAC/9F,KAAN,CAAYs9F,WAAZ,GAA0B,IAA1B;AACA,WAAOS,KAAP;AACD;;AAEDE,SAAO,CAACL,KAAD,EAAQ;AACb,QAAI,CAACniI,KAAK,CAACwD,OAAN,CAAc2+H,KAAd,CAAL,EAA2B;AACzBA,WAAK,GAAG,CAACA,KAAD,CAAR;AACD;;AAED,WAAO,IAAIX,KAAJ,iCACF,KAAKj9F,KADH;AAELo9F,sBAAgB,EAAE,CAAC,GAAG,KAAKp9F,KAAL,CAAWo9F,gBAAf,EAAiC,GAAGQ,KAApC;AAFb,OAAP;AAID;;AAEDM,SAAO,CAACN,KAAD,EAAQ;AACb,QAAI,CAACniI,KAAK,CAACwD,OAAN,CAAc2+H,KAAd,CAAL,EAA2B;AACzBA,WAAK,GAAG,CAACA,KAAD,CAAR;AACD;;AAED,WAAO,IAAIX,KAAJ,iCACF,KAAKj9F,KADH;AAELq9F,sBAAgB,EAAE,CAAC,GAAG,KAAKr9F,KAAL,CAAWq9F,gBAAf,EAAiC,GAAGO,KAApC;AAFb,OAAP;AAID;;AAEDtzF,OAAK,CAACj6B,GAAD,EAAM;AACT,WAAO,IAAI4sH,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2BsK,WAAK,EAAEj6B;AAAlC,OAAP;AACD;;AAEDsU,QAAM,CAACtU,GAAD,EAAM;AACV,WAAO,IAAI4sH,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Brb,YAAM,EAAEtU;AAAnC,OAAP;AACD;;AAEDuuB,KAAG,GAAG;AACJ,WAAO,IAAIq+F,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Bu9F,aAAO,EAAE;AAApC,OAAP;AACD;;AAEDC,UAAQ,GAAG;AACT,WAAO,IAAIP,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Bw9F,cAAQ,EAAE;AAArC,OAAP;AACD;;AAEDW,sBAAoB,GAAG;AACrB,WAAO,IAAIlB,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2By9F,kBAAY,EAAE;AAAzC,OAAP;AACD;;AAEDhlI,SAAO,CAACob,IAAD,EAAO;AACZ,WAAO,IAAIopH,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Bo+F,kBAAY,EAAEvqH;AAAzC,OAAP;AACD;;AAEDD,WAAS,GAAG;AACV,WAAO,KAAKosB,KAAZ;AACD;;AAlGS;;AAqGZ,SAASq+F,iBAAT,CAA2BN,KAA3B,EAAkCO,cAAlC,EAAkD;AAChD,MAAIC,UAAU,GAAGR,KAAK,CAACnqH,SAAN,GAAkBypH,gBAAnC;;AACA,MAAIkB,UAAU,CAAC5gI,MAAX,KAAsB,CAA1B,EAA6B;AAC3B,QAAI2gI,cAAJ,EAAoB;AAClB;AAASE,aAAK,EAAE;AAAhB,SAA0BF,cAA1B;AACD;;AACD,WAAO,IAAP;AACD;;AAED,MAAIG,UAAU,GAAGF,UAAU,CAAC,CAAD,CAA3B;;AACA,MAAI,OAAOE,UAAP,KAAsB,QAA1B,EAAoC;AAClC,WAAO;AAAE99F,WAAK,EAAE89F,UAAT;AAAqBD,WAAK,EAAE;AAA5B,KAAP;AACD,GAZ+C,CAahD;;;AACA,qBAAcjkI,MAAM,CAACiS,IAAP,CAAYiyH,UAAZ,CAAd;AAAA;AAAA,MAAK99F,KAAL;;AACA,SAAO;AAAEA,SAAF;AAAS69F,SAAK,EAAEC,UAAU,CAAC99F,KAAD;AAA1B,GAAP;AACD;;AAEDhoB,MAAM,CAACC,OAAP,GAAiB,SAASw0B,CAAT,CAAWsxF,KAAX,EAAkB;AACjC,SAAO,IAAIzB,KAAJ,CAAU;AAAEyB;AAAF,GAAV,CAAP;AACD,CAFD,C;;;;;;;;;;;ACvHA;AAEA,IAAI3/D,IAAJ;AAEApmD,MAAM,CAACC,OAAP,GAAiB;AAAEmmD;AAAF,CAAjB,C;;;;;;;;;;;ACJA,MAAM3xB,CAAC,GAAGr0B,mBAAO,CAAC,gDAAD,CAAjB;;AACA,MAAM4lH,QAAQ,GAAG5lH,mBAAO,CAAC,8CAAD,CAAxB;;AAEA,SAASgmD,IAAT,CAAcp+D,IAAd,EAAoBlK,IAApB,EAA0B;AACxB,SAAOkoI,QAAQ,CAAC5/D,IAAT,CAAcp+D,IAAd,EAAoBlK,IAApB,CAAP;AACD;;AAED,eAAemoI,SAAf,CAAyBj+H,IAAzB,EAA+By5B,IAA/B,EAAqC;AACnC,QAAM2kC,IAAI,CAAC,kBAAD,EAAqB;AAAE8/D,cAAU,EAAEl+H;AAAd,GAArB,CAAV;;AACA,MAAI;AACF,UAAMy5B,IAAI,EAAV;AACD,GAFD,CAEE,OAAOnZ,CAAP,EAAU;AACV,UAAM89C,IAAI,CAAC,kBAAD,CAAV;AACA,UAAM99C,CAAN;AACD;;AACD,QAAM89C,IAAI,CAAC,mBAAD,CAAV;AACD;;AAED,eAAe+/D,UAAf,CAA0BC,QAA1B,EAAoC;AAClC,SAAOhgE,IAAI,CAAC,iBAAD,EAAoB;AAAEigE,MAAE,EAAED;AAAN,GAApB,CAAX;AACD;;AAED,eAAeE,kBAAf,CAAkC7kG,IAAlC,EAAwC;AACtC,QAAM2kC,IAAI,CAAC,wBAAD,CAAV;;AACA,MAAI;AACF,UAAM3kC,IAAI,EAAV;AACD,GAFD,SAEU;AACR,UAAM2kC,IAAI,CAAC,sBAAD,CAAV;AACD;AACF;;AAED,SAASmgE,QAAT,CAAkBnB,KAAlB,EAAyB;AACvB,SAAOh/D,IAAI,CAAC,WAAD,EAAc;AAAEg/D,SAAK,EAAEA,KAAK,CAACnqH,SAAN;AAAT,GAAd,CAAX;AACD;;AAED,SAASurH,eAAT,GAA2B;AACzB,SAAOpgE,IAAI,CAAC,mBAAD,CAAX;AACD;;AAED,SAASqgE,cAAT,CAAwBl9H,KAAxB,EAA+B;AAC7B,SAAO68D,IAAI,CAAC,kBAAD,EAAqB;AAAE78D;AAAF,GAArB,CAAX;AACD;;AAED,SAASm9H,eAAT,CAAyBn9H,KAAzB,EAAgCo9H,UAAhC,EAA4CpoI,KAA5C,EAAmD;AACjD,SAAO6nE,IAAI,CAAC,uBAAD,EAA0B;AAAE78D,SAAF;AAASo9H,cAAT;AAAqB18H,UAAM,EAAE1L;AAA7B,GAA1B,CAAX;AACD;;AAED,SAASqoI,kBAAT,CAA4Br9H,KAA5B,EAAmCo9H,UAAnC,EAA+CE,IAA/C,EAAqD;AACnD,SAAOzgE,IAAI,CAAC,0BAAD,EAA6B;AAAE78D,SAAF;AAASo9H,cAAT;AAAqBE;AAArB,GAA7B,CAAX;AACD;;AAED,SAASC,eAAT,CAAyBC,SAAzB,EAAoCC,YAApC,EAAkD;AAChD,SAAO5gE,IAAI,CAAC,sBAAD,EAAyB;AAAE2gE,aAAF;AAAaC;AAAb,GAAzB,CAAX;AACD;;AAED,SAASC,kBAAT,CAA4BF,SAA5B,EAAuCC,YAAvC,EAAqD;AACnD,SAAO5gE,IAAI,CAAC,yBAAD,EAA4B;AAAE2gE,aAAF;AAAaC;AAAb,GAA5B,CAAX;AACD;;AAED,SAASE,eAAT,CAAyBH,SAAzB,EAAoCrjI,SAApC,EAA+C67C,OAA/C,EAAwD;AACtD,SAAO6mB,IAAI,CAAC,sBAAD,EAAyB;AAAE2gE,aAAF;AAAarjI,aAAb;AAAwB67C;AAAxB,GAAzB,CAAX;AACD;;AAED,SAAS4nF,kBAAT,CAA4BJ,SAA5B,EAAuCjuC,IAAvC,EAA6C;AAC3C,SAAO1yB,IAAI,CAAC,yBAAD,EAA4B;AAAE2gE,aAAF;AAAajuC;AAAb,GAA5B,CAAX;AACD;;AAED,SAASsuC,iBAAT,CAA2Bf,EAA3B,EAA+BgB,MAA/B,EAAuC;AACrC,SAAOjhE,IAAI,CAAC,wBAAD,EAA2B;AAAEigE,MAAF;AAAMgB;AAAN,GAA3B,CAAX;AACD;;AAED,SAASC,iBAAT,CAA2BjB,EAA3B,EAA+B;AAC7B,SAAOjgE,IAAI,CAAC,wBAAD,EAA2B;AAAEigE;AAAF,GAA3B,CAAX;AACD;;AAED,SAASkB,WAAT,GAAuB;AACrB,SAAOnhE,IAAI,CAAC,kBAAD,CAAX;AACD;;AAED,SAASohE,aAAT,CAAuBC,OAAvB,EAAgCC,cAAhC,EAAgD;AAC9C,SAAOthE,IAAI,CAAC,oBAAD,EAAuB;AAAEqhE,WAAF;AAAWC;AAAX,GAAvB,CAAX;AACD;;AAED,SAASC,aAAT,CAAuBtB,EAAvB,EAA2BgB,MAA3B,EAAmC;AACjC,SAAOjhE,IAAI,CAAC,oBAAD,EAAuB;AAAEigE,MAAF;AAAMgB;AAAN,GAAvB,CAAX;AACD;;AAED,SAASO,YAAT,CAAsBvB,EAAtB,EAA0BwB,iBAA1B,EAA6CC,kBAA7C,EAAiE;AAC/D,SAAO1hE,IAAI,CAAC,mBAAD,EAAsB;AAC/BigE,MAD+B;AAE/BwB,qBAF+B;AAG/BC;AAH+B,GAAtB,CAAX;AAKD;;AAED,SAASC,aAAT,CAAuB1B,EAAvB,EAA2B;AACzB,SAAOjgE,IAAI,CAAC,oBAAD,EAAuB;AAAEigE;AAAF,GAAvB,CAAX;AACD;;AAED,SAAS2B,aAAT,CAAuB3B,EAAvB,EAA2B;AACzB,SAAOjgE,IAAI,CAAC,oBAAD,EAAuB;AAAEigE;AAAF,GAAvB,CAAX;AACD;;AAED,SAAS4B,iBAAT,GAA6B;AAC3B,SAAO7hE,IAAI,CAAC,oBAAD,EAAuB;AAAE8hE,WAAO,EAAE;AAAX,GAAvB,CAAX;AACD;;AAED,SAASC,mBAAT,CAA6BC,KAA7B,EAAoC;AAClC,SAAOhiE,IAAI,CAAC,2BAAD,EAA8B;AAAEgiE;AAAF,GAA9B,CAAX;AACD;;AAED,SAASC,mBAAT,CAA6BhC,EAA7B,EAAiCgB,MAAjC,EAAyC;AACvC,SAAOjhE,IAAI,CAAC,2BAAD,EAA8B;AAAEigE,MAAF;AAAMgB;AAAN,GAA9B,CAAX;AACD;;AAED,SAASiB,mBAAT,CAA6BjC,EAA7B,EAAiCyB,kBAAjC,EAAqD;AACnD,SAAO1hE,IAAI,CAAC,2BAAD,EAA8B;AAAEigE,MAAF;AAAMyB;AAAN,GAA9B,CAAX;AACD;;AAED,SAASS,aAAT,GAAyB;AACvB,SAAOniE,IAAI,CAAC,oBAAD,EAAuB;AAAE8hE,WAAO,EAAE;AAAX,GAAvB,CAAX;AACD;;AAED,SAASM,cAAT,CAAwBC,QAAxB,EAAkC;AAChC,SAAOriE,IAAI,CAAC,qBAAD,EAAwB;AAAEqiE;AAAF,GAAxB,CAAX;AACD;;AAED,SAASC,cAAT,CAAwBrC,EAAxB,EAA4BgB,MAA5B,EAAoC;AAClC,SAAOjhE,IAAI,CAAC,qBAAD,EAAwB;AAAEigE,MAAF;AAAMgB;AAAN,GAAxB,CAAX;AACD;;AAED,SAASsB,cAAT,CAAwBtC,EAAxB,EAA4ByB,kBAA5B,EAAgD;AAC9C,SAAO1hE,IAAI,CAAC,qBAAD,EAAwB;AAAEigE,MAAF;AAAMyB;AAAN,GAAxB,CAAX;AACD;;AAED,SAASc,SAAT,GAAqB;AACnB,SAAOxiE,IAAI,CAAC,gBAAD,CAAX;AACD;;AAED,SAASyiE,WAAT,CAAqBC,KAArB,EAA4B;AAC1B,SAAO1iE,IAAI,CAAC,kBAAD,EAAqB;AAAE0iE;AAAF,GAArB,CAAX;AACD;;AAED,SAASC,WAAT,CAAqB1C,EAArB,EAAyBgB,MAAzB,EAAiC;AAC/B,SAAOjhE,IAAI,CAAC,kBAAD,EAAqB;AAAEigE,MAAF;AAAMgB;AAAN,GAArB,CAAX;AACD;;AAED,SAAS2B,WAAT,CAAqB3C,EAArB,EAAyB;AACvB,SAAOjgE,IAAI,CAAC,kBAAD,EAAqB;AAAEigE;AAAF,GAArB,CAAX;AACD;;AAED,SAAS4C,aAAT,CAAuBC,OAAvB,EAAgC;AAC9B,SAAO9iE,IAAI,CAAC,qBAAD,EAAwB;AAAE8iE;AAAF,GAAxB,CAAX;AACD;;AAED,SAASC,eAAT,CAAyBD,OAAzB,EAAkC74H,IAAlC,EAAwC;AACtC,SAAO+1D,IAAI,CAAC,uBAAD,EAA0B;AAAEgjE,YAAQ,EAAEF,OAAZ;AAAqB74H;AAArB,GAA1B,CAAX;AACD;;AAED,SAASg5H,eAAT,CAAyBhD,EAAzB,EAA6BgB,MAA7B,EAAqC;AACnC,SAAOjhE,IAAI,CAAC,uBAAD,EAA0B;AAAEigE,MAAF;AAAMgB;AAAN,GAA1B,CAAX;AACD;;AAED,SAASiC,eAAT,CAAyBjD,EAAzB,EAA6B;AAC3B,SAAOjgE,IAAI,CAAC,uBAAD,EAA0B;AAAEigE;AAAF,GAA1B,CAAX;AACD;;AAEDrmH,MAAM,CAACC,OAAP,GAAiB;AACfgmH,WADe;AAGfM,UAHe;AAIf9xF,GAJe;AAMf0xF,YANe;AAOfG,oBAPe;AAQfE,iBARe;AASfC,gBATe;AAUfC,iBAVe;AAWfE,oBAXe;AAafE,iBAbe;AAcfG,oBAde;AAefE,oBAfe;AAgBfD,iBAhBe;AAiBfE,mBAjBe;AAkBfE,mBAlBe;AAoBfC,aApBe;AAqBfC,eArBe;AAsBfG,eAtBe;AAuBfC,cAvBe;AAwBfG,eAxBe;AAyBfC,eAzBe;AA2BfO,eA3Be;AA4BfJ,qBA5Be;AA6BfE,qBA7Be;AA8BfC,qBA9Be;AA+BfE,gBA/Be;AAgCfE,gBAhCe;AAiCfC,gBAjCe;AAmCfC,WAnCe;AAoCfC,aApCe;AAqCfE,aArCe;AAsCfC,aAtCe;AAuCfC,eAvCe;AAwCfE,iBAxCe;AAyCfG,iBAzCe;AA0CfD;AA1Ce,CAAjB,C;;;;;;;;;;;;;;;;;;;;;;;ACvKA,MAAMn0F,CAAC,GAAG90B,mBAAO,CAAC,sDAAD,CAAjB;;AACA,MAAMmpH,gBAAgB,GAAGnpH,mBAAO,CAAC,4CAAD,CAAhC;;AACA,MAAM6iH,IAAI,GAAG7iH,mBAAO,CAAC,0CAAD,CAApB;;AACA,MAAMopH,MAAM,GAAGppH,mBAAO,CAAC,kDAAD,CAAtB;;AACA,MAAM+3C,MAAM,GAAG/3C,mBAAO,CAAC,0DAAD,CAAtB;;AACA,iBAA4BA,mBAAO,CAAC,4FAAD,CAAnC;AAAA,MAAQqpH,eAAR,YAAQA,eAAR,C,CAEA;;;AAEA,SAASC,cAAT,CAAwBvuH,IAAxB,EAA8B;AAC5B,UAAQA,IAAR;AACE,SAAK,MAAL;AACA,SAAK,UAAL;AACE,aAAO,UAAP;;AACF,SAAK,YAAL;AACE,aAAO,QAAP;;AACF,SAAK,SAAL;AACE,aAAO,SAAP;;AACF,SAAK,mBAAL;AACE,aAAO,YAAP;;AACF,SAAK,UAAL;AACE,aAAO,UAAP;;AACF;AACE,aAAO,OAAP;AAbJ;AAeD;;AAED,SAASg9D,SAAT,CAAmBje,GAAnB,EAAwBpmD,GAAxB,EAA6B;AAC3B,SAAO,CAAC,GAAGomD,GAAJ,EAAS10D,IAAT,CAAc,CAACyyD,KAAD,EAAQgB,KAAR,KAAkB;AACrC,QAAIhB,KAAK,CAACnkD,GAAD,CAAL,GAAamlD,KAAK,CAACnlD,GAAD,CAAtB,EAA6B;AAC3B,aAAO,CAAC,CAAR;AACD,KAFD,MAEO,IAAImkD,KAAK,CAACnkD,GAAD,CAAL,GAAamlD,KAAK,CAACnlD,GAAD,CAAtB,EAA6B;AAClC,aAAO,CAAP;AACD;;AACD,WAAO,CAAP;AACD,GAPM,CAAP;AAQD;;AAED,SAASwxH,OAAT,CAAiBprE,GAAjB,EAAsByvE,OAAtB,EAA+B;AAC7B,SAAOzvE,GAAG,CAACj7D,MAAJ,CAAW,UAAS8U,GAAT,EAAcmO,IAAd,EAAoB;AACpC,QAAIpO,GAAG,GAAGoO,IAAI,CAACynH,OAAD,CAAd;;AACA,QAAI,CAAC51H,GAAG,CAAC2J,cAAJ,CAAmB5J,GAAnB,CAAL,EAA8B;AAC5BC,SAAG,CAACD,GAAD,CAAH,GAAW,EAAX;AACD;;AACDC,OAAG,CAACD,GAAD,CAAH,CAASjQ,IAAT,CAAcqe,IAAd;AACA,WAAOnO,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD;;AAED,SAAS61H,MAAT,CAAgBrrI,KAAhB,EAAuB;AACrB,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B;AACA;AACA;AAEA,uBAAyBA,KAAK,CAAC8gB,KAAN,CAAY,GAAZ,CAAzB;AAAA;AAAA,QAAK/V,IAAL;AAAA,QAAWC,KAAX;AAAA,QAAkBlJ,GAAlB;;AACA,QAAIA,GAAG,IAAI,IAAX,EAAiB;AACf,aAAO,IAAI8I,IAAJ,CAASiW,QAAQ,CAAC9V,IAAD,CAAjB,EAAyB8V,QAAQ,CAAC7V,KAAD,CAAR,GAAkB,CAA3C,EAA8C6V,QAAQ,CAAC/e,GAAD,CAAtD,CAAP;AACD,KAFD,MAEO,IAAIkJ,KAAK,IAAI,IAAb,EAAmB;AACxB,aAAO,IAAIJ,IAAJ,CAASiW,QAAQ,CAAC9V,IAAD,CAAjB,EAAyB8V,QAAQ,CAAC7V,KAAD,CAAR,GAAkB,CAA3C,EAA8C,CAA9C,CAAP;AACD,KAFM,MAEA;AACL,aAAO,IAAIJ,IAAJ,CAASiW,QAAQ,CAAC9V,IAAD,CAAjB,EAAyB,CAAzB,EAA4B,CAA5B,CAAP;AACD;AACF;;AACD,SAAO/K,KAAP;AACD;;AAED,SAASsrI,aAAT,CAAuB7oI,IAAvB,EAA6B;AAC3B,SAAOk0C,CAAC,CAACt4B,MAAF,CAASgtH,MAAM,CAAC5oI,IAAD,CAAf,EAAuB,SAAvB,CAAP;AACD;;AAED,SAAS8oI,eAAT,GAA2B;AACzB,SAAO50F,CAAC,CAACt4B,MAAF,CAAS,IAAIzT,IAAJ,EAAT,EAAqB,SAArB,CAAP;AACD,C,CAED;;;AAEA,eAAe4gI,cAAf,CAA8B1jI,IAA9B,EAAoC2jI,WAApC,EAAiD;AAC/C,SAAOvkH,OAAO,CAAC0pD,GAAR,CACL9oE,IAAI,CAAC4jI,QAAL,CAAcloI,GAAd,CAAkB,MAAM0lI,OAAN,IAAiB;AACjC,QAAI,CAACA,OAAO,CAACyC,WAAb,EAA0B;AACxB,YAAM7D,EAAE,GAAG,MAAMluE,MAAM,CAACqvE,aAAP,CAAqB;AACpCrsH,YAAI,EAAEuuH,cAAc,CAACjC,OAAO,CAAC0C,WAAT,CADgB;AAEpCniI,YAAI,EAAEy/H,OAAO,CAAC2C,WAFsB;AAGpCC,iBAAS,EAAE5C,OAAO,CAAC6C,QAAR,GAAmB,KAAnB,GAA2B,IAHF;AAIpCC,cAAM,EAAE9C,OAAO,CAACluG,MAAR,GAAiB,IAAjB,GAAwB;AAJI,OAArB,CAAjB;AAMAywG,iBAAW,CAACxlI,GAAZ,CAAgBijI,OAAO,CAAC+C,QAAxB,EAAkCnE,EAAlC;AACD;AACF,GAVD,CADK,CAAP;AAaD;;AAED,eAAeoE,gBAAf,CAAgCpkI,IAAhC,EAAsC2jI,WAAtC,EAAmD;AACjD,QAAMU,gBAAgB,GAAGvyD,SAAS,CAAC9xE,IAAI,CAACqkI,gBAAN,EAAwB,eAAxB,CAAlC;AAEA,QAAMjlH,OAAO,CAAC0pD,GAAR,CACJu7D,gBAAgB,CAAC3oI,GAAjB,CAAqB,MAAM4oI,cAAN,IAAwB;AAC3C,QACEA,cAAc,CAACxvH,IAAf,KAAwB,SAAxB,IACA,CAACwvH,cAAc,CAACT,WADhB,IAEAS,cAAc,CAACC,aAFf,IAGAD,cAAc,CAACC,aAAf,CAA6B3kI,IAA7B,CAAkC4kI,GAAG,IAAI,CAACA,GAAG,CAACX,WAA9C,IAA6D,CAJ/D,EAKE;AACA,YAAM7D,EAAE,GAAG,MAAMluE,MAAM,CAACgwE,mBAAP,CAA2B;AAC1CngI,YAAI,EAAE2iI,cAAc,CAAC3iI,IADqB;AAE1C8iI,iBAAS,EAAE;AAF+B,OAA3B,CAAjB;AAIAd,iBAAW,CAACxlI,GAAZ,CAAgBmmI,cAAc,CAACH,QAA/B,EAAyCnE,EAAzC;;AAEA,UAAIsE,cAAc,CAACC,aAAnB,EAAkC;AAChC,cAAMA,aAAa,GAAGzyD,SAAS,CAC7BwyD,cAAc,CAACC,aADc,EAE7B,eAF6B,CAA/B;AAIAA,qBAAa,CAAC9rI,OAAd,GALgC,CAOhC;AACA;;AACA,aAAK,IAAI2pI,QAAT,IAAqBmC,aAArB,EAAoC;AAClC,cAAI,CAACnC,QAAQ,CAACyB,WAAd,EAA2B;AACzB,kBAAM7D,EAAE,GAAG,MAAMluE,MAAM,CAACqwE,cAAP,CAAsB;AACrCxgI,kBAAI,EAAEygI,QAAQ,CAACzgI,IADsB;AAErC+iI,sBAAQ,EAAEf,WAAW,CAAC/oI,GAAZ,CAAgBwnI,QAAQ,CAACuC,gBAAzB;AAF2B,aAAtB,CAAjB;AAIAhB,uBAAW,CAACxlI,GAAZ,CAAgBikI,QAAQ,CAAC+B,QAAzB,EAAmCnE,EAAnC;AACD;AACF;AACF;AACF;AACF,GAjCD,CADI,CAAN;AAoCD;;AAED,eAAe4E,YAAf,CAA4B5kI,IAA5B,EAAkC2jI,WAAlC,EAA+C;AAC7C,OAAK,IAAIlB,KAAT,IAAkBziI,IAAI,CAAC6kI,MAAvB,EAA+B;AAC7B,QAAI,CAACpC,KAAK,CAACoB,WAAX,EAAwB;AACtB,UAAI7D,EAAE,GAAG,MAAMluE,MAAM,CAAC0wE,WAAP,CAAmB;AAChC7gI,YAAI,EAAE8gI,KAAK,CAAC9gI,IADoB;AAEhCygI,gBAAQ,EAAEuB,WAAW,CAAC/oI,GAAZ,CAAgB6nI,KAAK,CAACqC,kBAAtB,KAA6C,IAFvB;AAGhCC,qBAAa,EAAEpB,WAAW,CAAC/oI,GAAZ,CAAgB6nI,KAAK,CAACuC,eAAtB,KAA0C;AAHzB,OAAnB,CAAf,CADsB,CAOtB;;AAEArB,iBAAW,CAACxlI,GAAZ,CAAgBskI,KAAK,CAAC0B,QAAtB,EAAgCnE,EAAhC;AACD;AACF;AACF;;AAED,eAAeY,kBAAf,CAAkC5gI,IAAlC,EAAwC2jI,WAAxC,EAAqD;AACnD,QAAMsB,UAAU,GAAG,MAAMnzE,MAAM,CAACowE,aAAP,EAAzB;AACA,QAAMgD,gBAAgB,GAAGD,UAAU,CAAC5wH,IAAX,CAAgBmwH,GAAG,IAAIA,GAAG,CAAC7iI,IAAJ,KAAa,QAApC,EAA8Cq+H,EAAvE;AACA,QAAM4D,QAAQ,GAAG,MAAM9xE,MAAM,CAACovE,WAAP,EAAvB;AACA,QAAM2D,MAAM,GAAG,MAAM/yE,MAAM,CAACywE,SAAP,EAArB;;AAEA,WAAS4C,WAAT,CAAqBnF,EAArB,EAAyB;AACvB,QAAIA,EAAE,IAAI,IAAN,IAAcA,EAAE,KAAK,oBAAzB,EAA+C;AAC7C,aAAO,IAAP;AACD,KAFD,MAEO,IACLA,EAAE,KAAK,8BAAP,IACAA,EAAE,KAAK,6BAFF,EAGL;AACA,aAAOkF,gBAAP;AACD;;AACD,WAAOvB,WAAW,CAAC/oI,GAAZ,CAAgBolI,EAAhB,CAAP;AACD;;AAED,WAASoF,WAAT,CAAqBC,MAArB,EAA6B;AAC3B,QAAIC,IAAI,GAAG1B,QAAQ,CAACvvH,IAAT,CAAcixH,IAAI,IAAIA,IAAI,CAACtF,EAAL,KAAYqF,MAAlC,CAAX;;AACA,QAAI,CAACC,IAAL,EAAW;AACT,YAAM,IAAInoI,KAAJ,CAAU,uDAAV,CAAN;AACD;;AACD,WAAOmoI,IAAI,CAACtB,SAAZ;AACD,GAxBkD,CA0BnD;AACA;;;AACA,OAAK,IAAIuB,WAAT,IAAwBvlI,IAAI,CAAC2gI,YAA7B,EAA2C;AACzCgD,eAAW,CAACxlI,GAAZ,CAAgBonI,WAAW,CAACpB,QAA5B,EAAsCvH,IAAI,CAACD,EAAL,EAAtC;AACD;;AAED,MAAI6I,SAAS,GAAG,CAAhB;AACA,MAAIC,mBAAmB,GAAGxG,OAAO,CAACj/H,IAAI,CAAC2gI,YAAN,EAAoB,WAApB,CAAjC;AAEA,QAAMvhH,OAAO,CAAC0pD,GAAR,CACJvtE,MAAM,CAACiS,IAAP,CAAYi4H,mBAAZ,EAAiC/pI,GAAjC,CAAqC,MAAMglI,SAAN,IAAmB;AACtD,QAAIC,YAAY,GAAG8E,mBAAmB,CAAC/E,SAAD,CAAtC;AAEA,QAAIgF,QAAQ,GAAG/E,YAAY,CACxBjlI,GADY,CACR6pI,WAAW,IAAI;AAClB,UAAIA,WAAW,CAAC1B,WAAhB,EAA6B;AAC3B;AACD;;AAED,UAAI7D,EAAE,GAAG2D,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACpB,QAA5B,CAAT;AACA,UAAIwB,UAAU,GACZhC,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACK,qBAA5B,KAAsD,IADxD;AAGA,UAAInD,KAAK,GAAG,IAAZ;;AACA,UAAIkD,UAAJ,EAAgB;AACdlD,aAAK,GAAGoC,MAAM,CAACxwH,IAAP,CACNuJ,CAAC,IACCA,CAAC,CAACmnH,aAAF,KAAoBpB,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACP,eAA5B,CAFhB,EAGNhF,EAHF;AAID,OALD,MAKO;AACLyC,aAAK,GAAGkB,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAAC1C,OAA5B,CAAR;AACD;;AAED,UAAIgD,cAAc,GAAG;AACnB7F,UADmB;AAEnBp8H,cAAM,EAAEw/H,eAAe,CAACmC,WAAW,CAAC3hI,MAAb,CAFJ;AAGnBw+H,gBAAQ,EAAEgD,WAAW,CAACzB,WAAW,CAAC/oI,GAAZ,CAAgB8lI,SAAhB,CAAD,CAAX,GACN,IADM,GAENyE,WAAW,CAACI,WAAW,CAACjF,UAAb,CALI;AAMnB3lI,YAAI,EAAE4qI,WAAW,CAAC5qI,IANC;AAOnBmrI,aAAK,EAAEP,WAAW,CAACQ,IAAZ,IAAoB,IAPR;AAQnBtD,aARmB;AASnBuD,mBAAW,EAAEL;AATM,OAArB;AAYAE,oBAAc,CAACI,eAAf,GACEV,WAAW,CAACW,eAAZ,IACAX,WAAW,CAACW,eAAZ,CAA4BxqI,GAA5B,CAAgC,CAACswB,CAAD,EAAIxU,CAAJ,KAAU;AACxC,eAAO;AACL5T,gBAAM,EAAEw/H,eAAe,CAACp3G,CAAC,CAACpoB,MAAH,CADlB;AAELw+H,kBAAQ,EAAE+C,WAAW,CAACn5G,CAAC,CAACs0G,UAAH;AAFhB,SAAP;AAID,OALD,CAFF;AASA,aAAOuF,cAAP;AACD,KA1CY,EA2CZzmI,MA3CY,CA2CLiH,CAAC,IAAIA,CA3CA,CAAf;AA6CA,UAAMyrD,MAAM,CAAC2uE,eAAP,CAAuBkD,WAAW,CAAC/oI,GAAZ,CAAgB8lI,SAAhB,CAAvB,EAAmDgF,QAAnD,CAAN;AACD,GAjDD,CADI,CAAN;AAoDD;;AAED,SAASS,aAAT,CAAuBnmI,IAAvB,EAA6BomI,eAA7B,EAA8C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,QAAMC,OAAO,GAAG,CAAC,GAAGD,eAAJ,CAAhB;AACApmI,MAAI,CAACqkI,gBAAL,CAAsBx5H,OAAtB,CAA8By5H,cAAc,IAAI;AAC9C,QAAIA,cAAc,CAACC,aAAnB,EAAkC;AAChCD,oBAAc,CAACC,aAAf,CAA6B15H,OAA7B,CAAqCu3H,QAAQ,IAAI;AAC/C,YAAI,CAACiE,OAAO,CAAChyH,IAAR,CAAarV,CAAC,IAAIA,CAAC,CAACshI,UAAF,KAAiB8B,QAAQ,CAAC+B,QAA5C,CAAL,EAA4D;AAC1DkC,iBAAO,CAAC7oI,IAAR,CAAa;AACX8oI,oBAAQ,EAAE,CADC;AAEXhG,sBAAU,EAAE8B,QAAQ,CAAC+B;AAFV,WAAb;AAID;AACF,OAPD;AAQD;AACF,GAXD;AAYA,SAAOkC,OAAP;AACD;;AAED,eAAeE,aAAf,CAA6BvmI,IAA7B,EAAmC2jI,WAAnC,EAAgD;AAC9C,MAAI0C,OAAO,GAAGv0D,SAAS,CAAC9xE,IAAI,CAACwmI,cAAN,EAAsB,OAAtB,CAAvB;AACA,MAAIC,aAAa,GAAGjD,aAAa,CAAC6C,OAAO,CAAC,CAAD,CAAP,CAAWnjI,KAAZ,CAAjC;AACA,MAAIqR,YAAY,GAAGkvH,eAAe,EAAlC;AAEA,QAAM3xE,MAAM,CAACmuE,kBAAP,CAA0B,YAAY;AAC1C,UAAMyG,cAAc,GAAG,EAAvB;;AAEA,SAAK,IAAIC,MAAT,IAAmBN,OAAnB,EAA4B;AAC1B,UAAIO,MAAM,GAAGT,aAAa,CACxBnmI,IADwB,EAExB2mI,MAAM,CAACE,yBAAP,CAAiCznI,MAAjC,CAAwCJ,CAAC,IAAI,CAACA,CAAC,CAAC6kI,WAAhD,CAFwB,CAA1B;AAKA,YAAMzkH,OAAO,CAAC0pD,GAAR,CACJ89D,MAAM,CAAClrI,GAAP,CAAW,MAAMorI,SAAN,IAAmB;AAC5B,YAAIljI,MAAM,GAAGw/H,eAAe,CAAC0D,SAAS,CAACR,QAAX,CAA5B;AACA,YAAIS,KAAK,GAAGpD,WAAW,CAAC/oI,GAAZ,CAAgBksI,SAAS,CAACxG,UAA1B,CAAZ;AACA,YAAIp9H,KAAK,GAAGsgI,aAAa,CAACmD,MAAM,CAACzjI,KAAR,CAAzB;;AACA,YAAI,CAAC6jI,KAAL,EAAY;AACV;AACD;;AAED,cAAMj1E,MAAM,CAACuuE,eAAP,CAAuBn9H,KAAvB,EAA8B6jI,KAA9B,EAAqCnjI,MAArC,CAAN;;AAEA,YAAIkjI,SAAS,CAACE,oBAAV,KAAmC,eAAvC,EAAwD;AACtD;AACA;AACAN,wBAAc,CAACK,KAAD,CAAd,GAAwB,KAAxB;AACD,SAJD,MAIO,IACLD,SAAS,CAACE,oBAAV,KAAmC,UAAnC,IACAN,cAAc,CAACK,KAAD,CAFT,EAGL;AACA;AACA;AACAL,wBAAc,CAACK,KAAD,CAAd,GAAwB,IAAxB;AAEA,gBAAMj1E,MAAM,CAACyuE,kBAAP,CAA0Br9H,KAA1B,EAAiC6jI,KAAjC,EAAwC,IAAxC,CAAN;AACD;AACF,OAxBD,CADI,CAAN;AA2BD;AACF,GArCK,CAAN;AAsCD;;AAED,SAASE,kBAAT,CAA4BrrG,GAA5B,EAAiC;AAC/B;AACA;AACA;AACA;AACA,SAAOA,GAAG,CAAC5iB,KAAJ,CAAU,GAAV,EAAepgB,MAAf,CAAsB,CAACoyB,KAAD,EAAQ7U,OAAR,KAAoB;AAC/C,2BAAoBA,OAAO,CAAC6C,KAAR,CAAc,GAAd,CAApB;AAAA;AAAA,UAAOvZ,CAAP;AAAA,UAAUmX,MAAV;;AACA,WAAOoU,KAAK,GAAGjS,QAAQ,CAACnC,MAAD,CAAvB;AACD,GAHM,EAGJ,CAHI,CAAP;AAID;;AAED,SAASswH,gBAAT,CAA0BC,MAA1B,EAAkChnH,OAAlC,EAA2C;AACzC,MAAIinH,OAAO,GAAGjnH,OAAO,CAClBzkB,GADW,CACPoX,KAAK,IAAI;AACZ,UAAMu0H,QAAQ,GAAGF,MAAM,CAAC9qH,QAAP,CAAgBvJ,KAAhB,EAAuByC,QAAvB,CAAgC,MAAhC,CAAjB;AAEA,QAAIvV,IAAJ;;AACA,QAAI;AACFA,UAAI,GAAGuG,IAAI,CAAC0G,KAAL,CAAWo6H,QAAX,CAAP;AACD,KAFD,CAEE,OAAOplH,CAAP,EAAU;AACV,aAAO,IAAP;AACD;;AAED,QAAIjiB,IAAI,CAACsnI,gBAAT,EAA2B;AACzB,aAAO;AACLC,kBAAU,EAAEvnI,IAAI,CAACunI,UADZ;AAELC,iBAAS,EAAExnI,IAAI,CAACynI,aAFX;AAGLC,kBAAU,EAAET,kBAAkB,CAACjnI,IAAI,CAAC2nI,SAAN;AAHzB,OAAP;AAKD;;AAED,WAAO,IAAP;AACD,GApBW,EAqBXvoI,MArBW,CAqBJiH,CAAC,IAAIA,CArBD,CAAd;AAuBA+gI,SAAO,GAAGt1D,SAAS,CAACs1D,OAAD,EAAU,YAAV,CAAnB;AACA,SAAOA,OAAO,CAACA,OAAO,CAACzoI,MAAR,GAAiB,CAAlB,CAAP,CAA4B4oI,UAAnC;AACD;;AAED,eAAeK,QAAf,CAAwB5nI,IAAxB,EAA8B;AAC5B,QAAM2jI,WAAW,GAAG,IAAIn3H,GAAJ,EAApB;AAEA6mB,SAAO,CAACsrE,GAAR,CAAY,uBAAZ;AACA,QAAM+kC,cAAc,CAAC1jI,IAAD,EAAO2jI,WAAP,CAApB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,yBAAZ;AACA,QAAMylC,gBAAgB,CAACpkI,IAAD,EAAO2jI,WAAP,CAAtB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,qBAAZ;AACA,QAAMimC,YAAY,CAAC5kI,IAAD,EAAO2jI,WAAP,CAAlB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,2BAAZ;AACA,QAAMiiC,kBAAkB,CAAC5gI,IAAD,EAAO2jI,WAAP,CAAxB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,sBAAZ;AACA,QAAM4nC,aAAa,CAACvmI,IAAD,EAAO2jI,WAAP,CAAnB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,eAAZ;AACD;;AAED,SAASkpC,aAAT,CAAuBtpH,QAAvB,EAAiC;AAC/B,MAAIupH,YAAY,GAAG5E,gBAAgB,CAAC3kH,QAAD,CAAnC;;AAEA,MAAI,CAAC,QAAQJ,IAAR,CAAa2pH,YAAb,CAAL,EAAiC;AAC/B,WAAO,IAAP;AACD;;AAEDA,cAAY,GAAGA,YAAY,CAAC7vH,OAAb,CAAqB,QAArB,EAA+B,EAA/B,EAAmCA,OAAnC,CAA2C,SAA3C,EAAsD,EAAtD,CAAf,CAP+B,CAS/B;AACA;AACA;;AACA,MAAI43B,CAAC,GAAGi4F,YAAY,CAAChwH,KAAb,CAAmB,gBAAnB,CAAR;;AACA,MAAI,CAAC+3B,CAAL,EAAQ;AACN,WAAO,IAAP;AACD;;AACD,SAAOA,CAAC,CAAC,CAAD,CAAR;AACD;;AAED,SAASk4F,OAAT,CAAiB5nH,OAAjB,EAA0BwS,IAA1B,EAAgC;AAC9B,MAAI8C,KAAK,GAAGtV,OAAO,CAAC/gB,MAAR,CAAe6iB,CAAC,IAAIA,CAAC,CAACnG,SAAF,KAAgB6W,IAApC,CAAZ;;AACA,MAAI8C,KAAK,CAAC92B,MAAN,KAAiB,CAArB,EAAwB;AACtB,UAAM,IAAIxB,KAAJ,CAAU,0BAA0Bw1B,IAApC,CAAN;AACD;;AACD,MAAI8C,KAAK,CAAC92B,MAAN,IAAgB,CAApB,EAAuB;AACrB,UAAM,IAAIxB,KAAJ,CAAU,uCAAuCw1B,IAAjD,CAAN;AACD;;AACD,SAAO8C,KAAK,CAAC,CAAD,CAAZ;AACD;;AAED,SAAS/b,IAAT,CAAc,GAAGsuH,KAAjB,EAAwB;AACtB,SAAOA,KAAK,CAACrnI,KAAN,CAAY,CAAZ,EAAe/H,MAAf,CAAsB,CAACmsD,IAAD,EAAOpyB,IAAP,KAAgB;AAC3C,WAAOoyB,IAAI,GAAG,GAAP,GAAapyB,IAAI,CAAC1a,OAAL,CAAa,KAAb,EAAoB,EAApB,CAApB;AACD,GAFM,EAEJ+vH,KAAK,CAAC,CAAD,CAAL,CAAS/vH,OAAT,CAAiB,KAAjB,EAAwB,EAAxB,CAFI,CAAP;AAGD;;AAED,eAAegwH,YAAf,CAA4B1pH,QAA5B,EAAsC8X,MAAtC,EAA8C;AAC5C,MAAIwpG,UAAU,GAAGgI,aAAa,CAACtpH,QAAD,CAA9B;;AAEA,MAAI,CAACshH,UAAL,EAAiB;AACf,UAAM,IAAI1iI,KAAJ,CAAU,uBAAuBohB,QAAjC,CAAN;AACD;;AAED,MAAI4oH,MAAM,GAAG,IAAIhE,MAAJ,CAAW9sG,MAAX,CAAb;AACA,MAAIlW,OAAO,GAAGgnH,MAAM,CAACjnH,UAAP,EAAd;AAEA,MAAIjK,IAAI,GAAG,EAAX;AACA,MAAIiyH,QAAQ,GAAG/nH,OAAO,CAAC,CAAD,CAAP,CAAWrE,SAAX,CAAqBhE,KAArB,CAA2B,gBAA3B,CAAf;;AACA,MAAIowH,QAAJ,EAAc;AACZjyH,QAAI,GAAGiyH,QAAQ,CAAC,CAAD,CAAR,GAAc,GAArB;AACD;;AAED,MAAIC,OAAO,GAAGhB,MAAM,CAAC9qH,QAAP,CAAgB0rH,OAAO,CAAC5nH,OAAD,EAAUlK,IAAI,GAAG,cAAjB,CAAvB,CAAd;AACA,MAAI+oE,IAAI,GAAGz4E,IAAI,CAAC0G,KAAL,CAAWk7H,OAAO,CAAC5yH,QAAR,CAAiB,MAAjB,CAAX,CAAX;AACA,MAAI6yH,UAAU,GAAG1uH,IAAI,CAACzD,IAAD,EAAO+oE,IAAI,CAACqpD,sBAAZ,CAArB;AAEA,MAAIC,WAAW,GAAGnoH,OAAO,CAAC/gB,MAAR,CAAe6iB,CAAC,IAChCA,CAAC,CAACnG,SAAF,CAAYkrE,UAAZ,CAAuBttE,IAAI,CAAC0uH,UAAD,EAAa,SAAb,CAA3B,CADgB,CAAlB;AAGA,MAAIb,UAAU,GAAGL,gBAAgB,CAACC,MAAD,EAASmB,WAAT,CAAjC;AAEA,QAAMC,SAAS,GAAG7uH,IAAI,CAAC0uH,UAAD,EAAab,UAAb,EAAyB,cAAzB,CAAtB;AACA,MAAIF,QAAJ;;AACA,MAAI;AACFA,YAAQ,GAAGF,MAAM,CAAC9qH,QAAP,CAAgB0rH,OAAO,CAAC5nH,OAAD,EAAUooH,SAAV,CAAvB,EAA6ChzH,QAA7C,CAAsD,MAAtD,CAAX;AACD,GAFD,CAEE,OAAO0M,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY18E,CAAZ;AACA,UAAM,IAAI9kB,KAAJ,CAAU,iCAAV,CAAN;AACD;;AAED,MAAI6C,IAAJ;;AACA,MAAI;AACFA,QAAI,GAAGuG,IAAI,CAAC0G,KAAL,CAAWo6H,QAAX,CAAP;AACD,GAFD,CAEE,OAAOplH,CAAP,EAAU;AACV,UAAM,IAAI9kB,KAAJ,CAAU,gCAAV,CAAN;AACD;;AAED,SAAO20D,MAAM,CAAC8tE,SAAP,CAAiBC,UAAjB,EAA6B,MAAM+H,QAAQ,CAAC5nI,IAAD,CAA3C,CAAP;AACD;;AAED2Z,MAAM,CAACC,OAAP,GAAiB;AAAEquH;AAAF,CAAjB,C;;;;;;;;;;;AC/bA,SAAS7E,eAAT,CAAyBrrG,CAAzB,EAA4B;AAC1B,SAAO3wB,IAAI,CAACwQ,KAAL,CAAWmgB,CAAC,GAAG,GAAf,IAAsB,CAA7B;AACD;;AAED,SAASywG,eAAT,CAAyBzwG,CAAzB,EAA4B;AAC1B,SAAOxf,UAAU,CAAC,CAACwf,CAAC,GAAG,GAAL,EAAUvf,OAAV,CAAkB,CAAlB,CAAD,CAAjB;AACD;;AAEDmB,MAAM,CAACC,OAAP,GAAiB;AAAEwpH,iBAAF;AAAmBoF;AAAnB,CAAjB,C;;;;;;;;;;;ACRA,MAAM35F,CAAC,GAAG90B,mBAAO,CAAC,sDAAD,CAAjB;;AACA,MAAM6iH,IAAI,GAAG7iH,mBAAO,CAAC,0CAAD,CAApB;;AACA,MAAM+3C,MAAM,GAAG/3C,mBAAO,CAAC,0DAAD,CAAtB;;AACA,iBAA4BA,mBAAO,CAAC,4FAAD,CAAnC;AAAA,MAAQqpH,eAAR,YAAQA,eAAR;;AAEA,SAASqF,cAAT,CAAwB7kI,MAAxB,EAAgC;AAC9B;AACA;AACA,SAAOwD,IAAI,CAACwQ,KAAL,CAAWhU,MAAM,GAAG,EAApB,CAAP;AACD;;AAED,SAAS4/H,aAAT,CAAuB7oI,IAAvB,EAA6B;AAC3B,MAAIowB,KAAK,GAAGpwB,IAAI,CAACqe,KAAL,CAAW,GAAX,CAAZ;AACA,SAAO+R,KAAK,CAAC,CAAD,CAAL,GAAW,GAAX,GAAiBA,KAAK,CAAC,CAAD,CAA7B;AACD;;AAED,SAASs4G,cAAT,CAAwBvuH,IAAxB,EAA8B;AAC5B,UAAQA,IAAR;AACE,SAAK,MAAL;AACA,SAAK,UAAL;AACE,aAAO,UAAP;;AACF,SAAK,YAAL;AACA,SAAK,cAAL;AACE,aAAO,QAAP;;AACF,SAAK,SAAL;AACE,aAAO,SAAP;;AACF,SAAK,mBAAL;AACE,aAAO,YAAP;;AACF,SAAK,UAAL;AACE,aAAO,UAAP;;AACF;AACE,aAAO,OAAP;AAdJ;AAgBD;;AAED,SAASg9D,SAAT,CAAmBje,GAAnB,EAAwBpmD,GAAxB,EAA6B;AAC3B,SAAO,CAAC,GAAGomD,GAAJ,EAAS10D,IAAT,CAAc,CAACyyD,KAAD,EAAQgB,KAAR,KAAkB;AACrC,QAAIhB,KAAK,CAACnkD,GAAD,CAAL,GAAamlD,KAAK,CAACnlD,GAAD,CAAtB,EAA6B;AAC3B,aAAO,CAAC,CAAR;AACD,KAFD,MAEO,IAAImkD,KAAK,CAACnkD,GAAD,CAAL,GAAamlD,KAAK,CAACnlD,GAAD,CAAtB,EAA6B;AAClC,aAAO,CAAP;AACD;;AACD,WAAO,CAAP;AACD,GAPM,CAAP;AAQD;;AAED,SAASwxH,OAAT,CAAiBprE,GAAjB,EAAsByvE,OAAtB,EAA+B;AAC7B,SAAOzvE,GAAG,CAACj7D,MAAJ,CAAW,UAAS8U,GAAT,EAAcmO,IAAd,EAAoB;AACpC,QAAIpO,GAAG,GAAGoO,IAAI,CAACynH,OAAD,CAAd;;AACA,QAAI,CAAC51H,GAAG,CAAC2J,cAAJ,CAAmB5J,GAAnB,CAAL,EAA8B;AAC5BC,SAAG,CAACD,GAAD,CAAH,GAAW,EAAX;AACD;;AACDC,OAAG,CAACD,GAAD,CAAH,CAASjQ,IAAT,CAAcqe,IAAd;AACA,WAAOnO,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD;;AAED,SAASg2H,cAAT,CAAwB1jI,IAAxB,EAA8B2jI,WAA9B,EAA2C;AACzC,SAAOvkH,OAAO,CAAC0pD,GAAR,CACL9oE,IAAI,CAAC4jI,QAAL,CAAcloI,GAAd,CAAkB,MAAM0lI,OAAN,IAAiB;AACjC,QAAI,CAACA,OAAO,CAACsH,OAAb,EAAsB;AACpB,UAAI1I,EAAE,GAAG,MAAMluE,MAAM,CAACqvE,aAAP,CAAqB;AAClCrsH,YAAI,EAAEuuH,cAAc,CAACjC,OAAO,CAACtsH,IAAT,CADc;AAElCnT,YAAI,EAAEy/H,OAAO,CAACz/H,IAFoB;AAGlCqiI,iBAAS,EAAE5C,OAAO,CAACuH,SAAR,GAAoB,KAApB,GAA4B,IAHL;AAIlCzE,cAAM,EAAE9C,OAAO,CAAC8C;AAJkB,OAArB,CAAf;AAMAP,iBAAW,CAACxlI,GAAZ,CAAgBijI,OAAO,CAACpB,EAAxB,EAA4BA,EAA5B;AACD;AACF,GAVD,CADK,CAAP;AAaD;;AAED,eAAeoE,gBAAf,CAAgCpkI,IAAhC,EAAsC2jI,WAAtC,EAAmD;AACjD;AACA;AAEA,QAAMsB,UAAU,GAAG,MAAMnzE,MAAM,CAACowE,aAAP,EAAzB;AACA,QAAM0G,WAAW,GAAG3D,UAAU,CAAC5wH,IAAX,CAAgBmwH,GAAG,IAAIA,GAAG,CAAC7iI,IAAJ,KAAa,QAApC,EAA8Cq+H,EAAlE;AACA,QAAM6I,oBAAoB,GAAG,CAAC,gBAAD,EAAmB,yBAAnB,CAA7B;;AAEA,WAASC,eAAT,CAAyBtE,GAAzB,EAA8B;AAC5B,QACEA,GAAG,CAACuE,iBAAJ,KACA/oI,IAAI,CAACgpI,eAAL,CAAqB30H,IAArB,CACE0tH,KAAK,IAAIA,KAAK,CAACpgI,IAAN,KAAe,0BAD1B,EAEEq+H,EAJJ,EAKE;AACA,UAAI6I,oBAAoB,CAACz4H,QAArB,CAA8Bo0H,GAAG,CAAC7iI,IAAlC,CAAJ,EAA6C;AAC3C,eAAO,QAAP;AACD,OAFD,MAEO;AACL,eAAO,UAAP;AACD;AACF,KAXD,MAWO,IACL6iI,GAAG,CAACuE,iBAAJ,KACA/oI,IAAI,CAACgpI,eAAL,CAAqB30H,IAArB,CAA0B0tH,KAAK,IAAIA,KAAK,CAACpgI,IAAN,KAAe,sBAAlD,EACGq+H,EAHE,EAIL;AACA,aAAO,YAAP;AACD;AACF,GA3BgD,CA4BjD;AACA;;;AAEA,OAAK,IAAI+B,KAAT,IAAkB/hI,IAAI,CAACgpI,eAAvB,EAAwC;AACtC,QAAI,CAACjH,KAAK,CAAC2G,OAAX,EAAoB;AAClB;AACA,UACE3G,KAAK,CAACpgI,IAAN,KAAe,0BAAf,IACAogI,KAAK,CAACpgI,IAAN,KAAe,sBAFjB,EAGE;AACA,YAAIsnI,OAAO,GAAG,MAAMn3E,MAAM,CAACgwE,mBAAP,CAA2B;AAC7CngI,cAAI,EAAEogI,KAAK,CAACpgI,IADiC;AAE7C8iI,mBAAS,EAAE;AAFkC,SAA3B,CAApB;AAIAd,mBAAW,CAACxlI,GAAZ,CAAgB4jI,KAAK,CAAC/B,EAAtB,EAA0BiJ,OAA1B;AACD;;AAED,UAAIC,IAAI,GAAGlpI,IAAI,CAACilI,UAAL,CAAgB7lI,MAAhB,CACTolI,GAAG,IAAIA,GAAG,CAACuE,iBAAJ,KAA0BhH,KAAK,CAAC/B,EAD9B,CAAX;;AAIA,WAAK,IAAIwE,GAAT,IAAgB0E,IAAI,CAACzwI,OAAL,EAAhB,EAAgC;AAC9B,YAAI,CAAC+rI,GAAG,CAACkE,OAAT,EAAkB;AAChB,cAAIS,WAAW,GAAG,EAAlB;AACAA,qBAAW,CAACxnI,IAAZ,GAAmB6iI,GAAG,CAAC7iI,IAAvB,CAFgB,CAIhB;AACA;;AACA,kBAAQmnI,eAAe,CAACtE,GAAD,CAAvB;AACE,iBAAK,QAAL;AAAe;AACb;AACA,oBAAIxE,EAAE,GAAG4I,WAAT;AACAjF,2BAAW,CAACxlI,GAAZ,CAAgBqmI,GAAG,CAACxE,EAApB,EAAwBA,EAAxB;AACA;AACD;;AACD,iBAAK,YAAL,CAPF,CAOqB;;AACnB,iBAAK,UAAL;AAAiB;AACf;;AACF;AAAS;AACPmJ,2BAAW,CAACzE,QAAZ,GAAuBuE,OAAvB;AACA,oBAAIjJ,EAAE,GAAG,MAAMluE,MAAM,CAACqwE,cAAP,CAAsBgH,WAAtB,CAAf;AACAxF,2BAAW,CAACxlI,GAAZ,CAAgBqmI,GAAG,CAACxE,EAApB,EAAwBA,EAAxB;AACA;AACD;AAfH;AAiBD;AACF;AACF;AACF;AACF;;AAED,SAAS4E,YAAT,CAAsB5kI,IAAtB,EAA4B2jI,WAA5B,EAAyC;AACvC,SAAOvkH,OAAO,CAAC0pD,GAAR,CACL9oE,IAAI,CAAC6kI,MAAL,CAAYnpI,GAAZ,CAAgB,MAAM+mI,KAAN,IAAe;AAC7B,QAAI,CAACA,KAAK,CAACiG,OAAX,EAAoB;AAClB,UAAI1I,EAAE,GAAG,MAAMluE,MAAM,CAAC0wE,WAAP,CAAmB;AAChC7gI,YAAI,EAAE8gI,KAAK,CAAC9gI;AADoB,OAAnB,CAAf;AAGAgiI,iBAAW,CAACxlI,GAAZ,CAAgBskI,KAAK,CAACzC,EAAtB,EAA0BA,EAA1B;AACD;AACF,GAPD,CADK,CAAP;AAUD;;AAED,eAAeY,kBAAf,CAAkC5gI,IAAlC,EAAwC2jI,WAAxC,EAAqD;AACnD,QAAMkB,MAAM,GAAG,MAAM/yE,MAAM,CAACywE,SAAP,EAArB;AACA,QAAM0C,UAAU,GAAG,MAAMnzE,MAAM,CAACowE,aAAP,EAAzB;AACA,QAAM0G,WAAW,GAAG3D,UAAU,CAAC5wH,IAAX,CAAgBmwH,GAAG,IAAIA,GAAG,CAAC7iI,IAAJ,KAAa,QAApC,EAA8Cq+H,EAAlE;AACA,QAAMoJ,oBAAoB,GAAGnE,UAAU,CAAC5wH,IAAX,CAC3BmwH,GAAG,IAAIA,GAAG,CAAC7iI,IAAJ,KAAa,mBADO,EAE3Bq+H,EAFF,CAJmD,CAM7C;;AACN,QAAMqJ,iBAAiB,GAAGrpI,IAAI,CAAC6kI,MAAL,CAAYxwH,IAAZ,CACxBouH,KAAK,IAAIA,KAAK,CAAC9gI,IAAN,KAAe,kBADA,EAExBq+H,EAFF;AAIA,MAAIyF,mBAAmB,GAAGxG,OAAO,CAACj/H,IAAI,CAAC2gI,YAAN,EAAoB,YAApB,CAAjC;AACA,MAAI2I,sBAAsB,GAAGrK,OAAO,CAACj/H,IAAI,CAACimI,eAAN,EAAuB,gBAAvB,CAApC,CAZmD,CAcnD;AACA;;AACA,OAAK,IAAIV,WAAT,IAAwBvlI,IAAI,CAAC2gI,YAA7B,EAA2C;AACzCgD,eAAW,CAACxlI,GAAZ,CAAgBonI,WAAW,CAACvF,EAA5B,EAAgCpD,IAAI,CAACD,EAAL,EAAhC;AACD;;AAED,QAAMv9G,OAAO,CAAC0pD,GAAR,CACJvtE,MAAM,CAACiS,IAAP,CAAYi4H,mBAAZ,EAAiC/pI,GAAjC,CAAqC,MAAMglI,SAAN,IAAmB;AACtD,QAAIC,YAAY,GAAG8E,mBAAmB,CAAC/E,SAAD,CAAtC;AAEA,QAAIgF,QAAQ,GAAG/E,YAAY,CACxBjlI,GADY,CACR6pI,WAAW,IAAI;AAClB,UAAIA,WAAW,CAACmD,OAAhB,EAAyB;AACvB,eAAO,IAAP;AACD,OAHiB,CAKlB;;;AACA,UAAIzC,eAAe,GAAGqD,sBAAsB,CAAC/D,WAAW,CAACvF,EAAb,CAA5C;;AACA,UAAIiG,eAAJ,EAAqB;AACnBA,uBAAe,GAAGA,eAAe,CAACvqI,GAAhB,CAAoB6tI,QAAQ,IAAI;AAChD,iBAAO;AACL3lI,kBAAM,EAAE6kI,cAAc,CAACc,QAAQ,CAAC3lI,MAAV,CADjB;AAELw+H,oBAAQ,EAAEuB,WAAW,CAAC/oI,GAAZ,CAAgB2uI,QAAQ,CAACC,WAAzB,KAAyC,IAF9C;AAGL1D,iBAAK,EAAEyD,QAAQ,CAACxD;AAHX,WAAP;AAKD,SANiB,CAAlB;AAOD,OAfiB,CAiBlB;;;AACA,UAAIF,cAAc,GAAG;AACnB7F,UAAE,EAAE2D,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACvF,EAA5B,CADe;AAEnBoB,eAAO,EAAEuC,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACkE,UAA5B,CAFU;AAGnB9uI,YAAI,EAAE4qI,WAAW,CAAC5qI,IAHC;AAInBiJ,cAAM,EAAE6kI,cAAc,CAAClD,WAAW,CAAC3hI,MAAb,CAJH;AAKnBw+H,gBAAQ,EAAEuB,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACiE,WAA5B,KAA4C,IALnC;AAMnBE,eAAO,EAAE,CAAC,SAAD,EAAY,YAAZ,EAA0Bt5H,QAA1B,CAAmCm1H,WAAW,CAACmE,OAA/C,CANU;AAOnB5D,aAAK,EAAEP,WAAW,CAACQ,IAAZ,IAAoB,IAPR;AAQnB4D,mBAAW,EAAEpE,WAAW,CAACqE,SAAZ,IAAyB,IARnB;AASnB5D,mBAAW,EACTrC,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACsE,uBAA5B,KAAwD,IAVvC;AAWnB5D,uBAAe,EAAEA;AAXE,OAArB,CAlBkB,CAgClB;;AACA,UAAIV,WAAW,CAACuE,mBAAhB,EAAqC;AACnCjE,sBAAc,CAACpD,KAAf,GAAuBoC,MAAM,CAACxwH,IAAP,CACrBuJ,CAAC,IACCA,CAAC,CAACmnH,aAAF,KACApB,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACuE,mBAA5B,CAHmB,EAIrB9J,EAJF;AAKD,OAND,MAMO;AACL6F,sBAAc,CAACpD,KAAf,GAAuBkB,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACxC,QAA5B,CAAvB;AACD,OAzCiB,CA2ClB;;;AACA,UACEwC,WAAW,CAACxC,QAAZ,KAAyBsG,iBAAzB,IACA1F,WAAW,CAAC/oI,GAAZ,CAAgB2qI,WAAW,CAACiE,WAA5B,MAA6CZ,WAF/C,EAGE;AACA/C,sBAAc,CAACzD,QAAf,GAA0BgH,oBAA1B;AACAvD,sBAAc,CAACpD,KAAf,GAAuB,IAAvB;AACD;;AACD,aAAOoD,cAAP;AACD,KArDY,EAsDZzmI,MAtDY,CAsDLiH,CAAC,IAAIA,CAtDA,CAAf;AAwDA,UAAMyrD,MAAM,CAAC2uE,eAAP,CAAuBkD,WAAW,CAAC/oI,GAAZ,CAAgB8lI,SAAhB,CAAvB,EAAmDgF,QAAnD,CAAN;AACD,GA5DD,CADI,CAAN;AA+DD;;AAED,eAAea,aAAf,CAA6BvmI,IAA7B,EAAmC2jI,WAAnC,EAAgD;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAI0C,OAAO,GAAGv0D,SAAS,CAAC9xE,IAAI,CAAC8P,MAAN,EAAc,OAAd,CAAvB;AAEA,QAAMi6H,iBAAiB,GAAG/pI,IAAI,CAACgpI,eAAL,CAAqB30H,IAArB,CACxB0tH,KAAK,IAAIA,KAAK,CAACpgI,IAAN,KAAe,0BADA,EAExBq+H,EAFF;AAGA,QAAMgK,mBAAmB,GAAGhqI,IAAI,CAACgpI,eAAL,CAAqB30H,IAArB,CAC1B0tH,KAAK,IAAIA,KAAK,CAACpgI,IAAN,KAAe,sBADE,EAE1Bq+H,EAFF;AAIA,QAAMluE,MAAM,CAACmuE,kBAAP,CAA0B,YAAY;AAC1C,SAAK,IAAI0G,MAAT,IAAmBN,OAAnB,EAA4B;AAC1B,UAAInjI,KAAK,GAAGsgI,aAAa,CAACmD,MAAM,CAACzjI,KAAR,CAAzB;AAEA,YAAMkc,OAAO,CAAC0pD,GAAR,CACJ69D,MAAM,CAAC1B,UAAP,CAAkBvpI,GAAlB,CAAsB,MAAMorI,SAAN,IAAmB;AACvC,YAAIC,KAAK,GAAGpD,WAAW,CAAC/oI,GAAZ,CAAgBksI,SAAS,CAAC9G,EAA1B,CAAZ;AACA,YAAIp8H,MAAM,GAAGkjI,SAAS,CAACR,QAAV,GAAqB,EAAlC;;AAEA,YACE,CAACS,KAAD,IACAD,SAAS,CAACiC,iBAAV,KAAgCgB,iBADhC,IAEAjD,SAAS,CAACiC,iBAAV,KAAgCiB,mBAHlC,EAIE;AACA;AACD;;AAED,cAAMl4E,MAAM,CAACuuE,eAAP,CAAuBn9H,KAAvB,EAA8B6jI,KAA9B,EAAqCnjI,MAArC,CAAN;AACD,OAbD,CADI,CAAN;AAgBD;AACF,GArBK,CAAN;AAsBD,C,CAED;;;AAEA,eAAegkI,QAAf,CAAwB5nI,IAAxB,EAA8B;AAC5B,QAAM2jI,WAAW,GAAG,IAAIn3H,GAAJ,EAApB;AAEA6mB,SAAO,CAACsrE,GAAR,CAAY,uBAAZ;AACA,QAAM+kC,cAAc,CAAC1jI,IAAD,EAAO2jI,WAAP,CAApB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,yBAAZ;AACA,QAAMylC,gBAAgB,CAACpkI,IAAD,EAAO2jI,WAAP,CAAtB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,qBAAZ;AACA,QAAMimC,YAAY,CAAC5kI,IAAD,EAAO2jI,WAAP,CAAlB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,2BAAZ;AACA,QAAMiiC,kBAAkB,CAAC5gI,IAAD,EAAO2jI,WAAP,CAAxB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,sBAAZ;AACA,QAAM4nC,aAAa,CAACvmI,IAAD,EAAO2jI,WAAP,CAAnB;AAEAtwG,SAAO,CAACsrE,GAAR,CAAY,eAAZ;AACD;;AAED,eAAesrC,WAAf,CAA2BjqI,IAA3B,EAAiC;AAC/B,MAAIA,IAAI,CAACA,IAAT,EAAe;AACbA,QAAI,GAAGA,IAAI,CAACA,IAAZ;AACD;;AAED,SAAO8xD,MAAM,CAAC8tE,SAAP,CAAiB5/H,IAAI,CAAC2mI,MAAL,CAAYhlI,IAA7B,EAAmC,MAAMimI,QAAQ,CAAC5nI,IAAI,CAAC2mI,MAAN,CAAjD,CAAP;AACD;;AAEDhtH,MAAM,CAACC,OAAP,GAAiB;AAAEqwH;AAAF,CAAjB,C;;;;;;;;;;;ACnUA,SAAS7G,eAAT,CAAyBrrG,CAAzB,EAA4B;AAC1B,SAAO3wB,IAAI,CAACwQ,KAAL,CAAWmgB,CAAC,GAAG,GAAf,IAAsB,CAA7B;AACD;;AAED,SAASywG,eAAT,CAAyBzwG,CAAzB,EAA4B;AAC1B,SAAOxf,UAAU,CAAC,CAACwf,CAAC,GAAG,GAAL,EAAUvf,OAAV,CAAkB,CAAlB,CAAD,CAAjB;AACD;;AAEDmB,MAAM,CAACC,OAAP,GAAiB;AAAEwpH,iBAAF;AAAmBoF;AAAnB,CAAjB,C;;;;;;;;;;;;;;;;;;;;;;;;;;ACRe,eAAe0B,YAAf,CAA4BC,EAA5B,EAAgCvN,IAAhC,EAAsC;AACnD,WAASwN,QAAT,CAAkB79G,IAAlB,EAAwB;AACtB,WAAOA,IAAI,CAACmyG,IAAL,IAAa,IAAb,GAAoBnyG,IAAI,CAACmyG,IAAzB,GAAgCnyG,IAAI,CAAC89G,WAA5C;AACD;;AAEDF,IAAE,CAACG,SAAH,CAAc;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAzBE,EALmD,CAgCnD;;AACA,MAAI3D,MAAM,GAAGwD,EAAE,CAACjK,QAAH,CACV,oEADU,EAEX,EAFW,EAGX,IAHW,CAAb;AAKAiK,IAAE,CAAC5E,WAAH,CAAe,MAAM;AACnBoB,UAAM,CAACjrI,GAAP,CAAW6uI,WAAW,IAAI;AACxB,UAAIzyH,KAAK,GAAGyyH,WAAW,CAAC5oI,IAAZ,CAAiBmW,KAAjB,CACV,2CADU,CAAZ;;AAGA,UAAIA,KAAK,IAAI,IAAb,EAAmB;AACjBub,eAAO,CAACsrE,GAAR,CAAY,oCAAZ,EAAkD4rC,WAAW,CAAC5oI,IAA9D;AACA;AACD;;AAED,UAAImT,IAAI,GAAGgD,KAAK,CAAC,CAAD,CAAhB;AACA,UAAI5U,KAAK,GAAG4U,KAAK,CAAC,CAAD,CAAL,CAASnX,KAAT,CAAe,CAAf,EAAkB,CAAlB,IAAuB,GAAvB,GAA6BmX,KAAK,CAAC,CAAD,CAAL,CAASnX,KAAT,CAAe,CAAf,CAAzC;AACA,UAAI6pI,OAAO,GAAGzxH,QAAQ,CAACjB,KAAK,CAAC,CAAD,CAAN,CAAtB;AACA,UAAI0sH,GAAG,GAAG1sH,KAAK,CAAC,CAAD,CAAf;AAEA,UAAIlU,MAAM,GAAGmV,QAAQ,CAACqxH,QAAQ,CAACG,WAAD,CAAT,CAArB;;AACA,UAAInkI,KAAK,CAACxC,MAAD,CAAT,EAAmB;AACjBA,cAAM,GAAG,CAAT;AACD;;AAED,UAAI6mI,SAAS,GAAGF,WAAW,CAAC5oI,IAAZ,CAAiBqX,KAAjB,CAAuB,GAAvB,EAA4B,CAA5B,CAAhB;AACA,UAAI0xH,SAAS,GAAGP,EAAE,CAACjK,QAAH,CACd,gDADc,EAEd,CAAE,GAAEuK,SAAU,cAAajG,GAAI,EAA/B,CAFc,EAGd,IAHc,CAAhB;AAMA,UAAI9E,KAAK,GAAG5qH,IAAI,KAAK,eAAT,GAA2B,iBAA3B,GAA+C,cAA3D;AACAq1H,QAAE,CAACjK,QAAH,CACG,eAAcR,KAAM,kEADvB,EAEE,CACG,GAAEx8H,KAAM,IAAGshI,GAAI,EADlB,EAEEgG,OAFF,EAGEhG,GAHF,EAIE5gI,MAJF,EAKE8mI,SAAS,CAAC/rI,MAAV,GAAmB,CAAnB,IAAwByrI,QAAQ,CAACM,SAAS,CAAC,CAAD,CAAV,CAAR,KAA2B,MAAnD,GAA4D,CAA5D,GAAgE,CALlE,CAFF;AAUD,KArCD;AAsCD,GAvCD,EAtCmD,CA+EnD;;AACA,MAAIC,OAAO,GAAGR,EAAE,CAACjK,QAAH,CACX,oEADW,EAEZ,EAFY,EAGZ,IAHY,CAAd;AAKAiK,IAAE,CAAC5E,WAAH,CAAe,MAAM;AACnBoF,WAAO,CAACjvI,GAAR,CAAY26B,MAAM,IAAI;AACpB,UAAIve,KAAK,GAAGue,MAAM,CAAC10B,IAAP,CAAYmW,KAAZ,CAAkB,wBAAlB,CAAZ;;AACA,UAAIA,KAAJ,EAAW;AACT,YAAI5U,KAAK,GAAG4U,KAAK,CAAC,CAAD,CAAL,CAASnX,KAAT,CAAe,CAAf,EAAkB,CAAlB,IAAuB,GAAvB,GAA6BmX,KAAK,CAAC,CAAD,CAAL,CAASnX,KAAT,CAAe,CAAf,CAAzC;AACA,YAAIiD,MAAM,GAAGmV,QAAQ,CAACqxH,QAAQ,CAAC/zG,MAAD,CAAT,CAArB;;AACA,YAAIjwB,KAAK,CAACxC,MAAD,CAAT,EAAmB;AACjBA,gBAAM,GAAG,CAAT;AACD;;AAEDumI,UAAE,CAACjK,QAAH,CACG,6DADH,EAEE,CAACh9H,KAAD,EAAQU,MAAR,CAFF;AAID;AACF,KAdD;AAeD,GAhBD,EArFmD,CAuGnD;;AACA,MAAIkiI,KAAK,GAAGqE,EAAE,CAACjK,QAAH,CACT,2DADS,EAEV,EAFU,EAGV,IAHU,CAAZ;;AAMA,MAAI0K,SAAS,GAAGhvG,GAAG,IAAI;AACrB,QAAI;AACF,UAAI1jC,KAAK,GAAGqO,IAAI,CAAC0G,KAAL,CAAW2uB,GAAX,CAAZ;AACA,aAAO1jC,KAAK,IAAIA,KAAK,KAAK,EAAnB,GAAwBA,KAAxB,GAAgC,IAAvC;AACD,KAHD,CAGE,OAAO+pB,CAAP,EAAU;AACV,aAAO,IAAP;AACD;AACF,GAPD;;AASAkoH,IAAE,CAAC5E,WAAH,CAAe,MAAM;AACnBO,SAAK,CAACj7H,OAAN,CAAcggI,IAAI,IAAI;AACpB,UAAIC,MAAM,GAAGF,SAAS,CAACR,QAAQ,CAACS,IAAD,CAAT,CAAtB;;AACA,UAAIC,MAAJ,EAAY;AACV,+BAAaD,IAAI,CAAClpI,IAAL,CAAUqX,KAAV,CAAgB,GAAhB,CAAb;AAAA;AAAA,YAAOgnH,EAAP;;AACAmK,UAAE,CAACjK,QAAH,CAAa,4CAAb,EAA0D,CAACF,EAAD,EAAK8K,MAAL,CAA1D;AACD;AACF,KAND;AAOD,GARD;AAUAX,IAAE,CAACG,SAAH,CAAc;AAChB;AACA;AACA;AACA,GAJE;AAKD,C;;;;;;;;;;;ACtID,IAAIxwH,KAAK,GAAGC,mBAAO,CAAC,uEAAD,CAAnB;;AACA,IAAIY,EAAE,GAAGb,KAAK,CAACixH,UAAN,CAAiBhxH,OAAjB,EAAT;AAAA,IACCC,GAAG,GAAGD,mBAAO,CAAC,kBAAD,CADd;;AAGAY,EAAE,CAACQ,UAAH,GAAgBR,EAAE,CAACQ,UAAH,IAAiBnB,GAAG,CAACmB,UAArC;;AAEA,IAAIlB,QAAQ,GAAGF,mBAAO,CAAC,yEAAD,CAAtB;AAAA,IACCG,OAAO,GAAGH,mBAAO,CAAC,uEAAD,CADlB;;AAGA,IAAI+F,KAAK,GAAG,OAAO3B,IAAP,CAAY4V,OAAO,CAACK,QAApB,CAAZ;;AAGAza,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAUja,KAApB,EAA2B;AAC3C,MAAI8b,IAAI,GAAG9jB,SAAX;AAAA,MACCqzI,SAAS,GAAG,EADb;;AAGA,MAAIrrI,KAAK,IAAI,OAAOA,KAAP,KAAiB,QAA9B,EAAwC;AAAE;AACzC,QAAIgb,EAAE,CAACQ,UAAH,CAAcxb,KAAd,CAAJ,EAA0B;AACzBqrI,eAAS,GAAGrrI,KAAZ;AACA8b,UAAI,GAAG,IAAIvB,OAAJ,CAAYva,KAAZ,EAAmBma,KAAK,CAACW,SAAN,CAAgBW,IAAnC,CAAP;AACA,KAHD,MAGO;AACN,YAAMtB,KAAK,CAACyB,MAAN,CAAaC,gBAAnB;AACA;AACD,GAPD,MAOO,IAAI7b,KAAK,IAAIob,MAAM,CAACC,QAAP,CAAgBrb,KAAhB,CAAb,EAAqC;AAAE;AAC7C8b,QAAI,GAAG,IAAIvB,OAAJ,CAAYva,KAAZ,EAAmBma,KAAK,CAACW,SAAN,CAAgBQ,MAAnC,CAAP;AACA,GAFM,MAEA;AAAE;AACRQ,QAAI,GAAG,IAAIvB,OAAJ,CAAY,IAAZ,EAAkBJ,KAAK,CAACW,SAAN,CAAgBC,IAAlC,CAAP;AACA;;AAED,WAASiB,QAAT,CAAkBwa,MAAlB,EAA0Bx0B,IAA1B,EAAgC;AAC/Bw0B,UAAM,GAAGnc,GAAG,CAACqF,OAAJ,CAAYrF,GAAG,CAACmC,SAAJ,CAAcga,MAAd,CAAZ,CAAT;AACA,QAAIpL,KAAK,GAAGppB,IAAI,CAACqX,KAAL,CAAW,GAAX,CAAZ;;AACA,SAAK,IAAIxB,CAAC,GAAG,CAAR,EAAW4e,CAAC,GAAGrL,KAAK,CAACpsB,MAA1B,EAAkC6Y,CAAC,GAAG4e,CAAtC,EAAyC5e,CAAC,EAA1C,EAA8C;AAC7C,UAAImb,IAAI,GAAG3Y,GAAG,CAACmC,SAAJ,CAAcnC,GAAG,CAACN,IAAJ,CAASyc,MAAT,EAAiBpL,KAAK,CAACpqB,KAAN,CAAY6W,CAAZ,EAAe4e,CAAf,EAAkB1c,IAAlB,CAAuBM,GAAG,CAACoC,GAA3B,CAAjB,CAAd,CAAX;;AACA,UAAIuW,IAAI,CAAChsB,OAAL,CAAawvB,MAAb,MAAyB,CAA7B,EAAgC;AAC/B,eAAOxD,IAAP;AACA;AACD;;AACD,WAAO3Y,GAAG,CAACmC,SAAJ,CAAcnC,GAAG,CAACN,IAAJ,CAASyc,MAAT,EAAiBnc,GAAG,CAAC6G,QAAJ,CAAalf,IAAb,CAAjB,CAAd,CAAP;AACA;;AAED,WAASia,QAAT;AAAkB;AAAU9I,OAA5B,EAAmC;AAClC,QAAIA,KAAK,IAAI2I,IAAb,EAAmB;AAClB,UAAII,IAAJ,CADkB,CAElB;;AACA,UAAI,OAAO/I,KAAP,KAAiB,QAArB,EACC+I,IAAI,GAAGJ,IAAI,CAACG,QAAL,CAAc9I,KAAd,CAAP,CAJiB,CAKlB;;AACA,UAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAK,CAACgJ,SAAb,KAA2B,WAAxD,IAAuE,OAAOhJ,KAAK,CAACiJ,MAAb,KAAwB,WAAnG,EACCF,IAAI,GAAGJ,IAAI,CAACG,QAAL,CAAc9I,KAAK,CAACgJ,SAApB,CAAP;;AAED,UAAID,IAAJ,EAAU;AACT,eAAOA,IAAP;AACA;AACD;;AACD,WAAO,IAAP;AACA;;AAED,SAAO;AACN;AACF;AACA;AACA;AACA;AACA;AACEQ,YAAQ,EAAE;AAAU;AAAUvJ,SAApB,EAA2B;AACpC,UAAI+I,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;AACA,aAAO+I,IAAI,IAAIA,IAAI,CAACU,OAAL,EAAR,IAA0B,IAAjC;AACA,KAVK;;AAYN;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,iBAAa,EAAE;AAAU;AAAU1J,SAApB;AAA2B;AAAY2J,YAAvC,EAAiD;AAC/D,UAAIZ,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACTA,YAAI,CAACa,YAAL,CAAkBD,QAAlB;AACA,OAFD,MAEO;AACNA,gBAAQ,CAAC,IAAD,EAAO,yBAAyB3J,KAAhC,CAAR;AACA;AACD,KA1BK;;AA4BN;AACF;AACA;AACA;AACA;AACA;AACA;AACE6J,cAAU,EAAE;AAAU;AAAU7J,SAApB;AAA2B;AAAqB8J,YAAhD,EAA0D;AACrE,UAAIf,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACT,YAAI7b,IAAI,GAAG6b,IAAI,CAACU,OAAL,EAAX;;AACA,YAAIvc,IAAI,IAAIA,IAAI,CAACrB,MAAjB,EAAyB;AACxB,iBAAOqB,IAAI,CAACuV,QAAL,CAAcqH,QAAQ,IAAI,MAA1B,CAAP;AACA;AACD;;AACD,aAAO,EAAP;AACA,KA5CK;;AA8CN;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,mBAAe,EAAE;AAAU;AAAU/J,SAApB;AAA2B;AAAY2J,YAAvC;AAAiD;AAAqBG,YAAtE,EAAgF;AAChG,UAAIf,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACTA,YAAI,CAACa,YAAL,CAAkB,UAAU1c,IAAV,EAAgB8c,GAAhB,EAAqB;AACtC,cAAIA,GAAJ,EAAS;AACRL,oBAAQ,CAACzc,IAAD,EAAO8c,GAAP,CAAR;AACA;AACA;;AAED,cAAI9c,IAAI,IAAIA,IAAI,CAACrB,MAAjB,EAAyB;AACxB8d,oBAAQ,CAACzc,IAAI,CAACuV,QAAL,CAAcqH,QAAQ,IAAI,MAA1B,CAAD,CAAR;AACA,WAFD,MAEO;AACNH,oBAAQ,CAAC,EAAD,CAAR;AACA;AACD,SAXD;AAYA,OAbD,MAaO;AACNA,gBAAQ,CAAC,EAAD,CAAR;AACA;AACD,KAxEK;;AA0EN;AACF;AACA;AACA;AACA;AACEM,cAAU,EAAE;AAAU;AAAUjK,SAApB,EAA2B;AAAE;AACxC,UAAI+I,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACTJ,YAAI,CAACuB,WAAL,CAAiBnB,IAAI,CAACC,SAAtB;AACA;AACD,KApFK;;AAsFN;AACF;AACA;AACA;AACA;AACEmB,iBAAa,EAAE;AAAU;AAAUC,WAApB,EAA6B;AAAE;AAC7CzB,UAAI,CAACyB,OAAL,GAAeA,OAAf;AACA,KA7FK;;AA+FN;AACF;AACA;AACA;AACA;AACEC,iBAAa,EAAE,YAAY;AAC1B,aAAO1B,IAAI,CAACyB,OAAL,IAAgB,EAAvB;AACA,KAtGK;;AAwGN;AACF;AACA;AACA;AACA;AACA;AACA;AACEE,sBAAkB,EAAE;AAAU;AAAUtK,SAApB;AAA2B;AAAUoK,WAArC,EAA8C;AACjE,UAAIrB,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACTA,YAAI,CAACqB,OAAL,GAAeA,OAAf;AACA;AACD,KApHK;;AAsHN;AACF;AACA;AACA;AACA;AACA;AACEG,sBAAkB,EAAE;AAAU;AAAUvK,SAApB,EAA2B;AAC9C,UAAI+I,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACT,eAAOA,IAAI,CAACqB,OAAL,IAAgB,EAAvB;AACA;;AACD,aAAO,EAAP;AACA,KAlIK;;AAoIN;AACF;AACA;AACA;AACA;AACA;AACEI,cAAU,EAAE;AAAU;AAAUxK,SAApB;AAA2B;AAAUyK,WAArC,EAA8C;AACzD,UAAI1B,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI+I,IAAJ,EAAU;AACTA,YAAI,CAAC2B,OAAL,CAAaD,OAAb;AACA;AACD,KA/IK;;AAiJN;AACF;AACA;AACA;AACA;AACA;AACA;AACEE,gBAAY,EAAE;AAAU;AAAUC,aAApB;AAA+B;AAAUzB,WAAzC;AAAkD;AAAU0B,WAA5D,EAAqE;AAClF,UAAIhD,EAAE,CAACQ,UAAH,CAAcuC,SAAd,CAAJ,EAA8B;AAC7B,YAAIzB,OAAJ,EAAa;AACZA,iBAAO,GAAGA,OAAO,CAACjD,KAAR,CAAc,IAAd,EAAoBU,IAApB,CAAyB,GAAzB,CAAV;;AACA,cAAIuC,OAAO,CAACmhB,MAAR,CAAenhB,OAAO,CAACtd,MAAR,GAAiB,CAAhC,MAAuC,GAA3C,EAAgD;AAC/Csd,mBAAO,IAAI,GAAX;AACA;AACD,SALD,MAKO;AACNA,iBAAO,GAAG,EAAV;AACA;;AACD,YAAI2B,CAAC,GAAGF,SAAS,CAAC1E,KAAV,CAAgB,IAAhB,EAAsBU,IAAtB,CAA2B,GAA3B,EAAgCV,KAAhC,CAAsC,GAAtC,EAA2CzZ,GAA3C,EAAR;;AAEA,YAAIoe,OAAJ,EAAa;AACZ,eAAKI,OAAL,CAAa9B,OAAO,GAAG0B,OAAvB,EAAgChD,EAAE,CAACW,YAAH,CAAgBoC,SAAhB,CAAhC,EAA4D,EAA5D,EAAgE,CAAhE;AACA,SAFD,MAEO;AACN,eAAKK,OAAL,CAAa9B,OAAO,GAAG2B,CAAvB,EAA0BjD,EAAE,CAACW,YAAH,CAAgBoC,SAAhB,CAA1B,EAAsD,EAAtD,EAA0D,CAA1D;AACA;AACD,OAhBD,MAgBO;AACN,cAAM5D,KAAK,CAACyB,MAAN,CAAayC,cAAb,CAA4B/F,OAA5B,CAAoC,IAApC,EAA0CyF,SAA1C,CAAN;AACA;AACD,KA5KK;;AA8KN;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEO,kBAAc,EAAE;AAAU;AAAUP,aAApB;AAA+B;AAAUzB,WAAzC;AAAkD;AAAmB7c,UAArE,EAA6E;AAC5F,UAAIA,MAAM,KAAKzH,SAAf,EAA0B;AACzByH,cAAM,GAAG,YAAY;AACpB,iBAAO,IAAP;AACA,SAFD;AAGA,OAJD,MAIO,IAAIA,MAAM,YAAYiZ,MAAtB,EAA8B;AACpCjZ,cAAM,GAAG,UAAUA,MAAV,EAAkB;AAC1B,iBAAO,UAAUic,QAAV,EAAoB;AAC1B,mBAAOjc,MAAM,CAAC+e,IAAP,CAAY9C,QAAZ,CAAP;AACA,WAFD;AAGA,SAJQ,CAIPjc,MAJO,CAAT;AAKA;;AAED,UAAI6c,OAAJ,EAAa;AACZA,eAAO,GAAGA,OAAO,CAACjD,KAAR,CAAc,IAAd,EAAoBU,IAApB,CAAyB,GAAzB,CAAV;;AACA,YAAIuC,OAAO,CAACmhB,MAAR,CAAenhB,OAAO,CAACtd,MAAR,GAAiB,CAAhC,MAAuC,GAA3C,EAAgD;AAC/Csd,iBAAO,IAAI,GAAX;AACA;AACD,OALD,MAKO;AACNA,eAAO,GAAG,EAAV;AACA,OApB2F,CAqB5F;;;AACAyB,eAAS,GAAG1D,GAAG,CAACmC,SAAJ,CAAcuB,SAAd,CAAZ;AACAA,eAAS,GAAGA,SAAS,CAAC1E,KAAV,CAAgB,IAAhB,EAAsBU,IAAtB,CAA2B,GAA3B,CAAZ,CAvB4F,CAuB/C;;AAC7C,UAAIgE,SAAS,CAAC0f,MAAV,CAAiB1f,SAAS,CAAC/e,MAAV,GAAmB,CAApC,MAA2C,GAA/C,EACC+e,SAAS,IAAI,GAAb;;AAED,UAAI/C,EAAE,CAACQ,UAAH,CAAcuC,SAAd,CAAJ,EAA8B;AAE7B,YAAIU,KAAK,GAAGtE,KAAK,CAACuE,SAAN,CAAgBX,SAAhB,CAAZ;AAAA,YACCY,IAAI,GAAG,IADR;;AAGA,YAAIF,KAAK,CAACzf,MAAV,EAAkB;AACjByf,eAAK,CAACvT,OAAN,CAAc,UAAU8nB,IAAV,EAAgB;AAC7B,gBAAI/U,CAAC,GAAG+U,IAAI,CAAC3Z,KAAL,CAAW,IAAX,EAAiBU,IAAjB,CAAsB,GAAtB,EAA2BzB,OAA3B,CAAmC,IAAII,MAAJ,CAAWqF,SAAS,CAACzF,OAAV,CAAkB,UAAlB,EAA8B,MAA9B,CAAX,EAAkD,GAAlD,CAAnC,EAA2F,EAA3F,CAAR,CAD6B,CAC2E;;AACxG,gBAAI7Y,MAAM,CAACwe,CAAD,CAAV,EAAe;AACd,kBAAIA,CAAC,CAACwf,MAAF,CAASxf,CAAC,CAACjf,MAAF,GAAW,CAApB,MAA2B,GAA/B,EAAoC;AACnC2f,oBAAI,CAACP,OAAL,CAAa9B,OAAO,GAAG2B,CAAvB,EAA0BjD,EAAE,CAACW,YAAH,CAAgBqX,IAAhB,CAA1B,EAAiD,EAAjD,EAAqD,CAArD;AACA,eAFD,MAEO;AACNrU,oBAAI,CAACP,OAAL,CAAa9B,OAAO,GAAG2B,CAAvB,EAA0B7C,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAA1B,EAA2C,EAA3C,EAA+C,CAA/C;AACA;AACD;AACD,WATD;AAUA;AACD,OAjBD,MAiBO;AACN,cAAM7E,KAAK,CAACyB,MAAN,CAAayC,cAAb,CAA4B/F,OAA5B,CAAoC,IAApC,EAA0CyF,SAA1C,CAAN;AACA;AACD,KArOK;;AAuON;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEK,WAAO,EAAE;AAAU;AAAUjC,aAApB;AAA+B;AAAUyB,WAAzC;AAAkD;AAAUL,WAA5D;AAAqE;AAAUqC,QAA/E,EAAqF;AAC7F,UAAIzM,KAAK,GAAG,IAAImH,QAAJ,EAAZ;AACAnH,WAAK,CAACgJ,SAAN,GAAkBA,SAAlB;AACAhJ,WAAK,CAACoK,OAAN,GAAgBA,OAAO,IAAI,EAA3B;;AAEA,UAAI,CAACqC,IAAL,EAAW;AACV,YAAIzM,KAAK,CAAC+M,WAAV,EAAuB;AACtBN,cAAI,GAAI,WAAW,EAAZ,GAAkB,IAAzB,CADsB,CACS;AAC/B,SAFD,MAEO;AACNA,cAAI,GAAG,SAAS,EAAhB,CADM,CACc;AACpB;AACD;;AAEDzM,WAAK,CAACyM,IAAN,GAAaA,IAAb;AAEAzM,WAAK,CAAC0K,OAAN,CAAcD,OAAd;;AACA9B,UAAI,CAACwE,QAAL,CAAcnN,KAAd;AACA,KAlQK;;AAoQN;AACF;AACA;AACA;AACA;AACEoN,cAAU,EAAE,YAAY;AACvB,UAAIzE,IAAJ,EAAU;AACT,eAAOA,IAAI,CAAC0E,OAAZ;AACA,OAFD,MAEO;AACN,eAAO,EAAP;AACA;AACD,KA/QK;;AAiRN;AACF;AACA;AACA;AACA;AACA;AACEvE,YAAQ,EAAE;AAAU;AAAUja,QAApB,EAA0B;AACnC,aAAOia,QAAQ,CAACja,IAAD,CAAf;AACA,KAzRK;;AA2RN;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE0e,kBAAc,EAAE;AAAU;AAAUvN,SAApB;AAA2B;AAAUwN,cAArC;AAAiD;AAAWC,qBAA5D;AAA+E;AAAWC,aAA1F,EAAqG;AACpHA,eAAS,GAAGA,SAAS,IAAI,KAAzB;AACAD,uBAAiB,GAAG,OAAOA,iBAAP,KAA6B,WAA7B,GAA2C,IAA3C,GAAkDA,iBAAtE;AAEA,UAAI1E,IAAI,GAAGD,QAAQ,CAAC9I,KAAD,CAAnB;;AACA,UAAI,CAAC+I,IAAL,EAAW;AACV,cAAM/B,KAAK,CAACyB,MAAN,CAAaoF,QAAnB;AACA;;AAED,UAAI7E,SAAS,GAAGD,IAAI,CAACC,SAArB;AAEA,UAAI8E,MAAM,GAAGjF,QAAQ,CAAC2E,UAAD,EAAaC,iBAAiB,GAAGzE,SAAH,GAAe9B,GAAG,CAAC6G,QAAJ,CAAa/E,SAAb,CAA7C,CAArB;;AAEA,UAAID,IAAI,CAACgE,WAAT,EAAsB;AACrBe,cAAM,GAAG5G,GAAG,CAACqF,OAAJ,CAAYuB,MAAZ,EAAoB,IAApB,CAAT;;AACA,YAAIE,QAAQ,GAAGrF,IAAI,CAACsF,gBAAL,CAAsBlF,IAAtB,CAAf;;AACAiF,gBAAQ,CAACjW,OAAT,CAAiB,UAAUmW,KAAV,EAAiB;AACjC,cAAIA,KAAK,CAACnB,WAAV,EAAuB;AACvB,cAAItC,OAAO,GAAGyD,KAAK,CAACzE,OAAN,EAAd;;AACA,cAAI,CAACgB,OAAL,EAAc;AACb,kBAAMzD,KAAK,CAACyB,MAAN,CAAa0F,iBAAnB;AACA;;AACD,cAAIC,SAAS,GAAGvF,QAAQ,CAAC2E,UAAD,EAAaC,iBAAiB,GAAGS,KAAK,CAAClF,SAAT,GAAqB9B,GAAG,CAAC6G,QAAJ,CAAaG,KAAK,CAAClF,SAAnB,CAAnD,CAAxB;AAEAhC,eAAK,CAACsH,WAAN,CAAkBF,SAAlB,EAA6B3D,OAA7B,EAAsCiD,SAAtC;AACA,SATD;AAUA,eAAO,IAAP;AACA;;AAED,UAAIjD,OAAO,GAAG1B,IAAI,CAACU,OAAL,EAAd;AACA,UAAI,CAACgB,OAAL,EAAc,MAAMzD,KAAK,CAACyB,MAAN,CAAa0F,iBAAnB;;AAEd,UAAItG,EAAE,CAACQ,UAAH,CAAcyF,MAAd,KAAyB,CAACJ,SAA9B,EAAyC;AACxC,cAAM1G,KAAK,CAACyB,MAAN,CAAa8F,aAAnB;AACA;;AACDvH,WAAK,CAACsH,WAAN,CAAkBR,MAAlB,EAA0BrD,OAA1B,EAAmCiD,SAAnC;AAEA,aAAO,IAAP;AACA,KA9UK;;AAgVN;AACF;AACA;AACA;AACErC,QAAI,EAAE,YAAY;AACjB,UAAI,CAAC1C,IAAL,EAAW;AACV,eAAO,KAAP;AACA;;AAED,WAAK,IAAI3I,KAAT,IAAkB2I,IAAI,CAAC0E,OAAvB,EAAgC;AAC/B,YAAI;AACH,cAAIrN,KAAK,CAAC+M,WAAV,EAAuB;AACtB;AACA;;AACD,cAAItC,OAAO,GAAG9B,IAAI,CAAC0E,OAAL,CAAarN,KAAb,EAAoByJ,OAApB,EAAd;;AACA,cAAI,CAACgB,OAAL,EAAc;AACb,mBAAO,KAAP;AACA;AACD,SARD,CAQE,OAAOT,GAAP,EAAY;AACb,iBAAO,KAAP;AACA;AACD;;AACD,aAAO,IAAP;AACA,KAvWK;;AAyWN;AACF;AACA;AACA;AACA;AACA;AACA;AACEwE,gBAAY,EAAE;AAAU;AAAUhB,cAApB;AAAgC;AAAWE,aAA3C,EAAsD;AACnEA,eAAS,GAAGA,SAAS,IAAI,KAAzB;;AACA,UAAI,CAAC/E,IAAL,EAAW;AACV,cAAM3B,KAAK,CAACyB,MAAN,CAAagG,MAAnB;AACA;;AACD9F,UAAI,CAAC0E,OAAL,CAAatV,OAAb,CAAqB,UAAUiI,KAAV,EAAiB;AACrC,YAAIgJ,SAAS,GAAGH,QAAQ,CAAC2E,UAAD,EAAaxN,KAAK,CAACgJ,SAAN,CAAgBvG,QAAhB,EAAb,CAAxB;;AACA,YAAIzC,KAAK,CAAC+M,WAAV,EAAuB;AACtB/F,eAAK,CAAC0H,OAAN,CAAc1F,SAAd;AACA;AACA;;AACD,YAAIyB,OAAO,GAAGzK,KAAK,CAACyJ,OAAN,EAAd;;AACA,YAAI,CAACgB,OAAL,EAAc;AACb,gBAAMzD,KAAK,CAACyB,MAAN,CAAa0F,iBAAnB;AACA;;AACDnH,aAAK,CAACsH,WAAN,CAAkBtF,SAAlB,EAA6ByB,OAA7B,EAAsCiD,SAAtC;;AACA,YAAI;AACH7F,YAAE,CAAC8G,UAAH,CAAc3F,SAAd,EAAyBhJ,KAAK,CAACiJ,MAAN,CAAahL,IAAtC,EAA4C+B,KAAK,CAACiJ,MAAN,CAAahL,IAAzD;AACA,SAFD,CAEE,OAAO+L,GAAP,EAAY;AACb,gBAAMhD,KAAK,CAACyB,MAAN,CAAa0F,iBAAnB;AACA;AACD,OAhBD;AAiBA,KAtYK;;AAwYN;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACES,qBAAiB,EAAE;AAAU;AAAUpB,cAApB;AAAgC;AAAWE,aAA3C;AAAsD;AAAY/D,YAAlE,EAA4E;AAC9F,UAAI,CAACA,QAAL,EAAe;AACdA,gBAAQ,GAAG,YAAW,CAAE,CAAxB;AACA;;AACD+D,eAAS,GAAGA,SAAS,IAAI,KAAzB;;AACA,UAAI,CAAC/E,IAAL,EAAW;AACVgB,gBAAQ,CAAC,IAAItf,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAagG,MAAvB,CAAD,CAAR;AACA;AACA;;AAED,UAAIpB,OAAO,GAAG1E,IAAI,CAAC0E,OAAnB;AACA,UAAI3I,CAAC,GAAG2I,OAAO,CAACxhB,MAAhB;AACAwhB,aAAO,CAACtV,OAAR,CAAgB,UAAUiI,KAAV,EAAiB;AAChC,YAAI0E,CAAC,IAAI,CAAT,EAAY,OADoB,CACZ;;AAEpB,YAAIsE,SAAS,GAAG9B,GAAG,CAACmC,SAAJ,CAAcrJ,KAAK,CAACgJ,SAAN,CAAgBvG,QAAhB,EAAd,CAAhB;;AAEA,YAAIzC,KAAK,CAAC+M,WAAV,EAAuB;AACtB/F,eAAK,CAAC0H,OAAN,CAAc7F,QAAQ,CAAC2E,UAAD,EAAaxE,SAAb,CAAtB;AACA,cAAI,EAAEtE,CAAF,KAAQ,CAAZ,EACCiF,QAAQ,CAAC9kB,SAAD,CAAR;AACD;AACA;;AACDmb,aAAK,CAAC4J,YAAN,CAAmB,UAAUa,OAAV,EAAmBT,GAAnB,EAAwB;AAC1C,cAAItF,CAAC,IAAI,CAAT,EAAY;;AACZ,cAAIsF,GAAJ,EAAS;AACRL,oBAAQ,CAAC,IAAItf,KAAJ,CAAU2f,GAAV,CAAD,CAAR;AACA;AACA;;AACD,cAAI,CAACS,OAAL,EAAc;AACb/F,aAAC,GAAG,CAAJ;AACAiF,oBAAQ,CAAC,IAAItf,KAAJ,CAAU2c,KAAK,CAACyB,MAAN,CAAa0F,iBAAvB,CAAD,CAAR;AACA;AACA;;AAEDnH,eAAK,CAAC2I,gBAAN,CAAuB9G,QAAQ,CAAC2E,UAAD,EAAaxE,SAAb,CAA/B,EAAwDyB,OAAxD,EAAiEiD,SAAjE,EAA4E,UAAUkC,IAAV,EAAgB;AAC3F,gBAAI;AACH/H,gBAAE,CAAC8G,UAAH,CAAczH,GAAG,CAACqF,OAAJ,CAAYiB,UAAZ,EAAwBxE,SAAxB,CAAd,EAAkDhJ,KAAK,CAACiJ,MAAN,CAAahL,IAA/D,EAAqE+B,KAAK,CAACiJ,MAAN,CAAahL,IAAlF;AACA,aAFD,CAEE,OAAO+L,GAAP,EAAY;AACbL,sBAAQ,CAAC,IAAItf,KAAJ,CAAU,sBAAV,CAAD,CAAR;AACA;;AACD,gBAAIqa,CAAC,IAAI,CAAT,EAAY;;AACZ,gBAAI,CAACkL,IAAL,EAAW;AACVlL,eAAC,GAAG,CAAJ;AACAiF,sBAAQ,CAAC,IAAItf,KAAJ,CAAU,iBAAV,CAAD,CAAR;AACA;AACA;;AACD,gBAAI,EAAEqa,CAAF,KAAQ,CAAZ,EACCiF,QAAQ,CAAC9kB,SAAD,CAAR;AACD,WAdD;AAeA,SA3BD;AA4BA,OAvCD;AAwCA,KApcK;;AAscN;AACF;AACA;AACA;AACA;AACA;AACEmrB,YAAQ,EAAE;AAAU;AAAUC,kBAApB;AAAoC;AAAYtG,YAAhD,EAA0D;AACnE,UAAI5U,SAAS,CAAClJ,MAAV,KAAqB,CAAzB,EAA4B;AAC3B,YAAI,OAAOokB,cAAP,KAA0B,UAA9B,EAA0C;AACzCtG,kBAAQ,GAAGsG,cAAX;AACAA,wBAAc,GAAG,EAAjB;AACA;AACD;;AAED,UAAI,CAACA,cAAD,IAAmBioH,SAAvB,EAAkC;AACjCjoH,sBAAc,GAAGioH,SAAjB;AACA;;AACD,UAAI,CAACjoH,cAAL,EAAqB;;AAErB,UAAIC,OAAO,GAAGvH,IAAI,CAACwH,gBAAL,EAAd;;AACA,UAAID,OAAJ,EAAa;AACZ,YAAIE,EAAE,GAAGpJ,KAAK,CAACsH,WAAN,CAAkB2B,cAAlB,EAAkCC,OAAlC,EAA2C,IAA3C,CAAT;AACA,YAAI,OAAOvG,QAAP,KAAoB,UAAxB,EAAoCA,QAAQ,CAAC,CAACyG,EAAD,GAAM,IAAI/lB,KAAJ,CAAU,QAAV,CAAN,GAA4B,IAA7B,EAAmC,EAAnC,CAAR;AACpC;AACD,KA9dK;;AAgeN;AACF;AACA;AACA;AACA;AACEsmB,YAAQ,EAAE;AAAU;AAAYC,aAAtB;AAAiC;AAAYC,UAA7C;AAAqD;AAAYC,eAAjE;AAA8E;AAAYC,aAA1F,EAAqG;AAC9G,WAAKhjB,OAAL,GAAe,CAAf;;AACA,UAAI,OAAO6iB,SAAP,KAAqB,UAAzB,EAAqC;AACpCjI,YAAI,CAAC+H,aAAL,CAAmBE,SAAnB,EAA8BC,MAA9B,EAAsCC,WAAtC,EAAmDC,SAAnD;;AACA,eAAO,IAAP;AACA;;AACD,aAAOpI,IAAI,CAACwH,gBAAL,EAAP;AACA;AA5eK,GAAP;AA8eA,CA5hBD,C;;;;;;;;;;;ACZA,IAAInJ,KAAK,GAAGC,mBAAO,CAAC,wEAAD,CAAnB;AAAA,IACIU,SAAS,GAAGX,KAAK,CAACW,SADtB;AAGA;;;AACAd,MAAM,CAACC,OAAP,GAAiB,YAAY;AACzB,MAAIkK,QAAQ,GAAG,IAAf;AAAA,MACIC,QAAQ,GAAG,IADf;AAAA,MAEIC,MAAM,GAAG,CAFb;AAAA,MAGIC,OAAO,GAAG,CAHd;AAAA,MAIIC,KAAK,GAAG,CAJZ;AAAA,MAKIC,IAAI,GAAG,CALX;AAAA,MAMIC,eAAe,GAAG,CANtB;AAAA,MAOIC,KAAK,GAAG,CAPZ;AAAA,MAQIC,SAAS,GAAG,CARhB;AAAA,MASIC,SAAS,GAAG,CAThB;AAAA,MAWIC,OAAO,GAAG,CAXd;AAAA,MAYIC,UAAU,GAAG,CAZjB;AAAA,MAaIC,OAAO,GAAG,CAbd;AAAA,MAcI7G,KAAK,GAAG,CAdZ;AAAA,MAeI8G,OAAO,GAAG,CAfd;AAiBA,MAAIE,WAAW,GAAG,EAAlB;;AAEA,WAASC,OAAT,CAAiBnN,GAAjB,EAAsB;AAClBA,OAAG,GAAG,IAAI7U,IAAJ,CAAS6U,GAAT,CAAN;AACAuM,SAAK,GAAG,CAACvM,GAAG,CAACjC,WAAJ,KAAoB,IAApB,GAA2B,IAA5B,KAAqC,EAArC,CAAyC;AAAzC,MACDiC,GAAG,CAAChC,QAAJ,KAAiB,CAAlB,IAAwB,EADtB,CACyC;AADzC,MAEFgC,GAAG,CAAC/B,OAAJ,MAAiB,EAFf,CAEyC;AAE7C;AAJI,MAKF+B,GAAG,CAAC9B,QAAJ,MAAkB,EALhB,CAKsB;AALtB,MAMF8B,GAAG,CAAC7B,UAAJ,MAAoB,CANlB,CAMsB;AANtB,MAOF6B,GAAG,CAAC5B,UAAJ,MAAoB,CAP1B,CAFkB,CASY;AACjC;;AAED+O,SAAO,CAAC,CAAC,IAAIhiB,IAAJ,EAAF,CAAP;AAEA,SAAO;AACH,QAAIiiB,IAAJ,GAAY;AAAE,aAAOjB,QAAP;AAAkB,KAD7B;;AAEH,QAAIiB,IAAJ,CAAUpN,GAAV,EAAe;AAAEmM,cAAQ,GAAGnM,GAAX;AAAiB,KAF/B;;AAIH,QAAIxB,OAAJ,GAAe;AAAE,aAAO4N,QAAP;AAAkB,KAJhC;;AAKH,QAAI5N,OAAJ,CAAawB,GAAb,EAAkB;AAAEoM,cAAQ,GAAGpM,GAAX;AAAgB,KALjC;;AAOH,QAAIqN,KAAJ,GAAa;AAAE,aAAOhB,MAAP;AAAe,KAP3B;;AAQH,QAAIgB,KAAJ,CAAWrN,GAAX,EAAgB;AAAEqM,YAAM,GAAGrM,GAAT;AAAe,KAR9B;;AAUH,QAAI1b,MAAJ,GAAc;AAAE,aAAOgoB,OAAP;AAAiB,KAV9B;;AAWH,QAAIhoB,MAAJ,CAAY0b,GAAZ,EAAiB;AAAEsM,aAAO,GAAGtM,GAAV;AAAgB,KAXhC;;AAaH,QAAI5G,IAAJ,GAAY;AAAE,aAAO,IAAIjO,IAAJ,CACjB,CAAEohB,KAAK,IAAI,EAAV,GAAgB,IAAjB,IAAyB,IADR,EAEjB,CAAEA,KAAK,IAAI,EAAV,GAAgB,IAAjB,IAAyB,CAFR,EAGhBA,KAAK,IAAI,EAAV,GAAgB,IAHC,EAIhBA,KAAK,IAAI,EAAV,GAAgB,IAJC,EAKhBA,KAAK,IAAI,CAAV,GAAe,IALE,EAMjB,CAACA,KAAK,GAAG,IAAT,KAAkB,CAND,CAAP;AAQb,KArBE;;AAsBH,QAAInT,IAAJ,CAAU4G,GAAV,EAAe;AACXmN,aAAO,CAACnN,GAAD,CAAP;AACH,KAxBE;;AA0BH,QAAIwN,GAAJ,GAAW;AAAE,aAAOhB,IAAP;AAAc,KA1BxB;;AA2BH,QAAIgB,GAAJ,CAASxN,GAAT,EAAc;AAAEwM,UAAI,GAAGxM,GAAP;AAAa,KA3B1B;;AA6BH,QAAI0N,cAAJ,GAAsB;AAAE,aAAOjB,eAAP;AAAyB,KA7B9C;;AA8BH,QAAIiB,cAAJ,CAAoB1N,GAApB,EAAyB;AAAEyM,qBAAe,GAAGzM,GAAlB;AAAwB,KA9BhD;;AAgCH,QAAI2K,IAAJ,GAAY;AAAE,aAAO+B,KAAP;AAAe,KAhC1B;;AAiCH,QAAI/B,IAAJ,CAAU3K,GAAV,EAAe;AAAE0M,WAAK,GAAG1M,GAAR;AAAc,KAjC5B;;AAmCH,QAAI2N,cAAJ,GAAsB;AAAE,aAAOhB,SAAP;AAAmB,KAnCxC;;AAoCH,QAAIgB,cAAJ,CAAoB3N,GAApB,EAAyB;AAAE2M,eAAS,GAAG3M,GAAZ;AAAkB,KApC1C;;AAsCH,QAAI4N,WAAJ,GAAmB;AAAE,aAAOhB,SAAP;AAAkB,KAtCpC;;AAuCH,QAAIgB,WAAJ,CAAiB5N,GAAjB,EAAsB;AAAE4M,eAAS,GAAG5M,GAAZ;AAAkB,KAvCvC;;AAyCH,QAAI6N,aAAJ,GAAqB;AAAE,aAAOhB,OAAP;AAAgB,KAzCpC;;AA0CH,QAAIgB,aAAJ,CAAmB7N,GAAnB,EAAwB;AAAE6M,aAAO,GAAG7M,GAAV;AAAe,KA1CtC;;AA4CH,QAAI8N,YAAJ,GAAoB;AAAE,aAAOhB,UAAP;AAAmB,KA5CtC;;AA6CH,QAAIgB,YAAJ,CAAkB9N,GAAlB,EAAuB;AAAE8M,gBAAU,GAAG9M,GAAb;AAAkB,KA7CxC;;AA+CH,QAAI+N,MAAJ,GAAc;AAAE,aAAOhB,OAAP;AAAgB,KA/C7B;;AAgDH,QAAIgB,MAAJ,CAAY/N,GAAZ,EAAiB;AAAE+M,aAAO,GAAG/M,GAAV;AAAe,KAhD/B;;AAkDH,QAAI4H,IAAJ,GAAY;AAAE,aAAO1B,KAAP;AAAc,KAlDzB;;AAmDH,QAAI0B,IAAJ,CAAU5H,GAAV,EAAe;AAAEkG,WAAK,GAAGlG,GAAR;AAAa,KAnD3B;;AAqDH,QAAIgO,MAAJ,GAAc;AAAE,aAAOhB,OAAP;AAAgB,KArD7B;;AAsDH,QAAIgB,MAAJ,CAAYhO,GAAZ,EAAiB;AAAEgN,aAAO,GAAGhN,GAAV;AAAe,KAtD/B;;AAwDH,QAAIiO,SAAJ,GAAiB;AAAE,aAAO,CAAC5B,MAAM,GAAG,CAAV,MAAiB,CAAxB;AAA2B,KAxD3C;;AA0DH,QAAI6B,eAAJ,GAAuB;AACnB,aAAOpL,SAAS,CAACqL,MAAV,GAAmBxB,SAAnB,GAA+BC,SAA/B,GAA2CC,OAAlD;AACH,KA5DE;;AA8DH,QAAIuB,cAAJ,GAAsB;AAClB,aAAOpB,OAAO,GAAGlK,SAAS,CAACuL,MAApB,GAA6BnB,WAAW,CAACoB,QAAzC,GAAoDpB,WAAW,CAACqB,QAAvE;AACH,KAhEE;;AAkEH,QAAIC,UAAJ,GAAkB;AACd,aAAOtB,WAAP;AACH,KApEE;;AAsEHuB,4BAAwB,EAAG;AAAS;AAAUzmB,SAAnB,EAA0B;AACjD,UAAIK,IAAI,GAAGL,KAAK,CAACgB,KAAN,CAAYgkB,OAAZ,EAAqBA,OAAO,GAAGlK,SAAS,CAACuL,MAAzC,CAAX,CADiD,CAEjD;;AACA,UAAIhmB,IAAI,CAACqmB,YAAL,CAAkB,CAAlB,MAAyB5L,SAAS,CAAC6L,MAAvC,EAA+C;AAC3C,cAAMxM,KAAK,CAACyB,MAAN,CAAagL,WAAnB;AACH;;AACD1B,iBAAW,GAAG;AACV;AACA1O,eAAO,EAAGnW,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACgM,MAA5B,CAFA;AAGV;AACAzB,aAAK,EAAGhlB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACiM,MAA5B,CAJE;AAKV;AACAzqB,cAAM,EAAG+D,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACkM,MAA5B,CANC;AAOV;AACA5V,YAAI,EAAG/Q,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACmM,MAA5B,CARG;AASV;AACAzB,WAAG,EAAGnlB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACoM,MAA5B,CAVI;AAWV;AACAxB,sBAAc,EAAGrlB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACqM,MAA5B,CAZP;AAaV;AACAxE,YAAI,EAAGtiB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACsM,MAA5B,CAdG;AAeV;AACAd,gBAAQ,EAAGjmB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACuM,MAA5B,CAhBD;AAiBV;AACAd,gBAAQ,EAAGlmB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACwM,MAA5B;AAlBD,OAAd;AAoBH,KAhGE;AAkGHC,kBAAc,EAAG;AAAS;AAAUlnB,QAAnB,EAAyB;AACtC;AACA,UAAIA,IAAI,CAACrB,MAAL,KAAgB8b,SAAS,CAACqL,MAA1B,IAAoC9lB,IAAI,CAACqmB,YAAL,CAAkB,CAAlB,MAAyB5L,SAAS,CAAC0M,MAA3E,EAAmF;AAC/E,cAAMrN,KAAK,CAACyB,MAAN,CAAa6L,WAAnB;AACH,OAJqC,CAKtC;;;AACAtD,cAAQ,GAAG9jB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAAC4M,MAA5B,CAAX,CANsC,CAOtC;;AACAtD,cAAQ,GAAG/jB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAAC6M,MAA5B,CAAX,CARsC,CAStC;;AACAtD,YAAM,GAAGhkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAAC8M,MAA5B,CAAT,CAVsC,CAWtC;;AACAtD,aAAO,GAAGjkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAAC+M,MAA5B,CAAV,CAZsC,CAatC;;AACAtD,WAAK,GAAGlkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACgN,MAA5B,CAAR,CAdsC,CAetC;;AACAtD,UAAI,GAAGnkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACiN,MAA5B,CAAP,CAhBsC,CAiBtC;;AACAtD,qBAAe,GAAGpkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACkN,MAA5B,CAAlB,CAlBsC,CAmBtC;;AACAtD,WAAK,GAAGrkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACmN,MAA5B,CAAR,CApBsC,CAqBtC;;AACAtD,eAAS,GAAGtkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACoN,MAA5B,CAAZ,CAtBsC,CAuBtC;;AACAtD,eAAS,GAAGvkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACqN,MAA5B,CAAZ,CAxBsC,CAyBtC;;AACAtD,aAAO,GAAGxkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACsN,MAA5B,CAAV,CA1BsC,CA2BtC;;AACAtD,gBAAU,GAAGzkB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACuN,MAA5B,CAAb,CA5BsC,CA6BtC;;AACAtD,aAAO,GAAG1kB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACwN,MAA5B,CAAV,CA9BsC,CA+BtC;;AACApK,WAAK,GAAG7d,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACyN,MAA5B,CAAR,CAhCsC,CAiCtC;;AACAvD,aAAO,GAAG3kB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAAC0N,MAA5B,CAAV;AACH,KArIE;AAuIHC,sBAAkB,EAAG,YAAW;AAC5B;AACA,UAAIpoB,IAAI,GAAG+a,MAAM,CAAC4D,KAAP,CAAalE,SAAS,CAACuL,MAAvB,CAAX,CAF4B,CAG5B;;AACAhmB,UAAI,CAACqoB,aAAL,CAAmB5N,SAAS,CAAC6L,MAA7B,EAAqC,CAArC,EAJ4B,CAK5B;;AACAtmB,UAAI,CAACsoB,aAAL,CAAmBvE,QAAnB,EAA6BtJ,SAAS,CAACgM,MAAvC,EAN4B,CAO5B;;AACAzmB,UAAI,CAACsoB,aAAL,CAAmBtE,MAAnB,EAA2BvJ,SAAS,CAACiM,MAArC,EAR4B,CAS5B;;AACA1mB,UAAI,CAACsoB,aAAL,CAAmBrE,OAAnB,EAA4BxJ,SAAS,CAACkM,MAAtC,EAV4B,CAW5B;;AACA3mB,UAAI,CAACqoB,aAAL,CAAmBnE,KAAnB,EAA0BzJ,SAAS,CAACmM,MAApC,EAZ4B,CAa5B;;AACA5mB,UAAI,CAACqoB,aAAL,CAAmBlE,IAAnB,EAAyB1J,SAAS,CAACoM,MAAnC,EAd4B,CAe5B;;AACA7mB,UAAI,CAACqoB,aAAL,CAAmBjE,eAAnB,EAAoC3J,SAAS,CAACqM,MAA9C,EAhB4B,CAiB5B;;AACA9mB,UAAI,CAACqoB,aAAL,CAAmBhE,KAAnB,EAA0B5J,SAAS,CAACsM,MAApC,EAlB4B,CAmB5B;;AACA/mB,UAAI,CAACsoB,aAAL,CAAmBhE,SAAnB,EAA8B7J,SAAS,CAACuM,MAAxC,EApB4B,CAqB5B;;AACAhnB,UAAI,CAACsoB,aAAL,CAAmB/D,SAAnB,EAA8B9J,SAAS,CAACwM,MAAxC;AACA,aAAOjnB,IAAP;AACH,KA/JE;AAiKHuoB,uBAAmB,EAAG,YAAW;AAC7B;AACA,UAAIvoB,IAAI,GAAG+a,MAAM,CAAC4D,KAAP,CAAalE,SAAS,CAACqL,MAAV,GAAmBxB,SAAnB,GAA+BC,SAA/B,GAA2CC,OAAxD,CAAX,CAF6B,CAG7B;;AACAxkB,UAAI,CAACqoB,aAAL,CAAmB5N,SAAS,CAAC0M,MAA7B,EAAqC,CAArC,EAJ6B,CAK7B;;AACAnnB,UAAI,CAACsoB,aAAL,CAAmBxE,QAAnB,EAA6BrJ,SAAS,CAAC4M,MAAvC,EAN6B,CAO7B;;AACArnB,UAAI,CAACsoB,aAAL,CAAmBvE,QAAnB,EAA6BtJ,SAAS,CAAC6M,MAAvC,EAR6B,CAS7B;;AACAtnB,UAAI,CAACsoB,aAAL,CAAmBtE,MAAnB,EAA2BvJ,SAAS,CAAC8M,MAArC,EAV6B,CAW7B;;AACAvnB,UAAI,CAACsoB,aAAL,CAAmBrE,OAAnB,EAA4BxJ,SAAS,CAAC+M,MAAtC,EAZ6B,CAa7B;;AACAxnB,UAAI,CAACqoB,aAAL,CAAmBnE,KAAnB,EAA0BzJ,SAAS,CAACgN,MAApC,EAd6B,CAe7B;;AACAznB,UAAI,CAACqoB,aAAL,CAAmBlE,IAAnB,EAAyB1J,SAAS,CAACiN,MAAnC,EAhB6B,CAiB7B;;AACA1nB,UAAI,CAACqoB,aAAL,CAAmBjE,eAAnB,EAAoC3J,SAAS,CAACkN,MAA9C,EAlB6B,CAmB7B;;AACA3nB,UAAI,CAACqoB,aAAL,CAAmBhE,KAAnB,EAA0B5J,SAAS,CAACmN,MAApC,EApB6B,CAqB7B;;AACA5nB,UAAI,CAACsoB,aAAL,CAAmBhE,SAAnB,EAA8B7J,SAAS,CAACoN,MAAxC,EAtB6B,CAuB7B;;AACA7nB,UAAI,CAACsoB,aAAL,CAAmB/D,SAAnB,EAA8B9J,SAAS,CAACqN,MAAxC,EAxB6B,CAyB7B;;AACA9nB,UAAI,CAACsoB,aAAL,CAAmB9D,OAAnB,EAA4B/J,SAAS,CAACsN,MAAtC,EA1B6B,CA2B7B;;AACA/nB,UAAI,CAACsoB,aAAL,CAAmB7D,UAAnB,EAA+BhK,SAAS,CAACuN,MAAzC,EA5B6B,CA6B7B;;AACAhoB,UAAI,CAACsoB,aAAL,CAAmB5D,OAAnB,EAA4BjK,SAAS,CAACwN,MAAtC,EA9B6B,CA+B7B;;AACAjoB,UAAI,CAACqoB,aAAL,CAAmBxK,KAAnB,EAA0BpD,SAAS,CAACyN,MAApC,EAhC6B,CAiC7B;;AACAloB,UAAI,CAACqoB,aAAL,CAAmB1D,OAAnB,EAA4BlK,SAAS,CAAC0N,MAAtC,EAlC6B,CAmC7B;;AACAnoB,UAAI,CAACwoB,IAAL,CAAU,IAAV,EAAgB/N,SAAS,CAACqL,MAA1B;AACA,aAAO9lB,IAAP;AACH,KAvME;AAyMHuV,YAAQ,EAAG,YAAW;AAClB,aAAO,QACH,aADG,GACauO,QADb,GACwB,KADxB,GAEH,gBAFG,GAEgBC,QAFhB,GAE2B,KAF3B,GAGH,cAHG,GAGcC,MAHd,GAGuB,KAHvB,GAIH,eAJG,GAIelK,KAAK,CAAC6O,cAAN,CAAqB1E,OAArB,CAJf,GAI+C,KAJ/C,GAKH,aALG,GAKa,KAAKlT,IALlB,GAKyB,KALzB,GAMH,cANG,GAMcoT,IAAI,CAAC5O,QAAL,CAAc,EAAd,EAAkBqT,WAAlB,EANd,GAMgD,KANhD,GAOH,uBAPG,GAOuBxE,eAPvB,GAOyC,WAPzC,GAQH,aARG,GAQaC,KARb,GAQqB,WARrB,GASH,uBATG,GASuBC,SATvB,GASmC,KATnC,GAUH,oBAVG,GAUoBC,SAVpB,GAUgC,WAVhC,GAWH,sBAXG,GAWsBC,OAXtB,GAWgC,WAXhC,GAYH,qBAZG,GAYqBC,UAZrB,GAYkC,KAZlC,GAaH,eAbG,GAaeC,OAbf,GAayB,KAbzB,GAcH,aAdG,GAca7G,KAdb,GAcqB,KAdrB,GAeH,eAfG,GAee8G,OAff,GAeyB,KAfzB,GAgBH,wBAhBG,IAgByBlK,SAAS,CAACqL,MAAV,GAAmBxB,SAAnB,GAA+BC,SAA/B,GAA2CC,OAhBpE,IAgB+E,UAhB/E,GAiBH,GAjBJ;AAkBH;AA5NE,GAAP;AA8NH,CAhQD,C;;;;;;;;;;;ACJA5K,OAAO,CAACiP,WAAR,GAAsB9O,mBAAO,CAAC,uFAAD,CAA7B;AACAH,OAAO,CAACkP,UAAR,GAAqB/O,mBAAO,CAAC,qFAAD,CAA5B,C;;;;;;;;;;;ACDA,IAAID,KAAK,GAAGC,mBAAO,CAAC,wEAAD,CAAnB;AAAA,IACIU,SAAS,GAAGX,KAAK,CAACW,SADtB;AAGA;;;AACAd,MAAM,CAACC,OAAP,GAAiB,YAAY;AACzB,MAAImP,cAAc,GAAG,CAArB;AAAA,MACIC,aAAa,GAAG,CADpB;AAAA,MAEI3E,KAAK,GAAG,CAFZ;AAAA,MAGIM,OAAO,GAAG,CAHd;AAAA,MAIIsE,cAAc,GAAG,CAJrB;AAMA,SAAO;AACH,QAAIC,WAAJ,GAAmB;AAAE,aAAOH,cAAP;AAAuB,KADzC;;AAEH,QAAIG,WAAJ;AAAiB;AAAUvR,OAA3B,EAAgC;AAAEoR,oBAAc,GAAGC,aAAa,GAAGrR,GAAjC;AAAuC,KAFtE;;AAIH,QAAIwR,YAAJ,GAAoB;AAAE,aAAOH,aAAP;AAAsB,KAJzC;;AAKH,QAAIG,YAAJ;AAAkB;AAAUxR,OAA5B,EAAiC;AAAEqR,mBAAa,GAAGD,cAAc,GAAGpR,GAAjC;AAAuC,KALvE;;AAOH,QAAI2K,IAAJ,GAAY;AAAE,aAAO+B,KAAP;AAAc,KAPzB;;AAQH,QAAI/B,IAAJ;AAAU;AAAU3K,OAApB,EAAyB;AAAE0M,WAAK,GAAG1M,GAAR;AAAc,KARtC;;AAUH,QAAIgO,MAAJ,GAAc;AAAE,aAAOhB,OAAP;AAAgB,KAV7B;;AAWH,QAAIgB,MAAJ;AAAY;AAAUhO,OAAtB,EAA2B;AAAEgN,aAAO,GAAGhN,GAAV;AAAgB,KAX1C;;AAaH,QAAI6N,aAAJ,GAAqB;AAAE,aAAOyD,cAAP;AAAuB,KAb3C;;AAcH,QAAIzD,aAAJ;AAAmB;AAAU7N,OAA7B,EAAkC;AAAEsR,oBAAc,GAAGtR,GAAjB;AAAuB,KAdxD;;AAgBH,QAAIyR,cAAJ,GAAsB;AAClB,aAAO3O,SAAS,CAAC4O,MAAV,GAAmBJ,cAA1B;AACH,KAlBE;;AAoBH/B,kBAAc,EAAG;AAAS;AAAUlnB,QAAnB,EAAyB;AACtC;AACA,UAAIA,IAAI,CAACrB,MAAL,KAAgB8b,SAAS,CAAC4O,MAA1B,IAAoCrpB,IAAI,CAACqmB,YAAL,CAAkB,CAAlB,MAAyB5L,SAAS,CAAC6O,MAA3E,EACI,MAAMxP,KAAK,CAACyB,MAAN,CAAakO,WAAnB,CAHkC,CAKtC;;AACAV,oBAAc,GAAG/oB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACiP,MAA5B,CAAjB,CANsC,CAOtC;;AACAV,mBAAa,GAAGhpB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACkP,MAA5B,CAAhB,CARsC,CAStC;;AACAtF,WAAK,GAAGrkB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACmP,MAA5B,CAAR,CAVsC,CAWtC;;AACAjF,aAAO,GAAG3kB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACoP,MAA5B,CAAV,CAZsC,CAatC;;AACAZ,oBAAc,GAAGjpB,IAAI,CAACwmB,YAAL,CAAkB/L,SAAS,CAACqP,MAA5B,CAAjB;AACH,KAnCE;AAqCHM,YAAQ,EAAG,YAAW;AACnB,UAAIprB,CAAC,GAAG+b,MAAM,CAAC4D,KAAP,CAAalE,SAAS,CAAC4O,MAAV,GAAmBJ,cAAhC,CAAR,CADmB,CAElB;;AACAjqB,OAAC,CAACqpB,aAAF,CAAgB5N,SAAS,CAAC6O,MAA1B,EAAkC,CAAlC;AACAtqB,OAAC,CAACqpB,aAAF,CAAgB,CAAhB,EAAmB,CAAnB,EAJkB,CAKlB;;AACArpB,OAAC,CAACspB,aAAF,CAAgBS,cAAhB,EAAgCtO,SAAS,CAACiP,MAA1C,EANkB,CAOlB;;AACA1qB,OAAC,CAACspB,aAAF,CAAgBU,aAAhB,EAA+BvO,SAAS,CAACkP,MAAzC,EARkB,CASlB;;AACA3qB,OAAC,CAACqpB,aAAF,CAAgBhE,KAAhB,EAAuB5J,SAAS,CAACmP,MAAjC,EAVkB,CAWlB;;AACA5qB,OAAC,CAACqpB,aAAF,CAAgB1D,OAAhB,EAAyBlK,SAAS,CAACoP,MAAnC,EAZkB,CAalB;;AACA7qB,OAAC,CAACspB,aAAF,CAAgBW,cAAhB,EAAgCxO,SAAS,CAACqP,MAA1C,EAdkB,CAelB;;AACA9qB,OAAC,CAACwpB,IAAF,CAAO,GAAP,EAAY/N,SAAS,CAAC4O,MAAtB;AAEA,aAAOrqB,CAAP;AACH,KAxDE;AA0DHuW,YAAQ,EAAG,YAAW;AAClB,aAAO,QACH,oBADG,GACoBwT,cADpB,GACqC,KADrC,GAEH,qBAFG,GAEqBC,aAFrB,GAEqC,KAFrC,GAGH,aAHG,GAGa3E,KAHb,GAGqB,WAHrB,GAIH,iBAJG,GAIiBM,OAAO,CAACpP,QAAR,CAAiB,EAAjB,EAAqBqT,WAArB,EAJjB,GAIsD,KAJtD,GAKH,wBALG,GAKwBK,cALxB,GAKyC,IALzC,GAMP,GANA;AAOH;AAlEE,GAAP;AAoEH,CA3ED,C;;;;;;;;;;;ACJAtP,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAU2Q,KAApB,EAA2B;AAE1C,MAAIC,IAAI,GAAGzQ,mBAAO,CAAC,kBAAD,CAAlB;;AAEA,MAAIlF,IAAI,GAAG;AAAC4V,aAAS,EAAE,CAAC1R,QAAQ,CAACwR,KAAK,CAAC5rB,MAAN,GAAe,IAAhB,CAAR,GAAgC,CAAjC,IAAsC;AAAlD,GAAX;AAEA,SAAO;AACL+rB,WAAO,EAAE,YAAY;AACnB,aAAOF,IAAI,CAACG,cAAL,CAAoBJ,KAApB,EAA2B1V,IAA3B,CAAP;AACD,KAHI;AAKL+V,gBAAY,EAAE;AAAU;AAAYnO,YAAtB,EAAgC;AAC5C,UAAIoO,GAAG,GAAGL,IAAI,CAACM,gBAAL,CAAsBjW,IAAtB,CAAV;AAAA,UAAuCkW,KAAK,GAAG,EAA/C;AAAA,UAAmDC,KAAK,GAAG,CAA3D;AACAH,SAAG,CAACI,EAAJ,CAAO,MAAP,EAAe,UAAUjrB,IAAV,EAAgB;AAC7B+qB,aAAK,CAACvtB,IAAN,CAAWwC,IAAX;AACAgrB,aAAK,IAAIhrB,IAAI,CAACrB,MAAd;AACD,OAHD;AAIAksB,SAAG,CAACI,EAAJ,CAAO,KAAP,EAAc,YAAY;AACxB,YAAIC,GAAG,GAAGnQ,MAAM,CAAC4D,KAAP,CAAaqM,KAAb,CAAV;AAAA,YAA+BG,OAAO,GAAG,CAAzC;AACAD,WAAG,CAAC1C,IAAJ,CAAS,CAAT;;AACA,aAAK,IAAIhR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuT,KAAK,CAACpsB,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACrC,cAAI4T,IAAI,GAAGL,KAAK,CAACvT,CAAD,CAAhB;AACA4T,cAAI,CAACC,IAAL,CAAUH,GAAV,EAAeC,OAAf;AACAA,iBAAO,IAAIC,IAAI,CAACzsB,MAAhB;AACD;;AACD8d,gBAAQ,IAAIA,QAAQ,CAACyO,GAAD,CAApB;AACD,OATD;AAUAL,SAAG,CAACryB,GAAJ,CAAQ+xB,KAAR;AACD;AAtBI,GAAP;AAwBD,CA9BD,C;;;;;;;;;;;ACAA3Q,OAAO,CAAC0R,QAAR,GAAmBvR,mBAAO,CAAC,iFAAD,CAA1B;AACAH,OAAO,CAAC2R,QAAR,GAAmBxR,mBAAO,CAAC,iFAAD,CAA1B,C;;;;;;;;;;;ACDAJ,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAU2Q,KAApB,EAA2B;AAE1C,MAAIC,IAAI,GAAGzQ,mBAAO,CAAC,kBAAD,CAAlB;;AAEA,SAAO;AACL0R,WAAO,EAAE,YAAY;AACnB,aAAOjB,IAAI,CAACkB,cAAL,CAAoBnB,KAApB,CAAP;AACD,KAHI;AAKLoB,gBAAY,EAAE;AAAU;AAAYlP,YAAtB,EAAgC;AAC5C,UAAIoO,GAAG,GAAGL,IAAI,CAACoB,gBAAL,EAAV;AAAA,UAAmCb,KAAK,GAAG,EAA3C;AAAA,UAA+CC,KAAK,GAAG,CAAvD;AACAH,SAAG,CAACI,EAAJ,CAAO,MAAP,EAAe,UAAUjrB,IAAV,EAAgB;AAC7B+qB,aAAK,CAACvtB,IAAN,CAAWwC,IAAX;AACAgrB,aAAK,IAAIhrB,IAAI,CAACrB,MAAd;AACD,OAHD;AAIAksB,SAAG,CAACI,EAAJ,CAAO,KAAP,EAAc,YAAY;AACxB,YAAIC,GAAG,GAAGnQ,MAAM,CAAC4D,KAAP,CAAaqM,KAAb,CAAV;AAAA,YAA+BG,OAAO,GAAG,CAAzC;AACAD,WAAG,CAAC1C,IAAJ,CAAS,CAAT;;AACA,aAAK,IAAIhR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuT,KAAK,CAACpsB,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACrC,cAAI4T,IAAI,GAAGL,KAAK,CAACvT,CAAD,CAAhB;AACA4T,cAAI,CAACC,IAAL,CAAUH,GAAV,EAAeC,OAAf;AACAA,iBAAO,IAAIC,IAAI,CAACzsB,MAAhB;AACD;;AACD8d,gBAAQ,IAAIA,QAAQ,CAACyO,GAAD,CAApB;AACD,OATD;AAUAL,SAAG,CAACryB,GAAJ,CAAQ+xB,KAAR;AACD;AAtBI,GAAP;AAwBD,CA5BD,C;;;;;;;;;;;ACAA5Q,MAAM,CAACC,OAAP,GAAiB;AACb;AACAoM,QAAM,EAAa,EAFN;AAEU;AACvBM,QAAM,EAAa,UAHN;AAGkB;AAC/BG,QAAM,EAAa,CAJN;AAIS;AACtBC,QAAM,EAAa,CALN;AAKS;AACtBC,QAAM,EAAa,CANN;AAMS;AACtBC,QAAM,EAAa,EAPN;AAOU;AACvBC,QAAM,EAAa,EARN;AAQU;AACvBC,QAAM,EAAa,EATN;AASU;AACvBC,QAAM,EAAa,EAVN;AAUU;AACvBC,QAAM,EAAa,EAXN;AAWU;AACvBC,QAAM,EAAa,EAZN;AAYU;;AAEvB;AACAwG,QAAM,EAAa,UAfN;AAekB;AAC/BC,QAAM,EAAa,EAhBN;AAgBU;AACvBC,QAAM,EAAa,CAjBN;AAiBS;AACtBC,QAAM,EAAa,CAlBN;AAkBS;AACtBC,QAAM,EAAa,EAnBN;AAmBU;;AAEvB;AACA/H,QAAM,EAAa,EAtBN;AAsBU;AACvBqB,QAAM,EAAa,UAvBN;AAuBkB;AAC/BE,QAAM,EAAa,CAxBN;AAwBS;AACtBC,QAAM,EAAa,CAzBN;AAyBS;AACtBC,QAAM,EAAa,CA1BN;AA0BS;AACtBC,QAAM,EAAa,EA3BN;AA2BU;AACvBC,QAAM,EAAa,EA5BN;AA4BU;AACvBC,QAAM,EAAa,EA7BN;AA6BU;AACvBC,QAAM,EAAa,EA9BN;AA8BU;AACvBC,QAAM,EAAa,EA/BN;AA+BU;AACvBC,QAAM,EAAa,EAhCN;AAgCU;AACvBC,QAAM,EAAa,EAjCN;AAiCU;AACvBC,QAAM,EAAa,EAlCN;AAkCU;AACvBC,QAAM,EAAa,EAnCN;AAmCU;AACvBC,QAAM,EAAa,EApCN;AAoCU;AACvBC,QAAM,EAAa,EArCN;AAqCU;AACvBC,QAAM,EAAa,EAtCN;AAsCU;;AAEvB;AACAkB,QAAM,EAAa,EAzCN;AAyCU;AACvBC,QAAM,EAAa,UA1CN;AA0CkB;AAC/BI,QAAM,EAAa,CA3CN;AA2CS;AACtBC,QAAM,EAAa,EA5CN;AA4CU;AACvBC,QAAM,EAAa,EA7CN;AA6CU;AACvBC,QAAM,EAAa,EA9CN;AA8CU;AACvBC,QAAM,EAAa,EA/CN;AA+CU;;AAEvB;AACA7E,QAAM,EAAa,CAlDN;AAkDS;AACtB0J,QAAM,EAAa,CAnDN;AAmDS;AACtBC,UAAQ,EAAW,CApDN;AAoDS;AACtBC,UAAQ,EAAW,CArDN;AAqDS;AACtBC,UAAQ,EAAW,CAtDN;AAsDS;AACtBC,UAAQ,EAAW,CAvDN;AAuDS;AACtBC,UAAQ,EAAW,CAxDN;AAwDS;AACtB;AACA9J,UAAQ,EAAW,CA1DN;AA0DS;AACtB+J,mBAAiB,EAAE,CA3DN;AA2DS;AACtBC,QAAM,EAAa,EA5DN;AA4DS;AACtB;AACAC,OAAK,EAAc,EA9DN;AA8DU;AACvB;AACAC,MAAI,EAAe,EAhEN;AAgEU;AACvB;AACAC,WAAS,EAAU,EAlEN;AAkEU;AACvBC,UAAQ,EAAW,EAnEN;AAmEU;;AAEvB;AACAE,SAAO,EAAY,CAtEN;AAsEU;AACvBC,WAAS,EAAU,CAvEN;AAuEU;AACvBC,WAAS,EAAU,CAxEN;AAwEU;AACvBC,UAAQ,EAAW,CAzEN;AAyEU;AACvBC,SAAO,EAAY,CA1EN;AA0EU;AACvBE,SAAO,EAAY,EA3EN;AA2EU;AACvBm7G,SAAO,EAAY,IA5EN;AA4EY;AACzBl7G,SAAO,EAAY,IA7EN;AA6EY;;AAEzB;AACA3U,MAAI,EAAe,CAhFN;AAiFbH,QAAM,EAAa,CAjFN;AAkFbP,MAAI,EAAe,CAlFN;;AAoFb;AACAsV,OAAK,EAAc,CArFN;AAsFbC,SAAO,EAAY,CAtFN;;AAwFb;AACAC,UAAQ,EAAW,MAzFN;AA0FbC,WAAS,EAAU,MA1FN;AA2FbC,QAAM,EAAa,MA3FN;AA4FbC,QAAM,EAAa,MA5FN;AA6FbC,SAAO,EAAY,MA7FN;AA8FbC,YAAU,EAAS,MA9FN;AA+FbC,SAAO,EAAY,MA/FN;AAgGbC,SAAO,EAAY,MAhGN;AAiGbC,UAAQ,EAAW,MAjGN;AAkGbC,eAAa,EAAM,MAlGN;AAmGbC,kBAAgB,EAAG,MAnGN;AAoGbC,kBAAgB,EAAG,MApGN;AAqGbC,cAAY,EAAO,MArGN;AAsGbC,eAAa,EAAM,MAtGN;AAuGbC,kBAAgB,EAAG,MAvGN;AAwGbC,SAAO,EAAY,MAxGN;AAyGbC,SAAO,EAAY,MAzGN;AA0GbC,WAAS,EAAU,MA1GN;AA4GbC,gBAAc,EAAK,UA5GN;AA6GbC,gBAAc,EAAK,MA7GN;AA8GbC,kBAAgB,EAAG,CA9GN;AA+GbC,gBAAc,EAAK,CA/GN;AAgHbC,cAAY,EAAO,EAhHN;AAiHbC,cAAY,EAAO;AAjHN,CAAjB,C;;;;;;;;;;;ACAA9X,MAAM,CAACC,OAAP,GAAiB;AACb;AACA,iBAAgB,oCAFH;AAGb,iBAAgB,oCAHH;AAIb,iBAAgB,oCAJH;;AAMb;AACA,aAAY,uBAPC;AAQb,aAAY,uBARC;AASb,qBAAoB,gCATP;AAUb,oBAAmB,wCAVN;;AAYb;AACA,gBAAe,mDAbF;AAcb,sBAAqB,4EAdR;AAeb,mBAAkB,4EAfL;AAgBb,wBAAuB,6EAhBV;AAiBb,0BAAyB,8EAjBZ;AAkBb,sBAAqB,wEAlBR;AAmBb,0BAAwB,wEAnBX;AAoBb,uBAAqB,8EApBR;AAqBb,yBAAwB,6DArBX;AAsBb,wBAAuB,yCAtBV;;AAwBb;AACA,uBAAsB,4BAzBT;AA0Bb,mBAAkB,4BA1BL;AA2Bb,YAAW,wBA3BE;AA4Bb,cAAa,qBA5BA;AA6Bb,6BAA4B,iCA7Bf;AA8Bb,oBAAmB,oBA9BN;AA+Bb,qBAAoB,iBA/BP;AAgCb,sBAAqB,kBAhCR;AAiCb,oBAAmB;AAjCN,CAAjB,C;;;;;;;;;;;ACAA,IAAIe,EAAE,GAAGZ,mBAAO,CAAC,kFAAD,CAAP,CAAwBA,OAAxB,EAAT;AAAA,IACIC,GAAG,GAAGD,mBAAO,CAAC,kBAAD,CADjB;;AAGAY,EAAE,CAACQ,UAAH,GAAgBR,EAAE,CAACQ,UAAH,IAAiBnB,GAAG,CAACmB,UAArC;;AAEAxB,MAAM,CAACC,OAAP,GAAiB;AAAS;AAAU+Y,IAAnB,EAAyB;AAEtC,MAAIC,KAAK,GAAGD,IAAI,IAAI,EAApB;AAAA,MACIu4G,YAAY,GAAG,CADnB;AAAA,MAEIr4G,IAAI,GAAGC,OAAO,EAFlB;AAAA,MAGIC,KAAK,GAAG,IAHZ;;AAKA,WAASD,OAAT,GAAmB;AACf,WAAO;AACHE,eAAS,EAAG,KADT;AAEHC,cAAQ,EAAG,KAFR;AAGHC,YAAM,EAAG,KAHN;AAIHC,gBAAU,EAAG,KAJV;AAKHxT,WAAK,EAAG,CALL;AAMHyT,WAAK,EAAG;AANL,KAAP;AAQH;;AAED,MAAIR,KAAK,IAAIjY,EAAE,CAACQ,UAAH,CAAcyX,KAAd,CAAb,EAAmC;AAC/BG,SAAK,GAAGpY,EAAE,CAACmD,QAAH,CAAY8U,KAAZ,CAAR;AACAC,QAAI,CAACG,SAAL,GAAiBD,KAAK,CAAClT,WAAN,EAAjB;AACAgT,QAAI,CAAClT,KAAL,GAAaoT,KAAK,CAACpT,KAAnB;AACAkT,QAAI,CAACO,KAAL,GAAaL,KAAK,CAACK,KAAnB;AACAP,QAAI,CAACM,UAAL,GAAkB,CAAC,EAAE,IAAIpa,QAAQ,CAAE,CAACga,KAAK,CAAC/S,IAAN,GAAajH,QAAQ,CAAE,KAAF,EAAS,CAAT,CAAtB,EAAmCxD,QAAnC,CAA6C,CAA7C,EAAgD,CAAhD,CAAF,CAAd,CAAnB;AACAsd,QAAI,CAACI,QAAL,GAAgB,CAAC,EAAE,IAAIla,QAAQ,CAAE,CAACga,KAAK,CAAC/S,IAAN,GAAajH,QAAQ,CAAE,KAAF,EAAS,CAAT,CAAtB,EAAmCxD,QAAnC,CAA6C,CAA7C,EAAgD,CAAhD,CAAF,CAAd,CAAjB;AACAsd,QAAI,CAACK,MAAL,GAAclZ,GAAG,CAAC6G,QAAJ,CAAa+R,KAAb,EAAoB,CAApB,MAA2B,GAAzC;AACH,GARD,MAQO;AACHS,WAAO,CAACC,IAAR,CAAa,mBAAmBV,KAAhC;AACH;;AAED,SAAO;AAEH,QAAII,SAAJ,GAAiB;AACb,aAAOH,IAAI,CAACG,SAAZ;AACH,KAJE;;AAMH,QAAIO,QAAJ,GAAgB;AACZ,aAAOV,IAAI,CAACI,QAAZ;AACH,KARE;;AAUH,QAAIC,MAAJ,GAAc;AACV,aAAOL,IAAI,CAACK,MAAZ;AACH,KAZE;;AAcH,QAAIvT,KAAJ,GAAa;AACT,aAAOkT,IAAI,CAAClT,KAAZ;AACH,KAhBE;;AAkBH,QAAIyT,KAAJ,GAAa;AACV,aAAOP,IAAI,CAACO,KAAZ;AACF,KApBE;;AAuBH,QAAID,UAAJ,GAAkB;AACd,aAAON,IAAI,CAACM,UAAZ;AACH,KAzBE;;AA2BHK,oBAAgB,EAAG,UAAS7b,GAAT,EAAc,CAEhC,CA7BE;AA+BH8b,oBAAgB,EAAG,UAAU9b,GAAV,EAAe,CAEjC,CAjCE;AAmCHpC,YAAQ,EAAG,YAAW;AACnB,aAAO,QACH,cADG,GACcqd,KADd,GACsB,KADtB,GAEH,oBAFG,GAEoBC,IAAI,CAACG,SAFzB,GAEqC,KAFrC,GAGH,mBAHG,GAGmBH,IAAI,CAACI,QAHxB,GAGmC,KAHnC,GAIH,iBAJG,GAIiBJ,IAAI,CAACK,MAJtB,GAI+B,KAJ/B,GAKH,qBALG,GAKqBL,IAAI,CAACM,UAL1B,GAKuC,KALvC,GAMH,cANG,GAMcN,IAAI,CAAClT,KANnB,GAM2B,IAN3B,GAOH,cAPG,GAOckT,IAAI,CAACO,KAPnB,GAO2B,IAP3B,GAQP,GARA;AASF;AA7CE,GAAP;AAgDH,CA9ED,C;;;;;;;;;;;ACLAxZ,OAAO,CAACG,OAAR,GAAkB,YAAW;AAC3B,MAAIY,EAAE,GAAGZ,mBAAO,CAAC,cAAD,CAAhB;;AACA,MAAIga,OAAO,CAACC,QAAR,CAAiB,UAAjB,CAAJ,EAAkC;AACjC,QAAI;AACFC,gBAAU,GAAGla,mBAAO,CAAC,qIAAD,CAApB;;AACA,UAAIxe,MAAM,CAACiS,IAAP,CAAYymB,UAAZ,EAAwBt1B,MAAxB,GAAiC,CAArC,EAAwC;AACtCgc,UAAE,GAAGsZ,UAAL;AACA;AACH,KALD,CAKE,OAAOhS,CAAP,EAAU,CAAE;AACd;;AACD,SAAOtH,EAAP;AACD,CAXD,C;;;;;;;;;;;ACAAhB,MAAM,CAACC,OAAP,GAAiBG,mBAAO,CAAC,wEAAD,CAAxB;AACAJ,MAAM,CAACC,OAAP,CAAemxH,UAAf,GAA4BhxH,mBAAO,CAAC,kFAAD,CAAnC;AACAJ,MAAM,CAACC,OAAP,CAAea,SAAf,GAA2BV,mBAAO,CAAC,gFAAD,CAAlC;AACAJ,MAAM,CAACC,OAAP,CAAe2B,MAAf,GAAwBxB,mBAAO,CAAC,0EAAD,CAA/B;AACAJ,MAAM,CAACC,OAAP,CAAesa,QAAf,GAA0Bna,mBAAO,CAAC,wEAAD,CAAjC,C;;;;;;;;;;;ACJA,IAAIY,EAAE,GAAGZ,mBAAO,CAAC,kFAAD,CAAP,CAAwBA,OAAxB,EAAT;AAAA,IACIC,GAAG,GAAGD,mBAAO,CAAC,kBAAD,CADjB;;AAGAY,EAAE,CAACQ,UAAH,GAAgBR,EAAE,CAACQ,UAAH,IAAiBnB,GAAG,CAACmB,UAArC;;AAEAxB,MAAM,CAACC,OAAP,GAAkB,YAAW;AAEzB,MAAI0a,QAAQ,GAAG,EAAf;AAAA,MACI7Z,SAAS,GAAGV,mBAAO,CAAC,gFAAD,CADvB;AAAA,MAEIwB,MAAM,GAAGxB,mBAAO,CAAC,0EAAD,CAFpB;AAAA,MAIIoxH,cAAc,GAAGnxH,GAAG,CAACoC,GAJzB;;AAOA,WAASoY,SAAT;AAAmB;AAAU7B,MAA7B,EAAmC;AAC/B,QAAI+B,YAAY,GAAG/B,IAAI,CAAC3Z,KAAL,CAAWmyH,cAAX,EAA2B,CAA3B,CAAnB;AACAx4G,QAAI,CAAC3Z,KAAL,CAAWmyH,cAAX,EAA2BtgI,OAA3B,CAAmC,UAASlJ,IAAT,EAAe;AAC9C,UAAI,CAACA,IAAD,IAASA,IAAI,CAACsV,MAAL,CAAY,CAAC,CAAb,EAAe,CAAf,MAAsB,GAAnC,EAAwC;AACxCyd,kBAAY,IAAIy2G,cAAc,GAAGxpI,IAAjC;AACA,UAAIod,IAAJ;;AACA,UAAI;AACAA,YAAI,GAAGpE,EAAE,CAACmD,QAAH,CAAY4W,YAAZ,CAAP;AACH,OAFD,CAEE,OAAOzS,CAAP,EAAU;AACRtH,UAAE,CAAC6Z,SAAH,CAAaE,YAAb;AACH;;AACD,UAAI3V,IAAI,IAAIA,IAAI,CAACL,MAAL,EAAZ,EACI,MAAMnD,MAAM,CAACqW,eAAP,CAAuB3Z,OAAvB,CAA+B,IAA/B,EAAqCyc,YAArC,CAAN;AACP,KAXD;AAYH;;AAED,WAASW,QAAT;AAAkB;AAAUC,KAA5B;AAAiC;AAAUC,SAA3C;AAAoD;AAAW61G,YAA/D,EAA2E;AACvE,QAAI,OAAO71G,OAAP,KAAmB,SAAvB,EAAkC;AAC9B61G,gBAAU,GAAG71G,OAAb;AACAA,aAAO,GAAG59B,SAAV;AACH;;AACD,QAAI89B,KAAK,GAAG,EAAZ;AACA9a,MAAE,CAAC+a,WAAH,CAAeJ,GAAf,EAAoBzqB,OAApB,CAA4B,UAASiX,IAAT,EAAe;AACvC,UAAI6Q,IAAI,GAAG3Y,GAAG,CAACN,IAAJ,CAAS4b,GAAT,EAAcxT,IAAd,CAAX;AAEA,UAAInH,EAAE,CAACmD,QAAH,CAAY6U,IAAZ,EAAkB9S,WAAlB,MAAmCurH,UAAvC,EACI31G,KAAK,GAAGA,KAAK,CAACE,MAAN,CAAaN,QAAQ,CAAC1C,IAAD,EAAO4C,OAAP,EAAgB61G,UAAhB,CAArB,CAAR;;AAEJ,UAAI,CAAC71G,OAAD,IAAYA,OAAO,CAACpX,IAAR,CAAawU,IAAb,CAAhB,EAAoC;AAChC8C,aAAK,CAACj4B,IAAN,CAAWwc,GAAG,CAACmC,SAAJ,CAAcwW,IAAd,KAAuBhY,EAAE,CAACmD,QAAH,CAAY6U,IAAZ,EAAkB9S,WAAlB,KAAkCsrH,cAAlC,GAAmD,EAA1E,CAAX;AACH;AAEJ,KAVD;AAWA,WAAO11G,KAAP;AACH;;AAED,SAAO;AACHjU,WAAO,EAAG;AAAS;AAAUmR,QAAnB,EAAyB;AAC/B6B,eAAS,CAAC7B,IAAD,CAAT;AACH,KAHE;AAKHoD,SAAK,EAAG,UAAS7K,GAAT,EAAc;AAClB,UAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AACzBA,WAAG,GAAGnQ,MAAM,CAAC4D,KAAP,CAAauM,GAAG,CAACvsB,MAAjB,EAAyBusB,GAAzB,CAAN;AACH;;AACD,UAAIlsB,CAAC,GAAG+b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAR;;AACA,UAAI,CAAC2V,QAAQ,CAAC31B,MAAd,EAAsB;AAClB,aAAK,IAAIo5B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,GAApB,EAAyBA,CAAC,EAA1B,EAA8B;AAC1B,cAAI9K,CAAC,GAAG8K,CAAR;;AACA,eAAK,IAAIjL,CAAC,GAAG,CAAb,EAAgB,EAAEA,CAAF,IAAO,CAAvB,GAA4B;AACxB,cAAI,CAACG,CAAC,GAAG,CAAL,MAAY,CAAhB,EAAoB;AAAEA,aAAC,GAAG,aAAcA,CAAC,KAAK,CAAxB;AAA6B,WAAnD,MAAyD;AAAEA,aAAC,GAAGA,CAAC,KAAK,CAAV;AAAc;;AAC7E,cAAIA,CAAC,GAAG,CAAR,EAAW;AACPjuB,aAAC,CAACqsI,YAAF,CAAep+G,CAAf,EAAkB,CAAlB;AACAA,aAAC,GAAGjuB,CAAC,CAACqnB,YAAF,CAAe,CAAf,CAAJ;AACH;;AACDiO,kBAAQ,CAACyD,CAAD,CAAR,GAAc9K,CAAd;AACH;AACJ;;AACD,UAAI9H,GAAG,GAAG,CAAV;AAAA,UAAa8Q,GAAG,GAAG,CAAnB;AAAA,UAAsB5L,GAAG,GAAGa,GAAG,CAACvsB,MAAhC;AAAA,UAAwCsyH,EAAE,GAAG,CAAC9rG,GAA9C;;AACA,aAAM,EAAEkF,GAAF,IAAS,CAAf,EAAkB4mG,EAAE,GAAG38F,QAAQ,CAAC,CAAC28F,EAAE,GAAG/lG,GAAG,CAAC+K,GAAG,EAAJ,CAAT,IAAoB,IAArB,CAAR,GAAsCg7F,EAAE,KAAK,CAAlD;;AAClB9rG,SAAG,GAAG,CAAC8rG,EAAP;AACAjyH,OAAC,CAACqsI,YAAF,CAAelmH,GAAG,GAAG,UAArB,EAAiC,CAAjC;AACA,aAAOnmB,CAAC,CAACqnB,YAAF,CAAe,CAAf,CAAP;AACH,KA3BE;AA6BHsC,kBAAc,EAAG;AAAS;AAAU1sB,UAAnB,EAA2B;AACxC,cAAQA,MAAR;AACI,aAAKwe,SAAS,CAACwK,MAAf;AACI,iBAAO,aAAahpB,MAAb,GAAsB,GAA7B;;AACJ,aAAKwe,SAAS,CAACyK,QAAf;AACI,iBAAO,eAAejpB,MAAf,GAAwB,GAA/B;;AACJ;AACI,iBAAO,kBAAkBA,MAAlB,GAA2B,GAAlC;AANR;AASH,KAvCE;AAyCHmlB,eAAW,EAAG;AAAS;AAAUuR,QAAnB;AAAyB;AAAUpV,WAAnC;AAA4C;AAAWiD,aAAvD;AAAkE;AAAUjB,QAA5E,EAAkF;AAC5F,UAAI5E,EAAE,CAACQ,UAAH,CAAcwX,IAAd,CAAJ,EAAyB;AACrB,YAAI,CAACnS,SAAL,EACI,OAAO,KAAP,CAFiB,CAEH;;AAElB,YAAIzB,IAAI,GAAGpE,EAAE,CAACmD,QAAH,CAAY6U,IAAZ,CAAX;;AACA,YAAI5T,IAAI,CAACc,WAAL,EAAJ,EAAwB;AACpB,iBAAO,KAAP;AACH;AACJ;;AACD,UAAI0U,MAAM,GAAGva,GAAG,CAAC2a,OAAJ,CAAYhC,IAAZ,CAAb;;AACA,UAAI,CAAChY,EAAE,CAACQ,UAAH,CAAcoZ,MAAd,CAAL,EAA4B;AACxBC,iBAAS,CAACD,MAAD,CAAT;AACH;;AAED,UAAIK,EAAJ;;AACA,UAAI;AACAA,UAAE,GAAGja,EAAE,CAACka,QAAH,CAAYlC,IAAZ,EAAkB,GAAlB,EAAuB,GAAvB,CAAL,CADA,CACkC;AACrC,OAFD,CAEE,OAAM1Q,CAAN,EAAS;AACPtH,UAAE,CAACyH,SAAH,CAAauQ,IAAb,EAAmB,GAAnB;AACAiC,UAAE,GAAGja,EAAE,CAACka,QAAH,CAAYlC,IAAZ,EAAkB,GAAlB,EAAuB,GAAvB,CAAL;AACH;;AACD,UAAIiC,EAAJ,EAAQ;AACJ,YAAI;AACAja,YAAE,CAACma,SAAH,CAAaF,EAAb,EAAiBrX,OAAjB,EAA0B,CAA1B,EAA6BA,OAAO,CAAC5e,MAArC,EAA6C,CAA7C;AACH,SAFD,CAGA,OAAOsjB,CAAP,EAAS;AACL,gBAAMA,CAAN;AACH,SALD,SAMQ;AACJtH,YAAE,CAACoa,SAAH,CAAaH,EAAb;AACH;AACJ;;AACDja,QAAE,CAACyH,SAAH,CAAauQ,IAAb,EAAmBpT,IAAI,IAAI,GAA3B;AACA,aAAO,IAAP;AACH,KA5EE;AA8EHkD,oBAAgB,EAAG;AAAS;AAAUkQ,QAAnB;AAAyB;AAAUpV,WAAnC;AAA4C;AAAWiD,aAAvD;AAAkE;AAAUjB,QAA5E;AAAkF;AAAY9C,YAA9F,EAAwG;AACvH,UAAG,OAAO8C,IAAP,KAAgB,UAAnB,EAA+B;AAC3B9C,gBAAQ,GAAG8C,IAAX;AACAA,YAAI,GAAG5nB,SAAP;AACH;;AAEDgjB,QAAE,CAACqa,MAAH,CAAUrC,IAAV,EAAgB,UAASqC,MAAT,EAAiB;AAC7B,YAAGA,MAAM,IAAI,CAACxU,SAAd,EACI,OAAO/D,QAAQ,CAAC,KAAD,CAAf;AAEJ9B,UAAE,CAACoE,IAAH,CAAQ4T,IAAR,EAAc,UAAS7V,GAAT,EAAciC,IAAd,EAAoB;AAC9B,cAAGiW,MAAM,IAAGjW,IAAI,CAACc,WAAL,EAAZ,EAAgC;AAC5B,mBAAOpD,QAAQ,CAAC,KAAD,CAAf;AACH;;AAED,cAAI8X,MAAM,GAAGva,GAAG,CAAC2a,OAAJ,CAAYhC,IAAZ,CAAb;AACAhY,YAAE,CAACqa,MAAH,CAAUT,MAAV,EAAkB,UAASS,MAAT,EAAiB;AAC/B,gBAAG,CAACA,MAAJ,EACIR,SAAS,CAACD,MAAD,CAAT;AAEJ5Z,cAAE,CAACkE,IAAH,CAAQ8T,IAAR,EAAc,GAAd,EAAmB,GAAnB,EAAwB,UAAS7V,GAAT,EAAc8X,EAAd,EAAkB;AACtC,kBAAG9X,GAAH,EAAQ;AACJnC,kBAAE,CAACua,KAAH,CAASvC,IAAT,EAAe,GAAf,EAAoB,YAAW;AAC3BhY,oBAAE,CAACkE,IAAH,CAAQ8T,IAAR,EAAc,GAAd,EAAmB,GAAnB,EAAwB,UAAS7V,GAAT,EAAc8X,EAAd,EAAkB;AACtCja,sBAAE,CAACwa,KAAH,CAASP,EAAT,EAAarX,OAAb,EAAsB,CAAtB,EAAyBA,OAAO,CAAC5e,MAAjC,EAAyC,CAAzC,EAA4C,YAAW;AACnDgc,wBAAE,CAACya,KAAH,CAASR,EAAT,EAAa,YAAW;AACpBja,0BAAE,CAACua,KAAH,CAASvC,IAAT,EAAepT,IAAI,IAAI,GAAvB,EAA4B,YAAW;AACnC9C,kCAAQ,CAAC,IAAD,CAAR;AACH,yBAFD;AAGH,uBAJD;AAKH,qBAND;AAOH,mBARD;AASH,iBAVD;AAWH,eAZD,MAYO;AACH,oBAAGmY,EAAH,EAAO;AACHja,oBAAE,CAACwa,KAAH,CAASP,EAAT,EAAarX,OAAb,EAAsB,CAAtB,EAAyBA,OAAO,CAAC5e,MAAjC,EAAyC,CAAzC,EAA4C,YAAW;AACnDgc,sBAAE,CAACya,KAAH,CAASR,EAAT,EAAa,YAAW;AACpBja,wBAAE,CAACua,KAAH,CAASvC,IAAT,EAAepT,IAAI,IAAI,GAAvB,EAA4B,YAAW;AACnC9C,gCAAQ,CAAC,IAAD,CAAR;AACH,uBAFD;AAGH,qBAJD;AAKH,mBAND;AAOH,iBARD,MAQO;AACH9B,oBAAE,CAACua,KAAH,CAASvC,IAAT,EAAepT,IAAI,IAAI,GAAvB,EAA4B,YAAW;AACnC9C,4BAAQ,CAAC,IAAD,CAAR;AACH,mBAFD;AAGH;AACJ;AACJ,aA5BD;AA6BH,WAjCD;AAkCH,SAxCD;AAyCH,OA7CD;AA8CH,KAlIE;AAoIH4B,aAAS,EAAG;AAAS;AAAUsU,QAAnB,EAAyB;AACjC,aAAO0C,QAAQ,CAAC1C,IAAD,EAAO,IAAP,CAAf;AACH,KAtIE;AAwIHiD,iBAAa,EAAG;AAAS;AAAUjD,QAAnB,EAAyB,CAExC,CA1IE;AA4IHkD,iBAAa,EAAG;AAAS;AAAUlD,QAAnB,EAAyB,CAExC,CA9IE;AAgJHlP,YAAQ,EAAG,UAAS9jB,KAAT,EAAgB;AACvB,UAAIob,MAAM,CAACC,QAAP,CAAgBrb,KAAhB,CAAJ,EAA4B;AACxB,eAAOA,KAAP;AACH,OAFD,MAEO;AACH,YAAIA,KAAK,CAAChB,MAAN,KAAiB,CAArB,EAAwB;AACpB,iBAAOoc,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP;AACH;;AACD,eAAO5D,MAAM,CAACre,IAAP,CAAYiD,KAAZ,EAAmB,MAAnB,CAAP;AACH;AACJ,KAzJE;AA2JH8a,aAAS,EAAGA,SA3JT;AA4JHc,UAAM,EAAGA;AA5JN,GAAP;AA8JH,CA3MgB,EAAjB,C;;;;;;;;;;;ACLA,IAAIzB,KAAK,GAAGC,mBAAO,CAAC,uEAAD,CAAnB;AAAA,IACIwc,OAAO,GAAGxc,mBAAO,CAAC,6EAAD,CADrB;AAAA,IAEIU,SAAS,GAAGX,KAAK,CAACW,SAFtB;AAAA,IAGI+b,OAAO,GAAGzc,mBAAO,CAAC,6EAAD,CAHrB;;AAKAJ,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAUja,KAApB,EAA2B;AAExC,MAAI82B,YAAY,GAAG,IAAIF,OAAO,CAAC1N,WAAZ,EAAnB;AAAA,MACI6N,UAAU,GAAG3b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CADjB;AAAA,MAEIgY,QAAQ,GAAG5b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAFf;AAAA,MAGIiY,YAAY,GAAG,KAHnB;AAAA,MAIIC,gBAAgB,GAAG,IAJvB;AAAA,MAKIC,MAAM,GAAG/b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CALb;;AAOA,WAASoY,wBAAT,GAAoC;AAChC,QAAI,CAACp3B,KAAD,IAAU,CAACob,MAAM,CAACC,QAAP,CAAgBrb,KAAhB,CAAf,EAAuC;AACnC,aAAOob,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP;AACH;;AACD8X,gBAAY,CAACrQ,wBAAb,CAAsCzmB,KAAtC;;AACA,WAAOA,KAAK,CAACgB,KAAN,CAAY81B,YAAY,CAAC1Q,cAAzB,EAAyC0Q,YAAY,CAAC1Q,cAAb,GAA8B0Q,YAAY,CAACpR,cAApF,CAAP;AACH;;AAED,WAAS2R,OAAT,CAAiBh3B,IAAjB,EAAuB;AACnB;AACA,QAAI,CAACy2B,YAAY,CAACzR,KAAb,GAAqB,GAAtB,MAA+B,GAAnC,EAAwC;AACrC,UAAIlL,KAAK,CAACic,KAAN,CAAY/1B,IAAZ,MAAsBy2B,YAAY,CAACtQ,UAAb,CAAwBhB,GAAlD,EAAuD;AACnD,eAAO,KAAP;AACH;AACH,KAJD,MAIO,CACH;AACA;AACA;AACH;;AACD,WAAO,IAAP;AACH;;AAED,WAAS8R,UAAT;AAAoB;AAAWC,OAA/B;AAAsC;AAAYza,UAAlD;AAA4D;AAAUH,MAAtE,EAA4E;AACxE,QAAG,OAAOG,QAAP,KAAoB,WAApB,IAAmC,OAAOya,KAAP,KAAiB,QAAvD,EAAiE;AAC7D5a,UAAI,GAAC4a,KAAL;AACAA,WAAK,GAAC,KAAK,CAAX;AACH;;AACD,QAAIN,YAAJ,EAAkB;AACd,UAAIM,KAAK,IAAIza,QAAb,EAAuB;AACnBA,gBAAQ,CAAC1B,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAD,EAAkB7E,KAAK,CAACyB,MAAN,CAAaiX,uBAA/B,CAAR,CADmB,CAC8C;AACpE;;AACD,aAAOzX,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP;AACH;;AAED,QAAIwY,cAAc,GAAGJ,wBAAwB,EAA7C;;AAEA,QAAII,cAAc,CAACx4B,MAAf,KAA0B,CAA9B,EAAiC;AAC7B,UAAIu4B,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAAC0a,cAAD,EAAiBrd,KAAK,CAACyB,MAAN,CAAamW,OAA9B,CAAR,CADM,CACyC;;AACtE,aAAOyF,cAAP;AACH;;AAED,QAAIn3B,IAAI,GAAG+a,MAAM,CAAC4D,KAAP,CAAa8X,YAAY,CAACnU,IAA1B,CAAX;;AAEA,YAAQmU,YAAY,CAACx6B,MAArB;AACI,WAAK6d,KAAK,CAACW,SAAN,CAAgBwK,MAArB;AACIkS,sBAAc,CAAC9L,IAAf,CAAoBrrB,IAApB;;AACA,YAAI,CAACg3B,OAAO,CAACh3B,IAAD,CAAZ,EAAoB;AAChB,cAAIk3B,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAACzc,IAAD,EAAO8Z,KAAK,CAACyB,MAAN,CAAaoW,OAApB,CAAR,CADP,CAC4C;;AAC5D,iBAAO7X,KAAK,CAACyB,MAAN,CAAaoW,OAApB;AACH,SAHD,MAGO;AAAC;AACJ,cAAIuF,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAACzc,IAAD,CAAR;AACvB,iBAAOA,IAAP;AACH;;AACL,WAAK8Z,KAAK,CAACW,SAAN,CAAgByK,QAArB;AACI,YAAIkS,QAAQ,GAAG,IAAIZ,OAAO,CAACjL,QAAZ,CAAqB4L,cAArB,CAAf;;AACA,YAAI,CAACD,KAAL,EAAY;AACR,cAAIxqB,MAAM,GAAG0qB,QAAQ,CAAC3L,OAAT,CAAiBzrB,IAAjB,CAAb;AACA0M,gBAAM,CAAC2e,IAAP,CAAYrrB,IAAZ,EAAkB,CAAlB;;AACA,cAAI,CAACg3B,OAAO,CAACh3B,IAAD,CAAZ,EAAoB;AAChBqzB,mBAAO,CAACC,IAAR,CAAaxZ,KAAK,CAACyB,MAAN,CAAaoW,OAAb,GAAuB,GAAvB,GAA6B+E,UAAU,CAACnhB,QAAX,EAA1C;AACH;;AACD,iBAAOvV,IAAP;AACH,SAPD,MAOO;AACHo3B,kBAAQ,CAACzL,YAAT,CAAsB,UAASjf,MAAT,EAAiB;AACnCA,kBAAM,CAAC2e,IAAP,CAAYrrB,IAAZ,EAAkB,CAAlB;;AACA,gBAAI,CAACg3B,OAAO,CAACh3B,IAAD,CAAZ,EAAoB;AAChB,kBAAIyc,QAAJ,EAAcA,QAAQ,CAACzc,IAAD,EAAO8Z,KAAK,CAACyB,MAAN,CAAaoW,OAApB,CAAR,CADE,CACoC;AACvD,aAFD,MAEO;AAAE;AACL,kBAAIlV,QAAJ,EAAcA,QAAQ,CAACzc,IAAD,CAAR;AACjB;AACJ,WAPD;AAQH;;AACD;;AACJ;AACI,YAAIk3B,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAAC1B,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAD,EAAkB7E,KAAK,CAACyB,MAAN,CAAasW,cAA/B,CAAR;AACvB,eAAO/X,KAAK,CAACyB,MAAN,CAAasW,cAApB;AAhCR;AAkCH;;AAED,WAASwF,QAAT;AAAkB;AAAWH,OAA7B;AAAoC;AAAYza,UAAhD,EAA0D;AACtD,QAAI,CAAC,CAACoa,gBAAD,IAAqB,CAACA,gBAAgB,CAACl4B,MAAxC,KAAmDoc,MAAM,CAACC,QAAP,CAAgBrb,KAAhB,CAAvD,EAA+E;AAC3E;AACA,UAAIu3B,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAACsa,wBAAwB,EAAzB,CAAR;AACvB,aAAOA,wBAAwB,EAA/B;AACH;;AAED,QAAIF,gBAAgB,CAACl4B,MAAjB,IAA2B,CAACi4B,YAAhC,EAA8C;AAC1C,UAAIO,cAAJ,CAD0C,CAE1C;;AACA,cAAQV,YAAY,CAACx6B,MAArB;AACI,aAAK6d,KAAK,CAACW,SAAN,CAAgBwK,MAArB;AACIwR,sBAAY,CAACpR,cAAb,GAA8BoR,YAAY,CAACnU,IAA3C;AAEA6U,wBAAc,GAAGpc,MAAM,CAAC4D,KAAP,CAAakY,gBAAgB,CAACl4B,MAA9B,CAAjB;AACAk4B,0BAAgB,CAACxL,IAAjB,CAAsB8L,cAAtB;AAEA,cAAID,KAAK,IAAIza,QAAb,EAAuBA,QAAQ,CAAC0a,cAAD,CAAR;AACvB,iBAAOA,cAAP;;AACJ;AACA,aAAKrd,KAAK,CAACW,SAAN,CAAgByK,QAArB;AAEI,cAAIoS,QAAQ,GAAG,IAAId,OAAO,CAAClL,QAAZ,CAAqBuL,gBAArB,CAAf;;AACA,cAAI,CAACK,KAAL,EAAY;AACR,gBAAIK,QAAQ,GAAGD,QAAQ,CAAC5M,OAAT,EAAf;AACA+L,wBAAY,CAACpR,cAAb,GAA8BkS,QAAQ,CAAC54B,MAAvC;AACA,mBAAO44B,QAAP;AACH,WAJD,MAIO;AACHD,oBAAQ,CAAC1M,YAAT,CAAsB,UAAS5qB,IAAT,EAAe;AACjCm3B,4BAAc,GAAGpc,MAAM,CAAC4D,KAAP,CAAa3e,IAAI,CAACrB,MAAlB,CAAjB;AACA83B,0BAAY,CAACpR,cAAb,GAA8BrlB,IAAI,CAACrB,MAAnC;AACAqB,kBAAI,CAACqrB,IAAL,CAAU8L,cAAV;AACA1a,sBAAQ,IAAIA,QAAQ,CAAC0a,cAAD,CAApB;AACH,aALD;AAMH;;AACDG,kBAAQ,GAAG,IAAX;AACA;AA1BR;AA4BH,KA/BD,MA+BO;AACH,UAAIJ,KAAK,IAAIza,QAAb,EAAuB;AACnBA,gBAAQ,CAAC1B,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAD,CAAR;AACH,OAFD,MAEO;AACH,eAAO5D,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAAP;AACH;AACJ;AACJ;;AAED,WAAS6Y,YAAT,CAAsBnB,MAAtB,EAA8B1Q,MAA9B,EAAsC;AAClC,WAAO,CAAC0Q,MAAM,CAAChQ,YAAP,CAAoBV,MAAM,GAAG,CAA7B,KAAmC,CAApC,IAAyC0Q,MAAM,CAAChQ,YAAP,CAAoBV,MAApB,CAAhD;AACH;;AAED,WAAS8R,UAAT,CAAoBz3B,IAApB,EAA0B;AACtB,QAAI2lB,MAAM,GAAG,CAAb;AACA,QAAI+R,SAAJ,EAAepV,IAAf,EAAqB8I,IAArB;;AACA,WAAMzF,MAAM,GAAC3lB,IAAI,CAACrB,MAAlB,EAA0B;AACtB+4B,eAAS,GAAG13B,IAAI,CAACwmB,YAAL,CAAkBb,MAAlB,CAAZ;AACAA,YAAM,IAAI,CAAV;AACArD,UAAI,GAAGtiB,IAAI,CAACwmB,YAAL,CAAkBb,MAAlB,CAAP;AACAA,YAAM,IAAI,CAAV;AACAyF,UAAI,GAAGprB,IAAI,CAACW,KAAL,CAAWglB,MAAX,EAAmBA,MAAM,GAACrD,IAA1B,CAAP;AACAqD,YAAM,IAAIrD,IAAV;;AACA,UAAG7H,SAAS,CAACyV,QAAV,KAAuBwH,SAA1B,EAAqC;AACjCC,qCAA6B,CAACvM,IAAD,CAA7B;AACH;AACJ;AACJ,GAzJuC,CA2JxC;;;AACA,WAASuM,6BAAT,CAAuC33B,IAAvC,EAA6C;AACzC,QAAIsiB,IAAJ,EAAU+C,cAAV,EAA0BM,MAA1B,EAAkCF,YAAlC;;AAEA,QAAGzlB,IAAI,CAACrB,MAAL,IAAe8b,SAAS,CAAC8W,cAA5B,EAA4C;AACxCjP,UAAI,GAAGkV,YAAY,CAACx3B,IAAD,EAAOya,SAAS,CAAC6W,gBAAjB,CAAnB;;AACA,UAAGmF,YAAY,CAACnU,IAAb,KAAsB7H,SAAS,CAAC2W,cAAnC,EAAmD;AAC/CqF,oBAAY,CAACnU,IAAb,GAAoBA,IAApB;AACH;AACJ;;AACD,QAAGtiB,IAAI,CAACrB,MAAL,IAAe8b,SAAS,CAAC+W,YAA5B,EAA0C;AACtCnM,oBAAc,GAAGmS,YAAY,CAACx3B,IAAD,EAAOya,SAAS,CAAC8W,cAAjB,CAA7B;;AACA,UAAGkF,YAAY,CAACpR,cAAb,KAAgC5K,SAAS,CAAC2W,cAA7C,EAA6D;AACzDqF,oBAAY,CAACpR,cAAb,GAA8BA,cAA9B;AACH;AACJ;;AACD,QAAGrlB,IAAI,CAACrB,MAAL,IAAe8b,SAAS,CAACgX,YAA5B,EAA0C;AACtC9L,YAAM,GAAG6R,YAAY,CAACx3B,IAAD,EAAOya,SAAS,CAAC+W,YAAjB,CAArB;;AACA,UAAGiF,YAAY,CAAC9Q,MAAb,KAAwBlL,SAAS,CAAC2W,cAArC,EAAqD;AACjDqF,oBAAY,CAAC9Q,MAAb,GAAsBA,MAAtB;AACH;AACJ;;AACD,QAAG3lB,IAAI,CAACrB,MAAL,IAAe8b,SAAS,CAACgX,YAAV,GAAuB,CAAzC,EAA4C;AACxChM,kBAAY,GAAGzlB,IAAI,CAACqmB,YAAL,CAAkB5L,SAAS,CAACgX,YAA5B,CAAf;;AACA,UAAGgF,YAAY,CAAChR,YAAb,KAA8BhL,SAAS,CAAC4W,cAA3C,EAA2D;AACvDoF,oBAAY,CAAChR,YAAb,GAA4BA,YAA5B;AACH;AACJ;AACJ;;AAGD,SAAO;AACH,QAAI3J,SAAJ,GAAiB;AAAE,aAAO4a,UAAU,CAACnhB,QAAX,EAAP;AAA+B,KAD/C;;AAEH,QAAIqiB,YAAJ,GAAmB;AAAE,aAAOlB,UAAP;AAAoB,KAFtC;;AAGH,QAAI5a,SAAJ,CAAenE,GAAf,EAAoB;AAChB+e,gBAAU,GAAG5c,KAAK,CAAC2J,QAAN,CAAe9L,GAAf,CAAb;AACA,UAAIkgB,QAAQ,GAAGnB,UAAU,CAACA,UAAU,CAAC/3B,MAAX,GAAoB,CAArB,CAAzB;AACAi4B,kBAAY,GAAIiB,QAAQ,KAAK,EAAd,IAAsBA,QAAQ,KAAK,EAAlD;AACApB,kBAAY,CAACnR,cAAb,GAA8BoR,UAAU,CAAC/3B,MAAzC;AACH,KARE;;AAUH,QAAIm5B,KAAJ,GAAa;AAAE,aAAOhB,MAAP;AAAgB,KAV5B;;AAWH,QAAIgB,KAAJ,CAAWngB,GAAX,EAAgB;AACZmf,YAAM,GAAGnf,GAAT;AACA8e,kBAAY,CAAClR,WAAb,GAA2B5N,GAAG,CAAChZ,MAA/B;AACA84B,gBAAU,CAAC9f,GAAD,CAAV;AACH,KAfE;;AAiBH,QAAIuF,OAAJ,GAAe;AAAE,aAAOyZ,QAAQ,CAACphB,QAAT,EAAP;AAA6B,KAjB3C;;AAkBH,QAAI2H,OAAJ,CAAavF,GAAb,EAAkB;AACdgf,cAAQ,GAAG7c,KAAK,CAAC2J,QAAN,CAAe9L,GAAf,CAAX;AACA8e,kBAAY,CAACjR,aAAb,GAA6BmR,QAAQ,CAACh4B,MAAtC;AACH,KArBE;;AAuBH,QAAIgD,IAAJ,GAAY;AAAE,UAAIo2B,CAAC,GAAGrB,UAAU,CAACnhB,QAAX,EAAR;;AAA+B,aAAOqhB,YAAY,GAAGmB,CAAC,CAAC9gB,MAAF,CAAS8gB,CAAC,CAACp5B,MAAF,GAAW,CAApB,EAAuBqa,KAAvB,CAA6B,GAA7B,EAAkCzZ,GAAlC,EAAH,GAA6Cw4B,CAAC,CAAC/e,KAAF,CAAQ,GAAR,EAAazZ,GAAb,EAAhE;AAAqF,KAvB/H;;AAwBH,QAAIsgB,WAAJ,GAAmB;AAAE,aAAO+W,YAAP;AAAqB,KAxBvC;;AA0BHoB,qBAAiB,EAAG,YAAW;AAC3B,aAAOX,QAAQ,CAAC,KAAD,EAAQ,IAAR,CAAf;AACH,KA5BE;AA8BHY,0BAAsB,EAAG;AAAS;AAAYxb,YAArB,EAA+B;AACpD4a,cAAQ,CAAC,IAAD,EAAO5a,QAAP,CAAR;AACH,KAhCE;AAkCHe,WAAO,EAAG,UAAStlB,KAAT,EAAgB;AACtB2+B,sBAAgB,GAAG/c,KAAK,CAAC2J,QAAN,CAAevrB,KAAf,CAAnB;;AACA,UAAI,CAAC0+B,YAAD,IAAiBC,gBAAgB,CAACl4B,MAAtC,EAA8C;AAC1C83B,oBAAY,CAACnU,IAAb,GAAoBuU,gBAAgB,CAACl4B,MAArC;AACA83B,oBAAY,CAACx6B,MAAb,GAAsB6d,KAAK,CAACW,SAAN,CAAgByK,QAAtC;AACAuR,oBAAY,CAACtR,GAAb,GAAmBrL,KAAK,CAACic,KAAN,CAAY79B,KAAZ,CAAnB;AACAu+B,oBAAY,CAACyB,OAAb,GAAuB,IAAvB;AACH,OALD,MAKO;AAAE;AACLzB,oBAAY,CAACx6B,MAAb,GAAsB6d,KAAK,CAACW,SAAN,CAAgBwK,MAAtC;AACH;AACJ,KA5CE;AA8CH1I,WAAO,EAAG,UAASD,IAAT,EAAe;AACrB,UAAIma,YAAY,CAACyB,OAAjB,EAA0B;AAClC,eAAOrB,gBAAP;AACA,OAFQ,MAEF;AACN,eAAOI,UAAU,CAAC,KAAD,EAAQ,IAAR,EAAc3a,IAAd,CAAjB;AACS;AACJ,KApDE;AAsDHI,gBAAY,EAAG;AAAS;AAAYD,YAArB,EAA+BH,IAA/B,EAAqC;AACzD,UAAIma,YAAY,CAACyB,OAAjB,EAA0B;AACzBzb,gBAAQ,CAACoa,gBAAD,CAAR;AACA,OAFD,MAEO;AACNI,kBAAU,CAAC,IAAD,EAAOxa,QAAP,EAAiBH,IAAjB,CAAV;AACS;AACJ,KA5DE;;AA8DH,QAAIiD,IAAJ,CAASA,IAAT,EAAe;AAAEkX,kBAAY,CAAClX,IAAb,GAAoBA,IAApB;AAA2B,KA9DzC;;AA+DH,QAAIA,IAAJ,GAAW;AAAE,aAAOkX,YAAY,CAAClX,IAApB;AAA2B,KA/DrC;;AAiEH,QAAIxD,MAAJ;AAAW;AAAU/b,QAArB,EAA2B;AACvBy2B,kBAAY,CAACvP,cAAb,CAA4BlnB,IAA5B;AACH,KAnEE;;AAqEH,QAAI+b,MAAJ,GAAa;AACT,aAAO0a,YAAP;AACH,KAvEE;;AAyEH0B,cAAU,EAAG,YAAW;AACpB,UAAIpc,MAAM,GAAG0a,YAAY,CAAClO,mBAAb,EAAb,CADoB,CAEpB;;;AACAmO,gBAAU,CAACrL,IAAX,CAAgBtP,MAAhB,EAAwBjC,KAAK,CAACW,SAAN,CAAgBqL,MAAxC;;AACA,UAAI2Q,YAAY,CAAClR,WAAjB,EAA8B;AAC1BuR,cAAM,CAACzL,IAAP,CAAYtP,MAAZ,EAAoBjC,KAAK,CAACW,SAAN,CAAgBqL,MAAhB,GAAyB4Q,UAAU,CAAC/3B,MAAxD;AACH;;AACD,UAAI83B,YAAY,CAACjR,aAAjB,EAAgC;AAC5BmR,gBAAQ,CAACtL,IAAT,CAActP,MAAd,EAAsBjC,KAAK,CAACW,SAAN,CAAgBqL,MAAhB,GAAyB4Q,UAAU,CAAC/3B,MAApC,GAA6C83B,YAAY,CAAClR,WAAhF,EAA6FoR,QAAQ,CAACh4B,MAAtG;AACH;;AACD,aAAOod,MAAP;AACH,KApFE;AAsFHxG,YAAQ,EAAG,YAAW;AAClB,aAAO,QACH,mBADG,GACmBmhB,UAAU,CAACnhB,QAAX,EADnB,GAC2C,OAD3C,GAEH,cAFG,IAEeqhB,YAAY,GAAGF,UAAU,CAACnhB,QAAX,GAAsB0C,OAAtB,CAA8B,KAA9B,EAAqC,EAArC,EAAyCe,KAAzC,CAA+C,GAA/C,EAAoDzZ,GAApD,EAAH,GAA+Dm3B,UAAU,CAACnhB,QAAX,GAAsByD,KAAtB,CAA4B,GAA5B,EAAiCzZ,GAAjC,EAF1F,IAEoI,OAFpI,GAGH,iBAHG,GAGiBo3B,QAAQ,CAACphB,QAAT,EAHjB,GAGuC,OAHvC,GAIH,oBAJG,GAIoBqhB,YAJpB,GAImC,KAJnC,GAKH,eALG,GAKeH,YAAY,CAAClhB,QAAb,GAAwB0C,OAAxB,CAAgC,MAAhC,EAAwC,MAAxC,EAAgDA,OAAhD,CAAwD,KAAxD,EAA+D,KAA/D,CALf,GAKwF,KALxF,GAMH,wBANG,IAMyBtY,KAAK,IAAIA,KAAK,CAAChB,MAAN,GAAgB,eAAzB,IAA4C,MANrE,IAM+E,KAN/E,GAOH,cAPG,IAOek4B,gBAAgB,IAAIA,gBAAgB,CAACl4B,MAAjB,GAA2B,eAA/C,IAAkE,MAPjF,IAO2F,KAP3F,GAQH,GARJ;AASH;AAhGE,GAAP;AAkGH,CA5RD,C;;;;;;;;;;;ACLA,IAAIsb,QAAQ,GAAGF,mBAAO,CAAC,yEAAD,CAAtB;AAAA,IACCwc,OAAO,GAAGxc,mBAAO,CAAC,6EAAD,CADlB;AAAA,IAECD,KAAK,GAAGC,mBAAO,CAAC,uEAAD,CAFhB;;AAIAJ,MAAM,CAACC,OAAP,GAAiB;AAAU;AAAiBja,KAA3B;AAAkC;AAAU2rI,SAA5C,EAAuD;AACvE,MAAIjzG,SAAS,GAAG,EAAhB;AAAA,MACCC,UAAU,GAAG,EADd;AAAA,MAEC3B,QAAQ,GAAG5b,MAAM,CAAC4D,KAAP,CAAa,CAAb,CAFZ;AAAA,MAGCtD,QAAQ,GAAG,EAHZ;AAAA,MAICV,EAAE,GAAGb,KAAK,CAACixH,UAAN,CAAiBhxH,OAAjB,EAJN;AAAA,MAKCa,QAAQ,GAAG,IALZ;AAAA,MAMC2d,UAAU,GAAG,IAAIhC,OAAO,CAACzN,UAAZ,EANd;;AAQA,MAAIwiH,SAAS,KAAKxxH,KAAK,CAACW,SAAN,CAAgBW,IAAlC,EAAwC;AACvC;AACAC,YAAQ,GAAG1b,KAAX;AACAib,YAAQ,GAAGD,EAAE,CAACW,YAAH,CAAgBD,QAAhB,CAAX;AACAod,kBAAc;AACd,GALD,MAKO,IAAI6yG,SAAS,KAAKxxH,KAAK,CAACW,SAAN,CAAgBQ,MAAlC,EAA0C;AAChD;AACAL,YAAQ,GAAGjb,KAAX;AACA84B,kBAAc;AACd,GAJM,MAIA,CACN;AACA;;AAED,WAASje,WAAT,GAAuB;AACtB8d,cAAU,GAAG,EAAb;AACAD,aAAS,GAAG,IAAI57B,KAAJ,CAAU87B,UAAU,CAACrP,WAArB,CAAZ,CAFsB,CAE0B;;AAChD,QAAIxrB,KAAK,GAAG66B,UAAU,CAAC5S,MAAvB,CAHsB,CAGU;;AAChC,SAAK,IAAInO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6gB,SAAS,CAAC15B,MAA9B,EAAsC6Y,CAAC,EAAvC,EAA2C;AAE1C,UAAIqT,GAAG,GAAGntB,KAAV;AAAA,UACCoV,KAAK,GAAG,IAAImH,QAAJ,CAAaW,QAAb,CADT;AAEA9H,WAAK,CAACiJ,MAAN,GAAenB,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAoBA,GAAG,IAAI/Q,KAAK,CAACW,SAAN,CAAgBqL,MAA3C,CAAf;AAEAhT,WAAK,CAACgJ,SAAN,GAAkBlB,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAoBA,GAAG,IAAI/X,KAAK,CAACiJ,MAAN,CAAauJ,cAAxC,CAAlB;;AAEA,UAAIxS,KAAK,CAACiJ,MAAN,CAAawJ,WAAjB,EAA8B;AAC7BzS,aAAK,CAACglB,KAAN,GAAcld,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAoBA,GAAG,IAAI/X,KAAK,CAACiJ,MAAN,CAAawJ,WAAxC,CAAd;AACA;;AAED,UAAIzS,KAAK,CAACiJ,MAAN,CAAayJ,aAAjB,EACC1S,KAAK,CAACoK,OAAN,GAAgBtC,QAAQ,CAACja,KAAT,CAAekqB,GAAf,EAAoBA,GAAG,GAAG/X,KAAK,CAACiJ,MAAN,CAAayJ,aAAvC,CAAhB;AAED9nB,WAAK,IAAIoV,KAAK,CAACiJ,MAAN,CAAa8J,eAAtB;AAEAwS,eAAS,CAAC7gB,CAAD,CAAT,GAAe1E,KAAf;AACAwlB,gBAAU,CAACxlB,KAAK,CAACgJ,SAAP,CAAV,GAA8BhJ,KAA9B;AACA;AACD;;AAED,WAAS2lB,cAAT,GAA0B;AACzB,QAAIjhB,CAAC,GAAGoD,QAAQ,CAACjc,MAAT,GAAkBmb,KAAK,CAACW,SAAN,CAAgB4O,MAA1C;AAAA,QAAkD;AACjD0O,KAAC,GAAG3wB,IAAI,CAACge,GAAL,CAAS,CAAT,EAAY5N,CAAC,GAAG,MAAhB,CADL;AAAA,QAC8B;AAC7BqhB,aAAS,GAAG,CAAC,CAFd,CADyB,CAGR;;AAEjB,SAAKrhB,CAAL,EAAQA,CAAC,IAAIugB,CAAb,EAAgBvgB,CAAC,EAAjB,EAAqB;AACpB,UAAIoD,QAAQ,CAACpD,CAAD,CAAR,KAAgB,IAApB,EAA0B,SADN,CACgB;;AACpC,UAAIoD,QAAQ,CAACyL,YAAT,CAAsB7O,CAAtB,MAA6BsC,KAAK,CAACW,SAAN,CAAgB6O,MAAjD,EAAyD;AAAE;AAC1DuP,iBAAS,GAAGrhB,CAAZ;AACA;AACA;AACD;;AACD,QAAI,CAAC,CAACqhB,SAAN,EACC,MAAM/e,KAAK,CAACyB,MAAN,CAAamX,cAAnB;AAED6F,cAAU,CAACrR,cAAX,CAA0BtM,QAAQ,CAACja,KAAT,CAAek4B,SAAf,EAA0BA,SAAS,GAAG/e,KAAK,CAACW,SAAN,CAAgB4O,MAAtD,CAA1B;;AACA,QAAIkP,UAAU,CAAC/S,aAAf,EAA8B;AAC7BmR,cAAQ,GAAG/b,QAAQ,CAACja,KAAT,CAAek4B,SAAS,GAAG/e,KAAK,CAACW,SAAN,CAAgB4O,MAA3C,CAAX;AACA;;AACD7O,eAAW;AACX;;AAED,SAAO;AACN;AACF;AACA;AACA;AACE,QAAI2F,OAAJ,GAAc;AACb,aAAOkY,SAAP;AACA,KAPK;;AASN;AACF;AACA;AACA;AACE,QAAInb,OAAJ,GAAc;AACb,aAAOyZ,QAAQ,CAACphB,QAAT,EAAP;AACA,KAfK;;AAgBN,QAAI2H,OAAJ,CAAYvF,GAAZ,EAAiB;AAChB4gB,gBAAU,CAAC/S,aAAX,GAA2B7N,GAAG,CAAChZ,MAA/B;AACAg4B,cAAQ,GAAGhf,GAAX;AACA,KAnBK;;AAqBN;AACF;AACA;AACA;AACA;AACA;AACEiE,YAAQ,EAAE;AAAU;AAAUE,aAApB,EAA+B;AACxC,aAAOwc,UAAU,CAACxc,SAAD,CAAV,IAAyB,IAAhC;AACA,KA7BK;;AA+BN;AACF;AACA;AACA;AACA;AACEmE,YAAQ,EAAE;AAAU;AAAYnN,SAAtB,EAA6B;AACtCulB,eAAS,CAAC76B,IAAV,CAAesV,KAAf;AACAwlB,gBAAU,CAACxlB,KAAK,CAACgJ,SAAP,CAAV,GAA8BhJ,KAA9B;AACAylB,gBAAU,CAACpP,YAAX,GAA0BkP,SAAS,CAAC15B,MAApC;AACA,KAxCK;;AA0CN;AACF;AACA;AACA;AACA;AACA;AACEqe,eAAW,EAAE;AAAU;AAAUlB,aAApB,EAA+B;AAC3C,UAAIhJ,KAAK,GAAGwlB,UAAU,CAACxc,SAAD,CAAtB;;AACA,UAAIhJ,KAAK,IAAIA,KAAK,CAAC+M,WAAnB,EAAgC;AAC/B,YAAIqZ,KAAK,GAAG,IAAZ;;AACA,aAAKnY,gBAAL,CAAsBjO,KAAtB,EAA6BjI,OAA7B,CAAqC,UAAUmW,KAAV,EAAiB;AACrD,cAAIA,KAAK,CAAClF,SAAN,KAAoBA,SAAxB,EAAmC;AAClCod,iBAAK,CAAClc,WAAN,CAAkBgE,KAAK,CAAClF,SAAxB;AACA;AACD,SAJD;AAKA;;AACDuc,eAAS,CAACv3B,MAAV,CAAiBu3B,SAAS,CAAC1xB,OAAV,CAAkBmM,KAAlB,CAAjB,EAA2C,CAA3C;AACA,aAAOwlB,UAAU,CAACxc,SAAD,CAAjB;AACAyc,gBAAU,CAACpP,YAAX,GAA0BkP,SAAS,CAAC15B,MAApC;AACA,KA7DK;;AA+DN;AACF;AACA;AACA;AACA;AACA;AACEoiB,oBAAgB,EAAE;AAAU;AAAYjO,SAAtB,EAA6B;AAC9C,UAAIA,KAAK,CAAC+M,WAAV,EAAuB;AACtB,YAAIxG,IAAI,GAAG,EAAX;AAAA,YACC1X,IAAI,GAAGmR,KAAK,CAACgJ,SADd;AAAA,YAECuO,GAAG,GAAG1oB,IAAI,CAAChD,MAFZ;AAIA05B,iBAAS,CAACxtB,OAAV,CAAkB,UAAUsuB,QAAV,EAAoB;AACrC,cAAIA,QAAQ,CAACrd,SAAT,CAAmB7E,MAAnB,CAA0B,CAA1B,EAA6BoT,GAA7B,MAAsC1oB,IAA1C,EAAgD;AAC/C0X,gBAAI,CAAC7b,IAAL,CAAU27B,QAAV;AACA;AACD,SAJD;AAKA,eAAO9f,IAAP;AACA;;AACD,aAAO,EAAP;AACA,KAnFK;;AAqFN;AACF;AACA;AACA;AACA;AACE4J,oBAAgB,EAAE,YAAY;AAC7B,UAAIoV,SAAS,CAAC15B,MAAV,GAAmB,CAAvB,EAA0B;AACzB05B,iBAAS,CAACl5B,IAAV,CAAe,UAAUJ,CAAV,EAAaC,CAAb,EAAgB;AAC9B,cAAIusI,KAAK,GAAGxsI,CAAC,CAAC+c,SAAF,CAAYkd,WAAZ,EAAZ;AACA,cAAIwyG,KAAK,GAAGxsI,CAAC,CAAC8c,SAAF,CAAYkd,WAAZ,EAAZ;;AACA,cAAIuyG,KAAK,GAAGC,KAAZ,EAAmB;AAClB,mBAAO,CAAC,CAAR;AACA;;AACD,cAAID,KAAK,GAAGC,KAAZ,EAAmB;AAClB,mBAAO,CAAP;AACA;;AACD,iBAAO,CAAP;AACA,SAVD;AAWA;;AAED,UAAIlyG,SAAS,GAAG,CAAhB;AAAA,UACCF,SAAS,GAAG,EADb;AAAA,UAECC,YAAY,GAAG,EAFhB;AAAA,UAGCE,MAAM,GAAG,CAHV;AAKAhB,gBAAU,CAACjW,IAAX,GAAkB,CAAlB;AACAiW,gBAAU,CAAC5S,MAAX,GAAoB,CAApB;AAEA0S,eAAS,CAACxtB,OAAV,CAAkB,UAAUiI,KAAV,EAAiB;AAClC;AACA,YAAIqkB,cAAc,GAAGrkB,KAAK,CAACklB,iBAAN,EAArB,CAFkC,CAGlC;;AACAllB,aAAK,CAACiJ,MAAN,CAAa4J,MAAb,GAAsB4T,MAAtB;AACA,YAAIpT,UAAU,GAAGrT,KAAK,CAACiJ,MAAN,CAAaqM,kBAAb,EAAjB;AACA,YAAIoR,YAAY,GAAG1mB,KAAK,CAAC8kB,YAAN,CAAmBj5B,MAAtC;AACA,YAAIm5B,KAAK,GAAGhlB,KAAK,CAACglB,KAAN,CAAYviB,QAAZ,EAAZ;AACA,YAAIkkB,UAAU,GAAG1e,MAAM,CAAC4D,KAAP,CAAa6a,YAAY,GAAG1B,KAAK,CAACn5B,MAAlC,CAAjB;AACAmU,aAAK,CAAC8kB,YAAN,CAAmBvM,IAAnB,CAAwBoO,UAAxB,EAAoC,CAApC;AACAA,kBAAU,CAACjR,IAAX,CAAgBsP,KAAhB,EAAuB0B,YAAvB;AAEA,YAAIE,UAAU,GAAGvT,UAAU,CAACxnB,MAAX,GAAoB86B,UAAU,CAAC96B,MAA/B,GAAwCw4B,cAAc,CAACx4B,MAAxE;AAEA46B,cAAM,IAAIG,UAAV;AAEAN,iBAAS,CAAC57B,IAAV,CAAe2oB,UAAf;AACAiT,iBAAS,CAAC57B,IAAV,CAAei8B,UAAf;AACAL,iBAAS,CAAC57B,IAAV,CAAe25B,cAAf;AAEA,YAAIwC,WAAW,GAAG7mB,KAAK,CAACqlB,UAAN,EAAlB;AACAkB,oBAAY,CAAC77B,IAAb,CAAkBm8B,WAAlB;AACApB,kBAAU,CAACjW,IAAX,IAAmBqX,WAAW,CAACh7B,MAA/B;AACA26B,iBAAS,IAAKI,UAAU,GAAGC,WAAW,CAACh7B,MAAvC;AACA,OAxBD;AA0BA26B,eAAS,IAAIf,UAAU,CAACnP,cAAxB,CAjD6B,CAiDW;AACxC;;AACAmP,gBAAU,CAAC5S,MAAX,GAAoB4T,MAApB;AAEAA,YAAM,GAAG,CAAT;AACA,UAAIK,SAAS,GAAG7e,MAAM,CAAC4D,KAAP,CAAa2a,SAAb,CAAhB;AACAF,eAAS,CAACvuB,OAAV,CAAkB,UAAU0S,OAAV,EAAmB;AACpCA,eAAO,CAAC8N,IAAR,CAAauO,SAAb,EAAwBL,MAAxB,EADoC,CACH;;AACjCA,cAAM,IAAIhc,OAAO,CAAC5e,MAAlB;AACA,OAHD;AAIA06B,kBAAY,CAACxuB,OAAb,CAAqB,UAAU0S,OAAV,EAAmB;AACvCA,eAAO,CAAC8N,IAAR,CAAauO,SAAb,EAAwBL,MAAxB,EADuC,CACN;;AACjCA,cAAM,IAAIhc,OAAO,CAAC5e,MAAlB;AACA,OAHD;AAKA,UAAIk7B,EAAE,GAAGtB,UAAU,CAACnO,QAAX,EAAT;;AACA,UAAIuM,QAAJ,EAAc;AACbA,gBAAQ,CAACtL,IAAT,CAAcwO,EAAd,EAAkB/f,KAAK,CAACW,SAAN,CAAgB4O,MAAlC,EADa,CAC8B;;AAC3C;;AAEDwQ,QAAE,CAACxO,IAAH,CAAQuO,SAAR,EAAmBL,MAAnB,EArE6B,CAqED;;AAE5B,aAAOK,SAAP;AACA,KAlKK;AAoKNpW,iBAAa,EAAE;AAAU;AAAYE,aAAtB;AAAiC;AAAYC,UAA7C;AAAqD;AAAYC,eAAjE;AAA8E;AAAYC,aAA1F,EAAqG;AACnH,UAAIwU,SAAS,CAAC15B,MAAV,GAAmB,CAAvB,EAA0B;AACzB05B,iBAAS,CAACl5B,IAAV,CAAe,UAAUJ,CAAV,EAAaC,CAAb,EAAgB;AAC9B,cAAIusI,KAAK,GAAGxsI,CAAC,CAAC+c,SAAF,CAAYkd,WAAZ,EAAZ;AACA,cAAIwyG,KAAK,GAAGxsI,CAAC,CAAC8c,SAAF,CAAYkd,WAAZ,EAAZ;;AACA,cAAIuyG,KAAK,GAAGC,KAAZ,EAAmB;AAClB,mBAAO,CAAC,CAAR;AACA;;AACD,cAAID,KAAK,GAAGC,KAAZ,EAAmB;AAClB,mBAAO,CAAP;AACA;;AACD,iBAAO,CAAP;AACA,SAVD;AAWA;;AAED,UAAIlyG,SAAS,GAAG,CAAhB;AAAA,UACCF,SAAS,GAAG,EADb;AAAA,UAECC,YAAY,GAAG,EAFhB;AAAA,UAGCE,MAAM,GAAG,CAHV;AAKAhB,gBAAU,CAACjW,IAAX,GAAkB,CAAlB;AACAiW,gBAAU,CAAC5S,MAAX,GAAoB,CAApB;;AAEA,UAAI0R,QAAQ,GAAG,UAAUgB,SAAV,EAAqB;AACnC,YAAI/Z,IAAI,GAAGzW,SAAS,CAACsvD,MAArB;;AACA,YAAI9+B,SAAS,CAAC15B,MAAd,EAAsB;AACrB,cAAImU,KAAK,GAAGulB,SAAS,CAAC94B,GAAV,EAAZ;AACA,cAAIoC,IAAI,GAAGmR,KAAK,CAACgJ,SAAN,GAAkBhJ,KAAK,CAACglB,KAAN,CAAYviB,QAAZ,EAA7B;AACA,cAAIqO,WAAJ,EAAiBA,WAAW,CAACjiB,IAAD,CAAX;AACjBmR,eAAK,CAACmlB,sBAAN,CAA6B,UAAUd,cAAV,EAA0B;AACtD,gBAAItT,SAAJ,EAAeA,SAAS,CAACliB,IAAD,CAAT;AAEfmR,iBAAK,CAACiJ,MAAN,CAAa4J,MAAb,GAAsB4T,MAAtB,CAHsD,CAItD;;AACA,gBAAIpT,UAAU,GAAGrT,KAAK,CAACiJ,MAAN,CAAaqM,kBAAb,EAAjB;AACA,gBAAIqR,UAAJ;;AACA,gBAAI;AACHA,wBAAU,GAAG1e,MAAM,CAAC4D,KAAP,CAAahd,IAAI,CAAChD,MAAlB,EAA0BgD,IAA1B,CAAb,CADG,CAC4C;AAC/C,aAFD,CAEE,OAAMsgB,CAAN,EAAQ;AACTwX,wBAAU,GAAG,IAAI1e,MAAJ,CAAWpZ,IAAX,CAAb,CADS,CACsB;AAC/B;;AACD,gBAAI+3B,UAAU,GAAGvT,UAAU,CAACxnB,MAAX,GAAoB86B,UAAU,CAAC96B,MAA/B,GAAwCw4B,cAAc,CAACx4B,MAAxE;AAEA46B,kBAAM,IAAIG,UAAV;AAEAN,qBAAS,CAAC57B,IAAV,CAAe2oB,UAAf;AACAiT,qBAAS,CAAC57B,IAAV,CAAei8B,UAAf;AACAL,qBAAS,CAAC57B,IAAV,CAAe25B,cAAf;AAEA,gBAAIwC,WAAW,GAAG7mB,KAAK,CAACqlB,UAAN,EAAlB;AACAkB,wBAAY,CAAC77B,IAAb,CAAkBm8B,WAAlB;AACApB,sBAAU,CAACjW,IAAX,IAAmBqX,WAAW,CAACh7B,MAA/B;AACA26B,qBAAS,IAAKI,UAAU,GAAGC,WAAW,CAACh7B,MAAvC;;AAEA,gBAAI05B,SAAS,CAAC15B,MAAd,EAAsB;AACrB2f,kBAAI,CAAC+Z,SAAD,CAAJ;AACA,aAFD,MAEO;AAGNiB,uBAAS,IAAIf,UAAU,CAACnP,cAAxB,CAHM,CAGkC;AACxC;;AACAmP,wBAAU,CAAC5S,MAAX,GAAoB4T,MAApB;AAEAA,oBAAM,GAAG,CAAT;AACA,kBAAIK,SAAS,GAAG7e,MAAM,CAAC4D,KAAP,CAAa2a,SAAb,CAAhB;AACAF,uBAAS,CAACvuB,OAAV,CAAkB,UAAU0S,OAAV,EAAmB;AACpCA,uBAAO,CAAC8N,IAAR,CAAauO,SAAb,EAAwBL,MAAxB,EADoC,CACH;;AACjCA,sBAAM,IAAIhc,OAAO,CAAC5e,MAAlB;AACA,eAHD;AAIA06B,0BAAY,CAACxuB,OAAb,CAAqB,UAAU0S,OAAV,EAAmB;AACvCA,uBAAO,CAAC8N,IAAR,CAAauO,SAAb,EAAwBL,MAAxB,EADuC,CACN;;AACjCA,sBAAM,IAAIhc,OAAO,CAAC5e,MAAlB;AACA,eAHD;AAKA,kBAAIk7B,EAAE,GAAGtB,UAAU,CAACnO,QAAX,EAAT;;AACA,kBAAIuM,QAAJ,EAAc;AACbA,wBAAQ,CAACtL,IAAT,CAAcwO,EAAd,EAAkB/f,KAAK,CAACW,SAAN,CAAgB4O,MAAlC,EADa,CAC8B;;AAC3C;;AAEDwQ,gBAAE,CAACxO,IAAH,CAAQuO,SAAR,EAAmBL,MAAnB,EAvBM,CAuBsB;;AAE5B7V,uBAAS,CAACkW,SAAD,CAAT;AACA;AACD,WAtDD;AAuDA;AACD,OA9DD;;AAgEAvC,cAAQ,CAACgB,SAAD,CAAR;AACA;AA5PK,GAAP;AA8PA,CApUD,C;;;;;;;;;;;;;yEC4B6BywC;AAG5B,SAAO;AAKNA,SAPDA,IAAMA,KAAO,IAAIt8D,GAAJ,EAEN;AAaNye,kBAAYnW,CAAZmW,EAA6BwgH,CAA7BxgH,EAA6BwgH;AAC5B,UAAMC,IAAW5iE,EAAIluE,GAAJkuE,CAAQh0D,CAARg0D,CAAjB;AACc4iE,WAAYA,EAASluI,IAATkuI,CAAcD,CAAdC,CAAZA,IAEb5iE,EAAI3qE,GAAJ2qE,CAAQh0D,CAARg0D,EAAc,CAAC2iE,CAAD,CAAd3iE,CAFa4iE;AAEED,KAjBX;AA2BNx1G,mBAAanhB,CAAbmhB,EAA8Bw1G,CAA9Bx1G,EAA8Bw1G;AAC7B,UAAMC,IAAW5iE,EAAIluE,GAAJkuE,CAAQh0D,CAARg0D,CAAjB;AACI4iE,WACHA,EAAS5qI,MAAT4qI,CAAgBA,EAAS/kI,OAAT+kI,CAAiBD,CAAjBC,MAA8B,CAA9CA,EAAiD,CAAjDA,CADGA;AAC8C,KA9B7C;AA4CNrlG,oBAAcvxB,CAAduxB,EAA+BslG,CAA/BtlG,EAA+BslG;AAAAA,OAC5B7iE,EAAIluE,GAAJkuE,CAAQh0D,CAARg0D,KAAiB,EADW6iE,EACchrI,KADdgrI,GACsBjwI,GADtBiwI,CAC0B,UAACF,CAAD,EAACA;AAAcA,UAAQE,CAARF;AAAQE,OADjDA,GACiDA,CAC7E7iE,EAAIluE,GAAJkuE,CAAQ,GAARA,KAAgB,EAD6D6iE,EAC5BhrI,KAD4BgrI,GACpBjwI,GADoBiwI,CAChB,UAACF,CAAD,EAACA;AAAcA,UAAQ32H,CAAR22H,EAAcE,CAAdF;AAAcE,OADbA,CADjDA;AAE8DA;AA9CvF,GAAP;AA8C8FA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjF/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASC,UAAT,CAAoBvyH,IAApB,EAA0B;AACxB,SAAOA,IAAI,CAAC,CAAEjS,IAAI,CAACqlB,MAAL,KAAgBpT,IAAI,CAAC1a,MAAtB,GAAgC,CAAjC,IAAsC0a,IAAI,CAAC1a,MAA5C,CAAX;AACD;;AAED,SAASiY,MAAT,CAAgB7e,KAAhB,EAAuBS,GAAvB,EAA4B;AAC1B,SAAOT,KAAK,GAAG,CAACS,GAAG,GAAGT,KAAP,IAAgBqP,IAAI,CAACqlB,MAAL,EAA/B;AACD;;AAED,SAASo/G,OAAT,CAAiB9zI,KAAjB,EAAwBS,GAAxB,EAA6B;AAC3B,SAAOoe,MAAM,CAAC7e,KAAD,EAAQS,GAAR,CAAN,GAAqB,CAA5B;AACD;;AAED,SAASszI,OAAT,CAAiB1tH,KAAjB,EAAwBujB,KAAxB,EAA+B;AAC7B,MAAI9lB,IAAI,GAAGuC,KAAK,CAAC,CAAD,CAAhB;;AACA,OAAK,IAAI5G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4G,KAAK,CAACzf,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACrC,QAAI4G,KAAK,CAAC5G,CAAD,CAAL,CAASmqB,KAAT,IAAkB9lB,IAAI,CAAC8lB,KAAD,CAA1B,EAAmC;AACjC9lB,UAAI,GAAGuC,KAAK,CAAC5G,CAAD,CAAZ;AACD;AACF;;AACD,SAAOqE,IAAP;AACD;;AAED,SAASkwH,qBAAT,CAA+B9G,UAA/B,EAA2C;AACzC,SAAOA,UAAU,CAAC5wH,IAAX,CAAgB4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,mBAAhC,EAAqDq+H,EAA5D;AACD;;AAED,SAASgM,mBAAT,CAA6BnH,MAA7B,EAAqCoH,MAArC,EAA6C;AAC3C,MAAIC,WAAW,GAAGrH,MAAM,CAACxwH,IAAP,CAAYuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,KAAW,SAA5B,CAAlB;AACA,MAAIwqI,aAAa,GAAGtH,MAAM,CAACzlI,MAAP,CAClBwe,CAAC,IAAIA,CAAC,CAACjc,IAAF,KAAW,SAAX,IAAwBic,CAAC,CAACjc,IAAF,KAAW,kBADtB,CAApB;AAGA,MAAIyqI,YAAY,GAAGH,MAAM,CAAC53H,IAAP,CAAY4lB,CAAC,IAAIA,CAAC,CAACwqG,SAAF,KAAgB,CAAjC,CAAnB;AACA,MAAI4H,WAAW,GAAGJ,MAAM,CAAC53H,IAAP,CAAY4lB,CAAC,IAAIA,CAAC,CAACwqG,SAAF,KAAgB,CAAjC,CAAlB;AACA,MAAIQ,UAAU,GAAGmH,YAAY,CAACnH,UAAb,CAAwB7lI,MAAxB,CACf6tB,CAAC,IACC,CACE,MADF,EAEE,aAFF,EAGE,eAHF,EAIE,UAJF,EAKE,SALF,EAME,MANF,EAOE,SAPF,EAQEtmB,OARF,CAQUsmB,CAAC,CAACtrB,IARZ,MAQsB,CAAC,CAVV,CAAjB;AAaA,SAAO;AACLuqI,eADK;AAELC,iBAAa,EAAEA,aAAa,CAAC/sI,MAAd,CAAqBwe,CAAC,IAAI,CAACA,CAAC,CAAC0uH,IAA7B,CAFV;AAGLD,eAHK;AAILE,qBAAiB,EAAEtH,UAJd;AAKLuH,kBAAc,EAAEP,MAAM,CAAC53H,IAAP,CAAY4lB,CAAC,IAAIA,CAAC,CAACt4B,IAAF,KAAW,OAA5B,EAAqCsjI,UALhD;AAMLwH,cAAU,EAAEN,aAAa,CAAC/sI,MAAd,CAAqBwe,CAAC,IAAIA,CAAC,CAAC0uH,IAA5B;AANP,GAAP;AAQD;;AAED,eAAeI,mBAAf,CAAmChB,QAAnC,EAA6CtK,OAA7C,EAAsDyD,MAAtD,EAA8DoH,MAA9D,EAAsE;AACpE,6BAOID,mBAAmB,CAACnH,MAAD,EAASoH,MAAT,CAPvB;AAAA,MACEC,WADF,wBACEA,WADF;AAAA,MAEEC,aAFF,wBAEEA,aAFF;AAAA,MAGEE,WAHF,wBAGEA,WAHF;AAAA,MAIEE,iBAJF,wBAIEA,iBAJF;AAAA,MAKEC,cALF,wBAKEA,cALF;AAAA,MAMEC,UANF,wBAMEA,UANF;;AAQA,MAAIE,eAAe,GAAGd,OAAO,CAAC,GAAD,EAAM,GAAN,CAA7B;AAEA,MAAIlL,YAAY,GAAG,EAAnB;;AACA,OAAK,IAAInpH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm1H,eAApB,EAAqCn1H,CAAC,EAAtC,EAA0C;AACxC,QAAIirH,KAAJ;;AACA,QAAIr7H,IAAI,CAACqlB,MAAL,KAAgB,IAApB,EAA0B;AACxBg2G,WAAK,GAAGyJ,WAAR;AACD,KAFD,MAEO;AACLzJ,WAAK,GAAGmJ,UAAU,CAACO,aAAD,CAAlB;AACD;;AAED,QAAI/J,QAAJ;;AACA,QAAIK,KAAK,CAAC9gI,IAAN,KAAe,SAAnB,EAA8B;AAC5BygI,cAAQ,GAAGiK,WAAW,CAACpH,UAAZ,CAAuB5wH,IAAvB,CAA4B4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,QAA5C,CAAX;AACD,KAFD,MAEO;AACLygI,cAAQ,GAAGwJ,UAAU,CAACW,iBAAD,CAArB;AACD;;AAED,QAAI3oI,MAAJ;;AACA,QAAI6+H,KAAK,CAAC9gI,IAAN,KAAe,SAAnB,EAA8B;AAC5BiC,YAAM,GAAGioI,OAAO,CAAC,KAAD,EAAQ,KAAR,CAAhB;AACD,KAFD,MAEO;AACLjoI,YAAM,GAAGioI,OAAO,CAAC,CAAD,EAAIzkI,IAAI,CAACqlB,MAAL,KAAgB,IAAhB,GAAuB,CAAC,IAAxB,GAA+B,CAAC,GAApC,CAAhB;AACD;;AAED,QAAI84G,WAAW,GAAG;AAChB3hI,YADgB;AAEhB6+H,WAAK,EAAEA,KAAK,CAACzC,EAFG;AAGhBoB,aAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,UAAI,EAAEiyI,sDAAA,CAAmBA,yDAAA,EAAnB,EAA6Cp1H,CAAC,GAAG,CAAL,GAAU,CAAtD,CAJU;AAKhB4qH,cAAQ,EAAEA,QAAQ,CAACpC;AALH,KAAlB;AAOAW,gBAAY,CAACnjI,IAAb,CAAkB+nI,WAAlB;;AAEA,QAAIn+H,IAAI,CAACqlB,MAAL,KAAgB,GAApB,EAAyB;AACvB,UAAI1tB,CAAC,GAAIwmI,WAAW,CAAC3hI,MAAZ,GAAqB,CAAtB,GAA2B,CAAnC;;AACA,UAAIipI,IAAI,GAAG,MACTpK,KAAK,KAAKyJ,WAAV,GACIG,WAAW,CAACpH,UAAZ,CAAuB5wH,IAAvB,CAA4B4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,QAA5C,EAAsDq+H,EAD1D,GAEI4L,UAAU,CAACW,iBAAD,CAAV,CAA8BvM,EAHpC;;AAIAuF,iBAAW,CAACU,eAAZ,GAA8B,CAC5B;AAAEriI,cAAM,EAAE7E,CAAV;AAAaqjI,gBAAQ,EAAEyK,IAAI;AAA3B,OAD4B,EAE5B;AAAEjpI,cAAM,EAAE7E,CAAV;AAAaqjI,gBAAQ,EAAEyK,IAAI;AAA3B,OAF4B,EAG5B;AACEjpI,cAAM,EAAE2hI,WAAW,CAAC3hI,MAAZ,GAAqB7E,CAAC,GAAG,CADnC;AAEEqjI,gBAAQ,EAAEyK,IAAI;AAFhB,OAH4B,CAA9B;AAQD;AACF;;AAED,MAAIpG,aAAa,GAAGmG,4DAAA,CAClBjM,YAAY,CAACA,YAAY,CAAChiI,MAAb,GAAsB,CAAvB,CAAZ,CAAsChE,IADpB,CAApB;AAGA,MAAImV,MAAM,GAAG88H,6DAAA,CACXnG,aADW,EAEXmG,2DAAA,EAFW,CAAb;AAIA,MAAIl6H,UAAU,GAAGk6H,yDAAA,EAAjB;;AACA,OAAK,IAAI1pI,KAAT,IAAkB4M,MAAlB,EAA0B;AACxB,QAAInV,IAAI,GAAGiyI,sDAAA,CAAmB1pI,KAAnB,EAA0B,IAA1B,CAAX;;AACA,QAAI0pI,uDAAA,CAAoBjyI,IAApB,EAA0B+X,UAA1B,CAAJ,EAA2C;AACzCiuH,kBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,cAAM,EAAE,CAAC,KADO;AAEhB6+H,aAAK,EAAEgK,UAAU,CAACp4H,IAAX,CAAgBuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,CAAOq3B,WAAP,GAAqB5oB,QAArB,CAA8B,OAA9B,CAArB,EAA6D4vH,EAFpD;AAGhBoB,eAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,YAJgB;AAKhBynI,gBAAQ,EAAEoK,cAAc,CAACn4H,IAAf,CAAoB4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,OAApC,EAA6Cq+H;AALvC,OAAlB;AAOD;;AAEDrlI,QAAI,GAAGiyI,sDAAA,CAAmB1pI,KAAnB,EAA0B,IAA1B,CAAP;;AACA,QAAI0pI,uDAAA,CAAoBjyI,IAApB,EAA0B+X,UAA1B,CAAJ,EAA2C;AACzCiuH,kBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,cAAM,EAAE,CAAC,IADO;AAEhB6+H,aAAK,EAAEgK,UAAU,CAACp4H,IAAX,CAAgBuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,CAAOq3B,WAAP,GAAqB5oB,QAArB,CAA8B,OAA9B,CAArB,EAA6D4vH,EAFpD;AAGhBoB,eAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,YAJgB;AAKhBynI,gBAAQ,EAAEoK,cAAc,CAACn4H,IAAf,CAAoB4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,OAApC,EAA6Cq+H;AALvC,OAAlB;AAOD;;AAEDrlI,QAAI,GAAGiyI,sDAAA,CAAmB1pI,KAAnB,EAA0B,GAA1B,CAAP;;AACA,QAAI0pI,uDAAA,CAAoBjyI,IAApB,EAA0B+X,UAA1B,CAAJ,EAA2C;AACzCiuH,kBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,cAAM,EAAE,CAAC,MADO;AAEhB6+H,aAAK,EAAEgK,UAAU,CAACp4H,IAAX,CAAgBuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,CAAOq3B,WAAP,GAAqB5oB,QAArB,CAA8B,OAA9B,CAArB,EAA6D4vH,EAFpD;AAGhBoB,eAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,YAJgB;AAKhBynI,gBAAQ,EAAEoK,cAAc,CAACn4H,IAAf,CAAoB4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,UAApC,EAAgDq+H;AAL1C,OAAlB;AAOD;;AAEDrlI,QAAI,GAAGiyI,sDAAA,CAAmB1pI,KAAnB,EAA0B,IAA1B,CAAP;;AACA,QAAI0pI,uDAAA,CAAoBjyI,IAApB,EAA0B+X,UAA1B,CAAJ,EAA2C;AACzCiuH,kBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,cAAM,EAAE,CAAC,IADO;AAEhB6+H,aAAK,EAAEgK,UAAU,CAACp4H,IAAX,CAAgBuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,CAAOq3B,WAAP,GAAqB5oB,QAArB,CAA8B,UAA9B,CAArB,EACJ4vH,EAHa;AAIhBoB,eAAO,EAAEA,OAAO,CAACpB,EAJD;AAKhBrlI,YALgB;AAMhBynI,gBAAQ,EAAEoK,cAAc,CAACn4H,IAAf,CAAoB4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,UAApC,EAAgDq+H;AAN1C,OAAlB;AAQD;;AAEDrlI,QAAI,GAAGiyI,sDAAA,CAAmB1pI,KAAnB,EAA0B,IAA1B,CAAP;;AACA,QAAI0pI,uDAAA,CAAoBjyI,IAApB,EAA0B+X,UAA1B,CAAJ,EAA2C;AACzCiuH,kBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,cAAM,EAAE,CAAC,IADO;AAEhB6+H,aAAK,EAAEgK,UAAU,CAACp4H,IAAX,CAAgBuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,CAAOq3B,WAAP,GAAqB5oB,QAArB,CAA8B,UAA9B,CAArB,EACJ4vH,EAHa;AAIhBoB,eAAO,EAAEA,OAAO,CAACpB,EAJD;AAKhBrlI,YALgB;AAMhBynI,gBAAQ,EAAEoK,cAAc,CAACn4H,IAAf,CAAoB4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,MAApC,EAA4Cq+H;AANtC,OAAlB;AAQD;AACF;;AAED,MAAI8M,YAAY,GAAG,IAAnB;AACAnM,cAAY,CAAC91H,OAAb,CAAqBmhB,CAAC,IAAI;AACxB,QAAI8gH,YAAY,IAAI,IAAhB,IAAwB9gH,CAAC,CAACrxB,IAAF,GAASmyI,YAArC,EAAmD;AACjDA,kBAAY,GAAG9gH,CAAC,CAACrxB,IAAjB;AACD;AACF,GAJD;AAMAgmI,cAAY,CAAC78H,OAAb,CAAqB;AACnBF,UAAM,EAAE,MADW;AAEnB6+H,SAAK,EAAEoC,MAAM,CAACxwH,IAAP,CAAYuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,KAAW,kBAA5B,EAAgDq+H,EAFpC;AAGnBoB,WAAO,EAAEA,OAAO,CAACpB,EAHE;AAInBrlI,QAAI,EAAEmyI,YAJa;AAKnB1K,YAAQ,EAAE2J,qBAAqB,CAACM,WAAW,CAACpH,UAAb,CALZ;AAMnB8H,yBAAqB,EAAE;AANJ,GAArB;AASA,SAAOtM,6EAAe,CAACW,OAAO,CAACpB,EAAT,EAAaW,YAAb,CAAtB;AACD;;AAED,eAAeqM,YAAf,CAA4BtB,QAA5B,EAAsCtK,OAAtC,EAA+CyD,MAA/C,EAAuDoH,MAAvD,EAA+D;AAC7D,8BAKID,mBAAmB,CAACnH,MAAD,EAASoH,MAAT,CALvB;AAAA,MACEC,WADF,yBACEA,WADF;AAAA,MAEEC,aAFF,yBAEEA,aAFF;AAAA,MAGEE,WAHF,yBAGEA,WAHF;AAAA,MAIEE,iBAJF,yBAIEA,iBAJF;;AAMA,MAAII,eAAe,GAAGd,OAAO,CAAC,EAAD,EAAK,EAAL,CAA7B;AAEA,MAAIlL,YAAY,GAAG,EAAnB;;AACA,OAAK,IAAInpH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm1H,eAApB,EAAqCn1H,CAAC,EAAtC,EAA0C;AACxC,QAAIirH,KAAJ;;AACA,QAAIr7H,IAAI,CAACqlB,MAAL,KAAgB,IAApB,EAA0B;AACxBg2G,WAAK,GAAGyJ,WAAR;AACD,KAFD,MAEO;AACLzJ,WAAK,GAAGmJ,UAAU,CAACO,aAAD,CAAlB;AACD;;AAED,QAAI/J,QAAJ;;AACA,QAAIK,KAAK,CAAC9gI,IAAN,KAAe,SAAnB,EAA8B;AAC5BygI,cAAQ,GAAGiK,WAAW,CAACpH,UAAZ,CAAuB5wH,IAAvB,CAA4B4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,QAA5C,CAAX;AACD,KAFD,MAEO;AACLygI,cAAQ,GAAGwJ,UAAU,CAACW,iBAAD,CAArB;AACD;;AAED,QAAI3oI,MAAM,GACR6+H,KAAK,CAAC9gI,IAAN,KAAe,SAAf,GAA2BkqI,OAAO,CAAC,KAAD,EAAQ,KAAR,CAAlC,GAAmDA,OAAO,CAAC,CAAD,EAAI,CAAC,KAAL,CAD5D;AAGAlL,gBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,YADgB;AAEhB6+H,WAAK,EAAEA,KAAK,CAACzC,EAFG;AAGhBoB,aAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,UAAI,EAAEiyI,sDAAA,CAAmBA,yDAAA,EAAnB,EAA6Cp1H,CAAC,GAAG,CAAL,GAAU,CAAtD,CAJU;AAKhB4qH,cAAQ,EAAEA,QAAQ,CAACpC;AALH,KAAlB;AAOD;;AAEDW,cAAY,CAAC78H,OAAb,CAAqB;AACnBF,UAAM,EAAEioI,OAAO,CAAC,KAAD,EAAQ,MAAR,CADI;AAEnBpJ,SAAK,EAAEoC,MAAM,CAACxwH,IAAP,CAAYuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,KAAW,kBAA5B,EAAgDq+H,EAFpC;AAGnBoB,WAAO,EAAEA,OAAO,CAACpB,EAHE;AAInBrlI,QAAI,EAAEgmI,YAAY,CAACA,YAAY,CAAChiI,MAAb,GAAsB,CAAvB,CAAZ,CAAsChE,IAJzB;AAKnBynI,YAAQ,EAAE2J,qBAAqB,CAACM,WAAW,CAACpH,UAAb,CALZ;AAMnB8H,yBAAqB,EAAE;AANJ,GAArB;AASA,QAAMrB,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAC1CuB,SAAK,EAAEtM,YADmC;AAE1CuM,YAAQ,EAAE;AAFgC,GAAtC,CAAN;AAID;;AAED,eAAeC,cAAf,CAA8BzB,QAA9B,EAAwCtK,OAAxC,EAAiDyD,MAAjD,EAAyDoH,MAAzD,EAAiE;AAC/D,8BAKID,mBAAmB,CAACnH,MAAD,EAASoH,MAAT,CALvB;AAAA,MACEC,WADF,yBACEA,WADF;AAAA,MAEEC,aAFF,yBAEEA,aAFF;AAAA,MAGEE,WAHF,yBAGEA,WAHF;AAAA,MAIEE,iBAJF,yBAIEA,iBAJF;;AAOA,MAAII,eAAe,GAAGd,OAAO,CAAC,EAAD,EAAK,EAAL,CAA7B;AAEA,MAAIlL,YAAY,GAAG,EAAnB;;AACA,OAAK,IAAInpH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm1H,eAApB,EAAqCn1H,CAAC,EAAtC,EAA0C;AACxC,QAAIirH,KAAK,GAAGyJ,WAAZ;AACA,QAAI9J,QAAQ,GAAGiK,WAAW,CAACpH,UAAZ,CAAuB5wH,IAAvB,CAA4B4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,QAA5C,CAAf;AAEA,QAAIiC,MAAM,GAAGioI,OAAO,CAAC,KAAD,EAAQ,KAAR,CAApB;AAEAlL,gBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,YADgB;AAEhB6+H,WAAK,EAAEA,KAAK,CAACzC,EAFG;AAGhBoB,aAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,UAAI,EAAEiyI,sDAAA,CAAmBA,yDAAA,EAAnB,EAA4Cf,OAAO,CAAC,EAAD,EAAK,GAAL,CAAnD,CAJU;AAKhBzJ,cAAQ,EAAEA,QAAQ,CAACpC;AALH,KAAlB;AAOD;;AAEDW,cAAY,CAAC78H,OAAb,CAAqB;AACnBF,UAAM,EAAEioI,OAAO,CAAC,KAAD,EAAQ,KAAR,CADI;AAEnBpJ,SAAK,EAAEoC,MAAM,CAACxwH,IAAP,CAAYuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,KAAW,kBAA5B,EAAgDq+H,EAFpC;AAGnBoB,WAAO,EAAEA,OAAO,CAACpB,EAHE;AAInBrlI,QAAI,EAAEmxI,OAAO,CAACnL,YAAD,EAAe,MAAf,CAAP,CAA8BhmI,IAJjB;AAKnBynI,YAAQ,EAAE2J,qBAAqB,CAACM,WAAW,CAACpH,UAAb,CALZ;AAMnB8H,yBAAqB,EAAE;AANJ,GAArB;AASA,QAAMrB,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAC1CuB,SAAK,EAAEtM,YADmC;AAE1CuM,YAAQ,EAAE;AAFgC,GAAtC,CAAN;AAID;;AAED,eAAeE,WAAf,CAA2B1B,QAA3B,EAAqCtK,OAArC,EAA8CyD,MAA9C,EAAsDoH,MAAtD,EAA8D;AAC5D,8BAKID,mBAAmB,CAACnH,MAAD,EAASoH,MAAT,CALvB;AAAA,MACEC,WADF,yBACEA,WADF;AAAA,MAEEC,aAFF,yBAEEA,aAFF;AAAA,MAGEE,WAHF,yBAGEA,WAHF;AAAA,MAIEE,iBAJF,yBAIEA,iBAJF;;AAOA,MAAII,eAAe,GAAGd,OAAO,CAAC,EAAD,EAAK,EAAL,CAA7B;AAEA,MAAIlL,YAAY,GAAG,EAAnB;;AACA,OAAK,IAAInpH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm1H,eAApB,EAAqCn1H,CAAC,EAAtC,EAA0C;AACxC,QAAIirH,KAAJ;;AACA,QAAIr7H,IAAI,CAACqlB,MAAL,KAAgB,GAApB,EAAyB;AACvBg2G,WAAK,GAAGyJ,WAAR;AACD,KAFD,MAEO;AACLzJ,WAAK,GAAGmJ,UAAU,CAACO,aAAD,CAAlB;AACD;;AACD,QAAI/J,QAAQ,GACVK,KAAK,KAAKyJ,WAAV,GACIG,WAAW,CAACpH,UAAZ,CAAuB5wH,IAAvB,CAA4B4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,QAA5C,CADJ,GAEIiqI,UAAU,CAACW,iBAAD,CAHhB;AAIA,QAAI3oI,MAAM,GACR6+H,KAAK,KAAKyJ,WAAV,GAAwBL,OAAO,CAAC,KAAD,EAAQ,KAAR,CAA/B,GAAgDA,OAAO,CAAC,CAAC,KAAF,EAAS,CAAC,IAAV,CADzD;AAGAlL,gBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,YADgB;AAEhB6+H,WAAK,EAAEA,KAAK,CAACzC,EAFG;AAGhBoB,aAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,UAAI,EAAEiyI,sDAAA,CAAmBA,yDAAA,EAAnB,EAA6Cp1H,CAAC,GAAG,CAAL,GAAU,CAAtD,CAJU;AAKhB4qH,cAAQ,EAAEA,QAAQ,CAACpC;AALH,KAAlB;AAOD;;AAEDW,cAAY,CAAC78H,OAAb,CAAqB;AACnBF,UAAM,EAAE,KADW;AAEnB6+H,SAAK,EAAEoC,MAAM,CAACxwH,IAAP,CAAYuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,KAAW,kBAA5B,EAAgDq+H,EAFpC;AAGnBoB,WAAO,EAAEA,OAAO,CAACpB,EAHE;AAInBrlI,QAAI,EAAEgmI,YAAY,CAACA,YAAY,CAAChiI,MAAb,GAAsB,CAAvB,CAAZ,CAAsChE,IAJzB;AAKnBynI,YAAQ,EAAE2J,qBAAqB,CAACM,WAAW,CAACpH,UAAb,CALZ;AAMnB8H,yBAAqB,EAAE;AANJ,GAArB;AASA,QAAMrB,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAC1CuB,SAAK,EAAEtM,YADmC;AAE1CuM,YAAQ,EAAE;AAFgC,GAAtC,CAAN;AAID;;AAED,eAAeG,YAAf,CAA4B3B,QAA5B,EAAsCtK,OAAtC,EAA+CyD,MAA/C,EAAuDoH,MAAvD,EAA+D;AAC7D,8BAKID,mBAAmB,CAACnH,MAAD,EAASoH,MAAT,CALvB;AAAA,MACEC,WADF,yBACEA,WADF;AAAA,MAEEC,aAFF,yBAEEA,aAFF;AAAA,MAGEE,WAHF,yBAGEA,WAHF;AAAA,MAIEE,iBAJF,yBAIEA,iBAJF;;AAOA,MAAII,eAAe,GAAGd,OAAO,CAAC,CAAD,EAAI,EAAJ,CAA7B;AACA,MAAIjoI,MAAM,GAAGioI,OAAO,CAAC,MAAD,EAAS,MAAT,CAApB;AACA,MAAIzJ,QAAQ,GAAGiK,WAAW,CAACpH,UAAZ,CAAuB5wH,IAAvB,CAA4B4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,QAA5C,CAAf;AAEA,MAAIg/H,YAAY,GAAG,CACjB;AACE/8H,UAAM,EAAEioI,OAAO,CAAC,CAAC,IAAF,EAAQ,CAAC,IAAT,CAAP,GAAwB,GAAxB,GAA8B,GADxC;AAEEpJ,SAAK,EAAEoC,MAAM,CAACxwH,IAAP,CAAYuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,KAAW,kBAA5B,EAAgDq+H,EAFzD;AAGEoB,WAAO,EAAEA,OAAO,CAACpB,EAHnB;AAIErlI,QAAI,EACFiyI,wDAAA,CAAqBA,yDAAA,EAArB,EAA8CD,eAA9C,IAAiE,KALrE;AAMEvK,YAAQ,EAAE2J,qBAAqB,CAACM,WAAW,CAACpH,UAAb,CANjC;AAOE8H,yBAAqB,EAAE;AAPzB,GADiB,CAAnB;;AAWA,OAAK,IAAIv1H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm1H,eAApB,EAAqCn1H,CAAC,EAAtC,EAA0C;AACxC,QAAIirH,KAAK,GAAGyJ,WAAZ;AAEAvL,gBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,YADgB;AAEhB6+H,WAAK,EAAEA,KAAK,CAACzC,EAFG;AAGhBoB,aAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,UAAI,EAAEiyI,wDAAA,CAAqBA,yDAAA,EAArB,EAA8Cp1H,CAA9C,IAAmD,KAJzC;AAKhB4qH,cAAQ,EAAEA,QAAQ,CAACpC,EALH;AAMhB+M,2BAAqB,EAAE;AANP,KAAlB;AAQD;;AAED,QAAMrB,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAC1CuB,SAAK,EAAEtM,YADmC;AAE1CuM,YAAQ,EAAE;AAFgC,GAAtC,CAAN;AAID;;AAED,eAAeI,SAAf,CAAyB5B,QAAzB,EAAmCtK,OAAnC,EAA4CyD,MAA5C,EAAoDoH,MAApD,EAA4D;AAC1D,8BAKID,mBAAmB,CAACnH,MAAD,EAASoH,MAAT,CALvB;AAAA,MACEC,WADF,yBACEA,WADF;AAAA,MAEEC,aAFF,yBAEEA,aAFF;AAAA,MAGEE,WAHF,yBAGEA,WAHF;AAAA,MAIEE,iBAJF,yBAIEA,iBAJF;;AAOA,MAAII,eAAe,GAAGd,OAAO,CAAC,CAAD,EAAI,CAAJ,CAA7B;AACA,MAAIzJ,QAAQ,GAAGiK,WAAW,CAACpH,UAAZ,CAAuB5wH,IAAvB,CAA4B4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAW,QAA5C,CAAf;AAEA,MAAIg/H,YAAY,GAAG,CACjB;AACE/8H,UAAM,EAAEioI,OAAO,CAAC,IAAD,EAAO,IAAP,CAAP,GAAsB,GAAtB,GAA4B,GADtC;AAEEpJ,SAAK,EAAEoC,MAAM,CAACxwH,IAAP,CAAYuJ,CAAC,IAAIA,CAAC,CAACjc,IAAF,KAAW,kBAA5B,EAAgDq+H,EAFzD;AAGEoB,WAAO,EAAEA,OAAO,CAACpB,EAHnB;AAIErlI,QAAI,EACFiyI,wDAAA,CAAqBA,yDAAA,EAArB,EAA8CD,eAA9C,IAAiE,KALrE;AAMEvK,YAAQ,EAAE2J,qBAAqB,CAACM,WAAW,CAACpH,UAAb,CANjC;AAOE8H,yBAAqB,EAAE;AAPzB,GADiB,CAAnB;;AAWA,OAAK,IAAIv1H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm1H,eAApB,EAAqCn1H,CAAC,EAAtC,EAA0C;AACxC,QAAIirH,KAAK,GAAGyJ,WAAZ;AACA,QAAItoI,MAAM,GAAGioI,OAAO,CAAC,CAAD,EAAI,CAAJ,CAAP,GAAgB,GAAhB,GAAsB,GAAnC;AAEAlL,gBAAY,CAACnjI,IAAb,CAAkB;AAChBoG,YADgB;AAEhB6+H,WAAK,EAAEA,KAAK,CAACzC,EAFG;AAGhBoB,aAAO,EAAEA,OAAO,CAACpB,EAHD;AAIhBrlI,UAAI,EAAEiyI,wDAAA,CAAqBA,yDAAA,EAArB,EAA8Cp1H,CAA9C,IAAmD,KAJzC;AAKhB4qH,cAAQ,EAAEA,QAAQ,CAACpC;AALH,KAAlB;AAOD;;AAED,QAAM0L,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAC1CuB,SAAK,EAAEtM,YADmC;AAE1CuM,YAAQ,EAAE;AAFgC,GAAtC,CAAN;AAID;;AAED,eAAeK,YAAf,CAA4B3J,QAA5B,EAAsCiB,MAAtC,EAA8CoH,MAA9C,EAAsD;AACpD,MAAIuB,cAAc,GAAG5J,QAAQ,CAACvvH,IAAT,CAActV,CAAC,IAAKA,CAAC,CAAC4C,IAAF,GAAS,iBAA7B,CAArB;AACA,MAAImrI,YAAY,GAAG,CAAC,MAAM3C,gDAAA,CACvB;AACL,0EAF4B,CAAP,EAGhBxvI,IAHH;AAIA,MAAI8yI,mBAAmB,GAAG,CAAC,MAAMtD,gDAAA,CAC9B;AACL,uFAFmC,EAG/B,CAACqD,cAAc,CAACxN,EAAhB,CAH+B,CAAP,EAIvBrlI,IAJH;AAMA,MAAI5C,KAAK,GAAG60I,4DAAA,CAAyBzC,uDAAA,CAAgB2C,YAAhB,CAAzB,CAAZ;AACA,MAAIt0I,GAAG,GAAGo0I,2DAAA,EAAV;AACA,MAAI98H,MAAM,GAAG88H,6DAAA,CAA0B70I,KAA1B,EAAiCS,GAAjC,CAAb;;AAEA,WAAS4pI,QAAT,CAAkBzgI,IAAlB,EAAwB;AACtB,SAAK,IAAIogI,KAAT,IAAkBkK,MAAlB,EAA0B;AACxB,UAAIzH,GAAG,GAAGzC,KAAK,CAACkD,UAAN,CAAiB5wH,IAAjB,CAAsB4Y,CAAC,IAAIA,CAAC,CAACtrB,IAAF,KAAWA,IAAtC,CAAV;;AACA,UAAI6iI,GAAJ,EAAS;AACP,eAAOA,GAAP;AACD;AACF;AACF;;AAED,WAASkJ,SAAT,CAAmBxqI,KAAnB,EAA0Bk/H,QAA1B,EAAoCx+H,MAApC,EAA4C;AAC1C,WAAO+pI,gEAAA,CAAwB;AAAEzqI,WAAF;AAASk/H,cAAQ,EAAEA,QAAQ,CAACpC,EAA5B;AAAgCp8H;AAAhC,KAAxB,CAAP;AACD;;AAED,WAASgqI,gBAAT,CAA0B1qI,KAA1B,EAAiCshI,GAAjC,EAAsC;AACpC,QAAIqJ,KAAK,GAAGC,0DAAA,CACVlB,4DAAA,CAAyB1pI,KAAzB,CADU,EAET,cAAashI,GAAG,CAACxE,EAAG,EAFX,CAAZ;;AAKA,QAAI6N,KAAK,GAAG,CAAZ,EAAe;AACbH,eAAS,CAACxqI,KAAD,EAAQshI,GAAR,EAAa,CAACqJ,KAAd,CAAT;AACD;AACF;;AAED,QAAME,mEAAU,CAAC,MACfC,kEAAa,CAAC,YAAY;AACxB,SAAK,IAAI9qI,KAAT,IAAkB4M,MAAlB,EAA0B;AACxB,UACE5M,KAAK,IACL0pI,4DAAA,CAAyBzC,uDAAA,CAAgBsD,mBAAhB,CAAzB,CAFF,EAGE;AACAC,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,MAAD,CAAhB,EAA0B,KAA1B,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,aAAD,CAAhB,EAAiC,KAAjC,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,eAAD,CAAhB,EAAmC,KAAnC,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,UAAD,CAAhB,EAA8B,IAA9B,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,SAAD,CAAhB,EAA6B,KAA7B,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,MAAD,CAAhB,EAA0B,IAA1B,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,SAAD,CAAhB,EAA6B,KAA7B,CAAT;AAEAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,MAAD,CAAhB,EAA0B,IAA1B,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,UAAD,CAAhB,EAA8B,IAA9B,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,UAAD,CAAhB,EAA8B,MAA9B,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,OAAD,CAAhB,EAA2B,IAA3B,CAAT;AACAsL,iBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,OAAD,CAAhB,EAA2B,KAA3B,CAAT;AACD,OAjBD,MAiBO;AACLwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,MAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,aAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,eAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,UAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,SAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,MAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,SAAD,CAAhB,CAAhB;AAEAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,MAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,UAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,UAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,OAAD,CAAhB,CAAhB;AACAwL,wBAAgB,CAAC1qI,KAAD,EAAQk/H,QAAQ,CAAC,OAAD,CAAhB,CAAhB;AACD;AACF;AACF,GAnCY,CADC,CAAhB;AAuCA,QAAM0L,+DAAA,EAAN;AAEA,QAAMC,mEAAU,CAAC,MACfC,kEAAa,CAAC,YAAY;AACxB,QAAIC,SAAS,GAAG,CAAhB;;AACA,SAAK,IAAI/qI,KAAT,IAAkB4M,MAAlB,EAA0B;AACxB,UACE5M,KAAK,IACH0pI,4DAAA,CAAyBzC,uDAAA,CAAgBsD,mBAAhB,CAAzB,CADF,IAEAvqI,KAAK,IAAI0pI,2DAAA,EAHX,EAIE;AACA,YAAInC,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,CAAhB;AACA,YAAIgrI,QAAQ,GAAGJ,0DAAA,CAAmBrD,SAAnB,EAA8B,WAA9B,CAAf;AACA,YAAI0D,SAAS,GAAGD,QAAQ,GAAGD,SAA3B;;AAEA,YAAIE,SAAS,GAAG,MAAZ,GAAqB,CAAzB,EAA4B;AAC1BT,mBAAS,CAACxqI,KAAD,EAAQk/H,QAAQ,CAAC,SAAD,CAAhB,EAA6B+L,SAAS,GAAG,MAAzC,CAAT;AACAR,0EAAA,CAAwBzqI,KAAxB,EAA+B,MAA/B;AAEA+qI,mBAAS,IAAIE,SAAS,GAAG,MAAzB;AACD,SALD,MAKO,IAAIA,SAAS,GAAG,CAAhB,EAAmB;AACxBR,0EAAA,CAAwBzqI,KAAxB,EAA+BirI,SAA/B;AACD;AACF;AACF;AACF,GAtBY,CADC,CAAhB;AA0BA,QAAML,+DAAA,EAAN;AAEA,MAAIrD,SAAS,GAAGmC,4DAAA,CAAyBA,2DAAA,EAAzB,CAAhB;AACA,MAAIsB,QAAQ,GAAGJ,0DAAA,CAAmBrD,SAAnB,EAA8B,WAA9B,CAAf;;AACA,MAAIyD,QAAQ,GAAG,CAAf,EAAkB;AAChB,UAAMzN,6EAAe,CAAC+M,cAAc,CAACxN,EAAhB,EAAoB,CACvC;AACEp8H,YAAM,EAAE,CAACsqI,QADX;AAEE9L,cAAQ,EAAEA,QAAQ,CAAC,QAAD,CAAR,CAAmBpC,EAF/B;AAGErlI,UAAI,EAAEiyI,2DAAA,KAA4B;AAHpC,KADuC,CAApB,CAArB;AAOD,GAvHmD,CAyHpD;AACA;AACA;;;AAEA,QAAMkB,+DAAA,EAAN;AACD;;AAEM,eAAeM,gBAAf,CAAgC1C,QAAhC,EAA0C;AAC/C2C,qEAAc,CAAC,QAAD,CAAd;AAEA,QAAMlE,oDAAA,CAAa,2BAAb,CAAN,CAH+C,CAK/C;AACA;AACA;;AACA,QAAMA,mDAAA,CAAY,yBAAZ,CAAN;AACA,QAAMA,mDAAA,CAAY,6BAAZ,CAAN;AAEA,MAAIvG,QAAQ,GAAG,CACb;AAAEjiI,QAAI,EAAE,iBAAR;AAA2BmT,QAAI,EAAE;AAAjC,GADa,EAEb;AAAEnT,QAAI,EAAE,cAAR;AAAwBmT,QAAI,EAAE;AAA9B,GAFa,EAGb;AAAEnT,QAAI,EAAE,sBAAR;AAAgCmT,QAAI,EAAE;AAAtC,GAHa,EAIb;AAAEnT,QAAI,EAAE,MAAR;AAAgBmT,QAAI,EAAE;AAAtB,GAJa,EAKb;AAAEnT,QAAI,EAAE,eAAR;AAAyBmT,QAAI,EAAE,YAA/B;AAA6Cw5H,aAAS,EAAE;AAAxD,GALa,EAMb;AAAE3sI,QAAI,EAAE,UAAR;AAAoBmT,QAAI,EAAE,UAA1B;AAAsCw5H,aAAS,EAAE;AAAjD,GANa,EAOb;AAAE3sI,QAAI,EAAE,aAAR;AAAuBmT,QAAI,EAAE,OAA7B;AAAsCw5H,aAAS,EAAE;AAAjD,GAPa,EAQb;AAAE3sI,QAAI,EAAE,UAAR;AAAoBmT,QAAI,EAAE,YAA1B;AAAwCw5H,aAAS,EAAE;AAAnD,GARa,CAAf;AAUA,QAAMP,mEAAU,CAAC,MACfC,kEAAa,CAAC,YAAY;AACxB,SAAK,IAAI5M,OAAT,IAAoBwC,QAApB,EAA8B;AAC5BxC,aAAO,CAACpB,EAAR,GAAa,MAAM0L,QAAQ,CAAC,gBAAD,CAAR,CAA2BtK,OAA3B,CAAnB;AACD;AACF,GAJY,CADC,CAAhB;AAQA,MAAIyD,MAAM,GAAG,CACX;AAAEljI,QAAI,EAAE;AAAR,GADW,EAEX;AAAEA,QAAI,EAAE;AAAR,GAFW,EAGX;AAAEA,QAAI,EAAE;AAAR,GAHW,EAIX;AAAEA,QAAI,EAAE;AAAR,GAJW,EAKX;AAAEA,QAAI,EAAE;AAAR,GALW,EAMX;AAAEA,QAAI,EAAE;AAAR,GANW,EAOX;AAAEA,QAAI,EAAE;AAAR,GAPW,EAQX;AAAEA,QAAI,EAAE,gBAAR;AAA0B2qI,QAAI,EAAE;AAAhC,GARW,EASX;AAAE3qI,QAAI,EAAE,cAAR;AAAwB2qI,QAAI,EAAE;AAA9B,GATW,EAUX;AAAE3qI,QAAI,EAAE,aAAR;AAAuB2qI,QAAI,EAAE;AAA7B,GAVW,EAWX;AAAE3qI,QAAI,EAAE,eAAR;AAAyB2qI,QAAI,EAAE;AAA/B,GAXW,EAYX;AAAE3qI,QAAI,EAAE,UAAR;AAAoB2qI,QAAI,EAAE;AAA1B,GAZW,CAAb;AAeA,QAAMyB,mEAAU,CAAC,MACfC,kEAAa,CAAC,YAAY;AACxB,SAAK,IAAIvL,KAAT,IAAkBoC,MAAlB,EAA0B;AACxBpC,WAAK,CAACzC,EAAN,GAAW,MAAM0L,QAAQ,CAAC,cAAD,CAAR,CAAyB;AAAE/pI,YAAI,EAAE8gI,KAAK,CAAC9gI;AAAd,OAAzB,CAAjB;AACD;AACF,GAJY,CADC,CAAhB;AAQA,MAAI4sI,cAAc,GAAG,CACnB;AACE5sI,QAAI,EAAE,gBADR;AAEEsjI,cAAU,EAAE,CACV;AAAEtjI,UAAI,EAAE;AAAR,KADU,EAEV;AAAEA,UAAI,EAAE;AAAR,KAFU,EAGV;AAAEA,UAAI,EAAE;AAAR,KAHU,EAIV;AAAEA,UAAI,EAAE;AAAR,KAJU,EAKV;AAAEA,UAAI,EAAE;AAAR,KALU,EAMV;AAAEA,UAAI,EAAE;AAAR,KANU,EAOV;AAAEA,UAAI,EAAE;AAAR,KAPU,EAQV;AAAEA,UAAI,EAAE;AAAR,KARU;AAFd,GADmB,EAcnB;AACEA,QAAI,EAAE,OADR;AAEEsjI,cAAU,EAAE,CACV;AAAEtjI,UAAI,EAAE;AAAR,KADU,EAEV;AAAEA,UAAI,EAAE;AAAR,KAFU,EAGV;AAAEA,UAAI,EAAE;AAAR,KAHU,EAIV;AAAEA,UAAI,EAAE;AAAR,KAJU,EAKV;AAAEA,UAAI,EAAE;AAAR,KALU;AAFd,GAdmB,EAwBnB;AACEA,QAAI,EAAE,QADR;AAEE8iI,aAAS,EAAE,IAFb;AAGEQ,cAAU,EAAE,CACV;AAAEtjI,UAAI,EAAE,QAAR;AAAkB8iI,eAAS,EAAE;AAA7B,KADU,EAEV;AAAE9iI,UAAI,EAAE,MAAR;AAAgB8iI,eAAS,EAAE;AAA3B,KAFU,EAGV;AAAE9iI,UAAI,EAAE,mBAAR;AAA6B8iI,eAAS,EAAE;AAAxC,KAHU;AAHd,GAxBmB,CAArB;AAmCA,QAAMsJ,mEAAU,CAAC,YAAY;AAC3B,SAAK,IAAIhM,KAAT,IAAkBwM,cAAlB,EAAkC;AAChCxM,WAAK,CAAC/B,EAAN,GAAW,MAAM0L,QAAQ,CAAC,uBAAD,CAAR,CAAkC;AACjD/pI,YAAI,EAAEogI,KAAK,CAACpgI,IADqC;AAEjD6sI,gBAAQ,EAAEzM,KAAK,CAAC0C,SAAN,GAAkB,CAAlB,GAAsB;AAFiB,OAAlC,CAAjB;;AAKA,WAAK,IAAIrC,QAAT,IAAqBL,KAAK,CAACkD,UAA3B,EAAuC;AACrC7C,gBAAQ,CAACpC,EAAT,GAAc,MAAM0L,QAAQ,CAAC,iBAAD,CAAR,iCACftJ,QADe;AAElBoM,kBAAQ,EAAEpM,QAAQ,CAACqC,SAAT,GAAqB,CAArB,GAAyB,CAFjB;AAGlBwE,iBAAO,EAAElH,KAAK,CAAC/B;AAHG,WAApB;AAKD;AACF;AACF,GAfe,CAAhB;AAiBA,MAAIyO,SAAS,GAAG,CAAC,MAAMC,mEAAU,CAAChD,QAAQ,CAAC,gBAAD,CAAT,CAAjB,EAA+C7J,OAA/D;AAEAwM,qEAAc,CAAC,QAAD,CAAd;AAEA,QAAMN,mEAAU,CAAC,MACfC,kEAAa,CAAC,YAAY;AACxB,SAAK,IAAI5M,OAAT,IAAoBwC,QAApB,EAA8B;AAC5B,cAAQxC,OAAO,CAACtsH,IAAhB;AACE,aAAK,UAAL;AACE,cAAIssH,OAAO,CAACz/H,IAAR,KAAiB,iBAArB,EAAwC;AACtC,kBAAM+qI,mBAAmB,CAAChB,QAAD,EAAWtK,OAAX,EAAoByD,MAApB,EAA4B4J,SAA5B,CAAzB;AACD,WAFD,MAEO;AACL,kBAAMzB,YAAY,CAACtB,QAAD,EAAWtK,OAAX,EAAoByD,MAApB,EAA4B4J,SAA5B,CAAlB;AACD;;AACD;;AACF,aAAK,YAAL;AACE,gBAAMtB,cAAc,CAACzB,QAAD,EAAWtK,OAAX,EAAoByD,MAApB,EAA4B4J,SAA5B,CAApB;AACA;;AACF,aAAK,SAAL;AACE,gBAAMrB,WAAW,CAAC1B,QAAD,EAAWtK,OAAX,EAAoByD,MAApB,EAA4B4J,SAA5B,CAAjB;AACA;;AACF,aAAK,UAAL;AACE,gBAAMpB,YAAY,CAAC3B,QAAD,EAAWtK,OAAX,EAAoByD,MAApB,EAA4B4J,SAA5B,CAAlB;AACA;;AACF,aAAK,OAAL;AACE,cAAIrN,OAAO,CAACz/H,IAAR,KAAiB,aAArB,EAAoC;AAClC,kBAAM2rI,SAAS,CAAC5B,QAAD,EAAWtK,OAAX,EAAoByD,MAApB,EAA4B4J,SAA5B,CAAf;AACD,WAFD,MAEO;AACL,kBAAMzB,YAAY,CAACtB,QAAD,EAAWtK,OAAX,EAAoByD,MAApB,EAA4B4J,SAA5B,CAAlB;AACD;;AACD;;AACF;AAxBF;AA0BD;AACF,GA7BY,CADC,CAAhB;AAiCAJ,qEAAc,CAAC,QAAD,CAAd,CA7I+C,CA+I/C;AACA;AACA;AACA;;AACA,MAAIb,cAAc,GAAG5J,QAAQ,CAACvvH,IAAT,CAActV,CAAC,IAAKA,CAAC,CAAC4C,IAAF,GAAS,iBAA7B,CAArB;;AACA,wBAA+B,MAAMgtI,6EAAQ,CAC3CvgG,8DAAC,CAAC,cAAD,CAAD,CACGhvC,MADH,CACU;AAAEgiI,WAAO,EAAEoM,cAAc,CAACxN;AAA1B,GADV,EAEGhB,SAFH,CAEa;AAAE4P,QAAI,EAAE;AAAR,GAFb,EAGGh6H,SAHH,EAD2C,CAA7C;AAAA,MAAYi6H,cAAZ,mBAAM7uI,IAAN;;AAMA,MAAI6uI,cAAc,GAAG,CAArB,EAAwB;AACtB,2BAAwB,MAAMF,6EAAQ,CACpCvgG,8DAAC,CAAC,cAAD,CAAD,CACGhvC,MADH,CACU;AAAEgiI,aAAO,EAAEoM,cAAc,CAACxN,EAA1B;AAA8Bp8H,YAAM,EAAE;AAAEkrI,WAAG,EAAE;AAAP;AAAtC,KADV,EAEGxjG,KAFH,CAES,CAFT,EAGGwzF,MAHH,CAGU,CAAC,IAAD,EAAO,QAAP,CAHV,EAIGlqH,SAJH,EADoC,CAAtC;AAAA,QAAY2C,OAAZ,oBAAMvX,IAAN;;AAOA,QAAI+uI,WAAW,GAAGx3H,OAAO,CAAC,CAAD,CAAzB;AAEA,UAAMm3H,mEAAU,CAAChD,QAAQ,CAAC,oBAAD,CAAT,kCACXqD,WADW;AAEdnrI,YAAM,EAAEmrI,WAAW,CAACnrI,MAAZ,GAAqB,CAACirI,cAAtB,GAAuChD,OAAO,CAAC,KAAD,EAAQ,KAAR;AAFxC,OAAhB;AAID,GAxK8C,CA0K/C;;;AACAwC,qEAAc,CAAC,UAAD,CAAd;AACA,QAAMW,uDAAA,CAAgB;AAAEC,YAAQ,EAAE;AAAZ,GAAhB,CAAN;AACA,QAAMnB,+DAAA,CAAwB3D,uCAAxB,CAAN;AACA,QAAMxD,oEAAA,EAAN;AAEA,QAAMmH,+DAAA,EAAN,CAhL+C,CAkL/C;;AACA,QAAMP,YAAY,CAAC3J,QAAD,EAAWiB,MAAX,EAAmB4J,SAAnB,CAAlB;AACD,C;;;;;;;;;;;;AC3uBD;AAAA;AAAA;AAAO,SAASS,gBAAT,CAA0BC,GAA1B,EAA+B;AACpC97G,SAAO,CAACsrE,GAAR,CAAY,aAAZ,EAA2BwwC,GAA3B;;AACA,MAAIh1G,MAAM,CAACi1G,YAAX,EAAyB;AACvBj1G,UAAM,CAACi1G,YAAP,CAAoBF,gBAApB,CAAqCC,GAArC;AACD;AACF;AAEM,SAASE,iBAAT,CAA2BC,UAA3B,EAAuC;AAC5C,MAAIn1G,MAAM,CAACi1G,YAAX,EAAyB;AACvBj1G,UAAM,CAACi1G,YAAP,CAAoBG,aAApB,CAAkCD,UAAlC;AACD;AACF,C;;;;;;;;;;;ACXD,MAAME,MAAM,GAAGz1H,mBAAO,CAAC,4EAAD,CAAtB;;AACA,MAAMY,EAAE,GAAGZ,mBAAO,CAAC,cAAD,CAAlB;;AACA,iBAAiBA,mBAAO,CAAC,kBAAD,CAAxB;AAAA,MAAQL,IAAR,YAAQA,IAAR;;AAEA,IAAI+1H,YAAY,GAAG,MAAM/1H,IAAI,CAAC81H,MAAM,CAACE,UAAP,EAAD,EAAsB,mBAAtB,CAA7B;;AACA,IAAIC,KAAJ;AACA,IAAIC,SAAS,GAAG,IAAhB;;AAEA,SAASC,IAAT,CAAc;AAAEC,SAAO,GAAG;AAAZ,IAAqB,EAAnC,EAAuC;AACrC,MAAIA,OAAJ,EAAa;AACX,QAAI;AACFH,WAAK,GAAGppI,IAAI,CAAC0G,KAAL,CAAW0N,EAAE,CAACW,YAAH,CAAgBm0H,YAAY,EAA5B,EAAgC,MAAhC,CAAX,CAAR;AACD,KAFD,CAEE,OAAOxtH,CAAP,EAAU;AACV0tH,WAAK,GAAG,EAAR;AACD;AACF,GAND,MAMO;AACLA,SAAK,GAAG,EAAR;AACD;;AAEDC,WAAS,GAAGE,OAAZ;AACD;;AAED,SAASC,UAAT,GAAsB;AACpB,MAAIH,SAAJ,EAAe;AACb,WAAO,IAAIxwH,OAAJ,CAAY,UAASC,OAAT,EAAkBC,MAAlB,EAA0B;AAC3C3E,QAAE,CAACq1H,SAAH,CAAaP,YAAY,EAAzB,EAA6BlpI,IAAI,CAACC,SAAL,CAAempI,KAAf,CAA7B,EAAoD,MAApD,EAA4D,UAC1D7yH,GAD0D,EAE1Drd,CAF0D,EAG1D;AACA,eAAOqd,GAAG,GAAGwC,MAAM,CAACxC,GAAD,CAAT,GAAiBuC,OAAO,EAAlC;AACD,OALD;AAMD,KAPM,CAAP;AAQD;AACF;;AAED,SAAS4wH,OAAT,CAAiBxiI,GAAjB,EAAsB;AACpB,SAAO,IAAI2R,OAAJ,CAAY,UAASC,OAAT,EAAkB;AACnC,WAAOA,OAAO,CAACswH,KAAK,CAACliI,GAAD,CAAN,CAAd;AACD,GAFM,CAAP;AAGD;;AAED,SAASyiI,OAAT,CAAiBziI,GAAjB,EAAsBvV,KAAtB,EAA6B;AAC3By3I,OAAK,CAACliI,GAAD,CAAL,GAAavV,KAAb;AACA,SAAO63I,UAAU,EAAjB;AACD;;AAED,SAASI,UAAT,CAAoB1iI,GAApB,EAAyB;AACvB,SAAOkiI,KAAK,CAACliI,GAAD,CAAZ;AACA,SAAOsiI,UAAU,EAAjB;AACD;;AAED,SAASK,QAAT,CAAkB5iI,IAAlB,EAAwB;AACtB,SAAO,IAAI4R,OAAJ,CAAY,UAASC,OAAT,EAAkB;AACnC,WAAOA,OAAO,CACZ7R,IAAI,CAAC9R,GAAL,CAAS,UAAS+R,GAAT,EAAc;AACrB,aAAO,CAACA,GAAD,EAAMkiI,KAAK,CAACliI,GAAD,CAAX,CAAP;AACD,KAFD,CADY,CAAd;AAKD,GANM,CAAP;AAOD;;AAED,SAAS4iI,QAAT,CAAkBC,SAAlB,EAA6B;AAC3BA,WAAS,CAACzlI,OAAV,CAAkB,UAAS,CAAC4C,GAAD,EAAMvV,KAAN,CAAT,EAAuB;AACvCy3I,SAAK,CAACliI,GAAD,CAAL,GAAavV,KAAb;AACD,GAFD;AAGA,SAAO63I,UAAU,EAAjB;AACD;;AAED,SAASQ,WAAT,CAAqB/iI,IAArB,EAA2B;AACzBA,MAAI,CAAC3C,OAAL,CAAa,UAAS4C,GAAT,EAAc;AACzB,WAAOkiI,KAAK,CAACliI,GAAD,CAAZ;AACD,GAFD;AAGA,SAAOsiI,UAAU,EAAjB;AACD;;AAEDp2H,MAAM,CAACC,OAAP,GAAiB;AACfi2H,MADe;AAEfI,SAFe;AAGfC,SAHe;AAIfC,YAJe;AAKfC,UALe;AAMfC,UANe;AAOfE;AAPe,CAAjB,C;;;;;;;;;;;AC3EA,SAASV,IAAT,GAAgB,CAAE;;AAElB,SAAS9vE,IAAT,CAAcjrD,IAAd,EAAoBrd,IAApB,EAA0B,CACxB;AACD;;AAEDkiB,MAAM,CAACC,OAAP,GAAiB;AAAEi2H,MAAF;AAAQ9vE;AAAR,CAAjB,C;;;;;;;;;;;ACNA,IAAIplD,EAAE,GAAGZ,mBAAO,CAAC,cAAD,CAAhB;;AACA,IAAIy2H,KAAK,GAAGz2H,mBAAO,CAAC,8BAAD,CAAnB;;AAEA,eAAe02H,WAAf,CAA2B7vD,GAA3B,EAAgCriE,QAAhC,EAA0C;AACxC,QAAM6vG,GAAG,GAAG,MAAMoiB,KAAK,CAAC5vD,GAAD,CAAvB;AACA,SAAO,IAAIxhE,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,UAAMoxH,UAAU,GAAG/1H,EAAE,CAACg2H,iBAAH,CAAqBpyH,QAArB,CAAnB;AACA6vG,OAAG,CAACwiB,IAAJ,CAASl4I,IAAT,CAAcg4I,UAAd;AACAtiB,OAAG,CAACwiB,IAAJ,CAAS3lH,EAAT,CAAY,OAAZ,EAAqBnO,GAAG,IAAI;AAC1BwC,YAAM,CAACxC,GAAD,CAAN;AACD,KAFD;AAGA4zH,cAAU,CAACzlH,EAAX,CAAc,QAAd,EAAwB,YAAW;AACjC5L,aAAO;AACR,KAFD;AAGD,GATM,CAAP;AAUD;;AAED1F,MAAM,CAACC,OAAP,GAAiB;AAAE42H,OAAF;AAASC;AAAT,CAAjB,C;;;;;;;;;;;ACjBA,MAAM91H,EAAE,GAAGZ,mBAAO,CAAC,cAAD,CAAlB;;AACA,MAAM4Y,IAAI,GAAG5Y,mBAAO,CAAC,kBAAD,CAApB;;AAEA,IAAI82H,WAAJ;AAEA,IAAIC,QAAQ,GAAGn+G,IAAI,CAACjZ,IAAL,CAAUq3H,SAAV,EAAqB,IAArB,EAA2B,IAA3B,EAAiC,IAAjC,EAAuC,IAAvC,CAAf;;AAEA,IAAIC,UAAU,CAACl5H,KAAX,CAAiB,QAAjB,CAAJ,EAAgC;AAC9B;AACA;AACAg5H,UAAQ,GAAGn+G,IAAI,CAACjZ,IAAL,CAAUq3H,SAAV,EAAqB,IAArB,CAAX;AACD;;AAEDp3H,MAAM,CAACC,OAAP,GAAiB;AACfi2H,MAAI,EAAE,MAAM,CACV;AACD,GAHc;AAIfH,YAAU,EAAE,MAAM;AAChB,QAAI,CAAC37G,OAAO,CAACk9G,GAAR,CAAYC,eAAjB,EAAkC;AAChC,YAAM,IAAI/zI,KAAJ,CAAU,0CAAV,CAAN;AACD;;AACD,WAAO42B,OAAO,CAACk9G,GAAR,CAAYC,eAAnB;AACD,GATc;AAUfC,iBAAe,EAAE77G,GAAG,IAAKu7G,WAAW,GAAGv7G,GAVxB;AAWf87G,gBAAc,EAAE,MAAM;AACpB,QAAI,CAACP,WAAL,EAAkB;AAChB,YAAM,IAAI1zI,KAAJ,CAAU,+BAAV,CAAN;AACD;;AACD,WAAO0zI,WAAP;AACD,GAhBc;AAiBfQ,cAAY,EAAErR,EAAE,IAAI;AAClB,QAAI,CAACA,EAAL,EAAS;AACP,YAAM,IAAI7iI,KAAJ,CAAU,kCAAkC6iI,EAA5C,CAAN;AACD,KAHiB,CAKlB;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,QAAIA,EAAE,CAACloH,KAAH,CAAS,iBAAT,CAAJ,EAAiC;AAC/B,YAAM,IAAI3a,KAAJ,CACH,sBAAqB6iI,EAAG,gFADrB,CAAN;AAGD;;AAED,WAAOrtG,IAAI,CAACjZ,IAAL,CAAUC,MAAM,CAACC,OAAP,CAAew3H,cAAf,EAAV,EAA2CpR,EAA3C,CAAP;AACD,GApCc;AAqCfsR,qBAAmB,EAAE3+G,IAAI,CAACjZ,IAAL,CAAUo3H,QAAV,EAAoB,mBAApB,CArCN;AAsCfS,gBAAc,EAAE5+G,IAAI,CAACjZ,IAAL,CAAUo3H,QAAV,EAAoB,YAApB,CAtCD;AAuCfU,gBAAc,EAAE7+G,IAAI,CAACjZ,IAAL,CAAUo3H,QAAV,EAAoB,aAApB,CAvCD;AAwCfp3H,MAAI,EAAEiZ,IAAI,CAACjZ,IAxCI;AAyCfmH,UAAQ,EAAEtC,QAAQ,IAAIoU,IAAI,CAAC9R,QAAL,CAActC,QAAd,CAzCP;AA0CfkzH,SAAO,EAAElzH,QAAQ,IACf,IAAIa,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AAC/B3E,MAAE,CAAC+2H,OAAH,CAAWnzH,QAAX,EAAqB,CAACzB,GAAD,EAAM2Y,KAAN,KAAgB;AACnC,UAAI3Y,GAAJ,EAAS;AACPwC,cAAM,CAACxC,GAAD,CAAN;AACD,OAFD,MAEO;AACLuC,eAAO,CAACoW,KAAD,CAAP;AACD;AACF,KAND;AAOD,GARD,CA3Ca;AAoDfT,QAAM,EAAEzW,QAAQ,IACd,IAAIa,OAAJ,CAAYC,OAAO,IAAI;AACrB1E,MAAE,CAACg3H,MAAH,CAAUpzH,QAAV,EAAoB5D,EAAE,CAACi3H,SAAH,CAAaC,IAAjC,EAAuC/0H,GAAG,IAAI;AAC5C,aAAOuC,OAAO,CAAC,CAACvC,GAAF,CAAd;AACD,KAFD;AAGD,GAJD,CArDa;AA0Dfg1H,OAAK,EAAEvzH,QAAQ,IACb,IAAIa,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AAC/B3E,MAAE,CAACm3H,KAAH,CAASvzH,QAAT,EAAmBzB,GAAG,IAAI;AACxB,UAAIA,GAAJ,EAAS;AACPwC,cAAM,CAACxC,GAAD,CAAN;AACD,OAFD,MAEO;AACLuC,eAAO;AACR;AACF,KAND;AAOD,GARD,CA3Da;AAoEfiD,MAAI,EAAE/D,QAAQ,IACZ,IAAIa,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AAC/B3E,MAAE,CAACoE,IAAH,CAAQR,QAAR,EAAkB,CAACzB,GAAD,EAAM2B,KAAN,KAAgB;AAChC,UAAI3B,GAAJ,EAAS;AACPwC,cAAM,CAACxC,GAAD,CAAN;AACD,OAFD,MAEO;AACLuC,eAAO,CAACZ,KAAK,CAAC6D,IAAP,CAAP;AACD;AACF,KAND;AAOD,GARD,CArEa;AA8EfyvH,UAAQ,EAAE,CAACC,QAAD,EAAWC,MAAX,KAAsB;AAC9B,WAAO,IAAI7yH,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,YAAM4yH,UAAU,GAAGv3H,EAAE,CAACw3H,gBAAH,CAAoBH,QAApB,CAAnB;AACA,YAAMI,WAAW,GAAGz3H,EAAE,CAACg2H,iBAAH,CAAqBsB,MAArB,CAApB;AAEAC,gBAAU,CAACjnH,EAAX,CAAc,OAAd,EAAuB3L,MAAvB;AACA8yH,iBAAW,CAACnnH,EAAZ,CAAe,OAAf,EAAwB3L,MAAxB;AAEA8yH,iBAAW,CAACnnH,EAAZ,CAAe,MAAf,EAAuB,MAAMinH,UAAU,CAACx5I,IAAX,CAAgB05I,WAAhB,CAA7B;AACAA,iBAAW,CAACp8D,IAAZ,CAAiB,OAAjB,EAA0B32D,OAA1B;AACD,KATM,CAAP;AAUD,GAzFc;AA0FfhD,UAAQ,EAAE,CAACkC,QAAD,EAAW3B,QAAQ,GAAG,MAAtB,KAAiC;AACzC,QAAIA,QAAQ,KAAK,QAAjB,EAA2B;AACzB;AACA;AACAA,cAAQ,GAAG,IAAX;AACD;;AACD,WAAO,IAAIwC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC3E,QAAE,CAAC0B,QAAH,CAAYkC,QAAZ,EAAsB3B,QAAtB,EAAgC,CAACE,GAAD,EAAM9c,IAAN,KAAe;AAC7C,YAAI8c,GAAJ,EAAS;AACPwC,gBAAM,CAACxC,GAAD,CAAN;AACD,SAFD,MAEO;AACLuC,iBAAO,CAACrf,IAAD,CAAP;AACD;AACF,OAND;AAOD,KARM,CAAP;AASD,GAzGc;AA0GfgwI,WAAS,EAAE,CAACzxH,QAAD,EAAW8oH,QAAX,KAAwB;AACjC,WAAO,IAAIjoH,OAAJ,CAAY,UAASC,OAAT,EAAkBC,MAAlB,EAA0B;AAC3C3E,QAAE,CAACq1H,SAAH,CAAazxH,QAAb,EAAuB8oH,QAAvB,EAAiC,MAAjC,EAAyC,UAASvqH,GAAT,EAAcrd,CAAd,EAAiB;AACxD,eAAOqd,GAAG,GAAGwC,MAAM,CAACxC,GAAD,CAAT,GAAiBuC,OAAO,EAAlC;AACD,OAFD;AAGD,KAJM,CAAP;AAKD,GAhHc;AAiHfgzH,YAAU,EAAE9zH,QAAQ,IAAI;AACtB,WAAO,IAAIa,OAAJ,CAAY,UAASC,OAAT,EAAkBC,MAAlB,EAA0B;AAC3C3E,QAAE,CAAC23H,MAAH,CAAU/zH,QAAV,EAAoBzB,GAAG,IAAI;AACzB,eAAOA,GAAG,GAAGwC,MAAM,CAACxC,GAAD,CAAT,GAAiBuC,OAAO,EAAlC;AACD,OAFD;AAGD,KAJM,CAAP;AAKD,GAvHc;AAwHfkzH,WAAS,EAAEC,OAAO,IAAI;AACpB,WAAO,IAAIpzH,OAAJ,CAAY,UAASC,OAAT,EAAkBC,MAAlB,EAA0B;AAC3C3E,QAAE,CAAC83H,KAAH,CAASD,OAAT,EAAkB11H,GAAG,IAAI;AACvB,eAAOA,GAAG,GAAGwC,MAAM,CAACxC,GAAD,CAAT,GAAiBuC,OAAO,EAAlC;AACD,OAFD;AAGD,KAJM,CAAP;AAKD,GA9Hc;AA+HfqzH,sBAAoB,EAAE,MAAMF,OAAN,IAAiB;AACrC,UAAMhtG,CAAC,GAAG7rB,MAAM,CAACC,OAAjB;;AACA,QAAI,MAAM4rB,CAAC,CAACxQ,MAAF,CAASw9G,OAAT,CAAV,EAA6B;AAC3B,WAAK,IAAI1wH,IAAT,IAAiB,MAAM0jB,CAAC,CAACisG,OAAF,CAAUe,OAAV,CAAvB,EAA2C;AACzC,cAAMG,QAAQ,GAAGntG,CAAC,CAAC9rB,IAAF,CAAO84H,OAAP,EAAgB1wH,IAAhB,CAAjB;;AACA,YAAInH,EAAE,CAACmD,QAAH,CAAY60H,QAAZ,EAAsB9yH,WAAtB,EAAJ,EAAyC;AACvC,gBAAM2lB,CAAC,CAACktG,oBAAF,CAAuBC,QAAvB,CAAN;AACD,SAFD,MAEO;AACL,gBAAMntG,CAAC,CAAC6sG,UAAF,CAAaM,QAAb,CAAN;AACD;AACF;;AAED,YAAMntG,CAAC,CAAC+sG,SAAF,CAAYC,OAAZ,CAAN;AACD;AACF,GA7Ic;AA8IfI,iBAAe,EAAEr0H,QAAQ,IAAI;AAC3B,WAAO,IAAIa,OAAJ,CAAY,UAASC,OAAT,EAAkBC,MAAlB,EAA0B;AAC3C3E,QAAE,CAACoE,IAAH,CAAQR,QAAR,EAAkB,CAACzB,GAAD,EAAM2B,KAAN,KAAgB;AAChC,YAAI3B,GAAJ,EAAS;AACPwC,gBAAM,CAACxC,GAAD,CAAN;AACD,SAFD,MAEO;AACLuC,iBAAO,CAAC,IAAIvc,IAAJ,CAAS2b,KAAK,CAACkB,KAAf,CAAD,CAAP;AACD;AACF,OAND;AAOD,KARM,CAAP;AASD;AAxJc,CAAjB,C;;;;;;;;;;;;ACbA;AAAe;AACb4f,MAAI,EAAE,CAAC,GAAG9nC,IAAJ,KAAa;AACjB47B,WAAO,CAACsrE,GAAR,CAAY,GAAGlnG,IAAf;AACD,GAHY;AAIb67B,MAAI,EAAE,CAAC,GAAG77B,IAAJ,KAAa;AACjB47B,WAAO,CAACC,IAAR,CAAa,GAAG77B,IAAhB;AACD;AANY,CAAf,E;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAMo7I,QAAQ,GAAG94H,mBAAO,CAAC,sCAAD,CAAxB;;AAEA,SAAS+4H,gBAAT,CAA0BC,GAA1B,EAA+Bl/E,GAA/B,EAAoC;AAClCA,KAAG,CAAChpD,OAAJ,CAAY8M,GAAG,IAAI;AACjB,QAAI,OAAOA,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,QAA1C,IAAsDA,GAAG,KAAK,IAAlE,EAAwE;AACtE0b,aAAO,CAACsrE,GAAR,CAAYo0C,GAAZ,EAAiBl/E,GAAjB;AACA,YAAM,IAAI12D,KAAJ,CAAU,wBAAwBwa,GAAxB,GAA8B,WAA9B,GAA4Co7H,GAAtD,CAAN;AACD;AACF,GALD;AAMD;;AAEM,eAAelD,IAAf,GAAsB,CAAE;AAExB,SAASnkG,OAAT,CAAiBy+F,EAAjB,EAAqB4I,GAArB,EAA0B;AAC/B,SAAO5I,EAAE,CAACz+F,OAAH,CAAWqnG,GAAX,CAAP;AACD;AAEM,SAAS7S,QAAT,CAAkBiK,EAAlB,EAAsB4I,GAAtB,EAA2BC,MAAM,GAAG,EAApC,EAAwCC,QAAxC,EAAkD;AACvD,MAAID,MAAJ,EAAY;AACVF,oBAAgB,CAACC,GAAD,EAAMC,MAAN,CAAhB;AACD;;AAED,MAAIE,IAAJ;;AACA,MAAI;AACFA,QAAI,GAAG,OAAOH,GAAP,KAAe,QAAf,GAA0B5I,EAAE,CAACz+F,OAAH,CAAWqnG,GAAX,CAA1B,GAA4CA,GAAnD;AACD,GAFD,CAEE,OAAO9wH,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY,OAAZ,EAAqBo0C,GAArB;AACA,UAAM9wH,CAAN;AACD;;AAED,MAAIgxH,QAAJ,EAAc;AACZ,QAAI;AACF,UAAIvmI,MAAM,GAAGwmI,IAAI,CAACpqE,GAAL,CAAS,GAAGkqE,MAAZ,CAAb;AACA,aAAOtmI,MAAP;AACD,KAHD,CAGE,OAAOuV,CAAP,EAAU;AACVoR,aAAO,CAACsrE,GAAR,CAAY,OAAZ,EAAqBo0C,GAArB;AACA,YAAM9wH,CAAN;AACD;AACF,GARD,MAQO;AACL,QAAI;AACF,UAAIsd,IAAI,GAAG2zG,IAAI,CAAC3kI,GAAL,CAAS,GAAGykI,MAAZ,CAAX;AACA,aAAO;AAAEG,eAAO,EAAE5zG,IAAI,CAAC4zG,OAAhB;AAAyBC,gBAAQ,EAAE7zG,IAAI,CAAC8zG;AAAxC,OAAP;AACD,KAHD,CAGE,OAAOpxH,CAAP,EAAU;AACV;AACA,YAAMA,CAAN;AACD;AACF;AACF;AAEM,SAASqoH,SAAT,CAAmBH,EAAnB,EAAuB4I,GAAvB,EAA4B;AACjC5I,IAAE,CAACt/F,IAAH,CAAQkoG,GAAR;AACD;AAEM,SAASxN,WAAT,CAAqB4E,EAArB,EAAyBhpI,EAAzB,EAA6B;AAClCgpI,IAAE,CAAC5E,WAAH,CAAepkI,EAAf;AACD,C,CAED;AACA;AACA;AACA;AACA;;AACA,IAAImyI,gBAAgB,GAAG,CAAvB;AACO,eAAeC,gBAAf,CAAgCpJ,EAAhC,EAAoChpI,EAApC,EAAwC;AAC7C;AACA;AACA,MAAImyI,gBAAgB,KAAK,CAAzB,EAA4B;AAC1BnJ,MAAE,CAACt/F,IAAH,CAAQ,mBAAR;AACD;;AACDyoG,kBAAgB;;AAEhB,MAAI;AACF,UAAMnyI,EAAE,EAAR;AACD,GAFD,SAEU;AACRmyI,oBAAgB,GADR,CAER;AACA;AACA;AACA;;AACA,QAAIA,gBAAgB,KAAK,CAAzB,EAA4B;AAC1BnJ,QAAE,CAACt/F,IAAH,CAAQ,QAAR;AACD;AACF;AACF;AAEM,SAAS2oG,YAAT,CAAsBC,YAAtB,EAAoC;AACzC,SAAO,IAAIZ,QAAJ,CAAaY,YAAb,CAAP;AACD;AAEM,SAASC,aAAT,CAAuBvJ,EAAvB,EAA2B;AAChC,SAAOA,EAAE,CAAC/0G,KAAH,EAAP;AACD;AAEM,SAASu+G,cAAT,CAAwBxJ,EAAxB,EAA4B;AACjC,SAAOA,EAAE,CAACv1H,SAAH,EAAP;AACD,C;;;;;;;;;;;AC/FD,MAAMgoH,IAAI,GAAG7iH,mBAAO,CAAC,0CAAD,CAApB;;AAEAJ,MAAM,CAACC,OAAP,GAAiB;AACf+iH,IAAE,EAAE,YAAW;AACb,WAAOv9G,OAAO,CAACC,OAAR,CAAgBu9G,IAAI,CAACD,EAAL,EAAhB,CAAP;AACD,GAHc;AAKfiX,QAAM,EAAE,YAAW;AACjB,WAAOhX,IAAI,CAACD,EAAL,EAAP;AACD;AAPc,CAAjB,C;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEO,eAAekX,WAAf,CACLlT,YADK,EAELiD,QAFK,EAGL2K,cAHK,EAIL1J,MAJK,EAKL;AACA,QAAMiP,gBAAgB,GAAGlQ,QAAQ,CAAChrI,MAAT,CAAgB,CAACm7I,OAAD,EAAU;AAAE/T,MAAF;AAAMr+H;AAAN,GAAV,KAA2B;AAClEoyI,WAAO,CAAC/T,EAAD,CAAP,GAAcr+H,IAAd;AACA,WAAOoyI,OAAP;AACD,GAHwB,EAGtB,EAHsB,CAAzB;AAKA,QAAMC,iBAAiB,GAAGzF,cAAc,CAAC31I,MAAf,CACxB,CAACm7I,OAAD,EAAU;AAAEpyI,QAAF;AAAQsjI,cAAU,EAAEV;AAApB,GAAV,KAAkD;AAChDA,iBAAa,CAAC15H,OAAd,CACEopI,WAAW,IACRF,OAAO,CAACE,WAAW,CAACjU,EAAb,CAAP,GAA2B,GAAEr+H,IAAK,KAAIsyI,WAAW,CAACtyI,IAAK,EAF5D;AAIA,WAAOoyI,OAAP;AACD,GAPuB,EAQxB,EARwB,CAA1B;AAWA,QAAMG,cAAc,GAAGrP,MAAM,CAACjsI,MAAP,CAAc,CAACm7I,OAAD,EAAU;AAAE/T,MAAF;AAAMr+H;AAAN,GAAV,KAA2B;AAC9DoyI,WAAO,CAAC/T,EAAD,CAAP,GAAcr+H,IAAd;AACA,WAAOoyI,OAAP;AACD,GAHsB,EAGpB,EAHoB,CAAvB;AAKA,QAAMI,qBAAqB,GAAGxT,YAAY,CAACjlI,GAAb,CAC5B,CAAC;AAAE0lI,WAAF;AAAWzmI,QAAX;AAAiB8nI,SAAjB;AAAwBqD,SAAxB;AAA+B1D,YAA/B;AAAyCx+H;AAAzC,GAAD,MAAwD;AACtDwwI,WAAO,EAAEN,gBAAgB,CAAC1S,OAAD,CAD6B;AAEtDt+H,QAAI,EAAEnI,IAFgD;AAGtD05I,SAAK,EAAEH,cAAc,CAACzR,KAAD,CAHiC;AAItD6R,SAAK,EAAExO,KAJ+C;AAKtDyO,YAAQ,EAAEP,iBAAiB,CAAC5R,QAAD,CAL2B;AAMtDoS,UAAM,EAAE5wI,MAAM,IAAI,IAAV,GAAiB,CAAjB,GAAqB4kI,oEAAe,CAAC5kI,MAAD;AANU,GAAxD,CAD4B,CAA9B;AAWA,SAAO6wI,6DAAY,CAACN,qBAAD,EAAwB;AAAEp4H,UAAM,EAAE;AAAV,GAAxB,CAAnB;AACD;AAEM,eAAe24H,gBAAf,CAAgC3V,KAAhC,EAAuC;AAC5C,wBAA6B,MAAM4P,sEAAQ,CACzC5P,KAAK,CACFD,MADH,CACU,CACN;AAAE6V,MAAE,EAAE;AAAN,GADM,EAEN;AAAEP,WAAO,EAAE;AAAX,GAFM,EAGN;AAAEtxI,QAAI,EAAE;AAAR,GAHM,EAIN;AAAEuxI,SAAK,EAAE;AAAT,GAJM,EAKN;AAAEO,YAAQ,EAAE;AAAZ,GALM,EAMN;AAAEC,YAAQ,EAAE;AAAZ,GANM,EAON;AAAEP,SAAK,EAAE;AAAT,GAPM,EAQN;AAAEC,YAAQ,EAAE;AAAZ,GARM,EASN;AAAEC,UAAM,EAAE;AAAV,GATM,CADV,EAYG/6I,OAZH,CAYW;AAAEq7I,UAAM,EAAE;AAAV,GAZX,CADyC,CAA3C;AAAA,MAAYnU,YAAZ,mBAAM3gI,IAAN;;AAgBA,MAAI+0I,aAAa,GAAG,IAAIvoI,GAAJ,EAApB;;AACA,OAAK,IAAIwoI,KAAT,IAAkBrU,YAAlB,EAAgC;AAC9B,QAAIqU,KAAK,CAACH,QAAV,EAAoB;AAClBE,mBAAa,CAAC52I,GAAd,CAAkB62I,KAAK,CAACL,EAAxB,EAA4BK,KAAK,CAACX,KAAlC;AACD;AACF,GAtB2C,CAwB5C;;;AACA,MAAIY,SAAS,GAAGtU,YAAY,CAACvhI,MAAb,CAAoB4sB,CAAC,IAAI,CAACA,CAAC,CAAC6oH,QAA5B,CAAhB,CAzB4C,CA2B5C;;AACA,MAAIV,qBAAqB,GAAGc,SAAS,CAACv5I,GAAV,CAAcs5I,KAAK,IAAI;AACjD,WAAO;AACLZ,aAAO,EAAEY,KAAK,CAACZ,OADV;AAELtxI,UAAI,EAAEkyI,KAAK,CAAClyI,IAFP;AAGLuxI,WAAK,EAAEW,KAAK,CAACJ,QAAN,GAAiBG,aAAa,CAACn6I,GAAd,CAAkBo6I,KAAK,CAACJ,QAAxB,CAAjB,GAAqDI,KAAK,CAACX,KAH7D;AAILC,WAAK,EAAEU,KAAK,CAACV,KAJR;AAKLC,cAAQ,EAAES,KAAK,CAACT,QALX;AAMLC,YAAM,EAAEQ,KAAK,CAACR,MAAN,IAAgB,IAAhB,GAAuB,CAAvB,GAA2BhM,oEAAe,CAACwM,KAAK,CAACR,MAAP;AAN7C,KAAP;AAQD,GAT2B,CAA5B;AAWA,SAAOC,6DAAY,CAACN,qBAAD,EAAwB;AAAEp4H,UAAM,EAAE;AAAV,GAAxB,CAAnB;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM6gH,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAApB;;AAEO,eAAem7H,kBAAf,CAAkCC,WAAlC,EAA+CC,WAA/C,EAA4D;AACjE,8BAA4B,MAAMC,oEAAY,CAACjF,QAAb,CAAsB,CACtD,SADsD,EAEtD,UAFsD,CAAtB,CAAlC;AAAA;AAAA;AAAA,MAAQkF,MAAR;AAAA;AAAA,MAAoB7nI,GAApB;;AAKA,MAAI0nI,WAAW,IAAI,IAAf,IAAuB,CAACA,WAAW,CAACI,cAApC,IAAsD,CAACJ,WAAW,CAACxzI,IAAvE,EAA6E;AAC3E,UAAM,IAAIxE,KAAJ,CAAU,4BAAV,CAAN;AACD;;AAED,MAAI6iI,EAAE,GAAGpD,IAAI,CAACgX,MAAL,EAAT,CAViE,CAYjE;AACA;;AACA,QAAM4B,kDAAI,CAACC,gEAAS,GAAGC,YAAZ,GAA2B,uBAA5B,EAAqD;AAC7DJ,UAD6D;AAE7D7nI,OAF6D;AAG7DkoI,WAAO,EAAE3V,EAHoD;AAI7D4V,gBAAY,EAAER;AAJ+C,GAArD,CAAV;AAOA,QAAMrH,4DAAU,CAAC,MACf5D,kDAAA,CAAkB,OAAlB,EAA2B;AACzBnK,MADyB;AAEzB6V,WAAO,EAAEV,WAAW,CAACI,cAFI;AAGzB5zI,QAAI,EAAEwzI,WAAW,CAACxzI;AAHO,GAA3B,CADc,CAAhB;AAQA,SAAOq+H,EAAP;AACD;AAEM,eAAe8V,WAAf,CAA2BC,MAA3B,EAAmCC,UAAnC,EAA+CC,YAAY,GAAG,EAA9D,EAAkE;AACvE,+BAAgC,MAAMZ,oEAAY,CAACjF,QAAb,CAAsB,CAC1D,SAD0D,EAE1D,UAF0D,CAAtB,CAAtC;AAAA;AAAA;AAAA,MAAQkF,MAAR;AAAA;AAAA,MAAoBY,OAApB,6BADuE,CAMvE;;;AACA,MAAItS,QAAQ,GAAG,MAAMuS,iDAAA,CAAqBb,MAArB,EAA6BY,OAA7B,EAAsCH,MAAtC,CAArB,CAPuE,CASvE;;AACAnS,UAAQ,GAAGA,QAAQ,CAACxkI,MAAT,CAAgBkmI,IAAI,IAAI0Q,UAAU,CAAC5lI,QAAX,CAAoBk1H,IAAI,CAACmE,UAAzB,CAAxB,CAAX;AAEA,SAAOrqH,OAAO,CAAC0pD,GAAR,CACL86D,QAAQ,CAACloI,GAAT,CAAa,MAAM4pI,IAAN,IAAc;AACzB,QAAItF,EAAE,GAAG,MAAM+N,4DAAU,CAAC,YAAY;AACpC,UAAI/N,EAAE,GAAG,MAAMmK,iDAAA,CAAiB;AAC9BV,kBAAU,EAAEnE,IAAI,CAACmE,UADa;AAE9B9nI,YAAI,EAAE2jI,IAAI,CAAC3jI,IAFmB;AAG9By0I,qBAAa,EAAE9Q,IAAI,CAAC8Q,aAHU;AAI9BthI,YAAI,EAAEuhI,6EAAoB,CAAC/Q,IAAI,CAACxwH,IAAN,CAJI;AAK9BwhI,uBAAe,EAAElT,oEAAe,CAACkC,IAAI,CAACiR,QAAL,CAAcC,OAAf,CALF;AAM9BC,YAAI,EAAEnR,IAAI,CAACmR,IANmB;AAO9BC,YAAI,EAAEX,MAPwB;AAQ9B/R,iBAAS,EAAEiS,YAAY,CAAC7lI,QAAb,CAAsBk1H,IAAI,CAACmE,UAA3B,IAAyC,CAAzC,GAA6C;AAR1B,OAAjB,CAAf,CADoC,CAYpC;;AACA,YAAMU,+CAAA,CAAe;AACnBxoI,YAAI,EAAE,EADa;AAEnBojI,qBAAa,EAAE/E;AAFI,OAAf,CAAN;AAKA,aAAOA,EAAP;AACD,KAnBwB,CAAzB,CADyB,CAsBzB;;AACA,UAAMmW,iDAAA,CAAqBb,MAArB,EAA6BY,OAA7B,EAAsClW,EAAtC,EAA0CsF,IAAI,CAACmE,UAA/C,EAA2DsM,MAA3D,CAAN;AAEA,WAAO/V,EAAP;AACD,GA1BD,CADK,CAAP;AA6BD,C;;;;;;;;;;;;ACnFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEO,SAAS2W,SAAT,CAAmBp4H,QAAnB,EAA6B9kB,OAA7B,EAAsC;AAC3C,MAAIm9I,MAAM,GAAG,EAAb;AACA,MAAI/mG,CAAC,GAAGtxB,QAAQ,CAACzG,KAAT,CAAe,UAAf,CAAR;;AAEA,MAAI+3B,CAAJ,EAAO;AACL,QAAIgnG,GAAG,GAAGhnG,CAAC,CAAC,CAAD,CAAX;;AAEA,YAAQgnG,GAAG,CAAC79G,WAAJ,EAAR;AACE,WAAK,MAAL;AACE,eAAO89G,QAAQ,CAACv4H,QAAD,CAAf;;AACF,WAAK,MAAL;AACE,eAAOw4H,QAAQ,CAACx4H,QAAD,EAAW9kB,OAAX,CAAf;;AACF,WAAK,MAAL;AACA,WAAK,MAAL;AACE,eAAOu9I,QAAQ,CAACz4H,QAAD,CAAf;;AACF;AARF;AAUD;;AAEDq4H,QAAM,CAACp5I,IAAP,CAAY;AACVopC,WAAO,EAAE,mBADC;AAEVmgD,YAAQ,EAAE;AAFA,GAAZ;AAIA,SAAO;AAAE6vD;AAAF,GAAP;AACD;;AAED,eAAeG,QAAf,CAAwBx4H,QAAxB,EAAkC9kB,OAAO,GAAG,EAA5C,EAAgD;AAC9C,MAAIm9I,MAAM,GAAG,EAAb;AACA,MAAIvP,QAAQ,GAAG,MAAM1sH,0DAAE,CAAC0B,QAAH,CAAYkC,QAAZ,CAArB;AAEA,MAAIve,IAAJ;;AACA,MAAI;AACFA,QAAI,GAAGi3I,yDAAQ,CAAC5P,QAAD,EAAW;AACxBroG,aAAO,EAAE,IADe;AAExBL,SAAG,EAAE,IAFmB;AAGxBS,eAAS,EAAE3lC,OAAO,CAAC2lC,SAAR,IAAqB,GAHR;AAIxBO,WAAK,EAAE,GAJiB;AAKxBa,UAAI,EAAE,IALkB;AAMxBR,wBAAkB,EAAE;AANI,KAAX,CAAf;AAQD,GATD,CASE,OAAOljB,GAAP,EAAY;AACZ85H,UAAM,CAACp5I,IAAP,CAAY;AACVopC,aAAO,EAAE,qBAAqB9pB,GAAG,CAAC8pB,OADxB;AAEVmgD,cAAQ,EAAEjqE,GAAG,CAAC8pB;AAFJ,KAAZ;AAIA,WAAO;AAAEgwG,YAAF;AAAUjW,kBAAY,EAAE;AAAxB,KAAP;AACD;;AAED,SAAO;AAAEiW,UAAF;AAAUjW,gBAAY,EAAE3gI;AAAxB,GAAP;AACD;;AAED,eAAe82I,QAAf,CAAwBv4H,QAAxB,EAAkC;AAChC,MAAIq4H,MAAM,GAAG,EAAb;AACA,MAAIvP,QAAQ,GAAG,MAAM1sH,0DAAE,CAAC0B,QAAH,CAAYkC,QAAZ,CAArB;AAEA,MAAIve,IAAJ;;AACA,MAAI;AACFA,QAAI,GAAGk3I,yDAAQ,CAAC7P,QAAD,CAAf;AACD,GAFD,CAEE,OAAOvqH,GAAP,EAAY;AACZ85H,UAAM,CAACp5I,IAAP,CAAY;AACVopC,aAAO,EAAE,qDADC;AAEVmgD,cAAQ,EAAEjqE,GAAG,CAACyyC;AAFJ,KAAZ;AAIA,WAAO;AAAEqnF,YAAF;AAAUjW,kBAAY,EAAE;AAAxB,KAAP;AACD;;AAED,SAAO;AACLiW,UADK;AAELjW,gBAAY,EAAE3gI,IAAI,CAAC2gI,YAAL,CAAkBjlI,GAAlB,CAAsBs5I,KAAK,KAAK;AAC5CpxI,YAAM,EAAEoxI,KAAK,CAACpxI,MAAN,IAAgB,IAAhB,GAAuBuzI,uEAAkB,CAACnC,KAAK,CAACpxI,MAAP,CAAzC,GAA0D,IADtB;AAE5CjJ,UAAI,EAAEq6I,KAAK,CAACr6I,IAFgC;AAG5Cy8I,gBAAU,EAAEpC,KAAK,CAACvS,KAH0B;AAI5C4U,oBAAc,EAAErC,KAAK,CAACvS,KAJsB;AAK5CqD,WAAK,EAAEkP,KAAK,CAACjP,IAAN,IAAc;AALuB,KAAL,CAA3B;AAFT,GAAP;AAUD;;AAED,eAAeiR,QAAf,CAAwBz4H,QAAxB,EAAkC;AAChC,sBAAyC,MAAM,4GAA/C;AAAA,MAAM+4H,kBAAN,iBAAMA,kBAAN;AAAA,MAA0BC,UAA1B,iBAA0BA,UAA1B;;AAGA,QAAMA,UAAU,EAAhB;AAEA,MAAIX,MAAM,GAAG,EAAb;AACA,MAAIvP,QAAQ,GAAG,MAAM1sH,0DAAE,CAAC0B,QAAH,CAAYkC,QAAZ,CAArB;AAEA,MAAIve,IAAJ;;AACA,MAAI;AACFA,QAAI,GAAGs3I,kBAAkB,CAACjQ,QAAD,CAAzB;AACD,GAFD,CAEE,OAAOvqH,GAAP,EAAY;AACZ85H,UAAM,CAACp5I,IAAP,CAAY;AACVopC,aAAO,EAAE,uBADC;AAEVmgD,cAAQ,EAAEjqE,GAAG,CAACyyC;AAFJ,KAAZ;AAIA,WAAO;AAAEqnF;AAAF,KAAP;AACD;;AAED,SAAO;AACLA,UADK;AAELjW,gBAAY,EAAE3gI,IAAI,CAACtE,GAAL,CAASs5I,KAAK,KAAK;AAC/BpxI,YAAM,EAAEoxI,KAAK,CAACpxI,MADiB;AAE/B+lI,iBAAW,EAAEqL,KAAK,CAACwC,KAFY;AAG/B78I,UAAI,EAAEq6I,KAAK,CAACr6I,IAAN,GAAa88I,kEAAW,CAACzC,KAAK,CAACr6I,IAAN,GAAa,IAAd,CAAxB,GAA8C,IAHrB;AAI/By8I,gBAAU,EAAEpC,KAAK,CAACrzI,IAJa;AAK/B01I,oBAAc,EAAErC,KAAK,CAACrzI,IALS;AAM/BmkI,WAAK,EAAEkP,KAAK,CAACjP,IAAN,IAAc;AANU,KAAL,CAAd;AAFT,GAAP;AAWD,C;;;;;;;;;;;;ACnHD;AAAA;AAAA;AAAA;AAAA;AAEO,eAAevD,WAAf,CAA2BkV,WAA3B,EAAwC;AAC7C;AACA;AACA,MAAIC,GAAG,GAAG,MAAMxN,yCAAA,CACb,+DADa,EAEd,CAACuN,WAAW,CAAC1+G,WAAZ,EAAD,CAFc,CAAhB;;AAKA,MAAI2+G,GAAJ,EAAS;AACP,WAAOA,GAAG,CAAC3X,EAAX;AACD,GAFD,MAEO;AACL,WAAOmK,+CAAA,CAAe;AAAExoI,UAAI,EAAE+1I;AAAR,KAAf,CAAP;AACD;AACF;AAEM,eAAeE,uBAAf,GAAyC;AAC9C,MAAIxV,QAAQ,GAAG,MAAM+H,yCAAA,CAAU;AACjC;AACA;AACA;AACA;AACA,GALuB,CAArB;;AAMA,MAAI/H,QAAQ,KAAK,IAAjB,EAAuB;AACrBA,YAAQ,GAAG,MAAM+H,yCAAA,CACf,gEADe,CAAjB;AAGD;;AAED,MAAInK,EAAE,GAAG,MAAMwC,WAAW,CAAC,kBAAD,CAA1B;AACA,SAAO;AACLxC,MADK;AAELoC,YAAQ,EAAEA,QAAQ,GAAGA,QAAQ,CAACpC,EAAZ,GAAiB;AAF9B,GAAP;AAID,C;;;;;;;;;;;;ACnCD;AAAA;AAAe,SAAS/yH,KAAT,CAAe4qI,GAAf,EAAoBp+I,OAApB,EAA6B;AAC1C,MAAIqnC,KAAK,GAAG+2G,GAAG,CAAC7+H,KAAJ,CAAU,IAAV,CAAZ;AAAA,MACE8+H,IAAI,GAAGh3G,KAAK,CAACzhC,KAAN,EADT;AAAA,MAEEyV,IAAI,GAAG,iBAAiB+1B,IAAjB,CAAsBitG,IAAI,CAACt3G,IAAL,EAAtB,CAFT;AAAA,MAGExgC,IAAI,GAAG,EAHT;AAAA,MAIE2gI,YAAY,GAAI3gI,IAAI,CAAC2gI,YAAL,GAAoB,EAJtC;AAAA,MAKE4E,WAAW,GAAG,EALhB;AAOA9rI,SAAO,GAAGA,OAAO,IAAI,EAArB;;AAEA,MAAI,CAACqb,IAAD,IAAS,CAACA,IAAI,CAACnW,MAAnB,EAA2B;AACzB,UAAM,IAAIxB,KAAJ,CAAU,kDAAkD26I,IAA5D,CAAN;AACD;;AACD93I,MAAI,CAAC8U,IAAL,GAAYA,IAAI,CAAC,CAAD,CAAhB;AAEA,MAAIijI,QAAQ,GAAG,EAAf;;AAEA,SAAQD,IAAI,GAAGh3G,KAAK,CAACzhC,KAAN,EAAf,EAA+B;AAC7By4I,QAAI,GAAGA,IAAI,CAACt3G,IAAL,EAAP;;AACA,QAAIs3G,IAAI,KAAK,GAAb,EAAkB;AAChBnX,kBAAY,CAACnjI,IAAb,CAAkB+nI,WAAlB;AACAA,iBAAW,GAAG,EAAd;AACA;AACD;;AACD,YAAQuS,IAAI,CAAC,CAAD,CAAZ;AACE,WAAK,GAAL;AACEvS,mBAAW,CAAC5qI,IAAZ,GAAmBm9I,IAAI,CAACj8F,SAAL,CAAe,CAAf,CAAnB;AACA;;AACF,WAAK,GAAL;AACE0pF,mBAAW,CAAC3hI,MAAZ,GAAqBk0I,IAAI,CAACj8F,SAAL,CAAe,CAAf,CAArB;AACA;;AACF,WAAK,GAAL;AACE0pF,mBAAW,CAAC3uH,MAAZ,GAAqBkhI,IAAI,CAACj8F,SAAL,CAAe,CAAf,CAArB;AACA;;AACF,WAAK,GAAL;AACE0pF,mBAAW,CAACQ,IAAZ,GAAmB+R,IAAI,CAACj8F,SAAL,CAAe,CAAf,CAAnB;AACA;;AACF,WAAK,GAAL;AACE0pF,mBAAW,CAACyS,OAAZ,GAAsB,CAACzS,WAAW,CAACyS,OAAZ,IAAuB,EAAxB,EAA4BriH,MAA5B,CACpBmiH,IAAI,CAACj8F,SAAL,CAAe,CAAf,CADoB,CAAtB;AAGA;;AACF,WAAK,GAAL;AACE0pF,mBAAW,CAAC9C,KAAZ,GAAoBqV,IAAI,CAACj8F,SAAL,CAAe,CAAf,EAAkB5jC,OAAlB,CAA0B,QAA1B,EAAoC,GAApC,CAApB;AACA;;AACF,WAAK,GAAL;AACE,YAAIggI,MAAM,GAAGH,IAAI,CAACj8F,SAAL,CAAe,CAAf,EAAkB7iC,KAAlB,CAAwB,GAAxB,CAAb;AACAusH,mBAAW,CAACnD,QAAZ,GAAuB6V,MAAM,CAAC,CAAD,CAA7B;;AACA,YAAIA,MAAM,CAAC,CAAD,CAAN,KAActgJ,SAAlB,EAA6B;AAC3B4tI,qBAAW,CAAC2S,WAAZ,GAA0BD,MAAM,CAAC,CAAD,CAAhC;AACD;;AACD;;AACF,WAAK,GAAL;AACE1S,mBAAW,CAAC4S,aAAZ,GAA4BL,IAAI,CAACj8F,SAAL,CAAe,CAAf,CAA5B;AACA;;AACF,WAAK,GAAL;AACE,YAAIu8F,MAAM,GAAGN,IAAI,CAACj8F,SAAL,CAAe,CAAf,EAAkB7iC,KAAlB,CAAwB,GAAxB,CAAb;AACA++H,gBAAQ,CAAC3V,QAAT,GAAoBgW,MAAM,CAAC,CAAD,CAA1B;;AACA,YAAIA,MAAM,CAAC,CAAD,CAAN,KAAczgJ,SAAlB,EAA6B;AAC3BogJ,kBAAQ,CAACG,WAAT,GAAuBE,MAAM,CAAC,CAAD,CAA7B;AACD;;AACD;;AACF,WAAK,GAAL;AACEL,gBAAQ,CAACL,WAAT,GAAuBI,IAAI,CAACj8F,SAAL,CAAe,CAAf,CAAvB;AACA;;AACF,WAAK,GAAL;AACEk8F,gBAAQ,CAACn0I,MAAT,GAAkB2U,UAAU,CAACu/H,IAAI,CAACj8F,SAAL,CAAe,CAAf,CAAD,CAA5B;;AACA,YAAI,EAAE0pF,WAAW,CAACwS,QAAZ,YAAgCt7I,KAAlC,CAAJ,EAA8C;AAC5C8oI,qBAAW,CAACwS,QAAZ,GAAuB,EAAvB;AACD;;AACDxS,mBAAW,CAACwS,QAAZ,CAAqBv6I,IAArB,CAA0Bu6I,QAA1B;AACAA,gBAAQ,GAAG,EAAX;AAEA;;AAEF;AACE,cAAM,IAAI56I,KAAJ,CAAU,0BAA0B26I,IAAI,CAAC,CAAD,CAAxC,CAAN;AApDJ;AAsDD;;AAED,MAAIv8I,MAAM,CAACiS,IAAP,CAAY+3H,WAAZ,EAAyB5mI,MAA7B,EAAqC;AACnCgiI,gBAAY,CAACnjI,IAAb,CAAkB+nI,WAAlB;AACD;;AAEDvlI,MAAI,CAACq4I,UAAL,GAAkB5+I,OAAO,CAAC4+I,UAA1B;AACA,SAAOr4I,IAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtFD;AACA;AACA;AAUA;AACA;AACA;AACA;;AAEA,SAASs4I,UAAT,CAAoBvgH,CAApB,EAAuB;AACrB,SAAO3xB,KAAK,CAAC2xB,CAAD,CAAL,GAAW,IAAX,GAAkBA,CAAzB;AACD;;AAED,SAASwgH,YAAT,CAAsBxgH,CAAtB,EAAyB;AACvB,SAAOugH,UAAU,CAACv/H,QAAQ,CAACgf,CAAD,CAAT,CAAjB;AACD;;AAED,SAAS40C,MAAT,CAAgBxuD,IAAhB,EAAsBrJ,IAAtB,EAA4B+M,GAA5B,EAAiC;AAC/B,MAAI,CAAC1D,IAAL,EAAW;AACT,UAAM,IAAIq6H,iDAAJ,CAAc1jI,IAAd,EAAoB+M,GAApB,CAAN;AACD;AACF;;AAEM,SAAS42H,cAAT,CAAwBp9G,IAAxB,EAA8B;AACnC,MAAI;AACF,QAAIvtB,KAAK,GAAG4qI,gFAAsB,CAACr9G,IAAD,CAAlC;AAEA,WAAO;AACLvmB,UAAI,EAAE,OADD;AAEL5U,cAAQ,EAAE,IAAIy4I,wDAAJ,CAAc;AAAE/uI,cAAM,EAAEkE;AAAV,OAAd;AAFL,KAAP;AAID,GAPD,CAOE,OAAOmU,CAAP,EAAU;AACV,UAAM,IAAIu2H,iDAAJ,CAAc,kBAAd,EAAkCv2H,CAAC,CAAC2kB,OAApC,CAAN;AACD;AACF;AAEM,SAASgyG,eAAT,CAAyBh9G,GAAzB,EAA8B;AACnC,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAC3B,WAAO,IAAP;AACD,GAFD,MAEO,IAAIA,GAAG,CAACj9B,MAAJ,KAAe,EAAnB,EAAuB;AAC5B;AACA,QAAI,CAACk6I,gDAAA,CAAgBA,iDAAA,CAAiBj9G,GAAjB,CAAhB,CAAL,EAA6C;AAC3C,aAAO,IAAP;AACD;;AAED,WAAO;AAAE9mB,UAAI,EAAE,MAAR;AAAgBna,UAAI,EAAEihC;AAAtB,KAAP;AACD,GAPM,MAOA,IAAIA,GAAG,CAACj9B,MAAJ,KAAe,CAAnB,EAAsB;AAC3B;AACA,QAAI,CAACk6I,gDAAA,CAAgBA,iDAAA,CAAiBj9G,GAAG,GAAG,KAAvB,CAAhB,CAAL,EAAqD;AACnD,aAAO,IAAP;AACD;;AAED,WAAO;AAAE9mB,UAAI,EAAE,OAAR;AAAiBna,UAAI,EAAEihC;AAAvB,KAAP;AACD,GAPM,MAOA,IAAIA,GAAG,CAACj9B,MAAJ,KAAe,CAAnB,EAAsB;AAC3B;AACA,QAAI,CAACk6I,gDAAA,CAAgBA,iDAAA,CAAiBj9G,GAAG,GAAG,QAAvB,CAAhB,CAAL,EAAwD;AACtD,aAAO,IAAP;AACD;;AAED,WAAO;AAAE9mB,UAAI,EAAE,MAAR;AAAgBna,UAAI,EAAEihC;AAAtB,KAAP;AACD;;AAED,SAAO,IAAP;AACD;AAEM,SAASk9G,kBAAT,CAA4BC,OAA5B,EAAqC;AAC1C,MAAMC,IAAN,GAAqBD,OAArB,CAAMC,IAAN;AAAA,MAAYC,IAAZ,GAAqBF,OAArB,CAAYE,IAAZ;;AACA,MAAI,OAAOD,IAAP,KAAgB,QAAhB,IAA4B,OAAOC,IAAP,KAAgB,QAAhD,EAA0D;AACxD,WAAO,IAAP;AACD;;AACD,SAAO;AAAEnkI,QAAI,EAAE,SAAR;AAAmBkkI,QAAnB;AAAyBC;AAAzB,GAAP;AACD;AAED,IAAIC,eAAe,GAAG;AACpBv+I,MAAI,EAAE;AACJw+I,OAAG,EAAE,CAAC,IAAD,EAAO,UAAP,EAAmB,IAAnB,EAAyB,KAAzB,EAAgC,IAAhC,EAAsC,KAAtC,CADD;AAEJC,YAAQ,EAAE,KAFN;;AAGJnsI,SAAK,CAACosI,EAAD,EAAKnhJ,KAAL,EAAYm6G,SAAZ,EAAuB;AAC1B,UAAIy4B,MAAM,GACR,OAAO5yI,KAAP,KAAiB,QAAjB,GACI0gJ,eAAe,CAAC1gJ,KAAD,CADnB,GAEIA,KAAK,CAAC2W,SAAN,IAAmB,IAAnB,GACA4pI,cAAc,CAACvgJ,KAAD,CADd,GAEA,IALN;AAMAy0E,YAAM,CACJm+D,MADI,EAEJ,aAFI,EAGH,+BAA8Bz4B,SAAU,GAHrC,CAAN,CAP0B,CAa1B;;AACA,UAAIgnC,EAAE,KAAK,UAAX,EAAuB;AACrB1sE,cAAM,CACJm+D,MAAM,CAACh2H,IAAP,KAAgB,MAAhB,IAA0Bg2H,MAAM,CAACh2H,IAAP,KAAgB,OADtC,EAEJ,aAFI,EAGH,6CAA4Cu9F,SAAU,GAHnD,CAAN;AAKD,OAND,CAOA;AAPA,WAQK,IAAIgnC,EAAE,KAAK,IAAP,IAAeA,EAAE,KAAK,KAAtB,IAA+BA,EAAE,KAAK,IAAtC,IAA8CA,EAAE,KAAK,KAAzD,EAAgE;AACnE1sE,cAAM,CACJm+D,MAAM,CAACh2H,IAAP,KAAgB,MADZ,EAEJ,aAFI,EAGH,2BAA0BukI,EAAG,aAAYhnC,SAAU,GAHhD,CAAN;AAKD;;AAED,aAAOy4B,MAAP;AACD;;AAlCG,GADc;AAqCpB9K,IAAE,EAAE;AACFmZ,OAAG,EAAE,CAAC,IAAD,EAAO,UAAP,EAAmB,OAAnB,CADH;AAEFC,YAAQ,EAAE,IAFR;;AAGFnsI,SAAK,CAACosI,EAAD,EAAKnhJ,KAAL,EAAYm6G,SAAZ,EAAuB;AAC1B,UAAIgnC,EAAE,KAAK,OAAX,EAAoB;AAClB1sE,cAAM,CACJlwE,KAAK,CAACwD,OAAN,CAAc/H,KAAd,CADI,EAEJ,gBAFI,EAGH,0CAAyCm6G,SAAU,GAHhD,CAAN;AAKA,eAAOn6G,KAAP;AACD;;AACD,aAAOA,KAAP;AACD;;AAbC,GArCgB;AAoDpB4vC,QAAM,EAAE;AACNqxG,OAAG,EAAE,CAAC,IAAD,EAAO,UAAP,EAAmB,OAAnB,CADC;AAENC,YAAQ,EAAE,KAFJ;;AAGNnsI,SAAK,CAACosI,EAAD,EAAKnhJ,KAAL,EAAYm6G,SAAZ,EAAuB;AAC1B,UAAIgnC,EAAE,KAAK,OAAX,EAAoB;AAClB1sE,cAAM,CACJlwE,KAAK,CAACwD,OAAN,CAAc/H,KAAd,CADI,EAEJ,gBAFI,EAGH,0CAAyCm6G,SAAU,MAAK9rG,IAAI,CAACC,SAAL,CACvDtO,KADuD,CAEvD,EALE,CAAN;AAOA,eAAOA,KAAK,CAACkH,MAAN,CAAaw9C,OAAb,EAAsBlhD,GAAtB,CAA0Bic,GAAG,IAAIA,GAAG,CAACqhB,WAAJ,EAAjC,CAAP;AACD;;AAED,UAAIqgH,EAAE,KAAK,UAAX,EAAuB;AACrB1sE,cAAM,CACJ,OAAOz0E,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACyG,MAAN,GAAe,CADxC,EAEJ,iBAFI,EAGH,+CAA8C0zG,SAAU,GAHrD,CAAN;AAKD;;AAED,aAAOn6G,KAAK,CAAC8gC,WAAN,EAAP;AACD;;AAxBK,GApDY;AA8EpBpiB,QAAM,EAAE;AACNuiI,OAAG,EAAE,CAAC,IAAD,EAAO,UAAP,EAAmB,WAAnB,EAAgC,IAAhC,EAAsC,KAAtC,EAA6C,IAA7C,EAAmD,KAAnD,CADC;AAENC,YAAQ,EAAE,KAFJ;;AAGNnsI,SAAK,CAACosI,EAAD,EAAKnhJ,KAAL,EAAYm6G,SAAZ,EAAuB;AAC1B,UAAIy4B,MAAM,GACR,OAAO5yI,KAAP,KAAiB,QAAjB,GACI;AAAE4c,YAAI,EAAE,SAAR;AAAmB5c;AAAnB,OADJ,GAEI4gJ,kBAAkB,CAAC5gJ,KAAD,CAHxB;AAKAy0E,YAAM,CACJm+D,MAAM,IAAI,IADN,EAEJ,YAFI,EAGH,6CAA4CvkI,IAAI,CAACC,SAAL,CAC3CtO,KAD2C,CAE3C,YAAWm6G,SAAU,GALnB,CAAN;;AAQA,UAAIgnC,EAAE,KAAK,WAAX,EAAwB;AACtB1sE,cAAM,CACJm+D,MAAM,CAACh2H,IAAP,KAAgB,SADZ,EAEJ,eAFI,EAGH,8BAA6BukI,EAAG,aAAYhnC,SAAU,GAHnD,CAAN;AAKD,OAND,MAMO;AACL1lC,cAAM,CACJm+D,MAAM,CAACh2H,IAAP,KAAgB,SADZ,EAEJ,eAFI,EAGH,6BAA4BukI,EAAG,aAAYhnC,SAAU,GAHlD,CAAN;AAKD;;AAED,aAAOy4B,MAAP;AACD;;AAhCK,GA9EY;AAgHpBjjG,SAAO,EAAE;AACPsxG,OAAG,EAAE,CAAC,IAAD,CADE;AAEPC,YAAQ,EAAE,KAFH;;AAGPnsI,SAAK,CAACosI,EAAD,EAAKnhJ,KAAL,EAAYm6G,SAAZ,EAAuB;AAC1B1lC,YAAM,CACJ,OAAOz0E,KAAP,KAAiB,SADb,EAEJ,aAFI,EAGH,4BAA2BA,KAAM,YAAWm6G,SAAU,GAHnD,CAAN;AAMA,aAAOn6G,KAAP;AACD;;AAXM;AAhHW,CAAtB;AA+HO,MAAMohJ,SAAN,CAAgB;AACrB9hJ,aAAW,CAAC6hJ,EAAD,EAAK13G,KAAL,EAAYzpC,KAAZ,EAAmBuB,OAAnB,EAA4B8/I,UAA5B,EAAwC;AACjD,QAAIC,QAAQ,GAAGD,UAAU,CAAC3+I,GAAX,CAAe+mC,KAAf,CAAf;AACAgrC,UAAM,CAAC6sE,QAAD,EAAW,UAAX,EAAuB,8BAA8B73G,KAArD,CAAN;AAEA,QAAI7sB,IAAI,GAAGokI,eAAe,CAACM,QAAD,CAA1B,CAJiD,CAMjD;AACA;;AACA7sE,UAAM,CACJ73D,IADI,EAEJ,UAFI,EAGH,2BAA0B0kI,QAAS,YAAW73G,KAAM,GAHjD,CAAN;AAKAgrC,UAAM,CACJ73D,IAAI,CAACqkI,GAAL,CAAS/oI,QAAT,CAAkBipI,EAAlB,CADI,EAEJ,UAFI,EAGH,+BAA8BA,EAAG,WAAUG,QAAS,YAAW73G,KAAM,GAHlE,CAAN;;AAMA,QAAI7sB,IAAI,CAACskI,QAAL,KAAkB,IAAtB,EAA4B;AAC1BzsE,YAAM,CAACz0E,KAAK,IAAI,IAAV,EAAgB,SAAhB,EAA4B,0BAAyBypC,KAAM,EAA3D,CAAN;AACD,KArBgD,CAuBjD;;;AACA,QAAI63G,QAAQ,KAAK,QAAb,IAAyB1kI,IAAI,CAACskI,QAAL,KAAkB,IAA/C,EAAqD;AACnDzsE,YAAM,CAACz0E,KAAK,KAAK,EAAX,EAAe,SAAf,EAA2B,0BAAyBypC,KAAM,EAA1D,CAAN;AACD;;AAED,SAAK83G,QAAL,GAAgBvhJ,KAAhB;AACA,SAAKwhJ,aAAL,GAAqBxhJ,KAArB;AACA,SAAKmhJ,EAAL,GAAUA,EAAV;AACA,SAAK13G,KAAL,GAAaA,KAAb;AACA,SAAKzpC,KAAL,GAAa4c,IAAI,CAAC7H,KAAL,GAAa6H,IAAI,CAAC7H,KAAL,CAAWosI,EAAX,EAAenhJ,KAAf,EAAsBypC,KAAtB,CAAb,GAA4CzpC,KAAzD;AACA,SAAKuB,OAAL,GAAeA,OAAf;AACA,SAAKqb,IAAL,GAAY0kI,QAAZ;AACD;;AAEDthF,MAAI,CAACz0D,MAAD,EAAS;AACX,QAAIk2I,UAAU,GAAGl2I,MAAM,CAAC,KAAKk+B,KAAN,CAAvB;;AACA,QAAIg4G,UAAU,KAAKhiJ,SAAnB,EAA8B;AAC5B,aAAO,KAAP;AACD;;AAED,QAAI,OAAOgiJ,UAAP,KAAsB,QAA1B,EAAoC;AAClCA,gBAAU,GAAGA,UAAU,CAAC3gH,WAAX,EAAb;AACD;;AAED,QAAIlkB,IAAI,GAAG,KAAKA,IAAhB;;AAEA,QAAIA,IAAI,KAAK,QAAT,IAAqB,KAAKrb,OAA9B,EAAuC;AACrC,UAAI,KAAKA,OAAL,CAAamgJ,OAAjB,EAA0B;AACxB,YAAID,UAAU,GAAG,CAAjB,EAAoB;AAClB,iBAAO,KAAP;AACD;;AAEDA,kBAAU,GAAG,CAACA,UAAd;AACD,OAND,MAMO,IAAI,KAAKlgJ,OAAL,CAAaogJ,MAAjB,EAAyB;AAC9B,YAAIF,UAAU,GAAG,CAAjB,EAAoB;AAClB,iBAAO,KAAP;AACD;AACF;AACF;;AAED,QAAIG,YAAY,GAAGx3G,CAAC,IAAKxtB,IAAI,KAAK,QAAT,GAAoBwtB,CAAC,CAACpqC,KAAtB,GAA8BoqC,CAAvD;;AAEA,YAAQ,KAAK+2G,EAAb;AACE,WAAK,UAAL;AACA,WAAK,IAAL;AACE,YAAIvkI,IAAI,KAAK,MAAb,EAAqB;AACnB,cAAI6kI,UAAU,IAAI,IAAlB,EAAwB;AACtB,mBAAO,KAAP;AACD;;AAED,cAAI,KAAKzhJ,KAAL,CAAW4c,IAAX,KAAoB,OAAxB,EAAiC;AAC/B,gBAAM5U,QAAN,GAAmB,KAAKhI,KAAxB,CAAMgI,QAAN;;AACA,gBAAI,KAAKm5I,EAAL,KAAY,UAAhB,EAA4B;AAC1B,kBAAIU,SAAS,GAAGpuF,gEAAS,CAACguF,UAAD,CAAzB;AACA,qBAAOz5I,QAAQ,CAAC5G,aAAT,CACLu/I,gDAAA,CAAgBkB,SAAhB,EAA2B,CAA3B,CADK,EAELlB,gDAAA,CAAgBkB,SAAhB,EAA2B,CAA3B,CAFK,CAAP;AAID,aAND,MAMO;AACL,qBAAO75I,QAAQ,CAAC/F,QAAT,CAAkB;AAAEQ,oBAAI,EAAEgxD,gEAAS,CAACguF,UAAD;AAAjB,eAAlB,CAAP;AACD;AACF,WAXD,MAWO;AACL,gBAAMh/I,IAAN,GAAe,KAAKzC,KAApB,CAAMyC,IAAN;;AAEA,gBAAI,KAAK0+I,EAAL,KAAY,UAAhB,EAA4B;AAC1B,kBAAIW,QAAQ,GAAGruF,gEAAS,CAAChxD,IAAD,CAAxB;AACA,kBAAIs/I,IAAI,GAAG/lG,8DAAO,CAAC8lG,QAAD,EAAW,CAAX,CAAlB;AACA,kBAAIE,GAAG,GAAGprF,8DAAO,CAACkrF,QAAD,EAAW,CAAX,CAAjB;AAEA,qBAAOL,UAAU,IAAIO,GAAd,IAAqBP,UAAU,IAAIM,IAA1C;AACD,aAND,MAMO;AACL,sBAAQ,KAAK/hJ,KAAL,CAAW4c,IAAnB;AACE,qBAAK,MAAL;AACE,yBAAO6kI,UAAU,KAAKh/I,IAAtB;;AACF,qBAAK,OAAL;AACE,yBAAO6oI,oEAAa,CAACmW,UAAD,CAAb,KAA8Bh/I,IAArC;;AACF,qBAAK,MAAL;AACE,yBAAOw/I,mEAAY,CAACR,UAAD,CAAZ,KAA6Bh/I,IAApC;;AACF;AAPF;AASD;AACF;AACF,SArCD,MAqCO,IAAIma,IAAI,KAAK,QAAb,EAAuB;AAC5B,cAAI8B,MAAM,GAAG,KAAK1e,KAAL,CAAWA,KAAxB;;AACA,cAAI,KAAKmhJ,EAAL,KAAY,UAAhB,EAA4B;AAC1B,gBAAIe,SAAS,GAAGC,8EAAwB,CAACzjI,MAAD,CAAxC;AACA,mBACE+iI,UAAU,IAAI/iI,MAAM,GAAGwjI,SAAvB,IACAT,UAAU,IAAI/iI,MAAM,GAAGwjI,SAFzB;AAID;;AACD,iBAAOT,UAAU,KAAK/iI,MAAtB;AACD;;AAED,eAAO+iI,UAAU,KAAK,KAAKzhJ,KAA3B;;AACF,WAAK,WAAL;AAAkB;AAChB;AACA;AACA,6BAAkBoiJ,iEAAW,CAAC,KAAKpiJ,KAAL,CAAW8gJ,IAAZ,EAAkB,KAAK9gJ,KAAL,CAAW+gJ,IAA7B,CAA7B;AAAA;AAAA,cAAKiB,GAAL;AAAA,cAAUD,IAAV;;AACA,iBAAON,UAAU,IAAIO,GAAd,IAAqBP,UAAU,IAAIM,IAA1C;AACD;;AACD,WAAK,UAAL;AACE,YAAIN,UAAU,KAAK,IAAnB,EAAyB;AACvB,iBAAO,KAAP;AACD;;AACD,eAAOA,UAAU,CAAChzI,OAAX,CAAmB,KAAKzO,KAAxB,MAAmC,CAAC,CAA3C;;AACF,WAAK,OAAL;AACE,YAAIyhJ,UAAU,KAAK,IAAnB,EAAyB;AACvB,iBAAO,KAAP;AACD;;AACD,eAAO,KAAKzhJ,KAAL,CAAWyO,OAAX,CAAmBgzI,UAAnB,MAAmC,CAAC,CAA3C;;AACF,WAAK,IAAL;AACE,YAAIA,UAAU,KAAK,IAAnB,EAAyB;AACvB,iBAAO,KAAP;AACD,SAFD,MAEO,IAAI7kI,IAAI,KAAK,MAAb,EAAqB;AAC1B,iBAAO9Z,8DAAO,CAAC2+I,UAAD,EAAa,KAAKzhJ,KAAL,CAAWyC,IAAxB,CAAd;AACD;;AAED,eAAOg/I,UAAU,GAAGG,YAAY,CAAC,KAAK5hJ,KAAN,CAAhC;;AACF,WAAK,KAAL;AACE,YAAIyhJ,UAAU,KAAK,IAAnB,EAAyB;AACvB,iBAAO,KAAP;AACD,SAFD,MAEO,IAAI7kI,IAAI,KAAK,MAAb,EAAqB;AAC1B,iBACE6kI,UAAU,KAAK,KAAKzhJ,KAAL,CAAWyC,IAA1B,IACAK,8DAAO,CAAC2+I,UAAD,EAAa,KAAKzhJ,KAAL,CAAWyC,IAAxB,CAFT;AAID;;AAED,eAAOg/I,UAAU,IAAIG,YAAY,CAAC,KAAK5hJ,KAAN,CAAjC;;AACF,WAAK,IAAL;AACE,YAAIyhJ,UAAU,KAAK,IAAnB,EAAyB;AACvB,iBAAO,KAAP;AACD,SAFD,MAEO,IAAI7kI,IAAI,KAAK,MAAb,EAAqB;AAC1B,iBAAO7a,+DAAQ,CAAC0/I,UAAD,EAAa,KAAKzhJ,KAAL,CAAWyC,IAAxB,CAAf;AACD;;AACD,eAAOg/I,UAAU,GAAGG,YAAY,CAAC,KAAK5hJ,KAAN,CAAhC;;AACF,WAAK,KAAL;AACE,YAAIyhJ,UAAU,KAAK,IAAnB,EAAyB;AACvB,iBAAO,KAAP;AACD,SAFD,MAEO,IAAI7kI,IAAI,KAAK,MAAb,EAAqB;AAC1B,iBACE6kI,UAAU,KAAK,KAAKzhJ,KAAL,CAAWyC,IAA1B,IACAV,+DAAQ,CAAC0/I,UAAD,EAAa,KAAKzhJ,KAAL,CAAWyC,IAAxB,CAFV;AAID;;AACD,eAAOg/I,UAAU,IAAIG,YAAY,CAAC,KAAK5hJ,KAAN,CAAjC;;AACF;AAzGF;;AA4GA,WAAO,KAAP;AACD;;AAEDkyI,UAAQ,GAAG;AACT,WAAO,KAAKlyI,KAAZ;AACD;;AAED0c,WAAS,GAAG;AACV;AACEykI,QAAE,EAAE,KAAKA,EADX;AAEE13G,WAAK,EAAE,KAAKA,KAFd;AAGEzpC,WAAK,EAAE,KAAKwhJ,aAHd;AAIE5kI,UAAI,EAAE,KAAKA;AAJb,OAKM,KAAKrb,OAAL,GAAe;AAAEA,aAAO,EAAE,KAAKA;AAAhB,KAAf,GAA2C,IALjD;AAOD;;AA7LoB;AAgMvB,IAAI8gJ,UAAU,GAAG,CAAC,KAAD,EAAQ,eAAR,CAAjB;AAEO,MAAMC,MAAN,CAAa;AAClBhjJ,aAAW,CAAC6hJ,EAAD,EAAK13G,KAAL,EAAYzpC,KAAZ,EAAmBuB,OAAnB,EAA4B8/I,UAA5B,EAAwC;AACjD5sE,UAAM,CACJ4tE,UAAU,CAACnqI,QAAX,CAAoBipI,EAApB,CADI,EAEJ,UAFI,EAGH,6BAA4BA,EAAG,EAH5B,CAAN;;AAMA,QAAIA,EAAE,KAAK,KAAX,EAAkB;AAChB,UAAIG,QAAQ,GAAGD,UAAU,CAAC3+I,GAAX,CAAe+mC,KAAf,CAAf;AACAgrC,YAAM,CAAC6sE,QAAD,EAAW,UAAX,EAAwB,6BAA4B73G,KAAM,EAA1D,CAAN;AACA,WAAKA,KAAL,GAAaA,KAAb;AACA,WAAK7sB,IAAL,GAAY0kI,QAAZ;AACD,KALD,MAKO,IAAIH,EAAE,KAAK,eAAX,EAA4B;AACjC,WAAK13G,KAAL,GAAa,IAAb;AACA,WAAK7sB,IAAL,GAAY,IAAZ;AACD;;AAED,SAAKukI,EAAL,GAAUA,EAAV;AACA,SAAKI,QAAL,GAAgBvhJ,KAAhB;AACA,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKuB,OAAL,GAAeA,OAAf;AACD;;AAEDoxC,MAAI,CAACpnC,MAAD,EAAS;AACX,YAAQ,KAAK41I,EAAb;AACE,WAAK,KAAL;AACE51I,cAAM,CAAC,KAAKk+B,KAAN,CAAN,GAAqB,KAAKzpC,KAA1B;AACA;;AACF,WAAK,eAAL;AACEuL,cAAM,CAACvD,QAAP,GAAkB,KAAKhI,KAAvB;AACA;;AACF;AAPF;AASD;;AAED0c,WAAS,GAAG;AACV;AACEykI,QAAE,EAAE,KAAKA,EADX;AAEE13G,WAAK,EAAE,KAAKA,KAFd;AAGEzpC,WAAK,EAAE,KAAKA,KAHd;AAIE4c,UAAI,EAAE,KAAKA;AAJb,OAKM,KAAKrb,OAAL,GAAe;AAAEA,aAAO,EAAE,KAAKA;AAAhB,KAAf,GAA2C,IALjD;AAOD;;AA5CiB;AA+Cb,MAAMqP,IAAN,CAAW;AAChBtR,aAAW,CAAC;AAAEwoI,MAAF;AAAMya,SAAN;AAAaC,cAAb;AAAyBC,WAAzB;AAAkCpB;AAAlC,GAAD,EAAiD;AAC1D,SAAKvZ,EAAL,GAAUA,EAAV;AACA,SAAKya,KAAL,GAAaA,KAAb;AACA,SAAKC,UAAL,GAAkBA,UAAU,CAACh/I,GAAX,CAChBuxB,CAAC,IAAI,IAAIqsH,SAAJ,CAAcrsH,CAAC,CAACosH,EAAhB,EAAoBpsH,CAAC,CAAC0U,KAAtB,EAA6B1U,CAAC,CAAC/0B,KAA/B,EAAsC+0B,CAAC,CAACxzB,OAAxC,EAAiD8/I,UAAjD,CADW,CAAlB;AAGA,SAAKoB,OAAL,GAAeA,OAAO,CAACj/I,GAAR,CACbqD,CAAC,IAAI,IAAIy7I,MAAJ,CAAWz7I,CAAC,CAACs6I,EAAb,EAAiBt6I,CAAC,CAAC4iC,KAAnB,EAA0B5iC,CAAC,CAAC7G,KAA5B,EAAmC6G,CAAC,CAACtF,OAArC,EAA8C8/I,UAA9C,CADQ,CAAf;AAGD;;AAEDqB,gBAAc,CAACn3I,MAAD,EAAS;AACrB,QAAI,KAAKi3I,UAAL,CAAgB/7I,MAAhB,KAA2B,CAA/B,EAAkC;AAChC,aAAO,KAAP;AACD;;AAED,WAAO,KAAK+7I,UAAL,CAAgB97I,KAAhB,CAAsBi8I,SAAS,IAAI;AACxC,aAAOA,SAAS,CAAC3iF,IAAV,CAAez0D,MAAf,CAAP;AACD,KAFM,CAAP;AAGD;;AAEDq3I,aAAW,CAACr3I,MAAD,EAAS;AAClB,QAAI0vI,OAAO,GAAG,EAAd;AACA,SAAKwH,OAAL,CAAa9vI,OAAb,CAAqBqjF,MAAM,IAAIA,MAAM,CAACrjD,IAAP,CAAYsoG,OAAZ,CAA/B;AACA,WAAOA,OAAP;AACD;;AAEDtoG,MAAI,CAACpnC,MAAD,EAAS;AACX,QAAI,KAAKm3I,cAAL,CAAoBn3I,MAApB,CAAJ,EAAiC;AAC/B,aAAO,KAAKq3I,WAAL,CAAiBr3I,MAAjB,CAAP;AACD;;AACD,WAAO,IAAP;AACD,GAjCe,CAmChB;;;AACA+3B,OAAK,CAAC/3B,MAAD,EAAS;AACZ,QAAI0vI,OAAO,GAAG,KAAKtoG,IAAL,CAAUpnC,MAAV,CAAd;AACA,WAAOlI,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBiI,MAAlB,EAA0B0vI,OAA1B,CAAP;AACD;;AAED4H,OAAK,GAAG;AACN,WAAO,KAAK/a,EAAZ;AACD;;AAEDprH,WAAS,GAAG;AACV,WAAO;AACLorH,QAAE,EAAE,KAAKA,EADJ;AAELya,WAAK,EAAE,KAAKA,KAFP;AAGLC,gBAAU,EAAE,KAAKA,UAAL,CAAgBh/I,GAAhB,CAAoBuxB,CAAC,IAAIA,CAAC,CAACrY,SAAF,EAAzB,CAHP;AAIL+lI,aAAO,EAAE,KAAKA,OAAL,CAAaj/I,GAAb,CAAiBqD,CAAC,IAAIA,CAAC,CAAC6V,SAAF,EAAtB;AAJJ,KAAP;AAMD;;AApDe;AAuDX,MAAMomI,WAAN,CAAkB;AACvBxjJ,aAAW,CAAC;AAAEmqC,SAAF;AAAS1lC;AAAT,GAAD,EAAoB;AAC7B,SAAK0lC,KAAL,GAAaA,KAAb;AACA,SAAK1lC,MAAL,GAAcA,MAAd;AACA,SAAK6R,KAAL,GAAa,IAAItB,GAAJ,EAAb;AACD;;AAEDyuI,UAAQ,CAACxtI,GAAD,EAAM;AACZ,QAAI,CAAC,KAAKK,KAAL,CAAW6C,GAAX,CAAelD,GAAf,CAAL,EAA0B;AACxB,WAAKK,KAAL,CAAW3P,GAAX,CAAesP,GAAf,EAAoB,IAAIuF,GAAJ,EAApB;AACD;;AACD,WAAO,KAAKlF,KAAL,CAAWlT,GAAX,CAAe6S,GAAf,CAAP;AACD;;AAEDytI,kBAAgB,CAAChjJ,KAAD,EAAQ;AACtB,WAAO,KAAK+iJ,QAAL,CAAc,KAAKE,MAAL,CAAYjjJ,KAAZ,KAAsB,GAApC,CAAP;AACD;;AAEDijJ,QAAM,CAACjjJ,KAAD,EAAQ;AACZ,QAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,EAA3C,EAA+C;AAC7C,UAAI,KAAK+D,MAAL,KAAgB,WAApB,EAAiC;AAC/B,eAAO/D,KAAK,CAAC,CAAD,CAAL,CAAS8gC,WAAT,EAAP;AACD;;AACD,aAAO9gC,KAAK,CAAC8gC,WAAN,EAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAEDoiH,YAAU,CAACpxI,IAAD,EAAO;AACf,QAAIqxI,IAAI,GAAGrxI,IAAI,CAAC0wI,UAAL,CAAgBrmI,IAAhB,CAAqBgnI,IAAI,IAAIA,IAAI,CAAC15G,KAAL,KAAe,KAAKA,KAAjD,CAAX;AACA,QAAI25G,OAAO,GAAG,EAAd;;AAEA,QAAID,IAAI,KAAKA,IAAI,CAAChC,EAAL,KAAY,OAAZ,IAAuBgC,IAAI,CAAChC,EAAL,KAAY,IAAxC,CAAR,EAAuD;AACrD,UAAIgC,IAAI,CAAChC,EAAL,KAAY,OAAhB,EAAyB;AACvBgC,YAAI,CAACnjJ,KAAL,CAAW2S,OAAX,CAAmB8M,GAAG,IAAI2jI,OAAO,CAAC99I,IAAR,CAAa,KAAK09I,gBAAL,CAAsBvjI,GAAtB,CAAb,CAA1B;AACD,OAFD,MAEO;AACL2jI,eAAO,CAAC99I,IAAR,CAAa,KAAK09I,gBAAL,CAAsBG,IAAI,CAACnjJ,KAA3B,CAAb;AACD;AACF,KAND,MAMO;AACLojJ,aAAO,CAAC99I,IAAR,CAAa,KAAKy9I,QAAL,CAAc,GAAd,CAAb;AACD;;AAED,WAAOK,OAAP;AACD;;AAED59I,OAAK,CAACsM,IAAD,EAAO;AACV,QAAIsxI,OAAO,GAAG,KAAKF,UAAL,CAAgBpxI,IAAhB,CAAd;AACAsxI,WAAO,CAACzwI,OAAR,CAAgBnN,KAAK,IAAI;AACvBA,WAAK,CAAChD,GAAN,CAAUsP,IAAV;AACD,KAFD;AAGD;;AAEDtJ,QAAM,CAACsJ,IAAD,EAAO;AACX,QAAIsxI,OAAO,GAAG,KAAKF,UAAL,CAAgBpxI,IAAhB,CAAd;AACAsxI,WAAO,CAACzwI,OAAR,CAAgBnN,KAAK,IAAI;AACvBA,WAAK,CAACmlB,MAAN,CAAa7Y,IAAb;AACD,KAFD;AAGD;;AAEDuxI,oBAAkB,CAAC93I,MAAD,EAAS;AACzB,QAAI+3I,YAAJ;;AACA,QAAI,KAAK75G,KAAL,IAAcl+B,MAAlB,EAA0B;AACxB,UAAIgK,GAAG,GAAG,KAAK0tI,MAAL,CAAY13I,MAAM,CAAC,KAAKk+B,KAAN,CAAlB,CAAV;;AACA,UAAIl0B,GAAJ,EAAS;AACP+tI,oBAAY,GAAG,KAAK1tI,KAAL,CAAWlT,GAAX,CAAe6S,GAAf,CAAf;AACD;AACF;;AAED,WAAOguI,iEAAY,CACjBD,YAAY,IAAI,IAAIxoI,GAAJ,EADC,EAEjB,KAAKlF,KAAL,CAAWlT,GAAX,CAAe,GAAf,KAAuB,IAAIoY,GAAJ,EAFN,CAAnB;AAID;;AAxEsB;AA2EzB,MAAM0oI,SAAS,GAAG;AAChBhsF,IAAE,EAAE,EADY;AAEhBisF,OAAK,EAAE,CAFS;AAGhBC,UAAQ,EAAE,CAHM;AAIhBC,WAAS,EAAE,CAJK;AAKhBC,IAAE,EAAE,CALY;AAMhBC,KAAG,EAAE,CANW;AAOhBC,IAAE,EAAE,CAPY;AAQhBC,KAAG,EAAE,CARW;AAShBvyE,UAAQ,EAAE;AATM,CAAlB;;AAYA,SAASwyE,YAAT,CAAsBlyI,IAAtB,EAA4B;AAC1B,MAAImyI,YAAY,GAAGnyI,IAAI,CAAC0wI,UAAL,CAAgB9hJ,MAAhB,CAAuB,CAACwjJ,KAAD,EAAQvB,SAAR,KAAsB;AAC9D,QAAIa,SAAS,CAACb,SAAS,CAACxB,EAAX,CAAT,IAA2B,IAA/B,EAAqC;AACnChmH,aAAO,CAACsrE,GAAR,CAAa,0CAAyCk8C,SAAS,CAACxB,EAAG,EAAnE;AACA,aAAO,CAAP;AACD;;AAED,WAAO+C,KAAK,GAAGV,SAAS,CAACb,SAAS,CAACxB,EAAX,CAAxB;AACD,GAPkB,EAOhB,CAPgB,CAAnB;;AASA,MACErvI,IAAI,CAAC0wI,UAAL,CAAgB97I,KAAhB,CACEy8I,IAAI,IAAIA,IAAI,CAAChC,EAAL,KAAY,IAAZ,IAAoBgC,IAAI,CAAChC,EAAL,KAAY,UAAhC,IAA8CgC,IAAI,CAAChC,EAAL,KAAY,OADpE,CADF,EAIE;AACA,WAAO8C,YAAY,GAAG,CAAtB;AACD;;AACD,SAAOA,YAAP;AACD;;AAED,SAASE,UAAT,CAAoBvuI,KAApB,EAA2B;AACzB,MAAIwuI,MAAM,GAAG,IAAI9vI,GAAJ,EAAb;AACAsB,OAAK,CAACjD,OAAN,CAAcb,IAAI,IAAI;AACpBsyI,UAAM,CAACn+I,GAAP,CAAW6L,IAAX,EAAiBkyI,YAAY,CAAClyI,IAAD,CAA7B;AACD,GAFD,EAFyB,CAMzB;AACA;AACA;;AACA,SAAO,CAAC,GAAG8D,KAAJ,EAAW3O,IAAX,CAAgB,CAACo9I,EAAD,EAAKC,EAAL,KAAY;AACjC,QAAIC,MAAM,GAAGH,MAAM,CAAC1hJ,GAAP,CAAW2hJ,EAAX,CAAb;AACA,QAAIG,MAAM,GAAGJ,MAAM,CAAC1hJ,GAAP,CAAW4hJ,EAAX,CAAb;;AACA,QAAIC,MAAM,GAAGC,MAAb,EAAqB;AACnB,aAAO,CAAC,CAAR;AACD,KAFD,MAEO,IAAID,MAAM,GAAGC,MAAb,EAAqB;AAC1B,aAAO,CAAP;AACD,KAFM,MAEA;AACL,UAAIC,GAAG,GAAGJ,EAAE,CAACxB,KAAH,EAAV;AACA,UAAI6B,GAAG,GAAGJ,EAAE,CAACzB,KAAH,EAAV;AACA,aAAO4B,GAAG,GAAGC,GAAN,GAAY,CAAC,CAAb,GAAiBD,GAAG,GAAGC,GAAN,GAAY,CAAZ,GAAgB,CAAxC;AACD;AACF,GAZM,CAAP;AAaD;;AAEM,SAASC,SAAT,CAAmB/uI,KAAnB,EAA0B;AAC/B,MAAIgvI,GAAG,GAAG,EAAV;AACA,MAAIC,MAAM,GAAG,EAAb;AACA,MAAIvH,IAAI,GAAG,EAAX;;AAEA,OAAK,IAAIxrI,IAAT,IAAiB8D,KAAjB,EAAwB;AACtB,YAAQ9D,IAAI,CAACywI,KAAb;AACE,WAAK,KAAL;AACEqC,WAAG,CAACt/I,IAAJ,CAASwM,IAAT;AACA;;AACF,WAAK,MAAL;AACEwrI,YAAI,CAACh4I,IAAL,CAAUwM,IAAV;AACA;;AACF;AACE+yI,cAAM,CAACv/I,IAAP,CAAYwM,IAAZ;AARJ;AAUD;;AAED8yI,KAAG,GAAGT,UAAU,CAACS,GAAD,CAAhB;AACAC,QAAM,GAAGV,UAAU,CAACU,MAAD,CAAnB;AACAvH,MAAI,GAAG6G,UAAU,CAAC7G,IAAD,CAAjB;AAEA,SAAOsH,GAAG,CAACnnH,MAAJ,CAAWonH,MAAX,EAAmBpnH,MAAnB,CAA0B6/G,IAA1B,CAAP;AACD;AAEM,SAASwH,UAAT,CAAoBhzI,IAApB,EAA0BizI,QAA1B,EAAoC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAK,IAAIC,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGlzI,IAAI,CAAC0wI,UAAL,CAAgB/7I,MAAtC,EAA8Cu+I,EAAE,EAAhD,EAAoD;AAClD,QAAI7B,IAAI,GAAGrxI,IAAI,CAAC0wI,UAAL,CAAgBwC,EAAhB,CAAX;;AACA,QAAI7B,IAAI,CAACvmI,IAAL,KAAc,IAAlB,EAAwB;AACtB,cAAQumI,IAAI,CAAChC,EAAb;AACE,aAAK,IAAL;AACEgC,cAAI,CAACnjJ,KAAL,GAAa+kJ,QAAQ,CAACriJ,GAAT,CAAaygJ,IAAI,CAAC5B,QAAlB,KAA+B4B,IAAI,CAAC5B,QAAjD;AACA4B,cAAI,CAAC3B,aAAL,GAAqB2B,IAAI,CAACnjJ,KAA1B;AACA;;AACF,aAAK,OAAL;AACEmjJ,cAAI,CAACnjJ,KAAL,GAAamjJ,IAAI,CAAC5B,QAAL,CAAc/9I,GAAd,CAAkB4mC,CAAC,IAAI26G,QAAQ,CAACriJ,GAAT,CAAa0nC,CAAb,KAAmBA,CAA1C,CAAb;AACA+4G,cAAI,CAAC3B,aAAL,GAAqB,CAAC,GAAG2B,IAAI,CAACnjJ,KAAT,CAArB;AACA;;AACF;AATF;AAWD;AACF;;AAED,OAAK,IAAIilJ,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGnzI,IAAI,CAAC2wI,OAAL,CAAah8I,MAAnC,EAA2Cw+I,EAAE,EAA7C,EAAiD;AAC/C,QAAIjvD,MAAM,GAAGlkF,IAAI,CAAC2wI,OAAL,CAAawC,EAAb,CAAb;;AACA,QAAIjvD,MAAM,CAACp5E,IAAP,KAAgB,IAApB,EAA0B;AACxB,UAAIo5E,MAAM,CAACmrD,EAAP,KAAc,KAAlB,EAAyB;AACvBnrD,cAAM,CAACh2F,KAAP,GAAe+kJ,QAAQ,CAACriJ,GAAT,CAAaszF,MAAM,CAACurD,QAApB,KAAiCvrD,MAAM,CAACurD,QAAvD;AACD;AACF;AACF;AACF,C,CAED;;AACO,SAAS2D,UAAT,CAAoBtvI,KAApB,EAA2BukG,SAA3B,EAAsCj3E,IAAtC,EAA4C;AACjD,MAAIiiH,MAAM,GAAG,EAAb;AACA,MAAI7lI,CAAJ;;AAEA8lI,UAAQ,EAAE,KAAK9lI,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG1J,KAAK,CAACnP,MAAtB,EAA8B6Y,CAAC,EAA/B,EAAmC;AAC3C,QAAIxN,IAAI,GAAG8D,KAAK,CAAC0J,CAAD,CAAhB;;AACA,SAAK,IAAI0lI,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGlzI,IAAI,CAAC0wI,UAAL,CAAgB/7I,MAAtC,EAA8Cu+I,EAAE,EAAhD,EAAoD;AAClD,UAAI7B,IAAI,GAAGrxI,IAAI,CAAC0wI,UAAL,CAAgBwC,EAAhB,CAAX;;AACA,UAAI7B,IAAI,CAACvmI,IAAL,KAAc,IAAd,IAAsBumI,IAAI,CAAC15G,KAAL,KAAe0wE,SAAzC,EAAoD;AAClD,gBAAQgpC,IAAI,CAAChC,EAAb;AACE,eAAK,IAAL;AACE,gBAAIj+G,IAAI,CAACpxB,IAAD,EAAOqxI,IAAI,CAACnjJ,KAAZ,CAAR,EAA4B;AAC1B,uBAASolJ,QAAT;AACD;;AACD;;AACF,eAAK,OAAL;AACE,iBAAK,IAAIC,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGlC,IAAI,CAACnjJ,KAAL,CAAWyG,MAAjC,EAAyC4+I,EAAE,EAA3C,EAA+C;AAC7C,kBAAIniH,IAAI,CAACpxB,IAAD,EAAOqxI,IAAI,CAACnjJ,KAAL,CAAWqlJ,EAAX,CAAP,CAAR,EAAgC;AAC9B,yBAASD,QAAT;AACD;AACF;;AACD;;AACF;AAbF;AAeD;AACF;;AAED,SAAK,IAAIH,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGnzI,IAAI,CAAC2wI,OAAL,CAAah8I,MAAnC,EAA2Cw+I,EAAE,EAA7C,EAAiD;AAC/C,UAAIjvD,MAAM,GAAGlkF,IAAI,CAAC2wI,OAAL,CAAawC,EAAb,CAAb;;AACA,UAAIjvD,MAAM,CAACp5E,IAAP,KAAgB,IAAhB,IAAwBo5E,MAAM,CAACvsD,KAAP,KAAiB0wE,SAA7C,EAAwD;AACtD;AACA;AACA,YAAInkB,MAAM,CAACmrD,EAAP,KAAc,KAAlB,EAAyB;AACvB,cAAIj+G,IAAI,CAACpxB,IAAD,EAAOkkF,MAAM,CAACh2F,KAAd,CAAR,EAA8B;AAC5B;AACD;AACF;AACF;AACF;AACF;AACF,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxuBD;AACA;AACA;AAOA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM2gJ,OAAO,GAAG9+H,mBAAO,CAAC,sDAAD,CAAvB;;AACA,iBAAiBA,mBAAO,CAAC,wDAAD,CAAxB;AAAA,MAAQy7H,IAAR,YAAQA,IAAR;;AACA,MAAMgI,WAAW,GAAGzjI,mBAAO,CAAC,wEAAD,CAA3B;;AACA,MAAM6iH,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAApB,C,CAEA;AACA;;;AAEA,SAAS0jI,aAAT,CAAuB3oI,IAAvB,EAA6BgK,IAA7B,EAAmC;AACjC,SAAO;AAAEhK,QAAI,EAAE,eAAR;AAAyBstH,YAAQ,EAAEttH,IAAnC;AAAyCgK;AAAzC,GAAP;AACD;;AAED,SAAS4+H,oBAAT,CAA8B1I,KAA9B,EAAqC/O,eAArC,EAAsD;AACpD;AACA,0BAA0C0X,6EAAgB,iCACrD3I,KADqD;AAExD4I,aAAS,EAAE,IAF6C;AAGxD3X,mBAAe,EAAEA,eAAe,CAACvqI,GAAhB,CAAoB,CAAC6pI,WAAD,EAAcsY,GAAd,KACnCC,sEAAoB,CAAC9I,KAAD,kCACfzP,WADe;AAElBwY,gBAAU,EAAE,IAAIF;AAFE,OADL;AAHuC,KAA1D;AAAA,MAAuBnzC,GAAvB,qBAAMu7B,eAAN;AAAA,MAA+B+X,MAA/B;;AAUA,SAAO,CAACA,MAAD,EAAS,GAAGtzC,GAAZ,CAAP;AACD;;AAED,SAASuzC,iBAAT,CAA2B7c,OAA3B,EAAoC;AAClC;AACA,UAAQA,OAAO,CAACtsH,IAAhB;AACE,SAAK,QAAL;AACA,SAAK,MAAL;AACE,aAAO,CAACssH,OAAO,CAACmV,QAAR,CAAiBC,OAAzB;;AACF;AACE,aAAOpV,OAAO,CAACmV,QAAR,CAAiBC,OAAxB;AALJ;AAOD;;AAED,eAAe0H,oBAAf,CAAoCle,EAApC,EAAwCme,OAAxC,EAAiD;AAC/C,QAAMhU,4CAAA,CAAY,sDAAZ,EAAoE,CACxE/G,oEAAe,CAAC+a,OAAD,CADyD,EAExEne,EAFwE,CAApE,CAAN;AAID;;AAEM,eAAekB,WAAf,CAA2BoU,MAA3B,EAAmCY,OAAnC,EAA4ClW,EAA5C,EAAgD;AACrD,MAAI5R,GAAG,GAAG,MAAMonB,IAAI,CAACC,gEAAS,GAAGC,YAAZ,GAA2B,WAA5B,EAAyC;AAC3DJ,UAD2D;AAE3D7nI,OAAG,EAAEyoI,OAFsD;AAG3DP,WAAO,EAAE3V;AAHkD,GAAzC,CAApB;AAMA,MAAM4D,QAAN,GAAmBxV,GAAnB,CAAMwV,QAAN;AAEAA,UAAQ,CAAC/4H,OAAT,CAAiBy6H,IAAI,IAAI;AACvBA,QAAI,CAACiR,QAAL,CAAcC,OAAd,GAAwByH,iBAAiB,CAAC3Y,IAAD,CAAzC;AACD,GAFD;AAIA,SAAO1B,QAAP;AACD;AAEM,SAASwa,SAAT,CAAmBpJ,KAAnB,EAA0B;AAC/B,SAAO;AACLrL,eAAW,EAAEqL,KAAK,CAACqJ,cADd;AAELjH,cAAU,EAAEpC,KAAK,CAACrzI,IAFb;AAGL01I,kBAAc,EAAErC,KAAK,CAACrzI,IAHjB;AAILiC,UAAM,EAAE,CAACw/H,oEAAe,CAAC4R,KAAK,CAACpxI,MAAP,CAJnB;AAKLjJ,QAAI,EAAEq6I,KAAK,CAACr6I;AALP,GAAP;AAOD;;AAED,eAAe2jJ,oBAAf,CACEhJ,MADF,EAEEY,OAFF,EAGE7Q,MAHF,EAIE0Q,MAJF,EAKEwI,KALF,EAMEn+I,KANF,EAOE;AACA,MAAIo+I,eAAe,GAAG,EAAtB;AACA,MAAIC,cAAc,GAAG,IAArB;AACA,MAAIC,QAAQ,GAAG,GAAf;AACA,MAAI/4H,MAAM,GAAG,CAAb;AACA,MAAIg5H,aAAa,GAAG,CAApB;;AAEA,SAAO,CAAP,EAAU;AACR,UAAMzlG,OAAO,GAAG0zF,yDAAA,EAAhB;AAEA,UAAMxe,GAAG,GAAG,MAAMonB,IAAI,CAACC,gEAAS,GAAGC,YAAZ,GAA2B,eAA5B,EAA6C;AACjEJ,YAAM,EAAEA,MADyD;AAEjE7nI,SAAG,EAAEyoI,OAF4D;AAGjEP,aAAO,EAAE,KAAKI,MAHmD;AAIjEtM,gBAAU,EAAEpE,MAJqD;AAKjEuZ,gBAAU,EAAEL,KALqD;AAMjEM,cAAQ,EAAE3lG,OANuD;AAOjE94C,WAAK,EAAEs+I,QAP0D;AAQjE/4H;AARiE,KAA7C,CAAtB;;AAWA,QAAIyoG,GAAG,CAAC0wB,UAAR,EAAoB;AAClB,YAAMrB,aAAa,CAACrvB,GAAG,CAAC2wB,UAAL,EAAiB3wB,GAAG,CAAC0wB,UAArB,CAAnB;AACD;;AAED,QAAI1wB,GAAG,CAACuS,YAAJ,CAAiBhiI,MAAjB,KAA4B,CAAhC,EAAmC;AACjC;AACD;;AAEDggJ,iBAAa,IAAIvwB,GAAG,CAACuS,YAAJ,CAAiBhiI,MAAlC,CAtBQ,CAwBR;AACA;;AACA6/I,mBAAe,GAAGA,eAAe,CAAC7oH,MAAhB,CAChBy4F,GAAG,CAACuS,YAAJ,CAAiBvhI,MAAjB,CAAwB4sB,CAAC,IAAI,CAACA,CAAC,CAACo6C,OAAhC,CADgB,CAAlB;AAGAq4E,kBAAc,GAAGR,iBAAiB,CAAC7vB,GAAG,CAACwV,QAAJ,CAAa,CAAb,CAAD,CAAlC;;AAEA,QACE+a,aAAa,KAAKvwB,GAAG,CAAC4wB,kBAAtB,IACC5+I,KAAK,IAAI,IAAT,IAAiBo+I,eAAe,CAAC7/I,MAAhB,IAA0ByB,KAF9C,EAGE;AACA;AACD;;AAEDulB,UAAM,IAAI+4H,QAAV;AACD;;AAEDF,iBAAe,GACbp+I,KAAK,IAAI,IAAT,GAAgBo+I,eAAe,CAAC79I,KAAhB,CAAsB,CAAtB,EAAyBP,KAAzB,CAAhB,GAAkDo+I,eADpD;AAGA,SAAO;AACL7d,gBAAY,EAAE6d,eAAe,CAAC9iJ,GAAhB,CAAoB0iJ,SAApB,CADT;AAELK;AAFK,GAAP;AAID;;AAED,eAAeQ,YAAf,CAA4BjK,KAA5B,EAAmCkK,SAAnC,EAA8CC,cAA9C,EAA8D;AAC5D,MAAInK,KAAK,CAACvS,KAAN,IAAe,IAAf,IAAuByc,SAA3B,EAAsC;AACpC;AACA;AACA,QAAIzc,KAAK,GAAG0c,cAAc,CAACvkJ,GAAf,CAAmBskJ,SAAS,CAAClmH,WAAV,EAAnB,CAAZ;AACAypG,SAAK,GAAGA,KAAK,KAAK,MAAM0H,kDAAA,CAAkB+U,SAAlB,CAAX,CAAb;;AAEA,QAAIzc,KAAK,IAAI,IAAb,EAAmB;AACjB,aAAOA,KAAK,CAACzC,EAAb;AACD,KAFD,MAEO;AACL;AACA,UAAIof,QAAQ,GAAG;AAAEpf,UAAE,EAAEpD,IAAI,CAACgX,MAAL,EAAN;AAAqBjyI,YAAI,EAAEu9I;AAA3B,OAAf;AACAC,oBAAc,CAAChhJ,GAAf,CAAmB+gJ,SAAS,CAAClmH,WAAV,EAAnB,EAA4ComH,QAA5C;AACA,aAAOA,QAAQ,CAACpf,EAAhB;AACD;AACF;;AAED,SAAOgV,KAAK,CAACvS,KAAb;AACD;;AAED,eAAe4c,qBAAf,CACE1e,YADF,EAEE0E,MAFF,EAGE;AAAEia;AAAF,IAAmB,EAHrB,EAIE;AACA,MAAIH,cAAc,GAAG,IAAI3yI,GAAJ,EAArB;AAEA,MAAI+yI,UAAU,GAAG,EAAjB;;AACA,OAAK,IAAIvK,KAAT,IAAkBrU,YAAlB,EAAgC;AAC9B;AACA;AACA,QAAIqU,KAAK,CAACr6I,IAAN,IAAc,IAAlB,EAAwB;AACtB,YAAM,IAAIwC,KAAJ,CAAU,8CAAV,CAAN;AACD,KAL6B,CAO9B;;;AACA,iBAA+C63I,KAA/C;AAAA,QAAMoC,UAAN,UAAMA,UAAN;AAAA,QAAkBnR,eAAlB,UAAkBA,eAAlB;AAAA,QAAsCziF,IAAtC;;AACAwxF,SAAK,GAAGxxF,IAAR;;AAEA,QAAI4zF,UAAJ,EAAgB;AACd,UAAIoI,OAAO,GAAGpI,UAAU,CAAC52G,IAAX,EAAd;;AACA,UAAIg/G,OAAO,KAAK,EAAhB,EAAoB;AAClBpI,kBAAU,GAAG,IAAb;AACD,OAFD,MAEO;AACLA,kBAAU,GAAGkI,YAAY,GAAGE,OAAH,GAAaC,6CAAK,CAACD,OAAD,CAA3C;AACD;AACF;;AAEDxK,SAAK,CAACqC,cAAN,GAAuBrC,KAAK,CAACqC,cAAN,IAAwBD,UAA/C;;AACA,QAAIpC,KAAK,CAACqC,cAAV,EAA0B;AACxBrC,WAAK,CAACqC,cAAN,GAAuBrC,KAAK,CAACqC,cAAN,CAAqB72G,IAArB,EAAvB;AACD,KAvB6B,CAyB9B;AACA;AACA;;;AACAw0G,SAAK,CAAC5T,OAAN,GAAgBiE,MAAhB;AACA2P,SAAK,CAACvS,KAAN,GAAc,MAAMwc,YAAY,CAACjK,KAAD,EAAQoC,UAAR,EAAoB+H,cAApB,CAAhC;AAEAI,cAAU,CAAC/hJ,IAAX,CAAgB;AACd45I,gBADc;AAEdnR,qBAAe,EAAEA,eAAe,GAC5BA,eAAe,CAACvqI,GAAhB,CAAoBswB,CAAC,oCAAUA,CAAV;AAAao1G,eAAO,EAAEiE;AAAtB,QAArB,CAD4B,GAE5B,IAJU;AAKd2P;AALc,KAAhB;AAOD;;AAED,SAAO;AAAEuK,cAAF;AAAcJ;AAAd,GAAP;AACD;;AAED,eAAeO,eAAf,CAA+BP,cAA/B,EAA+CQ,cAA/C,EAA+D;AAC7D,MAAIC,YAAY,GAAG,IAAI5sI,GAAJ,CAAQ2sI,cAAc,CAACjkJ,GAAf,CAAmBswB,CAAC,IAAIA,CAAC,CAACy2G,KAA1B,CAAR,CAAnB;AAEA,QAAMuL,2DAAa,CAAC,YAAY;AAC9B,SAAK,IAAIvL,KAAT,IAAkB0c,cAAc,CAAC1yI,MAAf,EAAlB,EAA2C;AACzC;AACA,UAAImzI,YAAY,CAACjvI,GAAb,CAAiB8xH,KAAK,CAACzC,EAAvB,CAAJ,EAAgC;AAC9B,cAAMmK,+CAAA,CAAe1H,KAAf,CAAN;AACD;AACF;AACF,GAPkB,CAAnB;AAQD;;AAEM,eAAeod,qBAAf,CAAqCxa,MAArC,EAA6C1E,YAA7C,EAA2D;AAChE,QAAMmf,UAAU,GAAG,IAAI9sI,GAAJ,EAAnB;AACA,QAAM+sI,OAAO,GAAG,EAAhB;AACA,QAAM9S,KAAK,GAAG,EAAd;;AAEA,8BAAqC,MAAMoS,qBAAqB,CAC9D1e,YAD8D,EAE9D0E,MAF8D,CAAhE;AAAA,MAAMka,UAAN,yBAAMA,UAAN;AAAA,MAAkBJ,cAAlB,yBAAkBA,cAAlB,CALgE,CAUhE;;;AACA,MAAIa,iBAAiB,GAAG,EAAxB;;AACA,mBAAmDT,UAAnD,EAA+D;AAAA,QAApDnI,UAAoD,QAApDA,UAAoD;AAAA,QAAxCpC,KAAwC,QAAxCA,KAAwC;AAAA,QAAjC/O,eAAiC,QAAjCA,eAAiC;AAC7D;AACA+O,SAAK,GAAG3mI,oEAAQ,CAAC2mI,KAAD,CAAhB;AAEA,QAAIl9H,KAAK,GAAG,IAAZ;AACA,QAAImoI,YAAY,GAAG,IAAnB,CAL6D,CAO7D;AACA;AACA;;AACA,QAAIjL,KAAK,CAACrL,WAAV,EAAuB;AACrB7xH,WAAK,GAAG,MAAMqyH,yCAAA,CACZ,oEADY,EAEZ,CAAC6K,KAAK,CAACrL,WAAP,EAAoBtE,MAApB,CAFY,CAAd,CADqB,CAMrB;;AAEA,UAAIvtH,KAAJ,EAAW;AACTgoI,kBAAU,CAACplJ,GAAX,CAAeod,KAAK,CAACkoH,EAArB;AACD;AACF,KArB4D,CAuB7D;;;AACA,QAAI,CAACloH,KAAL,EAAY;AACV;AACA;AACA;AACA;AACAmoI,kBAAY,GAAG,MAAM9V,uCAAA,CAClB;AACT,yFAF2B,EAGnB,CACEA,8CAAA,CAAcyC,sDAAA,CAAmBoI,KAAK,CAACr6I,IAAzB,EAA+B,CAA/B,CAAd,CADF,EAEEwvI,8CAAA,CAAcyC,sDAAA,CAAmBoI,KAAK,CAACr6I,IAAzB,EAA+B,CAA/B,CAAd,CAFF,EAGEq6I,KAAK,CAACpxI,MAAN,IAAgB,CAHlB,EAIEyhI,MAJF,CAHmB,CAArB;AAUD;;AAED2a,qBAAiB,CAACxiJ,IAAlB,CAAuB;AACrB45I,gBADqB;AAErBpC,WAFqB;AAGrB/O,qBAHqB;AAIrBnuH,WAJqB;AAKrBmoI;AALqB,KAAvB;AAOD,GA5D+D,CA8DhE;AACA;AACA;AACA;AACA;;;AACA,MAAIC,iBAAiB,GAAGF,iBAAiB,CAACtkJ,GAAlB,CAAsBsE,IAAI,IAAI;AACpD,QAAI,CAACA,IAAI,CAAC8X,KAAN,IAAe9X,IAAI,CAACigJ,YAAxB,EAAsC;AACpC;AACA,UAAInoI,KAAK,GAAG9X,IAAI,CAACigJ,YAAL,CAAkB5rI,IAAlB,CACVsjI,GAAG,IAAI,CAACmI,UAAU,CAACnvI,GAAX,CAAegnI,GAAG,CAAC3X,EAAnB,CAAD,IAA2BhgI,IAAI,CAACg1I,KAAL,CAAWvS,KAAX,KAAqBkV,GAAG,CAAClV,KADjD,CAAZ;;AAIA,UAAI3qH,KAAJ,EAAW;AACTgoI,kBAAU,CAACplJ,GAAX,CAAeod,KAAK,CAACkoH,EAArB;AACA,+CAAYhgI,IAAZ;AAAkB8X;AAAlB;AACD;AACF;;AACD,WAAO9X,IAAP;AACD,GAbuB,CAAxB,CAnEgE,CAkFhE;AACA;AACA;AACA;;AACA,MAAImgJ,iBAAiB,GAAGD,iBAAiB,CAACxkJ,GAAlB,CAAsBsE,IAAI,IAAI;AACpD,QAAI,CAACA,IAAI,CAAC8X,KAAN,IAAe9X,IAAI,CAACigJ,YAAxB,EAAsC;AACpC,UAAInoI,KAAK,GAAG9X,IAAI,CAACigJ,YAAL,CAAkB5rI,IAAlB,CAAuBsjI,GAAG,IAAI,CAACmI,UAAU,CAACnvI,GAAX,CAAegnI,GAAG,CAAC3X,EAAnB,CAA/B,CAAZ;;AACA,UAAIloH,KAAJ,EAAW;AACTgoI,kBAAU,CAACplJ,GAAX,CAAeod,KAAK,CAACkoH,EAArB;AACA,+CAAYhgI,IAAZ;AAAkB8X;AAAlB;AACD;AACF;;AACD,WAAO9X,IAAP;AACD,GATuB,CAAxB,CAtFgE,CAiGhE;;AACA,oBAA0DmgJ,iBAA1D,EAA6E;AAAA,QAAlE/I,UAAkE,SAAlEA,UAAkE;AAAA,QAAtDpC,KAAsD,SAAtDA,KAAsD;AAAA,QAA/C/O,eAA+C,SAA/CA,eAA+C;AAAA,QAA9BnuH,KAA8B,SAA9BA,KAA8B;;AAC3E,QAAIA,KAAJ,EAAW;AACT;AACA,UAAIsoI,QAAQ,mCACPtoI,KADO;AAEV4xH,eAAO,EAAE5xH,KAAK,CAAC4xH,OAAN,KAAkB,CAFjB;AAGV/uI,YAAI,EAAEwvI,gDAAA,CAAgBryH,KAAK,CAACnd,IAAtB;AAHI,QAAZ,CAFS,CAQT;;;AACA,YAAM0lJ,OAAO,GAAG;AACd1lJ,YAAI,EAAEq6I,KAAK,CAACr6I,IADE;AAEdgvI,mBAAW,EAAEqL,KAAK,CAACrL,WAAN,IAAqB,IAFpB;AAGdlH,aAAK,EAAE2d,QAAQ,CAAC3d,KAAT,IAAkBuS,KAAK,CAACvS,KAAxB,IAAiC,IAH1B;AAIdL,gBAAQ,EAAEge,QAAQ,CAAChe,QAAT,IAAqB4S,KAAK,CAAC5S,QAA3B,IAAuC,IAJnC;AAKdiV,sBAAc,EAAErC,KAAK,CAACqC,cAAN,IAAwB,IAL1B;AAMdvR,aAAK,EAAEsa,QAAQ,CAACta,KAAT,IAAkBkP,KAAK,CAAClP,KAAxB,IAAiC,IAN1B;AAOd4D,eAAO,EAAEsL,KAAK,CAACtL,OAAN,IAAiB,IAAjB,GAAwBsL,KAAK,CAACtL,OAA9B,GAAwC;AAPnC,OAAhB;;AAUA,UAAI4W,qEAAgB,CAACF,QAAD,EAAWC,OAAX,EAAoB9kJ,MAAM,CAACiS,IAAP,CAAY6yI,OAAZ,CAApB,CAApB,EAA+D;AAC7DN,eAAO,CAACviJ,IAAR;AAAewiI,YAAE,EAAEogB,QAAQ,CAACpgB;AAA5B,WAAmCqgB,OAAnC;AACD;AACF,KAtBD,MAsBO;AACL;AACA,UAAIE,gBAAgB,mCACfvL,KADe;AAElBhV,UAAE,EAAEpD,IAAI,CAACgX,MAAL,EAFc;AAGlBxR,gBAAQ,EAAE4S,KAAK,CAAC5S,QAAN,IAAkB,IAHV;AAIlBsH,eAAO,EAAEsL,KAAK,CAACtL,OAAN,IAAiB,IAAjB,GAAwBsL,KAAK,CAACtL,OAA9B,GAAwC;AAJ/B,QAApB;;AAOA,UAAIzD,eAAe,IAAIA,eAAe,CAACtnI,MAAhB,GAAyB,CAAhD,EAAmD;AACjDsuI,aAAK,CAACzvI,IAAN,CAAW,GAAGkgJ,oBAAoB,CAAC6C,gBAAD,EAAmBta,eAAnB,CAAlC;AACD,OAFD,MAEO;AACLgH,aAAK,CAACzvI,IAAN,CAAW+iJ,gBAAX;AACD;AACF;AACF;;AAED,QAAMb,eAAe,CAACP,cAAD,EAAiB,CAAC,GAAGlS,KAAJ,EAAW,GAAG8S,OAAd,CAAjB,CAArB;AACA,QAAMS,8EAAuB,CAAC;AAAEvT,SAAF;AAAS8S;AAAT,GAAD,CAA7B;AAEA,SAAO;AACL9S,SAAK,EAAEA,KAAK,CAACvxI,GAAN,CAAUs5I,KAAK,IAAIA,KAAK,CAAChV,EAAzB,CADF;AAEL+f,WAAO,EAAEA,OAAO,CAACrkJ,GAAR,CAAYs5I,KAAK,IAAIA,KAAK,CAAChV,EAA3B;AAFJ,GAAP;AAID,C,CAED;AACA;;AACO,eAAeS,eAAf,CACL4E,MADK,EAEL1E,YAFK,EAGL;AAAE8f,cAAY,GAAG;AAAjB,IAA0B,EAHrB,EAIL;AACA,QAAMxT,KAAK,GAAG,EAAd;;AAEA,+BAAqC,MAAMoS,qBAAqB,CAC9D1e,YAD8D,EAE9D0E,MAF8D,EAG9D;AAAEia,gBAAY,EAAE;AAAhB,GAH8D,CAAhE;AAAA,MAAMC,UAAN,0BAAMA,UAAN;AAAA,MAAkBJ,cAAlB,0BAAkBA,cAAlB;;AAMA,oBAAmDI,UAAnD,EAA+D;AAAA,QAApDnI,UAAoD,SAApDA,UAAoD;AAAA,QAAxCpC,KAAwC,SAAxCA,KAAwC;AAAA,QAAjC/O,eAAiC,SAAjCA,eAAiC;AAC7D;AACA+O,SAAK,GAAG3mI,oEAAQ,CAAC2mI,KAAD,CAAhB;;AAEA,QAAIuL,gBAAgB;AAClBvgB,QAAE,EAAEpD,IAAI,CAACgX,MAAL;AADc,OAEfoB,KAFe;AAGlB5T,aAAO,EAAEiE,MAHS;AAIlBqE,aAAO,EAAEsL,KAAK,CAACtL,OAAN,IAAiB,IAAjB,GAAwBsL,KAAK,CAACtL,OAA9B,GAAwC;AAJ/B,MAApB,CAJ6D,CAW7D;;;AACA,QAAIzD,eAAe,IAAIA,eAAe,CAACtnI,MAAhB,GAAyB,CAAhD,EAAmD;AACjDsuI,WAAK,CAACzvI,IAAN,CAAW,GAAGkgJ,oBAAoB,CAAC6C,gBAAD,EAAmBta,eAAnB,CAAlC;AACD,KAFD,MAEO;AACLgH,WAAK,CAACzvI,IAAN,CAAW+iJ,gBAAX;AACD;AACF;;AAED,QAAMb,eAAe,CAACP,cAAD,EAAiBlS,KAAjB,CAArB;AAEA,MAAIyT,eAAJ;;AACA,MAAID,YAAJ,EAAkB;AAChB,QAAIryB,GAAG,GAAG,MAAMoyB,8EAAuB,CAAC;AAAEvT;AAAF,KAAD,CAAvC;AACAyT,mBAAe,GAAGtyB,GAAG,CAAC6e,KAAJ,CAAUvxI,GAAV,CAAcswB,CAAC,IAAIA,CAAC,CAACg0G,EAArB,CAAlB;AACD,GAHD,MAGO;AACL,UAAMgO,2DAAa,CAAC,YAAY;AAC9B0S,qBAAe,GAAG,MAAMthI,OAAO,CAAC0pD,GAAR,CACtBmkE,KAAK,CAACvxI,GAAN,CAAU,MAAMs5I,KAAN,IAAe7K,qDAAA,CAAqB6K,KAArB,CAAzB,CADsB,CAAxB;AAGD,KAJkB,CAAnB;AAKD;;AACD,SAAO0L,eAAP;AACD;AAEM,eAAeC,WAAf,CAA2BrL,MAA3B,EAAmCY,OAAnC,EAA4ClW,EAA5C,EAAgDqF,MAAhD,EAAwD0Q,MAAxD,EAAgE;AACrE;AACA;AACA,QAAM6K,iBAAiB,GAAG,MAAMzW,yCAAA,CAC9B,2EAD8B,EAE9B,CAACnK,EAAD,CAF8B,CAAhC;;AAKA,MAAI4gB,iBAAJ,EAAuB;AACrB,UAAMC,mBAAmB,GAAG,MAAM1W,yCAAA,CAChC,6EADgC,EAEhC,CAACnK,EAAD,CAFgC,CAAlC;AAIA,UAAM7xH,YAAY,GAAGg8H,gDAAA,CAAgB0W,mBAAmB,CAAClmJ,IAApC,CAArB,CALqB,CAMrB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,QAAIA,IAAI,GAAGiyI,sDAAA,CAAmBzC,gDAAA,CAAgByW,iBAAiB,CAACjmJ,IAAlC,CAAnB,EAA4D,EAA5D,CAAX,CAdqB,CAgBrB;AACA;;AACA,QAAIA,IAAI,GAAGwT,YAAX,EAAyB;AACvBxT,UAAI,GAAGwT,YAAP;AACD;;AAED,gCAAuC,MAAMmwI,oBAAoB,CAC/DhJ,MAD+D,EAE/DY,OAF+D,EAG/D7Q,MAH+D,EAI/D0Q,MAJ+D,EAK/Dp7I,IAL+D,CAAjE;AAAA,QAAMgmI,YAAN,yBAAMA,YAAN;AAAA,QAAoB8d,cAApB,yBAAoBA,cAApB;;AAOA,QAAI9d,YAAY,CAAChiI,MAAb,KAAwB,CAA5B,EAA+B;AAC7B,aAAO;AAAEsuI,aAAK,EAAE,EAAT;AAAa8S,eAAO,EAAE;AAAtB,OAAP;AACD;;AAEDpf,gBAAY,GAAGA,YAAY,CAACjlI,GAAb,CAAiBs5I,KAAK,oCAAUA,KAAV;AAAiB5T,aAAO,EAAEpB;AAA1B,MAAtB,CAAf;AAEA,WAAO+N,4DAAU,CAAC,YAAY;AAC5B,YAAMrhI,MAAM,GAAG,MAAMmzI,qBAAqB,CAAC7f,EAAD,EAAKW,YAAL,CAA1C;AACA,YAAMud,oBAAoB,CAACle,EAAD,EAAKye,cAAL,CAA1B;AACA,aAAO/xI,MAAP;AACD,KAJgB,CAAjB;AAKD,GAxCD,MAwCO;AACL,UAAMo0I,OAAO,GAAG,MAAM3W,0CAAA,CAAU,UAAV,EAAsBnK,EAAtB,CAAtB,CADK,CAGL;AACA;;AACA,UAAM+gB,WAAW,GAAGnU,sDAAA,CAClBA,yDAAA,EADkB,EAElBkU,OAAO,CAAC9c,SAAR,KAAsB,CAAtB,GAA0B,CAA1B,GAA8B,EAFZ,CAApB;;AAKA,mCAAyB,MAAMsa,oBAAoB,CACjDhJ,MADiD,EAEjDY,OAFiD,EAGjD7Q,MAHiD,EAIjD0Q,MAJiD,EAKjD8C,OAAO,CAACtiI,MAAR,CAAesiI,OAAO,CAACxtF,QAAR,CAAiB01F,WAAjB,CAAf,EAA8C,YAA9C,CALiD,CAAnD;AAAA,UAAQpgB,YAAR,0BAAQA,YAAR,CAVK,CAkBL;AACA;AACA;AACA;AACA;;;AACA,QAAIqgB,cAAc,GAAGF,OAAO,CAACxK,eAA7B;AAEA,UAAM2K,eAAe,GAAGtgB,YAAY,CAAC/nI,MAAb,CAAoB,CAACoyB,KAAD,EAAQgqH,KAAR,KAAkB;AAC5D,aAAOhqH,KAAK,GAAGgqH,KAAK,CAACpxI,MAArB;AACD,KAFuB,EAErBo9I,cAFqB,CAAxB;AAIA,UAAME,UAAU,GACdvgB,YAAY,CAAChiI,MAAb,GAAsB,CAAtB,GACIgiI,YAAY,CAACA,YAAY,CAAChiI,MAAb,GAAsB,CAAvB,CAAZ,CAAsChE,IAD1C,GAEIiyI,yDAAA,EAHN;AAKA,QAAInK,KAAK,GAAG,MAAMmV,uEAAuB,EAAzC;AAEA,WAAO7J,4DAAU,CAAC,YAAY;AAC5B,UAAIoT,SAAS,GAAG,MAAMhX,qDAAA,CAAqB;AACzC/I,eAAO,EAAEpB,EADgC;AAEzCp8H,cAAM,EAAEq9I,eAFiC;AAGzC7e,gBAAQ,EAAE0e,OAAO,CAAC9c,SAAR,KAAsB,CAAtB,GAA0BvB,KAAK,CAACL,QAAhC,GAA2C,IAHZ;AAIzCK,aAAK,EAAEA,KAAK,CAACzC,EAJ4B;AAKzCrlI,YAAI,EAAEumJ,UALmC;AAMzCxX,eAAO,EAAE,IANgC;AAOzCqD,6BAAqB,EAAE;AAPkB,OAArB,CAAtB;AAUA,UAAIrgI,MAAM,GAAG,MAAMmzI,qBAAqB,CAAC7f,EAAD,EAAKW,YAAL,CAAxC;AACA,6CACKj0H,MADL;AAEEugI,aAAK,EAAE,CAACkU,SAAD,EAAY,GAAGz0I,MAAM,CAACugI,KAAtB;AAFT;AAID,KAhBgB,CAAjB;AAiBD;AACF,C;;;;;;;;;;;AC9hBD;AACA,MAAMmU,SAAS,GAAGrnI,mBAAO,CAAC,kFAAD,CAAzB;;AACA,MAAMsnI,QAAQ,GAAGtnI,mBAAO,CAAC,8EAAD,CAAxB;;AAEA,IAAIunI,SAAS,GACX,4wHADF;AAEA,IAAIlpI,KAAK,GAAG,IAAIC,MAAJ,CACT,yCAAwCipI,SAAU,OAAMA,SAAU,MAAKA,SAAU,SAAQA,SAAU,IAD1F,EAEV,GAFU,CAAZ;;AAKA,IAAIC,eAAe,GAAGF,QAAQ,IAC5BA,QAAQ,CAAC3lJ,GAAT,CAAamD,CAAC,IAAI,CAAC,IAAIwZ,MAAJ,CAAY,MAAKxZ,CAAE,KAAnB,EAAyB,IAAzB,CAAD,EAAiCA,CAAjC,CAAlB,CADF;;AAGA,SAAS2iJ,UAAT,CAAoB1pI,KAApB,EAA2B;AACzB,QAAMgkC,cAAc,GAAGhkC,KAAK,CAAC,CAAD,CAA5B,CADyB,CAGzB;;AACA,MAAI,KAAKqG,IAAL,CAAU29B,cAAV,CAAJ,EAA+B;AAC7B;AACA,WAAOhkC,KAAK,CAACb,MAAN,CAAa,CAAb,CAAP;AACD;;AACD,MAAI,OAAOkH,IAAP,CAAY29B,cAAZ,CAAJ,EAAiC;AAC/B;AACA,WAAO,IAAP;AACD;;AAED,SAAOhkC,KAAP;AACD;;AAED6B,MAAM,CAACC,OAAP,GAAiB,CAACgiB,GAAD,EAAMniC,OAAO,GAAG,EAAhB,KAAuB;AACtCmiC,KAAG,GAAGA,GAAG,CACN5C,WADG,GAEH/gB,OAFG,CAEKG,KAFL,EAEY,CAACy3B,CAAD,EAAI4xG,IAAI,GAAG,EAAX,EAAeC,MAAf,EAAuBC,KAAvB,EAA8Bn+F,IAA9B,KAAuC;AACrD,UAAMo+F,WAAW,GAAGJ,UAAU,CAAC3xG,CAAD,CAA9B;;AACA,QAAI,CAAC+xG,WAAL,EAAkB;AAChB,aAAO/xG,CAAP;AACD;;AACD,QAAI,CAAC6xG,MAAL,EAAa;AACX,YAAMG,SAAS,GAAGF,KAAK,GAAGn+F,IAA1B;;AAEA,UAAI49F,SAAS,CAACzwI,GAAV,CAAckxI,SAAd,CAAJ,EAA8B;AAC5B,eAAOD,WAAP;AACD;AACF;;AAED,WAAOH,IAAI,GAAG,CAACE,KAAK,IAAID,MAAV,EAAkB94H,WAAlB,EAAP,GAAyC46B,IAAhD;AACD,GAhBG,CAAN;AAkBA,QAAMs+F,cAAc,GAAGroJ,OAAO,CAACsoJ,OAAR,IAAmB,EAA1C;AACA,QAAM9pI,OAAO,GAAG,CAAC,GAAGopI,QAAJ,EAAc,GAAGS,cAAjB,CAAhB;AACA,QAAME,aAAa,GAAGT,eAAe,CAACtpI,OAAD,CAArC;AAEA+pI,eAAa,CAACn3I,OAAd,CAAsB,CAAC,CAAC0qB,OAAD,EAAU12B,CAAV,CAAD,KAAkB;AACtC+8B,OAAG,GAAGA,GAAG,CAAC3jB,OAAJ,CAAYsd,OAAZ,EAAqB12B,CAArB,CAAN;AACD,GAFD;AAIA,SAAO+8B,GAAP;AACD,CA5BD,C;;;;;;;;;;;AC9BA,MAAMqmH,YAAY,GAAG,CACnB,KADmB,EAEnB,KAFmB,EAGnB,KAHmB,EAInB,KAJmB,EAKnB,IALmB,EAMnB,KANmB,EAOnB,IAPmB,CAArB;AAUA,MAAMC,QAAQ,GAAG,CACf,GADe,EAEf,IAFe,EAGf,KAHe,CAAjB;AAMA,MAAMC,YAAY,GAAG,CACnB,QADmB,EAEnB,OAFmB,EAGnB,OAHmB,EAInB,QAJmB,EAKnB,OALmB,EAMnB,SANmB,EAOnB,OAPmB,EAQnB,MARmB,EASnB,OATmB,EAUnB,MAVmB,EAWnB,QAXmB,EAYnB,IAZmB,EAanB,IAbmB,EAcnB,QAdmB,EAenB,QAfmB,EAgBnB,OAhBmB,EAiBnB,SAjBmB,EAkBnB,QAlBmB,EAmBnB,SAnBmB,EAoBnB,SApBmB,EAqBnB,QArBmB,EAsBnB,KAtBmB,EAuBnB,IAvBmB,EAwBnB,YAxBmB,EAyBnB,aAzBmB,EA0BnB,SA1BmB,EA2BnB,MA3BmB,EA4BnB,QA5BmB,EA6BnB,QA7BmB,EA8BnB,WA9BmB,EA+BnB,WA/BmB,EAgCnB,WAhCmB,EAiCnB,KAjCmB,EAkCnB,MAlCmB,EAmCnB,IAnCmB,EAoCnB,QApCmB,EAqCnB,MArCmB,EAsCnB,MAtCmB,EAuCnB,OAvCmB,EAwCnB,MAxCmB,EAyCnB,IAzCmB,EA0CnB,KA1CmB,EA2CnB,IA3CmB,EA4CnB,MA5CmB,EA6CnB,UA7CmB,EA8CnB,MA9CmB,EA+CnB,MA/CmB,EAgDnB,KAhDmB,EAiDnB,MAjDmB,EAkDnB,WAlDmB,EAmDnB,OAnDmB,EAoDnB,MApDmB,EAqDnB,OArDmB,EAsDnB,MAtDmB,EAuDnB,SAvDmB,EAwDnB,IAxDmB,EAyDnB,QAzDmB,EA0DnB,SA1DmB,EA2DnB,OA3DmB,EA4DnB,YA5DmB,EA6DnB,QA7DmB,EA8DnB,OA9DmB,EA+DnB,IA/DmB,EAgEnB,MAhEmB,EAiEnB,QAjEmB,EAkEnB,KAlEmB,EAmEnB,MAnEmB,EAoEnB,QApEmB,EAqEnB,SArEmB,CAArB;AAwEAxoI,MAAM,CAACC,OAAP,GAAiB,IAAI5G,GAAJ,CAAQ,CACvB,GAAGivI,YADoB,EAEvB,GAAGC,QAFoB,EAGvB,GAAGC,YAHoB,CAAR,CAAjB,C;;;;;;;;;;;ACxFA,MAAMC,QAAQ,GAAG,CACf,KADe,EAEf,KAFe,EAGf,MAHe,EAIf,OAJe,EAKf,KALe,EAMf,KANe,EAOf,KAPe,EAQf,IARe,EASf,KATe,EAUf,QAVe,EAWf,KAXe,EAYf,IAZe,EAaf,YAbe,EAcf,YAde,EAef,MAfe,EAgBf,WAhBe,EAiBf,YAjBe,EAkBf,SAlBe,EAmBf,SAnBe,CAAjB;AAsBAzoI,MAAM,CAACC,OAAP,GAAiBwoI,QAAjB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AASA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMxlB,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAApB,C,CAEA;AACA;AACA;AACA;;;AAEA;AAEA,IAAIsoI,QAAJ;AACA,IAAIC,YAAJ;AACA,IAAIC,gBAAJ;AACA,IAAIC,YAAJ;AAEO,SAASC,UAAT,GAAsB;AAC3BJ,UAAQ,GAAG,IAAI71I,GAAJ,EAAX;AACA+1I,kBAAgB,GAAG,IAAIvH,kDAAJ,CAAgB;AACjCr5G,SAAK,EAAE,gBAD0B;AAEjC1lC,UAAM,EAAE;AAFyB,GAAhB,CAAnB;AAIAumJ,cAAY,GAAG,IAAIxH,kDAAJ,CAAgB;AAAEr5G,SAAK,EAAE;AAAT,GAAhB,CAAf;AACD,C,CAED;;AAEA,SAAS+gH,MAAT,CAAgBh1I,GAAhB,EAAqB;AACnB,SAAOnS,MAAM,CAAConJ,WAAP,CACLpnJ,MAAM,CAAC4kB,OAAP,CAAezS,GAAf,EAAoBhS,GAApB,CAAwBoX,KAAK,IAAI;AAC/B,WAAO,CAACA,KAAK,CAAC,CAAD,CAAN,EAAWA,KAAK,CAAC,CAAD,CAAhB,CAAP;AACD,GAFD,CADK,CAAP;AAKD;;AAED,IAAI8vI,cAAc,GAAGC,yDAAY,CAACC,KAAb,CAAmBniB,YAAnB,CAAgCK,MAArD;AACA,IAAI+hB,YAAY,GAAGL,MAAM,CAACG,yDAAY,CAACC,KAAb,CAAmBniB,YAAnB,CAAgCK,MAAjC,CAAzB;;AAEA,SAASgiB,iBAAT,CAA2Bt1I,GAA3B,EAAgC;AAC9B,yCACKA,GADL;AAEEi0B,SAAK,EAAEohH,YAAY,CAACr1I,GAAG,CAACi0B,KAAL,CAAZ,IAA2Bj0B,GAAG,CAACi0B;AAFxC;AAID;;AAED,SAASshH,eAAT,CAAyBv1I,GAAzB,EAA8B;AAC5B,yCACKA,GADL;AAEEi0B,SAAK,EAAEihH,cAAc,CAACl1I,GAAG,CAACi0B,KAAL,CAAd,IAA6Bj0B,GAAG,CAACi0B;AAF1C;AAID;;AAEM,MAAMuhH,SAAS,GAAG;AACvBx5F,UAAQ,CAAC1/C,IAAD,EAAO;AAAEwV;AAAF,MAAa,EAApB,EAAwB;AAC9B2jI,kEAAc,CAAC,OAAD,EAAUn5I,IAAV,EAAgB,CAAC,YAAD,EAAe,SAAf,CAAhB,EAA2CwV,MAA3C,CAAd;;AAEA,QAAI,CAACA,MAAD,IAAW,WAAWxV,IAA1B,EAAgC;AAC9B,UACEA,IAAI,CAACywI,KAAL,KAAe,KAAf,IACAzwI,IAAI,CAACywI,KAAL,KAAe,MADf,IAEAzwI,IAAI,CAACywI,KAAL,KAAe,IAHjB,EAIE;AACA,cAAM,IAAIt9I,KAAJ,CAAU,yBAAyB6M,IAAI,CAACywI,KAAxC,CAAN;AACD;AACF;;AAED,WAAOzwI,IAAP;AACD,GAfsB;;AAiBvBo5I,MAAI,CAACzL,GAAD,EAAM;AACR,aAAS0L,UAAT,CAAoBznH,GAApB,EAAyB;AACvB,UAAI1jC,KAAJ;;AACA,UAAI;AACFA,aAAK,GAAG,OAAO0jC,GAAP,KAAe,QAAf,GAA0Br1B,IAAI,CAAC0G,KAAL,CAAW2uB,GAAX,CAA1B,GAA4CA,GAApD;AACD,OAFD,CAEE,OAAO3Z,CAAP,EAAU;AACV,cAAM,IAAIu2H,iDAAJ,CAAc,UAAd,EAA0B,wBAA1B,CAAN;AACD;;AAED,UAAI,CAAC/7I,KAAK,CAACwD,OAAN,CAAc/H,KAAd,CAAL,EAA2B;AACzB,cAAM,IAAIsgJ,iDAAJ,CAAc,UAAd,EAA0B,4BAA1B,CAAN;AACD;;AACD,aAAOtgJ,KAAP;AACD;;AAED,QAAI8R,IAAI,qBAAQ2tI,GAAR,CAAR;;AACA3tI,QAAI,CAAC0wI,UAAL,GAAkB1wI,IAAI,CAAC0wI,UAAL,GACd2I,UAAU,CAACr5I,IAAI,CAAC0wI,UAAN,CAAV,CAA4Bh/I,GAA5B,CAAgC2/I,IAAI,IAAI2H,iBAAiB,CAAC3H,IAAD,CAAzD,CADc,GAEd,EAFJ;AAGArxI,QAAI,CAAC2wI,OAAL,GAAe3wI,IAAI,CAAC2wI,OAAL,GACX0I,UAAU,CAACr5I,IAAI,CAAC2wI,OAAN,CAAV,CAAyBj/I,GAAzB,CAA6BwyF,MAAM,IAAI80D,iBAAiB,CAAC90D,MAAD,CAAxD,CADW,GAEX,EAFJ;AAGA,WAAOlkF,IAAP;AACD,GAxCsB;;AA0CvBs5I,QAAM,CAACt5I,IAAD,EAAO;AACX,QAAI2tI,GAAG,qBAAQ3tI,IAAR,CAAP;;AACA,QAAI,gBAAgB2tI,GAApB,EAAyB;AACvB,UAAI+C,UAAU,GAAG/C,GAAG,CAAC+C,UAAJ,CAAeh/I,GAAf,CAAmB2/I,IAAI,IAAI4H,eAAe,CAAC5H,IAAD,CAA1C,CAAjB;AACA1D,SAAG,CAAC+C,UAAJ,GAAiBn0I,IAAI,CAACC,SAAL,CAAek0I,UAAf,CAAjB;AACD;;AACD,QAAI,aAAa/C,GAAjB,EAAsB;AACpB,UAAIgD,OAAO,GAAGhD,GAAG,CAACgD,OAAJ,CAAYj/I,GAAZ,CAAgBwyF,MAAM,IAAI+0D,eAAe,CAAC/0D,MAAD,CAAzC,CAAd;AACAypD,SAAG,CAACgD,OAAJ,GAAcp0I,IAAI,CAACC,SAAL,CAAem0I,OAAf,CAAd;AACD;;AACD,WAAOhD,GAAP;AACD;;AArDsB,CAAlB;AAwDA,SAAS4L,QAAT,CAAkBvjJ,IAAlB,EAAwB;AAC7B,MAAIgK,IAAJ;;AACA,MAAI;AACFA,QAAI,GAAG,IAAIlB,2CAAJ,iCACFo6I,SAAS,CAACE,IAAV,CAAepjJ,IAAf,CADE;AAELu5I,gBAAU,EAAEiK,yDAAWA;AAFlB,OAAP;AAID,GALD,CAKE,OAAOvhI,CAAP,EAAU;AACVoR,WAAO,CAACC,IAAR,CAAa,cAAb,EAA6BrR,CAA7B;;AACA,QAAIA,CAAC,YAAYu2H,iDAAjB,EAA4B;AAC1B,aAAO,IAAP;AACD;;AACD,UAAMv2H,CAAN;AACD,GAb4B,CAe7B;AACA;AACA;;;AACA+6H,2DAAU,CAAChzI,IAAD,EAAOy5I,gEAAW,EAAlB,CAAV;AAEA,SAAOz5I,IAAP;AACD;AAEM,eAAe05I,SAAf,GAA2B;AAChCjB,YAAU;AAEV,MAAI30I,KAAK,GAAG,MAAMq8H,uCAAA,CAAQ;AAC5B;AACA;AACA,GAHoB,CAAlB;;AAKA,OAAK,IAAI3yH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1J,KAAK,CAACnP,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACrC,QAAI6jB,IAAI,GAAGvtB,KAAK,CAAC0J,CAAD,CAAhB,CADqC,CAErC;;AACA,QAAI6jB,IAAI,CAACo/G,KAAL,KAAe,SAAf,IAA4Bp/G,IAAI,CAACo/G,KAAL,KAAe,QAA/C,EAAyD;AACvDp/G,UAAI,CAACo/G,KAAL,GAAa,KAAb;AACD;;AAED,QAAIzwI,IAAI,GAAGu5I,QAAQ,CAACloH,IAAD,CAAnB;;AACA,QAAIrxB,IAAJ,EAAU;AACRq4I,cAAQ,CAAClkJ,GAAT,CAAa6L,IAAI,CAACg2H,EAAlB,EAAsBh2H,IAAtB;AACAu4I,sBAAgB,CAAC7kJ,KAAjB,CAAuBsM,IAAvB;AACAw4I,kBAAY,CAAC9kJ,KAAb,CAAmBsM,IAAnB;AACD;AACF;;AAED,MAAIs4I,YAAJ,EAAkB;AAChBA,gBAAY;AACb;;AACDA,cAAY,GAAGqB,mEAAe,CAACC,WAAD,CAA9B;AACD;AAEM,SAASC,QAAT,GAAoB;AACzB;AACA,SAAO,CAAC,GAAGxB,QAAQ,CAAC51I,MAAT,EAAJ,CAAP;AACD;AAEM,eAAeq3I,UAAf,CAA0B95I,IAA1B,EAAgC;AACrCA,MAAI,GAAGk5I,SAAS,CAACx5F,QAAV,CAAmB1/C,IAAnB,CAAP;AACA,SAAOmgI,kDAAA,CAAkB,OAAlB,EAA2B+Y,SAAS,CAACI,MAAV,CAAiBt5I,IAAjB,CAA3B,CAAP;AACD;AAEM,eAAe+5I,UAAf,CAA0B/5I,IAA1B,EAAgC;AACrCA,MAAI,GAAGk5I,SAAS,CAACx5F,QAAV,CAAmB1/C,IAAnB,EAAyB;AAAEwV,UAAM,EAAE;AAAV,GAAzB,CAAP;AACA,SAAO2qH,0CAAA,CAAU,OAAV,EAAmB+Y,SAAS,CAACI,MAAV,CAAiBt5I,IAAjB,CAAnB,CAAP;AACD;AAEM,eAAeg6I,UAAf,CAA0Bh6I,IAA1B,EAAgC;AACrC,MAAI9J,QAAQ,GAAG,MAAMiqI,yCAAA,CAAS,yCAAT,EAAoD,CACvEngI,IAAI,CAACg2H,EADkE,CAApD,CAArB;;AAIA,MAAI9/H,QAAJ,EAAc;AACZ,WAAO,KAAP;AACD;;AAED,SAAOiqI,2CAAA,CAAW,OAAX,EAAoBngI,IAAI,CAACg2H,EAAzB,CAAP;AACD,C,CAED;;AAEA,SAAS4jB,WAAT,CAAqBK,SAArB,EAAgCC,SAAhC,EAA2C;AACzCA,WAAS,CAACr5I,OAAV,CAAkB,CAACuT,KAAD,EAAQshH,KAAR,KAAkB;AAClC,QAAIA,KAAK,KAAK,OAAd,EAAuB;AACrBthH,WAAK,CAACvT,OAAN,CAAcs5I,QAAQ,IAAI;AACxB,YAAIC,OAAO,GAAG/B,QAAQ,CAACznJ,GAAT,CAAaupJ,QAAQ,CAACnkB,EAAtB,CAAd;;AAEA,YAAImkB,QAAQ,CAACE,SAAT,KAAuB,CAA3B,EAA8B;AAC5B;AACA,cAAIr6I,IAAI,GAAGq4I,QAAQ,CAACznJ,GAAT,CAAaupJ,QAAQ,CAACnkB,EAAtB,CAAX;;AACA,cAAIh2H,IAAJ,EAAU;AACRq4I,oBAAQ,CAACx/H,MAAT,CAAgB7Y,IAAI,CAAC+wI,KAAL,EAAhB;AACAwH,4BAAgB,CAAC7hJ,MAAjB,CAAwBsJ,IAAxB;AACAw4I,wBAAY,CAAC9hJ,MAAb,CAAoBsJ,IAApB;AACD;AACF,SARD,MAQO;AACL;AACA,cAAIA,IAAI,GAAGu5I,QAAQ,CAACY,QAAD,CAAnB;;AACA,cAAIn6I,IAAJ,EAAU;AACR,gBAAIo6I,OAAJ,EAAa;AACX7B,8BAAgB,CAAC7hJ,MAAjB,CAAwB0jJ,OAAxB;AACA5B,0BAAY,CAAC9hJ,MAAb,CAAoB0jJ,OAApB;AACD;;AACD/B,oBAAQ,CAAClkJ,GAAT,CAAagmJ,QAAQ,CAACnkB,EAAtB,EAA0Bh2H,IAA1B;AACAu4I,4BAAgB,CAAC7kJ,KAAjB,CAAuBsM,IAAvB;AACAw4I,wBAAY,CAAC9kJ,KAAb,CAAmBsM,IAAnB;AACD;AACF;AACF,OAxBD;AAyBD;AACF,GA5BD,EADyC,CA+BzC;AACA;;AACA,MAAIs6I,MAAM,GAAG,CAAC,GAAGJ,SAAS,CAAC12I,IAAV,EAAJ,CAAb;;AACA,MAAI82I,MAAM,CAACjwI,IAAP,CAAYqrH,KAAK,IAAIA,KAAK,CAAC/4H,OAAN,CAAc,SAAd,MAA6B,CAAC,CAAnD,CAAJ,EAA2D;AACzDk9I,YAAQ,GAAGh5I,OAAX,CAAmBb,IAAI,IAAI;AACzBgzI,+DAAU,CAAChzI,IAAD,EAAOy5I,gEAAW,EAAlB,CAAV;AACD,KAFD;AAGD;AACF,C,CAED;;;AACO,SAASp1I,QAAT,CAAkB2mI,KAAlB,EAAyB;AAC9B,MAAIuP,UAAU,qBAAQvP,KAAR,CAAd;;AACA,MAAIwP,UAAU,GAAG,EAAjB;AAEA,MAAI12I,KAAK,GAAG+uI,wDAAS,CACnBpB,iEAAY,CACV8G,gBAAgB,CAAChH,kBAAjB,CAAoCvG,KAApC,CADU,EAEVwN,YAAY,CAACjH,kBAAb,CAAgCvG,KAAhC,CAFU,CADO,CAArB;;AAOA,OAAK,IAAIx9H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1J,KAAK,CAACnP,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACrC+sI,cAAU,GAAGz2I,KAAK,CAAC0J,CAAD,CAAL,CAASgkB,KAAT,CAAe+oH,UAAf,CAAb;AACD;;AAED,SAAOA,UAAP;AACD,C,CAED;;AACO,SAASE,eAAT,CAAyB/J,UAAzB,EAAqC;AAAEgK,iBAAe,GAAG;AAApB,IAA4B,EAAjE,EAAqE;AAC1E,MAAI9N,MAAM,GAAG,EAAb;AAEA8D,YAAU,GAAGA,UAAU,CACpBh/I,GADU,CACN2/I,IAAI,IAAI;AACX,QAAIA,IAAI,YAAY/B,gDAApB,EAA+B;AAC7B,aAAO+B,IAAP;AACD;;AAED,QAAI;AACF,aAAO,IAAI/B,gDAAJ,CACL+B,IAAI,CAAChC,EADA,EAELgC,IAAI,CAAC15G,KAFA,EAGL05G,IAAI,CAACnjJ,KAHA,EAILmjJ,IAAI,CAAC5hJ,OAJA,EAKL+pJ,yDALK,CAAP;AAOD,KARD,CAQE,OAAOvhI,CAAP,EAAU;AACV20H,YAAM,CAACp5I,IAAP,CAAYykB,CAAC,CAACnN,IAAF,IAAU,UAAtB;AACAue,aAAO,CAACsrE,GAAR,CAAY,yCAAyC18E,CAAC,CAAC2kB,OAAvD;AACA,aAAO,IAAP;AACD;AACF,GAnBU,EAoBVxnC,MApBU,CAoBHw9C,OApBG,CAAb,CAH0E,CAyB1E;;AACA,MAAI+nG,OAAO,GAAGjK,UAAU,CAACh/I,GAAX,CAAe2/I,IAAI,IAAI;AACnC,QAAMvmI,IAAN,GAA0CumI,IAA1C,CAAMvmI,IAAN;AAAA,QAAY6sB,KAAZ,GAA0C05G,IAA1C,CAAY15G,KAAZ;AAAA,QAAmB03G,EAAnB,GAA0CgC,IAA1C,CAAmBhC,EAAnB;AAAA,QAAuBnhJ,KAAvB,GAA0CmjJ,IAA1C,CAAuBnjJ,KAAvB;AAAA,QAA8BuB,OAA9B,GAA0C4hJ,IAA1C,CAA8B5hJ,OAA9B;;AAEA,QAAI2wI,QAAQ,GAAGlyI,KAAK,IAAI;AACtB,UAAI4c,IAAI,KAAK,QAAb,EAAuB;AACrB,eAAO5c,KAAK,CAACA,KAAb;AACD;;AACD,aAAOA,KAAP;AACD,KALD;;AAOA,QAAIsjC,KAAK,GAAG,CAACmG,KAAD,EAAQ03G,EAAR,EAAYnhJ,KAAZ,KAAsB;AAChC,UAAI4c,IAAI,KAAK,QAAb,EAAuB;AACrB,YAAIrb,OAAJ,EAAa;AACX,cAAIA,OAAO,CAACmgJ,OAAZ,EAAqB;AACnB,mBAAO;AACLgL,kBAAI,EAAE,CACJ;AAAEhhJ,sBAAM,EAAE;AAAEihJ,qBAAG,EAAE;AAAP;AAAV,eADI,EAEJ;AAAE,iBAACljH,KAAD,GAAS;AAAEmjH,4BAAU,EAAE,MAAd;AAAsB,mBAACzL,EAAD,GAAMnhJ;AAA5B;AAAX,eAFI;AADD,aAAP;AAMD,WAPD,MAOO,IAAIuB,OAAO,CAACogJ,MAAZ,EAAoB;AACzB,mBAAO;AACL+K,kBAAI,EAAE,CAAC;AAAEhhJ,sBAAM,EAAE;AAAEkrI,qBAAG,EAAE;AAAP;AAAV,eAAD,EAAyB;AAAE,iBAACntG,KAAD,GAAS;AAAE,mBAAC03G,EAAD,GAAMnhJ;AAAR;AAAX,eAAzB;AADD,aAAP;AAGD;AACF;;AAED,eAAO;AAAE0L,gBAAM,EAAE;AAAE,aAACy1I,EAAD,GAAMnhJ;AAAR;AAAV,SAAP;AACD,OAjBD,MAiBO,IAAI4c,IAAI,KAAK,QAAb,EAAuB;AAC5B,eAAO;AAAE,WAAC6sB,KAAD,GAAS;AAAEmjH,sBAAU,EAAE,QAAd;AAAwB,aAACzL,EAAD,GAAMnhJ;AAA9B;AAAX,SAAP;AACD,OAFM,MAEA,IAAI4c,IAAI,KAAK,MAAb,EAAqB;AAC1B,eAAO;AAAE,WAAC6sB,KAAD,GAAS;AAAE,aAAC03G,EAAD,GAAMnhJ,KAAK,CAACyC;AAAd;AAAX,SAAP;AACD;;AACD,aAAO;AAAE,SAACgnC,KAAD,GAAS;AAAE,WAAC03G,EAAD,GAAMnhJ;AAAR;AAAX,OAAP;AACD,KAxBD;;AA0BA,YAAQmhJ,EAAR;AACE,WAAK,UAAL;AACA,WAAK,IAAL;AACE,YAAIvkI,IAAI,KAAK,MAAb,EAAqB;AACnB,cAAI5c,KAAK,CAAC4c,IAAN,KAAe,OAAnB,EAA4B;AAC1B,gBAAI/X,KAAK,GAAG7E,KAAK,CAACgI,QAAN,CACTlH,WADS,CACG;AAAEwD,kBAAI,EAAEkoJ;AAAR,aADH,EAETnoJ,OAFS,GAGTb,GAHS,CAGLmzC,CAAC,IAAI4oG,kEAAW,CAAC5oG,CAAC,CAACl0C,IAAH,CAHX,CAAZ;;AAKA,gBAAI8mC,OAAO,GAAGoN,CAAC,KAAK;AAAEk2G,iBAAG,EAAEl2G;AAAP,aAAL,CAAf;;AAEA,mBAAO;AACLm2G,iBAAG,EAAEjoJ,KAAK,CAACrB,GAAN,CAAUmzC,CAAC,IAAI;AAClB,oBAAIwqG,EAAE,KAAK,UAAX,EAAuB;AACrB,yBAAO;AACLuL,wBAAI,EAAE,CACJ;AAAEjqJ,0BAAI,EAAE;AAAEsqJ,4BAAI,EAAEn2F,8DAAO,CAACjgB,CAAD,EAAI,CAAJ;AAAf;AAAR,qBADI,EAEJ;AAAEl0C,0BAAI,EAAE;AAAEuqJ,4BAAI,EAAEhxG,8DAAO,CAACrF,CAAD,EAAI,CAAJ;AAAf;AAAR,qBAFI;AADD,mBAAP;AAMD;;AACD,uBAAO;AAAEl0C,sBAAI,EAAEk0C;AAAR,iBAAP;AACD,eAVI;AADA,aAAP;AAaD,WArBD,MAqBO;AACL,gBAAMl0C,IAAN,GAAezC,KAAf,CAAMyC,IAAN;;AAEA,gBAAI0+I,EAAE,KAAK,UAAX,EAAuB;AACrB,kBAAIW,QAAQ,GAAGruF,gEAAS,CAACzzD,KAAK,CAACyC,IAAP,CAAxB;AACA,kBAAIs/I,IAAI,GAAG/lG,8DAAO,CAAC8lG,QAAD,EAAW,CAAX,CAAlB;AACA,kBAAIE,GAAG,GAAGprF,8DAAO,CAACkrF,QAAD,EAAW,CAAX,CAAjB;AAEA,qBAAO;AACL4K,oBAAI,EAAE,CAAC;AAAEjqJ,sBAAI,EAAE;AAAEsqJ,wBAAI,EAAE/K;AAAR;AAAR,iBAAD,EAA0B;AAAEv/I,sBAAI,EAAE;AAAEuqJ,wBAAI,EAAEjL;AAAR;AAAR,iBAA1B;AADD,eAAP;AAGD,aARD,MAQO;AACL,sBAAQ/hJ,KAAK,CAAC4c,IAAd;AACE,qBAAK,MAAL;AACE,yBAAO;AAAEna,wBAAI,EAAEzC,KAAK,CAACyC;AAAd,mBAAP;;AACF,qBAAK,OAAL;AAAc;AACZ,wBAAIu/I,GAAG,GAAGhiJ,KAAK,CAACyC,IAAN,GAAa,KAAvB;AACA,wBAAIs/I,IAAI,GAAG/hJ,KAAK,CAACyC,IAAN,GAAa,KAAxB;AACA,2BAAO;AACLiqJ,0BAAI,EAAE,CAAC;AAAEjqJ,4BAAI,EAAE;AAAEsqJ,8BAAI,EAAE/K;AAAR;AAAR,uBAAD,EAA0B;AAAEv/I,4BAAI,EAAE;AAAEuqJ,8BAAI,EAAEjL;AAAR;AAAR,uBAA1B;AADD,qBAAP;AAGD;;AACD,qBAAK,MAAL;AAAa;AACX,wBAAIC,GAAG,GAAGhiJ,KAAK,CAACyC,IAAN,GAAa,QAAvB;AACA,wBAAIs/I,IAAI,GAAG/hJ,KAAK,CAACyC,IAAN,GAAa,QAAxB;AACA,2BAAO;AACLiqJ,0BAAI,EAAE,CAAC;AAAEjqJ,4BAAI,EAAE;AAAEsqJ,8BAAI,EAAE/K;AAAR;AAAR,uBAAD,EAA0B;AAAEv/I,4BAAI,EAAE;AAAEuqJ,8BAAI,EAAEjL;AAAR;AAAR,uBAA1B;AADD,qBAAP;AAGD;;AACD;AAjBF;AAmBD;AACF;AACF,SAvDD,MAuDO,IAAInlI,IAAI,KAAK,QAAb,EAAuB;AAC5B,cAAI8B,MAAM,GAAG1e,KAAK,CAACA,KAAnB;;AACA,cAAImhJ,EAAE,KAAK,UAAX,EAAuB;AACrB,gBAAIe,SAAS,GAAGC,8EAAwB,CAACzjI,MAAD,CAAxC;AAEA,mBAAO;AACLguI,kBAAI,EAAE,CACJppH,KAAK,CAACmG,KAAD,EAAQ,MAAR,EAAgB/qB,MAAM,GAAGwjI,SAAzB,CADD,EAEJ5+G,KAAK,CAACmG,KAAD,EAAQ,MAAR,EAAgB/qB,MAAM,GAAGwjI,SAAzB,CAFD;AADD,aAAP;AAMD;;AACD,iBAAO5+G,KAAK,CAACmG,KAAD,EAAQ,KAAR,EAAe/qB,MAAf,CAAZ;AACD;;AAED,eAAO4kB,KAAK,CAACmG,KAAD,EAAQ,KAAR,EAAezpC,KAAf,CAAZ;;AAEF,WAAK,WAAL;AACE;AACA;AACA,2BAAkBoiJ,iEAAW,CAACpiJ,KAAK,CAAC8gJ,IAAP,EAAa9gJ,KAAK,CAAC+gJ,IAAnB,CAA7B;AAAA;AAAA,YAAKiB,GAAL;AAAA,YAAUD,IAAV;;AACA,eAAO;AACL,WAACt4G,KAAD,GAAS,CAAC;AAAEsjH,gBAAI,EAAE/K;AAAR,WAAD,EAAgB;AAAEgL,gBAAI,EAAEjL;AAAR,WAAhB;AADJ,SAAP;;AAGF,WAAK,UAAL;AACE;AACA;AACA,eAAOz+G,KAAK,CACV1mB,IAAI,KAAK,IAAT,GAAgB6sB,KAAK,GAAG,OAAxB,GAAkCA,KADxB,EAEV,OAFU,EAGV,MAAMzpC,KAAN,GAAc,GAHJ,CAAZ;;AAKF,WAAK,OAAL;AACE,YAAIuU,MAAM,GAAGvU,KAAb;;AACA,YAAIuU,MAAM,CAAC9N,MAAP,KAAkB,CAAtB,EAAyB;AACvB;AACA,iBAAO;AAAEqhI,cAAE,EAAE;AAAN,WAAP;AACD;;AACD,eAAO;AAAEglB,aAAG,EAAEv4I,MAAM,CAAC/Q,GAAP,CAAW4mC,CAAC,IAAI9G,KAAK,CAACmG,KAAD,EAAQ,KAAR,EAAeW,CAAf,CAArB;AAAP,SAAP;;AACF,WAAK,IAAL;AACE,eAAO9G,KAAK,CAACmG,KAAD,EAAQ,KAAR,EAAeyoG,QAAQ,CAAClyI,KAAD,CAAvB,CAAZ;;AACF,WAAK,KAAL;AACE,eAAOsjC,KAAK,CAACmG,KAAD,EAAQ,MAAR,EAAgByoG,QAAQ,CAAClyI,KAAD,CAAxB,CAAZ;;AACF,WAAK,IAAL;AACE,eAAOsjC,KAAK,CAACmG,KAAD,EAAQ,KAAR,EAAeyoG,QAAQ,CAAClyI,KAAD,CAAvB,CAAZ;;AACF,WAAK,KAAL;AACE,eAAOsjC,KAAK,CAACmG,KAAD,EAAQ,MAAR,EAAgByoG,QAAQ,CAAClyI,KAAD,CAAxB,CAAZ;;AACF,WAAK,MAAL;AACE,eAAOsjC,KAAK,CAACmG,KAAD,EAAQ,KAAR,EAAe,IAAf,CAAZ;;AACF,WAAK,OAAL;AACE,eAAOnG,KAAK,CAACmG,KAAD,EAAQ,KAAR,EAAe,KAAf,CAAZ;;AACF;AACE,cAAM,IAAIxkC,KAAJ,CAAU,yBAAyBk8I,EAAnC,CAAN;AA9GJ;AAgHD,GApJa,CAAd;AAsJA,SAAO;AAAEsL,WAAF;AAAW/N;AAAX,GAAP;AACD;AAEM,SAASuO,YAAT,CAAsBC,cAAtB,EAAsCzK,OAAtC,EAA+CjP,QAA/C,EAAyD;AAC9D,MAAI2Z,aAAa,GAAG1K,OAAO,CACxBj/I,GADiB,CACbwyF,MAAM,IAAI;AACb,QAAIA,MAAM,YAAYssD,6CAAtB,EAA8B;AAC5B,aAAOtsD,MAAP;AACD;;AAED,QAAI;AACF,aAAO,IAAIssD,6CAAJ,CACLtsD,MAAM,CAACmrD,EADF,EAELnrD,MAAM,CAACvsD,KAFF,EAGLusD,MAAM,CAACh2F,KAHF,EAILg2F,MAAM,CAACz0F,OAJF,EAKL+pJ,yDALK,CAAP;AAOD,KARD,CAQE,OAAOvhI,CAAP,EAAU;AACVoR,aAAO,CAACsrE,GAAR,CAAY,cAAZ,EAA4B18E,CAA5B;AACA,aAAO,IAAP;AACD;AACF,GAlBiB,EAmBjB7iB,MAnBiB,CAmBVw9C,OAnBU,CAApB;;AAqBA,MAAIyoG,aAAa,CAAC1mJ,MAAd,KAAyBg8I,OAAO,CAACh8I,MAArC,EAA6C;AAC3C;AACA,WAAO,IAAP;AACD;;AAED,MAAIohJ,OAAO,GAAGqF,cAAc,CAAC1pJ,GAAf,CAAmBskI,EAAE,IAAI;AACrC,QAAIxgH,MAAM,GAAG;AAAEwgH;AAAF,KAAb;;AACA,SAAK,IAAI9xC,MAAT,IAAmBm3D,aAAnB,EAAkC;AAChCn3D,YAAM,CAACrjD,IAAP,CAAYrrB,MAAZ;AACD;;AACD,WAAOA,MAAP;AACD,GANa,CAAd;AAQA,SAAOksH,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAAEqU;AAAF,GAAtC,CAAP;AACD;AAEM,SAASuF,gBAAT,CAA0BziB,OAA1B,EAAmC;AACxC,MAAI/0H,KAAK,GAAG,IAAIkF,GAAJ,EAAZ;AACAoqI,2DAAU,CAACyG,QAAQ,EAAT,EAAa,OAAb,EAAsB,CAAC75I,IAAD,EAAOg2H,EAAP,KAAc;AAC5C,QAAIA,EAAE,KAAK6C,OAAX,EAAoB;AAClB/0H,WAAK,CAACpT,GAAN,CAAUsP,IAAV;AACD;AACF,GAJS,CAAV;AAMA,SAAO6yI,wDAAS,CAAC,CAAC,GAAG/uI,KAAJ,CAAD,CAAhB;AACD;;AAED,UAAUy3I,gBAAV,CACE9K,KADF,EAEE+K,SAFF,EAGEC,WAHF,EAIE;AAAEC,WAAF;AAAaC;AAAb,CAJF,EAKE;AACA,MAAI73I,KAAK,GAAG+1I,QAAQ,EAApB;;AACA,OAAK,IAAIrsI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1J,KAAK,CAACnP,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACrC,QAAIxN,IAAI,GAAG8D,KAAK,CAAC0J,CAAD,CAAhB;;AAEA,QACExN,IAAI,CAACywI,KAAL,KAAeA,KAAf,IACAzwI,IAAI,CAAC2wI,OAAL,CAAah8I,MAAb,KAAwB,CADxB,IAEAqL,IAAI,CAAC2wI,OAAL,CAAa,CAAb,EAAgBtB,EAAhB,KAAuB,KAFvB,IAGArvI,IAAI,CAAC2wI,OAAL,CAAa,CAAb,EAAgBh5G,KAAhB,KAA0B8jH,WAH1B,KAICE,WAAW,KAAKhuJ,SAAhB,IAA6BqS,IAAI,CAAC2wI,OAAL,CAAa,CAAb,EAAgBziJ,KAAhB,KAA0BytJ,WAJxD,KAKA37I,IAAI,CAAC0wI,UAAL,CAAgB/7I,MAAhB,KAA2B,CAL3B,IAMAqL,IAAI,CAAC0wI,UAAL,CAAgB,CAAhB,EAAmBrB,EAAnB,KAA0B,IAN1B,IAOArvI,IAAI,CAAC0wI,UAAL,CAAgB,CAAhB,EAAmB/4G,KAAnB,KAA6B6jH,SAP7B,KAQCE,SAAS,KAAK/tJ,SAAd,IAA2BqS,IAAI,CAAC0wI,UAAL,CAAgB,CAAhB,EAAmBxiJ,KAAnB,KAA6BwtJ,SARzD,CADF,EAUE;AACA,YAAM17I,IAAI,CAAC4K,SAAL,EAAN;AACD;AACF;;AAED,SAAO,IAAP;AACD;;AAED,UAAUgxI,mBAAV,CACEnL,KADF,EAEE+K,SAFF,EAGEC,WAHF,EAIE;AAAEC,WAAF;AAAaC;AAAb,CAJF,EAKE;AACA,MAAI73I,KAAK,GAAG+1I,QAAQ,EAApB;;AACA,OAAK,IAAIrsI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1J,KAAK,CAACnP,MAA1B,EAAkC6Y,CAAC,EAAnC,EAAuC;AACrC,QAAIxN,IAAI,GAAG8D,KAAK,CAAC0J,CAAD,CAAhB;;AAEA,QACExN,IAAI,CAACywI,KAAL,KAAeA,KAAf,IACAzwI,IAAI,CAAC2wI,OAAL,CAAah8I,MAAb,KAAwB,CADxB,IAEAqL,IAAI,CAAC2wI,OAAL,CAAa,CAAb,EAAgBtB,EAAhB,KAAuB,KAFvB,IAGArvI,IAAI,CAAC2wI,OAAL,CAAa,CAAb,EAAgBh5G,KAAhB,KAA0B8jH,WAH1B,KAICE,WAAW,IAAI,IAAf,IAAuB37I,IAAI,CAAC2wI,OAAL,CAAa,CAAb,EAAgBziJ,KAAhB,KAA0BytJ,WAJlD,KAKA37I,IAAI,CAAC0wI,UAAL,CAAgB/7I,MAAhB,KAA2B,CAL3B,IAMAqL,IAAI,CAAC0wI,UAAL,CAAgB,CAAhB,EAAmBrB,EAAnB,KAA0B,OAN1B,IAOArvI,IAAI,CAAC0wI,UAAL,CAAgB,CAAhB,EAAmB/4G,KAAnB,KAA6B6jH,SAP7B,KAQCE,SAAS,IAAI,IAAb,IAAqB17I,IAAI,CAAC0wI,UAAL,CAAgB,CAAhB,EAAmBxiJ,KAAnB,CAAyByO,OAAzB,CAAiC++I,SAAjC,MAAgD,CAAC,CARvE,CADF,EAUE;AACA,YAAM17I,IAAI,CAAC4K,SAAL,EAAN;AACD;AACF;;AAED,SAAO,IAAP;AACD;;AAEM,eAAeixI,qBAAf,CAAqCC,SAArC,EAAgDrlH,EAAhD,EAAoD;AACzD,MAAIslH,UAAU,GAAGH,mBAAmB,CAAC,KAAD,EAAQ,gBAAR,EAA0B,OAA1B,EAAmC;AACrED,eAAW,EAAEllH;AADwD,GAAnC,CAAnB,CAEdxoC,IAFc,GAEPC,KAFV,CADyD,CAKzD;AACA;AACA;AACA;AACA;;AAEA,MAAI6tJ,UAAJ,EAAgB;AACd,QAAIlL,SAAS,GAAGkL,UAAU,CAACrL,UAAX,CAAsB,CAAtB,CAAhB;AACA,QAAIyJ,QAAQ,GAAG,CACb,GAAG1I,iEAAY,CACb,IAAIzoI,GAAJ,CAAQ6nI,SAAS,CAAC3iJ,KAAlB,CADa,EAEb,IAAI8a,GAAJ,CAAQ8yI,SAAS,CAAC1mJ,MAAV,CAAiBuC,IAAI,IAAIA,IAAI,KAAK,EAAlC,CAAR,CAFa,CADF,CAAf;;AAMA,QAAIqI,IAAI,mCACH+7I,UADG;AAENrL,gBAAU,EAAE,iCAAMG,SAAN;AAAiB3iJ,aAAK,EAAEisJ;AAAxB;AAFN,MAAR;;AAIA,UAAMJ,UAAU,CAAC/5I,IAAD,CAAhB;AACA,WAAO+7I,UAAU,CAAC/lB,EAAlB;AACD,GAdD,MAcO;AACL,QAAIh2H,IAAI,GAAG,IAAIlB,2CAAJ,CAAS;AAClB2xI,WAAK,EAAE,KADW;AAElBC,gBAAU,EAAE,CAAC;AAAErB,UAAE,EAAE,OAAN;AAAe13G,aAAK,EAAE,gBAAtB;AAAwCzpC,aAAK,EAAE4tJ;AAA/C,OAAD,CAFM;AAGlBnL,aAAO,EAAE,CAAC;AAAEtB,UAAE,EAAE,KAAN;AAAa13G,aAAK,EAAE,OAApB;AAA6BzpC,aAAK,EAAEuoC;AAApC,OAAD,CAHS;AAIlB84G,gBAAU,EAAEiK,yDAAWA;AAJL,KAAT,CAAX;AAMA,WAAOM,UAAU,CAAC95I,IAAI,CAAC4K,SAAL,EAAD,CAAjB;AACD;AACF;AAEM,SAASoxI,mBAAT,CAA6BrlB,YAA7B,EAA2C;AAChD,MAAI2b,MAAM,GAAG,IAAI9vI,GAAJ,EAAb;AAEAm0H,cAAY,CAAC91H,OAAb,CAAqBmqI,KAAK,IAAI;AAC5B,QAAIA,KAAK,CAAC5S,QAAV,EAAoB;AAClBka,YAAM,CAACn+I,GAAP,CAAW62I,KAAK,CAAC5S,QAAjB,EAA2B,CAACka,MAAM,CAAC1hJ,GAAP,CAAWo6I,KAAK,CAAC5S,QAAjB,KAA8B,CAA/B,IAAoC,CAA/D;AACD;AACF,GAJD;AAMA,MAAI6jB,MAAM,GAAGtlB,YAAY,CAAC/nI,MAAb,CAAoB,CAACqtJ,MAAD,EAASjR,KAAT,KAAmB;AAClD,QAAIoH,KAAK,GAAGE,MAAM,CAAC1hJ,GAAP,CAAWo6I,KAAK,CAAC5S,QAAjB,CAAZ;;AACA,QAAI,CAAC6jB,MAAD,IAAW7J,KAAK,GAAG6J,MAAM,CAAC7J,KAA9B,EAAqC;AACnC,aAAO;AAAEA,aAAF;AAASha,gBAAQ,EAAE4S,KAAK,CAAC5S;AAAzB,OAAP;AACD;;AACD,WAAO6jB,MAAP;AACD,GANY,EAMV,IANU,CAAb;AAQA,SAAOA,MAAM,CAAC7J,KAAP,IAAgB,CAAhB,GAAoB6J,MAAM,CAAC7jB,QAA3B,GAAsC,IAA7C;AACD;AAEM,eAAe8jB,mBAAf,CAAmCvlB,YAAnC,EAAiD;AACtD,MAAIA,YAAY,CAAChiI,MAAb,KAAwB,CAA5B,EAA+B;AAC7B;AACD;;AAED,MAAIwnJ,QAAQ,GAAG,IAAInzI,GAAJ,CAAQ2tH,YAAY,CAACjlI,GAAb,CAAiBs5I,KAAK,IAAIA,KAAK,CAACvS,KAAhC,CAAR,CAAf;AACA,MAAI2jB,QAAQ,GAAG,IAAIpzI,GAAJ,CAAQ2tH,YAAY,CAACjlI,GAAb,CAAiBs5I,KAAK,IAAIA,KAAK,CAAChV,EAAhC,CAAR,CAAf,CANsD,CAQtD;AACA;;AACA,MAAIkhB,UAAU,GAAG,IAAjB;;AACA,OAAK,IAAI1pI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmpH,YAAY,CAAChiI,MAAjC,EAAyC6Y,CAAC,EAA1C,EAA8C;AAC5C,QAAI0pI,UAAU,KAAK,IAAf,IAAuBvgB,YAAY,CAACnpH,CAAD,CAAZ,CAAgB7c,IAAhB,GAAuBumJ,UAAlD,EAA8D;AAC5DA,gBAAU,GAAGvgB,YAAY,CAACnpH,CAAD,CAAZ,CAAgB7c,IAA7B;AACD;AACF,GAfqD,CAiBtD;AACA;AACA;AACA;;;AACAumJ,YAAU,GAAGpyF,8DAAO,CAACoyF,UAAD,EAAa,GAAb,CAApB,CArBsD,CAuBtD;AACA;;AACA,MAAImF,QAAQ,GAAG,MAAMlc,uCAAA,CAClB;AACL;AACA,sEAHuB,EAInB,CAACmc,0DAAU,CAACpF,UAAD,CAAX,EAAyBoF,0DAAU,CAACpyG,8DAAO,CAACxhC,iEAAU,EAAX,EAAe,GAAf,CAAR,CAAnC,CAJmB,CAArB;AAOA,MAAI8rI,eAAe,GAAG+H,qEAAgB,CAACF,QAAD,EAAW,OAAX,CAAtC;AACA,MAAIG,eAAe,GAAG,IAAIh6I,GAAJ,EAAtB;;AAEA,OAAK,IAAIq2H,OAAT,IAAoBsjB,QAApB,EAA8B;AAC5B;AACA,QAAItjB,OAAJ,EAAa;AACX,UAAI4jB,WAAW,GAAG,CAACjI,eAAe,CAAC5jJ,GAAhB,CAAoBioI,OAApB,KAAgC,EAAjC,EAAqCliI,KAArC,CAA2C,CAA3C,EAA8C,CAA9C,CAAlB,CADW,CAGX;AACA;;AACA,UAAI8lJ,WAAW,CAACpyI,IAAZ,CAAiB2gI,KAAK,IAAIoR,QAAQ,CAACz1I,GAAT,CAAaqkI,KAAK,CAAChV,EAAnB,CAA1B,CAAJ,EAAuD;AACrD,YAAIoC,QAAQ,GAAG4jB,mBAAmB,CAACS,WAAD,CAAlC;;AACA,YAAIrkB,QAAJ,EAAc;AACZokB,yBAAe,CAACroJ,GAAhB,CAAoB0kI,OAApB,EAA6BT,QAA7B;AACD;AACF;AACF;AACF;;AAED,QAAM4L,iEAAa,CAAC,YAAY;AAC9B,qBAAgCwY,eAAe,CAACrmI,OAAhB,EAAhC,EAA2D;AAAA;;AAAA,UAAjD0iH,OAAiD;AAAA,UAAxCT,QAAwC;AACzD,UAAIskB,WAAW,GAAG,CAChB,GAAGnB,gBAAgB,CAAC,IAAD,EAAO,OAAP,EAAgB,UAAhB,EAA4B;AAC7CG,iBAAS,EAAE7iB;AADkC,OAA5B,CADH,CAAlB;;AAMA,UAAI6jB,WAAW,CAAC/nJ,MAAZ,GAAqB,CAAzB,EAA4B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,aAAK,IAAIqL,IAAT,IAAiB08I,WAAjB,EAA8B;AAC5B,cAAIx4D,MAAM,GAAGlkF,IAAI,CAAC2wI,OAAL,CAAa,CAAb,CAAb;;AACA,cAAIzsD,MAAM,CAACh2F,KAAP,KAAiBkqI,QAArB,EAA+B;AAC7B,kBAAM2hB,UAAU,iCACX/5I,IADW;AAEd2wI,qBAAO,EAAE,iCAAMzsD,MAAN;AAAch2F,qBAAK,EAAEkqI;AAArB;AAFK,eAAhB;AAID;AACF;AACF,OAhBD,MAgBO;AACL;AACA,YAAIukB,OAAO,GAAG,IAAI79I,2CAAJ,CAAS;AACrB2xI,eAAK,EAAE,IADc;AAErBC,oBAAU,EAAE,CAAC;AAAErB,cAAE,EAAE,IAAN;AAAY13G,iBAAK,EAAE,OAAnB;AAA4BzpC,iBAAK,EAAE2qI;AAAnC,WAAD,CAFS;AAGrB8X,iBAAO,EAAE,CAAC;AAAEtB,cAAE,EAAE,KAAN;AAAa13G,iBAAK,EAAE,UAApB;AAAgCzpC,iBAAK,EAAEkqI;AAAvC,WAAD,CAHY;AAIrBmX,oBAAU,EAAEiK,yDAAWA;AAJF,SAAT,CAAd;AAMA,cAAMM,UAAU,CAAC6C,OAAO,CAAC/xI,SAAR,EAAD,CAAhB;AACD;AACF;AACF,GAnCkB,CAAnB;AAoCD,C,CAED;;AACO,eAAegyI,eAAf,GAAiC;AACtC,MAAIC,SAAS,GAAG,MAAM1c,uCAAA,CACnB;AACL;AACA;AACA,oDAJwB,CAAtB;AAMA,MAAIkY,QAAQ,GAAG,MAAMlY,uCAAA,CAClB;AACL;AACA,6BAHuB,CAArB;AAMA,MAAI2c,UAAU,GAAG,IAAIt6I,GAAJ,EAAjB;;AACA,OAAK,IAAIgL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqvI,SAAS,CAACloJ,MAA9B,EAAsC6Y,CAAC,EAAvC,EAA2C;AACzCsvI,cAAU,CAAC3oJ,GAAX,CAAe0oJ,SAAS,CAACrvI,CAAD,CAAT,CAAawoH,EAA5B,EAAgC6mB,SAAS,CAACrvI,CAAD,CAAzC;AACD;;AAED,MAAIuvI,cAAc,GAAG,IAAIv6I,GAAJ,EAArB;;AACA,OAAK,IAAIgL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6qI,QAAQ,CAAC1jJ,MAA7B,EAAqC6Y,CAAC,EAAtC,EAA0C;AACxC,QAAIqE,IAAI,GAAGwmI,QAAQ,CAAC7qI,CAAD,CAAnB;AACA,QAAI1J,KAAK,GAAGi5I,cAAc,CAACnsJ,GAAf,CAAmBihB,IAAI,CAACknH,QAAxB,KAAqC,EAAjD;AACAj1H,SAAK,CAACtQ,IAAN,CAAWqe,IAAX;AACAkrI,kBAAc,CAAC5oJ,GAAf,CAAmB0d,IAAI,CAACknH,QAAxB,EAAkCj1H,KAAlC;AACD;;AAED,MAAIA,KAAK,GAAG,EAAZ,CA1BsC,CA4BtC;;AACA,oBAAkCi5I,cAAc,CAAC5mI,OAAf,EAAlC,EAA4D;AAAA;;AAAA,QAAlD0iH,OAAkD;AAAA,QAAzCmkB,UAAyC;AAC1D,QAAI38E,MAAM,GAAG28E,UAAU,CAAC5nJ,MAAX,CAAkB6nJ,CAAC,IAAI;AAClC,UAAIxkB,KAAK,GAAGqkB,UAAU,CAAClsJ,GAAX,CAAeqsJ,CAAC,CAAClkB,QAAjB,CAAZ;AAEA,aACE,CAACkkB,CAAC,CAACnyI,IAAF,KAAW,QAAX,IAAuBmyI,CAAC,CAACnyI,IAAF,IAAU,IAAlC,MACC,CAAC2tH,KAAD,IAAUwkB,CAAC,CAAC/uJ,KAAF,CAAQ8gC,WAAR,OAA0BypG,KAAK,CAAC9gI,IAAN,CAAWq3B,WAAX,EADrC,CADF;AAID,KAPY,CAAb;AAQA,QAAI0wC,QAAQ,GAAGs9E,UAAU,CAAC5nJ,MAAX,CAAkB6nJ,CAAC,IAAIA,CAAC,CAACnyI,IAAF,KAAW,UAAlC,CAAf;AACA,QAAI6lI,OAAO,GAAG,CAAC;AAAEtB,QAAE,EAAE,KAAN;AAAa13G,WAAK,EAAE,OAApB;AAA6BzpC,WAAK,EAAE2qI;AAApC,KAAD,CAAd;;AAEA,QAAIx4D,MAAM,CAAC1rE,MAAP,GAAgB,CAApB,EAAuB;AACrBmP,WAAK,CAACtQ,IAAN,CAAW;AACTi9I,aAAK,EAAE,IADE;AAETC,kBAAU,EAAE,CACV;AACErB,YAAE,EAAE,OADN;AAEE13G,eAAK,EAAE,gBAFT;AAGEzpC,eAAK,EAAEmyE,MAAM,CAAC3uE,GAAP,CAAWwrJ,SAAS,IAAIA,SAAS,CAAChvJ,KAAlC;AAHT,SADU,CAFH;AASTyiJ;AATS,OAAX;AAWD;;AAED,QAAIjxE,QAAQ,CAAC/qE,MAAT,GAAkB,CAAtB,EAAyB;AACvBmP,WAAK,GAAGA,KAAK,CAAC6nB,MAAN,CACN+zC,QAAQ,CAAChuE,GAAT,CAAawrJ,SAAS,KAAK;AACzBzM,aAAK,EAAE,IADkB;AAEzBC,kBAAU,EAAE,CACV;AACErB,YAAE,EAAE,UADN;AAEE13G,eAAK,EAAE,gBAFT;AAGEzpC,eAAK,EAAEgvJ,SAAS,CAAChvJ;AAHnB,SADU,CAFa;AASzByiJ;AATyB,OAAL,CAAtB,CADM,CAAR;AAaD;AACF,GAtEqC,CAwEtC;;;AACA,MAAIwM,QAAQ,GAAGN,SAAS,CACrBznJ,MADY,CACLwe,CAAC,IAAIA,CAAC,CAACwkH,QADF,EAEZxpI,MAFY,CAEL,CAAC8C,GAAD,EAAM+mI,KAAN,KAAgB;AACtB,QAAI2kB,GAAG,GAAG1rJ,GAAG,CAACd,GAAJ,CAAQ6nI,KAAK,CAACL,QAAd,KAA2B,IAAIpvH,GAAJ,EAArC;AACAo0I,OAAG,CAAC1sJ,GAAJ,CAAQ+nI,KAAK,CAACzC,EAAd;AACAtkI,OAAG,CAACyC,GAAJ,CAAQskI,KAAK,CAACL,QAAd,EAAwBglB,GAAxB;AACA,WAAO1rJ,GAAP;AACD,GAPY,EAOV,IAAI8Q,GAAJ,EAPU,CAAf;;AASA,oBAA8B26I,QAA9B,EAAwC;AAAA;;AAAA,QAA9BpgB,KAA8B;AAAA,QAAvBof,QAAuB;AACtCr4I,SAAK,CAACtQ,IAAN,CAAW;AACTi9I,WAAK,EAAE,IADE;AAETC,gBAAU,EAAE,CACV;AACErB,UAAE,EAAE,OADN;AAEE13G,aAAK,EAAE,OAFT;AAGEzpC,aAAK,EAAE,CAAC,GAAGiuJ,QAAJ;AAHT,OADU,CAFH;AASTxL,aAAO,EAAE,CACP;AACEtB,UAAE,EAAE,KADN;AAEE13G,aAAK,EAAE,UAFT;AAGEzpC,aAAK,EAAE6uI;AAHT,OADO;AATA,KAAX;AAiBD,GApGqC,CAsGtC;AACA;AACA;AACA;;;AACA,MAAIsgB,QAAQ,GAAGhZ,kEAAc,CAAC,UAAD,CAA7B;AACA,QAAML,iEAAa,CAAC,YAAY;AAC9B,SAAK,IAAIhkI,IAAT,IAAiB8D,KAAjB,EAAwB;AACtB,YAAMg2I,UAAU,CAAC;AACfrJ,aAAK,EAAEzwI,IAAI,CAACywI,KADG;AAEfC,kBAAU,EAAE1wI,IAAI,CAAC0wI,UAFF;AAGfC,eAAO,EAAE3wI,IAAI,CAAC2wI;AAHC,OAAD,CAAhB;AAKD;;AAED,UAAMxQ,4CAAA,CAAY,yBAAZ,EAAuC,EAAvC,CAAN;AACD,GAVkB,CAAnB;AAWAkE,oEAAc,CAACgZ,QAAD,CAAd;AACD,C;;;;;;;;;;;;ACtzBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,UAAU,GAAGvtI,mBAAO,CAAC,0GAAD,CAA1B;;AAEA,eAAewtI,eAAf,CAA+BH,GAA/B,EAAoC;AAClC,MAAII,QAAQ,GAAGC,wDAAO,CAACL,GAAD,EAAM,WAAN,CAAtB;AACA,MAAIM,IAAI,GAAG,MAAMvd,uCAAA,CACd,gDAA+Cqd,QAAS,EAD1C,CAAjB;AAGA,MAAIrpJ,GAAG,GAAG,IAAI6U,GAAJ,CAAQo0I,GAAR,CAAV;;AACA,OAAK,IAAIzP,GAAT,IAAgB+P,IAAhB,EAAsB;AACpBvpJ,OAAG,CAACzD,GAAJ,CAAQi9I,GAAG,CAAC3X,EAAZ;AACD;;AACD,SAAO,CAAC,GAAG7hI,GAAJ,CAAP;AACD;;AAED,eAAewpJ,oBAAf,CAAoCP,GAApC,EAAyC;AACvC;AACA;AACA;AACA,SAAOQ,0DAAS,CACd,CAAC7oB,KAAD,EAAQiU,MAAR,KAAmB7I,oDAAA,CAAoB,cAApB,EAAoCpL,KAApC,EAA2CiU,MAA3C,CADL,EAEdoU,GAFc,EAGdpnB,EAAE,IAAK,SAAQA,EAAG,GAHJ,EAId6nB,KAAK,IAAK,+CAA8CA,KAAM,EAJhD,CAAhB;AAMD;;AAEM,eAAerH,uBAAf,CAAuC;AAC5CvT,OAD4C;AAE5CvE,SAF4C;AAG5CqX,SAH4C;AAI5C+H,iBAAe,GAAG,KAJ0B;AAK5CC,oBAAkB,GAAG;AALuB,CAAvC,EAMJ;AACD;AACA,MAAIC,QAAQ,GAAG,EAAf;AACA,MAAIC,UAAU,GAAGlI,OAAO,GAAGA,OAAO,CAACrkJ,GAAR,CAAYuyC,CAAC,IAAIA,CAAC,CAAC+xF,EAAnB,CAAH,GAA4B,EAApD;AACA,MAAIkoB,UAAU,GAAGxf,OAAO,GAAG,MAAM6e,eAAe,CAAC7e,OAAO,CAAChtI,GAAR,CAAYmzC,CAAC,IAAIA,CAAC,CAACmxF,EAAnB,CAAD,CAAxB,GAAmD,EAA3E;AAEA,MAAImoB,SAAS,GAAG,IAAIn1I,GAAJ,EAAhB;AACA,MAAI4wH,QAAQ,GAAG,MAAMuG,uCAAA,CAAO,4CAAP,CAArB,CAPC,CASD;AACA;;AACA,MAAI4V,OAAJ,EAAa;AACX,QAAIqI,cAAc,GAAGrI,OAAO,CACzB3gJ,MADkB,CACXogB,MAAM,IAAIA,MAAM,CAACijH,KADN,EAElB/mI,GAFkB,CAEd8jB,MAAM,IAAIA,MAAM,CAACwgH,EAFH,CAArB;AAIA,QAAIW,YAAY,GAAG,MAAMgnB,oBAAoB,CAACS,cAAD,CAA7C;;AAEA,SAAK,IAAI5wI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmpH,YAAY,CAAChiI,MAAjC,EAAyC6Y,CAAC,EAA1C,EAA8C;AAC5C2wI,eAAS,CAACztJ,GAAV,CAAcimI,YAAY,CAACnpH,CAAD,CAAZ,CAAgBirH,KAA9B;AACD;AACF,GArBA,CAuBD;AACA;;;AACA,QAAMuL,2DAAa,CAAC,YAAY;AAC9B,QAAIf,KAAJ,EAAW;AACT+a,cAAQ,GAAG,MAAM5oI,OAAO,CAAC0pD,GAAR,CACfmkE,KAAK,CAACvxI,GAAN,CAAU,MAAMswB,CAAN,IAAWm+G,qDAAA,CAAqBn+G,CAArB,CAArB,CADe,CAAjB;AAGD;;AAED,QAAI08G,OAAJ,EAAa;AACX,YAAMtpH,OAAO,CAAC0pD,GAAR,EACJ;AACA;AACA;AACA;AACAo/E,gBAAU,CAACxsJ,GAAX,CAAe,MAAMskI,EAAN,IAAY;AACzB,cAAMmK,qDAAA,CAAqB;AAAEnK;AAAF,SAArB,CAAN;AACD,OAFD,CALI,CAAN;AASD;;AAED,QAAI+f,OAAJ,EAAa;AACX,YAAM3gI,OAAO,CAAC0pD,GAAR,CACJi3E,OAAO,CAACrkJ,GAAR,CAAY,MAAMswB,CAAN,IAAW;AACrB,YAAIA,CAAC,CAACo1G,OAAN,EAAe;AACb;AACA;AACA,cAAIA,OAAO,GAAGwC,QAAQ,CAACvvH,IAAT,CAAcixH,IAAI,IAAIA,IAAI,CAACtF,EAAL,KAAYh0G,CAAC,CAACo1G,OAApC,CAAd;;AACA,cAAIA,OAAO,CAAC4C,SAAR,KAAsB,CAA1B,EAA6B;AAC3Bh4G,aAAC,CAACo2G,QAAF,GAAa,IAAb;AACD;AACF;;AAED,cAAM+H,qDAAA,CAAqBn+G,CAArB,CAAN;AACD,OAXD,CADI,CAAN;AAcD;AACF,GAnCkB,CAAnB,CAzBC,CA8DD;AACA;AACA;AACA;;AACA,MAAIq8H,QAAQ,GAAG,MAAMV,oBAAoB,CAACK,QAAD,CAAzC;AACA,MAAIM,UAAU,GAAG,MAAMX,oBAAoB,CAACM,UAAD,CAA3C;AACA,MAAIM,UAAU,GAAG,MAAMZ,oBAAoB,CAACO,UAAD,CAA3C,CApEC,CAsED;AACA;AACA;AACA;;AACA,MAAIM,WAAW,GAAGH,QAAlB;AACA,MAAII,aAAJ;AAEA,QAAMza,2DAAa,CAAC,YAAY;AAC9B,UAAM5uH,OAAO,CAAC0pD,GAAR,CAAYu/E,QAAQ,CAAC3sJ,GAAT,CAAaswB,CAAC,IAAI08H,kDAAA,CAAkB18H,CAAlB,CAAlB,CAAZ,CAAN,CAD8B,CAG9B;;AACAy8H,iBAAa,GAAG,CAAC,MAAMrpI,OAAO,CAAC0pD,GAAR,CACrBw/E,UAAU,CAAC5sJ,GAAX,CAAeswB,CAAC,IAAI08H,kDAAA,CAAkB18H,CAAlB,CAApB,CADqB,CAAP,EAEb5sB,MAFa,CAENw9C,OAFM,CAAhB;AAIA,UAAMx9B,OAAO,CAAC0pD,GAAR,CAAYy/E,UAAU,CAAC7sJ,GAAX,CAAeswB,CAAC,IAAI08H,kDAAA,CAAkB18H,CAAlB,CAApB,CAAZ,CAAN;AACD,GATkB,CAAnB;;AAWA,MAAI87H,eAAJ,EAAqB;AACnB;AACA;AACA,QAAIV,GAAG,GAAG,IAAIp0I,GAAJ,CAAQ,CAChB,IAAIi6H,KAAK,GAAGA,KAAK,CAAC7tI,MAAN,CAAa1E,GAAG,IAAIA,GAAG,CAAC0nI,QAAxB,EAAkC1mI,GAAlC,CAAsChB,GAAG,IAAIA,GAAG,CAACslI,EAAjD,CAAH,GAA0D,EAAnE,CADgB,EAEhB,IAAI+f,OAAO,GACPA,OAAO,CAAC3gJ,MAAR,CAAeogB,MAAM,IAAIA,MAAM,CAAC4iH,QAAhC,EAA0C1mI,GAA1C,CAA8C8jB,MAAM,IAAIA,MAAM,CAACwgH,EAA/D,CADO,GAEP,EAFJ,CAFgB,CAAR,CAAV;AAMA,UAAMlyH,sEAAA,CACJu6I,QAAQ,CAAC1yH,MAAT,CAAgB2yH,UAAhB,EAA4BlpJ,MAA5B,CAAmC41I,KAAK,IAAIoS,GAAG,CAACz2I,GAAJ,CAAQqkI,KAAK,CAAChV,EAAd,CAA5C,CADI,CAAN;AAGD;;AAED,MAAI+nB,kBAAJ,EAAwB;AACtB;AACA;AAEA,QAAIhI,OAAJ,EAAa;AACX,UAAI4I,WAAW,GAAG5I,OAAO,CAACrkJ,GAAR,CAAYuyC,CAAC,IAAIA,CAAC,CAACw0F,KAAnB,EAA0BrjI,MAA1B,CAAiCw9C,OAAjC,CAAlB;;AACA,UAAI+rG,WAAW,CAAChqJ,MAAZ,GAAqB,CAAzB,EAA4B;AAC1B,YAAIiqJ,WAAW,GAAG,IAAI51I,GAAJ,CAAQ,MAAMm3H,qDAAA,EAAd,CAAlB;AAEA,YAAI0e,WAAW,GAAG,CAAC,GAAGV,SAAJ,EAAe/oJ,MAAf,CAAsB4gI,EAAE,IAAI4oB,WAAW,CAACj4I,GAAZ,CAAgBqvH,EAAhB,CAA5B,CAAlB;;AAEA,YAAI6oB,WAAW,CAAClqJ,MAAZ,GAAqB,CAAzB,EAA4B;AAC1B2oJ,oBAAU,CAACvnF,IAAX,CAAgB,iBAAhB,EAAmC;AACjC8oF,uBADiC;AAEjCC,2BAAe,EAAEH;AAFgB,WAAnC;AAID;AACF;AACF;AACF;;AAED,SAAO;AACL1b,SAAK,EAAEub,WADF;AAELzI,WAAO,EAAE0I;AAFJ,GAAP;AAID,C;;;;;;;;;;;;;;;;;;;;;;;;;;ACrKD;;AAEA,eAAeM,QAAf,CAAwBzjB,IAAxB,EAA8B;AAC5B,SAAO6E,yCAAA,CAAS,8CAAT,EAAyD,CAAC7E,IAAD,CAAzD,CAAP;AACD;;AAED,eAAe0jB,qBAAf,CAAqCzjB,WAArC,EAAkD;AAChD,MAAIA,WAAW,CAAC9C,KAAhB,EAAuB;AACrB,0BAA4B,MAAM0H,yCAAA,CAChC,qDADgC,EAEhC,CAAC5E,WAAW,CAAC9C,KAAb,CAFgC,CAAlC;AAAA,QAAMsC,aAAN,mBAAMA,aAAN;AAAA,QAAqB/E,EAArB,mBAAqBA,EAArB;;AAIA,WAAO+E,aAAP;AACD;;AACD,SAAO,IAAP;AACD;;AAED,eAAekkB,aAAf,CAA6B1jB,WAA7B,EAA0C2jB,YAA1C,EAAwD;AACtD,2BAAqC,MAAM/e,yCAAA,CACzC,6CADyC,EAEzC,CAAC5E,WAAW,CAACnE,OAAb,CAFyC,CAA3C;AAAA,QAAmB+nB,aAAnB,oBAAQnlB,SAAR;;AAIA,2BAAmC,MAAMmG,yCAAA,CACvC,6CADuC,EAEvC,CAAC+e,YAAD,CAFuC,CAAzC;AAAA,QAAmBE,WAAnB,oBAAQplB,SAAR,CALsD,CAUtD;AACA;AACA;;;AACA,MAAImlB,aAAa,KAAKC,WAAtB,EAAmC;AACjC,UAAMjf,qDAAA,CAAqB;AAAEnK,QAAE,EAAEuF,WAAW,CAACvF,EAAlB;AAAsBoC,cAAQ,EAAE;AAAhC,KAArB,CAAN;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD;;AAEM,eAAeinB,WAAf,CAA2B9jB,WAA3B,EAAwC+jB,kBAAxC,EAA4D;AACjE,yBAAwB,MAAMnf,yCAAA,CAC5B,+CAD4B,EAE5B,CAAC5E,WAAW,CAACnE,OAAb,CAF4B,CAA9B;AAAA,MAAUmoB,SAAV,oBAAMvpB,EAAN,CADiE,CAMjE;;;AACA,MAAIuF,WAAW,CAACikB,SAAhB,EAA2B;AACzB,QAAI7R,GAAG,GAAG,MAAMxN,yCAAA,CACb;AACP;AACA;AACA;AACA,OALoB,EAMd,CAAC5E,WAAW,CAACikB,SAAb,CANc,CAAhB;;AASA,QAAI7R,GAAG,CAAC5S,aAAR,EAAuB;AACrB,UAAI4S,GAAG,CAAC3X,EAAJ,KAAWuF,WAAW,CAAC9C,KAA3B,EAAkC;AAChC;AACA;AACA;AACA;AACA,cAAM0H,qDAAA,CAAqB;AAAEnK,YAAE,EAAEuF,WAAW,CAACvF,EAAlB;AAAsByC,eAAK,EAAE;AAA7B,SAArB,CAAN;AACA,eAAO;AAAEzC,YAAE,EAAEuF,WAAW,CAACvF,EAAlB;AAAsByC,eAAK,EAAE;AAA7B,SAAP;AACD,OARoB,CAUrB;AACA;;;AACA,aAAO,IAAP;AACD;AACF;;AAED,QAAMzC,EAAE,GAAG,MAAMmK,qDAAA,CAAqB;AACpC/I,WAAO,EAAEkoB,kBAD2B;AAEpC1lJ,UAAM,EAAE,CAAC2hI,WAAW,CAAC3hI,MAFe;AAGpC6+H,SAAK,EAAE8mB,SAH6B;AAIpC5uJ,QAAI,EAAE4qI,WAAW,CAAC5qI,IAJkB;AAKpCqrI,eAAW,EAAET,WAAW,CAACvF,EALW;AAMpC8F,SAAK,EAAEP,WAAW,CAACO,KAAZ,IAAqB,IANQ;AAOpC4D,WAAO,EAAE;AAP2B,GAArB,CAAjB;AAUA,QAAMS,qDAAA,CAAqB;AAAEnK,MAAE,EAAEuF,WAAW,CAACvF,EAAlB;AAAsBgG,eAAW,EAAEhG;AAAnC,GAArB,CAAN;AACA,QAAMypB,eAAe,GAAG,MAAMR,aAAa,CAAC1jB,WAAD,EAAc+jB,kBAAd,CAA3C;AAEA;AACEtpB,MAAE,EAAEuF,WAAW,CAACvF,EADlB;AAEEgG,eAAW,EAAEhG;AAFf,KAGMypB,eAAe,GAAG;AAAErnB,YAAQ,EAAE;AAAZ,GAAH,GAAwB,EAH7C;AAKD;AAEM,eAAesnB,cAAf,CAA8BnkB,WAA9B,EAA2C;AAChD,MAAIokB,aAAa,GAAG,MAAMxf,kDAAA,CAAkB5E,WAAW,CAACS,WAA9B,CAA1B;;AACA,MAAI2jB,aAAa,CAACC,QAAlB,EAA4B;AAC1B;AACA;AACA;AACA,UAAMzf,qDAAA,CAAqB;AACzBnK,QAAE,EAAEuF,WAAW,CAACS,WADS;AAEzBA,iBAAW,EAAE,IAFY;AAGzBvD,WAAK,EAAE;AAHkB,KAArB,CAAN;AAKD,GATD,MASO;AACL,UAAM0H,qDAAA,CAAqB;AAAEnK,QAAE,EAAEuF,WAAW,CAACS;AAAlB,KAArB,CAAN;AACD;;AACD,QAAMmE,qDAAA,CAAqB;AAAEnK,MAAE,EAAEuF,WAAW,CAACvF,EAAlB;AAAsBgG,eAAW,EAAE;AAAnC,GAArB,CAAN;AACA,SAAO;AAAEhG,MAAE,EAAEuF,WAAW,CAACvF,EAAlB;AAAsBgG,eAAW,EAAE;AAAnC,GAAP;AACD;AAEM,eAAe6jB,cAAf,CAA8BtkB,WAA9B,EAA2C+jB,kBAA3C,EAA+D;AACpE,MAAI7mB,KAAK,GAAG,MAAMsmB,QAAQ,CAACxjB,WAAW,CAACnE,OAAb,CAA1B;AAEA,QAAM+I,qDAAA,CAAqB;AACzBnK,MAAE,EAAEuF,WAAW,CAACS,WADS;AAEzB5E,WAAO,EAAEkoB,kBAFgB;AAGzB;AACA;AACA7mB,SAAK,EAAEA,KAAK,CAACzC,EALY;AAMzBrlI,QAAI,EAAE4qI,WAAW,CAAC5qI,IANO;AAOzBmrI,SAAK,EAAEP,WAAW,CAACO,KAPM;AAQzBliI,UAAM,EAAE,CAAC2hI,WAAW,CAAC3hI;AARI,GAArB,CAAN;AAWA,QAAM6lJ,eAAe,GAAG,MAAMR,aAAa,CAAC1jB,WAAD,EAAc+jB,kBAAd,CAA3C;;AACA,MAAIG,eAAJ,EAAqB;AACnB,WAAO;AAAEzpB,QAAE,EAAEuF,WAAW,CAACvF,EAAlB;AAAsBoC,cAAQ,EAAE;AAAhC,KAAP;AACD;AACF;AAEM,eAAe0nB,QAAf,CAAwBvkB,WAAxB,EAAqC;AAC1C,MAAI+jB,kBAAkB,GAAG,MAAMN,qBAAqB,CAACzjB,WAAD,CAApD;;AAEA,MAAI+jB,kBAAJ,EAAwB;AACtB,WAAOD,WAAW,CAAC9jB,WAAD,EAAc+jB,kBAAd,CAAlB;AACD;AACF;AAEM,eAAeS,QAAf,CAAwBxkB,WAAxB,EAAqC;AAC1C,MAAIA,WAAW,CAACS,WAAhB,EAA6B;AAC3B,UAAM0jB,cAAc,CAACnkB,WAAD,CAApB;AACD;AACF;AAEM,eAAeykB,QAAf,CAAwBzkB,WAAxB,EAAqC;AAC1C,QAAM+jB,kBAAkB,GAAG,MAAMN,qBAAqB,CAACzjB,WAAD,CAAtD;;AAEA,MAAI+jB,kBAAkB,IAAI,CAAC/jB,WAAW,CAACS,WAAvC,EAAoD;AAClD,WAAOqjB,WAAW,CAAC9jB,WAAD,EAAc+jB,kBAAd,CAAlB;AACD;;AAED,MAAI,CAACA,kBAAD,IAAuB/jB,WAAW,CAACS,WAAvC,EAAoD;AAClD,WAAO0jB,cAAc,CAACnkB,WAAD,CAArB;AACD;;AAED,MAAI+jB,kBAAkB,IAAI/jB,WAAW,CAACS,WAAtC,EAAmD;AACjD,WAAO6jB,cAAc,CAACtkB,WAAD,EAAc+jB,kBAAd,CAArB;AACD;AACF,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5JD;AAEO,MAAMW,gBAAgB,mCACxBC,wDADwB;AAG3BC,YAAU,CAACxpB,YAAD,EAAekd,GAAf,EAAoBhZ,MAApB,EAA4B;AACpC,WAAOlE,YAAP,CADoC,CAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACD,GApC0B;;AAsC3BypB,cAAY,CAAC7kB,WAAD,EAAc;AACxB,QAAI74H,MAAM,GAAG,EAAb;;AACA,QAAI,QAAQ64H,WAAZ,EAAyB;AACvB74H,YAAM,CAACszH,EAAP,GAAYuF,WAAW,CAACvF,EAAxB;AACD;;AACD,QAAI,gBAAgBuF,WAApB,EAAiC;AAC/B74H,YAAM,CAAC44H,IAAP,GAAcC,WAAW,CAACkE,UAA1B;AACD;;AACD,QAAI,YAAYlE,WAAhB,EAA6B;AAC3B74H,YAAM,CAAC9I,MAAP,GAAgB2hI,WAAW,CAAC3hI,MAA5B;AACD;;AACD,QAAI,cAAc2hI,WAAlB,EAA+B;AAC7B74H,YAAM,CAACgrI,WAAP,GAAqBnS,WAAW,CAACxC,QAAjC;AACD;;AACD,QAAI,oBAAoBwC,WAAxB,EAAqC;AACnC74H,YAAM,CAAC29I,oBAAP,GAA8B9kB,WAAW,CAAC8R,cAA1C;AACD;;AACD,QAAI,iBAAiB9R,WAArB,EAAkC;AAChC74H,YAAM,CAAC01H,QAAP,GAAkBmD,WAAW,CAACiE,WAA9B;AACD;;AACD,QAAI,UAAUjE,WAAd,EAA2B;AACzB74H,YAAM,CAAC/R,IAAP,GAAc4qI,WAAW,CAAC5qI,IAA1B;AACD;;AACD,QAAI,WAAW4qI,WAAf,EAA4B;AAC1B74H,YAAM,CAACo5H,KAAP,GAAeP,WAAW,CAACO,KAA3B;AACD;;AACD,QAAI,iBAAiBP,WAArB,EAAkC;AAChC74H,YAAM,CAAC49I,YAAP,GAAsB/kB,WAAW,CAACoE,WAAlC;AACD;;AACD,QAAI,iBAAiBpE,WAArB,EAAkC;AAChC74H,YAAM,CAAC69I,cAAP,GAAwBhlB,WAAW,CAACS,WAApC;AACD;;AACD,QAAI,aAAaT,WAAjB,EAA8B;AAC5B74H,YAAM,CAACg9H,OAAP,GAAiBnE,WAAW,CAACmE,OAA7B;AACD;;AACD,WAAOh9H,MAAP;AACD;;AA1E0B,EAAtB;AA6EA,MAAM89I,YAAY,mCACpBN,oDADoB;AAGvBC,YAAU,CAAC/oB,OAAD,EAAU;AAClB,WAAO;AACLpB,QAAE,EAAEoB,OAAO,CAACpB,EADP;AAELr+H,UAAI,EAAEy/H,OAAO,CAACz/H,IAFT;AAGLmT,UAAI,EAAEssH,OAAO,CAACtsH,IAHT;AAILkvH,eAAS,EAAE5C,OAAO,CAAC4C,SAAR,GAAoB,IAApB,GAA2B,KAJjC;AAKLE,YAAM,EAAE9C,OAAO,CAAC8C,MAAR,GAAiB,IAAjB,GAAwB;AAL3B,KAAP;AAOD,GAXsB;;AAavBkmB,cAAY,CAAChpB,OAAD,EAAU;AACpB,QAAI10H,MAAM,qBAAQ00H,OAAR,CAAV;;AACA,QAAI,eAAeA,OAAnB,EAA4B;AAC1B10H,YAAM,CAACs3H,SAAP,GAAmB5C,OAAO,CAAC4C,SAAR,GAAoB,CAApB,GAAwB,CAA3C;AACD;;AACD,QAAI,YAAY5C,OAAhB,EAAyB;AACvB10H,YAAM,CAACw3H,MAAP,GAAgB9C,OAAO,CAAC8C,MAAR,GAAiB,CAAjB,GAAqB,CAArC;AACD;;AACD,WAAOx3H,MAAP;AACD;;AAtBsB,EAAlB;AAyBA,MAAM+9I,aAAa,mCACrBP,qDADqB;AAGxBC,YAAU,CAAC/nB,QAAD,EAAW;AACnB,WAAO;AACLpC,QAAE,EAAEoC,QAAQ,CAACpC,EADR;AAELr+H,UAAI,EAAEygI,QAAQ,CAACzgI,IAFV;AAGL8iI,eAAS,EAAErC,QAAQ,CAACqC,SAAT,GAAqB,IAArB,GAA4B,KAHlC;AAILC,cAAQ,EAAEtC,QAAQ,CAACsoB;AAJd,KAAP;AAMD,GAVuB;;AAYxBN,cAAY,CAAChoB,QAAD,EAAW;AACrB,QAAgB3iI,CAAhB,GAAiC2iI,QAAjC,CAAMsC,QAAN;AAAA,QAAsBh4H,MAAtB,4BAAiC01H,QAAjC;;AACA,QAAI,eAAeA,QAAnB,EAA6B;AAC3B11H,YAAM,CAAC+3H,SAAP,GAAmBrC,QAAQ,CAACqC,SAAT,GAAqB,CAArB,GAAyB,CAA5C;AACD;;AACD,QAAI,cAAcrC,QAAlB,EAA4B;AAC1B11H,YAAM,CAACg+I,SAAP,GAAmBtoB,QAAQ,CAACsC,QAA5B;AACD;;AACD,WAAOh4H,MAAP;AACD;;AArBuB,EAAnB;AAwBA,MAAMi+I,kBAAkB,mCAC1BT,0DAD0B;AAG7BC,YAAU,CAACpoB,KAAD,EAAQ;AAChB,WAAO;AACL/B,QAAE,EAAE+B,KAAK,CAAC/B,EADL;AAELr+H,UAAI,EAAEogI,KAAK,CAACpgI,IAFP;AAGL8iI,eAAS,EAAE1C,KAAK,CAAC0C,SAAN,GAAkB,IAAlB,GAAyB,KAH/B;AAILQ,gBAAU,EAAElD,KAAK,CAACkD,UAAN,CAAiBvpI,GAAjB,CAAqB+uJ,aAAa,CAACN,UAAnC;AAJP,KAAP;AAMD,GAV4B;;AAY7BC,cAAY,CAACroB,KAAD,EAAQ;AAClB,QAAIr1H,MAAM,qBAAQq1H,KAAR,CAAV;;AACA,QAAI,eAAeA,KAAnB,EAA0B;AACxBr1H,YAAM,CAAC+3H,SAAP,GAAmB1C,KAAK,CAAC0C,SAAN,GAAkB,CAAlB,GAAsB,CAAzC;AACD;;AACD,QAAI,gBAAgB1C,KAApB,EAA2B;AACzBr1H,YAAM,CAACu4H,UAAP,GAAoBlD,KAAK,CAACkD,UAAN,CAAiBvpI,GAAjB,CAAqB+uJ,aAAa,CAACL,YAAnC,CAApB;AACD;;AACD,WAAO19I,MAAP;AACD;;AArB4B,EAAxB;AAwBA,MAAMk+I,UAAU,mCAClBV,kDADkB;AAGrBC,YAAU,CAAC1nB,KAAD,EAAQ;AAChB,WAAO;AACLzC,QAAE,EAAEyC,KAAK,CAACzC,EADL;AAELr+H,UAAI,EAAE8gI,KAAK,CAAC9gI,IAFP;AAGLygI,cAAQ,EAAEK,KAAK,CAACL,QAHX;AAIL2C,mBAAa,EAAEtC,KAAK,CAACsC;AAJhB,KAAP;AAMD,GAVoB;;AAYrBqlB,cAAY,CAAC3nB,KAAD,EAAQ;AAClB;AACA,WAAOA,KAAP;AACD;;AAfoB,EAAhB;AAkBA,MAAMooB,cAAc,mCACtBX,sDADsB;AAGzBC,YAAU,CAACngJ,IAAD,EAAO;AACf,QAAMq6I,SAAN,GAA+Br6I,IAA/B,CAAMq6I,SAAN;AAAA,QAAoB33I,MAApB,4BAA+B1C,IAA/B;;AACA,WAAO0C,MAAP;AACD,GANwB;;AAQzB09I,cAAY,CAACpgJ,IAAD,EAAO;AACjB,WAAOA,IAAP;AACD;;AAVwB,EAApB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1KP;AACA;AAQA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAwB+P,mBAAO,CAAC,+EAAD,CAA/B;AAAA,MAAQ+wI,WAAR,YAAQA,WAAR;;AACA,MAAMxD,UAAU,GAAGvtI,mBAAO,CAAC,uGAAD,CAA1B;;AAEA,IAAIgxI,WAAW,GAAG,KAAlB,C,CAEA;;AACA,SAASC,QAAT,CAAkBnpI,GAAlB,EAAuBm9D,IAAvB,EAA6B;AAC3B,SAAO;AAAElqE,QAAI,EAAE,UAAR;AAAoB8xB,WAAO,EAAE/kB,GAA7B;AAAkCm9D;AAAlC,GAAP;AACD,C,CAED;AACA;AACA;AACA;;;AACA,SAASisE,YAAT,CAAsBxf,OAAtB,EAA+B;AAC7B,SAAOh0I,IAAI,IAAI;AACb,WAAOs2I,6DAAU,CACf,YAAY;AACV,UAAImd,eAAe,GAAGC,4DAAQ,GAAGpjJ,SAAX,CAAqBwN,QAArB,EAAtB;AACA,UAAI7I,MAAM,GAAG,MAAM++H,OAAO,CAACh0I,IAAD,CAA1B;AAEA,UAAIiwJ,IAAI,GAAG,MAAMvd,uCAAA,CACf,gEADe,EAEf,CAAC+gB,eAAD,CAFe,CAAjB,CAJU,CASV;;AACA,UAAI5D,UAAU,CAAC8D,aAAX,KAA6B,CAAjC,EAAoC;AAClC9D,kBAAU,CAACvnF,IAAX,CAAgB,YAAhB,EAA8B;AAC5BjrD,cAAI,EAAE,SADsB;AAE5BwvI,gBAAM,EAAEoD,IAAI,CAAChsJ,GAAL,CAASi8I,GAAG,IAAIA,GAAG,CAAC0T,OAApB;AAFoB,SAA9B;AAID;;AAED,aAAO3+I,MAAP;AACD,KAnBc,EAoBf;AAAE4+I,kBAAY,EAAE;AAAhB,KApBe,CAAjB;AAsBD,GAvBD;AAwBD;;AAED,IAAI5f,QAAQ,GAAG,EAAf;;AAEA,eAAe6f,aAAf,CAA6BroJ,KAA7B,EAAoC;AAClC,MAAI,CAACA,KAAK,CAAC4U,KAAN,CAAY,eAAZ,CAAL,EAAmC;AACjC,UAAMkzI,QAAQ,CAAC,wCAAwC9nJ,KAAzC,CAAd;AACD;;AAED,MAAI,CAAC6nJ,WAAL,EAAkB;AAChB,+BAAqB,MAAMrf,QAAQ,CAAC,mBAAD,CAAR,EAA3B;AAAA,QAAM3zI,KAAN,wBAAMA,KAAN;AAAA,QAAaS,GAAb,wBAAaA,GAAb;;AACA,QAAI+5E,KAAK,GAAGq6D,oDAAA,CAAiB70I,KAAjB,EAAwBS,GAAxB,CAAZ;;AACA,QAAI,CAAC+5E,KAAK,CAACniE,QAAN,CAAelN,KAAf,CAAL,EAA4B;AAC1B,YAAM8nJ,QAAQ,CAAC,iCAAiC9nJ,KAAlC,CAAd;AACD;AACF;AACF;;AAED,eAAesoJ,uBAAf,CAAuCtgF,KAAvC,EAA8C80D,EAA9C,EAAkD;AAChD,MAAIA,EAAE,IAAI,IAAV,EAAgB;AACd,UAAMgrB,QAAQ,CAAE,GAAE9/E,KAAM,2BAAV,CAAd;AACD;;AAED,MAAIysE,GAAG,GAAG,MAAMxN,yCAAA,CAAS,+CAAT,EAA0D,CACxEnK,EADwE,CAA1D,CAAhB;;AAIA,MAAI,CAAC2X,GAAL,EAAU;AACR,UAAMqT,QAAQ,CAAE,GAAE9/E,KAAM,eAAc80D,EAAG,kBAA3B,CAAd;AACD;;AAED,MAAI2X,GAAG,CAAClT,SAAJ,KAAkB,CAAtB,EAAyB;AACvB,UAAMumB,QAAQ,CAAE,GAAE9/E,KAAM,eAAc80D,EAAG,8BAA3B,CAAd;AACD;AACF;;AAED,IAAIyrB,YAAY,GAAG,IAAnB;;AAEA/f,QAAQ,CAAC,wBAAD,CAAR,GAAqC,kBAAiB;AACpD,MAAI+f,YAAJ,EAAkB;AAChB,UAAMT,QAAQ,CAAC,qDAAD,CAAd;AACD,GAHmD,CAKpD;AACA;AACA;;;AACA,MAAID,WAAJ,EAAiB;AACf5gB,wDAAA,CAAoB,MAAM;AACxB,aAAO,IAAI/qH,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtCmsI,oBAAY,GAAG;AAAEpsI,iBAAF;AAAWC;AAAX,SAAf;AACD,OAFM,CAAP;AAGD,KAJD;AAKD,GAND,MAMO;AACL0uH,+DAAa,CAAC,MAAM;AAClB,aAAO,IAAI5uH,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtCmsI,oBAAY,GAAG;AAAEpsI,iBAAF;AAAWC;AAAX,SAAf;AACD,OAFM,CAAP;AAGD,KAJY,CAAb;AAKD;AACF,CArBD;;AAuBAosH,QAAQ,CAAC,sBAAD,CAAR,GAAmC,kBAAiB;AAClD,MAAI,CAAC+f,YAAL,EAAmB;AACjB,UAAMT,QAAQ,CAAC,8CAAD,CAAd;AACD;;AAEDS,cAAY,CAACpsI,OAAb;AACAosI,cAAY,GAAG,IAAf;AACD,CAPD;;AASA/f,QAAQ,CAAC,iBAAD,CAAR,GAA8B,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AACnD,aAAwBgP,+CAAA,MAAoB,EAA5C;AAAA,MAAU0c,SAAV,QAAM1rB,EAAN;;AAEA,MAAI0rB,SAAS,KAAK1rB,EAAlB,EAAsB;AACpBsnB,cAAU,CAACvnF,IAAX,CAAgB,YAAhB;;AACA,+BAAgB,MAAM2rE,QAAQ,CAAC,aAAD,CAAR,CAAwB;AAAE1L;AAAF,KAAxB,CAAtB;AAAA,QAAM3+F,KAAN,wBAAMA,KAAN;;AAEA,QAAI,CAACA,KAAL,EAAY;AACVimH,gBAAU,CAACvnF,IAAX,CAAgB,aAAhB;AACD,KAFD,MAEO;AACLunF,gBAAU,CAACvnF,IAAX,CAAgB,cAAhB;;AAEA,UAAI1+B,KAAK,KAAK,wBAAV,IAAsCA,KAAK,KAAK,kBAApD,EAAwE;AACtE,cAAM,IAAIlkC,KAAJ,CACJ,4DADI,CAAN;AAGD,OAJD,MAIO,IAAIkkC,KAAK,KAAK,kBAAd,EAAkC;AACvC,cAAM,IAAIlkC,KAAJ,CACJ,aACE6iI,EADF,GAEE,0FAHE,CAAN;AAKD,OANM,MAMA;AACL,cAAM,IAAI7iI,KAAJ,CAAU,wCAAwC6iI,EAAxC,GAA6C,IAAvD,CAAN;AACD;AACF;AACF;AACF,CA3BD;;AA6BA0L,QAAQ,CAAC,kBAAD,CAAR,GAA+B,gBAAe;AAAE7L;AAAF,CAAf,EAA+B;AAC5D;AACA,QAAM6L,QAAQ,CAAC,cAAD,CAAR,EAAN,CAF4D,CAI5D;;AACA,QAAMA,QAAQ,CAAC,eAAD,CAAR,CAA0B;AAAE7L,cAAF;AAAc8rB,eAAW,EAAE;AAA3B,GAA1B,CAAN,CAL4D,CAO5D;;AACA,QAAMxhB,4CAAA,CAAY,4CAAZ,CAAN;AACA,QAAMA,4CAAA,CAAY,iDAAZ,CAAN,CAT4D,CAW5D;;AACAkE,8DAAc,CAAC,QAAD,CAAd;AAEAiZ,YAAU,CAACvnF,IAAX,CAAgB,cAAhB;AACAgrF,aAAW,GAAG,IAAd;AACD,CAhBD;;AAkBArf,QAAQ,CAAC,mBAAD,CAAR,GAAgC,kBAAiB;AAC/CoC,4CAAA,GAAY8d,cAAZ,GAD+C,CAG/C;AACA;AACA;;AACA,wBAAa5c,+CAAA,EAAb;AAAA,MAAMhP,EAAN,mBAAMA,EAAN;;AACA,QAAM0L,QAAQ,CAAC,cAAD,CAAR,EAAN;AACA,QAAMA,QAAQ,CAAC,aAAD,CAAR,CAAwB;AAAE1L;AAAF,GAAxB,CAAN;AAEA,QAAM0L,QAAQ,CAAC,mBAAD,CAAR,EAAN;AACA,QAAMoC,wDAAA,EAAN;AAEA,QAAM+d,qDAAA,GAAsBC,KAAtB,CAA4BhvI,GAAG,IAAI,CAAE,CAArC,CAAN;AAEAwqI,YAAU,CAACvnF,IAAX,CAAgB,eAAhB;AACAgrF,aAAW,GAAG,KAAd;AACD,CAjBD;;AAmBArf,QAAQ,CAAC,kBAAD,CAAR,GAA+B,kBAAiB;AAC9C,MAAIqf,WAAJ,EAAiB;AACf,2BAAa/b,+CAAA,EAAb;AAAA,QAAMhP,EAAN,oBAAMA,EAAN;;AAEA,UAAM0L,QAAQ,CAAC,cAAD,CAAR,EAAN;AACA,UAAMA,QAAQ,CAAC,eAAD,CAAR,CAA0B;AAAE1L;AAAF,KAA1B,CAAN;AACAsnB,cAAU,CAACvnF,IAAX,CAAgB,cAAhB;AACD;;AAEDgrF,aAAW,GAAG,KAAd;AACD,CAVD;;AAYArf,QAAQ,CAAC,WAAD,CAAR,GAAwB,gBAAe;AAAE3M;AAAF,CAAf,EAA0B;AAChD,SAAO4P,uEAAQ,CAAC5P,KAAD,CAAf;AACD,CAFD;;AAIA2M,QAAQ,CAAC,mBAAD,CAAR,GAAgC,kBAAiB;AAC/C,8BAAqB,MAAMA,QAAQ,CAAC,mBAAD,CAAR,EAA3B;AAAA,MAAM3zI,KAAN,yBAAMA,KAAN;AAAA,MAAaS,GAAb,yBAAaA,GAAb;;AACA,SAAOo0I,oDAAA,CAAiB70I,KAAjB,EAAwBS,GAAxB,CAAP;AACD,CAHD;;AAKAkzI,QAAQ,CAAC,kBAAD,CAAR,GAA+B,gBAAe;AAAExoI;AAAF,CAAf,EAA0B;AACvD,QAAMqoJ,aAAa,CAACroJ,KAAD,CAAnB;AAEA,MAAI+oI,MAAM,GAAG,MAAM9B,wDAAA,EAAnB;AACA,MAAIM,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,CAAhB;;AAEA,WAAShL,KAAT,CAAeyJ,IAAf,EAAqB;AACnB,QAAI2gC,CAAC,GAAGwrG,0CAAA,GAAYie,YAAZ,CAAyBthB,SAAzB,EAAoC9oI,IAApC,CAAR;AACA,WAAO2gC,CAAC,KAAK,EAAN,GAAW,CAAX,GAAeA,CAAtB;AACD,GATsD,CAWvD;AACA;;;AACA,SAAO;AACLp/B,SADK;AAEL8oJ,mBAAe,EAAE9zJ,KAAK,CAAC,iBAAD,CAFjB;AAGL+zJ,sBAAkB,EAAE/zJ,KAAK,CAAC,sBAAD,CAHpB;AAILg0J,gBAAY,EAAEh0J,KAAK,CAAC,UAAD,CAJd;AAKLi0J,iBAAa,EAAEj0J,KAAK,CAAC,gBAAD,CALf;AAMLg2I,YAAQ,EAAEh2I,KAAK,CAAC,WAAD,CANV;AAQLk0J,iBAAa,EAAEl0J,KAAK,CAAC,iBAAD,CARf;AASLm0J,eAAW,EAAEn0J,KAAK,CAAC,cAAD,CATb;AAULo0J,cAAU,EAAEp0J,KAAK,CAAC,aAAD,CAVZ;AAWLq0J,gBAAY,EAAEr0J,KAAK,CAAC,gBAAD,CAXd;AAaLq2I,kBAAc,EAAEtC,MAAM,CAACvwI,GAAP,CAAWqmI,KAAK,IAAI;AAClC,UAAIA,KAAK,CAAC0C,SAAV,EAAqB;AACnB,+CACKkmB,8DAAkB,CAACR,UAAnB,CAA8BpoB,KAA9B,CADL;AAEEyqB,kBAAQ,EAAEt0J,KAAK,CAAC,cAAD,CAFjB;AAIE+sI,oBAAU,EAAElD,KAAK,CAACkD,UAAN,CAAiBvpI,GAAjB,CAAqB8oI,GAAG,oCAC/BimB,yDAAa,CAACN,UAAd,CAAyB3lB,GAAzB,CAD+B;AAElCgoB,oBAAQ,EAAEt0J,KAAK,CAAE,cAAassI,GAAG,CAACxE,EAAG,EAAtB;AAFmB,YAAxB;AAJd;AASD;;AAED,6CACK2qB,8DAAkB,CAACR,UAAnB,CAA8BpoB,KAA9B,CADL;AAEEuE,gBAAQ,EAAEpuI,KAAK,CAAE,gBAAe6pI,KAAK,CAAC/B,EAAG,EAA1B,CAFjB;AAGE6N,aAAK,EAAE31I,KAAK,CAAE,oBAAmB6pI,KAAK,CAAC/B,EAAG,EAA9B,CAHd;AAIEme,eAAO,EAAEjmJ,KAAK,CAAE,kBAAiB6pI,KAAK,CAAC/B,EAAG,EAA5B,CAJhB;AAMEiF,kBAAU,EAAElD,KAAK,CAACkD,UAAN,CAAiBvpI,GAAjB,CAAqB8oI,GAAG,oCAC/BimB,yDAAa,CAACN,UAAd,CAAyB3lB,GAAzB,CAD+B;AAElC8B,kBAAQ,EAAEpuI,KAAK,CAAE,UAASssI,GAAG,CAACxE,EAAG,EAAlB,CAFmB;AAGlC6N,eAAK,EAAE31I,KAAK,CAAE,cAAassI,GAAG,CAACxE,EAAG,EAAtB,CAHsB;AAIlCme,iBAAO,EAAEjmJ,KAAK,CAAE,YAAWssI,GAAG,CAACxE,EAAG,EAApB,CAJoB;AAKlC0K,mBAAS,EAAExyI,KAAK,CAAE,aAAYssI,GAAG,CAACxE,EAAG,EAArB;AALkB,UAAxB;AANd;AAcD,KA3Be;AAbX,GAAP;AA0CD,CAvDD;;AAyDA0L,QAAQ,CAAC,uBAAD,CAAR,GAAoCuf,YAAY,CAAC,gBAAe;AAC9D/nJ,OAD8D;AAE9Do9H,YAF8D;AAG9D18H;AAH8D,CAAf,EAI9C;AACD,SAAO8nI,QAAQ,CAAC,sBAAD,CAAR,CAAiC;AACtCxoI,SADsC;AAEtCk/H,YAAQ,EAAE9B,UAF4B;AAGtC18H;AAHsC,GAAjC,CAAP;AAKD,CAV+C,CAAhD;AAYA8nI,QAAQ,CAAC,0BAAD,CAAR,GAAuCuf,YAAY,CAAC,gBAAe;AACjE/nJ,OADiE;AAEjEo9H,YAFiE;AAGjEE;AAHiE,CAAf,EAIjD;AACD,QAAM+qB,aAAa,CAACroJ,KAAD,CAAnB;AACA,QAAMsoJ,uBAAuB,CAAC,sBAAD,EAAyBlrB,UAAzB,CAA7B;AACA,SAAOoL,QAAQ,CAAC,sBAAD,CAAR,CAAiC;AACtC+gB,cAAU,EAAEvpJ,KAD0B;AAEtCk/H,YAAQ,EAAE9B,UAF4B;AAGtCE;AAHsC,GAAjC,CAAP;AAKD,CAZkD,CAAnD;;AAcAkL,QAAQ,CAAC,yBAAD,CAAR,GAAsC,gBAAe;AACnD/K,cADmD;AAEnD4N,gBAFmD;AAGnD1J;AAHmD,CAAf,EAInC;AACD,SAAO6G,QAAQ,CAAC,qBAAD,CAAR,CAAgC;AACrC/K,gBADqC;AAErC4N,kBAFqC;AAGrC1J;AAHqC,GAAhC,CAAP;AAKD,CAVD;;AAYA6G,QAAQ,CAAC,yBAAD,CAAR,GAAsCuf,YAAY,CAAC,gBAAe;AAChEvqB,WADgE;AAEhEC;AAFgE,CAAf,EAGhD;AACD,SAAO+K,QAAQ,CAAC,qBAAD,CAAR,CAAgC;AAAEhL,aAAF;AAAaC;AAAb,GAAhC,CAAP;AACD,CALiD,CAAlD;AAOA+K,QAAQ,CAAC,sBAAD,CAAR,GAAmCuf,YAAY,CAAC,gBAAe;AAC7DvqB,WAD6D;AAE7DC;AAF6D,CAAf,EAG7C;AACD,QAAMF,sEAAe,CAACC,SAAD,EAAYC,YAAZ,EAA0B;AAAE8f,gBAAY,EAAE;AAAhB,GAA1B,CAArB;AACA,SAAO,IAAP;AACD,CAN8C,CAA/C;;AAQA/U,QAAQ,CAAC,sBAAD,CAAR,GAAmC,gBAAe;AAChDhL,WADgD;AAEhDrjI,WAFgD;AAGhD67C;AAHgD,CAAf,EAIhC;AACD,wBAAe,MAAMy1F,uEAAQ,CAC3BvgG,8DAAC,CAAC,cAAD,CAAD,CACGhvC,MADH,CACU;AACNwlJ,QAAI,EAAE,CACJlkB,SAAS,IAAI;AAAEU,aAAO,EAAEV;AAAX,KADT,EAEJrjI,SAAS,IAAI;AAAE1C,UAAI,EAAE;AAAEsqJ,YAAI,EAAE5nJ;AAAR;AAAR,KAFT,EAGJ67C,OAAO,IAAI;AAAEv+C,UAAI,EAAE;AAAEuqJ,YAAI,EAAEhsG;AAAR;AAAR,KAHP,EAIJ95C,MAJI,CAIGw9C,OAJH;AADA,GADV,EAQGkiF,MARH,CAQU,GARV,EASGrlI,OATH,CASW;AAAEq7I,UAAM,EAAE;AAAV,GATX,CAD2B,CAA7B;AAAA,MAAM90I,IAAN,mBAAMA,IAAN;;AAYA,SAAOA,IAAP;AACD,CAlBD;;AAoBA0rI,QAAQ,CAAC,yBAAD,CAAR,GAAsC,gBAAe;AAAEj5C,MAAF;AAAQiuC;AAAR,CAAf,EAAoC;AACxE,QAAM,IAAIvjI,KAAJ,CAAU,4DAAV,CAAN;AACD,CAFD;;AAIAuuI,QAAQ,CAAC,wBAAD,CAAR,GAAqCuf,YAAY,CAAC,gBAAe;AAC/DjrB,IAD+D;AAE/DgB;AAF+D,CAAf,EAG/C;AACD,yBAAe,MAAM2N,uEAAQ,CAC3BvgG,8DAAC,CAAC,cAAD,CAAD,CACGhvC,MADH,CACU;AAAE4gI;AAAF,GADV,EAEGlB,MAFH,CAEU,GAFV,EAGGrlI,OAHH,CAGW;AAAEq7I,UAAM,EAAE;AAAV,GAHX,CAD2B,CAA7B;AAAA,MAAM90I,IAAN,oBAAMA,IAAN;;AAMA,MAAI2gI,YAAY,GAAG+rB,gFAAmB,CAAC1sJ,IAAD,CAAtC;;AAEA,MAAI2gI,YAAY,CAAChiI,MAAb,KAAwB,CAA5B,EAA+B;AAC7B,WAAO,EAAP;AACD;;AAED,2BAAeoiI,8EAAiB,CAACJ,YAAD,EAAeK,MAAf,CAAhC;AAAA,MAAM75H,IAAN,sBAAMA,IAAN;;AACA,SAAOukI,QAAQ,CAAC,2BAAD,CAAR,CAAsCvkI,IAAtC,CAAP;AACD,CAlBgD,CAAjD;AAoBAukI,QAAQ,CAAC,wBAAD,CAAR,GAAqCuf,YAAY,CAAC,gBAAe;AAAEjrB;AAAF,CAAf,EAAuB;AACvE,yBAAe,MAAM2O,uEAAQ,CAC3BvgG,8DAAC,CAAC,cAAD,CAAD,CACGhvC,MADH,CACU;AAAE4gI;AAAF,GADV,EAEGlB,MAFH,CAEU,GAFV,EAGGrlI,OAHH,CAGW;AAAEq7I,UAAM,EAAE;AAAV,GAHX,CAD2B,CAA7B;AAAA,MAAM90I,IAAN,oBAAMA,IAAN;;AAMA,MAAI2gI,YAAY,GAAG+rB,gFAAmB,CAAC1sJ,IAAD,CAAtC;;AAEA,MAAI2gI,YAAY,CAAChiI,MAAb,KAAwB,CAA5B,EAA+B;AAC7B,WAAO,EAAP;AACD;;AAED,2BAAesiI,8EAAiB,CAACN,YAAD,EAAeX,EAAf,CAAhC;AAAA,MAAM74H,IAAN,sBAAMA,IAAN;;AACA,SAAOukI,QAAQ,CAAC,2BAAD,CAAR,CAAsCvkI,IAAtC,CAAP;AACD,CAfgD,CAAjD;;AAiBAukI,QAAQ,CAAC,kBAAD,CAAR,GAA+B,kBAAiB;AAC9C,MAAI9H,QAAQ,GAAG,MAAMuG,+CAAA,EAArB;AACA,SAAOvG,QAAQ,CAACloI,GAAT,CAAa0lI,OAAO,IAAIopB,wDAAY,CAACL,UAAb,CAAwB/oB,OAAxB,CAAxB,CAAP;AACD,CAHD;;AAKAsK,QAAQ,CAAC,oBAAD,CAAR,GAAiCuf,YAAY,CAAC,gBAAe;AAC3D7pB,SAD2D;AAE3DC,gBAAc,GAAG;AAF0C,CAAf,EAG3C;AACD,SAAOqK,QAAQ,CAAC,gBAAD,CAAR,CAA2B;AAChC/pI,QAAI,EAAEy/H,OAAO,CAACz/H,IADkB;AAEhCmT,QAAI,EAAEssH,OAAO,CAACtsH,IAFkB;AAGhCw5H,aAAS,EAAElN,OAAO,CAAC4C,SAHa;AAIhCE,UAAM,EAAE9C,OAAO,CAAC8C,MAJgB;AAKhC;AACA;AACAia,WAAO,EAAE9c,cAAc,IAAI,IAAlB,GAAyBmH,qEAAe,CAACnH,cAAD,CAAxC,GAA2D;AAPpC,GAA3B,CAAP;AASD,CAb4C,CAA7C;AAeAqK,QAAQ,CAAC,oBAAD,CAAR,GAAiCuf,YAAY,CAAC,gBAAe;AAAEjrB,IAAF;AAAMgB;AAAN,CAAf,EAA+B;AAC3E,SAAOmJ,iDAAA;AAAmBnK;AAAnB,KAA0BwqB,wDAAY,CAACJ,YAAb,CAA0BppB,MAA1B,CAA1B,EAAP;AACD,CAF4C,CAA7C;AAIA0K,QAAQ,CAAC,mBAAD,CAAR,GAAgCuf,YAAY,CAAC,gBAAe;AAC1DjrB,IAD0D;AAE1DwB,mBAF0D;AAG1DC;AAH0D,CAAf,EAI1C;AACD,SAAOiK,QAAQ,CAAC,eAAD,CAAR,CAA0B;AAC/B1L,MAD+B;AAE/BwB,qBAF+B;AAG/BlB,cAAU,EAAEmB;AAHmB,GAA1B,CAAP;AAKD,CAV2C,CAA5C;AAYAiK,QAAQ,CAAC,oBAAD,CAAR,GAAiCuf,YAAY,CAAC,gBAAe;AAAEjrB;AAAF,CAAf,EAAuB;AACnE,SAAO0L,QAAQ,CAAC,gBAAD,CAAR,CAA2B;AAAE1L;AAAF,GAA3B,CAAP;AACD,CAF4C,CAA7C;AAIA0L,QAAQ,CAAC,oBAAD,CAAR,GAAiCuf,YAAY,CAAC,gBAAe;AAAEjrB;AAAF,CAAf,EAAuB;AACnE,SAAO0L,QAAQ,CAAC,eAAD,CAAR,CAA0B;AAAE1L,MAAF;AAAM0hB,UAAM,EAAE;AAAd,GAA1B,CAAP;AACD,CAF4C,CAA7C;;AAIAhW,QAAQ,CAAC,oBAAD,CAAR,GAAiC,gBAAe;AAAE7J;AAAF,IAAc,EAA7B,EAAiC;AAChE,MAAIn1H,MAAM,GAAG,MAAMg/H,QAAQ,CAAC,gBAAD,CAAR,EAAnB;AACA,SAAO7J,OAAO,GACVn1H,MAAM,CAACm1H,OAAP,CAAenmI,GAAf,CAAmBivJ,8DAAkB,CAACR,UAAtC,CADU,GAEVz9I,MAAM,CAAC2M,IAAP,CAAY3d,GAAZ,CAAgB+uJ,yDAAa,CAACN,UAA9B,CAFJ;AAGD,CALD;;AAOAze,QAAQ,CAAC,2BAAD,CAAR,GAAwCuf,YAAY,CAAC,gBAAe;AAAElpB;AAAF,CAAf,EAA0B;AAC7E,SAAO2J,QAAQ,CAAC,uBAAD,CAAR,CAAkC;AAAE/pI,QAAI,EAAEogI,KAAK,CAACpgI;AAAd,GAAlC,CAAP;AACD,CAFmD,CAApD;AAIA+pI,QAAQ,CAAC,2BAAD,CAAR,GAAwCuf,YAAY,CAAC,gBAAe;AAClEjrB,IADkE;AAElEgB;AAFkE,CAAf,EAGlD;AACD,SAAO0K,QAAQ,CAAC,uBAAD,CAAR;AACL1L;AADK,KAEF2qB,8DAAkB,CAACP,YAAnB,CAAgCppB,MAAhC,CAFE,EAAP;AAID,CARmD,CAApD;AAUA0K,QAAQ,CAAC,2BAAD,CAAR,GAAwCuf,YAAY,CAAC,gBAAe;AAClEjrB,IADkE;AAElEyB;AAFkE,CAAf,EAGlD;AACD,SAAOiK,QAAQ,CAAC,uBAAD,CAAR,CAAkC;AACvC1L,MADuC;AAEvC2F,cAAU,EAAElE;AAF2B,GAAlC,CAAP;AAID,CARmD,CAApD;AAUAiK,QAAQ,CAAC,qBAAD,CAAR,GAAkCuf,YAAY,CAAC,gBAAe;AAAE7oB;AAAF,CAAf,EAA6B;AAC1E,SAAOsJ,QAAQ,CAAC,iBAAD,CAAR,CAA4B;AACjC/pI,QAAI,EAAEygI,QAAQ,CAACzgI,IADkB;AAEjCsnI,WAAO,EAAE7G,QAAQ,CAACsC,QAFe;AAGjC8J,YAAQ,EAAEpM,QAAQ,CAACqC;AAHc,GAA5B,CAAP;AAKD,CAN6C,CAA9C;AAQAiH,QAAQ,CAAC,qBAAD,CAAR,GAAkCuf,YAAY,CAAC,gBAAe;AAAEjrB,IAAF;AAAMgB;AAAN,CAAf,EAA+B;AAC5E,SAAO0K,QAAQ,CAAC,iBAAD,CAAR;AACL1L;AADK,KAEFyqB,yDAAa,CAACL,YAAd,CAA2BppB,MAA3B,CAFE,EAAP;AAID,CAL6C,CAA9C;AAOA0K,QAAQ,CAAC,qBAAD,CAAR,GAAkCuf,YAAY,CAAC,gBAAe;AAC5DjrB,IAD4D;AAE5DyB;AAF4D,CAAf,EAG5C;AACD,SAAOiK,QAAQ,CAAC,iBAAD,CAAR,CAA4B;AACjC1L,MADiC;AAEjC2F,cAAU,EAAElE;AAFqB,GAA5B,CAAP;AAID,CAR6C,CAA9C;;AAUAiK,QAAQ,CAAC,gBAAD,CAAR,GAA6B,kBAAiB;AAC5C,MAAI7G,MAAM,GAAG,MAAM6G,QAAQ,CAAC,YAAD,CAAR,EAAnB;AACA,SAAO7G,MAAM,CAACnpI,GAAP,CAAWkvJ,sDAAU,CAACT,UAAtB,CAAP;AACD,CAHD;;AAKAze,QAAQ,CAAC,kBAAD,CAAR,GAA+Buf,YAAY,CAAC,gBAAe;AAAExoB;AAAF,CAAf,EAA0B;AACpE,SAAOiJ,QAAQ,CAAC,cAAD,CAAR,CAAyB;AAAE/pI,QAAI,EAAE8gI,KAAK,CAAC9gI;AAAd,GAAzB,CAAP;AACD,CAF0C,CAA3C;AAIA+pI,QAAQ,CAAC,kBAAD,CAAR,GAA+Buf,YAAY,CAAC,gBAAe;AAAEjrB,IAAF;AAAMgB;AAAN,CAAf,EAA+B;AACzE,SAAO0K,QAAQ,CAAC,qBAAD,CAAR,CAAgC;AACrCqU,WAAO,EAAE;AAAG/f;AAAH,OAAU4qB,sDAAU,CAACR,YAAX,CAAwBppB,MAAxB,CAAV;AAD4B,GAAhC,CAAP;AAGD,CAJ0C,CAA3C;AAMA0K,QAAQ,CAAC,kBAAD,CAAR,GAA+Buf,YAAY,CAAC,gBAAe;AAAEjrB;AAAF,CAAf,EAAuB;AACjE,SAAO0L,QAAQ,CAAC,qBAAD,CAAR,CAAgC;AAAEhD,WAAO,EAAE,CAAC;AAAE1I;AAAF,KAAD;AAAX,GAAhC,CAAP;AACD,CAF0C,CAA3C;;AAIA0L,QAAQ,CAAC,qBAAD,CAAR,GAAkC,gBAAe;AAAE7I;AAAF,CAAf,EAA4B;AAC5D,MAAI/0H,KAAK,GAAG,MAAM49H,QAAQ,CAAC,kBAAD,CAAR,CAA6B;AAAE1L,MAAE,EAAE6C;AAAN,GAA7B,CAAlB;AACA,SAAO/0H,KAAK,CAACpS,GAAN,CAAUmvJ,0DAAc,CAACV,UAAzB,CAAP;AACD,CAHD;;AAKAze,QAAQ,CAAC,uBAAD,CAAR,GAAoCuf,YAAY,CAAC,gBAAe;AAC9DloB,UAD8D;AAE9D/4H;AAF8D,CAAf,EAG9C;AACD,SAAO0hI,QAAQ,CAAC,iBAAD,CAAR,CAA4B;AACjC3I,YADiC;AAEjCjuH,QAAI,EAAE9K,IAAI,CAAC8K,IAFsB;AAGjC5c,SAAK,EAAE8R,IAAI,CAAC9R,KAAL,IAAc;AAHY,GAA5B,CAAP;AAKD,CAT+C,CAAhD;AAWAwzI,QAAQ,CAAC,uBAAD,CAAR,GAAoCuf,YAAY,CAAC,gBAAe;AAC9DjrB,IAD8D;AAE9DgB;AAF8D,CAAf,EAG9C;AACD,SAAO0K,QAAQ,CAAC,oBAAD,CAAR;AACL1L;AADK,KAEF6qB,0DAAc,CAACT,YAAf,CAA4BppB,MAA5B,CAFE,EAAP;AAID,CAR+C,CAAhD;AAUA0K,QAAQ,CAAC,uBAAD,CAAR,GAAoCuf,YAAY,CAAC,gBAAe;AAAEjrB;AAAF,CAAf,EAAuB;AACtE,SAAO0L,QAAQ,CAAC,oBAAD,CAAR,CAA+B;AAAE1L;AAAF,GAA/B,CAAP;AACD,CAF+C,CAAhD;AAIe,yEAAS2sB,cAAT,EAAyB;AACtCjhB,UAAQ,GAAGnwI,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBmxJ,cAAlB,EAAkCjhB,QAAlC,CAAX;AACA,SAAOA,QAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACniBD;CAGA;AACA;AACA;AACA;;AAEA,MAAMkhB,GAAN,CAAU;AACRp1J,aAAW,GAAG;AACZ,SAAKk0I,QAAL,GAAgB,EAAhB;AACA,SAAKmhB,QAAL,GAAgB,EAAhB;AACA,SAAKC,MAAL,GAAcC,oDAAI,EAAlB;AACA,SAAKC,gBAAL,GAAwB,EAAxB;AACD;;AAED/wJ,QAAM,CAAC0F,IAAD,EAAOy5B,IAAP,EAAa;AACjB,QAAI,KAAKswG,QAAL,CAAc/pI,IAAd,KAAuB,IAA3B,EAAiC;AAC/B,YAAM,IAAIxE,KAAJ,CACJ,6DAA6DwE,IADzD,CAAN;AAGD;;AACD,SAAK+pI,QAAL,CAAc/pI,IAAd,IAAsBy5B,IAAtB;AACD;;AAED6xH,SAAO,CAAC7xH,IAAD,EAAO;AACZ,SAAKyxH,QAAL,CAAcrvJ,IAAd,CAAmB49B,IAAnB;AACD;;AAED8xH,SAAO,CAAC,GAAGC,IAAJ,EAAU;AACf,SAAK,IAAIC,GAAT,IAAgBD,IAAhB,EAAsB;AACpB5xJ,YAAM,CAACiS,IAAP,CAAY4/I,GAAG,CAAC1hB,QAAhB,EAA0B7gI,OAA1B,CAAkClJ,IAAI,IAAI;AACxC,aAAK1F,MAAL,CAAY0F,IAAZ,EAAkByrJ,GAAG,CAAC1hB,QAAJ,CAAa/pI,IAAb,CAAlB;AACD,OAFD;AAIAyrJ,SAAG,CAACP,QAAJ,CAAahiJ,OAAb,CAAqBoiJ,OAAO,IAAI;AAC9B,aAAKA,OAAL,CAAaA,OAAb;AACD,OAFD;;AAIA,uBAA8BG,GAAG,CAACN,MAAJ,CAAWhkF,GAAX,CAAe3oD,OAAf,EAA9B,EAAwD;AAAA;;AAAA,YAA9Cxe,IAA8C;AAAA,YAAxC0rJ,SAAwC;;AACtD,aAAK,IAAIC,QAAT,IAAqBD,SAArB,EAAgC;AAC9B,eAAKP,MAAL,CAAY7hI,EAAZ,CAAetpB,IAAf,EAAqB2rJ,QAArB;AACD;AACF;AACF;AACF;;AAEDC,eAAa,GAAG;AACd,QAAI,KAAKP,gBAAL,CAAsBruJ,MAAtB,GAA+B,CAAnC,EAAsC;AACpCuwI,mFAAgB,CACd,IAAI/xI,KAAJ,CACE,8DADF,CADc,CAAhB;AAKD;;AACD,SAAK6vJ,gBAAL,GAAwB,KAAKH,QAAL,CAAcnxJ,GAAd,CAAkBuxJ,OAAO,IAAIA,OAAO,EAApC,CAAxB;AACD;;AAEDO,cAAY,GAAG;AACb,SAAKR,gBAAL,CAAsBniJ,OAAtB,CAA8B4iJ,QAAQ,IAAI;AACxC,UAAIA,QAAJ,EAAc;AACZA,gBAAQ;AACT;AACF,KAJD;AAKA,SAAKT,gBAAL,GAAwB,EAAxB;AACD;;AAzDO;;AA4DH,SAASU,SAAT,GAAqB;AAC1B,SAAO,IAAId,GAAJ,EAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtED,IAAIe,IAAI,GAAG,CAAX;;AACA,SAASC,QAAT,GAAoB;AAClBD,MAAI,GAAG,CAAP;AACD;;AAED,SAASE,GAAT,CAAaC,SAAb,EAAwB;AACtBH,MAAI;AACJ,SAAOG,SAAS,GAAGH,IAAnB;AACD;;AAED,MAAMI,YAAN,SAA2B5wJ,KAA3B,CAAiC;;AAEjC,SAAS6wJ,eAAT,CAAyBrzJ,IAAzB,EAA+B;AAC7B,MAAIszJ,GAAG,GAAG5nJ,CAAC,IAAI,CAACA,CAAC,GAAG,EAAJ,GAAS,GAAT,GAAe,EAAhB,IAAsBA,CAArC;;AACA,SAAO1L,IAAI,CAAC+a,WAAL,KAAqBu4I,GAAG,CAACtzJ,IAAI,CAACgb,QAAL,KAAkB,CAAnB,CAAxB,GAAgDs4I,GAAG,CAACtzJ,IAAI,CAACib,OAAL,EAAD,CAA1D;AACD;;AAED,SAASs4I,SAAT,CAAmBvzJ,IAAnB,EAAyB;AACvB,SAAOoe,QAAQ,CAACpe,IAAI,CAACsd,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAD,CAAf;AACD;;AAEM,SAASk2I,YAAT,CAAsBC,MAAtB,EAA8BN,SAA9B,EAAyCO,OAAzC,EAAkDC,QAAlD,EAA4D;AACjE,MAAIC,YAAY,GAAGH,MAAM,CAACN,SAAD,CAAN,CAAkBzJ,SAAlB,IAA+B,IAAlD;AACA,SAAOkK,YAAY,GAAI,GAAED,QAAS,QAAOD,OAAQ,gBAA9B,GAAgDC,QAAnE;AACD;;AAED,SAASE,OAAT,CAAiB77H,IAAjB,EAAuB;AACrB,MAAI5H,KAAK,GAAG4H,IAAI,CAAC3Z,KAAL,CAAW,GAAX,CAAZ;AACA,SAAO;AAAE2Z,QAAI,EAAE5H,KAAK,CAACpqB,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,EAAmB+Y,IAAnB,CAAwB,GAAxB,CAAR;AAAsCioB,SAAK,EAAE5W,KAAK,CAACA,KAAK,CAACpsB,MAAN,GAAe,CAAhB;AAAlD,GAAP;AACD;;AAED,SAAS8vJ,SAAT,CAAmB7yH,GAAnB,EAAwB;AACtB,SAAOA,GAAG,KAAK,OAAf;AACD;;AAEM,SAAS8yH,UAAT,CAAoB90F,KAApB,EAA2B;AAChC,SAAOA,KAAK,CAACjzD,OAAN,CAAc,GAAd,MAAuB,CAAC,CAAxB,IAA6B,CAAC8nJ,SAAS,CAAC70F,KAAD,CAAvC,GAAiDA,KAAjD,GAA0D,IAAGA,KAAM,GAA1E;AACD;;AAED,SAAS+0F,KAAT,CAAez2J,KAAf,EAAsB4c,IAAtB,EAA4B;AAAE85I,SAAO,GAAG;AAAZ,IAAsB,EAAlD,EAAsD;AACpD,SAAO;AAAE12J,SAAF;AAAS4c,QAAT;AAAe85I;AAAf,GAAP;AACD;;AAED,SAASC,mBAAT,CAA6BT,MAA7B,EAAqCN,SAArC,EAAgDnsH,KAAhD,EAAuD;AACrD,MAAIysH,MAAM,CAACN,SAAD,CAAN,IAAqB,IAAzB,EAA+B;AAC7B,UAAM,IAAIC,YAAJ,CAAkB,UAASD,SAAU,gCAArC,CAAN;AACD;;AAED,MAAIgB,SAAS,GAAGV,MAAM,CAACN,SAAD,CAAN,CAAkBnsH,KAAlB,CAAhB;;AACA,MAAImtH,SAAS,IAAI,IAAjB,EAAuB;AACrB,UAAM,IAAIf,YAAJ,CACH,UAASpsH,KAAM,8BAA6BmsH,SAAU,GADnD,CAAN;AAGD;;AACD,SAAOgB,SAAP;AACD;;AAED,SAASC,QAAT,CAAkB/tH,KAAlB,EAAyBrO,IAAzB,EAA+B;AAC7B,MAAMy7H,MAAN,GAAwBptH,KAAxB,CAAMotH,MAAN;AAAA,MAAcpmB,KAAd,GAAwBhnG,KAAxB,CAAcgnG,KAAd;AAEA,MAAIj9G,KAAK,GAAG4H,IAAI,CAAC3Z,KAAL,CAAW,GAAX,CAAZ;;AACA,MAAI+R,KAAK,CAACpsB,MAAN,GAAe,CAAnB,EAAsB;AACpB,UAAM,IAAIovJ,YAAJ,CAAiB,mBAAmBp7H,IAApC,CAAN;AACD;;AAED,MAAIq8H,YAAY,GAAGjkI,KAAK,CAAC,CAAD,CAAxB;AAEA,MAAI+iI,SAAS,GAAG/iI,KAAK,CAACpqB,KAAN,CAAY,CAAZ,EAAe/H,MAAf,CAAsB,CAACk1J,SAAD,EAAYnsH,KAAZ,KAAsB;AAC1D,QAAI+9F,KAAK,GAAG0uB,MAAM,CAACN,SAAD,CAAlB;;AAEA,QAAIpuB,KAAK,IAAI,IAAb,EAAmB;AACjB,YAAM,IAAIquB,YAAJ,CAAkB,eAAcD,SAAU,uBAA1C,CAAN;AACD;;AAED,QAAI,CAACpuB,KAAK,CAAC/9F,KAAD,CAAN,IAAiB+9F,KAAK,CAAC/9F,KAAD,CAAL,CAAastH,GAAb,IAAoB,IAAzC,EAA+C;AAC7C,YAAM,IAAIlB,YAAJ,CACH,+BAA8BD,SAAU,MAAKnsH,KAAM,GADhD,CAAN;AAGD;;AAED,WAAO+9F,KAAK,CAAC/9F,KAAD,CAAL,CAAastH,GAApB;AACD,GAde,EAcbD,YAda,CAAhB;AAgBA,MAAIE,SAAJ;AACA,MAAIC,WAAW,GAAGpkI,KAAK,CAACpqB,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CAAlB;;AACA,MAAIwuJ,WAAW,CAACxwJ,MAAZ,KAAuB,CAA3B,EAA8B;AAC5BuwJ,aAAS,GAAGC,WAAW,CAAC,CAAD,CAAvB;AACD,GAFD,MAEO;AACL,QAAIC,UAAU,GAAGD,WAAW,CAACz1I,IAAZ,CAAiB,GAAjB,CAAjB;AACA,QAAI21I,UAAU,GAAGrnB,KAAK,CAACptI,GAAN,CAAUw0J,UAAV,CAAjB;;AACA,QAAI,CAACC,UAAL,EAAiB;AACf,YAAM,IAAItB,YAAJ,CAAiB,0BAA0BqB,UAA3C,CAAN;AACD;;AACDF,aAAS,GAAGG,UAAU,CAAChB,OAAvB;AACD;;AAED,SAAO;AACLP,aAAS,EAAEA,SADN;AAELO,WAAO,EAAER,GAAG,CAACC,SAAD,CAFP;AAGLwB,aAAS,EAAEvkI,KAAK,CAACA,KAAK,CAACpsB,MAAN,GAAe,CAAhB,CAHX;AAILuwJ;AAJK,GAAP;AAMD;;AAED,SAASK,WAAT,CAAqBvuH,KAArB,EAA4BrO,IAA5B,EAAkC;AAChC,MAAIq1G,KAAK,GAAGr1G,IAAI,CAAC3Z,KAAL,CAAW,GAAX,CAAZ;AACA,MAAIq1I,OAAJ;AAEArmB,OAAK,GAAGA,KAAK,CAACpvI,MAAN,CACN,CAAC61H,GAAD,EAAM9sH,IAAN,KAAe;AACb,QAAI6tJ,QAAQ,GAAG/gC,GAAG,CAACn3G,OAAJ,GAAc,GAAd,GAAoB3V,IAAnC;AACA,WAAO;AACL2V,aAAO,EAAEk4I,QADJ;AAEL78H,UAAI,EAAE,CAAC,GAAG87F,GAAG,CAAC97F,IAAR,EAAc68H,QAAd;AAFD,KAAP;AAID,GAPK,EAQN;AAAEl4I,WAAO,EAAE0pB,KAAK,CAACyuH,iBAAjB;AAAoC98H,QAAI,EAAE;AAA1C,GARM,EASNA,IATF;AAWAq1G,OAAK,CAACn9H,OAAN,CAAc8nB,IAAI,IAAI;AACpB,QAAI,CAACqO,KAAK,CAACgnG,KAAN,CAAYptI,GAAZ,CAAgB+3B,IAAhB,CAAL,EAA4B;AAC1BqO,WAAK,CAACgnG,KAAN,CAAY7pI,GAAZ,CAAgBw0B,IAAhB,EAAsBo8H,QAAQ,CAAC/tH,KAAD,EAAQrO,IAAR,CAA9B;AACD;AACF,GAJD;AAMA,MAAI+8H,QAAQ,GAAG1uH,KAAK,CAACgnG,KAAN,CAAYptI,GAAZ,CAAgBotI,KAAK,CAACA,KAAK,CAACrpI,MAAN,GAAe,CAAhB,CAArB,CAAf;AACA,SAAO+wJ,QAAP;AACD;;AAED,SAASC,cAAT,CAAwB3uH,KAAxB,EAA+Br/B,IAA/B,EAAqC;AACnC,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,UAAM,IAAIosJ,YAAJ,CAAiB,sCAAjB,CAAN;AACD;;AAED,iBAAsBS,OAAO,CAAC7sJ,IAAD,CAA7B;AAAA,MAAMgxB,IAAN,YAAMA,IAAN;AAAA,MAAYgP,KAAZ,YAAYA,KAAZ;;AAEA,MAAI+tH,QAAJ;;AACA,MAAI/8H,IAAI,KAAK,EAAb,EAAiB;AACf+8H,YAAQ,GAAG;AACT5B,eAAS,EAAE9sH,KAAK,CAACyuH,iBADR;AAETpB,aAAO,EAAErtH,KAAK,CAAC4uH;AAFN,KAAX;AAID,GALD,MAKO;AACLF,YAAQ,GAAGH,WAAW,CAACvuH,KAAD,EAAQrO,IAAR,CAAtB;AACD;;AAED,MAAIm8H,SAAS,GAAGD,mBAAmB,CAAC7tH,KAAK,CAACotH,MAAP,EAAesB,QAAQ,CAAC5B,SAAxB,EAAmCnsH,KAAnC,CAAnC,CAjBmC,CAmBnC;AACA;AACA;AACA;AACA;AACA;;AACA,MACEX,KAAK,CAACy9F,YAAN,IACAqwB,SAAS,CAACG,GADV,IAEAH,SAAS,CAACh6I,IAAV,KAAmB,IAFnB,IAGA6sB,KAAK,KAAK,IAJZ,EAKE;AACA,QAAIkuH,OAAO,GAAG7uH,KAAK,CAACyuH,iBAAN,GAA0B,GAA1B,GAAgC9tJ,IAA9C;AACA,QAAImuJ,WAAW,GAAG9uH,KAAK,CAACgnG,KAAN,CAAYptI,GAAZ,CAAgBi1J,OAAhB,CAAlB;;AAEA,QAAI,CAACC,WAAL,EAAkB;AAChBA,iBAAW,GAAGf,QAAQ,CAAC/tH,KAAD,EAAQ6uH,OAAR,CAAtB;AACAC,iBAAW,CAACC,SAAZ,GAAwB,IAAxB;AACA/uH,WAAK,CAACgnG,KAAN,CAAY7pI,GAAZ,CAAgB0xJ,OAAhB,EAAyBC,WAAzB;AACD;;AAEDnuH,SAAK,GAAG,IAAR;AACA+tH,YAAQ,GAAGI,WAAX;AACD;;AAED,MAAIE,QAAQ,GAAGN,QAAQ,CAACrB,OAAT,GAAmB,GAAnB,GAAyB1sH,KAAxC;AACA,SAAOgtH,KAAK,CAACqB,QAAD,EAAWlB,SAAS,CAACh6I,IAArB,CAAZ;AACD;;AAED,SAAS62C,SAAT,CAAmB/vB,GAAnB,EAAwB;AACtB,MAAIiU,CAAC,GAAGjU,GAAG,CAAC9jB,KAAJ,CAAU,uBAAV,CAAR;;AACA,MAAI+3B,CAAJ,EAAO;AACL,WAAO8+G,KAAK,CAACT,SAAS,CAACr+G,CAAC,CAAC,CAAD,CAAF,CAAV,EAAkB,MAAlB,EAA0B;AAAE++G,aAAO,EAAE;AAAX,KAA1B,CAAZ;AACD;;AACD,SAAO,IAAP;AACD;;AAED,SAASqB,UAAT,CAAoBr0H,GAApB,EAAyB;AACvB,MAAIiU,CAAC,GAAGjU,GAAG,CAAC9jB,KAAJ,CAAU,iBAAV,CAAR;;AACA,MAAI+3B,CAAJ,EAAO;AACL,WAAO8+G,KAAK,CAACT,SAAS,CAACr+G,CAAC,CAAC,CAAD,CAAF,CAAV,EAAkB,MAAlB,EAA0B;AAAE++G,aAAO,EAAE;AAAX,KAA1B,CAAZ;AACD;;AACD,SAAO,IAAP;AACD;;AAED,SAASljG,SAAT,CAAmB9vB,GAAnB,EAAwB;AACtB,MAAIiU,CAAC,GAAGjU,GAAG,CAAC9jB,KAAJ,CAAU,WAAV,CAAR;;AACA,MAAI+3B,CAAJ,EAAO;AACL,WAAO8+G,KAAK,CAACT,SAAS,CAACr+G,CAAC,CAAC,CAAD,CAAF,CAAV,EAAkB,MAAlB,EAA0B;AAAE++G,aAAO,EAAE;AAAX,KAA1B,CAAZ;AACD;;AACD,SAAO,IAAP;AACD;;AAED,SAASsB,aAAT,CAAuBt0H,GAAvB,EAA4B9mB,IAA5B,EAAkC;AAChC,QAAM,IAAIi5I,YAAJ,CAAkB,OAAMj5I,IAAK,YAAW8mB,GAAI,EAA5C,CAAN;AACD;;AAED,SAASu0H,UAAT,CAAoBlxE,KAApB,EAA2BnqE,IAA3B,EAAiC;AAC/B,MAAIs7I,YAAY,GAAGnxE,KAAK,CAACoxE,SAAzB;;AACA,MAAID,YAAJ,EAAkB;AAChB,QAAIE,KAAK,GAAG;AACV31J,UAAI,EAAE,CAAC,QAAD,CADI;AAEV,oBAAc,CAAC,MAAD,CAFJ;AAGV,mBAAa,CAAC,MAAD,EAAS,YAAT,CAHH;AAIVqlI,QAAE,EAAE,CAAC,QAAD,CAJM;AAKVuwB,WAAK,EAAE,CAAC,SAAD;AALG,KAAZ;;AAQA,QACEH,YAAY,KAAKt7I,IAAjB,KACC,CAACw7I,KAAK,CAACx7I,IAAD,CAAN,IAAgB,CAACw7I,KAAK,CAACx7I,IAAD,CAAL,CAAY1E,QAAZ,CAAqBggJ,YAArB,CADlB,CADF,EAGE;AACA,YAAM,IAAIjzJ,KAAJ,CACH,cAAawE,IAAK,sBAAqBmT,IAAK,yBAAwBs7I,YAAa,GAD9E,CAAN;AAGD;AACF,GAjBD,MAiBO;AACLnxE,SAAK,CAACoxE,SAAN,GAAkBv7I,IAAlB;AACD;AACF;;AAED,SAAS07I,SAAT,CAAmBxvH,KAAnB,EAA0B09F,IAA1B,EAAgC5pH,IAAhC,EAAsC;AACpC,MAAI4pH,IAAI,CAAC5pH,IAAL,KAAcA,IAAlB,EAAwB;AACtB,WAAO4pH,IAAP;AACD,GAFD,MAEO,IAAIA,IAAI,CAAC5pH,IAAL,KAAc,OAAlB,EAA2B;AAChCq7I,cAAU,CAACzxB,IAAD,EAAO5pH,IAAP,CAAV;AACA,WAAO65I,KAAK,CAACjwB,IAAI,CAACxmI,KAAN,EAAa4c,IAAb,CAAZ;AACD,GAHM,MAGA,IAAI4pH,IAAI,CAAC5pH,IAAL,KAAc,MAAlB,EAA0B;AAC/B,QAAI,CAAC4pH,IAAI,CAACkwB,OAAV,EAAmB;AACjB,YAAM,IAAIb,YAAJ,CAAiB,uCAAjB,CAAN;AACD;;AAED,QAAIj5I,IAAI,KAAK,SAAb,EAAwB;AACtB,aAAO65I,KAAK,CAAC,CAAD,EAAI,SAAJ,EAAe;AAAEC,eAAO,EAAE;AAAX,OAAf,CAAZ;AACD;;AACD,WAAOlwB,IAAP;AACD,GAfmC,CAiBpC;;;AACA,MAAI5pH,IAAI,KAAK,MAAb,EAAqB;AACnB,QAAI4pH,IAAI,CAAC5pH,IAAL,KAAc,QAAlB,EAA4B;AAC1B,UAAI4pH,IAAI,CAACkwB,OAAT,EAAkB;AAChB,eAAOjjG,SAAS,CAAC+yE,IAAI,CAACxmI,KAAN,CAAT,IAAyBg4J,aAAa,CAACxxB,IAAI,CAACxmI,KAAN,EAAa,MAAb,CAA7C;AACD,OAFD,MAEO;AACL,cAAM,IAAI61J,YAAJ,CACJ,iDADI,CAAN;AAGD;AACF;;AAED,UAAM,IAAIA,YAAJ,CAAkB,cAAarvB,IAAI,CAAC5pH,IAAK,UAAzC,CAAN;AACD,GAZD,MAYO,IAAIA,IAAI,KAAK,YAAb,EAA2B;AAChC,QAAI27I,KAAJ;;AACA,QAAI/xB,IAAI,CAAC5pH,IAAL,KAAc,MAAlB,EAA0B;AACxB27I,WAAK,GAAG/xB,IAAR;AACD,KAFD,MAEO,IAAIA,IAAI,CAAC5pH,IAAL,KAAc,QAAd,IAA0B4pH,IAAI,CAAC5pH,IAAL,KAAc,KAA5C,EAAmD;AACxD27I,WAAK,GACHR,UAAU,CAACvxB,IAAI,CAACxmI,KAAN,CAAV,IACAyzD,SAAS,CAAC+yE,IAAI,CAACxmI,KAAN,CADT,IAEAg4J,aAAa,CAACxxB,IAAI,CAACxmI,KAAN,EAAa,YAAb,CAHf;AAID,KALM,MAKA;AACL,YAAM,IAAI61J,YAAJ,CAAkB,cAAarvB,IAAI,CAAC5pH,IAAK,gBAAzC,CAAN;AACD;;AAED,QAAI27I,KAAK,CAAC7B,OAAV,EAAmB;AACjB,aAAOD,KAAK,CACVT,SAAS,CAACuC,KAAK,CAACv4J,KAAN,CAAYqd,QAAZ,GAAuB5U,KAAvB,CAA6B,CAA7B,EAAgC,CAAhC,CAAD,CADC,EAEV,YAFU,EAGV;AAAEiuJ,eAAO,EAAE;AAAX,OAHU,CAAZ;AAKD,KAND,MAMO;AACL,aAAOD,KAAK,CACT,eAAc8B,KAAK,CAACv4J,KAAM,qBADjB,EAEV,YAFU,CAAZ;AAID;AACF,GAzBM,MAyBA,IAAI4c,IAAI,KAAK,WAAb,EAA0B;AAC/B,QAAI27I,KAAJ;;AACA,QAAI/xB,IAAI,CAAC5pH,IAAL,KAAc,MAAd,IAAwB4pH,IAAI,CAAC5pH,IAAL,KAAc,YAA1C,EAAwD;AACtD27I,WAAK,GAAG/xB,IAAR;AACD,KAFD,MAEO,IAAIA,IAAI,CAAC5pH,IAAL,KAAc,QAAlB,EAA4B;AACjC27I,WAAK,GACH/kG,SAAS,CAACgzE,IAAI,CAACxmI,KAAN,CAAT,IACA+3J,UAAU,CAACvxB,IAAI,CAACxmI,KAAN,CADV,IAEAyzD,SAAS,CAAC+yE,IAAI,CAACxmI,KAAN,CAFT,IAGAg4J,aAAa,CAACxxB,IAAI,CAACxmI,KAAN,EAAa,WAAb,CAJf;AAKD,KANM,MAMA;AACL,YAAM,IAAI61J,YAAJ,CAAkB,cAAarvB,IAAI,CAAC5pH,IAAK,eAAzC,CAAN;AACD;;AAED,QAAI27I,KAAK,CAAC7B,OAAV,EAAmB;AACjB,aAAOD,KAAK,CAACT,SAAS,CAACuC,KAAK,CAACv4J,KAAN,CAAYqd,QAAZ,GAAuB5U,KAAvB,CAA6B,CAA7B,EAAgC,CAAhC,CAAD,CAAV,EAAgD,WAAhD,EAA6D;AACvEiuJ,eAAO,EAAE;AAD8D,OAA7D,CAAZ;AAGD,KAJD,MAIO;AACL,aAAOD,KAAK,CACT,eAAc8B,KAAK,CAACv4J,KAAM,qBADjB,EAEV,WAFU,CAAZ;AAID;AACF,GAxBM,MAwBA,IAAI4c,IAAI,KAAK,IAAb,EAAmB;AACxB,QAAI4pH,IAAI,CAAC5pH,IAAL,KAAc,QAAlB,EAA4B;AAC1B,aAAO65I,KAAK,CAACjwB,IAAI,CAACxmI,KAAN,EAAa,IAAb,EAAmB;AAAE02J,eAAO,EAAElwB,IAAI,CAACkwB;AAAhB,OAAnB,CAAZ;AACD;AACF,GAJM,MAIA,IAAI95I,IAAI,KAAK,OAAb,EAAsB;AAC3B,QAAI4pH,IAAI,CAAC5pH,IAAL,KAAc,SAAlB,EAA6B;AAC3B,aAAO65I,KAAK,CAACjwB,IAAI,CAACxmI,KAAN,EAAa,OAAb,EAAsB;AAAE02J,eAAO,EAAElwB,IAAI,CAACkwB;AAAhB,OAAtB,CAAZ;AACD;AACF;;AAED,MAAIlwB,IAAI,CAAC5pH,IAAL,KAAc,KAAlB,EAAyB;AACvB,WAAO65I,KAAK,CAACjwB,IAAI,CAACxmI,KAAN,EAAa4c,IAAb,EAAmB;AAAE85I,aAAO,EAAElwB,IAAI,CAACkwB;AAAhB,KAAnB,CAAZ;AACD;;AAED,QAAM,IAAIb,YAAJ,CAAkB,iBAAgBrvB,IAAI,CAAC5pH,IAAK,OAAMA,IAAK,EAAvD,CAAN;AACD,C,CAED;;;AACA,SAAS6C,GAAT,CAAaqpB,KAAb,EAAoB09F,IAApB,EAA0B5pH,IAA1B,EAAgC;AAC9B,MAAI47I,UAAU,GAAGhyB,IAAjB,CAD8B,CAG9B;;AACA,MAAI5pH,IAAJ,EAAU;AACR47I,cAAU,GAAGF,SAAS,CAACxvH,KAAD,EAAQ09F,IAAR,EAAc5pH,IAAd,CAAtB;AACD;;AAED,MAAI47I,UAAU,CAAC9B,OAAf,EAAwB;AACtB,QAAI8B,UAAU,CAAC57I,IAAX,KAAoB,IAAxB,EAA8B;AAC5B,aAAQ,IAAG47I,UAAU,CAACx4J,KAAM,GAA5B;AACD,KAFD,MAEO,IAAIw4J,UAAU,CAAC57I,IAAX,KAAoB,QAAxB,EAAkC;AACvC;AACA,UAAI5c,KAAK,GAAGw4J,UAAU,CAACx4J,KAAX,CAAiB+f,OAAjB,CAAyB,IAAzB,EAA+B,IAA/B,CAAZ;AACA,aAAQ,IAAG/f,KAAM,GAAjB;AACD;AACF;;AAED,SAAOw4J,UAAU,CAACx4J,KAAlB;AACD;;AAED,SAASy4J,QAAT,CAAkB3vH,KAAlB,EAAyB6yB,GAAzB,EAA8B+8F,KAA9B,EAAqC;AACnC,SAAO/8F,GAAG,CAACn4D,GAAJ,CAAQ,CAACxD,KAAD,EAAQ2lJ,GAAR,KAAgBlmI,GAAG,CAACqpB,KAAD,EAAQ9oC,KAAR,EAAe04J,KAAK,GAAGA,KAAK,CAAC/S,GAAD,CAAR,GAAgB,IAApC,CAA3B,CAAP;AACD;;AAED,SAASgT,iBAAT,CAA2Bh9F,GAA3B,EAAgC1rD,GAAhC,EAAqCid,GAArC,EAA0C;AACxC,MAAIA,GAAG,IAAI,IAAX,EAAiB;AACfA,OAAG,GAAGjd,GAAN;AACD;;AAED,MAAIA,GAAG,IAAI,IAAP,IAAe0rD,GAAG,CAACl1D,MAAJ,GAAawJ,GAAhC,EAAqC;AACnC,UAAM,IAAI4lJ,YAAJ,CAAiB,mBAAjB,CAAN;AACD;;AACD,MAAI3oI,GAAG,IAAI,IAAP,IAAeyuC,GAAG,CAACl1D,MAAJ,GAAaymB,GAAhC,EAAqC;AACnC,UAAM,IAAI2oI,YAAJ,CAAiB,oBAAjB,CAAN;AACD;AACF,C,CAED;;;AAEA,SAAS+C,SAAT,CAAmBh8I,IAAnB,EAAyBsmB,IAAzB,EAA+B;AAC7B,SAAO,CAAC4F,KAAD,EAAQ,GAAGvpC,IAAX,KAAoB;AACzB,QAAIupC,KAAK,IAAI,IAAT,IAAiBA,KAAK,CAAC+vH,YAAN,IAAsB,IAA3C,EAAiD;AAC/C,YAAM,IAAIhD,YAAJ,CACJ,4CACE,8DAFE,CAAN;AAID;;AAED/sH,SAAK,CAAC+vH,YAAN,CAAmBvzJ,IAAnB,CAAwB;AAAEsX,UAAF;AAAQrd;AAAR,KAAxB;AACA,QAAI8rB,GAAG,GAAG6X,IAAI,CAAC4F,KAAD,EAAQ,GAAGvpC,IAAX,CAAd;AACAupC,SAAK,CAAC+vH,YAAN,CAAmBxxJ,GAAnB;AACA,WAAOgkB,GAAP;AACD,GAZD;AAaD;;AAED,SAASytI,WAAT,CAAqB94J,KAArB,EAA4B;AAC1B,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,WAAOA,KAAP;AACD,GAFD,MAEO,IAAIA,KAAK,KAAKP,SAAd,EAAyB;AAC9B,WAAO,WAAP;AACD;;AAED,MAAIikC,GAAG,GAAGr1B,IAAI,CAACC,SAAL,CAAetO,KAAf,CAAV;;AACA,MAAI0jC,GAAG,CAACj9B,MAAJ,GAAa,EAAjB,EAAqB;AACnB,QAAIsyJ,QAAQ,GAAG1qJ,IAAI,CAACC,SAAL,CAAetO,KAAf,EAAsB,IAAtB,EAA4B,CAA5B,CAAf;AACA,WAAO+4J,QAAQ,CAACj4I,KAAT,CAAe,IAAf,EAAqBU,IAArB,CAA0B,MAA1B,CAAP;AACD;;AACD,SAAOkiB,GAAP;AACD;;AAED,SAASs1H,eAAT,CAAyB7vH,KAAzB,EAAgCkuB,KAAhC,EAAuC;AACrC,MAAIA,KAAK,CAAC5wD,MAAN,KAAiB,CAArB,EAAwB;AACtB,WAAO0iC,KAAP;AACD;;AAED,MAAI8vH,QAAQ,GAAG5hG,KAAK,CACjB5uD,KADY,CACN,CADM,EAEZlI,OAFY,GAGZiD,GAHY,CAGRoX,KAAK,IAAI;AACZ,YAAQA,KAAK,CAACgC,IAAd;AACE,WAAK,MAAL;AACA,WAAK,UAAL;AACE,eAAOk8I,WAAW,CAACl+I,KAAK,CAACrb,IAAN,CAAW,CAAX,CAAD,CAAlB;;AACF,WAAK,IAAL;AAAW;AACT,2CAAyBqb,KAAK,CAACrb,IAA/B;AAAA,cAAK25J,QAAL;AAAA,cAAeC,MAAf;;AACA,iBAAOL,WAAW,CAAC;AAAE,aAACI,QAAD,GAAYC;AAAd,WAAD,CAAlB;AACD;;AACD,WAAK,OAAL;AACE,eAAOL,WAAW,CAACl+I,KAAK,CAAC5a,KAAP,CAAlB;;AACF;AACE,eAAO,EAAP;AAXJ;AAaD,GAjBY,EAkBZwD,GAlBY,CAkBRkgC,GAAG,IAAI,SAASA,GAlBR,EAmBZliB,IAnBY,CAmBP,EAnBO,CAAf;AAqBA,QAAM43I,UAAU,GAAG/hG,KAAK,CAAC,CAAD,CAAL,CAASz6C,IAA5B;AACA,QAAMy8I,UAAU,GAAGhiG,KAAK,CAAC,CAAD,CAAL,CAAS93D,IAAT,CAAc,CAAd,CAAnB;AACA05J,UAAQ,IAAK,OAAMG,UAAW,IAAGN,WAAW,CAC1CO,UAAU,CAAC5yJ,MAAX,KAAsB,CAAtB,GAA0B4yJ,UAAU,CAAC,CAAD,CAApC,GAA0CA,UADA,CAE1C,GAFF,CA5BqC,CAgCrC;;AACA,MAAIx9H,KAAJ,EAA2C,EAK1C;;AAEDsN,OAAK,CAACuF,OAAN,GAAiB,GAAEvF,KAAK,CAACuF,OAAQ,uBAAjB,GAA0CuqH,QAA1D;AACA,SAAO9vH,KAAP;AACD,C,CAED;;;AAEA,SAASmwH,cAAT,CAAwBt5J,KAAxB,EAA+B;AAC7B,MAAIA,KAAK,KAAKP,SAAd,EAAyB;AACvB,UAAM,IAAIo2J,YAAJ,CAAiB,wCAAjB,CAAN;AACD,GAFD,MAEO,IAAI71J,KAAK,KAAK,IAAd,EAAoB;AACzB,WAAOy2J,KAAK,CAAC,MAAD,EAAS,MAAT,EAAiB;AAAEC,aAAO,EAAE;AAAX,KAAjB,CAAZ;AACD,GAFM,MAEA,IAAI12J,KAAK,YAAY4K,IAArB,EAA2B;AAChC,WAAO6rJ,KAAK,CAACX,eAAe,CAAC91J,KAAD,CAAhB,EAAyB,MAAzB,EAAiC;AAAE02J,aAAO,EAAE;AAAX,KAAjC,CAAZ;AACD,GAFM,MAEA,IAAI,OAAO12J,KAAP,KAAiB,QAArB,EAA+B;AACpC;AACA;AACAA,SAAK,GAAGA,KAAK,CAAC+f,OAAN,CAAc,OAAd,EAAuB,GAAvB,CAAR;AACA,WAAO02I,KAAK,CAACz2J,KAAD,EAAQ,QAAR,EAAkB;AAAE02J,aAAO,EAAE;AAAX,KAAlB,CAAZ;AACD,GALM,MAKA,IAAI,OAAO12J,KAAP,KAAiB,SAArB,EAAgC;AACrC,WAAOy2J,KAAK,CAACz2J,KAAK,GAAG,CAAH,GAAO,CAAb,EAAgB,SAAhB,EAA2B;AAAE02J,aAAO,EAAE;AAAX,KAA3B,CAAZ;AACD,GAFM,MAEA,IAAI,OAAO12J,KAAP,KAAiB,QAArB,EAA+B;AACpC,WAAOy2J,KAAK,CAACz2J,KAAD,EAAQ,CAACA,KAAK,GAAG,CAAT,MAAgBA,KAAhB,GAAwB,SAAxB,GAAoC,OAA5C,EAAqD;AAC/D02J,aAAO,EAAE;AADsD,KAArD,CAAZ;AAGD,GAJM,MAIA,IAAInyJ,KAAK,CAACwD,OAAN,CAAc/H,KAAd,CAAJ,EAA0B;AAC/B,WAAOy2J,KAAK,CAACz2J,KAAD,EAAQ,OAAR,EAAiB;AAAE02J,aAAO,EAAE;AAAX,KAAjB,CAAZ;AACD,GAFM,MAEA;AACL,UAAM,IAAIb,YAAJ,CACJ,qCAAqCxnJ,IAAI,CAACC,SAAL,CAAetO,KAAf,CADjC,CAAN;AAGD;AACF;;AAED,MAAMu5J,WAAW,GAAGX,SAAS,CAAC,MAAD,EAAS,CAAC9vH,KAAD,EAAQ09F,IAAR,KAAiB;AACrD,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B;AACA,QAAIA,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;AACnB,UAAI0yB,QAAQ,GAAG1yB,IAAI,KAAK,GAAT,GAAe19F,KAAK,CAAC0wH,aAArB,GAAqChzB,IAAI,CAAC/9H,KAAL,CAAW,CAAX,CAApD;;AAEA,UAAIywJ,QAAQ,IAAI,IAAZ,IAAoBA,QAAQ,KAAK,EAArC,EAAyC;AACvC,cAAM,IAAIrD,YAAJ,CAAiB,8BAA8BrvB,IAA/C,CAAN;AACD;;AAED,aAAOixB,cAAc,CAAC3uH,KAAD,EAAQowH,QAAR,CAArB;AACD,KAV2B,CAY5B;;;AACA,QAAI1yB,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;AACnB,UAAIz/C,KAAK,GAAG;AAAE/mF,aAAK,EAAE,GAAT;AAAc4c,YAAI,EAAE,OAApB;AAA6B68I,iBAAS,EAAEjzB,IAAI,CAAC/9H,KAAL,CAAW,CAAX;AAAxC,OAAZ;AACAqgC,WAAK,CAAC4wH,eAAN,CAAsBp0J,IAAtB,CAA2ByhF,KAA3B;AACA,aAAOA,KAAP;AACD;AACF;;AAED,MAAIy/C,IAAI,KAAK,IAAb,EAAmB;AACjB,QAAIjiI,KAAK,CAACwD,OAAN,CAAcy+H,IAAd,CAAJ,EAAyB;AACvB,aAAO8yB,cAAc,CAAC9yB,IAAD,CAArB;AACD,KAFD,MAEO,IACL,OAAOA,IAAP,KAAgB,QAAhB,IACAnjI,MAAM,CAACiS,IAAP,CAAYkxH,IAAZ,EAAkBrqH,IAAlB,CAAuByY,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAD,KAAS,GAArC,CAFK,EAGL;AACA;AACA,aAAO+kI,eAAe,CAAC7wH,KAAD,EAAQ09F,IAAR,CAAtB;AACD;AACF;;AAED,SAAO8yB,cAAc,CAAC9yB,IAAD,CAArB;AACD,CAlC4B,CAA7B;;AAoCA,SAASozB,UAAT,CAAoBnwJ,IAApB,EAA0B3B,IAA1B,EAAgC+xJ,aAAhC,EAA+C;AAC7C,MAAIA,aAAa,CAACprJ,OAAd,CAAsB3G,IAAI,CAAC8U,IAA3B,MAAqC,CAAC,CAA1C,EAA6C;AAC3C,UAAM,IAAIi5I,YAAJ,CACH,iCAAgCpsJ,IAAK,oBAAmB4E,IAAI,CAACC,SAAL,CACvDurJ,aADuD,CAEvD,KAAIxrJ,IAAI,CAACC,SAAL,CAAexG,IAAI,CAAC9H,KAApB,CAA2B,EAH7B,CAAN;AAKD;AACF;;AAED,SAAS85J,eAAT,CAAyBrwJ,IAAzB,EAA+BlK,IAA/B,EAAqC4yB,GAArC,EAA0C;AACxC,MAAI5yB,IAAI,CAACkH,MAAL,KAAgB0rB,GAApB,EAAyB;AACvB,UAAM,IAAI0jI,YAAJ,CACH,6BAA4BpsJ,IAAK,cAAa0oB,GAAI,iBAAgB5yB,IAAI,CAACkH,MAAO,EAD3E,GAAN;AAGD;AACF;;AAED,MAAMkzJ,eAAe,GAAGf,SAAS,CAAC,UAAD,EAAa,CAAC9vH,KAAD,EAAQ5F,IAAR,KAAiB;AAC7D,qBAAa7/B,MAAM,CAACiS,IAAP,CAAY4tB,IAAZ,CAAb;AAAA;AAAA,MAAKz5B,IAAL;;AACA,MAAIswJ,QAAQ,GAAG72H,IAAI,CAACz5B,IAAD,CAAnB;;AACA,MAAI,CAAClF,KAAK,CAACwD,OAAN,CAAcgyJ,QAAd,CAAL,EAA8B;AAC5BA,YAAQ,GAAG,CAACA,QAAD,CAAX;AACD;;AAED,MAAItwJ,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;AACnB,UAAM,IAAIosJ,YAAJ,CACH,qBAAoBpsJ,IAAK,6DADtB,CAAN;AAGD;;AAED,MAAIlK,IAAI,GAAGw6J,QAAX,CAb6D,CAc7D;;AACA,MAAItwJ,IAAI,KAAK,YAAb,EAA2B;AACzBlK,QAAI,GAAGw6J,QAAQ,CAACv2J,GAAT,CAAaoO,GAAG,IAAI2nJ,WAAW,CAACzwH,KAAD,EAAQl3B,GAAR,CAA/B,CAAP;AACD;;AAED,UAAQnI,IAAR;AACE;AACA,SAAK,MAAL;AAAa;AACXkvJ,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;;AACA,wBAAak5J,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,EAAc,CAAC,OAAD,CAAd,CAArB;AAAA;AAAA,YAAKy6J,IAAL;;AACA,eAAOvD,KAAK,CAAE,OAAMuD,IAAK,GAAb,EAAiBz6J,IAAI,CAAC,CAAD,CAAJ,CAAQqd,IAAzB,CAAZ;AACD;;AAED,SAAK,UAAL;AAAiB;AACf,yBAAa67I,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,EAAc,CAAC,OAAD,CAAd,CAArB;AAAA;AAAA,YAAKy6J,IAAL;;AACA,YAAI1yB,KAAK,GAAGx+F,KAAK,CAACmxH,MAAN,GACR,cAAcC,cAAc,CAACpxH,KAAD,EAAQA,KAAK,CAACmxH,MAAd,CADpB,GAER,EAFJ;AAIA,eAAOxD,KAAK,CACT,QAAOuD,IAAK,WAAU1yB,KAAM,qDADnB,EAEV/nI,IAAI,CAAC,CAAD,CAAJ,CAAQqd,IAFE,CAAZ;AAID;;AAED,SAAK,QAAL;AAAe;AACb+7I,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;;AACA,yBAAak5J,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,CAArB;AAAA;AAAA,YAAKy6J,IAAL;;AACA,eAAOvD,KAAK,CAAE,SAAQuD,IAAK,GAAf,EAAmB,SAAnB,CAAZ;AACD;AAED;;AACA,SAAK,SAAL;AAAgB;AACdrB,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,EAAU,CAAV,CAAjB;;AACA,yBAAyBk5J,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,EAAc,CAC7C,QAD6C,EAE7C,SAF6C,EAG7C,SAH6C,CAAd,CAAjC;AAAA;AAAA,YAAKy6J,IAAL;AAAA,YAAWG,IAAX;AAAA,YAAiBC,IAAjB;;AAKA,eAAO3D,KAAK,CAAE,UAASuD,IAAK,KAAIG,IAAK,KAAIC,IAAK,GAAlC,EAAsC,QAAtC,CAAZ;AACD;;AACD,SAAK,QAAL;AAAe;AACbzB,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;;AACA,yBAAak5J,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,EAAc,CAAC,QAAD,CAAd,CAArB;AAAA;AAAA,YAAKy6J,IAAL;;AACA,eAAOvD,KAAK,CAAE,SAAQuD,IAAK,GAAf,EAAmB,QAAnB,CAAZ;AACD;AAED;;AACA,SAAK,MAAL;AAAa;AACXrB,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;;AACA,0BAAak5J,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,EAAc,CAAC,OAAD,CAAd,CAArB;AAAA;AAAA,YAAKy6J,IAAL;;AACA,eAAOvD,KAAK,CAAE,KAAIh3I,GAAG,CAACqpB,KAAD,EAAQvpC,IAAI,CAAC,CAAD,CAAZ,CAAiB,GAA1B,EAA8BA,IAAI,CAAC,CAAD,CAAJ,CAAQqd,IAAtC,CAAZ;AACD;;AACD,SAAK,MAAL;AAAa;AACX+7I,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;;AACA,0BAAak5J,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,EAAc,CAAC,OAAD,CAAd,CAArB;AAAA;AAAA,YAAKy6J,IAAL;;AACA,eAAOvD,KAAK,CAAE,OAAMh3I,GAAG,CAACqpB,KAAD,EAAQvpC,IAAI,CAAC,CAAD,CAAZ,CAAiB,GAA5B,EAAgCA,IAAI,CAAC,CAAD,CAAJ,CAAQqd,IAAxC,CAAZ;AACD;;AACD,SAAK,OAAL;AAAc;AACZ+7I,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;;AACA,0BAAmBk5J,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,EAAc,CAAC,SAAD,EAAY,SAAZ,CAAd,CAA3B;AAAA;AAAA,YAAKy6J,IAAL;AAAA,YAAWG,IAAX;;AACA,eAAO1D,KAAK,CACT,IAAGh3I,GAAG,CAACqpB,KAAD,EAAQvpC,IAAI,CAAC,CAAD,CAAZ,CAAiB,MAAKkgB,GAAG,CAACqpB,KAAD,EAAQvpC,IAAI,CAAC,CAAD,CAAZ,CAAiB,GADvC,EAEVA,IAAI,CAAC,CAAD,CAAJ,CAAQqd,IAFE,CAAZ;AAID;AAED;;AACA,SAAK,QAAL;AAAe;AACb+7I,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;AACA,eAAO+4J,SAAS,CAACxvH,KAAD,EAAQvpC,IAAI,CAAC,CAAD,CAAZ,EAAiB,YAAjB,CAAhB;AACD;;AACD,SAAK,OAAL;AAAc;AACZo5J,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;AACA,eAAO+4J,SAAS,CAACxvH,KAAD,EAAQvpC,IAAI,CAAC,CAAD,CAAZ,EAAiB,WAAjB,CAAhB;AACD;AAED;;AACA,SAAK,YAAL;AACEo5J,uBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;AACA,UAAI86J,KAAK,GAAGC,iBAAiB,CAACxxH,KAAD,EAAQvpC,IAAI,CAAC,CAAD,CAAZ,CAA7B;AACA,aAAOk3J,KAAK,CAAC4D,KAAK,CAAC74I,IAAN,CAAW,OAAX,CAAD,EAAsB,SAAtB,CAAZ;;AAEF,SAAK,SAAL;AACEm3I,uBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;;AACA,wBAAak5J,QAAQ,CAAC3vH,KAAD,EAAQvpC,IAAR,EAAc,CAAC,QAAD,CAAd,CAArB;AAAA;AAAA,UAAKy6J,IAAL;;AACA,aAAOvD,KAAK,CAAE,GAAEuD,IAAK,iBAAT,EAA2Bz6J,IAAI,CAAC,CAAD,CAAJ,CAAQqd,IAAnC,CAAZ;;AAEF,SAAK,UAAL;AAAiB;AACf+7I,yBAAiB,CAACp5J,IAAD,EAAO,CAAP,CAAjB;;AACA,YAAI,CAACA,IAAI,CAAC,CAAD,CAAJ,CAAQm3J,OAAb,EAAsB;AACpB,gBAAM,IAAIb,YAAJ,CAAiB,gCAAjB,CAAN;AACD;;AACD,eAAOt2J,IAAI,CAAC,CAAD,CAAX;AACD;;AACD;AACE,YAAM,IAAIs2J,YAAJ,CAAkB,qBAAoBpsJ,IAAK,EAA3C,CAAN;AA3FJ;AA6FD,CAhHgC,CAAjC;AAkHA,MAAM8wJ,SAAS,GAAG3B,SAAS,CAAC,IAAD,EAAO,CAAC9vH,KAAD,EAAQowH,QAAR,EAAkBC,MAAlB,KAA6B;AAC7D,MAAMvM,UAAN,GAAgCuM,MAAhC,CAAMvM,UAAN;AAAA,MAAqB4N,MAArB,4BAAgCrB,MAAhC;;AACA,sBAAW91J,MAAM,CAACiS,IAAP,CAAYklJ,MAAZ,CAAX;AAAA;AAAA,MAAKrZ,EAAL;;AAEA,MAAIsZ,GAAG,GAAGlB,WAAW,CAACzwH,KAAD,EAAQqwH,MAAM,CAAChY,EAAD,CAAd,CAArB;AAEA,MAAIuZ,GAAJ;;AACA,MAAI9N,UAAJ,EAAgB;AACd8N,OAAG,GAAGf,eAAe,iCACd7wH,KADc;AACP0wH,mBAAa,EAAEN;AADR,QAEnB,OAAOtM,UAAP,KAAsB,QAAtB,GAAiC;AAAE,OAACA,UAAD,GAAc;AAAhB,KAAjC,GAAyDA,UAFtC,CAArB;AAID,GALD,MAKO;AACL8N,OAAG,GAAGnB,WAAW,CAACzwH,KAAD,EAAQ,MAAMowH,QAAd,CAAjB;AACD;;AAED,UAAQ/X,EAAR;AACE,SAAK,MAAL;AAAa;AACX,0BAAoBsX,QAAQ,CAAC3vH,KAAD,EAAQ,CAAC4xH,GAAD,EAAMD,GAAN,CAAR,EAAoB,CAAC,IAAD,EAAOC,GAAG,CAAC99I,IAAX,CAApB,CAA5B;AAAA;AAAA,YAAK+9I,IAAL;AAAA,YAAWC,KAAX;;AACA,eAAQ,GAAED,IAAK,OAAMC,KAAM,EAA3B;AACD;;AACD,SAAK,MAAL;AAAa;AACX,0BAAoBnC,QAAQ,CAAC3vH,KAAD,EAAQ,CAAC4xH,GAAD,EAAMD,GAAN,CAAR,EAAoB,CAAC,IAAD,EAAOC,GAAG,CAAC99I,IAAX,CAApB,CAA5B;AAAA;AAAA,YAAK+9I,IAAL;AAAA,YAAWC,KAAX;;AACA,eAAQ,GAAED,IAAK,OAAMC,KAAM,EAA3B;AACD;;AACD,SAAK,KAAL;AAAY;AACV,0BAAoBnC,QAAQ,CAAC3vH,KAAD,EAAQ,CAAC4xH,GAAD,EAAMD,GAAN,CAAR,EAAoB,CAAC,IAAD,EAAOC,GAAG,CAAC99I,IAAX,CAApB,CAA5B;AAAA;AAAA,YAAK+9I,IAAL;AAAA,YAAWC,KAAX;;AACA,eAAQ,GAAED,IAAK,MAAKC,KAAM,EAA1B;AACD;;AACD,SAAK,KAAL;AAAY;AACV,0BAAoBnC,QAAQ,CAAC3vH,KAAD,EAAQ,CAAC4xH,GAAD,EAAMD,GAAN,CAAR,EAAoB,CAAC,IAAD,EAAOC,GAAG,CAAC99I,IAAX,CAApB,CAA5B;AAAA;AAAA,YAAK+9I,IAAL;AAAA,YAAWC,KAAX;;AACA,eAAQ,GAAED,IAAK,MAAKC,KAAM,EAA1B;AACD;;AACD,SAAK,KAAL;AAAY;AACV,YAAItC,SAAS,CAACxvH,KAAD,EAAQ2xH,GAAR,EAAaC,GAAG,CAAC99I,IAAjB,CAAT,CAAgCA,IAAhC,KAAyC,MAA7C,EAAqD;AACnD,iBAAQ,GAAE6C,GAAG,CAACqpB,KAAD,EAAQ4xH,GAAR,CAAa,UAA1B;AACD;;AAED,0BAAoBjC,QAAQ,CAAC3vH,KAAD,EAAQ,CAAC4xH,GAAD,EAAMD,GAAN,CAAR,EAAoB,CAAC,IAAD,EAAOC,GAAG,CAAC99I,IAAX,CAApB,CAA5B;AAAA;AAAA,YAAK+9I,IAAL;AAAA,YAAWC,KAAX;;AAEA,YAAIH,GAAG,CAAC79I,IAAJ,KAAa,OAAjB,EAA0B;AACxB,cAAIq9I,MAAM,GAAGnxH,KAAK,CAAC4wH,eAAN,CAAsBl2J,GAAtB,CAA0BujF,KAAK,IAAI;AAC9C,mBAAOA,KAAK,KAAK0zE,GAAV,IAAiB1zE,KAAK,KAAK2zE,GAA3B,GAAiC,CAAC3zE,KAAD,oBAAaA,KAAb,EAAjC,GAAyDA,KAAhE;AACD,WAFY,CAAb;AAGAj+C,eAAK,CAAC4wH,eAAN,GAAwB,GAAGj8H,MAAH,CAAU6F,KAAV,CAAgB,EAAhB,EAAoB22H,MAApB,CAAxB;AAEA,iBAAQ;AAChB,iBAAiBU,IAAK,iBAAgBC,KAAM;AAC5C,iBAAiBD,IAAK,MAAKC,KAAM;AACjC,YAHQ;AAID;;AAED,eAAQ,GAAED,IAAK,MAAKC,KAAM,EAA1B;AACD;;AACD,SAAK,QAAL;AAAe;AACb,0BAAoBnC,QAAQ,CAAC3vH,KAAD,EAAQ,CAAC4xH,GAAD,EAAMD,GAAN,CAAR,EAAoB,CAAC,IAAD,EAAO,OAAP,CAApB,CAA5B;AAAA;AAAA,YAAKE,IAAL;AAAA,YAAWC,KAAX,kBADa,CAEb;;;AACA,YAAI1L,GAAG,GAAG,CAAC,GAAG,IAAIp0I,GAAJ,CAAQ8/I,KAAR,CAAJ,CAAV;AACA,eAAQ,GAAED,IAAK,OAAR,GAAiBzL,GAAG,CAAC1rJ,GAAJ,CAAQskI,EAAE,IAAK,IAAGA,EAAG,GAArB,EAAyBtmH,IAAzB,CAA8B,GAA9B,CAAjB,GAAsD,GAA7D;AACD;;AACD,SAAK,OAAL;AAAc;AACZ,0BAAoBi3I,QAAQ,CAAC3vH,KAAD,EAAQ,CAAC4xH,GAAD,EAAMD,GAAN,CAAR,EAAoB,CAAC,QAAD,EAAW,QAAX,CAApB,CAA5B;AAAA;AAAA,YAAKE,IAAL;AAAA,YAAWC,KAAX;;AACA,eAAQ,GAAED,IAAK,SAAQC,KAAM,EAA7B;AACD;;AACD;AACE,YAAM,IAAI/E,YAAJ,CAAkB,qBAAoB1U,EAAG,EAAzC,CAAN;AAjDJ;AAmDD,CAnE0B,CAA3B;;AAqEA,SAASmZ,iBAAT,CAA2BxxH,KAA3B,EAAkCuxH,KAAlC,EAAyC;AACvC,MAAI,CAAC91J,KAAK,CAACwD,OAAN,CAAcsyJ,KAAd,CAAL,EAA2B;AACzB;AACA;AACAA,SAAK,GAAGh3J,MAAM,CAAC4kB,OAAP,CAAeoyI,KAAf,EAAsB72J,GAAtB,CAA0B2/I,IAAI,IAAI;AACxC,aAAO;AAAE,SAACA,IAAI,CAAC,CAAD,CAAL,GAAWA,IAAI,CAAC,CAAD;AAAjB,OAAP;AACD,KAFO,CAAR;AAGD;;AAED,SAAOkX,KAAK,CAACnzJ,MAAN,CAAaw9C,OAAb,EAAsBhkD,MAAtB,CAA6B,CAACw1H,GAAD,EAAM2kC,QAAN,KAAmB;AACrD,QAAIC,QAAQ,GAAGz3J,MAAM,CAAC4kB,OAAP,CAAe4yI,QAAf,EACZr3J,GADY,CACR,CAAC,CAACimC,KAAD,EAAQ05G,IAAR,CAAD,KAAmB;AACtB;AACA;AACA,UAAI15G,KAAK,KAAK,MAAd,EAAsB;AACpB,YAAI,CAAC05G,IAAL,EAAW;AACT,iBAAO,IAAP;AACD;;AACD,eAAO4X,UAAU,CAACjyH,KAAD,EAAQq6G,IAAR,CAAjB;AACD,OALD,MAKO,IAAI15G,KAAK,KAAK,KAAd,EAAqB;AAC1B,YAAI,CAAC05G,IAAL,EAAW;AACT,iBAAO,IAAP;AACD;;AACD,eAAO6X,SAAS,CAAClyH,KAAD,EAAQq6G,IAAR,CAAhB;AACD;;AAED,UACE,OAAOA,IAAP,KAAgB,QAAhB,IACA,OAAOA,IAAP,KAAgB,QADhB,IAEA,OAAOA,IAAP,KAAgB,SAFhB,IAGAA,IAAI,YAAYv4I,IAHhB,IAIAu4I,IAAI,IAAI,IALV,EAME;AACA,eAAOoX,SAAS,CAACzxH,KAAD,EAAQW,KAAR,EAAe;AAAEojH,aAAG,EAAE1J;AAAP,SAAf,CAAhB;AACD;;AAED,UAAI5+I,KAAK,CAACwD,OAAN,CAAco7I,IAAd,CAAJ,EAAyB;AACvB;AACA,eAAOA,IAAI,CAAC3/I,GAAL,CAASuxB,CAAC,IAAIwlI,SAAS,CAACzxH,KAAD,EAAQW,KAAR,EAAe1U,CAAf,CAAvB,EAA0CvT,IAA1C,CAA+C,OAA/C,CAAP;AACD;;AACD,aAAO+4I,SAAS,CAACzxH,KAAD,EAAQW,KAAR,EAAe05G,IAAf,CAAhB;AACD,KA/BY,EAgCZj8I,MAhCY,CAgCLw9C,OAhCK,CAAf;AAkCA,WAAO,CAAC,GAAGwxE,GAAJ,EAAS,GAAG4kC,QAAZ,CAAP;AACD,GApCM,EAoCJ,EApCI,CAAP;AAqCD;;AAED,SAASE,SAAT,CAAmBlyH,KAAnB,EAA0BuxH,KAA1B,EAAiC;AAC/B;AACA,MAAI,CAACA,KAAL,EAAY;AACV,WAAO,GAAP;AACD;;AACD,MAAInkC,GAAG,GAAGokC,iBAAiB,CAACxxH,KAAD,EAAQuxH,KAAR,CAA3B;;AACA,MAAInkC,GAAG,CAACzvH,MAAJ,KAAe,CAAnB,EAAsB;AACpB,WAAO,GAAP;AACD;;AACD,SAAO,MAAMyvH,GAAG,CAAC10G,IAAJ,CAAS,SAAT,CAAN,GAA4B,GAAnC;AACD;;AAED,SAASu5I,UAAT,CAAoBjyH,KAApB,EAA2BuxH,KAA3B,EAAkC;AAChC;AACA,MAAI,CAACA,KAAL,EAAY;AACV,WAAO,GAAP;AACD;;AACD,MAAInkC,GAAG,GAAGokC,iBAAiB,CAACxxH,KAAD,EAAQuxH,KAAR,CAA3B;;AACA,MAAInkC,GAAG,CAACzvH,MAAJ,KAAe,CAAnB,EAAsB;AACpB,WAAO,GAAP;AACD;;AACD,SAAO,MAAMyvH,GAAG,CAAC10G,IAAJ,CAAS,UAAT,CAAN,GAA6B,GAApC;AACD;;AAED,MAAMy5I,YAAY,GAAGrC,SAAS,CAAC,QAAD,EAAW,CAAC9vH,KAAD,EAAQuxH,KAAR,KAAkB;AACzD,SAAOU,UAAU,CAACjyH,KAAD,EAAQuxH,KAAR,CAAjB;AACD,CAF6B,CAA9B;;AAIA,SAASa,YAAT,CAAsBpyH,KAAtB,EAA6BqyH,QAA7B,EAAuCC,oBAAvC,EAA6D;AAC3D,MAAIC,KAAK,GAAG,EAAZ;AACAvyH,OAAK,CAACgnG,KAAN,CAAYn9H,OAAZ,CAAoB,CAACwwB,IAAD,EAAO1I,IAAP,KAAgB;AAClC,2BAMIqO,KAAK,CAACgnG,KAAN,CAAYptI,GAAZ,CAAgB+3B,IAAhB,CANJ;AAAA,QACEm7H,SADF,oBACEA,SADF;AAAA,QAEEO,OAFF,oBAEEA,OAFF;AAAA,QAGEiB,SAHF,oBAGEA,SAHF;AAAA,QAIEJ,SAJF,oBAIEA,SAJF;AAAA,QAKEa,SALF,oBAKEA,SALF;;AAQA,QAAI9kI,EAAE,GAAI,GAAEojI,OAAQ,SAAQgF,QAAQ,CAACnE,SAAD,CAAY,IAAGR,UAAU,CAACY,SAAD,CAAY,EAAzE;AAEA,QAAI3K,OAAO,GAAG2O,oBAAoB,CAACxF,SAAD,CAAlC;;AACA,QAAInJ,OAAO,CAAChmJ,MAAR,GAAiB,CAArB,EAAwB;AACtBssB,QAAE,IACA,UACAgoI,UAAU,iCACHjyH,KADG;AACIyuH,yBAAiB,EAAE3B,SADvB;AACkC8B,uBAAe,EAAEvB;AADnD,UAER1J,OAFQ,CAFZ;AAMD;;AAED4O,SAAK,CAAC/1J,IAAN,CACG,aACCuyJ,SAAS,GAAGjC,SAAH,GAAeuF,QAAQ,CAACvF,SAAD,EAAY,IAAZ,CACjC,IAAGO,OAAQ,OAAMF,YAAY,CAACntH,KAAK,CAACotH,MAAP,EAAeN,SAAf,EAA0BO,OAA1B,EAAmCpjI,EAAnC,CAAuC,EAHvE;;AAMA,QAAI+V,KAAK,CAACwyH,YAAN,CAAmB7sJ,OAAnB,CAA2BmnJ,SAA3B,MAA0C,CAAC,CAA/C,EAAkD;AAChD9sH,WAAK,CAACwyH,YAAN,CAAmBh2J,IAAnB,CAAwBswJ,SAAxB;AACD;AACF,GA9BD;AA+BA,SAAOyF,KAAK,CAAC75I,IAAN,CAAW,IAAX,CAAP;AACD;;AAED,SAAS+5I,UAAT,CAAoBzyH,KAApB,EAA2B09F,IAA3B,EAAiC;AAC/B,MAAI/rG,IAAJ;AACA,MAAI+8H,QAAJ;;AACA,MAAIhxB,IAAI,KAAK,GAAb,EAAkB;AAChBgxB,YAAQ,GAAG;AACT5B,eAAS,EAAE9sH,KAAK,CAACyuH,iBADR;AAETpB,aAAO,EAAErtH,KAAK,CAAC4uH;AAFN,KAAX;AAID,GALD,MAKO,IAAIlxB,IAAI,CAAC5mH,KAAL,CAAW,OAAX,CAAJ,EAAyB;AAC9B,QAAIpL,MAAM,GAAG8hJ,OAAO,CAAC9vB,IAAD,CAApB;AACA/rG,QAAI,GAAGjmB,MAAM,CAACimB,IAAd;AACA+8H,YAAQ,GAAGH,WAAW,CAACvuH,KAAD,EAAQt0B,MAAM,CAACimB,IAAf,CAAtB;AACD;;AAED,MAAI+sG,KAAK,GAAG1+F,KAAK,CAACotH,MAAN,CAAasB,QAAQ,CAAC5B,SAAtB,CAAZ;;AACA,MAAIpuB,KAAK,IAAI,IAAb,EAAmB;AACjB,UAAM,IAAIviI,KAAJ,CAAW,UAASuyJ,QAAQ,CAAC5B,SAAU,kBAAvC,CAAN;AACD;;AAED,SAAOvyJ,MAAM,CAACiS,IAAP,CAAYkyH,KAAZ,EAAmBhkI,GAAnB,CAAuBimC,KAAK,IAAKhP,IAAI,GAAI,GAAEA,IAAK,IAAGgP,KAAM,EAApB,GAAwBA,KAA7D,CAAP;AACD;;AAED,MAAM+xH,aAAa,GAAG5C,SAAS,CAC7B,QAD6B,EAE7B,CAAC9vH,KAAD,EAAQ49F,KAAR,EAAe+0B,WAAf,EAA4BxB,MAA5B,KAAuC;AACrC;AACA,MAAI,CAACwB,WAAD,IAAgB,CAAC/0B,KAAK,CAACxuH,QAAN,CAAe,IAAf,CAAjB,IAAyC,CAACwuH,KAAK,CAACxuH,QAAN,CAAe,GAAf,CAA9C,EAAmE;AACjEwuH,SAAK,GAAGA,KAAK,CAACjpG,MAAN,CAAa,CAAC,IAAD,CAAb,CAAR;AACD;;AAED,MAAImpG,MAAM,GAAGF,KAAK,CAACljI,GAAN,CAAUgjI,IAAI,IAAI;AAC7B,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,UAAIA,IAAI,CAAC/3H,OAAL,CAAa,GAAb,MAAsB,CAAC,CAA3B,EAA8B;AAC5B,YAAIq6H,MAAM,GAAGyyB,UAAU,CAACzyH,KAAD,EAAQ09F,IAAR,CAAvB;AAEA,eAAOsC,MAAM,CACVtlI,GADI,CACAimC,KAAK,IAAI;AACZ,cAAIqxH,QAAQ,GAAGvB,WAAW,CAACzwH,KAAD,EAAQ,MAAMW,KAAd,CAA1B;AACAX,eAAK,CAAC4yH,WAAN,CAAkBz1J,GAAlB,CAAsBwjC,KAAtB,EAA6BqxH,QAAQ,CAACl+I,IAAtC;AACA,iBAAOk+I,QAAQ,CAAC96J,KAAT,GAAiB,MAAjB,GAA0Bw2J,UAAU,CAAC/sH,KAAD,CAA3C;AACD,SALI,EAMJjoB,IANI,CAMC,IAND,CAAP;AAOD;;AAED,UAAIs5I,QAAQ,GAAGvB,WAAW,CAACzwH,KAAD,EAAQ,MAAM09F,IAAd,CAA1B;AACA19F,WAAK,CAAC4yH,WAAN,CAAkBz1J,GAAlB,CAAsBugI,IAAtB,EAA4Bs0B,QAAQ,CAACl+I,IAArC;AACA,aAAOk+I,QAAQ,CAAC96J,KAAT,GAAiB,MAAjB,GAA0Bw2J,UAAU,CAAChwB,IAAD,CAA3C;AACD;;AAED,0CAAoBnjI,MAAM,CAAC4kB,OAAP,CAAeu+G,IAAf,EAAqB,CAArB,CAApB;AAAA,QAAK/8H,IAAL;AAAA,QAAWzJ,KAAX;;AACA,QAAIyJ,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;AACnBq/B,WAAK,CAAC+vH,YAAN,CAAmBvzJ,IAAnB,CAAwB;AAAEsX,YAAI,EAAE,OAAR;AAAiB5c,aAAK,EAAEwmI;AAAxB,OAAxB;AACA,YAAM,IAAIqvB,YAAJ,CACH,kBAAiBpsJ,IAAK,yEADnB,CAAN;AAGD;;AAED,QAAI,OAAOzJ,KAAP,KAAiB,QAArB,EAA+B;AAC7B,UAAI86J,QAAQ,GAAGvB,WAAW,CAACzwH,KAAD,EAAQ,MAAM9oC,KAAd,CAA1B;AACA8oC,WAAK,CAAC4yH,WAAN,CAAkBz1J,GAAlB,CAAsBwD,IAAtB,EAA4BqxJ,QAAQ,CAACl+I,IAArC;AACA,aAAQ,GAAEk+I,QAAQ,CAAC96J,KAAM,OAAMw2J,UAAU,CAAC/sJ,IAAD,CAAO,EAAhD;AACD;;AAED,QAAIqxJ,QAAQ,GAAGnB,eAAe,iCAAM7wH,KAAN;AAAamxH;AAAb,QAAuBj6J,KAAvB,CAA9B;AACA8oC,SAAK,CAAC4yH,WAAN,CAAkBz1J,GAAlB,CAAsBwD,IAAtB,EAA4BqxJ,QAAQ,CAACl+I,IAArC;AACA,WAAOk+I,QAAQ,CAAC96J,KAAT,GAAkB,OAAMw2J,UAAU,CAAC/sJ,IAAD,CAAO,EAAhD;AACD,GApCY,CAAb;AAsCA,SAAOm9H,MAAM,CAACplH,IAAP,CAAY,IAAZ,CAAP;AACD,CA/C4B,CAA/B;AAkDA,MAAMm6I,cAAc,GAAG/C,SAAS,CAAC,SAAD,EAAY,CAAC9vH,KAAD,EAAQ49F,KAAR,KAAkB;AAC5D,MAAIK,OAAO,GAAGL,KAAK,CAACljI,GAAN,CAAUgjI,IAAI,IAAI;AAC9B,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,aAAO+yB,WAAW,CAACzwH,KAAD,EAAQ,MAAM09F,IAAd,CAAX,CAA+BxmI,KAAtC;AACD;;AAED,WAAO25J,eAAe,CAAC7wH,KAAD,EAAQ09F,IAAR,CAAf,CAA6BxmI,KAApC;AACD,GANa,CAAd;AAQA,SAAO+mI,OAAO,CAACvlH,IAAR,CAAa,IAAb,CAAP;AACD,CAV+B,CAAhC;AAYA,MAAM04I,cAAc,GAAGtB,SAAS,CAAC,SAAD,EAAY,CAAC9vH,KAAD,EAAQ49F,KAAR,KAAkB;AAC5D,MAAIM,OAAO,GAAGN,KAAK,CAACljI,GAAN,CAAUgjI,IAAI,IAAI;AAC9B,QAAIs0B,QAAJ;AACA,QAAI19H,GAAG,GAAG,IAAV;;AAEA,QAAI,OAAOopG,IAAP,KAAgB,QAApB,EAA8B;AAC5Bs0B,cAAQ,GAAGvB,WAAW,CAACzwH,KAAD,EAAQ,MAAM09F,IAAd,CAAX,CAA+BxmI,KAA1C;AACD,KAFD,MAEO;AACL,UAAIioB,OAAO,GAAG5kB,MAAM,CAAC4kB,OAAP,CAAeu+G,IAAf,CAAd;AACA,UAAI5rH,KAAK,GAAGqN,OAAO,CAAC,CAAD,CAAnB,CAFK,CAIL;;AACA,UAAIA,OAAO,CAACxhB,MAAR,KAAmB,CAAnB,IAAwBmU,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,MAAgB,GAA5C,EAAiD;AAC/CwiB,WAAG,GAAGxiB,KAAK,CAAC,CAAD,CAAX;AACAkgJ,gBAAQ,GAAGvB,WAAW,CAACzwH,KAAD,EAAQ,MAAMluB,KAAK,CAAC,CAAD,CAAnB,CAAX,CAAmC5a,KAA9C;AACD,OAHD,MAGO;AACL;AACA,YAAM47J,IAAN,GAAwBp1B,IAAxB,CAAMo1B,IAAN;AAAA,YAAe14H,IAAf,4BAAwBsjG,IAAxB;;AACAppG,WAAG,GAAGw+H,IAAN;AACAd,gBAAQ,GAAGnB,eAAe,CAAC7wH,KAAD,EAAQ5F,IAAR,CAAf,CAA6BljC,KAAxC;AACD;AACF;;AAED,QAAIo9B,GAAG,IAAI,IAAX,EAAiB;AACf,UAAIA,GAAG,KAAK,MAAR,IAAkBA,GAAG,KAAK,KAA9B,EAAqC;AACnC,cAAM,IAAIy4H,YAAJ,CAAiB,8BAA8Bz4H,GAA/C,CAAN;AACD;;AACD,aAAQ,GAAE09H,QAAS,IAAG19H,GAAI,EAA1B;AACD;;AACD,WAAO09H,QAAP;AACD,GA7Ba,CAAd;AA+BA,SAAO9zB,OAAO,CAACxlH,IAAR,CAAa,IAAb,CAAP;AACD,CAjC+B,CAAhC;AAmCA,IAAIq6I,mBAAmB,GAAG,CAAC,MAAD,EAAS,QAAT,CAA1B;;AACA,SAASC,mBAAT,CAA6Bt1B,IAA7B,EAAmC;AACjC,MAAI,OAAOA,IAAP,KAAgB,QAAhB,IAA4BjiI,KAAK,CAACwD,OAAN,CAAcy+H,IAAd,CAAhC,EAAqD;AACnD,WAAO,KAAP;AACD;;AAED,yCAAuBnjI,MAAM,CAAC4kB,OAAP,CAAeu+G,IAAf,EAAqB,CAArB,CAAvB;AAAA,MAAK/8H,IAAL;AAAA,MAAWswJ,QAAX;;AACA,MAAI,CAACx1J,KAAK,CAACwD,OAAN,CAAcgyJ,QAAd,CAAL,EAA8B;AAC5BA,YAAQ,GAAG,CAACA,QAAD,CAAX;AACD;;AAED,MAAI8B,mBAAmB,CAACptJ,OAApB,CAA4BhF,IAA5B,MAAsC,CAAC,CAA3C,EAA8C;AAC5C,WAAO,IAAP;AACD;;AAED,SAAOswJ,QAAQ,CAAC59I,IAAT,CAAc4/I,EAAE,IAAID,mBAAmB,CAACC,EAAD,CAAvC,CAAP;AACD;;AAEM,SAASC,gBAAT,CAA0BC,UAA1B,EAAsC;AAC3C;AACA;AACA;AAEA,MAAIA,UAAU,CAAC/1B,gBAAX,CAA4Bz/H,MAA5B,GAAqC,CAAzC,EAA4C;AAC1C,WAAO,IAAP;AACD;;AAED,SAAOw1J,UAAU,CAACh2B,iBAAX,CAA6B9pH,IAA7B,CAAkCqqH,IAAI,IAAI;AAC/C,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,6CAAoBnjI,MAAM,CAAC4kB,OAAP,CAAeu+G,IAAf,EAAqB,CAArB,CAApB;AAAA,UAAK/8H,IAAL;AAAA,UAAWzJ,KAAX;;AACA,aAAO87J,mBAAmB,CAAC97J,KAAD,CAA1B;AACD;;AACD,WAAO,KAAP;AACD,GANM,CAAP;AAOD;AAEM,SAASk8J,YAAT,CAAsBD,UAAtB,EAAkC/F,MAAlC,EAA0CvL,YAAY,GAAG,EAAzD,EAA6D;AAClE,MAAMrkB,QAAN,GAA+D21B,UAA/D,CAAM31B,QAAN;AAAA,8BAA+D21B,UAA/D,CAAgB11B,YAAhB;AAAA,MAAgBA,YAAhB,sCAA+B,IAA/B;AAAA,MAAqCW,YAArC,GAA+D+0B,UAA/D,CAAqC/0B,YAArC;AAAA,MAAmDb,OAAnD,GAA+D41B,UAA/D,CAAmD51B,OAAnD;AAEA,8BAIIskB,YAJJ,CACEwR,UADF;AAAA,MACEA,UADF,sCACe,EADf;AAAA,8BAIIxR,YAJJ,CAEEyR,YAFF;AAAA,MAEEA,YAFF,sCAEiB3yJ,IAAI,IAAI,EAFzB;AAAA,8BAIIkhJ,YAJJ,CAGE0R,cAHF;AAAA,MAGEA,cAHF,sCAGmBJ,UAAU,IAAIA,UAHjC;;AAMA,MAAIb,oBAAoB,GAAG3xJ,IAAI,IAAI;AACjC,QAAIgjJ,OAAO,GAAG2P,YAAY,CAAC3yJ,IAAD,CAA1B,CADiC,CAEjC;;AACA,SAAK,IAAIvC,MAAT,IAAmBulJ,OAAnB,EAA4B;AAC1B,UAAIloJ,KAAK,CAACwD,OAAN,CAAcb,MAAd,CAAJ,EAA2B;AACzB,cAAM,IAAI2uJ,YAAJ,CACJ,kEADI,CAAN;AAGD;;AACD,UAAIxyJ,MAAM,CAACiS,IAAP,CAAYpO,MAAZ,EAAoB,CAApB,EAAuBuH,OAAvB,CAA+B,GAA/B,MAAwC,CAAC,CAA7C,EAAgD;AAC9C,cAAM,IAAIonJ,YAAJ,CACJ,iEADI,CAAN;AAGD;AACF;;AACD,WAAOpJ,OAAP;AACD,GAhBD;;AAkBA,MAAI0O,QAAQ,GAAG,CAAC1xJ,IAAD,EAAO6yJ,MAAP,KAAkB;AAC/B,QAAIC,IAAI,GACN,OAAOJ,UAAP,KAAsB,UAAtB,GACIA,UAAU,CAAC1yJ,IAAD,EAAO;AAAE68H,cAAF;AAAYg2B,YAAZ;AAAoBp1B;AAApB,KAAP,CADd,GAEIi1B,UAAU,CAAC1yJ,IAAD,CAHhB;AAIA,WAAO8yJ,IAAI,IAAI9yJ,IAAf;AACD,GAND;;AAQA,MAAImsJ,SAAS,GAAGqG,UAAU,CAACz0B,KAA3B;;AAEA,wBAQI60B,cAAc,CAACJ,UAAD,CARlB;AAAA,MACEj2B,iBADF,mBACEA,iBADF;AAAA,MAEEC,iBAFF,mBAEEA,iBAFF;AAAA,MAGEC,gBAHF,mBAGEA,gBAHF;AAAA,MAIEC,gBAJF,mBAIEA,gBAJF;AAAA,MAKE/yF,KALF,mBAKEA,KALF;AAAA,MAME3lB,MANF,mBAMEA,MANF;AAAA,MAOE24G,WAPF,mBAOEA,WAPF;;AAUA,MAAIQ,MAAM,GAAG,EAAb;AACA,MAAI+oB,KAAK,GAAG,EAAZ;AACA,MAAI0L,KAAK,GAAG,EAAZ;AACA,MAAIt0B,OAAO,GAAG,EAAd;AACA,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIw1B,WAAW,GAAG,EAAlB;AACA,MAAI1zH,KAAK,GAAG;AACVotH,UADU;AAEVqB,qBAAiB,EAAE3B,SAFT;AAGV8B,mBAAe,EAAEyD,QAAQ,CAACvF,SAAD,CAHf;AAIV9lB,SAAK,EAAE,IAAIx7H,GAAJ,EAJG;AAKVgnJ,gBAAY,EAAE,CAAC1F,SAAD,CALJ;AAMViD,gBAAY,EAAE,EANJ;AAOV6C,eAAW,EAAE,IAAIpnJ,GAAJ,EAPH;AAQViyH,gBARU;AASVmzB,mBAAe,EAAE;AATP,GAAZ;AAYAhE,UAAQ;;AAER,MAAI;AACF9uB,UAAM,GAAG40B,aAAa,CACpB1yH,KADoB,EAEpBm9F,iBAFoB,EAGpB+1B,gBAAgB,CAACC,UAAD,CAHI,EAIpB91B,gBAJoB,CAAtB;;AAOA,QAAIH,iBAAiB,CAACv/H,MAAlB,GAA2B,CAA/B,EAAkC;AAChC,UAAI+N,MAAM,GAAGymJ,YAAY,CAACnyH,KAAD,EAAQk9F,iBAAR,CAAzB;AACA2pB,WAAK,GAAG,WAAWn7I,MAAnB;AACD,KAHD,MAGO;AACLm7I,WAAK,GAAG,SAAR;AACD;;AAED,QAAI,CAACtpB,OAAL,EAAc;AACZ,UAAIomB,OAAO,GAAG2O,oBAAoB,CAACxF,SAAD,CAAlC;;AACA,UAAInJ,OAAO,CAAChmJ,MAAR,GAAiB,CAArB,EAAwB;AACtBkpJ,aAAK,IAAI,UAAUoL,UAAU,CAACjyH,KAAD,EAAQ2jH,OAAR,CAA7B;AACD;AACF;;AAED,QAAIvmB,gBAAgB,CAACz/H,MAAjB,GAA0B,CAA9B,EAAiC;AAC/B,UAAI+N,MAAM,GAAGmnJ,cAAc,CAAC7yH,KAAD,EAAQo9F,gBAAR,CAA3B;AACAa,aAAO,GAAG,cAAcvyH,MAAxB;AACD,KAzBC,CA2BF;;;AACA,QAAI2xH,gBAAgB,CAAC1/H,MAAjB,GAA0B,CAA9B,EAAiC;AAC/B,UAAI+N,MAAM,GAAG0lJ,cAAc,CAACpxH,KAAD,EAAQq9F,gBAAR,CAA3B;AACAa,aAAO,GAAG,cAAcxyH,MAAxB;AACD;;AAED,QAAIs0B,KAAK,CAACgnG,KAAN,CAAY1lH,IAAZ,GAAmB,CAAvB,EAA0B;AACxBixI,WAAK,GAAGH,YAAY,CAACpyH,KAAD,EAAQqyH,QAAR,EAAkBC,oBAAlB,CAApB;AACD;AACF,GApCD,CAoCE,OAAOrxI,CAAP,EAAU;AACV,QAAIA,CAAC,YAAY8rI,YAAjB,EAA+B;AAC7B,YAAMmD,eAAe,CAACjvI,CAAD,EAAI+e,KAAK,CAAC+vH,YAAV,CAArB;AACD;;AAED,UAAM9uI,CAAN;AACD;;AAED,MAAI0yI,SAAS,GAAG;AACd71B,UADc;AAEdpiI,QAAI,EAAE22J,QAAQ,CAACvF,SAAD,CAFA;AAGdyF,SAHc;AAId1L,SAJc;AAKd5oB,WALc;AAMdC,WANc;AAOd5zF,SAPc;AAQd3lB;AARc,GAAhB;AAWA,SAAO;AACLgvI,aADK;AAEL3zH;AAFK,GAAP;AAID;AAEM,SAAS4zH,qBAAT,CAA+BT,UAA/B,EAA2CnzH,KAA3C,EAAkD2zH,SAAlD,EAA6D;AAClE,MAAI91J,CAAC,GAAG81J,SAAR;AAEA,MAAI9M,KAAK,GAAGsM,UAAU,CAAC31B,QAAX,GACR3/H,CAAC,CAACgpJ,KADM,GAERsG,YAAY,CACVntH,KAAK,CAACotH,MADI,EAEVptH,KAAK,CAACyuH,iBAFI,EAGVzuH,KAAK,CAAC4uH,eAHI,EAIV/wJ,CAAC,CAACgpJ,KAJQ,CAFhB;AASA,SAAQ;AACV,aAAahpJ,CAAC,CAACigI,MAAO,SAAQjgI,CAAC,CAACnC,IAAK;AACrC,MAAMmC,CAAC,CAAC00J,KAAM;AACd,MAAM1L,KAAM;AACZ,MAAMhpJ,CAAC,CAACogI,OAAQ;AAChB,MAAMpgI,CAAC,CAACqgI,OAAQ;AAChB,MAAMrgI,CAAC,CAACysC,KAAF,IAAW,IAAX,GAAmB,SAAQzsC,CAAC,CAACysC,KAAM,EAAnC,GAAuC,EAAG;AAChD,MAAMzsC,CAAC,CAAC8mB,MAAF,IAAY,IAAZ,GAAoB,UAAS9mB,CAAC,CAAC8mB,MAAO,EAAtC,GAA0C,EAAG;AACnD,GARE;AASD;AAEM,SAASkvI,oBAAT,CAA8BV,UAA9B,EAA0C/F,MAA1C,EAAkDvL,YAAlD,EAAgE;AACrE,sBAA2BuR,YAAY,CAACD,UAAD,EAAa/F,MAAb,EAAqBvL,YAArB,CAAvC;AAAA,MAAM8R,SAAN,iBAAMA,SAAN;AAAA,MAAiB3zH,KAAjB,iBAAiBA,KAAjB;;AACA,SAAO;AAAE+xG,OAAG,EAAE6hB,qBAAqB,CAACT,UAAD,EAAanzH,KAAb,EAAoB2zH,SAApB,CAA5B;AAA4D3zH;AAA5D,GAAP;AACD;AAEM,SAAS8zH,WAAT,CAAqBX,UAArB,EAAiC;AACtC,SAAOU,oBAAoB,CAACV,UAAD,CAApB,CAAiCphB,GAAxC;AACD,C;;;;;;;;;;;;AC5mCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;CAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASgiB,UAAT,CAAoB/0J,IAApB,EAA0B4zJ,WAA1B,EAAuC;AACrC,OAAK,IAAIp8I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGxX,IAAI,CAACrB,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAIqE,IAAI,GAAG7b,IAAI,CAACwX,CAAD,CAAf;AACAjc,UAAM,CAACiS,IAAP,CAAYqO,IAAZ,EAAkBhR,OAAlB,CAA0BlJ,IAAI,IAAI;AAChCka,UAAI,CAACla,IAAD,CAAJ,GAAaqzJ,yEAAiB,CAACn5I,IAAI,CAACla,IAAD,CAAL,EAAaiyJ,WAAW,CAACh5J,GAAZ,CAAgB+G,IAAhB,CAAb,CAA9B;AACD,KAFD;AAGD;AACF;;AAEM,eAAe2oI,SAAf,CACL6pB,UADK,EAELnzH,KAFK,EAGL2zH,SAHK,EAIL3hB,MAJK,EAKL4gB,WALK,EAML;AACA,MAAI7gB,GAAG,GAAG6hB,uEAAqB,CAACT,UAAD,EAAanzH,KAAb,EAAoB2zH,SAApB,CAA/B;AACA,MAAI30J,IAAI,GAAG,MAAMmqI,uCAAA,CAAO4I,GAAP,EAAYC,MAAZ,CAAjB;AACA+hB,YAAU,CAAC/0J,IAAD,EAAO4zJ,WAAP,CAAV;AACA,SAAO5zJ,IAAP;AACD;AAEM,eAAei1J,gBAAf,CACLl2B,KADK,EAELm2B,MAFK,EAGLl0H,KAHK,EAIL;AAAEgyG,QAAM,GAAG,EAAX;AAAemiB,WAAS,GAAG;AAA3B,IAAkC,EAJ7B,EAKL;AACA,MAAIC,UAAU,GAAGp0H,KAAK,CAAC4wH,eAAN,CAAsBl2J,GAAtB,CAA0BujF,KAAK,IAAI;AAClD,QAAIt9E,IAAI,GAAGs9E,KAAK,CAAC0yE,SAAjB;;AACA,QAAI3e,MAAM,CAACrxI,IAAD,CAAN,KAAiBhK,SAArB,EAAgC;AAC9B,YAAM,IAAIwF,KAAJ,CAAW,aAAYwE,IAAK,wBAA5B,CAAN;AACD;;AACD,WAAO0zJ,wEAAgB,CAACriB,MAAM,CAACrxI,IAAD,CAAP,EAAes9E,KAAK,CAACoxE,SAArB,CAAvB;AACD,GANgB,CAAjB;AAQA,MAAIrwJ,IAAJ;;AACA,MAAIm1J,SAAS,CAACn0H,KAAK,CAACyuH,iBAAP,CAAb,EAAwC;AACtCzvJ,QAAI,GAAG,MAAMm1J,SAAS,CAACn0H,KAAK,CAACyuH,iBAAP,CAAT,CACXzuH,KADW,EAEX+9F,KAFW,EAGXm2B,MAHW,EAIXE,UAJW,EAKXp0H,KAAK,CAAC4yH,WALK,CAAb;AAOD,GARD,MAQO;AACL5zJ,QAAI,GAAG,MAAMsqI,SAAS,CAACvL,KAAD,EAAQ/9F,KAAR,EAAek0H,MAAf,EAAuBE,UAAvB,EAAmCp0H,KAAK,CAAC4yH,WAAzC,CAAtB;AACD;;AAED,MAAI70B,KAAK,CAACT,WAAV,EAAuB;AACrB,QAAIt+H,IAAI,CAACrB,MAAL,GAAc,CAAlB,EAAqB;AACnB,UAAIg5I,GAAG,GAAG33I,IAAI,CAAC,CAAD,CAAd;AACA,UAAI8sB,CAAC,GAAGvxB,MAAM,CAACiS,IAAP,CAAYmqI,GAAZ,EAAiB,CAAjB,CAAR,CAFmB,CAGnB;AACA;;AACA33I,UAAI,GAAG23I,GAAG,CAAC7qH,CAAD,CAAH,IAAU,CAAjB;AACD,KAND,MAMO;AACL9sB,UAAI,GAAG,IAAP;AACD;AACF;;AACD,SAAOA,IAAP;AACD;AAEM,eAAekgI,QAAf,CAAwBkuB,MAAxB,EAAgCvL,YAAhC,EAA8C9jB,KAA9C,EAAqDtlI,OAArD,EAA8D;AACnE,sBAA2B26J,8DAAY,CAACr1B,KAAD,EAAQqvB,MAAR,EAAgBvL,YAAhB,CAAvC;AAAA,MAAM8R,SAAN,iBAAMA,SAAN;AAAA,MAAiB3zH,KAAjB,iBAAiBA,KAAjB;;AACA,MAAIhhC,IAAI,GAAG,MAAMi1J,gBAAgB,CAACl2B,KAAD,EAAQ41B,SAAR,EAAmB3zH,KAAnB,EAA0BvnC,OAA1B,CAAjC;AACA,SAAO;AAAEuG,QAAF;AAAQwzJ,gBAAY,EAAExyH,KAAK,CAACwyH;AAA5B,GAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnFD;AACA;;AAEA,SAAS8B,UAAT,CAAoB3zJ,IAApB,EAA0BmtJ,SAA1B,EAAqC;AACnC,SAAOA,SAAS,CAACyG,QAAV,IAAsB5zJ,IAAI,KAAK,IAAtC;AACD,C,CAED;AACA;;;AACO,SAAS0zJ,gBAAT,CAA0Bn9J,KAA1B,EAAiC4c,IAAjC,EAAuC;AAC5C,MAAI5c,KAAK,KAAKP,SAAd,EAAyB;AACvB,UAAM,IAAIwF,KAAJ,CAAU,iCAAV,CAAN;AACD,GAFD,MAEO,IAAIjF,KAAK,KAAK,IAAd,EAAoB;AACzB,QAAI4c,IAAI,KAAK,SAAb,EAAwB;AACtB,aAAO,CAAP;AACD;;AAED,WAAO,IAAP;AACD;;AAED,UAAQA,IAAR;AACE,SAAK,MAAL;AACE,UAAI5c,KAAK,YAAY4K,IAArB,EAA2B;AACzB,eAAOwjJ,0DAAU,CAAC7O,kEAAW,CAACv/I,KAAD,CAAZ,CAAjB;AACD,OAFD,MAEO,IACLA,KAAK,CAAC4f,KAAN,CAAY,qBAAZ,KAAsC,IAAtC,IACA5f,KAAK,CAACyC,IAAN,GAAa,YAFR,EAGL;AACA,cAAM,IAAIwC,KAAJ,CAAU,mBAAmBjF,KAA7B,CAAN;AACD;;AAED,aAAOouJ,0DAAU,CAACpuJ,KAAD,CAAjB;;AACF,SAAK,YAAL;AACE,aAAOouJ,0DAAU,CAACpuJ,KAAK,CAACyI,KAAN,CAAY,CAAZ,EAAe,CAAf,CAAD,CAAjB;;AACF,SAAK,WAAL;AACE,aAAO2lJ,0DAAU,CAACpuJ,KAAK,CAACyI,KAAN,CAAY,CAAZ,EAAe,CAAf,CAAD,CAAjB;;AACF,SAAK,SAAL;AACE,aAAOzI,KAAK,GAAG,CAAH,GAAO,CAAnB;;AACF,SAAK,IAAL;AACE,UAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAA3C,EAAiD;AAC/C,cAAM,IAAIiF,KAAJ,CAAU,iCAAiCjF,KAA3C,CAAN;AACD;;AACD,aAAOA,KAAP;;AACF,SAAK,SAAL;AACE,UAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,CAACA,KAAK,GAAG,CAAT,MAAgBA,KAAjD,EAAwD;AACtD,eAAOA,KAAP;AACD,OAFD,MAEO;AACL,cAAM,IAAIiF,KAAJ,CAAU,+BAA+BoJ,IAAI,CAACC,SAAL,CAAetO,KAAf,CAAzC,CAAN;AACD;;AACH,SAAK,MAAL;AACE,aAAOqO,IAAI,CAACC,SAAL,CAAetO,KAAf,CAAP;;AACF;AA/BF;;AAiCA,SAAOA,KAAP;AACD;AAEM,SAAS88J,iBAAT,CAA2B98J,KAA3B,EAAkC4c,IAAlC,EAAwC;AAC7C,MAAI5c,KAAK,KAAK,IAAd,EAAoB;AAClB,QAAI4c,IAAI,KAAK,SAAb,EAAwB;AACtB,aAAO,KAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAED,UAAQA,IAAR;AACE,SAAK,MAAL;AACE,aAAO0gJ,4DAAY,CAACt9J,KAAD,CAAnB;;AACF,SAAK,YAAL;AACE,aAAOs9J,4DAAY,CAACt9J,KAAD,CAAZ,CAAoByI,KAApB,CAA0B,CAA1B,EAA6B,CAA7B,CAAP;;AACF,SAAK,WAAL;AACE,aAAO60J,4DAAY,CAACt9J,KAAD,CAAZ,CAAoByI,KAApB,CAA0B,CAA1B,EAA6B,CAA7B,CAAP;;AACF,SAAK,SAAL;AACE,aAAOzI,KAAK,KAAK,CAAjB;;AACF,SAAK,MAAL;AACA,SAAK,eAAL;AACE,UAAI;AACF,eAAOqO,IAAI,CAAC0G,KAAL,CAAW/U,KAAX,CAAP;AACD,OAFD,CAEE,OAAO+pB,CAAP,EAAU;AACV,eAAOnN,IAAI,KAAK,eAAT,GAA2B5c,KAA3B,GAAmC,IAA1C;AACD;;AACH;AAhBF;;AAmBA,SAAOA,KAAP;AACD;AAEM,SAASu9J,OAAT,CAAiBrH,MAAjB,EAAyBvL,YAAzB,EAAuCnjB,KAAvC,EAA8ChyH,GAA9C,EAAmD;AAAEgoJ;AAAF,IAAe,EAAlE,EAAsE;AAC3E,MAAIC,WAAW,GAAGvH,MAAM,CAAC1uB,KAAD,CAAxB;;AACA,MAAIi2B,WAAW,IAAI,IAAnB,EAAyB;AACvB,UAAM,IAAIx4J,KAAJ,CAAW,UAASuiI,KAAM,kBAA1B,CAAN;AACD;;AAED,MAAIojB,KAAK,GAAGD,YAAY,CAACC,KAAb,IAAsB,EAAlC,CAN2E,CAQ3E;;AACA,MAAIsO,QAAQ,GAAGzvH,KAAK,IAAI;AACtB,QAAImhH,KAAK,CAACpjB,KAAD,CAAL,IAAgBojB,KAAK,CAACpjB,KAAD,CAAL,CAAasB,MAAjC,EAAyC;AACvC,aAAO8hB,KAAK,CAACpjB,KAAD,CAAL,CAAasB,MAAb,CAAoBr/F,KAApB,KAA8BA,KAArC;AACD;;AACD,WAAOA,KAAP;AACD,GALD;;AAOA,SAAOpmC,MAAM,CAAConJ,WAAP,CACLpnJ,MAAM,CAACiS,IAAP,CAAYE,GAAZ,EACGhS,GADH,CACOimC,KAAK,IAAI;AACZ;AACA,QAAIA,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;AACpB,aAAO,IAAP;AACD;;AAED,QAAImtH,SAAS,GAAG6G,WAAW,CAACh0H,KAAD,CAA3B;;AACA,QAAImtH,SAAS,IAAI,IAAjB,EAAuB;AACrB,YAAM,IAAI3xJ,KAAJ,CACH,UAASwkC,KAAM,6BAA4B+9F,KAAM,KAAIn5H,IAAI,CAACC,SAAL,CACpDkH,GADoD,CAEpD,EAHE,CAAN;AAKD;;AAED,QAAI4nJ,UAAU,CAAC3zH,KAAD,EAAQmtH,SAAR,CAAV,IAAgCphJ,GAAG,CAACi0B,KAAD,CAAH,IAAc,IAAlD,EAAwD;AACtD,YAAM,IAAIxkC,KAAJ,CACH,IAAGwkC,KAAM,4BAA2B+9F,KAAM,MAAKn5H,IAAI,CAACC,SAAL,CAC9CkH,GAD8C,CAE9C,EAHE,CAAN;AAKD,KArBW,CAuBZ;;;AACA,QAAIgoJ,QAAQ,IAAIhoJ,GAAG,CAACi0B,KAAD,CAAH,IAAc,IAA9B,EAAoC;AAClC,aAAO,IAAP;AACD;;AAED,WAAO,CAACyvH,QAAQ,CAACzvH,KAAD,CAAT,EAAkB0zH,gBAAgB,CAAC3nJ,GAAG,CAACi0B,KAAD,CAAJ,EAAamtH,SAAS,CAACh6I,IAAvB,CAAlC,CAAP;AACD,GA9BH,EA+BG1V,MA/BH,CA+BUw9C,OA/BV,CADK,CAAP;AAkCD;AAEM,SAASg5G,gBAAT,CAA0BxH,MAA1B,EAAkCvL,YAAlC,EAAgDnjB,KAAhD,EAAuDm2B,MAAvD,EAA+D;AACpE,MAAInoJ,GAAG,qBAAQmoJ,MAAR,CAAP;;AAEA,MAAIF,WAAW,GAAGvH,MAAM,CAAC1uB,KAAD,CAAxB;;AACA,MAAIi2B,WAAW,IAAI,IAAnB,EAAyB;AACvB,UAAM,IAAIx4J,KAAJ,CAAW,2BAA0BuiI,KAAM,kBAA3C,CAAN;AACD,GANmE,CAQpE;AACA;;;AACAnkI,QAAM,CAACiS,IAAP,CAAYmoJ,WAAZ,EAAyB9qJ,OAAzB,CAAiC82B,KAAK,IAAI;AACxC,QAAImtH,SAAS,GAAG6G,WAAW,CAACh0H,KAAD,CAA3B;;AAEA,QAAIj0B,GAAG,CAACi0B,KAAD,CAAH,IAAc,IAAlB,EAAwB;AACtB,UAAImtH,SAAS,CAACgH,OAAV,KAAsBn+J,SAA1B,EAAqC;AACnC+V,WAAG,CAACi0B,KAAD,CAAH,GACE,OAAOmtH,SAAS,CAACgH,OAAjB,KAA6B,UAA7B,GACIhH,SAAS,CAACgH,OAAV,EADJ,GAEIhH,SAAS,CAACgH,OAHhB;AAID,OALD,MAKO,IAAIR,UAAU,CAAC3zH,KAAD,EAAQmtH,SAAR,CAAd,EAAkC;AACvC;AACA;AACA;AACA,cAAM,IAAI3xJ,KAAJ,CACH,IAAGwkC,KAAM,4BAA2B+9F,KAAM,MAAKn5H,IAAI,CAACC,SAAL,CAAekH,GAAf,CAAoB,EADhE,CAAN;AAGD;AACF;AACF,GAlBD,EAVoE,CA8BpE;AACA;AACA;;AACA,SAAO+nJ,OAAO,CAACrH,MAAD,EAASvL,YAAT,EAAuBnjB,KAAvB,EAA8BhyH,GAA9B,EAAmC;AAAEgoJ,YAAQ,EAAE;AAAZ,GAAnC,CAAd;AACD;AAEM,SAASK,gBAAT,CAA0B3H,MAA1B,EAAkCvL,YAAlC,EAAgDnjB,KAAhD,EAAuDm2B,MAAvD,EAA+D;AACpE,MAAInoJ,GAAG,qBAAQmoJ,MAAR,CAAP;;AAEA,MAAIF,WAAW,GAAGvH,MAAM,CAAC1uB,KAAD,CAAxB;;AACA,MAAIi2B,WAAW,IAAI,IAAnB,EAAyB;AACvB,UAAM,IAAIx4J,KAAJ,CAAW,0BAAyBuiI,KAAM,kBAA1C,CAAN;AACD;;AAED,SAAO+1B,OAAO,CAACrH,MAAD,EAASvL,YAAT,EAAuBnjB,KAAvB,EAA8BhyH,GAA9B,CAAd;AACD;AAEM,SAASsoJ,iBAAT,CAA2B5H,MAA3B,EAAmCvL,YAAnC,EAAiDnjB,KAAjD,EAAwDhyH,GAAxD,EAA6D;AAClE,MAAIioJ,WAAW,GAAGvH,MAAM,CAAC1uB,KAAD,CAAxB;;AACA,MAAIi2B,WAAW,IAAI,IAAnB,EAAyB;AACvB,UAAM,IAAIx4J,KAAJ,CAAW,UAASuiI,KAAM,kBAA1B,CAAN;AACD;;AAED,MAAIsB,MAAM,GAAGzlI,MAAM,CAACiS,IAAP,CAAYmoJ,WAAZ,CAAb;AACA,MAAIjpJ,MAAM,GAAG,EAAb;;AACA,OAAK,IAAI8K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwpH,MAAM,CAACriI,MAA3B,EAAmC6Y,CAAC,EAApC,EAAwC;AACtC,QAAI66F,SAAS,GAAG2uB,MAAM,CAACxpH,CAAD,CAAtB;AACA,QAAIs3I,SAAS,GAAG6G,WAAW,CAACtjD,SAAD,CAA3B;AAEA3lG,UAAM,CAAC2lG,SAAD,CAAN,GAAoB2iD,iBAAiB,CAACtnJ,GAAG,CAAC2kG,SAAD,CAAJ,EAAiBy8C,SAAS,CAACh6I,IAA3B,CAArC;AACD;;AACD,SAAOpI,MAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxMD;AACA;AACA;AACA;AACA;CAGA;;AAEO,SAASupJ,OAAT,CAAiBC,OAAjB,EAA0Bp1I,QAA1B,EAAoCq1I,MAAM,GAAG9vJ,CAAC,IAAIA,CAAlD,EAAqD;AAC1D,SAAO6vJ,OAAO,CAACt9J,MAAR,CAAe,CAACygB,IAAD,EAAO2kI,MAAP,KAAkB;AACtC,QAAIoY,MAAM,GAAGt1I,QAAQ,CAAClmB,GAAT,CAAaojJ,MAAM,CAAChe,EAApB,KAA2B,EAAxC;AACA3mH,QAAI,CAAC7b,IAAL,iCACK24J,MAAM,CAACnY,MAAD,CADX;AAEE/X,qBAAe,EAAEmwB,MAAM,CAAC16J,GAAP,CAAWy6J,MAAX;AAFnB;AAIA,WAAO98I,IAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD,C,CAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASg9I,gBAAT,CAA0Br1H,KAA1B,EAAiC+9F,KAAjC,EAAwCgU,GAAxC,EAA6CC,MAA7C,EAAqD4gB,WAArD,EAAkE;AAChE,MAAIx0B,YAAY,GAAGL,KAAK,CAACK,YAAN,IAAsB,EAAzC;AACA,MAAIk3B,SAAS,GAAGl3B,YAAY,CAAC0V,MAAb,IAAuB,QAAvC;;AAEA,MAAI,CAAC,KAAD,EAAQ,QAAR,EAAkB,MAAlB,EAA0B,SAA1B,EAAqCnuI,OAArC,CAA6C2vJ,SAA7C,MAA4D,CAAC,CAAjE,EAAoE;AAClE,UAAM,IAAIn5J,KAAJ,CAAW,8CAA6Cm5J,SAAU,GAAlE,CAAN;AACD;;AAED,MAAIA,SAAS,KAAK,KAAd,IAAuBA,SAAS,KAAK,QAArC,IAAiDA,SAAS,KAAK,MAAnE,EAA2E;AACzE,WAAOC,qBAAqB,CAC1Bv1H,KAD0B,EAE1B+9F,KAF0B,EAG1BgU,GAH0B,EAI1BC,MAJ0B,EAK1BsjB,SAL0B,EAM1B1C,WAN0B,CAA5B;AAQD,GATD,MASO,IAAI0C,SAAS,KAAK,SAAlB,EAA6B;AAClC,WAAOE,uBAAuB,CAC5Bx1H,KAD4B,EAE5B+9F,KAF4B,EAG5BgU,GAH4B,EAI5BC,MAJ4B,EAK5BsjB,SAL4B,EAM5B1C,WAN4B,CAA9B;AAQD;AACF;;AAED,SAAS6C,UAAT,CAAoBr3J,MAApB,EAA4B;AAC1B;AACA;AACA,OAAK,IAAIqO,GAAT,IAAgBlS,MAAM,CAACiS,IAAP,CAAYpO,MAAZ,CAAhB,EAAqC;AACnC,QAAIqO,GAAG,KAAK,KAAR,IAAiBA,GAAG,KAAK,MAA7B,EAAqC;AACnC,UAAIrO,MAAM,CAACqO,GAAD,CAAN,IAAegpJ,UAAU,CAACr3J,MAAM,CAACqO,GAAD,CAAP,CAA7B,EAA4C;AAC1C,eAAO,IAAP;AACD;AACF,KAJD,MAIO,IAAI,EAAEA,GAAG,CAAC9G,OAAJ,CAAY,SAAZ,MAA2B,CAA3B,IAAgC8G,GAAG,KAAK,MAA1C,CAAJ,EAAuD;AAC5D,aAAO,IAAP;AACD;AACF;;AACD,SAAO,KAAP;AACD;;AAEM,SAASipJ,gBAAT,CAA0BvC,UAA1B,EAAsC;AAC3C,SAAOA,UAAU,CAACj2B,iBAAX,CAA6B7pH,IAA7B,CAAkCoiJ,UAAlC,KAAiD,IAAxD;AACD;;AAED,eAAeD,uBAAf,CACEx1H,KADF,EAEEmzH,UAFF,EAGEphB,GAHF,EAIEC,MAJF,EAKEsjB,SALF,EAME1C,WANF,EAOE;AACA,MAAa9F,SAAb,GAAqCqG,UAArC,CAAMz0B,KAAN;AAAA,MAAwBlB,QAAxB,GAAqC21B,UAArC,CAAwB31B,QAAxB;AACA,MAAIm4B,SAAS,GAAGn4B,QAAQ,GAAG,EAAH,GAAS,OAAMuU,GAAG,CAACr2I,IAAK,gBAAhD;;AAEA,MAAIw3J,kEAAgB,CAACC,UAAD,CAApB,EAAkC;AAChC,QAAIyC,MAAM,GAAI;AAClB,eAAe7jB,GAAG,CAACjU,MAAO;AAC1B,aAAaiU,GAAG,CAACr2I,IAAK;AACtB,QAAQq2I,GAAG,CAACwgB,KAAM;AAClB,QAAQxgB,GAAG,CAAC8U,KAAM,sBAAqB8O,SAAU;AACjD,QAAQ5jB,GAAG,CAAC9T,OAAQ;AACpB,QAAQ8T,GAAG,CAAC7T,OAAQ;AACpB,QAAQ6T,GAAG,CAACznG,KAAJ,IAAa,IAAb,GAAqB,SAAQynG,GAAG,CAACznG,KAAM,EAAvC,GAA2C,EAAG;AACtD,QAAQynG,GAAG,CAACptH,MAAJ,IAAc,IAAd,GAAsB,UAASotH,GAAG,CAACptH,MAAO,EAA1C,GAA8C,EAAG;AACzD,KATI;AAUA,WAAOwkH,uCAAA,CAAOysB,MAAP,CAAP;AACD;;AAED,MAAIlP,IAAJ;AACA,MAAImP,OAAO,GAAG,IAAd;;AAEA,MAAIH,gBAAgB,CAACvC,UAAD,CAApB,EAAkC;AAChC;AACA;AACA,QAAI2C,MAAM,GAAI;AAClB,eAAe/jB,GAAG,CAACr2I,IAAK;AACxB,aAAaq2I,GAAG,CAACr2I,IAAK;AACtB,QAAQq2I,GAAG,CAACwgB,KAAM;AAClB,QAAQxgB,GAAG,CAAC8U,KAAM,qBAAoB8O,SAAU;AAChD,QAAQ5jB,GAAG,CAAC7T,OAAQ;AACpB,QAAQ6T,GAAG,CAACznG,KAAJ,IAAa,IAAb,GAAqB,SAAQynG,GAAG,CAACznG,KAAM,EAAvC,GAA2C,EAAG;AACtD,QAAQynG,GAAG,CAACptH,MAAJ,IAAc,IAAd,GAAsB,UAASotH,GAAG,CAACptH,MAAO,EAA1C,GAA8C,EAAG;AACzD,KARI;AASA+hI,QAAI,GAAG,MAAMvd,uCAAA,CAAO2sB,MAAP,EAAe9jB,MAAf,CAAb;AACD,GAbD,MAaO;AACL;AACA;AACA;AACA,QAAI8jB,MAAM,GAAI;AAClB;AACA;AACA;AACA;AACA;AACA,qBAAqB/jB,GAAG,CAACr2I,IAAK,eAAcq2I,GAAG,CAACr2I,IAAK,eAAcq2I,GAAG,CAACr2I,IAAK;AAC5E,mBAAmBq2I,GAAG,CAACr2I,IAAK;AAC5B,4CAA4Cq2I,GAAG,CAACr2I,IAAK,8BAA6Bq2I,GAAG,CAACr2I,IAAK;AAC3F,cAAcq2I,GAAG,CAACwgB,KAAM;AACxB,cAAcxgB,GAAG,CAAC8U,KAAM,QAAO9U,GAAG,CAACr2I,IAAK;AACxC;AACA;AACA;AACA,kBAAkBq2I,GAAG,CAACr2I,IAAK,OAAMq2I,GAAG,CAACr2I,IAAK;AAC1C,QAAQq2I,GAAG,CAACwgB,KAAM;AAClB,QAAQxgB,GAAG,CAAC7T,OAAQ;AACpB,QAAQ6T,GAAG,CAACznG,KAAJ,IAAa,IAAb,GAAqB,SAAQynG,GAAG,CAACznG,KAAM,EAAvC,GAA2C,EAAG;AACtD,QAAQynG,GAAG,CAACptH,MAAJ,IAAc,IAAd,GAAsB,UAASotH,GAAG,CAACptH,MAAO,EAA1C,GAA8C,EAAG;AACzD,KAnBI;AAqBA+hI,QAAI,GAAG,MAAMvd,uCAAA,CAAO2sB,MAAP,EAAe9jB,MAAf,CAAb;AACA6jB,WAAO,GAAG,IAAI7jJ,GAAJ,CACR,GAAG2iB,MAAH,CAAU6F,KAAV,CAAgB,EAAhB,EAAoBksH,IAAI,CAAChsJ,GAAL,CAASi8I,GAAG,IAAIA,GAAG,CAACkf,OAAJ,CAAY79I,KAAZ,CAAkB,GAAlB,CAAhB,CAApB,CADQ,CAAV;AAGD;;AAED,MAAI6uI,KAAK,GAAGJ,wDAAO,CACjBC,IAAI,CAAChsJ,GAAL,CAASi8I,GAAG,IAAIA,GAAG,CAACjT,QAApB,CADiB,EAEhB,UAASqO,GAAG,CAACr2I,IAAK,eAAcq2I,GAAG,CAACr2I,IAAK,MAFzB,CAAnB;AAIA,MAAIq6J,QAAQ,GAAI;AAClB,aAAahkB,GAAG,CAACjU,MAAO,kCAAiCiU,GAAG,CAACr2I,IAAK;AAClE,MAAMq2I,GAAG,CAACwgB,KAAM;AAChB,YAAY1L,KAAM,IAAG8O,SAAU;AAC/B,MAAM5jB,GAAG,CAAC7T,OAAQ;AAClB,GALE;AAOA,MAAInnI,KAAK,GAAG+K,IAAI,CAACoE,GAAL,EAAZ;AACA,MAAI8vJ,OAAO,GAAG,MAAM7sB,uCAAA,CAAO4sB,QAAP,CAApB,CA7EA,CA+EA;;AACA,wBAA4BC,OAAO,CAACp+J,MAAR,CAC1B,CAAC61H,GAAD,EAAMumB,KAAN,KAAgB;AACd,QAAIiiB,GAAG,GAAGjiB,KAAK,CAACkiB,UAAhB;AACA,WAAOliB,KAAK,CAACkiB,UAAb;;AAEA,QAAID,GAAG,IAAI,IAAX,EAAiB;AACfxoC,SAAG,CAACynC,OAAJ,CAAY14J,IAAZ,CAAiBw3I,KAAjB;AACD,KAFD,MAEO;AACL,UAAInhF,GAAG,GAAG46D,GAAG,CAAC3tG,QAAJ,CAAalmB,GAAb,CAAiBq8J,GAAjB,KAAyB,EAAnC;AACApjG,SAAG,CAACr2D,IAAJ,CAASw3I,KAAT;AACAvmB,SAAG,CAAC3tG,QAAJ,CAAa3iB,GAAb,CAAiB84J,GAAjB,EAAsBpjG,GAAtB;AACD;;AACD,WAAO46D,GAAP;AACD,GAbyB,EAc1B;AAAEynC,WAAO,EAAE,EAAX;AAAep1I,YAAQ,EAAE,IAAItU,GAAJ;AAAzB,GAd0B,CAA5B;AAAA,MAAM0pJ,OAAN,mBAAMA,OAAN;AAAA,MAAep1I,QAAf,mBAAeA,QAAf;;AAiBA,MAAIq1I,MAAM,GAAGnhB,KAAK,IAAI;AACpBz5I,UAAM,CAACiS,IAAP,CAAYwnI,KAAZ,EAAmBnqI,OAAnB,CAA2BlJ,IAAI,IAAI;AACjCqzI,WAAK,CAACrzI,IAAD,CAAL,GAAcqzJ,yEAAiB,CAAChgB,KAAK,CAACrzI,IAAD,CAAN,EAAciyJ,WAAW,CAACh5J,GAAZ,CAAgB+G,IAAhB,CAAd,CAA/B;AACD,KAFD;;AAIA,QAAIk1J,OAAO,IAAI,CAACA,OAAO,CAAClmJ,GAAR,CAAYqkI,KAAK,CAAChV,EAAlB,CAAhB,EAAuC;AACrCgV,WAAK,CAACmiB,UAAN,GAAmB,IAAnB;AACD;;AACD,WAAOniB,KAAP;AACD,GATD;;AAWA,SAAOihB,OAAO,CAACC,OAAD,EAAUp1I,QAAV,EAAoBq1I,MAApB,CAAd;AACD;;AAED,eAAeI,qBAAf,CACEv1H,KADF,EAEEmzH,UAFF,EAGEphB,GAHF,EAIEC,MAJF,EAKEsjB,SALF,EAME1C,WANF,EAOE;AACA,MAAI/0J,CAAC,qBAAQk0I,GAAR,CAAL;;AAEA,MAAIujB,SAAS,KAAK,KAAlB,EAAyB;AACvB,QAAIA,SAAS,KAAK,MAAlB,EAA0B;AACxBz3J,OAAC,CAACgpJ,KAAF,GAAW,GAAEhpJ,CAAC,CAACgpJ,KAAM,QAAOhpJ,CAAC,CAACnC,IAAK,oBAAnC;AACD,KAFD,MAEO;AACLmC,OAAC,CAACgpJ,KAAF,GAAW,GAAEhpJ,CAAC,CAACgpJ,KAAM,QAAOhpJ,CAAC,CAACnC,IAAK,gBAAnC;AACD;AACF;;AAED,SAAO4tI,uDAAS,CAAC6pB,UAAD,EAAanzH,KAAb,EAAoBniC,CAApB,EAAuBm0I,MAAvB,EAA+B4gB,WAA/B,CAAhB;AACD;;AAEc;AACbjzB,cAAY,EAAE01B;AADD,CAAf,E;;;;;;;;;;;;;;;;;;;;;ACxNA,SAAS7wH,CAAT,CAAW1wB,IAAX,EAAiBD,IAAjB,EAAuB;AACrB;AAASC;AAAT,KAAkBD,IAAlB;AACD,C,CAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEO,MAAMu5I,MAAM,GAAG;AACpBztB,cAAY,EAAE;AACZX,MAAE,EAAEx6F,CAAC,CAAC,IAAD,CADO;AAEZo4G,aAAS,EAAEp4G,CAAC,CAAC,SAAD,CAFA;AAGZokH,YAAQ,EAAEpkH,CAAC,CAAC,SAAD,CAHC;AAIZgkH,aAAS,EAAEhkH,CAAC,CAAC,IAAD,CAJA;AAKZ47F,WAAO,EAAE57F,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE,UAAP;AAAmBsG,cAAQ,EAAE;AAA7B,KAAP,CALE;AAMZnzB,YAAQ,EAAE58F,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE;AAAP,KAAP,CANC;AAOZrrJ,UAAM,EAAE4hC,CAAC,CAAC,SAAD,EAAY;AAAEswH,aAAO,EAAE,CAAX;AAAcP,cAAQ,EAAE;AAAxB,KAAZ,CAPG;AAQZ9yB,SAAK,EAAEj9F,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE;AAAP,KAAP,CARI;AASZnpB,SAAK,EAAEtgG,CAAC,CAAC,QAAD,CATI;AAUZ7qC,QAAI,EAAE6qC,CAAC,CAAC,MAAD,EAAS;AAAE+vH,cAAQ,EAAE;AAAZ,KAAT,CAVK;AAWZ5rB,eAAW,EAAEnkG,CAAC,CAAC,QAAD,CAXF;AAYZnE,SAAK,EAAEmE,CAAC,CAAC,MAAD,CAZI;AAaZ6xG,kBAAc,EAAE7xG,CAAC,CAAC,QAAD,CAbL;AAcZunG,yBAAqB,EAAEvnG,CAAC,CAAC,SAAD,CAdZ;AAeZwgG,eAAW,EAAExgG,CAAC,CAAC,IAAD,CAfF;AAgBZu4G,cAAU,EAAEv4G,CAAC,CAAC,OAAD,EAAU;AAAEswH,aAAO,EAAE,MAAMhzJ,IAAI,CAACoE,GAAL;AAAjB,KAAV,CAhBD;AAiBZwiI,WAAO,EAAElkG,CAAC,CAAC,SAAD,EAAY;AAAEswH,aAAO,EAAE;AAAX,KAAZ,CAjBE;AAkBZzR,aAAS,EAAE7+G,CAAC,CAAC,SAAD,CAlBA;AAmBZtlC,YAAQ,EAAEslC,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE;AAAP,KAAP,CAnBC,CAoBZ;AACA;;AArBY,GADM;AAwBpBpqB,QAAM,EAAE;AACN7E,MAAE,EAAEx6F,CAAC,CAAC,IAAD,CADC;AAEN7jC,QAAI,EAAE6jC,CAAC,CAAC,QAAD,EAAW;AAAE+vH,cAAQ,EAAE;AAAZ,KAAX,CAFD;AAGNxwB,iBAAa,EAAEv/F,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE;AAAP,KAAP,CAHV;AAIN5K,aAAS,EAAE7+G,CAAC,CAAC,SAAD;AAJN,GAxBY;AA8BpBo+F,UAAQ,EAAE;AACR5D,MAAE,EAAEx6F,CAAC,CAAC,IAAD,CADG;AAER7jC,QAAI,EAAE6jC,CAAC,CAAC,QAAD,EAAW;AAAE+vH,cAAQ,EAAE;AAAZ,KAAX,CAFC;AAGR;AACAzgJ,QAAI,EAAE0wB,CAAC,CAAC,QAAD,CAJC;AAKRw+F,aAAS,EAAEx+F,CAAC,CAAC,SAAD,CALJ;AAMR0+F,UAAM,EAAE1+F,CAAC,CAAC,SAAD,CAND;AAORu4G,cAAU,EAAEv4G,CAAC,CAAC,OAAD,CAPL;AAQR6+G,aAAS,EAAE7+G,CAAC,CAAC,SAAD;AARJ,GA9BU;AAwCpBy/F,YAAU,EAAE;AACVjF,MAAE,EAAEx6F,CAAC,CAAC,IAAD,CADK;AAEV7jC,QAAI,EAAE6jC,CAAC,CAAC,QAAD,CAFG;AAGVi/F,aAAS,EAAEj/F,CAAC,CAAC,SAAD,CAHF;AAIVu8F,SAAK,EAAEv8F,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE;AAAP,KAAP,CAJE;AAKVlR,cAAU,EAAEv4G,CAAC,CAAC,OAAD,CALH;AAMV6+G,aAAS,EAAE7+G,CAAC,CAAC,SAAD;AANF,GAxCQ;AAgDpBwjG,iBAAe,EAAE;AACfhJ,MAAE,EAAEx6F,CAAC,CAAC,IAAD,CADU;AAEf7jC,QAAI,EAAE6jC,CAAC,CAAC,QAAD,CAFQ;AAGfi/F,aAAS,EAAEj/F,CAAC,CAAC,SAAD,CAHG;AAIfu4G,cAAU,EAAEv4G,CAAC,CAAC,OAAD,CAJE;AAKf6+G,aAAS,EAAE7+G,CAAC,CAAC,SAAD;AALG,GAhDG;AAuDpBzlC,WAAS,EAAE;AACTigI,MAAE,EAAEx6F,CAAC,CAAC,IAAD,CADI;AAETx7B,QAAI,EAAEw7B,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE,OAAP;AAAgBsG,cAAQ,EAAE;AAA1B,KAAP,CAFE;AAGT6B,aAAS,EAAE5xH,CAAC,CAAC,MAAD,CAHH;AAIT6xH,aAAS,EAAE7xH,CAAC,CAAC,SAAD,CAJH;AAKT8xH,qBAAiB,EAAE9xH,CAAC,CAAC,SAAD,CALX;AAMT6+G,aAAS,EAAE7+G,CAAC,CAAC,SAAD,CANH;AAQT;AACA;AACA+xH,UAAM,EAAE/xH,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE;AAAP,KAAP,CAVA;AAWTuI,YAAQ,EAAEhyH,CAAC,CAAC,IAAD,EAAO;AAAEypH,SAAG,EAAE;AAAP,KAAP,CAXF;AAYTwI,WAAO,EAAEjyH,CAAC,CAAC,eAAD,CAZD;AAaTkyH,aAAS,EAAElyH,CAAC,CAAC,QAAD,CAbH;AAcT/jC,SAAK,EAAE+jC,CAAC,CAAC,eAAD,CAdC;AAeTmyH,eAAW,EAAEnyH,CAAC,CAAC,MAAD,CAfL;AAgBToyH,YAAQ,EAAEpyH,CAAC,CAAC,MAAD;AAhBF,GAvDS;AAyEpB13B,OAAK,EAAE;AACLkyH,MAAE,EAAEx6F,CAAC,CAAC,IAAD,CADA;AAELi1G,SAAK,EAAEj1G,CAAC,CAAC,QAAD,CAFH;AAGLk1G,cAAU,EAAEl1G,CAAC,CAAC,MAAD,CAHR;AAILm1G,WAAO,EAAEn1G,CAAC,CAAC,MAAD,CAJL;AAKL6+G,aAAS,EAAE7+G,CAAC,CAAC,SAAD;AALP,GAzEa;AAgFpBsgG,OAAK,EAAE;AACL9F,MAAE,EAAEx6F,CAAC,CAAC,IAAD,CADA;AAELqlG,QAAI,EAAErlG,CAAC,CAAC,QAAD;AAFF;AAhFa,CAAf;AAsFA,MAAMq9G,YAAY,GAAG;AAC1B;AACA;AACA;AACAwR,YAAU,CAAC1yJ,IAAD,EAAO;AAAE6yJ,UAAF;AAAUh2B,YAAV;AAAoBY,gBAAY,GAAG;AAAnC,GAAP,EAAgD;AACxD,YAAQz9H,IAAR;AACE,WAAK,cAAL;AAAqB;AACnB;AACA;AACA,cAAI6yJ,MAAJ,EAAY;AACV,mBAAO,+BAAP;AACD;;AAED,cAAI8B,SAAS,GAAGl3B,YAAY,CAAC0V,MAAb,IAAuB,QAAvC,CAPmB,CAQnB;;AACA,cAAI,CAACtW,QAAD,KAAc83B,SAAS,KAAK,QAAd,IAA0BA,SAAS,KAAK,MAAtD,CAAJ,EAAmE;AACjE,mBAAO,+BAAP;AACD,WAXkB,CAanB;AACA;;;AACA,iBAAO,yBAAP;AACD;;AAED,WAAK,WAAL;AACE,eAAO,aAAP;;AAEF,WAAK,YAAL;AACE,eAAO,cAAP;;AAEF,WAAK,QAAL;AACE,eAAO,UAAP;;AAEF;AA5BF;;AA8BA,WAAO30J,IAAP;AACD,GApCyB;;AAsC1B4yJ,gBAAc,CAACJ,UAAD,EAAa;AACzB,QAAarG,SAAb,GAA8CqG,UAA9C,CAAMz0B,KAAN;AAAA,gCAA8Cy0B,UAA9C,CAAwB/0B,YAAxB;AAAA,QAAwBA,YAAxB,sCAAuC,EAAvC;;AAEA,aAASF,OAAT,CAAiBizB,MAAjB,EAAyB;AACvB;AACA;AACA,UAAIA,MAAM,CAACxzJ,MAAP,GAAgB,CAApB,EAAuB;AACrB,eAAOwzJ,MAAM,CAACx8H,MAAP,CAAc,CAAC,IAAD,CAAd,CAAP;AACD,OALsB,CAOvB;;;AACA,cAAQm4H,SAAR;AACE,aAAK,cAAL;AACE,iBAAO,CACL;AAAEnzJ,gBAAI,EAAE;AAAR,WADK,EAEL,uBAFK,EAGL;AAAEojJ,sBAAU,EAAE;AAAd,WAHK,EAIL,IAJK,CAAP;;AAMF,aAAK,QAAL;AACE,iBAAO,CACL;AAAE8Z,sBAAU,EAAE;AAAE9yB,2BAAa,EAAE;AAAjB,aAAd;AAAuC+uB,gBAAI,EAAE;AAA7C,WADK,EAEL;AAAEgE,mBAAO,EAAE;AAAX,WAFK,CAAP;;AAIF,aAAK,UAAL;AACE,iBAAO,CAAC,YAAD,EAAe,MAAf,CAAP;;AACF,aAAK,WAAL;AACE,iBAAO,CAAC;AAAED,sBAAU,EAAE;AAAER,uBAAS,EAAE;AAAb;AAAd,WAAD,EAAsC,WAAtC,CAAP;;AACF;AAjBF;;AAoBA,aAAO,EAAP;AACD;;AAED,2CACKlD,UADL;AAEE91B,sBAAgB,EAAEa,OAAO,CAACi1B,UAAU,CAAC91B,gBAAZ;AAF3B;AAID,GA5EyB;;AA8E1BykB,OAAK,EAAE;AACLje,UAAM,EAAE;AACNkzB,cAAQ,EAAEnV,cAAc,IAAI;AAC1B,YAAI5hB,MAAM,GAAG4hB,cAAc,CAAC;AAC1BjhJ,cAAI,EAAE;AADoB,SAAD,CAA3B;AAIA,eAAQ;AAChB,mBAAmBq/H,MAAO;AAC1B;AACA;AACA;AACA;AACA,SANQ;AAOD;AAbK,KADH;AAiBLiE,cAAU,EAAE;AACVjE,YAAM,EAAE;AACNe,aAAK,EAAE;AADD,OADE;AAKVi2B,kBAAY,EAAEpV,cAAc,IAAI;AAC9B,YAAI5hB,MAAM,GAAG4hB,cAAc,CAAC;AAAE7gB,eAAK,EAAE;AAAT,SAAD,CAA3B;AACA,eAAQ,UAASf,MAAO,oBAAxB;AACD;AARS,KAjBP;AA4BLjhI,aAAS,EAAE;AACTk4J,iBAAW,EAAErV,cAAc,IAAI;AAC7B,YAAI5hB,MAAM,GAAG4hB,cAAc,CAAC;AAC1BwU,mBAAS,EAAG;AACtB;AACA;AACA;AACA;AACA,WANoC;AAO1BG,gBAAM,EAAG,aAPiB;AAQ1BC,kBAAQ,EAAG,6DARe;AAS1BC,iBAAO,EAAG,4DATgB;AAU1BC,mBAAS,EAAG,yDAVc;AAW1Bj2J,eAAK,EAAG,0DAXkB;AAY1Bk2J,qBAAW,EAAE,mBAZa;AAa1BC,kBAAQ,EAAE;AAbgB,SAAD,CAA3B;AAgBA,eAAQ;AAChB,mBAAmB52B,MAAO;AAC1B;AACA;AACA;AACA;AACA,SANQ;AAOD;AAzBQ,KA5BN;AAwDLL,gBAAY,EAAE;AACZK,YAAM,EAAE;AACN4c,iBAAS,EAAE,UADL;AAENgM,gBAAQ,EAAE,SAFJ;AAGNxoB,eAAO,EAAE,MAHH;AAINuI,mBAAW,EAAE,cAJP;AAKN0N,sBAAc,EAAE,sBALV;AAMNrR,mBAAW,EAAE,gBANP;AAONvD,aAAK,EAAE;AAPD,OADI;AAWZy1B,6BAAuB,EAAEtV,cAAc,IAAI;AACzC;AACA,YAAI5hB,MAAM,GAAG4hB,cAAc,CAAC;AAC1BngB,eAAK,EAAE,aADmB;AAE1BL,kBAAQ,EAAG,2DAFe;AAG1Bx+H,gBAAM,EAAG,qBAHiB;AAI1B4lJ,mBAAS,EAAE;AAJe,SAAD,CAA3B;AAOA,eAAQ;AAChB,mBAAmBxoB,MAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,SARQ;AASD,OA7BW;AA+BZ;AACA;AACA;AACAm3B,mCAA6B,EAAG;AACtC;AACA;AACA;AACA,OAtCkB;AAwCZC,oBAAc,EAAE,CAAC34J,CAAD,EAAIsjJ,YAAJ,KAAqB;AACnC,YAAI/hB,MAAM,GAAG+hB,YAAY,CAAC;AACxBtgB,eAAK,EAAE,MADiB;AAExBL,kBAAQ,EAAE,MAFc;AAGxBhB,iBAAO,EAAE;AAHe,SAAD,CAAzB,CADmC,CAOnC;AACA;AACA;;AACA,eAAQ;AAChB,mBAAmBJ,MAAO;AAC1B;AACA;AACA;AACA;AACA,SANQ;AAOD;AAzDW;AAxDT;AA9EmB,CAArB,C;;;;;;;;;;;;ACpHP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAIA;AAEO,SAASi0B,gBAAT,CAA0Bl2B,KAA1B,EAAiC41B,SAAjC,EAA4C3zH,KAA5C,EAAmDgyG,MAAnD,EAA2D;AAChE,SAAOqlB,8DAAiB,CAACt5B,KAAD,EAAQ41B,SAAR,EAAmB3zH,KAAnB,EAA0B;AAChDgyG,UADgD;AAEhDmiB,aAAS,EAAEmD,kDAAeA;AAFsB,GAA1B,CAAxB;AAID;AAEM,SAASp4B,QAAT,CAAkBnB,KAAlB,EAAyBiU,MAAzB,EAAiC;AACtC,MAAIjU,KAAK,YAAYd,mDAArB,EAA4B;AAC1Bc,SAAK,GAAGA,KAAK,CAACnqH,SAAN,EAAR;AACD;;AAED,SAAO2jJ,sDAAS,CAACnK,6CAAD,EAASvL,mDAAT,EAAuB9jB,KAAvB,EAA8B;AAC5CiU,UAD4C;AAE5CmiB,aAAS,EAAEmD,kDAAeA;AAFkB,GAA9B,CAAhB;AAID,C;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBD;;AAEA,SAASE,YAAT,CAAsBx3B,MAAtB,EAA8B;AAC5B,SAAOzlI,MAAM,CAACiS,IAAP,CAAYwzH,MAAZ,EACJtlI,GADI,CACA+8J,EAAE,IAAI;AACT,QAAI92H,KAAK,GAAGq/F,MAAM,CAACy3B,EAAD,CAAlB;AACA,QAAIC,OAAO,GAAG/2H,KAAK,KAAK82H,EAAxB,CAFS,CAGT;AACA;;AACA,QAAI,CAAC92H,KAAK,CAAC7pB,KAAN,CAAY,MAAZ,CAAL,EAA0B;AACxB6pB,WAAK,GAAI,KAAIA,KAAM,EAAnB;AACD;;AACD,WAAO+2H,OAAO,GAAI,GAAE/2H,KAAM,OAAM+sH,4DAAU,CAAC+J,EAAD,CAAK,EAAjC,GAAsC,GAAE92H,KAAM,EAA5D;AACD,GAVI,EAWJjoB,IAXI,CAWC,IAXD,CAAP;AAYD;;AAEM,SAASi/I,SAAT,CAAmBvK,MAAnB,EAA2BvL,YAA3B,EAAyC;AAC9C,MAAIC,KAAK,GAAGD,YAAY,CAACC,KAAzB;AACA,MAAI8V,QAAQ,GAAG,EAAf;AAEAr9J,QAAM,CAACiS,IAAP,CAAYs1I,KAAZ,EAAmBj4I,OAAnB,CAA2B60H,KAAK,IAAI;AAClC,uBAAoDojB,KAAK,CAACpjB,KAAD,CAAzD;AAAA,2CAAMsB,MAAN;AAAA,QAAc63B,aAAd,oCAA8B,EAA9B;AAAA,QAAqCxE,UAArC;;AAEA,QAAItR,YAAY,GAAGxnJ,MAAM,CAAConJ,WAAP,CACjBpnJ,MAAM,CAACiS,IAAP,CAAY4gJ,MAAM,CAAC1uB,KAAD,CAAlB,EAA2BhkI,GAA3B,CAA+BiG,IAAI,IAAI,CAACA,IAAD,EAAOA,IAAP,CAAvC,CADiB,CAAnB;;AAGA,QAAIihJ,cAAc,mCAAQG,YAAR,GAAyB8V,aAAzB,CAAlB;;AAEAt9J,UAAM,CAACiS,IAAP,CAAY6mJ,UAAZ,EAAwBxpJ,OAAxB,CAAgCiuJ,QAAQ,IAAI;AAC1C,UAAIC,WAAW,GAAGC,SAAS,IAAI;AAC7B,YAAIh4B,MAAM,mCAAQ+hB,YAAR,GAAyBiW,SAAzB,CAAV;;AACA,eAAOR,YAAY,CAACx3B,MAAD,CAAnB;AACD,OAHD;;AAIA,UAAIi4B,aAAa,GAAGD,SAAS,IAAI;AAC/B,YAAIh4B,MAAM,mCAAQ4hB,cAAR,GAA2BoW,SAA3B,CAAV;;AACA,eAAOR,YAAY,CAACx3B,MAAD,CAAnB;AACD,OAHD;;AAKA,UAAI+R,GAAJ;;AACA,UAAI,OAAOshB,UAAU,CAACyE,QAAD,CAAjB,KAAgC,UAApC,EAAgD;AAC9C/lB,WAAG,GAAGshB,UAAU,CAACyE,QAAD,CAAV,CAAqBG,aAArB,EAAoCF,WAApC,CAAN;AACD,OAFD,MAEO;AACLhmB,WAAG,GAAGshB,UAAU,CAACyE,QAAD,CAAhB;AACD;;AACD/lB,SAAG,GAAGA,GAAG,CAACvyG,IAAJ,GAAWvoB,OAAX,CAAmB,IAAnB,EAAyB,EAAzB,CAAN;AAEA2gJ,cAAQ,CAACp7J,IAAT,CAAe;AACrB,8BAA8Bs7J,QAAS;AACvC,sBAAsBA,QAAS,OAAM/lB,GAAI;AACzC,OAHM;AAID,KAtBD;AAuBD,GA/BD;AAiCA,SAAO6lB,QAAQ,CAACl/I,IAAT,CAAc,IAAd,CAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDD;AACA;AACA;AACA;AACA;;AACA,MAAM4tI,UAAU,GAAGvtI,mBAAO,CAAC,uGAAD,CAA1B;;AACA,MAAM6iH,IAAI,GAAG7iH,mBAAO,CAAC,kFAAD,CAApB;;AACA,MAAM8+H,OAAO,GAAG9+H,mBAAO,CAAC,sDAAD,CAAvB,C,CAEA;AACA;;;AACA,MAAMm/I,sBAAsB,GAAG,kBAA/B;AACA,IAAIC,eAAe,GAAG,IAAtB;AAEO,eAAeC,UAAf,CAA0Bp5B,EAA1B,EAA8B;AACnC,QAAMq5B,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAlB;AACA,QAAMs5B,SAAS,GAAG3+I,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,SAAnB,CAAlB;AAEA,MAAIrxB,KAAK,GAAG,EAAZ;;AACA,MAAI,MAAMrtH,0DAAE,CAACqa,MAAH,CAAUskI,SAAV,CAAV,EAAgC;AAC9BtxB,SAAK,GAAG,MAAMrtH,0DAAE,CAAC82H,OAAH,CAAW6nB,SAAX,CAAd;AACAtxB,SAAK,GAAGA,KAAK,CAAC5oI,MAAN,CAAa0iB,IAAI,IAAIA,IAAI,CAAChK,KAAL,CAAW,WAAX,CAArB,CAAR;AACD;;AAED,QAAMyhJ,OAAO,GAAG,MAAMn6I,OAAO,CAAC0pD,GAAR,CACpBk/D,KAAK,CAACtsI,GAAN,CAAU,MAAMi3B,IAAN,IAAc;AACtB,UAAMhT,KAAK,GAAG,MAAMhF,0DAAE,CAACi4H,eAAH,CAAmBj4H,0DAAE,CAACjB,IAAH,CAAQ4/I,SAAR,EAAmB3mI,IAAnB,CAAnB,CAApB;AACA,WAAO;AACLqtG,QAAE,EAAErtG,IADC;AAELh4B,UAAI,EAAE,IAAImI,IAAJ,CAAS6c,KAAT;AAFD,KAAP;AAID,GAND,CADoB,CAAtB;AAUA45I,SAAO,CAACp6J,IAAR,CAAa,CAACq6J,EAAD,EAAKC,EAAL,KAAY;AACvB,QAAID,EAAE,CAAC7+J,IAAH,GAAU8+J,EAAE,CAAC9+J,IAAjB,EAAuB;AACrB,aAAO,CAAP;AACD,KAFD,MAEO,IAAI6+J,EAAE,CAAC7+J,IAAH,GAAU8+J,EAAE,CAAC9+J,IAAjB,EAAuB;AAC5B,aAAO,CAAC,CAAR;AACD;;AACD,WAAO,CAAP;AACD,GAPD;AASA,SAAO4+J,OAAP;AACD;AAEM,eAAeG,eAAf,CAA+B15B,EAA/B,EAAmC;AACxC,QAAMq5B,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAlB;;AACA,MAAI,MAAMrlH,0DAAE,CAACqa,MAAH,CAAUra,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmBH,sBAAnB,CAAV,CAAV,EAAiE;AAC/D,WAAO;AACLl5B,QAAE,EAAEk5B,sBADC;AAELv+J,UAAI,EAAE,IAFD;AAGLg/J,cAAQ,EAAE;AAHL,KAAP;AAKD;;AACD,SAAO,IAAP;AACD;AAEM,eAAeC,mBAAf,CAAmC55B,EAAnC,EAAuC;AAC5C,MAAIu5B,OAAO,GAAG,MAAMH,UAAU,CAACp5B,EAAD,CAA9B;AAEA,MAAI65B,YAAY,GAAG,MAAMH,eAAe,CAAC15B,EAAD,CAAxC;;AACA,MAAI65B,YAAJ,EAAkB;AAChBN,WAAO,CAACz1J,OAAR,CAAgB+1J,YAAhB;AACD;;AAEDN,SAAO,GAAGA,OAAO,CAAC79J,GAAR,CAAYo+J,MAAM,oCACvBA,MADuB;AAE1Bn/J,QAAI,EAAEm/J,MAAM,CAACn/J,IAAP,GAAck+I,OAAO,CAACtiI,MAAR,CAAeujJ,MAAM,CAACn/J,IAAtB,EAA4B,iBAA5B,CAAd,GAA+D;AAF3C,IAAlB,CAAV;AAKA,SAAO4+J,OAAP;AACD;AAEM,eAAeQ,aAAf,CAA6BR,OAA7B,EAAsC;AAC3C,QAAMS,KAAK,GAAGT,OAAO,CAAC3gK,MAAR,CAAe,CAACqzI,MAAD,EAAS6tB,MAAT,KAAoB;AAC/C,UAAM9/J,GAAG,GAAG6+I,OAAO,CAACtiI,MAAR,CAAeujJ,MAAM,CAACn/J,IAAtB,EAA4B,YAA5B,CAAZ;AACAsxI,UAAM,CAACjyI,GAAD,CAAN,GAAciyI,MAAM,CAACjyI,GAAD,CAAN,IAAe,EAA7B;AACAiyI,UAAM,CAACjyI,GAAD,CAAN,CAAYwD,IAAZ,CAAiBs8J,MAAjB;AACA,WAAO7tB,MAAP;AACD,GALa,EAKX,EALW,CAAd;AAOA,QAAMguB,OAAO,GAAG,EAAhB;;AACA,OAAK,IAAIjgK,GAAT,IAAgBuB,MAAM,CAACiS,IAAP,CAAYwsJ,KAAZ,CAAhB,EAAoC;AAClC,UAAME,UAAU,GAAGF,KAAK,CAAChgK,GAAD,CAAxB;AACA,UAAMmgK,OAAO,GAAGngK,GAAG,KAAK4yI,yDAAA,EAAxB,CAFkC,CAGlC;AACA;AACA;;AACA,SAAK,IAAIktB,MAAT,IAAmBI,UAAU,CAACv5J,KAAX,CAAiBw5J,OAAO,GAAG,CAAH,GAAO,CAA/B,CAAnB,EAAsD;AACpDF,aAAO,CAACz8J,IAAR,CAAas8J,MAAM,CAAC95B,EAApB;AACD;AACF,GAlB0C,CAoB3C;;;AACA,QAAMo6B,cAAc,GAAGb,OAAO,CAACn6J,MAAR,CAAe06J,MAAM,IAAI,CAACG,OAAO,CAAC7pJ,QAAR,CAAiB0pJ,MAAM,CAAC95B,EAAxB,CAA1B,CAAvB;AACA,SAAOi6B,OAAO,CAACtkI,MAAR,CAAeykI,cAAc,CAACz5J,KAAf,CAAqB,EAArB,EAAyBjF,GAAzB,CAA6Bo+J,MAAM,IAAIA,MAAM,CAAC95B,EAA9C,CAAf,CAAP;AACD;AAEM,eAAeq6B,UAAf,CAA0Br6B,EAA1B,EAA8B;AACnC,QAAMq5B,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAlB,CADmC,CAGnC;AACA;AACA;;AACA,MAAI,MAAMrlH,0DAAE,CAACqa,MAAH,CAAUra,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmBH,sBAAnB,CAAV,CAAV,EAAiE;AAC/D,UAAMv+I,0DAAE,CAAC03H,UAAH,CAAc13H,0DAAE,CAACjB,IAAH,CAAQiB,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAR,EAA6Bk5B,sBAA7B,CAAd,CAAN;AACD;;AAED,MAAIoB,QAAQ,GAAI,GAAE19B,IAAI,CAACgX,MAAL,EAAc,SAAhC;AACA,MAAI2mB,UAAU,GAAG5/I,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,SAAnB,EAA8BiB,QAA9B,CAAjB;;AAEA,MAAI,EAAE,MAAM3/I,0DAAE,CAACqa,MAAH,CAAUra,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,SAAnB,CAAV,CAAR,CAAJ,EAAuD;AACrD,UAAM1+I,0DAAE,CAACm3H,KAAH,CAASn3H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,SAAnB,CAAT,CAAN;AACD;;AAED,QAAM1+I,0DAAE,CAACo3H,QAAH,CAAYp3H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,WAAnB,CAAZ,EAA6CkB,UAA7C,CAAN,CAjBmC,CAmBnC;;AACA,QAAMpwB,EAAE,GAAGqwB,oEAAA,CAAoBD,UAApB,CAAX;AACA,QAAMC,gEAAA,CAAgBrwB,EAAhB,EAAoB,2BAApB,CAAN;AACA,QAAMqwB,gEAAA,CAAgBrwB,EAAhB,EAAoB,4BAApB,CAAN;AACAqwB,uEAAA,CAAqBrwB,EAArB;AAEA,QAAMswB,QAAQ,GAAG,MAAMV,aAAa,CAAC,MAAMX,UAAU,CAACp5B,EAAD,CAAjB,CAApC;;AACA,OAAK,IAAIA,EAAT,IAAey6B,QAAf,EAAyB;AACvB,UAAM9/I,0DAAE,CAAC03H,UAAH,CAAc13H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,SAAnB,EAA8Br5B,EAA9B,CAAd,CAAN;AACD;;AAEDsnB,YAAU,CAACvnF,IAAX,CAAgB,iBAAhB,EAAmC,MAAM65F,mBAAmB,CAAC55B,EAAD,CAA5D;AACD;AAEM,eAAe06B,UAAf,CAA0B16B,EAA1B,EAA8Bs6B,QAA9B,EAAwC;AAC7C,QAAMjB,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAlB;;AAEA,MAAI,EAAE,MAAMrlH,0DAAE,CAACqa,MAAH,CAAUra,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmBH,sBAAnB,CAAV,CAAR,CAAJ,EAAoE;AAClE;AACA;AACA,UAAMv+I,0DAAE,CAACo3H,QAAH,CACJp3H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,WAAnB,CADI,EAEJ1+I,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmBH,sBAAnB,CAFI,CAAN;AAKA,UAAMv+I,0DAAE,CAACo3H,QAAH,CACJp3H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,eAAnB,CADI,EAEJ1+I,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,sBAAnB,CAFI,CAAN,CARkE,CAalE;AACA;;AACAsB,qBAAiB;AACjBC,sBAAkB,CAAC56B,EAAD,CAAlB;AAEA,UAAMgP,gDAAA,CAAgBhP,EAAhB,CAAN;AACD;;AAED,MAAIs6B,QAAQ,KAAKpB,sBAAjB,EAAyC;AACvC7lI,WAAO,CAACsrE,GAAR,CAAY,kBAAZ,EADuC,CAGvC;AACA;;AACA,UAAMhkF,0DAAE,CAACo3H,QAAH,CACJp3H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmBH,sBAAnB,CADI,EAEJv+I,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,WAAnB,CAFI,CAAN;AAIA,UAAM1+I,0DAAE,CAACo3H,QAAH,CACJp3H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,sBAAnB,CADI,EAEJ1+I,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,eAAnB,CAFI,CAAN;AAIA,UAAM1+I,0DAAE,CAAC03H,UAAH,CAAc13H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmBH,sBAAnB,CAAd,CAAN;AACA,UAAMv+I,0DAAE,CAAC03H,UAAH,CAAc13H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,sBAAnB,CAAd,CAAN,CAduC,CAgBvC;;AACA,QAAI;AACF,YAAMxN,qDAAA,EAAN;AACD,KAFD,CAEE,OAAO5pI,CAAP,EAAU,CAAE;;AACd+sH,sDAAA;AACD,GArBD,MAqBO;AACL37G,WAAO,CAACsrE,GAAR,CAAY,gBAAZ,EAA8B27D,QAA9B,EADK,CAGL;AACA;AACA;AACA;;AACA,UAAMtrB,gDAAA,CAAgBhP,EAAhB,CAAN;AACA,UAAMgP,gDAAA,CAAgB;AACpB/F,aAAO,EAAE,IADW;AAEpB4xB,yBAAmB,EAAE,IAFD;AAGpBC,kBAAY,EAAE;AAHM,KAAhB,CAAN,CARK,CAcL;;AACA,QAAI;AACF,YAAMjP,qDAAA,EAAN;AACD,KAFD,CAEE,OAAO5pI,CAAP,EAAU,CAAE;;AAEd+sH,sDAAA;AAEA,UAAMr0H,0DAAE,CAACo3H,QAAH,CACJp3H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,SAAnB,EAA8BiB,QAA9B,CADI,EAEJ3/I,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,WAAnB,CAFI,CAAN;AAID;AACF;AAEM,SAASuB,kBAAT,CAA4B56B,EAA5B,EAAgC;AACrC,MAAIm5B,eAAJ,EAAqB;AACnB4B,iBAAa,CAAC5B,eAAD,CAAb;AACD,GAHoC,CAKrC;;;AACAA,iBAAe,GAAG6B,WAAW,CAAC,YAAY;AACxC3nI,WAAO,CAACsrE,GAAR,CAAY,eAAZ;AACA,UAAM07D,UAAU,CAACr6B,EAAD,CAAhB;AACD,GAH4B,EAG1B,OAAO,EAAP,GAAY,EAHc,CAA7B;AAID;AAEM,SAAS26B,iBAAT,GAA6B;AAClCI,eAAa,CAAC5B,eAAD,CAAb;AACAA,iBAAe,GAAG,IAAlB;AACD,C;;;;;;;;;;;;AC5ND;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe8B,aAAf,CAA6BxwB,SAA7B,EAAwCywB,IAAxC,EAA8C;AAC5C,QAAM3uI,IAAI,GAAG,MAAMuhH,8CAAA,CAAcrD,SAAd,EAAyBywB,IAAzB,CAAnB;AACA,SAAO,OAAO3uI,IAAI,CAACr0B,KAAZ,KAAsB,QAAtB,GAAiCq0B,IAAI,CAACr0B,KAAtC,GAA8C,CAArD;AACD,C,CAED;AACA;AACA;AACA;;;AACA,SAASijK,kBAAT,CAA4BjtB,QAA5B,EAAsCktB,QAAtC,EAAgDx3J,MAAhD,EAAwD;AACtDA,QAAM,GAAGwD,IAAI,CAACe,GAAL,CAASf,IAAI,CAACge,GAAL,CAASxhB,MAAT,EAAiB,CAACw3J,QAAlB,CAAT,EAAsCh0J,IAAI,CAACge,GAAL,CAAS8oH,QAAT,EAAmB,CAAnB,CAAtC,CAAT;AACA,SAAOktB,QAAQ,GAAGx3J,MAAlB;AACD;;AAED,SAASy3J,cAAT,GAA0B;AACxB,aAAqBrsB,+CAAA,MAAoB,EAAzC;AAAA,MAAMssB,UAAN,QAAMA,UAAN;;AACA,SAAOA,UAAU,KAAK,QAAf,GAA0B,iBAA1B,GAA8C,cAArD;AACD;;AAED,SAASC,eAAT,GAA2B;AACzB,wBAAqBvsB,+CAAA,EAArB;AAAA,MAAMssB,UAAN,mBAAMA,UAAN;;AACA,SAAOA,UAAU,KAAK,QAAtB;AACD;;AAED,SAASE,YAAT,GAAwB;AACtB,yBAAqBxsB,+CAAA,EAArB;AAAA,MAAMssB,UAAN,oBAAMA,UAAN;;AACA,SAAOA,UAAU,KAAK,UAAtB;AACD;;AAED,SAASG,OAAT,CAAiBv4J,KAAjB,EAAwB;AACtB,SAAO6V,QAAQ,CAAC7V,KAAK,CAAC+U,OAAN,CAAc,GAAd,EAAmB,EAAnB,CAAD,CAAf;AACD;;AAED,SAASyjJ,aAAT,CAAuBh8B,KAAvB,EAA8Bx8H,KAA9B,EAAqC;AACnC,SAAOinI,uCAAA,CACJ;AACL;AACA,gBAAgBzK,KAAM;AACtB;AACA,GALS,EAML,CAACx8H,KAAD,CANK,CAAP;AAQD;;AAED,SAASy4J,YAAT,CAAsBlP,UAAtB,EAAkC;AAChC,wBAAwB3e,0CAAA,GAAY9uD,IAAZ,EAAxB;AAAA,MAAM48E,aAAN,mBAAMA,aAAN;;AACA,MAAIC,MAAM,GAAG,IAAb;;AACA,OAAK,IAAI34J,KAAT,IAAkB04J,aAAlB,EAAiC;AAC/B,QAAIC,MAAM,IAAI,IAAV,IAAkB34J,KAAK,GAAG24J,MAA9B,EAAsC;AACpCA,YAAM,GAAG34J,KAAT;AACD;AACF;;AACD,SAAO0pI,6DAAA,CAA0B6f,UAA1B,EAAsCoP,MAAtC,CAAP;AACD,C,CAED;;;AAEO,SAASC,SAAT,CAAmB;AAAE15B,UAAF;AAAYl/H;AAAZ,CAAnB,EAAwC;AAC7C,MAAIw8H,KAAK,GAAG27B,cAAc,EAA1B;AACA,MAAIjb,QAAQ,GAAGjW,6CAAA,CACZ,iBAAgBzK,KAAM,mCADV,EAEb,CAAC+7B,OAAO,CAACv4J,KAAD,CAAR,EAAiBk/H,QAAjB,CAFa,CAAf;AAIA,SAAOge,QAAQ,GAAGA,QAAQ,CAACx8I,MAAT,IAAmB,CAAtB,GAA0B,CAAzC;AACD;AAEM,SAAS8pI,SAAT,CAAmB;AAAEtL,UAAF;AAAYl/H,OAAZ;AAAmBU;AAAnB,CAAnB,EAAgD;AACrD,MAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9BA,UAAM,GAAG,CAAT;AACD;;AACD,QAAM87H,KAAK,GAAG27B,cAAc,EAA5B;AAEA,MAAIjb,QAAQ,GAAGjW,6CAAA,CACZ,kBAAiBzK,KAAM,mCADX,EAEb,CAAC+7B,OAAO,CAACv4J,KAAD,CAAR,EAAiBk/H,QAAjB,CAFa,CAAf;;AAIA,MAAIge,QAAJ,EAAc;AACZ,WAAOjW,0CAAA,CAAUzK,KAAV,EAAiB;AAAEM,QAAE,EAAEogB,QAAQ,CAACpgB,EAAf;AAAmBp8H;AAAnB,KAAjB,CAAP;AACD;;AACD,SAAOumI,0CAAA,CAAUzK,KAAV,EAAiB;AACtBM,MAAE,EAAG,GAAEy7B,OAAO,CAACv4J,KAAD,CAAQ,IAAGk/H,QAAS,EADZ;AAEtBl/H,SAAK,EAAEu4J,OAAO,CAACv4J,KAAD,CAFQ;AAGtBk/H,YAHsB;AAItBx+H;AAJsB,GAAjB,CAAP;AAMD;AAEM,SAASm4J,SAAT,CAAmB74J,KAAnB,EAA0BU,MAA1B,EAAkC;AACvC,MAAIw8I,QAAQ,GAAGjW,6CAAA,CACZ,gDADY,EAEb,CAACjnI,KAAD,CAFa,CAAf;;AAIA,MAAIk9I,QAAJ,EAAc;AACZ,WAAOjW,0CAAA,CAAU,oBAAV,EAAgC;AACrCnK,QAAE,EAAEogB,QAAQ,CAACpgB,EADwB;AAErCo7B,cAAQ,EAAEx3J;AAF2B,KAAhC,CAAP;AAID;;AACD,SAAOumI,0CAAA,CAAU,oBAAV,EAAgC;AAAEnK,MAAE,EAAE98H,KAAN;AAAak4J,YAAQ,EAAEx3J;AAAvB,GAAhC,CAAP;AACD;;AAED,SAASo4J,YAAT,CAAsBt8B,KAAtB,EAA6B0C,QAA7B,EAAuCl/H,KAAvC,EAA8Cs9H,IAA9C,EAAoD;AAClD,MAAI4f,QAAQ,GAAGjW,6CAAA,CACZ,kBAAiBzK,KAAM,mCADX,EAEb,CAACx8H,KAAD,EAAQk/H,QAAR,CAFa,CAAf;;AAIA,MAAIge,QAAJ,EAAc;AACZ,WAAOjW,0CAAA,CAAUzK,KAAV,EAAiB;AAAEM,QAAE,EAAEogB,QAAQ,CAACpgB,EAAf;AAAmB0K,eAAS,EAAElK,IAAI,GAAG,CAAH,GAAO;AAAzC,KAAjB,CAAP;AACD;;AACD,SAAO2J,0CAAA,CAAUzK,KAAV,EAAiB;AACtBM,MAAE,EAAG,GAAE98H,KAAM,IAAGk/H,QAAS,EADH;AAEtBl/H,SAFsB;AAGtBk/H,YAHsB;AAItBsI,aAAS,EAAElK,IAAI,GAAG,CAAH,GAAO;AAJA,GAAjB,CAAP;AAMD,C,CAED;;;AAEO,eAAey7B,iBAAf,CAAiC;AAAE/4J;AAAF,CAAjC,EAA4C;AACjD,MAAIg5J,SAAS,GAAGT,OAAO,CAAC7uB,wDAAA,CAAqB1pI,KAArB,CAAD,CAAvB;AACA,MAAIw8H,KAAK,GAAG27B,cAAc,EAA1B;AACA,MAAIc,UAAU,GAAG,MAAMT,aAAa,CAACh8B,KAAD,EAAQw8B,SAAR,CAApC;AAEA,QAAMluB,2DAAa,CAAC,MAAM;AACxBmuB,cAAU,CAACtxJ,OAAX,CAAmBuxJ,UAAU,IAAI;AAC/B,UAAIA,UAAU,CAAC33B,SAAX,KAAyB,CAAzB,IAA8B,CAAC82B,eAAe,EAAlD,EAAsD;AACpD;AACD;;AACD7tB,eAAS,CAAC;AACRtL,gBAAQ,EAAEg6B,UAAU,CAACh6B,QADb;AAERl/H,aAFQ;AAGRU,cAAM,EAAEw4J,UAAU,CAACx4J;AAHX,OAAD,CAAT;AAKD,KATD;AAUD,GAXkB,CAAnB;AAYD;AAEM,eAAey4J,OAAf,CAAuB;AAAEn5J;AAAF,CAAvB,EAAkC;AACvC,MAAI+hI,UAAU,GAAG,MAAMkF,uCAAA,CACrB,gDADqB,CAAvB;AAIA,QAAM6D,2DAAa,CAAC,MAAM;AACxB/I,cAAU,CAACp6H,OAAX,CAAmB25H,GAAG,IAAI;AACxB,UAAIA,GAAG,CAACC,SAAJ,KAAkB,CAAlB,IAAuB,CAAC82B,eAAe,EAA3C,EAA+C;AAC7C;AACD;;AACD7tB,eAAS,CAAC;AAAEtL,gBAAQ,EAAEoC,GAAG,CAACxE,EAAhB;AAAoB98H,aAApB;AAA2BU,cAAM,EAAE;AAAnC,OAAD,CAAT;AACD,KALD;AAMD,GAPkB,CAAnB;AAQD;AAEM,eAAe04J,YAAf,CAA4B;AAAEp5J;AAAF,CAA5B,EAAuC;AAC5C,MAAI+hI,UAAU,GAAG,MAAMkF,uCAAA,CACrB,gDADqB,CAAvB;AAIA,MAAIoyB,UAAU,GAAG3vB,wDAAA,CAAqB1pI,KAArB,CAAjB;AACA,MAAIs5J,UAAU,GAAG5vB,wDAAA,CAAqB2vB,UAArB,CAAjB;AACA,MAAIE,UAAU,GAAG7vB,wDAAA,CAAqB4vB,UAArB,CAAjB;AAEA,QAAMxuB,2DAAa,CAAC,YAAY;AAC9B,SAAK,IAAIxJ,GAAT,IAAgBS,UAAhB,EAA4B;AAC1B,UAAIT,GAAG,CAACC,SAAJ,KAAkB,CAAlB,IAAuB,CAAC82B,eAAe,EAA3C,EAA+C;AAC7C;AACD;;AAED,UAAImB,MAAM,GAAG,MAAMzB,aAAa,CAC9BruB,4DAAA,CAAyB2vB,UAAzB,CAD8B,EAE9B,gBAAgB/3B,GAAG,CAACxE,EAFU,CAAhC;AAIA,UAAI28B,MAAM,GAAG,MAAM1B,aAAa,CAC9BruB,4DAAA,CAAyB4vB,UAAzB,CAD8B,EAE9B,gBAAgBh4B,GAAG,CAACxE,EAFU,CAAhC;AAIA,UAAI48B,MAAM,GAAG,MAAM3B,aAAa,CAC9BruB,4DAAA,CAAyB6vB,UAAzB,CAD8B,EAE9B,gBAAgBj4B,GAAG,CAACxE,EAFU,CAAhC;AAKA,YAAM68B,GAAG,GAAI,CAACH,MAAM,GAAGC,MAAT,GAAkBC,MAAnB,IAA6B,CAA9B,GAAmC,CAA/C;AACAlvB,eAAS,CAAC;AAAEtL,gBAAQ,EAAEoC,GAAG,CAACxE,EAAhB;AAAoB98H,aAApB;AAA2BU,cAAM,EAAE,CAACi5J;AAApC,OAAD,CAAT;AACD;AACF,GAtBkB,CAAnB;AAuBD;AAEM,eAAeC,YAAf,CAA4B;AAAErQ;AAAF,CAA5B,EAA4C;AACjD,MAAI,CAAC8O,eAAe,EAApB,EAAwB;AACtB,UAAM,IAAIp+J,KAAJ,CAAU,iDAAV,CAAN;AACD;;AACD,MAAIuiI,KAAK,GAAG27B,cAAc,EAA1B;AACA,MAAIc,UAAU,GAAG,MAAMT,aAAa,CAACh8B,KAAD,EAAQ+7B,OAAO,CAAChP,UAAD,CAAf,CAApC;AACA,MAAI38I,MAAM,GAAG6rJ,YAAY,CAAC/uB,wDAAA,CAAqB6f,UAArB,EAAiC,CAAjC,CAAD,CAAzB;AAEAze,6DAAa,CAAC,MAAM;AAClB,SAAK,IAAI9qI,KAAT,IAAkB4M,MAAlB,EAA0B;AACxBqsJ,gBAAU,CAACtxJ,OAAX,CAAmB87H,MAAM,IAAI;AAC3B,YAAIA,MAAM,CAAClC,SAAP,KAAqB,CAArB,IAA0B,CAAC82B,eAAe,EAA9C,EAAkD;AAChD;AACD;;AACD7tB,iBAAS,CAAC;AAAEtL,kBAAQ,EAAEuE,MAAM,CAACvE,QAAnB;AAA6Bl/H,eAA7B;AAAoCU,gBAAM,EAAE+iI,MAAM,CAAC/iI;AAAnD,SAAD,CAAT;AACD,OALD;AAMD;AACF,GATY,CAAb;AAUD;AAEM,eAAem5J,gBAAf,CAAgC;AAAE75J,OAAF;AAASU;AAAT,CAAhC,EAAmD;AACxD,MAAI+zI,GAAG,GAAG,MAAMxN,yCAAA,CACd,sDADc,EAEd,CAACjnI,KAAD,CAFc,CAAhB;AAKA,MAAIunI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,CAAhB;AACA,MAAIgrI,QAAQ,GAAG,MAAM+sB,aAAa,CAACxwB,SAAD,EAAY,WAAZ,CAAlC;;AAEA,MAAIyD,QAAQ,GAAG,CAAf,EAAkB;AAChB,QAAI8uB,cAAc,GAAG7B,kBAAkB,CACrCjtB,QADqC,EAEpCyJ,GAAG,IAAIA,GAAG,CAACyjB,QAAZ,IAAyB,CAFY,EAGrCx3J,MAHqC,CAAvC;AAMA,UAAMm4J,SAAS,CAAC74J,KAAD,EAAQ85J,cAAR,CAAf;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD;AAEM,eAAeC,mBAAf,CAAmC;AAAExQ,YAAF;AAAc7oJ;AAAd,CAAnC,EAA2D;AAChE,MAAIkM,MAAM,GAAG6rJ,YAAY,CAAClP,UAAD,CAAzB;AAEA,QAAMze,2DAAa,CAAC,YAAY;AAC9B,SAAK,IAAI9qI,KAAT,IAAkB4M,MAAlB,EAA0B;AACxB,UAAI,EAAE,MAAMitJ,gBAAgB,CAAC;AAAE75J,aAAF;AAASU;AAAT,OAAD,CAAxB,CAAJ,EAAkD;AAChD;AACD;AACF;AACF,GANkB,CAAnB;AAOD;AAEM,eAAes5J,SAAf,CAAyB;AAAEh6J;AAAF,CAAzB,EAAoC;AACzC,QAAM64J,SAAS,CAAC74J,KAAD,EAAQ,CAAR,CAAf;AACD;AAEM,eAAei6J,iBAAf,CAAiC;AAAEj6J,OAAF;AAASu9B,IAAT;AAAa/jC;AAAb,CAAjC,EAAsD;AAC3D,MAAI+tI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,CAAhB;AACA,MAAIk6J,UAAU,GAAG,MAAMnC,aAAa,CAACxwB,SAAD,EAAY,YAAYhqG,EAAxB,CAApC;AACA,MAAI48H,QAAQ,GAAG,MAAMpC,aAAa,CAACxwB,SAAD,EAAY,cAAchqG,EAA1B,CAAlC;AACA,MAAI68H,YAAY,GAAG,MAAMrC,aAAa,CACpCxwB,SADoC,EAEpC/tI,IAAI,KAAK,gBAAT,GAA4B,WAA5B,GAA0C,cAAcA,IAFpB,CAAtC;;AAKA,MAAI2gK,QAAQ,IAAI,CAAZ,IAAiBC,YAAY,IAAI,CAArC,EAAwC;AACtC;AACD;;AAED,MAAIC,aAAa,GAAGn2J,IAAI,CAACe,GAAL,CAAS,CAACk1J,QAAV,EAAoBC,YAApB,CAApB,CAb2D,CAe3D;;AACA,MAAI5gK,IAAI,KAAK,gBAAb,EAA+B;AAC7B,UAAM8gK,YAAY,GAAG,MAAMvC,aAAa,CAACxwB,SAAD,EAAY,YAAY/tI,IAAxB,CAAxC;AACA,UAAMgxI,SAAS,CAAC;AACdtL,cAAQ,EAAE1lI,IADI;AAEdwG,WAFc;AAGdU,YAAM,EAAE45J,YAAY,GAAGD;AAHT,KAAD,CAAf;AAKD;;AAED,QAAM7vB,SAAS,CAAC;AAAEtL,YAAQ,EAAE3hG,EAAZ;AAAgBv9B,SAAhB;AAAuBU,UAAM,EAAEw5J,UAAU,GAAGG;AAA5C,GAAD,CAAf;AACD;AAEM,eAAeE,iBAAf,CAAiC;AAAEv6J,OAAF;AAASU,QAAT;AAAiBw+H;AAAjB,CAAjC,EAA8D;AACnE,MAAIqI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,CAAhB;AACA,MAAIm6J,QAAQ,GAAG,MAAMpC,aAAa,CAACxwB,SAAD,EAAY,WAAZ,CAAlC;AACA7mI,QAAM,GAAGwD,IAAI,CAACge,GAAL,CAAShe,IAAI,CAACe,GAAL,CAASvE,MAAT,EAAiBy5J,QAAjB,CAAT,EAAqC,CAArC,CAAT;AAEA,MAAI/2B,QAAQ,GAAG,MAAM20B,aAAa,CAACxwB,SAAD,EAAY,YAAYrI,QAAxB,CAAlC;AACA,QAAMsL,SAAS,CAAC;AAAEtL,YAAF;AAAYl/H,SAAZ;AAAmBU,UAAM,EAAE0iI,QAAQ,GAAG1iI;AAAtC,GAAD,CAAf;AACD;AAEM,eAAe85J,gBAAf,CAAgC;AAAEx6J,OAAF;AAASU,QAAT;AAAiBlH,MAAjB;AAAuB+jC;AAAvB,CAAhC,EAA6D;AAClE,QAAMgqG,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,CAAlB;AACA,QAAMs6J,YAAY,GAAG,MAAMvC,aAAa,CAACxwB,SAAD,EAAY,YAAY/tI,IAAxB,CAAxC;AAEA,QAAMgxI,SAAS,CAAC;AAAEtL,YAAQ,EAAE1lI,IAAZ;AAAkBwG,SAAlB;AAAyBU,UAAM,EAAE45J,YAAY,GAAG55J;AAAhD,GAAD,CAAf,CAJkE,CAMlE;AACA;;AACA,MAAI68B,EAAE,KAAK,gBAAX,EAA6B;AAC3B,UAAM28H,UAAU,GAAG,MAAMnC,aAAa,CAACxwB,SAAD,EAAY,YAAYhqG,EAAxB,CAAtC;AACA,UAAMitG,SAAS,CAAC;AAAEtL,cAAQ,EAAE3hG,EAAZ;AAAgBv9B,WAAhB;AAAuBU,YAAM,EAAEw5J,UAAU,GAAGx5J;AAA5C,KAAD,CAAf;AACD;AACF;AAEM,eAAe+5J,oBAAf,CAAoC;AAAElR,YAAF;AAAcrqB,UAAd;AAAwB5B;AAAxB,CAApC,EAAoE;AACzE,MAAId,KAAK,GAAG27B,cAAc,EAA1B;AACA,MAAIvrJ,MAAM,GAAG6rJ,YAAY,CAAClP,UAAD,CAAzB;AAEA,QAAMze,2DAAa,CAAC,MAAM;AACxB,SAAK,IAAI9qI,KAAT,IAAkB4M,MAAlB,EAA0B;AACxBksJ,kBAAY,CAACt8B,KAAD,EAAQ0C,QAAR,EAAkBq5B,OAAO,CAACv4J,KAAD,CAAzB,EAAkCs9H,IAAlC,CAAZ;AACD;AACF,GAJkB,CAAnB;AAKD,C;;;;;;;;;;;;ACxTD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGA,IAAI4sB,GAAG,GAAGM,sDAAS,EAAnB;AAEAN,GAAG,CAACnxJ,MAAJ,CAAW,sBAAX,EAAmC2hK,yDAAO,CAACC,sDAAQ,CAACljB,kDAAD,CAAT,CAA1C;AACAyS,GAAG,CAACnxJ,MAAJ,CACE,4BADF,EAEE2hK,yDAAO,CAACC,sDAAQ,CAACljB,0DAAD,CAAT,CAFT;AAIAyS,GAAG,CAACnxJ,MAAJ,CAAW,iBAAX,EAA8B2hK,yDAAO,CAACC,sDAAQ,CAACljB,gDAAD,CAAT,CAArC;AACAyS,GAAG,CAACnxJ,MAAJ,CAAW,uBAAX,EAAoC2hK,yDAAO,CAACC,sDAAQ,CAACljB,qDAAD,CAAT,CAA3C;AACAyS,GAAG,CAACnxJ,MAAJ,CAAW,uBAAX,EAAoC2hK,yDAAO,CAACC,sDAAQ,CAACljB,qDAAD,CAAT,CAA3C;AACAyS,GAAG,CAACnxJ,MAAJ,CACE,4BADF,EAEE2hK,yDAAO,CAACC,sDAAQ,CAACljB,yDAAD,CAAT,CAFT;AAIAyS,GAAG,CAACnxJ,MAAJ,CACE,+BADF,EAEE2hK,yDAAO,CAACC,sDAAQ,CAACljB,4DAAD,CAAT,CAFT;AAIAyS,GAAG,CAACnxJ,MAAJ,CAAW,mBAAX,EAAgC2hK,yDAAO,CAACC,sDAAQ,CAACljB,kDAAD,CAAT,CAAvC;AACAyS,GAAG,CAACnxJ,MAAJ,CACE,2BADF,EAEE2hK,yDAAO,CAACC,sDAAQ,CAACljB,0DAAD,CAAT,CAFT;AAIAyS,GAAG,CAACnxJ,MAAJ,CACE,2BADF,EAEE2hK,yDAAO,CAACC,sDAAQ,CAACljB,0DAAD,CAAT,CAFT;AAIAyS,GAAG,CAACnxJ,MAAJ,CACE,0BADF,EAEE2hK,yDAAO,CAACC,sDAAQ,CAACljB,yDAAD,CAAT,CAFT;AAIAyS,GAAG,CAACnxJ,MAAJ,CACE,sBADF,EAEE2hK,yDAAO,CAACC,sDAAQ,CAACljB,6DAAD,CAAT,CAFT;AAKeyS,kEAAf,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS0Q,YAAT,CAAsBzd,OAAtB,EAA+B;AAC7B,QAAM0d,MAAM,GAAG,EAAf;AACA1d,SAAO,CAACx1I,OAAR,CAAgB2U,MAAM,IAAI;AACxBjkB,UAAM,CAACiS,IAAP,CAAYgS,MAAZ,EAAoB3U,OAApB,CAA4BijI,KAAK,IAAI;AACnC,UAAIiwB,MAAM,CAACjwB,KAAD,CAAV,EAAmB;AACjBiwB,cAAM,CAACjwB,KAAD,CAAN,mCAAqBiwB,MAAM,CAACjwB,KAAD,CAA3B,GAAuCtuH,MAAM,CAACsuH,KAAD,CAA7C;AACD,OAFD,MAEO;AACLiwB,cAAM,CAACjwB,KAAD,CAAN,GAAgBtuH,MAAM,CAACsuH,KAAD,CAAtB;AACD;AACF,KAND;AAOD,GARD;AASA,SAAOiwB,MAAP;AACD;;AAEM,SAASC,aAAT,GAAyB;AAC9B,MAAIh/E,IAAI,GAAG8uD,0CAAA,GAAY9uD,IAAZ,EAAX;AACA,SAAOA,IAAI,CAACs8E,UAAL,IAAmB,UAA1B;AACD;AAEM,SAAS2C,cAAT,CAAwBlmK,KAAxB,EAA+BS,GAA/B,EAAoC;AACzCT,OAAK,GAAG60I,uDAAA,CAAoB70I,KAApB,CAAR;AACAS,KAAG,GAAGo0I,uDAAA,CAAoBp0I,GAApB,CAAN,CAFyC,CAIzC;AACA;AACA;;AACA,MAAIT,KAAK,GAAGS,GAAZ,EAAiB;AACfT,SAAK,GAAGS,GAAR;AACD,GATwC,CAWzC;AACA;AACA;AACA;;;AACAT,OAAK,GAAG60I,wDAAA,CAAqB70I,KAArB,EAA4B,CAA5B,CAAR;AACAS,KAAG,GAAGo0I,wDAAA,CAAqBp0I,GAArB,EAA0B,EAA1B,CAAN;AAEA,SAAO;AAAET,SAAF;AAASS,OAAT;AAAc+5E,SAAK,EAAEq6D,6DAAA,CAA0B70I,KAA1B,EAAiCS,GAAjC;AAArB,GAAP;AACD;;AAED,SAAS2pI,cAAT,CAAwBqC,GAAxB,EAA6BiG,SAA7B,EAAwCyzB,aAAxC,EAAuDnmK,KAAvD,EAA8DS,GAA9D,EAAmE;AACjEs1I,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,gBAAgBjG,GAAG,CAACxE,EAAzD,EAA6D;AAC3Do+B,gBAAY,EAAE,CAD6C;AAE3D7vJ,OAAG,EAAE,MAAM;AACT;AACA,UAAIm5I,IAAI,GAAGvd,4CAAA,CACR;AACT;AACA,2BAA2BpyI,KAAM,kBAAiBS,GAAI;AACtD,6BAA6BgsI,GAAG,CAACxE,EAAG,uBAJnB,EAKT,EALS,EAMT,IANS,CAAX;AAQA,UAAI2X,GAAG,GAAG+P,IAAI,CAAC,CAAD,CAAd;AACA,UAAI9jJ,MAAM,GAAG+zI,GAAG,GAAGA,GAAG,CAAC/zI,MAAP,GAAgB,CAAhC;AACA,aAAOA,MAAM,IAAI,CAAjB;AACD;AAf0D,GAA7D;;AAkBA,MAAIo6J,aAAa,OAAO,UAAxB,EAAoC;AAClCK,4DAAA,CAAwB75B,GAAxB,EAA6BiG,SAA7B,EAAwCyzB,aAAxC;AACD,GAFD,MAEO;AACLI,0DAAA,CAAsB95B,GAAtB,EAA2BiG,SAA3B,EAAsCyzB,aAAtC;AACD;AACF;;AAED,SAASp8B,mBAAT,CAA6BC,KAA7B,EAAoC0I,SAApC,EAA+C;AAC7CqD,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,sBAAsB1I,KAAK,CAAC/B,EAAjE,EAAqE;AACnEo+B,gBAAY,EAAE,CADqD;AAEnE5K,gBAAY,EAAEzxB,KAAK,CAACkD,UAAN,CAAiBvpI,GAAjB,CAAqB8oI,GAAG,IAAK,cAAaA,GAAG,CAACxE,EAAG,EAAjD,CAFqD;AAGnEzxH,OAAG,EAAEgwJ,gDAAUA;AAHoD,GAArE;;AAMA,MAAI,CAACx8B,KAAK,CAAC0C,SAAP,IAAoBu5B,aAAa,OAAO,UAA5C,EAAwD;AACtDlwB,8CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,kBAAkB1I,KAAK,CAAC/B,EAA7D,EAAiE;AAC/Do+B,kBAAY,EAAE,CADiD;AAE/D5K,kBAAY,EAAEzxB,KAAK,CAACkD,UAAN,CAAiBvpI,GAAjB,CAAqB8oI,GAAG,IAAK,UAASA,GAAG,CAACxE,EAAG,EAA7C,CAFiD;AAG/DzxH,SAAG,EAAEgwJ,gDAAUA;AAHgD,KAAjE;AAMAzwB,8CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,oBAAoB1I,KAAK,CAAC/B,EAA/D,EAAmE;AACjEo+B,kBAAY,EAAE,CADmD;AAEjE5K,kBAAY,EAAEzxB,KAAK,CAACkD,UAAN,CAAiBvpI,GAAjB,CAAqB8oI,GAAG,IAAK,YAAWA,GAAG,CAACxE,EAAG,EAA/C,CAFmD;AAGjEzxH,SAAG,EAAEgwJ,gDAAUA;AAHkD,KAAnE;AAKD;AACF;;AAED,SAASC,mBAAT,CAA6B1uJ,MAA7B,EAAqC2uJ,QAArC,EAA+Cta,QAA/C,EAAyD;AACvD,MAAI,CAACsa,QAAD,IAAaA,QAAQ,CAACz6B,SAAT,KAAuBmgB,QAAQ,CAACngB,SAAjD,EAA4D;AAC1D,QAAI0jB,IAAI,GAAGvd,4CAAA,CACR;AACP;AACA;AACA,OAJe,EAKT,CAACga,QAAQ,CAACnkB,EAAV,CALS,EAMT,IANS,CAAX;AASAlwH,UAAM,CAACjF,OAAP,CAAe3H,KAAK,IAAI;AACtB,UAAIunI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,EAAgC86J,aAAa,EAA7C,CAAhB;AAEAtW,UAAI,CAAC78I,OAAL,CAAa8sI,GAAG,IAAI;AAClB7J,kDAAA,GAEG4wB,SAFH,CAEa5T,qEAAW,CAACrgB,SAAD,EAAY,gBAAgBkN,GAAG,CAACvV,QAAhC,CAFxB;AAGD,OAJD;AAKD,KARD;AASD;AACF;;AAED,SAASu8B,uBAAT,CAAiCp5B,WAAjC,EAA8Cq5B,aAA9C,EAA6D;AAC3D,MACE,CAACA,aAAa,CAACjuJ,GAAd,CAAkB,MAAlB,KACCiuJ,aAAa,CAACjuJ,GAAd,CAAkB,MAAlB,CADD,IAECiuJ,aAAa,CAACjuJ,GAAd,CAAkB,QAAlB,CAFD,IAGCiuJ,aAAa,CAACjuJ,GAAd,CAAkB,UAAlB,CAHD,IAICiuJ,aAAa,CAACjuJ,GAAd,CAAkB,WAAlB,CAJD,IAKCiuJ,aAAa,CAACjuJ,GAAd,CAAkB,UAAlB,CALF,KAMA40H,WAAW,CAAC5qI,IANZ,IAOA4qI,WAAW,CAACnD,QARd,EASE;AACA,QAAIl/H,KAAK,GAAG0pI,4DAAA,CAAyBzC,gDAAA,CAAgB5E,WAAW,CAAC5qI,IAA5B,CAAzB,CAAZ;AACA,QAAI8vI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,EAAgC86J,aAAa,EAA7C,CAAhB;AAEAlwB,8CAAA,GAEG4wB,SAFH,CAEa5T,qEAAW,CAACrgB,SAAD,EAAY,gBAAgBlF,WAAW,CAACnD,QAAxC,CAFxB;AAGD;AACF;;AAED,SAASy8B,2BAAT,CAAqC/uJ,MAArC,EAA6C2uJ,QAA7C,EAAuDta,QAAvD,EAAiE;AAC/Dr0I,QAAM,CAACjF,OAAP,CAAe3H,KAAK,IAAI;AACtB,QAAIunI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,EAAgC86J,aAAa,EAA7C,CAAhB;;AACA,QAAIS,QAAJ,EAAc;AACZ3wB,gDAAA,GAEG4wB,SAFH,CAEa5T,qEAAW,CAACrgB,SAAD,EAAY,gBAAgBg0B,QAAQ,CAAC94B,UAArC,CAFxB;AAGD;;AACDmI,8CAAA,GAEG4wB,SAFH,CAEa5T,qEAAW,CAACrgB,SAAD,EAAY,gBAAgB0Z,QAAQ,CAACxe,UAArC,CAFxB;AAGD,GAVD;AAWD;;AAED,SAASm5B,oBAAT,CAA8BhvJ,MAA9B,EAAsC2uJ,QAAtC,EAAgDta,QAAhD,EAA0D;AACxD,WAAS4a,OAAT,CAAiBt0B,SAAjB,EAA4BxB,OAA5B,EAAqClC,KAArC,EAA4C;AAC1C+G,8CAAA,GAEGkxB,eAFH,CAEmBv0B,SAFnB,EAE+B,oBAAmBxB,OAAQ,EAF1D,EAE6D,CACxD,cAAalC,KAAM,EADqC,CAF7D;AAKA+G,8CAAA,GAEGkxB,eAFH,CAEmBv0B,SAFnB,EAE+B,gBAAexB,OAAQ,EAFtD,EAEyD,CACpD,UAASlC,KAAM,EADqC,CAFzD;AAKA+G,8CAAA,GAEGkxB,eAFH,CAEmBv0B,SAFnB,EAE+B,kBAAiBxB,OAAQ,EAFxD,EAE2D,CACtD,YAAWlC,KAAM,EADqC,CAF3D;AAKD;;AAED,WAASk4B,UAAT,CAAoBx0B,SAApB,EAA+BxB,OAA/B,EAAwClC,KAAxC,EAA+C;AAC7C+G,8CAAA,GAEGoxB,kBAFH,CAEsBz0B,SAFtB,EAEkC,oBAAmBxB,OAAQ,EAF7D,EAEgE,CAC3D,cAAalC,KAAM,EADwC,CAFhE;AAKA+G,8CAAA,GAEGoxB,kBAFH,CAEsBz0B,SAFtB,EAEkC,gBAAexB,OAAQ,EAFzD,EAE4D,CACvD,UAASlC,KAAM,EADwC,CAF5D;AAKA+G,8CAAA,GAEGoxB,kBAFH,CAEsBz0B,SAFtB,EAEkC,kBAAiBxB,OAAQ,EAF3D,EAE8D,CACzD,YAAWlC,KAAM,EADwC,CAF9D;AAKD;;AAED,MAAIu0B,UAAU,GAAG0C,aAAa,EAA9B;;AAEA,MAAIS,QAAQ,IAAIA,QAAQ,CAACpa,SAAT,KAAuB,CAAnC,IAAwCF,QAAQ,CAACE,SAAT,KAAuB,CAAnE,EAAsE;AACpE,QAAIrkB,EAAE,GAAGmkB,QAAQ,CAACnkB,EAAlB;AACA,QAAIiJ,OAAO,GAAGkb,QAAQ,CAACuG,SAAvB;AAEA56I,UAAM,CAACjF,OAAP,CAAe3H,KAAK,IAAI;AACtB,UAAIunI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,CAAhB;AACA+7J,gBAAU,CAACx0B,SAAD,EAAYxB,OAAZ,EAAqBjJ,EAArB,CAAV;AACD,KAHD;AAID,GARD,MAQO,IACLmkB,QAAQ,CAACE,SAAT,KAAuB,CAAvB,KACC,CAACoa,QAAD,IAAaA,QAAQ,CAACpa,SAAT,KAAuB,CADrC,CADK,EAGL;AACA,QAAIiX,UAAU,KAAK,UAAnB,EAA+B;AAC7B+C,mEAAA,CAA6Bla,QAA7B,EAAuCr0I,MAAvC;AACD;;AAEDA,UAAM,CAACjF,OAAP,CAAe3H,KAAK,IAAI;AACtB,UAAIg5J,SAAS,GAAGtvB,wDAAA,CAAqB1pI,KAArB,CAAhB;AACA,UAAIg7J,aAAa,GAAGtxB,4DAAA,CAAyBsvB,SAAzB,EAAoCZ,UAApC,CAApB;AACA,UAAI7wB,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,EAAgCo4J,UAAhC,CAAhB;;AACA,+BAAqB1uB,qDAAA,CAAkB1pI,KAAlB,CAArB;AAAA,UAAMnL,KAAN,sBAAMA,KAAN;AAAA,UAAaS,GAAb,sBAAaA,GAAb;;AAEA2pI,oBAAc,CAACgiB,QAAD,EAAW1Z,SAAX,EAAsByzB,aAAtB,EAAqCnmK,KAArC,EAA4CS,GAA5C,CAAd;AAEA,UAAIwnI,EAAE,GAAGmkB,QAAQ,CAACnkB,EAAlB;AACA,UAAIiJ,OAAO,GAAGkb,QAAQ,CAACuG,SAAvB;;AAEA,UAAIsT,aAAa,OAAO,UAAxB,EAAoC;AAClClwB,kDAAA,GAEGkxB,eAFH,CAEmBv0B,SAFnB,EAE8B,sBAF9B,EAEsD,CACjD,GAAEyzB,aAAc,aAAYl+B,EAAG,EADkB,EAEjD,GAAEk+B,aAAc,cAAal+B,EAAG,EAFiB,CAFtD;AAMD;;AAED++B,aAAO,CAACt0B,SAAD,EAAYxB,OAAZ,EAAqBjJ,EAArB,CAAP;AACD,KArBD;AAsBD,GA9BM,MA8BA,IAAIy+B,QAAQ,IAAIA,QAAQ,CAAC/T,SAAT,KAAuBvG,QAAQ,CAACuG,SAAhD,EAA2D;AAChE;AACA,QAAI1qB,EAAE,GAAGmkB,QAAQ,CAACnkB,EAAlB;AAEAlwH,UAAM,CAACjF,OAAP,CAAe3H,KAAK,IAAI;AACtB,UAAIunI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,EAAgCo4J,UAAhC,CAAhB;AACA2D,gBAAU,CAACx0B,SAAD,EAAYg0B,QAAQ,CAAC/T,SAArB,EAAgC1qB,EAAhC,CAAV;AACA++B,aAAO,CAACt0B,SAAD,EAAY0Z,QAAQ,CAACuG,SAArB,EAAgC1qB,EAAhC,CAAP;AACD,KAJD;AAKD;AACF;;AAED,SAASm/B,yBAAT,CAAmCrvJ,MAAnC,EAA2C2uJ,QAA3C,EAAqDta,QAArD,EAA+D;AAC7D,MAAImX,UAAU,GAAG0C,aAAa,EAA9B;;AAEA,WAASe,OAAT,CAAiBt0B,SAAjB,EAA4BxB,OAA5B,EAAqC;AACnC6E,8CAAA,GAEGkxB,eAFH,CAEmBv0B,SAFnB,EAE8B,gBAF9B,EAEgD,CAC3C,gBAAexB,OAAQ,EADoB,CAFhD;AAKA6E,8CAAA,GAEGkxB,eAFH,CAEmBv0B,SAFnB,EAE8B,aAF9B,EAE6C,CACxC,oBAAmBxB,OAAQ,EADa,CAF7C;AAKA6E,8CAAA,GAEGkxB,eAFH,CAEmBv0B,SAFnB,EAE8B,gBAF9B,EAEgD,CAC3C,kBAAiBxB,OAAQ,EADkB,CAFhD;AAKD;;AAED,WAASg2B,UAAT,CAAoBx0B,SAApB,EAA+BxB,OAA/B,EAAwC;AACtC6E,8CAAA,GAEGoxB,kBAFH,CAEsBz0B,SAFtB,EAEiC,gBAFjC,EAEmD,CAC9C,gBAAexB,OAAQ,EADuB,CAFnD;AAKA6E,8CAAA,GAEGoxB,kBAFH,CAEsBz0B,SAFtB,EAEiC,aAFjC,EAEgD,CAC3C,oBAAmBxB,OAAQ,EADgB,CAFhD;AAKA6E,8CAAA,GAEGoxB,kBAFH,CAEsBz0B,SAFtB,EAEiC,gBAFjC,EAEmD,CAC9C,kBAAiBxB,OAAQ,EADqB,CAFnD;AAKD;;AAED,MAAIkb,QAAQ,CAACE,SAAT,KAAuB,CAAvB,IAA4Boa,QAA5B,IAAwCA,QAAQ,CAACpa,SAAT,KAAuB,CAAnE,EAAsE;AACpE,QAAIrkB,EAAE,GAAGmkB,QAAQ,CAACnkB,EAAlB;AACAlwH,UAAM,CAACjF,OAAP,CAAe3H,KAAK,IAAI;AACtB,UAAIunI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,EAAgCo4J,UAAhC,CAAhB;AACA2D,gBAAU,CAACx0B,SAAD,EAAYzK,EAAZ,CAAV;AACD,KAHD;AAID,GAND,MAMO,IACLmkB,QAAQ,CAACE,SAAT,KAAuB,CAAvB,KACC,CAACoa,QAAD,IAAaA,QAAQ,CAACpa,SAAT,KAAuB,CADrC,CADK,EAGL;AACA,QAAItiB,KAAK,GAAGoiB,QAAZ;;AAEA,QAAI,CAACpiB,KAAK,CAAC0C,SAAP,IAAoB62B,UAAU,KAAK,UAAvC,EAAmD;AACjDxrJ,YAAM,CAACjF,OAAP,CAAe3H,KAAK,IAAI;AACtB,YAAIunI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,EAAgCo4J,UAAhC,CAAhB,CADsB,CAGtB;AACA;AACA;AACA;;AACA,YAAIr2B,UAAU,GAAGkF,4CAAA,CACf,gEADe,EAEf,CAACpI,KAAK,CAAC/B,EAAP,CAFe,EAGf,IAHe,CAAjB;AAKA8B,2BAAmB,iCAAMC,KAAN;AAAakD;AAAb,YAA2BwF,SAA3B,CAAnB;AAEAs0B,eAAO,CAACt0B,SAAD,EAAY1I,KAAK,CAAC/B,EAAlB,CAAP;AACD,OAfD;AAgBD;AACF;AACF;;AAED,SAASo/B,uBAAT,CAAiCz4B,MAAjC,EAAyC;AACvC,MAAI8D,SAAS,GAAGmC,4DAAA,CAAyBjG,MAAM,CAAC3G,EAAhC,CAAhB;AACA8N,4CAAA,GAAY3vI,GAAZ,CAAiB,GAAEssI,SAAU,WAA7B,EAAyC9D,MAAM,CAACy0B,QAAhD;AACD;;AAED,SAASiE,kBAAT,CAA4B14B,MAA5B,EAAoC;AAClC,MAAIA,MAAM,CAACvE,QAAX,EAAqB;AACnB,QAAIqI,SAAS,GAAGmC,4DAAA,CAAyBjG,MAAM,CAACzjI,KAAP,CAAaqS,QAAb,EAAzB,CAAhB;AACAu4H,8CAAA,GAEG3vI,GAFH,CAEQ,GAAEssI,SAAU,WAAU9D,MAAM,CAACvE,QAAS,EAF9C,EAEiDuE,MAAM,CAAC/iI,MAAP,IAAiB,CAFlE;AAGAkqI,8CAAA,GAEG3vI,GAFH,CAGK,GAAEssI,SAAU,cAAa9D,MAAM,CAACvE,QAAS,EAH9C,EAIIuE,MAAM,CAAC+D,SAAP,KAAqB,CAArB,GAAyB,IAAzB,GAAgC,KAJpC;AAMD;AACF;;AAEM,SAAS40B,oBAAT,CAA8Brb,SAA9B,EAAyCC,SAAzC,EAAoD;AACzD,wBAAoCpW,0CAAA,GAAY9uD,IAAZ,EAApC;AAAA,8CAAM48E,aAAN;AAAA,MAAMA,aAAN,sCAAsB,IAAI5oJ,GAAJ,EAAtB;;AACA86H,yDAAA;;AAEA,MAAI;AACFoW,aAAS,CAACr5I,OAAV,CAAkB,CAACuT,KAAD,EAAQshH,KAAR,KAAkB;AAClC,UAAI6/B,GAAG,GAAGtb,SAAS,CAACrpJ,GAAV,CAAc8kI,KAAd,CAAV;AAEAthH,WAAK,CAACvT,OAAN,CAAcs5I,QAAQ,IAAI;AACxB,YAAIsa,QAAQ,GAAGc,GAAG,IAAIA,GAAG,CAAC3kK,GAAJ,CAAQupJ,QAAQ,CAACnkB,EAAjB,CAAtB;;AAEA,YAAIN,KAAK,KAAK,oBAAd,EAAoC;AAClC0/B,iCAAuB,CAACjb,QAAD,CAAvB;AACD,SAFD,MAEO,IAAIzkB,KAAK,KAAK,cAAV,IAA4BA,KAAK,KAAK,iBAA1C,EAA6D;AAClE2/B,4BAAkB,CAAClb,QAAD,CAAlB;AACD,SAFM,MAEA,IAAIzkB,KAAK,KAAK,cAAd,EAA8B;AACnC,cAAIxnG,OAAO,GAAG,IAAIllB,GAAJ,CACZzX,MAAM,CAACiS,IAAP,CAAYgyJ,qEAAgB,CAACf,QAAQ,IAAI,EAAb,EAAiBta,QAAjB,CAAhB,IAA8C,EAA1D,CADY,CAAd;;AAIA,cAAIsa,QAAJ,EAAc;AACZE,mCAAuB,CAACF,QAAD,EAAWvmI,OAAX,CAAvB;AACD;;AACDymI,iCAAuB,CAACxa,QAAD,EAAWjsH,OAAX,CAAvB;AACD,SATM,MASA,IAAIwnG,KAAK,KAAK,kBAAd,EAAkC;AACvCm/B,qCAA2B,CAACjD,aAAD,EAAgB6C,QAAhB,EAA0Bta,QAA1B,CAA3B;AACD,SAFM,MAEA,IAAIzkB,KAAK,KAAK,YAAd,EAA4B;AACjCo/B,8BAAoB,CAAClD,aAAD,EAAgB6C,QAAhB,EAA0Bta,QAA1B,CAApB;AACD,SAFM,MAEA,IAAIzkB,KAAK,KAAK,iBAAd,EAAiC;AACtCy/B,mCAAyB,CAACvD,aAAD,EAAgB6C,QAAhB,EAA0Bta,QAA1B,CAAzB;AACD,SAFM,MAEA,IAAIzkB,KAAK,KAAK,UAAd,EAA0B;AAC/B8+B,6BAAmB,CAAC5C,aAAD,EAAgB6C,QAAhB,EAA0Bta,QAA1B,CAAnB;AACD;AACF,OAzBD;AA0BD,KA7BD;AA8BD,GA/BD,SA+BU;AACRrW,yDAAA;AACD;AACF;AAEM,eAAe2xB,UAAf,CAA0BC,WAA1B,EAAuC/5B,UAAvC,EAAmD;AACxD,yBAAgCmI,0CAAA,GAAY9uD,IAAZ,EAAhC;AAAA,MAAqBlvE,MAArB,oBAAM8rJ,aAAN;;AAEA,GAAC,GAAG9rJ,MAAJ,EAAYpU,GAAZ,CAAgBwH,KAAK,IAAI;AACvB,QAAIy8J,UAAU,GAAGD,WAAW,CACzBhkK,GADc,CACVskI,EAAE,IAAI;AACT,aAAO2N,yDAAA,CAAwB;AAAEzqI,aAAF;AAASk/H,gBAAQ,EAAEpC;AAAnB,OAAxB,CAAP;AACD,KAHc,EAIdpnI,MAJc,CAIP,CAACoyB,KAAD,EAAQ9yB,KAAR,KAAkB8yB,KAAK,GAAG9yB,KAJnB,EAI0B,CAJ1B,CAAjB;AAMA,QAAI0nK,aAAa,GAAGjyB,yDAAA,CAAwB;AAC1CzqI,WAD0C;AAE1Ck/H,cAAQ,EAAEuD;AAFgC,KAAxB,CAApB;AAKAgI,6DAAA,CAAwB;AACtBzqI,WADsB;AAEtBk/H,cAAQ,EAAEuD,UAFY;AAGtB/hI,YAAM,EAAE+7J,UAAU,GAAGC;AAHC,KAAxB;AAKD,GAjBD;AAkBD;AAEM,eAAeryB,YAAf,CAA4Bz9H,MAA5B,EAAoC;AACzC,QAAMm1H,UAAU,GAAG,MAAMkF,iDAAA,EAAzB;AACA,QAAM8B,MAAM,GAAG,MAAM9B,wDAAA,EAArB;AAEA2D,yDAAA;AACA,MAAI9uD,IAAI,GAAG8uD,0CAAA,GAAY9uD,IAAZ,EAAX;AACAA,MAAI,CAAC48E,aAAL,GAAqB58E,IAAI,CAAC48E,aAAL,IAAsB,IAAI5oJ,GAAJ,EAA3C;AAEA,MAAIsoJ,UAAU,GAAG0C,aAAa,EAA9B;;AAEA,MAAI1C,UAAU,KAAK,UAAnB,EAA+B;AAC7B+C,0DAAA,CAAsBr/E,IAAtB,EAA4BimD,UAA5B,EAAwCn1H,MAAxC;AACD;;AAEDA,QAAM,CAACjF,OAAP,CAAe3H,KAAK,IAAI;AACtB,QAAI,CAAC87E,IAAI,CAAC48E,aAAL,CAAmBjrJ,GAAnB,CAAuBzN,KAAvB,CAAL,EAAoC;AAClC,UAAIg5J,SAAS,GAAGtvB,wDAAA,CAAqB1pI,KAArB,CAAhB;;AACA,gCAAqB0pI,qDAAA,CAAkB1pI,KAAlB,CAArB;AAAA,UAAMnL,KAAN,uBAAMA,KAAN;AAAA,UAAaS,GAAb,uBAAaA,GAAb;;AACA,UAAIiyI,SAAS,GAAGmC,4DAAA,CAAyB1pI,KAAzB,EAAgCo4J,UAAhC,CAAhB;AACA,UAAI4C,aAAa,GAAGtxB,4DAAA,CAAyBsvB,SAAzB,EAAoCZ,UAApC,CAApB;AAEAr2B,gBAAU,CAACp6H,OAAX,CAAmB25H,GAAG,IAAI;AACxBrC,sBAAc,CAACqC,GAAD,EAAMiG,SAAN,EAAiByzB,aAAjB,EAAgCnmK,KAAhC,EAAuCS,GAAvC,CAAd;AACD,OAFD;AAGAyzI,YAAM,CAACphI,OAAP,CAAek3H,KAAK,IAAI;AACtBD,2BAAmB,CAACC,KAAD,EAAQ0I,SAAR,CAAnB;AACD,OAFD;;AAIA,UAAI6wB,UAAU,KAAK,UAAnB,EAA+B;AAC7B+C,+DAAA,CAAuBpyB,MAAvB,EAA+BhH,UAA/B,EAA2Ci5B,aAA3C,EAA0DzzB,SAA1D;AACD,OAFD,MAEO;AACL6zB,6DAAA,CAAqBryB,MAArB,EAA6BhH,UAA7B,EAAyCwF,SAAzC;AACD;;AAEDzrD,UAAI,CAAC48E,aAAL,CAAmBlhK,GAAnB,CAAuBwI,KAAvB;AACD;AACF,GAtBD;AAwBA4qI,4CAAA,GAAY+xB,OAAZ,CAAoB7gF,IAApB;AACA8uD,uDAAA,GAvCyC,CAyCzC;AACA;AACA;;AACA,QAAMA,wDAAA,EAAN;AACD;AAEM,eAAegyB,gBAAf,GAAkC;AACvC,MAAIC,mBAAmB,GAAG,MAAM51B,yCAAA,CAC9B,2FAD8B,CAAhC;AAGA,MAAI2C,YAAY,GACdizB,mBAAmB,IAAI51B,gDAAA,CAAgB41B,mBAAmB,CAACplK,IAApC,CADzB;AAEA,MAAI4Z,YAAY,GAAGq4H,2DAAA,EAAnB,CANuC,CAQvC;AACA;AACA;;AACA,wBAA4BqxB,cAAc,CACxCnxB,YAAY,IAAIv4H,YADwB,EAExCA,YAFwC,CAA1C;AAAA,MAAMxc,KAAN,mBAAMA,KAAN;AAAA,MAAaS,GAAb,mBAAaA,GAAb;AAAA,MAAkB+5E,KAAlB,mBAAkBA,KAAlB;;AAKA,MAAIyM,IAAI,GAAG8uD,0CAAA,GAAY9uD,IAAZ,EAAX;AACA,MAAI48E,aAAa,GAAG58E,IAAI,CAAC48E,aAAL,IAAsB,IAAI5oJ,GAAJ,EAA1C;AACA,MAAIgtJ,SAAS,GAAGztF,KAAK,CAACnzE,MAAN,CAAaywC,CAAC,IAAI,CAAC+rH,aAAa,CAACjrJ,GAAd,CAAkBk/B,CAAlB,CAAnB,CAAhB;;AAEA,MAAImwH,SAAS,CAACrhK,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM4uI,YAAY,CAACh7D,KAAD,CAAlB;AACD;;AAED,SAAO;AAAEx6E,SAAF;AAASS;AAAT,GAAP;AACD;AAEM,eAAeynK,OAAf,CAAuBnrJ,IAAvB,EAA6B;AAClC,MAAIkqE,IAAI,GAAG8uD,0CAAA,GAAY9uD,IAAZ,EAAX;;AACA,MAAIlqE,IAAI,KAAKkqE,IAAI,CAACs8E,UAAlB,EAA8B;AAC5B;AACD;;AAEDt8E,MAAI,CAACs8E,UAAL,GAAkBxmJ,IAAlB;AACAkqE,MAAI,CAAC48E,aAAL,GAAqB,IAAI5oJ,GAAJ,EAArB,CAPkC,CASlC;;AACA,MAAIktJ,KAAK,GAAGpyB,0CAAA,GAAYqyB,QAAZ,EAAZ;AACAh2B,iDAAA,CAAe,MAAM;AACnB,SAAK,IAAIxoI,IAAT,IAAiBu+J,KAAK,CAAC1yJ,IAAN,EAAjB,EAA+B;AAC7B,wBAA4B7L,IAAI,CAACqX,KAAL,CAAW,GAAX,CAA5B;AAAA;AAAA,UAAKyxH,SAAL;AAAA,UAAgB21B,QAAhB;;AACA,UAAI31B,SAAS,CAAC3yH,KAAV,CAAgB,YAAhB,CAAJ,EAAmC;AACjCg2H,kDAAA,GAAYuyB,UAAZ,CAAuB51B,SAAvB,EAAkC21B,QAAlC;AACD;AACF;AACF,GAPD;AASAtyB,4CAAA,GAAYwyB,iBAAZ;AACAxyB,wDAAA,CAAsB3D,gCAAtB;AACA,MAAIo2B,MAAM,GAAG,MAAMT,gBAAgB,EAAnC;AACAhyB,4CAAA,GAAY0yB,eAAZ;AAEA,SAAOD,MAAP;AACD,C;;;;;;;;;;;;ACnfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AACA,iBAAwBxmJ,mBAAO,CAAC,gFAAD,CAA/B;AAAA,MAAQ+wI,WAAR,YAAQA,WAAR;;AAEO,eAAe3oB,cAAf,CAA8BqC,GAA9B,EAAmCiG,SAAnC,EAA8CyzB,aAA9C,EAA6D;AAClEpwB,4CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAqC,UAASjG,GAAG,CAACxE,EAAG,EAArD,EAAwD,CAAxD,EADkE,CAGlE;AACA;AACA;AACA;AACA;;AACA,MAAI8N,0CAAA,GAAYie,YAAZ,CAAyBthB,SAAzB,EAAqC,UAASjG,GAAG,CAACxE,EAAG,EAArD,KAA2D,IAA/D,EAAqE;AACnE8N,8CAAA,GAAY3vI,GAAZ,CAAgB2sJ,WAAW,CAACrgB,SAAD,EAAa,UAASjG,GAAG,CAACxE,EAAG,EAA7B,CAA3B,EAA4D,CAA5D;AACD;;AAED8N,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAsC,YAAWjG,GAAG,CAACxE,EAAG,EAAxD,EAA2D;AACzDo+B,gBAAY,EAAE,CAD2C;AAEzD5K,gBAAY,EAAE,CACX,UAAShvB,GAAG,CAACxE,EAAG,EADL,EAEX,cAAawE,GAAG,CAACxE,EAAG,EAFT,EAGX,GAAEk+B,aAAc,cAAa15B,GAAG,CAACxE,EAAG,EAHzB,EAIX,GAAEk+B,aAAc,aAAY15B,GAAG,CAACxE,EAAG,EAJxB,CAF2C;AAQzDzxH,OAAG,EAAE,CAAC+3H,QAAD,EAAWo6B,SAAX,EAAsBC,aAAtB,EAAqCC,YAArC,KAAsD;AACzD,UAAIp8B,GAAG,CAACC,SAAR,EAAmB;AACjB,eACE7tH,oDAAM,CAAC0vH,QAAD,CAAN,GACA1vH,oDAAM,CAAC8pJ,SAAD,CADN,IAECC,aAAa,GAAG/pJ,oDAAM,CAACgqJ,YAAD,CAAT,GAA0B,CAFxC,CADF;AAKD;;AAED,aACEhqJ,oDAAM,CAAC0vH,QAAD,CAAN,GACA1vH,oDAAM,CAAC8pJ,SAAD,CADN,IAECC,aAAa,GAAG/pJ,oDAAM,CAACgqJ,YAAD,CAAT,GAA0B,CAFxC,CADF;AAKD;AAtBwD,GAA3D;AAwBA9yB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAsC,wBAAuBjG,GAAG,CAACxE,EAAG,EAApE,EAAuE;AACrEo+B,gBAAY,EAAE,CADuD;AAErE5K,gBAAY,EAAE,CACX,UAAShvB,GAAG,CAACxE,EAAG,EADL,EAEX,cAAawE,GAAG,CAACxE,EAAG,EAFT,EAGX,aAAYwE,GAAG,CAACxE,EAAG,EAHR,CAFuD;AAOrE;AACA6gC,WAAO,EAAE,IAR4D;AASrEtyJ,OAAG,EAAE,CAAC+3H,QAAD,EAAWo6B,SAAX,EAAsBh2B,SAAtB,KAAoC;AACvC,aAAOA,SAAS,GACZtjI,IAAI,CAACge,GAAL,CAAS,CAAT,EAAYxO,oDAAM,CAAC0vH,QAAD,CAAN,GAAmB1vH,oDAAM,CAAC8pJ,SAAD,CAArC,CADY,GAEZA,SAFJ;AAGD;AAboE,GAAvE;AAgBA5yB,4CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAqC,aAAYjG,GAAG,CAACxE,EAAG,EAAxD,EAA2D,KAA3D;AACD;AAEM,SAAS8gC,aAAT,CAAuB70B,MAAvB,EAA+BhH,UAA/B,EAA2CwF,SAA3C,EAAsD;AAC3D,MAAI4B,WAAW,GAAGJ,MAAM,CAAC7sI,MAAP,CAAc2iI,KAAK,IAAIA,KAAK,CAAC0C,SAA7B,EAAwC,CAAxC,CAAlB;AACA,MAAI8H,iBAAiB,GAAGtH,UAAU,CAAC7lI,MAAX,CAAkBolI,GAAG,IAAI,CAACA,GAAG,CAACC,SAA9B,CAAxB;AAEAqJ,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,gBAArC,EAAuD;AACrD2zB,gBAAY,EAAE,CADuC;AAErD5K,gBAAY,EAAEvnB,MAAM,CACjB7sI,MADW,CACJ2iI,KAAK,IAAI,CAACA,KAAK,CAAC0C,SADZ,EAEX/oI,GAFW,CAEPqmI,KAAK,IAAK,gBAAeA,KAAK,CAAC/B,EAAG,EAF3B,CAFuC;AAKrDzxH,OAAG,EAAEgwJ,gDAAUA;AALsC,GAAvD;AAQAzwB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,aAArC,EAAoD;AAClD2zB,gBAAY,EAAE,CADoC;AAElDyC,WAAO,EAAE,IAFyC;AAGlDrN,gBAAY,EAAEjnB,iBAAiB,CAAC7wI,GAAlB,CACZ8oI,GAAG,IAAK,GAAEiG,SAAU,yBAAwBjG,GAAG,CAACxE,EAAG,EADvC,CAHoC;AAMlDzxH,OAAG,EAAEgwJ,gDAAUA;AANmC,GAApD;AASAzwB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,cAArC,EAAqD;AACnD2zB,gBAAY,EAAE,CADqC;AAEnD5K,gBAAY,EAAE,CAAE,oBAAmBnnB,WAAW,CAACrM,EAAG,EAApC,CAFqC;AAGnDzxH,OAAG,EAAE3K,MAAM,IAAIA;AAHoC,GAArD;AAMAkqI,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,gBAArC,EAAuD;AACrD2zB,gBAAY,EAAE,CADuC;AAErD5K,gBAAY,EAAE,CAAC,gBAAD,EAAmB,aAAnB,CAFuC;AAGrDjlJ,OAAG,EAAEgwJ,gDAAUA;AAHsC,GAAvD;AAMAzwB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,qBAArC,EAA4D;AAC1D2zB,gBAAY,EAAE,CAD4C;AAE1D5K,gBAAY,EAAE,CAAE,gBAAennB,WAAW,CAACrM,EAAG,EAAhC,CAF4C;AAG1DzxH,OAAG,EAAE3K,MAAM,IAAIA;AAH2C,GAA5D;AAMAkqI,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,aAArC,EAAoD;AAClD2zB,gBAAY,EAAE,CADoC;AAElD5K,gBAAY,EAAE,CAAC,qBAAD,EAAwB,gBAAxB,CAFoC;AAGlDjlJ,OAAG,EAAE,CAACwyJ,MAAD,EAASz6B,QAAT,KAAsB;AACzB,aAAOy6B,MAAM,GAAGz6B,QAAhB;AACD;AALiD,GAApD;AAQAwH,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,YAArC,EAAmD;AACjD2zB,gBAAY,EAAE,CADmC;AAEjD5K,gBAAY,EAAE,CAAC,cAAD,EAAiB,aAAjB,CAFmC;AAGjDjlJ,OAAG,EAAE,CAACwyJ,MAAD,EAASlzB,KAAT,KAAmB;AACtB,aAAOkzB,MAAM,GAAG,CAAClzB,KAAjB;AACD;AALgD,GAAnD;AAOD,C;;;;;;;;;;;;AClHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AACA,iBAAwB9zH,mBAAO,CAAC,gFAAD,CAA/B;AAAA,MAAQ+wI,WAAR,YAAQA,WAAR;;AAEA,SAASkW,aAAT,CAAuBlxJ,MAAvB,EAA+B;AAC7B,MAAImxJ,UAAU,GAAGr0B,wDAAA,CAAqB98H,MAAM,CAAC,CAAD,CAA3B,CAAjB;AACA,SAAO88H,4DAAA,CAAyBq0B,UAAzB,EAAqC,UAArC,CAAP;AACD;;AAEM,SAASC,mBAAT,CAA6B18B,GAA7B,EAAkC10H,MAAlC,EAA0C;AAC/C,MAAIA,MAAM,CAACnR,MAAP,GAAgB,CAApB,EAAuB;AACrB,QAAI8rI,SAAS,GAAGu2B,aAAa,CAAClxJ,MAAD,CAA7B;AACAg+H,8CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAqC,aAAYjG,GAAG,CAACxE,EAAG,EAAxD,EAA2D,KAA3D;AACA8N,8CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAqC,YAAWjG,GAAG,CAACxE,EAAG,EAAvD,EAA0D,CAA1D;AACA8N,8CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAqC,gBAAejG,GAAG,CAACxE,EAAG,EAA3D,EAA8D,CAA9D;AACD;AACF;;AAED,SAASmhC,gBAAT,CAA0Bl8B,UAA1B,EAAsCwF,SAAtC,EAAiD36H,MAAjD,EAAyD;AACvDg+H,4CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAoC,UAApC,EAAgD,IAAhD;AACAqD,4CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAoC,WAApC,EAAiD,CAAjD;AACAqD,4CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAoC,UAApC,EAAgD,CAAhD;AAEAxF,YAAU,CAACp6H,OAAX,CAAmB25H,GAAG,IAAI08B,mBAAmB,CAAC18B,GAAD,EAAM10H,MAAN,CAA7C;AACD;;AAEM,SAASqyH,cAAT,CAAwBqC,GAAxB,EAA6BiG,SAA7B,EAAwCyzB,aAAxC,EAAuD;AAC5D,MAAI,CAAC15B,GAAG,CAACC,SAAT,EAAoB;AAClBqJ,8CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAqC,UAASjG,GAAG,CAACxE,EAAG,EAArD,EAAwD,CAAxD,EADkB,CAGlB;AACA;AACA;AACA;AACA;;AACA,QAAI8N,0CAAA,GAAYie,YAAZ,CAAyBthB,SAAzB,EAAqC,UAASjG,GAAG,CAACxE,EAAG,EAArD,KAA2D,IAA/D,EAAqE;AACnE8N,gDAAA,GAAY3vI,GAAZ,CAAgB2sJ,WAAW,CAACrgB,SAAD,EAAa,UAASjG,GAAG,CAACxE,EAAG,EAA7B,CAA3B,EAA4D,CAA5D;AACD;;AAED8N,8CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAqC,aAAYjG,GAAG,CAACxE,EAAG,EAAxD,EAA2D,KAA3D;AAEA8N,8CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAsC,YAAWjG,GAAG,CAACxE,EAAG,EAAxD,EAA2D;AACzDo+B,kBAAY,EAAE,CAD2C;AAEzD5K,kBAAY,EAAE,CACX,UAAShvB,GAAG,CAACxE,EAAG,EADL,EAEX,cAAawE,GAAG,CAACxE,EAAG,EAFT,EAGX,GAAEk+B,aAAc,cAAa15B,GAAG,CAACxE,EAAG,EAHzB,EAIX,GAAEk+B,aAAc,aAAY15B,GAAG,CAACxE,EAAG,EAJxB,EAKX,GAAEk+B,aAAc,iBAAgB15B,GAAG,CAACxE,EAAG,EAL5B,CAF2C;AASzDzxH,SAAG,EAAE,CAAC+3H,QAAD,EAAWuH,KAAX,EAAkB8yB,aAAlB,EAAiCC,YAAjC,EAA+CQ,eAA/C,KAAmE;AACtE,eACExqJ,oDAAM,CAAC0vH,QAAD,CAAN,GACA1vH,oDAAM,CAACi3H,KAAD,CADN,IAEC8yB,aAAa,GAAG/pJ,oDAAM,CAACgqJ,YAAD,CAAT,GAA0BhqJ,oDAAM,CAACwqJ,eAAD,CAF9C,CADF;AAKD;AAfwD,KAA3D;AAkBAtzB,8CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,kBAAkBjG,GAAG,CAACxE,EAA3D,EAA+D;AAC7Do+B,kBAAY,EAAE,CAD+C;AAE7D5K,kBAAY,EAAE,CAAE,YAAWhvB,GAAG,CAACxE,EAAG,EAApB,CAF+C;AAG7DzxH,SAAG,EAAE8uJ,QAAQ,IAAI;AACf,eAAOA,QAAQ,GAAG,CAAX,GAAe,CAAf,GAAmBA,QAA1B;AACD;AAL4D,KAA/D;AAOD;AACF;AAEM,SAASyD,aAAT,CAAuB70B,MAAvB,EAA+BhH,UAA/B,EAA2Ci5B,aAA3C,EAA0DzzB,SAA1D,EAAqE;AAC1E,MAAI4B,WAAW,GAAGJ,MAAM,CAAC7sI,MAAP,CAAc2iI,KAAK,IAAIA,KAAK,CAAC0C,SAA7B,EAAwC,CAAxC,CAAlB;AACA,MAAI8H,iBAAiB,GAAGtH,UAAU,CAAC7lI,MAAX,CAAkBolI,GAAG,IAAI,CAACA,GAAG,CAACC,SAA9B,CAAxB;AAEAqJ,4CAAA,GAAY2yB,YAAZ,CAAyBh2B,SAAzB,EAAoC,UAApC,EAAgD,CAAhD;AAEAqD,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,iBAArC,EAAwD;AACtD2zB,gBAAY,EAAE,CADwC;AAEtD5K,gBAAY,EAAE,CAAE,GAAE0K,aAAc,YAAlB,EAAgC,GAAEA,aAAc,WAAhD,CAFwC;AAGtD3vJ,OAAG,EAAE,CAAC2/H,QAAD,EAAWktB,QAAX,KAAwBxkJ,oDAAM,CAACs3H,QAAD,CAAN,GAAmBt3H,oDAAM,CAACwkJ,QAAD;AAHA,GAAxD,EAN0E,CAY1E;;AACAttB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,cAArC,EAAqD;AACnD2zB,gBAAY,EAAE,CADqC;AAEnD5K,gBAAY,EAAE,CAAE,oBAAmBnnB,WAAW,CAACrM,EAAG,EAApC,CAFqC;AAGnDzxH,OAAG,EAAE3K,MAAM,IAAIA;AAHoC,GAArD;AAMAkqI,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,iBAArC,EAAwD;AACtD2zB,gBAAY,EAAE,CADwC;AAEtD5K,gBAAY,EAAE,CAAC,cAAD,EAAiB,iBAAjB,CAFwC;AAGtDjlJ,OAAG,EAAE,CAACwyJ,MAAD,EAAS3U,aAAT,KAA2Bx1I,oDAAM,CAACmqJ,MAAD,CAAN,GAAiBnqJ,oDAAM,CAACw1I,aAAD;AAHD,GAAxD;AAMAte,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,sBAArC,EAA6D;AAC3D2zB,gBAAY,EAAE,CAD6C;AAE3D5K,gBAAY,EAAE6N,sDAAQ,CACpB90B,iBAAiB,CAAC7wI,GAAlB,CAAsB8oI,GAAG,IAAI,CAC1B,GAAE05B,aAAc,aAAY15B,GAAG,CAACxE,EAAG,EADT,EAE1B,GAAEk+B,aAAc,cAAa15B,GAAG,CAACxE,EAAG,EAFV,CAA7B,CADoB,CAFqC;AAQ3DzxH,OAAG,EAAE,CAAC,GAAGvO,IAAJ,KAAa;AAChBA,UAAI,GAAGshK,wDAAU,CAACthK,IAAD,CAAjB;AACA,aAAOA,IAAI,CAACpH,MAAL,CAAY,CAACoyB,KAAD,EAAQ,CAACqyI,QAAD,EAAW3yB,SAAX,CAAR,KAAkC;AACnD,YAAIA,SAAJ,EAAe;AACb,iBAAO1/G,KAAP;AACD;;AACD,eAAOA,KAAK,GAAG5jB,IAAI,CAACe,GAAL,CAAS,CAAT,EAAYyO,oDAAM,CAACymJ,QAAD,CAAlB,CAAf;AACD,OALM,EAKJ,CALI,CAAP;AAMD;AAhB0D,GAA7D;AAmBAvvB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,gBAArC,EAAuD;AACrD2zB,gBAAY,EAAE,CADuC;AAErD5K,gBAAY,EAAEvnB,MAAM,CACjB7sI,MADW,CACJ2iI,KAAK,IAAI,CAACA,KAAK,CAAC0C,SADZ,EAEX/oI,GAFW,CAEPqmI,KAAK,IAAK,gBAAeA,KAAK,CAAC/B,EAAG,EAF3B,CAFuC;AAKrDzxH,OAAG,EAAE,CAAC,GAAGgzJ,OAAJ,KAAgB;AACnB;AACA,aAAO,CAAChD,wDAAU,CAAC,GAAGgD,OAAJ,CAAlB;AACD;AARoD,GAAvD;AAWAzzB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,UAArC,EAAiD;AAAE2zB,gBAAY,EAAE;AAAhB,GAAjD;AAEAtwB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,WAArC,EAAkD;AAChD2zB,gBAAY,EAAE,CADkC;AAEhD5K,gBAAY,EAAE,CACZ,iBADY,EAEZ,sBAFY,EAGZ,gBAHY,EAIZ,UAJY,CAFkC;AAQhDjlJ,OAAG,EAAE,CAAC4/H,SAAD,EAAYqzB,aAAZ,EAA2BrV,aAA3B,EAA0CiP,QAA1C,KAAuD;AAC1D,aACExkJ,oDAAM,CAACu3H,SAAD,CAAN,GACAv3H,oDAAM,CAAC4qJ,aAAD,CADN,GAEA5qJ,oDAAM,CAACu1I,aAAD,CAFN,GAGAv1I,oDAAM,CAACwkJ,QAAD,CAJR;AAMD;AAf+C,GAAlD;AAkBAttB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,aAArC,EAAoD;AAClD2zB,gBAAY,EAAE,CADoC;AAElD5K,gBAAY,EAAEvnB,MAAM,CACjB7sI,MADW,CACJ2iI,KAAK,IAAI,CAACA,KAAK,CAAC0C,SADZ,EAEX/oI,GAFW,CAEPqmI,KAAK,IAAK,oBAAmBA,KAAK,CAAC/B,EAAG,EAF/B,CAFoC;AAKlDzxH,OAAG,EAAEgwJ,gDAAUA;AALmC,GAApD;AAQAzwB,4CAAA,GAAYqwB,aAAZ,CAA0B1zB,SAA1B,EAAqC,gBAArC,EAAuD;AACrD2zB,gBAAY,EAAE,CADuC;AAErD5K,gBAAY,EAAEvnB,MAAM,CACjB7sI,MADW,CACJ2iI,KAAK,IAAI,CAACA,KAAK,CAAC0C,SADZ,EAEX/oI,GAFW,CAEPqmI,KAAK,IAAK,kBAAiBA,KAAK,CAAC/B,EAAG,EAF7B,CAFuC;AAKrDzxH,OAAG,EAAEgwJ,gDAAUA;AALsC,GAAvD;AAOD;AAEM,SAAShxB,YAAT,CAAsBvuD,IAAtB,EAA4BimD,UAA5B,EAAwCn1H,MAAxC,EAAgD;AACrD;AACA;AACA;AACA,MAAI2xJ,UAAU,GAAGT,aAAa,CAAClxJ,MAAD,CAA9B;;AACA,MAAIkvE,IAAI,CAACyiF,UAAL,KAAoBA,UAAxB,EAAoC;AAClC3zB,8CAAA,GAAY4zB,UAAZ,CAAuB1iF,IAAI,CAACyiF,UAA5B;AACAN,oBAAgB,CAACl8B,UAAD,EAAaw8B,UAAb,EAAyB3xJ,MAAzB,CAAhB;AACAkvE,QAAI,CAACyiF,UAAL,GAAkBA,UAAlB;AACD;AACF,C;;;;;;;;;;;;AC5KD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEO,SAASlD,UAAT,CAAoB,GAAGgD,OAAvB,EAAgC;AACrC,SAAOA,OAAO,CAAC3oK,MAAR,CAAe,CAACoyB,KAAD,EAAQpnB,MAAR,KAAmB;AACvC,WAAOonB,KAAK,GAAGpU,mEAAM,CAAChT,MAAD,CAArB;AACD,GAFM,EAEJ,CAFI,CAAP;AAGD;AAEM,SAASy9J,QAAT,CAAkBxtG,GAAlB,EAAuB;AAC5B,SAAOp3D,KAAK,CAACkY,SAAN,CAAgBghB,MAAhB,CAAuB6F,KAAvB,CAA6B,EAA7B,EAAiCq4B,GAAjC,CAAP;AACD;AAEM,SAASytG,UAAT,CAAoBztG,GAApB,EAAyB;AAC9B,MAAIu6D,GAAG,GAAG,EAAV;;AACA,OAAK,IAAI52G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq8C,GAAG,CAACl1D,MAAxB,EAAgC6Y,CAAC,IAAI,CAArC,EAAwC;AACtC42G,OAAG,CAAC5wH,IAAJ,CAAS,CAACq2D,GAAG,CAACr8C,CAAD,CAAJ,EAASq8C,GAAG,CAACr8C,CAAC,GAAG,CAAL,CAAZ,CAAT;AACD;;AACD,SAAO42G,GAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;;AACA,IAAIwO,IAAI,GAAG7iH,mBAAO,CAAC,kFAAD,CAAlB;;AACA,IAAIopH,MAAM,GAAGppH,mBAAO,CAAC,qEAAD,CAApB;;AAEA,IAAI4nJ,wBAAwB,GAAG,CAA/B;;AAEA,eAAeC,eAAf,CAA+BxzC,GAA/B,EAAoC;AAClC,MAAIA,GAAG,CAACpuD,MAAJ,KAAe,GAAnB,EAAwB;AACtB,WAAOouD,GAAG,CAAC37B,IAAJ,GAAWnvE,IAAX,CAAgBsY,GAAG,IAAI;AAC5B,YAAM,IAAIimI,iDAAJ,CAAczzC,GAAG,CAACpuD,MAAlB,EAA0BpkC,GAA1B,CAAN;AACD,KAFM,CAAP;AAGD,GAJD,MAIO;AACL,WAAOwyF,GAAP;AACD;AACF;;AAED,eAAe0zC,SAAf,CAAyB,GAAGrqK,IAA5B,EAAkC;AAChC,MAAI22H,GAAG,GAAG,MAAMoiB,oEAAK,CAAC,GAAG/4I,IAAJ,CAArB;AACA22H,KAAG,GAAG,MAAMwzC,eAAe,CAACxzC,GAAD,CAA3B;AACA,SAAOA,GAAG,CAACptH,IAAJ,EAAP;AACD;;AAEM,eAAe+gK,QAAf,GAA0B;AAC/B,MAAIC,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;;AAEA,wBAAoCjB,+CAAA,EAApC;AAAA,MAAMizB,WAAN,mBAAMA,WAAN;AAAA,MAAmBC,YAAnB,mBAAmBA,YAAnB;;AAEA,MAAI9zC,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAMonB,mDAAI,CAACC,gEAAS,GAAG0sB,WAAZ,GAA0B,eAA3B,EAA4C;AAC1Dj1H,WAAK,EAAE80H,SADmD;AAE1DI,YAAM,EAAEH;AAFkD,KAA5C,CAAhB;AAID,GALD,CAKE,OAAOhgJ,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY18E,CAAZ;AACA,WAAO;AAAEof,WAAK,EAAE;AAAEghI,cAAM,EAAE;AAAV;AAAT,KAAP;AACD,GAd8B,CAgB/B;AACA;;;AACA,SAAO;AACL/1J,SAAK,EACH8hH,GAAG,CAAC4R,EAAJ,IAAUkiC,YAAV,MAA0B;AACzBA,gBAAY,IAAI,IAAhB,IAAwBI,mDAAU,CAACC,MAAX,CAAkBL,YAAlB,CADzB;AAFG,GAAP;AAKD;AAEM,eAAeM,cAAf,CAA8BC,WAA9B,EAA2C;AAChD,MAAIT,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;;AAEA,yBAAsBjB,+CAAA,EAAtB;AAAA,MAAMizB,WAAN,oBAAMA,WAAN;;AAEA,MAAIluI,OAAO,CAACk9G,GAAR,CAAYyxB,OAAhB,EAAyB;AACvB,WAAO;AAAErhI,WAAK,EAAE;AAAEghI,cAAM,EAAE;AAAV;AAAT,KAAP;AACD;;AAED,MAAI;AACF,UAAM7sB,mDAAI,CAACC,gEAAS,GAAG0sB,WAAZ,GAA0B,kBAA3B,EAA+C;AACvDj1H,WAAK,EAAE80H,SADgD;AAEvDI,YAAM,EAAEH;AAF+C,KAA/C,CAAV;AAID,GALD,CAKE,OAAOhgJ,CAAP,EAAU;AACV,QAAIA,CAAC,YAAY0gJ,iDAAjB,EAA4B;AAC1B,aAAO;AACLthI,aAAK,EAAE;AACLghI,gBAAM,EAAEpgJ,CAAC,CAACogJ,MAAF,KAAa,cAAb,GAA8B,cAA9B,GAA+C;AADlD;AADF,OAAP;AAKD;;AACD,WAAO;AAAEhhI,WAAK,EAAE;AAAEghI,cAAM,EAAE;AAAV;AAAT,KAAP;AACD;;AAED,MAAII,WAAJ,EAAiB;AACf,QAAI;AACF,YAAMjtB,mDAAI,CAACC,gEAAS,GAAG0sB,WAAZ,GAA0B,kBAA3B,EAA+C;AACvDj1H,aAAK,EAAE80H,SADgD;AAEvDI,cAAM,EAAEH,WAF+C;AAGvDW,aAAK,EAAEH,WAAW,CAACh1J,GAAZ,CAAgBstI,KAAhB,EAHgD;AAIvD8nB,eAAO,EAAEJ,WAAW,CAACj2I,IAJkC;AAKvDs2I,mBAAW,EAAEL,WAAW,CAACK;AAL8B,OAA/C,CAAV;AAOD,KARD,CAQE,OAAO7gJ,CAAP,EAAU;AACV,UAAIA,CAAC,YAAY0gJ,iDAAjB,EAA4B;AAC1B,eAAO;AAAEthI,eAAK,EAAE;AAAEghI,kBAAM,EAAE;AAAV;AAAT,SAAP;AACD;;AACD,aAAO;AAAEhhI,aAAK,EAAE;AAAEghI,gBAAM,EAAE;AAAV;AAAT,OAAP;AACD;AACF;;AAED,SAAO,EAAP;AACD;AAEM,eAAeU,YAAf,GAA8B;AACnC,yBAAyB/zB,+CAAA,EAAzB;AAAA,MAAMhP,EAAN,oBAAMA,EAAN;AAAA,MAAUH,UAAV,oBAAUA,UAAV;;AACA,MAAI,CAACA,UAAL,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,MAAIw5B,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAhB,CANmC,CAQnC;;AACA,MAAImH,MAAM,GAAG,IAAIhE,MAAJ,EAAb,CATmC,CAWnC;AACA;AACA;AACA;;AACA,QAAM4K,4DAAU,CAAC,YAAY;AAC3B,QAAIi1B,YAAY,GAAG,MAAMroJ,0DAAE,CAAC0B,QAAH,CACvB1B,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,WAAnB,CADuB,EAEvB,QAFuB,CAAzB,CAD2B,CAM3B;AACA;AACA;;AACA,QAAI4J,KAAK,GAAG,MAAMzI,oEAAA,CAAoBwI,YAApB,CAAlB;AACAxI,qEAAA,CACEyI,KADF,EAEG;AACP;AACA;AACA,OALI;AAQA,QAAIC,SAAS,GAAG1I,sEAAA,CAAsByI,KAAtB,CAAhB;AACAzI,yEAAA,CAAqByI,KAArB,EAnB2B,CAqB3B;AACA;;AACA,QAAIjkF,IAAI,GAAGz4E,IAAI,CAAC0G,KAAL,CACT,MAAM0N,0DAAE,CAAC0B,QAAH,CAAY1B,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,eAAnB,CAAZ,CADG,CAAX;AAIAr6E,QAAI,CAACmkF,UAAL,GAAkB,IAAlB;AACA,QAAIC,WAAW,GAAGroJ,MAAM,CAACre,IAAP,CAAY6J,IAAI,CAACC,SAAL,CAAew4E,IAAf,CAAZ,EAAkC,MAAlC,CAAlB;AAEAmoD,UAAM,CAACppH,OAAP,CAAe,WAAf,EAA4BmlJ,SAA5B;AACA/7B,UAAM,CAACppH,OAAP,CAAe,eAAf,EAAgCqlJ,WAAhC;AACD,GAhCe,CAAhB;AAkCA,SAAOroJ,MAAM,CAACre,IAAP,CAAYyqI,MAAM,CAAC1jH,QAAP,EAAZ,CAAP;AACD;AAEM,eAAewkH,YAAf,CAA4Bo7B,QAA5B,EAAsChtI,MAAtC,EAA8C;AACnD,MAAI8wG,MAAM,GAAG,IAAIhE,MAAJ,CAAW9sG,MAAX,CAAb;AACA,MAAIlW,OAAO,GAAGgnH,MAAM,CAACjnH,UAAP,EAAd;AACA,MAAIojJ,OAAO,GAAGnjJ,OAAO,CAAC9L,IAAR,CAAa4N,CAAC,IAAIA,CAAC,CAACnG,SAAF,CAAY1L,QAAZ,CAAqB,WAArB,CAAlB,CAAd;AACA,MAAImzJ,SAAS,GAAGpjJ,OAAO,CAAC9L,IAAR,CAAa4N,CAAC,IAAIA,CAAC,CAACnG,SAAF,CAAY1L,QAAZ,CAAqB,eAArB,CAAlB,CAAhB;;AAEA,MAAI,CAACkzJ,OAAD,IAAY,CAACC,SAAjB,EAA4B;AAC1B,UAAMC,iEAAiB,CAAC,kBAAD,CAAvB;AACD;;AAED,MAAIN,SAAS,GAAG/7B,MAAM,CAAC9qH,QAAP,CAAgBinJ,OAAhB,CAAhB;AACA,MAAIF,WAAW,GAAGj8B,MAAM,CAAC9qH,QAAP,CAAgBknJ,SAAhB,CAAlB;AAEA,MAAIvkF,IAAJ;;AACA,MAAI;AACFA,QAAI,GAAGz4E,IAAI,CAAC0G,KAAL,CAAWm2J,WAAW,CAAC7tJ,QAAZ,CAAqB,MAArB,CAAX,CAAP;AACD,GAFD,CAEE,OAAOuH,GAAP,EAAY;AACZ,UAAM0mJ,iEAAiB,CAAC,mBAAD,CAAvB;AACD,GAlBkD,CAoBnD;AACA;;;AACAxkF,MAAI,mCACCA,IADD;AAEFijF,eAAW,EAAEoB,QAAQ,CAACjB,MAFpB;AAGFn5B,WAAO,EAAEo6B,QAAQ,CAACp6B,OAHhB;AAIF6xB,gBAAY,EAAEluB,yDAAA,EAJZ;AAKFs1B,gBAAY,EAAEmB,QAAQ,CAACI,WAAT,GAAuBJ,QAAQ,CAACI,WAAT,CAAqBb,KAA5C,GAAoD;AALhE,IAAJ;AAQA,MAAIvJ,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBryD,IAAI,CAACghD,EAArB,CAAhB;;AAEA,MAAI,MAAMrlH,0DAAE,CAACqa,MAAH,CAAUqkI,SAAV,CAAV,EAAgC;AAC9B;AACA,QAAIqK,MAAM,GAAG/oJ,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,WAAnB,CAAb;AACA,QAAIsK,QAAQ,GAAGhpJ,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,eAAnB,CAAf;;AAEA,QAAI,MAAM1+I,0DAAE,CAACqa,MAAH,CAAU0uI,MAAV,CAAV,EAA6B;AAC3B,YAAM/oJ,0DAAE,CAAC03H,UAAH,CAAcqxB,MAAd,CAAN;AACD;;AACD,QAAI,MAAM/oJ,0DAAE,CAACqa,MAAH,CAAU2uI,QAAV,CAAV,EAA+B;AAC7B,YAAMhpJ,0DAAE,CAAC03H,UAAH,CAAcsxB,QAAd,CAAN;AACD;AACF,GAXD,MAWO;AACL,UAAMhpJ,0DAAE,CAACm3H,KAAH,CAASunB,SAAT,CAAN;AACD;;AAED,QAAM1+I,0DAAE,CAACq1H,SAAH,CAAar1H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,WAAnB,CAAb,EAA8C6J,SAA9C,CAAN;AACA,QAAMvoJ,0DAAE,CAACq1H,SAAH,CAAar1H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,eAAnB,CAAb,EAAkD9yJ,IAAI,CAACC,SAAL,CAAew4E,IAAf,CAAlD,CAAN;AAEA,SAAO;AAAEghD,MAAE,EAAEhhD,IAAI,CAACghD;AAAX,GAAP;AACD;AAEM,eAAe4jC,MAAf,GAAwB;AAC7B,MAAI5B,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;;AACA,MAAI,CAAC+xB,SAAL,EAAgB;AACd,UAAM6B,+DAAe,CAAC,cAAD,CAArB;AACD,GAJ4B,CAM7B;;;AACA,MAAI9vI,OAAO,CAACk9G,GAAR,CAAYyxB,OAAhB,EAAyB;AACvB,UAAMmB,+DAAe,CAAC,cAAD,CAArB;AACD;;AAED,MAAIC,UAAU,GAAG,MAAMf,YAAY,EAAnC;;AACA,MAAIe,UAAU,IAAI,IAAlB,EAAwB;AACtB;AACD;;AAED,yBAA6D90B,+CAAA,EAA7D;AAAA,MAAMhP,EAAN,oBAAMA,EAAN;AAAA,MAAUiJ,OAAV,oBAAUA,OAAV;AAAA,MAAmBpJ,UAAnB,oBAAmBA,UAAnB;AAAA,MAA+BoiC,WAA/B,oBAA+BA,WAA/B;AAAA,MAA4CC,YAA5C,oBAA4CA,YAA5C;;AACA,MAAI6B,aAAa,GAAGD,UAApB;AACA,MAAIE,UAAU,GAAG,IAAjB,CAlB6B,CAoB7B;AACA;AACA;;AACA,MAAI9B,YAAJ,EAAkB;AAChB,QAAI+B,SAAJ;;AACA,QAAI;AACFA,eAAS,GAAG,MAAM3B,mDAAU,CAACh1I,OAAX,CAAmBw2I,UAAnB,EAA+B5B,YAA/B,CAAlB;AACD,KAFD,CAEE,OAAOjgJ,CAAP,EAAU;AACV,YAAM4hJ,+DAAe,CAAC,iBAAD,EAAoB;AACvCK,oBAAY,EAAEjiJ,CAAC,CAAC2kB,OAAF,KAAc;AADW,OAApB,CAArB;AAGD;;AACDm9H,iBAAa,GAAGE,SAAS,CAAC/rK,KAA1B;AACA8rK,cAAU,GAAGC,SAAS,CAACjlF,IAAvB;AACD;;AAED,MAAI,CAACijF,WAAL,EAAkB;AAChBA,eAAW,GAAGrlC,IAAI,CAACgX,MAAL,EAAd;AACD;;AAED,MAAIxlB,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAM0zC,SAAS,CAACrsB,gEAAS,GAAG0sB,WAAZ,GAA0B,mBAA3B,EAAgD;AACnElmK,YAAM,EAAE,MAD2D;AAEnEmpC,aAAO;AACL,0BAAkB2+H,aAAa,CAACplK,MAD3B;AAEL,wBAAgB,4BAFX;AAGL,0BAAkBqjK,SAHb;AAIL,4BAAoBC,WAJf;AAKL,yBAAiBlmI,kBAAkB,CAAC8jG,UAAD,CAL9B;AAML,2BAAmB;AANd,SAODmkC,UAAU,GACV;AAAE,iCAAyBz9J,IAAI,CAACC,SAAL,CAAew9J,UAAf;AAA3B,OADU,GAEV,IATC,GAUD/6B,OAAO,GAAG;AAAE,6BAAqBA;AAAvB,OAAH,GAAsC,IAV5C,CAF4D;AAcnE2H,UAAI,EAAEmzB;AAd6D,KAAhD,CAArB;AAgBD,GAjBD,CAiBE,OAAOjnJ,GAAP,EAAY;AACZuW,WAAO,CAACsrE,GAAR,CAAY,gBAAZ,EAA8B7hF,GAA9B;AAEA,QAAIulJ,MAAM,GAAGvlJ,GAAG,YAAY6lJ,iDAAf,GAA2B7lJ,GAAG,CAACulJ,MAA/B,GAAwC,SAArD;;AAEA,QAAIvlJ,GAAG,YAAY6lJ,iDAAnB,EAA8B;AAC5B,YAAM,IAAIkB,uDAAJ,CACJ/mJ,GAAG,CAACulJ,MAAJ,KAAe,cAAf,GAAgC,cAAhC,GAAiDvlJ,GAAG,CAACulJ,MAAJ,IAAc,SAD3D,CAAN;AAGD;;AAED,UAAMwB,+DAAe,CAAC,UAAD,CAArB;AACD;;AAED,MAAIz1C,GAAG,CAACpuD,MAAJ,KAAe,IAAnB,EAAyB;AACvB;AACA,QAAIgvE,+CAAA,MAAoBA,+CAAA,GAAiBhP,EAAjB,KAAwBA,EAAhD,EAAoD;AAClD,YAAMgP,gDAAA,CAAgB;AACpB8rB,oBAAY,EAAEluB,yDAAA,EADM;AAEpBq1B,mBAFoB;AAGpBh5B,eAAO,EAAE7a,GAAG,CAAC6a;AAHO,OAAhB,CAAN;AAKD;AACF,GATD,MASO;AACL,UAAM46B,+DAAe,CAAC,UAAD,CAArB;AACD;AACF;AAEM,eAAeM,cAAf,GAAgC;AACrC,yBAAiDn1B,+CAAA,EAAjD;AAAA,MAAMizB,WAAN,oBAAMA,WAAN;AAAA,MAAmBh5B,OAAnB,oBAAmBA,OAAnB;AAAA,MAA4B6xB,YAA5B,oBAA4BA,YAA5B;AAAA,MAA0C96B,EAA1C,oBAA0CA,EAA1C;;AAEA,MAAIoa,SAAS,GACX0gB,YAAY,IAAIluB,sDAAA,CAAmBkuB,YAAnB,EAAiC6G,wBAAjC,CADlB;AAEA,MAAIjvJ,UAAU,GAAGk6H,yDAAA,EAAjB,CALqC,CAOrC;;AACA,MAAIkuB,YAAY,IAAIpoJ,UAAU,GAAG0nI,SAAjC,EAA4C;AAC1C;AACD,GAVoC,CAYrC;AACA;;;AACA,MAAI,CAAC6nB,WAAD,IAAgB,CAACh5B,OAArB,EAA8B;AAC5B;AACD,GAhBoC,CAkBrC;;;AACA26B,QAAM,GAAG9X,KAAT,CAAehvI,GAAG,IAAI,CAAE,CAAxB;AACD;AAEM,eAAeu1H,UAAf,CAA0B+vB,MAA1B,EAAkC;AACvC,gCAAwB,MAAM/sB,oEAAY,CAACjF,QAAb,CAAsB,CAAC,YAAD,CAAtB,CAA9B;AAAA;AAAA;AAAA,QAAU4xB,SAAV;;AAEA,QAAMxsB,mDAAI,CAACC,gEAAS,GAAG0sB,WAAZ,GAA0B,mBAA3B,EAAgD;AACxDj1H,SAAK,EAAE80H,SADiD;AAExDI;AAFwD,GAAhD,CAAV;AAID;AAEM,eAAegC,eAAf,GAAiC;AACtC,MAAIpC,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;;AACA,MAAI,CAAC+xB,SAAL,EAAgB;AACd,WAAO,IAAP;AACD;;AAED,MAAI5zC,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAM0zC,SAAS,CAACrsB,gEAAS,GAAG0sB,WAAZ,GAA0B,kBAA3B,EAA+C;AAClE/8H,aAAO,EAAE;AACP,0BAAkB48H;AADX;AADyD,KAA/C,CAArB;AAKD,GAND,CAME,OAAO//I,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY,OAAZ,EAAqB18E,CAArB;AACA,WAAO,IAAP;AACD;;AAED,MAAImsG,GAAG,CAACpuD,MAAJ,KAAe,OAAnB,EAA4B;AAC1B,WAAO,IAAP;AACD;;AAED,SAAOouD,GAAG,CAACpuH,IAAJ,CAAStE,GAAT,CAAaomB,IAAI,oCACnBA,IADmB;AAEtBygJ,UAAM,EAAED,mDAAU,CAACC,MAAX,CAAkBzgJ,IAAI,CAACogJ,YAAvB;AAFc,IAAjB,CAAP;AAID;AAEM,eAAemC,QAAf,CAAwBjC,MAAxB,EAAgCnqJ,OAAhC,EAAyC;AAC9C,MAAI+pJ,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;AAEA,MAAI55G,MAAJ;;AACA,MAAI;AACFA,UAAM,GAAG,MAAMm6G,oEAAK,CAACiF,gEAAS,GAAG0sB,WAAZ,GAA0B,qBAA3B,EAAkD;AACpE/8H,aAAO,EAAE;AACP,0BAAkB48H,SADX;AAEP,4BAAoBI;AAFb;AAD2D,KAAlD,CAAL,CAMZ9+I,IANY,CAMPs+I,eANO,EAOZt+I,IAPY,CAOP8qG,GAAG,IAAI;AACX,UAAIA,GAAG,CAACk2C,WAAR,EAAqB;AACnB,eAAOl2C,GAAG,CAACk2C,WAAJ,GAAkBhhJ,IAAlB,CAAuBihJ,EAAE,IAAIxpJ,MAAM,CAACre,IAAP,CAAY6nK,EAAZ,CAA7B,CAAP;AACD;;AACD,aAAOn2C,GAAG,CAAC/3F,MAAJ,EAAP;AACD,KAZY,CAAf;AAaD,GAdD,CAcE,OAAOvZ,GAAP,EAAY;AACZuW,WAAO,CAACsrE,GAAR,CAAY,kBAAZ,EAAgC7hF,GAAhC;AACA,UAAM0mJ,iEAAiB,CAAC,kBAAD,CAAvB;AACD;;AAED,MAAIp1C,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAM0zC,SAAS,CAACrsB,gEAAS,GAAG0sB,WAAZ,GAA0B,qBAA3B,EAAkD;AACrE/8H,aAAO,EAAE;AACP,0BAAkB48H,SADX;AAEP,4BAAoBI;AAFb;AAD4D,KAAlD,CAArB;AAMD,GAPD,CAOE,OAAOtlJ,GAAP,EAAY;AACZ,UAAM0mJ,iEAAiB,CAAC,UAAD,EAAa;AAAEpB;AAAF,KAAb,CAAvB;AACD;;AAED,MAAIh0C,GAAG,CAACpuD,MAAJ,KAAe,IAAnB,EAAyB;AACvB,UAAMwjG,iEAAiB,CAAC,UAAD,EAAa;AAAEpB;AAAF,KAAb,CAAvB;AACD;;AACD,MAAIiB,QAAQ,GAAGj1C,GAAG,CAACpuH,IAAnB,CAtC8C,CAwC9C;AACA;AACA;;AACA,MAAIqjK,QAAQ,CAACI,WAAb,EAA0B;AACxB,QAAI;AACFptI,YAAM,GAAG,MAAMisI,mDAAU,CAACn1I,OAAX,CAAmBkJ,MAAnB,EAA2BgtI,QAAQ,CAACI,WAApC,CAAf;AACD,KAFD,CAEE,OAAOxhJ,CAAP,EAAU;AACV,YAAMuhJ,iEAAiB,CAAC,iBAAD,EAAoB;AACzCU,oBAAY,EAAEjiJ,CAAC,CAAC2kB,OAAF,KAAc;AADa,OAApB,CAAvB;AAGD;AACF;;AAED,SAAOqhG,YAAY,CAACo7B,QAAD,EAAWhtI,MAAX,EAAmBpe,OAAnB,CAAnB;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3ZD;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AAOA;AAKA;AAEA;;AAEA,MAAM2kH,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAApB;;AAEA,IAAIyqJ,MAAJ;AACA,IAAIr6B,EAAJ,C,CAEA;;AAEO,SAASs6B,eAAT,GAA2B;AAChC,SAAOD,MAAP;AACD;AAEM,eAAehxB,YAAf,CAA4BxT,EAA5B,EAAgC;AACrC,MAAImK,EAAJ,EAAQ;AACN,UAAMqwB,qEAAA,CAAqBrwB,EAArB,CAAN;AACD;;AAEDq6B,QAAM,GAAG7pJ,0DAAE,CAACjB,IAAH,CAAQiB,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAR,EAA6B,WAA7B,CAAT;AACA0kC,aAAW,CAAC,MAAMlK,oEAAA,CAAoBgK,MAApB,CAAP,CAAX,CANqC,CAQrC;AACD;AAEM,eAAeG,cAAf,GAAgC;AACrC,QAAMnK,qEAAA,CAAqBrwB,EAArB,CAAN;AACAu6B,aAAW,CAAC,MAAMlK,oEAAA,CAAoBgK,MAApB,CAAP,CAAX;AACD;AAEM,eAAe9wB,aAAf,GAA+B;AACpC,MAAIvJ,EAAJ,EAAQ;AACN,UAAMqwB,qEAAA,CAAqBrwB,EAArB,CAAN;AACAu6B,eAAW,CAAC,IAAD,CAAX;AACD;AACF;AAEM,SAASA,WAAT,CAAqBE,GAArB,EAA0B;AAC/Bz6B,IAAE,GAAGy6B,GAAL;AACAC,iBAAe;AAChB;AAEM,SAASC,WAAT,GAAuB;AAC5B,SAAO36B,EAAP;AACD;AAEM,eAAe46B,SAAf,GAA2B;AAChC,MAAIptB,GAAG,GAAG,MAAMloI,KAAK,CAAC,8BAAD,CAArB;;AACA,MAAIkoI,GAAJ,EAAS;AACP,QAAIqtB,KAAK,GAAGC,mEAAgB,CAACttB,GAAG,CAACqtB,KAAL,CAA5B;AACAE,+DAAQ,CAACF,KAAD,CAAR;AACD,GAHD,MAGO;AACL;AACA;AACA,QAAIj9J,SAAS,GAAG,IAAIo9J,kDAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBC,+DAAY,EAAhC,CAAhB;AACA,QAAIJ,KAAK,GAAGK,4DAAS,CAACt9J,SAAD,CAArB;AACAm9J,+DAAQ,CAACF,KAAD,CAAR;AAEA,UAAM9kC,QAAQ,CAAC,sDAAD,EAAyD,CACrE,CADqE,EAErEolC,iEAAc,CAACN,KAAD,CAFuD,CAAzD,CAAd;AAID;AACF,C,CAED;;AAEO,SAAS9kC,QAAT,CAAkB6S,GAAlB,EAAuBC,MAAvB,EAA+BC,QAA/B,EAAyC;AAC9C;AACA,QAAMvmI,MAAM,GAAG8tJ,gEAAA,CAAgBrwB,EAAhB,EAAoB4I,GAApB,EAAyBC,MAAzB,EAAiCC,QAAjC,CAAf,CAF8C,CAG9C;;AACA,SAAOvmI,MAAP;AACD;AAEM,SAAS49H,SAAT,CAAmByI,GAAnB,EAAwB;AAC7BynB,mEAAA,CAAiBrwB,EAAjB,EAAqB4I,GAArB;AACD,C,CAED;AACA;;AACA,IAAIwyB,WAAW,GAAG,IAAIC,gDAAJ,CAAQ;AAAEpgJ,KAAG,EAAE;AAAP,CAAR,CAAlB;;AACO,SAASozE,KAAT,CAAeu6C,GAAf,EAAoB;AACzB,MAAI0yB,MAAM,GAAGF,WAAW,CAAC3qK,GAAZ,CAAgBm4I,GAAhB,CAAb;;AACA,MAAI0yB,MAAJ,EAAY;AACV,WAAOA,MAAP;AACD;;AAED,MAAIC,QAAQ,GAAGlL,+DAAA,CAAerwB,EAAf,EAAmB4I,GAAnB,CAAf;;AACAwyB,aAAW,CAACpnK,GAAZ,CAAgB40I,GAAhB,EAAqB2yB,QAArB;;AACA,SAAOA,QAAP;AACD;;AAED,SAASb,eAAT,GAA2B;AACzBU,aAAW,GAAG,IAAIC,gDAAJ,CAAQ;AAAEpgJ,OAAG,EAAE;AAAP,GAAR,CAAd;AACD;;AAEM,SAASmgH,WAAT,CAAqBpkI,EAArB,EAAyB;AAC9B,SAAOq5J,mEAAA,CAAmBrwB,EAAnB,EAAuBhpI,EAAvB,CAAP;AACD;AAEM,SAASoyI,gBAAT,CAA0BpyI,EAA1B,EAA8B;AACnC,SAAOq5J,wEAAA,CAAwBrwB,EAAxB,EAA4BhpI,EAA5B,CAAP;AACD,C,CAED;AACA;AACA;;AACO,eAAe2nE,GAAf,CAAmBiqE,GAAnB,EAAwBC,MAAxB,EAAgC;AACrC,SAAO9S,QAAQ,CAAC6S,GAAD,EAAMC,MAAN,EAAc,IAAd,CAAf;AACD;AAEM,eAAevjI,KAAf,CAAqBsjI,GAArB,EAA0BC,MAA1B,EAAkC;AACvC,QAAMn/E,GAAG,GAAG,MAAMqsE,QAAQ,CAAC6S,GAAD,EAAMC,MAAN,EAAc,IAAd,CAA1B;AACA,SAAOn/E,GAAG,CAACl1D,MAAJ,KAAe,CAAf,GAAmB,IAAnB,GAA0Bk1D,GAAG,CAAC,CAAD,CAApC;AACD,C,CAED;AACA;;AACO,SAAS8xG,SAAT,CAAmB5yB,GAAnB,EAAwBC,MAAxB,EAAgC;AACrC,QAAMn/E,GAAG,GAAGqsE,QAAQ,CAAC6S,GAAD,EAAMC,MAAN,EAAc,IAAd,CAApB;AACA,SAAOn/E,GAAG,CAACl1D,MAAJ,KAAe,CAAf,GAAmB,IAAnB,GAA0Bk1D,GAAG,CAAC,CAAD,CAApC;AACD,C,CAED;AACA;AACA;;AACO,eAAetlD,GAAf,CAAmBwkI,GAAnB,EAAwBC,MAAxB,EAAgC;AACrC,SAAO9S,QAAQ,CAAC6S,GAAD,EAAMC,MAAN,CAAf;AACD;AAEM,eAAelU,MAAf,CAAsBY,KAAtB,EAA6BM,EAA7B,EAAiC;AACtC,QAAM0nB,IAAI,GAAG,MAAMxnB,QAAQ,CACzB,mBAAmBR,KAAnB,GAA2B,eADF,EAEzB,CAACM,EAAD,CAFyB,EAGzB,IAHyB,CAA3B;AAKA,SAAO0nB,IAAI,CAAC,CAAD,CAAX;AACD;AAEM,eAAeloI,MAAf,CAAsBkgH,KAAtB,EAA6BsT,MAA7B,EAAqC;AAC1C,MAAIhS,MAAM,GAAGzlI,MAAM,CAACiS,IAAP,CAAYwlI,MAAZ,EAAoB5zI,MAApB,CAA2B0tB,CAAC,IAAIA,CAAC,KAAK,IAAtC,CAAb;;AAEA,MAAIkmH,MAAM,CAAChT,EAAP,IAAa,IAAjB,EAAuB;AACrB,UAAM,IAAI7iI,KAAJ,CAAU,wBAAV,CAAN;AACD;;AAED,QAAMyoK,0DAAY,CAChB5kC,MAAM,CAACtlI,GAAP,CAAWoxB,CAAC,IAAI;AACd,WAAO;AACLu+H,aAAO,EAAE3rB,KADJ;AAELiY,SAAG,EAAE3E,MAAM,CAAChT,EAFP;AAGLz5F,YAAM,EAAEzZ,CAHH;AAIL50B,WAAK,EAAE86I,MAAM,CAAClmH,CAAD,CAJR;AAKL/kB,eAAS,EAAEo9J,kDAAS,CAACplG,IAAV;AALN,KAAP;AAOD,GARD,CADgB,CAAlB;AAWD;AAEM,eAAe8lG,cAAf,CAA8BnmC,KAA9B,EAAqCiY,GAArC,EAA0C;AAC/C,MAAI,CAACA,GAAG,CAAC3X,EAAT,EAAa;AACX2X,OAAG,mCAAQA,GAAR;AAAa3X,QAAE,EAAEpD,IAAI,CAACgX,MAAL;AAAjB,MAAH;AACD;;AAED,QAAM5iE,MAAM,CAAC0uD,KAAD,EAAQiY,GAAR,CAAZ,CAL+C,CAO/C;AACA;AACA;;AACA,SAAOA,GAAG,CAAC3X,EAAX;AACD;AAEM,eAAehvD,MAAf,CAAsB0uD,KAAtB,EAA6BiY,GAA7B,EAAkC;AACvC,MAAI3W,MAAM,GAAGzlI,MAAM,CAACiS,IAAP,CAAYmqI,GAAZ,EAAiBv4I,MAAjB,CAAwB0tB,CAAC,IAAIA,CAAC,KAAK,IAAnC,CAAb;;AAEA,MAAI6qH,GAAG,CAAC3X,EAAJ,IAAU,IAAd,EAAoB;AAClB,UAAM,IAAI7iI,KAAJ,CAAU,wBAAV,CAAN;AACD;;AAED,QAAMyoK,0DAAY,CAChB5kC,MAAM,CAACtlI,GAAP,CAAWoxB,CAAC,IAAI;AACd,WAAO;AACLu+H,aAAO,EAAE3rB,KADJ;AAELiY,SAAG,EAAEA,GAAG,CAAC3X,EAFJ;AAGLz5F,YAAM,EAAEzZ,CAHH;AAIL50B,WAAK,EAAEy/I,GAAG,CAAC7qH,CAAD,CAJL;AAKL/kB,eAAS,EAAEo9J,kDAAS,CAACplG,IAAV;AALN,KAAP;AAOD,GARD,CADgB,CAAlB;AAWD;AAEM,eAAe+lG,OAAf,CAAuBpmC,KAAvB,EAA8BM,EAA9B,EAAkC;AACvC,QAAM4lC,0DAAY,CAAC,CACjB;AACEva,WAAO,EAAE3rB,KADX;AAEEiY,OAAG,EAAE3X,EAFP;AAGEz5F,UAAM,EAAE,WAHV;AAIEruC,SAAK,EAAE,CAJT;AAKE6P,aAAS,EAAEo9J,kDAAS,CAACplG,IAAV;AALb,GADiB,CAAD,CAAlB;AASD;AAEM,eAAegmG,gBAAf,CAAgCrmC,KAAhC,EAAuCqT,GAAvC,EAA4CC,MAA5C,EAAoD;AACzD,MAAI0U,IAAI,GAAG,MAAMxnB,QAAQ,CAAC6S,GAAD,EAAMC,MAAN,EAAc,IAAd,CAAzB;AACA,SAAO0U,IAAI,CACRhsJ,GADI,CACAi8I,GAAG,IAAIqe,6EAAiB,CAAC5H,kDAAD,EAASvL,wDAAT,EAAuBnjB,KAAvB,EAA8BiY,GAA9B,CADxB,EAEJv4I,MAFI,CAEGw9C,OAFH,CAAP;AAGD;AAEM,eAAeopH,qBAAf,CAAqCtmC,KAArC,EAA4CqT,GAA5C,EAAiDC,MAAjD,EAAyD;AAC9D,MAAI0U,IAAI,GAAG,MAAMqe,gBAAgB,CAACrmC,KAAD,EAAQqT,GAAR,EAAaC,MAAb,CAAjC;AACA,SAAO0U,IAAI,CAAC/oJ,MAAL,GAAc,CAAd,GAAkB+oJ,IAAI,CAAC,CAAD,CAAtB,GAA4B,IAAnC;AACD;AAEM,SAASue,gBAAT,CAA0BvmC,KAA1B,EAAiCiY,GAAjC,EAAsC;AAC3C;AACA;AACA,MAAI,CAACA,GAAG,CAAC3X,EAAT,EAAa;AACX2X,OAAG,mCAAQA,GAAR;AAAa3X,QAAE,EAAEpD,IAAI,CAACgX,MAAL;AAAjB,MAAH;AACD;;AAED,SAAOiyB,cAAc,CACnBnmC,KADmB,EAEnBk2B,4EAAgB,CAACxH,kDAAD,EAASvL,wDAAT,EAAuBnjB,KAAvB,EAA8BiY,GAA9B,CAFG,CAArB;AAID;AAEM,SAASuuB,gBAAT,CAA0BxmC,KAA1B,EAAiCsB,MAAjC,EAAyC;AAC9C,SAAOxhH,MAAM,CAACkgH,KAAD,EAAQq2B,4EAAgB,CAAC3H,kDAAD,EAASvL,wDAAT,EAAuBnjB,KAAvB,EAA8BsB,MAA9B,CAAxB,CAAb;AACD,C,CAED;AACA;;AAEO,eAAekB,aAAf,GAA+B;AACpC,SAAOp5D,GAAG,CAAE;AACd;AACA;AACA;AACA;AACA,GALY,CAAV;AAMD;AAEM,eAAeq9F,oBAAf,GAAsC;AAC3C,QAAMl6B,MAAM,GAAG,MAAMnjE,GAAG,CACtB,sFADsB,CAAxB;AAGA,QAAM4+E,IAAI,GAAG,MAAM5+E,GAAG,CAAE;AAC1B;AACA;AACA,GAHwB,CAAtB;AAKA,SAAOmjE,MAAM,CAACvwI,GAAP,CAAWqmI,KAAK,IAAI;AACzB,2CACKA,KADL;AAEEkD,gBAAU,EAAEyiB,IAAI,CAACtoJ,MAAL,CAAYu4I,GAAG,IAAIA,GAAG,CAAC+S,SAAJ,KAAkB3oB,KAAK,CAAC/B,EAA3C;AAFd;AAID,GALM,CAAP;AAMD;AAEM,eAAeomC,mBAAf,CAAmCrkC,KAAnC,EAA0C;AAC/C,QAAMskC,SAAS,GAAG,MAAM52J,KAAK,CAAE;AACjC;AACA,GAF+B,CAA7B;AAGA,QAAMsuI,UAAU,GAAG,CAACsoB,SAAS,GAAGA,SAAS,CAACtoB,UAAb,GAA0B,CAApC,IAAyCuoB,oDAA5D;AAEAvkC,OAAK,mCACA4oB,0DAAkB,CAACjhG,QAAnB,CAA4Bq4E,KAA5B,CADA;AAEHgc,cAAU,EAAEA;AAFT,IAAL;AAIA,SAAO8nB,cAAc,CAAC,iBAAD,EAAoB9jC,KAApB,CAArB;AACD;AAEM,SAASC,mBAAT,CAA6BD,KAA7B,EAAoC;AACzCA,OAAK,GAAG4oB,0DAAkB,CAACjhG,QAAnB,CAA4Bq4E,KAA5B,EAAmC;AAAEviH,UAAM,EAAE;AAAV,GAAnC,CAAR;AACA,SAAOA,MAAM,CAAC,iBAAD,EAAoBuiH,KAApB,CAAb;AACD;AAEM,eAAewkC,iBAAf,CAAiCvmC,EAAjC,EAAqCwmC,QAArC,EAA+C;AACpD,QAAMv6B,MAAM,GAAG,MAAMnjE,GAAG,CACrB,wFADqB,CAAxB;;AAIA,2BAAgC29F,6DAAe,CAACx6B,MAAD,EAASu6B,QAAT,CAA/C;AAAA,QAAQnmB,OAAR,oBAAQA,OAAR;AAAA,QAAiBtC,UAAjB,oBAAiBA,UAAjB;;AACA,OAAK,IAAIx+G,IAAT,IAAiB8gH,OAAjB,EAA0B;AACxB,UAAM7gI,MAAM,CAAC,iBAAD,EAAoB+f,IAApB,CAAZ;AACD;;AACD,QAAM/f,MAAM,CAAC,iBAAD,EAAoB;AAAEwgH,MAAF;AAAM+d;AAAN,GAApB,CAAZ;AACD;AAEM,eAAe9b,mBAAf,CAAmCF,KAAnC,EAA0C4D,UAA1C,EAAsD;AAC3D,QAAMV,UAAU,GAAG,MAAMn8D,GAAG,CAAC,8CAAD,EAAiD,CAC3Ei5D,KAAK,CAAC/B,EADqE,CAAjD,CAA5B,CAD2D,CAK3D;;AACA,QAAM5gH,OAAO,CAAC0pD,GAAR,CAAYm8D,UAAU,CAACvpI,GAAX,CAAe8oI,GAAG,IAAIlC,cAAc,CAACkC,GAAD,EAAMmB,UAAN,CAApC,CAAZ,CAAN;AACA,QAAMmgC,OAAO,CAAC,iBAAD,EAAoB/jC,KAAK,CAAC/B,EAA1B,CAAb;AACD;AAEM,eAAe0mC,cAAf,CAA8BtkC,QAA9B,EAAwC;AAAErgC;AAAF,IAAY,EAApD,EAAwD;AAC7D,MAAIg8C,UAAJ;AAEA,MAAI4oB,GAAJ;AACA,QAAM34B,2DAAa,CAAC,YAAY;AAC9B,QAAIjsC,KAAJ,EAAW;AACT,YAAM6kE,OAAO,GAAG,MAAMn3J,KAAK,CAAE;AACnC;AACA,OAFiC,CAA3B;AAGAsuI,gBAAU,GAAG,CAAC6oB,OAAO,GAAGA,OAAO,CAAC7oB,UAAX,GAAwB,CAAhC,IAAqCuoB,oDAAlD;AACD,KALD,MAKO;AACL;AACA;AACA,YAAMrhC,UAAU,GAAG,MAAMn8D,GAAG,CACzB,qGADyB,EAE1B,CAACs5D,QAAQ,CAACsoB,SAAV,CAF0B,CAA5B;;AAKA,gCAAuC+b,6DAAe,CACpDxhC,UADoD,EAEpDA,UAAU,CAACtmI,MAAX,GAAoB,CAApB,GAAwBsmI,UAAU,CAAC,CAAD,CAAV,CAAcjF,EAAtC,GAA2C,IAFS,CAAtD;AAAA,YAAQqgB,OAAR,qBAAQA,OAAR;AAAA,YAA6B7gB,KAA7B,qBAAiBue,UAAjB;;AAIA,WAAK,IAAIx+G,IAAT,IAAiB8gH,OAAjB,EAA0B;AACxB,cAAM7gI,MAAM,CAAC,YAAD,EAAe+f,IAAf,CAAZ;AACD;;AACDw+G,gBAAU,GAAGve,KAAb;AACD;;AAED4C,YAAQ,mCACHqoB,qDAAa,CAAC/gG,QAAd,CAAuB04E,QAAvB,CADG;AAEN2b,gBAAU,EAAEA;AAFN,MAAR;AAKA,UAAM/d,EAAE,GAAG,MAAM6lC,cAAc,CAAC,YAAD,EAAezjC,QAAf,CAA/B,CA7B8B,CA8B9B;;AACA,UAAMpxD,MAAM,CAAC,kBAAD,EAAqB;AAAEgvD,QAAF;AAAM2F,gBAAU,EAAE3F;AAAlB,KAArB,CAAZ;AACA2mC,OAAG,GAAG3mC,EAAN;AACD,GAjCkB,CAAnB;AAkCA,SAAO2mC,GAAP;AACD;AAEM,SAAStkC,cAAT,CAAwBD,QAAxB,EAAkC;AACvCA,UAAQ,GAAGqoB,qDAAa,CAAC/gG,QAAd,CAAuB04E,QAAvB,EAAiC;AAAE5iH,UAAM,EAAE;AAAV,GAAjC,CAAX;AACA,SAAOA,MAAM,CAAC,YAAD,EAAe4iH,QAAf,CAAb;AACD;AAEM,eAAeykC,YAAf,CAA4B7mC,EAA5B,EAAgCiJ,OAAhC,EAAyCu9B,QAAzC,EAAmD;AACxD,MAAI,CAACv9B,OAAL,EAAc;AACZ,UAAM,IAAI9rI,KAAJ,CAAU,mCAAV,CAAN;AACD;;AAED,QAAM8nI,UAAU,GAAG,MAAMn8D,GAAG,CACzB,qGADyB,EAE1B,CAACmgE,OAAD,CAF0B,CAA5B;;AAKA,4BAAgCw9B,6DAAe,CAACxhC,UAAD,EAAauhC,QAAb,CAA/C;AAAA,QAAQnmB,OAAR,qBAAQA,OAAR;AAAA,QAAiBtC,UAAjB,qBAAiBA,UAAjB;;AACA,OAAK,IAAIx+G,IAAT,IAAiB8gH,OAAjB,EAA0B;AACxB,UAAM7gI,MAAM,CAAC,YAAD,EAAe+f,IAAf,CAAZ;AACD;;AACD,QAAM/f,MAAM,CAAC,YAAD,EAAe;AAAEwgH,MAAF;AAAM+d,cAAN;AAAkB2M,aAAS,EAAEzhB;AAA7B,GAAf,CAAZ;AACD;AAEM,eAAe3G,cAAf,CAA8BF,QAA9B,EAAwCuD,UAAxC,EAAoD;AACzD,MAAIA,UAAJ,EAAgB;AACd;AACA;AACA;AACA,UAAMmhC,iBAAiB,GAAG,MAAMh+F,GAAG,CACjC,qDADiC,EAEjC,CAACs5D,QAAQ,CAACpC,EAAV,CAFiC,CAAnC;;AAIA,SAAK,IAAI+mC,OAAT,IAAoBD,iBAApB,EAAuC;AACrC,YAAMtnJ,MAAM,CAAC,kBAAD,EAAqB;AAAEwgH,UAAE,EAAE+mC,OAAO,CAAC/mC,EAAd;AAAkB2F;AAAlB,OAArB,CAAZ;AACD,KAVa,CAYd;;;AACA,UAAMnmH,MAAM,CAAC,kBAAD,EAAqB;AAAEwgH,QAAE,EAAEoC,QAAQ,CAACpC,EAAf;AAAmB2F;AAAnB,KAArB,CAAZ;AACD;;AAED,SAAOmgC,OAAO,CAAC,YAAD,EAAe1jC,QAAQ,CAACpC,EAAxB,CAAd;AACD;AAEM,eAAe+oB,QAAf,CAAwB/oB,EAAxB,EAA4B;AACjC,SAAOvwH,KAAK,CAAE,mCAAF,EAAsC,CAACuwH,EAAD,CAAtC,CAAZ;AACD;AAEM,eAAegnC,WAAf,CAA2BvkC,KAA3B,EAAkC;AACvCA,OAAK,GAAGmoB,kDAAU,CAAClhG,QAAX,CAAoB+4E,KAApB,CAAR;AACA,MAAIzC,EAAJ;AACA,QAAMgO,2DAAa,CAAC,YAAY;AAC9BhO,MAAE,GAAG,MAAM6lC,cAAc,CAAC,QAAD,EAAWpjC,KAAX,CAAzB;AACA,UAAMzxD,MAAM,CAAC,eAAD,EAAkB;AAAEgvD,QAAF;AAAMwmC,cAAQ,EAAExmC;AAAhB,KAAlB,CAAZ;AACD,GAHkB,CAAnB;AAIA,SAAOA,EAAP;AACD;AAEM,eAAe2C,WAAf,CAA2BF,KAA3B,EAAkC;AACvC,qBAAwB,MAAMhzH,KAAK,CAAC,mCAAD,EAAsC,CACvEgzH,KAAK,CAACzC,EADiE,CAAtC,CAAnC;AAAA,MAAM+E,aAAN,gBAAMA,aAAN;;AAGA,MAAIA,aAAJ,EAAmB;AACjB;AACA;AACD,GAPsC,CASvC;AACA;AACA;AACA;AACA;AACA;;;AAEA,MAAIj3H,KAAK,GAAG,MAAMg7D,GAAG,CAAC,8CAAD,EAAiD,CACpE25D,KAAK,CAACzC,EAD8D,CAAjD,CAArB;AAGA,QAAM5gH,OAAO,CAAC0pD,GAAR,CAAYh7D,KAAK,CAACpS,GAAN,CAAUsO,IAAI,IAAIi5H,eAAe,CAAC;AAAEjD,MAAE,EAAEh2H,IAAI,CAACg2H;AAAX,GAAD,CAAjC,CAAZ,CAAN;AACA,SAAO8lC,OAAO,CAAC,QAAD,EAAWrjC,KAAK,CAACzC,EAAjB,CAAd;AACD;AAEM,eAAeinC,mBAAf,CAAmCxkC,KAAnC,EAA0C;AAC/C;AACA,SAAOqjC,OAAO,CAAC,QAAD,EAAWrjC,KAAK,CAACzC,EAAjB,CAAd;AACD;AAEM,SAAS0C,WAAT,CAAqBD,KAArB,EAA4B;AACjCA,OAAK,GAAGmoB,kDAAU,CAAClhG,QAAX,CAAoB+4E,KAApB,EAA2B;AAAEjjH,UAAM,EAAE;AAAV,GAA3B,CAAR;AACA,SAAOA,MAAM,CAAC,QAAD,EAAWijH,KAAX,CAAb;AACD;AAEM,eAAeykC,WAAf,CAA2BtmJ,MAA3B,EAAmCwmI,GAAnC,EAAwC;AAC7C;AACA,MAAIviB,MAAM,GAAGsiC,8DAAS,CAAC,MAAMr+F,GAAG,CAAC,sBAAD,CAAV,CAAtB,CAF6C,CAI7C;;AACA,MAAI+7D,MAAM,CAACjkH,MAAD,CAAN,CAAemkH,aAAf,IAAgC,IAApC,EAA0C;AACxC;AACD;;AACDqiB,KAAG,GAAGA,GAAG,CAAChoJ,MAAJ,CAAW4gI,EAAE,IAAI6E,MAAM,CAAC7E,EAAD,CAAN,CAAW+E,aAAX,IAA4B,IAA7C,CAAN;AAEA,QAAMiJ,2DAAa,CAAC,YAAY;AAC9B,UAAM5uH,OAAO,CAAC0pD,GAAR,CACJs+E,GAAG,CAAC1rJ,GAAJ,CAAQ,MAAMskI,EAAN,IAAY;AAClB,UAAIid,QAAQ,GAAG,MAAMn0E,GAAG,CACtB,iDADsB,EAEtB,CAACk3D,EAAD,CAFsB,CAAxB;AAIA,YAAM5gH,OAAO,CAAC0pD,GAAR,CACJm0E,QAAQ,CAACvhJ,GAAT,CAAam0C,CAAC,IACZrwB,MAAM,CAAC,eAAD,EAAkB;AAAEwgH,UAAE,EAAEnwF,CAAC,CAACmwF,EAAR;AAAYwmC,gBAAQ,EAAE5lJ;AAAtB,OAAlB,CADR,CADI,CAAN;AAKD,KAVD,CADI,CAAN;AAcA,WAAOxB,OAAO,CAAC0pD,GAAR,CACLs+E,GAAG,CAAC1rJ,GAAJ,CAAQskI,EAAE,IACR5gH,OAAO,CAAC0pD,GAAR,CAAY,CACVtpD,MAAM,CAAC,eAAD,EAAkB;AAAEwgH,QAAF;AAAMwmC,cAAQ,EAAE5lJ;AAAhB,KAAlB,CADI,EAEVklJ,OAAO,CAAC,QAAD,EAAW9lC,EAAX,CAFG,CAAZ,CADF,CADK,CAAP;AAQD,GAvBkB,CAAnB;AAwBD;AAEM,SAASuC,SAAT,GAAqB;AAC1B,SAAOz5D,GAAG,CAAE;AACd;AACA;AACA;AACA;AACA,GALY,CAAV;AAMD;AAEM,eAAes+F,iBAAf,GAAmC;AACxC,MAAI1f,IAAI,GAAG,MAAM5+E,GAAG,CAAE;AACxB;AACA;AACA;AACA;AACA,GALsB,CAApB;AAMA,SAAO4+E,IAAI,CAAChsJ,GAAL,CAASi8I,GAAG,IAAIA,GAAG,CAAC3X,EAApB,CAAP;AACD;AAEM,eAAeqnC,cAAf,CAA8B1lK,IAA9B,EAAoC;AACzC,SAAO8N,KAAK,CAAE,8DAAF,EAAiE,CAC3E9N,IAAI,CAACq3B,WAAL,EAD2E,CAAjE,CAAZ;AAGD;AAEM,SAASsuI,eAAT,CAAyBt9J,IAAzB,EAA+B;AACpCA,MAAI,GAAG6gJ,sDAAc,CAACnhG,QAAf,CAAwB1/C,IAAxB,CAAP;AACA,SAAO67J,cAAc,CAAC,aAAD,EAAgB77J,IAAhB,CAArB;AACD;AAEM,SAASi5H,eAAT,CAAyBj5H,IAAzB,EAA+B;AACpC,SAAO87J,OAAO,CAAC,aAAD,EAAgB97J,IAAI,CAACg2H,EAArB,CAAd;AACD;AAEM,SAASgD,eAAT,CAAyBh5H,IAAzB,EAA+B;AACpCA,MAAI,GAAG4gJ,kDAAU,CAAClhG,QAAX,CAAoB1/C,IAApB,EAA0B;AAAEwV,UAAM,EAAE;AAAV,GAA1B,CAAP;AACA,SAAOA,MAAM,CAAC,aAAD,EAAgBxV,IAAhB,CAAb;AACD;AAEM,SAAS44H,aAAT,CAAuB5C,EAAvB,EAA2B;AAChC,SAAOl3D,GAAG,CACP;AACL;AACA,gDAHY,EAIR,CAACk3D,EAAD,CAJQ,CAAV;AAMD;AAEM,SAASkB,WAAT,GAAuB;AAC5B,SAAOp4D,GAAG,CACP;AACL;AACA;AACA,iCAJY,CAAV;AAMD;AAEM,eAAey+F,aAAf,CAA6BnmC,OAA7B,EAAsC;AAC3C;AACA;AACA,MAAIA,OAAO,CAACtsH,IAAR,KAAiBnd,SAArB,EAAgC;AAC9BypI,WAAO,mCAAQA,OAAR;AAAiBtsH,UAAI,EAAE;AAAvB,MAAP;AACD;;AAED,QAAM8uH,QAAQ,GAAG,MAAM96D,GAAG,CACxB,sEADwB,EAExB,CAACs4D,OAAO,CAAC4C,SAAR,IAAqB,IAArB,GAA4B5C,OAAO,CAAC4C,SAApC,GAAgD,CAAjD,CAFwB,CAA1B,CAP2C,CAY3C;;AACA,0BAAqByiC,6DAAe,CAAC7iC,QAAD,CAApC;AAAA,MAAMma,UAAN,qBAAMA,UAAN;;AAEA3c,SAAO,GAAGopB,oDAAY,CAAC9gG,QAAb,iCAA2B03E,OAA3B;AAAoC2c;AAApC,KAAV;AACA,SAAO8nB,cAAc,CAAC,UAAD,EAAazkC,OAAb,CAArB;AACD;AAEM,SAASE,aAAT,CAAuBF,OAAvB,EAAgC;AACrCA,SAAO,GAAGopB,oDAAY,CAAC9gG,QAAb,CAAsB03E,OAAtB,EAA+B;AAAE5hH,UAAM,EAAE;AAAV,GAA/B,CAAV;AACA,SAAOA,MAAM,CAAC,UAAD,EAAa4hH,OAAb,CAAb;AACD;AAEM,SAASO,aAAT,CAAuBP,OAAvB,EAAgC;AACrC,SAAO0kC,OAAO,CAAC,UAAD,EAAa1kC,OAAO,CAACpB,EAArB,CAAd;AACD;AAEM,eAAewnC,WAAf,CAA2BxnC,EAA3B,EAA+BwmC,QAA/B,EAAyC;AAC9C,MAAIplC,OAAO,GAAG,MAAM3xH,KAAK,CAAC,qCAAD,EAAwC,CAACuwH,EAAD,CAAxC,CAAzB;AACA,MAAI4D,QAAJ;;AACA,MAAIxC,OAAO,CAAC8C,MAAZ,EAAoB;AAClBN,YAAQ,GAAG,MAAM96D,GAAG,CACjB,gFADiB,CAApB;AAGD,GAJD,MAIO;AACL86D,YAAQ,GAAG,MAAM96D,GAAG,CACjB,qGADiB,EAElB,CAACs4D,OAAO,CAAC4C,SAAT,CAFkB,CAApB;AAID;;AAED,4BAAgCyiC,6DAAe,CAAC7iC,QAAD,EAAW4iC,QAAX,CAA/C;AAAA,QAAQnmB,OAAR,qBAAQA,OAAR;AAAA,QAAiBtC,UAAjB,qBAAiBA,UAAjB;;AACA,QAAM/P,2DAAa,CAAC,MAAM;AACxB,SAAK,IAAIzuG,IAAT,IAAiB8gH,OAAjB,EAA0B;AACxB7gI,YAAM,CAAC,UAAD,EAAa+f,IAAb,CAAN;AACD;;AACD/f,UAAM,CAAC,UAAD,EAAa;AAAEwgH,QAAF;AAAM+d;AAAN,KAAb,CAAN;AACD,GALkB,CAAnB;AAMD;AAEM,eAAe0pB,cAAf,CAA8BznC,EAA9B,EAAkC;AACvC,MAAI0nB,IAAI,GAAG,MAAMqe,gBAAgB,CAC/B,cAD+B,EAE/B,2CAF+B,EAG/B,CAAC/lC,EAAD,CAH+B,CAAjC;AAKA,SAAO0nB,IAAI,CAAC,CAAD,CAAX;AACD;;AAED,SAASggB,sBAAT,CAAgChnC,SAAhC,EAA2CinC,QAA3C,EAAqDluK,OAAO,GAAG,EAA/D,EAAmE;AACjE,4BAAmDA,OAAnD,CAAMmuK,UAAN;AAAA,MAAMA,UAAN,oCAAmB,KAAnB;AAAA,8BAAmDnuK,OAAnD,CAA0BouK,aAA1B;AAAA,MAA0BA,aAA1B,sCAA0C,IAA1C;AAEA,MAAIC,QAAQ,GAAGH,QAAQ,GAAG,UAAH,GAAgB,OAAvC;AACA,MAAI30B,MAAM,GAAG,EAAb;;AAEA,MAAItS,SAAJ,EAAe;AACb,QAAIA,SAAS,KAAK,WAAlB,EAA+B;AAC7BonC,cAAQ,IAAI,mCAAZ;AACD,KAFD,MAEO,IAAIpnC,SAAS,KAAK,UAAlB,EAA8B;AACnConC,cAAQ,IAAI,mCAAZ;AACD,KAFM,MAEA,IAAIpnC,SAAS,KAAK,eAAlB,EAAmC;AACxConC,cAAQ,IAAK;AACnB;AACA;AACA;AACA,SAJM;AAKD,KANM,MAMA;AACLA,cAAQ,IAAI,WAAZ;AACA90B,YAAM,CAACx1I,IAAP,CAAYkjI,SAAZ;AACD;AACF,GAfD,MAeO;AACLonC,YAAQ,IAAIF,UAAU,GAAG,GAAH,GAAS,cAA/B;;AAEA,QAAI,CAACC,aAAL,EAAoB;AAClBC,cAAQ,IAAI,sBAAZ;AACD;AACF;;AAED,SAAO;AAAEA,YAAF;AAAY90B;AAAZ,GAAP;AACD;;AAEM,eAAe+0B,qBAAf,CACLrnC,SADK,EAELrjI,SAFK,EAGL67C,OAHK,EAILz/C,OAAO,GAAG,EAJL,EAKL;AACA,QAAM,IAAI0D,KAAJ,CAAU,uCAAV,CAAN;AACD;AAEM,eAAe0jI,eAAf,CAA+BH,SAA/B,EAA0C2xB,IAA1C,EAAgD;AACrD,MAAIA,IAAI,KAAK16J,SAAb,EAAwB;AACtB,UAAM,IAAIwF,KAAJ,CACJ,gGADI,CAAN;AAGD;;AAED,SAAO4oK,gBAAgB,CACrB,cADqB,EAErB,gDAFqB,EAGrB,CAACrlC,SAAD,CAHqB,CAAvB;AAKD;AAEM,SAASsnC,iBAAT,CAA2BziC,WAA3B,EAAwC;AAC7C,SAAO0gC,gBAAgB,CAAC,cAAD,EAAiB1gC,WAAjB,CAAvB;AACD;AAEM,SAASxE,iBAAT,CAA2BwE,WAA3B,EAAwC;AAC7C,SAAO2gC,gBAAgB,CAAC,cAAD,EAAiB3gC,WAAjB,CAAvB;AACD;AAEM,eAAetE,iBAAf,CAAiCsE,WAAjC,EAA8C;AACnD,SAAOugC,OAAO,CAAC,cAAD,EAAiBvgC,WAAW,CAACvF,EAA7B,CAAd;AACD,C;;;;;;;;;;;;ACpqBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;CAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIioC,WAAJ;AACA,IAAI3lB,YAAJ;AAEO,eAAe4lB,YAAf,GAA8B;AACnC;AACA;AACA,MAAIjjC,UAAU,GAAG,CAAC,MAAMkF,0CAAA,CAAO,gCAAP,CAAP,EAAiDzuI,GAAjD,CAAqDurJ,CAAC,IAAI,CACzEA,CAAC,CAACjnB,EADuE,EAEzEinB,CAAC,CAACthB,UAFuE,CAA1D,CAAjB;AAIA,MAAId,MAAM,GAAG,CAAC,MAAMsF,0CAAA,CAAO,6BAAP,CAAP,EAA8CzuI,GAA9C,CAAkDurJ,CAAC,IAAI,CAClEA,CAAC,CAACjnB,EADgE,EAElEinB,CAAC,CAACuf,QAFgE,CAAvD,CAAb,CAPmC,CAYnC;;AACAyB,aAAW,GAAG,IAAIz7J,GAAJ,CAAQy4H,UAAU,CAACtvG,MAAX,CAAkBkvG,MAAlB,CAAR,CAAd;;AAEA,MAAIyd,YAAJ,EAAkB;AAChBA,gBAAY;AACb;;AACDA,cAAY,GAAGqB,mEAAe,CAACC,WAAD,CAA9B;AACD;;AAED,SAASA,WAAT,CAAqBK,SAArB,EAAgCC,SAAhC,EAA2C;AACzCA,WAAS,CAACr5I,OAAV,CAAkB,CAACuT,KAAD,EAAQshH,KAAR,KAAkB;AAClC,QAAIA,KAAK,CAAC/4H,OAAN,CAAc,SAAd,MAA6B,CAAC,CAAlC,EAAqC;AACnC,UAAIg7B,KAAK,GAAG+9F,KAAK,KAAK,kBAAV,GAA+B,YAA/B,GAA8C,UAA1D;AAEAthH,WAAK,CAACvT,OAAN,CAAcs5I,QAAQ,IAAI;AACxB8jB,mBAAW,CAAC9pK,GAAZ,CAAgBgmJ,QAAQ,CAACnkB,EAAzB,EAA6BmkB,QAAQ,CAACxiH,KAAD,CAArC;AACD,OAFD;AAGD;AACF,GARD;AASD;;AAEM,SAAS8hH,WAAT,GAAuB;AAC5B,SAAOwkB,WAAP;AACD;AAEM,SAASE,UAAT,CAAoBnoC,EAApB,EAAwB;AAC7B,SAAOioC,WAAW,CAACrtK,GAAZ,CAAgBolI,EAAhB,KAAuB,IAA9B;AACD,C;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAO,MAAMsmC,cAAc,GAAG,KAAvB;;AAEP,SAAS8B,QAAT,CAAkBhqJ,KAAlB,EAAyBqiB,EAAzB,EAA6B;AAC3B,QAAM4nI,KAAK,GAAGjqJ,KAAK,CAACqiB,EAAE,GAAG,CAAN,CAAnB;AACA,QAAM6nI,KAAK,GAAGlqJ,KAAK,CAACqiB,EAAD,CAAnB;;AAEA,MAAI,CAAC4nI,KAAL,EAAY;AACV,WAAOC,KAAK,CAACvqB,UAAN,GAAmB,CAA1B;AACD,GAFD,MAEO,IAAI,CAACuqB,KAAL,EAAY;AACjB,WAAOD,KAAK,CAACtqB,UAAN,GAAmBuoB,cAA1B;AACD,GAFM,MAEA;AACL,WAAO,CAAC+B,KAAK,CAACtqB,UAAN,GAAmBuqB,KAAK,CAACvqB,UAA1B,IAAwC,CAA/C;AACD;AACF;;AAEM,SAAS0oB,eAAT,CAAyBroJ,KAAzB,EAAgCooJ,QAAhC,EAA0C;AAC/C,QAAM/lI,EAAE,GAAGriB,KAAK,CAACxd,SAAN,CAAgBib,IAAI,IAAIA,IAAI,CAACmkH,EAAL,KAAYwmC,QAApC,CAAX;AACA,QAAM5lJ,MAAM,GAAGxC,KAAK,CAACqiB,EAAD,CAApB;AACA,QAAMlmC,MAAM,GAAG6jB,KAAK,CAACqiB,EAAE,GAAG,CAAN,CAApB;AACA,MAAI4/G,OAAO,GAAG,EAAd,CAJ+C,CAM/C;;AACA,MAAI,CAACmmB,QAAD,IAAa/lI,EAAE,KAAK,CAAC,CAAzB,EAA4B;AAC1B,QAAI++F,KAAJ;;AACA,QAAIphH,KAAK,CAACzf,MAAN,GAAe,CAAnB,EAAsB;AACpB;AACA6gI,WAAK,GAAGphH,KAAK,CAACA,KAAK,CAACzf,MAAN,GAAe,CAAhB,CAAL,CAAwBo/I,UAAxB,GAAqCuoB,cAA7C;AACD,KAHD,MAGO;AACL;AACA9mC,WAAK,GAAG8mC,cAAR;AACD;;AAED,WAAO;AAAEjmB,aAAF;AAAWtC,gBAAU,EAAEve;AAAvB,KAAP;AACD,GAXD,MAWO;AACL,QAAI5+G,MAAM,CAACm9H,UAAP,IAAqBxjJ,MAAM,GAAGA,MAAM,CAACwjJ,UAAV,GAAuB,CAAlD,KAAwD,CAA5D,EAA+D;AAC7D,UAAI9lJ,IAAI,GAAGwoC,EAAX;AACA,UAAI++F,KAAK,GAAG,CAACphH,KAAK,CAACnmB,IAAD,CAAL,CAAY8lJ,UAAZ,GAAyB,CAA1B,IAA+BuoB,cAA3C;;AACA,aAAOruK,IAAI,GAAGmmB,KAAK,CAACzf,MAApB,EAA4B;AAC1B;AACA;AACA;AACA,YAAI6gI,KAAK,IAAIphH,KAAK,CAACnmB,IAAD,CAAL,CAAY8lJ,UAAzB,EAAqC;AACnC;AACD;;AAEDsC,eAAO,CAAC7iJ,IAAR,CAAa;AAAEwiI,YAAE,EAAE5hH,KAAK,CAACnmB,IAAD,CAAL,CAAY+nI,EAAlB;AAAsB+d,oBAAU,EAAEve;AAAlC,SAAb;AAEAvnI,YAAI;AACJunI,aAAK,IAAI8mC,cAAT;AACD;AACF;;AAED,WAAO;AAAEjmB,aAAF;AAAWtC,gBAAU,EAAEqqB,QAAQ,CAAChqJ,KAAD,EAAQqiB,EAAR;AAA/B,KAAP;AACD;AACF,C;;;;;;;;;;;;ACtDD;AAAA;AAAA;AAAO,eAAemnH,SAAf,CACL1nB,QADK,EAELqoC,KAFK,EAGL9mI,OAHK,EAIL+mI,SAJK,EAKLx1B,MAAM,GAAG,EALJ,EAML;AACA,MAAIy1B,SAAS,GAAG,GAAhB;AACA,MAAIlxJ,OAAO,GAAG,EAAd;AAEA,MAAImxJ,UAAU,GAAG,IAAI11J,GAAJ,EAAjB;;AAEA,OAAK,IAAIwE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+wJ,KAAK,CAAC5pK,MAA1B,EAAkC6Y,CAAC,IAAIixJ,SAAvC,EAAkD;AAChD,QAAI9nK,KAAK,GAAG4nK,KAAK,CAAC5nK,KAAN,CAAY6W,CAAZ,EAAeA,CAAC,GAAGixJ,SAAnB,EAA8BrpK,MAA9B,CAAqC4gI,EAAE,IAAI,CAAC0oC,UAAU,CAAC/3J,GAAX,CAAeqvH,EAAf,CAA5C,CAAZ;;AACA,QAAIr/H,KAAK,CAAChC,MAAN,GAAe,CAAnB,EAAsB;AACpB,UAAIS,MAAM,GAAGuB,KAAK,CAACjF,GAAN,CAAUskI,EAAE,IAAIv+F,OAAO,CAACu+F,EAAD,CAAvB,EAA6BtmH,IAA7B,CAAkC,MAAlC,CAAb;AACA,UAAIqlH,KAAK,GAAGypC,SAAS,CAAC,MAAMppK,MAAN,GAAe,GAAhB,CAArB;AAEA,UAAIsoJ,IAAI,GAAG,MAAMxnB,QAAQ,CAACnB,KAAD,EAAQiU,MAAR,EAAgB,IAAhB,CAAzB;AACA01B,gBAAU,GAAG,IAAI11J,GAAJ,CAAQ,CAAC,GAAG01J,UAAJ,EAAgB,GAAG/nK,KAAnB,CAAR,CAAb;AACA4W,aAAO,GAAGA,OAAO,CAACoe,MAAR,CAAe+xH,IAAf,CAAV;AACD;AACF;;AAED,SAAOnwI,OAAP;AACD;AAEM,SAASkwI,OAAT,CAAiBL,GAAjB,EAAsBzlH,KAAtB,EAA6B;AAClC,MAAIgnI,IAAI,GAAG,CAAC,GAAG,IAAI31J,GAAJ,CAAQo0I,GAAR,CAAJ,CAAX;AACA,MAAIhoJ,MAAM,GAAI,GAAEuiC,KAAM,OAAT,GAAkBgnI,IAAI,CAACjtK,GAAL,CAASskI,EAAE,IAAK,IAAGA,EAAG,GAAtB,EAA0BtmH,IAA1B,CAA+B,GAA/B,CAAlB,GAAwD,GAArE;AACA,SAAOta,MAAP;AACD,C;;;;;;;;;;;;AC/BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAI49H,MAAM,GAAGjjH,mBAAO,CAAC,sBAAD,CAApB;;AAEA,IAAI6uJ,oBAAoB,GAAG,aAA3B;AAEO,eAAeC,YAAf,CAA4BjtI,GAA5B,EAAiC;AACtC,SAAOohG,MAAM,CACV8rC,UADI,CACO,QADP,EAEJtpJ,MAFI,CAEGoc,GAFH,EAGJmtI,MAHI,CAGG,QAHH,CAAP;AAID;AAEM,SAASrsI,WAAT,CAAqB3E,CAArB,EAAwB;AAC7B,SAAOilG,MAAM,CAACtgG,WAAP,CAAmB3E,CAAnB,CAAP;AACD;AAEM,SAASzK,OAAT,CAAiB07I,SAAjB,EAA4B9wK,KAA5B,EAAmC;AACxC,MAAI+wK,eAAe,GAAGD,SAAS,CAAC5+B,QAAV,GAAqBxqG,GAA3C,CADwC,CAExC;;AACA,MAAIspI,EAAE,GAAGlsC,MAAM,CAACtgG,WAAP,CAAmB,EAAnB,CAAT;AACA,MAAIysI,MAAM,GAAGnsC,MAAM,CAACosC,cAAP,CAAsBR,oBAAtB,EAA4CK,eAA5C,EAA6DC,EAA7D,CAAb;AACA,MAAIjF,SAAS,GAAGkF,MAAM,CAAC3pJ,MAAP,CAActnB,KAAd,CAAhB;AACA+rK,WAAS,GAAGlpJ,MAAM,CAAC4a,MAAP,CAAc,CAACsuI,SAAD,EAAYkF,MAAM,CAACE,KAAP,EAAZ,CAAd,CAAZ;AAEA,MAAIC,OAAO,GAAGH,MAAM,CAACI,UAAP,EAAd;AAEA,SAAO;AACLrxK,SAAK,EAAE+rK,SADF;AAELjlF,QAAI,EAAE;AACJ4jF,WAAK,EAAEoG,SAAS,CAACjuB,KAAV,EADH;AAEJyuB,eAAS,EAAEZ,oBAFP;AAGJM,QAAE,EAAEA,EAAE,CAAC3zJ,QAAH,CAAY,QAAZ,CAHA;AAIJ+zJ,aAAO,EAAEA,OAAO,CAAC/zJ,QAAR,CAAiB,QAAjB;AAJL;AAFD,GAAP;AASD;AAEM,SAAS4X,OAAT,CAAiB67I,SAAjB,EAA4B/E,SAA5B,EAAuCjlF,IAAvC,EAA6C;AAClD,MAAIiqF,eAAe,GAAGD,SAAS,CAAC5+B,QAAV,GAAqBxqG,GAA3C;AACA,MAAM4pI,SAAN,GAAiCxqF,IAAjC,CAAMwqF,SAAN;AAAA,MAAiBN,EAAjB,GAAiClqF,IAAjC,CAAiBkqF,EAAjB;AAAA,MAAqBI,OAArB,GAAiCtqF,IAAjC,CAAqBsqF,OAArB;AACAJ,IAAE,GAAGnuJ,MAAM,CAACre,IAAP,CAAYwsK,EAAZ,EAAgB,QAAhB,CAAL;AAEAI,SAAO,GAAGvuJ,MAAM,CAACre,IAAP,CAAY4sK,OAAZ,EAAqB,QAArB,CAAV;AAEA,MAAIG,QAAQ,GAAGzsC,MAAM,CAAC0sC,gBAAP,CAAwBF,SAAxB,EAAmCP,eAAnC,EAAoDC,EAApD,CAAf;AACAO,UAAQ,CAACE,UAAT,CAAoBL,OAApB;AAEA,MAAIM,SAAS,GAAGH,QAAQ,CAACjqJ,MAAT,CAAgBykJ,SAAhB,CAAhB;AACA2F,WAAS,GAAG7uJ,MAAM,CAAC4a,MAAP,CAAc,CAACi0I,SAAD,EAAYH,QAAQ,CAACJ,KAAT,EAAZ,CAAd,CAAZ;AACA,SAAOO,SAAP;AACD;AAEM,SAASC,SAAT,CAAmB;AAAEC,QAAF;AAAUt9I;AAAV,CAAnB,EAAqC;AAC1C,MAAI6J,MAAM,GAAG0zI,eAAe,CAAC;AAAED,UAAF;AAAUt9I;AAAV,GAAD,CAA5B;AACA,SAAO;AACLoT,OAAG,EAAEvJ,MADA;AAEL6G,UAAM,EAAE7G,MAAM,CAAC9gB,QAAP,CAAgB,QAAhB;AAFH,GAAP;AAID;AAEM,SAASy0J,SAAT,CAAmBpuI,GAAnB,EAAwB;AAC7B,SAAO;AACLgE,OAAG,EAAE7kB,MAAM,CAACre,IAAP,CAAYk/B,GAAZ,EAAiB,QAAjB,CADA;AAELsB,UAAM,EAAEtB;AAFH,GAAP;AAID;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASmuI,eAAT,CAAyB;AAAEE,UAAF;AAAYH,QAAZ;AAAoBt9I;AAApB,CAAzB,EAAqD;AACnD,SAAOwwG,MAAM,CAACktC,UAAP,CACLJ,MAAM,IAAI9sC,MAAM,CAACtgG,WAAP,CAAmB,GAAnB,EAAwBnnB,QAAxB,CAAiC,QAAjC,CADL,EAELiX,IAAI,IAAIwwG,MAAM,CAACtgG,WAAP,CAAmB,EAAnB,EAAuBnnB,QAAvB,CAAgC,QAAhC,CAFH,EAGL,KAHK,EAIL00J,QAAQ,IAAI,EAJP,EAKL,QALK,CAAP;AAOD,C;;;;;;;;;;;;AClFD;AAAA;AAAA;;AACA,IAAIrtC,IAAI,GAAG7iH,mBAAO,CAAC,oGAAD,CAAlB,C,CAEA;AACA;;;AACA,IAAIvM,IAAI,GAAG,EAAX;;AAEA,MAAM28J,GAAN,CAAU;AACR3yK,aAAW,CAAC;AAAEwoI,MAAF;AAAM9nI;AAAN,GAAD,EAAgB;AACzB,SAAK8nI,EAAL,GAAUA,EAAE,IAAIpD,IAAI,CAACgX,MAAL,EAAhB;AACD;;AAEuB,QAAlBw2B,kBAAkB,CAAC;AAAEC,YAAF;AAAY79I;AAAZ,GAAD,EAAqB;AAC3C,SAAKt0B,KAAL,GAAa,MAAMoyK,+DAAA,CAAoB;AAAER,YAAM,EAAEO,QAAV;AAAoB79I;AAApB,KAApB,CAAnB;AACD;;AAEqB,QAAhB+9I,gBAAgB,CAAC3uI,GAAD,EAAM;AAC1B,SAAK1jC,KAAL,GAAa,MAAMoyK,+DAAA,CAAoB1uI,GAApB,CAAnB;AACD;;AAEDm/G,OAAK,GAAG;AACN,WAAO,KAAK/a,EAAZ;AACD;;AAEDoK,UAAQ,GAAG;AACT,WAAO,KAAKlyI,KAAZ;AACD;;AAED0c,WAAS,GAAG;AACV,WAAO;AACLorH,QAAE,EAAE,KAAKA,EADJ;AAEL9iG,YAAM,EAAE,KAAKhlC,KAAL,CAAWglC;AAFd,KAAP;AAID;;AA1BO;;AA6BV,SAASi+G,MAAT,CAAgBynB,KAAhB,EAAuB;AACrB,MAAIA,KAAK,IAAI,IAAT,IAAiBp1J,IAAI,CAACo1J,KAAD,CAAJ,IAAe,IAApC,EAA0C;AACxC,UAAM,IAAIzlK,KAAJ,CAAU,aAAV,CAAN;AACD;;AACD,SAAOqQ,IAAI,CAACo1J,KAAD,CAAX;AACD;;AAED,SAASL,MAAT,CAAgBK,KAAhB,EAAuB;AACrB,SAAOA,KAAK,IAAIp1J,IAAhB;AACD;;AAED,SAAS8f,OAAT,CAAiBp1B,KAAjB,EAAwB0qK,KAAxB,EAA+B;AAC7B,SAAO0H,6DAAA,CAAkBnvB,MAAM,CAACynB,KAAD,CAAxB,EAAiC1qK,KAAjC,CAAP;AACD;;AAED,SAASi1B,OAAT,CAAiB82I,SAAjB,EAA4BjlF,IAA5B,EAAkC;AAChC,SAAOsrF,6DAAA,CAAkBnvB,MAAM,CAACn8D,IAAI,CAAC4jF,KAAN,CAAxB,EAAsCqB,SAAtC,EAAiDjlF,IAAjD,CAAP;AACD;;AAED,SAAStiD,WAAT,CAAqB3E,CAArB,EAAwB;AACtB,SAAOuyI,iEAAA,CAAsBvyI,CAAtB,CAAP;AACD;;AAED,eAAeyyI,OAAf,CAAuB/8J,GAAvB,EAA4B;AAC1B,MAAIg9J,WAAJ;;AACA,MAAI,EAAEh9J,GAAG,YAAY08J,GAAjB,CAAJ,EAA2B;AACzBM,eAAW,GAAG,IAAIN,GAAJ,CAAQ;AAAEnqC,QAAE,EAAEvyH,GAAG,CAACuyH;AAAV,KAAR,CAAd;AACA,UAAMyqC,WAAW,CAACF,gBAAZ,CAA6B98J,GAAG,CAACyvB,MAAjC,CAAN;AACD,GAHD,MAGO;AACLutI,eAAW,GAAGh9J,GAAd;AACD;;AAEDD,MAAI,CAACi9J,WAAW,CAAC1vB,KAAZ,EAAD,CAAJ,GAA4B0vB,WAA5B;AACD;;AAED,SAASC,SAAT,CAAmBj9J,GAAnB,EAAwB;AACtB,SAAOD,IAAI,CAACC,GAAG,CAACstI,KAAJ,EAAD,CAAX;AACD;;AAED,SAAS4vB,aAAT,GAAyB;AACvBn9J,MAAI,GAAG,EAAP;AACD;;AAED,eAAeq8J,SAAf,CAAyB;AAAE7pC,IAAF;AAAMqqC,UAAN;AAAgB79I;AAAhB,CAAzB,EAAiD;AAC/C,MAAI/e,GAAG,GAAG,IAAI08J,GAAJ,CAAQ;AAAEnqC;AAAF,GAAR,CAAV;AACA,QAAMvyH,GAAG,CAAC28J,kBAAJ,CAAuB;AAAEC,YAAF;AAAY79I;AAAZ,GAAvB,CAAN;AACA,SAAO/e,GAAP;AACD;;AAEc;AACb0f,SADa;AAEbG,SAFa;AAGboP,aAHa;AAIbmtI,WAJa;AAKbW,SALa;AAMbrvB,QANa;AAObonB,QAPa;AAQbmI,WARa;AASbC;AATa,CAAf,E;;;;;;;;;;;;ACrFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,MAAMhI,SAAN,SAAwBxlK,KAAxB,CAA8B;AACnC3F,aAAW,CAAC6qK,MAAD,EAASrjF,IAAT,EAAe;AACxB,UAAM,gBAAgBqjF,MAAtB;AACA,SAAKvtJ,IAAL,GAAY,WAAZ;AACA,SAAKutJ,MAAL,GAAcA,MAAd;AACA,SAAKrjF,IAAL,GAAYA,IAAZ;AACD;;AANkC;AAS9B,MAAM6iF,SAAN,SAAwB1kK,KAAxB,CAA8B;AACnC3F,aAAW,CAACsnB,IAAD,EAAO8xH,IAAP,EAAa;AACtB,UAAO,wCAAuC9xH,IAAK,MAAK8xH,IAAK,EAA7D;AACA,SAAKg6B,UAAL,GAAkB9rJ,IAAlB;AACA,SAAK+rJ,YAAL,GAAoBj6B,IAApB;AACD;;AALkC;AAQ9B,MAAMk6B,SAAN,SAAwB3tK,KAAxB,CAA8B;AACnC3F,aAAW,CAAC6qK,MAAD,EAASrjF,IAAT,EAAe;AACxB,UAAM,gBAAgBqjF,MAAtB;AACA,SAAKA,MAAL,GAAcA,MAAd;AACA,SAAKrjF,IAAL,GAAYA,IAAZ;AACD;;AALkC;AAQ9B,MAAM+rF,gBAAN,SAA+B5tK,KAA/B,CAAqC;AAC1C;AACA3F,aAAW,CAACovC,OAAD,EAAU;AACnB,UAAMA,OAAN;AACD;;AAJyC;AAOrC,MAAM4xG,SAAN,SAAwBr7I,KAAxB,CAA8B;AACnC3F,aAAW,CAACsd,IAAD,EAAO8xB,OAAP,EAAgB;AACzB,UAAM,gBAAgBA,OAAtB;AACA,SAAK9xB,IAAL,GAAYA,IAAZ;AACD;;AAJkC;AAO9B,SAASk2I,QAAT,CAAkBnpI,GAAlB,EAAuBm9D,IAAvB,EAA6B;AAClC,SAAO;AAAElqE,QAAI,EAAE,UAAR;AAAoB8xB,WAAO,EAAE/kB,GAA7B;AAAkCm9D;AAAlC,GAAP;AACD;AAEM,SAASwkF,iBAAT,CAA2BnB,MAA3B,EAAmCrjF,IAAnC,EAAyC;AAC9C,SAAO;AAAElqE,QAAI,EAAE,mBAAR;AAA6ButJ,UAA7B;AAAqCrjF;AAArC,GAAP;AACD;AAEM,SAAS6kF,eAAT,CAAyBxB,MAAzB,EAAiCrjF,IAAjC,EAAuC;AAC5C,SAAO;AAAElqE,QAAI,EAAE,iBAAR;AAA2ButJ,UAA3B;AAAmCrjF;AAAnC,GAAP;AACD;AAEM,SAASgsF,WAAT,CAAqBluJ,GAArB,EAA0B;AAC/B,SAAOA,GAAG,YAAY87C,cAAf,IAAiC97C,GAAG,YAAY65C,WAAvD;AACD,C;;;;;;;;;;;;ACtDD;AAAA;AAAA;;AACA,MAAM2wF,UAAU,GAAGvtI,mBAAO,CAAC,uGAAD,CAA1B,C,CAEA;;;AACA,MAAMqzI,GAAG,GAAGM,sDAAS,EAArB;AAEAN,GAAG,CAACN,MAAJ,CAAW7hI,EAAX,CAAc,MAAd,EAAsBsU,IAAI,IAAI;AAC5B+nH,YAAU,CAACvnF,IAAX,CAAgB,YAAhB,EAA8BxgC,IAA9B;AACD,CAFD;AAIe6tH,kEAAf,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAGA;;AACA;AACA;AACA;AACA;;AAEA,MAAM6d,KAAK,GAAGlxJ,mBAAO,CAAC,8EAAD,CAArB;;AACA,MAAMmxJ,KAAK,GAAGnxJ,mBAAO,CAAC,8EAAD,CAArB;;AACA,MAAM6iH,IAAI,GAAG7iH,mBAAO,CAAC,kFAAD,CAApB;;AACA,MAAMutI,UAAU,GAAGvtI,mBAAO,CAAC,uGAAD,CAA1B;;AACA,iBAAuCA,mBAAO,CAAC,+EAAD,CAA9C;AAAA,MAAQ+wI,WAAR,YAAQA,WAAR;AAAA,MAAqBqgB,aAArB,YAAqBA,aAArB;;AACA,MAAMC,MAAM,GAAGrxJ,mBAAO,CAAC,mFAAD,CAAtB,C,CAEA;;;AAEA,IAAI6hF,OAAJ;AACA,IAAIyvE,cAAc,GAAG,cAArB;AACA,IAAIC,cAAc,GAAG,cAArB;AACA,IAAIC,mBAAmB,GAAG,yBAA1B,C,CAEA;;AAEA,SAASC,aAAT,CAAuB;AAAEC;AAAF,CAAvB,EAAkC;AAChC,QAAMvL,KAAK,GAAGuL,KAAK,CAAC/vK,GAAN,CAAUiG,IAAI,IAAI;AAC9B,QAAI4qB,IAAI,GAAGuhH,2CAAA,GAAY49B,QAAZ,CAAqB/pK,IAArB,CAAX;;AACA,WAAO;AAAEA,UAAI,EAAE4qB,IAAI,CAAC5qB,IAAb;AAAmBzJ,WAAK,EAAEq0B,IAAI,CAACr0B;AAA/B,KAAP;AACD,GAHa,CAAd;AAIAovJ,YAAU,CAACvnF,IAAX,CAAgB,eAAhB,EAAiCmgG,KAAjC;AACD,C,CAED;;;AAEO,IAAIx0B,QAAQ,GAAG,EAAf;AAEPA,QAAQ,CAAC,MAAD,CAAR,GAAmBkyB,0DAAO,CAAC,kBAAiB;AAC1C,SAAO+N,mDAAI,EAAX;AACD,CAFyB,CAA1B;AAIAjgC,QAAQ,CAAC,MAAD,CAAR,GAAmBkyB,0DAAO,CAAC,YAAW;AACpC,SAAOgO,mDAAI,EAAX;AACD,CAFyB,CAA1B;AAIAlgC,QAAQ,CAAC,2BAAD,CAAR,GAAwCkyB,0DAAO,CAAC,gBAAe;AAC7D3wB,OAD6D;AAE7DvE,SAF6D;AAG7DqX,SAH6D;AAI7D+H;AAJ6D,CAAf,EAK7C;AACD,SAAO+jB,uDAAQ,CAAC,YAAY;AAC1B,QAAIn/J,MAAM,GAAG,MAAM8zI,uFAAuB,CAAC;AACzCvT,WADyC;AAEzC8S,aAFyC;AAGzCrX,aAHyC;AAIzCof;AAJyC,KAAD,CAA1C,CAD0B,CAQ1B;;AACA,WAAOp7I,MAAM,CAACqzI,OAAd;AACD,GAVc,CAAf;AAWD,CAjB8C,CAA/C;AAmBArU,QAAQ,CAAC,iBAAD,CAAR,GAA8BkyB,0DAAO,CAAC,gBAAer4B,WAAf,EAA4B;AAChE,QAAMmG,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAAEuB,SAAK,EAAE,CAAC1H,WAAD;AAAT,GAAtC,CAAN;AACA,SAAO,EAAP;AACD,CAHoC,CAArC;AAKAmG,QAAQ,CAAC,oBAAD,CAAR,GAAiCkyB,0DAAO,CAAC,gBAAer4B,WAAf,EAA4B;AACnE,QAAMmG,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAAEqU,WAAO,EAAE,CAACxa,WAAD;AAAX,GAAtC,CAAN;AACA,SAAO,EAAP;AACD,CAHuC,CAAxC;AAKAmG,QAAQ,CAAC,oBAAD,CAAR,GAAiCkyB,0DAAO,CAAC,gBAAer4B,WAAf,EAA4B;AACnE,QAAMmG,QAAQ,CAAC,2BAAD,CAAR,CAAsC;AAAEhD,WAAO,EAAE,CAACnD,WAAD;AAAX,GAAtC,CAAN;AACA,SAAO,EAAP;AACD,CAHuC,CAAxC;;AAKAmG,QAAQ,CAAC,qBAAD,CAAR,GAAkC,gBAAe;AAC/CogC,MAD+C;AAE/CprC,WAF+C;AAG/CqrC,YAH+C;AAI/C3rK,OAJ+C;AAK/C4rK,UAL+C;AAM/CvyK,SAAO,GAAG;AANqC,CAAf,EAO/B;AACD,SAAO0wI,mDAAA,CACL2hC,IADK,EAELprC,SAFK,EAGLqrC,UAHK,EAILC,QAAQ,GAAG,IAAH,GAAU5rK,KAAK,IAAI,IAAT,GAAgBzI,SAAhB,GAA4ByI,KAJzC,EAKL3G,OALK,CAAP;AAOD,CAfD;;AAiBAiyI,QAAQ,CAAC,yBAAD,CAAR,GAAsC,gBAAe;AAAEntH,UAAF;AAAY9kB;AAAZ,CAAf,EAAsC;AAC1E,SAAOk9I,uEAAS,CAACp4H,QAAD,EAAW9kB,OAAX,CAAhB;AACD,CAFD;;AAIAiyI,QAAQ,CAAC,qBAAD,CAAR,GAAkC,gBAAe;AAC/C/K,cAD+C;AAE/CiD,UAF+C;AAG/C2K,gBAH+C;AAI/C1J;AAJ+C,CAAf,EAK/B;AACD,SAAOgP,4EAAW,CAAClT,YAAD,EAAeiD,QAAf,EAAyB2K,cAAzB,EAAyC1J,MAAzC,CAAlB;AACD,CAPD;;AASA6G,QAAQ,CAAC,2BAAD,CAAR,GAAwC,gBAAe;AAAE3M,OAAK,EAAEo1B;AAAT,CAAf,EAAsC;AAC5E,SAAOzf,iFAAgB,CAAC,IAAIzW,oDAAJ,CAAUk2B,UAAV,CAAD,CAAvB;AACD,CAFD;;AAIAzoB,QAAQ,CAAC,gBAAD,CAAR,GAA6B,kBAAiB;AAC5C,SAAO;AACL7J,WAAO,EAAE,MAAMsI,wDAAA,EADV;AAEL9wH,QAAI,EAAE,MAAM8wH,iDAAA;AAFP,GAAP;AAID,CALD;;AAOAuB,QAAQ,CAAC,0BAAD,CAAR,GAAuC,kBAAiB;AACtD,wBAAe,MAAMiD,uEAAQ,CAC3BvgG,8DAAC,CAAC,cAAD,CAAD,CACG30C,OADH,CACW;AAAEq7I,UAAM,EAAE;AAAV,GADX,EAEG5V,OAFH,CAEW;AAAEvkI,QAAI,EAAE;AAAR,GAFX,EAGGmkI,MAHH,CAGU,GAHV,EAIGxzF,KAJH,CAIS,CAJT,CAD2B,CAA7B;AAAA,MAAMtrC,IAAN,mBAAMA,IAAN;;AAOA,SAAOA,IAAI,CAAC,CAAD,CAAJ,IAAW,IAAlB;AACD,CATD;;AAWA0rI,QAAQ,CAAC,mBAAD,CAAR,GAAgC,kBAAiB;AAC/C,SAAO/E,8DAAA,EAAP;AACD,CAFD;;AAIA+E,QAAQ,CAAC,uBAAD,CAAR,GAAoC,gBAAe;AAAExoI;AAAF,CAAf,EAA0B;AAC5D,MAAI+oI,MAAM,GAAG,MAAM9B,wDAAA,EAAnB;AACA,MAAIM,SAAS,GAAGmC,6DAAA,CAAyB1pI,KAAzB,CAAhB;;AAEA,WAAShL,KAAT,CAAeyJ,IAAf,EAAqB;AACnB,QAAI2gC,CAAC,GAAGwrG,oDAAA,CAAmBrD,SAAnB,EAA8B9oI,IAA9B,CAAR;AACA,WAAO;AAAEzJ,WAAK,EAAEoqC,CAAC,KAAK,EAAN,GAAW,CAAX,GAAeA,CAAxB;AAA2B3gC,UAAI,EAAEmpJ,WAAW,CAACrgB,SAAD,EAAY9oI,IAAZ;AAA5C,KAAP;AACD;;AAED,MAAI8K,MAAM,GAAG,CACXvU,KAAK,CAAC,iBAAD,CADM,EAEXA,KAAK,CAAC,sBAAD,CAFM,EAGXA,KAAK,CAAC,UAAD,CAHM,EAIXA,KAAK,CAAC,gBAAD,CAJM,EAKXA,KAAK,CAAC,WAAD,CALM,EAOXA,KAAK,CAAC,iBAAD,CAPM,EAQXA,KAAK,CAAC,cAAD,CARM,EASXA,KAAK,CAAC,aAAD,CATM,EAUXA,KAAK,CAAC,gBAAD,CAVM,CAAb;;AAaA,OAAK,IAAI6pI,KAAT,IAAkBkK,MAAlB,EAA0B;AACxB,QAAIlK,KAAK,CAAC0C,SAAV,EAAqB;AACnBh4H,YAAM,CAACjP,IAAP,CAAYtF,KAAK,CAAC,cAAD,CAAjB;;AAEA,WAAK,IAAIssI,GAAT,IAAgBzC,KAAK,CAACkD,UAAtB,EAAkC;AAChCx4H,cAAM,CAACjP,IAAP,CAAYtF,KAAK,CAAE,cAAassI,GAAG,CAACxE,EAAG,EAAtB,CAAjB;AACD;AACF,KAND,MAMO;AACLvzH,YAAM,GAAGA,MAAM,CAACkpB,MAAP,CAAc,CACrBz9B,KAAK,CAAE,gBAAe6pI,KAAK,CAAC/B,EAAG,EAA1B,CADgB,EAErB9nI,KAAK,CAAE,oBAAmB6pI,KAAK,CAAC/B,EAAG,EAA9B,CAFgB,EAGrB9nI,KAAK,CAAE,kBAAiB6pI,KAAK,CAAC/B,EAAG,EAA5B,CAHgB,CAAd,CAAT;;AAMA,WAAK,IAAIwE,GAAT,IAAgBzC,KAAK,CAACkD,UAAtB,EAAkC;AAChCx4H,cAAM,GAAGA,MAAM,CAACkpB,MAAP,CAAc,CACrBz9B,KAAK,CAAE,UAASssI,GAAG,CAACxE,EAAG,EAAlB,CADgB,EAErB9nI,KAAK,CAAE,cAAassI,GAAG,CAACxE,EAAG,EAAtB,CAFgB,EAGrB9nI,KAAK,CAAE,YAAWssI,GAAG,CAACxE,EAAG,EAApB,CAHgB,EAIrB9nI,KAAK,CAAE,aAAYssI,GAAG,CAACxE,EAAG,EAArB,CAJgB,CAAd,CAAT;AAMD;AACF;AACF;;AAED,SAAOvzH,MAAP;AACD,CAhDD;;AAkDAi/H,QAAQ,CAAC,qBAAD,CAAR,GAAkC,gBAAe;AAAExoI;AAAF,CAAf,EAA0B;AAC1D,MAAI+oI,MAAM,GAAG,MAAM9B,wDAAA,EAAnB;AACA,MAAIM,SAAS,GAAGmC,6DAAA,CAAyB1pI,KAAzB,CAAhB;;AAEA,WAAShL,KAAT,CAAeyJ,IAAf,EAAqB;AACnB,QAAI2gC,CAAC,GAAGwrG,oDAAA,CAAmBrD,SAAnB,EAA8B9oI,IAA9B,CAAR;AACA,WAAO;AAAEzJ,WAAK,EAAEoqC,CAAC,KAAK,EAAN,GAAW,CAAX,GAAeA,CAAxB;AAA2B3gC,UAAI,EAAEmpJ,WAAW,CAACrgB,SAAD,EAAY9oI,IAAZ;AAA5C,KAAP;AACD;;AAED,MAAI8K,MAAM,GAAG,CACXvU,KAAK,CAAC,gBAAD,CADM,EAEXA,KAAK,CAAC,qBAAD,CAFM,EAGXA,KAAK,CAAC,aAAD,CAHM,EAIXA,KAAK,CAAC,cAAD,CAJM,EAKXA,KAAK,CAAC,aAAD,CALM,EAMXA,KAAK,CAAC,YAAD,CANM,EAOXA,KAAK,CAAC,gBAAD,CAPM,CAAb;;AAUA,OAAK,IAAI6pI,KAAT,IAAkBkK,MAAlB,EAA0B;AACxBx/H,UAAM,GAAGA,MAAM,CAACkpB,MAAP,CAAc,CACrBz9B,KAAK,CAAE,gBAAe6pI,KAAK,CAAC/B,EAAG,EAA1B,CADgB,EAErB9nI,KAAK,CAAE,oBAAmB6pI,KAAK,CAAC/B,EAAG,EAA9B,CAFgB,EAGrB9nI,KAAK,CAAE,kBAAiB6pI,KAAK,CAAC/B,EAAG,EAA5B,CAHgB,CAAd,CAAT;;AAMA,SAAK,IAAIwE,GAAT,IAAgBzC,KAAK,CAACkD,UAAtB,EAAkC;AAChCx4H,YAAM,GAAGA,MAAM,CAACkpB,MAAP,CAAc,CACrBz9B,KAAK,CAAE,UAASssI,GAAG,CAACxE,EAAG,EAAlB,CADgB,EAErB9nI,KAAK,CAAE,cAAassI,GAAG,CAACxE,EAAG,EAAtB,CAFgB,EAGrB9nI,KAAK,CAAE,YAAWssI,GAAG,CAACxE,EAAG,EAApB,CAHgB,CAAd,CAAT;;AAMA,UAAI,CAAC+B,KAAK,CAAC0C,SAAX,EAAsB;AACpBh4H,cAAM,CAACjP,IAAP,CAAYtF,KAAK,CAAE,aAAYssI,GAAG,CAACxE,EAAG,EAArB,CAAjB;AACD;AACF;AACF;;AAED,SAAOvzH,MAAP;AACD,CAxCD;;AA0CAi/H,QAAQ,CAAC,iBAAD,CAAR,GAA8B,gBAAe;AAAE52H;AAAF,CAAf,EAAyB;AACrD,MAAIA,IAAI,KAAK,UAAT,IAAuBA,IAAI,KAAK,QAApC,EAA8C;AAC5C,UAAM,IAAI3X,KAAJ,CAAU,0BAA0B2X,IAApC,CAAN;AACD,GAHoD,CAKrD;;;AACA,MAAIA,IAAI,KAAKk6H,+CAAA,GAAiBssB,UAA9B,EAA0C;AACxC;AACD,GARoD,CAUrD;;;AACA,SAAOtsB,gDAAA,CAAgB;AAAEssB,cAAU,EAAExmJ;AAAd,GAAhB,CAAP;AACD,CAZD;;AAcA42H,QAAQ,CAAC,iBAAD,CAAR,GAA8BkyB,0DAAO,CAAC,gBAAe;AACnDj8J,MADmD;AAEnDsnI,SAFmD;AAGnDuF;AAHmD,CAAf,EAInC;AACD,SAAOq9B,uDAAQ,CAAC,YAAY;AAC1B,QAAI,CAAC5iC,OAAL,EAAc;AACZ,YAAM+hB,yDAAQ,CAAC,0CAAD,CAAd;AACD;;AAED,WAAO7gB,kDAAA,CAAkB;AACvBxoI,UADuB;AAEvB+oJ,eAAS,EAAEzhB,OAFY;AAGvBxE,eAAS,EAAE+J,QAAQ,GAAG,CAAH,GAAO;AAHH,KAAlB,CAAP;AAKD,GAVc,CAAf;AAWD,CAhBoC,CAArC;AAkBA9C,QAAQ,CAAC,iBAAD,CAAR,GAA8BkyB,0DAAO,CAAC,gBAAex7B,QAAf,EAAyB;AAC7D,SAAOypC,uDAAQ,CAAC,YAAY;AAC1B,QAAI;AACF,YAAM1hC,kDAAA,CAAkB/H,QAAlB,CAAN;AACD,KAFD,CAEE,OAAOngH,CAAP,EAAU;AACV,UAAIA,CAAC,CAAC2kB,OAAF,CAAU5N,WAAV,GAAwB5oB,QAAxB,CAAiC,mBAAjC,CAAJ,EAA2D;AACzD,eAAO;AAAEixB,eAAK,EAAE;AAAEvsB,gBAAI,EAAE;AAAR;AAAT,SAAP;AACD;;AACD,YAAMmN,CAAN;AACD;;AACD,WAAO,EAAP;AACD,GAVc,CAAf;AAWD,CAZoC,CAArC;AAcAypH,QAAQ,CAAC,eAAD,CAAR,GAA4BkyB,0DAAO,CAAC,gBAAe;AAAE59B,IAAF;AAAMiJ,SAAN;AAAeu9B;AAAf,CAAf,EAA0C;AAC5E,SAAOqF,uDAAQ,CAAC,YAAY;AAC1B,UAAM79B,4DAAa,CAAC,YAAY;AAC9B,YAAM7D,gDAAA,CAAgBnK,EAAhB,EAAoBiJ,OAApB,EAA6Bu9B,QAA7B,CAAN;AACD,KAFkB,CAAnB;AAGA,WAAO,IAAP;AACD,GALc,CAAf;AAMD,CAPkC,CAAnC;AASA96B,QAAQ,CAAC,iBAAD,CAAR,GAA8BkyB,0DAAO,CAAC,gBAAe;AAAE59B,IAAF;AAAM2F;AAAN,CAAf,EAAmC;AACvE,SAAOkmC,uDAAQ,CAAC,YAAY;AAC1B,QAAIn/J,MAAM,GAAG,EAAb;AACA,UAAMshI,4DAAa,CAAC,YAAY;AAC9B,UAAI2J,GAAG,GAAG,MAAMxN,yCAAA,CACd,+CADc,EAEd,CAACnK,EAAD,CAFc,CAAhB;;AAIA,UAAI,CAAC2X,GAAL,EAAU;AACRjrI,cAAM,GAAG;AAAE20B,eAAK,EAAE;AAAT,SAAT;AACA;AACD;;AAED,UAAIqnH,QAAQ,GACV/iB,UAAU,KACT,MAAMwE,yCAAA,CAAS,+CAAT,EAA0D,CAC/DxE,UAD+D,CAA1D,CADG,CADZ;;AAMA,UAAI,CAACgS,GAAD,IAAShS,UAAU,IAAI,CAAC+iB,QAA5B,EAAuC;AACrCh8I,cAAM,GAAG;AAAE20B,eAAK,EAAE;AAAT,SAAT;AACA;AACD,OAHD,MAGO,IAAIskG,UAAU,IAAIgS,GAAG,CAAClT,SAAJ,KAAkBikB,QAAQ,CAACjkB,SAA7C,EAAwD;AAC7D/3H,cAAM,GAAG;AAAE20B,eAAK,EAAE;AAAT,SAAT;AACA;AACD,OAtB6B,CAwB9B;AACA;;;AACA,UAAIs2G,GAAG,CAAClT,SAAJ,KAAkB,CAAtB,EAAyB;AACvB,YAAIkB,UAAJ,EAAgB;AACd,gBAAMgB,wDAAA,CAAkB,CAAC3G,EAAD,CAAlB,EAAwB2F,UAAxB,CAAN;AACD;AACF;;AAED,YAAMwE,kDAAA,CAAkB;AAAEnK;AAAF,OAAlB,EAA0B2F,UAA1B,CAAN;AACD,KAjCkB,CAAnB;AAmCA,WAAOj5H,MAAP;AACD,GAtCc,CAAf;AAuCD,CAxCoC,CAArC;AA0CAg/H,QAAQ,CAAC,uBAAD,CAAR,GAAoCkyB,0DAAO,CAAC,gBAAe;AAAEj8J,MAAF;AAAQ6sI;AAAR,CAAf,EAAmC;AAC7E,SAAOq9B,uDAAQ,CAAC,YAAY;AAC1B,WAAO1hC,uDAAA,CAAuB;AAC5BxoI,UAD4B;AAE5B8iI,eAAS,EAAE+J,QAAQ,GAAG,CAAH,GAAO;AAFE,KAAvB,CAAP;AAID,GALc,CAAf;AAMD,CAP0C,CAA3C;AASA9C,QAAQ,CAAC,uBAAD,CAAR,GAAoCkyB,0DAAO,CAAC,gBAAe77B,KAAf,EAAsB;AAChE,SAAO8pC,uDAAQ,CAAC,YAAY;AAC1B,WAAO1hC,uDAAA,CAAuBpI,KAAvB,CAAP;AACD,GAFc,CAAf;AAGD,CAJ0C,CAA3C;AAMA2J,QAAQ,CAAC,qBAAD,CAAR,GAAkCkyB,0DAAO,CAAC,gBAAe;AAAE59B,IAAF;AAAMwmC;AAAN,CAAf,EAAiC;AACzE,SAAOqF,uDAAQ,CAAC,YAAY;AAC1B,UAAM79B,4DAAa,CAAC,YAAY;AAC9B,YAAM7D,qDAAA,CAAqBnK,EAArB,EAAyBwmC,QAAzB,CAAN;AACD,KAFkB,CAAnB;AAGA,WAAO,IAAP;AACD,GALc,CAAf;AAMD,CAPwC,CAAzC;AASA96B,QAAQ,CAAC,uBAAD,CAAR,GAAoCkyB,0DAAO,CAAC,gBAAe;AAAE59B,IAAF;AAAM2F;AAAN,CAAf,EAAmC;AAC7E,SAAOkmC,uDAAQ,CAAC,YAAY;AAC1B,UAAMI,eAAe,GAAG,MAAM9hC,uCAAA,CAC5B,iEAD4B,EAE5B,CAACnK,EAAD,CAF4B,CAA9B;AAKA,WAAOgO,4DAAa,CAAC,YAAY;AAC/B,UAAIrI,UAAJ,EAAgB;AACd,cAAMgB,wDAAA,CAAkBslC,eAAe,CAACvwK,GAAhB,CAAoBuxB,CAAC,IAAIA,CAAC,CAAC+yG,EAA3B,CAAlB,EAAkD2F,UAAlD,CAAN;AACD;;AACD,YAAMwE,uDAAA,CAAuB;AAAEnK;AAAF,OAAvB,EAA+B2F,UAA/B,CAAN;AACD,KALmB,CAApB;AAMD,GAZc,CAAf;AAaD,CAd0C,CAA3C;;AAgBA+F,QAAQ,CAAC,wBAAD,CAAR,GAAqC,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AAC1D,QAAM5R,GAAG,GAAG,MAAM+b,4CAAA,CACf;AACL;AACA,mDAHoB,EAIhB,CAACnK,EAAD,CAJgB,EAKhB,IALgB,CAAlB,CAD0D,CAS1D;AACA;;AACA,MAAI5R,GAAG,CAAC,CAAD,CAAH,CAAOhuH,KAAP,KAAiB,CAArB,EAAwB;AACtB,WAAO,IAAP;AACD,GAbyD,CAe1D;AACA;;;AACA,SAAO,CAAC,GAAG0tI,2CAAA,GAAY9uD,IAAZ,GAAmB48E,aAAvB,EAAsCh8J,IAAtC,CAA2CsD,KAAK,IAAI;AACzD,UAAMunI,SAAS,GAAGmC,6DAAA,CAAyB1pI,KAAzB,CAAlB;AACA,UAAMhL,KAAK,GAAG41I,2CAAA,GAAYie,YAAZ,CAAyBthB,SAAzB,EAAoC,YAAYzK,EAAhD,CAAd;AAEA,WAAO9nI,KAAK,KAAK,CAAjB;AACD,GALM,CAAP;AAMD,CAvBD;;AAyBAwzI,QAAQ,CAAC,cAAD,CAAR,GAA2BkyB,0DAAO,CAAC,gBAAe;AAAEj8J;AAAF,CAAf,EAAyB;AAC1D,SAAOkqK,uDAAQ,CAAC,YAAY;AAC1B,WAAO1hC,+CAAA,CAAe;AAAExoI;AAAF,KAAf,CAAP;AACD,GAFc,CAAf;AAGD,CAJiC,CAAlC;;AAMA+pI,QAAQ,CAAC,YAAD,CAAR,GAAyB,kBAAiB;AACxC,SAAOvB,6CAAA,EAAP;AACD,CAFD;;AAIAuB,QAAQ,CAAC,wBAAD,CAAR,GAAqC,kBAAiB;AACpD,MAAIwgC,WAAW,GAAG,EAAlB;AACA,MAAI7pB,QAAQ,GAAGv0I,qEAAA,EAAf;AAEAA,yEAAA,CAAiBA,qEAAA,EAAjB,EAAmC,OAAnC,EAA4C,CAAC9D,IAAD,EAAOg2H,EAAP,KAAc;AACxD,QAAIksC,WAAW,CAAClsC,EAAD,CAAX,IAAmB,IAAvB,EAA6B;AAC3BksC,iBAAW,CAAClsC,EAAD,CAAX,GAAkB,CAAlB;AACD;;AACDksC,eAAW,CAAClsC,EAAD,CAAX;AACD,GALD;AAOA,SAAOksC,WAAP;AACD,CAZD;;AAcAxgC,QAAQ,CAAC,cAAD,CAAR,GAA2BkyB,0DAAO,CAAC,gBAAe;AAAE4I,UAAF;AAAY2F;AAAZ,CAAf,EAAuC;AACxE,SAAON,uDAAQ,CACb,YAAY;AACV,WAAO1hC,+CAAA,CAAeq8B,QAAf,EAAyB2F,QAAzB,CAAP;AACD,GAHY,EAIb;AAAE3F,YAAF;AAAY2F;AAAZ,GAJa,CAAf;AAMD,CAPiC,CAAlC;AASAzgC,QAAQ,CAAC,qBAAD,CAAR,GAAkCkyB,0DAAO,CAAC,gBAAe;AACvD3wB,OADuD;AAEvDvE,SAFuD;AAGvDqX;AAHuD,CAAf,EAIvC;AACD,SAAO8rB,uDAAQ,CAAC,YAAY;AAC1B,WAAO79B,4DAAa,CAAC,YAAY;AAC/B,UAAItF,OAAJ,EAAa;AACX,cAAMtpH,OAAO,CAAC0pD,GAAR,CAAY4/D,OAAO,CAAChtI,GAAR,CAAYkiB,CAAC,IAAIusH,+CAAA,CAAevsH,CAAf,CAAjB,CAAZ,CAAN;AACD;;AAED,UAAIqvH,KAAJ,EAAW;AACT,cAAM7tH,OAAO,CAAC0pD,GAAR,CAAYmkE,KAAK,CAACvxI,GAAN,CAAUkiB,CAAC,IAAIusH,+CAAA,CAAevsH,CAAf,CAAf,CAAZ,CAAN;AACD;;AAED,UAAImiI,OAAJ,EAAa;AACX,cAAM3gI,OAAO,CAAC0pD,GAAR,CAAYi3E,OAAO,CAACrkJ,GAAR,CAAYkiB,CAAC,IAAIusH,+CAAA,CAAevsH,CAAf,CAAjB,CAAZ,CAAN;AACD;AACF,KAZmB,CAApB;AAaD,GAdc,CAAf;AAeD,CApBwC,CAAzC;;AAsBA8tH,QAAQ,CAAC,uBAAD,CAAR,GAAoC,gBAAe;AAAE0b;AAAF,CAAf,EAAwB;AAC1D,MAAIglB,QAAQ,GAAG,IAAIp5J,GAAJ,CAAQ,MAAMm3H,qDAAA,EAAd,CAAf;AACA,SAAOid,GAAG,CAAChoJ,MAAJ,CAAW4gI,EAAE,IAAIosC,QAAQ,CAACz7J,GAAT,CAAaqvH,EAAb,CAAjB,CAAP;AACD,CAHD;;AAKA0L,QAAQ,CAAC,kBAAD,CAAR,GAA+B,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AACpD,SAAOlyH,6EAAA,CAAuBkyH,EAAvB,EAA2BtkI,GAA3B,CAA+BsO,IAAI,IAAIA,IAAI,CAAC4K,SAAL,EAAvC,CAAP;AACD,CAFD;;AAIA82H,QAAQ,CAAC,oBAAD,CAAR,GAAiCkyB,0DAAO,CAAC,gBAAe;AAAE59B,IAAF;AAAM+C;AAAN,CAAf,EAAiC;AACxE,SAAO8oC,uDAAQ,CACb,YAAY;AACV,WAAO,MAAM1hC,mDAAA,CAAmB;AAAEnK;AAAF,KAAnB,CAAb;AACD,GAHY,EAIb;AAAE6C,WAAO,EAAEE;AAAX,GAJa,CAAf;AAMD,CAPuC,CAAxC;AASA2I,QAAQ,CAAC,oBAAD,CAAR,GAAiCkyB,0DAAO,CAAC,gBAAe5zJ,IAAf,EAAqB;AAC5D,SAAO6hK,uDAAQ,CACb,YAAY;AACV,WAAO,MAAM1hC,mDAAA,CAAmBngI,IAAnB,CAAb;AACD,GAHY,EAIb;AAAE64H,WAAO,EAAE74H,IAAI,CAAC+4H;AAAhB,GAJa,CAAf;AAMD,CAPuC,CAAxC;AASA2I,QAAQ,CAAC,iBAAD,CAAR,GAA8BkyB,0DAAO,CAAC,gBAAe5zJ,IAAf,EAAqB;AACzD,SAAO6hK,uDAAQ,CACb,YAAY;AACV,QAAI7rC,EAAE,GAAG,MAAMmK,mDAAA,CAAmBngI,IAAnB,CAAf;AACA,2CAAYA,IAAZ;AAAkBg2H;AAAlB;AACD,GAJY,EAKb;AAAE6C,WAAO,EAAE74H,IAAI,CAAC+4H;AAAhB,GALa,CAAf;AAOD,CARoC,CAArC;;AAUA,SAASspC,YAAT,CAAsBriK,IAAtB,EAA4B;AAC1B;AACA;AACA,WAASsiK,aAAT,CAAuBxlK,KAAvB,EAA8B4iD,QAA9B,EAAwC;AACtC,QAAIh9C,MAAM,GAAG5F,KAAK,CAACpL,GAAN,CAAUmgB,IAAI,IAAI;AAC7B,UAAI;AACF6tC,gBAAQ,CAAC7tC,IAAD,CAAR;AACD,OAFD,CAEE,OAAOoG,CAAP,EAAU;AACV,YAAIA,CAAC,YAAYu2H,kDAAjB,EAA4B;AAC1BnlH,iBAAO,CAACC,IAAR,CAAa,cAAb,EAA6BrR,CAA7B;AACA,iBAAOA,CAAC,CAACnN,IAAT;AACD;;AACD,cAAMmN,CAAN;AACD;;AACD,aAAO,IAAP;AACD,KAXY,CAAb;AAaA,WAAOvV,MAAM,CAAC9M,IAAP,CAAYg9C,OAAZ,IAAuBlwC,MAAvB,GAAgC,IAAvC;AACD;;AAED,MAAI6/J,eAAe,GAAGD,aAAa,CACjCtiK,IAAI,CAAC0wI,UAD4B,EAEjCW,IAAI,IACF,IAAI/B,0DAAJ,CACE+B,IAAI,CAAChC,EADP,EAEEgC,IAAI,CAAC15G,KAFP,EAGE05G,IAAI,CAACnjJ,KAHP,EAIEmjJ,IAAI,CAAC5hJ,OAJP,EAKE+yK,0DALF,CAH+B,CAAnC;AAYA,MAAIC,YAAY,GAAGH,aAAa,CAC9BtiK,IAAI,CAAC2wI,OADyB,EAE9BzsD,MAAM,IACJ,IAAIssD,uDAAJ,CACEtsD,MAAM,CAACmrD,EADT,EAEEnrD,MAAM,CAACvsD,KAFT,EAGEusD,MAAM,CAACh2F,KAHT,EAIEg2F,MAAM,CAACz0F,OAJT,EAKE+yK,0DALF,CAH4B,CAAhC;;AAYA,MAAID,eAAe,IAAIE,YAAvB,EAAqC;AACnC,WAAO;AACLF,qBADK;AAELE;AAFK,KAAP;AAID;;AAED,SAAO,IAAP;AACD;;AAED/gC,QAAQ,CAAC,eAAD,CAAR,GAA4B,gBAAe1hI,IAAf,EAAqB;AAC/C,MAAIq3B,KAAK,GAAGgrI,YAAY,CAACriK,IAAD,CAAxB;AACA,SAAO;AAAEq3B;AAAF,GAAP;AACD,CAHD;;AAKAqqG,QAAQ,CAAC,UAAD,CAAR,GAAuBkyB,0DAAO,CAAC,gBAAe5zJ,IAAf,EAAqB;AAClD,MAAIq3B,KAAK,GAAGgrI,YAAY,CAACriK,IAAD,CAAxB;;AACA,MAAIq3B,KAAJ,EAAW;AACT,WAAO;AAAEA;AAAF,KAAP;AACD;;AAED,MAAI2+F,EAAE,GAAG,MAAMlyH,uEAAA,CAAiB9D,IAAjB,CAAf;AACA,SAAO;AAAEg2H;AAAF,GAAP;AACD,CAR6B,CAA9B;AAUA0L,QAAQ,CAAC,aAAD,CAAR,GAA0BkyB,0DAAO,CAAC,gBAAe5zJ,IAAf,EAAqB;AACrD,MAAIq3B,KAAK,GAAGgrI,YAAY,CAACriK,IAAD,CAAxB;;AACA,MAAIq3B,KAAJ,EAAW;AACT,WAAO;AAAEA;AAAF,KAAP;AACD;;AAED,QAAMvzB,uEAAA,CAAiB9D,IAAjB,CAAN;AACA,SAAO,EAAP;AACD,CARgC,CAAjC;AAUA0hI,QAAQ,CAAC,aAAD,CAAR,GAA0BkyB,0DAAO,CAAC,gBAAe5zJ,IAAf,EAAqB;AACrD,SAAO8D,uEAAA,CAAiB9D,IAAjB,CAAP;AACD,CAFgC,CAAjC;AAIA0hI,QAAQ,CAAC,iBAAD,CAAR,GAA8BkyB,0DAAO,CAAC,gBAAexW,GAAf,EAAoB;AACxD,MAAIslB,mBAAmB,GAAG,KAA1B;AAEA,QAAM1+B,4DAAa,CAAC,YAAY;AAC9B,SAAK,IAAIhO,EAAT,IAAeonB,GAAf,EAAoB;AAClB,UAAIh5B,GAAG,GAAG,MAAMtgH,uEAAA,CAAiB;AAAEkyH;AAAF,OAAjB,CAAhB;;AACA,UAAI5R,GAAG,KAAK,KAAZ,EAAmB;AACjBs+C,2BAAmB,GAAG,IAAtB;AACD;AACF;AACF,GAPkB,CAAnB;AASA,SAAO;AAAEA;AAAF,GAAP;AACD,CAboC,CAArC;AAeAhhC,QAAQ,CAAC,oBAAD,CAAR,GAAiCkyB,0DAAO,CAAC,gBAAe;AACtDxY,gBADsD;AAEtDzK;AAFsD,CAAf,EAGtC;AACD,SAAO7sI,yEAAA,CAAmBs3I,cAAnB,EAAmCzK,OAAnC,EAA4CjP,QAA5C,CAAP;AACD,CALuC,CAAxC;AAOAA,QAAQ,CAAC,uBAAD,CAAR,GAAoCkyB,0DAAO,CAAC,gBAAe;AAAE9X,WAAF;AAAarlH;AAAb,CAAf,EAAkC;AAC5E,SAAO3yB,kFAAA,CAA4Bg4I,SAA5B,EAAuCrlH,EAAvC,CAAP;AACD,CAF0C,CAA3C;;AAIAirG,QAAQ,CAAC,WAAD,CAAR,GAAwB,kBAAiB;AACvC,SAAOmR,kEAAS,CAAC/uI,qEAAA,EAAD,CAAT,CAA4BpS,GAA5B,CAAgCsO,IAAI,IAAIA,IAAI,CAAC4K,SAAL,EAAxC,CAAP;AACD,CAFD;;AAIA82H,QAAQ,CAAC,UAAD,CAAR,GAAuB,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AAC5C,MAAIh2H,IAAI,GAAG8D,qEAAA,GAAiBuG,IAAjB,CAAsBrK,IAAI,IAAIA,IAAI,CAACg2H,EAAL,KAAYA,EAA1C,CAAX;AACA,SAAOh2H,IAAI,GAAGA,IAAI,CAAC4K,SAAL,EAAH,GAAsB,IAAjC;AACD,CAHD;;AAKA82H,QAAQ,CAAC,WAAD,CAAR,GAAwB,gBAAe;AAAEnG;AAAF,CAAf,EAAgC;AACtD,SAAOz3H,qEAAA,CAAey3H,WAAf,CAAP;AACD,CAFD;;AAIAmG,QAAQ,CAAC,eAAD,CAAR,GAA4B,kBAAiB;AAC3C,QAAM59H,4EAAA,EAAN;AACD,CAFD;;AAIA49H,QAAQ,CAAC,8BAAD,CAAR,GAA2C,gBAAe;AAAEgP;AAAF,CAAf,EAA+B;AACxE,SAAO5sI,4EAAA,CAAsB4sI,UAAtB,CAAP;AACD,CAFD;;AAIAhP,QAAQ,CAAC,SAAD,CAAR,GAAsB,gBAAe;AAAEjB,WAAF;AAAa9oI;AAAb,CAAf,EAAoC;AACxD;AACA,MAAIq/H,MAAM,GAAG,CAAC,MAAD,EAAS,OAAT,CAAb;;AACA,MAAIz0G,IAAI,GAAGuhH,2CAAA,GAAY49B,QAAZ,CAAqB5gB,WAAW,CAACrgB,SAAD,EAAY9oI,IAAZ,CAAhC,CAAX;;AACA,MAAIq/H,MAAJ,EAAY;AACV,QAAI5S,GAAG,GAAG,EAAV;AACA4S,UAAM,CAACn2H,OAAP,CAAe82B,KAAK,IAAI;AACtB,UAAIA,KAAK,KAAK,KAAd,EAAqB;AACnBysF,WAAG,CAACzsF,KAAD,CAAH,GAAapV,IAAI,CAACv0B,IAAL,GAAYu0B,IAAI,CAACv0B,IAAL,CAAUud,QAAV,EAAZ,GAAmC,IAAhD;AACD,OAFD,MAEO;AACL64G,WAAG,CAACzsF,KAAD,CAAH,GAAapV,IAAI,CAACoV,KAAD,CAAjB;AACD;AACF,KAND;AAOA,WAAOysF,GAAP;AACD,GAVD,MAUO;AACL,WAAO7hG,IAAP;AACD;AACF,CAjBD;;AAmBAm/G,QAAQ,CAAC,UAAD,CAAR,GAAuB,gBAAe;AAAE+/B;AAAF,CAAf,EAA0B;AAC/C,SAAOA,KAAK,CAAC/vK,GAAN,CAAUiG,IAAI,KAAK;AAAEzJ,SAAK,EAAE41I,2CAAA,GAAY49B,QAAZ,CAAqB/pK,IAArB,EAA2BzJ;AAApC,GAAL,CAAd,CAAP;AACD,CAFD;;AAIAwzI,QAAQ,CAAC,qBAAD,CAAR,GAAkC,gBAAe;AAAEjB;AAAF,CAAf,EAA8B;AAC9D,MAAIghC,KAAK,GAAG,EAAZ;;AACA,OAAK,IAAI9pK,IAAT,IAAiBmsI,2CAAA,GAEdqyB,QAFc,GAGd3yJ,IAHc,EAAjB,EAGW;AACT,yBAA2C29J,aAAa,CAACxpK,IAAD,CAAxD;AAAA,QAAagrK,SAAb,kBAAM7+B,KAAN;AAAA,QAA8BrY,QAA9B,kBAAwB9zH,IAAxB;;AACA,QAAIgrK,SAAS,KAAKliC,SAAlB,EAA6B;AAC3BghC,WAAK,CAACjuK,IAAN,CAAWi4H,QAAX;AACD;AACF;;AACD,SAAOg2C,KAAP;AACD,CAZD;;AAcA//B,QAAQ,CAAC,WAAD,CAAR,GAAwB,gBAAe;AAAEjB,WAAF;AAAa9oI;AAAb,CAAf,EAAoC;AAC1D,MAAI4qB,IAAI,GAAGuhH,2CAAA,GAAY8+B,OAAZ,CAAoB9hB,WAAW,CAACrgB,SAAD,EAAY9oI,IAAZ,CAA/B,CAAX;AACA,yCACK4qB,IADL;AAEEv0B,QAAI,EAAEu0B,IAAI,CAACv0B,IAAL,IAAau0B,IAAI,CAACv0B,IAAL,CAAUud,QAAV;AAFrB;AAID,CAND;;AAQAm2H,QAAQ,CAAC,cAAD,CAAR,GAA2B,gBAAe;AAAEjB,WAAF;AAAa9oI,MAAb;AAAmBo9H;AAAnB,CAAf,EAA2C;AACpE;AACA;AACA+O,6CAAA,GAAY++B,WAAZ,CAAwBpiC,SAAxB,EAAmC9oI,IAAnC,EAAyCo9H,KAAzC;AACA,SAAO,IAAP;AACD,CALD;;AAOA2M,QAAQ,CAAC,OAAD,CAAR,GAAoB,gBAAe3M,KAAf,EAAsB;AACxC,MAAIA,KAAK,CAACW,KAAN,IAAe,IAAnB,EAAyB;AACvB,UAAM,IAAIviI,KAAJ,CAAU,0DAAV,CAAN;AACD;;AAED,SAAOwxI,uEAAQ,CAAC5P,KAAD,CAAf;AACD,CAND;;AAQA2M,QAAQ,CAAC,aAAD,CAAR,GAA0B,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AAC/C,QAAM8sC,KAAK,GAAG,MAAM3iC,4CAAA,CAClB,uCADkB,EAElB,CAACnK,EAAD,CAFkB,EAGlB,IAHkB,CAApB;AAMA,QAAMmK,2CAAA,CAAW,OAAX,EAAoBnK,EAApB,CAAN;AACA,QAAM5gH,OAAO,CAAC0pD,GAAR,CACJgkG,KAAK,CAACpxK,GAAN,CAAU,MAAM4pI,IAAN,IAAc;AACtB;AACA;AACA,UAAM6E,4CAAA,CAAY,yCAAZ,EAAuD,CAAC7E,IAAI,CAACtF,EAAN,CAAvD,CAAN;AACA,UAAMmK,2CAAA,CAAW,UAAX,EAAuB7E,IAAI,CAACtF,EAA5B,CAAN;AACD,GALD,CADI,CAAN;AAQA,SAAO,IAAP;AACD,CAjBD;;AAmBA0L,QAAQ,CAAC,gBAAD,CAAR,GAA6BkyB,0DAAO,CAAC,gBAAe;AAAE59B,IAAF;AAAMr+H;AAAN,CAAf,EAA6B;AAChE,SAAOkqK,uDAAQ,CAAC,YAAY;AAC1B,UAAM1hC,0CAAA,CAAU,UAAV,EAAsB;AAAEnK,QAAF;AAAMr+H;AAAN,KAAtB,CAAN;AACA,WAAO,EAAP;AACD,GAHc,CAAf;AAID,CALmC,CAApC;;AAOA+pI,QAAQ,CAAC,cAAD,CAAR,GAA2B,kBAAiB;AAC1C,SAAOvB,+CAAA,EAAP;AACD,CAFD;;AAIAuB,QAAQ,CAAC,oBAAD,CAAR,GAAiC,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AACtD,0BAAoB,MAAMmK,yCAAA,CACxB,mGADwB,EAExB,CAACnK,EAAD,CAFwB,CAA1B;AAAA,QAAQme,OAAR,mBAAQA,OAAR;;AAIA,2BAAkB,MAAMhU,yCAAA,CACtB,8EADsB,EAEtB,CAACnK,EAAD,CAFsB,CAAxB;AAAA,QAAQ5/H,KAAR,oBAAQA,KAAR;;AAKA,SAAO;AAAE+9I,WAAO,EAAEA,OAAO,IAAI,CAAtB;AAAyBxR,mBAAe,EAAEvsI;AAA1C,GAAP;AACD,CAXD;;AAaAsrI,QAAQ,CAAC,eAAD,CAAR,GAA4B,gBAAe;AACzCyJ,aADyC;AAEzCC,aAFyC;AAGzC1U,WAHyC;AAIzCqsC;AAJyC,CAAf,EAKzB;AACD,MAAIh3B,MAAM,GAAG,MAAMh3D,kEAAA,CAAwBo2D,WAAxB,EAAqCC,WAArC,CAAnB;;AAEA,8BAAgC,MAAMC,oEAAY,CAACjF,QAAb,CAAsB,CAC1D,SAD0D,EAE1D,UAF0D,CAAtB,CAAtC;AAAA;AAAA;AAAA,MAAQkF,MAAR;AAAA;AAAA,MAAoBY,OAApB,6BAHC,CAQD;;;AACA,MAAItS,QAAQ,GAAG,MAAMuS,2DAAA,CAAqBb,MAArB,EAA6BY,OAA7B,EAAsCH,MAAtC,CAArB;AACA,MAAI3U,OAAO,GAAGwC,QAAQ,CAACvvH,IAAT,CAAcixH,IAAI,IAAIA,IAAI,CAACmE,UAAL,KAAoB/I,SAA1C,CAAd;AAEA,QAAMyJ,0CAAA,CAAU,UAAV,EAAsB;AAC1BnK,MAAE,EAAE+sC,WADsB;AAE1BtjC,cAAU,EAAErI,OAAO,CAACqI,UAFM;AAG1B2M,iBAAa,EAAEhV,OAAO,CAACgV,aAHG;AAI1BthI,QAAI,EAAEuhI,8EAAoB,CAACjV,OAAO,CAACtsH,IAAT,CAJA;AAK1BwhI,mBAAe,EAAElT,qEAAe,CAAChC,OAAO,CAACmV,QAAR,CAAiBC,OAAlB,CALN;AAM1Bw2B,qBAAiB,EAAE5pC,qEAAe,CAAChC,OAAO,CAACmV,QAAR,CAAiBpI,SAAlB,CANR;AAO1B8+B,iBAAa,EAAE7pC,qEAAe,CAAChC,OAAO,CAACmV,QAAR,CAAiBjrG,KAAlB,CAPJ;AAQ1BmrG,QAAI,EAAErV,OAAO,CAACqV,IARY;AAS1BC,QAAI,EAAEX;AAToB,GAAtB,CAAN;AAYA,QAAMI,2DAAA,CACJb,MADI,EAEJY,OAFI,EAGJ62B,WAHI,EAIJ3rC,OAAO,CAACqI,UAJJ,EAKJsM,MALI,CAAN;AAQAuR,YAAU,CAACvnF,IAAX,CAAgB,YAAhB,EAA8B;AAC5BjrD,QAAI,EAAE,SADsB;AAE5BwvI,UAAM,EAAE,CAAC,cAAD;AAFoB,GAA9B;AAKA,SAAO,IAAP;AACD,CA3CD;;AA6CA5Y,QAAQ,CAAC,kBAAD,CAAR,GAA+B,gBAAe;AAC5CyJ,aAD4C;AAE5CC,aAF4C;AAG5CY,YAH4C;AAI5CC;AAJ4C,CAAf,EAK5B;AACD,MAAIF,MAAM,GAAG,MAAMh3D,kEAAA,CAAwBo2D,WAAxB,EAAqCC,WAArC,CAAnB;AACA,MAAIgS,GAAG,GAAG,MAAMroE,2DAAA,CAAiBg3D,MAAjB,EAAyBC,UAAzB,EAAqCC,YAArC,CAAhB;AACA,SAAOmR,GAAP;AACD,CATD;;AAWA1b,QAAQ,CAAC,gBAAD,CAAR,GAA6BkyB,0DAAO,CAAC,gBAAe;AAClDj8J,MADkD;AAElDmT,MAFkD;AAGlDqpI,SAHkD;AAIlD7P,WAJkD;AAKlDpK;AALkD,CAAf,EAMlC;AACD,SAAO2nC,uDAAQ,CAAC,YAAY;AAC1B,UAAM7rC,EAAE,GAAG,MAAMmK,iDAAA,CAAiB;AAChCxoI,UADgC;AAEhCmT,UAFgC;AAGhCkvH,eAAS,EAAEsK,SAAS,GAAG,CAAH,GAAO,CAHK;AAIhCpK,YAAM,EAAEA,MAAM,GAAG,CAAH,GAAO;AAJW,KAAjB,CAAjB;AAOA,UAAMiG,+CAAA,CAAe;AACnBxoI,UAAI,EAAE,EADa;AAEnBojI,mBAAa,EAAE/E;AAFI,KAAf,CAAN;;AAKA,QAAIme,OAAO,IAAI,IAAf,EAAqB;AACnB,UAAI1b,KAAK,GAAG,MAAMmV,iFAAuB,EAAzC;AAEA,YAAMzN,qDAAA,CAAqB;AACzB/I,eAAO,EAAEpB,EADgB;AAEzBp8H,cAAM,EAAEw/H,qEAAe,CAAC+a,OAAD,CAFE;AAGzB/b,gBAAQ,EAAEkM,SAAS,GAAG,IAAH,GAAU7L,KAAK,CAACL,QAHV;AAIzBK,aAAK,EAAEA,KAAK,CAACzC,EAJY;AAKzBrlI,YAAI,EAAEiyI,0DAAA,EALmB;AAMzBlD,eAAO,EAAE,IANgB;AAOzBqD,6BAAqB,EAAE;AAPE,OAArB,CAAN;AASD;;AAED,WAAO/M,EAAP;AACD,GA5Bc,CAAf;AA6BD,CApCmC,CAApC;AAsCA0L,QAAQ,CAAC,eAAD,CAAR,GAA4BkyB,0DAAO,CAAC,gBAAe;AACjD59B,IADiD;AAEjDwB,mBAFiD;AAGjDlB,YAHiD;AAIjDohB;AAJiD,CAAf,EAKjC;AACD;AACA;AACA;AACA,QAAMhW,QAAQ,CAAC,gBAAD,CAAR,CAA2B;AAAE1L;AAAF,GAA3B,CAAN;AAEA,SAAO6rC,uDAAQ,CAAC,YAAY;AAC1B,QAAIzqC,OAAO,GAAG,MAAM+I,yCAAA,CAClB,uDADkB,EAElB,CAACnK,EAAD,CAFkB,CAApB,CAD0B,CAM1B;AACA;;AACA,QAAI,CAACoB,OAAD,IAAYA,OAAO,CAAC8C,MAAR,KAAmB,CAAnC,EAAsC;AACpC;AACD;;AAED,kCAAqC,MAAMwH,QAAQ,CAAC,oBAAD,CAAR,CAA+B;AACxE1L;AADwE,KAA/B,CAA3C;AAAA,UAAQme,OAAR,yBAAQA,OAAR;AAAA,UAAiBxR,eAAjB,yBAAiBA,eAAjB,CAZ0B,CAgB1B;;;AACA,QAAIA,eAAe,KAAK,CAAxB,EAA2B;AACzB,YAAMxC,iDAAA,CAAiB;AAAEnK;AAAF,OAAjB,CAAN;AACD,KAFD,MAEO,IAAI0hB,MAAJ,EAAY;AACjB,UAAIgG,IAAI,GAAG,MAAMvd,4CAAA,CACf,8DADe,EAEf,CAACnK,EAAD,CAFe,EAGf,IAHe,CAAjB;;AAMA,6BAAsB,MAAMmK,yCAAA,CAC1B,+CAD0B,EAE1B,CAACnK,EAAD,CAF0B,CAA5B;AAAA,UAAU6C,OAAV,oBAAM7C,EAAN;;AAKA,YAAMgO,4DAAa,CAAC,MAAM;AACxB;AACA;AACA;AACA;AACA;AAEA0Z,YAAI,CAAC78I,OAAL,CAAa8sI,GAAG,IAAI;AAClB,cAAIA,GAAG,CAAC3R,WAAR,EAAqB;AACnBmE,iEAAA,CAAqB;AACnBnK,gBAAE,EAAE2X,GAAG,CAAC3R,WADW;AAEnBvD,mBAAK,EAAE,IAFY;AAGnBuD,yBAAW,EAAE;AAHM,aAArB;AAKD;;AAEDmE,+DAAA,CAAqB;AAAEnK,cAAE,EAAE2X,GAAG,CAAC3X;AAAV,WAArB;AACD,SAVD;AAYAmK,yDAAA,CAAiB;AAAEnK;AAAF,SAAjB;AACAmK,+DAAA,CAAuB;AAAEnK,YAAE,EAAE6C;AAAN,SAAvB;AACD,OArBkB,CAAnB;AAsBD,KAlCM,MAkCA;AACL,UAAIsb,OAAO,KAAK,CAAZ,IAAiB3c,iBAAiB,IAAI,IAA1C,EAAgD;AAC9C,cAAMwpB,yDAAQ,CAAC,oDAAD,CAAd;AACD;;AAED,YAAM7gB,0CAAA,CAAU,UAAV,EAAsB;AAAEnK,UAAF;AAAMkE,cAAM,EAAE;AAAd,OAAtB,CAAN,CALK,CAOL;AACA;;AACA,UAAIia,OAAO,KAAK,CAAhB,EAAmB;AACjB,+BAAsB,MAAMhU,yCAAA,CAC1B,+CAD0B,EAE1B,CAAC3I,iBAAD,CAF0B,CAA5B;AAAA,YAAUqB,OAAV,oBAAM7C,EAAN;;AAKA,cAAM0L,QAAQ,CAAC,iBAAD,CAAR,CAA4B;AAChC1L,YAAE,EAAEpD,IAAI,CAACgX,MAAL,EAD4B;AAEhCnR,eAAK,EAAEI,OAFyB;AAGhCj/H,gBAAM,EAAE,CAACu6I,OAHuB;AAIhC/c,iBAAO,EAAEpB,EAJuB;AAKhCrlI,cAAI,EAAEiyI,0DAAA,EAL0B;AAMhC9G,eAAK,EAAE,iBANyB;AAOhC1D,kBAAQ,EAAE9B,UAAU,IAAI;AAPQ,SAA5B,CAAN;AASD;AACF;AACF,GA/Ec,CAAf;AAgFD,CA3FkC,CAAnC;AA6FAoL,QAAQ,CAAC,gBAAD,CAAR,GAA6BkyB,0DAAO,CAAC,gBAAe;AAAE59B;AAAF,CAAf,EAAuB;AAC1D,SAAO6rC,uDAAQ,CAAC,YAAY;AAC1B,UAAM1hC,0CAAA,CAAU,UAAV,EAAsB;AAAEnK,QAAF;AAAMkE,YAAM,EAAE;AAAd,KAAtB,CAAN;AACD,GAFc,CAAf;AAGD,CAJmC,CAApC;AAMAwH,QAAQ,CAAC,cAAD,CAAR,GAA2BkyB,0DAAO,CAAC,gBAAe;AAAE59B,IAAF;AAAMwmC;AAAN,CAAf,EAAiC;AAClE,SAAOqF,uDAAQ,CAAC,YAAY;AAC1B,UAAM1hC,+CAAA,CAAenK,EAAf,EAAmBwmC,QAAnB,CAAN;AACD,GAFc,CAAf;AAGD,CAJiC,CAAlC;AAMA,IAAI0G,WAAW,GAAG,KAAlB;;AAEAxhC,QAAQ,CAAC,gBAAD,CAAR,GAA6B,gBAAe;AAAEx+F;AAAF,CAAf,EAA0B;AACrD,+BAA4B,MAAMmoG,oEAAY,CAACjF,QAAb,CAAsB,CACtD,SADsD,EAEtD,UAFsD,CAAtB,CAAlC;AAAA;AAAA;AAAA,MAAQkF,MAAR;AAAA;AAAA,MAAoB7nI,GAApB;;AAKA,MAAIq0C,SAAS,GAAGh/C,IAAI,CAACoE,GAAL,EAAhB;AACAgmK,aAAW,GAAG,KAAd;;AAEA,iBAAe3wJ,OAAf,CAAuB4wJ,EAAvB,EAA2B;AACzB,QAAID,WAAJ,EAAiB;AACf;AACD;;AAED,QAAIpqK,IAAI,CAACoE,GAAL,KAAa46C,SAAb,IAA0B,OAAO,EAAP,GAAY,EAA1C,EAA8C;AAC5CqrH,QAAE,CAAC,SAAD,CAAF;AACA;AACD;;AAED,QAAIntK,IAAI,GAAG,MAAMw1I,mDAAI,CACnBC,iEAAS,GAAGC,YAAZ,GAA2B,yBADR,EAEnB;AACEJ,YADF;AAEE7nI,SAFF;AAGEy/B;AAHF,KAFmB,CAArB;;AASA,QAAIltC,IAAJ,EAAU;AACR,UAAIA,IAAI,CAACqhC,KAAT,EAAgB;AACd8rI,UAAE,CAAC,SAAD,CAAF;AACD,OAFD,MAEO;AACLA,UAAE,CAAC,IAAD,EAAOntK,IAAP,CAAF;AACD;AACF,KAND,MAMO;AACLqlE,gBAAU,CAAC,MAAM9oD,OAAO,CAAC4wJ,EAAD,CAAd,EAAoB,IAApB,CAAV;AACD;AACF;;AAED,SAAO,IAAI/tJ,OAAJ,CAAYC,OAAO,IAAI;AAC5B9C,WAAO,CAAC,CAAC8kB,KAAD,EAAQrhC,IAAR,KAAiB;AACvB,UAAIqhC,KAAJ,EAAW;AACThiB,eAAO,CAAC;AAAEgiB;AAAF,SAAD,CAAP;AACD,OAFD,MAEO;AACLhiB,eAAO,CAAC;AAAErf;AAAF,SAAD,CAAP;AACD;AACF,KANM,CAAP;AAOD,GARM,CAAP;AASD,CAhDD;;AAkDA0rI,QAAQ,CAAC,qBAAD,CAAR,GAAkC,kBAAiB;AACjDwhC,aAAW,GAAG,IAAd;AACA,SAAO,IAAP;AACD,CAHD;;AAKAxhC,QAAQ,CAAC,eAAD,CAAR,GAA4B,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AACjD,+BAAgC,MAAMqV,oEAAY,CAACjF,QAAb,CAAsB,CAC1D,SAD0D,EAE1D,UAF0D,CAAtB,CAAtC;AAAA;AAAA;AAAA,MAAQkF,MAAR;AAAA;AAAA,MAAoBY,OAApB;;AAIA,MAAItS,QAAQ,GAAG,MAAMuG,4CAAA,CAClB;AACL;AACA,gDAHuB,EAInB,EAJmB,EAKnB,IALmB,CAArB;;AAQA,MAAInK,EAAJ,EAAQ;AACN4D,YAAQ,GAAGA,QAAQ,CAACxkI,MAAT,CAAgBkmI,IAAI,IAAIA,IAAI,CAACtF,EAAL,KAAYA,EAApC,CAAX;AACD;;AAED,MAAI4W,MAAM,GAAG,EAAb;AACA,MAAI8J,eAAe,GAAG,EAAtB;AACA,MAAI0sB,mBAAmB,GAAG,EAA1B;AACA,MAAIC,eAAe,GAAG,EAAtB;;AAEA,wBAAkBr+B,+CAAA,EAAlB;AAAA,MAAM/F,OAAN,mBAAMA,OAAN;;AAEA,OAAK,IAAIzxH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGosH,QAAQ,CAACjlI,MAA7B,EAAqC6Y,CAAC,EAAtC,EAA0C;AACxC,UAAM8tH,IAAI,GAAG1B,QAAQ,CAACpsH,CAAD,CAArB;;AACA,QAAI8tH,IAAI,CAACyQ,MAAT,EAAiB;AACf,UAAI;AACF,cAAM3nB,GAAG,GAAG,MAAM+nB,2DAAA,CAChBb,MADgB,EAEhBY,OAFgB,EAGhB5Q,IAAI,CAACtF,EAHW,EAIhBsF,IAAI,CAACmE,UAJW,EAKhBnE,IAAI,CAACyQ,MALW,CAAlB;AAOA,YAAM9I,KAAN,GAAyB7e,GAAzB,CAAM6e,KAAN;AAAA,YAAa8S,OAAb,GAAyB3xB,GAAzB,CAAa2xB,OAAb;AAEAW,uBAAe,GAAGA,eAAe,CAAC/qH,MAAhB,CAAuBs3G,KAAvB,CAAlB;AACAmgC,2BAAmB,GAAGA,mBAAmB,CAACz3I,MAApB,CAA2BoqH,OAA3B,CAAtB;;AAEA,YAAI9S,KAAK,CAACtuI,MAAN,GAAe,CAAf,IAAoBohJ,OAAO,CAACphJ,MAAR,GAAiB,CAAzC,EAA4C;AAC1C0uK,yBAAe,GAAGA,eAAe,CAAC13I,MAAhB,CAAuB2vG,IAAI,CAACtF,EAA5B,CAAlB;AACD;AACF,OAhBD,CAgBE,OAAOljH,GAAP,EAAY;AACZ,YAAIA,GAAG,CAAChI,IAAJ,KAAa,eAAjB,EAAkC;AAChC8hI,gBAAM,CAACp5I,IAAP,CAAY;AACVsX,gBAAI,EAAE,WADI;AAEV4rH,qBAAS,EAAE4E,IAAI,CAACtF,EAFN;AAGVp5F,mBAAO,EAAE,6BAA6B0+F,IAAI,CAAC3jI,IAAlC,GAAyC,IAHxC;AAIVygI,oBAAQ,EAAEtlH,GAAG,CAACslH,QAJJ;AAKVtjH,gBAAI,EAAEhC,GAAG,CAACgC;AALA,WAAZ;AAOD,SARD,MAQO,IAAIhC,GAAG,YAAY6lJ,kDAAf,IAA4B7lJ,GAAG,CAACulJ,MAAJ,KAAe,UAA/C,EAA2D;AAChEzrB,gBAAM,CAACp5I,IAAP,CAAY;AACVkjI,qBAAS,EAAE4E,IAAI,CAACtF,EADN;AAEVp5F,mBAAO,EAAG,YACR0+F,IAAI,CAAC3jI,IACN;AAJS,WAAZ;AAMD,SAPM,MAOA;AACLi1I,gBAAM,CAACp5I,IAAP,CAAY;AACVkjI,qBAAS,EAAE4E,IAAI,CAACtF,EADN;AAEVp5F,mBAAO,EACL,8EAHQ;AAIVmgD,oBAAQ,EAAEjqE,GAAG,CAACyyC;AAJJ,WAAZ;AAOAzyC,aAAG,CAAC8pB,OAAJ,GAAc,6BAA6B9pB,GAAG,CAAC8pB,OAA/C;AAEAsoG,uFAAgB,CAACpyH,GAAD,CAAhB;AACD;AACF;AACF;AACF;;AAED,MAAIuwJ,eAAe,CAAC1uK,MAAhB,GAAyB,CAA7B,EAAgC;AAC9B2oJ,cAAU,CAACvnF,IAAX,CAAgB,YAAhB,EAA8B;AAC5BjrD,UAAI,EAAE,SADsB;AAE5BwvI,YAAM,EAAE,CAAC,cAAD;AAFoB,KAA9B;AAID;;AAED,SAAO;AAAE1N,UAAF;AAAU8J,mBAAV;AAA2B0sB,uBAA3B;AAAgDC;AAAhD,GAAP;AACD,CAnFD;;AAqFA3hC,QAAQ,CAAC,qBAAD,CAAR,GAAkCkyB,0DAAO,CAAC,UAAS;AACjDl9B,WADiD;AAEjDC;AAFiD,CAAT,EAGvC;AACD,SAAOkrC,uDAAQ,CAAC,YAAY;AAC1B,QAAI,OAAOnrC,SAAP,KAAqB,QAAzB,EAAmC;AACjC,YAAMsqB,yDAAQ,CAAC,8CAAD,CAAd;AACD;;AAED,QAAI;AACF,aAAO,MAAM7U,qEAAA,CAA+BzV,SAA/B,EAA0CC,YAA1C,CAAb;AACD,KAFD,CAEE,OAAO7jH,GAAP,EAAY;AACZ,UAAIA,GAAG,YAAYiuJ,yDAAnB,EAAqC;AACnC,eAAO;AAAEn0B,gBAAM,EAAE,CAAC;AAAEhwG,mBAAO,EAAE9pB,GAAG,CAAC8pB;AAAf,WAAD,CAAV;AAAsCqmG,eAAK,EAAE,EAA7C;AAAiD8S,iBAAO,EAAE;AAA1D,SAAP;AACD;;AAED,YAAMjjI,GAAN;AACD;AACF,GAdc,CAAf;AAeD,CAnBwC,CAAzC;AAqBA4uH,QAAQ,CAAC,gBAAD,CAAR,GAA6BkyB,0DAAO,CAAC,gBAAe;AAAE59B;AAAF,CAAf,EAAuB;AAC1D,yBAAuB,MAAMmK,yCAAA,CAC3B,wCAD2B,EAE3B,CAACnK,EAAD,CAF2B,CAA7B;AAAA,MAAY+V,MAAZ,oBAAMW,IAAN;;AAKA,MAAI,CAACX,MAAL,EAAa;AACX,WAAO,IAAP;AACD;;AAED,QAAM5L,iDAAA,CAAiB;AACrBnK,MADqB;AAErByJ,cAAU,EAAE,IAFS;AAGrBiN,QAAI,EAAE,IAHe;AAIrBJ,mBAAe,EAAE,IAJI;AAKrB02B,qBAAiB,EAAE,IALE;AAMrBC,iBAAa,EAAE;AANM,GAAjB,CAAN;;AASA,yBAAgB,MAAM9iC,yCAAA,CACpB,uDADoB,EAEpB,CAAC4L,MAAD,CAFoB,CAAtB;AAAA,MAAM31I,KAAN,oBAAMA,KAAN;;AAKA,MAAIA,KAAK,KAAK,CAAd,EAAiB;AACf;AACA;AAEA,kCAA4B,MAAMi1I,oEAAY,CAACjF,QAAb,CAAsB,CACtD,SADsD,EAEtD,UAFsD,CAAtB,CAAlC;AAAA;AAAA;AAAA,QAAQkF,MAAR;AAAA;AAAA,QAAoB7nI,GAApB;;AAKA,UAAM+nI,mDAAI,CAACC,iEAAS,GAAGC,YAAZ,GAA2B,sBAA5B,EAAoD;AAC5DJ,YAD4D;AAE5D7nI,SAF4D;AAG5DkoI,aAAO,EAAEI;AAHmD,KAApD,CAAV;AAKD;;AAED,SAAO,IAAP;AACD,CAzCmC,CAApC;;AA2CArK,QAAQ,CAAC,yBAAD,CAAR,GAAsC,gBAAe;AAAEqK;AAAF,CAAf,EAA2B;AAC/D,gCAAgC,MAAMV,oEAAY,CAACjF,QAAb,CAAsB,CAC1D,SAD0D,EAE1D,UAF0D,CAAtB,CAAtC;AAAA;AAAA;AAAA,MAAQkF,MAAR;AAAA;AAAA,MAAoBY,OAApB;;AAKA,MAAIl2I,IAAI,GAAG,MAAMw1I,mDAAI,CAACC,iEAAS,GAAGC,YAAZ,GAA2B,oBAA5B,EAAkD;AACrEJ,UAAM,EAAEA,MAD6D;AAErE7nI,OAAG,EAAEyoI,OAFgE;AAGrEP,WAAO,EAAE,KAAKI;AAHuD,GAAlD,CAArB;;AAMA,MAAI/1I,IAAI,CAAC8+I,UAAT,EAAqB;AACnB,WAAO;AAAEz9G,WAAK,EAAE,EAAT;AAAaviB,UAAI,EAAE9e,IAAI,CAAC8+I,UAAxB;AAAoChqI,UAAI,EAAE9U,IAAI,CAAC++I;AAA/C,KAAP;AACD;;AAED,SAAO;AAAEuuB,aAAS,EAAEttK,IAAI,CAACutK;AAAlB,GAAP;AACD,CAjBD;;AAmBA7hC,QAAQ,CAAC,mBAAD,CAAR,GAAgC,gBAAesD,KAAf,EAAsB;AACpD,MAAI,eAAeA,KAAnB,EAA0B;AACxB,UAAMqG,oEAAY,CAACnF,OAAb,CAAqB,YAArB,EAAmC,KAAKlB,KAAK,CAACw+B,SAA9C,CAAN;AACD;;AACD,MAAI,gBAAgBx+B,KAApB,EAA2B;AACzBy+B,4DAAA,CAAgBz+B,KAAK,CAAC0+B,UAAtB;AACA,UAAMr4B,oEAAY,CAACnF,OAAb,CAAqB,aAArB,EAAoC,KAAKlB,KAAK,CAAC0+B,UAA/C,CAAN;AACD;;AACD,MAAI,gBAAgB1+B,KAApB,EAA2B;AACzB,UAAMqG,oEAAY,CAACnF,OAAb,CAAqB,aAArB,EAAoC,KAAKlB,KAAK,CAAC2+B,UAA/C,CAAN;AACA55I,WAAO,CAACgsC,IAAR,CAAa;AAAEjrD,UAAI,EAAE,kBAAR;AAA4B0rH,UAAI,EAAEwO,KAAK,CAAC2+B;AAAxC,KAAb;AACD;;AACD,MAAI,iBAAiB3+B,KAArB,EAA4B;AAC1B,QAAI,MAAMr0H,0DAAE,CAACqa,MAAH,CAAUg6G,KAAK,CAAC6B,WAAhB,CAAV,EAAwC;AACtC,YAAMwE,oEAAY,CAACnF,OAAb,CAAqB,cAArB,EAAqClB,KAAK,CAAC6B,WAA3C,CAAN;AACD;AACF;;AACD,MAAI,qBAAqB7B,KAAzB,EAAgC;AAC9B,UAAMqG,oEAAY,CAACnF,OAAb,CAAqB,kBAArB,EAAyC,KAAKlB,KAAK,CAAC4+B,eAApD,CAAN;AACD;;AACD,SAAO,IAAP;AACD,CArBD;;AAuBAliC,QAAQ,CAAC,mBAAD,CAAR,GAAgC,kBAAiB;AAC/C,gCAQI,MAAM2J,oEAAY,CAACjF,QAAb,CAAsB,CAC9B,kBAD8B,EAE9B,eAF8B,EAG9B,YAH8B,EAI9B,aAJ8B,EAK9B,aAL8B,EAM9B,cAN8B,EAO9B,aAP8B,CAAtB,CARV;AAAA;AAAA;AAAA,MACKw9B,eADL;AAAA;AAAA,MAEKC,YAFL;AAAA;AAAA,MAGKL,SAHL;AAAA;AAAA,MAIKE,UAJL;AAAA;AAAA,MAKKC,UALL;AAAA;AAAA,MAMK98B,WANL;AAAA;AAAA,MAOKi9B,UAPL;;AAiBA,SAAO;AACLF,mBAAe,EAAEA,eAAe,KAAK,MAApB,GAA6B,IAA7B,GAAoC,KADhD;AAELC,gBAAY,EAAEA,YAAY,KAAK,MAAjB,GAA0B,IAA1B,GAAiC,KAF1C;AAGLL,aAAS,EAAEO,qEAAe,CAACP,SAAS,IAAI,EAAd,CAHrB;AAIL;AACAE,cAAU,EAAEA,UAAU,IAAI,IAAd,IAAsBA,UAAU,KAAK,MAArC,GAA8C,IAA9C,GAAqD,KAL5D;AAMLC,cAAU,EAAEA,UAAU,IAAI,IAAd,IAAsBA,UAAU,KAAK,MAArC,GAA8C,IAA9C,GAAqD,KAN5D;AAOL98B,eAAW,EAAEA,WAAW,IAAIm9B,qBAAqB,EAP5C;AAQLpL,SAAK,EAAEkL,UAAU,IAAIvnK,IAAI,CAAC0G,KAAL,CAAW6gK,UAAX,EAAuB9tC;AARvC,GAAP;AAUD,CA5BD;;AA8BA0L,QAAQ,CAAC,YAAD,CAAR,GAAyB,gBAAeuiC,UAAf,EAA2B;AAClD,yBAAsBj/B,+CAAA,EAAtB;AAAA,MAAMizB,WAAN,oBAAMA,WAAN,CADkD,CAGlD;;;AACA,MAAIgM,UAAU,CAACpuC,UAAX,IAAyBoiC,WAA7B,EAA0C;AACxC,QAAID,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;AAEA,UAAMuF,mDAAI,CAACC,iEAAS,GAAG0sB,WAAZ,GAA0B,uBAA3B,EAAoD;AAC5Dj1H,WAAK,EAAE80H,SADqD;AAE5DI,YAAM,EAAEH,WAFoD;AAG5DtgK,UAAI,EAAEssK,UAAU,CAACpuC;AAH2C,KAApD,CAAV;AAKD;;AAED,QAAMmP,gDAAA,CAAgBi/B,UAAhB,CAAN;AACA,SAAO,IAAP;AACD,CAhBD;;AAkBAviC,QAAQ,CAAC,YAAD,CAAR,GAAyB,kBAAiB;AACxC,SAAOsD,+CAAA,EAAP;AACD,CAFD;;AAIAtD,QAAQ,CAAC,YAAD,CAAR,GAAyB,kBAAiB;AACxC,SAAO,MAAMwiC,wDAAS,EAAtB;AACD,CAFD;;AAIAxiC,QAAQ,CAAC,aAAD,CAAR,GAA0B,kBAAiB;AACzC,QAAMyiC,yDAAU,EAAhB;AACD,CAFD,C,CAIA;AACA;AACA;AACA;;;AACAziC,QAAQ,CAAC,UAAD,CAAR,GAAuB,gBAAe;AAAE2+B;AAAF,CAAf,EAA6B;AAClD,MAAI,CAACr7B,+CAAA,EAAL,EAAuB;AACrB,UAAM,IAAI7xI,KAAJ,CAAU,8CAAV,CAAN;AACD;;AAED,MAAI8kK,WAAW,GAAGjzB,+CAAA,GAAiBizB,WAAnC;AAEA,MAAIz1I,IAAI,GAAG81I,oDAAU,CAAC5lI,WAAX,CAAuB,EAAvB,EAA2BnnB,QAA3B,CAAoC,QAApC,CAAX;AACA,MAAIyqH,EAAE,GAAGpD,IAAI,CAACgX,MAAL,EAAT;AACA,MAAInmI,GAAG,GAAG,MAAM60J,oDAAU,CAACuH,SAAX,CAAqB;AAAE7pC,MAAF;AAAMqqC,YAAN;AAAgB79I;AAAhB,GAArB,CAAhB,CATkD,CAWlD;;AACA,QAAM81I,oDAAU,CAACkI,OAAX,CAAmB/8J,GAAnB,CAAN,CAZkD,CAclD;;AACA,MAAIq1J,WAAW,GAAG,MAAMsL,8DAAe,CAAC3gK,GAAG,CAACstI,KAAJ,EAAD,CAAvC,CAfkD,CAiBlD;AACA;AACA;;AACA,SAAO,MAAMmzB,wDAAS,CAAC;AACrBzgK,OADqB;AAErB+e,QAFqB;AAGrBs2I,eAAW,EAAEv8J,IAAI,CAACC,SAAL,iCACRs8J,WADQ;AAEX5qK,WAAK,EAAE4qK,WAAW,CAAC5qK,KAAZ,CAAkBqd,QAAlB,CAA2B,QAA3B;AAFI;AAHQ,GAAD,CAAtB;AAQD,CA5BD,C,CA8BA;AACA;;;AACAm2H,QAAQ,CAAC,UAAD,CAAR,GAAuB,gBAAe;AAAE02B,QAAF;AAAUiI;AAAV,CAAf,EAAqC;AAC1D,MAAIrI,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;;AAEA,MAAImyB,MAAM,IAAI,IAAd,EAAoB;AAClBA,UAAM,GAAGpzB,+CAAA,GAAiBizB,WAA1B;AACD;;AAED,MAAI7zC,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAMonB,mDAAI,CAACC,iEAAS,GAAG0sB,WAAZ,GAA0B,eAA3B,EAA4C;AAC1Dj1H,WAAK,EAAE80H,SADmD;AAE1DI;AAF0D,KAA5C,CAAhB;AAID,GALD,CAKE,OAAOngJ,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY18E,CAAZ;AACA,WAAO;AAAEof,WAAK,EAAE;AAAEghI,cAAM,EAAE;AAAV;AAAT,KAAP;AACD;;AAED,aAAyBj0C,GAAzB;AAAA,MAAM4R,EAAN,QAAMA,EAAN;AAAA,MAAUxzG,IAAV,QAAUA,IAAV;AAAA,MAAgBrO,IAAhB,QAAgBA,IAAhB;;AAEA,MAAIA,IAAI,IAAI,IAAZ,EAAkB;AAChB,WAAO;AAAEkjB,WAAK,EAAE;AAAEghI,cAAM,EAAE;AAAV;AAAT,KAAP;AACD;;AAEDlkJ,MAAI,GAAG5X,IAAI,CAAC0G,KAAL,CAAWkR,IAAX,CAAP;AAEA,MAAI1Q,GAAG,GAAG,MAAM60J,oDAAU,CAACuH,SAAX,CAAqB;AAAE7pC,MAAF;AAAMqqC,YAAN;AAAgB79I;AAAhB,GAArB,CAAhB;AACA81I,sDAAU,CAACkI,OAAX,CAAmB/8J,GAAnB;;AAEA,MAAI;AACF,UAAM60J,oDAAU,CAACn1I,OAAX,CAAmBpS,MAAM,CAACre,IAAP,CAAYyhB,IAAI,CAACjmB,KAAjB,EAAwB,QAAxB,CAAnB,EAAsDimB,IAAI,CAAC6gE,IAA3D,CAAN;AACD,GAFD,CAEE,OAAO/8D,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY18E,CAAZ,EADU,CAGV;;AACAqgJ,wDAAU,CAACoI,SAAX,CAAqBj9J,GAArB;AACA,WAAO;AAAE4zB,WAAK,EAAE;AAAEghI,cAAM,EAAE;AAAV;AAAT,KAAP;AACD,GArCyD,CAuC1D;;;AACA,MAAI70J,IAAI,GAAGjH,IAAI,CAAC0G,KAAL,CAAW,CAAC,MAAMooI,oEAAY,CAACpF,OAAb,CAAsB,cAAtB,CAAP,KAAgD,IAA3D,CAAX;AACAziI,MAAI,CAAC40J,MAAD,CAAJ,GAAe30J,GAAG,CAACmH,SAAJ,EAAf;AACA,QAAMygI,oEAAY,CAACnF,OAAb,CAAqB,cAArB,EAAqC3pI,IAAI,CAACC,SAAL,CAAegH,IAAf,CAArC,CAAN,CA1C0D,CA4C1D;AACA;AACA;;AACA,MAAIwhI,+CAAA,EAAJ,EAAsB;AACpB,UAAMA,gDAAA,CAAgB;AAAEkzB,kBAAY,EAAEz0J,GAAG,CAACstI,KAAJ;AAAhB,KAAhB,CAAN;AACD;;AAED,SAAO,EAAP;AACD,CApDD;;AAsDArP,QAAQ,CAAC,wBAAD,CAAR,GAAqC,kBAAiB;AACpD,MAAI2iC,aAAa,GAAG,MAAMh5B,oEAAY,CAACpF,OAAb,CAAqB,eAArB,CAA1B;AACA,SAAOo+B,aAAa,KAAK,MAAzB;AACD,CAHD;;AAKA3iC,QAAQ,CAAC,uBAAD,CAAR,GAAoC,kBAAiB;AACnD,QAAM2J,oEAAY,CAACnF,OAAb,CAAqB,eAArB,EAAsC,MAAtC,CAAN;AACA,SAAO,IAAP;AACD,CAHD;;AAKAxE,QAAQ,CAAC,2BAAD,CAAR,GAAwC,gBAAe;AAAE9qD;AAAF,IAAU,EAAzB,EAA6B;AACnE,MAAI60D,iEAAS,CAAC70D,GAAD,CAAT,CAAe0tF,WAAf,KAA+B/C,mBAAnC,EAAwD;AACtD,WAAO;AAAEgD,kBAAY,EAAE;AAAhB,KAAP;AACD;;AAED,MAAIngD,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAMxzH,kDAAG,CAAC66I,iEAAS,CAAC70D,GAAD,CAAT,CAAe4tF,aAAf,GAA+B,kBAAhC,CAAf;AACD,GAFD,CAEE,OAAO1xJ,GAAP,EAAY;AACZ,WAAO;AAAEukB,WAAK,EAAE;AAAT,KAAP;AACD;;AAED,MAAI;AACF+sF,OAAG,GAAG7nH,IAAI,CAAC0G,KAAL,CAAWmhH,GAAX,CAAN;AACD,GAFD,CAEE,OAAOtxG,GAAP,EAAY;AACZ,WAAO;AAAEukB,WAAK,EAAE;AAAT,KAAP;AACD;;AAED,MAAI+sF,GAAG,CAACpuD,MAAJ,KAAe,OAAnB,EAA4B;AAC1B,WAAO;AAAE3+B,WAAK,EAAE+sF,GAAG,CAACi0C;AAAb,KAAP;AACD;;AAED,SAAO;AAAEkM,gBAAY,EAAEngD,GAAG,CAACpuH,IAAJ,CAASuuK;AAAzB,GAAP;AACD,CAvBD;;AAyBA7iC,QAAQ,CAAC,qBAAD,CAAR,GAAkC,gBAAe;AAAE2+B;AAAF,CAAf,EAA6B;AAC7D,MAAIj8C,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAMonB,mDAAI,CAACC,iEAAS,GAAG+4B,aAAZ,GAA4B,YAA7B,EAA2C;AAAEnE;AAAF,KAA3C,CAAhB;AACD,GAFD,CAEE,OAAOvtJ,GAAP,EAAY;AACZ,WAAO;AAAEukB,WAAK,EAAEvkB,GAAG,CAACulJ,MAAJ,IAAc;AAAvB,KAAP;AACD;;AAED,MAAIj0C,GAAG,CAAClhF,KAAR,EAAe;AACb,UAAMmoG,oEAAY,CAACnF,OAAb,CAAqB,YAArB,EAAmC9hB,GAAG,CAAClhF,KAAvC,CAAN;AACA,WAAO,EAAP;AACD;;AACD,SAAO;AAAE7L,SAAK,EAAE;AAAT,GAAP;AACD,CAbD;;AAeAqqG,QAAQ,CAAC,oBAAD,CAAR,GAAiC,gBAAe;AAAEx+F;AAAF,CAAf,EAA0B;AACzD,QAAMmoG,oEAAY,CAACnF,OAAb,CAAqB,YAArB,EAAmChjG,KAAnC,CAAN;AACD,CAFD;;AAIAw+F,QAAQ,CAAC,oBAAD,CAAR,GAAiC,kBAAiB;AAChD,MAAI+J,iEAAS,MAAMA,iEAAS,GAAG64B,WAAZ,KAA4B/C,mBAA/C,EAAoE;AAClE,WAAO;AAAEkD,aAAO,EAAE;AAAX,KAAP;AACD;;AAED,MAAIzM,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;;AAEA,MAAI+xB,SAAJ,EAAe;AACb,QAAI;AACF,UAAI5zC,GAAG,GAAG,MAAMxzH,kDAAG,CAAC66I,iEAAS,GAAG+4B,aAAZ,GAA4B,WAA7B,EAA0C;AAC3DppI,eAAO,EAAE;AACP,4BAAkB48H;AADX;AADkD,OAA1C,CAAnB;AAKA5zC,SAAG,GAAG7nH,IAAI,CAAC0G,KAAL,CAAWmhH,GAAX,CAAN;;AAEA,UAAIA,GAAG,CAACpuD,MAAJ,KAAe,OAAnB,EAA4B;AAC1B,YAAIouD,GAAG,CAACi0C,MAAJ,KAAe,cAAnB,EAAmC;AACjC,iBAAO,IAAP;AACD;;AACD,eAAO;AAAEoM,iBAAO,EAAE;AAAX,SAAP;AACD;;AAED,aAAO;AAAEA,eAAO,EAAE;AAAX,OAAP;AACD,KAhBD,CAgBE,OAAOxsJ,CAAP,EAAU;AACVoR,aAAO,CAACsrE,GAAR,CAAY18E,CAAZ;AACA,aAAO;AAAEwsJ,eAAO,EAAE;AAAX,OAAP;AACD;AACF;;AAED,SAAO,IAAP;AACD,CA/BD;;AAiCA/iC,QAAQ,CAAC,2BAAD,CAAR,GAAwC,gBAAe;AAAE2+B;AAAF,CAAf,EAA6B;AACnE,MAAIrI,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;AACA,MAAI7hB,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAMonB,mDAAI,CAACC,iEAAS,GAAG+4B,aAAZ,GAA4B,kBAA7B,EAAiD;AAC/DthI,WAAK,EAAE80H,SADwD;AAE/DqI;AAF+D,KAAjD,CAAhB;AAID,GALD,CAKE,OAAOvtJ,GAAP,EAAY;AACZ,WAAO;AAAEukB,WAAK,EAAEvkB,GAAG,CAACulJ,MAAJ,IAAc;AAAvB,KAAP;AACD;;AAED,SAAO,EAAP;AACD,CAbD;;AAeA32B,QAAQ,CAAC,mBAAD,CAAR,GAAgC,gBAAe;AAAE2+B;AAAF,CAAf,EAA6B;AAC3D,MAAIj8C,GAAG,GAAG,MAAMonB,mDAAI,CAACC,iEAAS,GAAG+4B,aAAZ,GAA4B,QAA7B,EAAuC;AACzDnE;AADyD,GAAvC,CAApB;;AAIA,MAAIj8C,GAAG,CAAClhF,KAAR,EAAe;AACb,UAAMmoG,oEAAY,CAACnF,OAAb,CAAqB,YAArB,EAAmC9hB,GAAG,CAAClhF,KAAvC,CAAN;AACA,WAAO,EAAP;AACD;;AAED,SAAO;AAAE7L,SAAK,EAAE;AAAT,GAAP;AACD,CAXD;;AAaAqqG,QAAQ,CAAC,oBAAD,CAAR,GAAiC,kBAAiB;AAChD42B,sDAAU,CAACqI,aAAX;AACA,QAAMt1B,oEAAY,CAAC9E,WAAb,CAAyB,CAC7B,YAD6B,EAE7B,cAF6B,EAG7B,YAH6B,EAI7B,UAJ6B,CAAzB,CAAN;AAMA,SAAO,IAAP;AACD,CATD;;AAWA7E,QAAQ,CAAC,gBAAD,CAAR,GAA6B,kBAAiB;AAC5C,SAAO+J,iEAAS,MAAMA,iEAAS,GAAG64B,WAAlC;AACD,CAFD;;AAIA5iC,QAAQ,CAAC,gBAAD,CAAR,GAA6B,gBAAe;AAAE9qD;AAAF,CAAf,EAAwB;AACnD,MAAIA,GAAG,IAAI,IAAX,EAAiB;AACf;AACA,4BAAgB,MAAM8tD,6DAAU,CAAChD,QAAQ,CAAC,2BAAD,CAAT,EAAwC;AACtE9qD;AADsE,KAAxC,CAAhC;AAAA,QAAMv/C,KAAN,qBAAMA,KAAN;;AAGA,QAAIA,KAAJ,EAAW;AACT,aAAO;AAAEA;AAAF,OAAP;AACD;AACF,GARD,MAQO;AACL;AACAu/C,OAAG,GAAG2qF,mBAAN;AACD;;AAEDl2B,sEAAY,CAACnF,OAAb,CAAqB,YAArB,EAAmCtvD,GAAnC;AACA8tF,mEAAS,CAAC9tF,GAAD,CAAT;AACA,SAAO,EAAP;AACD,CAjBD;;AAmBA8qD,QAAQ,CAAC,MAAD,CAAR,GAAmB,kBAAiB;AAClC,SAAOijC,uDAAQ,EAAf;AACD,CAFD;;AAIAjjC,QAAQ,CAAC,aAAD,CAAR,GAA0B,kBAAiB;AACzC,SAAO;AAAEv1H,WAAO,EAAEylF;AAAX,GAAP;AACD,CAFD;;AAIA8vC,QAAQ,CAAC,aAAD,CAAR,GAA0B,kBAAiB;AACzC,QAAM1D,KAAK,GAAG,MAAMrtH,0DAAE,CAAC82H,OAAH,CAAW92H,0DAAE,CAACy2H,cAAH,EAAX,CAApB;AACA,QAAM/K,OAAO,GAAG,CAAC,MAAMjnH,OAAO,CAAC0pD,GAAR,CACrBk/D,KAAK,CAACtsI,GAAN,CAAU,MAAMiG,IAAN,IAAc;AACtB,UAAMitK,SAAS,GAAGj0J,0DAAE,CAACjB,IAAH,CAAQiB,0DAAE,CAACy2H,cAAH,EAAR,EAA6BzvI,IAA7B,EAAmC,eAAnC,CAAlB;;AACA,QAAI,MAAMgZ,0DAAE,CAACqa,MAAH,CAAU45I,SAAV,CAAV,EAAgC;AAC9B,UAAI5/B,KAAJ;;AACA,UAAI;AACFA,aAAK,GAAGzoI,IAAI,CAAC0G,KAAL,CAAW,MAAM0N,0DAAE,CAAC0B,QAAH,CAAYuyJ,SAAZ,CAAjB,CAAR;AACD,OAFD,CAEE,OAAO3sJ,CAAP,EAAU;AACVoR,eAAO,CAACsrE,GAAR,CAAY,yBAAZ,EAAuC18E,CAAC,CAACstC,KAAzC;AACA;AACD,OAP6B,CAS9B;AACA;AACA;AACA;;;AACA,UAAI5tD,IAAI,KAAK0pK,cAAb,EAA6B;AAC3B,eAAO;AACLrrC,YAAE,EAAEr+H,IADC;AAELsgK,qBAAW,EAAEjzB,KAAK,CAACizB,WAFd;AAGLh5B,iBAAO,EAAE+F,KAAK,CAAC/F,OAHV;AAILtnI,cAAI,EAAEqtI,KAAK,CAACnP,UAAN,IAAoB;AAJrB,SAAP;AAMD;AACF;;AAED,WAAO,IAAP;AACD,GA1BD,CADqB,CAAP,EA4BbzgI,MA5Ba,CA4BNiH,CAAC,IAAIA,CA5BC,CAAhB;AA8BA,SAAOggI,OAAP;AACD,CAjCD;;AAmCAqF,QAAQ,CAAC,iBAAD,CAAR,GAA8B,kBAAiB;AAC7C,SAAOu/B,KAAK,CAAC4D,WAAN,EAAP;AACD,CAFD;;AAIAnjC,QAAQ,CAAC,kBAAD,CAAR,GAA+B,kBAAiB;AAC9C,SAAOmgB,+DAAA,EAAP;AACD,CAFD;;AAIAngB,QAAQ,CAAC,oBAAD,CAAR,GAAiCkyB,0DAAO,CAAC,kBAAiB;AACxD;AACA,QAAM9vB,uDAAA,CAAsB3D,gCAAtB,CAAN;AACA2D,6CAAA,GAAYghC,YAAZ;AACA,QAAMhhC,yDAAA,EAAN;AACD,CALuC,CAAxC;;AAOApC,QAAQ,CAAC,eAAD,CAAR,GAA4B,gBAAe;AAAE1L;AAAF,IAAS,EAAxB,EAA4B;AACtD,MAAIA,EAAJ,EAAQ;AACN,QAAIgP,+CAAA,EAAJ,EAAsB;AACpB,YAAM,IAAI7xI,KAAJ,CAAU,kDAAV,CAAN;AACD;;AAED,UAAM6xI,gDAAA,CAAgBhP,EAAhB,CAAN;AACD;;AAED,MAAI;AACF,UAAM6rB,sDAAA,EAAN;AACD,GAFD,CAEE,OAAO5pI,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY18E,CAAZ;;AACA,QAAIA,CAAC,CAACnN,IAAF,KAAW,iBAAf,EAAkC;AAChC,aAAO;AAAEusB,aAAK,EAAEpf;AAAT,OAAP;AACD;;AACDitH,iFAAgB,CAACjtH,CAAD,CAAhB;AACA,WAAO;AAAEof,WAAK,EAAE;AAAEghI,cAAM,EAAE;AAAV;AAAT,KAAP;AACD,GATD,SASU;AACR,QAAIriC,EAAJ,EAAQ;AACNgP,wDAAA;AACD;AACF;;AAED,SAAO,EAAP;AACD,CAzBD;;AA2BAtD,QAAQ,CAAC,iBAAD,CAAR,GAA8B,gBAAe;AAAE02B,QAAF;AAAUnqJ;AAAV,CAAf,EAAoC;AAChE,MAAIvL,MAAJ;;AACA,MAAI;AACFA,UAAM,GAAG,MAAMm/I,wDAAA,CAAsBuW,MAAtB,EAA8BnqJ,OAA9B,CAAf;AACD,GAFD,CAEE,OAAOgK,CAAP,EAAU;AACV,QAAIA,CAAC,CAACnN,IAAF,KAAW,mBAAf,EAAoC;AAClC,UAAImN,CAAC,CAACogJ,MAAF,KAAa,aAAb,IAA8BpgJ,CAAC,CAAC+8D,IAAF,CAAOghD,EAAzC,EAA6C;AAC3C,cAAMgP,gDAAA,CAAgB/sH,CAAC,CAAC+8D,IAAF,CAAOghD,EAAvB,CAAN;AACA,YAAIr+H,IAAI,GAAGqtI,+CAAA,GAAiBnP,UAA5B;AACAmP,0DAAA;AAEA/sH,SAAC,CAAC+8D,IAAF,mCAAc/8D,CAAC,CAAC+8D,IAAhB;AAAsBr9E;AAAtB;AACD;;AAED,aAAO;AAAE0/B,aAAK,EAAEpf;AAAT,OAAP;AACD,KAVD,MAUO;AACLitH,mFAAgB,CAACjtH,CAAD,CAAhB;AACA,aAAO;AAAEof,aAAK,EAAE;AAAEghI,gBAAM,EAAE;AAAV;AAAT,OAAP;AACD;AACF;;AAED,MAAIriC,EAAE,GAAGtzH,MAAM,CAACszH,EAAhB,CArBgE,CAuBhE;;AACAtzH,QAAM,GAAG,MAAMozH,UAAU,CAACpzH,MAAM,CAACszH,EAAR,EAAYpkC,OAAZ,EAAqB;AAAEmzE,cAAU,EAAE;AAAd,GAArB,CAAzB;;AACA,MAAIriK,MAAM,CAAC20B,KAAX,EAAkB;AAChB,WAAO;AAAEA,WAAK,EAAE;AAAEghI,cAAM,EAAE31J,MAAM,CAAC20B;AAAjB;AAAT,KAAP;AACD;;AAEDgtG,+DAAc,CAAC,SAAD,CAAd;AACA,QAAM2gC,8DAAe,EAArB;AAEA,QAAMtjC,QAAQ,CAAC,cAAD,CAAR,EAAN;AAEA,SAAO;AAAE1L;AAAF,GAAP;AACD,CAnCD;;AAqCA0L,QAAQ,CAAC,aAAD,CAAR,GAA0B,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AAC/C,MAAIivC,YAAY,GAAGjgC,+CAAA,EAAnB;;AAEA,MAAIigC,YAAJ,EAAkB;AAChB,QAAIA,YAAY,CAACjvC,EAAb,KAAoBA,EAAxB,EAA4B;AAC1B;AACA,aAAO,EAAP;AACD,KAHD,MAGO;AACL;AACA,YAAM0L,QAAQ,CAAC,cAAD,CAAR,EAAN;AACD;AACF;;AAED,MAAItd,GAAG,GAAG,MAAM0R,UAAU,CAACE,EAAD,EAAKpkC,OAAL,EAAc;AAAEmzE,cAAU,EAAE;AAAd,GAAd,CAA1B;;AAEA,iBAAeG,UAAf,GAA4B;AAC1B,QAAIC,WAAW,GAAG,MAAMxtK,IAAN,IAAc;AAC9B,UAAI+hK,MAAM,GAAG/oJ,0DAAE,CAACjB,IAAH,CAAQiB,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAR,EAA6Br+H,IAA7B,CAAb;;AACA,UAAI;AACF,eAAO,MAAMgZ,0DAAE,CAAC2H,IAAH,CAAQohJ,MAAR,CAAb;AACD,OAFD,CAEE,OAAO5mJ,GAAP,EAAY;AACZ,eAAO,IAAP;AACD;AACF,KAPD;;AASA,QAAI;AACF,UAAIsyJ,MAAM,GAAG,MAAMD,WAAW,CAAC,WAAD,CAA9B;AACA,UAAIE,SAAS,GAAG,MAAMF,WAAW,CAAC,cAAD,CAAjC;AACA1B,6DAAA,CAAe,iBAAf,EAAkC;AAAEnrJ,YAAI,EAAE8sJ,MAAR;AAAgBC;AAAhB,OAAlC;AACD,KAJD,CAIE,OAAOvyJ,GAAP,EAAY;AACZuW,aAAO,CAACC,IAAR,CAAaxW,GAAb;AACD;AACF;;AACDoyJ,YAAU;AAEV,SAAO9gD,GAAP;AACD,CApCD;;AAsCAsd,QAAQ,CAAC,oBAAD,CAAR,GAAiC,kBAAiB;AAChD;AACA;AACA;AACA,QAAM2J,oEAAY,CAACnF,OAAb,CAAqB,UAArB,EAAiC,EAAjC,CAAN;AAEA,SAAOxE,QAAQ,CAAC,eAAD,CAAR,CAA0B;AAC/B7L,cAAU,EAAE,aADmB;AAE/ByvC,YAAQ,EAAE,IAFqB;AAG/BC,gBAAY,EAAElE;AAHiB,GAA1B,CAAP;AAKD,CAXD;;AAaA3/B,QAAQ,CAAC,cAAD,CAAR,GAA2B,kBAAiB;AAC1C2D,gFAAiB,CAAC;AAAEzoG,WAAO,EAAE;AAAX,GAAD,CAAjB,CAD0C,CAG1C;;AACA,QAAMknG,yDAAA,EAAN;AACAA,2DAAA;AAEA0hC,qEAAoB;AACpB,QAAMpiB,kDAAG,CAACI,YAAJ,EAAN;AAEA,QAAMrjB,iDAAA,EAAN;;AAEA,MAAI;AACF,UAAMkL,oEAAY,CAACnF,OAAb,CAAqB,YAArB,EAAmC,EAAnC,CAAN;AACD,GAFD,CAEE,OAAOjuH,CAAP,EAAU,CACV;AACA;AACA;AACD;;AAED+sH,oDAAA;AACA2rB,qEAAiB;AACjB,SAAO,IAAP;AACD,CAvBD;;AAyBAjvB,QAAQ,CAAC,eAAD,CAAR,GAA4B,gBAAe;AAAE1L,IAAF;AAAMiiC;AAAN,CAAf,EAAoC;AAC9D;AACA;AACA,MAAIA,WAAW,IAAI,CAACluI,OAAO,CAACk9G,GAAR,CAAYyxB,OAAhC,EAAyC;AACvC,UAAM7W,0DAAA,CAAwBoW,WAAxB,EAAqCnW,KAArC,CAA2ChvI,GAAG,IAAI,CAAE,CAApD,CAAN;AACD,GAL6D,CAO9D;;;AACA,MAAIkjH,EAAJ,EAAQ;AACN,QAAIq5B,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAhB;AACA,UAAMrlH,0DAAE,CAAC+3H,oBAAH,CAAwB2mB,SAAxB,CAAN;AACD;;AAED,SAAO,IAAP;AACD,CAdD;;AAgBA3tB,QAAQ,CAAC,eAAD,CAAR,GAA4B,gBAAe;AACzC7L,YADyC;AAEzC8rB,aAFyC;AAGzC2jB,UAHyC;AAIzCC;AAJyC,IAKvC,EALwB,EAKpB;AACN,MAAIvvC,EAAJ;;AACA,MAAIsvC,QAAJ,EAAc;AACZzvC,cAAU,GAAGA,UAAU,IAAI,aAA3B;AACAG,MAAE,GAAGuvC,YAAY,IAAIjE,cAArB;;AAEA,QAAI,MAAM3wJ,0DAAE,CAACqa,MAAH,CAAUra,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAV,CAAV,EAA0C;AACxC,YAAMrlH,0DAAE,CAAC+3H,oBAAH,CAAwB/3H,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAxB,CAAN;AACD;AACF,GAPD,MAOO;AACL;AACA,QAAI,CAACH,UAAL,EAAiB;AACf;AACA;AACA,UAAIpqG,KAAK,GAAG,MAAMi2G,QAAQ,CAAC,aAAD,CAAR,EAAlB;AACA7L,gBAAU,GAAG,MAAM4vC,yEAAc,CAACh6I,KAAD,CAAjC;AACD;;AAEDuqG,MAAE,GAAG,MAAM0vC,yEAAc,CAAC7vC,UAAD,CAAzB;AACD;;AAED,MAAIw5B,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAhB;AACA,QAAMrlH,0DAAE,CAACm3H,KAAH,CAASunB,SAAT,CAAN,CAtBM,CAwBN;;AACA,QAAM1+I,0DAAE,CAACo3H,QAAH,CAAYp3H,0DAAE,CAAC22H,mBAAf,EAAoC32H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,WAAnB,CAApC,CAAN,CAzBM,CA2BN;;AACA,QAAM1+I,0DAAE,CAACq1H,SAAH,CACJr1H,0DAAE,CAACjB,IAAH,CAAQ2/I,SAAR,EAAmB,eAAnB,CADI,EAEJ9yJ,IAAI,CAACC,SAAL,CAAewoI,sDAAA,CAAsBhP,EAAtB,EAA0BH,UAA1B,CAAf,CAFI,CAAN,CA5BM,CAiCN;;AACA,0BAAgB,MAAMC,UAAU,CAACE,EAAD,EAAKpkC,OAAL,CAAhC;AAAA,MAAMv6D,KAAN,qBAAMA,KAAN;;AACA,MAAIA,KAAJ,EAAW;AACThO,WAAO,CAACsrE,GAAR,CAAY,4BAA4Bt9D,KAAxC;AACA,WAAO;AAAEA;AAAF,KAAP;AACD;;AAED,MAAI,CAACsqH,WAAD,IAAgB,CAAC2jB,QAArB,EAA+B;AAC7B,QAAI;AACF,YAAMzjB,sDAAA,EAAN;AACD,KAFD,CAEE,OAAO5pI,CAAP,EAAU,CACV;AACA;AACD;AACF;;AAED,MAAIqtJ,QAAJ,EAAc;AACZ,UAAMlhC,uEAAgB,CAAC1C,QAAD,CAAtB;AACD;;AAED,SAAO,EAAP;AACD,CA3DD;;AA6DAA,QAAQ,CAAC,mBAAD,CAAR,GAAgC,kBAAiB;AAC/C,QAAM2J,oEAAY,CAACnF,OAAb,CAAqB,eAArB,EAAsC,MAAtC,CAAN;AACA,SAAO,IAAP;AACD,CAHD;;AAKAxE,QAAQ,CAAC,eAAD,CAAR,GAA4B,gBAAe;AAAEntH,UAAF;AAAYzJ;AAAZ,CAAf,EAAmC;AAC7D,MAAI;AACF,QAAI,EAAE,MAAM6F,0DAAE,CAACqa,MAAH,CAAUzW,QAAV,CAAR,CAAJ,EAAkC;AAChC,YAAM,IAAIphB,KAAJ,CAAW,wCAAuCohB,QAAS,EAA3D,CAAN;AACD;;AAED,QAAI8X,MAAM,GAAGtb,MAAM,CAACre,IAAP,CAAY,MAAMie,0DAAE,CAAC0B,QAAH,CAAYkC,QAAZ,EAAsB,QAAtB,CAAlB,CAAb;;AAEA,YAAQzJ,IAAR;AACE,WAAK,OAAL;AACE,YAAI;AACF,gBAAMm2J,KAAK,CAAChjC,YAAN,CAAmB1pH,QAAnB,EAA6B8X,MAA7B,CAAN;AACD,SAFD,CAEE,OAAOpU,CAAP,EAAU;AACV,cAAIJ,GAAG,GAAGI,CAAC,CAAC2kB,OAAF,CAAU5N,WAAV,EAAV;;AACA,cACEnX,GAAG,CAACzR,QAAJ,CAAa,aAAb,KACAyR,GAAG,CAACzR,QAAJ,CAAa,qBAAb,CAFF,EAGE;AACA,mBAAO;AAAEixB,mBAAK,EAAE;AAAT,aAAP;AACD;AACF;;AACD;;AACF,WAAK,OAAL;AACE,YAAIrhC,IAAJ;;AACA,YAAI;AACFA,cAAI,GAAGuG,IAAI,CAAC0G,KAAL,CAAWopB,MAAM,CAAC9gB,QAAP,EAAX,CAAP;AACD,SAFD,CAEE,OAAO0M,CAAP,EAAU;AACV,iBAAO;AAAEof,iBAAK,EAAE;AAAT,WAAP;AACD;;AAED,YAAI;AACF,gBAAM6pI,KAAK,CAACjhC,WAAN,CAAkBjqI,IAAlB,CAAN;AACD,SAFD,CAEE,OAAOiiB,CAAP,EAAU;AACV,iBAAO;AAAEof,iBAAK,EAAE;AAAT,WAAP;AACD;;AACD;;AACF,WAAK,QAAL;AACE;AACA;AACA;AACA;AACA;AACA,cAAMqqG,QAAQ,CAAC,cAAD,CAAR,EAAN;;AAEA,oCAAa,MAAMmgB,4DAAA,CACjB;AAAEoW,qBAAW,EAAE,IAAf;AAAqBh5B,iBAAO,EAAE;AAA9B,SADiB,EAEjB5yG,MAFiB,CAAnB;AAAA,YAAM2pG,EAAN,yBAAMA,EAAN,CARF,CAaE;AACA;;;AACA,YAAI2vC,QAAQ,GAAG,MAAMnV,oEAAA,CACnB7/I,0DAAE,CAACjB,IAAH,CAAQiB,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAR,EAA6B,WAA7B,CADmB,CAArB;AAGAw6B,yEAAA,CACEmV,QADF,EAEG;AACX;AACA;AACA,SALQ;AAOAnV,6EAAA,CAAqBmV,QAArB,EAzBF,CA2BE;AACA;;AACA,cAAMjkC,QAAQ,CAAC,aAAD,CAAR,CAAwB;AAAE1L;AAAF,SAAxB,CAAN;AACA,cAAM0L,QAAQ,CAAC,mBAAD,CAAR,EAAN;AACA,cAAMoC,yDAAA,EAAN;AACA,cAAM+d,sDAAA,GAAsBC,KAAtB,CAA4BhvI,GAAG,IAAI,CAAE,CAArC,CAAN;AAEA;;AACF;AA/DF;AAiED,GAxED,CAwEE,OAAOA,GAAP,EAAY;AACZA,OAAG,CAAC8pB,OAAJ,GAAc,6BAA6B9pB,GAAG,CAAC8pB,OAA/C;AACAsoG,iFAAgB,CAACpyH,GAAD,CAAhB;AACA,WAAO;AAAEukB,WAAK,EAAE;AAAT,KAAP;AACD;;AAED,SAAO,EAAP;AACD,CAhFD;;AAkFAqqG,QAAQ,CAAC,eAAD,CAAR,GAA4B,kBAAiB;AAC3C,SAAO,MAAMmgB,4DAAA,EAAb;AACD,CAFD;;AAIA,eAAe/rB,UAAf,CAA0BE,EAA1B,EAA8BjlC,UAA9B,EAA0C;AAAEg0E;AAAF,IAAiB,EAA3D,EAA+D;AAC7D,MAAIz5I,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG3a,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAN;AACD,GAFD,CAEE,OAAO/9G,CAAP,EAAU;AACVitH,iFAAgB,CACd,IAAI/xI,KAAJ,CAAU,4CAA4C8kB,CAAC,CAAC2kB,OAAxD,CADc,CAAhB;AAGA,WAAO;AAAEvF,WAAK,EAAE;AAAT,KAAP;AACD;;AAEDguG,gFAAiB,CAAC;AAAEzoG,WAAO,EAAE,oBAAoBtR;AAA/B,GAAD,CAAjB;;AAEA,MAAI,EAAE,MAAM3a,0DAAE,CAACqa,MAAH,CAAUM,GAAV,CAAR,CAAJ,EAA6B;AAC3B45G,iFAAgB,CAAC,IAAI/xI,KAAJ,CAAU,iCAAV,CAAD,CAAhB;AACA,WAAO;AAAEkkC,WAAK,EAAE;AAAT,KAAP;AACD;;AAED,MAAI;AACF,UAAM2tG,gDAAA,CAAgBhP,EAAhB,CAAN;AACA,UAAMmK,gDAAA,CAAgBnK,EAAhB,CAAN;AACD,GAHD,CAGE,OAAO/9G,CAAP,EAAU;AACVotH,kFAAiB,CAAC;AAAEzoG,aAAO,EAAE,0BAA0Bo5F;AAArC,KAAD,CAAjB;AACAkP,iFAAgB,CAACjtH,CAAD,CAAhB;AACA,UAAMypH,QAAQ,CAAC,cAAD,CAAR,EAAN;AACA,WAAO;AAAErqG,WAAK,EAAE;AAAT,KAAP;AACD,GA1B4D,CA4B7D;AACA;;;AACA,MAAI,CAAC2tG,+CAAA,GAAiBsG,MAAtB,EAA8B;AAC5B,kCAAmB,MAAMD,oEAAY,CAACjF,QAAb,CAAsB,CAAC,YAAD,CAAtB,CAAzB;AAAA;AAAA;AAAA,QAAQkF,MAAR;;AACAtG,oDAAA,CAAgB;AAAEsG;AAAF,KAAhB;AACD;;AAED,yBAAkCtG,+CAAA,EAAlC;AAAA,MAAM4gC,aAAN,oBAAMA,aAAN;AAAA,MAAqB7vC,QAArB,oBAAqBA,QAArB;;AAEA,MAAI;AACF,UAAM8vC,8DAAa,CAACD,aAAD,EAAgBb,UAAhB,CAAnB;AACD,GAFD,CAEE,OAAO9sJ,CAAP,EAAU;AACVoR,WAAO,CAACC,IAAR,CAAa,gBAAb,EAA+BrR,CAA/B;AACA,QAAIvV,MAAJ;;AACA,QAAIuV,CAAC,CAAC2kB,OAAF,CAAUx2B,QAAV,CAAmB,wBAAnB,CAAJ,EAAkD;AAChD1D,YAAM,GAAG;AAAE20B,aAAK,EAAE;AAAT,OAAT;AACD,KAFD,MAEO,IAAIpf,CAAC,CAAC2kB,OAAF,CAAUx2B,QAAV,CAAmB,kBAAnB,CAAJ,EAA4C;AACjD1D,YAAM,GAAG;AAAE20B,aAAK,EAAE;AAAT,OAAT;AACD,KAFM,MAEA;AACL6tG,mFAAgB,CAACjtH,CAAD,CAAhB;AACA6tJ,kEAAM,CAACvwI,IAAP,CAAY,2BAA2BygG,EAAvC,EAA2C/9G,CAA3C;AACAoR,aAAO,CAACsrE,GAAR,CAAY,uBAAZ,EAAqC18E,CAArC;AACAvV,YAAM,GAAG;AAAE20B,aAAK,EAAE;AAAT,OAAT;AACD;;AAED,UAAMqqG,QAAQ,CAAC,cAAD,CAAR,EAAN;AACA,WAAOh/H,MAAP;AACD;;AAED,QAAMy9H,6CAAA,EAAN;;AAEA,MAAI6E,+CAAA,GAAiBm0B,UAArB,EAAiC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACAp7J,wDAAA,GAAqBA,SAArB,CAA+BgoK,OAA/B,CAAuChoK,wDAAA,EAAvC;AACA,UAAMoiI,4CAAA,CACJ,iEADI,EAEJ,CAACpiI,0DAAA,CAAyBA,oDAAA,EAAzB,CAAD,CAFI,CAAN;AAKA,UAAMinI,gDAAA,CAAgB;AAAEm0B,gBAAU,EAAE;AAAd,KAAhB,CAAN;AACD;;AAED,MAAI,CAAC6M,iDAAQ,CAACC,KAAV,IAAmB,CAACD,iDAAQ,CAACE,QAA7B,IAAyC,CAAC/1I,MAAM,CAACg2I,WAArD,EAAkE;AAChEvV,wEAAkB,CAAC56B,EAAD,CAAlB;AACD;;AAED,MAAI;AACF,UAAM8N,uDAAA,CAAsB3D,gCAAtB,EAA0BqhC,aAA1B,CAAN;AACD,GAFD,CAEE,OAAOvpJ,CAAP,EAAU;AACVitH,iFAAgB,CAACjtH,CAAD,CAAhB;AACA,UAAMypH,QAAQ,CAAC,cAAD,CAAR,EAAN;AACA,WAAO;AAAErqG,WAAK,EAAE;AAAT,KAAP;AACD,GArF4D,CAuF7D;;;AACAysG,6CAAA,GAAY9uD,IAAZ,GAAmBs8E,UAAnB,GAAgCtsB,+CAAA,GAAiBssB,UAAjD;AACA,QAAM30B,8DAAA,EAAN,CAzF6D,CA2F7D;;AACA,QAAMsW,0DAAA,EAAN;AACA,QAAMnvI,sEAAA,EAAN;AACA,QAAMsiK,qDAAA,EAAN;AACA,QAAMhjB,kDAAG,CAACG,aAAJ,EAAN;AAEA8iB,0DAAS,GAjGoD,CAmG7D;;AACA,MAAI,CAACl2I,MAAM,CAACg2I,WAAZ,EAAyB;AACvB,QAAIp8I,OAAO,CAACk9G,GAAR,CAAYyxB,OAAZ,IAAuB1iC,EAAE,KAAKqrC,cAAlC,EAAkD;AAChDh9B,mEAAc,CAAC,UAAD,CAAd;AACD,KAFD,MAEO,IAAIrO,EAAE,KAAKsrC,cAAX,EAA2B;AAChC,YAAMj2B,oEAAY,CAACnF,OAAb,CAAqB,YAArB,EAAmClQ,EAAnC,CAAN;AACD,KAFM,MAEA;AACLqO,mEAAc,CAAC,SAAD,CAAd;AAEA,YAAMgH,oEAAY,CAACnF,OAAb,CAAqB,YAArB,EAAmClQ,EAAnC,CAAN,CAHK,CAKL;;AACA,UAAI,CAACgwC,iDAAQ,CAACE,QAAd,EAAwB;AACtB,cAAMrkB,8DAAA,EAAN;AACD;AACF;AACF;;AAEDuB,oDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,aAAhB,EAA+B;AAAE25F;AAAF,GAA/B;AAEA,SAAO,EAAP;AACD;;AAED0L,QAAQ,CAAC,2BAAD,CAAR,GAAwC,kBAAiB;AACvD,yBAAasD,+CAAA,EAAb;AAAA,MAAMhP,EAAN,oBAAMA,EAAN;;AACA,MAAIA,EAAE,KAAKsrC,cAAP,IAAyBtrC,EAAE,KAAKqrC,cAApC,EAAoD;AAClD,WAAO,EAAP;AACD;;AAED,MAAIza,KAAK,GAAG,CAAC,WAAD,EAAc,eAAd,CAAZ;AACA,MAAI0f,MAAM,GAAG,EAAb;;AAEA,OAAK,IAAIx7J,IAAT,IAAiB87I,KAAjB,EAAwB;AACtB,QAAInjJ,GAAG,GAAI,iBAAgBqH,IAAK,EAAhC;;AACA,QAAIk6H,+CAAA,GAAiBvhI,GAAjB,KAAyB,IAA7B,EAAmC;AACjC6iK,YAAM,CAAC9yK,IAAP,CAAYsX,IAAZ;AACD;AACF;;AAED,SAAOw7J,MAAP;AACD,CAjBD;;AAmBA5kC,QAAQ,CAAC,2BAAD,CAAR,GAAwC,gBAAe;AAAE52H;AAAF,CAAf,EAAyB;AAC/D,MAAIrH,GAAG,GAAI,iBAAgBqH,IAAK,EAAhC;AACAk6H,kDAAA,CAAgB;AAAE,KAACvhI,GAAD,GAAO;AAAT,GAAhB;AACD,CAHD;;AAKAi+H,QAAQ,CAAC,iBAAD,CAAR,GAA8B,gBAAe;AAAErwH,UAAF;AAAYgsH;AAAZ,CAAf,EAAuC;AACnE,MAAI,CAAC2oC,iDAAQ,CAACC,KAAd,EAAqB;AACnB,WAAO,IAAP;AACD;;AAED,QAAMt1J,0DAAE,CAACq1H,SAAH,CAAa,cAAc30H,QAA3B,EAAqCgsH,QAArC,CAAN;AACA,SAAO,IAAP;AACD,CAPD;;AASAqE,QAAQ,CAAC,aAAD,CAAR,GAA0B,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AAC/C,SAAO45B,qEAAmB,CAAC55B,EAAD,CAA1B;AACD,CAFD;;AAIA0L,QAAQ,CAAC,aAAD,CAAR,GAA0B,gBAAe;AAAE1L,IAAF;AAAMs6B;AAAN,CAAf,EAAiC;AACzD,QAAMI,4DAAU,CAAC16B,EAAD,EAAKs6B,QAAL,CAAhB;AACD,CAFD;;AAIA5uB,QAAQ,CAAC,aAAD,CAAR,GAA0B,gBAAe;AAAE1L;AAAF,CAAf,EAAuB;AAC/C,QAAMq6B,4DAAU,CAACr6B,EAAD,CAAhB;AACD,CAFD;;AAIA0L,QAAQ,CAAC,wBAAD,CAAR,GAAqC,kBAAiB;AACpD,QAAM1L,EAAE,GAAG,MAAMqV,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAjB;;AACA,MAAIjQ,EAAE,IAAIA,EAAE,KAAK,EAAjB,EAAqB;AACnB,UAAMq5B,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAlB,CADmB,CAGnB;AACA;;AACA,QAAI,MAAMrlH,0DAAE,CAACqa,MAAH,CAAUqkI,SAAV,CAAV,EAAgC;AAC9B,aAAOr5B,EAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD,CAZD;;AAcA0L,QAAQ,CAAC,aAAD,CAAR,GAA0B,kBAAiB;AACzC,MAAIsD,+CAAA,MAAoBA,+CAAA,GAAiBhP,EAAzC,EAA6C;AAC3C;AACA2uC,2DAAQ;AACT;AACF,CALD;;AAOAjjC,QAAQ,CAAC,OAAD,CAAR,GAAoB,gBAAe;AAAE/pI,MAAF;AAAQwd;AAAR,CAAf,EAAgC;AAClDsuJ,yDAAA,CAAe9rK,IAAf,EAAqBwd,KAArB;AACD,CAFD;;AAIAusH,QAAQ,GAAG6kC,qDAAU,CAAC7kC,QAAD,CAArB;;AAEA8kC,gEAAS,CAACzwG,IAAV,GAAiB,CAACp+D,IAAD,EAAOlK,IAAP,KAAgBi3I,6DAAU,CAAC0e,kDAAG,CAAC1hB,QAAJ,CAAa/pI,IAAb,CAAD,EAAqBlK,IAArB,CAA3C,C,CAEA;;;AACA21J,kDAAG,CAAC1hB,QAAJ,GAAeA,QAAf;AACA0hB,kDAAG,CAACF,OAAJ,CAAYujB,uDAAZ,EAA0BC,oDAA1B,EAAqCC,mDAArC,EAA+CC,mDAA/C;;AAEA,SAAS5C,qBAAT,GAAiC;AAC/B,MAAIgC,iDAAQ,CAACE,QAAb,EAAuB;AACrB;AACA;AACA;AACA;AACA,WAAOn8I,OAAO,CAACk9G,GAAR,CAAY4/B,mBAAnB;AACD;;AACD,SAAOl2J,0DAAE,CAACjB,IAAH,CAAQqa,OAAO,CAACk9G,GAAR,CAAY4/B,mBAApB,EAAyC,QAAzC,CAAP;AACD;;AAED,eAAeC,iBAAf,GAAmC;AACjC,iBAAeC,YAAf,CAA4Bz7I,GAA5B,EAAiC;AAC/B;AACA,QAAI,EAAE,MAAM3a,0DAAE,CAACqa,MAAH,CAAUM,GAAV,CAAR,CAAJ,EAA6B;AAC3B,YAAM3a,0DAAE,CAACm3H,KAAH,CAASx8G,GAAT,CAAN;AACD;AACF;;AAED,MAAIu7G,WAAW,GAAG,MAAMwE,oEAAY,CAACpF,OAAb,CAAqB,cAArB,CAAxB,CARiC,CAUjC;AACA;;AACA,MAAIY,WAAJ,EAAiB;AACf,QAAI;AACF,YAAMkgC,YAAY,CAAClgC,WAAD,CAAlB;AACD,KAFD,CAEE,OAAO5uH,CAAP,EAAU;AACV4uH,iBAAW,GAAG,IAAd;AACD;AACF;;AAED,MAAI,CAACA,WAAL,EAAkB;AAChBA,eAAW,GAAGm9B,qBAAqB,EAAnC;AACD;;AAED,QAAM+C,YAAY,CAAClgC,WAAD,CAAlB;;AACAl2H,4DAAE,CAACw2H,eAAH,CAAmBN,WAAnB;AACD;;AAEM,eAAemgC,OAAf,CAAuB76J,OAAvB,EAAgC86J,KAAhC,EAAuCC,UAAvC,EAAmD;AACxDt1E,SAAO,GAAGzlF,OAAV;AAEA,QAAMqkJ,4DAAA,EAAN;AACA,QAAMp7I,OAAO,CAAC0pD,GAAR,CAAY,CAACusE,oEAAY,CAACxF,IAAb,EAAD,EAAsBl1H,0DAAE,CAACk1H,IAAH,EAAtB,CAAZ,CAAN;AACA,QAAM49B,sDAAA,EAAN;AACA,QAAMqD,iBAAiB,EAAvB;AAEA,MAAIK,OAAO,GAAG,MAAM97B,oEAAY,CAACpF,OAAb,CAAqB,cAArB,CAApB;;AACA,MAAIkhC,OAAJ,EAAa;AACX,QAAI;AACF,UAAI3jK,IAAI,GAAGjH,IAAI,CAAC0G,KAAL,CAAWkkK,OAAX,CAAX,CADE,CAGF;;AACA,YAAM/xJ,OAAO,CAAC0pD,GAAR,CACJvtE,MAAM,CAACiS,IAAP,CAAYA,IAAZ,EAAkB9R,GAAlB,CAAsB0mK,MAAM,IAAI;AAC9B,eAAOE,oDAAU,CAACkI,OAAX,CAAmBh9J,IAAI,CAAC40J,MAAD,CAAvB,CAAP;AACD,OAFD,CADI,CAAN;AAKD,KATD,CASE,OAAOngJ,CAAP,EAAU;AACVoR,aAAO,CAACsrE,GAAR,CAAY,mBAAZ,EAAiC18E,CAAjC;AACA,YAAM,IAAI9kB,KAAJ,CAAU,gBAAV,CAAN;AACD;AACF;;AAED,MAAI8zK,KAAJ,EAAW;AACT,UAAMG,UAAU,GAAG,MAAM/7B,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAzB,CADS,CAET;AACA;AACA;AACD;;AAED,QAAMrvD,GAAG,GAAG,MAAMy0D,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAlB;;AACA,MAAIrvD,GAAJ,EAAS;AACP8tF,qEAAS,CAAC9tF,GAAD,CAAT;AACD;;AAED0mE,YAAU,CAACzX,IAAX,CAAgBqhC,UAAhB,EAA4B9jB,kDAAG,CAAC1hB,QAAhC;AAEA+hC,yDAAA,CAAe,UAAf,EAA2B;AACzBr5I,YAAQ,EAAE47I,iDAAQ,CAACE,QAAT,GAAoB,QAApB,GAA+BF,iDAAQ,CAACC,KAAT,GAAiB,KAAjB,GAAyB;AADzC,GAA3B;;AAIA,MAAI,CAACgB,KAAD,IAAU,CAACjB,iDAAQ,CAACE,QAApB,IAAgC,CAACF,iDAAQ,CAACC,KAA9C,EAAqD;AACnD,QAAItC,UAAU,GAAG,MAAMt4B,oEAAY,CAACpF,OAAb,CAAqB,aAArB,CAAvB;AACAl8G,WAAO,CAACgsC,IAAR,CAAa;AACXjrD,UAAI,EAAE,kBADK;AAEX0rH,UAAI,EAAEmtC,UAAU,IAAI,IAAd,IAAsBA,UAAU,KAAK;AAFhC,KAAb;AAID;;AAED,MAAIsD,KAAK,IAAIl9I,OAAO,CAACk9G,GAAR,CAAYyxB,OAAzB,EAAkC;AAChCvoI,UAAM,CAACk3I,KAAP,GAAe,CAAC1vK,IAAD,EAAOlK,IAAP,KAAgBi3I,6DAAU,CAAC0e,kDAAG,CAAC1hB,QAAJ,CAAa/pI,IAAb,CAAD,EAAqBlK,IAArB,CAAzC;;AACA0iC,UAAM,CAACm3I,MAAP,GAAgB3iC,+DAAhB;AACAx0G,UAAM,CAACo3I,EAAP,GAAYnjI,sDAAZ;AACAjU,UAAM,CAACq3I,GAAP,GAAarnC,gCAAb;AACAhwG,UAAM,CAACs3I,eAAP,GAAyBpjC,qDAAzB;AACD;AACF;AAEM,eAAewB,IAAf,CAAoB;AAAE9P,UAAF;AAAY9hI;AAAZ,CAApB,EAA0C;AAC/C;AACA;AACA29F,SAAO,GAAG81E,SAAV;AAEA,MAAIC,OAAJ,EAAaC,SAAb;;AACA,MAAI3zK,MAAJ,EAAY;AACV0zK,WAAO,GAAG1zK,MAAM,CAAC0zK,OAAjB;AACAC,aAAS,GAAG3zK,MAAM,CAAC2zK,SAAnB;AACD,GAHD,MAGO;AACLD,WAAO,GAAG59I,OAAO,CAACk9G,GAAR,CAAYC,eAAtB;AACA0gC,aAAS,GAAG79I,OAAO,CAACk9G,GAAR,CAAY4gC,iBAAxB;AACD;;AAED,QAAMrX,4DAAA,EAAN;AACA,QAAMp7I,OAAO,CAAC0pD,GAAR,CAAY,CAACusE,oEAAY,CAACxF,IAAb,CAAkB;AAAEC,WAAO,EAAE;AAAX,GAAlB,CAAD,EAAwCn1H,0DAAE,CAACk1H,IAAH,EAAxC,CAAZ,CAAN;;AACAl1H,4DAAE,CAACw2H,eAAH,CAAmBwgC,OAAO,IAAI59I,OAAO,CAAC+9I,GAAR,EAA9B;;AAEA,MAAIF,SAAJ,EAAe;AACblD,qEAAS,CAACkD,SAAD,CAAT;AACD,GAFD,MAEO;AACL;AACA;AACAlD,qEAAS,CAAC,IAAD,CAAT;AAEAthB,sDAAG,CAACN,MAAJ,CAAW7hI,EAAX,CAAc,aAAd,EAA6B,MAAM;AACjCojH,mEAAc,CAAC,SAAD,CAAd;AACD,KAFD;AAGD;;AAED,MAAItO,QAAJ,EAAc;AACZ,UAAM2O,6DAAU,CAAChD,QAAQ,CAAC,aAAD,CAAT,EAA0B;AAAE1L,QAAE,EAAED;AAAN,KAA1B,CAAhB;AACD;;AAED,SAAO7pH,GAAP;AACD,C,CAED;;AACO,MAAMA,GAAG,GAAG;AACjBw5H,YAAU,EAAE/0H,0DAAE,CAAC+0H,UADE;AAEjBqiC,aAAW,EAAE,CAAClwJ,GAAD,EAAMpqB,IAAN,KAAe6vJ,UAAU,CAACvnF,IAAX,CAAgBl+C,GAAhB,EAAqBpqB,IAArB,CAFX;AAGjBsoE,MAAI,EAAE,OAAOp+D,IAAP,EAAalK,IAAb,KAAsB;AAC1B,QAAI22H,GAAG,GAAG,MAAMsgB,6DAAU,CAAC0e,kDAAG,CAAC1hB,QAAJ,CAAa/pI,IAAb,CAAD,EAAqBlK,IAArB,CAA1B;AACA,WAAO22H,GAAP;AACD,GANgB;AAOjBnjG,IAAE,EAAE,CAACtpB,IAAD,EAAOy5B,IAAP,KAAgBgyH,kDAAG,CAACN,MAAJ,CAAW7hI,EAAX,CAActpB,IAAd,EAAoBy5B,IAApB,CAPH;AAQjB42I,uFARiB;AASjB5jI,2DATiB;AAUjB+7F,sCAViB;AAYjB;AACA8nC,+CAbiB;AAcjBlqK,qDAdiB;AAejBmqK,cAAY,EAAE9G;AAfG,CAAZ;;AAkBP,IAAIr3I,KAAA,IAA0Ci8I,iDAAQ,CAACC,KAAvD,EAA8D;AAC5D;AACA3xJ,MAAI,CAAC6zJ,gBAAL,CAAsB,SAAtB,EAAiC,MAAMlwJ,CAAN,IAAW;AAC1C,QAAIA,CAAC,CAACjiB,IAAF,CAAO8U,IAAP,KAAgB,mBAApB,EAAyC;AACvC,YAAMg5H,yDAAA,EAAN;AACA,YAAMsf,kDAAG,CAACI,YAAJ,EAAN;AACA,YAAMrjB,iDAAA,EAAN;AACAkL,0EAAY,CAAC+8B,QAAb;AACAz3J,gEAAE,CAACy3J,QAAH;AAEA/sG,gBAAU,CAAC,MAAM;AACf;AACA/mD,YAAI,CAAC8W,KAAL;AACD,OAHS,EAGP,GAHO,CAAV;AAID;AACF,GAbD;AAcD,C;;;;;;;;;;;;ACltED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,SAASy0C,OAAT,CAAiBwoG,IAAjB,EAAuB;AAC5B,SAAO92K,MAAM,CAACiS,IAAP,CAAY6kK,IAAZ,EAAkBjzK,MAAlB,CAAyBiH,CAAC,IAAIA,CAAC,KAAK,MAApC,CAAP;AACD;AAEM,SAASisK,cAAT,CAAwB7kK,GAAxB,EAA6B;AAClC;AACA;AACA,MAAI8kK,OAAO,GAAG9kK,GAAG,GAAG,IAAI+kE,MAAJ,CAAW,KAAK/kE,GAAG,CAAC9O,MAApB,CAApB,CAHkC,CAKlC;;AACA,SAAOoa,QAAQ,CAACw5J,OAAD,EAAU,CAAV,CAAR,GAAuB,IAAvB,GAA8B,EAArC;AACD;AAEM,SAASvhG,MAAT,CAAgBqhG,IAAhB,EAAsBtqK,SAAtB,EAAiC;AACtC,MAAIyqK,IAAI,GAAGzqK,SAAS,CAACyqK,IAAV,EAAX;AACA,MAAI/kK,GAAG,GAAGvR,MAAM,CAAE6L,SAAS,CAAC0qK,MAAV,KAAqB,IAArB,GAA4B,EAA7B,GAAmC,CAApC,CAAN,CAA6Cl9J,QAA7C,CAAsD,CAAtD,CAAV;AAEA88J,MAAI,GAAG92K,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB62K,IAAlB,EAAwB;AAAEG,QAAI,EAAEH,IAAI,CAACG,IAAL,GAAYA;AAApB,GAAxB,CAAP;AACA,SAAOE,SAAS,CAACL,IAAD,EAAO5kK,GAAP,EAAY+kK,IAAZ,CAAhB;AACD;;AAED,SAASE,SAAT,CAAmBL,IAAnB,EAAyB5kK,GAAzB,EAA8B+kK,IAA9B,EAAoC;AAClC,MAAI/kK,GAAG,CAAC9O,MAAJ,KAAe,CAAnB,EAAsB;AACpB,WAAO0zK,IAAP;AACD;;AACD,QAAMplJ,CAAC,GAAGxf,GAAG,CAAC,CAAD,CAAb;AACA,QAAMsqB,CAAC,GAAGs6I,IAAI,CAACplJ,CAAD,CAAJ,IAAW,EAArB;AACA,SAAO1xB,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB62K,IAAlB,EAAwB;AAC7B,KAACplJ,CAAD,GAAK1xB,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBu8B,CAAlB,EAAqB26I,SAAS,CAAC36I,CAAD,EAAItqB,GAAG,CAAC9M,KAAJ,CAAU,CAAV,CAAJ,EAAkB6xK,IAAlB,CAA9B,EAAuD;AAC1DA,UAAI,EAAEz6I,CAAC,CAACy6I,IAAF,GAASA;AAD2C,KAAvD;AADwB,GAAxB,CAAP;AAKD;;AAEM,SAASG,KAAT,CAAeC,UAAf,EAA2B;AAChC,MAAIP,IAAI,GAAG,EAAX;;AACA,OAAK,IAAItqK,SAAT,IAAsB6qK,UAAtB,EAAkC;AAChC5hG,UAAM,CAACqhG,IAAD,EAAOtqK,SAAP,CAAN;AACD;;AACD,SAAOsqK,IAAP;AACD;AAEM,SAASlrK,IAAT,CAAc0rK,KAAd,EAAqBC,KAArB,EAA4B;AACjC,MAAID,KAAK,CAACL,IAAN,KAAeM,KAAK,CAACN,IAAzB,EAA+B;AAC7B,WAAO,IAAP;AACD;;AAED,MAAIO,KAAK,GAAGF,KAAZ;AACA,MAAIG,KAAK,GAAGF,KAAZ;AACA,MAAIhmJ,CAAC,GAAG,EAAR,CAPiC,CASjC;AACA;AACA;AACA;;AACA,SAAO,CAAP,EAAU;AACR,QAAImmJ,MAAM,GAAG,IAAIjgK,GAAJ,CAAQ,CAAC,GAAG62D,OAAO,CAACkpG,KAAD,CAAX,EAAoB,GAAGlpG,OAAO,CAACmpG,KAAD,CAA9B,CAAR,CAAb;AACA,QAAIxlK,IAAI,GAAG,CAAC,GAAGylK,MAAM,CAACxmK,MAAP,EAAJ,CAAX;AACAe,QAAI,CAACrO,IAAL;AAEA,QAAI+zK,OAAO,GAAG,IAAd,CALQ,CAOR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAAK,IAAI17J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhK,IAAI,CAAC7O,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,UAAI/J,GAAG,GAAGD,IAAI,CAACgK,CAAD,CAAd;;AAEA,UAAI,CAACu7J,KAAK,CAACtlK,GAAD,CAAN,IAAe,CAACulK,KAAK,CAACvlK,GAAD,CAAzB,EAAgC;AAC9B;AACD;;AAED,UAAI0lK,KAAK,GAAGJ,KAAK,CAACtlK,GAAD,CAAjB;AACA,UAAI2lK,KAAK,GAAGJ,KAAK,CAACvlK,GAAD,CAAjB;;AACA,UAAI0lK,KAAK,CAACX,IAAN,KAAeY,KAAK,CAACZ,IAAzB,EAA+B;AAC7BU,eAAO,GAAGzlK,GAAV;AACA;AACD;AACF;;AAED,QAAI,CAACylK,OAAL,EAAc;AACZ,aAAOZ,cAAc,CAACxlJ,CAAD,CAArB;AACD;;AAEDA,KAAC,IAAIomJ,OAAL;AACAH,SAAK,GAAGA,KAAK,CAACG,OAAD,CAAL,IAAkB,EAA1B;AACAF,SAAK,GAAGA,KAAK,CAACE,OAAD,CAAL,IAAkB,EAA1B;AACD;AACF;AAEM,SAASplD,KAAT,CAAeukD,IAAf,EAAqBt6I,CAAC,GAAG,CAAzB,EAA4B;AACjC;AACA,MAAI,CAACs6I,IAAI,CAACG,IAAV,EAAgB;AACd,WAAOH,IAAP;AACD;;AAED,MAAI7kK,IAAI,GAAGq8D,OAAO,CAACwoG,IAAD,CAAlB;AACA7kK,MAAI,CAACrO,IAAL;AAEA,MAAIlH,IAAI,GAAG;AAAEu6K,QAAI,EAAEH,IAAI,CAACG;AAAb,GAAX;AACAhlK,MAAI,GAAGA,IAAI,CAAC7M,KAAL,CAAW,CAACo3B,CAAZ,EAAer8B,GAAf,CAAmBoxB,CAAC,IAAK70B,IAAI,CAAC60B,CAAD,CAAJ,GAAUghG,KAAK,CAACukD,IAAI,CAACvlJ,CAAD,CAAL,EAAUiL,CAAV,CAAxC,CAAP;AAEA,SAAO9/B,IAAP;AACD;AAEM,SAASizE,KAAT,CAAemnG,IAAf,EAAqBvlJ,CAAC,GAAG,EAAzB,EAA6B6nG,MAAM,GAAG,CAAtC,EAAyC;AAC9C,QAAM/4F,GAAG,GACP,IAAI42C,MAAJ,CAAWmiD,MAAX,KACC7nG,CAAC,KAAK,EAAN,GAAY,MAAKA,CAAE,GAAnB,GAAwB,EADzB,IAEC,SAAQulJ,IAAI,CAACG,IAAL,IAAa,SAAU,IAHlC;AAIA,SACE52I,GAAG,GACHiuC,OAAO,CAACwoG,IAAD,CAAP,CACG32K,GADH,CACO+R,GAAG,IAAI;AACV,WAAOy9D,KAAK,CAACmnG,IAAI,CAAC5kK,GAAD,CAAL,EAAYA,GAAZ,EAAiBknH,MAAM,GAAG,CAA1B,CAAZ;AACD,GAHH,EAIGj7G,IAJH,CAIQ,EAJR,CAFF;AAQD,C;;;;;;;;;;;;AC1ID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;CAGA;AACA;AACA;;AACA;;AAEA,MAAMkjH,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAApB;;AAEA,IAAIs5J,cAAc,GAAG14J,0DAAE,CAAC42H,cAAxB;AAEA,IAAI+hC,oBAAoB,GAAG;AACzB,iBAAeC,iFAAcA;AADJ,CAA3B;AAIO,eAAeC,iBAAf,CAAiCl+I,GAAjC,EAAsC8F,IAAtC,EAA4C;AACjD,MAAIq4I,MAAM,GAAGJ,cAAb;AACAA,gBAAc,GAAG/9I,GAAjB;AACA,QAAM8F,IAAI,EAAV;AACAi4I,gBAAc,GAAGI,MAAjB;AACD;AAEM,SAASC,gBAAT,GAA4B;AACjC,SAAOL,cAAP;AACD;;AAED,SAASM,cAAT,CAAwBhyK,IAAxB,EAA8B;AAC5B,SAAOoX,QAAQ,CAACpX,IAAI,CAACmW,KAAL,CAAW,QAAX,EAAqB,CAArB,CAAD,CAAf;AACD;;AAEM,SAAS87J,cAAT,CAAwB5zC,EAAxB,EAA4ByrC,KAA5B,EAAmC;AACxC,OAAK,IAAI57H,CAAT,IAAc47H,KAAd,EAAqB;AACnB,QAAIkI,cAAc,CAAC9jI,CAAD,CAAd,KAAsBmwF,EAA1B,EAA8B;AAC5B,aAAOnwF,CAAP;AACD;AACF;AACF;AAEM,eAAegkI,oBAAf,CAAoC1pC,EAApC,EAAwC;AAC7C,QAAMud,IAAI,GAAG,MAAM8S,gEAAA,CACjBrwB,EADiB,EAEjB,8CAFiB,EAGjB,EAHiB,EAIjB,IAJiB,CAAnB;AAMA,SAAOud,IAAI,CAAChsJ,GAAL,CAASi8I,GAAG,IAAIA,GAAG,CAAC3X,EAApB,CAAP;AACD;AAEM,eAAe8zC,gBAAf,CAAgCC,aAAhC,EAA+C;AACpD,QAAMt+I,KAAK,GAAG,MAAM9a,0DAAE,CAAC82H,OAAH,CAAWsiC,aAAX,CAApB;AACA,SAAOt+I,KAAK,CACTr2B,MADI,CACGuC,IAAI,IAAIA,IAAI,CAACmW,KAAL,CAAW,eAAX,CADX,EAEJ3Y,IAFI,CAEC,CAAC60K,EAAD,EAAKC,EAAL,KAAY;AAChB,UAAMt3B,GAAG,GAAGg3B,cAAc,CAACK,EAAD,CAA1B;AACA,UAAMp3B,GAAG,GAAG+2B,cAAc,CAACM,EAAD,CAA1B;;AACA,QAAIt3B,GAAG,GAAGC,GAAV,EAAe;AACb,aAAO,CAAC,CAAR;AACD,KAFD,MAEO,IAAID,GAAG,GAAGC,GAAV,EAAe;AACpB,aAAO,CAAP;AACD;;AACD,WAAO,CAAP;AACD,GAXI,CAAP;AAYD;AAEM,SAASs3B,UAAT,CAAoBC,UAApB,EAAgCrrG,GAAhC,EAAqC;AAC1C,SAAOA,GAAG,CAAC1pE,MAAJ,CAAWuC,IAAI,IAAI;AACxB,UAAMq+H,EAAE,GAAG2zC,cAAc,CAAChyK,IAAD,CAAzB;AACA,WAAOwyK,UAAU,CAACxtK,OAAX,CAAmBq5H,EAAnB,MAA2B,CAAC,CAAnC;AACD,GAHM,CAAP;AAID;;AAED,eAAeo0C,eAAf,CAA+BjqC,EAA/B,EAAmCnK,EAAnC,EAAuC;AACrC,QAAMq0C,WAAW,GAAG;AAClBn0C,YAAQ,EAAE,CAACnB,KAAD,EAAQiU,MAAR,EAAgBC,QAAhB,KACRunB,gEAAA,CAAgBrwB,EAAhB,EAAoBpL,KAApB,EAA2BiU,MAA3B,EAAmCC,QAAnC,CAFgB;AAGlB3I,aAAS,EAAEvL,KAAK,IAAIy7B,iEAAA,CAAiBrwB,EAAjB,EAAqBpL,KAArB,CAHF;AAIlBwG,eAAW,EAAEnqG,IAAI,IAAIo/H,mEAAA,CAAmBrwB,EAAnB,EAAuB/uG,IAAvB;AAJH,GAApB;;AAOA,MAAIk4I,oBAAoB,CAACtzC,EAAD,CAApB,IAA4B,IAAhC,EAAsC;AACpC,UAAM,IAAI7iI,KAAJ,CAAU,iDAAiD6iI,EAA3D,CAAN;AACD;;AAED,MAAIzxH,GAAG,GAAG+kK,oBAAoB,CAACtzC,EAAD,CAA9B;AACA,SAAOzxH,GAAG,CAAC8lK,WAAD,EAAc,MAAMz3C,IAAI,CAACgX,MAAL,EAApB,CAAV;AACD;;AAED,eAAe0gC,QAAf,CAAwBnqC,EAAxB,EAA4B4I,GAA5B,EAAiC;AAC/B,MAAI;AACF,UAAMynB,iEAAA,CAAiBrwB,EAAjB,EAAqB4I,GAArB,CAAN;AACD,GAFD,CAEE,OAAO9wH,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY,qBAAZ,EAAmCo0C,GAAnC;AACA,UAAM9wH,CAAN;AACD;AACF;;AAEM,eAAesyJ,cAAf,CAA8BpqC,EAA9B,EAAkCxoI,IAAlC,EAAwCoyK,aAAxC,EAAuD;AAC5D,QAAMj1J,IAAI,GAAG,MAAMnE,0DAAE,CAAC0B,QAAH,CAAY1B,0DAAE,CAACjB,IAAH,CAAQq6J,aAAR,EAAuBpyK,IAAvB,CAAZ,CAAnB;;AACA,MAAIA,IAAI,CAACmW,KAAL,CAAW,OAAX,CAAJ,EAAyB;AACvB,UAAMs8J,eAAe,CAACjqC,EAAD,EAAKwpC,cAAc,CAAChyK,IAAD,CAAnB,CAArB;AACD,GAFD,MAEO;AACL,UAAM2yK,QAAQ,CAACnqC,EAAD,EAAKrrH,IAAL,CAAd;AACD;;AACD,QAAM07I,gEAAA,CAAgBrwB,EAAhB,EAAoB,4CAApB,EAAkE,CACtEwpC,cAAc,CAAChyK,IAAD,CADwD,CAAlE,CAAN;AAGD;;AAED,SAAS6yK,qBAAT,CAA+BL,UAA/B,EAA2ChmC,SAA3C,EAAsD;AACpD,OAAK,IAAI32H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG28J,UAAU,CAACx1K,MAA/B,EAAuC6Y,CAAC,EAAxC,EAA4C;AAC1C,QACEA,CAAC,IAAI22H,SAAS,CAACxvI,MAAf,IACAw1K,UAAU,CAAC38J,CAAD,CAAV,KAAkBm8J,cAAc,CAACxlC,SAAS,CAAC32H,CAAD,CAAV,CAFlC,EAGE;AACA,YAAM,IAAIra,KAAJ,CAAU,wBAAV,CAAN;AACD;AACF;AACF;;AAEM,eAAes3K,OAAf,CAAuBtqC,EAAvB,EAA2B;AAChC,MAAIgqC,UAAU,GAAG,MAAMN,oBAAoB,CAAC1pC,EAAD,CAA3C;AACA,MAAIgE,SAAS,GAAG,MAAM2lC,gBAAgB,CAACT,cAAD,CAAtC;AAEAmB,uBAAqB,CAACL,UAAD,EAAahmC,SAAb,CAArB;AAEA,QAAM/nE,OAAO,GAAG8tG,UAAU,CAACC,UAAD,EAAahmC,SAAb,CAA1B;;AAEA,OAAK,IAAIumC,SAAT,IAAsBtuG,OAAtB,EAA+B;AAC7B,UAAMmuG,cAAc,CAACpqC,EAAD,EAAKuqC,SAAL,EAAgBrB,cAAhB,CAApB;AACD;;AAED,SAAOjtG,OAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrIM,SAAS+8E,cAAT,CAAwBxhJ,IAAxB,EAA8Bg2I,GAA9B,EAAmC3W,MAAnC,EAA2CxhH,MAA3C,EAAmD;AACxDwhH,QAAM,CAACn2H,OAAP,CAAe82B,KAAK,IAAI;AACtB,QAAIniB,MAAJ,EAAY;AACV,UAAIm4H,GAAG,CAACtgI,cAAJ,CAAmBsqB,KAAnB,KAA6Bg2G,GAAG,CAACh2G,KAAD,CAAH,IAAc,IAA/C,EAAqD;AACnD,cAAM,IAAIxkC,KAAJ,CAAW,GAAEwE,IAAK,qBAAoBggC,KAAM,EAA5C,CAAN;AACD;AACF,KAJD,MAIO;AACL,UAAI,CAACg2G,GAAG,CAACtgI,cAAJ,CAAmBsqB,KAAnB,CAAD,IAA8Bg2G,GAAG,CAACh2G,KAAD,CAAH,IAAc,IAAhD,EAAsD;AACpD,cAAM,IAAIxkC,KAAJ,CAAW,GAAEwE,IAAK,qBAAoBggC,KAAM,EAA5C,CAAN;AACD;AACF;AACF,GAVD;AAWD;AAEM,SAAS2kH,UAAT,CAAoB1qH,GAApB,EAAyB;AAC9B,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAC3B,UAAM,IAAIz+B,KAAJ,CAAU,qCAAqCy+B,GAA/C,CAAN;AACD;;AAED,SAAO7iB,QAAQ,CAAC6iB,GAAG,CAAC3jB,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAD,CAAf;AACD;AAEM,SAASu9I,YAAT,CAAsB5+I,MAAtB,EAA8B;AACnC,MAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,UAAM,IAAIzZ,KAAJ,CAAU,uCAAuCyZ,MAAjD,CAAN;AACD;;AAED,QAAMwzC,UAAU,GAAGxzC,MAAM,CAACrB,QAAP,EAAnB;AACA,SACE60C,UAAU,CAACzpD,KAAX,CAAiB,CAAjB,EAAoB,CAApB,IACA,GADA,GAEAypD,UAAU,CAACzpD,KAAX,CAAiB,CAAjB,EAAoB,CAApB,CAFA,GAGA,GAHA,GAIAypD,UAAU,CAACzpD,KAAX,CAAiB,CAAjB,CALF;AAOD;AAEM,MAAM6pJ,YAAY,GAAG;AAC1BmqB,qBAAmB,CAACvzC,OAAD,EAAU;AAC3B,UAAQtsH,IAAR,GAAiBssH,OAAjB,CAAQtsH,IAAR;;AACA,QACEA,IAAI,KAAK,UAAT,IACAA,IAAI,KAAK,SADT,IAEAA,IAAI,KAAK,YAFT,IAGAA,IAAI,KAAK,QAHT,IAIAA,IAAI,KAAK,UAJT,IAKAA,IAAI,KAAK,MALT,IAMAA,IAAI,KAAK,OAPX,EAQE;AACA,YAAM,IAAI3X,KAAJ,CAAU,2BAA2B2X,IAArC,CAAN;AACD;AACF,GAdyB;;AAgB1B40C,UAAQ,CAAC03E,OAAD,EAAU;AAAE5hH;AAAF,MAAa,EAAvB,EAA2B;AACjC,QAAI,CAACA,MAAD,IAAW4hH,OAAO,CAACtsH,IAAR,IAAgB,IAA/B,EAAqC;AACnC01I,kBAAY,CAACmqB,mBAAb,CAAiCvzC,OAAjC;AACD;;AAED+hB,kBAAc,CACZ,SADY,EAEZ/hB,OAFY,EAGZ5hH,MAAM,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,WAAjB,EAA8B,QAA9B,CAAH,GAA6C,CAAC,MAAD,EAAS,MAAT,CAHvC,EAIZA,MAJY,CAAd;AAOA,WAAO4hH,OAAP;AACD;;AA7ByB,CAArB;AAgCA,MAAMqpB,aAAa,GAAG;AAC3B/gG,UAAQ,CAAC04E,QAAD,EAAW;AAAE5iH;AAAF,MAAa,EAAxB,EAA4B;AAClC2jI,kBAAc,CACZ,UADY,EAEZ/gB,QAFY,EAGZ5iH,MAAM,GAAG,CAAC,MAAD,EAAS,WAAT,EAAsB,WAAtB,CAAH,GAAwC,CAAC,MAAD,EAAS,WAAT,CAHlC,EAIZA,MAJY,CAAd;;AAOA,QAAMu+H,UAAN,GAA8B3b,QAA9B,CAAM2b,UAAN;AAAA,QAAqBv6F,IAArB,4BAA8B4+E,QAA9B;;AACA,WAAO5+E,IAAP;AACD;;AAX0B,CAAtB;AAcA,MAAMmnG,kBAAkB,GAAG;AAChCjhG,UAAQ,CAACkrH,aAAD,EAAgB;AAAEp1J;AAAF,MAAa,EAA7B,EAAiC;AACvC2jI,kBAAc,CACZ,eADY,EAEZyxB,aAFY,EAGZp1J,MAAM,GAAG,CAAC,MAAD,EAAS,WAAT,CAAH,GAA2B,CAAC,MAAD,CAHrB,EAIZA,MAJY,CAAd;;AAOA,QAAMu+H,UAAN,GAA8B62B,aAA9B,CAAM72B,UAAN;AAAA,QAAqBv6F,IAArB,4BAA8BoxH,aAA9B;;AACA,WAAOpxH,IAAP;AACD;;AAX+B,CAA3B;AAcA,MAAMonG,UAAU,GAAG;AACxBlhG,UAAQ,CAAC+4E,KAAD,EAAQ;AAAEjjH;AAAF,MAAa,EAArB,EAAyB;AAC/B2jI,kBAAc,CAAC,OAAD,EAAU1gB,KAAV,EAAiB,CAAC,MAAD,CAAjB,EAA2BjjH,MAA3B,CAAd;AACA,WAAOijH,KAAP;AACD;;AAJuB,CAAnB;AAOA,MAAMooB,cAAc,GAAG;AAC5BgqB,cAAY,CAAC7qK,IAAD,EAAO;AACjB,UAAQ8K,IAAR,GAAiB9K,IAAjB,CAAQ8K,IAAR;;AACA,QAAIA,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,UAAlC,EAA8C;AAC5C,YAAM,IAAI3X,KAAJ,CAAU,wBAAwB2X,IAAlC,CAAN;AACD;AACF,GAN2B;;AAQ5B40C,UAAQ,CAAC1/C,IAAD,EAAO;AAAEwV;AAAF,MAAa,EAApB,EAAwB;AAC9B,QAAI,CAACA,MAAD,IAAW,UAAUxV,IAAzB,EAA+B;AAC7B6gJ,oBAAc,CAACgqB,YAAf,CAA4B7qK,IAA5B;AACD;;AAEDm5I,kBAAc,CAAC,aAAD,EAAgBn5I,IAAhB,EAAsB,CAAC,UAAD,EAAa,MAAb,CAAtB,EAA4CwV,MAA5C,CAAd;AACA,WAAOxV,IAAP;AACD;;AAf2B,CAAvB;AAkBA,MAAMigJ,gBAAgB,GAAG;AAC9BvgG,UAAQ,CAACsrF,KAAD,EAAQ;AAAEx1H;AAAF,MAAa,EAArB,EAAyB;AAC/B2jI,kBAAc,CAAC,aAAD,EAAgBnO,KAAhB,EAAuB,CAAC,MAAD,EAAS,MAAT,CAAvB,EAAyCx1H,MAAzC,CAAd;;AAEA,QAAI,UAAUw1H,KAAd,EAAqB;AACnB;AACA;AACA;AACA,UACEA,KAAK,CAACr6I,IAAN,CAAWmd,KAAX,CAAiB,qBAAjB,KAA2C,IAA3C,IACAk9H,KAAK,CAACr6I,IAAN,GAAa,YAFf,EAGE;AACA,cAAM,IAAIwC,KAAJ,CAAU,+BAA+B63I,KAAK,CAACr6I,IAA/C,CAAN;AACD;AACF;;AAED,WAAOq6I,KAAP;AACD,GAjB6B;;AAmB9BoO,MAAI,CAACzL,GAAD,EAAM;AACR;AACA;AACA;AACA,QAAI,EAAE,cAAcA,GAAhB,CAAJ,EAA0B;AACxB,YAAM,IAAIx6I,KAAJ,CACJ,yEACEoJ,IAAI,CAACC,SAAL,CAAemxI,GAAf,CAFE,CAAN;AAID;;AAED,QAAI3C,KAAK,qBAAQ2C,GAAR,CAAT;;AACA3C,SAAK,CAAC3zG,KAAN,GAAcs2G,GAAG,CAACt2G,KAAJ,GAAY96B,IAAI,CAAC0G,KAAL,CAAW0qI,GAAG,CAACt2G,KAAf,CAAZ,GAAoC,IAAlD;AACA2zG,SAAK,CAAC8/B,QAAN,GAAiBn9B,GAAG,CAACm9B,QAAJ,KAAiB,CAAjB,GAAqB,IAArB,GAA4B,KAA7C;AACA9/B,SAAK,CAAC+/B,OAAN,GAAgBp9B,GAAG,CAACo9B,OAAJ,KAAgB,CAAhB,GAAoB,IAApB,GAA2B,KAA3C;AACA//B,SAAK,CAACjI,qBAAN,GACE4K,GAAG,CAAC5K,qBAAJ,KAA8B,CAA9B,GAAkC,IAAlC,GAAyC,KAD3C;AAEAiI,SAAK,CAACtL,OAAN,GAAgBiO,GAAG,CAACjO,OAAJ,KAAgB,CAAhB,GAAoB,IAApB,GAA2B,KAA3C;AACAsL,SAAK,CAAC5uE,OAAN,GAAgBuxE,GAAG,CAACvxE,OAAJ,KAAgB,CAAhB,GAAoB,IAApB,GAA2B,KAA3C;AACA4uE,SAAK,CAACr6I,IAAN,GAAaq6I,KAAK,CAACr6I,IAAN,IAAc66J,YAAY,CAACxgB,KAAK,CAACr6I,IAAP,CAAvC;AACA,WAAOq6I,KAAP;AACD,GAxC6B;;AA0C9BsO,QAAM,CAACtO,KAAD,EAAQ;AACZ,QAAI2C,GAAG,qBAAQ3C,KAAR,CAAP;;AACA,QAAI,WAAW2C,GAAf,EAAoB;AAClBA,SAAG,CAACt2G,KAAJ,GAAY2zG,KAAK,CAAC3zG,KAAN,GAAc96B,IAAI,CAACC,SAAL,CAAewuI,KAAK,CAAC3zG,KAArB,CAAd,GAA4C,IAAxD;AACD;;AACD,QAAI,cAAcs2G,GAAlB,EAAuB;AACrBA,SAAG,CAACm9B,QAAJ,GAAe9/B,KAAK,CAAC8/B,QAAN,GAAiB,CAAjB,GAAqB,CAApC;AACD;;AACD,QAAI,aAAan9B,GAAjB,EAAsB;AACpBA,SAAG,CAACo9B,OAAJ,GAAc//B,KAAK,CAAC+/B,OAAN,GAAgB,CAAhB,GAAoB,CAAlC;AACD;;AACD,QAAI,aAAap9B,GAAjB,EAAsB;AACpBA,SAAG,CAACjO,OAAJ,GAAcsL,KAAK,CAACtL,OAAN,GAAgB,CAAhB,GAAoB,CAAlC;AACD;;AACD,QAAI,aAAaiO,GAAjB,EAAsB;AACpBA,SAAG,CAACvxE,OAAJ,GAAc4uE,KAAK,CAAC5uE,OAAN,GAAgB,CAAhB,GAAoB,CAAlC;AACD;;AACD,QAAI,2BAA2BuxE,GAA/B,EAAoC;AAClCA,SAAG,CAAC5K,qBAAJ,GAA4BiI,KAAK,CAACjI,qBAAN,GAA8B,CAA9B,GAAkC,CAA9D;AACD;;AACD,QAAI,UAAU4K,GAAd,EAAmB;AACjBA,SAAG,CAACh9I,IAAJ,GAAW2rJ,UAAU,CAACtR,KAAK,CAACr6I,IAAP,CAArB;AACD;;AAED,WAAOg9I,GAAP;AACD;;AAnE6B,CAAzB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1HP;AACA;AAEA,IAAIq9B,cAAc,GAAG,IAAIhiK,GAAJ,EAArB;AAEA,IAAIiiK,cAAc,GAAG,IAArB;AACA,IAAIC,eAAe,GAAG,IAAIzkK,OAAJ,EAAtB;AACA,IAAI0kK,sBAAsB,GAAG,KAA7B;AAEA,IAAIC,mBAAmB,GAAG,EAA1B;AAEO,SAASxX,OAAT,CAAiBnyB,OAAjB,EAA0B;AAC/BypC,iBAAe,CAAC/2K,GAAhB,CAAoBstI,OAApB,EAA6B,IAA7B;AACA,SAAOA,OAAP;AACD;AAEM,SAAS4pC,UAAT,CAAoB5pC,OAApB,EAA6B;AAClC,SAAOypC,eAAe,CAACvkK,GAAhB,CAAoB86H,OAApB,CAAP;AACD;;AAED,eAAe6pC,mBAAf,GAAqC;AACnC;AACA,QAAMC,IAAI,CAAC,GAAD,CAAV;;AAEA,SAAOP,cAAc,CAAC1yJ,IAAf,GAAsB,CAA7B,EAAgC;AAC9B;AACA,UAAMlD,OAAO,CAAC0pD,GAAR,CAAY,CAAC,GAAGksG,cAAc,CAACvoK,MAAf,EAAJ,CAAZ,CAAN,CAF8B,CAI9B;AACA;;AACA,UAAM8oK,IAAI,CAAC,GAAD,CAAV;AACD;AACF;;AAED,SAASA,IAAT,CAAcxkK,IAAd,EAAoB;AAClB,SAAO,IAAIqO,OAAJ,CAAYC,OAAO,IAAIgmD,UAAU,CAAChmD,OAAD,EAAUtO,IAAV,CAAjC,CAAP;AACD;;AAEM,eAAe29H,UAAf,CAA0BjD,OAA1B,EAAmCh0I,IAAnC,EAAyC;AAAE+9K,SAAF;AAAW7zK;AAAX,IAAoB,EAA7D,EAAiE;AACtE;AACA;AACAyzK,qBAAmB,CAAC53K,IAApB,CAAyBmE,IAAzB;;AACA,MAAIyzK,mBAAmB,CAACz2K,MAApB,GAA6B,CAAjC,EAAoC;AAClCy2K,uBAAmB,GAAGA,mBAAmB,CAACz0K,KAApB,CAA0B,CAAC,CAA3B,CAAtB;AACD;;AAED,MAAIu0K,eAAe,CAACvkK,GAAhB,CAAoB86H,OAApB,CAAJ,EAAkC;AAChC,WAAOsC,UAAU,CAAC,MAAMtC,OAAO,CAACh0I,IAAD,CAAd,EAAsB;AAAE+9K;AAAF,KAAtB,CAAjB;AACD,GAVqE,CAYtE;AACA;AACA;AACA;;;AACA,MAAI7zK,IAAI,KAAK,cAAb,EAA6B;AAC3B,UAAM2zK,mBAAmB,EAAzB;AACD;;AAED,MAAIG,OAAO,GAAGhqC,OAAO,CAACh0I,IAAD,CAArB;AACAu9K,gBAAc,CAACt6K,GAAf,CAAmB+6K,OAAnB;AACAA,SAAO,CAACnyJ,IAAR,CAAa,MAAM;AACjB0xJ,kBAAc,CAACnyJ,MAAf,CAAsB4yJ,OAAtB;AACD,GAFD;AAGA,SAAOA,OAAP;AACD,C,CAED;;AACO,SAASC,qBAAT,GAAiC;AACtC,MAAIv7I,MAAM,CAACg2I,WAAX,EAAwB;AACtBgF,0BAAsB,GAAG,IAAzB;AACD;AACF;AAEM,SAASQ,sBAAT,GAAkC;AACvC,MAAIx7I,MAAM,CAACg2I,WAAX,EAAwB;AACtBgF,0BAAsB,GAAG,KAAzB;AACD;AACF;AAEM,MAAMpnC,UAAU,GAAG6nC,gEAAU,CAAC,OAAOx6I,IAAP,EAAay6I,cAAc,GAAG,EAA9B,KAAqC;AACxEZ,gBAAc,GAAGY,cAAjB;AACA,SAAOz6I,IAAI,GAAG06I,OAAP,CAAe,MAAM;AAC1Bb,kBAAc,GAAG,IAAjB;AACD,GAFM,CAAP;AAGD,CALmC,CAA7B;AAOA,SAASc,kBAAT,CAA4Bz+J,OAA5B,EAAqC8jB,IAArC,EAA2C;AAChD,MAAI65I,cAAc,IAAI,IAAlB,IAA0B,CAACE,sBAA/B,EAAuD;AACrD9lC,kFAAiB,CAAC,qBAAqB+lC,mBAAmB,CAAC17J,IAApB,CAAyB,IAAzB,CAAtB,CAAjB;AACAw1H,iFAAgB,CAAC,IAAI/xI,KAAJ,CAAU,yCAAV,CAAD,CAAhB,CAFqD,CAIrD;AACA;;AACA,WAAOi+B,IAAI,EAAX;AACD;;AAED,MAAI46I,WAAW,GAAGf,cAAlB;AACAA,gBAAc,mCAAQA,cAAR,GAA2B39J,OAA3B,CAAd;AACA,SAAO8jB,IAAI,GAAG06I,OAAP,CAAe,MAAM;AAC1Bb,kBAAc,GAAGe,WAAjB;AACD,GAFM,CAAP;AAGD;AAEM,SAASC,iBAAT,GAA6B;AAClC,MAAIhB,cAAc,IAAI,IAAtB,EAA4B;AAC1B5lC,kFAAiB,CAAC;AAChBjN,cAAQ,EAAE,QADM;AAEhBx7F,aAAO,EAAE,qBAAqBwuI,mBAAmB,CAAC17J,IAApB,CAAyB,IAAzB;AAFd,KAAD,CAAjB,CAD0B,CAK1B;AAEA;AACA;AACA;AACA;;AACA,WAAO,EAAP;AACD;;AAED,MAAIu7J,cAAc,IAAI,IAAlB,IAA0BE,sBAA9B,EAAsD;AACpD,WAAO,EAAP;AACD;;AACD,SAAOF,cAAP;AACD,C;;;;;;;;;;;;AC1HD;AAAA;AAAA;AAAA;AACA;AAEA,IAAI7nB,GAAG,GAAGM,sDAAS,EAAnB;AAEAN,GAAG,CAACnxJ,MAAJ,CAAW,YAAX,EAAyB,OAAO;AAAE+jI,IAAF;AAAM6K;AAAN,CAAP,KAAwB;AAC/C,QAAMV,0CAAA,CAAU,OAAV,EAAmB;AAAEnK,MAAF;AAAM6K;AAAN,GAAnB,CAAN;AACD,CAFD;AAIeuiB,kEAAf,E;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAI9rH,OAAO,GAAG,KAAd;AACA,IAAInhB,OAAO,GAAG,EAAd;AACA,IAAI+1J,QAAQ,GAAG,EAAf;AAEO,SAASr4I,KAAT,GAAiB;AACtB1d,SAAO,GAAG,EAAV;AACA+1J,UAAQ,GAAG,EAAX;AACD;AAEM,SAASh0I,MAAT,CAAgBvgC,IAAhB,EAAsB;AAC3B,QAAM5J,KAAK,GAAG+K,IAAI,CAACoE,GAAL,EAAd;AACA,SAAO,MAAMivK,QAAQ,CAACx0K,IAAD,EAAO5J,KAAP,CAArB;AACD;;AAED,SAASo+K,QAAT,CAAkBx0K,IAAlB,EAAwB5J,KAAxB,EAA+B;AAC7B,QAAMS,GAAG,GAAGsK,IAAI,CAACoE,GAAL,EAAZ;;AAEA,MAAIo6B,OAAJ,EAAa;AACX,QAAInhB,OAAO,CAACxe,IAAD,CAAP,IAAiB,IAArB,EAA2B;AACzBwe,aAAO,CAACxe,IAAD,CAAP,GAAgB,EAAhB;AACD;;AACDwe,WAAO,CAACxe,IAAD,CAAP,CAAcnE,IAAd,CAAmBhF,GAAG,GAAGT,KAAzB;AACD;AACF;;AAEM,SAASq+K,SAAT,CAAmBz0K,IAAnB,EAAyB;AAC9B,MAAI2/B,OAAJ,EAAa;AACX,QAAI40I,QAAQ,CAACv0K,IAAD,CAAR,IAAkB,IAAtB,EAA4B;AAC1Bu0K,cAAQ,CAACv0K,IAAD,CAAR,GAAiB,CAAjB;AACD;;AACDu0K,YAAQ,CAACv0K,IAAD,CAAR;AACD;AACF;AAEM,SAAS5J,KAAT,GAAiB;AACtBupC,SAAO,GAAG,IAAV;AACD;AAEM,SAASU,IAAT,GAAgB;AACrBV,SAAO,GAAG,KAAV;AAEAjO,SAAO,CAACsrE,GAAR,CAAY,0BAAZ;;AACA,OAAK,IAAIh9F,IAAT,IAAiBwe,OAAjB,EAA0B;AACxB,UAAM4gB,OAAO,GAAG5gB,OAAO,CAACxe,IAAD,CAAvB;AACA,UAAMqpB,KAAK,GAAG+V,OAAO,CAACnoC,MAAR,CAAe,CAACoyB,KAAD,EAAQ+M,CAAR,KAAc/M,KAAK,GAAG+M,CAAC,GAAG,IAAzC,EAA+C,CAA/C,CAAd;AACA,UAAM8kI,GAAG,GAAG7xI,KAAK,GAAG+V,OAAO,CAACpiC,MAA5B;AAEA00B,WAAO,CAACsrE,GAAR,CACG,IAAGh9F,IAAK,YAAWo/B,OAAO,CAACpiC,MAAO,WAAUqsB,KAAM,UAAS6xI,GAAI,EADlE;AAGD;;AAED,OAAK,IAAIl7J,IAAT,IAAiBu0K,QAAjB,EAA2B;AACzB7iJ,WAAO,CAACsrE,GAAR,CAAa,IAAGh9F,IAAK,KAAIu0K,QAAQ,CAACv0K,IAAD,CAAO,EAAxC;AACD;;AACD0xB,SAAO,CAACsrE,GAAR,CAAY,kBAAZ;AAEA9gE,OAAK;AACN,C;;;;;;;;;;;;AC1DD;AAAe;AACbqyI,UAAQ,EAAE,KADG;AAEbD,OAAK,EAAE,KAFM;AAGboG,WAAS,EAAE;AAHE,CAAf,E;;;;;;;;;;;ACAA,yC;;;;;;;;;;;;;;;;;;;;;;;ACAA;;AACA,iBAAiCt8J,mBAAO,CAAC,2DAAD,CAAxC;AAAA,MAAQ4oJ,SAAR,YAAQA,SAAR;AAAA,MAAmBd,SAAnB,YAAmBA,SAAnB;;AACA,kBAAkB9nJ,mBAAO,CAAC,kGAAD,CAAzB;AAAA,MAAQy2H,KAAR,aAAQA,KAAR;;AAEA,SAAS8lC,aAAT,CAAuBloD,GAAvB,EAA4B37B,IAA5B,EAAkC;AAChC,MAAI27B,GAAG,CAACpuD,MAAJ,KAAe,GAAnB,EAAwB;AACtB,QAAIouD,GAAG,CAACpuD,MAAJ,KAAe,GAAnB,EAAwB;AACtB,YAAM,IAAI2iG,SAAJ,CAAcv0C,GAAG,CAACpuD,MAAJ,KAAe,GAAf,GAAqB,UAArB,GAAkCyyB,IAAhD,CAAN;AACD;;AAED,QAAI8jF,WAAW,GAAGnoD,GAAG,CAAChpF,OAAJ,CAAYxqC,GAAZ,CAAgB,cAAhB,CAAlB;;AACA,QAAI27K,WAAW,CAACv9I,WAAZ,GAA0BryB,OAA1B,CAAkC,kBAAlC,MAA0D,CAAC,CAA/D,EAAkE;AAChE,UAAI3F,IAAI,GAAGuF,IAAI,CAAC0G,KAAL,CAAWwlF,IAAX,CAAX;AACA,YAAM,IAAIkwE,SAAJ,CAAc3hK,IAAI,CAACqhK,MAAnB,CAAN;AACD;;AACD,UAAM,IAAIM,SAAJ,CAAclwE,IAAd,CAAN;AACD;AACF;;AAEM,eAAe+iD,IAAf,CAAoB50D,GAApB,EAAyB5gF,IAAzB,EAA+B;AACpC,MAAIyyF,IAAJ;AACA,MAAI27B,GAAJ;AAEA,MAAIvvH,CAAC,GAAG,IAAI1B,KAAJ,GAAYoyD,KAApB;;AAEA,MAAI;AACF6+D,OAAG,GAAG,MAAMoiB,KAAK,CAAC5vD,GAAD,EAAM;AACrB3kF,YAAM,EAAE,MADa;AAErB20I,UAAI,EAAErqI,IAAI,CAACC,SAAL,CAAexG,IAAf,CAFe;AAGrBolC,aAAO,EAAE;AACP,wBAAgB;AADT;AAHY,KAAN,CAAjB;AAOAqtD,QAAI,GAAG,MAAM27B,GAAG,CAAC37B,IAAJ,EAAb;AACD,GATD,CASE,OAAO31E,GAAP,EAAY;AACZ,UAAM,IAAI6lJ,SAAJ,CAAc,iBAAd,CAAN;AACD;;AAED2T,eAAa,CAACloD,GAAD,EAAM37B,IAAN,CAAb;;AAEA,MAAI;AACF27B,OAAG,GAAG7nH,IAAI,CAAC0G,KAAL,CAAWwlF,IAAX,CAAN;AACD,GAFD,CAEE,OAAO31E,GAAP,EAAY;AACZ;AACA,UAAM,IAAI6lJ,SAAJ,CAAc,YAAd,EAA4B;AAAE3jF,UAAI,EAAEyT;AAAR,KAA5B,CAAN;AACD;;AAED,MAAI27B,GAAG,CAACpuD,MAAJ,KAAe,IAAnB,EAAyB;AACvB3sC,WAAO,CAACsrE,GAAR,CACE,sBACE/d,GADF,GAEE,UAFF,GAGEr6E,IAAI,CAACC,SAAL,CAAexG,IAAf,EAAqB,IAArB,EAA2B,CAA3B,CAHF,GAIE,cAJF,GAKEuG,IAAI,CAACC,SAAL,CAAe4nH,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CANJ;AASA,UAAM,IAAIu0C,SAAJ,CAAcv0C,GAAG,CAACspB,WAAJ,IAAmBtpB,GAAG,CAACi0C,MAAvB,IAAiC,SAA/C,CAAN;AACD;;AAED,SAAOj0C,GAAG,CAACpuH,IAAX;AACD;AAEM,eAAew2K,UAAf,CAA0B51F,GAA1B,EAA+B5gF,IAA/B,EAAqColC,OAArC,EAA8C;AACnD,MAAIgpF,GAAJ;;AACA,MAAI;AACFA,OAAG,GAAG,MAAMoiB,KAAK,CAAC5vD,GAAD,EAAM;AACrB3kF,YAAM,EAAE,MADa;AAErB20I,UAAI,EAAEo/B,iDAAQ,CAACC,KAAT,GAAiBjwK,IAAjB,GAAwB+a,MAAM,CAACre,IAAP,CAAYsD,IAAZ,CAFT;AAGrBolC,aAAO;AACL,0BAAkBplC,IAAI,CAACrB,MADlB;AAEL,wBAAgB;AAFX,SAGFymC,OAHE;AAHc,KAAN,CAAjB;AASD,GAVD,CAUE,OAAOtoB,GAAP,EAAY;AACZ,UAAM,IAAI6lJ,SAAJ,CAAc,iBAAd,CAAN;AACD;;AAED,MAAItsI,MAAJ;;AACA,MAAI+3F,GAAG,CAACk2C,WAAR,EAAqB;AACnBjuI,UAAM,GAAGtb,MAAM,CAACre,IAAP,CAAY,MAAM0xH,GAAG,CAACk2C,WAAJ,EAAlB,CAAT;AACD,GAFD,MAEO;AACLjuI,UAAM,GAAG,MAAM+3F,GAAG,CAAC/3F,MAAJ,EAAf;AACD;;AAEDigJ,eAAa,CAACloD,GAAD,EAAM/3F,MAAM,CAAC9gB,QAAP,EAAN,CAAb;AAEA,SAAO8gB,MAAP;AACD;AAEM,SAASz7B,GAAT,CAAagmF,GAAb,EAAkB/rE,IAAlB,EAAwB;AAC7B,SAAO27H,KAAK,CAAC5vD,GAAD,EAAM/rE,IAAN,CAAL,CAAiByO,IAAjB,CAAsB8qG,GAAG,IAAIA,GAAG,CAAC37B,IAAJ,EAA7B,CAAP;AACD,C;;;;;;;;;;;;AC7FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AACA,MAAM93E,EAAE,GAAGZ,mBAAO,CAAC,4FAAD,CAAlB;;AAEA,IAAIi1H,KAAK,GAAG,IAAZ;AAEO,eAAeynC,SAAf,CAAyBz2C,EAAzB,EAA6B;AAClC,MAAI7lG,MAAM,CAACg2I,WAAP,IAAsB,CAACnwC,EAA3B,EAA+B;AAC7BgP,SAAK,GAAG;AAAE0nC,oBAAc,EAAE;AAAlB,KAAR;AACA,WAAO1nC,KAAP;AACD;;AAED,QAAM2D,QAAQ,GAAGh4H,EAAE,CAACjB,IAAH,CAAQiB,EAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAR,EAA6B,eAA7B,CAAjB;;AAEA,MAAI;AACFgP,SAAK,GAAGzoI,IAAI,CAAC0G,KAAL,CAAW,MAAM0N,EAAE,CAAC0B,QAAH,CAAYs2H,QAAZ,CAAjB,CAAR;AACD,GAFD,CAEE,OAAO1wH,CAAP,EAAU;AACV;AACA;AACA;AACA+sH,SAAK,GAAG;AAAEhP,QAAF;AAAMH,gBAAU,EAAEG;AAAlB,KAAR;AACD,GAfiC,CAiBlC;AACA;;;AACAgP,OAAK,CAAChP,EAAN,GAAWA,EAAX;AACA,SAAOgP,KAAP;AACD;AAEM,eAAe2nC,SAAf,CAAyB1I,UAAzB,EAAqC;AAAE2I,WAAS,GAAG;AAAd,IAAwB,EAA7D,EAAiE;AACtEr7K,QAAM,CAACC,MAAP,CAAcwzI,KAAd,EAAqBi/B,UAArB;;AAEA,MAAI,CAAC2I,SAAL,EAAgB;AACd;AACA,QAAIC,QAAQ,GAAGt7K,MAAM,CAACiS,IAAP,CAAYygK,UAAZ,EACZvyK,GADY,CACR+R,GAAG,IAAI;AACV,UAAIA,GAAG,KAAK,YAAR,IAAwBA,GAAG,KAAK,YAApC,EAAkD;AAChD,eAAO;AACL49I,iBAAO,EAAE,OADJ;AAEL1T,aAAG,EAAElqI,GAFA;AAGL84B,gBAAM,EAAE,OAHH;AAILruC,eAAK,EAAE+1K,UAAU,CAACxgK,GAAD,CAJZ;AAKL1F,mBAAS,EAAEo9J,kDAAS,CAACplG,IAAV;AALN,SAAP;AAOD;;AACD,aAAO,IAAP;AACD,KAZY,EAaZ3gE,MAbY,CAaLiH,CAAC,IAAIA,CAbA,CAAf;;AAeA,QAAIwwK,QAAQ,CAACl4K,MAAT,GAAkB,CAAtB,EAAyB;AACvB,YAAMinK,0DAAY,CAACiR,QAAD,CAAlB;AACD;AACF;;AAED,MAAI,CAAC7nC,KAAK,CAAC0nC,cAAX,EAA2B;AACzB,QAAI9H,SAAS,GAAGj0J,EAAE,CAACjB,IAAH,CAAQiB,EAAE,CAAC02H,YAAH,CAAgBrC,KAAK,CAAChP,EAAtB,CAAR,EAAmC,eAAnC,CAAhB;AACA,UAAMrlH,EAAE,CAACq1H,SAAH,CAAa4+B,SAAb,EAAwBroK,IAAI,CAACC,SAAL,CAAewoI,KAAf,CAAxB,CAAN;AACD;AACF;AAEM,SAAS8nC,WAAT,GAAuB;AAC5B9nC,OAAK,GAAG,IAAR;AACD;AAEM,SAAS+nC,QAAT,GAAoB;AACzB,SAAO/nC,KAAP;AACD;AAEM,SAASgoC,eAAT,CAAyBh3C,EAAzB,EAA6BH,UAA7B,EAAyC;AAC9C;AACA;AACA,SAAO;AACLG,MADK;AAELH,cAFK;AAGL,+BAA2B,IAHtB;AAIL,mCAA+B;AAJ1B,GAAP;AAMD;AAEM,eAAeo3C,SAAf,CAAyBj3C,EAAzB,EAA6B;AAClC,QAAM2S,QAAQ,GAAGh4H,EAAE,CAACjB,IAAH,CAAQiB,EAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAR,EAA6B,eAA7B,CAAjB;;AAEA,MAAI;AACF,WAAOz5H,IAAI,CAAC0G,KAAL,CAAW,MAAM0N,EAAE,CAAC0B,QAAH,CAAYs2H,QAAZ,CAAjB,CAAP;AACD,GAFD,CAEE,OAAO1wH,CAAP,EAAU;AACV,WAAO,IAAP;AACD;AACF,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMqlI,UAAU,GAAGvtI,mBAAO,CAAC,0GAAD,CAA1B;;AACA,MAAM6iH,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAApB,C,CAEA;;;AAEA,SAAS64D,GAAT,CAAaskG,IAAb,EAAmBC,IAAnB,EAAyB;AACvB,MAAIzqK,MAAM,GAAG,EAAb;;AACA,OAAK,IAAI8K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0/J,IAAI,CAACv4K,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC9K,UAAM,CAAClP,IAAP,CAAY,CAAC05K,IAAI,CAAC1/J,CAAD,CAAL,EAAU2/J,IAAI,CAAC3/J,CAAD,CAAd,CAAZ;AACD;;AACD,SAAO9K,MAAP;AACD;;AAEM,SAAS0qK,gBAAT,CAA0B18B,UAA1B,EAAsC28B,aAAtC,EAAqD;AAC1D,MAAIC,aAAa,GAAGC,+EAAoB,CAAC78B,UAAD,CAAxC;AACA,MAAI88B,gBAAgB,GAAGD,+EAAoB,CAACF,aAAD,CAA3C;AAEA,MAAII,YAAY,GAAG7kG,GAAG,CACpBr3E,MAAM,CAACkR,MAAP,CAAc6qK,aAAd,CADoB,EAEpB/7K,MAAM,CAACkR,MAAP,CAAc+qK,gBAAd,CAFoB,CAAtB;AAKA,MAAIz3B,OAAO,GAAGrF,UAAU,CAACh/I,GAAX,CAAe2/I,IAAI,IAAI;AACnC,QAAI4L,CAAC,GAAGwwB,YAAY,CAACpjK,IAAb,CAAkB4yI,CAAC,IAAI5L,IAAI,KAAK4L,CAAC,CAAC,CAAD,CAAjC,CAAR;AACA,WAAOA,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAN,GAAYA,CAAC,CAAC,CAAD,CAAb,GAAmB5L,IAA1B;AACD,GAHa,CAAd;AAKA,MAAIpO,KAAK,GAAGwqC,YAAY,CACrBr4K,MADS,CACFiH,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAD,IAAQ,IAAR,IAAgBA,CAAC,CAAC,CAAD,CAAD,IAAQ,IAD3B,EAET3K,GAFS,CAEL2K,CAAC,IAAIA,CAAC,CAAC,CAAD,CAFD,CAAZ;AAIA,SAAO05I,OAAO,CAACpqH,MAAR,CAAes3G,KAAf,CAAP;AACD;AAEM,SAASyqC,WAAT,CAAqBC,QAArB,EAA+B5/K,KAAK,GAAG,IAAI+K,IAAJ,EAAvC,EAAmD;AACxD/K,OAAK,GAAG82C,mDAAA,CAAa92C,KAAb,CAAR;AAEA,MAAIsjJ,IAAI,GAAG,IAAI/B,0DAAJ,CACTq+B,QAAQ,CAACt+B,EADA,EAET,MAFS,EAGTs+B,QAAQ,CAACz/K,KAHA,EAIT,IAJS,EAKT,IAAIsU,GAAJ,CAAQjR,MAAM,CAAC4kB,OAAP,CAAe;AAAExlB,QAAI,EAAE;AAAR,GAAf,CAAR,CALS,CAAX;AAOA,MAAIzC,KAAK,GAAGmjJ,IAAI,CAACjR,QAAL,EAAZ;;AAEA,MAAIlyI,KAAK,CAAC4c,IAAN,KAAe,MAAnB,EAA2B;AACzB,WAAO5c,KAAK,CAACyC,IAAb;AACD,GAFD,MAEO,IAAIzC,KAAK,CAAC4c,IAAN,KAAe,OAAnB,EAA4B;AACjC,QAAI/X,KAAK,GAAG7E,KAAK,CAACgI,QAAN,CAAelH,WAAf,CAA2B;AAAEjB,WAAF;AAASyE,UAAI,EAAE;AAAf,KAA3B,EAA+CD,OAA/C,EAAZ;;AAEA,QAAIQ,KAAK,CAAC4B,MAAN,GAAe,CAAnB,EAAsB;AACpB,UAAIhE,IAAI,GAAGoC,KAAK,CAAC,CAAD,CAAL,CAASpC,IAApB;AACA,aAAO88I,kEAAW,CAAC98I,IAAD,CAAlB;AACD;AACF;;AACD,SAAO,IAAP;AACD;AAEM,eAAei9K,kBAAf,CAAkC53C,EAAlC,EAAsC;AAC3C,MAAIA,EAAE,IAAI,IAAV,EAAgB;AACd,UAAM,IAAI7iI,KAAJ,CAAU,iCAAV,CAAN;AACD;;AAED,wBAAuB,MAAMwxI,sEAAQ,CACnCvgG,8DAAC,CAAC,WAAD,CAAD,CACGhvC,MADH,CACU;AAAE4gI;AAAF,GADV,EAEGhB,SAFH,CAEa,MAFb,CADmC,CAArC;AAAA,MAAY64C,MAAZ,mBAAM73K,IAAN;;AAKA,SAAO6jJ,6EAAQ,GAAGxvI,IAAX,CAAgBrK,IAAI,IAAIA,IAAI,CAACg2H,EAAL,KAAY63C,MAApC,CAAP;AACD;AAEM,eAAeC,kBAAf,CAAkC93C,EAAlC,EAAsC;AAC3C,yBAAuB,MAAM2O,sEAAQ,CACnCvgG,8DAAC,CAAC,WAAD,CAAD,CACGhvC,MADH,CACU;AAAE4gI;AAAF,GADV,EAEGhB,SAFH,CAEa,MAFb,CADmC,CAArC;AAAA,MAAY64C,MAAZ,oBAAM73K,IAAN;;AAMA,MAAI63K,MAAJ,EAAY;AACV;AACA;AACA,UAAM1tC,2CAAA,CAAW,OAAX,EAAoB0tC,MAApB,CAAN;AACD;;AAED,MAAIE,KAAK,GAAG,MAAMj0B,+EAAU,CAAC;AAC3BrJ,SAAK,EAAE,IADoB;AAE3BC,cAAU,EAAE,CACV;AAAErB,QAAE,EAAE,UAAN;AAAkB13G,WAAK,EAAE,MAAzB;AAAiCzpC,WAAK,EAAEwa,iEAAU;AAAlD,KADU,EAEV;AAAE2mI,QAAE,EAAE,UAAN;AAAkB13G,WAAK,EAAE,QAAzB;AAAmCzpC,WAAK,EAAE;AAA1C,KAFU,CAFe;AAM3ByiJ,WAAO,EAAE,CAAC;AAAEtB,QAAE,EAAE,eAAN;AAAuBnhJ,WAAK,EAAE8nI;AAA9B,KAAD;AANkB,GAAD,CAA5B;AASA,QAAMmK,oDAAA,CAAoB,WAApB,EAAiC;AAAEnK,MAAF;AAAMh2H,QAAI,EAAE+tK;AAAZ,GAAjC,CAAN;AAEA,SAAOl0B,6EAAQ,GAAGxvI,IAAX,CAAgBrK,IAAI,IAAIA,IAAI,CAACg2H,EAAL,KAAY+3C,KAApC,CAAP;AACD;AAEM,eAAeC,WAAf,CAA2B;AAAEh4C,IAAF;AAAMjoI,OAAN;AAAa2iJ,YAAb;AAAyB78G;AAAzB,CAA3B,EAA6D;AAClE,MAAI68G,UAAU,IAAI,IAAlB,EAAwB;AACtB,QAAI1wI,IAAI,GAAG,MAAM4tK,kBAAkB,CAAC53C,EAAD,CAAnC;;AACA,QAAIh2H,IAAI,IAAI,IAAZ,EAAkB;AAChB,YAAM,IAAI7M,KAAJ,CAAU,4BAAV,CAAN;AACD;;AACDu9I,cAAU,GAAG1wI,IAAI,CAAC4K,SAAL,GAAiB8lI,UAA9B;AACD;;AAED,8BAAyB68B,+EAAoB,CAAC78B,UAAD,CAA7C;AAAA,MAAYi9B,QAAZ,yBAAMh9K,IAAN;;AAEA,yBAAyB,MAAMg0I,sEAAQ,CACrCvgG,8DAAC,CAAC,WAAD,CAAD,CACGhvC,MADH,CACU;AAAE4gI;AAAF,GADV,EAEGhB,SAFH,CAEa,WAFb,CADqC,CAAvC;AAAA,MAAY5wH,QAAZ,oBAAMpO,IAAN,CAXkE,CAiBlE;;;AACA,MAAI23K,QAAJ,EAAc;AACZ,QAAIM,WAAW,GAAGP,WAAW,CAC3BC,QAD2B,EAE3B5/K,KAAK,GAAGA,KAAK,CAACqW,QAAD,CAAR,GAAqB,IAAItL,IAAJ,EAFC,CAA7B;;AAKA,QAAIm1K,WAAW,KAAK7pK,QAApB,EAA8B;AAC5B;AACA;AACA,UAAI8pK,EAAE,GAAG,MAAM/tC,yCAAA,CACb,6EADa,EAEb,CAACnK,EAAD,CAFa,CAAf;AAKA,YAAMmK,0CAAA,CACJ,qBADI,EAEJtsG,KAAK,GACD;AACEmiG,UAAE,EAAEk4C,EAAE,CAACl4C,EADT;AAEEm4C,sBAAc,EAAE7xB,0DAAU,CAAC2xB,WAAD,CAF5B;AAGEG,yBAAiB,EAAEt1K,IAAI,CAACoE,GAAL;AAHrB,OADC,GAMD;AACE84H,UAAE,EAAEk4C,EAAE,CAACl4C,EADT;AAEEq4C,uBAAe,EAAE/xB,0DAAU,CAAC2xB,WAAD,CAF7B;AAGEK,0BAAkB,EAAEJ,EAAE,CAACE;AAHzB,OARA,CAAN;AAcD;AACF;AACF,C,CAED;;AAEO,eAAeG,cAAf,CAA8B;AAAEr4K,UAAF;AAAYw6I,YAAU,GAAG;AAAzB,IAAgC,EAA9D,EAAkE;AACvE,MAAI89B,UAAU,GAAIt4K,QAAQ,IAAIA,QAAQ,CAAC8/H,EAAtB,IAA6BpD,IAAI,CAACgX,MAAL,EAA9C;;AAEA,+BAAyB2jC,+EAAoB,CAAC78B,UAAD,CAA7C;AAAA,MAAYi9B,QAAZ,0BAAMh9K,IAAN;;AACA,MAAIg9K,QAAQ,IAAI,IAAhB,EAAsB;AACpB,UAAM,IAAIx6K,KAAJ,CAAU,mDAAV,CAAN;AACD;;AACD,MAAIw6K,QAAQ,CAACz/K,KAAT,IAAkB,IAAtB,EAA4B;AAC1B,UAAM,IAAIiF,KAAJ,CAAU,kBAAV,CAAN;AACD;;AAED,MAAIiR,QAAQ,GAAGspK,WAAW,CAACC,QAAD,CAA1B;AACA,MAAIc,YAAY,GAAGrqK,QAAQ,GAAGk4I,0DAAU,CAACl4I,QAAD,CAAb,GAA0B,IAArD,CAZuE,CAcvE;;AACA,MAAIypK,MAAJ;AACAA,QAAM,GAAG,MAAM/zB,+EAAU,CAAC;AACxBrJ,SAAK,EAAE,IADiB;AAExBC,cAFwB;AAGxBC,WAAO,EAAE,CAAC;AAAEtB,QAAE,EAAE,eAAN;AAAuBnhJ,WAAK,EAAEsgL;AAA9B,KAAD;AAHe,GAAD,CAAzB;AAMA,MAAItxK,GAAG,GAAGpE,IAAI,CAACoE,GAAL,EAAV;AACA,MAAIwxK,UAAU,GAAG,MAAMvuC,kDAAA,CAAkB,qBAAlB,EAAyC;AAC9DwuC,eAAW,EAAEH,UADiD;AAE9DH,mBAAe,EAAEI,YAF6C;AAG9DH,sBAAkB,EAAEpxK,GAH0C;AAI9DixK,kBAAc,EAAEM,YAJ8C;AAK9DL,qBAAiB,EAAElxK;AAL2C,GAAzC,CAAvB;AAQA,MAAI84H,EAAE,GAAG,MAAMmK,oDAAA,CAAoB,WAApB,kCACVjqI,QADU;AAEb8/H,MAAE,EAAEw4C,UAFS;AAGbxuK,QAAI,EAAE6tK;AAHO,KAAf;AAMA,SAAOW,UAAP;AACD,C,CAED;;AAEO,eAAeI,cAAf,CAA8B;AAAE14K,UAAF;AAAYw6I,YAAZ;AAAwBm+B;AAAxB,CAA9B,EAAuE;AAC5E,MAAI34K,QAAQ,CAAC8J,IAAb,EAAmB;AACjB,UAAM,IAAI7M,KAAJ,CAAU,0CAAV,CAAN;AACD,GAH2E,CAK5E;;;AACA,MAAI6M,IAAJ,CAN4E,CAQ5E;AACA;;AACA,MAAI0wI,UAAJ,EAAgB;AACd,iCAAyB68B,+EAAoB,CAAC78B,UAAD,CAA7C;AAAA,QAAYi9B,QAAZ,0BAAMh9K,IAAN;;AACA,QAAIg9K,QAAQ,IAAIA,QAAQ,CAACz/K,KAAT,IAAkB,IAAlC,EAAwC;AACtC,YAAM,IAAIiF,KAAJ,CAAU,kBAAV,CAAN;AACD,KAJa,CAMd;AACA;;;AACA6M,QAAI,GAAG,MAAM4tK,kBAAkB,CAAC13K,QAAQ,CAAC8/H,EAAV,CAA/B;;AAEA,QAAIh2H,IAAI,IAAI,IAAZ,EAAkB;AAChB;AACA;AACA;AACA;AACAA,UAAI,GAAG,MAAM8tK,kBAAkB,CAAC53K,QAAQ,CAAC8/H,EAAV,CAA/B;AACD;AACF;;AAED,QAAMgO,4DAAa,CAAC,YAAY;AAC9B,QAAI0M,UAAJ,EAAgB;AACd,UAAIo+B,aAAa,GAAG9uK,IAAI,CAAC4K,SAAL,GAAiB8lI,UAArC;AACA,UAAI28B,aAAa,GAAGD,gBAAgB,CAAC0B,aAAD,EAAgBp+B,UAAhB,CAApC;AAEA,YAAMqJ,+EAAU,CAAC;AAAE/jB,UAAE,EAAEh2H,IAAI,CAACg2H,EAAX;AAAe0a,kBAAU,EAAE28B;AAA3B,OAAD,CAAhB,CAJc,CAMd;;AACA,UAAI0B,SAAS,GAAG;AAAA,YAAGjkK,IAAH,QAAGA,IAAH;AAAA,YAAYksH,MAAZ;;AAAA,eAAyBA,MAAzB;AAAA,OAAhB,CAPc,CASd;AACA;AACA;AACA;;;AACA,UACE63C,aAAa,IACb,CAACjlH,iDAAS,CACRklH,aAAa,CAACzkK,IAAd,CAAmB4Y,CAAC,IAAIA,CAAC,CAAC0U,KAAF,KAAY,SAApC,CADQ,EAERm3I,aAAa,CAACzkK,IAAd,CAAmB4Y,CAAC,IAAIA,CAAC,CAAC0U,KAAF,KAAY,SAApC,CAFQ,CADV,IAKA,CAACiyB,iDAAS,CACRmlH,SAAS,CAACD,aAAa,CAACzkK,IAAd,CAAmB4Y,CAAC,IAAIA,CAAC,CAAC0U,KAAF,KAAY,MAApC,CAAD,CADD,EAERo3I,SAAS,CAAC1B,aAAa,CAAChjK,IAAd,CAAmB4Y,CAAC,IAAIA,CAAC,CAAC0U,KAAF,KAAY,MAApC,CAAD,CAFD,CANZ,EAUE;AACA,cAAMq2I,WAAW,CAAC;AAChBh4C,YAAE,EAAE9/H,QAAQ,CAAC8/H,EADG;AAEhB0a,oBAAU,EAAE28B,aAFI;AAGhBx5I,eAAK,EAAE;AAHS,SAAD,CAAjB;AAKD;AACF,KA9BD,MA8BO,IAAIg7I,aAAJ,EAAmB;AACxB,YAAMb,WAAW,CAAC;AAAEh4C,UAAE,EAAE9/H,QAAQ,CAAC8/H,EAAf;AAAmBniG,aAAK,EAAE;AAA1B,OAAD,CAAjB;AACD;;AAED,UAAMssG,oDAAA,CAAoB,WAApB,EAAiCjqI,QAAjC,CAAN;AACD,GApCkB,CAAnB;AAqCD;AAEM,eAAe84K,cAAf,CAA8B;AAAEh5C;AAAF,CAA9B,EAAsC;AAC3C,yBAAuB,MAAM2O,sEAAQ,CACnCvgG,8DAAC,CAAC,WAAD,CAAD,CACGhvC,MADH,CACU;AAAE4gI;AAAF,GADV,EAEGhB,SAFH,CAEa,MAFb,CADmC,CAArC;AAAA,MAAY64C,MAAZ,oBAAM73K,IAAN;;AAMA,QAAMguI,4DAAa,CAAC,YAAY;AAC9B,UAAM7D,2CAAA,CAAW,OAAX,EAAoB0tC,MAApB,CAAN;AACA,UAAM1tC,2CAAA,CAAW,WAAX,EAAwBnK,EAAxB,CAAN;AACD,GAHkB,CAAnB;AAID;AAEM,eAAei5C,YAAf,CAA4B;AAAEj5C;AAAF,CAA5B,EAAoC;AACzC,SAAOg4C,WAAW,CAAC;AACjBh4C,MADiB;AAEjBjoI,SAAK,EAAEqW,QAAQ,IAAI;AACjB,aAAOygC,gDAAA,CAAU8c,gEAAS,CAACv9C,QAAD,CAAnB,EAA+B,CAA/B,CAAP;AACD;AAJgB,GAAD,CAAlB;AAMD,C,CAED;AACA;;AACO,SAAS8qK,uBAAT,CAAiC;AAAEh5K;AAAF,CAAjC,EAA+C,CAAE;AAEjD,SAASi5K,iBAAT,GAA6B;AAClC,SAAOC,sEAAa,EAApB;AACD;AAEM,eAAeC,gBAAf,CAAgC;AAAEp7K,QAAF;AAAUmC;AAAV,CAAhC,EAAmD;AACxD,MAAI0N,KAAK,GAAG4qI,iFAAsB,CAACz6I,MAAD,CAAlC;;AAEA,MAAI;AACF,QAAIiC,QAAQ,GAAG,IAAIy4I,yDAAJ,CAAc;AAAE/uI,YAAM,EAAEkE;AAAV,KAAd,CAAf;AAEA,WAAO5N,QAAQ,CACZlH,WADI,CACQ;AAAEjB,WAAK,EAAE82C,mDAAA,CAAa,IAAI/rC,IAAJ,EAAb,CAAT;AAAmCtG,UAAI,EAAE4D;AAAzC,KADR,EAEJ7D,OAFI,GAGJb,GAHI,CAGAf,IAAI,IAAI88I,kEAAW,CAAC98I,IAAI,CAACA,IAAN,CAHnB,CAAP;AAID,GAPD,CAOE,OAAOmiB,GAAP,EAAY;AACZuyH,mFAAiB,CAACpxI,MAAD,CAAjB;AACA,UAAM6e,GAAN;AACD;AACF,C,CAED;;AAEA,SAASw8J,YAAT,CAAsBtvK,IAAtB,EAA4B;AAC1B,cACEA,IAAI,YAAYlB,qDAAhB,GAAuBkB,IAAI,CAAC4K,SAAL,EAAvB,GAA0CsuI,sEAAS,CAACE,IAAV,CAAep5I,IAAf,CAD5C;AAAA,MAAM2wI,OAAN,SAAMA,OAAN;AAAA,MAAeD,UAAf,SAAeA,UAAf;;AAGA,MAAIC,OAAO,IAAIA,OAAO,CAACtmI,IAAR,CAAatV,CAAC,IAAIA,CAAC,CAACs6I,EAAF,KAAS,eAA3B,CAAf,EAA4D;AAC1D,QAAIm/B,UAAU,GAAG79B,OAAO,CAACtmI,IAAR,CAAatV,CAAC,IAAIA,CAAC,CAACs6I,EAAF,KAAS,eAA3B,EAA4CnhJ,KAA7D;;AAEA,QAAIsgL,UAAJ,EAAgB;AACd,UAAIjmB,KAAK,GAAGglB,+EAAoB,CAAC78B,UAAD,CAAhC;AAEA,UAAI6+B,QAAQ,GAAG7+B,UAAU,CAAC95I,SAAX,CAAqBqsB,CAAC,IAAIA,CAAC,KAAKslI,KAAK,CAAC9vB,KAAtC,CAAf;AACA,UAAI+2C,UAAU,GAAG9+B,UAAU,CAAC95I,SAAX,CAAqBqsB,CAAC,IAAIA,CAAC,KAAKslI,KAAK,CAACnxB,OAAtC,CAAjB;AACA,UAAIq4C,SAAS,GAAG/+B,UAAU,CAAC95I,SAAX,CAAqBqsB,CAAC,IAAIA,CAAC,KAAKslI,KAAK,CAAC3uJ,MAAtC,CAAhB;AACA,UAAI81K,OAAO,GAAGh/B,UAAU,CAAC95I,SAAX,CAAqBqsB,CAAC,IAAIA,CAAC,KAAKslI,KAAK,CAAC53J,IAAtC,CAAd;AAEAwvI,kDAAA,CACE,gHADF,EAEE,CACEquC,UADF,EAEEe,QAAQ,KAAK,CAAC,CAAd,GAAkB,IAAlB,GAA0B,KAAIA,QAAS,GAFzC,EAGEC,UAAU,KAAK,CAAC,CAAhB,GAAoB,IAApB,GAA4B,KAAIA,UAAW,GAH7C,EAIEC,SAAS,KAAK,CAAC,CAAf,GAAmB,IAAnB,GAA2B,KAAIA,SAAU,GAJ3C,EAKEC,OAAO,KAAK,CAAC,CAAb,GAAiB,IAAjB,GAAyB,KAAIA,OAAQ,GALvC,CAFF;AAUD;AACF;AACF;;AAED,SAASC,cAAT,GAA0B;AACxB;AACAxvC,iDAAA,CAAe,MAAM;AACnB0Z,iFAAQ,GAAGh5I,OAAX,CAAmBb,IAAI,IAAI;AACzBsvK,kBAAY,CAACtvK,IAAD,CAAZ;AACD,KAFD;AAGD,GAJD;AAMA,SAAO25I,8DAAe,CAACC,WAAD,CAAtB;AACD;;AAED,SAASA,WAAT,CAAqBK,SAArB,EAAgCC,SAAhC,EAA2C;AACzC,MAAI01B,KAAK,GAAG,KAAZ;AACA11B,WAAS,CAACr5I,OAAV,CAAkB,CAACuT,KAAD,EAAQshH,KAAR,KAAkB;AAClC,QAAIA,KAAK,KAAK,OAAd,EAAuB;AACrBk6C,WAAK,GAAG,IAAR;AACAx7J,WAAK,CAACvT,OAAN,CAAcs5I,QAAQ,IAAI;AACxBm1B,oBAAY,CAACn1B,QAAD,CAAZ;AACD,OAFD;AAGD;AACF,GAPD;AAQD,C,CAED;AACA;;;AAEA,eAAe01B,0BAAf,CAA0C;AAAE75C;AAAF,CAA1C,EAAkD;AAChD,yBAAe,MAAM2O,sEAAQ,CAC3BvgG,8DAAC,CAAC,WAAD,CAAD,CACGhvC,MADH,CACU;AAAE4gI;AAAF,GADV,EAEGlB,MAFH,CAEU,GAFV,CAD2B,CAA7B;AAAA,MAAM9+H,IAAN,oBAAMA,IAAN;;AAKA,MAAIE,QAAQ,GAAGF,IAAI,CAAC,CAAD,CAAnB;;AACA,MAAIE,QAAQ,IAAI,IAAZ,IAAoBA,QAAQ,CAACs3J,QAAT,IAAqB,IAA7C,EAAmD;AACjD;AACD;;AAED,MAAIjyB,WAAW,GAAG;AAChB9C,SAAK,EAAEviI,QAAQ,CAACq3J,MADA;AAEhBn2B,WAAO,EAAElhI,QAAQ,CAACs3J,QAFF;AAGhB5zJ,UAAM,EAAEk2K,6EAAkB,CAAC55K,QAAQ,CAACu3J,OAAV,CAHV;AAIhB98J,QAAI,EAAEuF,QAAQ,CAACk3J,SAJC;AAKhBl3J,YAAQ,EAAEA,QAAQ,CAAC8/H,EALH;AAMhB0J,WAAO,EAAE;AANO,GAAlB;;AASA,MAAInE,WAAW,CAACnE,OAAhB,EAAyB;AACvB,UAAMX,uEAAe,CAAC8E,WAAW,CAACnE,OAAb,EAAsB,CAACmE,WAAD,CAAtB,CAArB;AACD;AACF,C,CAED;;;AAEO,eAAew0C,uBAAf,CAAuCC,WAAvC,EAAoD;AACzD;AACA,yBAA0B,MAAMrrC,sEAAQ,CACtCvgG,8DAAC,CAAC,WAAD,CAAD,CACGhvC,MADH,CACU;AAAEi4J,aAAS,EAAE,KAAb;AAAoB,uBAAmB;AAAvC,GADV,EAEGv4B,MAFH,CAEU,GAFV,CADsC,CAAxC;AAAA,MAAY/+H,SAAZ,oBAAMC,IAAN;;AAKA,yBAA6B,MAAM2uI,sEAAQ,CACzCsrC,kFAAuB,CAACl6K,SAAD,CADkB,CAA3C;AAAA,MAAYm6K,YAAZ,oBAAMl6K,IAAN;;AAGA,MAAIm6K,QAAQ,GAAG,IAAInnK,GAAJ,CAAQknK,YAAY,CAAC96K,MAAb,CAAoBw9C,OAApB,EAA6BlhD,GAA7B,CAAiCi8I,GAAG,IAAIA,GAAG,CAACz3I,QAA5C,CAAR,CAAf;AAEA,MAAIk6K,YAAY,GAAG,EAAnB;AACA,MAAIC,OAAO,GAAG,KAAd;;AAEA,OAAK,IAAIn6K,QAAT,IAAqBH,SAArB,EAAgC;AAC9B,QAAIigE,MAAM,GAAGs6G,oEAAS,CACpBp6K,QAAQ,CAACk3J,SADW,EAEpBl3J,QAAQ,CAACm3J,SAFW,EAGpB8iB,QAAQ,CAACxpK,GAAT,CAAazQ,QAAQ,CAAC8/H,EAAtB,CAHoB,CAAtB;;AAMA,QAAIhgE,MAAM,KAAK,MAAf,EAAuB;AACrB,UAAI9/D,QAAQ,CAACuB,KAAb,EAAoB;AAClB;AACA,YAAIvB,QAAQ,CAACuB,KAAT,CAAeoN,SAAnB,EAA8B;AAC5B,cAAI;AACF,kBAAMmpK,WAAW,CAAC;AAAEh4C,gBAAE,EAAE9/H,QAAQ,CAAC8/H;AAAf,aAAD,CAAjB;AACD,WAFD,CAEE,OAAOljH,GAAP,EAAY,CACZ;AACA;AACD;AACF,SAPD,MAOO;AACL,cAAI5c,QAAQ,CAACuB,KAAT,GAAiBiR,iEAAU,EAA/B,EAAmC;AACjC;AACA,kBAAMkmK,cAAc,CAAC;AACnB14K,sBAAQ,EAAE;AAAE8/H,kBAAE,EAAE9/H,QAAQ,CAAC8/H,EAAf;AAAmBq3B,yBAAS,EAAE;AAA9B;AADS,aAAD,CAApB;AAGD;AACF;AACF;AACF,KAnBD,MAmBO,IACL,CAACr3F,MAAM,KAAK,KAAX,IAAoBA,MAAM,KAAK,QAAhC,KACA9/D,QAAQ,CAACo3J,iBADT,IAEAp3J,QAAQ,CAACs3J,QAHJ,EAIL;AACA;AACA,UAAIwiB,WAAJ,EAAiB;AACf,cAAMH,0BAA0B,CAAC;AAAE75C,YAAE,EAAE9/H,QAAQ,CAAC8/H;AAAf,SAAD,CAAhC;AAEAq6C,eAAO,GAAG,IAAV;AACD,OAJD,MAIO;AACLD,oBAAY,CAAC58K,IAAb,CAAkB0C,QAAQ,CAACq3J,MAA3B;AACD;AACF;AACF;;AAED,MAAI6iB,YAAY,CAACz7K,MAAb,GAAsB,CAA1B,EAA6B;AAC3B2oJ,cAAU,CAACvnF,IAAX,CAAgB,mBAAhB,EAAqC;AAAE8kE,YAAM,EAAEu1C;AAAV,KAArC;AACD,GAFD,MAEO,IAAIC,OAAJ,EAAa;AAClB;AACA;AACA;AACA;AACA/yB,cAAU,CAACvnF,IAAX,CAAgB,YAAhB,EAA8B;AAC5BjrD,UAAI,EAAE,SADsB;AAE5BwvI,YAAM,EAAE,CAAC,cAAD,CAFoB;AAG5Bi2B,kBAAY,EAAE;AAHc,KAA9B;AAKD;AACF,C,CAED;;AACA,IAAIntB,GAAG,GAAGM,sDAAS,EAAnB;AAEAN,GAAG,CAACnxJ,MAAJ,CAAW,iBAAX,EAA8B2hK,0DAAO,CAACC,uDAAQ,CAAC0a,cAAD,CAAT,CAArC;AACAnrB,GAAG,CAACnxJ,MAAJ,CAAW,iBAAX,EAA8B2hK,0DAAO,CAACC,uDAAQ,CAAC+a,cAAD,CAAT,CAArC;AACAxrB,GAAG,CAACnxJ,MAAJ,CAAW,iBAAX,EAA8B2hK,0DAAO,CAACC,uDAAQ,CAACmb,cAAD,CAAT,CAArC;AACA5rB,GAAG,CAACnxJ,MAAJ,CAAW,yBAAX,EAAsC2hK,0DAAO,CAACC,uDAAQ,CAACob,YAAD,CAAT,CAA7C;AACA7rB,GAAG,CAACnxJ,MAAJ,CACE,2BADF,EAEE2hK,0DAAO,CAACC,uDAAQ,CAACgc,0BAAD,CAAT,CAFT;AAIAzsB,GAAG,CAACnxJ,MAAJ,CACE,4BADF,EAEE2hK,0DAAO,CAAC,MAAMmc,uBAAuB,CAAC,IAAD,CAA9B,CAFT;AAIA3sB,GAAG,CAACnxJ,MAAJ,CAAW,oCAAX,EAAiDi9K,uBAAjD;AACA9rB,GAAG,CAACnxJ,MAAJ,CAAW,mBAAX,EAAgCk9K,iBAAhC;AACA/rB,GAAG,CAACnxJ,MAAJ,CAAW,6BAAX,EAA0Co9K,gBAA1C;AAEAjsB,GAAG,CAACH,OAAJ,CAAY0sB,cAAZ;AAEAvsB,GAAG,CAACN,MAAJ,CAAW7hI,EAAX,CAAc,MAAd,EAAsB,CAAC;AAAEnW,MAAF;AAAQ0lK;AAAR,CAAD,KAAuB;AAC3C,MAAIC,aAAa,GACf3lK,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,OAA/B,IAA0CA,IAAI,KAAK,cADrD;;AAGA,MAAI2lK,aAAa,IAAIzrC,+CAAA,EAArB,EAAuC;AACrC,0BAA0BA,+CAAA,EAA1B;AAAA,QAAM0rC,eAAN,mBAAMA,eAAN;;AAEA,QAAIA,eAAe,KAAKhoK,iEAAU,EAAlC,EAAsC;AACpCq7H,mEAAU,CAAC,MAAMgsC,uBAAuB,CAACjlK,IAAI,KAAK,SAAV,CAA9B,CAAV;AAEAk6H,sDAAA,CAAgB;AAAE0rC,uBAAe,EAAEhoK,iEAAU;AAA7B,OAAhB;AACD;AACF;AACF,CAbD;AAee06I,kEAAf,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACphBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMxwB,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAApB;;AAEA,SAAS4gK,SAAT,CAAmB18K,MAAnB,EAA2B;AACzB,MAAIiC,QAAQ,GAAG,IAAIy4I,wDAAJ,CAAc;AAAE/uI,UAAM,EAAE8uI,gFAAsB,CAACz6I,MAAD;AAAhC,GAAd,CAAf;AACA,SAAOiC,QAAQ,CACZlH,WADI,CACQ;AAAEwD,QAAI,EAAE;AAAR,GADR,EAEJD,OAFI,GAGJb,GAHI,CAGAmzC,CAAC,IAAIA,CAAC,CAACl0C,IAHP,CAAP;AAID;;AAED,eAAekmI,eAAf,CAA+BlmI,IAA/B,EAAqCymI,OAArC,EAA8C;AAC5C,wBAAe,MAAMuN,sEAAQ,CAC3BvgG,6DAAC,CAAC,cAAD,CAAD,CACGhvC,MADH,CACU;AACNgiI,WADM;AAENlhI,YAAQ,EAAE,IAFJ;AAGN;AACA,2BAAuB,IAJjB;AAKN0kJ,QAAI,EAAE,CACJ;AAAEjqJ,UAAI,EAAE;AAAEsqJ,YAAI,EAAEp2G,gDAAA,CAAUl0C,IAAV,EAAgB,CAAhB;AAAR;AAAR,KADI,EAEJ;AAAEA,UAAI,EAAE;AAAEuqJ,YAAI,EAAEr2G,gDAAA,CAAUl0C,IAAV,EAAgB,CAAhB;AAAR;AAAR,KAFI;AALA,GADV,EAWGmkI,MAXH,CAWU,GAXV,EAYGrlI,OAZH,CAYW;AAAEq7I,UAAM,EAAE;AAAV,GAZX,CAD2B,CAA7B;AAAA,MAAM90I,IAAN,mBAAMA,IAAN;;AAeA,SAAOA,IAAP;AACD;;AAED,SAAS46K,OAAT,CAAiBC,IAAjB,EAAuBC,IAAvB,EAA6B;AAC3B,MAAIC,OAAO,GAAG3zK,IAAI,CAACuF,GAAL,CAASkiC,yDAAA,CAAmB8c,gEAAS,CAACkvH,IAAD,CAA5B,EAAoClvH,gEAAS,CAACmvH,IAAD,CAA7C,CAAT,CAAd,CAD2B,CAG3B;AACA;AACA;;AACA,SAAO,KAAKC,OAAO,GAAG,CAAf,CAAP;AACD;;AAEM,SAASC,cAAT,CAAwBC,SAAxB,EAAmCh9K,MAAnC,EAA2Ci9K,gBAAgB,GAAG,GAA9D,EAAmE;AACxED,WAAS,GAAG,CAAC,GAAGA,SAAJ,EAAexiL,OAAf,EAAZ;AACA,MAAI0iL,SAAS,GAAGF,SAAS,CAAC,CAAD,CAAzB;AACA,MAAIG,MAAM,GAAGH,SAAS,CAACt6K,KAAV,CAAgB,CAAhB,CAAb;AACA,MAAIZ,SAAS,GAAG,EAAhB;;AAEA,OAAK,IAAIi1I,KAAT,IAAkBmmC,SAAS,CAACx6C,YAA5B,EAA0C;AACxC,QAAIyZ,SAAS,GAAGC,8EAAwB,CAACrF,KAAK,CAACpxI,MAAP,CAAxC;AACA,QAAI6+H,KAAK,GAAGuS,KAAK,CAACvS,KAAlB;AACA,QAAIrB,OAAO,GAAG4T,KAAK,CAAC5T,OAApB;AAEA,QAAIw4C,KAAK,GAAGwB,MAAM,CAAC1/K,GAAP,CAAW2/K,KAAK,IAAI;AAC9B,UAAIxkB,OAAO,GAAGwkB,KAAK,CAAC16C,YAAN,CAAmBtsH,IAAnB,CACZ2X,CAAC,IACCA,CAAC,CAACpoB,MAAF,IAAYoxI,KAAK,CAACpxI,MAAN,GAAew2I,SAA3B,IACApuH,CAAC,CAACpoB,MAAF,IAAYoxI,KAAK,CAACpxI,MAAN,GAAew2I,SAHjB,CAAd;AAKAyc,aAAO,GAAGA,OAAO,IAAIA,OAAO,CAACp0B,KAAR,KAAkBA,KAA7B,GAAqCo0B,OAArC,GAA+C,IAAzD;;AAEA,UAAIA,OAAJ,EAAa;AACX,eAAO;AAAE7hB,eAAK,EAAE6hB,OAAT;AAAkBykB,cAAI,EAAEV,OAAO,CAACS,KAAK,CAAC1gL,IAAP,EAAak8J,OAAO,CAACl8J,IAArB;AAA/B,SAAP;AACD;;AACD,aAAO,IAAP;AACD,KAZW,CAAZ;;AAcA,QAAIi/K,KAAK,CAACjzK,OAAN,CAAc,IAAd,MAAwB,CAAC,CAA7B,EAAgC;AAC9B;AACD;;AAED,QAAI20K,IAAI,GAAG1B,KAAK,CAAChhL,MAAN,CACT,CAACoyB,KAAD,EAAQlT,KAAR,KAAkBkT,KAAK,GAAGlT,KAAK,CAACwjK,IADvB,EAETV,OAAO,CAACO,SAAS,CAACxgL,IAAX,EAAiBq6I,KAAK,CAACr6I,IAAvB,CAFE,CAAX;AAKA,QAAI4gL,WAAW,GAAG3B,KAAK,CAAChhL,MAAN,CAChB,CAAC4iL,KAAD,EAAQ1jK,KAAR,KAAkB0jK,KAAK,IAAI1jK,KAAK,CAACk9H,KAAN,CAAYpxI,MAAZ,KAAuBoxI,KAAK,CAACpxI,MADxC,EAEhB,IAFgB,CAAlB;AAKA7D,aAAS,CAACvC,IAAV,CAAe;AACb89K,UADa;AAEb13K,YAAM,EAAEoxI,KAAK,CAACpxI,MAFD;AAGbw9H,aAAO,EAAE4T,KAAK,CAAC5T,OAHF;AAIbqB,WAAK,EAAEuS,KAAK,CAACvS,KAJA;AAKb9nI,UAAI,EAAEsD,MALO;AAMb;AACA;AACAw9K,eAAS,EAAEH,IAAI,KAAKL,SAAS,CAACt8K,MARjB;AASb48K;AATa,KAAf;AAWD;;AAED,SAAOx7K,SAAP;AACD;;AAED,eAAe27K,mBAAf,CACEC,SADF,EAEEC,OAFF,EAGEC,UAHF,EAIEn7C,SAJF,EAKEw6C,gBALF,EAME;AACA,MAAIn7K,SAAS,GAAG,EAAhB;AAEA,MAAIyX,CAAC,GAAG,CAAR;;AACA,OAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGokK,OAApB,EAA6BpkK,CAAC,EAA9B,EAAkC;AAChC,QAAIzf,KAAK,GAAG82C,gDAAA,CAAU8sI,SAAV,EAAqBnkK,CAArB,CAAZ;AACA,QAAIvZ,MAAJ;;AACA,QAAI,OAAO49K,UAAP,KAAsB,UAA1B,EAAsC;AACpC59K,YAAM,GAAG49K,UAAU,CAAC9jL,KAAD,CAAnB;;AAEA,UAAIkG,MAAM,KAAK,KAAf,EAAsB;AACpB;AACA;AACD;AACF,KAPD,MAOO;AACLA,YAAM,mCAAQ49K,UAAR;AAAoB9jL;AAApB,QAAN;AACD,KAZ+B,CAchC;;;AACAkG,UAAM,CAAClG,KAAP,GAAe0/I,kEAAW,CAACx5I,MAAM,CAAClG,KAAR,CAA1B;AAEA,QAAIiI,IAAI,GAAG,EAAX;AACA,QAAIjD,KAAK,GAAG49K,SAAS,CAAC18K,MAAD,CAArB;;AACA,SAAK,IAAItD,IAAT,IAAiBoC,KAAjB,EAAwB;AACtBiD,UAAI,CAACxC,IAAL,CAAU;AACR7C,YAAI,EAAE88I,kEAAW,CAAC98I,IAAD,CADT;AAERgmI,oBAAY,EAAE,MAAME,eAAe,CAAClmI,IAAD,EAAO+lI,SAAP;AAF3B,OAAV;AAID;;AAED3gI,aAAS,GAAGA,SAAS,CAAC41B,MAAV,CACVqlJ,cAAc,CAACh7K,IAAD,EAAO/B,MAAP,EAAei9K,gBAAf,CADJ,CAAZ;AAGD;;AACD,SAAOn7K,SAAP;AACD;;AAED,eAAe+7K,MAAf,CAAsBz+K,SAAtB,EAAiCqjI,SAAjC,EAA4C;AAC1C,SAAOg7C,mBAAmB,CACxB7sI,iDAAA,CAAW8c,gEAAS,CAACtuD,SAAD,CAApB,EAAiC,CAAjC,CADwB,EAExB,IAAI,CAFoB,EAGxB;AAAEwR,aAAS,EAAE;AAAb,GAHwB,EAIxB6xH,SAJwB,CAA1B;AAMD;;AAED,eAAeq7C,WAAf,CAA2B1+K,SAA3B,EAAsCqjI,SAAtC,EAAiD;AAC/C,SAAOg7C,mBAAmB,EACxB;AACA;AACA7sI,mDAAA,CAAW8c,gEAAS,CAACtuD,SAAD,CAApB,EAAiC,CAAjC,CAHwB,EAIxB,IAAI,CAJoB,EAKxB;AAAEwR,aAAS,EAAE,QAAb;AAAuBa,YAAQ,EAAE;AAAjC,GALwB,EAMxBgxH,SANwB,CAA1B;AAQD;;AAED,eAAes7C,OAAf,CAAuB3+K,SAAvB,EAAkCqjI,SAAlC,EAA6C;AAC3C,SAAOg7C,mBAAmB,CACxB7sI,kDAAA,CAAY8c,gEAAS,CAACtuD,SAAD,CAArB,EAAkC,CAAlC,CADwB,EAExB,KAAK,CAFmB,EAGxBtF,KAAK,IAAI;AACP;AACA;AACA;AACA;AACA;AACA,QAAI82C,gDAAA,CAAU92C,KAAV,IAAmB,EAAvB,EAA2B;AACzB,aAAO,KAAP;AACD;;AACD,WAAO;AAAEA,WAAF;AAAS8W,eAAS,EAAE;AAApB,KAAP;AACD,GAbuB,EAcxB6xH,SAdwB,CAA1B;AAgBD;;AAED,eAAeu7C,cAAf,CAA8B5+K,SAA9B,EAAyCqjI,SAAzC,EAAoD;AAClD;AACA;AACA,MAAIw7C,EAAE,GAAG,MAAMR,mBAAmB,CAChC7sI,kDAAA,CAAY8c,gEAAS,CAACtuD,SAAD,CAArB,EAAkC,CAAlC,CADgC,EAEhC,CAFgC,EAGhC;AAAEwR,aAAS,EAAE,SAAb;AAAwBk8C,YAAQ,EAAE,CAAC;AAAEj2C,UAAI,EAAE,KAAR;AAAe5c,WAAK,EAAE,CAAC;AAAvB,KAAD;AAAlC,GAHgC,EAIhCwoI,SAJgC,EAKhC;AACA;AACA,MAPgC,CAAlC;AAUA,MAAIy7C,EAAE,GAAG,MAAMT,mBAAmB,CAChC7sI,kDAAA,CAAY8c,gEAAS,CAACtuD,SAAD,CAArB,EAAkC,CAAlC,CADgC,EAEhC,CAFgC,EAGhC;AAAEwR,aAAS,EAAE,SAAb;AAAwBk8C,YAAQ,EAAE,CAAC;AAAEj2C,UAAI,EAAE,KAAR;AAAe5c,WAAK,EAAE,CAAC;AAAvB,KAAD;AAAlC,GAHgC,EAIhCwoI,SAJgC,EAKhC,IALgC,CAAlC;AAQA,SAAOw7C,EAAE,CAACvmJ,MAAH,CAAUwmJ,EAAV,CAAP;AACD;;AAED,eAAeC,eAAf,CAA+B/+K,SAA/B,EAA0CqjI,SAA1C,EAAqD;AACnD,SAAOg7C,mBAAmB,CACxB7sI,iDAAA,CAAW8c,gEAAS,CAACtuD,SAAD,CAApB,EAAiC,CAAjC,CADwB,EAExB,EAFwB,EAGxBtF,KAAK,IAAI;AACP,QAAIiC,GAAG,GAAG60C,+CAAA,CAAS,IAAI/rC,IAAJ,EAAT,EAAqB,MAArB,CAAV;AACA,QAAIu5K,QAAQ,GAAGriL,GAAG,CAAC2G,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgBioB,WAAhB,EAAf;AAEA,WAAO;AACL7wB,WADK;AAEL8W,eAAS,EAAE,SAFN;AAGLk8C,cAAQ,EAAE,CAAC;AAAEj2C,YAAI,EAAEunK,QAAR;AAAkBnkL,aAAK,EAAE;AAAzB,OAAD,EAA+B;AAAE4c,YAAI,EAAEunK,QAAR;AAAkBnkL,aAAK,EAAE;AAAzB,OAA/B;AAHL,KAAP;AAKD,GAZuB,EAaxBwoI,SAbwB,CAA1B;AAeD;;AAED,eAAe47C,eAAf,CAA+Bj/K,SAA/B,EAA0CqjI,SAA1C,EAAqD;AACnD,SAAOg7C,mBAAmB,CACxB7sI,kDAAA,CAAY8c,gEAAS,CAACtuD,SAAD,CAArB,EAAkC,CAAlC,CADwB,EAExB,EAFwB,EAGxBtF,KAAK,IAAI;AACP,QAAIiC,GAAG,GAAG60C,+CAAA,CAAS,IAAI/rC,IAAJ,EAAT,EAAqB,MAArB,CAAV;AACA,QAAIu5K,QAAQ,GAAGriL,GAAG,CAAC2G,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgBioB,WAAhB,EAAf;AAEA,WAAO;AACL7wB,WADK;AAEL8W,eAAS,EAAE,SAFN;AAGLk8C,cAAQ,EAAE,CAAC;AAAEj2C,YAAI,EAAEunK,QAAR;AAAkBnkL,aAAK,EAAE;AAAzB,OAAD,EAA+B;AAAE4c,YAAI,EAAEunK,QAAR;AAAkBnkL,aAAK,EAAE;AAAzB,OAA/B;AAHL,KAAP;AAKD,GAZuB,EAaxBwoI,SAbwB,CAA1B;AAeD;;AAED,eAAe67C,aAAf,CAA6Br8K,QAA7B,EAAuC;AACrC,MAAIw6I,UAAU,GAAGx6I,QAAQ,CAACy3J,WAA1B;AACA,MAAIggB,QAAQ,GAAGj9B,UAAU,CAACrmI,IAAX,CAAgB4Y,CAAC,IAAIA,CAAC,CAAC0U,KAAF,KAAY,MAAjC,CAAf;AACA,MAAI66I,aAAa,GAAG7E,QAAQ,CAACz/K,KAA7B;;AAEA,SAAO,CAAP,EAAU;AACR,QAAIukL,UAAU,GAAGD,aAAjB;AACAA,iBAAa,qBAAQC,UAAR,CAAb;;AAEA,YAAQD,aAAa,CAAC3tK,SAAtB;AACE,WAAK,QAAL;AACE2tK,qBAAa,CAACzkL,KAAd,GAAsB0/I,kEAAW,CAC/B5oG,iDAAA,CACE8c,gEAAS,CAAC6wH,aAAa,CAACzkL,KAAf,CADX,EAEEykL,aAAa,CAAC9sK,QAAd,IAA0B,CAF5B,CAD+B,CAAjC;AAOA;;AACF,WAAK,SAAL;AACE8sK,qBAAa,CAACzkL,KAAd,GAAsB0/I,kEAAW,CAC/B5oG,kDAAA,CACE8c,gEAAS,CAAC6wH,aAAa,CAACzkL,KAAf,CADX,EAEEykL,aAAa,CAAC9sK,QAAd,IAA0B,CAF5B,CAD+B,CAAjC;AAMA;;AACF,WAAK,QAAL;AACE8sK,qBAAa,CAACzkL,KAAd,GAAsB0/I,kEAAW,CAC/B5oG,iDAAA,CACE8c,gEAAS,CAAC6wH,aAAa,CAACzkL,KAAf,CADX,EAEEykL,aAAa,CAAC9sK,QAAd,IAA0B,CAF5B,CAD+B,CAAjC;AAMA;;AACF;AACE,cAAM,IAAIvS,KAAJ,CAAU,kCAAV,CAAN;AA3BJ;;AA8BA,QAAIk6K,aAAa,GAAG38B,UAAU,CAACh/I,GAAX,CAAeuxB,CAAC,IAClCA,CAAC,CAAC0U,KAAF,KAAY,MAAZ,mCAA0B1U,CAA1B;AAA6B/0B,WAAK,EAAEskL;AAApC,SAAsDvvJ,CADpC,CAApB;;AAIA,2BAA0Bw3H,oFAAe,CAAC4yB,aAAD,EAAgB;AACvD3yB,qBAAe,EAAE;AADsC,KAAhB,CAAzC;AAAA,QAAMC,OAAN,oBAAMA,OAAN;AAAA,QAAe/N,MAAf,oBAAeA,MAAf;;AAGA,QAAIA,MAAM,CAACj4I,MAAP,GAAgB,CAApB,EAAuB;AACrB;AACA;AACA69K,mBAAa,GAAG,IAAhB;AACA;AACD;;AAED,2BAAe,MAAM7tC,sEAAQ,CAC3BvgG,6DAAC,CAAC,cAAD,CAAD,CACGhvC,MADH,CACU;AAAEwlJ,UAAI,EAAED;AAAR,KADV,EAEG7lB,MAFH,CAEU,GAFV,CAD2B,CAA7B;AAAA,QAAM9+H,IAAN,oBAAMA,IAAN;;AAMA,QAAIA,IAAI,CAACrB,MAAL,KAAgB,CAApB,EAAuB;AACrB;AACA69K,mBAAa,GAAGC,UAAhB;AACA;AACD;AACF;;AAED,MAAID,aAAJ,EAAmB;AACjB,2CACKt8K,QADL;AAEEvF,UAAI,EAAE6hL,aAFR;AAGE7kB,iBAAW,EAAEjd,UAAU,CAACh/I,GAAX,CAAeuxB,CAAC,IAC3BA,CAAC,CAAC0U,KAAF,KAAY,MAAZ,mCAA0B1U,CAA1B;AAA6B/0B,aAAK,EAAEskL;AAApC,WAAsDvvJ,CAD3C;AAHf;AAOD;;AACD,SAAO/sB,QAAP;AACD;;AAEM,eAAek5K,aAAf,GAA+B;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,yBAAyB,MAAMzqC,sEAAQ,CACrCvgG,6DAAC,CAAC,UAAD,CAAD,CACGhvC,MADH,CACU;AAAE8kI,UAAM,EAAE;AAAV,GADV,EAEGpF,MAFH,CAEU,GAFV,CADqC,CAAvC;AAAA,MAAY8E,QAAZ,oBAAM5jI,IAAN;;AAMA,MAAI08K,YAAY,GAAG,EAAnB;;AAEA,OAAK,IAAIt7C,OAAT,IAAoBwC,QAApB,EAA8B;AAC5B;AACA,QAAI6iB,WAAW,GAAG,MAAMtc,yCAAA,CACtB,iGADsB,EAEtB,CAAC/I,OAAO,CAACpB,EAAT,CAFsB,CAAxB;;AAKA,QAAIymB,WAAJ,EAAiB;AACf,UAAIslB,UAAU,GAAGvW,4DAAY,CAAC/O,WAAW,CAAC9rJ,IAAb,CAA7B;AACA+hL,kBAAY,GAAGA,YAAY,CAAC/mJ,MAAb,CACb,MAAMmmJ,MAAM,CAAC/P,UAAD,EAAa3qC,OAAO,CAACpB,EAArB,CADC,EAEb,MAAM+7C,WAAW,CAAChQ,UAAD,EAAa3qC,OAAO,CAACpB,EAArB,CAFJ,EAGb,MAAMg8C,OAAO,CAACjQ,UAAD,EAAa3qC,OAAO,CAACpB,EAArB,CAHA,EAIb,MAAMi8C,cAAc,CAAClQ,UAAD,EAAa3qC,OAAO,CAACpB,EAArB,CAJP,EAKb,MAAMo8C,eAAe,CAACrQ,UAAD,EAAa3qC,OAAO,CAACpB,EAArB,CALR,EAMb,MAAMs8C,eAAe,CAACvQ,UAAD,EAAa3qC,OAAO,CAACpB,EAArB,CANR,CAAf;AAQD;AACF;;AAED,MAAIjgI,SAAS,GAAG,CAAC,GAAGk/H,4DAAO,CAACy9C,YAAD,EAAe,OAAf,CAAP,CAA+Bv8J,OAA/B,EAAJ,EAA8CzkB,GAA9C,CACd,CAAC,CAACmnI,OAAD,EAAU9iI,SAAV,CAAD,KAA0B;AACxBA,aAAS,CAACZ,IAAV,CAAe,CAAC+8K,EAAD,EAAKC,EAAL,KAAYA,EAAE,CAACb,IAAH,GAAUY,EAAE,CAACZ,IAAxC;AACA,QAAIr1B,MAAM,GAAGlmJ,SAAS,CAAC,CAAD,CAAtB,CAFwB,CAIxB;;AACA,WAAO;AACLigI,QAAE,EAAEpD,IAAI,CAACgX,MAAL,EADC;AAELxS,aAAO,EAAE6kB,MAAM,CAAC7kB,OAFX;AAGLqB,WAAK,EAAEwjB,MAAM,CAACxjB,KAHT;AAIL9nI,UAAI,EAAEsrJ,MAAM,CAACtrJ,IAJR;AAKLiJ,YAAM,EAAEqiJ,MAAM,CAACriJ,MALV;AAML+zJ,iBAAW,EAAE,CACX;AAAEte,UAAE,EAAE,IAAN;AAAY13G,aAAK,EAAE,SAAnB;AAA8BzpC,aAAK,EAAE+tJ,MAAM,CAAC7kB;AAA5C,OADW,EAEX;AAAEiY,UAAE,EAAE,IAAN;AAAY13G,aAAK,EAAE,OAAnB;AAA4BzpC,aAAK,EAAE+tJ,MAAM,CAACxjB;AAA1C,OAFW,EAGX;AACE4W,UAAE,EAAE4M,MAAM,CAACw1B,SAAP,GAAmB,IAAnB,GAA0B,UADhC;AAEE95I,aAAK,EAAE,MAFT;AAGEzpC,aAAK,EAAE+tJ,MAAM,CAACtrJ;AAHhB,OAHW,EAQX;AACE0+I,UAAE,EAAE4M,MAAM,CAACs1B,WAAP,GAAqB,IAArB,GAA4B,UADlC;AAEE55I,aAAK,EAAE,QAFT;AAGEzpC,aAAK,EAAE+tJ,MAAM,CAACriJ;AAHhB,OARW;AANR,KAAP;AAqBD,GA3Ba,CAAhB;AA8BA,MAAI+4K,SAAS,GAAG,EAAhB;;AACA,OAAK,IAAIz8K,QAAT,IAAqBH,SAArB,EAAgC;AAC9B48K,aAAS,CAACn/K,IAAV,CAAe,MAAM++K,aAAa,CAACr8K,QAAD,CAAlC;AACD;;AACD,SAAOy8K,SAAP;AACD,C;;;;;;;;;;;;AC9YD;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAI1+K,MAAM,GAAG,IAAb;;AAEA,SAAS2+K,OAAT,CAAiB7jL,IAAjB,EAAuB,GAAGivI,KAA1B,EAAiC;AAC/B,MAAIpnD,GAAG,GAAG,IAAIO,GAAJ,CAAQpoF,IAAR,CAAV;AACA6nF,KAAG,CAACi8F,QAAJ,GAAeliK,0DAAE,CAACjB,IAAH,CAAQ,GAAGsuH,KAAX,CAAf;AACA,SAAOpnD,GAAG,CAACrrE,QAAJ,EAAP;AACD;;AAEM,SAASm5J,SAAT,CAAmB9tF,GAAnB,EAAwB;AAC7B,MAAIA,GAAG,IAAI,IAAX,EAAiB;AACf3iF,UAAM,GAAG,IAAT;AACD,GAFD,MAEO;AACLA,UAAM,GAAGw3I,SAAS,CAAC70D,GAAD,CAAlB;AACD;AACF,C,CAED;;AACO,SAAS60D,SAAT,CAAmB70D,GAAnB,EAAwB;AAC7B,MAAIA,GAAJ,EAAS;AACP,WAAO;AACL0tF,iBAAW,EAAE1tF,GADR;AAELuhF,iBAAW,EAAEya,OAAO,CAACh8F,GAAD,EAAM,OAAN,CAFf;AAGL4tF,mBAAa,EAAEoO,OAAO,CAACh8F,GAAD,EAAM,UAAN,CAHjB;AAIL80D,kBAAY,EAAEknC,OAAO,CAACh8F,GAAD,EAAM,QAAN;AAJhB,KAAP;AAMD;;AACD,SAAO3iF,MAAP;AACD,C;;;;;;;;;;;;AC7BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;AACA,iBAAwB8b,mBAAO,CAAC,+EAAD,CAA/B;AAAA,MAAQ+wI,WAAR,YAAQA,WAAR;;AAEA,IAAIgyB,WAAJ,EAAiBC,cAAjB;AACA,IAAIC,aAAJ;AAEO,SAASpiL,GAAT,GAAe;AACpB,SAAOkiL,WAAP;AACD;;AAED,eAAeG,sBAAf,CAAsCC,KAAtC,EAA6CzR,KAA7C,EAAoD;AAClD,QAAMjR,mEAAA,CAAmB0iB,KAAnB,EAA0B,MAAM;AACpCzR,SAAK,CAAC5gK,OAAN,CAAclJ,IAAI,IAAI;AACpB,YAAM4qB,IAAI,GAAGuwJ,WAAW,CAACpR,QAAZ,CAAqB/pK,IAArB,CAAb,CADoB,CAGpB;;;AACA,UAAI4qB,IAAI,CAACwmH,GAAL,IAAY,IAAhB,EAAsB;AACpBynB,wEAAA,CACE0iB,KADF,EAEE,2DAFF,EAGE,CAACv7K,IAAD,EAAO4E,IAAI,CAACC,SAAL,CAAe+lB,IAAI,CAACr0B,KAApB,CAAP,CAHF;AAKD;AACF,KAXD;AAYD,GAbK,CAAN;AAcD;;AAED,SAASilL,cAAT,CAAwBC,MAAxB,EAAgCC,OAAhC,EAAyC;AAAEC;AAAF,CAAzC,EAAoD;AAClD,MAAIA,KAAJ,EAAW;AACT;AACA,QAAIjsK,GAAG,GAAGjK,IAAI,CAACqlB,MAAL,KAAgB,QAA1B;AACA+tI,oEAAA,CACE6iB,OADF,EAEE,4DAFF,EAGE,CAAChsK,GAAD,CAHF;;AAMA,QAAI+rK,MAAJ,EAAY;AACV5iB,sEAAA,CACE4iB,MADF,EAEE,4DAFF,EAGE,CAAC/rK,GAAD,CAHF;AAKD;AACF,GAhBD,MAgBO;AACLmpJ,oEAAA,CAAgB6iB,OAAhB,EAAyB,yBAAzB;AACD;AACF;;AAED,SAASE,YAAT,CAAsBH,MAAtB,EAA8BC,OAA9B,EAAuC;AACrC,MAAI31B,IAAI,GAAG8S,gEAAA,CACT6iB,OADS,EAET,0CAFS,EAGT,EAHS,EAIT,IAJS,CAAX;AAMA,MAAIhsK,GAAG,GAAGq2I,IAAI,CAAC/oJ,MAAL,KAAgB,CAAhB,GAAoB,IAApB,GAA2B+oJ,IAAI,CAAC,CAAD,CAAJ,CAAQj6I,GAA7C;;AAEA,MAAI4D,GAAG,IAAI,IAAX,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,MAAI+rK,MAAJ,EAAY;AACV,QAAI11B,IAAI,GAAG8S,gEAAA,CACT4iB,MADS,EAET,0CAFS,EAGT,EAHS,EAIT,IAJS,CAAX;;AAMA,QAAI11B,IAAI,CAAC/oJ,MAAL,KAAgB,CAAhB,IAAqB+oJ,IAAI,CAAC,CAAD,CAAJ,CAAQj6I,GAAR,KAAgB4D,GAAzC,EAA8C;AAC5C,aAAO,IAAP;AACD;AACF,GAvBoC,CAyBrC;AACA;;;AACAq2I,MAAI,GAAG8S,gEAAA,CAAgB6iB,OAAhB,EAAyB,+BAAzB,EAA0D,EAA1D,EAA8D,IAA9D,CAAP;AACA,SAAO31B,IAAI,CAAC/oJ,MAAL,KAAgB,CAAvB;AACD;;AAEM,eAAe6+K,eAAf,CAA+BrzC,EAA/B,EAAmCqhC,aAAnC,EAAkD;AACvD,MAAIiS,YAAY,GAAG,CAACtjJ,MAAM,CAACg2I,WAA3B;AACA,MAAIiN,MAAM,GAAGjzC,EAAE,CAAC26B,WAAH,EAAb;AACA,MAAIuY,OAAJ;;AAEA,MAAIrN,iDAAQ,CAACqG,SAAT,IAAsBoH,YAA1B,EAAwC;AACtC;AACA;AACA;AACA;AACA,QAAIC,SAAS,GAAGvzC,EAAE,CAACs6B,eAAH,GAAqBxsJ,OAArB,CAA6B,aAA7B,EAA4C,cAA5C,CAAhB;AACA+kK,iBAAa,GAAGK,OAAO,GAAG7iB,oEAAA,CAAoBkjB,SAApB,CAA1B;AAEAljB,qEAAA,CACE6iB,OADF,EAEG;AACP;AACA;AACA,OALI;AAOD,GAfD,MAeO;AACL;AACAA,WAAO,GAAGD,MAAV;AACD;;AAED,MAAItvC,KAAJ;;AACA,MAAI2vC,YAAJ,EAAkB;AAChB3vC,SAAK,GAAG,IAAI6vC,gEAAJ,CACNV,sBAAsB,CAACriJ,IAAvB,CAA4B,IAA5B,EAAkCyiJ,OAAlC,CADM,EAENF,cAAc,CAACviJ,IAAf,CAAoB,IAApB,EAA0BwiJ,MAA1B,EAAkCC,OAAlC,CAFM,CAAR;AAID,GALD,MAKO;AACLvvC,SAAK,GAAG,IAAI6vC,gEAAJ,EAAR;AACD;;AAEDtuC,gFAAiB,CAAC;AAChBzoG,WAAO,EAAE,sBADO;AAEhBw7F,YAAQ,EAAE;AAFM,GAAD,CAAjB;AAKA06C,aAAW,GAAGhvC,KAAd;AACAivC,gBAAc,GAAGvR,aAAjB;;AAEA,MAAIA,aAAJ,EAAmB;AACjB19B,SAAK,CAACqkC,gBAAN,CAAuB,QAAvB,EAAiC3G,aAAjC;AACD;;AAED,MAAIiS,YAAY,IAAI,CAACF,YAAY,CAACH,MAAD,EAASC,OAAT,CAAjC,EAAoD;AAClD,QAAIO,UAAU,GAAG,MAAMpjB,gEAAA,CACrB6iB,OADqB,EAErB,uBAFqB,EAGrB,EAHqB,EAIrB,IAJqB,CAAvB;AAMAhqJ,WAAO,CAACsrE,GAAR,CAAa,kCAAiCi/E,UAAU,CAACj/K,MAAO,SAAhE;;AAEA,SAAK,IAAIg5I,GAAT,IAAgBimC,UAAhB,EAA4B;AAC1B,UAAI9yC,MAAM,GAAGvkI,IAAI,CAAC0G,KAAL,CAAW0qI,GAAG,CAACz/I,KAAf,CAAb;AACA41I,WAAK,CAACnnE,IAAN,CAAWgxE,GAAG,CAAClqI,GAAf,EAAoBq9H,MAApB;AACD;AACF,GAbD,MAaO;AACLz3G,WAAO,CAACsrE,GAAR,CAAY,2BAAZ;AACA,UAAMk/E,eAAe,CAAC1zC,EAAD,CAArB;AACD;;AAEDkF,gFAAiB,CAAC;AAChBzoG,WAAO,EAAE,qBADO;AAEhBw7F,YAAQ,EAAE;AAFM,GAAD,CAAjB;AAKA,SAAO0L,KAAP;AACD;AAEM,SAASgwC,iBAAT,GAA6B;AAClC,MAAIhB,WAAJ,EAAiB;AACf;AACAA,eAAW,CAACiB,MAAZ;AACAjB,eAAW,GAAG,IAAd;AACD;;AAED,MAAIE,aAAJ,EAAmB;AACjBxiB,yEAAA,CAAqBwiB,aAArB;AACAA,iBAAa,GAAG,IAAhB;AACD;AACF;AAEM,eAAegB,iBAAf,CAAiC7zC,EAAjC,EAAqC;AAC1C,MAAI2yC,WAAJ,EAAiB;AACfgB,qBAAiB;AACjB,WAAON,eAAe,CAACrzC,EAAD,EAAK4yC,cAAL,CAAtB;AACD;AACF;AAEM,eAAec,eAAf,CAA+B1zC,EAA/B,EAAmC;AACxC,MAAI2D,KAAK,GAAGgvC,WAAZ,CADwC,CAGxC;AACA;;AAEA,aAAqB9tC,+CAAA,MAAoB,EAAzC;AAAA,MAAMssB,UAAN,QAAMA,UAAN;;AAEA,MAAI57B,KAAK,GAAG47B,UAAU,KAAK,QAAf,GAA0B,iBAA1B,GAA8C,cAA1D;AACA,MAAIj1B,OAAO,GAAG,MAAM8D,EAAE,CAACrhE,GAAH,CAAQ;AAC9B,sBAAsB42D,KAAM;AAC5B;AACA;AACA,KAJsB,CAApB;AAMAoO,OAAK,CAACmwC,gBAAN,GAfwC,CAiBxC;;AACA,OAAK,IAAIt3C,MAAT,IAAmBN,OAAnB,EAA4B;AAC1B,QAAIM,MAAM,CAACzjI,KAAP,IAAgByjI,MAAM,CAACvE,QAA3B,EAAqC;AACnC,UAAIqI,SAAS,GAAI,SAAQ9D,MAAM,CAACzjI,KAAM,EAAtC;AACA4qI,WAAK,CAAC3vI,GAAN,CAAW,GAAEssI,SAAU,WAAU9D,MAAM,CAACvE,QAAS,EAAjD,EAAoDuE,MAAM,CAAC/iI,MAA3D;AACAkqI,WAAK,CAAC3vI,GAAN,CACG,GAAEssI,SAAU,cAAa9D,MAAM,CAACvE,QAAS,EAD5C,EAEEuE,MAAM,CAAC+D,SAAP,KAAqB,CAArB,GAAyB,IAAzB,GAAgC,KAFlC;AAID;AACF,GA3BuC,CA6BxC;;;AACA,MAAI4wB,UAAU,KAAK,QAAnB,EAA6B;AAC3B,QAAI4iB,YAAY,GAAG,MAAM/zC,EAAE,CAACrhE,GAAH,CAAO,kCAAP,CAAzB;;AACA,SAAK,IAAIq1G,WAAT,IAAwBD,YAAxB,EAAsC;AACpC,UAAIzzC,SAAS,GAAG2zC,oEAAa,CAACD,WAAW,CAACn+C,EAAb,CAA7B;AACA8N,WAAK,CAAC3vI,GAAN,CAAW,GAAEssI,SAAU,WAAvB,EAAmC0zC,WAAW,CAAC/iB,QAA/C;AACD;AACF;;AAEDttB,OAAK,CAACuwC,cAAN;AACD;AAEM,SAASC,OAAT,CAAiBxwC,KAAjB,EAAwBnsI,IAAxB,EAA8B;AACnC,SAAOm7K,WAAW,CAACpR,QAAZ,CAAqB5gB,WAAW,CAAChd,KAAD,EAAQnsI,IAAR,CAAhC,CAAP;AACD;AAEM,SAASoqJ,YAAT,CAAsBje,KAAtB,EAA6BnsI,IAA7B,EAAmC;AACxC,SAAOm7K,WAAW,CAAC1yC,QAAZ,CAAqB0gB,WAAW,CAAChd,KAAD,EAAQnsI,IAAR,CAAhC,CAAP;AACD;AAEM,SAASs8K,gBAAT,GAA4B;AACjC,MAAInB,WAAJ,EAAiB;AACfA,eAAW,CAACmB,gBAAZ;AACD;AACF;AAEM,SAASI,cAAT,GAA0B;AAC/B,MAAIvB,WAAJ,EAAiB;AACfA,eAAW,CAACuB,cAAZ;AACD;AACF;AAEM,SAASE,iBAAT,GAA6B;AAClC,SAAO,IAAIn/J,OAAJ,CAAYC,OAAO,IAAI;AAC5B,QAAIy9J,WAAJ,EAAiB;AACfA,iBAAW,CAAC0B,QAAZ,CAAqBn/J,OAArB;AACD,KAFD,MAEO;AACLA,aAAO;AACR;AACF,GANM,CAAP;AAOD,C;;;;;;;;;;;ACvPD,SAAS5P,KAAT,CAAeokD,GAAf,EAAoB;AAClB,SAAOA,GAAG,CAAC,CAAD,CAAV;AACD;;AAED,SAAS4qH,UAAT,CAAoB5qH,GAApB,EAAyB;AACvB,QAAMrmD,IAAI,GAAGjS,MAAM,CAACiS,IAAP,CAAYqmD,GAAG,CAAC,CAAD,CAAf,CAAb;AACA,SAAOA,GAAG,CAAC,CAAD,CAAH,CAAOrmD,IAAI,CAAC,CAAD,CAAX,CAAP;AACD;;AAED,SAASoJ,MAAT,CAAgB0rB,CAAhB,EAAmB;AACjB,MAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzB,WAAOA,CAAP;AACD,GAFD,MAEO,IAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AAChC,UAAMwoG,MAAM,GAAGvyH,UAAU,CAAC+pB,CAAD,CAAzB;;AACA,QAAIl8B,KAAK,CAAC0kI,MAAD,CAAT,EAAmB;AACjB,aAAO,CAAP;AACD;;AACD,WAAOA,MAAP;AACD;;AAED,SAAO,CAAP;AACD;;AAED,SAAS3iI,GAAT,CAAa9B,CAAb,EAAgBC,CAAhB,EAAmB;AACjB,SAAOc,IAAI,CAACe,GAAL,CAAS9B,CAAT,EAAYC,CAAZ,CAAP;AACD;;AAED,SAAS8e,GAAT,CAAa/e,CAAb,EAAgBC,CAAhB,EAAmB;AACjB,SAAOc,IAAI,CAACge,GAAL,CAAS/e,CAAT,EAAYC,CAAZ,CAAP;AACD;;AAEDqT,MAAM,CAACC,OAAP,GAAiB;AACfnK,OADe;AAEfgvK,YAFe;AAGf7nK,QAHe;AAIfzO,KAJe;AAKfid;AALe,CAAjB,C;;;;;;;;;;;AC/BA,SAASs5J,KAAT,CAAeC,UAAf,EAA2B;AACzB,MAAIC,KAAK,GAAG;AACVC,WADU;AAEV5wD,cAFU;AAGV6wD,YAHU;AAIVC,oBAJU;AAKVC,WALU;AAMVC,cANU;AAOVC,uBAPU;AAQVC,mBARU;AASVC,eATU;AAUVC;AAVU,GAAZ;AAaA,MAAIC,KAAK,GAAG,IAAI9yK,GAAJ,EAAZ;AACA,MAAI+yK,aAAa,GAAG,IAAI/yK,GAAJ,EAApB;;AAEA,WAAS6yK,QAAT,GAAoB;AAClB,WAAO;AAAEC,WAAF;AAASC;AAAT,KAAP;AACD;;AAED,WAASV,OAAT,CAAiBtyJ,IAAjB,EAAuB;AACrB+yJ,SAAK,CAACnhL,GAAN,CAAUouB,IAAV,EAAgBuyJ,QAAQ,CAACvyJ,IAAD,CAAxB;AACAgzJ,iBAAa,CAACphL,GAAd,CAAkBouB,IAAlB,EAAwBwyJ,gBAAgB,CAACxyJ,IAAD,CAAxC;AACA,WAAOqyJ,KAAP;AACD;;AAED,WAASM,mBAAT,CAA6B3yJ,IAA7B,EAAmC;AACjC,UAAMizJ,QAAQ,GAAGT,gBAAgB,CAACxyJ,IAAD,CAAjC;AACAgzJ,iBAAa,CAACphL,GAAd,CAAkBouB,IAAlB,EAAwB,IAAIvZ,GAAJ,EAAxB;AAEA,QAAIysK,IAAI,GAAGD,QAAQ,CAAC/yK,MAAT,EAAX;AACA,QAAIizK,GAAG,GAAGD,IAAI,CAACxnL,IAAL,EAAV;;AACA,WAAO,CAACynL,GAAG,CAACjhL,IAAZ,EAAkB;AAChBwgL,gBAAU,CAACS,GAAG,CAACxnL,KAAL,EAAYq0B,IAAZ,CAAV;AACAmzJ,SAAG,GAAGD,IAAI,CAACxnL,IAAL,EAAN;AACD;AACF;;AAED,WAASg2H,UAAT,CAAoB1hG,IAApB,EAA0B;AACxB2yJ,uBAAmB,CAAC3yJ,IAAD,CAAnB;AACA+yJ,SAAK,CAACz8J,MAAN,CAAa0J,IAAb;AACAgzJ,iBAAa,CAAC18J,MAAd,CAAqB0J,IAArB;AACD;;AAED,WAASuyJ,QAAT,CAAkBvyJ,IAAlB,EAAwB;AACtB,WAAO+yJ,KAAK,CAAC1kL,GAAN,CAAU2xB,IAAV,KAAmB,IAAIvZ,GAAJ,EAA1B;AACD;;AAED,WAAS+rK,gBAAT,CAA0BxyJ,IAA1B,EAAgC;AAC9B,WAAOgzJ,aAAa,CAAC3kL,GAAd,CAAkB2xB,IAAlB,KAA2B,IAAIvZ,GAAJ,EAAlC;AACD,GAnDwB,CAqDzB;AACA;;;AACA,WAASgsK,OAAT,CAAiBjM,KAAjB,EAAwBC,KAAxB,EAA+B;AAC7B6L,WAAO,CAAC9L,KAAD,CAAP;AACA8L,WAAO,CAAC7L,KAAD,CAAP;AACA8L,YAAQ,CAAC/L,KAAD,CAAR,CAAgBr4K,GAAhB,CAAoBs4K,KAApB;AACA+L,oBAAgB,CAAC/L,KAAD,CAAhB,CAAwBt4K,GAAxB,CAA4Bq4K,KAA5B;AACA,WAAO6L,KAAP;AACD,GA7DwB,CA+DzB;AACA;AACA;;;AACA,WAASK,UAAT,CAAoBlM,KAApB,EAA2BC,KAA3B,EAAkC;AAChC,QAAIsM,KAAK,CAAC3uK,GAAN,CAAUoiK,KAAV,CAAJ,EAAsB;AACpB+L,cAAQ,CAAC/L,KAAD,CAAR,CAAgBlwJ,MAAhB,CAAuBmwJ,KAAvB;AACD;;AACD,QAAIuM,aAAa,CAAC5uK,GAAd,CAAkBqiK,KAAlB,CAAJ,EAA8B;AAC5B+L,sBAAgB,CAAC/L,KAAD,CAAhB,CAAwBnwJ,MAAxB,CAA+BkwJ,KAA/B;AACD;;AACD,WAAO6L,KAAP;AACD;;AAED,WAASe,oBAAT,CAA8Bh+K,IAA9B,EAAoCi+K,OAApC,EAA6CC,MAA7C,EAAqD;AACnDD,WAAO,CAACllL,GAAR,CAAYiH,IAAZ;AAEA,QAAI89K,IAAI,GAAGX,QAAQ,CAACn9K,IAAD,CAAR,CAAe8K,MAAf,EAAX;AACA,QAAIizK,GAAG,GAAGD,IAAI,CAACxnL,IAAL,EAAV;;AACA,WAAO,CAACynL,GAAG,CAACjhL,IAAZ,EAAkB;AAChB,UAAI,CAACmhL,OAAO,CAACjvK,GAAR,CAAY+uK,GAAG,CAACxnL,KAAhB,CAAL,EAA6B;AAC3BynL,4BAAoB,CAACD,GAAG,CAACxnL,KAAL,EAAY0nL,OAAZ,EAAqBC,MAArB,CAApB;AACD;;AACDH,SAAG,GAAGD,IAAI,CAACxnL,IAAL,EAAN;AACD;;AAED4nL,UAAM,CAAC/7K,OAAP,CAAenC,IAAf;AACD;;AAED,WAASw9K,eAAT,CAAyBW,WAAzB,EAAsC;AACpC,UAAMF,OAAO,GAAG,IAAI5sK,GAAJ,EAAhB;AACA,UAAM6sK,MAAM,GAAG,EAAf;AAEAC,eAAW,CAACj1K,OAAZ,CAAoBlJ,IAAI,IAAI;AAC1B,UAAI,CAACi+K,OAAO,CAACjvK,GAAR,CAAYhP,IAAZ,CAAL,EAAwB;AACtBg+K,4BAAoB,CAACh+K,IAAD,EAAOi+K,OAAP,EAAgBC,MAAhB,CAApB;AACD;AACF,KAJD;AAMA,WAAOA,MAAP;AACD;;AAED,WAAST,WAAT,GAAuB;AACrB,QAAIW,WAAW,GAAG,EAAlB;AACAT,SAAK,CAACz0K,OAAN,CAAc,UAASm1K,GAAT,EAAcC,IAAd,EAAoB;AAChC,UAAID,GAAG,CAACrhL,MAAJ,KAAe,CAAnB,EAAsB;AACpBohL,mBAAW,CAACviL,IAAZ,CAAkB,GAAEyiL,IAAK,QAAOD,GAAG,CAACtmK,IAAJ,CAAS,GAAT,CAAc,GAA9C;AACD;AACF,KAJD;AAMA,WAAQ;AACZ;AACA,SAASqmK,WAAW,CAACrmK,IAAZ,CAAiB,IAAjB,EAAuBzB,OAAvB,CAA+B,IAA/B,EAAqC,GAArC,CAA0C;AACnD;AACA,KAJI;AAKD;;AAED,SAAO2mK,KAAP;AACD;;AAEDjlK,MAAM,CAACC,OAAP,GAAiB8kK,KAAjB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1HA;AACA;AACA;AACA;;AAEA,MAAMA,KAAK,GAAG3kK,mBAAO,CAAC,mGAAD,CAArB;;AACA,iBAAuCA,mBAAO,CAAC,mEAAD,CAA9C;AAAA,MAAQoxJ,aAAR,YAAQA,aAAR;AAAA,MAAuBrgB,WAAvB,YAAuBA,WAAvB;;AAEe,MAAM6yB,WAAN,CAAkB;AAC/BnmL,aAAW,CAAC0oL,SAAD,EAAY/C,cAAZ,EAA4B;AACrC,SAAKyB,KAAL,GAAa,IAAIF,KAAJ,EAAb;AACA,SAAKxe,KAAL,GAAa,IAAI1zJ,GAAJ,EAAb;AACA,SAAK8mI,gBAAL,GAAwB,CAAxB;AACA,SAAK4sC,SAAL,GAAiBA,SAAjB;AACA,SAAK/C,cAAL,GAAsBA,cAAtB;AACA,SAAKgD,UAAL,GAAkB,EAAlB;AACA,SAAKC,YAAL,GAAoB,EAApB;AACA,SAAKtzB,MAAL,GAAcC,oDAAI,EAAlB;AACA,SAAKszB,KAAL,GAAa;AACXzkB,mBAAa,EAAE,IAAI5oJ,GAAJ;AADJ,KAAb;AAGD;;AAEDgsE,MAAI,GAAG;AACL,WAAO,KAAKqhG,KAAZ;AACD;;AAEDxgB,SAAO,CAAC7gF,IAAD,EAAO;AACZ,SAAKqhG,KAAL,GAAarhG,IAAb;AACD,GArB8B,CAuB/B;;;AAEA0sF,UAAQ,CAAC/pK,IAAD,EAAO;AACb,2BAAkBwpK,aAAa,CAACxpK,IAAD,CAA/B;AAAA,UAAQmsI,KAAR,kBAAQA,KAAR;;AAEA,QAAI,CAAC,KAAKoyB,KAAL,CAAWvvJ,GAAX,CAAehP,IAAf,CAAL,EAA2B;AACzB,WAAKu+J,KAAL,CAAW/hK,GAAX,CAAewD,IAAf,EAAqB;AACnBA,YADmB;AAEnB+8H,YAAI,EAAE,IAFa;AAGnBxmI,aAAK,EAAE,IAHY;AAInB41I,aAAK,EAAEA;AAJY,OAArB;AAMD;;AACD,WAAO,KAAKoyB,KAAL,CAAWtlK,GAAX,CAAe+G,IAAf,CAAP;AACD;;AAEDirK,SAAO,CAACjrK,IAAD,EAAO;AACZ,WAAO,KAAK+pK,QAAL,CAAc/pK,IAAd,CAAP;AACD;;AAED2+K,SAAO,CAAC3+K,IAAD,EAAO;AACZ,WAAO,KAAKu+J,KAAL,CAAWvvJ,GAAX,CAAehP,IAAf,CAAP;AACD;;AAEDjH,KAAG,CAACiH,IAAD,EAAO+8H,IAAP,EAAaxmI,KAAb,EAAoB;AACrB,SAAKiG,GAAL,CAASwD,IAAT,EAAe+8H,IAAf;AACD;;AAEDyhC,UAAQ,GAAG;AACT,WAAO,KAAKD,KAAZ;AACD;;AAEDtrJ,WAAS,GAAG;AACV,WAAO;AACLgqK,WAAK,EAAE,KAAKA,KAAL,CAAWS,QAAX,EADF;AAELnf,WAAK,EAAE,CAAC,GAAG,KAAKA,KAAL,CAAW//I,OAAX,EAAJ;AAFF,KAAP;AAID;;AAEDolH,aAAW,CAACnqG,IAAD,EAAO;AAChB,SAAK6iJ,gBAAL;;AACA,QAAI;AACF7iJ,UAAI;AACL,KAFD,CAEE,OAAOnZ,CAAP,EAAU;AACVoR,aAAO,CAACsrE,GAAR,CAAY18E,CAAZ;AACD;;AACD,WAAO,KAAKo8J,cAAL,EAAP;AACD;;AAEDJ,kBAAgB,GAAG;AACjB,SAAK3qC,gBAAL;AACD;;AAED+qC,gBAAc,GAAG;AACf,SAAK/qC,gBAAL;;AAEA,QAAI,KAAKA,gBAAL,KAA0B,CAA9B,EAAiC;AAC/B,YAAMitC,KAAK,GAAG,KAAKJ,UAAnB;AACA,WAAKA,UAAL,GAAkB,EAAlB;AAEA,WAAKK,gBAAL,CAAsB,KAAK5B,KAAL,CAAWO,eAAX,CAA2BoB,KAA3B,CAAtB;AACD;;AAED,WAAO,EAAP;AACD;;AAEDC,kBAAgB,CAACC,SAAD,EAAY;AAC1B;AACA;AACA;AACA;AACA;AAEA,SAAKL,YAAL,GAAoB,KAAKA,YAAL,CAAkBzqJ,MAAlB,CAAyB8qJ,SAAzB,CAApB,CAP0B,CAS1B;AACA;AACA;;AACArhK,WAAO,CAACC,OAAR,GAAkBiE,IAAlB,CAAuB,MAAM;AAC3B,UAAI,CAAC,KAAKo9J,OAAV,EAAmB;AACjB,aAAKC,eAAL;AACD;AACF,KAJD;AAKD;;AAEDA,iBAAe,CAAC9iC,GAAG,GAAG,CAAP,EAAU;AACvB,SAAK6iC,OAAL,GAAe,IAAf;;AAEA,WAAO7iC,GAAG,GAAG,KAAKuiC,YAAL,CAAkBzhL,MAA/B,EAAuC;AACrC,UAAIgD,IAAI,GAAG,KAAKy+K,YAAL,CAAkBviC,GAAlB,CAAX;AACA,UAAItxH,IAAJ;AACA,UAAI7f,MAAJ;;AAEA,UAAI;AACF6f,YAAI,GAAG,KAAKqgJ,OAAL,CAAajrK,IAAb,CAAP;;AAEA,YAAI4qB,IAAI,CAACv0B,IAAT,EAAe;AACb,cAAIP,IAAI,GAAG80B,IAAI,CAACq0J,aAAL,CAAmBllL,GAAnB,CAAuBmlL,GAAG,IAAI;AACvC,mBAAO,KAAKjU,OAAL,CAAaiU,GAAb,EAAkB3oL,KAAzB;AACD,WAFU,CAAX;;AAIAwU,gBAAM,GAAG6f,IAAI,CAACv0B,IAAL,CAAU,GAAGP,IAAb,CAAT;;AAEA,cAAIiV,MAAM,YAAY0S,OAAtB,EAA+B;AAC7BiU,mBAAO,CAACC,IAAR,CACE,8FADF;AAGD;AACF,SAZD,MAYO,IAAI/G,IAAI,CAACwmH,GAAT,EAAc;AACnBrmI,gBAAM,GAAGuoJ,8EAAgB,CACvB1oI,IAAI,CAACwyG,KADkB,EAEvBxyG,IAAI,CAACwmH,GAAL,CAAS4hB,SAFc,EAGvBpoI,IAAI,CAACwmH,GAAL,CAAS/xG,KAHc,CAAzB;AAKD,SANM,MAMA;AACL68G,aAAG;AACH;AACD;AACF,OAzBD,CAyBE,OAAO57H,CAAP,EAAU;AACVoR,eAAO,CAACsrE,GAAR,CAAY,4BAA4Bh9F,IAA5B,GAAmC,GAA/C,EAAoDsgB,CAApD,EADU,CAEV;;AACA,aAAKy+J,OAAL,GAAe,KAAf;AACA,aAAKN,YAAL,GAAoB,EAApB;AACA;AACD;;AAED,UAAI1zK,MAAM,YAAY0S,OAAtB,EAA+B;AAC7B;AACA;AACA1S,cAAM,CAAC4W,IAAP,CACEprB,KAAK,IAAI;AACPq0B,cAAI,CAACr0B,KAAL,GAAaA,KAAb;AACA,eAAKyoL,eAAL,CAAqB9iC,GAAG,GAAG,CAA3B;AACD,SAJH,EAKE/gI,GAAG,IAAI;AACL;AACAuW,iBAAO,CAACC,IAAR,CAAc,kBAAiB/G,IAAI,CAAC5qB,IAAK,GAAzC,EAA6Cmb,GAA7C;AACA,eAAK6jK,eAAL,CAAqB9iC,GAAG,GAAG,CAA3B;AACD,SATH;AAYA;AACD,OAhBD,MAgBO;AACLtxH,YAAI,CAACr0B,KAAL,GAAawU,MAAb;AACD;;AAEDmxI,SAAG;AACJ,KA9DsB,CAgEvB;AACA;;;AACA,QAAIA,GAAG,KAAK,KAAKuiC,YAAL,CAAkBzhL,MAA9B,EAAsC;AACpC,WAAKmuJ,MAAL,CAAYzmH,IAAZ,CAAiB,QAAjB,EAA2B;AAAEolI,aAAK,EAAE,KAAK2U;AAAd,OAA3B,EADoC,CAGpC;;AACA,UAAI,KAAKF,SAAT,EAAoB;AAClB,aAAKA,SAAL,CAAe,KAAKE,YAApB;AACD;;AACD,WAAKU,aAAL;AAEA,WAAKJ,OAAL,GAAe,KAAf;AACA,WAAKN,YAAL,GAAoB,EAApB;AACD;AACF;;AAEDU,eAAa,GAAG;AACd,QAAI,CAAC,KAAKC,YAAV,EAAwB;AACtB,UAAI,KAAK5D,cAAT,EAAyB;AACvB,aAAKA,cAAL,CAAoB;AAAEG,eAAK,EAAE;AAAT,SAApB;AACD;AACF;AACF;;AAED1xB,gBAAc,GAAG;AACf,QAAI,KAAKuxB,cAAT,EAAyB;AACvB,WAAKA,cAAL,CAAoB;AAAEG,aAAK,EAAE;AAAT,OAApB;AACD;AACF;;AAEDhd,mBAAiB,GAAG;AAClB,SAAKygB,YAAL,GAAoB,IAApB;AACA,SAAKn1B,cAAL;AACD;;AAED4U,iBAAe,GAAG;AAChB,SAAKugB,YAAL,GAAoB,KAApB;AAEA,QAAIC,aAAa,GAAG,KAAKN,OAAL,IAAgB,KAAKN,YAAL,CAAkBzhL,MAAlB,GAA2B,CAA/D;;AACA,QAAI,CAACqiL,aAAL,EAAoB;AAClB,WAAKF,aAAL;AACD;AACF;;AAED3O,kBAAgB,CAACxwK,IAAD,EAAOy5B,IAAP,EAAa;AAC3B,SAAK0xH,MAAL,CAAY7hI,EAAZ,CAAetpB,IAAf,EAAqBy5B,IAArB;AACA,WAAO,MAAM,KAAK0xH,MAAL,CAAY72H,GAAZ,CAAgBt0B,IAAhB,EAAsBy5B,IAAtB,CAAb;AACD;;AAEDojJ,UAAQ,CAACpjJ,IAAD,EAAO;AACb,QAAI,KAAKk4G,gBAAL,KAA0B,CAA9B,EAAiC;AAC/B,YAAM,IAAIn2I,KAAJ,CACJ,gHADI,CAAN;AAGD;;AAED,QAAI,CAAC,KAAKujL,OAAN,IAAiB,KAAKN,YAAL,CAAkBzhL,MAAlB,KAA6B,CAAlD,EAAqD;AACnDy8B,UAAI,CAAC,EAAD,CAAJ,CADmD,CAEnD;;AACA,aAAO,MAAM,CAAE,CAAf;AACD;;AAED,QAAI16B,MAAM,GAAG,KAAKyxK,gBAAL,CAAsB,QAAtB,EAAgC,CAAC,GAAG16K,IAAJ,KAAa;AACxDiJ,YAAM;AACN,aAAO06B,IAAI,CAAC,GAAG3jC,IAAJ,CAAX;AACD,KAHY,CAAb;AAIA,WAAOiJ,MAAP;AACD;;AAEDq9K,QAAM,GAAG;AACP,SAAKjxB,MAAL,CAAYhkF,GAAZ,CAAgBoB,KAAhB;AACD;;AAEDkgE,UAAQ,CAACzoI,IAAD,EAAO;AACb,WAAO,KAAKirK,OAAL,CAAajrK,IAAb,EAAmBzJ,KAA1B;AACD;;AAED+oL,SAAO,CAACt/K,IAAD,EAAO;AACZ,WAAO,KAAKirK,OAAL,CAAajrK,IAAb,EAAmB+8H,IAA1B;AACD;;AAEDqtB,cAAY,CAACje,KAAD,EAAQnsI,IAAR,EAAc;AACxB,WAAO,KAAKirK,OAAL,CAAa9hB,WAAW,CAAChd,KAAD,EAAQnsI,IAAR,CAAxB,EAAuCzJ,KAA9C;AACD;;AAEDgpL,aAAW,CAACpzC,KAAD,EAAQnsI,IAAR,EAAc;AACvB,WAAO,KAAKirK,OAAL,CAAa9hB,WAAW,CAAChd,KAAD,EAAQnsI,IAAR,CAAxB,EAAuC+8H,IAA9C;AACD;;AAEDyiD,mBAAiB,CAAC12C,SAAD,EAAY21B,QAAZ,EAAsB;AACrC,QAAIz+J,IAAI,GAAGmpJ,WAAW,CAACrgB,SAAD,EAAY21B,QAAZ,CAAtB;;AACA,QAAI,KAAKF,KAAL,CAAWvvJ,GAAX,CAAehP,IAAf,CAAJ,EAA0B;AACxB,aAAO,KAAKirK,OAAL,CAAajrK,IAAb,EAAmBzJ,KAA1B;AACD;;AACD,WAAO,IAAP;AACD;;AAEDkpL,QAAM,CAACC,OAAD,EAAU;AACd,SAAK7C,QAAL,CAAc,MAAM;AAClB6C,aAAO;AACR,KAFD;AAGD;;AAED16G,MAAI,CAAChlE,IAAD,EAAOzJ,KAAP,EAAc;AAChB,UAAMq0B,IAAI,GAAG,KAAKm/I,QAAL,CAAc/pK,IAAd,CAAb;;AACA4qB,QAAI,CAACmyG,IAAL,GAAYxmI,KAAZ;AACAq0B,QAAI,CAACr0B,KAAL,GAAaA,KAAb;AACD;;AAED2iB,QAAM,CAAClZ,IAAD,EAAOzJ,KAAP,EAAc;AAClB,WAAO,KAAKqtI,WAAL,CAAiB,MAAM;AAC5B,YAAMh5G,IAAI,GAAG,KAAKm/I,QAAL,CAAc/pK,IAAd,CAAb;;AACA4qB,UAAI,CAACmyG,IAAL,GAAYxmI,KAAZ;AACAq0B,UAAI,CAACr0B,KAAL,GAAaA,KAAb;;AACA,WAAKopL,UAAL,CAAgB3/K,IAAhB;AACD,KALM,CAAP;AAMD;;AAEDxD,KAAG,CAACwD,IAAD,EAAOzJ,KAAP,EAAc;AACf,SAAK2iB,MAAL,CAAYlZ,IAAZ,EAAkBzJ,KAAlB;AACD;;AAEDwmK,WAAS,CAAC/8J,IAAD,EAAO;AACd,SAAK4jI,WAAL,CAAiB,MAAM;AACrB,WAAK46C,UAAL,CAAgB3iL,IAAhB,CAAqBmE,IAArB;AACD,KAFD;AAGD;;AAEDmtK,cAAY,GAAG;AACb;AACA,SAAKvpC,WAAL,CAAiB,MAAM;AACrB,WAAK46C,UAAL,GAAkB,CAAC,GAAG,KAAKjgB,KAAL,CAAW1yJ,IAAX,EAAJ,CAAlB;AACD,KAFD;AAGD;;AAEDq/J,aAAW,CAACpiC,SAAD,EAAY21B,QAAZ,EAAsBrhC,KAAtB,EAA6B;AACtC,QAAIp9H,IAAI,GAAGmpJ,WAAW,CAACrgB,SAAD,EAAY21B,QAAZ,CAAtB;;AACA,QAAI7zI,IAAI,GAAG,KAAKm/I,QAAL,CAAc/pK,IAAd,CAAX;;AAEA,QAAI4qB,IAAI,CAACwyG,KAAL,KAAeA,KAAnB,EAA0B;AACxBxyG,UAAI,CAACwyG,KAAL,GAAaA,KAAb;;AACA,0BAA2Bq1B,kEAAY,CAAC7nI,IAAI,CAACwyG,KAAN,EAAaqvB,kDAAb,EAAqBvL,wDAArB,CAAvC;AAAA,UAAM8R,SAAN,iBAAMA,SAAN;AAAA,UAAiB3zH,KAAjB,iBAAiBA,KAAjB;;AACAzU,UAAI,CAACwmH,GAAL,GAAW;AAAE4hB,iBAAF;AAAa3zH;AAAb,OAAX;AAEA,WAAKukG,WAAL,CAAiB,MAAM;AACrB,aAAK+7C,UAAL,CAAgB3/K,IAAhB;AACD,OAFD;AAGD;AACF;;AAED8+J,cAAY,CAACh2B,SAAD,EAAY21B,QAAZ,EAAsBhC,YAAtB,EAAoC;AAC9C,QAAIz8J,IAAI,GAAGmpJ,WAAW,CAACrgB,SAAD,EAAY21B,QAAZ,CAAtB;AACA,QAAIprI,MAAM,GAAG,KAAKkrI,KAAL,CAAWvvJ,GAAX,CAAehP,IAAf,CAAb;;AACA,QAAI,CAACqzB,MAAL,EAAa;AACX,WAAKna,MAAL,CAAYlZ,IAAZ,EAAkBy8J,YAAlB;AACD;AACF;;AAEDD,eAAa,CACX1zB,SADW,EAEX21B,QAFW,EAGX;AAAE5M,gBAAY,GAAG,EAAjB;AAAqBjlJ,OAArB;AAA0B6vJ,gBAA1B;AAAwCyC;AAAxC,GAHW,EAIX;AACA,QAAIl/J,IAAI,GAAGmpJ,WAAW,CAACrgB,SAAD,EAAY21B,QAAZ,CAAtB;;AACA,QAAI7zI,IAAI,GAAG,KAAKm/I,QAAL,CAAc/pK,IAAd,CAAX;;AAEA,QAAI4qB,IAAI,CAACg1J,OAAT,EAAkB;AAChB;AACA;AACD;;AAEDh1J,QAAI,CAACg1J,OAAL,GAAe,IAAf;AACAh1J,QAAI,CAACv0B,IAAL,GAAYuW,GAAZ;AAEAilJ,gBAAY,GAAGA,YAAY,CAAC93J,GAAb,CAAiBmlL,GAAG,IAAI;AACrC,UAAIW,QAAJ;;AACA,UAAI,CAACrW,aAAa,CAAC0V,GAAD,CAAb,CAAmB/yC,KAAxB,EAA+B;AAC7B0zC,gBAAQ,GAAG12B,WAAW,CAACrgB,SAAD,EAAYo2C,GAAZ,CAAtB;AACD,OAFD,MAEO;AACLW,gBAAQ,GAAGX,GAAX;AACD;;AAED,aAAOW,QAAP;AACD,KATc,CAAf;AAWAj1J,QAAI,CAACq0J,aAAL,GAAqBptB,YAArB,CAvBA,CAyBA;;AACA,SAAKorB,KAAL,CAAWM,mBAAX,CAA+Bv9K,IAA/B;AACA6xJ,gBAAY,CAAC3oJ,OAAb,CAAqBg2K,GAAG,IAAI;AAC1B,WAAKjC,KAAL,CAAWI,OAAX,CAAmB6B,GAAnB,EAAwBl/K,IAAxB;AACD,KAFD;;AAIA,QAAI4qB,IAAI,CAACr0B,KAAL,IAAc,IAAd,IAAsB2oK,OAA1B,EAAmC;AACjC,WAAKt7B,WAAL,CAAiB,MAAM;AACrBh5G,YAAI,CAACr0B,KAAL,GAAakmK,YAAb;;AACA,aAAKkjB,UAAL,CAAgB3/K,IAAhB;AACD,OAHD;AAID;AACF;;AAED+/J,YAAU,CAACj3B,SAAD,EAAY;AACpB,qBAAyB,KAAKy1B,KAAL,CAAW//I,OAAX,EAAzB,EAA+C;AAAA;;AAAA,UAArCxe,IAAqC;AAAA,UAA/B4qB,IAA+B;;AAC7C,UAAIA,IAAI,CAACuhH,KAAL,KAAerD,SAAnB,EAA8B;AAC5B,aAAKy1B,KAAL,CAAWr9I,MAAX,CAAkBlhB,IAAlB;AACD;AACF;AACF;;AAED8/K,UAAQ,CAACh3C,SAAD,EAAY9oI,IAAZ,EAAkB+/K,SAAS,GAAG,IAA9B,EAAoC;AAC1C,QAAIn1J,IAAI,GAAG,KAAKqgJ,OAAL,CAAa9hB,WAAW,CAACrgB,SAAD,EAAY9oI,IAAZ,CAAxB,CAAX;AACA4qB,QAAI,CAACv0B,IAAL,GAAY,IAAZ;AACAu0B,QAAI,CAACg1J,OAAL,GAAe,KAAf;AACAh1J,QAAI,CAACr0B,KAAL,GAAawpL,SAAb;AACD;;AAEDrhB,YAAU,CAAC51B,SAAD,EAAY9oI,IAAZ,EAAkB;AAC1B,SAAK8/K,QAAL,CAAch3C,SAAd,EAAyB9oI,IAAzB;AACA,SAAKu+J,KAAL,CAAWr9I,MAAX,CAAkBioI,WAAW,CAACrgB,SAAD,EAAY9oI,IAAZ,CAA7B;AACD;;AAEDq9J,iBAAe,CAACv0B,SAAD,EAAY21B,QAAZ,EAAsB/vJ,IAAtB,EAA4B;AACzC,QAAI1O,IAAI,GAAGmpJ,WAAW,CAACrgB,SAAD,EAAY21B,QAAZ,CAAtB;AAEA/vJ,QAAI,GAAGA,IAAI,CAAC3U,GAAL,CAASmlL,GAAG,IAAI;AACrB,UAAI,CAAC1V,aAAa,CAAC0V,GAAD,CAAb,CAAmB/yC,KAAxB,EAA+B;AAC7B,eAAOgd,WAAW,CAACrgB,SAAD,EAAYo2C,GAAZ,CAAlB;AACD;;AACD,aAAOA,GAAP;AACD,KALM,CAAP;AAOA,QAAIt0J,IAAI,GAAG,KAAKqgJ,OAAL,CAAajrK,IAAb,CAAX;AACA,QAAIggL,OAAO,GAAGtxK,IAAI,CAACjR,MAAL,CACZyhL,GAAG,IAAI,CAACt0J,IAAI,CAACq0J,aAAL,IAAsB,EAAvB,EAA2Bj6K,OAA3B,CAAmCk6K,GAAnC,MAA4C,CAAC,CADxC,CAAd;;AAIA,QAAIc,OAAO,CAAChjL,MAAR,GAAiB,CAArB,EAAwB;AACtB4tB,UAAI,CAACq0J,aAAL,GAAqB,CAACr0J,IAAI,CAACq0J,aAAL,IAAsB,EAAvB,EAA2BjrJ,MAA3B,CAAkCgsJ,OAAlC,CAArB;AACAA,aAAO,CAAC92K,OAAR,CAAgBg2K,GAAG,IAAI;AACrB,aAAKjC,KAAL,CAAWI,OAAX,CAAmB6B,GAAnB,EAAwBl/K,IAAxB;AACD,OAFD;AAGA,WAAK+8J,SAAL,CAAe/8J,IAAf;AACD;AACF;;AAEDu9J,oBAAkB,CAACz0B,SAAD,EAAY21B,QAAZ,EAAsB/vJ,IAAtB,EAA4B;AAC5C,QAAI1O,IAAI,GAAGmpJ,WAAW,CAACrgB,SAAD,EAAY21B,QAAZ,CAAtB;AAEA/vJ,QAAI,GAAGA,IAAI,CAAC3U,GAAL,CAASmlL,GAAG,IAAI;AACrB,UAAI,CAAC1V,aAAa,CAAC0V,GAAD,CAAb,CAAmB/yC,KAAxB,EAA+B;AAC7B,eAAOgd,WAAW,CAACrgB,SAAD,EAAYo2C,GAAZ,CAAlB;AACD;;AACD,aAAOA,GAAP;AACD,KALM,CAAP;AAOA,QAAIt0J,IAAI,GAAG,KAAKqgJ,OAAL,CAAajrK,IAAb,CAAX;AAEA4qB,QAAI,CAACq0J,aAAL,GAAqB,CAACr0J,IAAI,CAACq0J,aAAL,IAAsB,EAAvB,EAA2BxhL,MAA3B,CACnByhL,GAAG,IAAIxwK,IAAI,CAAC1J,OAAL,CAAak6K,GAAb,MAAsB,CAAC,CADX,CAArB;AAIAxwK,QAAI,CAACxF,OAAL,CAAag2K,GAAG,IAAI;AAClB,WAAKjC,KAAL,CAAWK,UAAX,CAAsB4B,GAAtB,EAA2Bl/K,IAA3B;AACD,KAFD;AAGA,SAAK+8J,SAAL,CAAe/8J,IAAf;AACD;;AAED2/K,YAAU,CAAC3/K,IAAD,EAAO;AACf,SAAKw+K,UAAL,CAAgB3iL,IAAhB,CAAqBmE,IAArB;AACD;;AAEDigL,wBAAsB,CAAC39B,SAAD,EAAYC,SAAZ,EAAuB;AAC3C,QAAII,MAAM,GAAG,IAAItxI,GAAJ,CAAQ,CAAC,GAAGixI,SAAS,CAACz2I,IAAV,EAAJ,EAAsB,GAAG02I,SAAS,CAAC12I,IAAV,EAAzB,CAAR,CAAb;AAEA,SAAKywK,gBAAL,GAH2C,CAI3C;AACA;;AACA,SAAK/d,KAAL,CAAWr1J,OAAX,CAAmB0hB,IAAI,IAAI;AACzB,UACEA,IAAI,CAACwmH,GAAL,IACAxmH,IAAI,CAACwmH,GAAL,CAAS/xG,KAAT,CAAewyH,YAAf,CAA4B5zJ,IAA5B,CAAiCihL,GAAG,IAAIv8B,MAAM,CAAC3zI,GAAP,CAAWkwK,GAAX,CAAxC,CAFF,EAGE;AACA,aAAKS,UAAL,CAAgB/0J,IAAI,CAAC5qB,IAArB;AACD;AACF,KAPD;AAQA,SAAK08K,cAAL;AACD;;AA1c8B,C;;;;;;;;;;;ACRjC,SAASlT,aAAT,CAAuBxpK,IAAvB,EAA6B;AAC3B,MAAIk8I,GAAG,GAAGl8I,IAAI,CAACgF,OAAL,CAAa,GAAb,CAAV;;AACA,MAAIk3I,GAAG,KAAK,CAAC,CAAb,EAAgB;AACd,WAAO;AACL/P,WAAK,EAAEnsI,IAAI,CAAChB,KAAL,CAAW,CAAX,EAAck9I,GAAd,CADF;AAELl8I,UAAI,EAAEA,IAAI,CAAChB,KAAL,CAAWk9I,GAAG,GAAG,CAAjB;AAFD,KAAP;AAID;;AACD,SAAO;AAAE/P,SAAK,EAAE,IAAT;AAAensI;AAAf,GAAP;AACD;;AAED,SAASmpJ,WAAT,CAAqBhd,KAArB,EAA4BnsI,IAA5B,EAAkC;AAChC,SAAOmsI,KAAK,GAAG,GAAR,GAAcnsI,IAArB;AACD;;AAED,SAASkgL,qBAAT,CAA+BC,MAA/B,EAAuC;AACrC,QAAMvB,KAAK,GAAG,EAAd;AACAhlL,QAAM,CAACiS,IAAP,CAAYs0K,MAAZ,EAAoBj3K,OAApB,CAA4B4/H,SAAS,IAAI;AACvC,UAAMqD,KAAK,GAAGg0C,MAAM,CAACr3C,SAAD,CAApB;AAEAlvI,UAAM,CAACiS,IAAP,CAAYsgI,KAAZ,EAAmBjjI,OAAnB,CAA2BlJ,IAAI,IAAI;AACjC,YAAM+8H,IAAI,GAAGoP,KAAK,CAACnsI,IAAD,CAAlB;AACA4+K,WAAK,CAACz1B,WAAW,CAACrgB,SAAD,EAAY9oI,IAAZ,CAAZ,CAAL,GAAsC+8H,IAAtC;AACD,KAHD;AAID,GAPD;AAQA,SAAO6hD,KAAP;AACD;;AAED,SAASwB,oBAAT,CAA8BD,MAA9B,EAAsC;AACpC,QAAMvB,KAAK,GAAG,EAAd;AACAhlL,QAAM,CAACiS,IAAP,CAAYs0K,MAAZ,EAAoBj3K,OAApB,CAA4B4/H,SAAS,IAAI;AACvC,UAAMqD,KAAK,GAAGg0C,MAAM,CAACr3C,SAAD,CAApB;AAEAqD,SAAK,CAACjjI,OAAN,CAAclJ,IAAI,IAAI;AACpB,YAAM+8H,IAAI,GAAGoP,KAAK,CAACnsI,IAAD,CAAlB;AACA4+K,WAAK,CAAC/iL,IAAN,CAAWstJ,WAAW,CAACrgB,SAAD,EAAY9oI,IAAZ,CAAtB;AACD,KAHD;AAID,GAPD;AAQA,SAAO4+K,KAAP;AACD;;AAED5mK,MAAM,CAACC,OAAP,GAAiB;AACfuxJ,eADe;AAEfrgB,aAFe;AAGf+2B,uBAHe;AAIfE;AAJe,CAAjB,C;;;;;;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AACA,eAAoBhoK,mBAAO,CAAC,4DAAD,CAA3B;AAAA,IAAM+wJ,SAAN,YAAMA,SAAN;;AACA,IAAIM,MAAM,GAAGrxJ,mBAAO,CAAC,8EAAD,CAApB;;AAEA,SAASioK,YAAT,CAAsB9pL,KAAtB,EAA6B;AAC3B;AACA;AACA;AACA;AACA,MAAI,CAAC6iB,MAAM,CAACC,QAAP,CAAgB9iB,KAAhB,CAAL,EAA6B;AAC3B,WAAO6iB,MAAM,CAACre,IAAP,CAAYxE,KAAZ,CAAP;AACD;;AACD,SAAOA,KAAP;AACD;;AAEM,eAAe+pL,MAAf,CAAsBh5C,OAAtB,EAA+Bm5B,MAA/B,EAAuC7jB,KAAvC,EAA8Cs4B,QAA9C,EAAwD;AAC7D,wBAAuB7nC,+CAAA,EAAvB;AAAA,MAAMkzB,YAAN,mBAAMA,YAAN;;AACA,MAAIggB,SAAS,GAAG,IAAI9W,MAAM,CAAC+W,WAAX,EAAhB;;AAEA,OAAK,IAAI3qK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq/J,QAAQ,CAACl4K,MAA7B,EAAqC6Y,CAAC,EAAtC,EAA0C;AACxC,QAAIqK,GAAG,GAAGg1J,QAAQ,CAACr/J,CAAD,CAAlB;AACA,QAAI4qK,UAAU,GAAG,IAAIhX,MAAM,CAACiX,eAAX,EAAjB;AACAD,cAAU,CAACE,YAAX,CAAwBzgK,GAAG,CAAC9Z,SAA5B;AAEA,QAAIw6K,SAAS,GAAG,IAAInX,MAAM,CAACn4D,OAAX,EAAhB;AACAsvE,aAAS,CAACC,UAAV,CAAqB3gK,GAAG,CAACwpI,OAAzB;AACAk3B,aAAS,CAACE,MAAV,CAAiB5gK,GAAG,CAAC81H,GAArB;AACA4qC,aAAS,CAACG,SAAV,CAAoB7gK,GAAG,CAAC0kB,MAAxB;AACAg8I,aAAS,CAACI,QAAV,CAAmB9gK,GAAG,CAAC3pB,KAAvB;AACA,QAAI0qL,SAAS,GAAGL,SAAS,CAACtwE,eAAV,EAAhB;;AAEA,QAAIiwD,YAAJ,EAAkB;AAChB,UAAI+B,SAAS,GAAG,IAAImH,MAAM,CAACyX,aAAX,EAAhB;AAEA,UAAIn2K,MAAJ;;AACA,UAAI;AACFA,cAAM,GAAG,MAAM41J,mDAAU,CAACh1I,OAAX,CAAmBs1J,SAAnB,EAA8B1gB,YAA9B,CAAf;AACD,OAFD,CAEE,OAAOjgJ,CAAP,EAAU;AACV,cAAM,IAAI6oJ,SAAJ,CAAc,iBAAd,EAAiC;AACrC5G,sBAAY,EAAEjiJ,CAAC,CAAC2kB,OAAF,KAAc;AADS,SAAjC,CAAN;AAGD;;AAEDq9H,eAAS,CAACzmJ,OAAV,CAAkB9Q,MAAM,CAACxU,KAAzB;AACA+rK,eAAS,CAAC6e,KAAV,CAAgB/nK,MAAM,CAACre,IAAP,CAAYgQ,MAAM,CAACsyE,IAAP,CAAYkqF,EAAxB,EAA4B,QAA5B,CAAhB;AACAjF,eAAS,CAAC8e,UAAV,CAAqBhoK,MAAM,CAACre,IAAP,CAAYgQ,MAAM,CAACsyE,IAAP,CAAYsqF,OAAxB,EAAiC,QAAjC,CAArB;AAEA8Y,gBAAU,CAACY,UAAX,CAAsB/e,SAAS,CAAChyD,eAAV,EAAtB;AACAmwE,gBAAU,CAACa,cAAX,CAA0B,IAA1B;AACD,KAlBD,MAkBO;AACLb,gBAAU,CAACY,UAAX,CAAsBJ,SAAtB;AACD;;AAEDV,aAAS,CAACgB,WAAV,CAAsBd,UAAtB;AACD;;AAEDF,WAAS,CAACiB,UAAV,CAAqBl6C,OAArB;AACAi5C,WAAS,CAACkB,SAAV,CAAoBhhB,MAApB;AACA8f,WAAS,CAACmB,QAAV,CAAmBnhB,YAAnB;AACAggB,WAAS,CAACoB,QAAV,CAAmB/kC,KAAnB;AAEA,SAAO2jC,SAAS,CAACjwE,eAAV,EAAP;AACD;AAEM,eAAesxE,MAAf,CAAsBvjL,IAAtB,EAA4B;AACjC,yBAAuBgvI,+CAAA,EAAvB;AAAA,MAAMkzB,YAAN,oBAAMA,YAAN;;AAEA,MAAIshB,UAAU,GAAGpY,MAAM,CAACqY,YAAP,CAAoBvxE,iBAApB,CAAsClyG,IAAtC,CAAjB;AACA,MAAIiyK,MAAM,GAAG1rK,IAAI,CAAC0G,KAAL,CAAWu2K,UAAU,CAACE,SAAX,EAAX,CAAb;AACA,MAAIrqK,IAAI,GAAGmqK,UAAU,CAACG,eAAX,EAAX;AACA,MAAI9M,QAAQ,GAAG,EAAf;;AAEA,OAAK,IAAIr/J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6B,IAAI,CAAC1a,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAI4qK,UAAU,GAAG/oK,IAAI,CAAC7B,CAAD,CAArB;AACA,QAAIzP,SAAS,GAAGq6K,UAAU,CAACwB,YAAX,EAAhB;AACA,QAAI3f,SAAS,GAAGme,UAAU,CAACyB,cAAX,EAAhB;AACA,QAAIhiK,GAAJ;;AAEA,QAAIoiJ,SAAJ,EAAe;AACb,UAAI6f,MAAM,GAAG1Y,MAAM,CAACyX,aAAP,CAAqB3wE,iBAArB,CACXkwE,UAAU,CAAC2B,UAAX,EADW,CAAb;AAIA,UAAIna,SAAJ;;AACA,UAAI;AACFA,iBAAS,GAAG,MAAMtH,mDAAU,CAACn1I,OAAX,CAAmB60J,YAAY,CAAC8B,MAAM,CAACvnK,OAAP,EAAD,CAA/B,EAAmD;AACnEqmJ,eAAK,EAAEV,YAD4D;AAEnEsH,mBAAS,EAAE,aAFwD;AAGnEN,YAAE,EAAE8Y,YAAY,CAAC8B,MAAM,CAACE,KAAP,EAAD,CAHmD;AAInE1a,iBAAO,EAAE0Y,YAAY,CAAC8B,MAAM,CAACG,UAAP,EAAD;AAJ8C,SAAnD,CAAlB;AAMD,OAPD,CAOE,OAAOhiK,CAAP,EAAU;AACVoR,eAAO,CAACsrE,GAAR,CAAY18E,CAAZ;AACA,cAAM,IAAI6oJ,SAAJ,CAAc,iBAAd,EAAiC;AACrC5G,sBAAY,EAAEjiJ,CAAC,CAAC2kB,OAAF,KAAc;AADS,SAAjC,CAAN;AAGD;;AAED/kB,SAAG,GAAGupJ,MAAM,CAACn4D,OAAP,CAAef,iBAAf,CAAiC03D,SAAjC,CAAN;AACD,KArBD,MAqBO;AACL/nJ,SAAG,GAAGupJ,MAAM,CAACn4D,OAAP,CAAef,iBAAf,CAAiCkwE,UAAU,CAAC2B,UAAX,EAAjC,CAAN;AACD;;AAEDlN,YAAQ,CAACr5K,IAAT,CAAc;AACZuK,eAAS,EAAEA,SADC;AAEZsjJ,aAAO,EAAExpI,GAAG,CAACqiK,UAAJ,EAFG;AAGZvsC,SAAG,EAAE91H,GAAG,CAACsiK,MAAJ,EAHO;AAIZ59I,YAAM,EAAE1kB,GAAG,CAACuiK,SAAJ,EAJI;AAKZlsL,WAAK,EAAE2pB,GAAG,CAACuoH,QAAJ;AALK,KAAd;AAOD;;AAED,SAAO;AAAEysC,YAAF;AAAY5E;AAAZ,GAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;;AAEA,iBAAiCl4J,mBAAO,CAAC,4DAAD,CAAxC;AAAA,MAAQ4oJ,SAAR,YAAQA,SAAR;AAAA,MAAmBmI,SAAnB,YAAmBA,SAAnB;;AACA,MAAMxjB,UAAU,GAAGvtI,mBAAO,CAAC,0GAAD,CAA1B;;AAEA,IAAIsqK,eAAe,GAAG,IAAtB;AACA,IAAIC,YAAY,GAAG,SAAnB;AAEO,SAASj2C,cAAT,CAAwBruH,IAAxB,EAA8B;AACnC,MAAIqnI,QAAQ,GAAGi9B,YAAf;;AACA,UAAQtkK,IAAR;AACE,SAAK,SAAL;AACEskK,kBAAY,GAAG,SAAf;AACA;;AACF,SAAK,SAAL;AACEA,kBAAY,GAAG,SAAf;AACA;;AACF,SAAK,UAAL;AACEA,kBAAY,GAAG,UAAf;AACA;;AACF,SAAK,QAAL;AACEA,kBAAY,GAAG,QAAf;AACA;;AACF;AACE,YAAM,IAAInnL,KAAJ,CAAU,mCAAmC6iB,IAA7C,CAAN;AAdJ;;AAgBA,SAAOqnI,QAAP;AACD;AAEM,SAASk9B,gBAAT,CAA0BvkK,IAA1B,EAAgC;AACrC,UAAQA,IAAR;AACE,SAAK,SAAL;AACE,aAAOskK,YAAY,KAAK,SAAjB,IAA8BA,YAAY,KAAK,SAAtD;;AACF,SAAK,UAAL;AACE,aAAOA,YAAY,KAAK,UAAjB,IAA+BA,YAAY,KAAK,QAAvD;;AACF,SAAK,SAAL;AACE,aAAOA,YAAY,KAAK,SAAxB;;AACF,SAAK,QAAL;AACE,aAAOA,YAAY,KAAK,QAAxB;;AACF;AACE,YAAM,IAAInnL,KAAJ,CAAU,qCAAqC6iB,IAA/C,CAAN;AAVJ;AAYD;;;;;;;;AAMD,SAASwb,KAAT,CAAe3Z,GAAf,EAAoBhpB,IAApB,EAA0B;AACxB,MAAMwyJ,OAAN,GAAsCxpI,GAAtC,CAAMwpI,OAAN;AAAA,MAAe1T,GAAf,GAAsC91H,GAAtC,CAAe81H,GAAf;AAAA,MAAoBpxG,MAApB,GAAsC1kB,GAAtC,CAAoB0kB,MAApB;AAAA,MAA4BruC,KAA5B,GAAsC2pB,GAAtC,CAA4B3pB,KAA5B;;AAEA,MAAImzJ,OAAO,KAAK,OAAhB,EAAyB,CACvB;AACD,GAFD,MAEO;AACL,QAAI;AACF,UAAItsB,KAAJ;;AACA,UAAIlmI,IAAJ,EAAU;AACRkmI,aAAK,GAAG;AACNgU,aAAG,EAAE5I,yCAAA,CAAU,UAASkhB,OAAQ,QAAO9kH,MAAO,mBAAzC,CADC;AAENysG,gBAAM,EAAE,CAAC96I,KAAD,EAAQy/I,GAAR;AAFF,SAAR;AAID,OALD,MAKO;AACL5Y,aAAK,GAAG;AACNgU,aAAG,EAAE5I,yCAAA,CAAU,eAAckhB,OAAQ,SAAQ9kH,MAAO,iBAA/C,CADC;AAENysG,gBAAM,EAAE,CAAC2E,GAAD,EAAMz/I,KAAN;AAFF,SAAR;AAID;;AAEDiyI,kDAAA,CAAYpL,KAAK,CAACgU,GAAlB,EAAuBhU,KAAK,CAACiU,MAA7B;AACD,KAfD,CAeE,OAAO/wH,CAAP,EAAU;AACV;AACA,YAAM,IAAI6oJ,SAAJ,CAAc,gBAAd,CAAN;AACD;AACF;AACF;;AAED,eAAe73B,QAAf,CAAwBvT,KAAxB,EAA+B0nB,GAA/B,EAAoC;AAClC,MAAI7vI,OAAO,GAAG,EAAd,CADkC,CAGlC;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4vI,GAAG,CAACzoJ,MAAxB,EAAgC6Y,CAAC,IAAI,GAArC,EAA0C;AACxC,QAAIgtK,OAAO,GAAGp9B,GAAG,CAACzmJ,KAAJ,CAAU6W,CAAV,EAAaA,CAAC,GAAG,GAAjB,CAAd;AACA,QAAIu7H,GAAJ;AACA,QAAIxsG,MAAM,GAAI,GAAEm5F,KAAM,KAAtB,CAHwC,CAKxC;AACA;AACA;AACA;;AACA,QAAIA,KAAK,KAAK,cAAd,EAA8B;AAC5BqT,SAAG,GAAI;AACb;AACA;AACA;AACA,OAJM;AAKAxsG,YAAM,GAAG,MAAT;AACD,KAPD,MAOO;AACLwsG,SAAG,GAAI,iBAAgBrT,KAAM,EAA7B;AACD;;AAEDqT,OAAG,IAAK,SAAR;AACAA,OAAG,IAAIyxC,OAAO,CAAC9oL,GAAR,CAAYskI,EAAE,IAAK,GAAEz5F,MAAO,MAA5B,EAAmC7sB,IAAnC,CAAwC,MAAxC,CAAP;;AAEA,QAAI;AACF,UAAIguI,IAAI,GAAG,MAAMvd,4CAAA,CAAY4I,GAAZ,EAAiByxC,OAAjB,EAA0B,IAA1B,CAAjB;AACAjtK,aAAO,GAAGA,OAAO,CAACoe,MAAR,CAAe+xH,IAAf,CAAV;AACD,KAHD,CAGE,OAAOzlI,CAAP,EAAU;AACV,YAAM,IAAI6oJ,SAAJ,CAAc,gBAAd,CAAN;AACD;AACF;;AAED,SAAOvzJ,OAAP;AACD;;AAEM,SAASktK,cAAT,CAAwBvsL,KAAxB,EAA+B;AACpC,MAAIA,KAAK,KAAK,IAAd,EAAoB;AAClB,WAAO,IAAP;AACD,GAFD,MAEO,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AACpC,WAAO,OAAOA,KAAd;AACD,GAFM,MAEA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AACpC,WAAO,OAAOA,KAAd;AACD;;AAED,QAAM,IAAIiF,KAAJ,CAAU,gCAAgCoJ,IAAI,CAACC,SAAL,CAAetO,KAAf,CAA1C,CAAN;AACD;AAEM,SAASwsL,gBAAT,CAA0BxsL,KAA1B,EAAiC;AACtC,QAAM4c,IAAI,GAAG5c,KAAK,CAAC,CAAD,CAAlB;;AACA,UAAQ4c,IAAR;AACE,SAAK,GAAL;AACE,aAAO,IAAP;;AACF,SAAK,GAAL;AACE,aAAOyD,UAAU,CAACrgB,KAAK,CAACyI,KAAN,CAAY,CAAZ,CAAD,CAAjB;;AACF,SAAK,GAAL;AACE,aAAOzI,KAAK,CAACyI,KAAN,CAAY,CAAZ,CAAP;;AACF;AAPF;;AAUA,QAAM,IAAIxD,KAAJ,CAAU,iCAAiCjF,KAA3C,CAAN;AACD;AAED,IAAIysL,cAAc,GAAG,EAArB;AAEO,SAAShhC,eAAT,CAAyBvoH,IAAzB,EAA+B;AACpCupJ,gBAAc,CAACnnL,IAAf,CAAoB49B,IAApB;;AAEA,SAAO,MAAM;AACXupJ,kBAAc,GAAGA,cAAc,CAACvlL,MAAf,CAAsBomC,CAAC,IAAIA,CAAC,KAAKpK,IAAjC,CAAjB;AACD,GAFD;AAGD;;AAED,eAAewpJ,eAAf,CAA+B/N,QAA/B,EAAyC;AACvC,MAAIgO,WAAW,GAAG,EAAlB;;AAEA,OAAK,IAAIrtK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq/J,QAAQ,CAACl4K,MAA7B,EAAqC6Y,CAAC,EAAtC,EAA0C;AACxC,QAAIovB,OAAO,GAAGiwI,QAAQ,CAACr/J,CAAD,CAAtB;AACA,QAAM6zI,OAAN,GAA0CzkH,OAA1C,CAAMykH,OAAN;AAAA,QAAe1T,GAAf,GAA0C/wG,OAA1C,CAAe+wG,GAAf;AAAA,QAAoBpxG,MAApB,GAA0CK,OAA1C,CAAoBL,MAApB;AAAA,QAA4Bx+B,SAA5B,GAA0C6+B,OAA1C,CAA4B7+B,SAA5B;AACA,QAAI+8K,YAAY,GAAG/8K,SAAS,CAACwN,QAAV,EAAnB;AAEA,QAAI64G,GAAG,GAAG+b,4CAAA,CACRA,yCAAA,CACE,qGADF,CADQ,EAIR,CAACkhB,OAAD,EAAU1T,GAAV,EAAepxG,MAAf,EAAuBu+I,YAAvB,CAJQ,EAKR,IALQ,CAAV,CALwC,CAaxC;AACA;;AACA,QAAI12D,GAAG,CAACzvH,MAAJ,KAAe,CAAnB,EAAsB;AACpBkmL,iBAAW,CAACrnL,IAAZ,CAAiBopC,OAAjB;AACD,KAFD,MAEO,IAAIwnF,GAAG,CAAC,CAAD,CAAH,CAAOrmH,SAAP,KAAqB+8K,YAAzB,EAAuC;AAC5CD,iBAAW,CAACrnL,IAAZ,iCAAsBopC,OAAtB;AAA+B24H,WAAG,EAAE;AAApC;AACD;AACF;;AAED,SAAOslB,WAAP;AACD,C,CAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,sBAAT,CAAgClO,QAAhC,EAA0C;AACxC1sC,iDAAA,CAAe,MAAM;AACnB,SAAK,IAAI3yH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq/J,QAAQ,CAACl4K,MAA7B,EAAqC6Y,CAAC,EAAtC,EAA0C;AACxC,UAAIqK,GAAG,GAAGg1J,QAAQ,CAACr/J,CAAD,CAAlB;AACA,UAAM6zI,OAAN,GAAiDxpI,GAAjD,CAAMwpI,OAAN;AAAA,UAAe1T,GAAf,GAAiD91H,GAAjD,CAAe81H,GAAf;AAAA,UAAoBpxG,MAApB,GAAiD1kB,GAAjD,CAAoB0kB,MAApB;AAAA,UAA4Bx+B,SAA5B,GAAiD8Z,GAAjD,CAA4B9Z,SAA5B;AAAA,UAAuC7P,KAAvC,GAAiD2pB,GAAjD,CAAuC3pB,KAAvC;;AAEA,UAAI,CAAC2pB,GAAG,CAAC09I,GAAT,EAAc;AACZ,YAAI;AACF/jI,eAAK,CAAC3Z,GAAD,CAAL;AACD,SAFD,CAEE,OAAOI,CAAP,EAAU;AACVuZ,eAAK,CAAC3Z,GAAD,EAAM,IAAN,CAAL;AACD;;AAED,YAAIwpI,OAAO,KAAK,OAAhB,EAAyB;AACvB,gBAAM,IAAIluJ,KAAJ,CAAU,kCAAV,CAAN;AACD;AACF;AACF;AACF,GAjBD;AAkBD;;AAEM,MAAM6nL,aAAa,GAAGpP,gEAAU,CAAC,MAAMiB,QAAN,IAAkB;AACxD,MAAI0N,gBAAgB,CAAC,QAAD,CAApB,EAAgC;AAC9B,WAAOQ,sBAAsB,CAAClO,QAAD,CAA7B;AACD,GAFD,MAEO,IAAI0N,gBAAgB,CAAC,SAAD,CAApB,EAAiC;AACtC;AACA;AACA;AACA;AACA1N,YAAQ,GAAG,MAAM+N,eAAe,CAAC/N,QAAD,CAAhC;AACD;;AAEDA,UAAQ,GAAG,CAAC,GAAGA,QAAJ,EAAc13K,IAAd,CAAmB,CAAC60K,EAAD,EAAKC,EAAL,KAAY;AACxC,QAAIgR,EAAE,GAAGjR,EAAE,CAACjsK,SAAH,GAAeisK,EAAE,CAACjsK,SAAH,CAAawN,QAAb,EAAf,GAAyC,EAAlD;AACA,QAAI2vK,EAAE,GAAGjR,EAAE,CAAClsK,SAAH,GAAeksK,EAAE,CAAClsK,SAAH,CAAawN,QAAb,EAAf,GAAyC,EAAlD;;AACA,QAAI0vK,EAAE,GAAGC,EAAT,EAAa;AACX,aAAO,CAAC,CAAR;AACD,KAFD,MAEO,IAAID,EAAE,GAAGC,EAAT,EAAa;AAClB,aAAO,CAAP;AACD;;AACD,WAAO,CAAP;AACD,GATU,CAAX;AAWA,MAAIC,WAAW,GAAG,EAAlB;AACAtO,UAAQ,CAAChsK,OAAT,CAAiBgX,GAAG,IAAI;AACtB,QAAIA,GAAG,CAACwpI,OAAJ,KAAgB,OAApB,EAA6B;AAC3B;AACD;;AAED,QAAI85B,WAAW,CAACtjK,GAAG,CAACwpI,OAAL,CAAX,IAA4B,IAAhC,EAAsC;AACpC85B,iBAAW,CAACtjK,GAAG,CAACwpI,OAAL,CAAX,GAA2B,EAA3B;AACD;;AACD85B,eAAW,CAACtjK,GAAG,CAACwpI,OAAL,CAAX,CAAyB7tJ,IAAzB,CAA8BqkB,GAAG,CAAC81H,GAAlC;AACD,GATD;;AAWA,iBAAeytC,SAAf,GAA2B;AACzB,QAAIplL,IAAI,GAAG,IAAIwM,GAAJ,EAAX;;AAEA,SAAK,IAAIkzH,KAAT,IAAkBnkI,MAAM,CAACiS,IAAP,CAAY23K,WAAZ,CAAlB,EAA4C;AAC1C,YAAMz9B,IAAI,GAAG,MAAMzU,QAAQ,CAACvT,KAAD,EAAQylD,WAAW,CAACzlD,KAAD,CAAnB,CAA3B;;AAEA,WAAK,IAAIloH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkwI,IAAI,CAAC/oJ,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,YAAImgI,GAAG,GAAG+P,IAAI,CAAClwI,CAAD,CAAd;AACA6tK,mEAAK,CAACrlL,IAAD,EAAO,CAAC0/H,KAAD,EAAQiY,GAAG,CAAC3X,EAAZ,CAAP,EAAwB2X,GAAxB,CAAL;AACD;AACF;;AAED,WAAO33I,IAAP;AACD;;AAED,MAAIiuK,UAAU,GAAG,EAAjB;AACA,MAAIqX,OAAO,GAAG,MAAMF,SAAS,EAA7B;AAEAzZ,uDAAA,CAAoBkL,QAApB,EAA8ByO,OAA9B,EApDwD,CAsDxD;AACA;AACA;AACA;;AACA,MAAItgB,KAAJ;AACA,MAAIugB,aAAJ;;AACA,MAAIhB,gBAAgB,CAAC,SAAD,CAApB,EAAiC;AAC/Bvf,SAAK,GAAG7Z,4DAAQ,EAAhB;AACAo6B,iBAAa,GAAGvgB,KAAK,CAACiN,MAAtB;AACD;;AAED,MAAInkC,0CAAA,EAAJ,EAAiB;AACfA,8CAAA,GAAYwyB,iBAAZ;AACD,GAnEuD,CAqExD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAn2B,iDAAA,CAAe,MAAM;AACnB,QAAI8C,KAAK,GAAG,IAAIj6H,GAAJ,EAAZ;;AAEA,SAAK,IAAIwE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq/J,QAAQ,CAACl4K,MAA7B,EAAqC6Y,CAAC,EAAtC,EAA0C;AACxC,UAAIqK,GAAG,GAAGg1J,QAAQ,CAACr/J,CAAD,CAAlB;AACA,UAAM6zI,OAAN,GAAiDxpI,GAAjD,CAAMwpI,OAAN;AAAA,UAAe1T,GAAf,GAAiD91H,GAAjD,CAAe81H,GAAf;AAAA,UAAoBpxG,MAApB,GAAiD1kB,GAAjD,CAAoB0kB,MAApB;AAAA,UAA4Bx+B,SAA5B,GAAiD8Z,GAAjD,CAA4B9Z,SAA5B;AAAA,UAAuC7P,KAAvC,GAAiD2pB,GAAjD,CAAuC3pB,KAAvC;;AAEA,UAAI,CAAC2pB,GAAG,CAAC09I,GAAT,EAAc;AACZ/jI,aAAK,CAAC3Z,GAAD,EAAM2jK,2DAAK,CAACF,OAAD,EAAU,CAACj6B,OAAD,EAAU1T,GAAV,CAAV,CAAL,IAAkC1K,KAAK,CAACt8H,GAAN,CAAU06I,OAAO,GAAG1T,GAApB,CAAxC,CAAL;;AAEA,YAAI0T,OAAO,KAAK,OAAhB,EAAyB;AACvB4iB,oBAAU,CAACt2B,GAAD,CAAV,GAAkBz/I,KAAlB;AACD,SAFD,MAEO;AACL;AACA;AACA;AACA+0I,eAAK,CAACvyI,GAAN,CAAU2wJ,OAAO,GAAG1T,GAApB;AACD;AACF;;AAED,UAAI4sC,gBAAgB,CAAC,SAAD,CAApB,EAAiC;AAC/Bp6C,oDAAA,CACEA,yCAAA,CAAU;AACpB,kCADU,CADF,EAGE,CAACpiI,SAAS,CAACwN,QAAV,EAAD,EAAuB81I,OAAvB,EAAgC1T,GAAhC,EAAqCpxG,MAArC,EAA6Ck+I,cAAc,CAACvsL,KAAD,CAA3D,CAHF;AAMAqtL,qBAAa,GAAGtT,+CAAA,CAAcsT,aAAd,EAA6B1jK,GAAG,CAAC9Z,SAAjC,CAAhB;AACD;AACF;;AAED,QAAIw8K,gBAAgB,CAAC,SAAD,CAApB,EAAiC;AAC/BgB,mBAAa,GAAGtT,8CAAA,CAAasT,aAAb,CAAhB,CAD+B,CAG/B;AACA;;AACAp7C,kDAAA,CACEA,yCAAA,CACE,iEADF,CADF,EAIE,CAACm7B,kEAAc,iCAAMN,KAAN;AAAaiN,cAAM,EAAEsT;AAArB,SAAf,CAJF;AAMD;AACF,GA3CD;;AA6CA,MAAIhB,gBAAgB,CAAC,SAAD,CAApB,EAAiC;AAC/B;AACA;AACAvf,SAAK,CAACiN,MAAN,GAAesT,aAAf;AACD,GA7HuD,CA+HxD;;;AACA,MAAIhqL,MAAM,CAACiS,IAAP,CAAYygK,UAAZ,EAAwBtvK,MAAxB,GAAiC,CAArC,EAAwC;AACtCqwI,oDAAA,CAAgBi/B,UAAhB,EAA4B;AAAE2I,eAAS,EAAE;AAAb,KAA5B;;AAEA,QAAI3I,UAAU,CAAC3S,UAAf,EAA2B;AACzBmqB,mEAAa,CAACxX,UAAU,CAAC3S,UAAZ,CAAb;AACD;;AAEDhU,cAAU,CAACvnF,IAAX,CAAgB,eAAhB;AACD;;AAED,MAAI2lH,OAAO,GAAG,MAAMN,SAAS,EAA7B,CA1IwD,CA4IxD;;AACA,MAAIt3C,0CAAA,EAAJ,EAAiB;AACf;AACAA,2DAAA;AACAwxB,8EAAoB,CAACgmB,OAAD,EAAUI,OAAV,CAApB;AACA53C,8CAAA,GAAY8zC,sBAAZ,CAAmC0D,OAAnC,EAA4CI,OAA5C;AACA53C,yDAAA,GALe,CAOf;AACA;;AACAA,8CAAA,GAAY0yB,eAAZ;AACD;;AAEDmkB,gBAAc,CAAC95K,OAAf,CAAuBuwB,IAAI,IAAIA,IAAI,CAACkqJ,OAAD,EAAUI,OAAV,CAAnC;;AAEA,MAAIphC,MAAM,GAAGqhC,qBAAqB,CAAC9O,QAAQ,CAACz3K,MAAT,CAAgByiB,GAAG,IAAI,CAACA,GAAG,CAAC09I,GAA5B,CAAD,CAAlC;AACAnS,mDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AACtBvxB,QAAI,EAAE,SADgB;AAEtBwvI,UAFsB;AAGtBtkJ,QAAI,EAAE0lL,OAHgB;AAItBE,YAAQ,EAAEN;AAJY,GAAxB;AAOA,SAAOzO,QAAP;AACD,CApKsC,CAAhC;AAsKA,SAASgP,eAAT,CAAyBhP,QAAzB,EAAmC;AACxCA,UAAQ,CAAChsK,OAAT,CAAiBgX,GAAG,IAAI;AACtBsjJ,uDAAS,CAAC2gB,IAAV,CAAejkK,GAAG,CAAC9Z,SAAnB;AACD,GAFD;AAIA,SAAOgmI,6DAAU,CAAC,MAAMi3C,aAAa,CAACnO,QAAD,CAApB,CAAjB;AACD;;AAED,eAAekP,aAAf,CAA6BlP,QAA7B,EAAuC;AACrC,MAAI;AACF,UAAMmO,aAAa,CAACnO,QAAD,CAAnB;AACD,GAFD,CAEE,OAAO50J,CAAP,EAAU;AACV,QAAIA,CAAC,YAAY6oJ,SAAjB,EAA4B;AAC1B,UAAI7oJ,CAAC,CAACogJ,MAAF,KAAa,gBAAjB,EAAmC;AACjC;AACA;AACA;AACA;AACAjV,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AACtBvxB,cAAI,EAAE,OADgB;AAEtB0lK,iBAAO,EAAE;AAFa,SAAxB;AAID,OATD,MASO;AACLptB,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AAAEvxB,cAAI,EAAE;AAAR,SAAxB;AACD;AACF;;AAED,UAAMmN,CAAN;AACD;;AAED,QAAM+jK,gBAAgB,EAAtB;AACD;;AAED,IAAIC,WAAW,GAAG,KAAlB;AACA,IAAIC,QAAQ,GAAG,EAAf;AACO,eAAel4C,aAAf,CAA6B5yG,IAA7B,EAAmC;AACxC,MAAI6qJ,WAAJ,EAAiB;AACf,UAAM7qJ,IAAI,EAAV;AACA;AACD;;AAED6qJ,aAAW,GAAG,IAAd;AACA,MAAIE,OAAO,GAAG,EAAd;;AAEA,MAAI;AACF,UAAM/qJ,IAAI,EAAV,CADE,CAEF;AACD,GAHD,SAGU;AACR6qJ,eAAW,GAAG,KAAd;AACAE,WAAO,GAAGD,QAAV;AACAA,YAAQ,GAAG,EAAX;AACD;;AAED,MAAIC,OAAO,CAACxnL,MAAR,GAAiB,CAArB,EAAwB;AACtB,UAAMonL,aAAa,CAACI,OAAD,CAAnB;AACD;AACF;AAEM,eAAevgB,YAAf,CAA4BiR,QAA5B,EAAsC;AAC3C,MAAIoP,WAAJ,EAAiB;AACfC,YAAQ,GAAGA,QAAQ,CAACvwJ,MAAT,CAAgBkhJ,QAAhB,CAAX;AACD,GAFD,MAEO;AACL,WAAOkP,aAAa,CAAClP,QAAD,CAApB;AACD;AACF;AAEM,SAASuP,gBAAT,CAA0B7nC,KAA1B,EAAiC;AACtC,SAAOpU,4CAAA,CACL,sFADK,EAEL,CAACoU,KAAD,CAFK,EAGL,IAHK,CAAP;AAKD;AAEM,eAAeyzB,sBAAf,CAAsC6E,QAAtC,EAAgDt4B,KAAhD,EAAuD;AAC5D,MAAI8nC,aAAa,GAAG,MAAMD,gBAAgB,CAAC7nC,KAAD,CAA1C;AACA,QAAMsnC,eAAe,CACnBhP,QAAQ,CAACn7K,GAAT,CAAammB,GAAG,oCACXA,GADW;AAEd3pB,SAAK,EAAEwsL,gBAAgB,CAAC7iK,GAAG,CAAC3pB,KAAL,CAFT;AAGd6P,aAAS,EAAEo9J,mDAAS,CAACl4J,KAAV,CAAgB4U,GAAG,CAAC9Z,SAApB;AAHG,IAAhB,CADmB,CAArB;AAOA,SAAOs+K,aAAP;AACD;AAEM,SAAS7W,oBAAT,GAAgC;AACrC,MAAI8W,WAAJ,EAAiB;AACfpwG,gBAAY,CAACowG,WAAD,CAAZ;AACAA,eAAW,GAAG,IAAd;AACD;AACF;AAED,IAAIA,WAAW,GAAG,IAAlB;AACO,SAASN,gBAAT,GAA4B;AACjCxW,sBAAoB;;AAEpB,MAAI+U,gBAAgB,CAAC,SAAD,CAAhB,IAA+B,CAACA,gBAAgB,CAAC,SAAD,CAApD,EAAiE;AAC/D,QAAIpqJ,MAAM,CAACg2I,WAAX,EAAwB;AACtB,aAAOxB,QAAQ,GAAGrrJ,IAAX,CAAgB8qG,GAAG,IAAI;AAC5B,YAAIA,GAAG,CAAC/sF,KAAR,EAAe;AACb,gBAAM+sF,GAAG,CAAC/sF,KAAV;AACD;;AACD,eAAO+sF,GAAP;AACD,OALM,CAAP;AAMD,KAPD,MAOO;AACLk4D,iBAAW,GAAGjhH,UAAU,CAACspG,QAAD,EAAW0V,eAAX,CAAxB;AACD;AACF;AACF;;AAED,SAASsB,qBAAT,CAA+B9O,QAA/B,EAAyC;AACvC,SAAOA,QAAQ,CAACj+K,MAAT,CAAgB,CAAC61H,GAAD,EAAM7nF,OAAN,KAAkB;AACvC,QAAIykH,OAAO,GACTzkH,OAAO,CAACykH,OAAR,KAAoB,qBAApB,GAA4C,WAA5C,GAA0DzkH,OAAO,CAACykH,OADpE;;AAGA,QAAI,CAAC58B,GAAG,CAACr+G,QAAJ,CAAai7I,OAAb,CAAL,EAA4B;AAC1B58B,SAAG,CAACjxH,IAAJ,CAAS6tJ,OAAT;AACD;;AACD,WAAO58B,GAAP;AACD,GARM,EAQJ,EARI,CAAP;AASD,C,CAED;AACA;AACA;AACA;;;AACO,eAAeugD,eAAf,GAAiC;AACtC,MAAItiK,MAAM,GAAG,MAAMiiK,QAAQ,EAA3B;;AACA,MAAI,CAACjiK,MAAM,CAAC20B,KAAZ,EAAmB;AACjB;AACA,UAAMysG,wDAAA,EAAN;AACD;AACF;AAEM,MAAM6gC,QAAQ,GAAG34F,0DAAI,CAAC,kBAAiB;AAC5Co3E,mDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AAAEvxB,QAAI,EAAE;AAAR,GAAxB;AACA,MAAI+hK,QAAJ;;AAEA,MAAI;AACFA,YAAQ,GAAG,MAAM0P,SAAS,CAAC,IAAD,EAAO,CAAP,EAAU,IAAV,CAA1B;AACD,GAFD,CAEE,OAAOtkK,CAAP,EAAU;AACVoR,WAAO,CAACsrE,GAAR,CAAY18E,CAAZ;;AAEA,QAAIA,CAAC,YAAY6oJ,SAAjB,EAA4B;AAC1B,UAAI7oJ,CAAC,CAACogJ,MAAF,KAAa,aAAjB,EAAgC;AAC9BnzB,qFAAgB,CAACjtH,CAAD,CAAhB;AAEAmrI,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AACtBvxB,cAAI,EAAE,OADgB;AAEtB0lK,iBAAO,EAAE;AAFa,SAAxB;AAID,OAPD,MAOO,IAAIv4J,CAAC,CAACogJ,MAAF,KAAa,gBAAjB,EAAmC;AACxCjV,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AACtBvxB,cAAI,EAAE,OADgB;AAEtB0lK,iBAAO,EAAE;AAFa,SAAxB;AAID,OALM,MAKA,IACLv4J,CAAC,CAACogJ,MAAF,KAAa,iBAAb,IACApgJ,CAAC,CAACogJ,MAAF,KAAa,iBAFR,EAGL;AACAjV,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AACtBvxB,cAAI,EAAE,OADgB;AAEtB0lK,iBAAO,EAAEv4J,CAAC,CAACogJ,MAFW;AAGtBrjF,cAAI,EAAE/8D,CAAC,CAAC+8D;AAHc,SAAxB;AAKD,OATM,MASA,IAAI/8D,CAAC,CAACogJ,MAAF,KAAa,cAAjB,EAAiC;AACtCjV,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AACtBvxB,cAAI,EAAE,OADgB;AAEtB0lK,iBAAO,EAAEv4J,CAAC,CAACogJ;AAFW,SAAxB;AAID,OALM,MAKA;AACLjV,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AAAEvxB,cAAI,EAAE;AAAR,SAAxB;AACD;AACF,KA9BD,MA8BO,IAAImN,CAAC,YAAY0gJ,SAAjB,EAA4B;AACjCtvI,aAAO,CAACsrE,GAAR,CAAY18E,CAAZ;;AACA,UAAIA,CAAC,CAACogJ,MAAF,KAAa,cAAjB,EAAiC;AAC/BjV,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AAAEvxB,cAAI,EAAE;AAAR,SAAxB,EAD+B,CAG/B;;AACAugI,4EAAY,CAACnF,OAAb,CAAqB,UAArB,EAAiC,MAAjC;AACD,OALD,MAKO,IAAIjuH,CAAC,CAACogJ,MAAF,KAAa,iBAAjB,EAAoC;AACzCjV,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AAAEvxB,cAAI,EAAE,OAAR;AAAiB0lK,iBAAO,EAAE;AAA1B,SAAxB;AACD,OAFM,MAEA;AACLptB,yDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AAAEvxB,cAAI,EAAE,OAAR;AAAiB0lK,iBAAO,EAAEv4J,CAAC,CAACogJ;AAA5B,SAAxB;AACD;AACF,KAZM,MAYA;AACLnzB,mFAAgB,CAACjtH,CAAD,CAAhB,CADK,CAEL;;AACAmrI,uDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AAAEvxB,YAAI,EAAE;AAAR,OAAxB;AACD;;AAED,WAAO;AAAEusB,WAAK,EAAE;AAAEuF,eAAO,EAAE3kB,CAAC,CAAC2kB,OAAb;AAAsBy7H,cAAM,EAAEpgJ,CAAC,CAACogJ,MAAhC;AAAwCrjF,YAAI,EAAE/8D,CAAC,CAAC+8D;AAAhD;AAAT,KAAP;AACD;;AAED,MAAIslE,MAAM,GAAGqhC,qBAAqB,CAAC9O,QAAD,CAAlC;AAEAzpB,mDAAG,CAACN,MAAJ,CAAWzmH,IAAX,CAAgB,MAAhB,EAAwB;AACtBvxB,QAAI,EAAE,SADgB;AAEtBwvI,UAFsB;AAGtBi2B,gBAAY,EAAEgK,gBAAgB,CAAC,UAAD;AAHR,GAAxB;AAKA,SAAO;AAAE1N;AAAF,GAAP;AACD,CApE2B,CAArB;;AAsEP,eAAe0P,SAAf,CAAyBC,cAAzB,EAAyCpmL,KAAzC,EAAgDqmL,YAAhD,EAA8D;AAC5D,aAAoDz3C,+CAAA,MAAoB,EAAxE;AAAA,MAAMizB,WAAN,QAAMA,WAAN;AAAA,MAAmBh5B,OAAnB,QAAmBA,OAAnB;AAAA,MAA4B4xB,mBAA5B,QAA4BA,mBAA5B;;AAEA2U,sBAAoB;;AAEpB,MAAI+U,gBAAgB,CAAC,UAAD,CAAhB,IAAgCA,gBAAgB,CAAC,SAAD,CAApD,EAAiE;AAC/D,WAAO,EAAP;AACD,GAP2D,CAS5D;;;AACA,MAAIzzK,WAAW,GAAGq6I,4DAAQ,GAAGpjJ,SAAX,CAAqBwN,QAArB,EAAlB;AAEA,MAAIgpI,KAAK,GACPioC,cAAc,IACd3rB,mBADA,IAEA;AACA,MAAIsK,mDAAJ,CAAcriK,IAAI,CAACoE,GAAL,KAAa,IAAI,EAAJ,GAAS,IAApC,EAA0C,CAA1C,EAA6C,GAA7C,EAAkDqO,QAAlD,EAJF;AAMA,MAAIshK,QAAQ,GAAGuP,gBAAgB,CAAC7nC,KAAD,CAA/B;AAEA,MAAIyjB,SAAS,GAAG,MAAM3sB,oEAAY,CAACpF,OAAb,CAAqB,YAArB,CAAtB;AAEA6/B,8DAAM,CAACvwI,IAAP,CACE,eADF,EAEEg/G,KAFF,EAGEs4B,QAAQ,CAACl4K,MAHX,EAIE,eAAeyB,KAAf,GAAuB,GAJzB;AAOA,MAAIi2B,MAAM,GAAG,MAAMqwJ,gDAAA,CAAez9C,OAAf,EAAwBg5B,WAAxB,EAAqC1jB,KAArC,EAA4Cs4B,QAA5C,CAAnB,CA7B4D,CA+B5D;AACA;AACA;AACA;;AACA,MAAI8P,SAAS,GAAG,MAAMnQ,wDAAU,CAAC/gC,iEAAS,GAAG0sB,WAAZ,GAA0B,OAA3B,EAAoC9rI,MAApC,EAA4C;AAC1E,sBAAkB2rI;AADwD,GAA5C,CAAhC,CAnC4D,CAuC5D;AACA;;AACA,MAAI,CAAChzB,+CAAA,EAAD,IAAqBA,+CAAA,GAAiB/F,OAAjB,KAA6BA,OAAtD,EAA+D;AAC7D,WAAO,EAAP;AACD;;AAED,MAAI7a,GAAG,GAAG,MAAMs4D,gDAAA,CAAeC,SAAf,CAAhB;AAEA7W,8DAAM,CAACvwI,IAAP,CAAY,0BAAZ,EAAwC6uF,GAAG,CAACyoD,QAAJ,CAAal4K,MAArD;AAEA,MAAIioL,gBAAgB,GAAGz7B,4DAAQ,GAAGpjJ,SAAX,CAAqBwN,QAArB,OAAoCzE,WAA3D,CAjD4D,CAmD5D;;AACA,MAAI+1K,gBAAgB,GAAG,EAAvB;;AACA,MAAIz4D,GAAG,CAACyoD,QAAJ,CAAal4K,MAAb,GAAsB,CAA1B,EAA6B;AAC3BkoL,oBAAgB,GAAG,MAAMhB,eAAe,CACtCz3D,GAAG,CAACyoD,QAAJ,CAAan7K,GAAb,CAAiBmmB,GAAG,oCACfA,GADe;AAElB3pB,WAAK,EAAEwsL,gBAAgB,CAAC7iK,GAAG,CAAC3pB,KAAL,CAFL;AAGlB6P,eAAS,EAAEo9J,mDAAS,CAACl4J,KAAV,CAAgB4U,GAAG,CAAC9Z,SAApB;AAHO,MAApB,CADsC,CAAxC;AAOD;;AAED,MAAI++K,QAAQ,GAAG7U,6CAAA,CAAY7jD,GAAG,CAAC6jD,MAAhB,EAAwB9mB,4DAAQ,GAAG8mB,MAAnC,CAAf;AACA,MAAIvlK,MAAM,GAAG0hH,GAAG,CAACyoD,QAAjB;;AAEA,MAAIiQ,QAAQ,KAAK,IAAjB,EAAuB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,QAAK1mL,KAAK,IAAI,EAAT,IAAe0mL,QAAQ,KAAKL,YAA7B,IAA8CrmL,KAAK,IAAI,GAA3D,EAAgE;AAC9D0vK,kEAAM,CAACvwI,IAAP,CAAY,cAAZ;AACAuwI,kEAAM,CAACvwI,IAAP,CAAYh5B,IAAI,CAACC,SAAL,CAAeqwK,QAAf,CAAZ;AACA/G,kEAAM,CAACvwI,IAAP,CAAY,kBAAZ;AACAuwI,kEAAM,CAACvwI,IAAP,CAAYh5B,IAAI,CAACC,SAAL,CAAe4nH,GAAG,CAACyoD,QAAnB,CAAZ;AAEA,UAAIkQ,aAAa,GAAGC,kEAAiB,EAArC;AAEA3zJ,aAAO,CAACsrE,GAAR,CACEv+F,KADF,EAEE,WAFF,EAGEy2K,QAAQ,CAACl4K,MAHX,EAIEk4K,QAAQ,CAACl4K,MAAT,GAAkB,CAAlB,GAAsBk4K,QAAQ,CAAC,CAAD,CAA9B,GAAoC,IAJtC,EAKE,eALF,EAMEzoD,GAAG,CAACyoD,QAAJ,CAAal4K,MANf,EAOEyvH,GAAG,CAACyoD,QAAJ,CAAal4K,MAAb,GAAsB,CAAtB,GAA0ByvH,GAAG,CAACyoD,QAAJ,CAAa,CAAb,CAA1B,GAA4C,IAP9C,EAQE,UARF,EASE1rB,4DAAQ,GAAGpjJ,SAAX,CAAqBwkB,IAArB,EATF,EAUE,SAVF,EAWE08G,OAXF,EAYE,WAZF,EAaE69C,QAbF,EAcEA,QAAQ,KAAKL,YAdf,EAeE,cAfF,EAgBEt7B,4DAAQ,GAAGpjJ,SAAX,CAAqBwN,QAArB,EAhBF,EAiBE41I,4DAAQ,GAAG8mB,MAAX,CAAkBO,IAjBpB,EAkBE,eAlBF,EAmBEuU,aAAa,CAACE,WAnBhB,EAoBEF,aAAa,CAAC1U,IAAd,CAAmBG,IApBrB,EAqBE,cArBF,EAsBEpkD,GAAG,CAAC6jD,MAAJ,CAAWO,IAtBb,EAuBE,mBAvBF,EAwBEoU,gBAxBF;;AA2BA,UAAIG,aAAa,CAAC1U,IAAd,CAAmBG,IAAnB,KAA4BpkD,GAAG,CAAC6jD,MAAJ,CAAWO,IAA3C,EAAiD;AAC/C;AACA,YAAI0U,MAAM,GAAG,MAAM/8C,uCAAA,CAAO,8BAAP,CAAnB;;AACA,YAAI+8C,MAAM,CAACvoL,MAAP,KAAkB,CAAtB,EAAyB;AACvB00B,iBAAO,CAACsrE,GAAR,CAAY,uBAAZ,EAAqCuoF,MAAM,CAACvoL,MAA5C;AACD;;AACD,YAAI6zK,IAAI,GAAGvN,oEAAgB,CAACiiB,MAAM,CAAC,CAAD,CAAP,CAAhB,CAA4BjV,MAA5B,CAAmCO,IAA9C;AACAn/I,eAAO,CAACsrE,GAAR,CAAY,oBAAZ,EAAkC6zE,IAAlC;AACD;;AAED,YAAM,IAAI1H,SAAJ,CAAc,aAAd,CAAN;AACD;;AAED+b,oBAAgB,GAAGA,gBAAgB,CAAClxJ,MAAjB,CACjB,MAAM4wJ,SAAS,CACb,IAAIphB,mDAAJ,CAAc2hB,QAAd,EAAwB,CAAxB,EAA2B,GAA3B,EAAgCvxK,QAAhC,EADa,EAEb;AACA;AACA;AACA;AACA;AACAqxK,oBAAgB,GAAG,CAAH,GAAOxmL,KAAK,GAAG,CAPlB,EAQb0mL,QARa,CADE,CAAnB;AAYD,GA3ED,MA2EO;AACL;AACA;AACA,UAAM93C,gDAAA,CAAgB;AACpB6rB,yBAAmB,EAAE1P,4DAAQ,GAAGpjJ,SAAX,CAAqBwN,QAArB;AADD,KAAhB,CAAN;AAGD;;AAED,SAAOsxK,gBAAP;AACD,C;;;;;;;;;;;;AC9uBD;AAAA;AAAA;AAAA;;AACA,IAAIzb,MAAM,GAAGrxJ,mBAAO,CAAC,8EAAD,CAApB;;AAEA,eAAeotK,YAAf,GAA8B;AAC5B,SAAO,CAAC,MAAM7kB,mDAAU,CAAC5lI,WAAX,CAAuB,EAAvB,CAAP,EAAmCnnB,QAAnC,EAAP;AACD;;AAEc,eAAe64J,eAAf,CAA+BxL,KAA/B,EAAsC;AACnD,MAAI2f,SAAS,GAAG,IAAInX,MAAM,CAACn4D,OAAX,EAAhB;AACAsvE,WAAS,CAACC,UAAV,CAAqB,MAAM2E,YAAY,EAAvC;AACA5E,WAAS,CAACE,MAAV,CAAiB,MAAM0E,YAAY,EAAnC;AACA5E,WAAS,CAACG,SAAV,CAAoB,MAAMyE,YAAY,EAAtC;AACA5E,WAAS,CAACI,QAAV,CAAmB,MAAMwE,YAAY,EAArC;AACA,MAAIvE,SAAS,GAAGL,SAAS,CAACtwE,eAAV,EAAhB;AAEA,SAAO,MAAMqwD,mDAAU,CAACh1I,OAAX,CAAmBs1J,SAAnB,EAA8BhgB,KAA9B,CAAb;AACD,C;;;;;;;;;;;;AChBD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AAEA,SAASwkB,gBAAT,CAA0BnjC,SAA1B,EAAqCC,SAArC,EAAgD;AAC9CA,WAAS,CAACr5I,OAAV,CAAkB,CAACuT,KAAD,EAAQshH,KAAR,KAAkB;AAClC,QAAIA,KAAK,KAAK,cAAd,EAA8B;AAC5B,UAAI6/B,GAAG,GAAGtb,SAAS,CAACrpJ,GAAV,CAAc8kI,KAAd,CAAV;AACA,UAAI2nD,OAAO,GAAG,EAAd;AAEAjpK,WAAK,CAACvT,OAAN,CAAcs5I,QAAQ,IAAI;AACxB,YACEA,QAAQ,CAAC4wB,OAAT,KAAqB,CAArB,IACA5wB,QAAQ,CAACqF,SAAT,IAAsB,IADtB,IAEArF,QAAQ,CAACnkB,EAAT,CAAY5vH,QAAZ,CAAqB,GAArB,CAHF,EAIE;AACA,cAAIk3K,QAAQ,GAAGnjC,QAAQ,CAACnkB,EAAT,CAAYhnH,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAf;AAEAquK,iBAAO,CAAC7pL,IAAR,CAAa;AACX6tJ,mBAAO,EAAE,cADE;AAEX1T,eAAG,EAAEwM,QAAQ,CAACnkB,EAFH;AAGXz5F,kBAAM,EAAE,WAHG;AAIXruC,iBAAK,EAAEovL,QAJI;AAKXv/K,qBAAS,EAAEo9J,kDAAS,CAACplG,IAAV;AALA,WAAb;AAOD;AACF,OAhBD;;AAkBA,UAAIsnH,OAAO,CAAC1oL,MAAR,GAAiB,CAArB,EAAwB;AACtBqmL,oEAAa,CAACqC,OAAD,CAAb;AACD;AACF;AACF,GA3BD;AA4BD;;AAED,IAAIE,SAAS,GAAG,IAAhB;AACO,SAASC,MAAT,GAAkB;AACvB/5B,UAAQ;AACR85B,WAAS,GAAG5jC,8DAAe,CAACyjC,gBAAD,CAA3B;AACD;AAEM,SAAS35B,QAAT,GAAoB;AACzB,MAAI85B,SAAJ,EAAe;AACbA,aAAS;;AACTA,aAAS,GAAG,IAAZ;AACD;AACF,C;;;;;;;;;;;AC7CD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAI75G,IAAI,GAAG3zD,mBAAO,CAAC,0EAAD,CAAlB;;AACA,IAAI8gD,IAAI,GAAG6S,IAAX;AACA,IAAIvzC,MAAM,GAAGD,UAAb;AAEA2gC,IAAI,CAAC2H,YAAL,CAAkB,qBAAlB,EAAyC,IAAzC,EAA+CroC,MAA/C;AACA0gC,IAAI,CAAC2H,YAAL,CAAkB,eAAlB,EAAmC,IAAnC,EAAyCroC,MAAzC;AACA0gC,IAAI,CAAC2H,YAAL,CAAkB,uBAAlB,EAA2C,IAA3C,EAAiDroC,MAAjD;AACA0gC,IAAI,CAAC2H,YAAL,CAAkB,mBAAlB,EAAuC,IAAvC,EAA6CroC,MAA7C;AACA0gC,IAAI,CAAC2H,YAAL,CAAkB,oBAAlB,EAAwC,IAAxC,EAA8CroC,MAA9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAqhF,KAAK,CAACqnE,aAAN,GAAsB,UAAS4E,QAAT,EAAmB;AACvC/5G,MAAI,CAACulC,OAAL,CAAaa,UAAb,CAAwB,IAAxB,EAA8B2zE,QAA9B,EAAwC,CAAxC,EAA2C,CAAC,CAA5C,EAA+C,IAA/C,EAAqD,IAArD;AACD,CAFD;;AAGA5sH,IAAI,CAAC6H,QAAL,CAAc84C,KAAK,CAACqnE,aAApB,EAAmCn1G,IAAI,CAACulC,OAAxC;;AACA,IAAIp4C,IAAI,CAACW,KAAL,IAAc,CAACZ,QAAnB,EAA6B;AAC3B;AACF;AACA;AACA;AACE4gD,OAAK,CAACqnE,aAAN,CAAoBp1G,WAApB,GAAkC,qBAAlC;AACD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA+tC,KAAK,CAACvI,OAAN,GAAgB,UAASw0E,QAAT,EAAmB;AACjC/5G,MAAI,CAACulC,OAAL,CAAaa,UAAb,CAAwB,IAAxB,EAA8B2zE,QAA9B,EAAwC,CAAxC,EAA2C,CAAC,CAA5C,EAA+C,IAA/C,EAAqD,IAArD;AACD,CAFD;;AAGA5sH,IAAI,CAAC6H,QAAL,CAAc84C,KAAK,CAACvI,OAApB,EAA6BvlC,IAAI,CAACulC,OAAlC;;AACA,IAAIp4C,IAAI,CAACW,KAAL,IAAc,CAACZ,QAAnB,EAA6B;AAC3B;AACF;AACA;AACA;AACE4gD,OAAK,CAACvI,OAAN,CAAcxlC,WAAd,GAA4B,eAA5B;AACD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA+tC,KAAK,CAAC6mE,eAAN,GAAwB,UAASoF,QAAT,EAAmB;AACzC/5G,MAAI,CAACulC,OAAL,CAAaa,UAAb,CAAwB,IAAxB,EAA8B2zE,QAA9B,EAAwC,CAAxC,EAA2C,CAAC,CAA5C,EAA+C,IAA/C,EAAqD,IAArD;AACD,CAFD;;AAGA5sH,IAAI,CAAC6H,QAAL,CAAc84C,KAAK,CAAC6mE,eAApB,EAAqC30G,IAAI,CAACulC,OAA1C;;AACA,IAAIp4C,IAAI,CAACW,KAAL,IAAc,CAACZ,QAAnB,EAA6B;AAC3B;AACF;AACA;AACA;AACE4gD,OAAK,CAAC6mE,eAAN,CAAsB50G,WAAtB,GAAoC,uBAApC;AACD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA+tC,KAAK,CAAC2mE,WAAN,GAAoB,UAASsF,QAAT,EAAmB;AACrC/5G,MAAI,CAACulC,OAAL,CAAaa,UAAb,CAAwB,IAAxB,EAA8B2zE,QAA9B,EAAwC,CAAxC,EAA2C,CAAC,CAA5C,EAA+CjsE,KAAK,CAAC2mE,WAAN,CAAkBuF,eAAjE,EAAkF,IAAlF;AACD,CAFD;;AAGA7sH,IAAI,CAAC6H,QAAL,CAAc84C,KAAK,CAAC2mE,WAApB,EAAiCz0G,IAAI,CAACulC,OAAtC;;AACA,IAAIp4C,IAAI,CAACW,KAAL,IAAc,CAACZ,QAAnB,EAA6B;AAC3B;AACF;AACA;AACA;AACE4gD,OAAK,CAAC2mE,WAAN,CAAkB10G,WAAlB,GAAgC,mBAAhC;AACD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA+tC,KAAK,CAACioE,YAAN,GAAqB,UAASgE,QAAT,EAAmB;AACtC/5G,MAAI,CAACulC,OAAL,CAAaa,UAAb,CAAwB,IAAxB,EAA8B2zE,QAA9B,EAAwC,CAAxC,EAA2C,CAAC,CAA5C,EAA+CjsE,KAAK,CAACioE,YAAN,CAAmBiE,eAAlE,EAAmF,IAAnF;AACD,CAFD;;AAGA7sH,IAAI,CAAC6H,QAAL,CAAc84C,KAAK,CAACioE,YAApB,EAAkC/1G,IAAI,CAACulC,OAAvC;;AACA,IAAIp4C,IAAI,CAACW,KAAL,IAAc,CAACZ,QAAnB,EAA6B;AAC3B;AACF;AACA;AACA;AACE4gD,OAAK,CAACioE,YAAN,CAAmBh2G,WAAnB,GAAiC,oBAAjC;AACD;;AAID,IAAIC,IAAI,CAACulC,OAAL,CAAaC,kBAAjB,EAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAsI,OAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8B29D,QAA9B,GAAyC,UAASq1G,mBAAT,EAA8B;AACrE,WAAOnsE,KAAK,CAACqnE,aAAN,CAAoBvwG,QAApB,CAA6Bq1G,mBAA7B,EAAkD,IAAlD,CAAP;AACD,GAFD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAnsE,OAAK,CAACqnE,aAAN,CAAoBvwG,QAApB,GAA+B,UAASs1G,eAAT,EAA0B/lK,GAA1B,EAA+B;AAC5D,QAAI2jB,CAAJ;AAAA,QAAO93B,GAAG,GAAG;AACXw7J,QAAE,EAAErnJ,GAAG,CAACgmK,WAAJ,EADO;AAEXC,aAAO,EAAEjmK,GAAG,CAACkmK,gBAAJ,EAFE;AAGX/nL,UAAI,EAAE6hB,GAAG,CAACmmK,aAAJ;AAHK,KAAb;;AAMA,QAAIJ,eAAJ,EAAqB;AACnBl6K,SAAG,CAACu6K,oBAAJ,GAA2BpmK,GAA3B;AACD;;AACD,WAAOnU,GAAP;AACD,GAXD;AAYC;AAGD;AACA;AACA;AACA;AACA;;;AACA8tG,KAAK,CAACqnE,aAAN,CAAoB3wE,iBAApB,GAAwC,UAASzpF,KAAT,EAAgB;AACtD,MAAIy/J,MAAM,GAAG,IAAIx6G,IAAI,CAAC22B,YAAT,CAAsB57E,KAAtB,CAAb;AACA,MAAI5G,GAAG,GAAG,IAAI25F,KAAK,CAACqnE,aAAV,EAAV;AACA,SAAOrnE,KAAK,CAACqnE,aAAN,CAAoBsF,2BAApB,CAAgDtmK,GAAhD,EAAqDqmK,MAArD,CAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA1sE,KAAK,CAACqnE,aAAN,CAAoBsF,2BAApB,GAAkD,UAAStmK,GAAT,EAAcqmK,MAAd,EAAsB;AACtE,SAAOA,MAAM,CAACljF,SAAP,EAAP,EAA2B;AACzB,QAAIkjF,MAAM,CAACnjF,UAAP,EAAJ,EAAyB;AACvB;AACD;;AACD,QAAIpjE,KAAK,GAAGumJ,MAAM,CAACtjF,cAAP,EAAZ;;AACA,YAAQjjE,KAAR;AACA,WAAK,CAAL;AACE,YAAIzpC,KAAK;AAAG;AAA4BgwL,cAAM,CAAChkF,SAAP,EAAxC;AACAriF,WAAG,CAACihK,KAAJ,CAAU5qL,KAAV;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAA4BgwL,cAAM,CAAChkF,SAAP,EAAxC;AACAriF,WAAG,CAACkhK,UAAJ,CAAe7qL,KAAf;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAA4BgwL,cAAM,CAAChkF,SAAP,EAAxC;AACAriF,WAAG,CAACrE,OAAJ,CAAYtlB,KAAZ;AACA;;AACF;AACEgwL,cAAM,CAAC/iF,SAAP;AACA;AAfF;AAiBD;;AACD,SAAOtjF,GAAP;AACD,CAzBD;AA4BA;AACA;AACA;AACA;;;AACA25F,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8Bs9F,eAA9B,GAAgD,YAAW;AACzD,MAAIm2E,MAAM,GAAG,IAAI16G,IAAI,CAACs9B,YAAT,EAAb;AACAwQ,OAAK,CAACqnE,aAAN,CAAoBwF,uBAApB,CAA4C,IAA5C,EAAkDD,MAAlD;AACA,SAAOA,MAAM,CAACz8E,eAAP,EAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA6P,KAAK,CAACqnE,aAAN,CAAoBwF,uBAApB,GAA8C,UAASzhJ,OAAT,EAAkBwhJ,MAAlB,EAA0B;AACtE,MAAI5iJ,CAAC,GAAG7tC,SAAR;AACA6tC,GAAC,GAAGoB,OAAO,CAAC0hJ,UAAR,EAAJ;;AACA,MAAI9iJ,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACv+E,UAAP,CACE,CADF,EAEErkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAAC2hJ,eAAR,EAAJ;;AACA,MAAI/iJ,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACv+E,UAAP,CACE,CADF,EAEErkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAAC4hJ,YAAR,EAAJ;;AACA,MAAIhjJ,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACv+E,UAAP,CACE,CADF,EAEErkE,CAFF;AAID;AACF,CAvBD;AA0BA;AACA;AACA;AACA;;;AACAg2E,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8BqvK,KAA9B,GAAsC,YAAW;AAC/C;AAAO;AAAqCt2G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA5C;AACD,CAFD;AAKA;AACA;AACA;AACA;AACA;;;AACA8F,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8BkzK,WAA9B,GAA4C,YAAW;AACrD;AAAO;AAAuBn6G,QAAI,CAACulC,OAAL,CAAaoC,UAAb,CAC1B,KAAK2uE,KAAL,EAD0B;AAA9B;AAED,CAHD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAxoE,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8B2zK,UAA9B,GAA2C,YAAW;AACpD;AAAO;AAA4B56G,QAAI,CAACulC,OAAL,CAAaqC,SAAb,CAC/B,KAAK0uE,KAAL,EAD+B;AAAnC;AAED,CAHD;AAMA;AACA;AACA;AACA;;;AACAxoE,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8BmuK,KAA9B,GAAsC,UAAS5qL,KAAT,EAAgB;AACpD,SAAOw1E,IAAI,CAACulC,OAAL,CAAaoD,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0Cn+G,KAA1C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8BsvK,UAA9B,GAA2C,YAAW;AACpD;AAAO;AAAqCv2G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA5C;AACD,CAFD;AAKA;AACA;AACA;AACA;AACA;;;AACA8F,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8BozK,gBAA9B,GAAiD,YAAW;AAC1D;AAAO;AAAuBr6G,QAAI,CAACulC,OAAL,CAAaoC,UAAb,CAC1B,KAAK4uE,UAAL,EAD0B;AAA9B;AAED,CAHD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAzoE,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8B4zK,eAA9B,GAAgD,YAAW;AACzD;AAAO;AAA4B76G,QAAI,CAACulC,OAAL,CAAaqC,SAAb,CAC/B,KAAK2uE,UAAL,EAD+B;AAAnC;AAED,CAHD;AAMA;AACA;AACA;AACA;;;AACAzoE,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8BouK,UAA9B,GAA2C,UAAS7qL,KAAT,EAAgB;AACzD,SAAOw1E,IAAI,CAACulC,OAAL,CAAaoD,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0Cn+G,KAA1C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8B4H,OAA9B,GAAwC,YAAW;AACjD;AAAO;AAAqCmxD,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA5C;AACD,CAFD;AAKA;AACA;AACA;AACA;AACA;;;AACA8F,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8BqzK,aAA9B,GAA8C,YAAW;AACvD;AAAO;AAAuBt6G,QAAI,CAACulC,OAAL,CAAaoC,UAAb,CAC1B,KAAK94F,OAAL,EAD0B;AAA9B;AAED,CAHD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAi/F,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8B6zK,YAA9B,GAA6C,YAAW;AACtD;AAAO;AAA4B96G,QAAI,CAACulC,OAAL,CAAaqC,SAAb,CAC/B,KAAK/4F,OAAL,EAD+B;AAAnC;AAED,CAHD;AAMA;AACA;AACA;AACA;;;AACAi/F,KAAK,CAACqnE,aAAN,CAAoBluK,SAApB,CAA8B6I,OAA9B,GAAwC,UAAStlB,KAAT,EAAgB;AACtD,SAAOw1E,IAAI,CAACulC,OAAL,CAAaoD,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0Cn+G,KAA1C,CAAP;AACD,CAFD;;AAQA,IAAIw1E,IAAI,CAACulC,OAAL,CAAaC,kBAAjB,EAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAsI,OAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwB29D,QAAxB,GAAmC,UAASq1G,mBAAT,EAA8B;AAC/D,WAAOnsE,KAAK,CAACvI,OAAN,CAAc3gC,QAAd,CAAuBq1G,mBAAvB,EAA4C,IAA5C,CAAP;AACD,GAFD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAnsE,OAAK,CAACvI,OAAN,CAAc3gC,QAAd,GAAyB,UAASs1G,eAAT,EAA0B/lK,GAA1B,EAA+B;AACtD,QAAI2jB,CAAJ;AAAA,QAAO93B,GAAG,GAAG;AACX29I,aAAO,EAAE39E,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC,CADE;AAEX81H,SAAG,EAAEjqE,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC,CAFM;AAGX0kB,YAAM,EAAEmnC,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC,CAHG;AAIX3pB,WAAK,EAAEw1E,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC;AAJI,KAAb;;AAOA,QAAI+lK,eAAJ,EAAqB;AACnBl6K,SAAG,CAACu6K,oBAAJ,GAA2BpmK,GAA3B;AACD;;AACD,WAAOnU,GAAP;AACD,GAZD;AAaC;AAGD;AACA;AACA;AACA;AACA;;;AACA8tG,KAAK,CAACvI,OAAN,CAAcf,iBAAd,GAAkC,UAASzpF,KAAT,EAAgB;AAChD,MAAIy/J,MAAM,GAAG,IAAIx6G,IAAI,CAAC22B,YAAT,CAAsB57E,KAAtB,CAAb;AACA,MAAI5G,GAAG,GAAG,IAAI25F,KAAK,CAACvI,OAAV,EAAV;AACA,SAAOuI,KAAK,CAACvI,OAAN,CAAck1E,2BAAd,CAA0CtmK,GAA1C,EAA+CqmK,MAA/C,CAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA1sE,KAAK,CAACvI,OAAN,CAAck1E,2BAAd,GAA4C,UAAStmK,GAAT,EAAcqmK,MAAd,EAAsB;AAChE,SAAOA,MAAM,CAACljF,SAAP,EAAP,EAA2B;AACzB,QAAIkjF,MAAM,CAACnjF,UAAP,EAAJ,EAAyB;AACvB;AACD;;AACD,QAAIpjE,KAAK,GAAGumJ,MAAM,CAACtjF,cAAP,EAAZ;;AACA,YAAQjjE,KAAR;AACA,WAAK,CAAL;AACE,YAAIzpC,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAAC2gK,UAAJ,CAAetqL,KAAf;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAAC4gK,MAAJ,CAAWvqL,KAAX;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAAC6gK,SAAJ,CAAcxqL,KAAd;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAAC8gK,QAAJ,CAAazqL,KAAb;AACA;;AACF;AACEgwL,cAAM,CAAC/iF,SAAP;AACA;AAnBF;AAqBD;;AACD,SAAOtjF,GAAP;AACD,CA7BD;AAgCA;AACA;AACA;AACA;;;AACA25F,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwBs9F,eAAxB,GAA0C,YAAW;AACnD,MAAIm2E,MAAM,GAAG,IAAI16G,IAAI,CAACs9B,YAAT,EAAb;AACAwQ,OAAK,CAACvI,OAAN,CAAco1E,uBAAd,CAAsC,IAAtC,EAA4CD,MAA5C;AACA,SAAOA,MAAM,CAACz8E,eAAP,EAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA6P,KAAK,CAACvI,OAAN,CAAco1E,uBAAd,GAAwC,UAASzhJ,OAAT,EAAkBwhJ,MAAlB,EAA0B;AAChE,MAAI5iJ,CAAC,GAAG7tC,SAAR;AACA6tC,GAAC,GAAGoB,OAAO,CAACs9I,UAAR,EAAJ;;AACA,MAAI1+I,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAACu9I,MAAR,EAAJ;;AACA,MAAI3+I,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAACw9I,SAAR,EAAJ;;AACA,MAAI5+I,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAACwjG,QAAR,EAAJ;;AACA,MAAI5kG,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;AACF,CA9BD;AAiCA;AACA;AACA;AACA;;;AACAg2E,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwBuvK,UAAxB,GAAqC,YAAW;AAC9C;AAAO;AAAuBx2G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwB6tK,UAAxB,GAAqC,UAAStqL,KAAT,EAAgB;AACnD,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwBwvK,MAAxB,GAAiC,YAAW;AAC1C;AAAO;AAAuBz2G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwB8tK,MAAxB,GAAiC,UAASvqL,KAAT,EAAgB;AAC/C,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwByvK,SAAxB,GAAoC,YAAW;AAC7C;AAAO;AAAuB12G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwB+tK,SAAxB,GAAoC,UAASxqL,KAAT,EAAgB;AAClD,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwBy1H,QAAxB,GAAmC,YAAW;AAC5C;AAAO;AAAuB18D,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAACvI,OAAN,CAAct+F,SAAd,CAAwBguK,QAAxB,GAAmC,UAASzqL,KAAT,EAAgB;AACjD,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;;AAQA,IAAIw1E,IAAI,CAACulC,OAAL,CAAaC,kBAAjB,EAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAsI,OAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgC29D,QAAhC,GAA2C,UAASq1G,mBAAT,EAA8B;AACvE,WAAOnsE,KAAK,CAAC6mE,eAAN,CAAsB/vG,QAAtB,CAA+Bq1G,mBAA/B,EAAoD,IAApD,CAAP;AACD,GAFD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAnsE,OAAK,CAAC6mE,eAAN,CAAsB/vG,QAAtB,GAAiC,UAASs1G,eAAT,EAA0B/lK,GAA1B,EAA+B;AAC9D,QAAI2jB,CAAJ;AAAA,QAAO93B,GAAG,GAAG;AACX3F,eAAS,EAAE2lE,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC,CADA;AAEX4mK,iBAAW,EAAE/6G,IAAI,CAACulC,OAAL,CAAa0C,0BAAb,CAAwC9zF,GAAxC,EAA6C,CAA7C,EAAgD,KAAhD,CAFF;AAGXtE,aAAO,EAAEsE,GAAG,CAAC6mK,gBAAJ;AAHE,KAAb;;AAMA,QAAId,eAAJ,EAAqB;AACnBl6K,SAAG,CAACu6K,oBAAJ,GAA2BpmK,GAA3B;AACD;;AACD,WAAOnU,GAAP;AACD,GAXD;AAYC;AAGD;AACA;AACA;AACA;AACA;;;AACA8tG,KAAK,CAAC6mE,eAAN,CAAsBnwE,iBAAtB,GAA0C,UAASzpF,KAAT,EAAgB;AACxD,MAAIy/J,MAAM,GAAG,IAAIx6G,IAAI,CAAC22B,YAAT,CAAsB57E,KAAtB,CAAb;AACA,MAAI5G,GAAG,GAAG,IAAI25F,KAAK,CAAC6mE,eAAV,EAAV;AACA,SAAO7mE,KAAK,CAAC6mE,eAAN,CAAsB8F,2BAAtB,CAAkDtmK,GAAlD,EAAuDqmK,MAAvD,CAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA1sE,KAAK,CAAC6mE,eAAN,CAAsB8F,2BAAtB,GAAoD,UAAStmK,GAAT,EAAcqmK,MAAd,EAAsB;AACxE,SAAOA,MAAM,CAACljF,SAAP,EAAP,EAA2B;AACzB,QAAIkjF,MAAM,CAACnjF,UAAP,EAAJ,EAAyB;AACvB;AACD;;AACD,QAAIpjE,KAAK,GAAGumJ,MAAM,CAACtjF,cAAP,EAAZ;;AACA,YAAQjjE,KAAR;AACA,WAAK,CAAL;AACE,YAAIzpC,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAACygK,YAAJ,CAAiBpqL,KAAjB;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAwBgwL,cAAM,CAACpkF,QAAP,EAApC;AACAjiF,WAAG,CAACohK,cAAJ,CAAmB/qL,KAAnB;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAA4BgwL,cAAM,CAAChkF,SAAP,EAAxC;AACAriF,WAAG,CAACmhK,UAAJ,CAAe9qL,KAAf;AACA;;AACF;AACEgwL,cAAM,CAAC/iF,SAAP;AACA;AAfF;AAiBD;;AACD,SAAOtjF,GAAP;AACD,CAzBD;AA4BA;AACA;AACA;AACA;;;AACA25F,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgCs9F,eAAhC,GAAkD,YAAW;AAC3D,MAAIm2E,MAAM,GAAG,IAAI16G,IAAI,CAACs9B,YAAT,EAAb;AACAwQ,OAAK,CAAC6mE,eAAN,CAAsBgG,uBAAtB,CAA8C,IAA9C,EAAoDD,MAApD;AACA,SAAOA,MAAM,CAACz8E,eAAP,EAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA6P,KAAK,CAAC6mE,eAAN,CAAsBgG,uBAAtB,GAAgD,UAASzhJ,OAAT,EAAkBwhJ,MAAlB,EAA0B;AACxE,MAAI5iJ,CAAC,GAAG7tC,SAAR;AACA6tC,GAAC,GAAGoB,OAAO,CAACg9I,YAAR,EAAJ;;AACA,MAAIp+I,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAACi9I,cAAR,EAAJ;;AACA,MAAIr+I,CAAJ,EAAO;AACL4iJ,UAAM,CAACz+E,SAAP,CACE,CADF,EAEEnkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAAC+hJ,eAAR,EAAJ;;AACA,MAAInjJ,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACv+E,UAAP,CACE,CADF,EAEErkE,CAFF;AAID;AACF,CAvBD;AA0BA;AACA;AACA;AACA;;;AACAg2E,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgCivK,YAAhC,GAA+C,YAAW;AACxD;AAAO;AAAuBl2G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgC2tK,YAAhC,GAA+C,UAASpqL,KAAT,EAAgB;AAC7D,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgCkvK,cAAhC,GAAiD,YAAW;AAC1D;AAAO;AAAwBn2G,QAAI,CAACulC,OAAL,CAAa0C,0BAAb,CAAwC,IAAxC,EAA8C,CAA9C,EAAiD,KAAjD;AAA/B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA6F,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgCsuK,cAAhC,GAAiD,UAAS/qL,KAAT,EAAgB;AAC/D,SAAOw1E,IAAI,CAACulC,OAAL,CAAakD,qBAAb,CAAmC,IAAnC,EAAyC,CAAzC,EAA4Cj+G,KAA5C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgCovK,UAAhC,GAA6C,YAAW;AACtD;AAAO;AAAqCr2G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA5C;AACD,CAFD;AAKA;AACA;AACA;AACA;AACA;;;AACA8F,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgC+zK,gBAAhC,GAAmD,YAAW;AAC5D;AAAO;AAAuBh7G,QAAI,CAACulC,OAAL,CAAaoC,UAAb,CAC1B,KAAK0uE,UAAL,EAD0B;AAA9B;AAED,CAHD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAvoE,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgCg0K,eAAhC,GAAkD,YAAW;AAC3D;AAAO;AAA4Bj7G,QAAI,CAACulC,OAAL,CAAaqC,SAAb,CAC/B,KAAKyuE,UAAL,EAD+B;AAAnC;AAED,CAHD;AAMA;AACA;AACA;AACA;;;AACAvoE,KAAK,CAAC6mE,eAAN,CAAsB1tK,SAAtB,CAAgCquK,UAAhC,GAA6C,UAAS9qL,KAAT,EAAgB;AAC3D,SAAOw1E,IAAI,CAACulC,OAAL,CAAaoD,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0Cn+G,KAA1C,CAAP;AACD,CAFD;AAMA;AACA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAAC2mE,WAAN,CAAkBuF,eAAlB,GAAoC,CAAC,CAAD,CAApC;;AAIA,IAAIh6G,IAAI,CAACulC,OAAL,CAAaC,kBAAjB,EAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAsI,OAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4B29D,QAA5B,GAAuC,UAASq1G,mBAAT,EAA8B;AACnE,WAAOnsE,KAAK,CAAC2mE,WAAN,CAAkB7vG,QAAlB,CAA2Bq1G,mBAA3B,EAAgD,IAAhD,CAAP;AACD,GAFD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAnsE,OAAK,CAAC2mE,WAAN,CAAkB7vG,QAAlB,GAA6B,UAASs1G,eAAT,EAA0B/lK,GAA1B,EAA+B;AAC1D,QAAI2jB,CAAJ;AAAA,QAAO93B,GAAG,GAAG;AACXk7K,kBAAY,EAAEl7G,IAAI,CAACulC,OAAL,CAAa0B,YAAb,CAA0B9yF,GAAG,CAAC8hK,eAAJ,EAA1B,EACdnoE,KAAK,CAAC6mE,eAAN,CAAsB/vG,QADR,EACkBs1G,eADlB,CADH;AAGXiB,YAAM,EAAEn7G,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC,CAHG;AAIXinK,aAAO,EAAEp7G,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC,CAJE;AAKXknK,WAAK,EAAEr7G,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC,CALI;AAMX08H,WAAK,EAAE7wE,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC;AANI,KAAb;;AASA,QAAI+lK,eAAJ,EAAqB;AACnBl6K,SAAG,CAACu6K,oBAAJ,GAA2BpmK,GAA3B;AACD;;AACD,WAAOnU,GAAP;AACD,GAdD;AAeC;AAGD;AACA;AACA;AACA;AACA;;;AACA8tG,KAAK,CAAC2mE,WAAN,CAAkBjwE,iBAAlB,GAAsC,UAASzpF,KAAT,EAAgB;AACpD,MAAIy/J,MAAM,GAAG,IAAIx6G,IAAI,CAAC22B,YAAT,CAAsB57E,KAAtB,CAAb;AACA,MAAI5G,GAAG,GAAG,IAAI25F,KAAK,CAAC2mE,WAAV,EAAV;AACA,SAAO3mE,KAAK,CAAC2mE,WAAN,CAAkBgG,2BAAlB,CAA8CtmK,GAA9C,EAAmDqmK,MAAnD,CAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA1sE,KAAK,CAAC2mE,WAAN,CAAkBgG,2BAAlB,GAAgD,UAAStmK,GAAT,EAAcqmK,MAAd,EAAsB;AACpE,SAAOA,MAAM,CAACljF,SAAP,EAAP,EAA2B;AACzB,QAAIkjF,MAAM,CAACnjF,UAAP,EAAJ,EAAyB;AACvB;AACD;;AACD,QAAIpjE,KAAK,GAAGumJ,MAAM,CAACtjF,cAAP,EAAZ;;AACA,YAAQjjE,KAAR;AACA,WAAK,CAAL;AACE,YAAIzpC,KAAK,GAAG,IAAIsjH,KAAK,CAAC6mE,eAAV,EAAZ;AACA6F,cAAM,CAAChiF,WAAP,CAAmBhuG,KAAnB,EAAyBsjH,KAAK,CAAC6mE,eAAN,CAAsB8F,2BAA/C;AACAtmK,WAAG,CAACqhK,WAAJ,CAAgBhrL,KAAhB;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAACuhK,SAAJ,CAAclrL,KAAd;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAACshK,UAAJ,CAAejrL,KAAf;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAACwhK,QAAJ,CAAanrL,KAAb;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAACyhK,QAAJ,CAAaprL,KAAb;AACA;;AACF;AACEgwL,cAAM,CAAC/iF,SAAP;AACA;AAxBF;AA0BD;;AACD,SAAOtjF,GAAP;AACD,CAlCD;AAqCA;AACA;AACA;AACA;;;AACA25F,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4Bs9F,eAA5B,GAA8C,YAAW;AACvD,MAAIm2E,MAAM,GAAG,IAAI16G,IAAI,CAACs9B,YAAT,EAAb;AACAwQ,OAAK,CAAC2mE,WAAN,CAAkBkG,uBAAlB,CAA0C,IAA1C,EAAgDD,MAAhD;AACA,SAAOA,MAAM,CAACz8E,eAAP,EAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA6P,KAAK,CAAC2mE,WAAN,CAAkBkG,uBAAlB,GAA4C,UAASzhJ,OAAT,EAAkBwhJ,MAAlB,EAA0B;AACpE,MAAI5iJ,CAAC,GAAG7tC,SAAR;AACA6tC,GAAC,GAAGoB,OAAO,CAAC+8I,eAAR,EAAJ;;AACA,MAAIn+I,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACh5E,oBAAP,CACE,CADF,EAEE5pE,CAFF,EAGEg2E,KAAK,CAAC6mE,eAAN,CAAsBgG,uBAHxB;AAKD;;AACD7iJ,GAAC,GAAGoB,OAAO,CAACoiJ,SAAR,EAAJ;;AACA,MAAIxjJ,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAACqiJ,UAAR,EAAJ;;AACA,MAAIzjJ,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAACsiJ,QAAR,EAAJ;;AACA,MAAI1jJ,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;;AACDA,GAAC,GAAGoB,OAAO,CAACuiJ,QAAR,EAAJ;;AACA,MAAI3jJ,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;AACF,CAtCD;AAyCA;AACA;AACA;AACA;;;AACAg2E,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4BgvK,eAA5B,GAA8C,YAAW;AACvD;AAAO;AACLj2G,QAAI,CAACulC,OAAL,CAAa0D,uBAAb,CAAqC,IAArC,EAA2C6E,KAAK,CAAC6mE,eAAjD,EAAkE,CAAlE;AADF;AAED,CAHD;AAMA;AACA;AACA;AACA;;;AACA7mE,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4By0K,eAA5B,GAA8C,UAASlxL,KAAT,EAAgB;AAC5D,SAAOw1E,IAAI,CAACulC,OAAL,CAAa8D,uBAAb,CAAqC,IAArC,EAA2C,CAA3C,EAA8C7+G,KAA9C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4BuuK,WAA5B,GAA0C,UAASmG,SAAT,EAAoBC,SAApB,EAA+B;AACvE,SAAO57G,IAAI,CAACulC,OAAL,CAAa+D,yBAAb,CAAuC,IAAvC,EAA6C,CAA7C,EAAgDqyE,SAAhD,EAA2D7tE,KAAK,CAAC6mE,eAAjE,EAAkFiH,SAAlF,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA9tE,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4B40K,iBAA5B,GAAgD,YAAW;AACzD,SAAO,KAAKH,eAAL,CAAqB,EAArB,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA5tE,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4Bq0K,SAA5B,GAAwC,YAAW;AACjD;AAAO;AAAuBt7G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4ByuK,SAA5B,GAAwC,UAASlrL,KAAT,EAAgB;AACtD,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4Bs0K,UAA5B,GAAyC,YAAW;AAClD;AAAO;AAAuBv7G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4BwuK,UAA5B,GAAyC,UAASjrL,KAAT,EAAgB;AACvD,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4Bu0K,QAA5B,GAAuC,YAAW;AAChD;AAAO;AAAuBx7G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4B0uK,QAA5B,GAAuC,UAASnrL,KAAT,EAAgB;AACrD,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4Bw0K,QAA5B,GAAuC,YAAW;AAChD;AAAO;AAAuBz7G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAAC2mE,WAAN,CAAkBxtK,SAAlB,CAA4B2uK,QAA5B,GAAuC,UAASprL,KAAT,EAAgB;AACrD,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;AAMA;AACA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAACioE,YAAN,CAAmBiE,eAAnB,GAAqC,CAAC,CAAD,CAArC;;AAIA,IAAIh6G,IAAI,CAACulC,OAAL,CAAaC,kBAAjB,EAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAsI,OAAK,CAACioE,YAAN,CAAmB9uK,SAAnB,CAA6B29D,QAA7B,GAAwC,UAASq1G,mBAAT,EAA8B;AACpE,WAAOnsE,KAAK,CAACioE,YAAN,CAAmBnxG,QAAnB,CAA4Bq1G,mBAA5B,EAAiD,IAAjD,CAAP;AACD,GAFD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAnsE,OAAK,CAACioE,YAAN,CAAmBnxG,QAAnB,GAA8B,UAASs1G,eAAT,EAA0B/lK,GAA1B,EAA+B;AAC3D,QAAI2jB,CAAJ;AAAA,QAAO93B,GAAG,GAAG;AACXk7K,kBAAY,EAAEl7G,IAAI,CAACulC,OAAL,CAAa0B,YAAb,CAA0B9yF,GAAG,CAAC8hK,eAAJ,EAA1B,EACdnoE,KAAK,CAAC6mE,eAAN,CAAsB/vG,QADR,EACkBs1G,eADlB,CADH;AAGX3V,YAAM,EAAEvkG,IAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC7zF,GAAjC,EAAsC,CAAtC,EAAyC,EAAzC;AAHG,KAAb;;AAMA,QAAI+lK,eAAJ,EAAqB;AACnBl6K,SAAG,CAACu6K,oBAAJ,GAA2BpmK,GAA3B;AACD;;AACD,WAAOnU,GAAP;AACD,GAXD;AAYC;AAGD;AACA;AACA;AACA;AACA;;;AACA8tG,KAAK,CAACioE,YAAN,CAAmBvxE,iBAAnB,GAAuC,UAASzpF,KAAT,EAAgB;AACrD,MAAIy/J,MAAM,GAAG,IAAIx6G,IAAI,CAAC22B,YAAT,CAAsB57E,KAAtB,CAAb;AACA,MAAI5G,GAAG,GAAG,IAAI25F,KAAK,CAACioE,YAAV,EAAV;AACA,SAAOjoE,KAAK,CAACioE,YAAN,CAAmB0E,2BAAnB,CAA+CtmK,GAA/C,EAAoDqmK,MAApD,CAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA1sE,KAAK,CAACioE,YAAN,CAAmB0E,2BAAnB,GAAiD,UAAStmK,GAAT,EAAcqmK,MAAd,EAAsB;AACrE,SAAOA,MAAM,CAACljF,SAAP,EAAP,EAA2B;AACzB,QAAIkjF,MAAM,CAACnjF,UAAP,EAAJ,EAAyB;AACvB;AACD;;AACD,QAAIpjE,KAAK,GAAGumJ,MAAM,CAACtjF,cAAP,EAAZ;;AACA,YAAQjjE,KAAR;AACA,WAAK,CAAL;AACE,YAAIzpC,KAAK,GAAG,IAAIsjH,KAAK,CAAC6mE,eAAV,EAAZ;AACA6F,cAAM,CAAChiF,WAAP,CAAmBhuG,KAAnB,EAAyBsjH,KAAK,CAAC6mE,eAAN,CAAsB8F,2BAA/C;AACAtmK,WAAG,CAACqhK,WAAJ,CAAgBhrL,KAAhB;AACA;;AACF,WAAK,CAAL;AACE,YAAIA,KAAK;AAAG;AAAuBgwL,cAAM,CAAClkF,UAAP,EAAnC;AACAniF,WAAG,CAAC2nK,SAAJ,CAActxL,KAAd;AACA;;AACF;AACEgwL,cAAM,CAAC/iF,SAAP;AACA;AAZF;AAcD;;AACD,SAAOtjF,GAAP;AACD,CAtBD;AAyBA;AACA;AACA;AACA;;;AACA25F,KAAK,CAACioE,YAAN,CAAmB9uK,SAAnB,CAA6Bs9F,eAA7B,GAA+C,YAAW;AACxD,MAAIm2E,MAAM,GAAG,IAAI16G,IAAI,CAACs9B,YAAT,EAAb;AACAwQ,OAAK,CAACioE,YAAN,CAAmB4E,uBAAnB,CAA2C,IAA3C,EAAiDD,MAAjD;AACA,SAAOA,MAAM,CAACz8E,eAAP,EAAP;AACD,CAJD;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA6P,KAAK,CAACioE,YAAN,CAAmB4E,uBAAnB,GAA6C,UAASzhJ,OAAT,EAAkBwhJ,MAAlB,EAA0B;AACrE,MAAI5iJ,CAAC,GAAG7tC,SAAR;AACA6tC,GAAC,GAAGoB,OAAO,CAAC+8I,eAAR,EAAJ;;AACA,MAAIn+I,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACh5E,oBAAP,CACE,CADF,EAEE5pE,CAFF,EAGEg2E,KAAK,CAAC6mE,eAAN,CAAsBgG,uBAHxB;AAKD;;AACD7iJ,GAAC,GAAGoB,OAAO,CAAC88I,SAAR,EAAJ;;AACA,MAAIl+I,CAAC,CAAC7mC,MAAF,GAAW,CAAf,EAAkB;AAChBypL,UAAM,CAACp+E,WAAP,CACE,CADF,EAEExkE,CAFF;AAID;AACF,CAjBD;AAoBA;AACA;AACA;AACA;;;AACAg2E,KAAK,CAACioE,YAAN,CAAmB9uK,SAAnB,CAA6BgvK,eAA7B,GAA+C,YAAW;AACxD;AAAO;AACLj2G,QAAI,CAACulC,OAAL,CAAa0D,uBAAb,CAAqC,IAArC,EAA2C6E,KAAK,CAAC6mE,eAAjD,EAAkE,CAAlE;AADF;AAED,CAHD;AAMA;AACA;AACA;AACA;;;AACA7mE,KAAK,CAACioE,YAAN,CAAmB9uK,SAAnB,CAA6By0K,eAA7B,GAA+C,UAASlxL,KAAT,EAAgB;AAC7D,SAAOw1E,IAAI,CAACulC,OAAL,CAAa8D,uBAAb,CAAqC,IAArC,EAA2C,CAA3C,EAA8C7+G,KAA9C,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;AACA;;;AACAsjH,KAAK,CAACioE,YAAN,CAAmB9uK,SAAnB,CAA6BuuK,WAA7B,GAA2C,UAASmG,SAAT,EAAoBC,SAApB,EAA+B;AACxE,SAAO57G,IAAI,CAACulC,OAAL,CAAa+D,yBAAb,CAAuC,IAAvC,EAA6C,CAA7C,EAAgDqyE,SAAhD,EAA2D7tE,KAAK,CAAC6mE,eAAjE,EAAkFiH,SAAlF,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA9tE,KAAK,CAACioE,YAAN,CAAmB9uK,SAAnB,CAA6B40K,iBAA7B,GAAiD,YAAW;AAC1D,SAAO,KAAKH,eAAL,CAAqB,EAArB,CAAP;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA5tE,KAAK,CAACioE,YAAN,CAAmB9uK,SAAnB,CAA6B+uK,SAA7B,GAAyC,YAAW;AAClD;AAAO;AAAuBh2G,QAAI,CAACulC,OAAL,CAAayC,mBAAb,CAAiC,IAAjC,EAAuC,CAAvC,EAA0C,EAA1C;AAA9B;AACD,CAFD;AAKA;AACA;AACA;AACA;;;AACA8F,KAAK,CAACioE,YAAN,CAAmB9uK,SAAnB,CAA6B60K,SAA7B,GAAyC,UAAStxL,KAAT,EAAgB;AACvD,SAAOw1E,IAAI,CAACulC,OAAL,CAAamD,oBAAb,CAAkC,IAAlC,EAAwC,CAAxC,EAA2Cl+G,KAA3C,CAAP;AACD,CAFD;;AAKA2iE,IAAI,CAACp3D,MAAL,CAAYgnE,MAAZ,CAAmB7wD,OAAnB,EAA4B4hG,KAA5B,E;;;;;;;;;;;;AC1wCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEO,SAASwrE,iBAAT,GAA6B;AAClC,MAAIt/B,IAAI,GAAGvd,4CAAA,CAAY,qCAAZ,EAAmD,EAAnD,EAAuD,IAAvD,CAAX;AACA,MAAIkoC,IAAI,GAAG,EAAX;;AAEA,OAAK,IAAI76J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkwI,IAAI,CAAC/oJ,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC66J,QAAI,GAAGJ,8CAAA,CAAcI,IAAd,EAAoBlN,kDAAS,CAACl4J,KAAV,CAAgBy6I,IAAI,CAAClwI,CAAD,CAAJ,CAAQzP,SAAxB,CAApB,CAAP;AACD;;AAED,SAAO;AACLk/K,eAAW,EAAEv/B,IAAI,CAAC/oJ,MADb;AAEL0zK,QAAI,EAAEA;AAFD,GAAP;AAID;AAEc,eAAelE,UAAf,GAA4B;AACzC,MAAIsb,OAAO,GAAGzC,iBAAiB,EAA/B;AACA,MAAIhiB,KAAK,GAAG7Z,2DAAQ,EAApB,CAFyC,CAIzC;;AACA6Z,OAAK,CAACiN,MAAN,GAAewX,OAAO,CAACpX,IAAvB,CALyC,CAOzC;;AACAloC,8CAAA,CACEA,yCAAA,CAAS,iEAAT,CADF,EAEE,CAACm7B,iEAAc,CAACN,KAAD,CAAf,CAFF;AAID,C;;;;;;;;;;;;AC9BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM1d,UAAU,GAAGvtI,mBAAO,CAAC,0GAAD,CAA1B;;AAEe,eAAem0J,SAAf,CAAyBwb,QAAzB,EAAmC;AAChD,MAAI,CAACA,QAAL,EAAe;AACb;AACA;AACA;AACA,gCAAuB,MAAM79B,uDAAA,EAA7B;AAAA,QAAMv/I,KAAN,yBAAMA,KAAN;AAAA,QAAa+0B,KAAb,yBAAaA,KAAb;;AACA,QAAIA,KAAJ,EAAW;AACT,aAAO;AAAEA;AAAF,OAAP;AACD,KAFD,MAEO,IAAI,CAAC/0B,KAAL,EAAY;AACjB,aAAO;AAAE+0B,aAAK,EAAE;AAAEghI,gBAAM,EAAE;AAAV;AAAT,OAAP;AACD;AACF;;AAED,8BAAgB,MAAMxW,6DAAA,CAA4B69B,QAA5B,CAAtB;AAAA,MAAMroJ,KAAN,yBAAMA,KAAN;;AACA,MAAIA,KAAJ,EAAW;AACT,WAAO;AAAEA;AAAF,KAAP;AACD;;AAED,QAAM0sG,4DAAU,CAAC,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,UAAM5D,6CAAA,CAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAZU,CAAN;AAaA,UAAMA,6CAAA,EAAN;AACD,GApBe,CAAhB;AAsBA,QAAM6E,gDAAA,CAAgB;AACpB/F,WAAO,EAAE,IADW;AAEpB4xB,uBAAmB,EAAE,IAFD;AAGpBC,gBAAY,EAAE;AAHM,GAAhB,CAAN;;AAMA,MAAI4uB,QAAJ,EAAc;AACZ,QAAMj8K,GAAN,GAAci8K,QAAd,CAAMj8K,GAAN;;AACA,0BAAsBuhI,+CAAA,EAAtB;AAAA,QAAMizB,WAAN,mBAAMA,WAAN,CAFY,CAIZ;AACA;AAEA;;;AACA,QAAIz0J,IAAI,GAAGjH,IAAI,CAAC0G,KAAL,CAAW,CAAC,MAAMooI,oEAAY,CAACpF,OAAb,CAAsB,cAAtB,CAAP,KAAgD,IAA3D,CAAX;AACAziI,QAAI,CAACy0J,WAAD,CAAJ,GAAoBx0J,GAAG,CAACmH,SAAJ,EAApB;AACA,UAAMygI,oEAAY,CAACnF,OAAb,CAAqB,cAArB,EAAqC3pI,IAAI,CAACC,SAAL,CAAegH,IAAf,CAArC,CAAN,CAVY,CAYZ;;AACA,UAAMwhI,gDAAA,CAAgB;AAAEkzB,kBAAY,EAAEz0J,GAAG,CAACstI,KAAJ;AAAhB,KAAhB,CAAN;AACD,GA5D+C,CA8DhD;AACA;;;AACA,MAAI;AACF,UAAM8Q,qDAAA,EAAN;AACD,GAFD,CAEE,OAAO5pI,CAAP,EAAU;AACV,QAAIA,CAAC,CAACogJ,MAAN,EAAc;AACZ,aAAO;AAAEhhI,aAAK,EAAEpf;AAAT,OAAP;AACD;;AACDitH,iFAAgB,CAACjtH,CAAD,CAAhB;AACA,WAAO;AAAEof,WAAK,EAAE;AAAEghI,cAAM,EAAE;AAAV;AAAT,KAAP;AACD,GARD,SAQU;AACR/a,cAAU,CAACvnF,IAAX,CAAgB,eAAhB;AACD;;AAED,SAAO,EAAP;AACD,C;;;;;;;;;;;;ACrFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA,MAAM68D,IAAI,GAAG7iH,mBAAO,CAAC,kFAAD,CAApB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AACA,IAAIirJ,KAAK,GAAG,IAAZ;AAEO,SAASE,QAAT,CAAkBykB,MAAlB,EAA0B;AAC/B3kB,OAAK,GAAG2kB,MAAR;AACD;AAEM,SAASx+B,QAAT,GAAoB;AACzB,SAAO6Z,KAAP;AACD;AAEM,SAASK,SAAT,CAAmBt9J,SAAnB,EAA8BkqK,MAAM,GAAG,EAAvC,EAA2C;AAChD,SAAO;AAAElqK,aAAS,EAAE6hL,gBAAgB,CAACltL,IAAjB,CAAsBqL,SAAtB,CAAb;AAA+CkqK;AAA/C,GAAP;AACD;AAEM,SAAS3M,cAAT,CAAwBN,KAAxB,EAA+B;AACpC,SAAOz+J,IAAI,CAACC,SAAL,CAAe;AACpBuB,aAAS,EAAEi9J,KAAK,CAACj9J,SAAN,CAAgBwN,QAAhB,EADS;AAEpB08J,UAAM,EAAEjN,KAAK,CAACiN;AAFM,GAAf,CAAP;AAID;AAEM,SAAShN,gBAAT,CAA0BD,KAA1B,EAAiC;AACtC,MAAIhlK,IAAJ;;AACA,MAAI;AACFA,QAAI,GAAGuG,IAAI,CAAC0G,KAAL,CAAW+3J,KAAX,CAAP;AACD,GAFD,CAEE,OAAO/iJ,CAAP,EAAU;AACVjiB,QAAI,GAAG;AACL+H,eAAS,EAAE,mCAAmCq9J,YAAY,EADrD;AAEL6M,YAAM,EAAE;AAFH,KAAP;AAID;;AAED,SAAO;AACLlqK,aAAS,EAAE6hL,gBAAgB,CAACltL,IAAjB,CAAsByoK,SAAS,CAACl4J,KAAV,CAAgBjN,IAAI,CAAC+H,SAArB,CAAtB,CADN;AAELkqK,UAAM,EAAEjyK,IAAI,CAACiyK;AAFR,GAAP;AAID;AAEM,SAAS7M,YAAT,GAAwB;AAC7B,SAAOxoC,IAAI,CACRgX,MADI,GAEJ37H,OAFI,CAEI,IAFJ,EAEU,EAFV,EAGJtX,KAHI,CAGE,CAAC,EAHH,CAAP;AAID;AAED,IAAI1C,MAAM,GAAG;AACX;AACA4rL,UAAQ,EAAE,IAAI,EAAJ,GAAS;AAFR,CAAb;AAKA;AACA;AACA;;AACe,MAAM1kB,SAAN,CAAgB;AAC7B3tK,aAAW,CAACi7K,MAAD,EAASqX,OAAT,EAAkBv9J,IAAlB,EAAwB;AACjC,SAAKw9J,MAAL,GAAc;AACZtX,YAAM,EAAEA,MADI;AAEZqX,aAAO,EAAEA,OAFG;AAGZv9J,UAAI,EAAEA;AAHM,KAAd;AAKD;;AAED1rB,SAAO,GAAG;AACR,WAAO,KAAK0U,QAAL,EAAP;AACD;;AAEDA,UAAQ,GAAG;AACT,WAAO,CACL,IAAIzS,IAAJ,CAAS,KAAK2vK,MAAL,EAAT,EAAwBtwK,WAAxB,EADK,EAEL,CACE,SACA,KAAK2nL,OAAL,GACGv0K,QADH,CACY,EADZ,EAEGqT,WAFH,EAFF,EAKEjoB,KALF,CAKQ,CAAC,CALT,CAFK,EAQL,CAAC,qBAAqB,KAAK4rB,IAAL,EAAtB,EAAmC5rB,KAAnC,CAAyC,CAAC,EAA1C,CARK,EASL+Y,IATK,CASA,GATA,CAAP;AAUD;;AAED+4J,QAAM,GAAG;AACP,WAAO,KAAKsX,MAAL,CAAYtX,MAAnB;AACD;;AAEDqX,SAAO,GAAG;AACR,WAAO,KAAKC,MAAL,CAAYD,OAAnB;AACD;;AAEDv9J,MAAI,GAAG;AACL,WAAO,KAAKw9J,MAAL,CAAYx9J,IAAnB;AACD;;AAEDimJ,MAAI,GAAG;AACL,WAAOwX,iDAAU,CAACx4D,EAAX,CAAc,KAAKj8G,QAAL,EAAd,CAAP;AACD;;AAxC4B;AA2CxB,MAAMq0K,gBAAN,SAA+BzkB,SAA/B,CAAyC;AAC9C8kB,WAAS,CAAClyJ,CAAD,EAAI;AACX,SAAKgyJ,MAAL,CAAYtX,MAAZ,GAAqB16I,CAArB;AACD;;AAEDmyJ,YAAU,CAACnyJ,CAAD,EAAI;AACZ,SAAKgyJ,MAAL,CAAYD,OAAZ,GAAsB/xJ,CAAtB;AACD;;AAEDg4I,SAAO,CAACh4I,CAAD,EAAI;AACT,SAAKgyJ,MAAL,CAAYx9J,IAAZ,GAAmBwL,CAAnB;AACD;;AAX6C;;AAchD6xJ,gBAAgB,CAACltL,IAAjB,GAAwBqL,SAAS,IAAI;AACnC,SAAO,IAAI6hL,gBAAJ,CACL7hL,SAAS,CAAC0qK,MAAV,EADK,EAEL1qK,SAAS,CAAC+hL,OAAV,EAFK,EAGL/hL,SAAS,CAACwkB,IAAV,EAHK,CAAP;AAKD,CAND,C,CAQA;AACA;AACA;;;AACA44I,SAAS,CAACt1B,IAAV,GAAiB,UAASp2I,OAAO,GAAG,EAAnB,EAAuB;AACtC,MAAIA,OAAO,CAACowL,QAAZ,EAAsB;AACpB5rL,UAAM,CAAC4rL,QAAP,GAAkBpwL,OAAO,CAACowL,QAA1B;AACD;;AAED3kB,UAAQ,CACNG,SAAS,CACP,IAAIF,SAAJ,CACE,CADF,EAEE,CAFF,EAGE1rK,OAAO,CAAC8yB,IAAR,GACI,CAAC,qBAAqB9yB,OAAO,CAAC8yB,IAA9B,EAAoChX,QAApC,GAA+C5U,KAA/C,CAAqD,CAAC,EAAtD,CADJ,GAEI,EALN,CADO,CADH,EAUN,IAVM,CAAR;AAYD,CAjBD;AAmBA;AACA;AACA;AACA;;;AACAwkK,SAAS,CAACplG,IAAV,GAAiB,YAAW;AAC1B,MAAI,CAACilG,KAAL,EAAY;AACV,WAAO,IAAP;AACD,GAHyB,CAK1B;;;AACA,MAAImlB,IAAI,GAAGrnL,IAAI,CAACoE,GAAL,EAAX,CAN0B,CAQ1B;;AACA,MAAIkjL,IAAI,GAAGplB,KAAK,CAACj9J,SAAN,CAAgB0qK,MAAhB,EAAX;AACA,MAAI4X,IAAI,GAAGrlB,KAAK,CAACj9J,SAAN,CAAgB+hL,OAAhB,EAAX,CAV0B,CAY1B;AACA;AACA;;AACA,MAAIQ,IAAI,GAAGljL,IAAI,CAACge,GAAL,CAASglK,IAAT,EAAeD,IAAf,CAAX;AACA,MAAII,IAAI,GAAGH,IAAI,KAAKE,IAAT,GAAgBD,IAAI,GAAG,CAAvB,GAA2B,CAAtC,CAhB0B,CAkB1B;;AACA,MAAIC,IAAI,GAAGH,IAAP,GAAclsL,MAAM,CAAC4rL,QAAzB,EAAmC;AACjC,UAAM,IAAI1kB,SAAS,CAACqlB,eAAd,CAA8BF,IAA9B,EAAoCH,IAApC,EAA0ClsL,MAAM,CAAC4rL,QAAjD,CAAN;AACD;;AACD,MAAIU,IAAI,GAAG,KAAX,EAAkB;AAChB,UAAM,IAAIplB,SAAS,CAACslB,aAAd,EAAN;AACD,GAxByB,CA0B1B;;;AACAzlB,OAAK,CAACj9J,SAAN,CAAgBkiL,SAAhB,CAA0BK,IAA1B;AACAtlB,OAAK,CAACj9J,SAAN,CAAgBmiL,UAAhB,CAA2BK,IAA3B;AAEA,SAAO,IAAIplB,SAAJ,CACLH,KAAK,CAACj9J,SAAN,CAAgB0qK,MAAhB,EADK,EAELzN,KAAK,CAACj9J,SAAN,CAAgB+hL,OAAhB,EAFK,EAGL9kB,KAAK,CAACj9J,SAAN,CAAgBwkB,IAAhB,EAHK,CAAP;AAKD,CAnCD,C,CAqCA;AACA;AACA;;;AACA44I,SAAS,CAAC2gB,IAAV,GAAiB,UAASjkK,GAAT,EAAc;AAC7B,MAAI,CAACmjJ,KAAL,EAAY;AACV,WAAO,IAAP;AACD,GAH4B,CAK7B;;;AACA,MAAImlB,IAAI,GAAGrnL,IAAI,CAACoE,GAAL,EAAX,CAN6B,CAQ7B;;AACA,MAAIwjL,IAAI,GAAG7oK,GAAG,CAAC4wJ,MAAJ,EAAX;AACA,MAAIkY,IAAI,GAAG9oK,GAAG,CAACioK,OAAJ,EAAX,CAV6B,CAY7B;AACA;AACA;AACA;;AACA,MAAIY,IAAI,GAAGP,IAAP,GAAclsL,MAAM,CAAC4rL,QAAzB,EAAmC;AACjC,UAAM,IAAI1kB,SAAS,CAACqlB,eAAd,EAAN;AACD,GAlB4B,CAoB7B;;;AACA,MAAIJ,IAAI,GAAGplB,KAAK,CAACj9J,SAAN,CAAgB0qK,MAAhB,EAAX;AACA,MAAI4X,IAAI,GAAGrlB,KAAK,CAACj9J,SAAN,CAAgB+hL,OAAhB,EAAX,CAtB6B,CAwB7B;AACA;AACA;AACA;AACA;AACA;;AACA,MAAIQ,IAAI,GAAGljL,IAAI,CAACge,GAAL,CAAShe,IAAI,CAACge,GAAL,CAASglK,IAAT,EAAeD,IAAf,CAAT,EAA+BO,IAA/B,CAAX;AACA,MAAIH,IAAI,GACND,IAAI,KAAKF,IAAT,IAAiBE,IAAI,KAAKI,IAA1B,GACItjL,IAAI,CAACge,GAAL,CAASilK,IAAT,EAAeM,IAAf,IAAuB,CAD3B,GAEIL,IAAI,KAAKF,IAAT,GACAC,IAAI,GAAG,CADP,GAEAC,IAAI,KAAKI,IAAT,GACAC,IAAI,GAAG,CADP,GAEA,CAPN,CA/B6B,CAwC7B;;AACA,MAAIL,IAAI,GAAGH,IAAP,GAAclsL,MAAM,CAAC4rL,QAAzB,EAAmC;AACjC,UAAM,IAAI1kB,SAAS,CAACqlB,eAAd,EAAN;AACD;;AACD,MAAID,IAAI,GAAG,KAAX,EAAkB;AAChB,UAAM,IAAIplB,SAAS,CAACslB,aAAd,EAAN;AACD,GA9C4B,CAgD7B;;;AACAzlB,OAAK,CAACj9J,SAAN,CAAgBkiL,SAAhB,CAA0BK,IAA1B;AACAtlB,OAAK,CAACj9J,SAAN,CAAgBmiL,UAAhB,CAA2BK,IAA3B;AAEA,SAAO,IAAIplB,SAAJ,CACLH,KAAK,CAACj9J,SAAN,CAAgB0qK,MAAhB,EADK,EAELzN,KAAK,CAACj9J,SAAN,CAAgB+hL,OAAhB,EAFK,EAGL9kB,KAAK,CAACj9J,SAAN,CAAgBwkB,IAAhB,EAHK,CAAP;AAKD,CAzDD;AA2DA;AACA;AACA;AACA;;;AACA44I,SAAS,CAACl4J,KAAV,GAAkB,UAASlF,SAAT,EAAoB;AACpC,MAAI,OAAOA,SAAP,KAAqB,QAAzB,EAAmC;AACjC,QAAIgjB,KAAK,GAAGhjB,SAAS,CAACiR,KAAV,CAAgB,GAAhB,CAAZ;;AACA,QAAI+R,KAAK,IAAIA,KAAK,CAACpsB,MAAN,KAAiB,CAA9B,EAAiC;AAC/B,UAAI8zK,MAAM,GAAG3vK,IAAI,CAACmK,KAAL,CAAW8d,KAAK,CAACpqB,KAAN,CAAY,CAAZ,EAAe,CAAf,EAAkB+Y,IAAlB,CAAuB,GAAvB,CAAX,EAAwC7Y,OAAxC,EAAb;AACA,UAAIipL,OAAO,GAAG/wK,QAAQ,CAACgS,KAAK,CAAC,CAAD,CAAN,EAAW,EAAX,CAAtB;AACA,UAAIwB,IAAI,GAAGxB,KAAK,CAAC,CAAD,CAAhB;AACA,UAAI,CAAC3kB,KAAK,CAACqsK,MAAD,CAAN,IAAkB,CAACrsK,KAAK,CAAC0jL,OAAD,CAA5B,EACE,OAAO,IAAI3kB,SAAJ,CAAcsN,MAAd,EAAsBqX,OAAtB,EAA+Bv9J,IAA/B,CAAP;AACH;AACF;;AACD,SAAO,IAAP;AACD,CAZD;AAcA;AACA;AACA;;;AACA,IAAIrU,IAAI,GAAGitJ,SAAS,CAACl4J,KAAV,CAAgB,gDAAhB,CAAX;;AACAk4J,SAAS,CAACjtJ,IAAV,GAAiB,YAAW;AAC1B,SAAOA,IAAP;AACD,CAFD;AAIA;AACA;AACA;;;AACA,IAAIkN,GAAG,GAAG+/I,SAAS,CAACl4J,KAAV,CAAgB,gDAAhB,CAAV;;AACAk4J,SAAS,CAAC//I,GAAV,GAAgB,YAAW;AACzB,SAAOA,GAAP;AACD,CAFD;;AAIA+/I,SAAS,CAAC5mB,KAAV,GAAkBqsC,SAAS,IAAI;AAC7B,SAAOA,SAAS,GAAG,wBAAnB;AACD,CAFD;AAIA;AACA;AACA;;;AACAzlB,SAAS,CAAC0lB,kBAAV,GAA+B,cAAc1tL,KAAd,CAAoB;AACjD3F,aAAW,CAAC+0B,IAAD,EAAO;AAChB;AACA,SAAKzX,IAAL,GAAY,oBAAZ;AACA,SAAK8xB,OAAL,GAAe,+BAA+Bra,IAA9C;AACD;;AALgD,CAAnD;AAQA44I,SAAS,CAACqlB,eAAV,GAA4B,cAAcrtL,KAAd,CAAoB;AAC9C3F,aAAW,CAAC,GAAGC,IAAJ,EAAU;AACnB;AACA,SAAKqd,IAAL,GAAY,iBAAZ;AACA,SAAK8xB,OAAL,GAAe,CAAC,8BAAD,EAAiCjR,MAAjC,CAAwCl+B,IAAxC,EAA8CiiB,IAA9C,CAAmD,GAAnD,CAAf;AACD;;AAL6C,CAAhD;AAQAyrJ,SAAS,CAACslB,aAAV,GAA0B,cAActtL,KAAd,CAAoB;AAC5C3F,aAAW,GAAG;AACZ;AACA,SAAKsd,IAAL,GAAY,eAAZ;AACA,SAAK8xB,OAAL,GAAe,4BAAf;AACD;;AAL2C,CAA9C,C;;;;;;;;;;;;ACvUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA,IAAIwmH,GAAG,GAAGM,sDAAS,EAAnB;AAEAN,GAAG,CAACnxJ,MAAJ,CAAW,8BAAX,EAA2C,YAAY;AACrD;AACA;AACA,MAAI6uL,cAAc,GAAG,MAAM3gD,uCAAA,CAAQ;AACrC;AACA;AACA;AACA,GAJ6B,CAA3B;AAMA,QAAM4D,4DAAU,CAAC,YAAY;AAC3B,QAAIgS,OAAO,GAAG+qC,cAAc,CAACpvL,GAAf,CAAmBi8I,GAAG,KAAK;AACvC3X,QAAE,EAAE2X,GAAG,CAAC3X,EAD+B;AAEvCyC,WAAK,EAAEkV,GAAG,CAACozC;AAF4B,KAAL,CAAtB,CAAd;AAIA,UAAMvqC,sFAAuB,CAAC;AAAET;AAAF,KAAD,CAA7B;AACD,GANe,CAAhB,CATqD,CAiBrD;AACA;;AACA,MAAIirC,WAAW,GAAG,MAAM7gD,uCAAA,CAAQ;AAClC;AACA;AACA;AACA,GAJ0B,CAAxB;AAMA,QAAM4D,4DAAU,CAAC,YAAY;AAC3B,QAAIgS,OAAO,GAAGirC,WAAW,CAACtvL,GAAZ,CAAgBi8I,GAAG,KAAK;AACpC3X,QAAE,EAAE2X,GAAG,CAAC3X,EAD4B;AAEpC0J,aAAO,EAAEiO,GAAG,CAACjO,OAAJ,KAAgB;AAFW,KAAL,CAAnB,CAAd;AAIA,UAAM8W,sFAAuB,CAAC;AAAET;AAAF,KAAD,CAA7B;AACD,GANe,CAAhB,CAzBqD,CAiCrD;AACA;;AACA,MAAIkrC,WAAW,GAAG,MAAM9gD,uCAAA,CAAQ;AAClC;AACA;AACA;AACA,GAJ0B,CAAxB;AAMA,QAAM4D,4DAAU,CAAC,YAAY;AAC3B,QAAIgS,OAAO,GAAGkrC,WAAW,CAACvvL,GAAZ,CAAgBi8I,GAAG,KAAK;AAAE3X,QAAE,EAAE2X,GAAG,CAAC3X,EAAV;AAAcqkB,eAAS,EAAE;AAAzB,KAAL,CAAnB,CAAd;AACA,UAAM7D,sFAAuB,CAAC;AAAET;AAAF,KAAD,CAA7B;AACD,GAHe,CAAhB;AAKA,SAAO;AACLmrC,kBAAc,EAAEJ,cAAc,CAACnsL,MAD1B;AAELwsL,cAAU,EAAEH,WAAW,CAACrsL,MAFnB;AAGLysL,cAAU,EAAEH,WAAW,CAACtsL;AAHnB,GAAP;AAKD,CAnDD;AAqDeyuJ,kEAAf,E;;;;;;;;;;;;AC7DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AACA,IAAIxwB,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAAlB;;AAEA,IAAIsxK,eAAJ;AACA,IAAIC,QAAJ;AACA,IAAIC,SAAS,GAAG,IAAhB;AAEO,SAASC,MAAT,CAAgB9d,UAAhB,EAA4B;AACjC6d,WAAS,GAAG7d,UAAU,IAAI,IAAd,IAAsBA,UAAU,KAAK,MAArC,GAA8C,IAA9C,GAAqD,KAAjE;AACD,C,CAED;AACA;AACA;AACA;AAEA;AACA;;AACA,eAAe8E,IAAf,CAAoBl9B,MAApB,EAA4B;AAC1B,MAAIm2C,MAAM,GAAG,MAAM5iB,0EAAY,CAACvzB,MAAD,CAA/B;AACA,SAAQ,QAAOm2C,MAAM,CAACxzK,OAAP,CAAe,OAAf,EAAwB,EAAxB,CAA4B,EAA3C;AACD;;AAED,SAASyzK,WAAT,CAAqB1rD,EAArB,EAAyB;AACvB,SAAO,CAACA,EAAE,CAACh5C,UAAH,CAAc,OAAd,CAAR;AACD;;AAEM,eAAe6oD,IAAf,GAAsB,CAC5B;AAEM,eAAe87C,KAAf,CAAqBr2C,MAArB,EAA6B,CACnC;AAED,IAAIs2C,SAAS,GAAG,KAAhB;AACA,IAAI3wK,MAAM,GAAG,EAAb;;AAEA,SAAS4wK,cAAT,GAA0B;AACxBD,WAAS,GAAG,IAAZ;AACA3wK,QAAM,GAAG,EAAT;AACD;;AAED,SAAS6wK,aAAT,GAAyB;AACvB,OAAK,IAAIt2K,IAAT,IAAiByF,MAAjB,EAAyB;AACvBzF,QAAI,CAAC,CAAD,CAAJ,CAAQ,GAAGA,IAAI,CAAC,CAAD,CAAf;AACD;;AACDo2K,WAAS,GAAG,KAAZ;AACA3wK,QAAM,GAAG,EAAT;AACD;;AAED,SAASmgJ,QAAT,CAAkBhgI,IAAlB,EAAwB;AACtB,SAAO,CAAC,GAAG3jC,IAAJ,KAAa;AAClB,QAAIs8B,KAAJ,EAA4C,EAM3C;AACF,GARD;AASD;;AAEM,MAAMmrD,KAAK,GAAGk8E,QAAQ,CAAC,CAAC2wB,WAAD,EAAcpqL,IAAd,EAAoBwd,KAApB,KAA8B,CAAE,CAAjC,CAAtB;AAEA,MAAM6sK,UAAU,GAAG5wB,QAAQ,CAAC,CAAC2wB,WAAD,EAAc5sK,KAAd,KAAwB,CAAE,CAA3B,CAA3B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChEP;AACA;AACA;AACA;;AACA,MAAMmoI,UAAU,GAAGvtI,mBAAO,CAAC,uGAAD,CAA1B,C,CAEA;;;AACA,IAAIkyK,eAAe,GAAG,CAAC;AAAEn3K,MAAI,EAAE;AAAR,CAAD,CAAtB;AACA,IAAIo3K,MAAM,GAAG,CAAb;AACA,IAAIC,YAAY,GAAG,EAAnB;;AAEA,SAASC,WAAT,GAAuB;AACrBH,iBAAe,GAAGA,eAAe,CAACtrL,KAAhB,CAAsB,CAAtB,EAAyBurL,MAAM,GAAG,CAAlC,CAAlB;AAEA,MAAIG,OAAO,GAAGJ,eAAe,CAAC7sL,MAAhB,CAAuByc,IAAI,IAAIA,IAAI,CAAC/G,IAAL,KAAc,QAA7C,CAAd;;AACA,MAAIu3K,OAAO,CAAC1tL,MAAR,GAAiBwtL,YAArB,EAAmC;AACjC,QAAIxrL,KAAK,GAAG0rL,OAAO,CAAC1rL,KAAR,CAAc,CAACwrL,YAAf,CAAZ;AACA,QAAIG,MAAM,GAAGL,eAAe,CAACtlL,OAAhB,CAAwBhG,KAAK,CAAC,CAAD,CAA7B,CAAb;AACAsrL,mBAAe,GAAGA,eAAe,CAACtrL,KAAhB,CAAsB2rL,MAAtB,CAAlB;AACAJ,UAAM,GAAGD,eAAe,CAACttL,MAAhB,GAAyB,CAAlC;AACD;AACF;;AAEM,SAAS4tL,cAAT,CAAwB1V,QAAxB,EAAkCyO,OAAlC,EAA2C;AAChD,MAAIhuK,OAAO,GAAG2+J,mEAAiB,EAA/B;;AAEA,MAAI3+J,OAAO,CAACk1K,aAAR,IAAyB3V,QAAQ,CAACl4K,MAAT,GAAkB,CAA/C,EAAkD;AAChDytL,eAAW;AAEX,QAAM5W,OAAN,GAAkBl+J,OAAlB,CAAMk+J,OAAN;AAEAyW,mBAAe,CAACzuL,IAAhB,CAAqB;AACnBsX,UAAI,EAAE,UADa;AAEnB+hK,cAFmB;AAGnByO,aAHmB;AAInB9P;AAJmB,KAArB;AAMA0W,UAAM;AACP;AACF;AAEM,SAAS7b,SAAT,GAAqB;AAC1B4b,iBAAe,GAAG,CAAC;AAAEn3K,QAAI,EAAE;AAAR,GAAD,CAAlB;AACAo3K,QAAM,GAAG,CAAT;AACD;AAEM,SAASrgB,QAAT,CAAkBzwI,IAAlB,EAAwB4jD,IAAxB,EAA8B;AACnC,MAAI1nE,OAAO,GAAG2+J,mEAAiB,EAA/B;;AACA,MAAI3+J,OAAO,CAACg0I,YAAR,IAAwBh0I,OAAO,CAACk1K,aAApC,EAAmD;AACjD,WAAOpxJ,IAAI,EAAX;AACD;;AAED6wJ,iBAAe,GAAGA,eAAe,CAACtrL,KAAhB,CAAsB,CAAtB,EAAyBurL,MAAM,GAAG,CAAlC,CAAlB;AAEA,MAAIO,MAAM,GAAG;AAAE33K,QAAI,EAAE,QAAR;AAAkBkqE;AAAlB,GAAb;;AAEA,MAAIitG,eAAe,CAACA,eAAe,CAACttL,MAAhB,GAAyB,CAA1B,CAAf,CAA4CmW,IAA5C,KAAqD,QAAzD,EAAmE;AACjEm3K,mBAAe,CAACA,eAAe,CAACttL,MAAhB,GAAyB,CAA1B,CAAf,GAA8C8tL,MAA9C;AACD,GAFD,MAEO;AACLR,mBAAe,CAACzuL,IAAhB,CAAqBivL,MAArB;AACAP,UAAM;AACP;;AAED,SAAOnW,oEAAkB,CACvB;AAAEyW,iBAAa,EAAE,IAAjB;AAAuBhX,WAAO,EAAEl+J,OAAO,CAACk+J;AAAxC,GADuB,EAEvBp6I,IAFuB,CAAzB;AAID;AAEM,SAASyiI,QAAT,CAAkBziI,IAAlB,EAAwB;AAC7B,SAAO,CAAC,GAAG3jC,IAAJ,KAAa;AAClB,WAAOo0K,QAAQ,CAAC,MAAM;AACpB,aAAOzwI,IAAI,CAAC,GAAG3jC,IAAJ,CAAX;AACD,KAFc,CAAf;AAGD,GAJD;AAKD;;AAED,eAAei1L,eAAf,CAA+B7V,QAA/B,EAAyC73F,IAAzC,EAA+Cw2F,OAA/C,EAAwD;AACtD,QAAMO,oEAAkB,CAAC;AAAEyW,iBAAa,EAAE;AAAjB,GAAD,EAA2B,MAAM;AACvD,WAAO5mB,0DAAY,CACjBiR,QAAQ,CAACn7K,GAAT,CAAammB,GAAG,oCAAUA,GAAV;AAAe9Z,eAAS,EAAEo9J,kDAAS,CAACplG,IAAV;AAA1B,MAAhB,CADiB,CAAnB;AAGD,GAJuB,CAAxB;AAMA,QAAMukF,MAAM,GAAGuyB,QAAQ,CAACj+K,MAAT,CAAgB,CAAC61H,GAAD,EAAM7nF,OAAN,KAAkB;AAC/C,QAAI,CAAC6nF,GAAG,CAACr+G,QAAJ,CAAaw2B,OAAO,CAACykH,OAArB,CAAL,EAAoC;AAClC58B,SAAG,CAACjxH,IAAJ,CAASopC,OAAO,CAACykH,OAAjB;AACD;;AACD,WAAO58B,GAAP;AACD,GALc,EAKZ,EALY,CAAf;AAOA64B,YAAU,CAACvnF,IAAX,CAAgB,YAAhB,EAA8B;AAC5B82G,YAD4B;AAE5BvyB,UAF4B;AAG5BtlE,QAH4B;AAI5Bw2F;AAJ4B,GAA9B;AAMD;;AAEM,eAAe7J,IAAf,GAAsB;AAC3B,MAAInzK,GAAG,GAAG0zL,MAAV;AACAA,QAAM,GAAG9kL,IAAI,CAACge,GAAL,CAAS8mK,MAAM,GAAG,CAAlB,EAAqB,CAArB,CAAT,CAF2B,CAI3B;;AACA,SAAOA,MAAM,GAAG,CAAT,IAAcD,eAAe,CAACC,MAAD,CAAf,CAAwBp3K,IAAxB,KAAiC,QAAtD,EAAgE;AAC9Do3K,UAAM;AACP;;AAED,MAAIltG,IAAI,GAAGitG,eAAe,CAACC,MAAD,CAAf,CAAwBltG,IAAnC;AACA,MAAIjnF,KAAK,GAAGqP,IAAI,CAACge,GAAL,CAAS8mK,MAAT,EAAiB,CAAjB,CAAZ;AACA,MAAI/rK,OAAO,GAAG8rK,eAAe,CAACtrL,KAAhB,CAAsB5I,KAAtB,EAA6BS,GAAG,GAAG,CAAnC,EAAsC4G,MAAtC,CACZ0T,KAAK,IAAIA,KAAK,CAACgC,IAAN,KAAe,UADZ,CAAd;;AAIA,MAAIqL,OAAO,CAACxhB,MAAR,GAAiB,CAArB,EAAwB;AACtB,QAAI0oL,OAAO,GAAGlnK,OAAO,CAClBvnB,MADW,CACJ,CAAC61H,GAAD,EAAM37G,KAAN,KAAgB;AACtB,aAAO27G,GAAG,CAAC94F,MAAJ,CACL7iB,KAAK,CAAC+jK,QAAN,CACGn7K,GADH,CACOkrC,OAAO,IAAI+lJ,WAAW,CAAC/lJ,OAAD,EAAU9zB,KAAK,CAACwyK,OAAhB,CAD7B,EAEGlmL,MAFH,CAEUiH,CAAC,IAAIA,CAFf,CADK,CAAP;AAKD,KAPW,EAOT,EAPS,EAQX5N,OARW,EAAd;AAUA,UAAMi0L,eAAe,CAACrF,OAAD,EAAUroG,IAAV,EAAgB7+D,OAAO,CAAC,CAAD,CAAP,CAAWq1J,OAA3B,CAArB;AACD;AACF;;AAED,SAASmX,WAAT,CAAqB/lJ,OAArB,EAA8B0+I,OAA9B,EAAuC;AACrC,MAAIsH,OAAO,GAAGpH,0DAAK,CAACF,OAAD,EAAU,CAAC1+I,OAAO,CAACykH,OAAT,EAAkBzkH,OAAO,CAAC+wG,GAA1B,CAAV,CAAnB;;AACA,MAAIi1C,OAAJ,EAAa;AACX,QAAIrmJ,MAAM,GAAGK,OAAO,CAACL,MAArB;;AACA,QAAIK,OAAO,CAACykH,OAAR,KAAoB,mBAAxB,EAA6C;AAC3C;AACA;AACA;AACA9kH,YAAM,GAAG,aAAT;AACD;;AAED,2CAAYK,OAAZ;AAAqB1uC,WAAK,EAAE00L,OAAO,CAACrmJ,MAAD;AAAnC;AACD,GAVD,MAUO;AACL,QAAIK,OAAO,CAACykH,OAAR,KAAoB,mBAAxB,EAA6C;AAC3C,UAAIzkH,OAAO,CAACL,MAAR,KAAmB,MAAvB,EAA+B;AAC7B,+CAAYK,OAAZ;AAAqB1uC,eAAK,EAAE;AAA5B;AACD;;AACD,aAAO0uC,OAAP;AACD,KALD,MAKO,KACL;AACA;AACA;AACAA,WAAO,CAACykH,OAAR,KAAoB,kBAApB,IACAzkH,OAAO,CAACykH,OAAR,KAAoB,eALf,EAML;AACA,UACEzkH,OAAO,CAACykH,OAAR,KAAoB,oBAApB,IACAzkH,OAAO,CAACykH,OAAR,KAAoB,cADpB,IAEAzkH,OAAO,CAACykH,OAAR,KAAoB,iBAHtB,EAIE;AACA;AACA,YAAI,CAAC,UAAD,EAAa,QAAb,EAAuB,WAAvB,EAAoCj7I,QAApC,CAA6Cw2B,OAAO,CAACL,MAArD,CAAJ,EAAkE;AAChE,iDAAYK,OAAZ;AAAqB1uC,iBAAK,EAAE;AAA5B;AACD;;AACD,eAAO,IAAP;AACD,OAVD,MAUO,IAAI0uC,OAAO,CAACykH,OAAR,KAAoB,OAAxB,EAAiC;AACtC,+CAAYzkH,OAAZ;AAAqB1uC,eAAK,EAAE;AAA5B;AACD;;AAED,6CAAY0uC,OAAZ;AAAqBL,cAAM,EAAE,WAA7B;AAA0CruC,aAAK,EAAE;AAAjD;AACD;AACF;;AACD,SAAO,IAAP;AACD;;AAEM,eAAe0zK,IAAf,GAAsB;AAC3B,MAAI5sF,IAAI,GACNitG,eAAe,CAACC,MAAD,CAAf,CAAwBp3K,IAAxB,KAAiC,QAAjC,GACIm3K,eAAe,CAACC,MAAD,CAAf,CAAwBltG,IAD5B,GAEI,IAHN;AAKA,MAAIjnF,KAAK,GAAGm0L,MAAZ;AACAA,QAAM,GAAG9kL,IAAI,CAACe,GAAL,CAAS+jL,MAAM,GAAG,CAAlB,EAAqBD,eAAe,CAACttL,MAAhB,GAAyB,CAA9C,CAAT,CAP2B,CAS3B;;AACA,SACEutL,MAAM,GAAGD,eAAe,CAACttL,MAAhB,GAAyB,CAAlC,IACAstL,eAAe,CAACC,MAAD,CAAf,CAAwBp3K,IAAxB,KAAiC,QAFnC,EAGE;AACAo3K,UAAM;AACP;;AAED,MAAI1zL,GAAG,GAAG0zL,MAAV;AACA,MAAI/rK,OAAO,GAAG8rK,eAAe,CAACtrL,KAAhB,CAAsB5I,KAAK,GAAG,CAA9B,EAAiCS,GAAG,GAAG,CAAvC,EAA0C4G,MAA1C,CACZ0T,KAAK,IAAIA,KAAK,CAACgC,IAAN,KAAe,UADZ,CAAd;;AAIA,MAAIqL,OAAO,CAACxhB,MAAR,GAAiB,CAArB,EAAwB;AACtB,QAAI0oL,OAAO,GAAGlnK,OAAO,CAACvnB,MAAR,CAAe,CAAC61H,GAAD,EAAM37G,KAAN,KAAgB;AAC3C,aAAO27G,GAAG,CACP94F,MADI,CACG7iB,KAAK,CAAC+jK,QADT,EAEJlhJ,MAFI,CAEGk3J,iBAAiB,CAAC/5K,KAAK,CAAC+jK,QAAP,EAAiB/jK,KAAK,CAACwyK,OAAvB,CAFpB,CAAP;AAGD,KAJa,EAIX,EAJW,CAAd;AAMA,UAAMoH,eAAe,CAACrF,OAAD,EAAUroG,IAAV,EAAgB7+D,OAAO,CAACA,OAAO,CAACxhB,MAAR,GAAiB,CAAlB,CAAP,CAA4B62K,OAA5C,CAArB;AACD;AACF;;AAED,SAASqX,iBAAT,CAA2BhW,QAA3B,EAAqCyO,OAArC,EAA8C;AAC5C,MAAIwH,SAAS,GAAG,IAAI95K,GAAJ,EAAhB;AAEA6jK,UAAQ,CAAChsK,OAAT,CAAiB+7B,OAAO,IAAI;AAC1B;AACA;AACA,QAAIgmJ,OAAO,GAAGpH,0DAAK,CAACF,OAAD,EAAU,CAAC1+I,OAAO,CAACykH,OAAT,EAAkBzkH,OAAO,CAAC+wG,GAA1B,CAAV,CAAnB;;AACA,QACE,CAACi1C,OAAD,IACA,CAAC,CACC,oBADD,EAEC,cAFD,EAGC,iBAHD,EAIC,OAJD,EAKC,kBALD,EAMC,eAND,EAOCx8K,QAPD,CAOUw2B,OAAO,CAACykH,OAPlB,CAFH,EAUE;AACAyhC,eAAS,CAACpyL,GAAV,CAAcksC,OAAO,CAACykH,OAAR,GAAkB,GAAlB,GAAwBzkH,OAAO,CAAC+wG,GAA9C;AACD;AACF,GAjBD;AAmBA,SAAO,CAAC,GAAGm1C,SAAJ,EAAepxL,GAAf,CAAmB2/B,IAAI,IAAI;AAChC,sBAAmBA,IAAI,CAACriB,KAAL,CAAW,GAAX,CAAnB;AAAA;AAAA,QAAK0mH,KAAL;AAAA,QAAYiY,GAAZ;;AACA,WAAO;AACL0T,aAAO,EAAE3rB,KADJ;AAELiY,SAFK;AAGLpxG,YAAM,EAAE,WAHH;AAILruC,WAAK,EAAE,CAJF;AAKL6P,eAAS,EAAEo9J,kDAAS,CAACplG,IAAV;AALN,KAAP;AAOD,GATM,CAAP;AAUD,C;;;;;;;;;;;;AC/OD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;CAGA;;AAEA,eAAegtH,aAAf,GAA+B;AAC7B,QAAMC,2DAAA,CAAmB7iD,+CAAA,EAAnB,CAAN;AACD;;AAEM,eAAe8iD,WAAf,GAA6B;AAClC,MAAIC,OAAO,GAAG,WAAd;AACA,MAAIv1C,GAAG,GAAG,MAAMxN,yCAAA,CAAS,0CAAT,EAAqD,CACnE+iD,OADmE,CAArD,CAAhB;;AAGA,aAAsBv1C,GAAG,IAAI,EAA7B;AAAA,MAAa66B,IAAb,QAAMt6K,KAAN;;AAEA,MAAI4qJ,KAAK,GAAG6V,4DAAS,CAACvK,kDAAD,EAASvL,wDAAT,CAArB;AACA,MAAIsqC,WAAW,GAAGp+D,0CAAG,CAAC+zB,KAAD,CAArB;;AAEA,MAAI0vB,IAAI,KAAK2a,WAAb,EAA0B;AACxB,UAAMhjD,6CAAA,CAAa2Y,KAAb,CAAN;AACA,UAAM3Y,4CAAA,CACJ,4DADI,EAEJ,CAAC+iD,OAAD,EAAUC,WAAV,CAFI,CAAN;AAID;AACF;AAEM,eAAetd,aAAf,GAA+B;AACpC,QAAMkd,aAAa,EAAnB;AACA,QAAME,WAAW,EAAjB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA,MAAMrwD,IAAI,GAAG7iH,mBAAO,CAAC,qFAAD,CAApB;;AAEO,eAAe01J,cAAf,CAA8B2d,aAA9B,EAA6C;AAClD,MAAIC,WAAW,GAAG,aAAlB;AACA,MAAIxvC,GAAG,GAAG,CAAV,CAFkD,CAIlD;AACA;;AACA,MAAIyvC,OAAO,GAAGD,WAAd;;AACA,SAAOD,aAAa,CAAC/4K,IAAd,CAAmByN,IAAI,IAAIA,IAAI,CAACngB,IAAL,KAAc2rL,OAAzC,CAAP,EAA0D;AACxDA,WAAO,GAAI,GAAED,WAAY,IAAGxvC,GAAI,EAAhC;AACAA,OAAG;AACJ;;AAED,SAAOyvC,OAAP;AACD;AAEM,eAAe5d,cAAf,CAA8B/tK,IAA9B,EAAoC;AACzC,MAAIq+H,EAAE,GACJr+H,IAAI,CAACsW,OAAL,CAAa,mBAAb,EAAkC,GAAlC,IAAyC,GAAzC,GAA+C2kH,IAAI,CAACgX,MAAL,GAAcjzI,KAAd,CAAoB,CAApB,EAAuB,CAAvB,CADjD,CADyC,CAIzC;AACA;AACA;;AACA,MAAIjD,KAAK,GAAG,CAAZ;AAEA,MAAI27J,SAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAhB,CAAhB;;AACA,SAAO,MAAMrlH,0DAAE,CAACqa,MAAH,CAAUqkI,SAAV,CAAb,EAAmC;AACjC37J,SAAK;AACL27J,aAAS,GAAG1+I,0DAAE,CAAC02H,YAAH,CAAgBrR,EAAE,GAAGtiI,KAAK,CAAC6X,QAAN,EAArB,CAAZ;AACD,GAbwC,CAezC;;;AACA,MAAI7X,KAAK,GAAG,CAAZ,EAAe;AACbsiI,MAAE,GAAGA,EAAE,GAAGtiI,KAAK,CAAC6X,QAAN,EAAV;AACD;;AAED,SAAOyqH,EAAP;AACD,C;;;;;;;;;;;;ACvCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAO,SAASqW,oBAAT,CAA8BvhI,IAA9B,EAAoC0lK,OAApC,EAA6C;AAClD,UAAQ1lK,IAAR;AACE,SAAK,WAAL;AACA,SAAK,YAAL;AACE,aAAO,YAAP;;AACF,SAAK,QAAL;AACE,aAAO,QAAP;;AACF,SAAK,MAAL;AACE,aAAO,MAAP;;AACF,SAAK,OAAL;AACE,aAAO,OAAP;;AACF,SAAK,YAAL;AACA;AACE,cAAQ0lK,OAAR;AACE,aAAK,cAAL;AACA,aAAK,SAAL;AACE,iBAAO,SAAP;;AACF,aAAK,IAAL;AACE,iBAAO,IAAP;;AACF;AACE,iBAAO,UAAP;AAPJ;;AAZJ;AAsBD;AAEM,SAAS+S,iBAAT,CAA2Bz4K,IAA3B,EAAiC;AACtC,UAAQA,IAAR;AACE,SAAK,UAAL;AACE,aAAO,UAAP;;AACF,SAAK,SAAL;AACE,aAAO,SAAP;;AACF,SAAK,IAAL;AACE,aAAO,IAAP;;AACF,SAAK,YAAL;AACE,aAAO,YAAP;;AACF,SAAK,QAAL;AACE,aAAO,aAAP;;AACF,SAAK,UAAL;AACE,aAAO,UAAP;;AACF,SAAK,MAAL;AACE,aAAO,MAAP;;AACF,SAAK,OAAL;AACA;AACE,aAAO,OAAP;AAjBJ;AAmBD;AAEM,SAAS04K,kBAAT,CAA4B14K,IAA5B,EAAkC;AACvC,UAAQA,IAAR;AACE,SAAK,YAAL;AACA,SAAK,UAAL;AACA,SAAK,MAAL;AACA,SAAK,OAAL;AACE,aAAO,IAAP;;AACF;AANF;;AAQA,SAAO,KAAP;AACD,C;;;;;;;;;;;;ACzDD;AAAA;AAAA;AAAO,SAAS8gK,UAAT,CAAoBz0K,EAApB,EAAwB;AAC7B,MAAIssL,aAAa,GAAG;AAClB/M,WAAO,EAAE,IADS;AAElBgN,SAAK,EAAE;AAFW,GAApB;;AAKA,WAASC,IAAT,GAAgB;AACd,QAAIF,aAAa,CAACC,KAAd,CAAoB/uL,MAApB,GAA6B,CAAjC,EAAoC;AAClC,YAAM1G,IAAI,GAAGw1L,aAAa,CAACC,KAAd,CAAoBruL,KAApB,EAAb;AACAkP,SAAG,CAACtW,IAAI,CAACR,IAAN,EAAYQ,IAAI,CAAConB,OAAjB,EAA0BpnB,IAAI,CAACqnB,MAA/B,CAAH;AACD,KAHD,MAGO;AACLmuK,mBAAa,CAAC/M,OAAd,GAAwB,IAAxB;AACD;AACF;;AAED,WAASnyK,GAAT,CAAa9W,IAAb,EAAmB4nB,OAAnB,EAA4BC,MAA5B,EAAoC;AAClCmuK,iBAAa,CAAC/M,OAAd,GAAwBv/K,EAAE,CAAC,GAAG1J,IAAJ,CAA1B;AAEAg2L,iBAAa,CAAC/M,OAAd,CAAsBp9J,IAAtB,CACE3L,GAAG,IAAI;AACLg2K,UAAI;AACJtuK,aAAO,CAAC1H,GAAD,CAAP;AACD,KAJH,EAKEmF,GAAG,IAAI;AACL6wK,UAAI;AACJruK,YAAM,CAACxC,GAAD,CAAN;AACD,KARH;AAUD;;AAED,SAAO,CAAC,GAAGrlB,IAAJ,KAAa;AAClB,QAAI,CAACg2L,aAAa,CAAC/M,OAAnB,EAA4B;AAC1B,aAAO,IAAIthK,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,eAAO/Q,GAAG,CAAC9W,IAAD,EAAO4nB,OAAP,EAAgBC,MAAhB,CAAV;AACD,OAFM,CAAP;AAGD,KAJD,MAIO;AACL,aAAO,IAAIF,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtCmuK,qBAAa,CAACC,KAAd,CAAoBlwL,IAApB,CAAyB;AAAE6hB,iBAAF;AAAWC,gBAAX;AAAmB7nB;AAAnB,SAAzB;AACD,OAFM,CAAP;AAGD;AACF,GAVD;AAWD;AAEM,SAASu+E,IAAT,CAAc70E,EAAd,EAAkB;AACvB,MAAIs0K,OAAO,GAAG,IAAd;;AACA,MAAImY,MAAM,GAAG,CAAC,GAAGn2L,IAAJ,KAAa;AACxB,QAAI,CAACg+K,OAAL,EAAc;AACZA,aAAO,GAAGt0K,EAAE,CAAC,GAAG1J,IAAJ,CAAF,CAAYq+K,OAAZ,CAAoB,MAAM;AAClCL,eAAO,GAAG,IAAV;AACD,OAFS,CAAV;AAGA,aAAOA,OAAP;AACD;;AAED,WAAOA,OAAP;AACD,GATD;;AAWA,SAAOmY,MAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzDD;AACA;;AAEA,SAASrqD,MAAT,CAAgBrrI,KAAhB,EAAuB;AACrB,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,uBAAyBA,KAAK,CAAC8gB,KAAN,CAAY,GAAZ,CAAzB;AAAA;AAAA,QAAK/V,IAAL;AAAA,QAAWC,KAAX;AAAA,QAAkBlJ,GAAlB;;AACA,QAAIA,GAAG,IAAI,IAAX,EAAiB;AACf,aAAO,IAAI8I,IAAJ,CAASiW,QAAQ,CAAC9V,IAAD,CAAjB,EAAyB8V,QAAQ,CAAC7V,KAAD,CAAR,GAAkB,CAA3C,EAA8C6V,QAAQ,CAAC/e,GAAD,CAAtD,EAA6D,EAA7D,CAAP;AACD,KAFD,MAEO,IAAIkJ,KAAK,IAAI,IAAb,EAAmB;AACxB,aAAO,IAAIJ,IAAJ,CAASiW,QAAQ,CAAC9V,IAAD,CAAjB,EAAyB8V,QAAQ,CAAC7V,KAAD,CAAR,GAAkB,CAA3C,EAA8C,CAA9C,EAAiD,EAAjD,CAAP;AACD,KAFM,MAEA;AACL,aAAO,IAAIJ,IAAJ,CAASiW,QAAQ,CAAC9V,IAAD,CAAjB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,EAA/B,CAAP;AACD;AACF;;AACD,SAAO/K,KAAP;AACD;;AAEM,MAAMyzD,SAAS,GAAG43E,MAAlB;AAEA,SAAS4W,YAAT,CAAsBx/I,IAAtB,EAA4B;AACjC,SAAOk0C,+CAAA,CAAS00F,MAAM,CAAC5oI,IAAD,CAAf,EAAuB,MAAvB,CAAP;AACD;AAEM,SAAS6oI,aAAT,CAAuB7oI,IAAvB,EAA6B;AAClC,SAAOk0C,+CAAA,CAAS00F,MAAM,CAAC5oI,IAAD,CAAf,EAAuB,SAAvB,CAAP;AACD;AAEM,SAAS88I,WAAT,CAAqB98I,IAArB,EAA2B;AAChC,SAAOk0C,+CAAA,CAAS00F,MAAM,CAAC5oI,IAAD,CAAf,EAAuB,YAAvB,CAAP;AACD;AAEM,SAAS4Z,YAAT,GAAwB;AAC7B,MAAI4lB,MAAM,CAAC0zJ,UAAX,EAAuB;AACrB,WAAO,SAAP;AACD,GAFD,MAEO;AACL,WAAOh/I,+CAAA,CAAS,IAAI/rC,IAAJ,EAAT,EAAqB,SAArB,CAAP;AACD;AACF;AAEM,SAAS4P,UAAT,GAAsB;AAC3B,MAAIynB,MAAM,CAAC0zJ,UAAX,EAAuB;AACrB,WAAO,YAAP;AACD,GAFD,MAEO;AACL,WAAOh/I,+CAAA,CAAS,IAAI/rC,IAAJ,EAAT,EAAqB,YAArB,CAAP;AACD;AACF;AAEM,SAAS6P,SAAT,CAAmBzP,KAAnB,EAA0B;AAC/B,SAAO2rC,+CAAA,CAASA,kDAAA,CAAY00F,MAAM,CAACrgI,KAAD,CAAlB,EAA2B,CAA3B,CAAT,EAAwC,SAAxC,CAAP;AACD;AAEM,SAASg5J,SAAT,CAAmBh5J,KAAnB,EAA0B;AAC/B,SAAO2rC,+CAAA,CAASA,kDAAA,CAAY00F,MAAM,CAACrgI,KAAD,CAAlB,EAA2B,CAA3B,CAAT,EAAwC,SAAxC,CAAP;AACD;AAEM,SAASuxC,SAAT,CAAmBvxC,KAAnB,EAA0B60B,CAA1B,EAA6B;AAClC,SAAO8W,+CAAA,CAASA,kDAAA,CAAY00F,MAAM,CAACrgI,KAAD,CAAlB,EAA2B60B,CAA3B,CAAT,EAAwC,SAAxC,CAAP;AACD;AAEM,SAASk3B,SAAT,CAAmB/rD,KAAnB,EAA0B60B,CAA1B,EAA6B;AAClC,SAAO8W,+CAAA,CAASA,kDAAA,CAAY00F,MAAM,CAACrgI,KAAD,CAAlB,EAA2B60B,CAA3B,CAAT,EAAwC,SAAxC,CAAP;AACD;AAEM,SAASmc,OAAT,CAAiBl6C,GAAjB,EAAsB+9B,CAAtB,EAAyB;AAC9B,SAAO8W,+CAAA,CAASA,gDAAA,CAAU00F,MAAM,CAACvpI,GAAD,CAAhB,EAAuB+9B,CAAvB,CAAT,EAAoC,YAApC,CAAP;AACD;AAEM,SAAS+2B,OAAT,CAAiB90D,GAAjB,EAAsB+9B,CAAtB,EAAyB;AAC9B,SAAO8W,+CAAA,CAASA,gDAAA,CAAU00F,MAAM,CAACvpI,GAAD,CAAhB,EAAuB+9B,CAAvB,CAAT,EAAoC,YAApC,CAAP;AACD;AAEM,SAAS99B,QAAT,CAAkB6zL,MAAlB,EAA0BC,MAA1B,EAAkC;AACvC,SAAOl/I,iDAAA,CAAW00F,MAAM,CAACuqD,MAAD,CAAjB,EAA2BvqD,MAAM,CAACwqD,MAAD,CAAjC,CAAP;AACD;AAEM,SAAS/yL,OAAT,CAAiB8yL,MAAjB,EAAyBC,MAAzB,EAAiC;AACtC,SAAOl/I,gDAAA,CAAU00F,MAAM,CAACuqD,MAAD,CAAhB,EAA0BvqD,MAAM,CAACwqD,MAAD,CAAhC,CAAP;AACD,C,CAED;AACA;;AACO,SAASxtB,MAAT,CAAgBr9J,KAAhB,EAAuB;AAC5B,SAAO;AACLnL,SAAK,EAAEghB,QAAQ,CAAC81B,+CAAA,CAASA,qDAAA,CAAe00F,MAAM,CAACrgI,KAAD,CAArB,CAAT,EAAwC,UAAxC,CAAD,CADV;AAEL1K,OAAG,EAAEugB,QAAQ,CAAC81B,+CAAA,CAASA,mDAAA,CAAa00F,MAAM,CAACrgI,KAAD,CAAnB,CAAT,EAAsC,UAAtC,CAAD;AAFR,GAAP;AAID;AAEM,SAAS8qL,MAAT,CAAgBj2L,KAAhB,EAAuBS,GAAvB,EAA4By1L,SAA5B,EAAuC;AAC5C,QAAMn+K,MAAM,GAAG,EAAf;AACA,MAAI5M,KAAK,GAAGsgI,aAAa,CAACzrI,KAAD,CAAzB;;AACA,SAAO82C,iDAAA,CAAW00F,MAAM,CAACrgI,KAAD,CAAjB,EAA0BqgI,MAAM,CAAC/qI,GAAD,CAAhC,CAAP,EAA+C;AAC7CsX,UAAM,CAACtS,IAAP,CAAY0F,KAAZ;AACAA,SAAK,GAAGuxC,SAAS,CAACvxC,KAAD,EAAQ,CAAR,CAAjB;AACD;;AAED,MAAI+qL,SAAJ,EAAe;AACbn+K,UAAM,CAACtS,IAAP,CAAY0F,KAAZ;AACD;;AAED,SAAO4M,MAAP;AACD;AAEM,SAASyiE,KAAT,CAAex6E,KAAf,EAAsBS,GAAtB,EAA2B;AAChC,SAAOw1L,MAAM,CAACj2L,KAAD,EAAQS,GAAR,CAAb;AACD;AAEM,SAAS01L,cAAT,CAAwBn2L,KAAxB,EAA+BS,GAA/B,EAAoC;AACzC,SAAOw1L,MAAM,CAACj2L,KAAD,EAAQS,GAAR,EAAa,IAAb,CAAb;AACD;AAEM,SAAS21L,SAAT,CAAmBp2L,KAAnB,EAA0BS,GAA1B,EAA+By1L,SAA/B,EAA0C;AAC/C,QAAM7lL,IAAI,GAAG,EAAb;AACA,MAAIpO,GAAG,GAAGjC,KAAV;;AACA,SAAO82C,iDAAA,CAAW00F,MAAM,CAACvpI,GAAD,CAAjB,EAAwBupI,MAAM,CAAC/qI,GAAD,CAA9B,CAAP,EAA6C;AAC3C4P,QAAI,CAAC5K,IAAL,CAAUxD,GAAV;AACAA,OAAG,GAAGk6C,OAAO,CAACl6C,GAAD,EAAM,CAAN,CAAb;AACD;;AAED,MAAIi0L,SAAJ,EAAe;AACb7lL,QAAI,CAAC5K,IAAL,CAAUxD,GAAV;AACD;;AAED,SAAOoO,IAAP;AACD;AAEM,SAASgmL,QAAT,CAAkBr2L,KAAlB,EAAyBS,GAAzB,EAA8B;AACnC,SAAO21L,SAAS,CAACp2L,KAAD,EAAQS,GAAR,CAAhB;AACD;AAEM,SAAS61L,iBAAT,CAA2Bt2L,KAA3B,EAAkCS,GAAlC,EAAuC;AAC5C,SAAO21L,SAAS,CAACp2L,KAAD,EAAQS,GAAR,EAAa,IAAb,CAAhB;AACD;AAEM,SAAS81L,aAAT,CAAuBprL,KAAvB,EAA8B;AACnC,SAAO6V,QAAQ,CAAC7V,KAAK,CAACvC,KAAN,CAAY,CAAZ,EAAe,CAAf,CAAD,CAAR,GAA8B,CAArC;AACD;AAEM,SAAS2+C,OAAT,CAAiBp8C,KAAjB,EAAwB;AAC7B,SAAOA,KAAK,CAACvC,KAAN,CAAY,CAAZ,EAAe,CAAf,CAAP;AACD;AAEM,SAASgV,QAAT,CAAkB3b,GAAlB,EAAuB;AAC5B,SAAOA,GAAG,CAAC2G,KAAJ,CAAU,CAAV,EAAa,CAAb,CAAP;AACD;AAEM,SAAS4tL,YAAT,CAAsBrrL,KAAtB,EAA6B;AAClC,SAAOo8C,OAAO,CAACp8C,KAAD,CAAP,GAAiB,KAAxB;AACD;AAEM,SAASsrL,UAAT,CAAoBtrL,KAApB,EAA2B;AAChC,SAAOo8C,OAAO,CAACp8C,KAAD,CAAP,GAAiB,KAAxB;AACD;AAEM,SAASk7K,aAAT,CAAuBl7K,KAAvB,EAA8B;AACnC,SAAO,WAAWA,KAAK,CAAC+U,OAAN,CAAc,GAAd,EAAmB,EAAnB,CAAlB;AACD;AAEM,SAASw2K,YAAT,CAAsBvrL,KAAtB,EAA6B;AAClC,SAAO2rC,+CAAA,CAAS00F,MAAM,CAACrgI,KAAD,CAAf,EAAwB,UAAxB,CAAP;AACD;AAEM,SAASqT,MAAT,CAAgBrT,KAAhB,EAAuB04B,GAAvB,EAA4B;AACjC,SAAOiT,+CAAA,CAAS00F,MAAM,CAACrgI,KAAD,CAAf,EAAwB04B,GAAxB,CAAP;AACD;AAEM,MAAM8yJ,kBAAkB,GAAGC,2DAAU,CAACp4K,MAAM,IAAI;AACrD,SAAO,IAAI8B,MAAJ,CACL9B,MAAM,CACH0B,OADH,CACW,KADX,EACkB,UADlB,EAEGA,OAFH,CAEW,KAFX,EAEkB,UAFlB,EAGGA,OAHH,CAGW,KAHX,EAGkB,QAHlB,CADK,CAAP;AAMD,CAP2C,CAArC;AASA,MAAM22K,iBAAiB,GAAGD,2DAAU,CAACp4K,MAAM,IAAI;AACpD,SAAOA,MAAM,CACV0B,OADI,CACI,KADJ,EACW,EADX,EAEJA,OAFI,CAEI,QAFJ,EAEc,EAFd,EAGJA,OAHI,CAGI,QAHJ,EAGc,EAHd,CAAP;AAID,CAL0C,CAApC;AAOA,MAAM42K,gBAAgB,GAAGF,2DAAU,CAACp4K,MAAM,IAAI;AACnD,MAAI6B,KAAK,GAAG7B,MAAM,CACf0B,OADS,CACD,KADC,EACM,EADN,EAETA,OAFS,CAED,QAFC,EAES,EAFT,EAGTA,OAHS,CAGD,QAHC,EAGS,EAHT,EAITA,OAJS,CAID,KAJC,EAIM,UAJN,EAKTA,OALS,CAKD,KALC,EAKM,UALN,CAAZ;AAMA,SAAO,IAAII,MAAJ,CAAW,MAAMD,KAAN,GAAc,GAAzB,CAAP;AACD,CARyC,CAAnC;AAUA,MAAM02K,kBAAkB,GAAGH,2DAAU,CAACp4K,MAAM,IAAI;AACrD,SAAOA,MAAM,CACV0B,OADI,CACI,KADJ,EACW,EADX,EAEJA,OAFI,CAEI,QAFJ,EAEc,EAFd,EAGJA,OAHI,CAGI,QAHJ,EAGc,EAHd,EAIJA,OAJI,CAII,MAJJ,EAIY,GAJZ,EAKJA,OALI,CAKI,MALJ,EAKY,GALZ,EAMJA,OANI,CAMI,IANJ,EAMU,GANV,CAAP;AAOD,CAR2C,CAArC;AAUA,MAAM82K,iBAAiB,GAAGJ,2DAAU,CAACp4K,MAAM,IAAI;AACpD,MAAI6B,KAAK,GAAG7B,MAAM,CACf0B,OADS,CACD,KADC,EACM,EADN,EAETA,OAFS,CAED,QAFC,EAES,EAFT,EAGTA,OAHS,CAGD,QAHC,EAGS,EAHT,EAITA,OAJS,CAID,MAJC,EAIO,GAJP,EAKTA,OALS,CAKD,KALC,EAKM,UALN,EAMTA,OANS,CAMD,KANC,EAMM,UANN,CAAZ;AAOA,SAAO,IAAII,MAAJ,CAAW,MAAMD,KAAN,GAAc,GAAzB,CAAP;AACD,CAT0C,CAApC;AAWA,MAAM42K,kBAAkB,GAAGL,2DAAU,CAACp4K,MAAM,IAAI;AACrD,SAAOA,MAAM,CAAC0B,OAAP,CAAe,KAAf,EAAsB,IAAtB,CAAP;AACD,CAF2C,CAArC;AAIA,MAAMg3K,iBAAiB,GAAGN,2DAAU,CAACp4K,MAAM,IAAI;AACpD,MAAI6B,KAAK,GAAG7B,MAAM,CACf0B,OADS,CACD,QADC,EACS,EADT,EAETA,OAFS,CAED,QAFC,EAES,EAFT,EAGTA,OAHS,CAGD,KAHC,EAGM,UAHN,EAITA,OAJS,CAID,KAJC,EAIM,UAJN,EAKTA,OALS,CAKD,KALC,EAKM,QALN,CAAZ;AAMA,SAAO,IAAII,MAAJ,CAAW,MAAMD,KAAN,GAAc,GAAzB,CAAP;AACD,CAR0C,CAApC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/QA,MAAM6lH,KAAN,CAAY;AACjBzmI,aAAW,CAACwpC,KAAD,EAAQ;AACjB,SAAKA,KAAL;AACEk9F,uBAAiB,EAAEl9F,KAAK,CAACk9F,iBAAN,IAA2B,EADhD;AAEEC,uBAAiB,EAAEn9F,KAAK,CAACm9F,iBAAN,IAA2B,EAFhD;AAGEC,sBAAgB,EAAEp9F,KAAK,CAACo9F,gBAAN,IAA0B,EAH9C;AAIEC,sBAAgB,EAAEr9F,KAAK,CAACq9F,gBAAN,IAA0B,EAJ9C;AAKEC,iBAAW,EAAE,KALf;AAMEC,aAAO,EAAE,KANX;AAOEC,cAAQ,EAAE,KAPZ;AAQEC,kBAAY,EAAE,IARhB;AASEnzF,WAAK,EAAE,IATT;AAUE3lB,YAAM,EAAE;AAVV,OAWKqb,KAXL;AAaD;;AAED5hC,QAAM,CAACs/H,IAAD,EAAO;AACX,WAAO,IAAIT,KAAJ,iCACF,KAAKj9F,KADH;AAELk9F,uBAAiB,EAAE,CAAC,GAAG,KAAKl9F,KAAL,CAAWk9F,iBAAf,EAAkCQ,IAAlC;AAFd,OAAP;AAID;;AAEDC,UAAQ,CAACC,KAAD,EAAQ;AACd,QAAIC,OAAO,GAAG,IAAI7rH,GAAJ,CAAQ4rH,KAAR,CAAd;AACA,WAAO,IAAIX,KAAJ,iCACF,KAAKj9F,KADH;AAELk9F,uBAAiB,EAAE,KAAKl9F,KAAL,CAAWk9F,iBAAX,CAA6B9+H,MAA7B,CACjBs/H,IAAI,IAAI,CAACG,OAAO,CAACluH,GAAR,CAAYpV,MAAM,CAACiS,IAAP,CAAYkxH,IAAZ,EAAkB,CAAlB,CAAZ,CADQ;AAFd,OAAP;AAMD;;AAEDI,QAAM,CAACF,KAAK,GAAG,EAAT,EAAa;AACjB,QAAI,CAACniI,KAAK,CAACwD,OAAN,CAAc2+H,KAAd,CAAL,EAA2B;AACzBA,WAAK,GAAG,CAACA,KAAD,CAAR;AACD;;AAED,QAAIG,KAAK,GAAG,IAAId,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Bm9F,uBAAiB,EAAES;AAA9C,OAAZ;AACAG,SAAK,CAAC/9F,KAAN,CAAYs9F,WAAZ,GAA0B,KAA1B;AACA,WAAOS,KAAP;AACD;;AAEDC,WAAS,CAACN,IAAD,EAAO;AACd,QAAIK,KAAK,GAAG,KAAKD,MAAL,CAAY;AAAEpyH,YAAM,EAAEgyH;AAAV,KAAZ,CAAZ;AACAK,SAAK,CAAC/9F,KAAN,CAAYs9F,WAAZ,GAA0B,IAA1B;AACA,WAAOS,KAAP;AACD;;AAEDE,SAAO,CAACL,KAAD,EAAQ;AACb,QAAI,CAACniI,KAAK,CAACwD,OAAN,CAAc2+H,KAAd,CAAL,EAA2B;AACzBA,WAAK,GAAG,CAACA,KAAD,CAAR;AACD;;AAED,WAAO,IAAIX,KAAJ,iCACF,KAAKj9F,KADH;AAELo9F,sBAAgB,EAAE,CAAC,GAAG,KAAKp9F,KAAL,CAAWo9F,gBAAf,EAAiC,GAAGQ,KAApC;AAFb,OAAP;AAID;;AAEDM,SAAO,CAACN,KAAD,EAAQ;AACb,QAAI,CAACniI,KAAK,CAACwD,OAAN,CAAc2+H,KAAd,CAAL,EAA2B;AACzBA,WAAK,GAAG,CAACA,KAAD,CAAR;AACD;;AAED,WAAO,IAAIX,KAAJ,iCACF,KAAKj9F,KADH;AAELq9F,sBAAgB,EAAE,CAAC,GAAG,KAAKr9F,KAAL,CAAWq9F,gBAAf,EAAiC,GAAGO,KAApC;AAFb,OAAP;AAID;;AAEDtzF,OAAK,CAACj6B,GAAD,EAAM;AACT,WAAO,IAAI4sH,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2BsK,WAAK,EAAEj6B;AAAlC,OAAP;AACD;;AAEDsU,QAAM,CAACtU,GAAD,EAAM;AACV,WAAO,IAAI4sH,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Brb,YAAM,EAAEtU;AAAnC,OAAP;AACD;;AAEDuuB,KAAG,GAAG;AACJ,WAAO,IAAIq+F,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Bu9F,aAAO,EAAE;AAApC,OAAP;AACD;;AAEDC,UAAQ,GAAG;AACT,WAAO,IAAIP,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Bw9F,cAAQ,EAAE;AAArC,OAAP;AACD;;AAEDW,sBAAoB,GAAG;AACrB,WAAO,IAAIlB,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2By9F,kBAAY,EAAE;AAAzC,OAAP;AACD;;AAEDhlI,SAAO,CAACob,IAAD,EAAO;AACZ,WAAO,IAAIopH,KAAJ,iCAAe,KAAKj9F,KAApB;AAA2Bo+F,kBAAY,EAAEvqH;AAAzC,OAAP;AACD;;AAEDD,WAAS,GAAG;AACV,WAAO,KAAKosB,KAAZ;AACD;;AAlGgB;AAqGZ,SAASq+F,iBAAT,CAA2BN,KAA3B,EAAkCO,cAAlC,EAAkD;AACvD,MAAIC,UAAU,GAAGR,KAAK,CAACnqH,SAAN,GAAkBypH,gBAAnC;;AACA,MAAIkB,UAAU,CAAC5gI,MAAX,KAAsB,CAA1B,EAA6B;AAC3B,QAAI2gI,cAAJ,EAAoB;AAClB;AAASE,aAAK,EAAE;AAAhB,SAA0BF,cAA1B;AACD;;AACD,WAAO,IAAP;AACD;;AAED,MAAIG,UAAU,GAAGF,UAAU,CAAC,CAAD,CAA3B;;AACA,MAAI,OAAOE,UAAP,KAAsB,QAA1B,EAAoC;AAClC,WAAO;AAAE99F,WAAK,EAAE89F,UAAT;AAAqBD,WAAK,EAAE;AAA5B,KAAP;AACD,GAZsD,CAavD;;;AACA,qBAAcjkI,MAAM,CAACiS,IAAP,CAAYiyH,UAAZ,CAAd;AAAA;AAAA,MAAK99F,KAAL;;AACA,SAAO;AAAEA,SAAF;AAAS69F,SAAK,EAAEC,UAAU,CAAC99F,KAAD;AAA1B,GAAP;AACD;AAEc,SAASyM,CAAT,CAAWsxF,KAAX,EAAkB;AAC/B,SAAO,IAAIzB,KAAJ,CAAU;AAAEyB;AAAF,GAAV,CAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCvHD;AACA;;AACO,MAAMwvD,SAAS,GAAG;AACvBv0L,MAAI,EAAE;AACJw+I,OAAG,EAAE,CAAC,IAAD,EAAO,UAAP,EAAmB,IAAnB,EAAyB,KAAzB,EAAgC,IAAhC,EAAsC,KAAtC,CADD;AAEJC,YAAQ,EAAE;AAFN,GADiB;AAKvBpZ,IAAE,EAAE;AACFmZ,OAAG,EAAE,CAAC,IAAD,EAAO,UAAP,EAAmB,OAAnB,CADH;AAEFC,YAAQ,EAAE;AAFR,GALmB;AASvBtxG,QAAM,EAAE;AACNqxG,OAAG,EAAE,CAAC,IAAD,EAAO,UAAP,EAAmB,OAAnB,CADC;AAENC,YAAQ,EAAE;AAFJ,GATe;AAavBxiI,QAAM,EAAE;AACNuiI,OAAG,EAAE,CAAC,IAAD,EAAO,UAAP,EAAmB,WAAnB,EAAgC,IAAhC,EAAsC,KAAtC,EAA6C,IAA7C,EAAmD,KAAnD,CADC;AAENC,YAAQ,EAAE;AAFJ,GAbe;AAiBvBvxG,SAAO,EAAE;AACPsxG,OAAG,EAAE,CAAC,IAAD,CADE;AAEPC,YAAQ,EAAE;AAFH;AAjBc,CAAlB;AAuBA,MAAMoK,WAAW,GAAG,IAAIh3I,GAAJ,CACzBjR,MAAM,CAAC4kB,OAAP,CAAe;AACbk3H,gBAAc,EAAE,QADH;AAEb5U,OAAK,EAAE,IAFM;AAGb9nI,MAAI,EAAE,MAHO;AAIbmrI,OAAK,EAAE,QAJM;AAKbliI,QAAM,EAAE,QALK;AAMburL,cAAY,EAAE,QAND;AAObC,cAAY,EAAE,QAPD;AAQbhtD,UAAQ,EAAE,IARG;AASbhB,SAAO,EAAE,IATI;AAUbsI,SAAO,EAAE;AAVI,CAAf,CADyB,CAApB;AAeA,SAAS2lD,QAAT,CAAkB1tJ,KAAlB,EAAyB9sB,IAAzB,EAA+B;AACpCA,MAAI,GAAGA,IAAI,IAAI,EAAf;;AAEA,UAAQ8sB,KAAR;AACE,SAAK,gBAAL;AACE,aAAO,gBAAP;;AACF,SAAK,QAAL;AACE,UAAI9sB,IAAI,CAACglI,MAAT,EAAiB;AACf,eAAO,iBAAP;AACD,OAFD,MAEO,IAAIhlI,IAAI,CAAC+kI,OAAT,EAAkB;AACvB,eAAO,kBAAP;AACD;;AACD,aAAO,QAAP;;AACF,SAAK,eAAL;AACE,aAAO,iBAAP;;AACF,SAAK,gBAAL;AACE,aAAO,kBAAP;;AACF;AACE,aAAOj4G,KAAP;AAfJ;AAiBD;AAEM,SAAS2tJ,UAAT,CAAoBj2C,EAApB,EAAwBvkI,IAAxB,EAA8B;AACnC,UAAQukI,EAAR;AACE,SAAK,OAAL;AACE,aAAO,QAAP;;AACF,SAAK,IAAL;AACE,aAAO,IAAP;;AACF,SAAK,UAAL;AACE,aAAO,WAAP;;AACF,SAAK,WAAL;AACE,aAAO,YAAP;;AACF,SAAK,UAAL;AACE,aAAO,UAAP;;AACF,SAAK,IAAL;AACE,UAAIvkI,IAAI,KAAK,MAAb,EAAqB;AACnB,eAAO,UAAP;AACD;;AACD,aAAO,iBAAP;;AACF,SAAK,KAAL;AACE,UAAIA,IAAI,KAAK,MAAb,EAAqB;AACnB,eAAO,oBAAP;AACD;;AACD,aAAO,2BAAP;;AACF,SAAK,IAAL;AACE,UAAIA,IAAI,KAAK,MAAb,EAAqB;AACnB,eAAO,WAAP;AACD;;AACD,aAAO,cAAP;;AACF,SAAK,KAAL;AACE,UAAIA,IAAI,KAAK,MAAb,EAAqB;AACnB,eAAO,qBAAP;AACD;;AACD,aAAO,wBAAP;;AACF,SAAK,MAAL;AACE,aAAO,SAAP;;AACF,SAAK,OAAL;AACE,aAAO,UAAP;;AACF,SAAK,KAAL;AACE,aAAO,KAAP;;AACF,SAAK,eAAL;AACE,aAAO,eAAP;;AACF;AACE,aAAO,EAAP;AAxCJ;AA0CD;AAEM,SAASy6K,gBAAT,CAA0B5tJ,KAA1B,EAAiC;AACtC,MAAIA,KAAK,KAAK,eAAd,EAA+B;AAC7B,WAAO;AAAEA,WAAK,EAAE,QAAT;AAAmBloC,aAAO,EAAE;AAAEogJ,cAAM,EAAE;AAAV;AAA5B,KAAP;AACD,GAFD,MAEO,IAAIl4G,KAAK,KAAK,gBAAd,EAAgC;AACrC,WAAO;AAAEA,WAAK,EAAE,QAAT;AAAmBloC,aAAO,EAAE;AAAEmgJ,eAAO,EAAE;AAAX;AAA5B,KAAP;AACD,GAFM,MAEA;AACL,WAAO;AAAEj4G;AAAF,KAAP;AACD;AACF;AAEM,SAAS6tJ,aAAT,CAAuB16K,IAAvB,EAA6B;AAClC,UAAQA,IAAR;AACE,SAAK,aAAL;AACE,aAAO,qBAAP;;AACF,SAAK,SAAL;AACA,SAAK,gBAAL;AACA,SAAK,iBAAL;AACE,aAAO,uBAAP;;AACF,SAAK,YAAL;AACE,aAAO,wBAAP;;AACF,SAAK,eAAL;AACE,aAAO,mDAAP;;AACF;AACE,aAAO,sDAAP;AAZJ;AAcD;AAEM,SAASwlI,WAAT,CAAqBtB,IAArB,EAA2BC,IAA3B,EAAiC;AACtC,MAAID,IAAI,GAAGC,IAAX,EAAiB;AACf,WAAO,CAACD,IAAD,EAAOC,IAAP,CAAP;AACD;;AACD,SAAO,CAACA,IAAD,EAAOD,IAAP,CAAP;AACD;AAEM,SAAS/rI,KAAT,CAAe4O,IAAf,EAAqB;AAC1B,UAAQA,IAAI,CAAC/G,IAAb;AACE,SAAK,QAAL;AAAe;AACb,YAAIg2H,MAAM,GAAGjvH,IAAI,CAAC3jB,KAAlB;;AACA,YAAI2jB,IAAI,CAAC8lB,KAAL,KAAe,QAAf,IAA2B9lB,IAAI,CAACw9H,EAAL,KAAY,WAA3C,EAAwD;AACtDvO,gBAAM,GAAGtC,6DAAe,CAACsC,MAAD,CAAxB;AACD;;AACD,+CAAYjvH,IAAZ;AAAkB3jB,eAAK,EAAE4yI;AAAzB;AACD;;AACD,SAAK,QAAL;AAAe;AACb,YAAIA,MAAM,GAAGjvH,IAAI,CAAC3jB,KAAL,IAAc,IAAd,GAAqB,EAArB,GAA0B2jB,IAAI,CAAC3jB,KAA5C;AACA,+CAAY2jB,IAAZ;AAAkB3jB,eAAK,EAAE4yI;AAAzB;AACD;;AACD;AAZF;;AAeA,yCAAYjvH,IAAZ;AAAkBwlB,SAAK,EAAE;AAAzB;AACD;AAEM,SAASouJ,OAAT,OAA+C;AAAA,MAA5BpuJ,KAA4B,QAA5BA,KAA4B;AAAA,MAArBquJ,QAAqB,QAArBA,QAAqB;AAAA,MAAR7zK,IAAQ;;AACpD,UAAQA,IAAI,CAAC/G,IAAb;AACE,SAAK,QAAL;AAAe;AACb,YAAI66K,QAAQ,GAAG9zK,IAAI,CAAC3jB,KAApB;;AACA,YAAI2jB,IAAI,CAAC8lB,KAAL,KAAe,QAAf,IAA2B9lB,IAAI,CAACw9H,EAAL,KAAY,WAA3C,EAAwD;AACtDs2C,kBAAQ,GAAGvsD,6DAAe,CAACusD,QAAD,CAA1B;AACD;;AAED,+CAAY9zK,IAAZ;AAAkB3jB,eAAK,EAAEy3L;AAAzB;AACD;;AACD,SAAK,QAAL;AAAe;AACb,YAAIA,QAAQ,GAAG9zK,IAAI,CAAC3jB,KAAL,IAAc,IAAd,GAAqB,EAArB,GAA0B2jB,IAAI,CAAC3jB,KAA9C;AACA,+CAAY2jB,IAAZ;AAAkB3jB,eAAK,EAAEy3L;AAAzB;AACD;;AACD;AAbF;;AAgBA,SAAO9zK,IAAP;AACD;AAEM,SAAS+zK,SAAT,CAAmB13L,KAAnB,EAA0BmjJ,IAA1B,EAAgC;AACrC,UAAQA,IAAI,CAACvmI,IAAb;AACE,SAAK,QAAL;AAAe;AACb,YAAIumI,IAAI,CAAChC,EAAL,KAAY,WAAhB,EAA6B;AAC3B,iDACKgC,IADL;AAEEh6G,iBAAK,EAAE,IAFT;AAGEnpC,iBAAK,EAAEA,KAAK,GAAG23L,8DAAgB,CAAC33L,KAAD,CAAhB,IAA2B,CAA9B,GAAkC;AAHhD;AAKD;;AACD;AACD;;AACD;AAXF;;AAcA,yCAAYmjJ,IAAZ;AAAkBh6G,SAAK,EAAE,IAAzB;AAA+BnpC;AAA/B;AACD;AAEM,SAASmiJ,wBAAT,CAAkCzjI,MAAlC,EAA0C;AAC/C,SAAQxP,IAAI,CAACuF,GAAL,CAASiK,MAAT,IAAmB,KAApB,GAA6B,CAApC;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1MD;AACA;AAEO,SAAS0jK,SAAT,CAAmBlsK,QAAnB,EAA6BipJ,SAA7B,EAAwC8iB,QAAxC,EAAkD;AACvD,MAAI30H,KAAK,GAAGonF,kDAAA,EAAZ;;AAEA,MAAIyqB,SAAJ,EAAe;AACb,WAAO,WAAP;AACD,GAFD,MAEO,IAAI8iB,QAAJ,EAAc;AACnB,WAAO,MAAP;AACD,GAFM,MAEA,IAAI/rK,QAAQ,KAAKo3C,KAAjB,EAAwB;AAC7B,WAAO,KAAP;AACD,GAFM,MAEA,IAAIp3C,QAAQ,GAAGo3C,KAAX,IAAoBp3C,QAAQ,IAAIw+H,+CAAA,CAAmBpnF,KAAnB,EAA0B,CAA1B,CAApC,EAAkE;AACvE,WAAO,UAAP;AACD,GAFM,MAEA,IAAIp3C,QAAQ,GAAGo3C,KAAf,EAAsB;AAC3B,WAAO,QAAP;AACD,GAFM,MAEA;AACL,WAAO,WAAP;AACD;AACF;AAEM,SAASy0H,uBAAT,CAAiCl6K,SAAjC,EAA4C;AACjD,MAAI4kJ,OAAO,GAAG5kJ,SAAS,CAACrE,GAAV,CAAcwE,QAAQ,IAAI;AACtC,QAAIy3K,QAAQ,GAAGz3K,QAAQ,CAACy3J,WAAT,CAAqBtjJ,IAArB,CAA0B4Y,CAAC,IAAIA,CAAC,CAAC0U,KAAF,KAAY,MAA3C,CAAf;;AACA,WAAO;AACLijH,UAAI,EAAE;AACJ1kJ,gBAAQ,EAAEA,QAAQ,CAAC8/H,EADf;AAEJrlI,YAAI,EAAE;AACJsqJ,cAAI,EACF0yB,QAAQ,IAAIA,QAAQ,CAACt+B,EAAT,KAAgB,IAA5B,GACIn5I,QAAQ,CAACk3J,SADb,GAEIxqB,+CAAA,CAAmB1sI,QAAQ,CAACk3J,SAA5B,EAAuC,CAAvC;AAJF;AAFF;AADD,KAAP;AAWD,GAba,CAAd;AAeA,SAAOhpH,sDAAC,CAAC,cAAD,CAAD,CACJhvC,MADI,CACG;AAAE4lJ,OAAG,EAAEL;AAAP,GADH,EAEJzlB,OAFI,CAEI;AAAEvkI,QAAI,EAAE;AAAR,GAFJ,EAGJskI,OAHI,CAGI,UAHJ,EAIJH,MAJI,CAIG,CAAC,UAAD,EAAa,MAAb,CAJH,CAAP;AAKD;;AAED,SAASgxD,gBAAT,CAA0Bz+K,GAA1B,EAA+B;AAC7B;AACA;AACA,SAAOu7H,8CAAA,CAAkB,IAAI9pI,IAAJ,CAAS,IAAT,EAAe,CAAf,EAAkBuO,GAAlB,EAAuB,EAAvB,CAAlB,EAA8C,IAA9C,CAAP;AACD;;AAED,SAAS0+K,aAAT,CAAuB/1L,GAAvB,EAA4B;AAC1B,MAAIoO,IAAI,GAAG;AACT4nL,MAAE,EAAE,QADK;AAETvqE,MAAE,EAAE,QAFK;AAGTwqE,MAAE,EAAE,SAHK;AAITC,MAAE,EAAE,WAJK;AAKTzyG,MAAE,EAAE,UALK;AAMT0jC,MAAE,EAAE,QANK;AAOTmH,MAAE,EAAE;AAPK,GAAX;AASA,SAAOlgH,IAAI,CAACpO,GAAD,CAAX;AACD;;AAEM,SAASm2L,uBAAT,CAAiClyL,MAAjC,EAAyC;AAC9C,MAAIyR,QAAQ,GAAGzR,MAAM,CAACyR,QAAP,IAAmB,CAAlC;;AAEA,UAAQzR,MAAM,CAAC4Q,SAAf;AACE,SAAK,QAAL;AAAe;AACb,YAAIwsB,IAAI,GAAG,QAAX;AACAA,YAAI,IAAI3rB,QAAQ,KAAK,CAAb,GAAkB,GAAEA,QAAS,QAA7B,GAAuC,MAA/C;AACA2rB,YAAI,IAAI,SAASuxG,8CAAA,CAAkB3uI,MAAM,CAAClG,KAAzB,EAAgC,MAAhC,CAAjB;AACA,eAAOsjC,IAAP;AACD;;AACD,SAAK,SAAL;AAAgB;AACd,YAAIA,IAAI,GAAG,QAAX;AACAA,YAAI,IAAI3rB,QAAQ,KAAK,CAAb,GAAkB,GAAEA,QAAS,SAA7B,GAAwC,OAAhD;;AAEA,YAAIzR,MAAM,CAAC8sD,QAAP,IAAmB9sD,MAAM,CAAC8sD,QAAP,CAAgBpsD,MAAhB,GAAyB,CAAhD,EAAmD;AACjD;AACA;AACA;AACA,cAAIosD,QAAQ,GAAG,CAAC,GAAG9sD,MAAM,CAAC8sD,QAAX,EACZ5rD,IADY,CACP,CAACixL,EAAD,EAAKC,EAAL,KAAY;AAChB,gBAAIC,SAAS,GACX,CAACF,EAAE,CAACt7K,IAAH,KAAY,KAAZ,GAAoB,CAApB,GAAwB,CAAzB,KAA+Bu7K,EAAE,CAACv7K,IAAH,KAAY,KAAZ,GAAoB,CAApB,GAAwB,CAAvD,CADF;AAEA,gBAAIy7K,QAAQ,GAAGH,EAAE,CAACl4L,KAAH,GAAWm4L,EAAE,CAACn4L,KAA7B;;AAEA,gBAAIo4L,SAAS,KAAK,CAAlB,EAAqB;AACnB,qBAAOC,QAAP;AACD;;AACD,mBAAOD,SAAP;AACD,WAVY,EAWZlxL,MAXY,CAWLwe,CAAC,IAAIA,CAAC,CAAC1lB,KAAF,KAAY,CAAC,CAXb,CAAf,CAJiD,CAiBjD;;AACA6yD,kBAAQ,GAAGA,QAAQ,CAACp1B,MAAT,CAAgB13B,MAAM,CAAC8sD,QAAP,CAAgB3rD,MAAhB,CAAuBwe,CAAC,IAAIA,CAAC,CAAC1lB,KAAF,KAAY,CAAC,CAAzC,CAAhB,CAAX;AAEAmjC,cAAI,IAAI,UAAR;AAEA,cAAIm1J,IAAI,GAAG,EAAX;AAEA,cAAIC,UAAU,GAAG,IAAIz9K,GAAJ,CAAQ+3C,QAAQ,CAACrvD,GAAT,CAAakiB,CAAC,IAAIA,CAAC,CAAC9I,IAApB,CAAR,CAAjB;AACA,cAAI+qC,SAAS,GAAG4wI,UAAU,CAAC9xL,MAAX,KAAsB,CAAtB,IAA2B,CAAC8xL,UAAU,CAAC9/K,GAAX,CAAe,KAAf,CAA5C;;AAEA,eAAK,IAAI4kB,OAAT,IAAoBw1B,QAApB,EAA8B;AAC5B,gBAAIx1B,OAAO,CAACzgB,IAAR,KAAiB,KAArB,EAA4B;AAC1B,kBAAIygB,OAAO,CAACr9B,KAAR,KAAkB,CAAC,CAAvB,EAA0B;AACxBs4L,oBAAI,CAAChzL,IAAL,CAAU,UAAV;AACD,eAFD,MAEO;AACL;AACAgzL,oBAAI,CAAChzL,IAAL,CAAUsyL,gBAAgB,CAACv6J,OAAO,CAACr9B,KAAT,CAA1B;AACD;AACF,aAPD,MAOO;AACL,kBAAIw4L,OAAO,GAAG7wI,SAAS,GAAG,EAAH,GAAQ,MAAMkwI,aAAa,CAACx6J,OAAO,CAACzgB,IAAT,CAAlD;;AAEA,kBAAIygB,OAAO,CAACr9B,KAAR,KAAkB,CAAC,CAAvB,EAA0B;AACxB;AACAs4L,oBAAI,CAAChzL,IAAL,CAAU,SAASkzL,OAAnB;AACD,eAHD,MAGO;AACL;AACAF,oBAAI,CAAChzL,IAAL,CAAUsyL,gBAAgB,CAACv6J,OAAO,CAACr9B,KAAT,CAAhB,GAAkCw4L,OAA5C;AACD;AACF;AACF;;AAED,cAAIF,IAAI,CAAC7xL,MAAL,GAAc,CAAlB,EAAqB;AACnB08B,gBAAI,IAAIm1J,IAAI,CAAC7vL,KAAL,CAAW,CAAX,EAAc6vL,IAAI,CAAC7xL,MAAL,GAAc,CAA5B,EAA+B+a,IAA/B,CAAoC,IAApC,CAAR;AACA2hB,gBAAI,IAAI,QAAR;AACAA,gBAAI,IAAIm1J,IAAI,CAACA,IAAI,CAAC7xL,MAAL,GAAc,CAAf,CAAZ;AACD,WAJD,MAIO;AACL08B,gBAAI,IAAIm1J,IAAI,CAAC92K,IAAL,CAAU,OAAV,CAAR;AACD;;AAED,cAAImmC,SAAJ,EAAe;AACbxkB,gBAAI,IAAI,MAAM00J,aAAa,CAAChlI,QAAQ,CAAC,CAAD,CAAR,CAAYj2C,IAAb,CAA3B;AACD;AACF,SA3DD,MA2DO;AACLumB,cAAI,IAAI,aAAauxG,8CAAA,CAAkB3uI,MAAM,CAAClG,KAAzB,EAAgC,IAAhC,CAArB;AACD;;AAED,eAAOsjC,IAAP;AACD;;AACD,SAAK,QAAL;AAAe;AACb,YAAIA,IAAI,GAAG,QAAX;AACAA,YAAI,IAAI3rB,QAAQ,KAAK,CAAb,GAAkB,GAAEA,QAAS,QAA7B,GAAuC,MAA/C;AACA2rB,YAAI,IAAI,SAASuxG,8CAAA,CAAkB3uI,MAAM,CAAClG,KAAzB,EAAgC,QAAhC,CAAjB;AACA,eAAOsjC,IAAP;AACD;;AACD;AACE,aAAO,iBAAP;AAnFJ;AAqFD;AAEM,SAASq9G,sBAAT,CAAgCz6I,MAAhC,EAAwC;AAC7C,MAAIlF,IAAI,GAAG;AACThB,SAAK,EAAE60I,iDAAA,CAAqB3uI,MAAM,CAAClG,KAA5B,CADE;AAET8W,aAAS,EAAE5Q,MAAM,CAAC4Q,SAAP,CAAiB+Z,WAAjB,EAFF;AAGT7W,eAAW,EAAE,CAAC,EAAD;AAHJ,GAAX;;AAMA,MAAI9T,MAAM,CAACyR,QAAX,EAAqB;AACnB3W,QAAI,CAAC2W,QAAL,GAAgBzR,MAAM,CAACyR,QAAvB;AACD;;AAED,MAAIihL,SAAS,GAAGhvL,IAAI,IAAIA,IAAI,CAAChB,KAAL,CAAW,CAAX,EAAc,CAAd,EAAiBioB,WAAjB,EAAxB;;AAEA,UAAQ3qB,MAAM,CAAC4Q,SAAf;AACE,SAAK,QAAL;AACE;AACA,aAAO,CAAC9V,IAAD,CAAP;;AACF,SAAK,SAAL;AACE,UAAIkF,MAAM,CAAC8sD,QAAP,IAAmB9sD,MAAM,CAAC8sD,QAAP,CAAgBpsD,MAAhB,GAAyB,CAAhD,EAAmD;AACjD,YAAIyJ,IAAI,GAAGnK,MAAM,CAAC8sD,QAAP,CAAgB3rD,MAAhB,CAAuBwe,CAAC,IAAIA,CAAC,CAAC9I,IAAF,KAAW,KAAvC,CAAX;AACA,YAAI87K,QAAQ,GAAG3yL,MAAM,CAAC8sD,QAAP,CAAgB3rD,MAAhB,CAAuBwe,CAAC,IAAIA,CAAC,CAAC9I,IAAF,KAAW,KAAvC,CAAf;AAEA,eAAO,CACL1M,IAAI,CAACzJ,MAAL,GAAc,CAAd,oCAAwB5F,IAAxB;AAA8ByZ,sBAAY,EAAEpK,IAAI,CAAC1M,GAAL,CAASkiB,CAAC,IAAIA,CAAC,CAAC1lB,KAAhB;AAA5C,UADK,EAEL04L,QAAQ,CAACjyL,MAAT,GAAkB,CAAlB,oCACK5F,IADL;AAEE0Z,qBAAW,EAAEm+K,QAAQ,CAACl1L,GAAT,CAAakiB,CAAC,IAAI,CAAC+yK,SAAS,CAAC/yK,CAAC,CAAC9I,IAAH,CAAV,EAAoB8I,CAAC,CAAC1lB,KAAtB,CAAlB;AAFf,UAFK,EAMLkH,MANK,CAMEw9C,OANF,CAAP;AAOD,OAXD,MAWO;AACL;AACA,eAAO,CAAC7jD,IAAD,CAAP;AACD;;AACH,SAAK,QAAL;AACE,aAAO,CAACA,IAAD,CAAP;;AACF;AACE,YAAM,IAAIoE,KAAJ,CAAU,+BAAV,CAAN;AAvBJ;AAyBD;AAEM,SAASo6K,oBAAT,CAA8B78B,UAA9B,EAA0C;AAC/C,SAAO;AACLjY,SAAK,EACHiY,UAAU,CAACrmI,IAAX,CAAgBgnI,IAAI,IAAIA,IAAI,CAAChC,EAAL,KAAY,IAAZ,IAAoBgC,IAAI,CAAC15G,KAAL,KAAe,OAA3D,KACA+4G,UAAU,CAACrmI,IAAX,CACEgnI,IAAI,IAAIA,IAAI,CAAChC,EAAL,KAAY,IAAZ,IAAoBgC,IAAI,CAAC15G,KAAL,KAAe,aAD7C,CADA,IAIA,IANG;AAOLy/F,WAAO,EACLsZ,UAAU,CAACrmI,IAAX,CAAgBgnI,IAAI,IAAIA,IAAI,CAAChC,EAAL,KAAY,IAAZ,IAAoBgC,IAAI,CAAC15G,KAAL,KAAe,SAA3D,KACA+4G,UAAU,CAACrmI,IAAX,CAAgBgnI,IAAI,IAAIA,IAAI,CAAChC,EAAL,KAAY,IAAZ,IAAoBgC,IAAI,CAAC15G,KAAL,KAAe,MAA3D,CADA,IAEA,IAVG;AAWL/9B,UAAM,EACJ82I,UAAU,CAACrmI,IAAX,CACEgnI,IAAI,IACF,CAACA,IAAI,CAAChC,EAAL,KAAY,IAAZ,IACCgC,IAAI,CAAChC,EAAL,KAAY,UADb,IAECgC,IAAI,CAAChC,EAAL,KAAY,WAFd,KAGAgC,IAAI,CAAC15G,KAAL,KAAe,QALnB,KAMK,IAlBF;AAmBLhnC,QAAI,EACF+/I,UAAU,CAACrmI,IAAX,CACEgnI,IAAI,IACF,CAACA,IAAI,CAAChC,EAAL,KAAY,IAAZ,IAAoBgC,IAAI,CAAChC,EAAL,KAAY,UAAjC,KAAgDgC,IAAI,CAAC15G,KAAL,KAAe,MAFnE,KAGK;AAvBF,GAAP;AAyBD;AAEM,SAASm4I,kBAAT,CAA4Bl2K,MAA5B,EAAoC;AACzC,MAAIA,MAAM,IAAI,OAAOA,MAAP,KAAkB,QAAhC,EAA0C;AACxC,WAAQ,CAACA,MAAM,CAACo1I,IAAP,GAAcp1I,MAAM,CAACq1I,IAAtB,IAA8B,CAA/B,GAAoC,CAA3C;AACD;;AACD,SAAOr1I,MAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClOD;;AACA,MAAMg5H,IAAI,GAAG7iH,mBAAO,CAAC,kFAAD,CAApB,C,CAEA;;;AACA,SAAS1I,GAAT,CAAa0mB,CAAb,EAAgB;AACd,SAAO,OAAOA,CAAP,KAAa,QAAb,GAAwBA,CAAxB,GAA4B,CAAnC;AACD;;AAED,SAAS84J,qBAAT,CAA+B7lK,KAA/B,EAAsCgzH,MAAtC,EAA8C;AAC5C,MAAIpuI,UAAU,GAAGyB,GAAG,CAAC2sI,MAAM,CAACp6I,MAAR,CAAH,GAAqBonB,KAAtC;AAEA,SAAO;AACLlW,QAAI,EAAE,uBADD;AAELqB,WAAO,EAAE,CAFJ;AAGLvG;AAHK,GAAP;AAKD;;AAEM,SAASkhL,SAAT,CAAmB9yC,MAAnB,EAA2Bh+I,IAA3B,EAAiC;AACtC,MAAIm2B,MAAM,GAAG6nH,MAAM,CAAChe,EAAP,KAAc,MAAd,GAAuB,MAAvB,GAAgC,EAA7C;AAEA;AACEp8H,UAAM,EAAE;AADV,KAEK5D,IAFL;AAGEyiI,SAAK,EAAEziI,IAAI,CAACyiI,KAAL,IAAcub,MAAM,CAACvb,KAH9B;AAIEzC,MAAE,EAAEhgI,IAAI,CAACggI,EAAL,GAAUhgI,IAAI,CAACggI,EAAf,GAAoB7pG,MAAM,GAAGymG,IAAI,CAACgX,MAAL,EAJnC;AAKExS,WAAO,EAAE4c,MAAM,CAAC5c,OALlB;AAMEzmI,QAAI,EAAEqjJ,MAAM,CAACrjJ,IANf;AAOE+uI,WAAO,EAAEsU,MAAM,CAACtU,OAAP,IAAkB,IAAlB,GAAyBsU,MAAM,CAACtU,OAAhC,GAA0C,IAPrD;AAQEqD,yBAAqB,EACnBiR,MAAM,CAACjR,qBAAP,IAAgC,IAAhC,GACIiR,MAAM,CAACjR,qBADX,GAEI,IAXR;AAYE6c,YAAQ,EAAE,IAZZ;AAaEJ,aAAS,EAAExL,MAAM,CAAChe,EAbpB;AAcE3+F,SAAK,EAAE;AAdT;AAgBD;AAEM,SAASs8G,gBAAT,CAA0B3I,KAA1B,EAAiC;AACtC;AACA;AACA,QAAMhqH,KAAK,GAAGgqH,KAAK,CAAC/O,eAAN,CAAsBrtI,MAAtB,CACZ,CAAC61H,GAAD,EAAMziG,CAAN,KAAYyiG,GAAG,GAAGp9G,GAAG,CAAC2a,CAAC,CAACpoB,MAAH,CADT,EAEZ,CAFY,CAAd;AAIA,yCACKoxI,KADL;AAEE3zG,SAAK,EACHrW,KAAK,KAAK3Z,GAAG,CAAC2jI,KAAK,CAACpxI,MAAP,CAAb,GAA8B,IAA9B,GAAqCitL,qBAAqB,CAAC7lK,KAAD,EAAQgqH,KAAR;AAH9D;AAKD;AAEM,SAAS+7C,eAAT,CAAyBpwD,YAAzB,EAAuCkd,GAAvC,EAA4C;AACjD;AACA;AACA;AACA,SAAOA,GAAG,IAAI,CAAd,EAAiB;AACf,QAAI7I,KAAK,GAAGrU,YAAY,CAACkd,GAAD,CAAxB;;AACA,QAAI7I,KAAK,CAAC4I,SAAV,EAAqB;AACnB,aAAOC,GAAP;AACD;;AACDA,OAAG;AACJ;;AACD,SAAO,IAAP;AACD;AAEM,SAASmzC,QAAT,CAAkBrwD,YAAlB,EAAgCswD,WAAhC,EAA6C;AAClD,MAAIj4K,KAAK,GAAG,CAAC2nH,YAAY,CAACswD,WAAD,CAAb,CAAZ;AACA,MAAIn4L,IAAI,GAAGm4L,WAAW,GAAG,CAAzB;;AACA,SAAOn4L,IAAI,GAAG6nI,YAAY,CAAChiI,MAApB,IAA8BgiI,YAAY,CAAC7nI,IAAD,CAAZ,CAAmB8wJ,QAAxD,EAAkE;AAChE5wI,SAAK,CAACxb,IAAN,CAAWmjI,YAAY,CAAC7nI,IAAD,CAAvB;AACAA,QAAI;AACL;;AACD,SAAOkgB,KAAP;AACD;AAEM,SAAS0zI,mBAAT,CAA6B/rB,YAA7B,EAA2C;AAChD,MAAIt6H,CAAC,GAAGs6H,YAAY,CAAC/nI,MAAb,CAAoB,CAACygB,IAAD,EAAO2kI,MAAP,KAAkB;AAC5C,QAAM/X,eAAN,GAAoC+X,MAApC,CAAM/X,eAAN;AAAA,QAA0B+O,KAA1B,4BAAoCgJ,MAApC;;AACA/X,mBAAe,GAAGA,eAAe,IAAI,EAArC;AAEA5sH,QAAI,CAAC7b,IAAL,CAAUw3I,KAAV;;AAEA,SAAK,IAAIx9H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyuH,eAAe,CAACtnI,MAApC,EAA4C6Y,CAAC,EAA7C,EAAiD;AAC/C6B,UAAI,CAAC7b,IAAL,CAAUyoI,eAAe,CAACzuH,CAAD,CAAzB;AACD;;AACD,WAAO6B,IAAP;AACD,GAVO,EAUL,EAVK,CAAR;AAWA,SAAOhT,CAAP;AACD;AAEM,SAAS6qL,gBAAT,CAA0Bl4K,KAA1B,EAAiC;AACtC,yCAAYA,KAAK,CAAC,CAAD,CAAjB;AAAsBitH,mBAAe,EAAEjtH,KAAK,CAACrY,KAAN,CAAY,CAAZ;AAAvC;AACD;AAEM,SAASwwL,kBAAT,CAA4Bn4K,KAA5B,EAAmC;AACxC,MAAIA,KAAK,IAAI,IAAb,EAAmB;AACjB,WAAO,IAAP;AACD;;AACD,SAAO0zI,mBAAmB,CAAC,CAAC1zI,KAAD,CAAD,CAA1B;AACD;AAEM,SAASo4K,oBAAT,CAA8BC,YAA9B,EAA4ClqL,IAA5C,EAAkD;AACvD,SAAO+pL,gBAAgB,CAACI,0DAAY,CAACnqL,IAAD,EAAOgqL,kBAAkB,CAACE,YAAD,CAAzB,CAAb,CAAvB;AACD;AAEM,SAASE,mBAAT,CAA6B5wD,YAA7B,EAA2CX,EAA3C,EAA+C5kG,IAA/C,EAAqD;AAC1D,MAAIyiH,GAAG,GAAGld,YAAY,CAAC//H,SAAb,CAAuBorB,CAAC,IAAIA,CAAC,CAACg0G,EAAF,KAASA,EAArC,CAAV;AACA,MAAIgV,KAAK,GAAGrU,YAAY,CAACkd,GAAD,CAAxB;AACA,MAAI2zC,gBAAgB,GAAG,CAAC,GAAG7wD,YAAJ,CAAvB;;AAEA,MAAIkd,GAAG,KAAK,CAAC,CAAb,EAAgB;AACd,UAAM,IAAI1gJ,KAAJ,CAAU,2CAA2C6iI,EAArD,CAAN;AACD;;AAED,MAAIgV,KAAK,CAAC4I,SAAN,IAAmB5I,KAAK,CAAC4U,QAA7B,EAAuC;AACrC,QAAIqnC,WAAW,GAAGF,eAAe,CAACpwD,YAAD,EAAekd,GAAf,CAAjC;;AACA,QAAIozC,WAAW,IAAI,IAAnB,EAAyB;AACvB59J,aAAO,CAACsrE,GAAR,CAAY,0BAAZ;AACA,aAAO;AAAEx3F,YAAI,EAAE;AAAEuhI,iBAAO,EAAE,EAAX;AAAeqX,iBAAO,EAAE;AAAxB;AAAR,OAAP;AACD;;AAED,QAAI/mI,KAAK,GAAGg4K,QAAQ,CAACrwD,YAAD,EAAeswD,WAAf,CAApB;AACA,QAAIpvD,OAAO,GAAGzmG,IAAI,CAAC81J,gBAAgB,CAACl4K,KAAD,CAAjB,CAAlB;AACA,QAAIy4K,QAAQ,GAAGN,kBAAkB,CAACtvD,OAAD,CAAjC;AAEA,QAAI16H,IAAJ;;AACA,QAAIsqL,QAAQ,IAAI,IAAhB,EAAsB;AACpB;AACA;AACAtqL,UAAI,GAAG;AAAEuhI,eAAO,EAAE,CAAC;AAAE1I,YAAE,EAAEhnH,KAAK,CAAC,CAAD,CAAL,CAASgnH;AAAf,SAAD,CAAX;AAAkC+f,eAAO,EAAE;AAA3C,OAAP;AACAle,aAAO,GAAG;AAAE7B,UAAE,EAAEhnH,KAAK,CAAC,CAAD,CAAL,CAASgnH,EAAf;AAAmB0xD,gBAAQ,EAAE;AAA7B,OAAV;AACAF,sBAAgB,CAAC1wL,MAAjB,CAAwBmwL,WAAxB,EAAqCj4K,KAAK,CAACra,MAA3C;AACD,KAND,MAMO;AACLwI,UAAI,GAAGwqL,uDAAS,CAAC34K,KAAD,EAAQy4K,QAAR,CAAhB;AACAD,sBAAgB,CAAC1wL,MAAjB,CAAwBmwL,WAAxB,EAAqCj4K,KAAK,CAACra,MAA3C,EAAmD,GAAG8yL,QAAtD;AACD;;AAED,WAAO;AAAEzxL,UAAI,EAAEwxL,gBAAR;AAA0B3rD,oBAAc,EAAEhE,OAA1C;AAAmD16H;AAAnD,KAAP;AACD,GAxBD,MAwBO;AACL,QAAI06H,OAAO,GAAGzmG,IAAI,CAAC45G,KAAD,CAAlB;AACA,QAAI48C,QAAQ,GAAGT,kBAAkB,CAACtvD,OAAD,CAAlB,IAA+B,EAA9C;;AACA,QAAIA,OAAJ,EAAa;AACXA,aAAO,CAACoE,eAAR,GAA0BpE,OAAO,CAACoE,eAAR,IAA2B,EAArD;AACD;;AACDurD,oBAAgB,CAAC1wL,MAAjB,CAAwB+8I,GAAxB,EAA6B,CAA7B,EAAgC,GAAG+zC,QAAnC;AAEA,WAAO;AACL5xL,UAAI,EAAEwxL,gBADD;AAEL3rD,oBAAc,EAAEhE,OAAO,IAAI;AAAE7B,UAAE,EAAEgV,KAAK,CAAChV,EAAZ;AAAgB0xD,gBAAQ,EAAE;AAA1B,OAFtB;AAGLvqL,UAAI,EAAEwqL,uDAAS,CAAC,CAAC38C,KAAD,CAAD,EAAU48C,QAAV;AAHV,KAAP;AAKD;AACF;AAEM,SAASC,mBAAT,CAA6BlxD,YAA7B,EAA2CX,EAA3C,EAA+C;AACpD,SAAOuxD,mBAAmB,CAAC5wD,YAAD,EAAeX,EAAf,EAAmBgV,KAAK,IAAI;AACpD,QAAI,CAACA,KAAK,CAAC4I,SAAX,EAAsB;AACpB,aAAO5I,KAAP;AACD;;AACD,QAAI88C,OAAO,GAAGlnL,kDAAI,CAACoqI,KAAK,CAAC/O,eAAP,CAAlB;AACA+O,SAAK,CAAC/O,eAAN,CAAsBzoI,IAAtB,CACEszL,SAAS,CAAC97C,KAAD,EAAQ;AACfpxI,YAAM,EAAE,CADO;AAEfm6I,gBAAU,EAAE1sI,GAAG,CAACygL,OAAO,IAAIA,OAAO,CAAC/zC,UAApB,CAAH,GAAqC;AAFlC,KAAR,CADX;AAMA,WAAO/I,KAAP;AACD,GAZyB,CAA1B;AAaD;AAEM,SAASjU,iBAAT,CAA2BJ,YAA3B,EAAyC4E,WAAzC,EAAsD;AAC3D,SAAOgsD,mBAAmB,CAAC5wD,YAAD,EAAe4E,WAAW,CAACvF,EAA3B,EAA+BgV,KAAK,IAAI;AAChE,QAAIA,KAAK,CAAC4I,SAAV,EAAqB;AACnB,UAAII,MAAM,GAAGhJ,KAAK,CAAChV,EAAN,KAAauF,WAAW,CAACvF,EAAzB,GAA8BuF,WAA9B,GAA4CyP,KAAzD;AACA,UAAItqC,GAAG,GAAGsqC,KAAK,CAAC/O,eAAN,CAAsBvqI,GAAtB,CAA0BswB,CAAC,IAAI;AACvC;AACA;AAEA,YAAIhL,KAAK,GAAGgL,CAAZ;;AACA,YAAIgpH,KAAK,CAAChV,EAAN,KAAauF,WAAW,CAACvF,EAA7B,EAAiC;AAC/Bh/G,eAAK,mCACAgL,CADA;AAEHy2G,iBAAK,EAAEz2G,CAAC,CAACy2G,KAAF,KAAYuS,KAAK,CAACvS,KAAlB,GAA0B8C,WAAW,CAAC9C,KAAtC,GAA8Cz2G,CAAC,CAACy2G;AAFpD,YAAL;AAID,SALD,MAKO,IAAIz2G,CAAC,CAACg0G,EAAF,KAASuF,WAAW,CAACvF,EAAzB,EAA6B;AAClCh/G,eAAK,GAAGukH,WAAR;AACD;;AAED,eAAOurD,SAAS,CAAC9yC,MAAD,EAASh9H,KAAT,CAAhB;AACD,OAfS,CAAV;AAiBA,aAAO28H,gBAAgB,iCAAMK,MAAN;AAAc/X,uBAAe,EAAEv7B;AAA/B,SAAvB;AACD,KApBD,MAoBO;AACL,aAAO66B,WAAP;AACD;AACF,GAxByB,CAA1B;AAyBD;AAEM,SAAStE,iBAAT,CAA2BN,YAA3B,EAAyCX,EAAzC,EAA6C;AAClD,SAAOuxD,mBAAmB,CAAC5wD,YAAD,EAAeX,EAAf,EAAmBgV,KAAK,IAAI;AACpD,QAAIA,KAAK,CAAC4I,SAAV,EAAqB;AACnB,UAAI5I,KAAK,CAAChV,EAAN,KAAaA,EAAjB,EAAqB;AACnB,eAAO,IAAP;AACD,OAFD,MAEO,IAAIgV,KAAK,CAAC/O,eAAN,CAAsBtnI,MAAtB,KAAiC,CAArC,EAAwC;AAC7C,+CACKq2I,KADL;AAEE/O,yBAAe,EAAE,IAFnB;AAGE2X,mBAAS,EAAE,KAHb;AAIEv8G,eAAK,EAAE;AAJT;AAMD,OAPM,MAOA;AACL,YAAIqpE,GAAG,GAAGsqC,KAAK,CAAC/O,eAAN,CAAsB7mI,MAAtB,CAA6B4sB,CAAC,IAAIA,CAAC,CAACg0G,EAAF,KAASA,EAA3C,CAAV;AACA,eAAO2d,gBAAgB,iCAAM3I,KAAN;AAAa/O,yBAAe,EAAEv7B;AAA9B,WAAvB;AACD;AACF,KAdD,MAcO;AACL,aAAO,IAAP;AACD;AACF,GAlByB,CAA1B;AAmBD;AAEM,SAASqnF,gBAAT,CAA0BpxD,YAA1B,EAAwCX,EAAxC,EAA4C;AACjD,SAAOuxD,mBAAmB,CAAC5wD,YAAD,EAAeX,EAAf,EAAmBgV,KAAK,IAAI;AACpD,QAAIA,KAAK,CAAC4I,SAAN,IAAmB5I,KAAK,CAAC4U,QAA7B,EAAuC;AACrC,aAAO5U,KAAP;AACD;;AAED,2CACKA,KADL;AAEE4I,eAAS,EAAE,IAFb;AAGEv8G,WAAK,EAAEhwB,GAAG,CAAC2jI,KAAK,CAACpxI,MAAP,CAAH,KAAsB,CAAtB,GAA0B,IAA1B,GAAiCitL,qBAAqB,CAAC,CAAD,EAAI77C,KAAJ,CAH/D;AAIE/O,qBAAe,EAAE,CAAC6qD,SAAS,CAAC97C,KAAD,EAAQ;AAAEpxI,cAAM,EAAE,CAAV;AAAam6I,kBAAU,EAAE,CAAC;AAA1B,OAAR,CAAV;AAJnB;AAMD,GAXyB,CAA1B;AAYD;AAEM,SAASi0C,uBAAT,CAAiCrxD,YAAjC,EAA+C;AACpD,MAAIqd,MAAM,GAAGrd,YAAY,CAACtsH,IAAb,CAAkB2X,CAAC,IAAI,CAACA,CAAC,CAAC49H,QAA1B,CAAb;AACA5L,QAAM,mCAAQA,MAAR;AAAgBhe,MAAE,EAAEpD,IAAI,CAACgX,MAAL;AAApB,IAAN;AAEA,MAAI9yH,QAAQ,GAAG6/G,YAAY,CAACvhI,MAAb,CAAoB4sB,CAAC,IAAIA,CAAC,CAAC49H,QAA3B,CAAf;AACA,SAAO,CACL5L,MADK,EAEL,GAAGl9H,QAAQ,CAACplB,GAAT,CAAaslB,KAAK,oCAChBA,KADgB;AAEnBg/G,MAAE,EAAEpD,IAAI,CAACgX,MAAL,EAFe;AAGnB4V,aAAS,EAAExL,MAAM,CAAChe;AAHC,IAAlB,CAFE,CAAP;AAQD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1PD,IAAIiyD,iBAAiB,GAAGl4K,mBAAO,CAAC,sEAAD,CAA/B;;AAEO,SAASm4K,SAAT,CAAmBt1D,IAAnB,EAAyB;AAC9B,SAAOA,IAAI,CAAC3kH,OAAL,CAAa,IAAb,EAAmB,EAAnB,CAAP;AACD;AAEM,SAASrN,IAAT,CAAcipD,GAAd,EAAmB;AACxB,SAAOA,GAAG,CAACA,GAAG,CAACl1D,MAAJ,GAAa,CAAd,CAAV;AACD;AAEM,SAASwzL,YAAT,CAAsBj2D,OAAtB,EAA+B;AACpC,SAAO3gI,MAAM,CAACC,MAAP,CAAcggC,KAAd,CAAoB,IAApB,EAA0B,CAAC,EAAD,EAAK,GAAG0gG,OAAR,CAA1B,CAAP;AACD;AAEM,SAASk2D,kBAAT,CAA4Bl2D,OAA5B,EAAqC;AAC1C,QAAM6hC,MAAM,GAAG,EAAf;AACAxiK,QAAM,CAACiS,IAAP,CAAY0uH,OAAZ,EAAqBrxH,OAArB,CAA6B4C,GAAG,IAAI;AAClC,QAAIswJ,MAAM,CAACtwJ,GAAD,CAAV,EAAiB;AACfswJ,YAAM,CAACtwJ,GAAD,CAAN,mCAAmBswJ,MAAM,CAACtwJ,GAAD,CAAzB,GAAmCyuH,OAAO,CAACzuH,GAAD,CAA1C;AACD,KAFD,MAEO;AACLswJ,YAAM,CAACtwJ,GAAD,CAAN,GAAcyuH,OAAO,CAACzuH,GAAD,CAArB;AACD;AACF,GAND;AAOD;AAEM,SAAS4kL,YAAT,CAAsBC,MAAtB,EAA8B;AACnC,SAAO71L,KAAK,CAACkY,SAAN,CAAgBghB,MAAhB,CAAuB6F,KAAvB,CAA6B,EAA7B,EAAiC82J,MAAjC,CAAP;AACD;AAEM,SAASC,YAAT,CAAsBxzL,CAAtB,EAAyBC,CAAzB,EAA4B;AACjC,MAAID,CAAC,KAAKC,CAAV,EAAa;AACX,WAAO,IAAP;AACD;;AAED,MAAIwzL,QAAQ,GAAG,CAAf;AAAA,MACEC,QAAQ,GAAG,CADb;AAAA,MAEEhlL,GAFF;;AAGA,OAAKA,GAAL,IAAYzO,CAAZ,EAAe;AACbyzL,YAAQ;;AACR,QAAI,CAAC1zL,CAAC,CAACsY,cAAF,CAAiB5J,GAAjB,CAAD,IAA0B1O,CAAC,CAAC0O,GAAD,CAAD,KAAWzO,CAAC,CAACyO,GAAD,CAA1C,EAAiD;AAC/C,aAAO,KAAP;AACD;AACF;;AACD,OAAKA,GAAL,IAAY1O,CAAZ,EAAe;AACbyzL,YAAQ;AACT;;AACD,SAAOA,QAAQ,KAAKC,QAApB;AACD;AAEM,SAASjzB,gBAAT,CAA0BkzB,IAA1B,EAAgCC,IAAhC,EAAsC;AAC3C;AACA;AACA,QAAMxrL,IAAI,GAAGurL,IAAI,CAAC1yD,EAAL,GAAU;AAAEA,MAAE,EAAE0yD,IAAI,CAAC1yD;AAAX,GAAV,GAA4B,EAAzC;AACA,QAAMxyH,IAAI,GAAGjS,MAAM,CAACiS,IAAP,CAAYmlL,IAAZ,CAAb;AACA,MAAIC,UAAU,GAAG,KAAjB;;AAEA,OAAK,IAAIp7K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhK,IAAI,CAAC7O,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAI/J,GAAG,GAAGD,IAAI,CAACgK,CAAD,CAAd;;AAEA,QAAIk7K,IAAI,CAACjlL,GAAD,CAAJ,KAAcklL,IAAI,CAACllL,GAAD,CAAtB,EAA6B;AAC3BtG,UAAI,CAACsG,GAAD,CAAJ,GAAYklL,IAAI,CAACllL,GAAD,CAAhB;AACAmlL,gBAAU,GAAG,IAAb;AACD;AACF;;AAED,SAAOA,UAAU,GAAGzrL,IAAH,GAAU,IAA3B;AACD;AAEM,SAASm5I,gBAAT,CAA0BoyC,IAA1B,EAAgCC,IAAhC,EAAsC3xD,MAAtC,EAA8C;AACnD,MAAI9oG,OAAO,GAAG,KAAd;;AACA,OAAK,IAAI1gB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwpH,MAAM,CAACriI,MAA3B,EAAmC6Y,CAAC,EAApC,EAAwC;AACtC,QAAImqB,KAAK,GAAGq/F,MAAM,CAACxpH,CAAD,CAAlB;;AACA,QAAIk7K,IAAI,CAAC/wJ,KAAD,CAAJ,KAAgBgxJ,IAAI,CAAChxJ,KAAD,CAAxB,EAAiC;AAC/BzJ,aAAO,GAAG,IAAV;AACA;AACD;AACF;;AACD,SAAOA,OAAP;AACD;AAEM,SAASo5J,YAAT,CAAsBn+C,OAAtB,EAA+B/0H,KAA/B,EAAsC;AAC3CA,OAAK,GAAG,CAAC,GAAGA,KAAJ,CAAR;;AAEA,MAAI+0H,OAAO,CAAClG,KAAZ,EAAmB;AACjBkG,WAAO,CAAClG,KAAR,CAAcpiI,OAAd,CAAsBnQ,GAAG,IAAI;AAC3B0jB,WAAK,CAAC5gB,IAAN,CAAW9C,GAAX;AACD,KAFD;AAGD;;AAED,MAAIy4I,OAAO,CAAC4M,OAAZ,EAAqB;AACnB5M,WAAO,CAAC4M,OAAR,CAAgBl1I,OAAhB,CAAwB,QAAuB;AAAA,UAApBm1H,EAAoB,QAApBA,EAAoB;AAAA,UAAbgB,MAAa;;AAC7C,YAAM6c,GAAG,GAAGz/H,KAAK,CAACxd,SAAN,CAAgBorB,CAAC,IAAIA,CAAC,CAACg0G,EAAF,KAASA,EAA9B,CAAZ;AACA5hH,WAAK,CAACy/H,GAAD,CAAL,mCACKz/H,KAAK,CAACy/H,GAAD,CADV,GAEK7c,MAFL;AAID,KAND;AAOD;;AAED,MAAImS,OAAO,CAACzK,OAAZ,EAAqB;AACnByK,WAAO,CAACzK,OAAR,CAAgB79H,OAAhB,CAAwBmhB,CAAC,IAAI;AAC3B,YAAM6xH,GAAG,GAAGz/H,KAAK,CAACxd,SAAN,CAAgBskL,EAAE,IAAIl5J,CAAC,CAACg0G,EAAF,KAASklD,EAAE,CAACllD,EAAlC,CAAZ;;AACA,UAAI6d,GAAG,KAAK,CAAC,CAAb,EAAgB;AACdz/H,aAAK,CAACtd,MAAN,CAAa+8I,GAAb,EAAkB,CAAlB;AACD;AACF,KALD;AAMD;;AAED,SAAOz/H,KAAP;AACD;AAEM,SAASmoI,gBAAT,CAA0BvmJ,IAA1B,EAAgC2hC,KAAhC,EAAuC;AAC5C,MAAIysF,GAAG,GAAG,IAAI5hH,GAAJ,EAAV;;AACA,OAAK,IAAIgL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGxX,IAAI,CAACrB,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAIqE,IAAI,GAAG7b,IAAI,CAACwX,CAAD,CAAf;AACA,QAAI/J,GAAG,GAAGoO,IAAI,CAAC8lB,KAAD,CAAd;AAEA,QAAIvjB,KAAK,GAAGgwG,GAAG,CAACxzH,GAAJ,CAAQ6S,GAAR,KAAgB,EAA5B;AACA2Q,SAAK,CAAC5gB,IAAN,CAAWqe,IAAX;AAEAuyG,OAAG,CAACjwH,GAAJ,CAAQsP,GAAR,EAAa2Q,KAAb;AACD;;AACD,SAAOgwG,GAAP;AACD;AAEM,SAAS6Q,OAAT,CAAiBj/H,IAAjB,EAAuB2hC,KAAvB,EAA8Bw0H,MAA9B,EAAsC;AAC3C,MAAI/nC,GAAG,GAAG,IAAI5hH,GAAJ,EAAV;;AACA,OAAK,IAAIgL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGxX,IAAI,CAACrB,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAIqE,IAAI,GAAG7b,IAAI,CAACwX,CAAD,CAAf;AACA,QAAI/J,GAAG,GAAGoO,IAAI,CAAC8lB,KAAD,CAAd;AACA,QAAIy+G,QAAQ,GAAGhyB,GAAG,CAACxzH,GAAJ,CAAQ6S,GAAR,KAAgB,EAA/B;AACA2gH,OAAG,CAACjwH,GAAJ,CAAQsP,GAAR,EAAa2yI,QAAQ,CAACzqH,MAAT,CAAgB,CAACwgI,MAAM,GAAGA,MAAM,CAACt6I,IAAD,CAAT,GAAkB7b,IAAI,CAACwX,CAAD,CAA7B,CAAhB,CAAb;AACD;;AACD,SAAO42G,GAAP;AACD;AAEM,SAASykE,aAAT,CAAuB7yL,IAAvB,EAA6B2hC,KAA7B,EAAoCw0H,MAApC,EAA4C;AACjD,MAAI/nC,GAAG,GAAG,IAAI5hH,GAAJ,EAAV;;AACA,OAAK,IAAIgL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGxX,IAAI,CAACrB,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAIqE,IAAI,GAAG7b,IAAI,CAACwX,CAAD,CAAf;AACA,QAAI/J,GAAG,GAAGoO,IAAI,CAAC8lB,KAAD,CAAd;;AACA,QAAIysF,GAAG,CAACz9G,GAAJ,CAAQlD,GAAR,CAAJ,EAAkB;AAChB,YAAM,IAAItQ,KAAJ,CAAU,0CAA0CsQ,GAApD,CAAN;AACD;;AACD2gH,OAAG,CAACjwH,GAAJ,CAAQsP,GAAR,EAAa0oJ,MAAM,GAAGA,MAAM,CAACt6I,IAAD,CAAT,GAAkB7b,IAAI,CAACwX,CAAD,CAAzC;AACD;;AACD,SAAO42G,GAAP;AACD,C,CAED;AACA;AACA;AACA;;AACA,SAAS0kE,UAAT,CAAoB9yL,IAApB,EAA0B;AACxB,MAAIouH,GAAG,GAAG,IAAI5hH,GAAJ,EAAV;;AACA,OAAK,IAAIgL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGxX,IAAI,CAACrB,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAIqE,IAAI,GAAG7b,IAAI,CAACwX,CAAD,CAAf;AACA42G,OAAG,CAACjwH,GAAJ,CAAQ0d,IAAI,CAACmkH,EAAb,EAAiBnkH,IAAjB;AACD;;AACD,SAAOuyG,GAAP;AACD;;AAEM,SAASujE,SAAT,CAAmBvzK,KAAnB,EAA0B20K,QAA1B,EAAoC;AACzC,MAAIlxD,OAAO,GAAGixD,UAAU,CAAC10K,KAAD,CAAxB;;AACA,MAAI40K,UAAU,GAAGF,UAAU,CAACC,QAAD,CAA3B;;AACA,MAAI9lD,KAAK,GAAG,EAAZ;AACA,MAAI8S,OAAO,GAAG,EAAd;AAEA,MAAIrX,OAAO,GAAGtqH,KAAK,CAChBhf,MADW,CACJyc,IAAI,IAAI,CAACm3K,UAAU,CAACriL,GAAX,CAAekL,IAAI,CAACmkH,EAApB,CADL,EAEXtkI,GAFW,CAEPmgB,IAAI,KAAK;AAAEmkH,MAAE,EAAEnkH,IAAI,CAACmkH;AAAX,GAAL,CAFG,CAAd;AAIA+yD,UAAQ,CAACloL,OAAT,CAAiBooL,OAAO,IAAI;AAC1B,QAAIp3K,IAAI,GAAGgmH,OAAO,CAACjnI,GAAR,CAAYq4L,OAAO,CAACjzD,EAApB,CAAX;;AACA,QAAI,CAACnkH,IAAL,EAAW;AACToxH,WAAK,CAACzvI,IAAN,CAAWy1L,OAAX;AACD,KAFD,MAEO;AACL,YAAM9/C,OAAO,GAAGqsB,gBAAgB,CAAC3jJ,IAAD,EAAOo3K,OAAP,CAAhC;;AACA,UAAI9/C,OAAJ,EAAa;AACX4M,eAAO,CAACviJ,IAAR,CAAa21I,OAAb;AACD;AACF;AACF,GAVD;AAYA,SAAO;AAAElG,SAAF;AAAS8S,WAAT;AAAkBrX;AAAlB,GAAP;AACD;AAEM,SAASy+B,SAAT,CAAmBnnK,IAAnB,EAAyB;AAC9B,MAAIouH,GAAG,GAAG,EAAV;;AACA,OAAK,IAAI52G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGxX,IAAI,CAACrB,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAIqE,IAAI,GAAG7b,IAAI,CAACwX,CAAD,CAAf;AACA42G,OAAG,CAACvyG,IAAI,CAACmkH,EAAN,CAAH,GAAenkH,IAAf;AACD;;AACD,SAAOuyG,GAAP;AACD;AAEM,SAAS8kE,gBAAT,CAA0BC,SAA1B,EAAqCC,SAArC,EAAgD;AACrD,MAAIl7J,OAAO,GAAGsnI,gBAAgB,CAAC2zB,SAAD,EAAYC,SAAZ,CAA9B;;AACA,MAAIl7J,OAAO,KAAK,IAAhB,EAAsB;AACpB7E,WAAO,CAACsrE,GAAR,CAAYzmE,OAAZ;AACD;;AACD,SAAOA,OAAO,KAAK,IAAnB;AACD;AAEM,SAASmtJ,KAAT,CAAe3pL,GAAf,EAAoB8R,IAApB,EAA0BqO,IAA1B,EAAgC;AACrC,OAAK,IAAIrE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhK,IAAI,CAAC7O,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpC,QAAI/J,GAAG,GAAGD,IAAI,CAACgK,CAAD,CAAd;;AAEA,QAAIA,CAAC,KAAKhK,IAAI,CAAC7O,MAAL,GAAc,CAAxB,EAA2B;AACzBjD,SAAG,CAACyC,GAAJ,CAAQsP,GAAR,EAAaoO,IAAb;AACD,KAFD,MAEO;AACL,UAAI,CAACngB,GAAG,CAACiV,GAAJ,CAAQlD,GAAR,CAAL,EAAmB;AACjB/R,WAAG,CAACyC,GAAJ,CAAQsP,GAAR,EAAa,IAAIjB,GAAJ,EAAb;AACD;;AAED9Q,SAAG,GAAGA,GAAG,CAACd,GAAJ,CAAQ6S,GAAR,CAAN;AACD;AACF;AACF;AAEM,SAAS+3K,KAAT,CAAe9pL,GAAf,EAAoB8R,IAApB,EAA0B;AAC/B,MAAIqO,IAAI,GAAGngB,GAAX;;AACA,OAAK,IAAI8b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGhK,IAAI,CAAC7O,MAAzB,EAAiC6Y,CAAC,EAAlC,EAAsC;AACpCqE,QAAI,GAAGA,IAAI,CAACjhB,GAAL,CAAS4S,IAAI,CAACgK,CAAD,CAAb,CAAP;;AAEA,QAAIqE,IAAI,IAAI,IAAZ,EAAkB;AAChB,aAAOA,IAAP;AACD;AACF;;AACD,SAAOA,IAAP;AACD,C,CAED;;AACO,SAASw3K,UAAT,CAAoBv2K,GAApB,EAAyB;AAC9B,QAAMA,GAAN;AACD;AAEM,SAAS2+H,YAAT,CAAsB63C,IAAtB,EAA4BC,IAA5B,EAAkC;AACvC,MAAIC,QAAQ,GAAG,IAAIxgL,GAAJ,CAAQsgL,IAAR,CAAf;AACA,MAAI7T,IAAI,GAAG8T,IAAI,CAAC9mL,MAAL,EAAX;AACA,MAAIvU,KAAK,GAAGunL,IAAI,CAACxnL,IAAL,EAAZ;;AACA,SAAO,CAACC,KAAK,CAACuG,IAAd,EAAoB;AAClB+0L,YAAQ,CAAC94L,GAAT,CAAaxC,KAAK,CAACA,KAAnB;AACAA,SAAK,GAAGunL,IAAI,CAACxnL,IAAL,EAAR;AACD;;AACD,SAAOu7L,QAAP;AACD;AAEM,SAASC,UAAT,CAAoB73J,GAApB,EAAyB;AAC9B,SAAOA,GAAG,CAAC,CAAD,CAAH,CAAOhT,WAAP,KAAuBgT,GAAG,CAACj7B,KAAJ,CAAU,CAAV,CAA9B;AACD;AAEM,IAAI+yL,aAAa,GAAG,CACzB;AAAEx7L,OAAK,EAAE,WAAT;AAAsBy7L,OAAK,EAAE;AAA7B,CADyB,EAEzB;AAAEz7L,OAAK,EAAE,WAAT;AAAsBy7L,OAAK,EAAE;AAA7B,CAFyB,EAGzB;AAAEz7L,OAAK,EAAE,aAAT;AAAwBy7L,OAAK,EAAE;AAA/B,CAHyB,CAApB;AAMP,IAAIC,YAAY,GAAG;AACjB17L,OAAK,EAAE,IADU;AAEjB+jD,WAAS,EAAE,IAFM;AAGjB7jC,OAAK,EAAE;AAHU,CAAnB;AAMO,SAASy7K,eAAT,CAAyBt9K,MAAzB,EAAiC;AACtC,MAAIm0B,MAAJ,EAAYtyB,KAAZ,EAAmB07K,SAAnB;;AAEA,UAAQv9K,MAAR;AACE,SAAK,aAAL;AACEm0B,YAAM,GAAG,OAAT;AACAtyB,WAAK,GAAG,WAAR;AACA07K,eAAS,GAAG,GAAZ;AACA;;AACF,SAAK,WAAL;AACEppJ,YAAM,GAAG,OAAT;AACAtyB,WAAK,GAAG,WAAR;AACA07K,eAAS,GAAG,GAAZ;AACA;;AACF,SAAK,WAAL;AACA;AACEppJ,YAAM,GAAG,OAAT;AACAtyB,WAAK,GAAG,WAAR;AACA07K,eAAS,GAAG,GAAZ;AAfJ;;AAkBAF,cAAY,GAAG;AACb17L,SAAK,EAAEqe,MADM;AAEbu9K,aAFa;AAGb;AACA;AACA73I,aAAS,EAAE;AACT1lC,YAAM,EAAEK,MAAM,IACZq7K,iBAAiB,CAAC17K,MAAlB,CAAyBK,MAAzB,EAAiC;AAAE8zB,cAAF;AAAUn0B,cAAM,EAAE;AAAlB,OAAjC;AAFO,KALE;AASb6B;AATa,GAAf;AAWD;AAEM,SAAS27K,eAAT,GAA2B;AAChC,SAAOH,YAAP;AACD;AAEDC,eAAe,CAAC,UAAD,CAAf;AAEO,SAASG,eAAT,CAAyB97L,KAAzB,EAAgC;AACrC,SAAOswI,eAAe,CAACyrD,iBAAiB,CAAC/7L,KAAD,CAAjB,IAA4B,CAA7B,CAAtB;AACD;AAEM,SAASg8L,gBAAT,CAA0Bh8L,KAA1B,EAAiC;AACtC,SAAO61K,eAAe,CAAC71K,KAAD,CAAf,IAA0B,CAAjC;AACD;AAEM,SAASi8L,iBAAT,CAA2Bp8J,CAA3B,EAA8B;AACnC;AACA,SAAO67J,YAAY,CAAC33I,SAAb,CAAuB1lC,MAAvB,CAA8BwhB,CAAC,GAAG,GAAlC,CAAP;AACD;AAEM,SAASq8J,gBAAT,CAA0Br8J,CAA1B,EAA6B;AAClC,SAAO67J,YAAY,CAAC33I,SAAb,CAAuB1lC,MAAvB,CAA8BwhB,CAA9B,CAAP;AACD;AAEM,SAASs8J,sBAAT,CAAgCt8J,CAAhC,EAAmCjZ,IAAnC,EAAyC;AAC9C,SAAOmzK,iBAAiB,CAAC17K,MAAlB,CAAyBwhB,CAAzB,EAA4B;AAAEjZ;AAAF,GAA5B,CAAP;AACD;AAEM,SAAS+wK,gBAAT,CAA0Bj0J,GAA1B,EAA+B;AACpC,MAAIh4B,MAAM,GAAG2U,UAAU,CACrBqjB,GAAG,CAAC3jB,OAAJ,CAAY27K,YAAY,CAACx7K,KAAzB,EAAgC,EAAhC,EAAoCH,OAApC,CAA4C27K,YAAY,CAACE,SAAzD,EAAoE,GAApE,CADqB,CAAvB;AAGA,SAAO1tL,KAAK,CAACxC,MAAD,CAAL,GAAgB,IAAhB,GAAuBA,MAA9B;AACD;AAEM,SAASqwL,iBAAT,CAA2Br4J,GAA3B,EAAgC;AACrC,MAAIh4B,MAAM,GAAGisL,gBAAgB,CAACj0J,GAAD,CAA7B;AACA,SAAOh4B,MAAM,GAAGw/H,eAAe,CAACx/H,MAAD,CAAlB,GAA6B,IAA1C;AACD;AAEM,SAASmqK,eAAT,CAAyBnyI,GAAzB,EAA8B;AACnC,MAAIh4B,MAAM,GAAGmV,QAAQ,CAAC6iB,GAAG,CAAC3jB,OAAJ,CAAY,YAAZ,EAA0B,EAA1B,CAAD,CAArB;;AACA,MAAI,CAAC7R,KAAK,CAACxC,MAAD,CAAV,EAAoB;AAClB,WAAOA,MAAP;AACD;;AACD,SAAO,IAAP;AACD;AAEM,SAASw/H,eAAT,CAAyBrrG,CAAzB,EAA4B;AACjC,SAAO3wB,IAAI,CAACwQ,KAAL,CAAWmgB,CAAC,GAAG,GAAf,CAAP;AACD;AAEM,SAASywG,eAAT,CAAyBzwG,CAAzB,EAA4B;AACjC,SAAOxf,UAAU,CAAC,CAACwf,CAAC,GAAG,GAAL,EAAUvf,OAAV,CAAkB,CAAlB,CAAD,CAAjB;AACD,C,CAED;AACA;AACA;AACA;;AACO,SAAS2+H,kBAAT,CAA4BvzI,MAA5B,EAAoC;AACzC,WAAS00I,UAAT,CAAoBh2G,CAApB,EAAuB;AACrB,WAAOl8B,KAAK,CAACk8B,CAAD,CAAL,GAAW,IAAX,GAAkBA,CAAzB;AACD;;AAED,MAAIuN,CAAC,GAAGjsC,MAAM,CAACkU,KAAP,CAAa,aAAb,CAAR;;AACA,MAAI,CAAC+3B,CAAD,IAAMA,CAAC,CAACnyC,KAAF,KAAY,CAAtB,EAAyB;AACvB,WAAO46I,UAAU,CAAC//H,UAAU,CAAC3U,MAAD,CAAX,CAAjB;AACD;;AAED,MAAIivJ,IAAI,GAAGjvJ,MAAM,CAACjD,KAAP,CAAa,CAAb,EAAgBkvC,CAAC,CAACnyC,KAAlB,CAAX;AACA,MAAIo1J,KAAK,GAAGlvJ,MAAM,CAACjD,KAAP,CAAakvC,CAAC,CAACnyC,KAAF,GAAU,CAAvB,CAAZ;AAEA,SAAO46I,UAAU,CAAC//H,UAAU,CAACs6I,IAAI,CAAC56I,OAAL,CAAa,UAAb,EAAyB,EAAzB,IAA+B,GAA/B,GAAqC66I,KAAtC,CAAX,CAAjB;AACD;AAEM,SAASwhC,cAAT,CAAwB14J,GAAxB,EAA6B;AAClC,SAAO7iB,QAAQ,CACb,MACE6iB,GAAG,CACA5iB,KADH,CACS,GADT,EAEGtd,GAFH,CAEO2K,CAAC,IAAI;AACR,WAAO,CAAC,QAAQA,CAAC,CAAC4R,OAAF,CAAU,SAAV,EAAqB,EAArB,CAAT,EAAmCtX,KAAnC,CAAyC,CAAC,CAA1C,CAAP;AACD,GAJH,EAKG+Y,IALH,CAKQ,EALR,CAFW,CAAf;AASD,C;;;;;;;;;;;AC/XD,2C;;;;;;;;;;;ACAA,mC;;;;;;;;;;;ACAA,+B;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,wC;;;;;;;;;;;ACAA,iC;;;;;;;;;;;ACAA,mC;;;;;;;;;;;ACAA,2C;;;;;;;;;;;ACAA,iC;;;;;;;;;;;ACAA,iC","file":"bundle.api.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded chunks\n \t// \"0\" means \"already loaded\"\n \tvar installedChunks = {\n \t\t\"main\": 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// uncaught error handler for webpack runtime\n \t__webpack_require__.oe = function(err) {\n \t\tprocess.nextTick(function() {\n \t\t\tthrow err; // catch this error by using import().catch()\n \t\t});\n \t};\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./packages/loot-core/src/server/main.js\");\n","import {\n ArgumentError,\n getDifferenceBetweenWeekdays,\n DateAdapterBase as DateAdapterBase$1,\n dateInputToDateTime,\n dateInputToDateAdapter,\n normalizeDateTimeTimezone as normalizeDateTimeTimezone$1,\n InfiniteLoopError,\n dateTimeSortComparer,\n cloneRuleOptions,\n normalizeRuleOptions,\n RecurrenceRulesIterator,\n recurrenceRulesReducer,\n DateTime as DateTime$1,\n} from '@rschedule/core';\n\nclass OccurrenceGenerator {\n constructor(args = {}) {\n this.timezone = args.timezone !== undefined ? args.timezone : null;\n this.maxDuration = args.maxDuration || 0;\n }\n /** Returns the first occurrence or, if there are no occurrences, null. */\n get firstDate() {\n if (this._firstDate !== undefined) return this._firstDate;\n const start = this._run().next().value;\n this._firstDate = start ? this.dateAdapter.fromDateTime(start) : null;\n return this._firstDate;\n }\n /** If generator is infinite, returns `null`. Otherwise returns the end date */\n get lastDate() {\n if (this._lastDate !== undefined) return this._lastDate;\n if (this.isInfinite) {\n this._lastDate = null;\n return null;\n }\n const end = this._run({ reverse: true }).next().value;\n this._lastDate = end ? this.dateAdapter.fromDateTime(end) : null;\n return this._lastDate;\n }\n pipe(...operators) {\n return operators.reduce((prev, curr) => curr({ base: prev, timezone: this.timezone }), this);\n }\n /**\n * Processes the object's rules/dates and returns an iterable for the occurrences.\n *\n * Options object:\n * - `start` the date to begin iteration on\n * - `end` the date to end iteration on\n * - `take` the max number of dates to take before ending iteration\n * - `reverse` whether to iterate in reverse or not\n *\n * Examples:\n *\n * ```\n * const iterator = schedule.occurrences({ start: new Date(), take: 5 });\n \n * for (const date of iterator) {\n * // do stuff\n * }\n \n * iterator.toArray() // returns Date array\n * iterator.next().value // returns next Date\n * ```\n *\n */\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n /**\n * Iterates over the object's occurrences and bundles them into collections\n * with a specified granularity (default is `\"YEARLY\"`). Make sure to\n * read about each option & combination of options below.\n *\n * Options object:\n * - start?: DateAdapter\n * - end?: DateAdapter\n * - take?: number\n * - reverse?: NOT SUPPORTED\n * - granularity?: CollectionsGranularity\n * - weekStart?: DateAdapter.Weekday\n * - skipEmptyPeriods?: boolean\n *\n * Returned `Collection` object:\n *\n * - `dates` property containing an array of DateAdapter objects.\n * - `granularity` property containing the granularity.\n * - `CollectionsGranularity` === `RuleOptions.Frequency`.\n * - default is `\"YEARLY\"`\n * - `periodStart` property containing a DateAdapter equal to the period's\n * start time.\n * - `periodEnd` property containing a DateAdapter equal to the period's\n * end time.\n *\n * #### Details:\n *\n * `collections()` always returns full periods. This means that the `start` argument is\n * transformed to be the start of whatever period the `start` argument is in, and the\n * `end` argument is transformed to be the end of whatever period the `end` argument is\n * in.\n *\n * - Example: with granularity `\"YEARLY\"`, the `start` argument will be transformed to be the\n * start of the year passed in the `start` argument, and the `end` argument will be transformed\n * to be the end of the year passed in the `end` argument.\n *\n * By default, the `periodStart` value of `Collection` objects produced by this method increments linearly.\n * This means the returned `Collection#dates` property may have length 0. This can be changed by\n * passing the `skipEmptyPeriods: true` option, in which case the `periodStart` from one collection to the\n * next can \"jump\".\n *\n * - Example 1: if your object's first occurrence is 2019/2/1 (February 1st) and you call\n * `collection({skipEmptyPeriods: true, granularity: 'DAILY', start: new Date(2019,0,1)})`\n * (so starting on January 1st), the first Collection produced will have a `periodStart` in February.\n *\n * - Example 2: if your object's first occurrence is 2019/2/1 (February 1st) and you call\n * `collection({granularity: 'DAILY', start: new Date(2019,0,1)})`\n * (so starting on January 1st), the first collection produced will have a `Collection#periodStart`\n * of January 1st and have `Collection#dates === []`. Similarly, the next 30 collections produced\n * (Jan 2nd - 31st) will all contain an empty array for the `dates` property. Then the February 1st\n * `Collection` will contain dates.\n *\n * When giving a `take` argument to `collections()`, you are specifying\n * the number of `Collection` objects to return (rather than occurrences).\n *\n * When choosing a granularity of `\"WEEKLY\"`, the `weekStart` option is required.\n *\n * When choosing a granularity of `\"MONTHLY\"`:\n *\n * - If the `weekStart` option *is not* present, will generate collections with\n * the `periodStart` and `periodEnd` at the beginning and end of each month.\n *\n * - If the `weekStart` option *is* present, will generate collections with the\n * `periodStart` equal to the start of the first week of the month, and the\n * `periodEnd` equal to the end of the last week of the month. This behavior could be\n * desired when rendering opportunities in a calendar view, where the calendar renders\n * full weeks (which may result in the calendar displaying dates in the\n * previous or next months).\n *\n */\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n /**\n * Returns true if an occurrence starts on or between the provided start/end\n * datetimes. If the `excludeEnds` option is provided, then occurrences\n * equal to the start/end times are ignored.\n *\n * If the occurrence generator has a duration, and `excludeEnds !== true`,\n * and a `maxDuration` argument is supplied (either in the constructor or\n * here), then any occurrence that's time overlaps with the start/end times\n * return true.\n */\n occursBetween(startInput, endInput, options = {}) {\n const start = this.normalizeDateInput(startInput);\n const end = this.normalizeDateInput(endInput);\n if (this.hasDuration && !options.excludeEnds) {\n const maxDuration = this.getMaxDuration('occursBetween', options);\n const iterator = this._run({\n start: start.subtract(maxDuration, 'millisecond'),\n end,\n reverse: true,\n });\n for (const day of iterator) {\n if (day.end.isBefore(start)) continue;\n return true;\n }\n return false;\n }\n for (const day of this._run({ start, end })) {\n if (options.excludeEnds) {\n if (day.isEqual(start)) {\n continue;\n }\n if (day.isEqual(end)) {\n break;\n }\n }\n return true;\n }\n return false;\n }\n occursOn(rawArgs) {\n const args = this.normalizeOccursOnArgs(rawArgs);\n if (args.weekday) {\n if (this.isInfinite && !args.before) {\n throw new ArgumentError(\n 'When calling `occursOn()` with a `weekday` argument ' +\n 'and an occurrence object that has infinite occurrences, ' +\n 'you must include a `before` argument as well.',\n );\n }\n const start = args.after && (args.excludeEnds ? args.after.add(1, 'day') : args.after);\n const end = args.before && (args.excludeEnds ? args.before.subtract(1, 'day') : args.before);\n const iterator = this._run({ start, end });\n let date = iterator.next().value;\n if (!date) return false;\n while (date) {\n if (date.get('weekday') === args.weekday) {\n return true;\n }\n date = iterator.next({\n skipToDate: date\n .add(getDifferenceBetweenWeekdays(date.get('weekday'), args.weekday), 'day')\n .granularity('day'),\n }).value;\n }\n return false;\n }\n if (!args.date) {\n throw new ArgumentError(\n `\"occursOn()\" must be called with either a \"date\" or \"weekday\" argument`,\n );\n }\n if (this.hasDuration) {\n const maxDuration = this.getMaxDuration('occursOn', args);\n const iterator = this._run({\n start: args.date.subtract(maxDuration, 'millisecond'),\n end: args.date,\n });\n for (const date of iterator) {\n if (date.end.isBefore(args.date)) continue;\n if (date.isAfter(args.date)) return false;\n return true;\n }\n return false;\n }\n for (const day of this._run({ start: args.date, end: args.date })) {\n return !!day;\n }\n return false;\n }\n /**\n * Returns true if an occurrence starts after the provided datetime.\n * If the `excludeStart` option is provided, then occurrences\n * equal to the provided datetime are ignored.\n *\n * If the occurrence generator has a duration, and `excludeStart !== true`,\n * and a `maxDuration` argument is supplied (either in the constructor or\n * here), then any occurrence that's end time is after/equal to the provided\n * datetime return true.\n */\n occursAfter(date, options = {}) {\n const adapter = this.normalizeDateInput(date);\n if (this.hasDuration && !options.excludeStart) {\n const maxDuration = this.getMaxDuration('occursAfter', options);\n const iterator = this._run({\n start: adapter.subtract(maxDuration, 'millisecond'),\n });\n for (const date of iterator) {\n if (date.end.isBefore(adapter)) continue;\n return true;\n }\n return false;\n }\n for (const day of this._run({ start: adapter })) {\n if (options.excludeStart && day.isEqual(adapter)) {\n continue;\n }\n return true;\n }\n return false;\n }\n /**\n * Returns true if an occurrence starts before the provided datetime.\n * If the `excludeStart` option is provided, then occurrences\n * equal to the provided datetime are ignored.\n *\n * If the occurrence generator has a duration, and `excludeStart` is\n * also provided, then this will only return true if an occurrence\n * both starts and ends before the provided datetime.\n */\n occursBefore(date, options = {}) {\n const adapter = this.normalizeDateInput(date);\n if (this.hasDuration && options.excludeStart) {\n for (const day of this._run({ end: adapter, reverse: true })) {\n if (day.end.isAfterOrEqual(adapter)) continue;\n return true;\n }\n return false;\n }\n for (const day of this._run({ end: adapter, reverse: true })) {\n if (options.excludeStart && day.isEqual(adapter)) {\n continue;\n }\n return true;\n }\n return false;\n }\n get dateAdapter() {\n return DateAdapterBase$1.adapter;\n }\n normalizeOccurrencesArgs(rawArgs) {\n return Object.assign(Object.assign({}, rawArgs), {\n start: this.normalizeDateInput(rawArgs.start),\n end: this.normalizeDateInput(rawArgs.end),\n });\n }\n normalizeCollectionsArgs(rawArgs) {\n if (rawArgs.reverse !== undefined) {\n throw new ArgumentError(\n '`collections()` does not support the `reverse` option at this time.',\n );\n }\n return Object.assign(Object.assign({}, rawArgs), {\n start: this.normalizeDateInput(rawArgs.start),\n end: this.normalizeDateInput(rawArgs.end),\n });\n }\n normalizeOccursOnArgs(rawArgs = {}) {\n return Object.assign(Object.assign({}, rawArgs), {\n date: this.normalizeDateInput(rawArgs.date),\n after: this.normalizeDateInput(rawArgs.after),\n before: this.normalizeDateInput(rawArgs.before),\n excludeDates:\n rawArgs.excludeDates && rawArgs.excludeDates.map(date => this.normalizeDateInput(date)),\n });\n }\n normalizeRunArgs(args) {\n return Object.assign(Object.assign({}, args), {\n start: this.normalizeDateInput(args.start),\n end: this.normalizeDateInput(args.end),\n });\n }\n normalizeDateInput(date) {\n return date ? dateInputToDateTime(date, this.timezone) : undefined;\n }\n normalizeDateInputToAdapter(date) {\n if (!date) return;\n return dateInputToDateAdapter(date);\n }\n normalizeRunOutput(date) {\n return normalizeDateTimeTimezone$1(date, this.timezone);\n }\n getMaxDuration(method, options) {\n const maxDuration = options.maxDuration || this.maxDuration;\n if (!Number.isInteger(maxDuration)) {\n throw new ArgumentError(\n `When an occurrence generator ` +\n `has a duration, a 'maxDuration' argument must be supplied ` +\n `to ${method}().`,\n );\n }\n return maxDuration;\n }\n}\nclass OccurrenceIterator {\n constructor(iterable, args) {\n this.iterable = iterable;\n this.args = args;\n // Need to assert the return type of these methods to prevent typescript from\n // incorrectly reducing them to `DateAdapterBase & { generators: G }`.\n this[Symbol.iterator] = () => this.occurrenceIterator();\n this.iterator = iterable._run(args);\n this.isInfinite = iterable.isInfinite;\n }\n next(args) {\n return this.occurrenceIterator(args).next();\n }\n toArray() {\n if (this.args.end || this.args.take || !this.isInfinite) {\n return Array.from(this.occurrenceIterator());\n }\n throw new InfiniteLoopError(\n 'OccurrenceIterator#toArray() can only be called if the iterator ' +\n 'is not infinite, or you provide and `end` argument, or you provide ' +\n 'a `take` argument.',\n );\n }\n *occurrenceIterator(rawArgs) {\n let args = this.normalizeRunArgs(rawArgs);\n let date = this.iterator.next(args).value;\n while (date) {\n const yieldArgs = yield this.normalizeDateOutput(date);\n args = this.normalizeRunArgs(yieldArgs);\n date = this.iterator.next(args).value;\n }\n return undefined;\n }\n normalizeRunArgs(args) {\n return {\n skipToDate: this.normalizeDateInput(args && args.skipToDate),\n };\n }\n normalizeDateInput(date) {\n return date ? dateInputToDateTime(date, this.iterable.timezone) : undefined;\n }\n normalizeDateOutput(date) {\n if (!date) return;\n return date ? DateAdapterBase$1.adapter.fromDateTime(date) : undefined;\n }\n}\nclass Collection {\n constructor(dates = [], granularity, periodStart, periodEnd) {\n this.dates = dates;\n this.granularity = granularity;\n this.periodStart = periodStart;\n this.periodEnd = periodEnd;\n }\n}\nclass CollectionIterator {\n constructor(iterable, args) {\n this.iterable = iterable;\n this.args = args;\n this.granularity = 'year';\n this[Symbol.iterator] = () => this.iterator;\n if (args.granularity) {\n this.granularity = args.granularity;\n if (this.granularity === 'week' && !args.weekStart) {\n throw new Error('\"week\" granularity requires `weekStart` arg');\n }\n }\n if (args.weekStart) {\n this.weekStart = args.weekStart;\n }\n if (args.reverse) {\n throw new Error(\n '`OccurrenceGenerator#collections()` does not support iterating in reverse. ' +\n 'Though `OccurrenceGenerator#occurrences()` does support iterating in reverse.',\n );\n }\n // Set the end arg, if present, to the end of the period.\n this.args = Object.assign(Object.assign({}, args), {\n start: args.start || iterable._run().next().value,\n end: args.end && this.getPeriod(args.end).end,\n });\n this.startDate =\n (this.args.start && this.normalizeDateOutput(this.getPeriod(this.args.start).start)) || null;\n this.iterator = this.collectionIterator();\n }\n next() {\n return this.iterator.next();\n }\n /**\n * While `next()` and `[Symbol.iterator]` both share state,\n * `toArray()` does not share state and always returns the whole\n * collections array.\n */\n toArray() {\n if (this.args.end || this.args.take || !this.iterable.isInfinite) {\n const collections = [];\n for (const collection of this.collectionIterator()) {\n collections.push(collection);\n }\n return collections;\n }\n throw new InfiniteLoopError(\n 'CollectionIterator#toArray() can only be called if the iterator ' +\n 'is not infinite, or you provide and `end` argument, or you provide ' +\n 'a `take` argument.',\n );\n }\n normalizeDateOutput(date) {\n if (!date) return;\n return DateAdapterBase$1.adapter.fromDateTime(date);\n }\n *collectionIterator() {\n if (!this.startDate) return;\n let iterator = this.occurrenceIterator();\n let date = iterator.next().value;\n if (!date) return;\n // `period` === `periodStart` unless the granularity\n // is `MONTHLY` and a `weekStart` param was provided. In this case,\n // period holds a date === the first of the current month while\n // periodStart holds a date === the beginning of the first week of the month\n // (which might be in the the previous month). Read the\n // `OccurrenceGenerator#collections()` description for more info.\n let period = this.getPeriod(this.args.start);\n let dates = [];\n let index = 0;\n while (date && (this.args.take === undefined || this.args.take > index)) {\n while (date && date.isBeforeOrEqual(period.end)) {\n dates.push(date);\n date = iterator.next().value;\n }\n yield new Collection(\n dates.map(date => this.normalizeDateOutput(date)),\n this.granularity,\n this.normalizeDateOutput(period.start),\n this.normalizeDateOutput(period.end),\n );\n if (!date) return;\n dates = [];\n period = !this.args.skipEmptyPeriods\n ? this.getPeriod(this.incrementPeriod(period.period))\n : this.getPeriod(date);\n // With these args, periods may overlap and the same date may show up\n // in two periods. Because of this, we need to reset the iterator\n // (otherwise it won't return a date it has already returned).\n if (this.granularity === 'month' && this.weekStart) {\n iterator = this.iterable._run({\n start: period.start,\n end: this.args.end,\n });\n date = iterator.next().value;\n }\n index++;\n }\n }\n getPeriod(date) {\n let start;\n let end;\n let period;\n if (this.granularity === 'month' && this.weekStart) {\n start = date.granularity('month').granularity('week', { weekStart: this.weekStart });\n end = date.endGranularity('month').endGranularity('week', { weekStart: this.weekStart });\n period = date.granularity('month');\n } else {\n start = date.granularity(this.granularity, { weekStart: this.weekStart });\n end = date.endGranularity(this.granularity, { weekStart: this.weekStart });\n period = start;\n }\n return { start, end, period };\n }\n incrementPeriod(date) {\n return date.add(1, this.granularity);\n }\n occurrenceIterator() {\n let start = this.args.start || this.iterable._run().next().value;\n if (!start) return this.iterable._run(this.args);\n start = this.getPeriod(start).start;\n return this.iterable._run({\n start,\n end: this.args.end,\n });\n }\n}\nclass Operator extends OccurrenceGenerator {\n constructor(streams, config) {\n super(config);\n this.streams = streams;\n this.config = config;\n this.timezone = config.timezone;\n this.streams = streams.map(stream =>\n stream instanceof Operator ? stream : stream.set('timezone', this.timezone),\n );\n this.isInfinite = this.calculateIsInfinite();\n this.hasDuration = this.calculateHasDuration();\n }\n normalizeDateInput(date) {\n if (!date) return;\n return dateInputToDateTime(date, this.timezone);\n }\n normalizeRunOutput(date) {\n return normalizeDateTimeTimezone$1(date, this.timezone);\n }\n}\n\n/**\n * Simple class that lets us access the `value`, `runArgs`, and `done`\n * status of an OccurrenceGenerator iterator\n */\nclass IterableWrapper {\n constructor(generator, runArgs) {\n this.runArgs = runArgs;\n this.stream = generator._run(this.runArgs);\n this.next();\n }\n next(args) {\n const { done, value } = this.stream.next(args);\n this.done = typeof done === 'boolean' ? done : true;\n this.value = value;\n return { done, value };\n }\n}\nfunction processYieldArgs(streams, options = {}, yieldArgs = {}) {\n if (!yieldArgs.skipToDate || streams.length === 0) return;\n // check for invalid `skipToDate` option\n if (\n options.reverse\n ? streams.every(s => s.value.isBeforeOrEqual(yieldArgs.skipToDate))\n : streams.every(s => s.value.isAfterOrEqual(yieldArgs.skipToDate))\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n for (const stream of streams) {\n if (stream.done) continue; // no point in calling `next()`\n if (\n options.reverse\n ? stream.value.isBeforeOrEqual(yieldArgs.skipToDate)\n : stream.value.isAfterOrEqual(yieldArgs.skipToDate)\n ) {\n // This can happen there are two streams and one stream starts after the other finishes.\n // Or, when iterating in reverse, when one stream ends before the other starts.\n // In this case we don't want to call `next()` because it will throw an error.\n // In both of these cases, calling `next()` won't do anything anyway.\n continue;\n }\n stream.next(yieldArgs);\n }\n}\n/** sorts ascending with completed iterables at the end */\nfunction streamsComparer(a, b) {\n if (a.done && b.done) return 0;\n if (a.done) return 1;\n if (b.done) return -1;\n if (a.value.isAfter(b.value)) return 1;\n return -1;\n}\n/** sorts descending with completed iterables at the start */\nfunction streamsReverseComparer(a, b) {\n if (a.done && b.done) return 0;\n if (a.done) return -1;\n if (b.done) return 1;\n if (a.value.isAfter(b.value)) return -1;\n return 1;\n}\nfunction selectNextIterable(streams, options = {}, yieldArgs = {}) {\n processYieldArgs(streams, options, yieldArgs);\n return streams\n .sort(options.reverse ? streamsReverseComparer : streamsComparer)\n .filter(s => !s.done)\n .shift();\n}\nfunction selectLastIterable(streams, options = {}, yieldArgs = {}) {\n processYieldArgs(streams, options, yieldArgs);\n return streams\n .sort(options.reverse ? streamsReverseComparer : streamsComparer)\n .filter(s => !s.done)\n .pop();\n}\n\n/**\n * An operator function which accepts a spread of occurrence generators\n * and adds their occurrences to the output.\n *\n * @param streams a spread of occurrence generators\n */\nfunction add(...streams) {\n return options => new AddOperator(streams, options);\n}\nclass AddOperator extends Operator {\n set(_, value) {\n return new AddOperator(\n this.streams.map(stream => stream.set('timezone', value)),\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n const wrappedStreams = this.streams.map(input => new IterableWrapper(input, args));\n if (this.config.base) {\n wrappedStreams.push(new IterableWrapper(this.config.base, args));\n }\n if (wrappedStreams.length === 0) return;\n let stream = selectNextIterable(wrappedStreams, args);\n while (stream && !stream.done) {\n // yield the current stream's value\n const yieldArgs = yield this.normalizeRunOutput(stream.value);\n if (!(yieldArgs && yieldArgs.skipToDate)) {\n // iterate the current stream\n stream.next();\n }\n // select the next stream\n stream = selectNextIterable(wrappedStreams, args, yieldArgs);\n }\n }\n calculateIsInfinite() {\n return (\n (this.config.base && this.config.base.isInfinite) ||\n this.streams.some(stream => stream.isInfinite)\n );\n }\n calculateHasDuration() {\n const streamsDuration = this.streams.every(stream => stream.hasDuration);\n if (!this.config.base) return streamsDuration;\n return this.config.base.hasDuration && streamsDuration;\n }\n}\n\nclass Calendar extends OccurrenceGenerator {\n /**\n *\n * Create a new Calendar object with the specified options.\n *\n * ### Options\n *\n * - **timezone**: The timezone that yielded occurrences should be *displayed* in.\n * Note, this one affects the *displayed* timezone of yielded occurrences.\n * For rules, occurrences are first found using the unmodified rule\n * config (including whatever timezone the `start` datetime is defined\n * in), and then converted to the timezone specified here before being\n * yielded. By default, the timezone is *local* time (`null`). So if you don't\n * want your rules to be displayed in local time, you must supply a\n * timezone argument.\n * - **data**: arbitrary data you can associate with this Calendar. This\n * is the only mutable property of `Calendar` objects.\n * - **maxDuration**: currently unused.\n * - **schedules**: either an occurrence generator, or an array of occurrence generators, which should\n * be used to build up this Calendar's occurrences. The Calendar will display the union of occurrences\n * its schedules produce.\n *\n */\n constructor(args = {}) {\n super(args);\n this.schedules = [];\n this.data = args.data;\n if (args.schedules) {\n this.schedules = Array.isArray(args.schedules) ? args.schedules : [args.schedules];\n this.schedules = this.schedules.map(schedule => schedule.set('timezone', this.timezone));\n }\n this.isInfinite = this.schedules.some(schedule => schedule.isInfinite);\n this.hasDuration = this.schedules.every(schedule => schedule.hasDuration);\n }\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n set(prop, value, options) {\n if (prop === 'timezone') {\n return new Calendar({\n schedules: this.schedules.map(schedule => schedule.set(prop, value, options)),\n data: this.data,\n timezone: value,\n maxDuration: this.maxDuration,\n });\n } else if (prop === 'schedules') {\n return new Calendar({\n schedules: Array.isArray(value) ? value : [value],\n data: this.data,\n timezone: this.timezone,\n maxDuration: this.maxDuration,\n });\n }\n throw new ArgumentError('Unknown value for `prop`: ' + `\"${prop}\"`);\n }\n *_run(args = {}) {\n if (this.schedules.length === 0) return;\n const count = args.take;\n delete args.take;\n let iterator;\n if (this.schedules.length === 1) {\n iterator = this.schedules[0]._run(args);\n } else {\n iterator = new AddOperator(this.schedules, {\n timezone: this.timezone,\n })._run(args);\n }\n let date = iterator.next().value;\n let index = 0;\n while (date && (count === undefined || count > index)) {\n date = date.add(this, 'generator');\n const yieldArgs = yield this.normalizeRunOutput(date);\n date = iterator.next(yieldArgs).value;\n index++;\n }\n return undefined;\n }\n}\n\nclass Dates extends OccurrenceGenerator {\n constructor(args = {}) {\n super(args);\n this.adapters = [];\n this.isInfinite = false;\n this.maxDuration = 0;\n this.datetimes = [];\n this.data = args.data;\n if (args.dates) {\n this.adapters = args.dates.map(date => {\n let adapter = this.normalizeDateInputToAdapter(date);\n if (args.duration && !adapter.duration) {\n adapter = adapter.set('duration', args.duration);\n }\n return adapter.set('timezone', this.timezone);\n });\n this.datetimes = this.adapters.map(adapter => adapter.toDateTime());\n }\n this.hasDuration = this.datetimes.every(date => !!date.duration);\n if (this.hasDuration) {\n this.maxDuration = this.adapters.reduce(\n (prev, curr) => (curr.duration > prev ? curr.duration : prev),\n 0,\n );\n }\n }\n get length() {\n return this.adapters.length;\n }\n /** Returns the first occurrence or, if there are no occurrences, null. */\n get firstDate() {\n return this.adapters[0] || null;\n }\n /** Returns the last occurrence or, if there are no occurrences, null. */\n get lastDate() {\n return this.adapters[this.length - 1] || null;\n }\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n add(value) {\n return new Dates({\n dates: [...this.adapters, value],\n timezone: this.timezone,\n data: this.data,\n });\n }\n remove(value) {\n const dates = this.adapters.slice();\n const input = this.normalizeDateInputToAdapter(value);\n const index = dates.findIndex(date => date.valueOf() === input.valueOf());\n if (index >= 0) {\n dates.splice(index, 1);\n }\n return new Dates({\n dates,\n timezone: this.timezone,\n data: this.data,\n });\n }\n set(prop, value, options = {}) {\n let timezone = this.timezone;\n let dates = this.adapters.slice();\n if (prop === 'timezone') {\n if (value === this.timezone) return this;\n else if (options.keepLocalTime) {\n dates = this.adapters.map(adapter => {\n const json = adapter.toJSON();\n json.timezone = value;\n return this.dateAdapter.fromJSON(json);\n });\n }\n timezone = value;\n } else if (prop === 'dates') {\n dates = value;\n } else if (prop === 'duration') {\n dates = dates.map(date => date.set('duration', value || 0));\n } else {\n throw new ArgumentError(\n `Unexpected prop argument \"${prop}\". Accepted values are \"timezone\" or \"dates\"`,\n );\n }\n return new Dates({\n dates,\n data: this.data,\n timezone,\n });\n }\n filter(fn) {\n return new Dates({\n dates: this.adapters.filter(fn),\n data: this.data,\n timezone: this.timezone,\n });\n }\n *_run(args = {}) {\n let dates = this.datetimes.sort(dateTimeSortComparer);\n if (args.start) {\n dates = dates.filter(date => date.isAfterOrEqual(args.start));\n }\n if (args.end) {\n dates = dates.filter(date => date.isBeforeOrEqual(args.end));\n }\n if (args.reverse) {\n dates = dates.slice().reverse();\n }\n if (args.take) {\n dates = dates.slice(0, args.take);\n }\n const dateCache = dates.slice();\n let date = dateCache.shift();\n let yieldArgs;\n while (date) {\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n (args.reverse ? yieldArgs.skipToDate.isBefore(date) : yieldArgs.skipToDate.isAfter(date))\n ) {\n date = dateCache.shift();\n continue;\n }\n date = date.add(this, 'generator');\n yieldArgs = yield this.normalizeRunOutput(date);\n // Here, we are matching the behavior of the RecurrenceRulesIterator\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n (args.reverse\n ? yieldArgs.skipToDate.isAfterOrEqual(date)\n : yieldArgs.skipToDate.isBeforeOrEqual(date))\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n date = dateCache.shift();\n }\n return undefined;\n }\n}\n\nclass InvalidDateAdapterError extends Error {}\nlet dateAdapterConfig;\nclass DateAdapterBase {\n constructor(_date, options) {\n this.duration = (options && options.duration) || 0;\n this.generators = (options && options.generators && options.generators.slice()) || [];\n if (!Number.isInteger(this.duration) || this.duration < 0) {\n throw new InvalidDateAdapterError('duration must be a non-negative integer');\n }\n }\n static set adapter(value) {\n if (dateAdapterConfig) {\n throw new Error(`\"${dateAdapterConfig.name}\" has already been configured.`);\n }\n dateAdapterConfig = value;\n }\n static get adapter() {\n if (!dateAdapterConfig) {\n throw new Error('No date adapter has been configured. See rSchedule docs.');\n }\n return dateAdapterConfig;\n }\n static isDate(_object) {\n throw unimplementedError('isDate()');\n }\n static fromDate(_date, _options) {\n throw unimplementedError('fromDate()');\n }\n static fromJSON(_json) {\n throw unimplementedError('fromJSON()');\n }\n static fromDateTime(_datetime) {\n throw unimplementedError('fromDateTime()');\n }\n /**\n * Returns a string in simplified extended ISO format (ISO 8601).\n *\n * _Note: this method is intended for testing and its\n * implementation isn't particularly performant._\n */\n toISOString() {\n return this.set('timezone', 'UTC')\n .toDateTime()\n .toISOString();\n }\n toDateTime() {\n const date = DateTime.fromJSON(\n Object.assign(Object.assign({}, this.toJSON()), { generators: this.generators }),\n );\n return date;\n }\n}\nDateAdapterBase.hasTimezoneSupport = false;\nfunction unimplementedError(name) {\n return new Error(`You must implement the \"${name}\" method for this DateAdapter class`);\n}\nvar DateAdapter;\n(function(DateAdapter) {\n DateAdapter.WEEKDAYS = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\n DateAdapter.MILLISECONDS_IN_SECOND = 1000;\n DateAdapter.MILLISECONDS_IN_MINUTE = DateAdapter.MILLISECONDS_IN_SECOND * 60;\n DateAdapter.MILLISECONDS_IN_HOUR = DateAdapter.MILLISECONDS_IN_MINUTE * 60;\n DateAdapter.MILLISECONDS_IN_DAY = DateAdapter.MILLISECONDS_IN_HOUR * 24;\n DateAdapter.MILLISECONDS_IN_WEEK = DateAdapter.MILLISECONDS_IN_DAY * 7;\n})(DateAdapter || (DateAdapter = {}));\nclass InvalidDateTimeError extends Error {}\nclass DateTime {\n constructor(date, timezone, duration, generators) {\n this.date = new Date(date);\n this.timezone = timezone || null;\n this.duration = duration || 0;\n this.generators = (generators && generators.slice()) || [];\n if (!Number.isInteger(this.duration) || this.duration < 0) {\n throw new InvalidDateTimeError('duration must be a non-negative integer');\n }\n this.assertIsValid();\n }\n // /**\n // * Similar to `Array.isArray()`, `isInstance()` provides a surefire method\n // * of determining if an object is a `DateTime` by checking against the\n // * global symbol registry.\n // */\n // static isInstance(object: any): object is DateTime {\n // return !!(object && object[DATETIME_ID]);\n // }\n static fromJSON(json) {\n const date = new Date(\n Date.UTC(\n json.year,\n json.month - 1,\n json.day,\n json.hour,\n json.minute,\n json.second,\n json.millisecond,\n ),\n );\n return new DateTime(date, json.timezone, json.duration, json.generators);\n }\n static fromDateAdapter(adapter) {\n return DateTime.fromJSON(\n Object.assign(Object.assign({}, adapter.toJSON()), { generators: adapter.generators }),\n );\n }\n /**\n * Returns `undefined` if `duration` is `0`. Else returns\n * the `end` date.\n */\n get end() {\n if (!this.duration) return;\n if (this._end) return this._end;\n this._end = this.add(this.duration, 'millisecond');\n return this._end;\n }\n // While we constrain the argument to be another DateAdapter in typescript\n // we handle the case of someone passing in another type of object in javascript\n isEqual(object) {\n if (!object) {\n return false;\n }\n assertSameTimeZone(this, object);\n return this.valueOf() === object.valueOf();\n }\n isBefore(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() < object.valueOf();\n }\n isBeforeOrEqual(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() <= object.valueOf();\n }\n isAfter(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() > object.valueOf();\n }\n isAfterOrEqual(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() >= object.valueOf();\n }\n isOccurring(object) {\n if (!this.duration) {\n throw new Error('DateTime#isOccurring() is only applicable to DateTimes with durations');\n }\n assertSameTimeZone(this, object);\n return (\n object.isAfterOrEqual(this) && object.isBeforeOrEqual(this.add(this.duration, 'millisecond'))\n );\n }\n add(amount, unit) {\n switch (unit) {\n case 'generator': {\n const generators = this.generators.slice();\n generators.unshift(amount);\n return new DateTime(this.date, this.timezone, this.duration, generators);\n }\n case 'year':\n return this.forkDateTime(addUTCYears(this.date, amount));\n case 'month':\n return this.forkDateTime(addUTCMonths(this.date, amount));\n case 'week':\n return this.forkDateTime(addUTCWeeks(this.date, amount));\n case 'day':\n return this.forkDateTime(addUTCDays(this.date, amount));\n case 'hour':\n return this.forkDateTime(addUTCHours(this.date, amount));\n case 'minute':\n return this.forkDateTime(addUTCMinutes(this.date, amount));\n case 'second':\n return this.forkDateTime(addUTCSeconds(this.date, amount));\n case 'millisecond':\n return this.forkDateTime(addUTCMilliseconds(this.date, amount));\n default:\n throw new Error('Invalid unit provided to `DateTime#add`');\n }\n }\n subtract(amount, unit) {\n switch (unit) {\n case 'year':\n return this.forkDateTime(subUTCYears(this.date, amount));\n case 'month':\n return this.forkDateTime(subUTCMonths(this.date, amount));\n case 'week':\n return this.forkDateTime(subUTCWeeks(this.date, amount));\n case 'day':\n return this.forkDateTime(subUTCDays(this.date, amount));\n case 'hour':\n return this.forkDateTime(subUTCHours(this.date, amount));\n case 'minute':\n return this.forkDateTime(subUTCMinutes(this.date, amount));\n case 'second':\n return this.forkDateTime(subUTCSeconds(this.date, amount));\n case 'millisecond':\n return this.forkDateTime(subUTCMilliseconds(this.date, amount));\n default:\n throw new Error('Invalid unit provided to `DateTime#subtract`');\n }\n }\n get(unit) {\n switch (unit) {\n case 'year':\n return this.date.getUTCFullYear();\n case 'month':\n return this.date.getUTCMonth() + 1;\n case 'yearday':\n return getUTCYearDay(this.date);\n case 'weekday':\n return DateAdapter.WEEKDAYS[this.date.getUTCDay()];\n case 'day':\n return this.date.getUTCDate();\n case 'hour':\n return this.date.getUTCHours();\n case 'minute':\n return this.date.getUTCMinutes();\n case 'second':\n return this.date.getUTCSeconds();\n case 'millisecond':\n return this.date.getUTCMilliseconds();\n default:\n throw new Error('Invalid unit provided to `DateTime#set`');\n }\n }\n set(unit, value) {\n if (unit === 'duration') {\n return new DateTime(this.date, this.timezone, value, this.generators);\n }\n if (unit === 'generators') {\n return new DateTime(this.date, this.timezone, this.duration, value);\n }\n let date = new Date(this.date);\n switch (unit) {\n case 'year':\n date.setUTCFullYear(value);\n break;\n case 'month': {\n // If the current day of the month\n // is greater than days in the month we are moving to, we need to also\n // set the day to the end of that month.\n const length = monthLength(value, date.getUTCFullYear());\n const day = date.getUTCDate();\n if (day > length) {\n date.setUTCDate(1);\n date.setUTCMonth(value);\n date = subUTCDays(date, 1);\n } else {\n date.setUTCMonth(value - 1);\n }\n break;\n }\n case 'day':\n date.setUTCDate(value);\n break;\n case 'hour':\n date.setUTCHours(value);\n break;\n case 'minute':\n date.setUTCMinutes(value);\n break;\n case 'second':\n date.setUTCSeconds(value);\n break;\n case 'millisecond':\n date.setUTCMilliseconds(value);\n break;\n default:\n throw new Error('Invalid unit provided to `DateTime#set`');\n }\n return this.forkDateTime(date);\n }\n granularity(granularity, opt = {}) {\n let date = this.forkDateTime(this.date);\n switch (granularity) {\n case 'year':\n date = date.set('month', 1);\n case 'month':\n date = date.set('day', 1);\n break;\n case 'week':\n date = setDateToStartOfWeek(date, opt.weekStart);\n }\n switch (granularity) {\n case 'year':\n case 'month':\n case 'week':\n case 'day':\n date = date.set('hour', 0);\n case 'hour':\n date = date.set('minute', 0);\n case 'minute':\n date = date.set('second', 0);\n case 'second':\n date = date.set('millisecond', 0);\n case 'millisecond':\n return date;\n default:\n throw new Error('Invalid granularity provided to `DateTime#granularity`: ' + granularity);\n }\n }\n endGranularity(granularity, opt = {}) {\n let date = this.forkDateTime(this.date);\n switch (granularity) {\n case 'year':\n date = date.set('month', 12);\n case 'month':\n date = date.set('day', monthLength(date.get('month'), date.get('year')));\n break;\n case 'week':\n date = setDateToEndOfWeek(date, opt.weekStart);\n }\n switch (granularity) {\n case 'year':\n case 'month':\n case 'week':\n case 'day':\n date = date.set('hour', 23);\n case 'hour':\n date = date.set('minute', 59);\n case 'minute':\n date = date.set('second', 59);\n case 'second':\n date = date.set('millisecond', 999);\n case 'millisecond':\n return date;\n default:\n throw new Error('Invalid granularity provided to `DateTime#granularity`: ' + granularity);\n }\n }\n toISOString() {\n return this.date.toISOString();\n }\n toDateTime() {\n return this;\n }\n toJSON() {\n const json = {\n timezone: this.timezone,\n year: this.get('year'),\n month: this.get('month'),\n day: this.get('day'),\n hour: this.get('hour'),\n minute: this.get('minute'),\n second: this.get('second'),\n millisecond: this.get('millisecond'),\n };\n if (this.duration) {\n json.duration = this.duration;\n }\n return json;\n }\n valueOf() {\n return this.date.valueOf();\n }\n assertIsValid() {\n if (isNaN(this.valueOf())) {\n throw new InvalidDateTimeError('DateTime has invalid date.');\n }\n return true;\n }\n forkDateTime(date) {\n return new DateTime(date, this.timezone, this.duration, this.generators);\n }\n}\nfunction assertSameTimeZone(x, y) {\n if (x.timezone !== y.timezone) {\n throw new InvalidDateTimeError(\n 'Attempted to compare a datetime to another date in a different timezone: ' +\n JSON.stringify(x) +\n ' and ' +\n JSON.stringify(y),\n );\n }\n return true;\n}\nfunction setDateToStartOfWeek(date, wkst) {\n const index = orderedWeekdays(wkst).indexOf(date.get('weekday'));\n return date.subtract(index, 'day');\n}\nfunction setDateToEndOfWeek(date, wkst) {\n const index = orderedWeekdays(wkst).indexOf(date.get('weekday'));\n return date.add(6 - index, 'day');\n}\nfunction orderedWeekdays(wkst = 'SU') {\n const wkdays = DateAdapter.WEEKDAYS.slice();\n let index = wkdays.indexOf(wkst);\n while (index !== 0) {\n shiftArray(wkdays);\n index--;\n }\n return wkdays;\n}\nfunction shiftArray(array, from = 'first') {\n if (array.length === 0) {\n return array;\n } else if (from === 'first') {\n array.push(array.shift());\n } else {\n array.unshift(array.pop());\n }\n return array;\n}\n/**\n * Returns the days in the given month.\n *\n * @param month base-1\n * @param year\n */\nfunction monthLength(month, year) {\n const block = {\n 1: 31,\n 2: getDaysInFebruary(year),\n 3: 31,\n 4: 30,\n 5: 31,\n 6: 30,\n 7: 31,\n 8: 31,\n 9: 30,\n 10: 31,\n 11: 30,\n 12: 31,\n };\n return block[month];\n}\nfunction getDaysInFebruary(year) {\n return isLeapYear(year) ? 29 : 28;\n}\n// taken from date-fn\nfunction isLeapYear(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\nfunction getUTCYearDay(now) {\n const start = new Date(Date.UTC(now.getUTCFullYear(), 0, 1));\n const diff = now.valueOf() - start.valueOf();\n return 1 + Math.floor(diff / DateAdapter.MILLISECONDS_IN_DAY);\n}\n/**\n * These functions are basically lifted from `date-fns`, but changed\n * to use the UTC date methods, which `date-fns` doesn't support.\n */\nfunction toInteger(input) {\n if (input === null || input === true || input === false) {\n return NaN;\n }\n const int = Number(input);\n if (isNaN(int)) {\n return int;\n }\n return int < 0 ? Math.ceil(int) : Math.floor(int);\n}\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n const timestamp = dirtyDate.valueOf();\n const amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}\nfunction addUTCYears(date, input) {\n const amount = toInteger(input);\n return addUTCMonths(date, amount * 12);\n}\nfunction addUTCMonths(date, input) {\n const amount = toInteger(input);\n date = new Date(date);\n const desiredMonth = date.getUTCMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setUTCFullYear(date.getUTCFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setUTCHours(0, 0, 0, 0);\n const daysInMonth = monthLength(\n dateWithDesiredMonth.getUTCMonth() + 1,\n dateWithDesiredMonth.getUTCFullYear(),\n );\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setUTCMonth(desiredMonth, Math.min(daysInMonth, date.getUTCDate()));\n return date;\n}\nfunction addUTCWeeks(date, input) {\n const amount = toInteger(input);\n const days = amount * 7;\n return addUTCDays(date, days);\n}\nfunction addUTCDays(date, input) {\n // by adding milliseconds rather than days, we supress the native Date object's automatic\n // daylight savings time conversions which we don't want in UTC mode\n return addUTCMilliseconds(date, toInteger(input) * DateAdapter.MILLISECONDS_IN_DAY);\n}\nfunction addUTCHours(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_HOUR);\n}\nfunction addUTCMinutes(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_MINUTE);\n}\nfunction addUTCSeconds(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_SECOND);\n}\nfunction addUTCMilliseconds(date, input) {\n const amount = toInteger(input);\n const timestamp = date.getTime();\n return new Date(timestamp + amount);\n}\nfunction subUTCYears(date, amount) {\n return addUTCYears(date, -amount);\n}\nfunction subUTCMonths(date, amount) {\n return addUTCMonths(date, -amount);\n}\nfunction subUTCWeeks(date, amount) {\n return addUTCWeeks(date, -amount);\n}\nfunction subUTCDays(date, amount) {\n return addUTCDays(date, -amount);\n}\nfunction subUTCHours(date, amount) {\n return addUTCHours(date, -amount);\n}\nfunction subUTCMinutes(date, amount) {\n return addUTCMinutes(date, -amount);\n}\nfunction subUTCSeconds(date, amount) {\n return addUTCSeconds(date, -amount);\n}\nfunction subUTCMilliseconds(date, amount) {\n return addUTCMilliseconds(date, -amount);\n}\n\n// export function normalizeDateInput<T extends DateAdapter>(\n// dateAdapter: DateAdapterConstructor<T>,\n// input: DateInput<T>,\n// timezone: string | null,\n// ): DateTime {\n// if (input instanceof DateTime) {\n// if (input.timezone !== timezone) {\n// return dateAdapter\n// .fromDateTime(input)\n// .set('timezone', timezone)\n// .toDateTime();\n// }\n// return input;\n// }\n// return input instanceof DateAdapter\n// ? input.set('timezone', timezone).toDateTime()\n// : new dateAdapter(input).toDateTime();\n// }\nfunction normalizeDateTimeTimezone(date, timezone) {\n if (date.timezone !== timezone) {\n return DateAdapterBase.adapter\n .fromDateTime(date)\n .set('timezone', timezone)\n .toDateTime();\n }\n return date;\n}\n\nclass RuleBase extends OccurrenceGenerator {\n constructor(recurrenceRules, config, options = {}) {\n super(options);\n this.recurrenceRules = recurrenceRules;\n this.options = cloneRuleOptions(config);\n this.normOptions = normalizeRuleOptions(this.recurrenceRules, this.options);\n this.timezone =\n options.timezone !== undefined ? options.timezone : this.normOptions.start.timezone;\n this.data = options.data;\n this.hasDuration = !!config.duration;\n if (this.hasDuration) this.duration = config.duration;\n this.isInfinite = this.normOptions.end === undefined && this.normOptions.count === undefined;\n }\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n *_run(rawArgs = {}) {\n const args = this.normalizeRunArgs(rawArgs);\n const iterator = new RecurrenceRulesIterator(\n recurrenceRulesReducer(this.recurrenceRules),\n this.normOptions,\n args,\n );\n let date = iterator.next().value;\n let index = 0;\n while (date && (args.take === undefined || index < args.take)) {\n index++;\n date = date.add(this, 'generator');\n const yieldArgs = yield this.normalizeRunOutput(date);\n if (yieldArgs === null || yieldArgs === void 0 ? void 0 : yieldArgs.skipToDate) {\n // The RecurrenceRuleIterator might have a different timezone from the rule.\n // Because of this, the yieldArgs will not properly be normalized by the\n // OccurrenceIterator, so we need to do it here\n date = iterator.next(\n Object.assign(Object.assign({}, yieldArgs), {\n skipToDate: normalizeDateTimeTimezone(yieldArgs.skipToDate, iterator.start.timezone),\n }),\n ).value;\n } else {\n // theoretically, the yieldArgs are undefined here\n // maybe in the future there will be other yieldArg options though\n date = iterator.next(yieldArgs).value;\n }\n }\n return undefined;\n }\n}\n\nclass Rule extends RuleBase {\n /**\n * Create a new Rule object with the specified rule config and options.\n *\n * ### Options\n *\n * - **timezone**: the timezone that yielded occurrences should be in. Note,\n * this does not change the rule config. Occurrences are first found using\n * the unmodified rule config, and then converted to the timezone specified\n * here before being yielded.\n * - **data**: arbitrary data you can associate with this rule. This\n * is the only mutable property of `Rule` objects.\n *\n * ### Rule Config\n *\n * - #### frequency\n *\n * The frequency rule part identifies the type of recurrence rule. Valid values\n * include `\"SECONDLY\"`, `\"MINUTELY\"`, `\"HOURLY\"`, `\"DAILY\"`, `\"WEEKLY\"`,\n * `\"MONTHLY\"`, or `\"YEARLY\"`.\n *\n * - #### start\n *\n * The start of the rule (not necessarily the first occurrence).\n * Either a `DateAdapter` instance, date object, or `DateTime` object.\n * The type of date object depends on the `DateAdapter` class used for this\n * `Rule`.\n *\n * - #### end?\n *\n * The end of the rule (not necessarily the last occurrence).\n * Either a `DateAdapter` instance, date object, or `DateTime` object.\n * The type of date object depends on the `DateAdapter` class used for this\n * `Rule`.\n *\n * - #### duration?\n *\n * A length of time expressed in milliseconds.\n *\n * - #### interval?\n *\n * The interval rule part contains a positive integer representing at\n * which intervals the recurrence rule repeats. The default value is\n * `1`, meaning every second for a SECONDLY rule, every minute for a\n * MINUTELY rule, every hour for an HOURLY rule, every day for a\n * DAILY rule, every week for a WEEKLY rule, every month for a\n * MONTHLY rule, and every year for a YEARLY rule. For example,\n * within a DAILY rule, a value of `8` means every eight days.\n *\n * - #### count?\n *\n * The count rule part defines the number of occurrences at which to\n * range-bound the recurrence. `count` and `end` are both two different\n * ways of specifying how a recurrence completes.\n *\n * - #### weekStart?\n *\n * The weekStart rule part specifies the day on which the workweek starts.\n * Valid values are `\"MO\"`, `\"TU\"`, `\"WE\"`, `\"TH\"`, `\"FR\"`, `\"SA\"`, and `\"SU\"`.\n * This is significant when a WEEKLY rule has an interval greater than 1,\n * and a `byDayOfWeek` rule part is specified. The\n * default value is `\"MO\"`.\n *\n * - #### bySecondOfMinute?\n *\n * The bySecondOfMinute rule part expects an array of seconds\n * within a minute. Valid values are 0 to 60.\n *\n * - #### byMinuteOfHour?\n *\n * The byMinuteOfHour rule part expects an array of minutes within an hour.\n * Valid values are 0 to 59.\n *\n * - #### byHourOfDay?\n *\n * The byHourOfDay rule part expects an array of hours of the day.\n * Valid values are 0 to 23.\n *\n * - #### byDayOfWeek?\n *\n * *note: the byDayOfWeek rule part is kinda complex. Blame the ICAL spec.*\n *\n * The byDayOfWeek rule part expects an array. Each array entry can\n * be a day of the week (`\"SU\"`, `\"MO\"` , `\"TU\"`, `\"WE\"`, `\"TH\"`,\n * `\"FR\"`, `\"SA\"`). If the rule's `frequency` is either MONTHLY or YEARLY,\n * Any entry can also be a tuple where the first value of the tuple is a\n * day of the week and the second value is an positive/negative integer\n * (e.g. `[\"SU\", 1]`). In this case, the number indicates the nth occurrence of\n * the specified day within the MONTHLY or YEARLY rule.\n *\n * The behavior of byDayOfWeek changes depending on the `frequency`\n * of the rule.\n *\n * Within a MONTHLY rule, `[\"MO\", 1]` represents the first Monday\n * within the month, whereas `[\"MO\", -1]` represents the last Monday\n * of the month.\n *\n * Within a YEARLY rule, the numeric value in a byDayOfWeek tuple entry\n * corresponds to an offset within the month when the byMonthOfYear rule part is\n * present, and corresponds to an offset within the year otherwise.\n *\n * Regardless of rule `frequency`, if a byDayOfWeek entry is a string\n * (rather than a tuple), it means \"all of these days\" within the specified\n * frequency (e.g. within a MONTHLY rule, `\"MO\"` represents all Mondays within\n * the month).\n *\n * - #### byDayOfMonth?\n *\n * The byDayOfMonth rule part expects an array of days\n * of the month. Valid values are 1 to 31 or -31 to -1.\n *\n * For example, -10 represents the tenth to the last day of the month.\n * The byDayOfMonth rule part *must not* be specified when the rule's\n * `frequency` is set to WEEKLY.\n *\n * - #### byMonthOfYear?\n *\n * The byMonthOfYear rule part expects an array of months\n * of the year. Valid values are 1 to 12.\n *\n */\n constructor(config, options = {}) {\n super(Rule.recurrenceRules, config, options);\n }\n set(prop, value, tzoptions = {}) {\n let options = cloneRuleOptions(this.options);\n let timezone = this.timezone;\n if (prop === 'timezone') {\n if (value === this.timezone && !tzoptions.keepLocalTime) return this;\n else if (tzoptions.keepLocalTime) {\n const json = this.normalizeDateInput(options.start).toJSON();\n json.timezone = value;\n const adapter = this.dateAdapter.fromJSON(json);\n // prettier-ignore\n options.start =\n options.start instanceof this.dateAdapter ? adapter :\n options.start instanceof DateTime$1 ? adapter.toDateTime() :\n adapter.date;\n }\n timezone = value;\n } else if (prop === 'options') {\n options = value;\n } else {\n options[prop] = value;\n }\n return new Rule(options, {\n data: this.data,\n maxDuration: this.maxDuration,\n timezone,\n });\n }\n}\nRule.recurrenceRules = [];\n\nclass ScheduleBase extends OccurrenceGenerator {\n /**\n * Create a new Schedule object with the specified options.\n *\n * The order of precidence for rrules, rdates, exrules, and exdates is:\n *\n * 1. rrules are included\n * 2. exrules are excluded\n * 3. rdates are included\n * 4. exdates are excluded\n *\n */\n constructor(options) {\n super(options);\n this.data = options.data;\n }\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n *_run(args = {}) {\n const count = args.take;\n delete args.take;\n const iterator = this.occurrenceStream._run(args);\n let date = iterator.next().value;\n let index = 0;\n while (date && (count === undefined || count > index)) {\n date = date.add(this, 'generator');\n const yieldArgs = yield this.normalizeRunOutput(date);\n date = iterator.next(yieldArgs).value;\n index++;\n }\n return undefined;\n }\n}\n\n/**\n * An operator function which accepts a spread of occurrence generators\n * and removes their occurrences from the output.\n *\n * @param streams a spread of occurrence generators\n */\nfunction subtract(...streams) {\n return options => new SubtractOperator(streams, options);\n}\nclass SubtractOperator extends Operator {\n /** Not actually used but necessary for IRunnable interface */\n set(_, value) {\n return new SubtractOperator(\n this.streams.map(stream => stream.set('timezone', value)),\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n if (!this.config.base) return;\n const inclusion = new IterableWrapper(this.config.base, args);\n const exclusion = new IterableWrapper(\n new AddOperator(this.streams, {\n timezone: this.config.timezone,\n }),\n args,\n );\n cycleStreams(inclusion, exclusion, args);\n while (!inclusion.done) {\n const yieldArgs = yield this.normalizeRunOutput(inclusion.value);\n if (!(yieldArgs && yieldArgs.skipToDate)) {\n inclusion.next();\n }\n cycleStreams(inclusion, exclusion, args, yieldArgs);\n }\n }\n calculateIsInfinite() {\n return !!(this.config.base && this.config.base.isInfinite);\n }\n calculateHasDuration() {\n return !!(this.config.base && this.config.base.hasDuration);\n }\n}\nfunction cycleStreams(inclusion, exclusion, options = {}, yieldArgs = {}) {\n processYieldArgs([inclusion, exclusion], options, yieldArgs);\n iterateExclusion(inclusion, exclusion, options);\n while (!inclusion.done && !exclusion.done && inclusion.value.isEqual(exclusion.value)) {\n inclusion.next();\n iterateExclusion(inclusion, exclusion, options);\n }\n}\nfunction iterateExclusion(inclusion, exclusion, options = {}) {\n if (options.reverse) {\n while (!exclusion.done && !inclusion.done && exclusion.value.isAfter(inclusion.value)) {\n exclusion.next();\n }\n return;\n }\n while (!exclusion.done && !inclusion.done && exclusion.value.isBefore(inclusion.value)) {\n exclusion.next();\n }\n}\n\n/**\n * An operator function which deduplicates an occurrence stream. Occurrence\n * `duration` is currently ignored.\n */\nfunction unique() {\n return options => new UniqueOperator([], options);\n}\nclass UniqueOperator extends Operator {\n /** Not actually used but necessary for IRunnable interface */\n set(_, value) {\n return new UniqueOperator(\n [],\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n if (!this.config.base) return;\n const stream = new IterableWrapper(this.config.base, args);\n while (!stream.done) {\n const yieldArgs = yield this.normalizeRunOutput(stream.value);\n const lastValue = stream.value;\n // iterate the current stream\n stream.next(yieldArgs);\n while (\n !(yieldArgs && yieldArgs.skipToDate) &&\n !stream.done &&\n stream.value.isEqual(lastValue)\n ) {\n stream.next();\n }\n }\n }\n calculateIsInfinite() {\n return !!(this.config.base && this.config.base.isInfinite);\n }\n calculateHasDuration() {\n return !!(this.config.base && this.config.base.hasDuration);\n }\n}\n\nclass Schedule extends ScheduleBase {\n /**\n * Create a new Schedule object with the specified options.\n *\n * The order of precidence for rrules, rdates, exrules, and exdates is:\n *\n * 1. rrules are included\n * 2. exrules are excluded\n * 3. rdates are included\n * 4. exdates are excluded\n *\n * ### Options\n *\n * - **timezone**: The timezone that yielded occurrences should be *displayed* in.\n * Note, this one affects the *displayed* timezone of yielded occurrences.\n * For rules, occurrences are first found using the unmodified rule\n * config (including whatever timezone the `start` datetime is defined\n * in), and then converted to the timezone specified here before being\n * yielded. By default, the timezone is *local* time (`null`). So if you don't\n * want your rules to be displayed in local time, you must supply a\n * timezone argument.\n * - **data**: arbitrary data you can associate with this Schedule. This\n * is the only mutable property of `Schedule` objects.\n * - **maxDuration**: currently unused.\n * - **rrules**: rules specifying when occurrences happen. See the \"Rule Config\"\n * section below.\n * - **rdates**: individual dates that should be _included_ in the schedule.\n * - **exdates**: individual dates that should be _excluded_ from the schedule.\n * - **exrules**: rules specifying when occurrences shouldn't happen. See the\n * \"Rule Config\" section below.\n *\n * ### Rule Config\n *\n * - #### frequency\n *\n * The frequency rule part identifies the type of recurrence rule. Valid values\n * include `\"SECONDLY\"`, `\"MINUTELY\"`, `\"HOURLY\"`, `\"DAILY\"`, `\"WEEKLY\"`,\n * `\"MONTHLY\"`, or `\"YEARLY\"`.\n *\n * - #### start\n *\n * The start of the rule (not necessarily the first occurrence).\n * Either a `DateAdapter` instance, date object, or `DateTime` object.\n * The type of date object depends on the `DateAdapter` class used for this\n * `Rule`.\n *\n * - #### end?\n *\n * The end of the rule (not necessarily the last occurrence).\n * Either a `DateAdapter` instance, date object, or `DateTime` object.\n * The type of date object depends on the `DateAdapter` class used for this\n * `Rule`.\n *\n * - #### duration?\n *\n * A length of time expressed in milliseconds.\n *\n * - #### interval?\n *\n * The interval rule part contains a positive integer representing at\n * which intervals the recurrence rule repeats. The default value is\n * `1`, meaning every second for a SECONDLY rule, every minute for a\n * MINUTELY rule, every hour for an HOURLY rule, every day for a\n * DAILY rule, every week for a WEEKLY rule, every month for a\n * MONTHLY rule, and every year for a YEARLY rule. For example,\n * within a DAILY rule, a value of `8` means every eight days.\n *\n * - #### count?\n *\n * The count rule part defines the number of occurrences at which to\n * range-bound the recurrence. `count` and `end` are both two different\n * ways of specifying how a recurrence completes.\n *\n * - #### weekStart?\n *\n * The weekStart rule part specifies the day on which the workweek starts.\n * Valid values are `\"MO\"`, `\"TU\"`, `\"WE\"`, `\"TH\"`, `\"FR\"`, `\"SA\"`, and `\"SU\"`.\n * This is significant when a WEEKLY rule has an interval greater than 1,\n * and a `byDayOfWeek` rule part is specified. The\n * default value is `\"MO\"`.\n *\n * - #### bySecondOfMinute?\n *\n * The bySecondOfMinute rule part expects an array of seconds\n * within a minute. Valid values are 0 to 60.\n *\n * - #### byMinuteOfHour?\n *\n * The byMinuteOfHour rule part expects an array of minutes within an hour.\n * Valid values are 0 to 59.\n *\n * - #### byHourOfDay?\n *\n * The byHourOfDay rule part expects an array of hours of the day.\n * Valid values are 0 to 23.\n *\n * - #### byDayOfWeek?\n *\n * *note: the byDayOfWeek rule part is kinda complex. Blame the ICAL spec.*\n *\n * The byDayOfWeek rule part expects an array. Each array entry can\n * be a day of the week (`\"SU\"`, `\"MO\"` , `\"TU\"`, `\"WE\"`, `\"TH\"`,\n * `\"FR\"`, `\"SA\"`). If the rule's `frequency` is either MONTHLY or YEARLY,\n * Any entry can also be a tuple where the first value of the tuple is a\n * day of the week and the second value is an positive/negative integer\n * (e.g. `[\"SU\", 1]`). In this case, the number indicates the nth occurrence of\n * the specified day within the MONTHLY or YEARLY rule.\n *\n * The behavior of byDayOfWeek changes depending on the `frequency`\n * of the rule.\n *\n * Within a MONTHLY rule, `[\"MO\", 1]` represents the first Monday\n * within the month, whereas `[\"MO\", -1]` represents the last Monday\n * of the month.\n *\n * Within a YEARLY rule, the numeric value in a byDayOfWeek tuple entry\n * corresponds to an offset within the month when the byMonthOfYear rule part is\n * present, and corresponds to an offset within the year otherwise.\n *\n * Regardless of rule `frequency`, if a byDayOfWeek entry is a string\n * (rather than a tuple), it means \"all of these days\" within the specified\n * frequency (e.g. within a MONTHLY rule, `\"MO\"` represents all Mondays within\n * the month).\n *\n * - #### byDayOfMonth?\n *\n * The byDayOfMonth rule part expects an array of days\n * of the month. Valid values are 1 to 31 or -31 to -1.\n *\n * For example, -10 represents the tenth to the last day of the month.\n * The byDayOfMonth rule part *must not* be specified when the rule's\n * `frequency` is set to WEEKLY.\n *\n * - #### byMonthOfYear?\n *\n * The byMonthOfYear rule part expects an array of months\n * of the year. Valid values are 1 to 12.\n *\n */\n constructor(options = {}) {\n super(options);\n this.rrules = [];\n this.exrules = [];\n for (const prop of ['rrules', 'exrules']) {\n const arg = options[prop];\n if (arg) {\n this[prop] = arg.map(ruleArgs => {\n if (ruleArgs instanceof Rule) {\n return ruleArgs.set('timezone', this.timezone);\n } else {\n return new Rule(ruleArgs, {\n timezone: this.timezone,\n });\n }\n });\n }\n }\n for (const prop of ['rdates', 'exdates']) {\n const arg = options[prop];\n if (arg) {\n this[prop] =\n arg instanceof Dates\n ? arg.set('timezone', this.timezone)\n : new Dates({\n dates: arg,\n timezone: this.timezone,\n });\n } else {\n this[prop] = new Dates({\n timezone: this.timezone,\n });\n }\n }\n this.hasDuration =\n this.rrules.every(rule => rule.hasDuration) &&\n this.exrules.every(rule => rule.hasDuration) &&\n this.rdates.hasDuration &&\n this.exdates.hasDuration;\n this.isInfinite = this.rrules.some(rule => rule.isInfinite);\n this.occurrenceStream = [\n add(...this.rrules),\n subtract(...this.exrules),\n add(this.rdates),\n subtract(this.exdates),\n unique(),\n ].reduce((prev, curr) => curr({ base: prev, timezone: this.timezone }), undefined);\n }\n add(prop, value) {\n const rrules = this.rrules.slice();\n const exrules = this.exrules.slice();\n let rdates = this.rdates;\n let exdates = this.exdates;\n switch (prop) {\n case 'rrule':\n rrules.push(value);\n break;\n case 'exrule':\n exrules.push(value);\n break;\n case 'rdate':\n rdates = this.rdates.add(value);\n break;\n case 'exdate':\n exdates = this.exdates.add(value);\n break;\n }\n return new Schedule({\n timezone: this.timezone,\n data: this.data,\n rrules,\n exrules,\n rdates,\n exdates,\n });\n }\n remove(prop, value) {\n let rrules = this.rrules;\n let exrules = this.exrules;\n let rdates = this.rdates;\n let exdates = this.exdates;\n switch (prop) {\n case 'rrule':\n rrules = rrules.filter(rule => rule !== value);\n break;\n case 'exrule':\n exrules = exrules.filter(rule => rule !== value);\n break;\n case 'rdate':\n rdates = this.rdates.remove(value);\n break;\n case 'exdate':\n exdates = this.exdates.remove(value);\n break;\n }\n return new Schedule({\n timezone: this.timezone,\n data: this.data,\n rrules,\n exrules,\n rdates,\n exdates,\n });\n }\n set(prop, value, options = {}) {\n let timezone = this.timezone;\n let rrules = this.rrules;\n let exrules = this.exrules;\n let rdates = this.rdates;\n let exdates = this.exdates;\n switch (prop) {\n case 'timezone':\n if (value === this.timezone && !options.keepLocalTime) return this;\n else if (options.keepLocalTime) {\n rrules = rrules.map(rule => rule.set('timezone', value, options));\n exrules = exrules.map(rule => rule.set('timezone', value, options));\n rdates = rdates.set('timezone', value, options);\n exdates = exdates.set('timezone', value, options);\n }\n timezone = value;\n break;\n case 'rrules':\n rrules = value;\n break;\n case 'exrules':\n exrules = value;\n break;\n case 'rdates':\n rdates = value;\n break;\n case 'exdates':\n exdates = value;\n break;\n }\n return new Schedule({\n timezone,\n data: this.data,\n rrules,\n exrules,\n rdates,\n exdates,\n });\n }\n}\n\n/**\n * An operator function, which takes a spread of occurrence generators and only\n * returns the dates which intersect every occurrence generator.\n *\n * Because it's possible for all the generators to never intersect,\n * and because the intersection operator can't detect this lack of intersection,\n * you must call `intersection()` with a `{maxFailedIterations: number}` argument.\n * For convenience, you can globally set `RScheduleConfig.defaultMaxFailedIterations`.\n * Without further information, I'd probably set `defaultMaxFailedIterations = 50`.\n *\n * The `maxFailedIterations` argument caps the number of iterations the operator will\n * run through without finding a single valid occurrence. If this number is reached, the operator will\n * stop iterating (preventing a possible infinite loop).\n *\n * - Note: `maxFailedIterations` caps the number of iterations which\n * *fail to turn up a single valid occurrence*. Every time a valid occurrence is returned,\n * the current iteration count is reset to 0.\n *\n */\nfunction intersection(args) {\n return options => new IntersectionOperator(args, options);\n}\nclass IntersectionOperator extends Operator {\n constructor(args, config) {\n super(args.streams, config);\n if (this.isInfinite) {\n this.maxFailedIterations =\n args.maxFailedIterations || IntersectionOperator.defaultMaxFailedIterations;\n if (!this.maxFailedIterations) {\n throw new ArgumentError(\n 'The IntersectionOperator must be provided ' +\n 'a `maxFailedIterations` argument when it is built from schedules of infinite length. ' +\n 'This argument is used to ensure that the IntersectionOperator does not enter ' +\n 'an infinite loop because the underlying schedules never intersect. ' +\n 'If the `maxFailedIterations` count is reached it will be assumed that ' +\n 'all valid occurrences have been found and iteration will end without error.' +\n 'Without additional information, \"50\" is probably a good ' +\n '`maxFailedIterations` value. ' +\n 'If the schedules are not of infinite length, `maxFailedIterations` is ignored. ' +\n 'Note also that you can provide a `defaultMaxFailedIterations` number via ' +\n 'IntersectionOperator.defaultMaxFailedIterations.',\n );\n }\n }\n }\n set(_, value) {\n return new IntersectionOperator(\n {\n maxFailedIterations: this.maxFailedIterations,\n streams: this.streams.map(stream => stream.set('timezone', value)),\n },\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n const streams = this.streams.map(stream => new IterableWrapper(stream, args));\n if (this.config.base) {\n streams.push(new IterableWrapper(this.config.base, args));\n }\n if (streams.length === 0) return;\n const hasEndDate = !!(!this.isInfinite || args.reverse || args.end);\n if (\n !cycleStreams$1(\n streams,\n undefined,\n Object.assign(Object.assign({}, args), {\n hasEndDate,\n iteration: 0,\n maxIterations: this.maxFailedIterations,\n }),\n )\n ) {\n return;\n }\n let stream = selectNextIterable(streams, args);\n while (stream) {\n const yieldArgs = yield this.normalizeRunOutput(stream.value);\n const lastValidDate = stream.value;\n if (!(yieldArgs === null || yieldArgs === void 0 ? void 0 : yieldArgs.skipToDate)) {\n // iterate the current stream\n stream.next();\n }\n if (\n !cycleStreams$1(\n streams,\n lastValidDate,\n Object.assign(Object.assign({}, args), {\n hasEndDate,\n iteration: 0,\n maxIterations: this.maxFailedIterations,\n }),\n yieldArgs,\n )\n ) {\n return;\n }\n // The call to `cycleStreams()`, above, has already called\n // selectNextIterable with the `yieldArgs`\n stream = selectNextIterable(streams, args);\n }\n }\n calculateIsInfinite() {\n // Note: Array#every() === true when length === 0\n if (!this.config.base) {\n if (this.streams.length === 0) return false;\n return this.streams.every(stream => stream.isInfinite);\n } else if (this.streams.length === 0) return this.config.base.isInfinite;\n return this.config.base.isInfinite && this.streams.every(stream => stream.isInfinite);\n }\n calculateHasDuration() {\n const streamsDuration = this.streams.every(stream => stream.hasDuration);\n if (!this.config.base) return streamsDuration;\n return this.config.base.hasDuration && streamsDuration;\n }\n}\nfunction cycleStreams$1(streams, lastValidDate, options, yieldArgs) {\n const next = selectNextIterable(streams, options, yieldArgs);\n if (!next) return false;\n if (lastValidDate && next.value.isEqual(lastValidDate)) return true;\n if (streams.some(stream => stream.done)) return false;\n if (streams.every(stream => stream.value.isEqual(next.value))) return true;\n options.iteration++;\n if (options.maxIterations && !options.hasEndDate && options.iteration > options.maxIterations) {\n return false;\n }\n // Since not all of the streams are equal, we grab the last stream...\n const last = selectLastIterable(streams, options);\n // ...and skip all the other streams so they are equal or past the last one\n streams.forEach(stream => {\n // Because streams can have multiple, identical dates in a row,\n // we don't want to `skipToDate` if the provided date is equal to the current date.\n if (last.value.isEqual(stream.value)) return;\n stream.next({ skipToDate: last.value });\n });\n // then we repeat\n return cycleStreams$1(streams, lastValidDate, options);\n}\n\nclass DurationIterableWrapper extends IterableWrapper {\n constructor(generator, runArgs) {\n super(generator, runArgs);\n this.workingValue = this.value;\n this.next();\n }\n}\nclass MergeDurationOperatorError extends Error {}\n/**\n * An operator function which takes an occurrence stream with\n * `hasDuration === true` and merges occurrences which have overlapping\n * start and end times.\n *\n * Because it's possible for all the occurrences in the stream to have\n * overlapping start and end times, you must provide a `maxDuration`\n * argument that represents the maximum possible duration for a single\n * occurrence. If this duration is exceeded, a `MergeDurationOperatorError`\n * will be thrown.\n *\n * - For your convenience, you can globally set a default\n * `MergeDurationOperator#maxDuration` via\n * `RScheduleConfig.MergeDurationOperator.defaultMaxDuration`.\n *\n * Usage example:\n *\n * ```typescript\n * const MILLISECONDS_IN_HOUR = 1000 * 60 * 60;\n *\n * const dates = new Dates({\n * dates: [\n * new StandardDateAdapter(new Date(2010, 10, 10, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 13), { duration: MILLISECONDS_IN_HOUR * 2 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 14), { duration: MILLISECONDS_IN_HOUR * 2 }),\n * new StandardDateAdapter(new Date(2010, 10, 12, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * ],\n * dateAdpter: StandardDateAdapter,\n * }).pipe(\n * mergeDuration({\n * maxDuration: MILLISECONDS_IN_HOUR * 24\n * })\n * )\n *\n * dates.occurrences().toArray() === [\n * new StandardDateAdapter(new Date(2010, 10, 10, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 13), { duration: MILLISECONDS_IN_HOUR * 3 }),\n * new StandardDateAdapter(new Date(2010, 10, 12, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * ]\n * ```\n */\nfunction mergeDuration(args) {\n return options => new MergeDurationOperator(args, options);\n}\nclass MergeDurationOperator extends Operator {\n constructor(args, config) {\n super([], config);\n this.maxDuration = args.maxDuration;\n if (config.base && !config.base.hasDuration) {\n throw new ArgumentError(\n 'Base stream provided to MergeDurationOperator does not have an associated duration. ' +\n 'The MergeDurationOperator can only be used with streams which have a duration. ',\n );\n }\n }\n /** Not actually used but necessary for IRunnable interface */\n set(_, value) {\n return new MergeDurationOperator(\n {\n maxDuration: this.maxDuration,\n },\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n _run(args = {}) {\n return args.reverse ? this.reverseRun(args) : this.forwardRun(args);\n }\n calculateIsInfinite() {\n return !!(this.config.base && this.config.base.isInfinite);\n }\n calculateHasDuration() {\n return true;\n }\n *forwardRun(args = {}) {\n if (!this.config.base) return;\n // We want to find occurrences that end after the provided\n // `start` time even if they begin before the provided `start`\n // time. Because of this, we must begin iterating `maxDuration`\n // before the provided start time.\n let checkFromStart = args.start;\n if (args.start) {\n checkFromStart = args.start.subtract(this.maxDuration, 'millisecond');\n }\n let checkFromEnd = args.end;\n if (args.end) {\n checkFromEnd = args.end.add(this.maxDuration, 'millisecond');\n }\n const stream = new DurationIterableWrapper(\n this.config.base,\n Object.assign(Object.assign({}, args), { start: checkFromStart, end: checkFromEnd }),\n );\n let yieldArgs;\n // checking `stream.workingValue` because when `stream.done === true`\n // `stream.workingValue` will not have been yielded yet\n while (stream.workingValue) {\n // TODO(@john.carroll.p): figure out how to handle `DateTime#generators` for merged `DateTimes`\n while (!stream.done && stream.workingValue.end.isAfterOrEqual(stream.value)) {\n if (stream.workingValue.duration > this.maxDuration) {\n throw new MergeDurationOperatorError(\n `MergeDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n if (stream.value.end.isAfter(stream.workingValue.end)) {\n const diff = stream.value.end.valueOf() - stream.workingValue.end.valueOf();\n stream.workingValue = stream.workingValue.set(\n 'duration',\n stream.workingValue.duration + diff,\n );\n }\n stream.next();\n }\n // check to make sure the occurrence we are about to yield ends after the\n // provided start time.\n if (args.start && stream.workingValue.end.isBefore(args.start)) {\n stream.workingValue = stream.value;\n stream.next();\n continue;\n }\n // make sure the occurrence we are about to yield ends after the\n // provided skipToDate\n if (\n (yieldArgs === null || yieldArgs === void 0 ? void 0 : yieldArgs.skipToDate) &&\n stream.workingValue.end.isBefore(yieldArgs.skipToDate)\n ) {\n stream.workingValue = stream.value;\n stream.next();\n continue;\n }\n // make sure we are not after the user requested `end` time.\n if (args.end && stream.workingValue && stream.workingValue.isAfter(args.end)) {\n break;\n }\n if (stream.workingValue.duration > this.maxDuration) {\n throw new MergeDurationOperatorError(\n `MergeDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n yieldArgs = yield this.normalizeRunOutput(stream.workingValue);\n if (\n (yieldArgs === null || yieldArgs === void 0 ? void 0 : yieldArgs.skipToDate) &&\n stream.workingValue.isAfterOrEqual(yieldArgs.skipToDate)\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n stream.workingValue = stream.value;\n stream.next();\n }\n }\n *reverseRun(args = {}) {\n if (!this.config.base) return;\n // We want to find occurrences that end after the provided\n // `start` time even if they begin before the provided `start`\n // time. Because of this, we must begin iterating `maxDuration`\n // before the provided start time.\n let checkFromStart = args.start;\n if (args.start) {\n checkFromStart = args.start.subtract(this.maxDuration, 'millisecond');\n }\n let checkFromEnd = args.end;\n if (args.end) {\n checkFromEnd = args.end.add(this.maxDuration, 'millisecond');\n }\n const stream = new DurationIterableWrapper(\n this.config.base,\n Object.assign(Object.assign({}, args), { start: checkFromStart, end: checkFromEnd }),\n );\n let yieldArgs;\n // checking `stream.workingValue` because when `stream.done === true`\n // `stream.workingValue` will not have been yielded yet\n while (stream.workingValue) {\n // TODO(@john.carroll.p): figure out how to handle `DateTime#generators` for merged `DateTimes`\n while (!stream.done && stream.workingValue.isBeforeOrEqual(stream.value.end)) {\n if (stream.workingValue.duration > this.maxDuration) {\n throw new MergeDurationOperatorError(\n `MergeDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n if (\n stream.value.isBefore(stream.workingValue) ||\n stream.value.end.isAfter(stream.workingValue.end)\n ) {\n if (stream.value.end.isAfter(stream.workingValue.end)) {\n // `stream.workingValue` is a subset of `stream.value`\n // so simply replace `stream.workingValue` with `stream.value`\n stream.workingValue = stream.value;\n } else {\n const diff = stream.workingValue.valueOf() - stream.value.valueOf();\n stream.workingValue = stream.value.set('duration', stream.workingValue.duration + diff);\n }\n }\n stream.next();\n }\n // check to make sure the occurrence we are about to yield starts before the\n // provided start time.\n if (args.start && stream.workingValue.end.isBefore(args.start)) {\n break;\n }\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n stream.workingValue.end.isBefore(yieldArgs.skipToDate)\n ) {\n stream.workingValue = stream.value;\n stream.next();\n continue;\n }\n // make sure we are not after the user requested `end` time.\n if (args.end && stream.workingValue && stream.workingValue.isAfter(args.end)) {\n stream.workingValue = stream.value;\n stream.next();\n continue;\n }\n if (stream.workingValue.duration > this.maxDuration) {\n throw new MergeDurationOperatorError(\n `MergeDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n yieldArgs = yield this.normalizeRunOutput(stream.workingValue);\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n stream.workingValue.end.isBeforeOrEqual(yieldArgs.skipToDate)\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n stream.workingValue = stream.value;\n stream.next();\n }\n }\n}\n\nclass SplitDurationOperatorError extends Error {}\n/**\n * An operator function which takes an occurrence stream with\n * `hasDuration === true` and passes occurrences through a splitting\n * function. One usecase for this operator is to dynamically break up\n * occurrences with a large duration into several smaller occurrences.\n *\n * You must provide a `maxDuration` argument that represents the\n * maximum possible duration for a single occurrence. If this\n * duration is exceeded, a `SplitDurationOperatorError` will be\n * thrown.\n *\n * - For your convenience, you can globally set a default\n * `SplitDurationOperator#maxDuration` via\n * `RScheduleConfig.SplitDurationOperator.defaultMaxDuration`.\n *\n * Usage example:\n *\n * ```typescript\n * const MILLISECONDS_IN_HOUR = 1000 * 60 * 60;\n *\n * const splitFn = (date: DateTime) => {\n * if (date.duration > MILLISECONDS_IN_HOUR) {\n * const diff = date.duration! / 2;\n *\n * return [\n * date.set('duration', diff),\n * date.add(diff, 'millisecond').set('duration', diff),\n * ];\n * }\n *\n * return [date];\n * };\n *\n * const dates = new Dates({\n * dates: [\n * new StandardDateAdapter(new Date(2010, 10, 10, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 13), { duration: MILLISECONDS_IN_HOUR * 2 }),\n * ],\n * dateAdpter: StandardDateAdapter,\n * }).pipe(\n * splitDuration({\n * splitFn,\n * maxDuration: MILLISECONDS_IN_HOUR * 1\n * })\n * )\n *\n * expect(dates.occurrences().toArray()).toEqual([\n * new StandardDateAdapter(new Date(2010, 10, 10, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 14), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * ])\n * ```\n */\nfunction splitDuration(args) {\n return options => new SplitDurationOperator(args, options);\n}\nclass SplitDurationOperator extends Operator {\n constructor(args, config) {\n super([], config);\n this.splitFn = args.splitFn;\n this.maxDuration = args.maxDuration;\n if (config.base && !config.base.hasDuration) {\n throw new ArgumentError(\n 'Base stream provided to SplitDurationOperator does not have an associated duration. ' +\n 'The SplitDurationOperator can only be used with streams which have a duration.',\n );\n }\n }\n /** Not actually used but necessary for IRunnable interface */\n set(_, value) {\n return new SplitDurationOperator(\n {\n maxDuration: this.maxDuration,\n splitFn: this.splitFn,\n },\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n if (!this.config.base) return;\n const reverse = args.reverse || false;\n // We want to find occurrences that end after the provided\n // `start` time even if they begin before the provided `start`\n // time. Because of this, we add `maxDuration` to\n // the provided start time.\n let checkFromStart = args.start;\n if (args.start) {\n checkFromStart = args.start.subtract(this.maxDuration, 'millisecond');\n }\n // same goes for `end` time as with `start` time.\n let checkFromEnd = args.end;\n if (args.end) {\n checkFromEnd = args.end.add(this.maxDuration, 'millisecond');\n }\n const stream = new IterableWrapper(\n this.config.base,\n Object.assign(Object.assign({}, args), { start: checkFromStart, end: checkFromEnd }),\n );\n let yieldArgs;\n const datesBucket = [];\n while (!stream.done || (datesBucket[0] && datesBucket[0][0])) {\n /**\n * Example:\n * 10am - 2pm -> 10am - 12pm, 12pm - 2pm\n * 11am - 3pm -> 11am - 1pm, 1pm - 3pm\n * 2pm - 4pm -> 2pm - 3pm, 3pm - 4pm\n */\n if (!(datesBucket[0] && datesBucket[0][0])) {\n // we're out of dates\n datesBucket.push(this.splitDate(stream.value, reverse));\n stream.next();\n }\n while (\n !stream.done &&\n (reverse\n ? datesBucket[0].some(date => date.isBeforeOrEqual(stream.value.end))\n : datesBucket[0].some(date => date.isAfterOrEqual(stream.value)))\n ) {\n datesBucket.push(this.splitDate(stream.value, reverse));\n stream.next();\n }\n let selectedDate = datesBucket[0] && datesBucket[0][0];\n let bucketIndex = -1;\n let selectedBucketIndex = 0;\n let dateIndex = -1;\n let selectedDateIndex = 0;\n // find the next date as well as its location in the datesBucket\n for (const bucket of datesBucket) {\n bucketIndex++;\n dateIndex = -1;\n for (const date of bucket) {\n dateIndex++;\n let dateShouldComeNext;\n if (reverse) {\n dateShouldComeNext =\n date.isAfter(selectedDate) ||\n (date.isEqual(selectedDate) && date.duration > selectedDate.duration);\n } else {\n dateShouldComeNext =\n date.isBefore(selectedDate) ||\n (date.isEqual(selectedDate) && date.duration < selectedDate.duration);\n }\n if (dateShouldComeNext) {\n selectedDate = date;\n selectedBucketIndex = bucketIndex;\n selectedDateIndex = dateIndex;\n break;\n }\n }\n }\n datesBucket[selectedBucketIndex].splice(selectedDateIndex, 1);\n if (datesBucket[selectedBucketIndex].length === 0) {\n datesBucket.splice(selectedBucketIndex, 1);\n }\n // If we've been yieldedArgs from the last cycle, check to see\n // that the selectedDate honors the `skipToDate` requirement\n // if not, discard this selectedDate\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n selectedDate &&\n !datePastEnd(selectedDate, args) &&\n !datePastSkipToDate(selectedDate, yieldArgs.skipToDate, args)\n ) {\n continue;\n }\n // because we subtracted `maxDuration` to the base iterator's start time,\n // check to make sure the selectedDate we are about to yield should\n // actually be yielded (it may be before the provided `start` time).\n // If not, discard the selectedDate.\n if (args.start && selectedDate.end.isBefore(args.start)) {\n if (reverse) break;\n continue;\n }\n // because we added `maxDuration` to the base iterator's end time,\n // check to make sure the selectedDate we are about to yield should\n // actually be yielded (it may be after the provided `end` time).\n // If not, end iteration.\n if (args.end && selectedDate.isAfter(args.end)) {\n if (reverse) continue;\n break;\n }\n if (selectedDate.duration > this.maxDuration) {\n throw new SplitDurationOperatorError(\n `SplitDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n yieldArgs = yield this.normalizeRunOutput(selectedDate);\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n (args.reverse\n ? selectedDate.isBeforeOrEqual(yieldArgs.skipToDate)\n : selectedDate.isAfterOrEqual(yieldArgs.skipToDate))\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n }\n }\n calculateIsInfinite() {\n return !!(this.config.base && this.config.base.isInfinite);\n }\n calculateHasDuration() {\n return true;\n }\n splitDate(date, reverse) {\n const dates = this.splitFn(date);\n let valid;\n if (dates.length === 0) {\n valid = false;\n } else if (dates.length === 1) {\n valid = date.duration === dates[0].duration;\n } else {\n valid = date.duration === dates.reduce((prev, curr) => prev + curr.duration, 0);\n }\n if (!valid) {\n throw new Error(\n 'The provided SplitDurationOperator split function ' +\n 'must return an array of DateTimes with length > 0 ' +\n 'where the total duration of the new dates equals the duration of ' +\n 'the original date.',\n );\n }\n dates.sort(dateTimeSortComparer);\n if (reverse) {\n dates.reverse();\n }\n return dates;\n }\n}\nfunction datePastEnd(date, options) {\n return !!(options.reverse\n ? options.start && date.isBefore(options.start)\n : options.end && date.isAfter(options.end));\n}\nfunction datePastSkipToDate(date, skipToDate, options) {\n return !!(options.reverse ? skipToDate.isAfterOrEqual(date) : skipToDate.isBeforeOrEqual(date));\n}\n\nexport {\n AddOperator,\n Calendar,\n Collection,\n CollectionIterator,\n Dates,\n IntersectionOperator,\n MergeDurationOperator,\n MergeDurationOperatorError,\n OccurrenceGenerator,\n OccurrenceIterator,\n Operator,\n Rule,\n RuleBase,\n Schedule,\n ScheduleBase,\n SplitDurationOperator,\n SplitDurationOperatorError,\n SubtractOperator,\n UniqueOperator,\n add,\n intersection,\n mergeDuration,\n splitDuration,\n subtract,\n unique,\n};\n","class InvalidDateAdapterError extends Error {}\nlet dateAdapterConfig;\nclass DateAdapterBase {\n constructor(_date, options) {\n this.duration = (options && options.duration) || 0;\n this.generators = (options && options.generators && options.generators.slice()) || [];\n if (!Number.isInteger(this.duration) || this.duration < 0) {\n throw new InvalidDateAdapterError('duration must be a non-negative integer');\n }\n }\n static set adapter(value) {\n if (dateAdapterConfig) {\n throw new Error(`\"${dateAdapterConfig.name}\" has already been configured.`);\n }\n dateAdapterConfig = value;\n }\n static get adapter() {\n if (!dateAdapterConfig) {\n throw new Error('No date adapter has been configured. See rSchedule docs.');\n }\n return dateAdapterConfig;\n }\n static isDate(_object) {\n throw unimplementedError('isDate()');\n }\n static fromDate(_date, _options) {\n throw unimplementedError('fromDate()');\n }\n static fromJSON(_json) {\n throw unimplementedError('fromJSON()');\n }\n static fromDateTime(_datetime) {\n throw unimplementedError('fromDateTime()');\n }\n /**\n * Returns a string in simplified extended ISO format (ISO 8601).\n *\n * _Note: this method is intended for testing and its\n * implementation isn't particularly performant._\n */\n toISOString() {\n return this.set('timezone', 'UTC')\n .toDateTime()\n .toISOString();\n }\n toDateTime() {\n const date = DateTime.fromJSON(\n Object.assign(Object.assign({}, this.toJSON()), { generators: this.generators }),\n );\n return date;\n }\n}\nDateAdapterBase.hasTimezoneSupport = false;\nfunction unimplementedError(name) {\n return new Error(`You must implement the \"${name}\" method for this DateAdapter class`);\n}\nvar DateAdapter;\n(function(DateAdapter) {\n DateAdapter.WEEKDAYS = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\n DateAdapter.MILLISECONDS_IN_SECOND = 1000;\n DateAdapter.MILLISECONDS_IN_MINUTE = DateAdapter.MILLISECONDS_IN_SECOND * 60;\n DateAdapter.MILLISECONDS_IN_HOUR = DateAdapter.MILLISECONDS_IN_MINUTE * 60;\n DateAdapter.MILLISECONDS_IN_DAY = DateAdapter.MILLISECONDS_IN_HOUR * 24;\n DateAdapter.MILLISECONDS_IN_WEEK = DateAdapter.MILLISECONDS_IN_DAY * 7;\n})(DateAdapter || (DateAdapter = {}));\nclass InvalidDateTimeError extends Error {}\nclass DateTime {\n constructor(date, timezone, duration, generators) {\n this.date = new Date(date);\n this.timezone = timezone || null;\n this.duration = duration || 0;\n this.generators = (generators && generators.slice()) || [];\n if (!Number.isInteger(this.duration) || this.duration < 0) {\n throw new InvalidDateTimeError('duration must be a non-negative integer');\n }\n this.assertIsValid();\n }\n // /**\n // * Similar to `Array.isArray()`, `isInstance()` provides a surefire method\n // * of determining if an object is a `DateTime` by checking against the\n // * global symbol registry.\n // */\n // static isInstance(object: any): object is DateTime {\n // return !!(object && object[DATETIME_ID]);\n // }\n static fromJSON(json) {\n const date = new Date(\n Date.UTC(\n json.year,\n json.month - 1,\n json.day,\n json.hour,\n json.minute,\n json.second,\n json.millisecond,\n ),\n );\n return new DateTime(date, json.timezone, json.duration, json.generators);\n }\n static fromDateAdapter(adapter) {\n return DateTime.fromJSON(\n Object.assign(Object.assign({}, adapter.toJSON()), { generators: adapter.generators }),\n );\n }\n /**\n * Returns `undefined` if `duration` is `0`. Else returns\n * the `end` date.\n */\n get end() {\n if (!this.duration) return;\n if (this._end) return this._end;\n this._end = this.add(this.duration, 'millisecond');\n return this._end;\n }\n // While we constrain the argument to be another DateAdapter in typescript\n // we handle the case of someone passing in another type of object in javascript\n isEqual(object) {\n if (!object) {\n return false;\n }\n assertSameTimeZone(this, object);\n return this.valueOf() === object.valueOf();\n }\n isBefore(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() < object.valueOf();\n }\n isBeforeOrEqual(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() <= object.valueOf();\n }\n isAfter(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() > object.valueOf();\n }\n isAfterOrEqual(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() >= object.valueOf();\n }\n isOccurring(object) {\n if (!this.duration) {\n throw new Error('DateTime#isOccurring() is only applicable to DateTimes with durations');\n }\n assertSameTimeZone(this, object);\n return (\n object.isAfterOrEqual(this) && object.isBeforeOrEqual(this.add(this.duration, 'millisecond'))\n );\n }\n add(amount, unit) {\n switch (unit) {\n case 'generator': {\n const generators = this.generators.slice();\n generators.unshift(amount);\n return new DateTime(this.date, this.timezone, this.duration, generators);\n }\n case 'year':\n return this.forkDateTime(addUTCYears(this.date, amount));\n case 'month':\n return this.forkDateTime(addUTCMonths(this.date, amount));\n case 'week':\n return this.forkDateTime(addUTCWeeks(this.date, amount));\n case 'day':\n return this.forkDateTime(addUTCDays(this.date, amount));\n case 'hour':\n return this.forkDateTime(addUTCHours(this.date, amount));\n case 'minute':\n return this.forkDateTime(addUTCMinutes(this.date, amount));\n case 'second':\n return this.forkDateTime(addUTCSeconds(this.date, amount));\n case 'millisecond':\n return this.forkDateTime(addUTCMilliseconds(this.date, amount));\n default:\n throw new Error('Invalid unit provided to `DateTime#add`');\n }\n }\n subtract(amount, unit) {\n switch (unit) {\n case 'year':\n return this.forkDateTime(subUTCYears(this.date, amount));\n case 'month':\n return this.forkDateTime(subUTCMonths(this.date, amount));\n case 'week':\n return this.forkDateTime(subUTCWeeks(this.date, amount));\n case 'day':\n return this.forkDateTime(subUTCDays(this.date, amount));\n case 'hour':\n return this.forkDateTime(subUTCHours(this.date, amount));\n case 'minute':\n return this.forkDateTime(subUTCMinutes(this.date, amount));\n case 'second':\n return this.forkDateTime(subUTCSeconds(this.date, amount));\n case 'millisecond':\n return this.forkDateTime(subUTCMilliseconds(this.date, amount));\n default:\n throw new Error('Invalid unit provided to `DateTime#subtract`');\n }\n }\n get(unit) {\n switch (unit) {\n case 'year':\n return this.date.getUTCFullYear();\n case 'month':\n return this.date.getUTCMonth() + 1;\n case 'yearday':\n return getUTCYearDay(this.date);\n case 'weekday':\n return DateAdapter.WEEKDAYS[this.date.getUTCDay()];\n case 'day':\n return this.date.getUTCDate();\n case 'hour':\n return this.date.getUTCHours();\n case 'minute':\n return this.date.getUTCMinutes();\n case 'second':\n return this.date.getUTCSeconds();\n case 'millisecond':\n return this.date.getUTCMilliseconds();\n default:\n throw new Error('Invalid unit provided to `DateTime#set`');\n }\n }\n set(unit, value) {\n if (unit === 'duration') {\n return new DateTime(this.date, this.timezone, value, this.generators);\n }\n if (unit === 'generators') {\n return new DateTime(this.date, this.timezone, this.duration, value);\n }\n let date = new Date(this.date);\n switch (unit) {\n case 'year':\n date.setUTCFullYear(value);\n break;\n case 'month': {\n // If the current day of the month\n // is greater than days in the month we are moving to, we need to also\n // set the day to the end of that month.\n const length = monthLength(value, date.getUTCFullYear());\n const day = date.getUTCDate();\n if (day > length) {\n date.setUTCDate(1);\n date.setUTCMonth(value);\n date = subUTCDays(date, 1);\n } else {\n date.setUTCMonth(value - 1);\n }\n break;\n }\n case 'day':\n date.setUTCDate(value);\n break;\n case 'hour':\n date.setUTCHours(value);\n break;\n case 'minute':\n date.setUTCMinutes(value);\n break;\n case 'second':\n date.setUTCSeconds(value);\n break;\n case 'millisecond':\n date.setUTCMilliseconds(value);\n break;\n default:\n throw new Error('Invalid unit provided to `DateTime#set`');\n }\n return this.forkDateTime(date);\n }\n granularity(granularity, opt = {}) {\n let date = this.forkDateTime(this.date);\n switch (granularity) {\n case 'year':\n date = date.set('month', 1);\n case 'month':\n date = date.set('day', 1);\n break;\n case 'week':\n date = setDateToStartOfWeek(date, opt.weekStart);\n }\n switch (granularity) {\n case 'year':\n case 'month':\n case 'week':\n case 'day':\n date = date.set('hour', 0);\n case 'hour':\n date = date.set('minute', 0);\n case 'minute':\n date = date.set('second', 0);\n case 'second':\n date = date.set('millisecond', 0);\n case 'millisecond':\n return date;\n default:\n throw new Error('Invalid granularity provided to `DateTime#granularity`: ' + granularity);\n }\n }\n endGranularity(granularity, opt = {}) {\n let date = this.forkDateTime(this.date);\n switch (granularity) {\n case 'year':\n date = date.set('month', 12);\n case 'month':\n date = date.set('day', monthLength(date.get('month'), date.get('year')));\n break;\n case 'week':\n date = setDateToEndOfWeek(date, opt.weekStart);\n }\n switch (granularity) {\n case 'year':\n case 'month':\n case 'week':\n case 'day':\n date = date.set('hour', 23);\n case 'hour':\n date = date.set('minute', 59);\n case 'minute':\n date = date.set('second', 59);\n case 'second':\n date = date.set('millisecond', 999);\n case 'millisecond':\n return date;\n default:\n throw new Error('Invalid granularity provided to `DateTime#granularity`: ' + granularity);\n }\n }\n toISOString() {\n return this.date.toISOString();\n }\n toDateTime() {\n return this;\n }\n toJSON() {\n const json = {\n timezone: this.timezone,\n year: this.get('year'),\n month: this.get('month'),\n day: this.get('day'),\n hour: this.get('hour'),\n minute: this.get('minute'),\n second: this.get('second'),\n millisecond: this.get('millisecond'),\n };\n if (this.duration) {\n json.duration = this.duration;\n }\n return json;\n }\n valueOf() {\n return this.date.valueOf();\n }\n assertIsValid() {\n if (isNaN(this.valueOf())) {\n throw new InvalidDateTimeError('DateTime has invalid date.');\n }\n return true;\n }\n forkDateTime(date) {\n return new DateTime(date, this.timezone, this.duration, this.generators);\n }\n}\nfunction assertSameTimeZone(x, y) {\n if (x.timezone !== y.timezone) {\n throw new InvalidDateTimeError(\n 'Attempted to compare a datetime to another date in a different timezone: ' +\n JSON.stringify(x) +\n ' and ' +\n JSON.stringify(y),\n );\n }\n return true;\n}\nfunction setDateToStartOfWeek(date, wkst) {\n const index = orderedWeekdays(wkst).indexOf(date.get('weekday'));\n return date.subtract(index, 'day');\n}\nfunction setDateToEndOfWeek(date, wkst) {\n const index = orderedWeekdays(wkst).indexOf(date.get('weekday'));\n return date.add(6 - index, 'day');\n}\nfunction dateTimeSortComparer(a, b) {\n if (a.isAfter(b)) return 1;\n if (a.isBefore(b)) return -1;\n if (a.duration && b.duration) {\n if (a.duration > b.duration) return 1;\n if (a.duration < b.duration) return -1;\n }\n return 0;\n}\nfunction uniqDateTimes(dates) {\n return Array.from(new Map(dates.map(date => [date.toISOString(), date])).values());\n}\nfunction orderedWeekdays(wkst = 'SU') {\n const wkdays = DateAdapter.WEEKDAYS.slice();\n let index = wkdays.indexOf(wkst);\n while (index !== 0) {\n shiftArray(wkdays);\n index--;\n }\n return wkdays;\n}\nfunction shiftArray(array, from = 'first') {\n if (array.length === 0) {\n return array;\n } else if (from === 'first') {\n array.push(array.shift());\n } else {\n array.unshift(array.pop());\n }\n return array;\n}\nfunction getDifferenceBetweenWeekdays(x, y) {\n if (x === y) return 0;\n const result = DateAdapter.WEEKDAYS.indexOf(x) - DateAdapter.WEEKDAYS.indexOf(y);\n return result > 0 ? 7 - result : Math.abs(result);\n}\n/**\n * Returns the days in the given month.\n *\n * @param month base-1\n * @param year\n */\nfunction monthLength(month, year) {\n const block = {\n 1: 31,\n 2: getDaysInFebruary(year),\n 3: 31,\n 4: 30,\n 5: 31,\n 6: 30,\n 7: 31,\n 8: 31,\n 9: 30,\n 10: 31,\n 11: 30,\n 12: 31,\n };\n return block[month];\n}\nfunction getDaysInFebruary(year) {\n return isLeapYear(year) ? 29 : 28;\n}\n// taken from date-fn\nfunction isLeapYear(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\nfunction getDaysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\nfunction getUTCYearDay(now) {\n const start = new Date(Date.UTC(now.getUTCFullYear(), 0, 1));\n const diff = now.valueOf() - start.valueOf();\n return 1 + Math.floor(diff / DateAdapter.MILLISECONDS_IN_DAY);\n}\n/**\n * These functions are basically lifted from `date-fns`, but changed\n * to use the UTC date methods, which `date-fns` doesn't support.\n */\nfunction toInteger(input) {\n if (input === null || input === true || input === false) {\n return NaN;\n }\n const int = Number(input);\n if (isNaN(int)) {\n return int;\n }\n return int < 0 ? Math.ceil(int) : Math.floor(int);\n}\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n const timestamp = dirtyDate.valueOf();\n const amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}\nfunction addUTCYears(date, input) {\n const amount = toInteger(input);\n return addUTCMonths(date, amount * 12);\n}\nfunction addUTCMonths(date, input) {\n const amount = toInteger(input);\n date = new Date(date);\n const desiredMonth = date.getUTCMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setUTCFullYear(date.getUTCFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setUTCHours(0, 0, 0, 0);\n const daysInMonth = monthLength(\n dateWithDesiredMonth.getUTCMonth() + 1,\n dateWithDesiredMonth.getUTCFullYear(),\n );\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setUTCMonth(desiredMonth, Math.min(daysInMonth, date.getUTCDate()));\n return date;\n}\nfunction addUTCWeeks(date, input) {\n const amount = toInteger(input);\n const days = amount * 7;\n return addUTCDays(date, days);\n}\nfunction addUTCDays(date, input) {\n // by adding milliseconds rather than days, we supress the native Date object's automatic\n // daylight savings time conversions which we don't want in UTC mode\n return addUTCMilliseconds(date, toInteger(input) * DateAdapter.MILLISECONDS_IN_DAY);\n}\nfunction addUTCHours(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_HOUR);\n}\nfunction addUTCMinutes(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_MINUTE);\n}\nfunction addUTCSeconds(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_SECOND);\n}\nfunction addUTCMilliseconds(date, input) {\n const amount = toInteger(input);\n const timestamp = date.getTime();\n return new Date(timestamp + amount);\n}\nfunction subUTCYears(date, amount) {\n return addUTCYears(date, -amount);\n}\nfunction subUTCMonths(date, amount) {\n return addUTCMonths(date, -amount);\n}\nfunction subUTCWeeks(date, amount) {\n return addUTCWeeks(date, -amount);\n}\nfunction subUTCDays(date, amount) {\n return addUTCDays(date, -amount);\n}\nfunction subUTCHours(date, amount) {\n return addUTCHours(date, -amount);\n}\nfunction subUTCMinutes(date, amount) {\n return addUTCMinutes(date, -amount);\n}\nfunction subUTCSeconds(date, amount) {\n return addUTCSeconds(date, -amount);\n}\nfunction subUTCMilliseconds(date, amount) {\n return addUTCMilliseconds(date, -amount);\n}\n\nclass ArgumentError extends Error {}\nclass InfiniteLoopError extends Error {}\nfunction numberSortComparer(a, b) {\n if (a > b) {\n return 1;\n } else if (b > a) {\n return -1;\n } else {\n return 0;\n }\n}\nfunction freqToGranularity(freq) {\n switch (freq) {\n case 'YEARLY':\n return 'year';\n case 'MONTHLY':\n return 'month';\n case 'WEEKLY':\n return 'week';\n case 'DAILY':\n return 'day';\n case 'HOURLY':\n return 'hour';\n case 'MINUTELY':\n return 'minute';\n case 'SECONDLY':\n return 'second';\n case 'MILLISECONDLY':\n return 'millisecond';\n default:\n throw new Error('unknown freq passed to freqToGranularity()');\n }\n}\nfunction cloneJSON(json) {\n return JSON.parse(JSON.stringify(json));\n}\nfunction dateInputToDateAdapter(date) {\n // prettier-ignore\n return date instanceof DateTime ? DateAdapterBase.adapter.fromDateTime(date) :\n date instanceof DateAdapterBase ? date :\n DateAdapterBase.adapter.fromDate(date);\n}\nfunction dateInputToDateTime(date, timezone) {\n if (date instanceof DateTime) {\n if (date.timezone !== timezone) {\n return DateAdapterBase.adapter\n .fromDateTime(date)\n .set('timezone', timezone)\n .toDateTime();\n }\n return date;\n }\n return date instanceof DateAdapterBase\n ? date.set('timezone', timezone).toDateTime()\n : DateAdapterBase.adapter\n .fromDate(date)\n .set('timezone', timezone)\n .toDateTime();\n}\n// export function normalizeDateInput<T extends DateAdapter>(\n// dateAdapter: DateAdapterConstructor<T>,\n// input: DateInput<T>,\n// timezone: string | null,\n// ): DateTime {\n// if (input instanceof DateTime) {\n// if (input.timezone !== timezone) {\n// return dateAdapter\n// .fromDateTime(input)\n// .set('timezone', timezone)\n// .toDateTime();\n// }\n// return input;\n// }\n// return input instanceof DateAdapter\n// ? input.set('timezone', timezone).toDateTime()\n// : new dateAdapter(input).toDateTime();\n// }\nfunction normalizeDateTimeTimezone(date, timezone) {\n if (date.timezone !== timezone) {\n return DateAdapterBase.adapter\n .fromDateTime(date)\n .set('timezone', timezone)\n .toDateTime();\n }\n return date;\n}\n\nclass RuleOptionError extends Error {}\nfunction normalizeDefaultOptions(options) {\n let start;\n if (options.start instanceof DateTime) {\n start = options.start;\n } else if (options.start instanceof DateAdapterBase) {\n start = options.start.toDateTime();\n } else if (DateAdapterBase.adapter.isDate(options.start)) {\n start = DateAdapterBase.adapter.fromDate(options.start).toDateTime();\n } else {\n throw new RuleOptionError(\n '\"start\" must be either a `DateAdapter` instance or an instance of the ' +\n 'date a DateAdapter is wrapping (e.g. `StandardDateAdapter` wraps a `Date`)',\n );\n }\n let end;\n if (options.end) {\n if (options.end instanceof DateTime) {\n end = options.end;\n } else if (options.end instanceof DateAdapterBase) {\n end = options.end.toDateTime();\n } else if (DateAdapterBase.adapter.isDate(options.end)) {\n end = DateAdapterBase.adapter.fromDate(options.end).toDateTime();\n } else {\n throw new RuleOptionError(\n '\"end\" must be either be `undefined`, a `DateAdapter` instance, or an instance of the ' +\n 'date a DateAdapter is wrapping (e.g. `StandardDateAdapter` wraps a `Date`)',\n );\n }\n }\n if (options.duration !== undefined) {\n if (!Number.isInteger(options.duration)) {\n throw new RuleOptionError('\"duration\" expects a whole number');\n }\n if (options.duration <= 0) {\n throw new RuleOptionError('\"duration\" must be greater than 0');\n }\n }\n if (options.count !== undefined) {\n if (!Number.isInteger(options.count)) {\n throw new RuleOptionError('\"count\" must be a whole number');\n }\n if (options.count < 0) {\n throw new RuleOptionError('\"count\" must be greater than 0');\n }\n }\n if (options.end !== undefined && options.count !== undefined) {\n throw new RuleOptionError('\"end\" and \"count\" cannot both be present');\n }\n return {\n start,\n end,\n count: options.count,\n duration: options.duration,\n };\n}\nfunction normalizeRuleOptions(recurrenceModules, options) {\n const normOptions = normalizeDefaultOptions(options);\n const startOptions = cloneJSON(options);\n recurrenceModules.forEach(mod => {\n mod.normalizeOptions(startOptions, normOptions);\n });\n Object.keys(normOptions).forEach(key => {\n if (normOptions[key] === undefined) {\n delete normOptions[key];\n }\n });\n return normOptions;\n}\nfunction cloneRuleOptions(options) {\n const obj = cloneJSON(options);\n obj.start = options.start;\n if (options.end) obj.end = options.end;\n return obj;\n}\n\nclass RecurrenceRuleError extends Error {}\nclass ValidDateTime {\n constructor(date) {\n this.date = date;\n }\n}\nclass InvalidDateTime {\n constructor(date) {\n this.date = date;\n }\n}\nfunction recurrenceRulesReducer(rules) {\n return iterator =>\n rules.reduce((prev, curr) => {\n const rule = curr.get(iterator);\n if (rule) prev.push(rule);\n return prev;\n }, []);\n}\n\nclass RecurrenceRulesIterator {\n constructor(recurrenceRules, options, args) {\n this.options = options;\n this.args = args;\n this.rules = [];\n this.iterator =\n // prettier-ignore\n this.options.count === undefined ? this.iterate() :\n this.args.reverse ? this.iterateWithReverseCount() :\n this.iterateWithCount();\n this.options = Object.assign(Object.assign({}, cloneJSON(options)), {\n start: options.start,\n end: options.end,\n });\n this.reverse = (this.options.count === undefined && args.reverse) || false;\n const { start, end } = this.normalizeDateTimeArgs(args);\n if (options.count !== undefined) {\n this.start = options.start;\n } else if (start && options.start) {\n this.start = start.isAfterOrEqual(options.start) ? start : options.start;\n } else {\n this.start = start || options.start;\n }\n if (end && options.end) {\n this.end = end.isBeforeOrEqual(options.end) ? end : options.end;\n } else {\n this.end = end || options.end;\n }\n if (this.args.reverse && !(options.count !== undefined || this.end)) {\n throw new Error(\n 'When iterating in reverse, the rule must have an `end` or `count` ' +\n 'property or you must provide an `end` argument.',\n );\n }\n this.isInfinite = !this.end && this.options.count === undefined;\n this.hasDuration = !!this.options.duration;\n this.rules = Array.isArray(recurrenceRules) ? recurrenceRules : recurrenceRules(this);\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n next(args) {\n return this.iterator.next(args);\n }\n /**\n * In the pipe controller, we have an extra level of indirection with\n * the `run()` and `iterate()` methods. The `iterate()` method is the\n * method which actually runs the logic in the pipes. If we didn't\n * need to account for the `count` property of a rule, we would *only*\n * need the iterate method... so much simpler. But we do need to account\n * for rules with a `count` property.\n *\n * Rules with a `count` property need to begin iteration at the beginning\n * because the `count` is always from the rule's start time. So if someone\n * passes in a new start time as an argument to a rule with `count`, we\n * need to secretly iterate from the beginning, tracking the number of\n * iterations, and then only start yielding dates when we reach the section\n * the user cares about (or, if we hit our `count` quota, cancel iterating).\n *\n * Additionally, we need to handle iterating in reverse. In this case, we build\n * up a cache of dates between the rule's start time and the reverse iteration\n * start date. Once we hit the reverse iteration start date, we start\n * yielding dates in the cache, in reverse order.\n *\n * In general, I imagine the count number, if used, will be small. But a large\n * count will definitely have a negative performance affect. I don't think\n * there's anything to be done about this.\n */\n *iterateWithReverseCount() {\n const dates = Array.from(this.iterateWithCount()).reverse();\n let yieldArgs;\n const dateCache = dates.slice();\n let date = dateCache.shift();\n while (date) {\n if (yieldArgs && yieldArgs.skipToDate && date.isAfter(yieldArgs.skipToDate)) {\n date = dateCache.shift();\n continue;\n }\n yieldArgs = yield date;\n if (yieldArgs && yieldArgs.skipToDate && yieldArgs.skipToDate.isAfterOrEqual(date)) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n date = dateCache.shift();\n }\n return undefined;\n }\n *iterateWithCount() {\n if (this.options.count === 0) return;\n const iterable = this.iterate();\n const start = this.args.start || this.start;\n let date = iterable.next().value;\n let index = 1;\n let yieldArgs;\n while (date && index <= this.options.count) {\n index++;\n if (date.isBefore(start)) {\n date = iterable.next().value;\n continue;\n }\n if (yieldArgs && yieldArgs.skipToDate && date.isBefore(yieldArgs.skipToDate)) {\n date = iterable.next().value;\n continue;\n }\n yieldArgs = yield date;\n if (yieldArgs && yieldArgs.skipToDate && yieldArgs.skipToDate.isBeforeOrEqual(date)) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n date = iterable.next().value;\n }\n return undefined;\n }\n *iterate() {\n let startingDate = this.start;\n if (this.reverse) startingDate = this.end;\n let date = this.nextDate(startingDate);\n while (date) {\n const args = yield this.normalizeRunOutput(date);\n if (args && args.skipToDate) {\n if (\n this.reverse\n ? args.skipToDate.isAfterOrEqual(date)\n : args.skipToDate.isBeforeOrEqual(date)\n ) {\n // We cannot consistently skip backwards because after an iterator is \"done\"\n // it always returns undefined and you cannot reset it. Theoretically, it would be\n // fine to skip backwards if the iterator wasn't already \"done\", but this\n // would be prone to user error so we simply disallow skipping backwards altogether.\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n date = this.nextDate(args.skipToDate);\n } else {\n date = this.nextDate(\n this.reverse ? date.subtract(1, 'millisecond') : date.add(1, 'millisecond'),\n );\n }\n }\n return undefined;\n }\n /**\n * Loops through the recurrence rules until a valid date is found.\n */\n nextDate(start) {\n let result = this.runRules(start.set('generators', []));\n if (this.isDatePastEnd(result.date)) return null;\n let index = 0;\n while (result instanceof InvalidDateTime && index < 50) {\n result = this.runRules(result.date);\n if (this.isDatePastEnd(result.date)) return null;\n index++;\n }\n if (result instanceof InvalidDateTime) {\n throw new RecurrenceRuleError(\n `Failed to find a matching occurrence in ${index} iterations. ` +\n `Last iterated date: \"${result.date.toISOString()}\"`,\n );\n }\n if (this.reverse ? start.isBefore(result.date) : start.isAfter(result.date)) {\n throw new RecurrenceRuleError(\n 'An error occurred in a recurrence rule. If this happened using ' +\n 'the rSchedule provided recurrence rules, you should ' +\n 'open an issue in the rSchedule repo. The maintainer is going to ' +\n 'want to know how to recreate the error.',\n );\n }\n return result.date;\n }\n /**\n * Performs one run of the recurrence rules and returns the result.\n * It's a slightly optimized reducer function.\n */\n runRules(start) {\n let result = new ValidDateTime(start);\n for (const rule of this.rules) {\n if (result instanceof InvalidDateTime) {\n return result;\n }\n result = rule.run(result.date);\n }\n return result;\n }\n isDatePastEnd(date) {\n return this.reverse ? date.isBefore(this.start) : this.end && date.isAfter(this.end);\n }\n normalizeRunOutput(date) {\n return this.hasDuration ? date.set('duration', this.options.duration) : date;\n }\n normalizeDateTimeArgs(args) {\n return {\n start: args.start && normalizeDateTimeTimezone(args.start, this.options.start.timezone),\n end: args.end && normalizeDateTimeTimezone(args.end, this.options.start.timezone),\n };\n }\n}\n\nexport {\n ArgumentError,\n DateAdapter,\n DateAdapterBase,\n DateTime,\n InfiniteLoopError,\n InvalidDateAdapterError,\n InvalidDateTime,\n InvalidDateTimeError,\n RecurrenceRuleError,\n RecurrenceRulesIterator,\n RuleOptionError,\n ValidDateTime,\n cloneJSON,\n cloneRuleOptions,\n dateInputToDateAdapter,\n dateInputToDateTime,\n dateTimeSortComparer,\n freqToGranularity,\n getDaysInYear,\n getDifferenceBetweenWeekdays,\n isLeapYear,\n normalizeDateTimeTimezone,\n normalizeRuleOptions,\n numberSortComparer,\n orderedWeekdays,\n recurrenceRulesReducer,\n uniqDateTimes,\n};\n","import {\n freqToGranularity,\n ValidDateTime,\n InvalidDateTime,\n DateAdapter,\n RuleOptionError,\n numberSortComparer,\n getDifferenceBetweenWeekdays,\n RecurrenceRuleError,\n uniqDateTimes,\n dateTimeSortComparer,\n} from '@rschedule/core';\n\nclass RecurrenceRule {\n constructor(processor) {\n this.processor = processor;\n this.start = processor.start;\n this.end = processor.end;\n this.options = processor.options;\n }\n}\n\nclass FrequencyRule extends RecurrenceRule {\n constructor(processor, initDate) {\n super(processor);\n this.initDate = initDate;\n this.intervalUnit = freqToGranularity(this.options.frequency);\n this.firstIntervalStartDate = this.normalizedStartDate(this.options.start);\n this.intervalStartDate = this.firstIntervalStartDate;\n this.intervalEndDate = this.normalizedEndDate(this.firstIntervalStartDate);\n this.skipToInterval(this.initDate);\n }\n run(date) {\n return this.validateDate(new ValidDateTime(date));\n }\n validateDate(arg) {\n const { date } = arg;\n if (arg instanceof ValidDateTime && this.dateIsWithinInterval(date)) {\n return arg;\n }\n this.skipToInterval(date);\n return new InvalidDateTime(\n // if the interval is 1, date will always be within the interval\n this.dateIsWithinInterval(date) ? date : this.setToCurrentInterval(),\n );\n }\n setToCurrentInterval() {\n return this.intervalStartDate;\n }\n normalizedStartDate(date) {\n if (this.options.frequency === 'WEEKLY') {\n return date.granularity('week', { weekStart: this.options.weekStart });\n }\n return date.granularity(this.intervalUnit);\n }\n normalizedEndDate(start) {\n switch (this.options.frequency) {\n case 'YEARLY':\n return start.add(1, 'year');\n case 'MONTHLY':\n return start.add(1, 'month');\n case 'WEEKLY':\n return start.add(1, 'week');\n case 'DAILY':\n return start.add(1, 'day');\n case 'HOURLY':\n return start.add(1, 'hour');\n case 'MINUTELY':\n return start.add(1, 'minute');\n case 'SECONDLY':\n return start.add(1, 'second');\n case 'MILLISECONDLY':\n return start.add(1, 'millisecond');\n default:\n throw new Error(`Unknown frequency ${this.options.frequency}`);\n }\n }\n skipToInterval(date) {\n const amount = this.intervalDifference(date);\n this.intervalStartDate = this.firstIntervalStartDate.add(amount, this.intervalUnit);\n this.intervalEndDate = this.normalizedEndDate(this.intervalStartDate);\n }\n dateIsWithinInterval(date) {\n return this.intervalStartDate.isBeforeOrEqual(date) && this.intervalEndDate.isAfter(date);\n }\n intervalDifference(date) {\n return intervalDifferenceBetweenDates({\n first: this.firstIntervalStartDate,\n second: date,\n unit: this.intervalUnit,\n interval: this.options.interval,\n weekStart: this.options.weekStart,\n direction: 'after',\n });\n }\n}\n/**\n * Given the frequency (unit) and interval, this function finds\n * how many jumps forward the first date needs in order to equal\n * or exceed the second date.\n *\n * For example:\n *\n * 1. Unit is daily and interval is 1. The second date is 3 days\n * after the first. This will return 3.\n * 2. Unit is yearly and interval is 1. The second date is 3 days\n * after the first. This will return 0.\n * 3. Unit is yearly and interval is 3. The second date is 4 years\n * after the first. This will return 6.\n */\nfunction intervalDifferenceBetweenDates({ first, second, unit, interval, weekStart, direction }) {\n let difference = (() => {\n let intervalDuration;\n let months;\n switch (unit) {\n case 'year':\n months = (second.get('year') - first.get('year')) * 12;\n months = months + second.get('month') - first.get('month');\n return Math.floor(months / 12);\n case 'month':\n months = (second.get('year') - first.get('year')) * 12;\n months = months + second.get('month') - first.get('month');\n return months;\n case 'week':\n first = first.granularity('week', { weekStart });\n intervalDuration = DateAdapter.MILLISECONDS_IN_WEEK;\n break;\n case 'day':\n intervalDuration = DateAdapter.MILLISECONDS_IN_DAY;\n break;\n case 'hour':\n intervalDuration = DateAdapter.MILLISECONDS_IN_HOUR;\n break;\n case 'minute':\n intervalDuration = DateAdapter.MILLISECONDS_IN_MINUTE;\n break;\n case 'second':\n intervalDuration = DateAdapter.MILLISECONDS_IN_SECOND;\n break;\n case 'millisecond':\n intervalDuration = 1;\n break;\n default:\n throw new Error('Unexpected `unit` value');\n }\n const diff = second.valueOf() - first.valueOf();\n return Math.floor(diff / intervalDuration);\n })();\n const fn = direction === 'after' ? Math.ceil : Math.floor;\n difference = fn(difference / interval) * interval;\n return difference;\n}\n\nclass RevFrequencyRule extends FrequencyRule {\n setToCurrentInterval() {\n return this.intervalEndDate.subtract(1, 'millisecond');\n }\n intervalDifference(date) {\n return intervalDifferenceBetweenDates({\n first: this.firstIntervalStartDate,\n second: date,\n unit: this.intervalUnit,\n interval: this.options.interval,\n weekStart: this.options.weekStart,\n direction: 'before',\n });\n }\n}\n\nconst FREQUENCIES = [\n 'MILLISECONDLY',\n 'SECONDLY',\n 'MINUTELY',\n 'HOURLY',\n 'DAILY',\n 'WEEKLY',\n 'MONTHLY',\n 'YEARLY',\n];\nconst FrequencyRuleModule = {\n name: 'FrequencyRule',\n get: processor => {\n if (\n processor.options.byMillisecondOfSecond !== undefined ||\n processor.options.frequency !== 'MILLISECONDLY'\n ) {\n return null;\n }\n if (processor.reverse) return new RevFrequencyRule(processor, processor.end);\n return new FrequencyRule(processor, processor.start);\n },\n normalizeOptions: (options, norm) => {\n if (!FREQUENCIES.includes(options.frequency)) {\n throw new RuleOptionError(`\"frequency\" must be one of ${JSON.stringify(FREQUENCIES)}`);\n }\n if (options.interval !== undefined) {\n if (!Number.isInteger(options.interval)) {\n throw new RuleOptionError('\"interval\" expects a whole number');\n }\n if (options.interval < 1) {\n throw new RuleOptionError('\"interval\" cannot be less than 1');\n }\n }\n if (options.weekStart !== undefined) {\n if (!DateAdapter.WEEKDAYS.includes(options.weekStart)) {\n throw new RuleOptionError(\n `\"weekStart\" must be one of ${JSON.stringify(DateAdapter.WEEKDAYS)}`,\n );\n }\n }\n norm.frequency = options.frequency;\n norm.interval = options.interval || 1;\n norm.weekStart = options.weekStart || 'MO';\n },\n deps: () => [FrequencyRuleModule],\n};\n\nfunction ruleOptionFilled(option) {\n return Array.isArray(option) && option.length > 0;\n}\n\nconst freqCache = new WeakMap();\nclass RecurrenceRuleBase extends RecurrenceRule {\n constructor(processor) {\n super(processor);\n if (!freqCache.has(this.processor)) {\n freqCache.set(this.processor, new FrequencyRule(processor, processor.start));\n }\n this.frequency = freqCache.get(this.processor);\n }\n validateDate(arg) {\n return this.frequency.validateDate(arg);\n }\n}\nclass RevRecurrenceRuleBase extends RecurrenceRule {\n constructor(processor) {\n super(processor);\n if (!freqCache.has(this.processor)) {\n freqCache.set(this.processor, new RevFrequencyRule(processor, processor.end));\n }\n this.frequency = freqCache.get(this.processor);\n }\n validateDate(arg) {\n return this.frequency.validateDate(arg);\n }\n}\n\n/**\n * Contains shared logic for ByHourOfDay, ByMinuteOfHour,\n * BySecondOfMinute, and ByMillisecondOfSecond reverse rule pipes\n */\nclass RevByTimeOfUnitRule extends RevRecurrenceRuleBase {\n run(date) {\n // e.g. const currentTime = date.get('hour');\n const currentTime = date.get(this.granularity);\n // e.g. for (const time of this.options.byHourOfDay) {\n for (const time of this.option) {\n if (currentTime < time) continue;\n if (currentTime === time) {\n return this.validateDate(new ValidDateTime(date));\n }\n // e.g. return this.nextValidDate(args, date.endGranularity('day').set('hour', time));\n return this.validateDate(\n new InvalidDateTime(date.endGranularity(this.baseGranularity).set(this.granularity, time)),\n );\n }\n return this.validateDate(\n new InvalidDateTime(\n date\n // e.g. .endGranularity('day')\n .endGranularity(this.baseGranularity)\n // e.g. .subtract(1, 'day')\n .subtract(1, this.baseGranularity)\n // e.g. .set('hour', this.options.byHourOfDay[0]);\n .set(this.granularity, this.option[0]),\n ),\n );\n }\n}\n\nclass RevByMillisecondOfSecondRule extends RevByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'second';\n this.granularity = 'millisecond';\n this.option = this.options.byMillisecondOfSecond.slice().reverse();\n }\n}\n\n/**\n * Contains shared logic for ByHourOfDay, ByMinuteOfHour,\n * BySecondOfMinute, and ByMillisecondOfSecond rule pipes\n */\nclass ByTimeOfUnitRule extends RecurrenceRuleBase {\n run(date) {\n // e.g. const currentTime = date.get('hour');\n const currentTime = date.get(this.granularity);\n // e.g. for (const time of this.options.byHourOfDay) {\n for (const time of this.option) {\n if (currentTime > time) continue;\n if (currentTime === time) {\n return this.validateDate(new ValidDateTime(date));\n }\n // e.g. return this.nextValidDate(args, date.granularity('day').set('hour', time));\n return this.validateDate(\n new InvalidDateTime(date.granularity(this.baseGranularity).set(this.granularity, time)),\n );\n }\n return this.validateDate(\n new InvalidDateTime(\n date\n // e.g. .granularity('day')\n .granularity(this.baseGranularity)\n // e.g. .add(1, 'day')\n .add(1, this.baseGranularity)\n // e.g. .set('hour', this.options.byHourOfDay[0]);\n .set(this.granularity, this.option[0]),\n ),\n );\n }\n}\n\nclass ByMillisecondOfSecondRule extends ByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'second';\n this.granularity = 'millisecond';\n this.option = this.options.byMillisecondOfSecond;\n }\n}\n\nconst ByMillisecondOfSecondRuleModule = {\n name: 'ByMillisecondOfSecond',\n get: processor => {\n if (processor.options.byMillisecondOfSecond === undefined) return null;\n if (processor.reverse) return new RevByMillisecondOfSecondRule(processor);\n return new ByMillisecondOfSecondRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byMillisecondOfSecond !== undefined) {\n if (!ruleOptionFilled(options.byMillisecondOfSecond)) {\n throw new RuleOptionError('\"byMillisecondOfSecond\" expects a non-empty array');\n }\n if (options.byMillisecondOfSecond.some(num => num < 0 || num > 999)) {\n throw new RuleOptionError('\"byMillisecondOfSecond\" values must be >= 0 && <= 999');\n }\n norm.byMillisecondOfSecond = options.byMillisecondOfSecond;\n norm.byMillisecondOfSecond.sort(numberSortComparer);\n } else if (options.frequency !== 'MILLISECONDLY') {\n norm.byMillisecondOfSecond = [norm.start.get('millisecond')];\n }\n },\n deps: () => [FrequencyRuleModule, ByMillisecondOfSecondRuleModule],\n};\n\nclass RevBySecondOfMinuteRule extends RevByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'minute';\n this.granularity = 'second';\n this.option = this.options.bySecondOfMinute.slice().reverse();\n }\n}\n\nclass BySecondOfMinuteRule extends ByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'minute';\n this.granularity = 'second';\n this.option = this.options.bySecondOfMinute;\n }\n}\n\nconst BySecondOfMinuteRuleModule = {\n name: 'BySecondOfMinute',\n get: processor => {\n if (processor.options.bySecondOfMinute === undefined) return null;\n if (processor.reverse) return new RevBySecondOfMinuteRule(processor);\n return new BySecondOfMinuteRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.bySecondOfMinute !== undefined) {\n if (!ruleOptionFilled(options.bySecondOfMinute)) {\n throw new RuleOptionError('\"bySecondOfMinute\" expects a non-empty array');\n }\n if (options.bySecondOfMinute.some(num => num < 0 || num > 60)) {\n throw new RuleOptionError('\"bySecondOfMinute\" values must be >= 0 && <= 60');\n }\n norm.bySecondOfMinute = options.bySecondOfMinute;\n norm.bySecondOfMinute.sort(numberSortComparer);\n } else if (!['SECONDLY', 'MILLISECONDLY'].includes(options.frequency)) {\n norm.bySecondOfMinute = [norm.start.get('second')];\n }\n },\n deps: () => [FrequencyRuleModule, BySecondOfMinuteRuleModule, ByMillisecondOfSecondRuleModule],\n};\n\nclass RevByMinuteOfHourRule extends RevByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'hour';\n this.granularity = 'minute';\n this.option = this.options.byMinuteOfHour.slice().reverse();\n }\n}\n\nclass ByMinuteOfHourRule extends ByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'hour';\n this.granularity = 'minute';\n this.option = this.options.byMinuteOfHour;\n }\n}\n\nconst ByMinuteOfHourRuleModule = {\n name: 'ByMinuteOfHour',\n get: processor => {\n if (processor.options.byMinuteOfHour === undefined) return null;\n if (processor.reverse) return new RevByMinuteOfHourRule(processor);\n return new ByMinuteOfHourRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byMinuteOfHour !== undefined) {\n if (!ruleOptionFilled(options.byMinuteOfHour)) {\n throw new RuleOptionError('\"byMinuteOfHour\" expects a non-empty array');\n }\n if (options.byMinuteOfHour.some(num => num < 0 || num > 59)) {\n throw new RuleOptionError('\"byMinuteOfHour\" values must be >= 0 && <= 59');\n }\n norm.byMinuteOfHour = options.byMinuteOfHour;\n norm.byMinuteOfHour.sort(numberSortComparer);\n } else if (!['MINUTELY', 'SECONDLY', 'MILLISECONDLY'].includes(options.frequency)) {\n norm.byMinuteOfHour = [norm.start.get('minute')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nclass RevByHourOfDayRule extends RevByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'day';\n this.granularity = 'hour';\n this.option = this.options.byHourOfDay.slice().reverse();\n }\n}\n\nclass ByHourOfDayRule extends ByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'day';\n this.granularity = 'hour';\n this.option = this.options.byHourOfDay;\n }\n}\n\nconst ByHourOfDayRuleModule = {\n name: 'ByHourOfDay',\n get: processor => {\n if (processor.options.byHourOfDay === undefined) return null;\n if (processor.reverse) return new RevByHourOfDayRule(processor);\n return new ByHourOfDayRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byHourOfDay !== undefined) {\n if (!ruleOptionFilled(options.byHourOfDay)) {\n throw new RuleOptionError('\"byHourOfDay\" expects a non-empty array');\n }\n if (options.byHourOfDay.some(num => num < 0 || num > 23)) {\n throw new RuleOptionError('\"byHourOfDay\" values must be >= 0 && <= 23');\n }\n norm.byHourOfDay = options.byHourOfDay;\n norm.byHourOfDay.sort(numberSortComparer);\n } else if (['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY'].includes(options.frequency)) {\n norm.byHourOfDay = [norm.start.get('hour')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nfunction getNextWeekday(date, weekday) {\n return date.add(getDifferenceBetweenWeekdays(date.get('weekday'), weekday), 'day');\n}\n\nfunction getNthWeekdayOfMonth(date, weekday, nth) {\n let base = date.set('day', 1);\n if (nth < 0) {\n base = base.add(1, 'month');\n }\n base = getNextWeekday(base, weekday);\n // when nth is negative, adding it will act as subtraction\n return nth < 0 ? base.add(nth, 'week') : base.add(nth - 1, 'week');\n}\n\nclass ByDayOfMonthRule extends RecurrenceRuleBase {\n run(date) {\n const normalizedByDayOfMonth = normalizeByDayOfMonth(\n date,\n this.options.byDayOfMonth,\n this.options.byDayOfWeek,\n );\n const currentDay = date.get('day');\n for (const day of normalizedByDayOfMonth) {\n if (currentDay > day) continue;\n if (currentDay === day) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(date.granularity('month').set('day', day)));\n }\n let next;\n let nextMonth = date;\n let index = 0;\n while (!next && index < 30) {\n nextMonth = nextMonth.granularity('month').add(1, 'month');\n next = normalizeByDayOfMonth(\n nextMonth,\n this.options.byDayOfMonth,\n this.options.byDayOfWeek,\n )[0];\n index++;\n }\n if (index >= 13) {\n throw new RecurrenceRuleError('byDayOfMonth Infinite while loop');\n }\n return this.validateDate(new InvalidDateTime(nextMonth.set('day', next)));\n }\n}\n/**\n * Does a few things:\n *\n * 1. filters out byDayOfMonth entries which are not applicable\n * to current month\n * 2. negative entries to positive ones\n * 3. if a byDayOfWeek option is given, removes days which are\n * not on the correct day of the week\n */\nfunction normalizeByDayOfMonth(date, byDayOfMonth, byDayOfWeek) {\n const lengthOfMonth = date.endGranularity('month').get('day');\n let normalizedByDayOfMonth = byDayOfMonth\n .filter(day => lengthOfMonth >= Math.abs(day))\n .map(day => (day > 0 ? day : lengthOfMonth + day + 1));\n if (byDayOfWeek) {\n const base = date.granularity('month');\n const filteredByDayOfMonth = [];\n byDayOfWeek.forEach(entry => {\n if (typeof entry === 'string') {\n filteredByDayOfMonth.push(\n ...normalizedByDayOfMonth.filter(day => base.set('day', day).get('weekday') === entry),\n );\n return;\n }\n const nthWeekdayOfMonth = getNthWeekdayOfMonth(date, ...entry).get('day');\n if (normalizedByDayOfMonth.includes(nthWeekdayOfMonth)) {\n filteredByDayOfMonth.push(nthWeekdayOfMonth);\n }\n });\n normalizedByDayOfMonth = Array.from(new Set(filteredByDayOfMonth));\n }\n return normalizedByDayOfMonth.sort((a, b) => {\n if (a > b) return 1;\n if (a < b) return -1;\n else return 0;\n });\n}\n\nclass RevByDayOfMonthRule extends RevRecurrenceRuleBase {\n run(date) {\n const normalizedByDayOfMonth = normalizeByDayOfMonth(\n date,\n this.options.byDayOfMonth,\n this.options.byDayOfWeek,\n ).reverse();\n const currentDay = date.get('day');\n for (const day of normalizedByDayOfMonth) {\n if (currentDay < day) continue;\n if (currentDay === day) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(date.endGranularity('month').set('day', day)));\n }\n let next;\n let nextMonth = date;\n let index = 0;\n while (!next && index < 30) {\n nextMonth = nextMonth.endGranularity('month').subtract(1, 'month');\n next = normalizeByDayOfMonth(\n nextMonth,\n this.options.byDayOfMonth,\n this.options.byDayOfWeek,\n ).pop();\n index++;\n }\n if (index >= 13) {\n throw new RecurrenceRuleError('byDayOfMonth Infinite while loop');\n }\n return this.validateDate(new InvalidDateTime(nextMonth.set('day', next)));\n }\n}\n\nconst ByDayOfMonthRuleModule = {\n name: 'ByDayOfMonth',\n get: processor => {\n if (processor.options.byDayOfMonth === undefined) return null;\n if (processor.reverse) return new RevByDayOfMonthRule(processor);\n return new ByDayOfMonthRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byDayOfMonth !== undefined) {\n if (options.frequency === 'WEEKLY') {\n throw new RuleOptionError('when \"frequency\" is \"WEEKLY\", \"byDayOfMonth\" cannot be present');\n }\n if (!ruleOptionFilled(options.byDayOfMonth)) {\n throw new RuleOptionError('\"byDayOfMonth\" expects a non-empty array');\n }\n if (options.byDayOfMonth.some(num => num === 0 || num < -31 || num > 31)) {\n throw new RuleOptionError(\n '\"byDayOfMonth\" values must be `num !== 0 && num <= 31 && num >= -31`',\n );\n }\n norm.byDayOfMonth = options.byDayOfMonth.slice();\n } else if (\n !(ruleOptionFilled(options.byDayOfWeek) || ruleOptionFilled(options.byDayOfYear)) &&\n ['YEARLY', 'MONTHLY'].includes(options.frequency)\n ) {\n norm.byDayOfMonth = [norm.start.get('day')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByDayOfMonthRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nfunction getNthWeekdayOfYear(date, weekday, nth) {\n let base = date.set('month', 1).set('day', 1);\n if (nth < 0) {\n base = base.add(1, 'year');\n }\n base = getNextWeekday(base, weekday);\n // when nth is negative, adding it will act as subtraction\n return nth < 0 ? base.add(nth, 'week') : base.add(nth - 1, 'week');\n}\n\nfunction getPreviousWeekday(date, weekday) {\n const diff = getDifferenceBetweenWeekdays(date.get('weekday'), weekday);\n return date.subtract(diff === 0 ? 0 : 7 - diff, 'day');\n}\n\nclass RevByDayOfWeekRule extends RevRecurrenceRuleBase {\n run(date) {\n if (this.options.frequency === 'YEARLY') {\n return this.options.byMonthOfYear === undefined\n ? this.expandYearly(date)\n : this.expandMonthly(date);\n } else if (this.options.frequency === 'MONTHLY') {\n return this.expandMonthly(date);\n }\n return this.expand(date);\n }\n expandYearly(date) {\n let next = getPrevWeekdaysOfYear(date, this.options.byDayOfWeek)[0];\n let index = 0;\n let base = date;\n // If we can't find a valid date this year,\n // search the previous year. Only search the past 28 years.\n // (the calendar repeats on a 28 year cycle, according\n // to the internet).\n while (!next && index < 28) {\n index++;\n base = base.granularity('year').subtract(1, 'millisecond');\n next = getPrevWeekdaysOfYear(base, this.options.byDayOfWeek)[0];\n }\n if (!next) {\n throw new RecurrenceRuleError(\n 'The byDayOfWeek rule appears to contain an impossible combination',\n );\n }\n return this.result(date, next);\n }\n expandMonthly(date) {\n let next = getPrevWeekdaysOfMonth(date, this.options.byDayOfWeek)[0];\n let index = 0;\n let base = date;\n // TODO: performance improvment\n // If, in the first year, a match isn't found, we should be able to\n // jumpt to the previous leap year and check that. Or, if already on\n // a leap year, we can just error immediately.\n // If we can't find a valid date this month,\n // search the previous month. Only search the past 4 years\n // (to account for leap year).\n while (!next && index < 50) {\n index++;\n base = base.granularity('month').subtract(1, 'millisecond');\n next = getPrevWeekdaysOfMonth(base, this.options.byDayOfWeek)[0];\n }\n if (!next) {\n throw new RecurrenceRuleError(\n 'The byDayOfWeek rule appears to contain an impossible combination',\n );\n }\n return this.result(date, next);\n }\n expand(date) {\n const next = this.options.byDayOfWeek\n .map(weekday => getPreviousWeekday(date, weekday))\n .sort(dateTimeSortComparer)\n .pop();\n return this.result(date, next);\n }\n result(date, next) {\n if (next.isEqual(date)) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(next.endGranularity('day')));\n }\n}\n/** For each byDayOfWeek entry, find the previous DateTime */\nfunction getPrevWeekdaysOfYear(date, byDayOfWeek) {\n const normalizedNthWeekdaysOfYear = byDayOfWeek\n .filter(entry => Array.isArray(entry))\n .map(entry => getNthWeekdayOfYear(date, ...entry));\n const normalizedNextWeekdays = byDayOfWeek\n .filter(entry => typeof entry === 'string')\n .map(weekday => getPreviousWeekday(date, weekday))\n .filter(entry => entry.get('year') === date.get('year'));\n return uniqDateTimes([...normalizedNthWeekdaysOfYear, ...normalizedNextWeekdays])\n .filter(entry => entry.isBeforeOrEqual(date))\n .sort(dateTimeSortComparer)\n .reverse();\n}\n/** For each byDayOfWeek entry, find the previous DateTime */\nfunction getPrevWeekdaysOfMonth(date, byDayOfWeek) {\n const normalizedNthWeekdaysOfMonth = byDayOfWeek\n .filter(entry => Array.isArray(entry))\n .map(entry => getNthWeekdayOfMonth(date, ...entry));\n const normalizedNextWeekdays = byDayOfWeek\n .filter(entry => typeof entry === 'string')\n .map(weekday => getPreviousWeekday(date, weekday))\n .filter(\n entry => entry.get('year') === date.get('year') && entry.get('month') === date.get('month'),\n );\n return uniqDateTimes([...normalizedNthWeekdaysOfMonth, ...normalizedNextWeekdays])\n .filter(entry => entry.isBeforeOrEqual(date))\n .sort(dateTimeSortComparer)\n .reverse();\n}\n\nclass ByDayOfWeekRule extends RecurrenceRuleBase {\n run(date) {\n if (this.options.frequency === 'YEARLY') {\n return this.options.byMonthOfYear === undefined\n ? this.expandYearly(date)\n : this.expandMonthly(date);\n } else if (this.options.frequency === 'MONTHLY') {\n return this.expandMonthly(date);\n }\n return this.expand(date);\n }\n expandYearly(date) {\n let next = getNextWeekdaysOfYear(date, this.options.byDayOfWeek)[0];\n let index = 0;\n let base = date;\n // If we can't find a valid date this year,\n // search next year. Only search the next 28 years.\n // (the calendar repeats on a 28 year cycle, according\n // to the internet).\n while (!next && index < 28) {\n index++;\n base = base.granularity('year').add(1, 'year');\n next = getNextWeekdaysOfYear(base, this.options.byDayOfWeek)[0];\n }\n if (!next) {\n throw new RecurrenceRuleError(\n 'The byDayOfWeek rule appears to contain an impossible combination',\n );\n }\n return this.result(date, next);\n }\n expandMonthly(date) {\n let next = getNextWeekdaysOfMonth(date, this.options.byDayOfWeek)[0];\n let index = 0;\n let base = date;\n // TODO: performance improvment\n // If, in the first year, a match isn't found, we should be able to\n // jumpt to the next leap year and check that. Or, if already on\n // a leap year, we can just error immediately.\n // If we can't find a valid date this month,\n // search the next month. Only search the next 4 years\n // (to account for leap year).\n while (!next && index < 50) {\n index++;\n base = base.granularity('month').add(1, 'month');\n next = getNextWeekdaysOfMonth(base, this.options.byDayOfWeek)[0];\n }\n if (!next) {\n throw new RecurrenceRuleError(\n 'The byDayOfWeek rule appears to contain an impossible combination',\n );\n }\n return this.result(date, next);\n }\n expand(date) {\n const next = this.options.byDayOfWeek\n .map(weekday => getNextWeekday(date, weekday))\n .sort(dateTimeSortComparer)[0];\n return this.result(date, next);\n }\n result(date, next) {\n if (next.isEqual(date)) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(next.granularity('day')));\n }\n}\n/** For each byDayOfWeek entry, find the next DateTime */\nfunction getNextWeekdaysOfYear(date, byDayOfWeek) {\n const normalizedNthWeekdaysOfYear = byDayOfWeek\n .filter(entry => Array.isArray(entry))\n .map(entry => getNthWeekdayOfYear(date, ...entry));\n const normalizedNextWeekdays = byDayOfWeek\n .filter(entry => typeof entry === 'string')\n .map(weekday => getNextWeekday(date, weekday))\n .filter(entry => entry.get('year') === date.get('year'));\n return uniqDateTimes([...normalizedNthWeekdaysOfYear, ...normalizedNextWeekdays])\n .filter(entry => entry.isAfterOrEqual(date))\n .sort(dateTimeSortComparer);\n}\n/** For each byDayOfWeek entry, find the next DateTime */\nfunction getNextWeekdaysOfMonth(date, byDayOfWeek) {\n const normalizedNthWeekdaysOfMonth = byDayOfWeek\n .filter(entry => Array.isArray(entry))\n .map(entry => getNthWeekdayOfMonth(date, ...entry));\n const normalizedNextWeekdays = byDayOfWeek\n .filter(entry => typeof entry === 'string')\n .map(weekday => getNextWeekday(date, weekday))\n .filter(\n entry => entry.get('year') === date.get('year') && entry.get('month') === date.get('month'),\n );\n return uniqDateTimes([...normalizedNthWeekdaysOfMonth, ...normalizedNextWeekdays])\n .filter(entry => entry.isAfterOrEqual(date))\n .sort(dateTimeSortComparer);\n}\n\nconst ByDayOfWeekRuleModule = {\n name: 'ByDayOfWeek',\n get: processor => {\n if (processor.options.byDayOfWeek === undefined) return null;\n if (processor.reverse) return new RevByDayOfWeekRule(processor);\n return new ByDayOfWeekRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byDayOfWeek !== undefined) {\n if (!ruleOptionFilled(options.byDayOfWeek)) {\n throw new RuleOptionError('\"byDayOfWeek\" expects a non-empty array');\n }\n const invalidWeeday = options.byDayOfWeek.find(day =>\n Array.isArray(day)\n ? !DateAdapter.WEEKDAYS.includes(day[0])\n : !DateAdapter.WEEKDAYS.includes(day),\n );\n if (invalidWeeday) {\n throw new RuleOptionError(\n `\"byDayOfWeek\" expects weedays in the form ` +\n `${JSON.stringify(DateAdapter.WEEKDAYS)} but \"${invalidWeeday}\" was provided`,\n );\n }\n if (\n !['YEARLY', 'MONTHLY'].includes(options.frequency) &&\n options.byDayOfWeek.some(weekday => Array.isArray(weekday))\n ) {\n throw new RuleOptionError(\n '\"byDayOfWeek\" can only include a numeric value (i.e. `[string, number]`) when the \"frequency\" is ' +\n 'either \"MONTHLY\" or \"YEARLY\"',\n );\n }\n if (\n options.frequency === 'MONTHLY' &&\n options.byDayOfWeek.some(\n weekday =>\n Array.isArray(weekday) && (weekday[1] < -31 || weekday[1] === 0 || weekday[1] > 31),\n )\n ) {\n throw new RuleOptionError(\n 'when \"frequency\" is \"MONTHLY\", each \"byDayOfWeek\" can optionally only' +\n ' have a numeric value >= -31 and <= 31 and !== 0',\n );\n }\n if (\n options.frequency === 'YEARLY' &&\n options.byDayOfWeek.some(\n weekday =>\n Array.isArray(weekday) && (weekday[1] < -366 || weekday[1] === 0 || weekday[1] > 366),\n )\n ) {\n throw new RuleOptionError(\n 'when \"frequency\" is \"YEARLY\", each \"byDayOfWeek\" can optionally only' +\n ' have a numeric value >= -366 and <= 366 and !== 0',\n );\n }\n norm.byDayOfWeek = options.byDayOfWeek;\n } else if (!ruleOptionFilled(options.byDayOfMonth) && options.frequency === 'WEEKLY') {\n norm.byDayOfWeek = [norm.start.get('weekday')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByDayOfWeekRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nclass RevByMonthOfYearRule extends RevRecurrenceRuleBase {\n constructor() {\n super(...arguments);\n this.option = this.processor.options.byMonthOfYear.slice().reverse();\n }\n run(date) {\n const currentMonth = date.get('month');\n for (const month of this.option) {\n if (currentMonth < month) continue;\n if (currentMonth === month) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(\n new InvalidDateTime(date.endGranularity('year').set('month', month)),\n );\n }\n return this.validateDate(\n new InvalidDateTime(\n date\n .endGranularity('year')\n .subtract(1, 'year')\n .set('month', this.option[0]),\n ),\n );\n }\n}\n\nclass ByMonthOfYearRule extends RecurrenceRuleBase {\n run(date) {\n const currentMonth = date.get('month');\n for (const month of this.options.byMonthOfYear) {\n if (currentMonth > month) continue;\n if (currentMonth === month) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(date.granularity('year').set('month', month)));\n }\n return this.validateDate(\n new InvalidDateTime(\n date\n .granularity('year')\n .add(1, 'year')\n .set('month', this.options.byMonthOfYear[0]),\n ),\n );\n }\n}\n\nconst ByMonthOfYearRuleModule = {\n name: 'ByMonthOfYear',\n get: processor => {\n if (processor.options.byMonthOfYear === undefined) return null;\n if (processor.reverse) {\n return new RevByMonthOfYearRule(processor);\n }\n return new ByMonthOfYearRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byMonthOfYear !== undefined) {\n if (!ruleOptionFilled(options.byMonthOfYear)) {\n throw new RuleOptionError('\"byMonthOfYear\" expects a non-empty array');\n }\n if (options.byMonthOfYear.some(num => num < 1 || num > 12)) {\n throw new RuleOptionError('\"byMonthOfYear\" values must be `num >= 1 && num >= 12`');\n }\n norm.byMonthOfYear = options.byMonthOfYear.slice();\n norm.byMonthOfYear.sort(numberSortComparer);\n } else if (\n !(\n ruleOptionFilled(options.byDayOfMonth) ||\n ruleOptionFilled(options.byDayOfWeek) ||\n ruleOptionFilled(options.byDayOfYear)\n ) &&\n options.frequency === 'YEARLY'\n ) {\n norm.byMonthOfYear = [norm.start.get('month')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByMonthOfYearRuleModule,\n ByDayOfMonthRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nconst ICAL_RULES = [\n FrequencyRuleModule,\n ByMonthOfYearRuleModule,\n ByDayOfMonthRuleModule,\n ByDayOfWeekRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n];\n\nexport {\n ByDayOfMonthRule,\n ByDayOfMonthRuleModule,\n ByDayOfWeekRule,\n ByDayOfWeekRuleModule,\n ByHourOfDayRule,\n ByHourOfDayRuleModule,\n ByMillisecondOfSecondRule,\n ByMillisecondOfSecondRuleModule,\n ByMinuteOfHourRule,\n ByMinuteOfHourRuleModule,\n ByMonthOfYearRule,\n ByMonthOfYearRuleModule,\n BySecondOfMinuteRule,\n BySecondOfMinuteRuleModule,\n FrequencyRule,\n FrequencyRuleModule,\n ICAL_RULES,\n RevByDayOfMonthRule,\n RevByDayOfWeekRule,\n RevByHourOfDayRule,\n RevByMillisecondOfSecondRule,\n RevByMinuteOfHourRule,\n RevByMonthOfYearRule,\n RevBySecondOfMinuteRule,\n RevFrequencyRule,\n getPrevWeekdaysOfMonth,\n getPrevWeekdaysOfYear,\n};\n","import { Dates, Rule, Schedule } from '@rschedule/core/generators';\nimport {\n serializeDataToJSON,\n ParseJSONError,\n registerJSONSerializerFn,\n} from '@rschedule/json-tools';\nimport { DateAdapterBase, cloneJSON } from '@rschedule/core';\n\nDates.prototype.toJSON = function serialize(opts = {}) {\n const json = {\n type: 'Dates',\n dates: this.adapters.map(adapter => adapter.toJSON()),\n };\n if (!opts.nested) json.timezone = this.timezone;\n serializeDataToJSON(this, json, opts);\n return json;\n};\nDates.fromJSON = function parse(json, options = {}) {\n if (json.type !== 'Dates') {\n throw new ParseJSONError('Invalid Dates JSON');\n }\n return new Dates({\n dates: json.dates.map(date => DateAdapterBase.adapter.fromJSON(date)),\n data: typeof options.data === 'function' ? options.data(json) : json.data,\n timezone: options.timezone || json.timezone,\n });\n};\nregisterJSONSerializerFn('Dates', Dates.fromJSON);\n\nRule.prototype.toJSON = function serialize(opts = {}) {\n const json = {\n type: 'Rule',\n config: Object.assign(Object.assign({}, cloneJSON(this.options)), {\n start: this.normalizeDateInput(this.options.start).toJSON(),\n }),\n };\n if (this.options.end) {\n json.config.end = this.normalizeDateInput(this.options.end).toJSON();\n }\n if (!opts.nested) json.timezone = this.timezone;\n serializeDataToJSON(this, json, opts);\n return json;\n};\nRule.fromJSON = function fromJSON(json, options = {}) {\n const config = Object.assign(Object.assign({}, json.config), {\n start: DateAdapterBase.adapter.fromJSON(json.config.start),\n end: json.config.end && DateAdapterBase.adapter.fromJSON(json.config.end),\n });\n return new Rule(config, {\n data: typeof options.data === 'function' ? options.data(json) : json.data,\n timezone: options.timezone || json.timezone,\n });\n};\nregisterJSONSerializerFn('Rule', Rule.fromJSON);\n\nSchedule.prototype.toJSON = function serialize(opts = {}) {\n const json = {\n type: 'Schedule',\n rrules: this.rrules.map(rule =>\n rule.toJSON(Object.assign(Object.assign({}, opts), { nested: true })),\n ),\n exrules: this.exrules.map(rule =>\n rule.toJSON(Object.assign(Object.assign({}, opts), { nested: true })),\n ),\n rdates: this.rdates.toJSON(Object.assign(Object.assign({}, opts), { nested: true })),\n exdates: this.exdates.toJSON(Object.assign(Object.assign({}, opts), { nested: true })),\n };\n if (!opts.nested) json.timezone = this.timezone;\n serializeDataToJSON(this, json, opts);\n return json;\n};\nSchedule.fromJSON = function parse(json, options = {}) {\n if (json.type !== 'Schedule') {\n throw new ParseJSONError('Invalid Schedule JSON');\n }\n return new Schedule({\n rrules: json.rrules.map(rule =>\n Rule.fromJSON(rule, Object.assign({ timezone: json.timezone }, options)),\n ),\n exrules: json.exrules.map(rule =>\n Rule.fromJSON(rule, Object.assign({ timezone: json.timezone }, options)),\n ),\n rdates: Dates.fromJSON(json.rdates, Object.assign({ timezone: json.timezone }, options)),\n exdates: Dates.fromJSON(json.exdates, Object.assign({ timezone: json.timezone }, options)),\n data: typeof options.data === 'function' ? options.data(json) : json.data,\n timezone: options.timezone || json.timezone,\n });\n};\nregisterJSONSerializerFn('Schedule', Schedule.fromJSON);\n","import { OccurrenceGenerator } from '@rschedule/core/generators';\n\nclass ParseJSONError extends Error {}\nclass SerializeJSONError extends Error {}\nOccurrenceGenerator.JSON_FN_MAP = new Map();\nOccurrenceGenerator.prototype.toJSON = function serialize(opts) {\n throw new SerializeJSONError(\n `To support smaller bundles, ${this.constructor.name}#toJSON() ` +\n `must be manually added. See \"@rschedule/json-tools\" in the rSchedule docs.`,\n );\n};\nOccurrenceGenerator.fromJSON = function parse(json, options) {\n if (typeof json !== 'object' || json === null) {\n throw new ParseJSONError(`Invalid json \"${json}\"`);\n }\n const fn = OccurrenceGenerator.JSON_FN_MAP.get(json.type);\n if (!fn) {\n throw new ParseJSONError(\n `Unknown rSchedule object type \"${json.type}\". Have you added a json serializer ` +\n `for \"${json.type}\"? ` +\n `See \"@rschedule/json-tools\" in the rSchedule docs.`,\n );\n }\n return fn(json, options);\n};\nfunction serializeDataToJSON(gen, json, opt) {\n if (!opt.data) return;\n if (opt.data === true) {\n json.data = gen.data;\n } else {\n json.data = opt.data(gen);\n }\n if (json.data === undefined) delete json.data;\n}\nfunction registerJSONSerializerFn(name, fn) {\n OccurrenceGenerator.JSON_FN_MAP.set(name, fn);\n}\n\nexport { ParseJSONError, SerializeJSONError, registerJSONSerializerFn, serializeDataToJSON };\n","import { DateAdapterBase, InvalidDateAdapterError, ArgumentError } from '@rschedule/core';\n\nclass StandardDateAdapter extends DateAdapterBase {\n constructor(date, options = {}) {\n super(undefined, options);\n if (!['UTC', null, undefined].includes(options.timezone)) {\n throw new InvalidDateAdapterError(\n `StandardDateAdapter only supports \"UTC\" and ` +\n `local time zones but \"${options.timezone}\" was provided.`,\n );\n }\n this._date = new Date(date);\n this.timezone = options.timezone !== undefined ? options.timezone : null;\n this.assertIsValid();\n }\n static isDate(object) {\n return Object.prototype.toString.call(object) === '[object Date]';\n }\n static fromDate(date, options) {\n return new StandardDateAdapter(date, options);\n }\n static fromJSON(json) {\n const args = [\n json.year,\n json.month - 1,\n json.day,\n json.hour,\n json.minute,\n json.second,\n json.millisecond,\n ];\n switch (json.timezone) {\n case 'UTC': {\n return new StandardDateAdapter(new Date(Date.UTC(...args)), {\n timezone: 'UTC',\n duration: json.duration,\n });\n }\n case null: {\n return new StandardDateAdapter(new Date(...args), {\n timezone: null,\n duration: json.duration,\n });\n }\n default:\n throw new InvalidDateAdapterError(\n 'The `StandardDateAdapter` only supports datetimes in ' +\n `UTC or LOCAL (null) time. You provided a JSON object ` +\n `with timezone \"${json.timezone}\".`,\n );\n }\n }\n static fromDateTime(datetime) {\n const date = StandardDateAdapter.fromJSON(datetime.toJSON());\n date.generators.push(...datetime.generators);\n return date;\n }\n get date() {\n return new Date(this._date);\n }\n get end() {\n if (!this.duration) return;\n if (this._end) return this._end;\n this._end = StandardDateAdapter.fromDateTime(\n this.toDateTime().add(this.duration, 'millisecond'),\n ).date;\n return this._end;\n }\n set(prop, value) {\n if (prop === 'timezone') {\n if (this.timezone === value) return this;\n else {\n return new StandardDateAdapter(this._date, {\n timezone: value,\n duration: this.duration,\n generators: this.generators,\n });\n }\n } else if (prop === 'duration') {\n if (this.duration === value) return this;\n else {\n return new StandardDateAdapter(this._date, {\n timezone: this.timezone,\n duration: value,\n generators: this.generators,\n });\n }\n }\n throw new ArgumentError(`Unknown prop \"${prop}\" for StandardDateAdapter#set()`);\n }\n valueOf() {\n return this._date.valueOf();\n }\n toJSON() {\n let json;\n if (this.timezone === 'UTC') {\n json = {\n timezone: this.timezone,\n year: this._date.getUTCFullYear(),\n month: this._date.getUTCMonth() + 1,\n day: this._date.getUTCDate(),\n hour: this._date.getUTCHours(),\n minute: this._date.getUTCMinutes(),\n second: this._date.getUTCSeconds(),\n millisecond: this._date.getUTCMilliseconds(),\n };\n } else {\n json = {\n timezone: this.timezone,\n year: this._date.getFullYear(),\n month: this._date.getMonth() + 1,\n day: this._date.getDate(),\n hour: this._date.getHours(),\n minute: this._date.getMinutes(),\n second: this._date.getSeconds(),\n millisecond: this._date.getMilliseconds(),\n };\n }\n if (this.duration) {\n json.duration = this.duration;\n }\n return json;\n }\n assertIsValid() {\n if (!StandardDateAdapter.isDate(this._date) || isNaN(this._date.valueOf())) {\n throw new InvalidDateAdapterError('StandardDateAdapter has invalid date.');\n } else if (![null, 'UTC'].includes(this.timezone)) {\n throw new InvalidDateAdapterError(\n 'StandardDateAdapter only supports local (null) and UTC timezones but ' +\n `\"${this.timezone}\" was specified.`,\n );\n } else if (this.duration && this.duration <= 0) {\n throw new InvalidDateAdapterError('If provided, duration must be greater than 0.');\n }\n return true;\n }\n}\nStandardDateAdapter.hasTimezoneSupport = false;\n\nexport { StandardDateAdapter };\n","import { DateAdapterBase } from '@rschedule/core';\nimport { Rule } from '@rschedule/core/generators';\nimport { ICAL_RULES } from '@rschedule/core/rules/ICAL_RULES';\nimport { StandardDateAdapter } from '@rschedule/standard-date-adapter';\n\nDateAdapterBase.adapter = StandardDateAdapter;\nRule.recurrenceRules = ICAL_RULES;\n","/*!\n * accounting.js v0.4.2\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.4.2';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is an array\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((?=\\d+)(.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '') // strip out any cruft\n\t\t\t\t.replace(decimal, '.') // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\n\t\tvar exponentialForm = Number(lib.unformat(value) + 'e' + precision);\n\t\tvar rounded = Math.round(exponentialForm);\n\t\tvar finalResult = Number(rounded + 'e-' + precision).toFixed(precision);\n\t\treturn finalResult;\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list || !isArray(list)) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n","const Utils = require(\"./util\");\nconst pth = require(\"path\");\nconst ZipEntry = require(\"./zipEntry\");\nconst ZipFile = require(\"./zipFile\");\n\nconst get_Bool = (val, def) => (typeof val === \"boolean\" ? val : def);\nconst get_Str = (val, def) => (typeof val === \"string\" ? val : def);\n\nconst defaultOptions = {\n // option \"noSort\" : if true it disables files sorting\n noSort: false,\n // read entries during load (initial loading may be slower)\n readEntries: false,\n // default method is none\n method: Utils.Constants.NONE,\n // file system\n fs: null\n};\n\nmodule.exports = function (/**String*/ input, /** object */ options) {\n let inBuffer = null;\n\n // create object based default options, allowing them to be overwritten\n const opts = Object.assign(Object.create(null), defaultOptions);\n\n // test input variable\n if (input && \"object\" === typeof input) {\n // if value is not buffer we accept it to be object with options\n if (!(input instanceof Uint8Array)) {\n Object.assign(opts, input);\n input = opts.input ? opts.input : undefined;\n if (opts.input) delete opts.input;\n }\n\n // if input is buffer\n if (Buffer.isBuffer(input)) {\n inBuffer = input;\n opts.method = Utils.Constants.BUFFER;\n input = undefined;\n }\n }\n\n // assign options\n Object.assign(opts, options);\n\n // instanciate utils filesystem\n const filetools = new Utils(opts);\n\n // if input is file name we retrieve its content\n if (input && \"string\" === typeof input) {\n // load zip file\n if (filetools.fs.existsSync(input)) {\n opts.method = Utils.Constants.FILE;\n opts.filename = input;\n inBuffer = filetools.fs.readFileSync(input);\n } else {\n throw new Error(Utils.Errors.INVALID_FILENAME);\n }\n }\n\n // create variable\n const _zip = new ZipFile(inBuffer, opts);\n\n const { canonical, sanitize } = Utils;\n\n function getEntry(/**Object*/ entry) {\n if (entry && _zip) {\n var item;\n // If entry was given as a file name\n if (typeof entry === \"string\") item = _zip.getEntry(entry);\n // if entry was given as a ZipEntry object\n if (typeof entry === \"object\" && typeof entry.entryName !== \"undefined\" && typeof entry.header !== \"undefined\") item = _zip.getEntry(entry.entryName);\n\n if (item) {\n return item;\n }\n }\n return null;\n }\n\n function fixPath(zipPath) {\n const { join, normalize, sep } = pth.posix;\n // convert windows file separators and normalize\n return join(\".\", normalize(sep + zipPath.split(\"\\\\\").join(sep) + sep));\n }\n\n return {\n /**\n * Extracts the given entry from the archive and returns the content as a Buffer object\n * @param entry ZipEntry object or String with the full path of the entry\n *\n * @return Buffer or Null in case of error\n */\n readFile: function (/**Object*/ entry, /*String, Buffer*/ pass) {\n var item = getEntry(entry);\n return (item && item.getData(pass)) || null;\n },\n\n /**\n * Asynchronous readFile\n * @param entry ZipEntry object or String with the full path of the entry\n * @param callback\n *\n * @return Buffer or Null in case of error\n */\n readFileAsync: function (/**Object*/ entry, /**Function*/ callback) {\n var item = getEntry(entry);\n if (item) {\n item.getDataAsync(callback);\n } else {\n callback(null, \"getEntry failed for:\" + entry);\n }\n },\n\n /**\n * Extracts the given entry from the archive and returns the content as plain text in the given encoding\n * @param entry ZipEntry object or String with the full path of the entry\n * @param encoding Optional. If no encoding is specified utf8 is used\n *\n * @return String\n */\n readAsText: function (/**Object*/ entry, /**String=*/ encoding) {\n var item = getEntry(entry);\n if (item) {\n var data = item.getData();\n if (data && data.length) {\n return data.toString(encoding || \"utf8\");\n }\n }\n return \"\";\n },\n\n /**\n * Asynchronous readAsText\n * @param entry ZipEntry object or String with the full path of the entry\n * @param callback\n * @param encoding Optional. If no encoding is specified utf8 is used\n *\n * @return String\n */\n readAsTextAsync: function (/**Object*/ entry, /**Function*/ callback, /**String=*/ encoding) {\n var item = getEntry(entry);\n if (item) {\n item.getDataAsync(function (data, err) {\n if (err) {\n callback(data, err);\n return;\n }\n\n if (data && data.length) {\n callback(data.toString(encoding || \"utf8\"));\n } else {\n callback(\"\");\n }\n });\n } else {\n callback(\"\");\n }\n },\n\n /**\n * Remove the entry from the file or the entry and all it's nested directories and files if the given entry is a directory\n *\n * @param entry\n */\n deleteFile: function (/**Object*/ entry) {\n // @TODO: test deleteFile\n var item = getEntry(entry);\n if (item) {\n _zip.deleteEntry(item.entryName);\n }\n },\n\n /**\n * Adds a comment to the zip. The zip must be rewritten after adding the comment.\n *\n * @param comment\n */\n addZipComment: function (/**String*/ comment) {\n // @TODO: test addZipComment\n _zip.comment = comment;\n },\n\n /**\n * Returns the zip comment\n *\n * @return String\n */\n getZipComment: function () {\n return _zip.comment || \"\";\n },\n\n /**\n * Adds a comment to a specified zipEntry. The zip must be rewritten after adding the comment\n * The comment cannot exceed 65535 characters in length\n *\n * @param entry\n * @param comment\n */\n addZipEntryComment: function (/**Object*/ entry, /**String*/ comment) {\n var item = getEntry(entry);\n if (item) {\n item.comment = comment;\n }\n },\n\n /**\n * Returns the comment of the specified entry\n *\n * @param entry\n * @return String\n */\n getZipEntryComment: function (/**Object*/ entry) {\n var item = getEntry(entry);\n if (item) {\n return item.comment || \"\";\n }\n return \"\";\n },\n\n /**\n * Updates the content of an existing entry inside the archive. The zip must be rewritten after updating the content\n *\n * @param entry\n * @param content\n */\n updateFile: function (/**Object*/ entry, /**Buffer*/ content) {\n var item = getEntry(entry);\n if (item) {\n item.setData(content);\n }\n },\n\n /**\n * Adds a file from the disk to the archive\n *\n * @param localPath File to add to zip\n * @param zipPath Optional path inside the zip\n * @param zipName Optional name for the file\n */\n addLocalFile: function (/**String*/ localPath, /**String=*/ zipPath, /**String=*/ zipName, /**String*/ comment) {\n if (filetools.fs.existsSync(localPath)) {\n // fix ZipPath\n zipPath = zipPath ? fixPath(zipPath) : \"\";\n\n // p - local file name\n var p = localPath.split(\"\\\\\").join(\"/\").split(\"/\").pop();\n\n // add file name into zippath\n zipPath += zipName ? zipName : p;\n\n // read file attributes\n const _attr = filetools.fs.statSync(localPath);\n\n // add file into zip file\n this.addFile(zipPath, filetools.fs.readFileSync(localPath), comment, _attr);\n } else {\n throw new Error(Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath));\n }\n },\n\n /**\n * Adds a local directory and all its nested files and directories to the archive\n *\n * @param localPath\n * @param zipPath optional path inside zip\n * @param filter optional RegExp or Function if files match will\n * be included.\n */\n addLocalFolder: function (/**String*/ localPath, /**String=*/ zipPath, /**=RegExp|Function*/ filter) {\n // Prepare filter\n if (filter instanceof RegExp) {\n // if filter is RegExp wrap it\n filter = (function (rx) {\n return function (filename) {\n return rx.test(filename);\n };\n })(filter);\n } else if (\"function\" !== typeof filter) {\n // if filter is not function we will replace it\n filter = function () {\n return true;\n };\n }\n\n // fix ZipPath\n zipPath = zipPath ? fixPath(zipPath) : \"\";\n\n // normalize the path first\n localPath = pth.normalize(localPath);\n\n if (filetools.fs.existsSync(localPath)) {\n const items = filetools.findFiles(localPath);\n const self = this;\n\n if (items.length) {\n items.forEach(function (filepath) {\n var p = pth.relative(localPath, filepath).split(\"\\\\\").join(\"/\"); //windows fix\n if (filter(p)) {\n var stats = filetools.fs.statSync(filepath);\n if (stats.isFile()) {\n self.addFile(zipPath + p, filetools.fs.readFileSync(filepath), \"\", stats);\n } else {\n self.addFile(zipPath + p + \"/\", Buffer.alloc(0), \"\", stats);\n }\n }\n });\n }\n } else {\n throw new Error(Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath));\n }\n },\n\n /**\n * Asynchronous addLocalFile\n * @param localPath\n * @param callback\n * @param zipPath optional path inside zip\n * @param filter optional RegExp or Function if files match will\n * be included.\n */\n addLocalFolderAsync: function (/*String*/ localPath, /*Function*/ callback, /*String*/ zipPath, /*RegExp|Function*/ filter) {\n if (filter instanceof RegExp) {\n filter = (function (rx) {\n return function (filename) {\n return rx.test(filename);\n };\n })(filter);\n } else if (\"function\" !== typeof filter) {\n filter = function () {\n return true;\n };\n }\n\n // fix ZipPath\n zipPath = zipPath ? fixPath(zipPath) : \"\";\n\n // normalize the path first\n localPath = pth.normalize(localPath);\n\n var self = this;\n filetools.fs.open(localPath, \"r\", function (err) {\n if (err && err.code === \"ENOENT\") {\n callback(undefined, Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath));\n } else if (err) {\n callback(undefined, err);\n } else {\n var items = filetools.findFiles(localPath);\n var i = -1;\n\n var next = function () {\n i += 1;\n if (i < items.length) {\n var filepath = items[i];\n var p = pth.relative(localPath, filepath).split(\"\\\\\").join(\"/\"); //windows fix\n p = p\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/[^\\x20-\\x7E]/g, \"\"); // accent fix\n if (filter(p)) {\n filetools.fs.stat(filepath, function (er0, stats) {\n if (er0) callback(undefined, er0);\n if (stats.isFile()) {\n filetools.fs.readFile(filepath, function (er1, data) {\n if (er1) {\n callback(undefined, er1);\n } else {\n self.addFile(zipPath + p, data, \"\", stats);\n next();\n }\n });\n } else {\n self.addFile(zipPath + p + \"/\", Buffer.alloc(0), \"\", stats);\n next();\n }\n });\n } else {\n next();\n }\n } else {\n callback(true, undefined);\n }\n };\n\n next();\n }\n });\n },\n\n /**\n *\n * @param {string} localPath - path where files will be extracted\n * @param {object} props - optional properties\n * @param {string} props.zipPath - optional path inside zip\n * @param {regexp, function} props.filter - RegExp or Function if files match will be included.\n */\n addLocalFolderPromise: function (/*String*/ localPath, /* object */ props) {\n return new Promise((resolve, reject) => {\n const { filter, zipPath } = Object.assign({}, props);\n this.addLocalFolderAsync(\n localPath,\n (done, err) => {\n if (err) reject(err);\n if (done) resolve(this);\n },\n zipPath,\n filter\n );\n });\n },\n\n /**\n * Allows you to create a entry (file or directory) in the zip file.\n * If you want to create a directory the entryName must end in / and a null buffer should be provided.\n * Comment and attributes are optional\n *\n * @param {string} entryName\n * @param {Buffer | string} content - file content as buffer or utf8 coded string\n * @param {string} comment - file comment\n * @param {number | object} attr - number as unix file permissions, object as filesystem Stats object\n */\n addFile: function (/**String*/ entryName, /**Buffer*/ content, /**String*/ comment, /**Number*/ attr) {\n let entry = getEntry(entryName);\n const update = entry != null;\n\n // prepare new entry\n if (!update) {\n entry = new ZipEntry();\n entry.entryName = entryName;\n }\n entry.comment = comment || \"\";\n\n const isStat = \"object\" === typeof attr && attr instanceof filetools.fs.Stats;\n\n // last modification time from file stats\n if (isStat) {\n entry.header.time = attr.mtime;\n }\n\n // Set file attribute\n var fileattr = entry.isDirectory ? 0x10 : 0; // (MS-DOS directory flag)\n\n // extended attributes field for Unix\n if (!Utils.isWin) {\n // set file type either S_IFDIR / S_IFREG\n let unix = entry.isDirectory ? 0x4000 : 0x8000;\n\n if (isStat) {\n // File attributes from file stats\n unix |= 0xfff & attr.mode;\n } else if (\"number\" === typeof attr) {\n // attr from given attr values\n unix |= 0xfff & attr;\n } else {\n // Default values:\n unix |= entry.isDirectory ? 0o755 : 0o644; // permissions (drwxr-xr-x) or (-r-wr--r--)\n }\n\n fileattr = (fileattr | (unix << 16)) >>> 0; // add attributes\n }\n\n entry.attr = fileattr;\n\n entry.setData(content);\n if (!update) _zip.setEntry(entry);\n },\n\n /**\n * Returns an array of ZipEntry objects representing the files and folders inside the archive\n *\n * @return Array\n */\n getEntries: function () {\n return _zip ? _zip.entries : [];\n },\n\n /**\n * Returns a ZipEntry object representing the file or folder specified by ``name``.\n *\n * @param name\n * @return ZipEntry\n */\n getEntry: function (/**String*/ name) {\n return getEntry(name);\n },\n\n getEntryCount: function () {\n return _zip.getEntryCount();\n },\n\n forEach: function (callback) {\n return _zip.forEach(callback);\n },\n\n /**\n * Extracts the given entry to the given targetPath\n * If the entry is a directory inside the archive, the entire directory and it's subdirectories will be extracted\n *\n * @param entry ZipEntry object or String with the full path of the entry\n * @param targetPath Target folder where to write the file\n * @param maintainEntryPath If maintainEntryPath is true and the entry is inside a folder, the entry folder\n * will be created in targetPath as well. Default is TRUE\n * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n * Default is FALSE\n * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.\n * Default is FALSE\n * @param outFileName String If set will override the filename of the extracted file (Only works if the entry is a file)\n *\n * @return Boolean\n */\n extractEntryTo: function (\n /**Object*/ entry,\n /**String*/ targetPath,\n /**Boolean*/ maintainEntryPath,\n /**Boolean*/ overwrite,\n /**Boolean*/ keepOriginalPermission,\n /**String**/ outFileName\n ) {\n overwrite = get_Bool(overwrite, false);\n keepOriginalPermission = get_Bool(keepOriginalPermission, false);\n maintainEntryPath = get_Bool(maintainEntryPath, true);\n outFileName = get_Str(outFileName, get_Str(keepOriginalPermission, undefined));\n\n var item = getEntry(entry);\n if (!item) {\n throw new Error(Utils.Errors.NO_ENTRY);\n }\n\n var entryName = canonical(item.entryName);\n\n var target = sanitize(targetPath, outFileName && !item.isDirectory ? outFileName : maintainEntryPath ? entryName : pth.basename(entryName));\n\n if (item.isDirectory) {\n var children = _zip.getEntryChildren(item);\n children.forEach(function (child) {\n if (child.isDirectory) return;\n var content = child.getData();\n if (!content) {\n throw new Error(Utils.Errors.CANT_EXTRACT_FILE);\n }\n var name = canonical(child.entryName);\n var childName = sanitize(targetPath, maintainEntryPath ? name : pth.basename(name));\n // The reverse operation for attr depend on method addFile()\n const fileAttr = keepOriginalPermission ? child.header.fileAttr : undefined;\n filetools.writeFileTo(childName, content, overwrite, fileAttr);\n });\n return true;\n }\n\n var content = item.getData();\n if (!content) throw new Error(Utils.Errors.CANT_EXTRACT_FILE);\n\n if (filetools.fs.existsSync(target) && !overwrite) {\n throw new Error(Utils.Errors.CANT_OVERRIDE);\n }\n // The reverse operation for attr depend on method addFile()\n const fileAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;\n filetools.writeFileTo(target, content, overwrite, fileAttr);\n\n return true;\n },\n\n /**\n * Test the archive\n *\n */\n test: function (pass) {\n if (!_zip) {\n return false;\n }\n\n for (var entry in _zip.entries) {\n try {\n if (entry.isDirectory) {\n continue;\n }\n var content = _zip.entries[entry].getData(pass);\n if (!content) {\n return false;\n }\n } catch (err) {\n return false;\n }\n }\n return true;\n },\n\n /**\n * Extracts the entire archive to the given location\n *\n * @param targetPath Target location\n * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n * Default is FALSE\n * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.\n * Default is FALSE\n */\n extractAllTo: function (/**String*/ targetPath, /**Boolean*/ overwrite, /**Boolean*/ keepOriginalPermission, /*String, Buffer*/ pass) {\n overwrite = get_Bool(overwrite, false);\n pass = get_Str(keepOriginalPermission, pass);\n keepOriginalPermission = get_Bool(keepOriginalPermission, false);\n if (!_zip) {\n throw new Error(Utils.Errors.NO_ZIP);\n }\n _zip.entries.forEach(function (entry) {\n var entryName = sanitize(targetPath, canonical(entry.entryName.toString()));\n if (entry.isDirectory) {\n filetools.makeDir(entryName);\n return;\n }\n var content = entry.getData(pass);\n if (!content) {\n throw new Error(Utils.Errors.CANT_EXTRACT_FILE);\n }\n // The reverse operation for attr depend on method addFile()\n const fileAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;\n filetools.writeFileTo(entryName, content, overwrite, fileAttr);\n try {\n filetools.fs.utimesSync(entryName, entry.header.time, entry.header.time);\n } catch (err) {\n throw new Error(Utils.Errors.CANT_EXTRACT_FILE);\n }\n });\n },\n\n /**\n * Asynchronous extractAllTo\n *\n * @param targetPath Target location\n * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n * Default is FALSE\n * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.\n * Default is FALSE\n * @param callback The callback will be executed when all entries are extracted successfully or any error is thrown.\n */\n extractAllToAsync: function (/**String*/ targetPath, /**Boolean*/ overwrite, /**Boolean*/ keepOriginalPermission, /**Function*/ callback) {\n if (!callback) {\n callback = function () {};\n }\n overwrite = get_Bool(overwrite, false);\n if (typeof keepOriginalPermission === \"function\" && !callback) callback = keepOriginalPermission;\n keepOriginalPermission = get_Bool(keepOriginalPermission, false);\n if (!_zip) {\n callback(new Error(Utils.Errors.NO_ZIP));\n return;\n }\n\n targetPath = pth.resolve(targetPath);\n // convert entryName to\n const getPath = (entry) => sanitize(targetPath, pth.normalize(canonical(entry.entryName.toString())));\n const getError = (msg, file) => new Error(msg + ': \"' + file + '\"');\n\n // separate directories from files\n const dirEntries = [];\n const fileEntries = new Set();\n _zip.entries.forEach((e) => {\n if (e.isDirectory) {\n dirEntries.push(e);\n } else {\n fileEntries.add(e);\n }\n });\n\n // Create directory entries first synchronously\n // this prevents race condition and assures folders are there before writing files\n for (const entry of dirEntries) {\n const dirPath = getPath(entry);\n // The reverse operation for attr depend on method addFile()\n const dirAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;\n try {\n filetools.makeDir(dirPath);\n if (dirAttr) filetools.fs.chmodSync(dirPath, dirAttr);\n // in unix timestamp will change if files are later added to folder, but still\n filetools.fs.utimesSync(dirPath, entry.header.time, entry.header.time);\n } catch (er) {\n callback(getError(\"Unable to create folder\", dirPath));\n }\n }\n\n // callback wrapper, for some house keeping\n const done = () => {\n if (fileEntries.size === 0) {\n callback();\n }\n };\n\n // Extract file entries asynchronously\n for (const entry of fileEntries.values()) {\n const entryName = pth.normalize(canonical(entry.entryName.toString()));\n const filePath = sanitize(targetPath, entryName);\n entry.getDataAsync(function (content, err_1) {\n if (err_1) {\n callback(new Error(err_1));\n return;\n }\n if (!content) {\n callback(new Error(Utils.Errors.CANT_EXTRACT_FILE));\n } else {\n // The reverse operation for attr depend on method addFile()\n const fileAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;\n filetools.writeFileToAsync(filePath, content, overwrite, fileAttr, function (succ) {\n if (!succ) {\n callback(getError(\"Unable to write file\", filePath));\n return;\n }\n filetools.fs.utimes(filePath, entry.header.time, entry.header.time, function (err_2) {\n if (err_2) {\n callback(getError(\"Unable to set times\", filePath));\n return;\n }\n fileEntries.delete(entry);\n // call the callback if it was last entry\n done();\n });\n });\n }\n });\n }\n // call the callback if fileEntries was empty\n done();\n },\n\n /**\n * Writes the newly created zip file to disk at the specified location or if a zip was opened and no ``targetFileName`` is provided, it will overwrite the opened zip\n *\n * @param targetFileName\n * @param callback\n */\n writeZip: function (/**String*/ targetFileName, /**Function*/ callback) {\n if (arguments.length === 1) {\n if (typeof targetFileName === \"function\") {\n callback = targetFileName;\n targetFileName = \"\";\n }\n }\n\n if (!targetFileName && opts.filename) {\n targetFileName = opts.filename;\n }\n if (!targetFileName) return;\n\n var zipData = _zip.compressToBuffer();\n if (zipData) {\n var ok = filetools.writeFileTo(targetFileName, zipData, true);\n if (typeof callback === \"function\") callback(!ok ? new Error(\"failed\") : null, \"\");\n }\n },\n\n writeZipPromise: function (/**String*/ targetFileName, /* object */ props) {\n const { overwrite, perm } = Object.assign({ overwrite: true }, props);\n\n return new Promise((resolve, reject) => {\n // find file name\n if (!targetFileName && opts.filename) targetFileName = opts.filename;\n if (!targetFileName) reject(\"ADM-ZIP: ZIP File Name Missing\");\n\n this.toBufferPromise().then((zipData) => {\n const ret = (done) => (done ? resolve(done) : reject(\"ADM-ZIP: Wasn't able to write zip file\"));\n filetools.writeFileToAsync(targetFileName, zipData, overwrite, perm, ret);\n }, reject);\n });\n },\n\n toBufferPromise: function () {\n return new Promise((resolve, reject) => {\n _zip.toAsyncBuffer(resolve, reject);\n });\n },\n\n /**\n * Returns the content of the entire zip file as a Buffer object\n *\n * @return Buffer\n */\n toBuffer: function (/**Function=*/ onSuccess, /**Function=*/ onFail, /**Function=*/ onItemStart, /**Function=*/ onItemEnd) {\n this.valueOf = 2;\n if (typeof onSuccess === \"function\") {\n _zip.toAsyncBuffer(onSuccess, onFail, onItemStart, onItemEnd);\n return null;\n }\n return _zip.compressToBuffer();\n }\n };\n};\n","var Utils = require(\"../util\"),\n Constants = Utils.Constants;\n\n/* The central directory file header */\nmodule.exports = function () {\n var _verMade = 20, // v2.0\n _version = 10, // v1.0\n _flags = 0,\n _method = 0,\n _time = 0,\n _crc = 0,\n _compressedSize = 0,\n _size = 0,\n _fnameLen = 0,\n _extraLen = 0,\n _comLen = 0,\n _diskStart = 0,\n _inattr = 0,\n _attr = 0,\n _offset = 0;\n\n _verMade |= Utils.isWin ? 0x0a00 : 0x0300;\n\n // Set EFS flag since filename and comment fields are all by default encoded using UTF-8.\n // Without it file names may be corrupted for other apps when file names use unicode chars\n _flags |= Constants.FLG_EFS;\n\n var _dataHeader = {};\n\n function setTime(val) {\n val = new Date(val);\n _time =\n (((val.getFullYear() - 1980) & 0x7f) << 25) | // b09-16 years from 1980\n ((val.getMonth() + 1) << 21) | // b05-08 month\n (val.getDate() << 16) | // b00-04 hour\n // 2 bytes time\n (val.getHours() << 11) | // b11-15 hour\n (val.getMinutes() << 5) | // b05-10 minute\n (val.getSeconds() >> 1); // b00-04 seconds divided by 2\n }\n\n setTime(+new Date());\n\n return {\n get made() {\n return _verMade;\n },\n set made(val) {\n _verMade = val;\n },\n\n get version() {\n return _version;\n },\n set version(val) {\n _version = val;\n },\n\n get flags() {\n return _flags;\n },\n set flags(val) {\n _flags = val;\n },\n\n get method() {\n return _method;\n },\n set method(val) {\n switch (val) {\n case Constants.STORED:\n this.version = 10;\n case Constants.DEFLATED:\n default:\n this.version = 20;\n }\n _method = val;\n },\n\n get time() {\n return new Date(((_time >> 25) & 0x7f) + 1980, ((_time >> 21) & 0x0f) - 1, (_time >> 16) & 0x1f, (_time >> 11) & 0x1f, (_time >> 5) & 0x3f, (_time & 0x1f) << 1);\n },\n set time(val) {\n setTime(val);\n },\n\n get crc() {\n return _crc;\n },\n set crc(val) {\n _crc = Math.max(0, val) >>> 0;\n },\n\n get compressedSize() {\n return _compressedSize;\n },\n set compressedSize(val) {\n _compressedSize = Math.max(0, val) >>> 0;\n },\n\n get size() {\n return _size;\n },\n set size(val) {\n _size = Math.max(0, val) >>> 0;\n },\n\n get fileNameLength() {\n return _fnameLen;\n },\n set fileNameLength(val) {\n _fnameLen = val;\n },\n\n get extraLength() {\n return _extraLen;\n },\n set extraLength(val) {\n _extraLen = val;\n },\n\n get commentLength() {\n return _comLen;\n },\n set commentLength(val) {\n _comLen = val;\n },\n\n get diskNumStart() {\n return _diskStart;\n },\n set diskNumStart(val) {\n _diskStart = Math.max(0, val) >>> 0;\n },\n\n get inAttr() {\n return _inattr;\n },\n set inAttr(val) {\n _inattr = Math.max(0, val) >>> 0;\n },\n\n get attr() {\n return _attr;\n },\n set attr(val) {\n _attr = Math.max(0, val) >>> 0;\n },\n\n // get Unix file permissions\n get fileAttr() {\n return _attr ? (((_attr >>> 0) | 0) >> 16) & 0xfff : 0;\n },\n\n get offset() {\n return _offset;\n },\n set offset(val) {\n _offset = Math.max(0, val) >>> 0;\n },\n\n get encripted() {\n return (_flags & 1) === 1;\n },\n\n get entryHeaderSize() {\n return Constants.CENHDR + _fnameLen + _extraLen + _comLen;\n },\n\n get realDataOffset() {\n return _offset + Constants.LOCHDR + _dataHeader.fnameLen + _dataHeader.extraLen;\n },\n\n get dataHeader() {\n return _dataHeader;\n },\n\n loadDataHeaderFromBinary: function (/*Buffer*/ input) {\n var data = input.slice(_offset, _offset + Constants.LOCHDR);\n // 30 bytes and should start with \"PK\\003\\004\"\n if (data.readUInt32LE(0) !== Constants.LOCSIG) {\n throw new Error(Utils.Errors.INVALID_LOC);\n }\n _dataHeader = {\n // version needed to extract\n version: data.readUInt16LE(Constants.LOCVER),\n // general purpose bit flag\n flags: data.readUInt16LE(Constants.LOCFLG),\n // compression method\n method: data.readUInt16LE(Constants.LOCHOW),\n // modification time (2 bytes time, 2 bytes date)\n time: data.readUInt32LE(Constants.LOCTIM),\n // uncompressed file crc-32 value\n crc: data.readUInt32LE(Constants.LOCCRC),\n // compressed size\n compressedSize: data.readUInt32LE(Constants.LOCSIZ),\n // uncompressed size\n size: data.readUInt32LE(Constants.LOCLEN),\n // filename length\n fnameLen: data.readUInt16LE(Constants.LOCNAM),\n // extra field length\n extraLen: data.readUInt16LE(Constants.LOCEXT)\n };\n },\n\n loadFromBinary: function (/*Buffer*/ data) {\n // data should be 46 bytes and start with \"PK 01 02\"\n if (data.length !== Constants.CENHDR || data.readUInt32LE(0) !== Constants.CENSIG) {\n throw new Error(Utils.Errors.INVALID_CEN);\n }\n // version made by\n _verMade = data.readUInt16LE(Constants.CENVEM);\n // version needed to extract\n _version = data.readUInt16LE(Constants.CENVER);\n // encrypt, decrypt flags\n _flags = data.readUInt16LE(Constants.CENFLG);\n // compression method\n _method = data.readUInt16LE(Constants.CENHOW);\n // modification time (2 bytes time, 2 bytes date)\n _time = data.readUInt32LE(Constants.CENTIM);\n // uncompressed file crc-32 value\n _crc = data.readUInt32LE(Constants.CENCRC);\n // compressed size\n _compressedSize = data.readUInt32LE(Constants.CENSIZ);\n // uncompressed size\n _size = data.readUInt32LE(Constants.CENLEN);\n // filename length\n _fnameLen = data.readUInt16LE(Constants.CENNAM);\n // extra field length\n _extraLen = data.readUInt16LE(Constants.CENEXT);\n // file comment length\n _comLen = data.readUInt16LE(Constants.CENCOM);\n // volume number start\n _diskStart = data.readUInt16LE(Constants.CENDSK);\n // internal file attributes\n _inattr = data.readUInt16LE(Constants.CENATT);\n // external file attributes\n _attr = data.readUInt32LE(Constants.CENATX);\n // LOC header offset\n _offset = data.readUInt32LE(Constants.CENOFF);\n },\n\n dataHeaderToBinary: function () {\n // LOC header size (30 bytes)\n var data = Buffer.alloc(Constants.LOCHDR);\n // \"PK\\003\\004\"\n data.writeUInt32LE(Constants.LOCSIG, 0);\n // version needed to extract\n data.writeUInt16LE(_version, Constants.LOCVER);\n // general purpose bit flag\n data.writeUInt16LE(_flags, Constants.LOCFLG);\n // compression method\n data.writeUInt16LE(_method, Constants.LOCHOW);\n // modification time (2 bytes time, 2 bytes date)\n data.writeUInt32LE(_time, Constants.LOCTIM);\n // uncompressed file crc-32 value\n data.writeUInt32LE(_crc, Constants.LOCCRC);\n // compressed size\n data.writeUInt32LE(_compressedSize, Constants.LOCSIZ);\n // uncompressed size\n data.writeUInt32LE(_size, Constants.LOCLEN);\n // filename length\n data.writeUInt16LE(_fnameLen, Constants.LOCNAM);\n // extra field length\n data.writeUInt16LE(_extraLen, Constants.LOCEXT);\n return data;\n },\n\n entryHeaderToBinary: function () {\n // CEN header size (46 bytes)\n var data = Buffer.alloc(Constants.CENHDR + _fnameLen + _extraLen + _comLen);\n // \"PK\\001\\002\"\n data.writeUInt32LE(Constants.CENSIG, 0);\n // version made by\n data.writeUInt16LE(_verMade, Constants.CENVEM);\n // version needed to extract\n data.writeUInt16LE(_version, Constants.CENVER);\n // encrypt, decrypt flags\n data.writeUInt16LE(_flags, Constants.CENFLG);\n // compression method\n data.writeUInt16LE(_method, Constants.CENHOW);\n // modification time (2 bytes time, 2 bytes date)\n data.writeUInt32LE(_time, Constants.CENTIM);\n // uncompressed file crc-32 value\n data.writeUInt32LE(_crc, Constants.CENCRC);\n // compressed size\n data.writeUInt32LE(_compressedSize, Constants.CENSIZ);\n // uncompressed size\n data.writeUInt32LE(_size, Constants.CENLEN);\n // filename length\n data.writeUInt16LE(_fnameLen, Constants.CENNAM);\n // extra field length\n data.writeUInt16LE(_extraLen, Constants.CENEXT);\n // file comment length\n data.writeUInt16LE(_comLen, Constants.CENCOM);\n // volume number start\n data.writeUInt16LE(_diskStart, Constants.CENDSK);\n // internal file attributes\n data.writeUInt16LE(_inattr, Constants.CENATT);\n // external file attributes\n data.writeUInt32LE(_attr, Constants.CENATX);\n // LOC header offset\n data.writeUInt32LE(_offset, Constants.CENOFF);\n // fill all with\n data.fill(0x00, Constants.CENHDR);\n return data;\n },\n\n toJSON: function () {\n const bytes = function (nr) {\n return nr + \" bytes\";\n };\n\n return {\n made: _verMade,\n version: _version,\n flags: _flags,\n method: Utils.methodToString(_method),\n time: this.time,\n crc: \"0x\" + _crc.toString(16).toUpperCase(),\n compressedSize: bytes(_compressedSize),\n size: bytes(_size),\n fileNameLength: bytes(_fnameLen),\n extraLength: bytes(_extraLen),\n commentLength: bytes(_comLen),\n diskNumStart: _diskStart,\n inAttr: _inattr,\n attr: _attr,\n offset: _offset,\n entryHeaderSize: bytes(Constants.CENHDR + _fnameLen + _extraLen + _comLen)\n };\n },\n\n toString: function () {\n return JSON.stringify(this.toJSON(), null, \"\\t\");\n }\n };\n};\n","exports.EntryHeader = require(\"./entryHeader\");\nexports.MainHeader = require(\"./mainHeader\");\n","var Utils = require(\"../util\"),\n Constants = Utils.Constants;\n\n/* The entries in the end of central directory */\nmodule.exports = function () {\n var _volumeEntries = 0,\n _totalEntries = 0,\n _size = 0,\n _offset = 0,\n _commentLength = 0;\n\n return {\n get diskEntries() {\n return _volumeEntries;\n },\n set diskEntries(/*Number*/ val) {\n _volumeEntries = _totalEntries = val;\n },\n\n get totalEntries() {\n return _totalEntries;\n },\n set totalEntries(/*Number*/ val) {\n _totalEntries = _volumeEntries = val;\n },\n\n get size() {\n return _size;\n },\n set size(/*Number*/ val) {\n _size = val;\n },\n\n get offset() {\n return _offset;\n },\n set offset(/*Number*/ val) {\n _offset = val;\n },\n\n get commentLength() {\n return _commentLength;\n },\n set commentLength(/*Number*/ val) {\n _commentLength = val;\n },\n\n get mainHeaderSize() {\n return Constants.ENDHDR + _commentLength;\n },\n\n loadFromBinary: function (/*Buffer*/ data) {\n // data should be 22 bytes and start with \"PK 05 06\"\n // or be 56+ bytes and start with \"PK 06 06\" for Zip64\n if (\n (data.length !== Constants.ENDHDR || data.readUInt32LE(0) !== Constants.ENDSIG) &&\n (data.length < Constants.ZIP64HDR || data.readUInt32LE(0) !== Constants.ZIP64SIG)\n ) {\n throw new Error(Utils.Errors.INVALID_END);\n }\n\n if (data.readUInt32LE(0) === Constants.ENDSIG) {\n // number of entries on this volume\n _volumeEntries = data.readUInt16LE(Constants.ENDSUB);\n // total number of entries\n _totalEntries = data.readUInt16LE(Constants.ENDTOT);\n // central directory size in bytes\n _size = data.readUInt32LE(Constants.ENDSIZ);\n // offset of first CEN header\n _offset = data.readUInt32LE(Constants.ENDOFF);\n // zip file comment length\n _commentLength = data.readUInt16LE(Constants.ENDCOM);\n } else {\n // number of entries on this volume\n _volumeEntries = Utils.readBigUInt64LE(data, Constants.ZIP64SUB);\n // total number of entries\n _totalEntries = Utils.readBigUInt64LE(data, Constants.ZIP64TOT);\n // central directory size in bytes\n _size = Utils.readBigUInt64LE(data, Constants.ZIP64SIZ);\n // offset of first CEN header\n _offset = Utils.readBigUInt64LE(data, Constants.ZIP64OFF);\n\n _commentLength = 0;\n }\n },\n\n toBinary: function () {\n var b = Buffer.alloc(Constants.ENDHDR + _commentLength);\n // \"PK 05 06\" signature\n b.writeUInt32LE(Constants.ENDSIG, 0);\n b.writeUInt32LE(0, 4);\n // number of entries on this volume\n b.writeUInt16LE(_volumeEntries, Constants.ENDSUB);\n // total number of entries\n b.writeUInt16LE(_totalEntries, Constants.ENDTOT);\n // central directory size in bytes\n b.writeUInt32LE(_size, Constants.ENDSIZ);\n // offset of first CEN header\n b.writeUInt32LE(_offset, Constants.ENDOFF);\n // zip file comment length\n b.writeUInt16LE(_commentLength, Constants.ENDCOM);\n // fill comment memory with spaces so no garbage is left there\n b.fill(\" \", Constants.ENDHDR);\n\n return b;\n },\n\n toJSON: function () {\n // creates 0x0000 style output\n const offset = function (nr, len) {\n let offs = nr.toString(16).toUpperCase();\n while (offs.length < len) offs = \"0\" + offs;\n return \"0x\" + offs;\n };\n\n return {\n diskEntries: _volumeEntries,\n totalEntries: _totalEntries,\n size: _size + \" bytes\",\n offset: offset(_offset, 4),\n commentLength: _commentLength\n };\n },\n\n toString: function () {\n return JSON.stringify(this.toJSON(), null, \"\\t\");\n }\n };\n};\n","module.exports = function (/*Buffer*/ inbuf) {\n var zlib = require(\"zlib\");\n\n var opts = { chunkSize: (parseInt(inbuf.length / 1024) + 1) * 1024 };\n\n return {\n deflate: function () {\n return zlib.deflateRawSync(inbuf, opts);\n },\n\n deflateAsync: function (/*Function*/ callback) {\n var tmp = zlib.createDeflateRaw(opts),\n parts = [],\n total = 0;\n tmp.on(\"data\", function (data) {\n parts.push(data);\n total += data.length;\n });\n tmp.on(\"end\", function () {\n var buf = Buffer.alloc(total),\n written = 0;\n buf.fill(0);\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n part.copy(buf, written);\n written += part.length;\n }\n callback && callback(buf);\n });\n tmp.end(inbuf);\n }\n };\n};\n","exports.Deflater = require(\"./deflater\");\nexports.Inflater = require(\"./inflater\");\nexports.ZipCrypto = require(\"./zipcrypto\");\n","module.exports = function (/*Buffer*/ inbuf) {\n var zlib = require(\"zlib\");\n\n return {\n inflate: function () {\n return zlib.inflateRawSync(inbuf);\n },\n\n inflateAsync: function (/*Function*/ callback) {\n var tmp = zlib.createInflateRaw(),\n parts = [],\n total = 0;\n tmp.on(\"data\", function (data) {\n parts.push(data);\n total += data.length;\n });\n tmp.on(\"end\", function () {\n var buf = Buffer.alloc(total),\n written = 0;\n buf.fill(0);\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n part.copy(buf, written);\n written += part.length;\n }\n callback && callback(buf);\n });\n tmp.end(inbuf);\n }\n };\n};\n","\"use strict\";\n\n// node crypt, we use it for generate salt\n// eslint-disable-next-line node/no-unsupported-features/node-builtins\nconst { randomFillSync } = require(\"crypto\");\n\n// generate CRC32 lookup table\nconst crctable = new Uint32Array(256).map((t, crc) => {\n for (let j = 0; j < 8; j++) {\n if (0 !== (crc & 1)) {\n crc = (crc >>> 1) ^ 0xedb88320;\n } else {\n crc >>>= 1;\n }\n }\n return crc >>> 0;\n});\n\n// C-style uInt32 Multiply (discards higher bits, when JS multiply discards lower bits)\nconst uMul = (a, b) => Math.imul(a, b) >>> 0;\n\n// crc32 byte single update (actually same function is part of utils.crc32 function :) )\nconst crc32update = (pCrc32, bval) => {\n return crctable[(pCrc32 ^ bval) & 0xff] ^ (pCrc32 >>> 8);\n};\n\n// function for generating salt for encrytion header\nconst genSalt = () => {\n if (\"function\" === typeof randomFillSync) {\n return randomFillSync(Buffer.alloc(12));\n } else {\n // fallback if function is not defined\n return genSalt.node();\n }\n};\n\n// salt generation with node random function (mainly as fallback)\ngenSalt.node = () => {\n const salt = Buffer.alloc(12);\n const len = salt.length;\n for (let i = 0; i < len; i++) salt[i] = (Math.random() * 256) & 0xff;\n return salt;\n};\n\n// general config\nconst config = {\n genSalt\n};\n\n// Class Initkeys handles same basic ops with keys\nfunction Initkeys(pw) {\n const pass = Buffer.isBuffer(pw) ? pw : Buffer.from(pw);\n this.keys = new Uint32Array([0x12345678, 0x23456789, 0x34567890]);\n for (let i = 0; i < pass.length; i++) {\n this.updateKeys(pass[i]);\n }\n}\n\nInitkeys.prototype.updateKeys = function (byteValue) {\n const keys = this.keys;\n keys[0] = crc32update(keys[0], byteValue);\n keys[1] += keys[0] & 0xff;\n keys[1] = uMul(keys[1], 134775813) + 1;\n keys[2] = crc32update(keys[2], keys[1] >>> 24);\n return byteValue;\n};\n\nInitkeys.prototype.next = function () {\n const k = (this.keys[2] | 2) >>> 0; // key\n return (uMul(k, k ^ 1) >> 8) & 0xff; // decode\n};\n\nfunction make_decrypter(/*Buffer*/ pwd) {\n // 1. Stage initialize key\n const keys = new Initkeys(pwd);\n\n // return decrypter function\n return function (/*Buffer*/ data) {\n // result - we create new Buffer for results\n const result = Buffer.alloc(data.length);\n let pos = 0;\n // process input data\n for (let c of data) {\n //c ^= keys.next();\n //result[pos++] = c; // decode & Save Value\n result[pos++] = keys.updateKeys(c ^ keys.next()); // update keys with decoded byte\n }\n return result;\n };\n}\n\nfunction make_encrypter(/*Buffer*/ pwd) {\n // 1. Stage initialize key\n const keys = new Initkeys(pwd);\n\n // return encrypting function, result and pos is here so we dont have to merge buffers later\n return function (/*Buffer*/ data, /*Buffer*/ result, /* Number */ pos = 0) {\n // result - we create new Buffer for results\n if (!result) result = Buffer.alloc(data.length);\n // process input data\n for (let c of data) {\n const k = keys.next(); // save key byte\n result[pos++] = c ^ k; // save val\n keys.updateKeys(c); // update keys with decoded byte\n }\n return result;\n };\n}\n\nfunction decrypt(/*Buffer*/ data, /*Object*/ header, /*String, Buffer*/ pwd) {\n if (!data || !Buffer.isBuffer(data) || data.length < 12) {\n return Buffer.alloc(0);\n }\n\n // 1. We Initialize and generate decrypting function\n const decrypter = make_decrypter(pwd);\n\n // 2. decrypt salt what is always 12 bytes and is a part of file content\n const salt = decrypter(data.slice(0, 12));\n\n // 3. does password meet expectations\n if (salt[11] !== header.crc >>> 24) {\n throw \"ADM-ZIP: Wrong Password\";\n }\n\n // 4. decode content\n return decrypter(data.slice(12));\n}\n\n// lets add way to populate salt, NOT RECOMMENDED for production but maybe useful for testing general functionality\nfunction _salter(data) {\n if (Buffer.isBuffer(data) && data.length >= 12) {\n // be aware - currently salting buffer data is modified\n config.genSalt = function () {\n return data.slice(0, 12);\n };\n } else if (data === \"node\") {\n // test salt generation with node random function\n config.genSalt = genSalt.node;\n } else {\n // if value is not acceptable config gets reset.\n config.genSalt = genSalt;\n }\n}\n\nfunction encrypt(/*Buffer*/ data, /*Object*/ header, /*String, Buffer*/ pwd, /*Boolean*/ oldlike = false) {\n // 1. test data if data is not Buffer we make buffer from it\n if (data == null) data = Buffer.alloc(0);\n // if data is not buffer be make buffer from it\n if (!Buffer.isBuffer(data)) data = Buffer.from(data.toString());\n\n // 2. We Initialize and generate encrypting function\n const encrypter = make_encrypter(pwd);\n\n // 3. generate salt (12-bytes of random data)\n const salt = config.genSalt();\n salt[11] = (header.crc >>> 24) & 0xff;\n\n // old implementations (before PKZip 2.04g) used two byte check\n if (oldlike) salt[10] = (header.crc >>> 16) & 0xff;\n\n // 4. create output\n const result = Buffer.alloc(data.length + 12);\n encrypter(salt, result);\n\n // finally encode content\n return encrypter(data, result, 12);\n}\n\nmodule.exports = { decrypt, encrypt, _salter };\n","module.exports = {\n /* The local file header */\n LOCHDR : 30, // LOC header size\n LOCSIG : 0x04034b50, // \"PK\\003\\004\"\n LOCVER : 4,\t// version needed to extract\n LOCFLG : 6, // general purpose bit flag\n LOCHOW : 8, // compression method\n LOCTIM : 10, // modification time (2 bytes time, 2 bytes date)\n LOCCRC : 14, // uncompressed file crc-32 value\n LOCSIZ : 18, // compressed size\n LOCLEN : 22, // uncompressed size\n LOCNAM : 26, // filename length\n LOCEXT : 28, // extra field length\n\n /* The Data descriptor */\n EXTSIG : 0x08074b50, // \"PK\\007\\008\"\n EXTHDR : 16, // EXT header size\n EXTCRC : 4, // uncompressed file crc-32 value\n EXTSIZ : 8, // compressed size\n EXTLEN : 12, // uncompressed size\n\n /* The central directory file header */\n CENHDR : 46, // CEN header size\n CENSIG : 0x02014b50, // \"PK\\001\\002\"\n CENVEM : 4, // version made by\n CENVER : 6, // version needed to extract\n CENFLG : 8, // encrypt, decrypt flags\n CENHOW : 10, // compression method\n CENTIM : 12, // modification time (2 bytes time, 2 bytes date)\n CENCRC : 16, // uncompressed file crc-32 value\n CENSIZ : 20, // compressed size\n CENLEN : 24, // uncompressed size\n CENNAM : 28, // filename length\n CENEXT : 30, // extra field length\n CENCOM : 32, // file comment length\n CENDSK : 34, // volume number start\n CENATT : 36, // internal file attributes\n CENATX : 38, // external file attributes (host system dependent)\n CENOFF : 42, // LOC header offset\n\n /* The entries in the end of central directory */\n ENDHDR : 22, // END header size\n ENDSIG : 0x06054b50, // \"PK\\005\\006\"\n ENDSUB : 8, // number of entries on this disk\n ENDTOT : 10, // total number of entries\n ENDSIZ : 12, // central directory size in bytes\n ENDOFF : 16, // offset of first CEN header\n ENDCOM : 20, // zip file comment length\n\n END64HDR : 20, // zip64 END header size\n END64SIG : 0x07064b50, // zip64 Locator signature, \"PK\\006\\007\"\n END64START : 4, // number of the disk with the start of the zip64\n END64OFF : 8, // relative offset of the zip64 end of central directory\n END64NUMDISKS : 16, // total number of disks\n\n ZIP64SIG : 0x06064b50, // zip64 signature, \"PK\\006\\006\"\n ZIP64HDR : 56, // zip64 record minimum size\n ZIP64LEAD : 12, // leading bytes at the start of the record, not counted by the value stored in ZIP64SIZE\n ZIP64SIZE : 4, // zip64 size of the central directory record\n ZIP64VEM : 12, // zip64 version made by\n ZIP64VER : 14, // zip64 version needed to extract\n ZIP64DSK : 16, // zip64 number of this disk\n ZIP64DSKDIR : 20, // number of the disk with the start of the record directory\n ZIP64SUB : 24, // number of entries on this disk\n ZIP64TOT : 32, // total number of entries\n ZIP64SIZB : 40, // zip64 central directory size in bytes\n ZIP64OFF : 48, // offset of start of central directory with respect to the starting disk number\n ZIP64EXTRA : 56, // extensible data sector\n\n /* Compression methods */\n STORED : 0, // no compression\n SHRUNK : 1, // shrunk\n REDUCED1 : 2, // reduced with compression factor 1\n REDUCED2 : 3, // reduced with compression factor 2\n REDUCED3 : 4, // reduced with compression factor 3\n REDUCED4 : 5, // reduced with compression factor 4\n IMPLODED : 6, // imploded\n // 7 reserved for Tokenizing compression algorithm\n DEFLATED : 8, // deflated\n ENHANCED_DEFLATED: 9, // enhanced deflated\n PKWARE : 10,// PKWare DCL imploded\n // 11 reserved by PKWARE\n BZIP2 : 12, // compressed using BZIP2\n // 13 reserved by PKWARE\n LZMA : 14, // LZMA\n // 15-17 reserved by PKWARE\n IBM_TERSE : 18, // compressed using IBM TERSE\n IBM_LZ77 : 19, // IBM LZ77 z\n AES_ENCRYPT : 99, // WinZIP AES encryption method\n\n /* General purpose bit flag */\n // values can obtained with expression 2**bitnr\n FLG_ENC : 1, // Bit 0: encrypted file\n FLG_COMP1 : 2, // Bit 1, compression option\n FLG_COMP2 : 4, // Bit 2, compression option\n FLG_DESC : 8, // Bit 3, data descriptor\n FLG_ENH : 16, // Bit 4, enhanced deflating\n FLG_PATCH : 32, // Bit 5, indicates that the file is compressed patched data.\n FLG_STR : 64, // Bit 6, strong encryption (patented)\n // Bits 7-10: Currently unused.\n FLG_EFS : 2048, // Bit 11: Language encoding flag (EFS)\n // Bit 12: Reserved by PKWARE for enhanced compression.\n // Bit 13: encrypted the Central Directory (patented).\n // Bits 14-15: Reserved by PKWARE.\n FLG_MSK : 4096, // mask header values\n\n /* Load type */\n FILE : 2,\n BUFFER : 1,\n NONE : 0,\n\n /* 4.5 Extensible data fields */\n EF_ID : 0,\n EF_SIZE : 2,\n\n /* Header IDs */\n ID_ZIP64 : 0x0001,\n ID_AVINFO : 0x0007,\n ID_PFS : 0x0008,\n ID_OS2 : 0x0009,\n ID_NTFS : 0x000a,\n ID_OPENVMS : 0x000c,\n ID_UNIX : 0x000d,\n ID_FORK : 0x000e,\n ID_PATCH : 0x000f,\n ID_X509_PKCS7 : 0x0014,\n ID_X509_CERTID_F : 0x0015,\n ID_X509_CERTID_C : 0x0016,\n ID_STRONGENC : 0x0017,\n ID_RECORD_MGT : 0x0018,\n ID_X509_PKCS7_RL : 0x0019,\n ID_IBM1 : 0x0065,\n ID_IBM2 : 0x0066,\n ID_POSZIP : 0x4690,\n\n EF_ZIP64_OR_32 : 0xffffffff,\n EF_ZIP64_OR_16 : 0xffff,\n EF_ZIP64_SUNCOMP : 0,\n EF_ZIP64_SCOMP : 8,\n EF_ZIP64_RHO : 16,\n EF_ZIP64_DSN : 24\n};\n","module.exports = {\n /* Header error messages */\n INVALID_LOC: \"Invalid LOC header (bad signature)\",\n INVALID_CEN: \"Invalid CEN header (bad signature)\",\n INVALID_END: \"Invalid END header (bad signature)\",\n\n /* ZipEntry error messages*/\n NO_DATA: \"Nothing to decompress\",\n BAD_CRC: \"CRC32 checksum failed\",\n FILE_IN_THE_WAY: \"There is a file in the way: %s\",\n UNKNOWN_METHOD: \"Invalid/unsupported compression method\",\n\n /* Inflater error messages */\n AVAIL_DATA: \"inflate::Available inflate data did not terminate\",\n INVALID_DISTANCE: \"inflate::Invalid literal/length or distance code in fixed or dynamic block\",\n TO_MANY_CODES: \"inflate::Dynamic block code description: too many length or distance codes\",\n INVALID_REPEAT_LEN: \"inflate::Dynamic block code description: repeat more than specified lengths\",\n INVALID_REPEAT_FIRST: \"inflate::Dynamic block code description: repeat lengths with no first length\",\n INCOMPLETE_CODES: \"inflate::Dynamic block code description: code lengths codes incomplete\",\n INVALID_DYN_DISTANCE: \"inflate::Dynamic block code description: invalid distance code lengths\",\n INVALID_CODES_LEN: \"inflate::Dynamic block code description: invalid literal/length code lengths\",\n INVALID_STORE_BLOCK: \"inflate::Stored block length did not match one's complement\",\n INVALID_BLOCK_TYPE: \"inflate::Invalid block type (type == 3)\",\n\n /* ADM-ZIP error messages */\n CANT_EXTRACT_FILE: \"Could not extract the file\",\n CANT_OVERRIDE: \"Target file already exists\",\n NO_ZIP: \"No zip file was loaded\",\n NO_ENTRY: \"Entry doesn't exist\",\n DIRECTORY_CONTENT_ERROR: \"A directory cannot have content\",\n FILE_NOT_FOUND: \"File not found: %s\",\n NOT_IMPLEMENTED: \"Not implemented\",\n INVALID_FILENAME: \"Invalid filename\",\n INVALID_FORMAT: \"Invalid or unsupported zip format. No END header found\"\n};\n","const fs = require(\"./fileSystem\").require();\nconst pth = require(\"path\");\n\nfs.existsSync = fs.existsSync || pth.existsSync;\n\nmodule.exports = function (/*String*/ path) {\n var _path = path || \"\",\n _obj = newAttr(),\n _stat = null;\n\n function newAttr() {\n return {\n directory: false,\n readonly: false,\n hidden: false,\n executable: false,\n mtime: 0,\n atime: 0\n };\n }\n\n if (_path && fs.existsSync(_path)) {\n _stat = fs.statSync(_path);\n _obj.directory = _stat.isDirectory();\n _obj.mtime = _stat.mtime;\n _obj.atime = _stat.atime;\n _obj.executable = (0o111 & _stat.mode) !== 0; // file is executable who ever har right not just owner\n _obj.readonly = (0o200 & _stat.mode) === 0; // readonly if owner has no write right\n _obj.hidden = pth.basename(_path)[0] === \".\";\n } else {\n console.warn(\"Invalid path: \" + _path);\n }\n\n return {\n get directory() {\n return _obj.directory;\n },\n\n get readOnly() {\n return _obj.readonly;\n },\n\n get hidden() {\n return _obj.hidden;\n },\n\n get mtime() {\n return _obj.mtime;\n },\n\n get atime() {\n return _obj.atime;\n },\n\n get executable() {\n return _obj.executable;\n },\n\n decodeAttributes: function () {},\n\n encodeAttributes: function () {},\n\n toJSON: function () {\n return {\n path: _path,\n isDirectory: _obj.directory,\n isReadOnly: _obj.readonly,\n isHidden: _obj.hidden,\n isExecutable: _obj.executable,\n mTime: _obj.mtime,\n aTime: _obj.atime\n };\n },\n\n toString: function () {\n return JSON.stringify(this.toJSON(), null, \"\\t\");\n }\n };\n};\n","exports.require = function () {\n if (typeof process === \"object\" && process.versions && process.versions[\"electron\"]) {\n try {\n const originalFs = require(\"original-fs\");\n if (Object.keys(originalFs).length > 0) {\n return originalFs;\n }\n } catch (e) {}\n }\n return require(\"fs\");\n};\n","module.exports = require(\"./utils\");\nmodule.exports.Constants = require(\"./constants\");\nmodule.exports.Errors = require(\"./errors\");\nmodule.exports.FileAttr = require(\"./fattr\");\n","const fsystem = require(\"./fileSystem\").require();\nconst pth = require(\"path\");\nconst Constants = require(\"./constants\");\nconst isWin = typeof process === \"object\" && \"win32\" === process.platform;\n\nconst is_Obj = (obj) => obj && typeof obj === \"object\";\n\n// generate CRC32 lookup table\nconst crcTable = new Uint32Array(256).map((t, c) => {\n for (let k = 0; k < 8; k++) {\n if ((c & 1) !== 0) {\n c = 0xedb88320 ^ (c >>> 1);\n } else {\n c >>>= 1;\n }\n }\n return c >>> 0;\n});\n\n// UTILS functions\n\nfunction Utils(opts) {\n this.sep = pth.sep;\n this.fs = fsystem;\n\n if (is_Obj(opts)) {\n // custom filesystem\n if (is_Obj(opts.fs) && typeof opts.fs.statSync === \"function\") {\n this.fs = opts.fs;\n }\n }\n}\n\nmodule.exports = Utils;\n\n// INSTANCED functions\n\nUtils.prototype.makeDir = function (/*String*/ folder) {\n const self = this;\n\n // Sync - make directories tree\n function mkdirSync(/*String*/ fpath) {\n let resolvedPath = fpath.split(self.sep)[0];\n fpath.split(self.sep).forEach(function (name) {\n if (!name || name.substr(-1, 1) === \":\") return;\n resolvedPath += self.sep + name;\n var stat;\n try {\n stat = self.fs.statSync(resolvedPath);\n } catch (e) {\n self.fs.mkdirSync(resolvedPath);\n }\n if (stat && stat.isFile()) throw Errors.FILE_IN_THE_WAY.replace(\"%s\", resolvedPath);\n });\n }\n\n mkdirSync(folder);\n};\n\nUtils.prototype.writeFileTo = function (/*String*/ path, /*Buffer*/ content, /*Boolean*/ overwrite, /*Number*/ attr) {\n const self = this;\n if (self.fs.existsSync(path)) {\n if (!overwrite) return false; // cannot overwrite\n\n var stat = self.fs.statSync(path);\n if (stat.isDirectory()) {\n return false;\n }\n }\n var folder = pth.dirname(path);\n if (!self.fs.existsSync(folder)) {\n self.makeDir(folder);\n }\n\n var fd;\n try {\n fd = self.fs.openSync(path, \"w\", 438); // 0666\n } catch (e) {\n self.fs.chmodSync(path, 438);\n fd = self.fs.openSync(path, \"w\", 438);\n }\n if (fd) {\n try {\n self.fs.writeSync(fd, content, 0, content.length, 0);\n } finally {\n self.fs.closeSync(fd);\n }\n }\n self.fs.chmodSync(path, attr || 438);\n return true;\n};\n\nUtils.prototype.writeFileToAsync = function (/*String*/ path, /*Buffer*/ content, /*Boolean*/ overwrite, /*Number*/ attr, /*Function*/ callback) {\n if (typeof attr === \"function\") {\n callback = attr;\n attr = undefined;\n }\n\n const self = this;\n\n self.fs.exists(path, function (exist) {\n if (exist && !overwrite) return callback(false);\n\n self.fs.stat(path, function (err, stat) {\n if (exist && stat.isDirectory()) {\n return callback(false);\n }\n\n var folder = pth.dirname(path);\n self.fs.exists(folder, function (exists) {\n if (!exists) self.makeDir(folder);\n\n self.fs.open(path, \"w\", 438, function (err, fd) {\n if (err) {\n self.fs.chmod(path, 438, function () {\n self.fs.open(path, \"w\", 438, function (err, fd) {\n self.fs.write(fd, content, 0, content.length, 0, function () {\n self.fs.close(fd, function () {\n self.fs.chmod(path, attr || 438, function () {\n callback(true);\n });\n });\n });\n });\n });\n } else if (fd) {\n self.fs.write(fd, content, 0, content.length, 0, function () {\n self.fs.close(fd, function () {\n self.fs.chmod(path, attr || 438, function () {\n callback(true);\n });\n });\n });\n } else {\n self.fs.chmod(path, attr || 438, function () {\n callback(true);\n });\n }\n });\n });\n });\n });\n};\n\nUtils.prototype.findFiles = function (/*String*/ path) {\n const self = this;\n\n function findSync(/*String*/ dir, /*RegExp*/ pattern, /*Boolean*/ recursive) {\n if (typeof pattern === \"boolean\") {\n recursive = pattern;\n pattern = undefined;\n }\n let files = [];\n self.fs.readdirSync(dir).forEach(function (file) {\n var path = pth.join(dir, file);\n\n if (self.fs.statSync(path).isDirectory() && recursive) files = files.concat(findSync(path, pattern, recursive));\n\n if (!pattern || pattern.test(path)) {\n files.push(pth.normalize(path) + (self.fs.statSync(path).isDirectory() ? self.sep : \"\"));\n }\n });\n return files;\n }\n\n return findSync(path, undefined, true);\n};\n\nUtils.prototype.getAttributes = function () {};\n\nUtils.prototype.setAttributes = function () {};\n\n// STATIC functions\n\n// crc32 single update (it is part of crc32)\nUtils.crc32update = function (crc, byte) {\n return crcTable[(crc ^ byte) & 0xff] ^ (crc >>> 8);\n};\n\nUtils.crc32 = function (buf) {\n if (typeof buf === \"string\") {\n buf = Buffer.from(buf, \"utf8\");\n }\n // Generate crcTable\n if (!crcTable.length) genCRCTable();\n\n let len = buf.length;\n let crc = ~0;\n for (let off = 0; off < len; ) crc = Utils.crc32update(crc, buf[off++]);\n // xor and cast as uint32 number\n return ~crc >>> 0;\n};\n\nUtils.methodToString = function (/*Number*/ method) {\n switch (method) {\n case Constants.STORED:\n return \"STORED (\" + method + \")\";\n case Constants.DEFLATED:\n return \"DEFLATED (\" + method + \")\";\n default:\n return \"UNSUPPORTED (\" + method + \")\";\n }\n};\n\n// removes \"..\" style path elements\nUtils.canonical = function (/*string*/ path) {\n if (!path) return \"\";\n // trick normalize think path is absolute\n var safeSuffix = pth.posix.normalize(\"/\" + path.split(\"\\\\\").join(\"/\"));\n return pth.join(\".\", safeSuffix);\n};\n\n// make abolute paths taking prefix as root folder\nUtils.sanitize = function (/*string*/ prefix, /*string*/ name) {\n prefix = pth.resolve(pth.normalize(prefix));\n var parts = name.split(\"/\");\n for (var i = 0, l = parts.length; i < l; i++) {\n var path = pth.normalize(pth.join(prefix, parts.slice(i, l).join(pth.sep)));\n if (path.indexOf(prefix) === 0) {\n return path;\n }\n }\n return pth.normalize(pth.join(prefix, pth.basename(name)));\n};\n\n// converts buffer, Uint8Array, string types to buffer\nUtils.toBuffer = function toBuffer(/*buffer, Uint8Array, string*/ input) {\n if (Buffer.isBuffer(input)) {\n return input;\n } else if (input instanceof Uint8Array) {\n return Buffer.from(input);\n } else {\n // expect string all other values are invalid and return empty buffer\n return typeof input === \"string\" ? Buffer.from(input, \"utf8\") : Buffer.alloc(0);\n }\n};\n\nUtils.readBigUInt64LE = function (/*Buffer*/ buffer, /*int*/ index) {\n var slice = Buffer.from(buffer.slice(index, index + 8));\n slice.swap64();\n\n return parseInt(`0x${slice.toString(\"hex\")}`);\n};\n\nUtils.isWin = isWin; // Do we have windows system\nUtils.crcTable = crcTable;\n","var Utils = require(\"./util\"),\n Headers = require(\"./headers\"),\n Constants = Utils.Constants,\n Methods = require(\"./methods\");\n\nmodule.exports = function (/*Buffer*/ input) {\n var _entryHeader = new Headers.EntryHeader(),\n _entryName = Buffer.alloc(0),\n _comment = Buffer.alloc(0),\n _isDirectory = false,\n uncompressedData = null,\n _extra = Buffer.alloc(0);\n\n function getCompressedDataFromZip() {\n if (!input || !Buffer.isBuffer(input)) {\n return Buffer.alloc(0);\n }\n _entryHeader.loadDataHeaderFromBinary(input);\n return input.slice(_entryHeader.realDataOffset, _entryHeader.realDataOffset + _entryHeader.compressedSize);\n }\n\n function crc32OK(data) {\n // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written\n if ((_entryHeader.flags & 0x8) !== 0x8) {\n if (Utils.crc32(data) !== _entryHeader.dataHeader.crc) {\n return false;\n }\n } else {\n // @TODO: load and check data descriptor header\n // The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure\n // (optionally preceded by a 4-byte signature) immediately after the compressed data:\n }\n return true;\n }\n\n function decompress(/*Boolean*/ async, /*Function*/ callback, /*String, Buffer*/ pass) {\n if (typeof callback === \"undefined\" && typeof async === \"string\") {\n pass = async;\n async = void 0;\n }\n if (_isDirectory) {\n if (async && callback) {\n callback(Buffer.alloc(0), Utils.Errors.DIRECTORY_CONTENT_ERROR); //si added error.\n }\n return Buffer.alloc(0);\n }\n\n var compressedData = getCompressedDataFromZip();\n\n if (compressedData.length === 0) {\n // File is empty, nothing to decompress.\n if (async && callback) callback(compressedData);\n return compressedData;\n }\n\n if (_entryHeader.encripted) {\n if (\"string\" !== typeof pass && !Buffer.isBuffer(pass)) {\n throw new Error(\"ADM-ZIP: Incompatible password parameter\");\n }\n compressedData = Methods.ZipCrypto.decrypt(compressedData, _entryHeader, pass);\n }\n\n var data = Buffer.alloc(_entryHeader.size);\n\n switch (_entryHeader.method) {\n case Utils.Constants.STORED:\n compressedData.copy(data);\n if (!crc32OK(data)) {\n if (async && callback) callback(data, Utils.Errors.BAD_CRC); //si added error\n throw new Error(Utils.Errors.BAD_CRC);\n } else {\n //si added otherwise did not seem to return data.\n if (async && callback) callback(data);\n return data;\n }\n case Utils.Constants.DEFLATED:\n var inflater = new Methods.Inflater(compressedData);\n if (!async) {\n const result = inflater.inflate(data);\n result.copy(data, 0);\n if (!crc32OK(data)) {\n throw new Error(Utils.Errors.BAD_CRC + \" \" + _entryName.toString());\n }\n return data;\n } else {\n inflater.inflateAsync(function (result) {\n result.copy(result, 0);\n if (callback) {\n if (!crc32OK(result)) {\n callback(result, Utils.Errors.BAD_CRC); //si added error\n } else {\n callback(result);\n }\n }\n });\n }\n break;\n default:\n if (async && callback) callback(Buffer.alloc(0), Utils.Errors.UNKNOWN_METHOD);\n throw new Error(Utils.Errors.UNKNOWN_METHOD);\n }\n }\n\n function compress(/*Boolean*/ async, /*Function*/ callback) {\n if ((!uncompressedData || !uncompressedData.length) && Buffer.isBuffer(input)) {\n // no data set or the data wasn't changed to require recompression\n if (async && callback) callback(getCompressedDataFromZip());\n return getCompressedDataFromZip();\n }\n\n if (uncompressedData.length && !_isDirectory) {\n var compressedData;\n // Local file header\n switch (_entryHeader.method) {\n case Utils.Constants.STORED:\n _entryHeader.compressedSize = _entryHeader.size;\n\n compressedData = Buffer.alloc(uncompressedData.length);\n uncompressedData.copy(compressedData);\n\n if (async && callback) callback(compressedData);\n return compressedData;\n default:\n case Utils.Constants.DEFLATED:\n var deflater = new Methods.Deflater(uncompressedData);\n if (!async) {\n var deflated = deflater.deflate();\n _entryHeader.compressedSize = deflated.length;\n return deflated;\n } else {\n deflater.deflateAsync(function (data) {\n compressedData = Buffer.alloc(data.length);\n _entryHeader.compressedSize = data.length;\n data.copy(compressedData);\n callback && callback(compressedData);\n });\n }\n deflater = null;\n break;\n }\n } else if (async && callback) {\n callback(Buffer.alloc(0));\n } else {\n return Buffer.alloc(0);\n }\n }\n\n function readUInt64LE(buffer, offset) {\n return (buffer.readUInt32LE(offset + 4) << 4) + buffer.readUInt32LE(offset);\n }\n\n function parseExtra(data) {\n var offset = 0;\n var signature, size, part;\n while (offset < data.length) {\n signature = data.readUInt16LE(offset);\n offset += 2;\n size = data.readUInt16LE(offset);\n offset += 2;\n part = data.slice(offset, offset + size);\n offset += size;\n if (Constants.ID_ZIP64 === signature) {\n parseZip64ExtendedInformation(part);\n }\n }\n }\n\n //Override header field values with values from the ZIP64 extra field\n function parseZip64ExtendedInformation(data) {\n var size, compressedSize, offset, diskNumStart;\n\n if (data.length >= Constants.EF_ZIP64_SCOMP) {\n size = readUInt64LE(data, Constants.EF_ZIP64_SUNCOMP);\n if (_entryHeader.size === Constants.EF_ZIP64_OR_32) {\n _entryHeader.size = size;\n }\n }\n if (data.length >= Constants.EF_ZIP64_RHO) {\n compressedSize = readUInt64LE(data, Constants.EF_ZIP64_SCOMP);\n if (_entryHeader.compressedSize === Constants.EF_ZIP64_OR_32) {\n _entryHeader.compressedSize = compressedSize;\n }\n }\n if (data.length >= Constants.EF_ZIP64_DSN) {\n offset = readUInt64LE(data, Constants.EF_ZIP64_RHO);\n if (_entryHeader.offset === Constants.EF_ZIP64_OR_32) {\n _entryHeader.offset = offset;\n }\n }\n if (data.length >= Constants.EF_ZIP64_DSN + 4) {\n diskNumStart = data.readUInt32LE(Constants.EF_ZIP64_DSN);\n if (_entryHeader.diskNumStart === Constants.EF_ZIP64_OR_16) {\n _entryHeader.diskNumStart = diskNumStart;\n }\n }\n }\n\n return {\n get entryName() {\n return _entryName.toString();\n },\n get rawEntryName() {\n return _entryName;\n },\n set entryName(val) {\n _entryName = Utils.toBuffer(val);\n var lastChar = _entryName[_entryName.length - 1];\n _isDirectory = lastChar === 47 || lastChar === 92;\n _entryHeader.fileNameLength = _entryName.length;\n },\n\n get extra() {\n return _extra;\n },\n set extra(val) {\n _extra = val;\n _entryHeader.extraLength = val.length;\n parseExtra(val);\n },\n\n get comment() {\n return _comment.toString();\n },\n set comment(val) {\n _comment = Utils.toBuffer(val);\n _entryHeader.commentLength = _comment.length;\n },\n\n get name() {\n var n = _entryName.toString();\n return _isDirectory\n ? n\n .substr(n.length - 1)\n .split(\"/\")\n .pop()\n : n.split(\"/\").pop();\n },\n get isDirectory() {\n return _isDirectory;\n },\n\n getCompressedData: function () {\n return compress(false, null);\n },\n\n getCompressedDataAsync: function (/*Function*/ callback) {\n compress(true, callback);\n },\n\n setData: function (value) {\n uncompressedData = Utils.toBuffer(value);\n if (!_isDirectory && uncompressedData.length) {\n _entryHeader.size = uncompressedData.length;\n _entryHeader.method = Utils.Constants.DEFLATED;\n _entryHeader.crc = Utils.crc32(value);\n _entryHeader.changed = true;\n } else {\n // folders and blank files should be stored\n _entryHeader.method = Utils.Constants.STORED;\n }\n },\n\n getData: function (pass) {\n if (_entryHeader.changed) {\n return uncompressedData;\n } else {\n return decompress(false, null, pass);\n }\n },\n\n getDataAsync: function (/*Function*/ callback, pass) {\n if (_entryHeader.changed) {\n callback(uncompressedData);\n } else {\n decompress(true, callback, pass);\n }\n },\n\n set attr(attr) {\n _entryHeader.attr = attr;\n },\n get attr() {\n return _entryHeader.attr;\n },\n\n set header(/*Buffer*/ data) {\n _entryHeader.loadFromBinary(data);\n },\n\n get header() {\n return _entryHeader;\n },\n\n packHeader: function () {\n // 1. create header (buffer)\n var header = _entryHeader.entryHeaderToBinary();\n var addpos = Utils.Constants.CENHDR;\n // 2. add file name\n _entryName.copy(header, addpos);\n addpos += _entryName.length;\n // 3. add extra data\n if (_entryHeader.extraLength) {\n _extra.copy(header, addpos);\n addpos += _entryHeader.extraLength;\n }\n // 4. add file comment\n if (_entryHeader.commentLength) {\n _comment.copy(header, addpos);\n }\n return header;\n },\n\n toJSON: function () {\n const bytes = function (nr) {\n return \"<\" + ((nr && nr.length + \" bytes buffer\") || \"null\") + \">\";\n };\n\n return {\n entryName: this.entryName,\n name: this.name,\n comment: this.comment,\n isDirectory: this.isDirectory,\n header: _entryHeader.toJSON(),\n compressedData: bytes(input),\n data: bytes(uncompressedData)\n };\n },\n\n toString: function () {\n return JSON.stringify(this.toJSON(), null, \"\\t\");\n }\n };\n};\n","const ZipEntry = require(\"./zipEntry\");\nconst Headers = require(\"./headers\");\nconst Utils = require(\"./util\");\n\nmodule.exports = function (/*Buffer|null*/ inBuffer, /** object */ options) {\n var entryList = [],\n entryTable = {},\n _comment = Buffer.alloc(0),\n mainHeader = new Headers.MainHeader(),\n loadedEntries = false;\n\n // assign options\n const opts = Object.assign(Object.create(null), options);\n\n const { noSort } = opts;\n\n if (inBuffer) {\n // is a memory buffer\n readMainHeader(opts.readEntries);\n } else {\n // none. is a new file\n loadedEntries = true;\n }\n\n function iterateEntries(callback) {\n const totalEntries = mainHeader.diskEntries; // total number of entries\n let index = mainHeader.offset; // offset of first CEN header\n\n for (let i = 0; i < totalEntries; i++) {\n let tmp = index;\n const entry = new ZipEntry(inBuffer);\n\n entry.header = inBuffer.slice(tmp, (tmp += Utils.Constants.CENHDR));\n entry.entryName = inBuffer.slice(tmp, (tmp += entry.header.fileNameLength));\n\n index += entry.header.entryHeaderSize;\n\n callback(entry);\n }\n }\n\n function readEntries() {\n loadedEntries = true;\n entryTable = {};\n entryList = new Array(mainHeader.diskEntries); // total number of entries\n var index = mainHeader.offset; // offset of first CEN header\n for (var i = 0; i < entryList.length; i++) {\n var tmp = index,\n entry = new ZipEntry(inBuffer);\n entry.header = inBuffer.slice(tmp, (tmp += Utils.Constants.CENHDR));\n\n entry.entryName = inBuffer.slice(tmp, (tmp += entry.header.fileNameLength));\n\n if (entry.header.extraLength) {\n entry.extra = inBuffer.slice(tmp, (tmp += entry.header.extraLength));\n }\n\n if (entry.header.commentLength) entry.comment = inBuffer.slice(tmp, tmp + entry.header.commentLength);\n\n index += entry.header.entryHeaderSize;\n\n entryList[i] = entry;\n entryTable[entry.entryName] = entry;\n }\n }\n\n function readMainHeader(/*Boolean*/ readNow) {\n var i = inBuffer.length - Utils.Constants.ENDHDR, // END header size\n max = Math.max(0, i - 0xffff), // 0xFFFF is the max zip file comment length\n n = max,\n endStart = inBuffer.length,\n endOffset = -1, // Start offset of the END header\n commentEnd = 0;\n\n for (i; i >= n; i--) {\n if (inBuffer[i] !== 0x50) continue; // quick check that the byte is 'P'\n if (inBuffer.readUInt32LE(i) === Utils.Constants.ENDSIG) {\n // \"PK\\005\\006\"\n endOffset = i;\n commentEnd = i;\n endStart = i + Utils.Constants.ENDHDR;\n // We already found a regular signature, let's look just a bit further to check if there's any zip64 signature\n n = i - Utils.Constants.END64HDR;\n continue;\n }\n\n if (inBuffer.readUInt32LE(i) === Utils.Constants.END64SIG) {\n // Found a zip64 signature, let's continue reading the whole zip64 record\n n = max;\n continue;\n }\n\n if (inBuffer.readUInt32LE(i) === Utils.Constants.ZIP64SIG) {\n // Found the zip64 record, let's determine it's size\n endOffset = i;\n endStart = i + Utils.readBigUInt64LE(inBuffer, i + Utils.Constants.ZIP64SIZE) + Utils.Constants.ZIP64LEAD;\n break;\n }\n }\n\n if (!~endOffset) throw new Error(Utils.Errors.INVALID_FORMAT);\n\n mainHeader.loadFromBinary(inBuffer.slice(endOffset, endStart));\n if (mainHeader.commentLength) {\n _comment = inBuffer.slice(commentEnd + Utils.Constants.ENDHDR);\n }\n if (readNow) readEntries();\n }\n\n function sortEntries() {\n if (entryList.length > 1 && !noSort) {\n entryList.sort((a, b) => a.entryName.toLowerCase().localeCompare(b.entryName.toLowerCase()));\n }\n }\n\n return {\n /**\n * Returns an array of ZipEntry objects existent in the current opened archive\n * @return Array\n */\n get entries() {\n if (!loadedEntries) {\n readEntries();\n }\n return entryList;\n },\n\n /**\n * Archive comment\n * @return {String}\n */\n get comment() {\n return _comment.toString();\n },\n set comment(val) {\n _comment = Utils.toBuffer(val);\n mainHeader.commentLength = _comment.length;\n },\n\n getEntryCount: function () {\n if (!loadedEntries) {\n return mainHeader.diskEntries;\n }\n\n return entryList.length;\n },\n\n forEach: function (callback) {\n if (!loadedEntries) {\n iterateEntries(callback);\n return;\n }\n\n entryList.forEach(callback);\n },\n\n /**\n * Returns a reference to the entry with the given name or null if entry is inexistent\n *\n * @param entryName\n * @return ZipEntry\n */\n getEntry: function (/*String*/ entryName) {\n if (!loadedEntries) {\n readEntries();\n }\n return entryTable[entryName] || null;\n },\n\n /**\n * Adds the given entry to the entry list\n *\n * @param entry\n */\n setEntry: function (/*ZipEntry*/ entry) {\n if (!loadedEntries) {\n readEntries();\n }\n entryList.push(entry);\n entryTable[entry.entryName] = entry;\n mainHeader.totalEntries = entryList.length;\n },\n\n /**\n * Removes the entry with the given name from the entry list.\n *\n * If the entry is a directory, then all nested files and directories will be removed\n * @param entryName\n */\n deleteEntry: function (/*String*/ entryName) {\n if (!loadedEntries) {\n readEntries();\n }\n var entry = entryTable[entryName];\n if (entry && entry.isDirectory) {\n var _self = this;\n this.getEntryChildren(entry).forEach(function (child) {\n if (child.entryName !== entryName) {\n _self.deleteEntry(child.entryName);\n }\n });\n }\n entryList.splice(entryList.indexOf(entry), 1);\n delete entryTable[entryName];\n mainHeader.totalEntries = entryList.length;\n },\n\n /**\n * Iterates and returns all nested files and directories of the given entry\n *\n * @param entry\n * @return Array\n */\n getEntryChildren: function (/*ZipEntry*/ entry) {\n if (!loadedEntries) {\n readEntries();\n }\n if (entry && entry.isDirectory) {\n const list = [];\n const name = entry.entryName;\n const len = name.length;\n\n entryList.forEach(function (zipEntry) {\n if (zipEntry.entryName.substr(0, len) === name) {\n list.push(zipEntry);\n }\n });\n return list;\n }\n return [];\n },\n\n /**\n * Returns the zip file\n *\n * @return Buffer\n */\n compressToBuffer: function () {\n if (!loadedEntries) {\n readEntries();\n }\n sortEntries();\n\n const dataBlock = [];\n const entryHeaders = [];\n let totalSize = 0;\n let dindex = 0;\n\n mainHeader.size = 0;\n mainHeader.offset = 0;\n\n for (const entry of entryList) {\n // compress data and set local and entry header accordingly. Reason why is called first\n const compressedData = entry.getCompressedData();\n // 1. construct data header\n entry.header.offset = dindex;\n const dataHeader = entry.header.dataHeaderToBinary();\n const entryNameLen = entry.rawEntryName.length;\n // 1.2. postheader - data after data header\n const postHeader = Buffer.alloc(entryNameLen + entry.extra.length);\n entry.rawEntryName.copy(postHeader, 0);\n postHeader.copy(entry.extra, entryNameLen);\n\n // 2. offsets\n const dataLength = dataHeader.length + postHeader.length + compressedData.length;\n dindex += dataLength;\n\n // 3. store values in sequence\n dataBlock.push(dataHeader);\n dataBlock.push(postHeader);\n dataBlock.push(compressedData);\n\n // 4. construct entry header\n const entryHeader = entry.packHeader();\n entryHeaders.push(entryHeader);\n // 5. update main header\n mainHeader.size += entryHeader.length;\n totalSize += dataLength + entryHeader.length;\n }\n\n totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length\n // point to end of data and beginning of central directory first record\n mainHeader.offset = dindex;\n\n dindex = 0;\n const outBuffer = Buffer.alloc(totalSize);\n // write data blocks\n for (const content of dataBlock) {\n content.copy(outBuffer, dindex);\n dindex += content.length;\n }\n\n // write central directory entries\n for (const content of entryHeaders) {\n content.copy(outBuffer, dindex);\n dindex += content.length;\n }\n\n // write main header\n const mh = mainHeader.toBinary();\n if (_comment) {\n _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment\n }\n mh.copy(outBuffer, dindex);\n\n return outBuffer;\n },\n\n toAsyncBuffer: function (/*Function*/ onSuccess, /*Function*/ onFail, /*Function*/ onItemStart, /*Function*/ onItemEnd) {\n try {\n if (!loadedEntries) {\n readEntries();\n }\n sortEntries();\n\n const dataBlock = [];\n const entryHeaders = [];\n let totalSize = 0;\n let dindex = 0;\n\n mainHeader.size = 0;\n mainHeader.offset = 0;\n\n const compress2Buffer = function (entryLists) {\n if (entryLists.length) {\n const entry = entryLists.pop();\n const name = entry.entryName + entry.extra.toString();\n if (onItemStart) onItemStart(name);\n entry.getCompressedDataAsync(function (compressedData) {\n if (onItemEnd) onItemEnd(name);\n\n entry.header.offset = dindex;\n // data header\n const dataHeader = entry.header.dataHeaderToBinary();\n const postHeader = Buffer.alloc(name.length, name);\n const dataLength = dataHeader.length + postHeader.length + compressedData.length;\n\n dindex += dataLength;\n\n dataBlock.push(dataHeader);\n dataBlock.push(postHeader);\n dataBlock.push(compressedData);\n\n const entryHeader = entry.packHeader();\n entryHeaders.push(entryHeader);\n mainHeader.size += entryHeader.length;\n totalSize += dataLength + entryHeader.length;\n\n compress2Buffer(entryLists);\n });\n } else {\n totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length\n // point to end of data and beginning of central directory first record\n mainHeader.offset = dindex;\n\n dindex = 0;\n const outBuffer = Buffer.alloc(totalSize);\n dataBlock.forEach(function (content) {\n content.copy(outBuffer, dindex); // write data blocks\n dindex += content.length;\n });\n entryHeaders.forEach(function (content) {\n content.copy(outBuffer, dindex); // write central directory entries\n dindex += content.length;\n });\n\n const mh = mainHeader.toBinary();\n if (_comment) {\n _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment\n }\n\n mh.copy(outBuffer, dindex); // write main header\n\n onSuccess(outBuffer);\n }\n };\n\n compress2Buffer(entryList);\n } catch (e) {\n onFail(e);\n }\n }\n };\n};\n","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","\n\nclass ResizeableBuffer{\n constructor(size=100){\n this.size = size\n this.length = 0\n this.buf = Buffer.alloc(size)\n }\n prepend(val){\n if(Buffer.isBuffer(val)){\n const length = this.length + val.length\n if(length >= this.size){\n this.resize()\n if(length >= this.size){\n throw Error('INVALID_BUFFER_STATE')\n }\n }\n const buf = this.buf\n this.buf = Buffer.alloc(this.size)\n val.copy(this.buf, 0)\n buf.copy(this.buf, val.length)\n this.length += val.length\n }else{\n const length = this.length++\n if(length === this.size){\n this.resize()\n }\n const buf = this.clone()\n this.buf[0] = val\n buf.copy(this.buf,1, 0, length)\n }\n }\n append(val){\n const length = this.length++\n if(length === this.size){\n this.resize()\n }\n this.buf[length] = val\n }\n clone(){\n return Buffer.from(this.buf.slice(0, this.length))\n }\n resize(){\n const length = this.length\n this.size = this.size * 2\n const buf = Buffer.alloc(this.size)\n this.buf.copy(buf,0, 0, length)\n this.buf = buf\n }\n toString(encoding){\n if(encoding){\n return this.buf.slice(0, this.length).toString(encoding)\n }else{\n return Uint8Array.prototype.slice.call(this.buf.slice(0, this.length))\n }\n }\n toJSON(){\n return this.toString('utf8')\n }\n reset(){\n this.length = 0\n }\n}\n\nmodule.exports = ResizeableBuffer\n","\n/*\nCSV Parse\n\nPlease look at the [project documentation](https://csv.js.org/parse/) for\nadditional information.\n*/\n\nconst { Transform } = require('stream')\nconst ResizeableBuffer = require('./ResizeableBuffer')\n\n// white space characters\n// https://en.wikipedia.org/wiki/Whitespace_character\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes#Types\n// \\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\nconst tab = 9\nconst nl = 10 // \\n, 0x0A in hexadecimal, 10 in decimal\nconst np = 12\nconst cr = 13 // \\r, 0x0D in hexadécimal, 13 in decimal\nconst space = 32\nconst boms = {\n // Note, the following are equals:\n // Buffer.from(\"\\ufeff\")\n // Buffer.from([239, 187, 191])\n // Buffer.from('EFBBBF', 'hex')\n 'utf8': Buffer.from([239, 187, 191]),\n // Note, the following are equals:\n // Buffer.from \"\\ufeff\", 'utf16le\n // Buffer.from([255, 254])\n 'utf16le': Buffer.from([255, 254])\n}\n\nclass Parser extends Transform {\n constructor(opts = {}){\n super({...{readableObjectMode: true}, ...opts, encoding: null})\n this.__originalOptions = opts\n this.__normalizeOptions(opts)\n }\n __normalizeOptions(opts){\n const options = {}\n // Merge with user options\n for(let opt in opts){\n options[underscore(opt)] = opts[opt]\n }\n // Normalize option `encoding`\n // Note: defined first because other options depends on it\n // to convert chars/strings into buffers.\n if(options.encoding === undefined || options.encoding === true){\n options.encoding = 'utf8'\n }else if(options.encoding === null || options.encoding === false){\n options.encoding = null\n }else if(typeof options.encoding !== 'string' && options.encoding !== null){\n throw new CsvError('CSV_INVALID_OPTION_ENCODING', [\n 'Invalid option encoding:',\n 'encoding must be a string or null to return a buffer,',\n `got ${JSON.stringify(options.encoding)}`\n ], options)\n }\n // Normalize option `bom`\n if(options.bom === undefined || options.bom === null || options.bom === false){\n options.bom = false\n }else if(options.bom !== true){\n throw new CsvError('CSV_INVALID_OPTION_BOM', [\n 'Invalid option bom:', 'bom must be true,',\n `got ${JSON.stringify(options.bom)}`\n ], options)\n }\n // Normalize option `cast`\n let fnCastField = null\n if(options.cast === undefined || options.cast === null || options.cast === false || options.cast === ''){\n options.cast = undefined\n }else if(typeof options.cast === 'function'){\n fnCastField = options.cast\n options.cast = true\n }else if(options.cast !== true){\n throw new CsvError('CSV_INVALID_OPTION_CAST', [\n 'Invalid option cast:', 'cast must be true or a function,',\n `got ${JSON.stringify(options.cast)}`\n ], options)\n }\n // Normalize option `cast_date`\n if(options.cast_date === undefined || options.cast_date === null || options.cast_date === false || options.cast_date === ''){\n options.cast_date = false\n }else if(options.cast_date === true){\n options.cast_date = function(value){\n const date = Date.parse(value)\n return !isNaN(date) ? new Date(date) : value\n }\n }else{\n throw new CsvError('CSV_INVALID_OPTION_CAST_DATE', [\n 'Invalid option cast_date:', 'cast_date must be true or a function,',\n `got ${JSON.stringify(options.cast_date)}`\n ], options)\n }\n // Normalize option `columns`\n let fnFirstLineToHeaders = null\n if(options.columns === true){\n // Fields in the first line are converted as-is to columns\n fnFirstLineToHeaders = undefined\n }else if(typeof options.columns === 'function'){\n fnFirstLineToHeaders = options.columns\n options.columns = true\n }else if(Array.isArray(options.columns)){\n options.columns = normalizeColumnsArray(options.columns)\n }else if(options.columns === undefined || options.columns === null || options.columns === false){\n options.columns = false\n }else{\n throw new CsvError('CSV_INVALID_OPTION_COLUMNS', [\n 'Invalid option columns:',\n 'expect an array, a function or true,',\n `got ${JSON.stringify(options.columns)}`\n ], options)\n }\n // Normalize option `columns_duplicates_to_array`\n if(options.columns_duplicates_to_array === undefined || options.columns_duplicates_to_array === null || options.columns_duplicates_to_array === false){\n options.columns_duplicates_to_array = false\n }else if(options.columns_duplicates_to_array !== true){\n throw new CsvError('CSV_INVALID_OPTION_COLUMNS_DUPLICATES_TO_ARRAY', [\n 'Invalid option columns_duplicates_to_array:',\n 'expect an boolean,',\n `got ${JSON.stringify(options.columns_duplicates_to_array)}`\n ], options)\n }else if(options.columns === false){\n throw new CsvError('CSV_INVALID_OPTION_COLUMNS_DUPLICATES_TO_ARRAY', [\n 'Invalid option columns_duplicates_to_array:',\n 'the `columns` mode must be activated.'\n ], options)\n }\n // Normalize option `comment`\n if(options.comment === undefined || options.comment === null || options.comment === false || options.comment === ''){\n options.comment = null\n }else{\n if(typeof options.comment === 'string'){\n options.comment = Buffer.from(options.comment, options.encoding)\n }\n if(!Buffer.isBuffer(options.comment)){\n throw new CsvError('CSV_INVALID_OPTION_COMMENT', [\n 'Invalid option comment:',\n 'comment must be a buffer or a string,',\n `got ${JSON.stringify(options.comment)}`\n ], options)\n }\n }\n // Normalize option `delimiter`\n const delimiter_json = JSON.stringify(options.delimiter)\n if(!Array.isArray(options.delimiter)) options.delimiter = [options.delimiter]\n if(options.delimiter.length === 0){\n throw new CsvError('CSV_INVALID_OPTION_DELIMITER', [\n 'Invalid option delimiter:',\n 'delimiter must be a non empty string or buffer or array of string|buffer,',\n `got ${delimiter_json}`\n ], options)\n }\n options.delimiter = options.delimiter.map(function(delimiter){\n if(delimiter === undefined || delimiter === null || delimiter === false){\n return Buffer.from(',', options.encoding)\n }\n if(typeof delimiter === 'string'){\n delimiter = Buffer.from(delimiter, options.encoding)\n }\n if( !Buffer.isBuffer(delimiter) || delimiter.length === 0){\n throw new CsvError('CSV_INVALID_OPTION_DELIMITER', [\n 'Invalid option delimiter:',\n 'delimiter must be a non empty string or buffer or array of string|buffer,',\n `got ${delimiter_json}`\n ], options)\n }\n return delimiter\n })\n // Normalize option `escape`\n if(options.escape === undefined || options.escape === true){\n options.escape = Buffer.from('\"', options.encoding)\n }else if(typeof options.escape === 'string'){\n options.escape = Buffer.from(options.escape, options.encoding)\n }else if (options.escape === null || options.escape === false){\n options.escape = null\n }\n if(options.escape !== null){\n if(!Buffer.isBuffer(options.escape)){\n throw new Error(`Invalid Option: escape must be a buffer, a string or a boolean, got ${JSON.stringify(options.escape)}`)\n }\n }\n // Normalize option `from`\n if(options.from === undefined || options.from === null){\n options.from = 1\n }else{\n if(typeof options.from === 'string' && /\\d+/.test(options.from)){\n options.from = parseInt(options.from)\n }\n if(Number.isInteger(options.from)){\n if(options.from < 0){\n throw new Error(`Invalid Option: from must be a positive integer, got ${JSON.stringify(opts.from)}`)\n }\n }else{\n throw new Error(`Invalid Option: from must be an integer, got ${JSON.stringify(options.from)}`)\n }\n }\n // Normalize option `from_line`\n if(options.from_line === undefined || options.from_line === null){\n options.from_line = 1\n }else{\n if(typeof options.from_line === 'string' && /\\d+/.test(options.from_line)){\n options.from_line = parseInt(options.from_line)\n }\n if(Number.isInteger(options.from_line)){\n if(options.from_line <= 0){\n throw new Error(`Invalid Option: from_line must be a positive integer greater than 0, got ${JSON.stringify(opts.from_line)}`)\n }\n }else{\n throw new Error(`Invalid Option: from_line must be an integer, got ${JSON.stringify(opts.from_line)}`)\n }\n }\n // Normalize options `ignore_last_delimiters`\n if(options.ignore_last_delimiters === undefined || options.ignore_last_delimiters === null){\n options.ignore_last_delimiters = false\n }else if(typeof options.ignore_last_delimiters === 'number'){\n options.ignore_last_delimiters = Math.floor(options.ignore_last_delimiters)\n if(options.ignore_last_delimiters === 0){\n options.ignore_last_delimiters = false\n }\n }else if(typeof options.ignore_last_delimiters !== 'boolean'){\n throw new CsvError('CSV_INVALID_OPTION_IGNORE_LAST_DELIMITERS', [\n 'Invalid option `ignore_last_delimiters`:',\n 'the value must be a boolean value or an integer,',\n `got ${JSON.stringify(options.ignore_last_delimiters)}`\n ], options)\n }\n if(options.ignore_last_delimiters === true && options.columns === false){\n throw new CsvError('CSV_IGNORE_LAST_DELIMITERS_REQUIRES_COLUMNS', [\n 'The option `ignore_last_delimiters`',\n 'requires the activation of the `columns` option'\n ], options)\n }\n // Normalize option `info`\n if(options.info === undefined || options.info === null || options.info === false){\n options.info = false\n }else if(options.info !== true){\n throw new Error(`Invalid Option: info must be true, got ${JSON.stringify(options.info)}`)\n }\n // Normalize option `max_record_size`\n if(options.max_record_size === undefined || options.max_record_size === null || options.max_record_size === false){\n options.max_record_size = 0\n }else if(Number.isInteger(options.max_record_size) && options.max_record_size >= 0){\n // Great, nothing to do\n }else if(typeof options.max_record_size === 'string' && /\\d+/.test(options.max_record_size)){\n options.max_record_size = parseInt(options.max_record_size)\n }else{\n throw new Error(`Invalid Option: max_record_size must be a positive integer, got ${JSON.stringify(options.max_record_size)}`)\n }\n // Normalize option `objname`\n if(options.objname === undefined || options.objname === null || options.objname === false){\n options.objname = undefined\n }else if(Buffer.isBuffer(options.objname)){\n if(options.objname.length === 0){\n throw new Error(`Invalid Option: objname must be a non empty buffer`)\n }\n if(options.encoding === null){\n // Don't call `toString`, leave objname as a buffer\n }else{\n options.objname = options.objname.toString(options.encoding)\n }\n }else if(typeof options.objname === 'string'){\n if(options.objname.length === 0){\n throw new Error(`Invalid Option: objname must be a non empty string`)\n }\n // Great, nothing to do\n }else{\n throw new Error(`Invalid Option: objname must be a string or a buffer, got ${options.objname}`)\n }\n // Normalize option `on_record`\n if(options.on_record === undefined || options.on_record === null){\n options.on_record = undefined\n }else if(typeof options.on_record !== 'function'){\n throw new CsvError('CSV_INVALID_OPTION_ON_RECORD', [\n 'Invalid option `on_record`:',\n 'expect a function,',\n `got ${JSON.stringify(options.on_record)}`\n ], options)\n }\n // Normalize option `quote`\n if(options.quote === null || options.quote === false || options.quote === ''){\n options.quote = null\n }else{\n if(options.quote === undefined || options.quote === true){\n options.quote = Buffer.from('\"', options.encoding)\n }else if(typeof options.quote === 'string'){\n options.quote = Buffer.from(options.quote, options.encoding)\n }\n if(!Buffer.isBuffer(options.quote)){\n throw new Error(`Invalid Option: quote must be a buffer or a string, got ${JSON.stringify(options.quote)}`)\n }\n }\n // Normalize option `raw`\n if(options.raw === undefined || options.raw === null || options.raw === false){\n options.raw = false\n }else if(options.raw !== true){\n throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`)\n }\n // Normalize option `record_delimiter`\n if(!options.record_delimiter){\n options.record_delimiter = []\n }else if(!Array.isArray(options.record_delimiter)){\n options.record_delimiter = [options.record_delimiter]\n }\n options.record_delimiter = options.record_delimiter.map( function(rd){\n if(typeof rd === 'string'){\n rd = Buffer.from(rd, options.encoding)\n }\n return rd\n })\n // Normalize option `relax`\n if(typeof options.relax === 'boolean'){\n // Great, nothing to do\n }else if(options.relax === undefined || options.relax === null){\n options.relax = false\n }else{\n throw new Error(`Invalid Option: relax must be a boolean, got ${JSON.stringify(options.relax)}`)\n }\n // Normalize option `relax_column_count`\n if(typeof options.relax_column_count === 'boolean'){\n // Great, nothing to do\n }else if(options.relax_column_count === undefined || options.relax_column_count === null){\n options.relax_column_count = false\n }else{\n throw new Error(`Invalid Option: relax_column_count must be a boolean, got ${JSON.stringify(options.relax_column_count)}`)\n }\n if(typeof options.relax_column_count_less === 'boolean'){\n // Great, nothing to do\n }else if(options.relax_column_count_less === undefined || options.relax_column_count_less === null){\n options.relax_column_count_less = false\n }else{\n throw new Error(`Invalid Option: relax_column_count_less must be a boolean, got ${JSON.stringify(options.relax_column_count_less)}`)\n }\n if(typeof options.relax_column_count_more === 'boolean'){\n // Great, nothing to do\n }else if(options.relax_column_count_more === undefined || options.relax_column_count_more === null){\n options.relax_column_count_more = false\n }else{\n throw new Error(`Invalid Option: relax_column_count_more must be a boolean, got ${JSON.stringify(options.relax_column_count_more)}`)\n }\n // Normalize option `skip_empty_lines`\n if(typeof options.skip_empty_lines === 'boolean'){\n // Great, nothing to do\n }else if(options.skip_empty_lines === undefined || options.skip_empty_lines === null){\n options.skip_empty_lines = false\n }else{\n throw new Error(`Invalid Option: skip_empty_lines must be a boolean, got ${JSON.stringify(options.skip_empty_lines)}`)\n }\n // Normalize option `skip_lines_with_empty_values`\n if(typeof options.skip_lines_with_empty_values === 'boolean'){\n // Great, nothing to do\n }else if(options.skip_lines_with_empty_values === undefined || options.skip_lines_with_empty_values === null){\n options.skip_lines_with_empty_values = false\n }else{\n throw new Error(`Invalid Option: skip_lines_with_empty_values must be a boolean, got ${JSON.stringify(options.skip_lines_with_empty_values)}`)\n }\n // Normalize option `skip_lines_with_error`\n if(typeof options.skip_lines_with_error === 'boolean'){\n // Great, nothing to do\n }else if(options.skip_lines_with_error === undefined || options.skip_lines_with_error === null){\n options.skip_lines_with_error = false\n }else{\n throw new Error(`Invalid Option: skip_lines_with_error must be a boolean, got ${JSON.stringify(options.skip_lines_with_error)}`)\n }\n // Normalize option `rtrim`\n if(options.rtrim === undefined || options.rtrim === null || options.rtrim === false){\n options.rtrim = false\n }else if(options.rtrim !== true){\n throw new Error(`Invalid Option: rtrim must be a boolean, got ${JSON.stringify(options.rtrim)}`)\n }\n // Normalize option `ltrim`\n if(options.ltrim === undefined || options.ltrim === null || options.ltrim === false){\n options.ltrim = false\n }else if(options.ltrim !== true){\n throw new Error(`Invalid Option: ltrim must be a boolean, got ${JSON.stringify(options.ltrim)}`)\n }\n // Normalize option `trim`\n if(options.trim === undefined || options.trim === null || options.trim === false){\n options.trim = false\n }else if(options.trim !== true){\n throw new Error(`Invalid Option: trim must be a boolean, got ${JSON.stringify(options.trim)}`)\n }\n // Normalize options `trim`, `ltrim` and `rtrim`\n if(options.trim === true && opts.ltrim !== false){\n options.ltrim = true\n }else if(options.ltrim !== true){\n options.ltrim = false\n }\n if(options.trim === true && opts.rtrim !== false){\n options.rtrim = true\n }else if(options.rtrim !== true){\n options.rtrim = false\n }\n // Normalize option `to`\n if(options.to === undefined || options.to === null){\n options.to = -1\n }else{\n if(typeof options.to === 'string' && /\\d+/.test(options.to)){\n options.to = parseInt(options.to)\n }\n if(Number.isInteger(options.to)){\n if(options.to <= 0){\n throw new Error(`Invalid Option: to must be a positive integer greater than 0, got ${JSON.stringify(opts.to)}`)\n }\n }else{\n throw new Error(`Invalid Option: to must be an integer, got ${JSON.stringify(opts.to)}`)\n }\n }\n // Normalize option `to_line`\n if(options.to_line === undefined || options.to_line === null){\n options.to_line = -1\n }else{\n if(typeof options.to_line === 'string' && /\\d+/.test(options.to_line)){\n options.to_line = parseInt(options.to_line)\n }\n if(Number.isInteger(options.to_line)){\n if(options.to_line <= 0){\n throw new Error(`Invalid Option: to_line must be a positive integer greater than 0, got ${JSON.stringify(opts.to_line)}`)\n }\n }else{\n throw new Error(`Invalid Option: to_line must be an integer, got ${JSON.stringify(opts.to_line)}`)\n }\n }\n this.info = {\n bytes: 0,\n comment_lines: 0,\n empty_lines: 0,\n invalid_field_length: 0,\n lines: 1,\n records: 0\n }\n this.options = options\n this.state = {\n bomSkipped: false,\n bufBytesStart: 0,\n castField: fnCastField,\n commenting: false,\n // Current error encountered by a record\n error: undefined,\n enabled: options.from_line === 1,\n escaping: false,\n // escapeIsQuote: options.escape === options.quote,\n escapeIsQuote: Buffer.isBuffer(options.escape) && Buffer.isBuffer(options.quote) && Buffer.compare(options.escape, options.quote) === 0,\n // columns can be `false`, `true`, `Array`\n expectedRecordLength: Array.isArray(options.columns) ? options.columns.length : undefined,\n field: new ResizeableBuffer(20),\n firstLineToHeaders: fnFirstLineToHeaders,\n needMoreDataSize: Math.max(\n // Skip if the remaining buffer smaller than comment\n options.comment !== null ? options.comment.length : 0,\n // Skip if the remaining buffer can be delimiter\n ...options.delimiter.map( (delimiter) => delimiter.length),\n // Skip if the remaining buffer can be escape sequence\n options.quote !== null ? options.quote.length : 0,\n ),\n previousBuf: undefined,\n quoting: false,\n stop: false,\n rawBuffer: new ResizeableBuffer(100),\n record: [],\n recordHasError: false,\n record_length: 0,\n recordDelimiterMaxLength: options.record_delimiter.length === 0 ? 2 : Math.max(...options.record_delimiter.map( (v) => v.length)),\n trimChars: [Buffer.from(' ', options.encoding)[0], Buffer.from('\\t', options.encoding)[0]],\n wasQuoting: false,\n wasRowDelimiter: false\n }\n }\n // Implementation of `Transform._transform`\n _transform(buf, encoding, callback){\n if(this.state.stop === true){\n return\n }\n const err = this.__parse(buf, false)\n if(err !== undefined){\n this.state.stop = true\n }\n callback(err)\n }\n // Implementation of `Transform._flush`\n _flush(callback){\n if(this.state.stop === true){\n return\n }\n const err = this.__parse(undefined, true)\n callback(err)\n }\n // Central parser implementation\n __parse(nextBuf, end){\n const {bom, comment, escape, from_line, ltrim, max_record_size, quote, raw, relax, rtrim, skip_empty_lines, to, to_line} = this.options\n let {record_delimiter} = this.options\n const {bomSkipped, previousBuf, rawBuffer, escapeIsQuote} = this.state\n let buf\n if(previousBuf === undefined){\n if(nextBuf === undefined){\n // Handle empty string\n this.push(null)\n return\n }else{\n buf = nextBuf\n }\n }else if(previousBuf !== undefined && nextBuf === undefined){\n buf = previousBuf\n }else{\n buf = Buffer.concat([previousBuf, nextBuf])\n }\n // Handle UTF BOM\n if(bomSkipped === false){\n if(bom === false){\n this.state.bomSkipped = true\n }else if(buf.length < 3){\n // No enough data\n if(end === false){\n // Wait for more data\n this.state.previousBuf = buf\n return\n }\n }else{\n for(let encoding in boms){\n if(boms[encoding].compare(buf, 0, boms[encoding].length) === 0){\n // Skip BOM\n let bomLength = boms[encoding].length\n this.state.bufBytesStart += bomLength\n buf = buf.slice(bomLength)\n // Renormalize original options with the new encoding\n this.__normalizeOptions({...this.__originalOptions, encoding: encoding})\n break\n }\n }\n this.state.bomSkipped = true\n }\n }\n const bufLen = buf.length\n let pos\n for(pos = 0; pos < bufLen; pos++){\n // Ensure we get enough space to look ahead\n // There should be a way to move this out of the loop\n if(this.__needMoreData(pos, bufLen, end)){\n break\n }\n if(this.state.wasRowDelimiter === true){\n this.info.lines++\n this.state.wasRowDelimiter = false\n }\n if(to_line !== -1 && this.info.lines > to_line){\n this.state.stop = true\n this.push(null)\n return\n }\n // Auto discovery of record_delimiter, unix, mac and windows supported\n if(this.state.quoting === false && record_delimiter.length === 0){\n const record_delimiterCount = this.__autoDiscoverRecordDelimiter(buf, pos)\n if(record_delimiterCount){\n record_delimiter = this.options.record_delimiter\n }\n }\n const chr = buf[pos]\n if(raw === true){\n rawBuffer.append(chr)\n }\n if((chr === cr || chr === nl) && this.state.wasRowDelimiter === false ){\n this.state.wasRowDelimiter = true\n }\n // Previous char was a valid escape char\n // treat the current char as a regular char\n if(this.state.escaping === true){\n this.state.escaping = false\n }else{\n // Escape is only active inside quoted fields\n // We are quoting, the char is an escape chr and there is a chr to escape\n // if(escape !== null && this.state.quoting === true && chr === escape && pos + 1 < bufLen){\n if(escape !== null && this.state.quoting === true && this.__isEscape(buf, pos, chr) && pos + escape.length < bufLen){\n if(escapeIsQuote){\n if(this.__isQuote(buf, pos+escape.length)){\n this.state.escaping = true\n pos += escape.length - 1\n continue\n }\n }else{\n this.state.escaping = true\n pos += escape.length - 1\n continue\n }\n }\n // Not currently escaping and chr is a quote\n // TODO: need to compare bytes instead of single char\n if(this.state.commenting === false && this.__isQuote(buf, pos)){\n if(this.state.quoting === true){\n const nextChr = buf[pos+quote.length]\n const isNextChrTrimable = rtrim && this.__isCharTrimable(nextChr)\n const isNextChrComment = comment !== null && this.__compareBytes(comment, buf, pos+quote.length, nextChr)\n const isNextChrDelimiter = this.__isDelimiter(buf, pos+quote.length, nextChr)\n const isNextChrRecordDelimiter = record_delimiter.length === 0 ? this.__autoDiscoverRecordDelimiter(buf, pos+quote.length) : this.__isRecordDelimiter(nextChr, buf, pos+quote.length)\n // Escape a quote\n // Treat next char as a regular character\n if(escape !== null && this.__isEscape(buf, pos, chr) && this.__isQuote(buf, pos + escape.length)){\n pos += escape.length - 1\n }else if(!nextChr || isNextChrDelimiter || isNextChrRecordDelimiter || isNextChrComment || isNextChrTrimable){\n this.state.quoting = false\n this.state.wasQuoting = true\n pos += quote.length - 1\n continue\n }else if(relax === false){\n const err = this.__error(\n new CsvError('CSV_INVALID_CLOSING_QUOTE', [\n 'Invalid Closing Quote:',\n `got \"${String.fromCharCode(nextChr)}\"`,\n `at line ${this.info.lines}`,\n 'instead of delimiter, record delimiter, trimable character',\n '(if activated) or comment',\n ], this.options, this.__infoField())\n )\n if(err !== undefined) return err\n }else{\n this.state.quoting = false\n this.state.wasQuoting = true\n this.state.field.prepend(quote)\n pos += quote.length - 1\n }\n }else{\n if(this.state.field.length !== 0){\n // In relax mode, treat opening quote preceded by chrs as regular\n if( relax === false ){\n const err = this.__error(\n new CsvError('INVALID_OPENING_QUOTE', [\n 'Invalid Opening Quote:',\n `a quote is found inside a field at line ${this.info.lines}`,\n ], this.options, this.__infoField(), {\n field: this.state.field,\n })\n )\n if(err !== undefined) return err\n }\n }else{\n this.state.quoting = true\n pos += quote.length - 1\n continue\n }\n }\n }\n if(this.state.quoting === false){\n let recordDelimiterLength = this.__isRecordDelimiter(chr, buf, pos)\n if(recordDelimiterLength !== 0){\n // Do not emit comments which take a full line\n const skipCommentLine = this.state.commenting && (this.state.wasQuoting === false && this.state.record.length === 0 && this.state.field.length === 0)\n if(skipCommentLine){\n this.info.comment_lines++\n // Skip full comment line\n }else{\n // Activate records emition if above from_line\n if(this.state.enabled === false && this.info.lines + (this.state.wasRowDelimiter === true ? 1: 0) >= from_line){\n this.state.enabled = true\n this.__resetField()\n this.__resetRecord()\n pos += recordDelimiterLength - 1\n continue\n }\n // Skip if line is empty and skip_empty_lines activated\n if(skip_empty_lines === true && this.state.wasQuoting === false && this.state.record.length === 0 && this.state.field.length === 0){\n this.info.empty_lines++\n pos += recordDelimiterLength - 1\n continue\n }\n this.info.bytes = this.state.bufBytesStart + pos;\n const errField = this.__onField()\n if(errField !== undefined) return errField\n this.info.bytes = this.state.bufBytesStart + pos + recordDelimiterLength;\n const errRecord = this.__onRecord()\n if(errRecord !== undefined) return errRecord\n if(to !== -1 && this.info.records >= to){\n this.state.stop = true\n this.push(null)\n return\n }\n }\n this.state.commenting = false\n pos += recordDelimiterLength - 1\n continue\n }\n if(this.state.commenting){\n continue\n }\n const commentCount = comment === null ? 0 : this.__compareBytes(comment, buf, pos, chr)\n if(commentCount !== 0){\n this.state.commenting = true\n continue\n }\n let delimiterLength = this.__isDelimiter(buf, pos, chr)\n if(delimiterLength !== 0){\n this.info.bytes = this.state.bufBytesStart + pos;\n const errField = this.__onField()\n if(errField !== undefined) return errField\n pos += delimiterLength - 1\n continue\n }\n }\n }\n if(this.state.commenting === false){\n if(max_record_size !== 0 && this.state.record_length + this.state.field.length > max_record_size){\n const err = this.__error(\n new CsvError('CSV_MAX_RECORD_SIZE', [\n 'Max Record Size:',\n 'record exceed the maximum number of tolerated bytes',\n `of ${max_record_size}`,\n `at line ${this.info.lines}`,\n ], this.options, this.__infoField())\n )\n if(err !== undefined) return err\n }\n }\n const lappend = ltrim === false || this.state.quoting === true || this.state.field.length !== 0 || !this.__isCharTrimable(chr)\n // rtrim in non quoting is handle in __onField\n const rappend = rtrim === false || this.state.wasQuoting === false\n if( lappend === true && rappend === true ){\n this.state.field.append(chr)\n }else if(rtrim === true && !this.__isCharTrimable(chr)){\n const err = this.__error(\n new CsvError('CSV_NON_TRIMABLE_CHAR_AFTER_CLOSING_QUOTE', [\n 'Invalid Closing Quote:',\n 'found non trimable byte after quote',\n `at line ${this.info.lines}`,\n ], this.options, this.__infoField())\n )\n if(err !== undefined) return err\n }\n }\n if(end === true){\n // Ensure we are not ending in a quoting state\n if(this.state.quoting === true){\n const err = this.__error(\n new CsvError('CSV_QUOTE_NOT_CLOSED', [\n 'Quote Not Closed:',\n `the parsing is finished with an opening quote at line ${this.info.lines}`,\n ], this.options, this.__infoField())\n )\n if(err !== undefined) return err\n }else{\n // Skip last line if it has no characters\n if(this.state.wasQuoting === true || this.state.record.length !== 0 || this.state.field.length !== 0){\n this.info.bytes = this.state.bufBytesStart + pos;\n const errField = this.__onField()\n if(errField !== undefined) return errField\n const errRecord = this.__onRecord()\n if(errRecord !== undefined) return errRecord\n }else if(this.state.wasRowDelimiter === true){\n this.info.empty_lines++\n }else if(this.state.commenting === true){\n this.info.comment_lines++\n }\n }\n }else{\n this.state.bufBytesStart += pos\n this.state.previousBuf = buf.slice(pos)\n }\n if(this.state.wasRowDelimiter === true){\n this.info.lines++\n this.state.wasRowDelimiter = false\n }\n }\n __onRecord(){\n const {columns, columns_duplicates_to_array, encoding, info, from, relax_column_count, relax_column_count_less, relax_column_count_more, raw, skip_lines_with_empty_values} = this.options\n const {enabled, record} = this.state\n if(enabled === false){\n return this.__resetRecord()\n }\n // Convert the first line into column names\n const recordLength = record.length\n if(columns === true){\n if(skip_lines_with_empty_values === true && isRecordEmpty(record)){\n this.__resetRecord()\n return\n }\n return this.__firstLineToColumns(record)\n }\n if(columns === false && this.info.records === 0){\n this.state.expectedRecordLength = recordLength\n }\n if(recordLength !== this.state.expectedRecordLength){\n const err = columns === false ?\n // Todo: rename CSV_INCONSISTENT_RECORD_LENGTH to\n // CSV_RECORD_INCONSISTENT_FIELDS_LENGTH\n new CsvError('CSV_INCONSISTENT_RECORD_LENGTH', [\n 'Invalid Record Length:',\n `expect ${this.state.expectedRecordLength},`,\n `got ${recordLength} on line ${this.info.lines}`,\n ], this.options, this.__infoField(), {\n record: record,\n })\n :\n // Todo: rename CSV_RECORD_DONT_MATCH_COLUMNS_LENGTH to\n // CSV_RECORD_INCONSISTENT_COLUMNS\n new CsvError('CSV_RECORD_DONT_MATCH_COLUMNS_LENGTH', [\n 'Invalid Record Length:',\n `columns length is ${columns.length},`, // rename columns\n `got ${recordLength} on line ${this.info.lines}`,\n ], this.options, this.__infoField(), {\n record: record,\n })\n if(relax_column_count === true ||\n (relax_column_count_less === true && recordLength < this.state.expectedRecordLength) ||\n (relax_column_count_more === true && recordLength > this.state.expectedRecordLength) ){\n this.info.invalid_field_length++\n this.state.error = err\n // Error is undefined with skip_lines_with_error\n }else{\n const finalErr = this.__error(err)\n if(finalErr) return finalErr\n }\n }\n if(skip_lines_with_empty_values === true && isRecordEmpty(record)){\n this.__resetRecord()\n return\n }\n if(this.state.recordHasError === true){\n this.__resetRecord()\n this.state.recordHasError = false\n return\n }\n this.info.records++\n if(from === 1 || this.info.records >= from){\n // With columns, records are object\n if(columns !== false){\n const obj = {}\n // Transform record array to an object\n for(let i = 0, l = record.length; i < l; i++){\n if(columns[i] === undefined || columns[i].disabled) continue\n // Turn duplicate columns into an array\n if (columns_duplicates_to_array === true && obj[columns[i].name] !== undefined) {\n if (Array.isArray(obj[columns[i].name])) {\n obj[columns[i].name] = obj[columns[i].name].concat(record[i])\n } else {\n obj[columns[i].name] = [obj[columns[i].name], record[i]]\n }\n } else {\n obj[columns[i].name] = record[i]\n }\n }\n const {objname} = this.options\n // Without objname (default)\n if(objname === undefined){\n if(raw === true || info === true){\n const err = this.__push(Object.assign(\n {record: obj},\n (raw === true ? {raw: this.state.rawBuffer.toString(encoding)}: {}),\n (info === true ? {info: this.__infoRecord()}: {})\n ))\n if(err){\n return err\n }\n }else{\n const err = this.__push(obj)\n if(err){\n return err\n }\n }\n // With objname (default)\n }else{\n if(raw === true || info === true){\n const err = this.__push(Object.assign(\n {record: [obj[objname], obj]},\n raw === true ? {raw: this.state.rawBuffer.toString(encoding)}: {},\n info === true ? {info: this.__infoRecord()}: {}\n ))\n if(err){\n return err\n }\n }else{\n const err = this.__push([obj[objname], obj])\n if(err){\n return err\n }\n }\n }\n // Without columns, records are array\n }else{\n if(raw === true || info === true){\n const err = this.__push(Object.assign(\n {record: record},\n raw === true ? {raw: this.state.rawBuffer.toString(encoding)}: {},\n info === true ? {info: this.__infoRecord()}: {}\n ))\n if(err){\n return err\n }\n }else{\n const err = this.__push(record)\n if(err){\n return err\n }\n }\n }\n }\n this.__resetRecord()\n }\n __firstLineToColumns(record){\n const {firstLineToHeaders} = this.state\n try{\n const headers = firstLineToHeaders === undefined ? record : firstLineToHeaders.call(null, record)\n if(!Array.isArray(headers)){\n return this.__error(\n new CsvError('CSV_INVALID_COLUMN_MAPPING', [\n 'Invalid Column Mapping:',\n 'expect an array from column function,',\n `got ${JSON.stringify(headers)}`\n ], this.options, this.__infoField(), {\n headers: headers,\n })\n )\n }\n const normalizedHeaders = normalizeColumnsArray(headers)\n this.state.expectedRecordLength = normalizedHeaders.length\n this.options.columns = normalizedHeaders\n this.__resetRecord()\n return\n }catch(err){\n return err\n }\n }\n __resetRecord(){\n if(this.options.raw === true){\n this.state.rawBuffer.reset()\n }\n this.state.error = undefined\n this.state.record = []\n this.state.record_length = 0\n }\n __onField(){\n const {cast, encoding, rtrim, max_record_size} = this.options\n const {enabled, wasQuoting} = this.state\n // Short circuit for the from_line options\n if(enabled === false){\n return this.__resetField()\n }\n let field = this.state.field.toString(encoding)\n if(rtrim === true && wasQuoting === false){\n field = field.trimRight()\n }\n if(cast === true){\n const [err, f] = this.__cast(field)\n if(err !== undefined) return err\n field = f\n }\n this.state.record.push(field)\n // Increment record length if record size must not exceed a limit\n if(max_record_size !== 0 && typeof field === 'string'){\n this.state.record_length += field.length\n }\n this.__resetField()\n }\n __resetField(){\n this.state.field.reset()\n this.state.wasQuoting = false\n }\n __push(record){\n const {on_record} = this.options\n if(on_record !== undefined){\n const info = this.__infoRecord()\n try{\n record = on_record.call(null, record, info)\n }catch(err){\n return err\n }\n if(record === undefined || record === null){ return }\n }\n this.push(record)\n }\n // Return a tuple with the error and the casted value\n __cast(field){\n const {columns, relax_column_count} = this.options\n const isColumns = Array.isArray(columns)\n // Dont loose time calling cast\n // because the final record is an object\n // and this field can't be associated to a key present in columns\n if( isColumns === true && relax_column_count && this.options.columns.length <= this.state.record.length ){\n return [undefined, undefined]\n }\n if(this.state.castField !== null){\n try{\n const info = this.__infoField()\n return [undefined, this.state.castField.call(null, field, info)]\n }catch(err){\n return [err]\n }\n }\n if(this.__isFloat(field)){\n return [undefined, parseFloat(field)]\n }else if(this.options.cast_date !== false){\n const info = this.__infoField()\n return [undefined, this.options.cast_date.call(null, field, info)]\n }\n return [undefined, field]\n }\n // Helper to test if a character is a space or a line delimiter\n __isCharTrimable(chr){\n return chr === space || chr === tab || chr === cr || chr === nl || chr === np\n }\n // Keep it in case we implement the `cast_int` option\n // __isInt(value){\n // // return Number.isInteger(parseInt(value))\n // // return !isNaN( parseInt( obj ) );\n // return /^(\\-|\\+)?[1-9][0-9]*$/.test(value)\n // }\n __isFloat(value){\n return (value - parseFloat( value ) + 1) >= 0 // Borrowed from jquery\n }\n __compareBytes(sourceBuf, targetBuf, targetPos, firstByte){\n if(sourceBuf[0] !== firstByte) return 0\n const sourceLength = sourceBuf.length\n for(let i = 1; i < sourceLength; i++){\n if(sourceBuf[i] !== targetBuf[targetPos+i]) return 0\n }\n return sourceLength\n }\n __needMoreData(i, bufLen, end){\n if(end) return false\n const {quote} = this.options\n const {quoting, needMoreDataSize, recordDelimiterMaxLength} = this.state\n const numOfCharLeft = bufLen - i - 1\n const requiredLength = Math.max(\n needMoreDataSize,\n // Skip if the remaining buffer smaller than record delimiter\n recordDelimiterMaxLength,\n // Skip if the remaining buffer can be record delimiter following the closing quote\n // 1 is for quote.length\n quoting ? (quote.length + recordDelimiterMaxLength) : 0,\n )\n return numOfCharLeft < requiredLength\n }\n __isDelimiter(buf, pos, chr){\n const {delimiter, ignore_last_delimiters} = this.options\n if(ignore_last_delimiters === true && this.state.record.length === this.options.columns.length - 1){\n return 0\n }else if(ignore_last_delimiters !== false && typeof ignore_last_delimiters === 'number' && this.state.record.length === ignore_last_delimiters - 1){\n return 0\n }\n loop1: for(let i = 0; i < delimiter.length; i++){\n const del = delimiter[i]\n if(del[0] === chr){\n for(let j = 1; j < del.length; j++){\n if(del[j] !== buf[pos+j]) continue loop1\n }\n return del.length\n }\n }\n return 0\n }\n __isRecordDelimiter(chr, buf, pos){\n const {record_delimiter} = this.options\n const recordDelimiterLength = record_delimiter.length\n loop1: for(let i = 0; i < recordDelimiterLength; i++){\n const rd = record_delimiter[i]\n const rdLength = rd.length\n if(rd[0] !== chr){\n continue\n }\n for(let j = 1; j < rdLength; j++){\n if(rd[j] !== buf[pos+j]){\n continue loop1\n }\n }\n return rd.length\n }\n return 0\n }\n __isEscape(buf, pos, chr){\n const {escape} = this.options\n if(escape === null) return false\n const l = escape.length\n if(escape[0] === chr){\n for(let i = 0; i < l; i++){\n if(escape[i] !== buf[pos+i]){\n return false\n }\n }\n return true\n }\n return false\n }\n __isQuote(buf, pos){\n const {quote} = this.options\n if(quote === null) return false\n const l = quote.length\n for(let i = 0; i < l; i++){\n if(quote[i] !== buf[pos+i]){\n return false\n }\n }\n return true\n }\n __autoDiscoverRecordDelimiter(buf, pos){\n const {encoding} = this.options\n const chr = buf[pos]\n if(chr === cr){\n if(buf[pos+1] === nl){\n this.options.record_delimiter.push(Buffer.from('\\r\\n', encoding))\n this.state.recordDelimiterMaxLength = 2\n return 2\n }else{\n this.options.record_delimiter.push(Buffer.from('\\r', encoding))\n this.state.recordDelimiterMaxLength = 1\n return 1\n }\n }else if(chr === nl){\n this.options.record_delimiter.push(Buffer.from('\\n', encoding))\n this.state.recordDelimiterMaxLength = 1\n return 1\n }\n return 0\n }\n __error(msg){\n const {skip_lines_with_error} = this.options\n const err = typeof msg === 'string' ? new Error(msg) : msg\n if(skip_lines_with_error){\n this.state.recordHasError = true\n this.emit('skip', err)\n return undefined\n }else{\n return err\n }\n }\n __infoDataSet(){\n return {\n ...this.info,\n columns: this.options.columns\n }\n }\n __infoRecord(){\n const {columns} = this.options\n return {\n ...this.__infoDataSet(),\n error: this.state.error,\n header: columns === true,\n index: this.state.record.length,\n }\n }\n __infoField(){\n const {columns} = this.options\n const isColumns = Array.isArray(columns)\n return {\n ...this.__infoRecord(),\n column: isColumns === true ?\n ( columns.length > this.state.record.length ?\n columns[this.state.record.length].name :\n null\n ) :\n this.state.record.length,\n quoting: this.state.wasQuoting,\n }\n }\n}\n\nconst parse = function(){\n let data, options, callback\n for(let i in arguments){\n const argument = arguments[i]\n const type = typeof argument\n if(data === undefined && (typeof argument === 'string' || Buffer.isBuffer(argument))){\n data = argument\n }else if(options === undefined && isObject(argument)){\n options = argument\n }else if(callback === undefined && type === 'function'){\n callback = argument\n }else{\n throw new CsvError('CSV_INVALID_ARGUMENT', [\n 'Invalid argument:',\n `got ${JSON.stringify(argument)} at index ${i}`\n ], options || {})\n }\n }\n const parser = new Parser(options)\n if(callback){\n const records = options === undefined || options.objname === undefined ? [] : {}\n parser.on('readable', function(){\n let record\n while((record = this.read()) !== null){\n if(options === undefined || options.objname === undefined){\n records.push(record)\n }else{\n records[record[0]] = record[1]\n }\n }\n })\n parser.on('error', function(err){\n callback(err, undefined, parser.__infoDataSet())\n })\n parser.on('end', function(){\n callback(undefined, records, parser.__infoDataSet())\n })\n }\n if(data !== undefined){\n // Give a chance for events to be registered later\n if(typeof setImmediate === 'function'){\n setImmediate(function(){\n parser.write(data)\n parser.end()\n })\n }else{\n parser.write(data)\n parser.end()\n }\n }\n return parser\n}\n\nclass CsvError extends Error {\n constructor(code, message, options, ...contexts) {\n if(Array.isArray(message)) message = message.join(' ')\n super(message)\n if(Error.captureStackTrace !== undefined){\n Error.captureStackTrace(this, CsvError)\n }\n this.code = code\n for(const context of contexts){\n for(const key in context){\n const value = context[key]\n this[key] = Buffer.isBuffer(value) ? value.toString(options.encoding) : value == null ? value : JSON.parse(JSON.stringify(value))\n }\n }\n }\n}\n\nparse.Parser = Parser\n\nparse.CsvError = CsvError\n\nmodule.exports = parse\n\nconst underscore = function(str){\n return str.replace(/([A-Z])/g, function(_, match){\n return '_' + match.toLowerCase()\n })\n}\n\nconst isObject = function(obj){\n return (typeof obj === 'object' && obj !== null && !Array.isArray(obj))\n}\n\nconst isRecordEmpty = function(record){\n return record.every( (field) => field == null || field.toString && field.toString().trim() === '' )\n}\n\nconst normalizeColumnsArray = function(columns){\n const normalizedColumns = [];\n for(let i = 0, l = columns.length; i < l; i++){\n const column = columns[i]\n if(column === undefined || column === null || column === false){\n normalizedColumns[i] = { disabled: true }\n }else if(typeof column === 'string'){\n normalizedColumns[i] = { name: column }\n }else if(isObject(column)){\n if(typeof column.name !== 'string'){\n throw new CsvError('CSV_OPTION_COLUMNS_MISSING_NAME', [\n 'Option columns missing name:',\n `property \"name\" is required at position ${i}`,\n 'when column is an object literal'\n ])\n }\n normalizedColumns[i] = column\n }else{\n throw new CsvError('CSV_INVALID_COLUMN_DEFINITION', [\n 'Invalid column definition:',\n 'expect a string or a literal object,',\n `got ${JSON.stringify(column)} at position ${i}`\n ])\n }\n }\n return normalizedColumns;\n}\n","\nconst parse = require('.')\n\nmodule.exports = function(data, options={}){\n if(typeof data === 'string'){\n data = Buffer.from(data)\n }\n const records = options && options.objname ? {} : []\n const parser = new parse.Parser(options)\n parser.push = function(record){\n if(record === null){\n return\n }\n if(options.objname === undefined)\n records.push(record)\n else{\n records[record[0]] = record[1]\n }\n }\n const err1 = parser.__parse(data, false)\n if(err1 !== undefined) throw err1\n const err2 = parser.__parse(undefined, true)\n if(err2 !== undefined) throw err2\n return records\n}\n","\n/*\nCSV Stringify\n\nPlease look at the [project documentation](https://csv.js.org/stringify/) for\nadditional information.\n*/\n\nconst { Transform } = require('stream')\nconst bom_utf8 = Buffer.from([239, 187, 191])\n\nclass Stringifier extends Transform {\n constructor(opts = {}){\n super({...{writableObjectMode: true}, ...opts})\n const options = {}\n let err\n // Merge with user options\n for(let opt in opts){\n options[underscore(opt)] = opts[opt]\n }\n if(err = this.normalize(options)) throw err\n switch(options.record_delimiter){\n case 'auto':\n options.record_delimiter = null\n break\n case 'unix':\n options.record_delimiter = \"\\n\"\n break\n case 'mac':\n options.record_delimiter = \"\\r\"\n break\n case 'windows':\n options.record_delimiter = \"\\r\\n\"\n break\n case 'ascii':\n options.record_delimiter = \"\\u001e\"\n break\n case 'unicode':\n options.record_delimiter = \"\\u2028\"\n break\n }\n // Expose options\n this.options = options\n // Internal state\n this.state = {\n stop: false\n }\n // Information\n this.info = {\n records: 0\n }\n }\n normalize(options){\n // Normalize option `bom`\n if(options.bom === undefined || options.bom === null || options.bom === false){\n options.bom = false\n }else if(options.bom !== true){\n return new CsvError('CSV_OPTION_BOOLEAN_INVALID_TYPE', [\n 'option `bom` is optional and must be a boolean value,',\n `got ${JSON.stringify(options.bom)}`\n ])\n }\n // Normalize option `delimiter`\n if(options.delimiter === undefined || options.delimiter === null){\n options.delimiter = ','\n }else if(Buffer.isBuffer(options.delimiter)){\n options.delimiter = options.delimiter.toString()\n }else if(typeof options.delimiter !== 'string'){\n return new CsvError('CSV_OPTION_DELIMITER_INVALID_TYPE', [\n 'option `delimiter` must be a buffer or a string,',\n `got ${JSON.stringify(options.delimiter)}`\n ])\n }\n // Normalize option `quote`\n if(options.quote === undefined || options.quote === null){\n options.quote = '\"'\n }else if(options.quote === true){\n options.quote = '\"'\n }else if(options.quote === false){\n options.quote = ''\n }else if (Buffer.isBuffer(options.quote)){\n options.quote = options.quote.toString()\n }else if(typeof options.quote !== 'string'){\n return new CsvError('CSV_OPTION_QUOTE_INVALID_TYPE', [\n 'option `quote` must be a boolean, a buffer or a string,',\n `got ${JSON.stringify(options.quote)}`\n ])\n }\n // Normalize option `quoted`\n if(options.quoted === undefined || options.quoted === null){\n options.quoted = false\n }else{\n // todo\n }\n // Normalize option `quoted_empty`\n if(options.quoted_empty === undefined || options.quoted_empty === null){\n options.quoted_empty = undefined\n }else{\n // todo\n }\n // Normalize option `quoted_match`\n if(options.quoted_match === undefined || options.quoted_match === null || options.quoted_match === false){\n options.quoted_match = null\n }else if(!Array.isArray(options.quoted_match)){\n options.quoted_match = [options.quoted_match]\n }\n if(options.quoted_match){\n for(let quoted_match of options.quoted_match){\n const isString = typeof quoted_match === 'string'\n const isRegExp = quoted_match instanceof RegExp\n if(!isString && !isRegExp){\n return Error(`Invalid Option: quoted_match must be a string or a regex, got ${JSON.stringify(quoted_match)}`)\n }\n }\n }\n // Normalize option `quoted_string`\n if(options.quoted_string === undefined || options.quoted_string === null){\n options.quoted_string = false\n }else{\n // todo\n }\n // Normalize option `eof`\n if(options.eof === undefined || options.eof === null){\n options.eof = true\n }else{\n // todo\n }\n // Normalize option `escape`\n if(options.escape === undefined || options.escape === null){\n options.escape = '\"'\n }else if(Buffer.isBuffer(options.escape)){\n options.escape = options.escape.toString()\n }else if(typeof options.escape !== 'string'){\n return Error(`Invalid Option: escape must be a buffer or a string, got ${JSON.stringify(options.escape)}`)\n }\n if (options.escape.length > 1){\n return Error(`Invalid Option: escape must be one character, got ${options.escape.length} characters`)\n }\n // Normalize option `header`\n if(options.header === undefined || options.header === null){\n options.header = false\n }else{\n // todo\n }\n // Normalize option `columns`\n options.columns = this.normalize_columns(options.columns)\n // Normalize option `quoted`\n if(options.quoted === undefined || options.quoted === null){\n options.quoted = false\n }else{\n // todo\n }\n // Normalize option `cast`\n if(options.cast === undefined || options.cast === null){\n options.cast = {}\n }else{\n // todo\n }\n // Normalize option cast.bigint\n if(options.cast.bigint === undefined || options.cast.bigint === null){\n // Cast boolean to string by default\n options.cast.bigint = value => '' + value\n }\n // Normalize option cast.boolean\n if(options.cast.boolean === undefined || options.cast.boolean === null){\n // Cast boolean to string by default\n options.cast.boolean = value => value ? '1' : ''\n }\n // Normalize option cast.date\n if(options.cast.date === undefined || options.cast.date === null){\n // Cast date to timestamp string by default\n options.cast.date = value => '' + value.getTime()\n }\n // Normalize option cast.number\n if(options.cast.number === undefined || options.cast.number === null){\n // Cast number to string using native casting by default\n options.cast.number = value => '' + value\n }\n // Normalize option cast.object\n if(options.cast.object === undefined || options.cast.object === null){\n // Stringify object as JSON by default\n options.cast.object = value => JSON.stringify(value)\n }\n // Normalize option cast.string\n if(options.cast.string === undefined || options.cast.string === null){\n // Leave string untouched\n options.cast.string = function(value){return value}\n }\n // Normalize option `record_delimiter`\n if(options.record_delimiter === undefined || options.record_delimiter === null){\n options.record_delimiter = '\\n'\n }else if(Buffer.isBuffer(options.record_delimiter)){\n options.record_delimiter = options.record_delimiter.toString()\n }else if(typeof options.record_delimiter !== 'string'){\n return Error(`Invalid Option: record_delimiter must be a buffer or a string, got ${JSON.stringify(options.record_delimiter)}`)\n }\n }\n _transform(chunk, encoding, callback){\n if(this.state.stop === true){\n return\n }\n // Chunk validation\n if(!Array.isArray(chunk) && typeof chunk !== 'object'){\n this.state.stop = true\n return callback(Error(`Invalid Record: expect an array or an object, got ${JSON.stringify(chunk)}`))\n }\n // Detect columns from the first record\n if(this.info.records === 0){\n if(Array.isArray(chunk)){\n if(this.options.header === true && !this.options.columns){\n this.state.stop = true\n return callback(Error('Undiscoverable Columns: header option requires column option or object records'))\n }\n }else if(this.options.columns === undefined || this.options.columns === null){\n this.options.columns = this.normalize_columns(Object.keys(chunk))\n }\n }\n // Emit the header\n if(this.info.records === 0){\n this.bom()\n this.headers()\n }\n // Emit and stringify the record if an object or an array\n try{\n this.emit('record', chunk, this.info.records)\n }catch(err){\n this.state.stop = true\n return this.emit('error', err)\n }\n // Convert the record into a string\n let chunk_string\n if(this.options.eof){\n chunk_string = this.stringify(chunk)\n if(chunk_string === undefined){\n return\n }else{\n chunk_string = chunk_string + this.options.record_delimiter\n }\n }else{\n chunk_string = this.stringify(chunk)\n if(chunk_string === undefined){\n return\n }else{\n if(this.options.header || this.info.records){\n chunk_string = this.options.record_delimiter + chunk_string\n }\n }\n }\n // Emit the csv\n this.info.records++\n this.push(chunk_string)\n callback()\n }\n _flush(callback){\n if(this.info.records === 0){\n this.bom()\n this.headers()\n }\n callback()\n }\n stringify(chunk, chunkIsHeader=false){\n if(typeof chunk !== 'object'){\n return chunk\n }\n const {columns, header} = this.options\n const record = []\n // Record is an array\n if(Array.isArray(chunk)){\n // We are getting an array but the user has specified output columns. In\n // this case, we respect the columns indexes\n if(columns){\n chunk.splice(columns.length)\n }\n // Cast record elements\n for(let i=0; i<chunk.length; i++){\n const field = chunk[i]\n const [err, value] = this.__cast(field, {\n index: i, column: i, records: this.info.records, header: chunkIsHeader\n })\n if(err){\n this.emit('error', err)\n return\n }\n record[i] = [value, field]\n }\n // Record is a literal object\n }else{\n if(columns){\n for(let i=0; i<columns.length; i++){\n const field = get(chunk, columns[i].key)\n const [err, value] = this.__cast(field, {\n index: i, column: columns[i].key, records: this.info.records, header: chunkIsHeader\n })\n if(err){\n this.emit('error', err)\n return\n }\n record[i] = [value, field]\n }\n }else{\n for(let column of chunk){\n const field = chunk[column]\n const [err, value] = this.__cast(field, {\n index: i, column: columns[i].key, records: this.info.records, header: chunkIsHeader\n })\n if(err){\n this.emit('error', err)\n return\n }\n record.push([value, field])\n }\n }\n }\n let csvrecord = ''\n for(let i=0; i<record.length; i++){\n let options, err\n let [value, field] = record[i]\n if(typeof value === \"string\"){\n options = this.options\n }else if(isObject(value)){\n // let { value, ...options } = value\n options = value\n value = options.value\n delete options.value\n if(typeof value !== \"string\" && value !== undefined && value !== null){\n this.emit(\"error\", Error(`Invalid Casting Value: returned value must return a string, null or undefined, got ${JSON.stringify(value)}`))\n return\n }\n options = {...this.options, ...options}\n if(err = this.normalize(options)){\n this.emit(\"error\", err)\n return\n }\n }else if(value === undefined || value === null){\n options = this.options\n }else{\n this.emit(\"error\", Error(`Invalid Casting Value: returned value must return a string, an object, null or undefined, got ${JSON.stringify(value)}`))\n return\n }\n const {delimiter, escape, quote, quoted, quoted_empty, quoted_string, quoted_match, record_delimiter} = options\n if(value){\n if(typeof value !== 'string'){\n this.emit(\"error\", Error(`Formatter must return a string, null or undefined, got ${JSON.stringify(value)}`))\n return null\n }\n const containsdelimiter = delimiter.length && value.indexOf(delimiter) >= 0\n const containsQuote = (quote !== '') && value.indexOf(quote) >= 0\n const containsEscape = value.indexOf(escape) >= 0 && (escape !== quote)\n const containsRecordDelimiter = value.indexOf(record_delimiter) >= 0\n const quotedString = quoted_string && typeof field === 'string'\n let quotedMatch = quoted_match && quoted_match.filter( quoted_match => {\n if(typeof quoted_match === 'string'){\n return value.indexOf(quoted_match) !== -1\n }else{\n return quoted_match.test(value)\n }\n })\n quotedMatch = quotedMatch && quotedMatch.length > 0\n const shouldQuote = containsQuote === true || containsdelimiter || containsRecordDelimiter || quoted || quotedString || quotedMatch\n if(shouldQuote === true && containsEscape === true){\n const regexp = escape === '\\\\'\n ? new RegExp(escape + escape, 'g')\n : new RegExp(escape, 'g')\n value = value.replace(regexp, escape + escape)\n }\n if(containsQuote === true){\n const regexp = new RegExp(quote,'g')\n value = value.replace(regexp, escape + quote)\n }\n if(shouldQuote === true){\n value = quote + value + quote\n }\n csvrecord += value\n }else if(quoted_empty === true || (field === '' && quoted_string === true && quoted_empty !== false)){\n csvrecord += quote + quote\n }\n if(i !== record.length - 1){\n csvrecord += delimiter\n }\n }\n return csvrecord\n }\n bom(){\n if(this.options.bom !== true){\n return\n }\n this.push(bom_utf8)\n }\n headers(){\n if(this.options.header === false){\n return\n }\n if(this.options.columns === undefined){\n return\n }\n let headers = this.options.columns.map(column => column.header)\n if(this.options.eof){\n headers = this.stringify(headers, true) + this.options.record_delimiter\n }else{\n headers = this.stringify(headers)\n }\n this.push(headers)\n }\n __cast(value, context){\n const type = typeof value\n try{\n if(type === 'string'){ // Fine for 99% of the cases\n return [undefined, this.options.cast.string(value, context)]\n }else if(type === 'bigint'){\n return [undefined, this.options.cast.bigint(value, context)]\n }else if(type === 'number'){\n return [undefined, this.options.cast.number(value, context)]\n }else if(type === 'boolean'){\n return [undefined, this.options.cast.boolean(value, context)]\n }else if(value instanceof Date){\n return [undefined, this.options.cast.date(value, context)]\n }else if(type === 'object' && value !== null){\n return [undefined, this.options.cast.object(value, context)]\n }else{\n return [undefined, value, value]\n }\n }catch(err){\n return [err]\n }\n }\n normalize_columns(columns){\n if(columns === undefined || columns === null){\n return undefined\n }\n if(typeof columns !== 'object'){\n throw Error('Invalid option \"columns\": expect an array or an object')\n }\n if(!Array.isArray(columns)){\n const newcolumns = []\n for(let k in columns){\n newcolumns.push({\n key: k,\n header: columns[k]\n })\n }\n columns = newcolumns\n }else{\n const newcolumns = []\n for(let column of columns){\n if(typeof column === 'string'){\n newcolumns.push({\n key: column,\n header: column\n })\n }else if(typeof column === 'object' && column !== undefined && !Array.isArray(column)){\n if(!column.key){\n throw Error('Invalid column definition: property \"key\" is required')\n }\n if(column.header === undefined){\n column.header = column.key\n }\n newcolumns.push(column)\n }else{\n throw Error('Invalid column definition: expect a string or an object')\n }\n }\n columns = newcolumns\n }\n return columns\n }\n}\n\nconst stringify = function(){\n let data, options, callback\n for(let i in arguments){\n const argument = arguments[i]\n const type = typeof argument\n if(data === undefined && (Array.isArray(argument))){\n data = argument\n }else if(options === undefined && isObject(argument)){\n options = argument\n }else if(callback === undefined && type === 'function'){\n callback = argument\n }else{\n throw new CsvError('CSV_INVALID_ARGUMENT', [\n 'Invalid argument:',\n `got ${JSON.stringify(argument)} at index ${i}`\n ])\n }\n }\n const stringifier = new Stringifier(options)\n if(callback){\n const chunks = []\n stringifier.on('readable', function(){\n let chunk\n while((chunk = this.read()) !== null){\n chunks.push(chunk)\n }\n })\n stringifier.on('error', function(err){\n callback(err)\n })\n stringifier.on('end', function(){\n callback(undefined, chunks.join(''))\n })\n }\n if(data !== undefined){\n // Give a chance for events to be registered later\n if(typeof setImmediate === 'function'){\n setImmediate(function(){\n for(let record of data){\n stringifier.write(record)\n }\n stringifier.end()\n })\n }else{\n for(let record of data){\n stringifier.write(record)\n }\n stringifier.end()\n }\n }\n return stringifier\n}\n\nclass CsvError extends Error {\n constructor(code, message, ...contexts) {\n if(Array.isArray(message)) message = message.join(' ')\n super(message)\n if(Error.captureStackTrace !== undefined){\n Error.captureStackTrace(this, CsvError)\n }\n this.code = code\n for(const context of contexts){\n for(const key in context){\n const value = context[key]\n this[key] = Buffer.isBuffer(value) ? value.toString() : value == null ? value : JSON.parse(JSON.stringify(value))\n }\n }\n }\n}\n\nstringify.Stringifier = Stringifier\n\nstringify.CsvError = CsvError\n\nmodule.exports = stringify\n\nconst isObject = function(obj){\n return typeof obj === 'object' && obj !== null && ! Array.isArray(obj)\n}\n\nconst underscore = function(str){\n return str.replace(/([A-Z])/g, function(_, match){\n return '_' + match.toLowerCase()\n })\n}\n\n// Lodash implementation of `get`\n\nconst charCodeOfDot = '.'.charCodeAt(0)\nconst reEscapeChar = /\\\\(\\\\)?/g\nconst rePropName = RegExp(\n // Match anything that isn't a dot or bracket.\n '[^.[\\\\]]+' + '|' +\n // Or match property names within brackets.\n '\\\\[(?:' +\n // Match a non-string expression.\n '([^\"\\'][^[]*)' + '|' +\n // Or match strings (supports escaping characters).\n '([\"\\'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2' +\n ')\\\\]'+ '|' +\n // Or match \"\" as the space between consecutive dots or empty brackets.\n '(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))'\n, 'g')\nconst reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/\nconst reIsPlainProp = /^\\w*$/\nconst getTag = function(value){\n if(!value)\n value === undefined ? '[object Undefined]' : '[object Null]'\n return Object.prototype.toString.call(value)\n}\nconst isKey = function(value, object){\n if(Array.isArray(value)){\n return false\n }\n const type = typeof value\n if(type === 'number' || type === 'symbol' || type === 'boolean' || !value || isSymbol(value)){\n return true\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object))\n}\nconst isSymbol = function(value){\n const type = typeof value\n return type === 'symbol' || (type === 'object' && value && getTag(value) === '[object Symbol]')\n}\nconst stringToPath = function(string){\n const result = []\n if(string.charCodeAt(0) === charCodeOfDot){\n result.push('')\n }\n string.replace(rePropName, function(match, expression, quote, subString){\n let key = match\n if(quote){\n key = subString.replace(reEscapeChar, '$1')\n }else if(expression){\n key = expression.trim()\n }\n result.push(key)\n })\n return result\n}\nconst castPath = function(value, object){\n if(Array.isArray(value)){\n return value\n } else {\n return isKey(value, object) ? [value] : stringToPath(value)\n }\n}\nconst toKey = function(value){\n if(typeof value === 'string' || isSymbol(value))\n return value\n const result = `${value}`\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result\n}\nconst get = function(object, path){\n path = castPath(path, object)\n let index = 0\n const length = path.length\n while(object != null && index < length){\n object = object[toKey(path[index++])]\n }\n return (index && index === length) ? object : undefined\n}\n","\nconst stringify = require('.')\nconst {StringDecoder} = require('string_decoder')\n\nmodule.exports = function(records, options={}){\n const data = []\n if(Buffer.isBuffer(records)){\n const decoder = new StringDecoder()\n records = decoder.write(records)\n }\n function onData(record){\n if(record){\n data.push(record.toString())\n }\n }\n let stringifier = new stringify.Stringifier(options)\n stringifier.on('data', onData);\n for(let record of records){\n stringifier.write(record) \n }\n stringifier.end()\n stringifier.off('data', onData);\n return data.join('')\n}\n","var accounting = require('accounting')\nvar assign = require('object-assign')\nvar localeCurrency = require('locale-currency')\nvar currencies = require('./currencies.json')\nvar localeFormats = require('./localeFormats.json')\n\nvar defaultCurrency = {\n symbol: '',\n thousandsSeparator: ',',\n decimalSeparator: '.',\n symbolOnLeft: true,\n spaceBetweenAmountAndSymbol: false,\n decimalDigits: 2\n}\n\nvar defaultLocaleFormat = {}\n\nvar formatMapping = [\n {\n symbolOnLeft: true,\n spaceBetweenAmountAndSymbol: false,\n format: {\n pos: '%s%v',\n neg: '-%s%v',\n zero: '%s%v'\n }\n },\n {\n symbolOnLeft: true,\n spaceBetweenAmountAndSymbol: true,\n format: {\n pos: '%s %v',\n neg: '-%s %v',\n zero: '%s %v'\n }\n },\n {\n symbolOnLeft: false,\n spaceBetweenAmountAndSymbol: false,\n format: {\n pos: '%v%s',\n neg: '-%v%s',\n zero: '%v%s'\n }\n },\n {\n symbolOnLeft: false,\n spaceBetweenAmountAndSymbol: true,\n format: {\n pos: '%v %s',\n neg: '-%v %s',\n zero: '%v %s'\n }\n }\n]\n\nfunction format(value, options) {\n var code = options.code || (options.locale && localeCurrency.getCurrency(options.locale))\n var localeMatch = /^([a-z]+)([_-]([a-z]+))?$/i.exec(options.locale) || []\n var language = localeMatch[1]\n var region = localeMatch[3]\n var localeFormat = assign({}, defaultLocaleFormat,\n localeFormats[language] || {},\n localeFormats[language + '-' + region] || {})\n var currency = assign({}, defaultCurrency, findCurrency(code), localeFormat)\n \n var symbolOnLeft = currency.symbolOnLeft\n var spaceBetweenAmountAndSymbol = currency.spaceBetweenAmountAndSymbol\n\n var format = formatMapping.filter(function(f) {\n return f.symbolOnLeft == symbolOnLeft && f.spaceBetweenAmountAndSymbol == spaceBetweenAmountAndSymbol\n })[0].format\n\n return accounting.formatMoney(value, {\n symbol: isUndefined(options.symbol)\n ? currency.symbol\n : options.symbol,\n\n decimal: isUndefined(options.decimal)\n ? currency.decimalSeparator\n : options.decimal,\n\n thousand: isUndefined(options.thousand)\n ? currency.thousandsSeparator\n : options.thousand,\n\n precision: typeof options.precision === 'number'\n ? options.precision\n : currency.decimalDigits,\n\n format: ['string', 'object'].indexOf(typeof options.format) > -1\n ? options.format\n : format\n })\n}\n\nfunction findCurrency (currencyCode) {\n return currencies[currencyCode]\n}\n\nfunction isUndefined (val) {\n return typeof val === 'undefined'\n}\n\nfunction unformat(value, options) {\n var code = options.code || (options.locale && localeCurrency.getCurrency(options.locale))\n var localeFormat = localeFormats[options.locale] || defaultLocaleFormat\n var currency = assign({}, defaultCurrency, findCurrency(code), localeFormat)\n var decimal = isUndefined(options.decimal) ? currency.decimalSeparator : options.decimal\n return accounting.unformat(value, decimal)\n}\n\nmodule.exports = {\n defaultCurrency: defaultCurrency,\n get currencies() {\n // In favor of backwards compatibility, the currencies map is converted to an array here\n return Object.keys(currencies).map(function(key) {\n return currencies[key]\n })\n },\n findCurrency: findCurrency,\n format: format,\n unformat: unformat\n}","// TheSpanishInquisition\n\n// Cache the matrix. Note that if you not pass a limit this implementation will use a dynamically calculate one.\n\nmodule.exports = function(__this, that, limit) {\n\n var thisLength = __this.length,\n thatLength = that.length,\n matrix = [];\n\n // If the limit is not defined it will be calculate from this and that args.\n limit = (limit || ((thatLength > thisLength ? thatLength : thisLength)))+1;\n\n for (var i = 0; i < limit; i++) {\n matrix[i] = [i];\n matrix[i].length = limit;\n }\n for (i = 0; i < limit; i++) {\n matrix[0][i] = i;\n }\n\n if (Math.abs(thisLength - thatLength) > (limit || 100)){\n return prepare (limit || 100);\n }\n if (thisLength === 0){\n return prepare (thatLength);\n }\n if (thatLength === 0){\n return prepare (thisLength);\n }\n\n // Calculate matrix.\n var j, this_i, that_j, cost, min, t;\n for (i = 1; i <= thisLength; ++i) {\n this_i = __this[i-1];\n\n // Step 4\n for (j = 1; j <= thatLength; ++j) {\n // Check the jagged ld total so far\n if (i === j && matrix[i][j] > 4) return prepare (thisLength);\n\n that_j = that[j-1];\n cost = (this_i === that_j) ? 0 : 1; // Step 5\n // Calculate the minimum (much faster than Math.min(...)).\n min = matrix[i - 1][j ] + 1; // Deletion.\n if ((t = matrix[i ][j - 1] + 1 ) < min) min = t; // Insertion.\n if ((t = matrix[i - 1][j - 1] + cost) < min) min = t; // Substitution.\n\n // Update matrix.\n matrix[i][j] = (i > 1 && j > 1 && this_i === that[j-2] && __this[i-2] === that_j && (t = matrix[i-2][j-2]+cost) < min) ? t : min; // Transposition.\n }\n }\n\n return prepare (matrix[thisLength][thatLength]);\n\n/**\n *\n */\n function prepare(steps) {\n var length = Math.max(thisLength, thatLength)\n var relative = length === 0\n ? 0\n : (steps / length);\n var similarity = 1 - relative\n return {\n steps: steps,\n relative: relative,\n similarity: similarity\n };\n }\n\n};\n","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : ''\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return sign + output\n}\n","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError(\n 'assign requires that input parameter not be null or undefined'\n )\n }\n\n dirtyObject = dirtyObject || {}\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property]\n }\n }\n\n return target\n}\n","import assign from '../assign/index.js'\n\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject)\n}\n","import lightFormatters from '../lightFormatters/index.js'\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js'\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js'\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js'\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js'\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\nimport addLeadingZeros from '../../addLeadingZeros/index.js'\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, { width: 'abbreviated' })\n // A, B\n case 'GGGGG':\n return localize.era(era, { width: 'narrow' })\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, { width: 'wide' })\n }\n },\n\n // Year\n y: function(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear()\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear\n return localize.ordinalNumber(year, { unit: 'year' })\n }\n\n return lightFormatters.y(date, token)\n },\n\n // Local week-numbering year\n Y: function(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options)\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, { unit: 'year' })\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date)\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function(date, token) {\n var year = date.getUTCFullYear()\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, { unit: 'quarter' })\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n })\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n })\n }\n },\n\n // Stand-alone quarter\n q: function(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, { unit: 'quarter' })\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n })\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n })\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n })\n }\n },\n\n // Month\n M: function(date, token, localize) {\n var month = date.getUTCMonth()\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, { unit: 'month' })\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, { width: 'narrow', context: 'formatting' })\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, { width: 'wide', context: 'formatting' })\n }\n },\n\n // Stand-alone month\n L: function(date, token, localize) {\n var month = date.getUTCMonth()\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, { unit: 'month' })\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n })\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, { width: 'narrow', context: 'standalone' })\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, { width: 'wide', context: 'standalone' })\n }\n },\n\n // Local week of year\n w: function(date, token, localize, options) {\n var week = getUTCWeek(date, options)\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, { unit: 'week' })\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function(date, token, localize) {\n var isoWeek = getUTCISOWeek(date)\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, { unit: 'week' })\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), { unit: 'date' })\n }\n\n return lightFormatters.d(date, token)\n },\n\n // Day of year\n D: function(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date)\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, { unit: 'dayOfYear' })\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function(date, token, localize) {\n var dayOfWeek = date.getUTCDay()\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n })\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n })\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })\n }\n },\n\n // Local day of week\n e: function(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, { unit: 'day' })\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n })\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n })\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })\n }\n },\n\n // Stand-alone local day of week\n c: function(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, { unit: 'day' })\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n })\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n })\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n })\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, { width: 'wide', context: 'standalone' })\n }\n },\n\n // ISO day of week\n i: function(date, token, localize) {\n var dayOfWeek = date.getUTCDay()\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, { unit: 'day' })\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n })\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n })\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })\n }\n },\n\n // AM or PM\n a: function(date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n })\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n })\n }\n },\n\n // AM, PM, midnight, noon\n b: function(date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n })\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n })\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function(date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n })\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n })\n }\n },\n\n // Hour [1-12]\n h: function(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12\n if (hours === 0) hours = 12\n return localize.ordinalNumber(hours, { unit: 'hour' })\n }\n\n return lightFormatters.h(date, token)\n },\n\n // Hour [0-23]\n H: function(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), { unit: 'hour' })\n }\n\n return lightFormatters.H(date, token)\n },\n\n // Hour [0-11]\n K: function(date, token, localize) {\n var hours = date.getUTCHours() % 12\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, { unit: 'hour' })\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function(date, token, localize) {\n var hours = date.getUTCHours()\n if (hours === 0) hours = 24\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, { unit: 'hour' })\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), { unit: 'minute' })\n }\n\n return lightFormatters.m(date, token)\n },\n\n // Second\n s: function(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), { unit: 'second' })\n }\n\n return lightFormatters.s(date, token)\n },\n\n // Fraction of second\n S: function(date, token) {\n var numberOfDigits = token.length\n var milliseconds = date.getUTCMilliseconds()\n var fractionalSeconds = Math.floor(\n milliseconds * Math.pow(10, numberOfDigits - 3)\n )\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = Math.floor(originalDate.getTime() / 1000)\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = originalDate.getTime()\n return addLeadingZeros(timestamp, token.length)\n }\n}\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimiter = dirtyDelimiter || ''\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2)\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+'\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimiter)\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n var minutes = addLeadingZeros(absOffset % 60, 2)\n return sign + hours + delimiter + minutes\n}\n\nexport default formatters\n","import addLeadingZeros from '../../addLeadingZeros/index.js'\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Year\n y: function(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear()\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length)\n },\n\n // Month\n M: function(date, token) {\n var month = date.getUTCMonth()\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2)\n },\n\n // Day of the month\n d: function(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length)\n },\n\n // AM or PM\n a: function(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am'\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase()\n case 'aaaaa':\n return dayPeriodEnumValue[0]\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.'\n }\n },\n\n // Hour [1-12]\n h: function(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length)\n },\n\n // Hour [0-23]\n H: function(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length)\n },\n\n // Minute\n m: function(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length)\n },\n\n // Second\n s: function(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length)\n }\n}\n\nexport default formatters\n","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({ width: 'short' })\n case 'PP':\n return formatLong.date({ width: 'medium' })\n case 'PPP':\n return formatLong.date({ width: 'long' })\n case 'PPPP':\n default:\n return formatLong.date({ width: 'full' })\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({ width: 'short' })\n case 'pp':\n return formatLong.time({ width: 'medium' })\n case 'ppp':\n return formatLong.time({ width: 'long' })\n case 'pppp':\n default:\n return formatLong.time({ width: 'full' })\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/)\n var datePattern = matchResult[1]\n var timePattern = matchResult[2]\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong)\n }\n\n var dateTimeFormat\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({ width: 'short' })\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({ width: 'medium' })\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({ width: 'long' })\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({ width: 'full' })\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n}\n\nexport default longFormatters\n","var MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime())\n var baseTimezoneOffset = date.getTimezoneOffset()\n date.setSeconds(0, 0)\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n","import toDate from '../../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var timestamp = date.getTime()\n date.setUTCMonth(0, 1)\n date.setUTCHours(0, 0, 0, 0)\n var startOfYearTimestamp = date.getTime()\n var difference = timestamp - startOfYearTimestamp\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff =\n startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getUTCFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeek(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff =\n startOfUTCWeek(date, options).getTime() -\n startOfUTCWeekYear(date, options).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","export var protectedTokens = ['D', 'DD', 'YY', 'YYYY']\n\nexport function isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nexport function throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate)\n var day = toInteger(dirtyDay)\n\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var day = toInteger(dirtyDay)\n\n if (day % 7 === 0) {\n day = day - 7\n }\n\n var weekStartsOn = 1\n var date = toDate(dirtyDate)\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getUTCISOWeek(date) - isoWeek\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCWeek from '../getUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var week = toInteger(dirtyWeek)\n var diff = getUTCWeek(date, options) - week\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var weekStartsOn = 1\n\n var date = toDate(dirtyDate)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var year = getUTCISOWeekYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(year, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCISOWeek(fourthOfJanuary)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport getUTCWeekYear from '../getUTCWeekYear/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCWeek(firstWeek, dirtyOptions)\n return date\n}\n","export default function toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber)\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var amount = toInteger(dirtyAmount)\n date.setDate(date.getDate() + amount)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getISOWeekYear from '../getISOWeekYear/index.js'\nimport setISOWeekYear from '../setISOWeekYear/index.js'\n\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `addISOYears` to `addISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nexport default function addISOWeekYears(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate) + amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var timestamp = toDate(dirtyDate).getTime()\n var amount = toInteger(dirtyAmount)\n return new Date(timestamp + amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var amount = toInteger(dirtyAmount)\n var desiredMonth = date.getMonth() + amount\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n var months = amount * 3\n return addMonths(dirtyDate, months)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * 1000)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n var days = amount * 7\n return addDays(dirtyDate, days)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, amount * 12)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `areRangesOverlapping` to `areIntervalsOverlapping`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/types/Interval}\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> false\n */\nexport default function areIntervalsOverlapping(\n dirtyIntervalLeft,\n dirtyIntervalRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start).getTime()\n var leftEndTime = toDate(intervalLeft.end).getTime()\n var rightStartTime = toDate(intervalRight.start).getTime()\n var rightEndTime = toDate(intervalRight.end).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestIndexTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateToCompare = toDate(dirtyDateToCompare)\n\n if (isNaN(dateToCompare)) {\n return NaN\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function(dirtyDate, index) {\n var currentDate = toDate(dirtyDate)\n\n if (isNaN(currentDate)) {\n result = NaN\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = index\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateToCompare = toDate(dirtyDateToCompare)\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN)\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function(dirtyDate) {\n var currentDate = toDate(dirtyDate)\n\n if (isNaN(currentDate)) {\n result = new Date(NaN)\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = currentDate\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff < 0) {\n return -1\n } else if (diff > 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nexport default function compareDesc(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff > 0) {\n return -1\n } else if (diff < 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfDay from '../startOfDay/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInCalendarDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startOfDayLeft = startOfDay(dirtyDateLeft)\n var startOfDayRight = startOfDay(dirtyDateRight)\n\n var timestampLeft =\n startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft)\n var timestampRight =\n startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\n\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInCalendarISOYears` to `differenceInCalendarISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarISOWeekYears(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n return getISOWeekYear(dirtyDateLeft) - getISOWeekYear(dirtyDateRight)\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarISOWeeks(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft)\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight)\n\n var timestampLeft =\n startOfISOWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekLeft)\n var timestampRight =\n startOfISOWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth()\n\n return yearDiff * 12 + monthDiff\n}\n","import getQuarter from '../getQuarter/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarQuarters(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight)\n\n return yearDiff * 4 + quarterDiff\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks(\n dirtyDateLeft,\n dirtyDateRight,\n dirtyOptions\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions)\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft =\n startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft)\n var timestampRight =\n startOfWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n return dateLeft.getFullYear() - dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight))\n\n dateLeft.setDate(dateLeft.getDate() - sign * difference)\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight) === -sign\n var result = sign * (difference - isLastDayNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff =\n differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) /\n MILLISECONDS_IN_HOUR\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarISOWeekYears from '../differenceInCalendarISOWeekYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport subISOWeekYears from '../subISOWeekYears/index.js'\n\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInISOYears` to `differenceInISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nexport default function differenceInISOWeekYears(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(\n differenceInCalendarISOWeekYears(dateLeft, dateRight)\n )\n dateLeft = subISOWeekYears(dateLeft, sign * difference)\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOWeekYearNotFull = compareAsc(dateLeft, dateRight) === -sign\n var result = sign * (difference - isLastISOWeekYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n return dateLeft.getTime() - dateRight.getTime()\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nexport default function differenceInMinutes(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff =\n differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) /\n MILLISECONDS_IN_MINUTE\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarMonths from '../differenceInCalendarMonths/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight))\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference)\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign\n var result = sign * (difference - isLastMonthNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMonths from '../differenceInMonths/index.js'\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport default function differenceInQuarters(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInDays from '../differenceInDays/index.js'\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n */\nexport default function differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarYears from '../differenceInCalendarYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight))\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference)\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign\n var result = sign * (difference - isLastYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `eachDay` to `eachDayOfInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))\n *\n * // v2.0.0 onward\n *\n * eachDayOfInterval(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }\n * )\n * ```\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start)\n var endDate = toDate(interval.end)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var dates = []\n\n var currentDate = startDate\n currentDate.setHours(0, 0, 0, 0)\n\n var step = options && 'step' in options ? Number(options.step) : 1\n if (step < 1 || isNaN(step))\n throw new RangeError('`options.step` must be a number greater than 1')\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate))\n currentDate.setDate(currentDate.getDate() + step)\n currentDate.setHours(0, 0, 0, 0)\n }\n\n return dates\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * var result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [\n * // Sun Oct 05 2014 00:00:00,\n * // Sun Oct 12 2014 00:00:00,\n * // Sun Oct 19 2014 00:00:00,\n * // Sun Oct 26 2014 00:00:00,\n * // Sun Nov 02 2014 00:00:00,\n * // Sun Nov 09 2014 00:00:00,\n * // Sun Nov 16 2014 00:00:00,\n * // Sun Nov 23 2014 00:00:00\n * // ]\n */\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start)\n var endDate = toDate(interval.end)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var startDateWeek = startOfWeek(startDate, options)\n var endDateWeek = startOfWeek(endDate, options)\n\n // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n startDateWeek.setHours(15)\n endDateWeek.setHours(15)\n\n endTime = endDateWeek.getTime()\n\n var weeks = []\n\n var currentWeek = startDateWeek\n\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0)\n weeks.push(toDate(currentWeek))\n currentWeek = addWeeks(currentWeek, 1)\n currentWeek.setHours(15)\n }\n\n return weeks\n}\n","import eachDayOfInterval from '../eachDayOfInterval/index.js'\nimport isSunday from '../isSunday/index.js'\nimport isWeekend from '../isWeekend/index.js'\n\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link docs/types/Interval}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2018, 8, 17),\n * end: new Date(2018, 8, 30)\n * })\n * //=> [\n * // Sat Sep 22 2018 00:00:00,\n * // Sun Sep 23 2018 00:00:00,\n * // Sat Sep 29 2018 00:00:00,\n * // Sun Sep 30 2018 00:00:00\n * // ]\n */\nexport default function eachWeekendOfInterval(interval) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateInterval = eachDayOfInterval(interval)\n var weekends = []\n var index = 0\n while (index++ < dateInterval.length) {\n var date = dateInterval[index]\n if (isWeekend(date)) {\n weekends.push(date)\n if (isSunday(date)) index = index + 5\n }\n }\n return weekends\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|Number} date - the given month\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * var result = eachWeekendOfMonth(new Date(2022, 1, 1))\n * //=> [\n * // Sat Feb 05 2022 00:00:00,\n * // Sun Feb 06 2022 00:00:00,\n * // Sat Feb 12 2022 00:00:00,\n * // Sun Feb 13 2022 00:00:00,\n * // Sat Feb 19 2022 00:00:00,\n * // Sun Feb 20 2022 00:00:00,\n * // Sat Feb 26 2022 00:00:00,\n * // Sun Feb 27 2022 00:00:00\n * // ]\n */\nexport default function eachWeekendOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfMonth(dirtyDate)\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid')\n\n var endDate = endOfMonth(dirtyDate)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport endOfYear from '../endOfYear/index.js'\n\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|Number} date - the given year\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * var result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * // Sat Jan 03 2020 00:00:00,\n * // Sun Jan 04 2020 00:00:00,\n * // ...\n * // Sun Dec 27 2020 00:00:00\n * // ]\n * ]\n */\nexport default function eachWeekendOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfYear(dirtyDate)\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid')\n\n var endDate = endOfYear(dirtyDate)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * var result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\nexport default function endOfDecade(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade, 11, 31)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setMinutes(59, 59, 999)\n return date\n}\n","import endOfWeek from '../endOfWeek/index.js'\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return endOfWeek(dirtyDate, { weekStartsOn: 1 })\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `endOfISOYear` to `endOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nexport default function endOfISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var year = getISOWeekYear(dirtyDate)\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear)\n date.setMilliseconds(date.getMilliseconds() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setSeconds(59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - (currentMonth % 3) + 3\n date.setMonth(month, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setMilliseconds(999)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setDate(date.getDate() + diff)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport isValid from '../isValid/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport formatters from '../_lib/format/formatters/index.js'\nimport longFormatters from '../_lib/format/longFormatters/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate)\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value')\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)\n var utcDate = subMilliseconds(originalDate, timezoneOffset)\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n }\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0]\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter]\n return longFormatter(substring, locale.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0]\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter]\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring)\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions)\n }\n\n return substring\n })\n .join('')\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport differenceInMonths from '../differenceInMonths/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_TWO_MONTHS = 86400\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance `\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistance(dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate)\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value')\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate)\n dateRight = toDate(dirtyDate)\n } else {\n dateLeft = toDate(dirtyDate)\n dateRight = toDate(dirtyBaseDate)\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(dateRight) -\n getTimezoneOffsetInMilliseconds(dateLeft)) /\n 1000\n var minutes = Math.round((seconds - offsetInSeconds) / 60)\n var months\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions)\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions)\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions)\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions)\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions)\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions)\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60)\n return locale.formatDistance('aboutXHours', hours, localizeOptions)\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions)\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('aboutXMonths', months, localizeOptions)\n }\n\n months = differenceInMonths(dateRight, dateLeft)\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions)\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12\n var years = Math.floor(months / 12)\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions)\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions)\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions)\n }\n }\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_YEAR = 525600\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(2015, 0, 2),\n * new Date(2014, 6, 2)\n * ) //=> '6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * ) //=> '6 months'\n * ```\n *\n * - `partialMethod` option is renamed to `roundingMethod`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { partialMethod: 'ceil' }\n * ) //=> '2 minutes'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { roundingMethod: 'ceil' }\n * ) //=> '2 minutes'\n * ```\n *\n * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.\n *\n * - `unit` option now accepts one of the strings:\n * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { unit: 'm' }\n * )\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { unit: 'minute' }\n * )\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\nexport default function formatDistanceStrict(\n dirtyDate,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate)\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value')\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate)\n dateRight = toDate(dirtyDate)\n } else {\n dateLeft = toDate(dirtyDate)\n dateRight = toDate(dirtyBaseDate)\n }\n\n var roundingMethod =\n options.roundingMethod == null ? 'round' : String(options.roundingMethod)\n var roundingMethodFn\n\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\")\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(dateRight) -\n getTimezoneOffsetInMilliseconds(dateLeft)) /\n 1000\n var minutes = roundingMethodFn((seconds - offsetInSeconds) / 60)\n\n var unit\n if (options.unit == null) {\n if (minutes < 1) {\n unit = 'second'\n } else if (minutes < 60) {\n unit = 'minute'\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour'\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'day'\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'month'\n } else {\n unit = 'year'\n }\n } else {\n unit = String(options.unit)\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n return locale.formatDistance('xSeconds', seconds, localizeOptions)\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60)\n return locale.formatDistance('xHours', hours, localizeOptions)\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', months, localizeOptions)\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(minutes / MINUTES_IN_YEAR)\n return locale.formatDistance('xYears', years, localizeOptions)\n }\n\n throw new RangeError(\n \"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\"\n )\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport format from '../format/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n */\nexport default function formatRelative(dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var baseDate = toDate(dirtyBaseDate)\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property')\n }\n\n var diff = differenceInCalendarDays(date, baseDate)\n\n if (isNaN(diff)) {\n throw new RangeError('Invalid time value')\n }\n\n var token\n if (diff < -6) {\n token = 'other'\n } else if (diff < -1) {\n token = 'lastWeek'\n } else if (diff < 0) {\n token = 'yesterday'\n } else if (diff < 1) {\n token = 'today'\n } else if (diff < 2) {\n token = 'tomorrow'\n } else if (diff < 7) {\n token = 'nextWeek'\n } else {\n token = 'other'\n }\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))\n var utcBaseDate = subMilliseconds(\n baseDate,\n getTimezoneOffsetInMilliseconds(baseDate)\n )\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, options)\n return format(date, formatStr, options)\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Number} unixTime - the given Unix timestamp\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\nexport default function fromUnixTime(dirtyUnixTime) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var unixTime = toInteger(dirtyUnixTime)\n\n return toDate(unixTime * 1000)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dayOfMonth = date.getDate()\n return dayOfMonth\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport default function getDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff = differenceInCalendarDays(date, startOfYear(date))\n var dayOfYear = diff + 1\n return dayOfYear\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var monthIndex = date.getMonth()\n var lastDayOfMonth = new Date(0)\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)\n lastDayOfMonth.setHours(0, 0, 0, 0)\n return lastDayOfMonth.getDate()\n}\n","import toDate from '../toDate/index.js'\nimport isLeapYear from '../isLeapYear/index.js'\n\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nexport default function getDaysInYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n\n if (isNaN(date)) {\n return NaN\n }\n\n return isLeapYear(date) ? 366 : 365\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * var result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\nexport default function getDecade(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n return decade\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var hours = date.getHours()\n return hours\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport default function getISODay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n\n if (day === 0) {\n day = 7\n }\n\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getISOYear` to `getISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nexport default function getISOWeeksInYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var thisYear = startOfISOWeekYear(dirtyDate)\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60))\n var diff = nextYear.valueOf() - thisYear.valueOf()\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nexport default function getMilliseconds(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var milliseconds = date.getMilliseconds()\n return milliseconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var minutes = date.getMinutes()\n return minutes\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var month = date.getMonth()\n return month\n}\n","import toDate from '../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000\n\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getOverlappingDaysInRanges` to `getOverlappingDaysInIntervals`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> 0\n */\nexport default function getOverlappingDaysInIntervals(\n dirtyIntervalLeft,\n dirtyIntervalRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start).getTime()\n var leftEndTime = toDate(intervalLeft.end).getTime()\n var rightStartTime = toDate(intervalRight.start).getTime()\n var rightEndTime = toDate(intervalRight.end).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var isOverlapping =\n leftStartTime < rightEndTime && rightStartTime < leftEndTime\n\n if (!isOverlapping) {\n return 0\n }\n\n var overlapStartDate =\n rightStartTime < leftStartTime ? leftStartTime : rightStartTime\n\n var overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime\n\n var differenceInMs = overlapEndDate - overlapStartDate\n\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var quarter = Math.floor(date.getMonth() / 3) + 1\n return quarter\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var seconds = date.getSeconds()\n return seconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var timestamp = date.getTime()\n return timestamp\n}\n","import getTime from '../getTime/index.js'\n\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * var result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return Math.floor(getTime(dirtyDate) / 1000)\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * var result = getISOWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff =\n startOfWeek(date, options).getTime() -\n startOfWeekYear(date, options).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getDate from '../getDate/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport getDay from '../getDay/index.js'\n\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\nexport default function getWeekOfMonth(date, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var startWeekDay = getDay(startOfMonth(date))\n var currentWeekDay = getDay(date)\n\n var startWeekDayWithOptions =\n startWeekDay < weekStartsOn ? 7 - weekStartsOn : startWeekDay\n var diff = startWeekDayWithOptions > currentWeekDay ? 7 - weekStartsOn : 0\n\n return Math.ceil((getDate(date) + diff) / 7)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * var result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * var result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * var result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate =\n locale && locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import differenceInCalendarWeeks from '../differenceInCalendarWeeks/index.js'\nimport lastDayOfMonth from '../lastDayOfMonth/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * var result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * var result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n differenceInCalendarWeeks(\n lastDayOfMonth(date),\n startOfMonth(date),\n options\n ) + 1\n )\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n return year\n}\n","// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\nexport { default as addDays } from './addDays/index.js'\nexport { default as addHours } from './addHours/index.js'\nexport { default as addISOWeekYears } from './addISOWeekYears/index.js'\nexport { default as addMilliseconds } from './addMilliseconds/index.js'\nexport { default as addMinutes } from './addMinutes/index.js'\nexport { default as addMonths } from './addMonths/index.js'\nexport { default as addQuarters } from './addQuarters/index.js'\nexport { default as addSeconds } from './addSeconds/index.js'\nexport { default as addWeeks } from './addWeeks/index.js'\nexport { default as addYears } from './addYears/index.js'\nexport {\n default as areIntervalsOverlapping\n} from './areIntervalsOverlapping/index.js'\nexport { default as closestIndexTo } from './closestIndexTo/index.js'\nexport { default as closestTo } from './closestTo/index.js'\nexport { default as compareAsc } from './compareAsc/index.js'\nexport { default as compareDesc } from './compareDesc/index.js'\nexport {\n default as differenceInCalendarDays\n} from './differenceInCalendarDays/index.js'\nexport {\n default as differenceInCalendarISOWeekYears\n} from './differenceInCalendarISOWeekYears/index.js'\nexport {\n default as differenceInCalendarISOWeeks\n} from './differenceInCalendarISOWeeks/index.js'\nexport {\n default as differenceInCalendarMonths\n} from './differenceInCalendarMonths/index.js'\nexport {\n default as differenceInCalendarQuarters\n} from './differenceInCalendarQuarters/index.js'\nexport {\n default as differenceInCalendarWeeks\n} from './differenceInCalendarWeeks/index.js'\nexport {\n default as differenceInCalendarYears\n} from './differenceInCalendarYears/index.js'\nexport { default as differenceInDays } from './differenceInDays/index.js'\nexport { default as differenceInHours } from './differenceInHours/index.js'\nexport {\n default as differenceInISOWeekYears\n} from './differenceInISOWeekYears/index.js'\nexport {\n default as differenceInMilliseconds\n} from './differenceInMilliseconds/index.js'\nexport { default as differenceInMinutes } from './differenceInMinutes/index.js'\nexport { default as differenceInMonths } from './differenceInMonths/index.js'\nexport {\n default as differenceInQuarters\n} from './differenceInQuarters/index.js'\nexport { default as differenceInSeconds } from './differenceInSeconds/index.js'\nexport { default as differenceInWeeks } from './differenceInWeeks/index.js'\nexport { default as differenceInYears } from './differenceInYears/index.js'\nexport { default as eachDayOfInterval } from './eachDayOfInterval/index.js'\nexport { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js'\nexport {\n default as eachWeekendOfInterval\n} from './eachWeekendOfInterval/index.js'\nexport { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js'\nexport { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js'\nexport { default as endOfDay } from './endOfDay/index.js'\nexport { default as endOfDecade } from './endOfDecade/index.js'\nexport { default as endOfHour } from './endOfHour/index.js'\nexport { default as endOfISOWeek } from './endOfISOWeek/index.js'\nexport { default as endOfISOWeekYear } from './endOfISOWeekYear/index.js'\nexport { default as endOfMinute } from './endOfMinute/index.js'\nexport { default as endOfMonth } from './endOfMonth/index.js'\nexport { default as endOfQuarter } from './endOfQuarter/index.js'\nexport { default as endOfSecond } from './endOfSecond/index.js'\nexport { default as endOfWeek } from './endOfWeek/index.js'\nexport { default as endOfYear } from './endOfYear/index.js'\nexport { default as format } from './format/index.js'\nexport { default as formatDistance } from './formatDistance/index.js'\nexport {\n default as formatDistanceStrict\n} from './formatDistanceStrict/index.js'\nexport { default as formatRelative } from './formatRelative/index.js'\nexport { default as fromUnixTime } from './fromUnixTime/index.js'\nexport { default as getDate } from './getDate/index.js'\nexport { default as getDay } from './getDay/index.js'\nexport { default as getDayOfYear } from './getDayOfYear/index.js'\nexport { default as getDaysInMonth } from './getDaysInMonth/index.js'\nexport { default as getDaysInYear } from './getDaysInYear/index.js'\nexport { default as getDecade } from './getDecade/index.js'\nexport { default as getHours } from './getHours/index.js'\nexport { default as getISODay } from './getISODay/index.js'\nexport { default as getISOWeek } from './getISOWeek/index.js'\nexport { default as getISOWeekYear } from './getISOWeekYear/index.js'\nexport { default as getISOWeeksInYear } from './getISOWeeksInYear/index.js'\nexport { default as getMilliseconds } from './getMilliseconds/index.js'\nexport { default as getMinutes } from './getMinutes/index.js'\nexport { default as getMonth } from './getMonth/index.js'\nexport {\n default as getOverlappingDaysInIntervals\n} from './getOverlappingDaysInIntervals/index.js'\nexport { default as getQuarter } from './getQuarter/index.js'\nexport { default as getSeconds } from './getSeconds/index.js'\nexport { default as getTime } from './getTime/index.js'\nexport { default as getUnixTime } from './getUnixTime/index.js'\nexport { default as getWeek } from './getWeek/index.js'\nexport { default as getWeekOfMonth } from './getWeekOfMonth/index.js'\nexport { default as getWeekYear } from './getWeekYear/index.js'\nexport { default as getWeeksInMonth } from './getWeeksInMonth/index.js'\nexport { default as getYear } from './getYear/index.js'\nexport { default as isAfter } from './isAfter/index.js'\nexport { default as isBefore } from './isBefore/index.js'\nexport { default as isDate } from './isDate/index.js'\nexport { default as isEqual } from './isEqual/index.js'\nexport { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index.js'\nexport { default as isFriday } from './isFriday/index.js'\nexport { default as isLastDayOfMonth } from './isLastDayOfMonth/index.js'\nexport { default as isLeapYear } from './isLeapYear/index.js'\nexport { default as isMonday } from './isMonday/index.js'\nexport { default as isSameDay } from './isSameDay/index.js'\nexport { default as isSameHour } from './isSameHour/index.js'\nexport { default as isSameISOWeek } from './isSameISOWeek/index.js'\nexport { default as isSameISOWeekYear } from './isSameISOWeekYear/index.js'\nexport { default as isSameMinute } from './isSameMinute/index.js'\nexport { default as isSameMonth } from './isSameMonth/index.js'\nexport { default as isSameQuarter } from './isSameQuarter/index.js'\nexport { default as isSameSecond } from './isSameSecond/index.js'\nexport { default as isSameWeek } from './isSameWeek/index.js'\nexport { default as isSameYear } from './isSameYear/index.js'\nexport { default as isSaturday } from './isSaturday/index.js'\nexport { default as isSunday } from './isSunday/index.js'\nexport { default as isThursday } from './isThursday/index.js'\nexport { default as isTuesday } from './isTuesday/index.js'\nexport { default as isValid } from './isValid/index.js'\nexport { default as isWednesday } from './isWednesday/index.js'\nexport { default as isWeekend } from './isWeekend/index.js'\nexport { default as isWithinInterval } from './isWithinInterval/index.js'\nexport { default as lastDayOfDecade } from './lastDayOfDecade/index.js'\nexport { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index.js'\nexport {\n default as lastDayOfISOWeekYear\n} from './lastDayOfISOWeekYear/index.js'\nexport { default as lastDayOfMonth } from './lastDayOfMonth/index.js'\nexport { default as lastDayOfQuarter } from './lastDayOfQuarter/index.js'\nexport { default as lastDayOfWeek } from './lastDayOfWeek/index.js'\nexport { default as lastDayOfYear } from './lastDayOfYear/index.js'\nexport { default as lightFormat } from './lightFormat/index.js'\nexport { default as max } from './max/index.js'\nexport { default as min } from './min/index.js'\nexport { default as parse } from './parse/index.js'\nexport { default as parseISO } from './parseISO/index.js'\nexport {\n default as roundToNearestMinutes\n} from './roundToNearestMinutes/index.js'\nexport { default as setDate } from './setDate/index.js'\nexport { default as setDay } from './setDay/index.js'\nexport { default as setDayOfYear } from './setDayOfYear/index.js'\nexport { default as setHours } from './setHours/index.js'\nexport { default as setISODay } from './setISODay/index.js'\nexport { default as setISOWeek } from './setISOWeek/index.js'\nexport { default as setISOWeekYear } from './setISOWeekYear/index.js'\nexport { default as setMilliseconds } from './setMilliseconds/index.js'\nexport { default as setMinutes } from './setMinutes/index.js'\nexport { default as setMonth } from './setMonth/index.js'\nexport { default as setQuarter } from './setQuarter/index.js'\nexport { default as setSeconds } from './setSeconds/index.js'\nexport { default as setWeek } from './setWeek/index.js'\nexport { default as setWeekYear } from './setWeekYear/index.js'\nexport { default as setYear } from './setYear/index.js'\nexport { default as startOfDay } from './startOfDay/index.js'\nexport { default as startOfDecade } from './startOfDecade/index.js'\nexport { default as startOfHour } from './startOfHour/index.js'\nexport { default as startOfISOWeek } from './startOfISOWeek/index.js'\nexport { default as startOfISOWeekYear } from './startOfISOWeekYear/index.js'\nexport { default as startOfMinute } from './startOfMinute/index.js'\nexport { default as startOfMonth } from './startOfMonth/index.js'\nexport { default as startOfQuarter } from './startOfQuarter/index.js'\nexport { default as startOfSecond } from './startOfSecond/index.js'\nexport { default as startOfWeek } from './startOfWeek/index.js'\nexport { default as startOfWeekYear } from './startOfWeekYear/index.js'\nexport { default as startOfYear } from './startOfYear/index.js'\nexport { default as subDays } from './subDays/index.js'\nexport { default as subHours } from './subHours/index.js'\nexport { default as subISOWeekYears } from './subISOWeekYears/index.js'\nexport { default as subMilliseconds } from './subMilliseconds/index.js'\nexport { default as subMinutes } from './subMinutes/index.js'\nexport { default as subMonths } from './subMonths/index.js'\nexport { default as subQuarters } from './subQuarters/index.js'\nexport { default as subSeconds } from './subSeconds/index.js'\nexport { default as subWeeks } from './subWeeks/index.js'\nexport { default as subYears } from './subYears/index.js'\nexport { default as toDate } from './toDate/index.js'\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dateToCompare = toDate(dirtyDateToCompare)\n return date.getTime() > dateToCompare.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dateToCompare = toDate(dirtyDateToCompare)\n return date.getTime() < dateToCompare.getTime()\n}\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n value instanceof Date ||\n (typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Date]')\n )\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyLeftDate)\n var dateRight = toDate(dirtyRightDate)\n return dateLeft.getTime() === dateRight.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nexport default function isFirstDayOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDate() === 1\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nexport default function isFriday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 5\n}\n","import toDate from '../toDate/index.js'\nimport endOfDay from '../endOfDay/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n return endOfDay(date).getTime() === endOfMonth(date).getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nexport default function isLeapYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isMonday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 1\n}\n","import startOfDay from '../startOfDay/index.js'\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft)\n var dateRightStartOfDay = startOfDay(dirtyDateRight)\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n}\n","import startOfHour from '../startOfHour/index.js'\n\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n */\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft)\n var dateRightStartOfHour = startOfHour(dirtyDateRight)\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()\n}\n","import isSameWeek from '../isSameWeek/index.js'\n\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))\n * //=> true\n */\nexport default function isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n return isSameWeek(dirtyDateLeft, dirtyDateRight, { weekStartsOn: 1 })\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isSameISOYear` to `isSameISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))\n * //=> true\n */\nexport default function isSameISOWeekYear(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft)\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight)\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()\n}\n","import startOfMinute from '../startOfMinute/index.js'\n\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nexport default function isSameMinute(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft)\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight)\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n return (\n dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n )\n}\n","import startOfQuarter from '../startOfQuarter/index.js'\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft)\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight)\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()\n}\n","import startOfSecond from '../startOfSecond/index.js'\n\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft)\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight)\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()\n}\n","import startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Boolean} the dates are in the same week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n */\nexport default function isSameWeek(\n dirtyDateLeft,\n dirtyDateRight,\n dirtyOptions\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nexport default function isSaturday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 6\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nexport default function isSunday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 0\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isThursday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 4\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nexport default function isTuesday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 2\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `true` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n return !isNaN(date)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nexport default function isWednesday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 3\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport default function isWeekend(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n return day === 0 || day === 6\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * isWithinRange(\n * new Date(2014, 0, 3),\n * new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n *\n * // v2.0.0 onward\n *\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n * )\n * ```\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n */\nexport default function isWithinInterval(dirtyDate, dirtyInterval) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var interval = dirtyInterval || {}\n var time = toDate(dirtyDate).getTime()\n var startTime = toDate(interval.start).getTime()\n var endTime = toDate(interval.end).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return time >= startTime && time <= endTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\nexport default function lastDayOfDecade(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import lastDayOfWeek from '../lastDayOfWeek/index.js'\n\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return lastDayOfWeek(dirtyDate, { weekStartsOn: 1 })\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `lastDayOfISOYear` to `lastDayOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nexport default function lastDayOfISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var year = getISOWeekYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year + 1, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n date.setDate(date.getDate() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfQuarter(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - (currentMonth % 3) + 3\n date.setMonth(month, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6')\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setHours(0, 0, 0, 0)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nexport default function lastDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\nimport formatters from '../_lib/format/lightFormatters/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport isValid from '../isValid/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\n\n// This RegExp consists of three parts separated by `|`:\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\n/**\n * @name lightFormat\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. Unlike `format`,\n * `lightFormat` doesn't use locales and outputs date using the most popular tokens.\n *\n * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples |\n * |---------------------------------|---------|-----------------------------------|\n * | AM, PM | a..aaa | AM, PM |\n * | | aaaa | a.m., p.m. |\n * | | aaaaa | a, p |\n * | Calendar year | y | 44, 1, 1900, 2017 |\n * | | yy | 44, 01, 00, 17 |\n * | | yyy | 044, 001, 000, 017 |\n * | | yyyy | 0044, 0001, 1900, 2017 |\n * | Month (formatting) | M | 1, 2, ..., 12 |\n * | | MM | 01, 02, ..., 12 |\n * | Day of month | d | 1, 2, ..., 31 |\n * | | dd | 01, 02, ..., 31 |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 |\n * | | hh | 01, 02, ..., 11, 12 |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 |\n * | | HH | 00, 01, 02, ..., 23 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z |\n * | | XX | -0800, +0530, Z |\n * | | XXX | -08:00, +05:30, Z |\n * | | XXXX | -0800, +0530, Z, +123456 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 |\n * | | xx | -0800, +0530, +0000 |\n * | | xxx | -08:00, +05:30, +00:00 |\n * | | xxxx | -0800, +0530, +0000, +123456 |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 |\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * var result = format(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '1987-02-11'\n */\nexport default function lightFormat(dirtyDate, dirtyFormatStr) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr)\n\n var originalDate = toDate(dirtyDate)\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value')\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)\n var utcDate = subMilliseconds(originalDate, timezoneOffset)\n\n var result = formatStr\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0]\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter]\n if (formatter) {\n return formatter(utcDate, substring, null, {})\n }\n\n return substring\n })\n .join('')\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","export default function buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var format = args.formats[width] || args.formats[args.defaultWidth]\n return format\n }\n}\n","export default function buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var context = options.context ? String(options.context) : 'standalone'\n\n var valuesArray\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth]\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth]\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex\n return valuesArray[index]\n }\n}\n","export default function buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n var width = options.width\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth]\n var matchResult = string.match(matchPattern)\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth]\n\n var value\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n })\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n })\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n","export default function buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n\n var matchResult = string.match(args.matchPattern)\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parseResult = string.match(args.parsePattern)\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n}\n\nexport default function formatDistance (token, count, options) {\n options = options || {}\n\n var result\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token]\n } else if (count === 1) {\n result = formatDistanceLocale[token].one\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count)\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n}\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n}\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n}\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n}\n\nexport default formatLong\n","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n}\n\nexport default function formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n}\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n}\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n}\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n}\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n}\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber)\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n}\n\nexport default localize\n","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js'\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i\nvar parseOrdinalNumberPattern = /\\d+/i\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n}\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n}\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n}\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n}\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n}\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n}\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n}\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n}\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n}\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n}\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n}\n\nexport default match\n","import formatDistance from './_lib/formatDistance/index.js'\nimport formatLong from './_lib/formatLong/index.js'\nimport formatRelative from './_lib/formatRelative/index.js'\nimport localize from './_lib/localize/index.js'\nimport match from './_lib/match/index.js'\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n}\n\nexport default locale\n","import toDate from '../toDate/index.js'\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `max` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var maxDate = max(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var maxDate = max(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function(dirtyDate) {\n var currentDate = toDate(dirtyDate)\n\n if (result === undefined || result < currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `min` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var minDate = min(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var minDate = min(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function(dirtyDate) {\n var currentDate = toDate(dirtyDate)\n\n if (result === undefined || result > currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\nimport setUTCDay from '../../../_lib/setUTCDay/index.js'\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js'\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js'\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js'\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js'\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_SECOND = 1000\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n}\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n}\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10)\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0\n\n return {\n value:\n sign *\n (hours * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(\n numericPatterns.anyDigitsSigned,\n string,\n valueCallback\n )\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(\n numericPatterns.singleDigit,\n string,\n valueCallback\n )\n case 2:\n return parseNumericPattern(\n numericPatterns.twoDigits,\n string,\n valueCallback\n )\n case 3:\n return parseNumericPattern(\n numericPatterns.threeDigits,\n string,\n valueCallback\n )\n case 4:\n return parseNumericPattern(\n numericPatterns.fourDigits,\n string,\n valueCallback\n )\n default:\n return parseNumericPattern(\n new RegExp('^\\\\d{1,' + n + '}'),\n string,\n valueCallback\n )\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(\n numericPatterns.singleDigitSigned,\n string,\n valueCallback\n )\n case 2:\n return parseNumericPattern(\n numericPatterns.twoDigitsSigned,\n string,\n valueCallback\n )\n case 3:\n return parseNumericPattern(\n numericPatterns.threeDigitsSigned,\n string,\n valueCallback\n )\n case 4:\n return parseNumericPattern(\n numericPatterns.fourDigitsSigned,\n string,\n valueCallback\n )\n default:\n return parseNumericPattern(\n new RegExp('^-?\\\\d{1,' + n + '}'),\n string,\n valueCallback\n )\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear\n\n var result\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100\n } else {\n var rangeEnd = absCurrentYear + 50\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0)\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\n// User for validation\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function(string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return (\n match.era(string, { width: 'abbreviated' }) ||\n match.era(string, { width: 'narrow' })\n )\n // A, B\n case 'GGGGG':\n return match.era(string, { width: 'narrow' })\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return (\n match.era(string, { width: 'wide' }) ||\n match.era(string, { width: 'abbreviated' }) ||\n match.era(string, { width: 'narrow' })\n )\n }\n },\n set: function(date, flags, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function(string, token, match, options) {\n var valueCallback = function(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n }\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n })\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function(date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options)\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear\n )\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function(string, token, match, options) {\n var valueCallback = function(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n }\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n })\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function(date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function(date, flags, value, options) {\n var currentYear = date.getUTCFullYear()\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear\n )\n date.setUTCFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate\n )\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate)\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function(string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function(date, flags, value, options) {\n var firstWeekOfYear = new Date(0)\n firstWeekOfYear.setUTCFullYear(value, 0, 4)\n firstWeekOfYear.setUTCHours(0, 0, 0, 0)\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function(string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function(date, flags, value, options) {\n date.setUTCFullYear(value, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function(string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, { unit: 'quarter' })\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return (\n match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.quarter(string, { width: 'narrow', context: 'formatting' })\n )\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n })\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return (\n match.quarter(string, { width: 'wide', context: 'formatting' }) ||\n match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.quarter(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function(string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, { unit: 'quarter' })\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return (\n match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.quarter(string, { width: 'narrow', context: 'standalone' })\n )\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n })\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return (\n match.quarter(string, { width: 'wide', context: 'standalone' }) ||\n match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.quarter(string, { width: 'narrow', context: 'standalone' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(\n numericPatterns.month,\n string,\n valueCallback\n )\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n })\n // Jan, Feb, ..., Dec\n case 'MMM':\n return (\n match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.month(string, { width: 'narrow', context: 'formatting' })\n )\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, { width: 'narrow', context: 'formatting' })\n // January, February, ..., December\n case 'MMMM':\n default:\n return (\n match.month(string, { width: 'wide', context: 'formatting' }) ||\n match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.month(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(\n numericPatterns.month,\n string,\n valueCallback\n )\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n })\n // Jan, Feb, ..., Dec\n case 'LLL':\n return (\n match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.month(string, { width: 'narrow', context: 'standalone' })\n )\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, { width: 'narrow', context: 'standalone' })\n // January, February, ..., December\n case 'LLLL':\n default:\n return (\n match.month(string, { width: 'wide', context: 'standalone' }) ||\n match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.month(string, { width: 'narrow', context: 'standalone' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, { unit: 'week' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function(date, flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, { unit: 'week' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function(date, flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, { unit: 'date' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n var month = date.getUTCMonth()\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month]\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCDate(value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, { unit: 'date' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth(0, value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function(string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return (\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n // T\n case 'EEEEE':\n return match.day(string, { width: 'narrow', context: 'formatting' })\n // Tu\n case 'EEEEEE':\n return (\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n // Tuesday\n case 'EEEE':\n default:\n return (\n match.day(string, { width: 'wide', context: 'formatting' }) ||\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function(date, flags, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n })\n // Tue\n case 'eee':\n return (\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n // T\n case 'eeeee':\n return match.day(string, { width: 'narrow', context: 'formatting' })\n // Tu\n case 'eeeeee':\n return (\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n // Tuesday\n case 'eeee':\n default:\n return (\n match.day(string, { width: 'wide', context: 'formatting' }) ||\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function(date, flags, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n })\n // Tue\n case 'ccc':\n return (\n match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.day(string, { width: 'short', context: 'standalone' }) ||\n match.day(string, { width: 'narrow', context: 'standalone' })\n )\n // T\n case 'ccccc':\n return match.day(string, { width: 'narrow', context: 'standalone' })\n // Tu\n case 'cccccc':\n return (\n match.day(string, { width: 'short', context: 'standalone' }) ||\n match.day(string, { width: 'narrow', context: 'standalone' })\n )\n // Tuesday\n case 'cccc':\n default:\n return (\n match.day(string, { width: 'wide', context: 'standalone' }) ||\n match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.day(string, { width: 'short', context: 'standalone' }) ||\n match.day(string, { width: 'narrow', context: 'standalone' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function(date, flags, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n if (value === 0) {\n return 7\n }\n return value\n }\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, { unit: 'day' })\n // Tue\n case 'iii':\n return (\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n })\n )\n // T\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n })\n // Tu\n case 'iiiiii':\n return (\n match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n })\n )\n // Tuesday\n case 'iiii':\n default:\n return (\n match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function(date, flags, value, options) {\n date = setUTCISODay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return (\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'aaaa':\n default:\n return (\n match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return (\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'bbbb':\n default:\n return (\n match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return (\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'BBBB':\n default:\n return (\n match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, { unit: 'hour' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function(date, flags, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, { unit: 'hour' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function(date, flags, value, options) {\n date.setUTCHours(value, 0, 0, 0)\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, { unit: 'hour' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function(date, flags, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, { unit: 'hour' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function(date, flags, value, options) {\n var hours = value <= 24 ? value % 24 : value\n date.setUTCHours(hours, 0, 0, 0)\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, { unit: 'minute' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function(date, flags, value, options) {\n date.setUTCMinutes(value, 0, 0)\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function(string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, { unit: 'second' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function(date, flags, value, options) {\n date.setUTCSeconds(value, 0)\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 30,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n }\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function(date, flags, value, options) {\n date.setUTCMilliseconds(value)\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n string\n )\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n string\n )\n case 'XXXXX':\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n string\n )\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function(date, flags, value, options) {\n if (flags.timestampIsSet) {\n return date\n }\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n string\n )\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n string\n )\n case 'xxxxx':\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n string\n )\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function(date, flags, value, options) {\n if (flags.timestampIsSet) {\n return date\n }\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function(string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function(date, flags, value, options) {\n return [new Date(value * 1000), { timestampIsSet: true }]\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function(string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function(date, flags, value, options) {\n return [new Date(value), { timestampIsSet: true }]\n }\n }\n}\n\nexport default parsers\n","import toInteger from '../_lib/toInteger/index.js'\nimport assign from '../_lib/assign/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport parsers from './_lib/parsers/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\nvar TIMEZONE_UNIT_PRIORITY = 10\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\nvar notWhitespaceRegExp = /\\S/\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} baseDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString)\n var formatString = String(dirtyFormatString)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ]\n\n var i\n\n var tokens = formatString.match(formattingTokensRegExp)\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token)\n }\n\n var firstCharacter = token[0]\n var parser = parsers[firstCharacter]\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale.match,\n subFnOptions\n )\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n })\n\n dateString = parseResult.rest\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\"\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token)\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length)\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n })\n\n var date = toDate(dirtyBaseDate)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))\n\n var flags = {}\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i]\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions)\n // Result is tuple (date, flags)\n if (result[0]) {\n utcDate = result[0]\n assign(flags, result[1])\n // Result is date\n } else {\n utcDate = result\n }\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date\n }\n\n var convertedDate = new Date(0)\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n )\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n )\n return convertedDate\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n}\n\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits =\n options.additionalDigits == null\n ? DEFAULT_ADDITIONAL_DIGITS\n : toInteger(options.additionalDigits)\n if (\n additionalDigits !== 2 &&\n additionalDigits !== 1 &&\n additionalDigits !== 0\n ) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n if (\n !(\n typeof argument === 'string' ||\n Object.prototype.toString.call(argument) === '[object String]'\n )\n ) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument)\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var date = parseDate(parseYearResult.restDateString, parseYearResult.year)\n\n if (isNaN(date) || !date) {\n return new Date(NaN)\n }\n\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n var fullTime = timestamp + time\n var fullTimeDate = new Date(fullTime)\n\n offset = getTimezoneOffsetInMilliseconds(fullTimeDate)\n\n // Adjust time when it's coming from DST\n var fullTimeDateNextDay = new Date(fullTime)\n fullTimeDateNextDay.setDate(fullTimeDate.getDate() + 1)\n var offsetDiff =\n getTimezoneOffsetInMilliseconds(fullTimeDateNextDay) - offset\n if (offsetDiff > 0) {\n offset += offsetDiff\n }\n }\n\n return new Date(timestamp + time + offset)\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {}\n var array = dateString.split(patterns.dateTimeDelimiter)\n var timeString\n\n if (/:/.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0]\n timeString = dateString.substr(dateStrings.date.length, dateString.length)\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp(\n '^(?:(\\\\d{4}|[+-]\\\\d{' +\n (4 + additionalDigits) +\n '})|(\\\\d{2}|[+-]\\\\d{' +\n (2 + additionalDigits) +\n '})$)'\n )\n\n var captures = dateString.match(regex)\n // Invalid ISO-formatted year\n if (!captures) return { year: null }\n\n var year = captures[1] && parseInt(captures[1])\n var century = captures[2] && parseInt(captures[2])\n\n return {\n year: century == null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n }\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return null\n\n var captures = dateString.match(dateRegex)\n // Invalid ISO-formatted string\n if (!captures) return null\n\n var isWeekDate = !!captures[4]\n var dayOfYear = parseDateUnit(captures[1])\n var month = parseDateUnit(captures[2]) - 1\n var day = parseDateUnit(captures[3])\n var week = parseDateUnit(captures[4]) - 1\n var dayOfWeek = parseDateUnit(captures[5]) - 1\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n return dayOfISOWeekYear(year, week, dayOfWeek)\n } else {\n var date = new Date(0)\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN)\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day))\n return date\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex)\n if (!captures) return null // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1])\n var minutes = parseTimeUnit(captures[2])\n var seconds = parseTimeUnit(captures[3])\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (\n (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n )\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(',', '.'))) || 0\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0\n\n var captures = timezoneString.match(timezoneRegex)\n if (!captures) return 0\n\n var sign = captures[1] === '+' ? -1 : 1\n var hours = parseInt(captures[2])\n var minutes = (captures[3] && parseInt(captures[3])) || 0\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n return (\n sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE)\n )\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0)\n date.setUTCFullYear(isoWeekYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = (week || 0) * 7 + (day || 0) + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100)\n}\n\nfunction validateDate(year, month, date) {\n return !(\n month < 0 ||\n month > 11 ||\n date < 1 ||\n date > (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n )\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return !(dayOfYear < 1 || dayOfYear > (isLeapYearIndex(year) ? 366 : 365))\n}\n\nfunction validateWeekDate(_year, week, day) {\n return !(week < 0 || week > 52 || day < 0 || day > 6)\n}\n\nfunction validateTime(hours, minutes, seconds) {\n return !(\n seconds < 0 ||\n seconds >= 60 ||\n minutes < 0 ||\n minutes >= 60 ||\n hours < 0 ||\n hours >= 25\n )\n}\n\nfunction validateTimezone(_hours, minutes) {\n return !(minutes < 0 || minutes > 59)\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to round\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.nearestTo=1] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n */\nexport default function roundToNearestMinutes(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present')\n }\n\n var nearestTo =\n options && 'nearestTo' in options ? toInteger(options.nearestTo) : 1\n\n if (nearestTo < 1 || nearestTo > 30) {\n throw new RangeError('`options.nearestTo` must be between 1 and 30')\n }\n\n var date = toDate(dirtyDate)\n var seconds = date.getSeconds() // relevant if nearestTo is 1, which is the default case\n var minutes = date.getMinutes() + seconds / 60\n var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo\n var remainderMinutes = minutes % nearestTo\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo\n\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n roundedMinutes + addedMinutes\n )\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dayOfMonth = toInteger(dirtyDayOfMonth)\n date.setDate(dayOfMonth)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the new date with the day of the week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = toInteger(dirtyDay)\n var currentDay = date.getDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n return addDays(date, diff, options)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nexport default function setDayOfYear(dirtyDate, dirtyDayOfYear) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dayOfYear = toInteger(dirtyDayOfYear)\n date.setMonth(0)\n date.setDate(dayOfYear)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var hours = toInteger(dirtyHours)\n date.setHours(hours)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\nimport getISODay from '../getISODay/index.js'\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setISODay(dirtyDate, dirtyDay) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var day = toInteger(dirtyDay)\n var currentDay = getISODay(date)\n var diff = day - currentDay\n return addDays(date, diff)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getISOWeek from '../getISOWeek/index.js'\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setISOWeek(dirtyDate, dirtyISOWeek) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getISOWeek(date) - isoWeek\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `setISOYear` to `setISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nexport default function setISOWeekYear(dirtyDate, dirtyISOWeekYear) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var isoWeekYear = toInteger(dirtyISOWeekYear)\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date))\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n date = startOfISOWeekYear(fourthOfJanuary)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var milliseconds = toInteger(dirtyMilliseconds)\n date.setMilliseconds(milliseconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var minutes = toInteger(dirtyMinutes)\n date.setMinutes(minutes)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var month = toInteger(dirtyMonth)\n var year = date.getFullYear()\n var day = date.getDate()\n\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(year, month, 15)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport setMonth from '../setMonth/index.js'\n\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var quarter = toInteger(dirtyQuarter)\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1\n var diff = quarter - oldQuarter\n return setMonth(date, date.getMonth() + diff * 3)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var seconds = toInteger(dirtySeconds)\n date.setSeconds(seconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getWeek from '../getWeek/index.js'\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * var result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * var result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek(dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var week = toInteger(dirtyWeek)\n var diff = getWeek(date, dirtyOptions) - week\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setWeekYear(dirtyDate, dirtyWeekYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate =\n locale && locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var date = toDate(dirtyDate)\n var weekYear = toInteger(dirtyWeekYear)\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, dirtyOptions))\n var firstWeek = new Date(0)\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n date = startOfWeekYear(firstWeek, dirtyOptions)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = toInteger(dirtyYear)\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n date.setFullYear(year)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * var result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\nexport default function startOfDecade(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n date.setFullYear(decade, 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setMinutes(0, 0, 0)\n return date\n}\n","import startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return startOfWeek(dirtyDate, { weekStartsOn: 1 })\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var year = getISOWeekYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setSeconds(0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setDate(1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - (currentMonth % 3)\n date.setMonth(month, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setMilliseconds(0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getWeekYear from '../getWeekYear/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * var result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate =\n locale && locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n var date = startOfWeek(firstWeek, dirtyOptions)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var cleanDate = toDate(dirtyDate)\n var date = new Date(0)\n date.setFullYear(cleanDate.getFullYear(), 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addDays(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addHours from '../addHours/index.js'\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addHours(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addISOWeekYears from '../addISOWeekYears/index.js'\n\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `subISOYears` to `subISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nexport default function subISOWeekYears(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addISOWeekYears(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMinutes from '../addMinutes/index.js'\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @returns {Date} the new date with the minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMinutes(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addQuarters from '../addQuarters/index.js'\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addQuarters(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addSeconds from '../addSeconds/index.js'\n\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport default function subSeconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addSeconds(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addWeeks(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addYears from '../addYears/index.js'\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addYears(dirtyDate, -amount)\n}\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * var result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * var result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var argStr = Object.prototype.toString.call(argument)\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === 'object' && argStr === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument)\n } else {\n if (\n (typeof argument === 'string' || argStr === '[object String]') &&\n typeof console !== 'undefined'\n ) {\n console.warn(\n \"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fpAk2\"\n )\n console.warn(new Error().stack)\n }\n return new Date(NaN)\n }\n}\n","'use strict';\n\nvar objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isArray = require('isarray');\nvar isDate = require('is-date-object');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar whichCollection = require('which-collection');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar whichTypedArray = require('which-typed-array');\nvar assign = require('object.assign');\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n if (whichTypedArray(a) !== whichTypedArray(b)) {\n return false;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t\tvar getStopIterationIterator = function (iterator) {\n\t\t\t\tvar done = false;\n\t\t\t\treturn {\n\t\t\t\t\tnext: function next() {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdone: done,\n\t\t\t\t\t\t\t\tvalue: done ? undefined : iterator.next()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdone: true,\n\t\t\t\t\t\t\t\tvalue: undefined\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(b.call(c,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;\n$jscomp.defineProperty=$jscomp.ASSUME_ES5||\"function\"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return\"undefined\"!=typeof window&&window===a?a:\"undefined\"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);\n$jscomp.polyfill=function(a,b,c,d){if(b){c=$jscomp.global;a=a.split(\".\");for(d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill(\"Array.prototype.findIndex\",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).i}},\"es6\",\"es3\");\n$jscomp.checkStringArgs=function(a,b,c){if(null==a)throw new TypeError(\"The 'this' value for String.prototype.\"+c+\" must not be null or undefined\");if(b instanceof RegExp)throw new TypeError(\"First argument to String.prototype.\"+c+\" must not be a regular expression\");return a+\"\"};\n$jscomp.polyfill(\"String.prototype.endsWith\",function(a){return a?a:function(a,c){var b=$jscomp.checkStringArgs(this,a,\"endsWith\");a+=\"\";void 0===c&&(c=b.length);c=Math.max(0,Math.min(c|0,b.length));for(var e=a.length;0<e&&0<c;)if(b[--c]!=a[--e])return!1;return 0>=e}},\"es6\",\"es3\");$jscomp.polyfill(\"Array.prototype.find\",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},\"es6\",\"es3\");\n$jscomp.polyfill(\"String.prototype.startsWith\",function(a){return a?a:function(a,c){var b=$jscomp.checkStringArgs(this,a,\"startsWith\");a+=\"\";var e=b.length,f=a.length;c=Math.max(0,Math.min(c|0,b.length));for(var g=0;g<f&&c<e;)if(b[c++]!=a[g++])return!1;return g>=f}},\"es6\",\"es3\");\n$jscomp.polyfill(\"String.prototype.repeat\",function(a){return a?a:function(a){var b=$jscomp.checkStringArgs(this,null,\"repeat\");if(0>a||1342177279<a)throw new RangeError(\"Invalid count value\");a|=0;for(var d=\"\";a;)if(a&1&&(d+=b),a>>>=1)b+=b;return d}},\"es6\",\"es3\");var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.isDef=function(a){return void 0!==a};goog.isString=function(a){return\"string\"==typeof a};goog.isBoolean=function(a){return\"boolean\"==typeof a};\ngoog.isNumber=function(a){return\"number\"==typeof a};goog.exportPath_=function(a,b,c){a=a.split(\".\");c=c||goog.global;a[0]in c||\"undefined\"==typeof c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2012;goog.DEBUG=!0;goog.LOCALE=\"en\";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.provide cannot be used within a module.\");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(\".\")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};\ngoog.getScriptNonce=function(a){if(a&&a!=goog.global)return goog.getScriptNonce_(a.document);null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document));return goog.cspNonce_};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.cspNonce_=null;goog.getScriptNonce_=function(a){return(a=a.querySelector&&a.querySelector(\"script[nonce]\"))&&(a=a.nonce||a.getAttribute(\"nonce\"))&&goog.NONCE_PATTERN_.test(a)?a:\"\"};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if(!goog.isString(a)||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\"Invalid module identifier\");if(!goog.isInGoogModuleLoader_())throw Error(\"Module \"+a+\" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.\");\nif(goog.moduleLoaderState_.moduleName)throw Error(\"goog.module may only be called once per module.\");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};\ngoog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:\"es6\",GOOG:\"goog\"};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};\ngoog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?\"function\"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error(\"goog.module.declareLegacyNamespace must be called from within a goog.module\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\"goog.module must be called prior to goog.module.declareLegacyNamespace.\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error(\"goog.declareModuleId may only be called from within an ES6 module\");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error(\"goog.declareModuleId may only be called once per module.\");if(a in goog.loadedModules_)throw Error('Module with namespace \"'+a+'\" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||\"function\"!=typeof b.getCurrentModulePath)throw Error('Module with namespace \"'+\na+'\" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\"\",Error(\"Importing test-only code into non-debug environment\"+(a?\": \"+a:\".\"));};goog.forwardDeclare=function(a){};\nCOMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&goog.isDefAndNotNull(goog.getObjectByName(a))},goog.implicitNamespaces_={\"goog.module\":!0});goog.getObjectByName=function(a,b){a=a.split(\".\");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],!goog.isDefAndNotNull(b))return null;return b};goog.globalize=function(a,b){b=b||goog.global;for(var c in a)b[c]=a[c]};\ngoog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath=\"\";goog.nullFunction=function(){};\ngoog.abstractMethod=function(){throw Error(\"unimplemented abstract method\");};goog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE=\"detect\";\ngoog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRANSPILE_TO_LANGUAGE=\"\";goog.TRANSPILER=\"transpile.js\";goog.hasBadLetScoping=null;goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval('\"use strict\";let x = 1; function f() { return typeof x; };f() == \"number\";')}catch(b){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping};goog.workaroundSafari10EvalBug=function(a){return\"(function(){\"+a+\"\\n;})();\\n\"};\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:\"\",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};if(goog.isFunction(a))var c=a.call(void 0,{});else if(goog.isString(a))goog.useSafari10Workaround()&&(a=goog.workaroundSafari10EvalBug(a)),c=goog.loadModuleFromSource_.call(void 0,a);else throw Error(\"Invalid module definition\");var d=goog.moduleLoaderState_.moduleName;if(goog.isString(d)&&d)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(d,\nc):goog.SEAL_MODULE_EXPORTS&&Object.seal&&\"object\"==typeof c&&null!=c&&Object.seal(c),goog.loadedModules_[d]={exports:c,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name \"'+d+'\"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split(\"/\");for(var b=0;b<a.length;)\".\"==a[b]?a.splice(b,1):b&&\"..\"==a[b]&&a[b-1]&&\"..\"!=a[b-1]?a.splice(--b,2):b++;return a.join(\"/\")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open(\"get\",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};\ngoog.transpile_=function(a,b,c){var d=goog.global.$jscomp;d||(goog.global.$jscomp=d={});var e=d.transpile;if(!e){var f=goog.basePath+goog.TRANSPILER,g=goog.loadFileSync_(f);if(g){(function(){(0,eval)(g+\"\\n//# sourceURL=\"+f)}).call(goog.global);if(goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error('The transpiler did not properly export the \"transpile\" method. $gwtExport: '+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=\ngoog.global.$gwtExport.$jscomp.transpile;d=goog.global.$jscomp;e=d.transpile}}e||(e=d.transpile=function(a,b){goog.logToConsole_(b+\" requires transpilation but no transpiler was found.\");return a});return e(a,b,c)};\ngoog.typeOf=function(a){var b=typeof a;if(\"object\"==b)if(a){if(a instanceof Array)return\"array\";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if(\"[object Window]\"==c)return\"object\";if(\"[object Array]\"==c||\"number\"==typeof a.length&&\"undefined\"!=typeof a.splice&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"splice\"))return\"array\";if(\"[object Function]\"==c||\"undefined\"!=typeof a.call&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"call\"))return\"function\"}else return\"null\";\nelse if(\"function\"==b&&\"undefined\"==typeof a.call)return\"object\";return b};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return\"array\"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return\"array\"==b||\"object\"==b&&\"number\"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&\"function\"==typeof a.getFullYear};goog.isFunction=function(a){return\"function\"==goog.typeOf(a)};\ngoog.isObject=function(a){var b=typeof a;return\"object\"==b&&null!=a||\"function\"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&\"removeAttribute\"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_=\"closure_uid_\"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;\ngoog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if(\"object\"==b||\"array\"==b){if(\"function\"===typeof a.clone)return a.clone();b=\"array\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};\ngoog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,\"JavaScript\");else if(goog.global.eval){if(null==goog.evalWorksForGlobals_){try{goog.global.eval(\"var _evalTest_ = 1;\")}catch(d){}if(\"undefined\"!=typeof goog.global._evalTest_){try{delete goog.global._evalTest_}catch(d){}goog.evalWorksForGlobals_=!0}else goog.evalWorksForGlobals_=!1}if(goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement(\"SCRIPT\");c.type=\"text/javascript\";c.defer=\n!1;c.appendChild(b.createTextNode(a));b.head.appendChild(c);b.head.removeChild(c)}}else throw Error(\"goog.globalEval not available\");};goog.evalWorksForGlobals_=null;\ngoog.getCssName=function(a,b){if(\".\"==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with \".\". You passed: '+a);var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split(\"-\");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join(\"-\")};d=goog.cssNameMapping_?\"BY_WHOLE\"==goog.cssNameMappingStyle_?c:d:function(a){return a};a=b?a+\"-\"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,\"&lt;\"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(a,c){return null!=b&&c in b?b[c]:a}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};\ngoog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e<arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};\ngoog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.STRICT_MODE_COMPATIBLE||goog.DEBUG&&!d)throw Error(\"arguments.caller not defined. goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C\");if(\"undefined\"!==typeof d.superClass_){for(var e=Array(arguments.length-1),f=1;f<arguments.length;f++)e[f-1]=arguments[f];return d.superClass_.constructor.apply(a,e)}if(\"string\"!=typeof b&&\"symbol\"!=typeof b)throw Error(\"method names provided to goog.base must be a string or a symbol\");\ne=Array(arguments.length-2);for(f=2;f<arguments.length;f++)e[f-2]=arguments[f];f=!1;for(var g=a.constructor.prototype;g;g=Object.getPrototypeOf(g))if(g[b]===d)f=!0;else if(f)return g[b].apply(a,e);if(a[b]===d)return a.constructor.prototype[b].apply(a,e);throw Error(\"goog.base called from a method of one name to a method of a different name\");};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.scope is not supported within a module.\");a.call(goog.global)};\nCOMPILED||(goog.global.COMPILED=COMPILED);goog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error(\"cannot instantiate an interface (no constructor defined).\");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};\ngoog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;goog.defineClass.createSealingConstructor_=function(a,b){if(!goog.defineClass.SEAL_CLASS_INSTANCES)return a;var c=!goog.defineClass.isUnsealable_(b),d=function(){var b=a.apply(this,arguments)||this;b[goog.UID_PROPERTY_]=b[goog.UID_PROPERTY_];this.constructor===d&&c&&Object.seal instanceof Function&&Object.seal(b);return b};return d};goog.defineClass.isUnsealable_=function(a){return a&&a.prototype&&a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]};\ngoog.defineClass.OBJECT_PROTOTYPE_FIELDS_=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");goog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};\ngoog.tagUnsealableClass=function(a){!COMPILED&&goog.defineClass.SEAL_CLASS_INSTANCES&&(a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]=!0)};goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_=\"goog_defineClass_legacy_unsealable\";\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&\"write\"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?\"complete\"!=a.readyState:\"loading\"==a.readyState},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH)&&goog.isString(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;\na=b?[b]:a.getElementsByTagName(\"SCRIPT\");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf(\"?\");d=-1==d?c.length:d;if(\"base.js\"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}}},goog.findBasePath_(),goog.Transpiler=function(){this.requiresTranspilation_=null;this.transpilationTarget_=goog.TRANSPILE_TO_LANGUAGE},goog.Transpiler.prototype.createRequiresTranspilation_=function(){function a(a,b){e?d[a]=!0:b()?(c=a,d[a]=!1):e=d[a]=!0}function b(a){try{return!!eval(a)}catch(h){return!1}}\nvar c=\"es3\",d={es3:!1},e=!1,f=goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:\"\";a(\"es5\",function(){return b(\"[1,].length==1\")});a(\"es6\",function(){return f.match(/Edge\\/(\\d+)(\\.\\d)*/i)?!1:b('(()=>{\"use strict\";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')});\na(\"es7\",function(){return b(\"2 ** 2 == 4\")});a(\"es8\",function(){return b(\"async () => 1, true\")});a(\"es9\",function(){return b(\"({...rest} = {}), true\")});a(\"es_next\",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if(\"always\"==goog.TRANSPILE)return!0;if(\"never\"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_=this.transpilationTarget_||\nc.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||\"es6\"!=b||\"noModule\"in goog.global.document.createElement(\"script\")?!1:!0;throw Error(\"Unknown language mode: \"+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,\"\\\\x3c/$1\")},goog.DebugLoader_=function(){this.dependencies_={};\nthis.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error(\"Unregonized namespace: \"+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=\n0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+\"deps.js\"),\"deps.js\",[],[],{},!1));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=\nfunction(a){this.factory_=a},goog.DebugLoader_.prototype.load_=function(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(a){var e=b.getPathFromDeps_(a);if(!e)throw Error(\"Bad dependency path or symbol: \"+a);if(!b.written_[e]){b.written_[e]=!0;a=b.dependencies_[e];for(e=0;e<a.requires.length;e++)goog.isProvided_(a.requires[e])||d(a.requires[e]);c.push(a)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else throw a=\"goog.require could not find: \"+\na,goog.logToConsole_(a),Error(a);},goog.DebugLoader_.prototype.loadDeps_=function(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error(\"Cannot call pause after the call to load.\");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error(\"Double call to loaded.\");e=!0;a.loaded_(d)},pending:function(){for(var b=[],c=0;c<a.loadingDeps_.length;c++)b.push(a.loadingDeps_[c]);\nreturn b},setModuleState:function(a){goog.moduleLoaderState_={type:a,moduleName:\"\",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(a,b,c){c&&(goog.loadedModules_[c]={exports:b,type:goog.ModuleType.ES6,moduleId:c||\"\"})},registerGoogModuleExports:function(a,b){goog.loadedModules_[a]={exports:b,type:goog.ModuleType.GOOG,moduleId:a}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(b){if(c)throw Error(\"Cannot register with defer after the call to load.\");a.defer_(d,\nb)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};try{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);\nbreak}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==a.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=\nfunction(a){return a in this.idToPath_?this.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,\nb,c){},goog.LoadController.prototype.setModuleState=function(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf(\"://\");0<=b&&(a=a.substring(b+3),b=\na.indexOf(\"/\"),0<=b&&(a=a.substring(b+1)));return a},goog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=\nfunction(a){delete goog.Dependency.callbackMap_[a]},goog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error(\"Callback key \"+a+\" does not exist (was base.js loaded more than once?).\");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=\ngoog.global.document;if(\"complete\"==b.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write \"'+this.path+'\" after document load');}if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var c=goog.Dependency.registerCallback_(function(b){goog.DebugLoader_.IS_OLD_IE_&&\"complete\"!=b.readyState||(goog.Dependency.unregisterCallback_(c),a.loaded())}),d=!goog.DebugLoader_.IS_OLD_IE_&&goog.getScriptNonce()?\n' nonce=\"'+goog.getScriptNonce()+'\"':\"\";d='<script src=\"'+this.path+'\" '+(goog.DebugLoader_.IS_OLD_IE_?\"onreadystatechange\":\"onload\")+\"=\\\"goog.Dependency.callback_('\"+c+'\\', this)\" type=\"text/javascript\" '+(goog.Dependency.defer_?\"defer\":\"\")+d+\">\\x3c/script>\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(d):d)}else{var e=b.createElement(\"script\");e.defer=goog.Dependency.defer_;e.async=!1;e.type=\"text/javascript\";(d=goog.getScriptNonce())&&e.setAttribute(\"nonce\",d);goog.DebugLoader_.IS_OLD_IE_?\n(a.pause(),e.onreadystatechange=function(){if(\"loaded\"==e.readyState||\"complete\"==e.readyState)a.loaded(),a.resume()}):e.onload=function(){e.onload=null;a.loaded()};e.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(e)}}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),\"deps.js\"==this.relativePath?(goog.logToConsole_(\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\"),\na.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(a,b){a=b?'<script type=\"module\" crossorigin>'+b+\"\\x3c/script>\":'<script type=\"module\" crossorigin src=\"'+a+'\">\\x3c/script>';d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(a):a)}function c(a,b){var c=d.createElement(\"script\");c.defer=!0;c.async=!1;c.type=\n\"module\";c.setAttribute(\"crossorigin\",!0);var e=goog.getScriptNonce();e&&c.setAttribute(\"nonce\",e);b?c.textContent=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(b):b:c.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(a):a;d.head.appendChild(c)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=\n!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);a.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_(\"'+g+'\")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(b){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,b,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from \"'+this.path+'\"; goog.Dependency.callback_(\"'+h+'\", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);\na.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_(\"'+k+'\")')}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!(\"noModule\"in goog.global.document.createElement(\"script\"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=\ngoog.loadFileSync_(e.path);e.contents_&&(e.contents_=e.transform(e.contents_),e.contents_&&(e.contents_+=\"\\n//# sourceURL=\"+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var c=e.contents_;e.contents_=null;goog.globalEval(c);if(f)var d=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),\nd)});a.loaded()}}function d(){var a=goog.global.document,b=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(b);c()}),d='<script type=\"text/javascript\">'+goog.protectScriptTag_('goog.Dependency.callback_(\"'+b+'\");')+\"\\x3c/script>\";a.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(d):d)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT(\"\",this.contents_)?(this.contents_=null,a.loaded()):a.pause();\nelse{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length,h=g&&goog.DebugLoader_.IS_OLD_IE_;g=goog.Dependency.defer_&&(g||goog.isDocumentLoading_());if(h||g)a.defer(function(){c()});else{var k=goog.global.document;h=goog.inHtmlDocument_()&&\"ActiveXObject\"in goog.global;if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!h){goog.Dependency.defer_=!0;a.pause();var l=k.onreadystatechange;k.onreadystatechange=function(){\"interactive\"==k.readyState&&(k.onreadystatechange=\nl,c(),a.resume());goog.isFunction(l)&&l.apply(void 0,arguments)}}else!goog.DebugLoader_.IS_OLD_IE_&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.TranspiledDependency=function(a,b,c,d,e,f){goog.TransformedDependency.call(this,a,b,c,d,e);this.transpiler=f},goog.inherits(goog.TranspiledDependency,goog.TransformedDependency),goog.TranspiledDependency.prototype.transform=function(a){return this.transpiler.transpile(a,this.getPathName())},\ngoog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,c,d,e,f,g){goog.TransformedDependency.call(this,a,b,c,d,e);this.needsTranspile_=f;this.transpiler_=g},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=\nfunction(a){this.needsTranspile_&&(a=this.transpiler_.transpile(a,this.getPathName()));return goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)?\"goog.loadModule(\"+goog.global.JSON.stringify(a+\"\\n//# sourceURL=\"+this.path+\"\\n\")+\");\":'goog.loadModule(function(exports) {\"use strict\";'+a+\"\\n;return exports});\\n//# sourceURL=\"+this.path+\"\\n\"},goog.DebugLoader_.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.DebugLoader_.prototype.addDependency=function(a,b,\nc,d){b=b||[];a=a.replace(/\\\\/g,\"/\");var e=goog.normalizePath_(goog.basePath+a);d&&\"boolean\"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d,goog.transpiler_.needsTranspile(d.lang||\"es3\",d.module));this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(a){this.transpiler=a},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e,f){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,\nb,c,d,e,f,this.transpiler):f?new goog.TranspiledDependency(a,b,c,d,e,this.transpiler):e.module==goog.ModuleType.ES6?\"never\"==goog.TRANSPILE&&goog.ASSUME_ES_MODULES_TRANSPILED?new goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.global.CLOSURE_NO_DEPS||\ngoog.debugLoader_.loadClosureDeps(),goog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});goog.TRUSTED_TYPES_POLICY_NAME=\"\";goog.identity_=function(a){return a};goog.createTrustedTypesPolicy=function(a){var b=null;if(\"undefined\"===typeof TrustedTypes||!TrustedTypes.createPolicy)return b;try{b=TrustedTypes.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_,createURL:goog.identity_})}catch(c){goog.logToConsole_(c.message)}return b};\ngoog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\"#base\"):null;goog.object={};goog.object.is=function(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};\ngoog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};\ngoog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};goog.object.getValueByKeys=function(a,b){var c=goog.isArrayLike(b),d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a};goog.object.containsKey=function(a,b){return null!==a&&b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};\ngoog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(null!==a&&b in a)throw Error('The object already contains the key \"'+b+'\"');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return null!==a&&b in a?a[b]:c};\ngoog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};goog.object.setWithReturnValueIfNotSet=function(a,b,c){if(b in a)return a[b];c=c();return a[b]=c};goog.object.equals=function(a,b){for(var c in a)if(!(c in b)||a[c]!==b[c])return!1;for(var d in b)if(!(d in a))return!1;return!0};goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};\ngoog.object.unsafeClone=function(a){var b=goog.typeOf(a);if(\"object\"==b||\"array\"==b){if(goog.isFunction(a.clone))return a.clone();b=\"array\"==b?[]:{};for(var c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");\ngoog.object.extend=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};\ngoog.object.create=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error(\"Uneven number of arguments\");for(var c={},d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d<b;d++)c[arguments[d]]=!0;return c};\ngoog.object.createImmutableView=function(a){var b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&&Object.isFrozen(a)};\ngoog.object.getAllPropertyNames=function(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return goog.object.getKeys(a);for(var d={};a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){for(var e=Object.getOwnPropertyNames(a),f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return goog.object.getKeys(d)};goog.object.getSuperClass=function(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor};goog.debug={};goog.debug.Error=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a));this.reportErrorToServer=!0};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name=\"CustomError\";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){goog.debug.Error.call(this,goog.asserts.subs_(a,b));this.messagePattern=a};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name=\"AssertionError\";goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};goog.asserts.errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;\ngoog.asserts.subs_=function(a,b){a=a.split(\"%s\");for(var c=\"\",d=a.length-1,e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:\"%s\");return c+a[d]};goog.asserts.doAssertFailure_=function(a,b,c,d){var e=\"Assertion failed\";if(c){e+=\": \"+c;var f=d}else a&&(e+=\": \"+a,f=b);a=new goog.asserts.AssertionError(\"\"+e,f||[]);goog.asserts.errorHandler_(a)};goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(goog.asserts.errorHandler_=a)};\ngoog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_(\"\",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&goog.asserts.doAssertFailure_(\"Expected to exist: %s.\",[a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&goog.asserts.errorHandler_(new goog.asserts.AssertionError(\"Failure\"+(a?\": \"+a:\"\"),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_(\"Expected number but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_(\"Expected string but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_(\"Expected function but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_(\"Expected object but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_(\"Expected array but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_(\"Expected boolean but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_(\"Expected Element but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_(\"Expected instanceof %s but got %s.\",[goog.asserts.getType_(b),goog.asserts.getType_(a)],c,Array.prototype.slice.call(arguments,3));return a};goog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||\"number\"==typeof a&&isFinite(a)||goog.asserts.doAssertFailure_(\"Expected %s to be a finite number but it is not.\",[a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+\" should not be enumerable in Object.prototype.\")};goog.asserts.getType_=function(a){return a instanceof Function?a.displayName||a.name||\"unknown type name\":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?\"null\":typeof a};var jspb={BinaryConstants:{},ConstBinaryMessage:function(){},BinaryMessage:function(){}};jspb.BinaryConstants.FieldType={INVALID:-1,DOUBLE:1,FLOAT:2,INT64:3,UINT64:4,INT32:5,FIXED64:6,FIXED32:7,BOOL:8,STRING:9,GROUP:10,MESSAGE:11,BYTES:12,UINT32:13,ENUM:14,SFIXED32:15,SFIXED64:16,SINT32:17,SINT64:18,FHASH64:30,VHASH64:31};jspb.BinaryConstants.WireType={INVALID:-1,VARINT:0,FIXED64:1,DELIMITED:2,START_GROUP:3,END_GROUP:4,FIXED32:5};\njspb.BinaryConstants.FieldTypeToWireType=function(a){var b=jspb.BinaryConstants.FieldType,c=jspb.BinaryConstants.WireType;switch(a){case b.INT32:case b.INT64:case b.UINT32:case b.UINT64:case b.SINT32:case b.SINT64:case b.BOOL:case b.ENUM:case b.VHASH64:return c.VARINT;case b.DOUBLE:case b.FIXED64:case b.SFIXED64:case b.FHASH64:return c.FIXED64;case b.STRING:case b.MESSAGE:case b.BYTES:return c.DELIMITED;case b.FLOAT:case b.FIXED32:case b.SFIXED32:return c.FIXED32;default:return c.INVALID}};\njspb.BinaryConstants.INVALID_FIELD_NUMBER=-1;jspb.BinaryConstants.FLOAT32_EPS=1.401298464324817E-45;jspb.BinaryConstants.FLOAT32_MIN=1.1754943508222875E-38;jspb.BinaryConstants.FLOAT32_MAX=3.4028234663852886E38;jspb.BinaryConstants.FLOAT64_EPS=4.9E-324;jspb.BinaryConstants.FLOAT64_MIN=2.2250738585072014E-308;jspb.BinaryConstants.FLOAT64_MAX=1.7976931348623157E308;jspb.BinaryConstants.TWO_TO_20=1048576;jspb.BinaryConstants.TWO_TO_23=8388608;jspb.BinaryConstants.TWO_TO_31=2147483648;\njspb.BinaryConstants.TWO_TO_32=4294967296;jspb.BinaryConstants.TWO_TO_52=4503599627370496;jspb.BinaryConstants.TWO_TO_63=0x7fffffffffffffff;jspb.BinaryConstants.TWO_TO_64=1.8446744073709552E19;jspb.BinaryConstants.ZERO_HASH=\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.peek=function(a){return a[a.length-1]};goog.array.last=goog.array.peek;\ngoog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(\"\"):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){var d=a.length,e=goog.isString(a)?a.split(\"\"):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)};\ngoog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(\"\"):a,h=0;h<d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};\ngoog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(\"\"):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};\ngoog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};\ngoog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};\ngoog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(\"\"):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};\ngoog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(\"\"):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&&++d},c);return d};\ngoog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(\"\"):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};\ngoog.array.findIndexRight=function(a,b,c){var d=a.length,e=goog.isString(a)?a.split(\"\"):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0<=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};\ngoog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0>(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){b=goog.array.indexOf(a,b);var c;(c=0<=b)&&goog.array.removeAt(a,b);return c};\ngoog.array.removeLast=function(a,b){b=goog.array.lastIndexOf(a,b);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.removeAllIf=function(a,b,c){var d=0;goog.array.forEachRight(a,function(e,f){b.call(c,e,f,a)&&goog.array.removeAt(a,f)&&d++});return d};\ngoog.array.concat=function(a){return Array.prototype.concat.apply([],arguments)};goog.array.join=function(a){return Array.prototype.concat.apply([],arguments)};goog.array.toArray=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;goog.array.extend=function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(goog.isArrayLike(d)){var e=a.length||0,f=d.length||0;a.length=e+f;for(var g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}};\ngoog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,goog.array.slice(arguments,1))};goog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};\ngoog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(a){return goog.isObject(a)?\"o\"+goog.getUid(a):(typeof a).charAt(0)+a};c=c||d;d={};for(var e=0,f=0;f<a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};\ngoog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var k=f+g>>1;var l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:~f};goog.array.sort=function(a,b){a.sort(b||goog.array.defaultCompare)};goog.array.stableSort=function(a,b){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(c,function(a,b){return e(a.value,b.value)||a.index-b.index});for(d=0;d<a.length;d++)a[d]=c[d].value};\ngoog.array.sortByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(b(a),b(c))})};goog.array.sortObjectsByKey=function(a,b,c){goog.array.sortByKey(a,function(a){return a[b]},c)};goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0};\ngoog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};goog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e<d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};\ngoog.array.inverseDefaultCompare=function(a,b){return-goog.array.defaultCompare(a,b)};goog.array.defaultCompareEquality=function(a,b){return a===b};goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0>c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0<=b?goog.array.removeAt(a,b):!1};\ngoog.array.bucket=function(a,b,c){for(var d={},e=0;e<a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&&(d[g]||(d[g]=[])).push(f)}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};goog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d};\ngoog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c<arguments.length;c++){var d=arguments[c];if(goog.isArray(d))for(var e=0;e<d.length;e+=8192){var f=goog.array.slice(d,e,e+8192);f=goog.array.flatten.apply(null,f);for(var g=0;g<f.length;g++)b.push(f[g])}else b.push(d)}return b};\ngoog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])};\ngoog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=arguments[0].length,d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){for(var e=[],f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b};goog.array.shuffle=function(a,b){b=b||Math.random;for(var c=a.length-1;0<c;c--){var d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}};goog.array.copyByIndex=function(a,b){var c=[];goog.array.forEach(b,function(b){c.push(a[b])});return c};\ngoog.array.concatMap=function(a,b,c){return goog.array.concat.apply([],goog.array.map(a,b,c))};goog.crypt={};goog.crypt.stringToByteArray=function(a){for(var b=[],c=0,d=0;d<a.length;d++){var e=a.charCodeAt(d);255<e&&(b[c++]=e&255,e>>=8);b[c++]=e}return b};goog.crypt.byteArrayToString=function(a){if(8192>=a.length)return String.fromCharCode.apply(null,a);for(var b=\"\",c=0;c<a.length;c+=8192){var d=goog.array.slice(a,c,c+8192);b+=String.fromCharCode.apply(null,d)}return b};\ngoog.crypt.byteArrayToHex=function(a,b){return goog.array.map(a,function(a){a=a.toString(16);return 1<a.length?a:\"0\"+a}).join(b||\"\")};goog.crypt.hexToByteArray=function(a){goog.asserts.assert(0==a.length%2,\"Key string length must be multiple of 2\");for(var b=[],c=0;c<a.length;c+=2)b.push(parseInt(a.substring(c,c+2),16));return b};\ngoog.crypt.stringToUtf8ByteArray=function(a){for(var b=[],c=0,d=0;d<a.length;d++){var e=a.charCodeAt(d);128>e?b[c++]=e:(2048>e?b[c++]=e>>6|192:(55296==(e&64512)&&d+1<a.length&&56320==(a.charCodeAt(d+1)&64512)?(e=65536+((e&1023)<<10)+(a.charCodeAt(++d)&1023),b[c++]=e>>18|240,b[c++]=e>>12&63|128):b[c++]=e>>12|224,b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b};\ngoog.crypt.utf8ByteArrayToString=function(a){for(var b=[],c=0,d=0;c<a.length;){var e=a[c++];if(128>e)b[d++]=String.fromCharCode(e);else if(191<e&&224>e){var f=a[c++];b[d++]=String.fromCharCode((e&31)<<6|f&63)}else if(239<e&&365>e){f=a[c++];var g=a[c++],h=a[c++];e=((e&7)<<18|(f&63)<<12|(g&63)<<6|h&63)-65536;b[d++]=String.fromCharCode(55296+(e>>10));b[d++]=String.fromCharCode(56320+(e&1023))}else f=a[c++],g=a[c++],b[d++]=String.fromCharCode((e&15)<<12|(f&63)<<6|g&63)}return b.join(\"\")};\ngoog.crypt.xorByteArray=function(a,b){goog.asserts.assert(a.length==b.length,\"XOR array lengths must match\");for(var c=[],d=0;d<a.length;d++)c.push(a[d]^b[d]);return c};goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail(\"Argument is not a Location (or a non-Element mock); got: %s\",goog.dom.asserts.debugStringForType_(a))}return a};\ngoog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&\"undefined\"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail(\"Argument is not a %s (or a non-Element, non-Location mock); got: %s\",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLAnchorElement\")};\ngoog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLButtonElement\")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLLinkElement\")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLImageElement\")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLAudioElement\")};\ngoog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLVideoElement\")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLInputElement\")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLTextAreaElement\")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLCanvasElement\")};\ngoog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLEmbedElement\")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLFormElement\")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLFrameElement\")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLIFrameElement\")};\ngoog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLObjectElement\")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLScriptElement\")};\ngoog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return\"<object could not be stringified>\"}else return void 0===a?\"undefined\":null===a?\"null\":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=Array.prototype.slice.call(arguments);b.push.apply(b,c);return a.apply(this,b)}};goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};\ngoog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){var c=arguments,d=c.length;return function(){var a;d&&(a=c[d-1].apply(this,arguments));for(var b=d-2;0<=b;b--)a=c[b].call(this,a);return a}};goog.functions.sequence=function(a){var b=arguments,c=b.length;return function(){for(var a,e=0;e<c;e++)a=b[e].apply(this,arguments);return a}};\ngoog.functions.and=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a<c;a++)if(!b[a].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a<c;a++)if(b[a].apply(this,arguments))return!0;return!1}};goog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};\ngoog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){var b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){var b=a;return function(){if(b){var a=b;b=null;a()}}};\ngoog.functions.debounce=function(a,b,c){var d=0;return function(e){goog.global.clearTimeout(d);var f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){var d=0,e=!1,f=[],g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);a.apply(c,f)};return function(a){f=arguments;d?e=!0:h()}};goog.functions.rateLimit=function(a,b,c){var d=0,e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.dom.HtmlElement=function(){};goog.dom.TagName=function(a){this.tagName_=a};goog.dom.TagName.prototype.toString=function(){return this.tagName_};goog.dom.TagName.A=new goog.dom.TagName(\"A\");goog.dom.TagName.ABBR=new goog.dom.TagName(\"ABBR\");goog.dom.TagName.ACRONYM=new goog.dom.TagName(\"ACRONYM\");goog.dom.TagName.ADDRESS=new goog.dom.TagName(\"ADDRESS\");goog.dom.TagName.APPLET=new goog.dom.TagName(\"APPLET\");goog.dom.TagName.AREA=new goog.dom.TagName(\"AREA\");goog.dom.TagName.ARTICLE=new goog.dom.TagName(\"ARTICLE\");\ngoog.dom.TagName.ASIDE=new goog.dom.TagName(\"ASIDE\");goog.dom.TagName.AUDIO=new goog.dom.TagName(\"AUDIO\");goog.dom.TagName.B=new goog.dom.TagName(\"B\");goog.dom.TagName.BASE=new goog.dom.TagName(\"BASE\");goog.dom.TagName.BASEFONT=new goog.dom.TagName(\"BASEFONT\");goog.dom.TagName.BDI=new goog.dom.TagName(\"BDI\");goog.dom.TagName.BDO=new goog.dom.TagName(\"BDO\");goog.dom.TagName.BIG=new goog.dom.TagName(\"BIG\");goog.dom.TagName.BLOCKQUOTE=new goog.dom.TagName(\"BLOCKQUOTE\");goog.dom.TagName.BODY=new goog.dom.TagName(\"BODY\");\ngoog.dom.TagName.BR=new goog.dom.TagName(\"BR\");goog.dom.TagName.BUTTON=new goog.dom.TagName(\"BUTTON\");goog.dom.TagName.CANVAS=new goog.dom.TagName(\"CANVAS\");goog.dom.TagName.CAPTION=new goog.dom.TagName(\"CAPTION\");goog.dom.TagName.CENTER=new goog.dom.TagName(\"CENTER\");goog.dom.TagName.CITE=new goog.dom.TagName(\"CITE\");goog.dom.TagName.CODE=new goog.dom.TagName(\"CODE\");goog.dom.TagName.COL=new goog.dom.TagName(\"COL\");goog.dom.TagName.COLGROUP=new goog.dom.TagName(\"COLGROUP\");\ngoog.dom.TagName.COMMAND=new goog.dom.TagName(\"COMMAND\");goog.dom.TagName.DATA=new goog.dom.TagName(\"DATA\");goog.dom.TagName.DATALIST=new goog.dom.TagName(\"DATALIST\");goog.dom.TagName.DD=new goog.dom.TagName(\"DD\");goog.dom.TagName.DEL=new goog.dom.TagName(\"DEL\");goog.dom.TagName.DETAILS=new goog.dom.TagName(\"DETAILS\");goog.dom.TagName.DFN=new goog.dom.TagName(\"DFN\");goog.dom.TagName.DIALOG=new goog.dom.TagName(\"DIALOG\");goog.dom.TagName.DIR=new goog.dom.TagName(\"DIR\");goog.dom.TagName.DIV=new goog.dom.TagName(\"DIV\");\ngoog.dom.TagName.DL=new goog.dom.TagName(\"DL\");goog.dom.TagName.DT=new goog.dom.TagName(\"DT\");goog.dom.TagName.EM=new goog.dom.TagName(\"EM\");goog.dom.TagName.EMBED=new goog.dom.TagName(\"EMBED\");goog.dom.TagName.FIELDSET=new goog.dom.TagName(\"FIELDSET\");goog.dom.TagName.FIGCAPTION=new goog.dom.TagName(\"FIGCAPTION\");goog.dom.TagName.FIGURE=new goog.dom.TagName(\"FIGURE\");goog.dom.TagName.FONT=new goog.dom.TagName(\"FONT\");goog.dom.TagName.FOOTER=new goog.dom.TagName(\"FOOTER\");goog.dom.TagName.FORM=new goog.dom.TagName(\"FORM\");\ngoog.dom.TagName.FRAME=new goog.dom.TagName(\"FRAME\");goog.dom.TagName.FRAMESET=new goog.dom.TagName(\"FRAMESET\");goog.dom.TagName.H1=new goog.dom.TagName(\"H1\");goog.dom.TagName.H2=new goog.dom.TagName(\"H2\");goog.dom.TagName.H3=new goog.dom.TagName(\"H3\");goog.dom.TagName.H4=new goog.dom.TagName(\"H4\");goog.dom.TagName.H5=new goog.dom.TagName(\"H5\");goog.dom.TagName.H6=new goog.dom.TagName(\"H6\");goog.dom.TagName.HEAD=new goog.dom.TagName(\"HEAD\");goog.dom.TagName.HEADER=new goog.dom.TagName(\"HEADER\");\ngoog.dom.TagName.HGROUP=new goog.dom.TagName(\"HGROUP\");goog.dom.TagName.HR=new goog.dom.TagName(\"HR\");goog.dom.TagName.HTML=new goog.dom.TagName(\"HTML\");goog.dom.TagName.I=new goog.dom.TagName(\"I\");goog.dom.TagName.IFRAME=new goog.dom.TagName(\"IFRAME\");goog.dom.TagName.IMG=new goog.dom.TagName(\"IMG\");goog.dom.TagName.INPUT=new goog.dom.TagName(\"INPUT\");goog.dom.TagName.INS=new goog.dom.TagName(\"INS\");goog.dom.TagName.ISINDEX=new goog.dom.TagName(\"ISINDEX\");goog.dom.TagName.KBD=new goog.dom.TagName(\"KBD\");\ngoog.dom.TagName.KEYGEN=new goog.dom.TagName(\"KEYGEN\");goog.dom.TagName.LABEL=new goog.dom.TagName(\"LABEL\");goog.dom.TagName.LEGEND=new goog.dom.TagName(\"LEGEND\");goog.dom.TagName.LI=new goog.dom.TagName(\"LI\");goog.dom.TagName.LINK=new goog.dom.TagName(\"LINK\");goog.dom.TagName.MAIN=new goog.dom.TagName(\"MAIN\");goog.dom.TagName.MAP=new goog.dom.TagName(\"MAP\");goog.dom.TagName.MARK=new goog.dom.TagName(\"MARK\");goog.dom.TagName.MATH=new goog.dom.TagName(\"MATH\");goog.dom.TagName.MENU=new goog.dom.TagName(\"MENU\");\ngoog.dom.TagName.MENUITEM=new goog.dom.TagName(\"MENUITEM\");goog.dom.TagName.META=new goog.dom.TagName(\"META\");goog.dom.TagName.METER=new goog.dom.TagName(\"METER\");goog.dom.TagName.NAV=new goog.dom.TagName(\"NAV\");goog.dom.TagName.NOFRAMES=new goog.dom.TagName(\"NOFRAMES\");goog.dom.TagName.NOSCRIPT=new goog.dom.TagName(\"NOSCRIPT\");goog.dom.TagName.OBJECT=new goog.dom.TagName(\"OBJECT\");goog.dom.TagName.OL=new goog.dom.TagName(\"OL\");goog.dom.TagName.OPTGROUP=new goog.dom.TagName(\"OPTGROUP\");\ngoog.dom.TagName.OPTION=new goog.dom.TagName(\"OPTION\");goog.dom.TagName.OUTPUT=new goog.dom.TagName(\"OUTPUT\");goog.dom.TagName.P=new goog.dom.TagName(\"P\");goog.dom.TagName.PARAM=new goog.dom.TagName(\"PARAM\");goog.dom.TagName.PICTURE=new goog.dom.TagName(\"PICTURE\");goog.dom.TagName.PRE=new goog.dom.TagName(\"PRE\");goog.dom.TagName.PROGRESS=new goog.dom.TagName(\"PROGRESS\");goog.dom.TagName.Q=new goog.dom.TagName(\"Q\");goog.dom.TagName.RP=new goog.dom.TagName(\"RP\");goog.dom.TagName.RT=new goog.dom.TagName(\"RT\");\ngoog.dom.TagName.RTC=new goog.dom.TagName(\"RTC\");goog.dom.TagName.RUBY=new goog.dom.TagName(\"RUBY\");goog.dom.TagName.S=new goog.dom.TagName(\"S\");goog.dom.TagName.SAMP=new goog.dom.TagName(\"SAMP\");goog.dom.TagName.SCRIPT=new goog.dom.TagName(\"SCRIPT\");goog.dom.TagName.SECTION=new goog.dom.TagName(\"SECTION\");goog.dom.TagName.SELECT=new goog.dom.TagName(\"SELECT\");goog.dom.TagName.SMALL=new goog.dom.TagName(\"SMALL\");goog.dom.TagName.SOURCE=new goog.dom.TagName(\"SOURCE\");goog.dom.TagName.SPAN=new goog.dom.TagName(\"SPAN\");\ngoog.dom.TagName.STRIKE=new goog.dom.TagName(\"STRIKE\");goog.dom.TagName.STRONG=new goog.dom.TagName(\"STRONG\");goog.dom.TagName.STYLE=new goog.dom.TagName(\"STYLE\");goog.dom.TagName.SUB=new goog.dom.TagName(\"SUB\");goog.dom.TagName.SUMMARY=new goog.dom.TagName(\"SUMMARY\");goog.dom.TagName.SUP=new goog.dom.TagName(\"SUP\");goog.dom.TagName.SVG=new goog.dom.TagName(\"SVG\");goog.dom.TagName.TABLE=new goog.dom.TagName(\"TABLE\");goog.dom.TagName.TBODY=new goog.dom.TagName(\"TBODY\");goog.dom.TagName.TD=new goog.dom.TagName(\"TD\");\ngoog.dom.TagName.TEMPLATE=new goog.dom.TagName(\"TEMPLATE\");goog.dom.TagName.TEXTAREA=new goog.dom.TagName(\"TEXTAREA\");goog.dom.TagName.TFOOT=new goog.dom.TagName(\"TFOOT\");goog.dom.TagName.TH=new goog.dom.TagName(\"TH\");goog.dom.TagName.THEAD=new goog.dom.TagName(\"THEAD\");goog.dom.TagName.TIME=new goog.dom.TagName(\"TIME\");goog.dom.TagName.TITLE=new goog.dom.TagName(\"TITLE\");goog.dom.TagName.TR=new goog.dom.TagName(\"TR\");goog.dom.TagName.TRACK=new goog.dom.TagName(\"TRACK\");goog.dom.TagName.TT=new goog.dom.TagName(\"TT\");\ngoog.dom.TagName.U=new goog.dom.TagName(\"U\");goog.dom.TagName.UL=new goog.dom.TagName(\"UL\");goog.dom.TagName.VAR=new goog.dom.TagName(\"VAR\");goog.dom.TagName.VIDEO=new goog.dom.TagName(\"VIDEO\");goog.dom.TagName.WBR=new goog.dom.TagName(\"WBR\");goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\"#html\"):null;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||\"\";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\ngoog.string.Const.prototype.toString=function(){return\"Const{\"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+\"}\"};goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail(\"expected object of type Const, got '\"+a+\"'\");return\"type_error:Const\"};\ngoog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from(\"\");goog.html.SafeScript=function(){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=\"\";this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeScript.prototype.implementsGoogStringTypedString=!0;goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeScript.fromConstant=function(a){a=goog.string.Const.unwrap(a);return 0===a.length?goog.html.SafeScript.EMPTY:goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeScript.fromConstantAndArgs=function(a,b){for(var c=[],d=1;d<arguments.length;d++)c.push(goog.html.SafeScript.stringify_(arguments[d]));return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\"(\"+goog.string.Const.unwrap(a)+\")(\"+c.join(\", \")+\");\")};goog.html.SafeScript.fromJson=function(a){return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(a))};goog.html.SafeScript.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()};\ngoog.DEBUG&&(goog.html.SafeScript.prototype.toString=function(){return\"SafeScript{\"+this.privateDoNotAccessOrElseSafeScriptWrappedValue_+\"}\"});goog.html.SafeScript.unwrap=function(a){return goog.html.SafeScript.unwrapTrustedScript(a).toString()};\ngoog.html.SafeScript.unwrapTrustedScript=function(a){if(a instanceof goog.html.SafeScript&&a.constructor===goog.html.SafeScript&&a.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;goog.asserts.fail(\"expected object of type SafeScript, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeScript\"};\ngoog.html.SafeScript.stringify_=function(a){return JSON.stringify(a).replace(/</g,\"\\\\x3c\")};goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(a)};\ngoog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(a):a;return this};goog.html.SafeScript.EMPTY=goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\"\");goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.getUrlObject_=function(){var a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error(\"This browser doesn't seem to support blob URLs\");};\ngoog.fs.url.findUrlObject_=function(){return goog.isDef(goog.global.URL)&&goog.isDef(goog.global.URL.createObjectURL)?goog.global.URL:goog.isDef(goog.global.webkitURL)&&goog.isDef(goog.global.webkitURL.createObjectURL)?goog.global.webkitURL:goog.isDef(goog.global.createObjectURL)?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.i18n={};goog.i18n.bidi={};goog.i18n.bidi.FORCE_RTL=!1;\ngoog.i18n.bidi.IS_RTL=goog.i18n.bidi.FORCE_RTL||(\"ar\"==goog.LOCALE.substring(0,2).toLowerCase()||\"fa\"==goog.LOCALE.substring(0,2).toLowerCase()||\"he\"==goog.LOCALE.substring(0,2).toLowerCase()||\"iw\"==goog.LOCALE.substring(0,2).toLowerCase()||\"ps\"==goog.LOCALE.substring(0,2).toLowerCase()||\"sd\"==goog.LOCALE.substring(0,2).toLowerCase()||\"ug\"==goog.LOCALE.substring(0,2).toLowerCase()||\"ur\"==goog.LOCALE.substring(0,2).toLowerCase()||\"yi\"==goog.LOCALE.substring(0,2).toLowerCase())&&(2==goog.LOCALE.length||\n\"-\"==goog.LOCALE.substring(2,3)||\"_\"==goog.LOCALE.substring(2,3))||3<=goog.LOCALE.length&&\"ckb\"==goog.LOCALE.substring(0,3).toLowerCase()&&(3==goog.LOCALE.length||\"-\"==goog.LOCALE.substring(3,4)||\"_\"==goog.LOCALE.substring(3,4))||7<=goog.LOCALE.length&&(\"-\"==goog.LOCALE.substring(2,3)||\"_\"==goog.LOCALE.substring(2,3))&&(\"adlm\"==goog.LOCALE.substring(3,7).toLowerCase()||\"arab\"==goog.LOCALE.substring(3,7).toLowerCase()||\"hebr\"==goog.LOCALE.substring(3,7).toLowerCase()||\"nkoo\"==goog.LOCALE.substring(3,\n7).toLowerCase()||\"rohg\"==goog.LOCALE.substring(3,7).toLowerCase()||\"thaa\"==goog.LOCALE.substring(3,7).toLowerCase())||8<=goog.LOCALE.length&&(\"-\"==goog.LOCALE.substring(3,4)||\"_\"==goog.LOCALE.substring(3,4))&&(\"adlm\"==goog.LOCALE.substring(4,8).toLowerCase()||\"arab\"==goog.LOCALE.substring(4,8).toLowerCase()||\"hebr\"==goog.LOCALE.substring(4,8).toLowerCase()||\"nkoo\"==goog.LOCALE.substring(4,8).toLowerCase()||\"rohg\"==goog.LOCALE.substring(4,8).toLowerCase()||\"thaa\"==goog.LOCALE.substring(4,8).toLowerCase());\ngoog.i18n.bidi.Format={LRE:\"\\u202a\",RLE:\"\\u202b\",PDF:\"\\u202c\",LRM:\"\\u200e\",RLM:\"\\u200f\"};goog.i18n.bidi.Dir={LTR:1,RTL:-1,NEUTRAL:0};goog.i18n.bidi.RIGHT=\"right\";goog.i18n.bidi.LEFT=\"left\";goog.i18n.bidi.I18N_RIGHT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.LEFT:goog.i18n.bidi.RIGHT;goog.i18n.bidi.I18N_LEFT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT;\ngoog.i18n.bidi.toDir=function(a,b){return\"number\"==typeof a?0<a?goog.i18n.bidi.Dir.LTR:0>a?goog.i18n.bidi.Dir.RTL:b?null:goog.i18n.bidi.Dir.NEUTRAL:null==a?null:a?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR};goog.i18n.bidi.ltrChars_=\"A-Za-z\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u02b8\\u0300-\\u0590\\u0900-\\u1fff\\u200e\\u2c00-\\ud801\\ud804-\\ud839\\ud83c-\\udbff\\uf900-\\ufb1c\\ufe00-\\ufe6f\\ufefd-\\uffff\";goog.i18n.bidi.rtlChars_=\"\\u0591-\\u06ef\\u06fa-\\u08ff\\u200f\\ud802-\\ud803\\ud83a-\\ud83b\\ufb1d-\\ufdff\\ufe70-\\ufefc\";\ngoog.i18n.bidi.htmlSkipReg_=/<[^>]*>|&[^;]+;/g;goog.i18n.bidi.stripHtmlIfNeeded_=function(a,b){return b?a.replace(goog.i18n.bidi.htmlSkipReg_,\"\"):a};goog.i18n.bidi.rtlCharReg_=new RegExp(\"[\"+goog.i18n.bidi.rtlChars_+\"]\");goog.i18n.bidi.ltrCharReg_=new RegExp(\"[\"+goog.i18n.bidi.ltrChars_+\"]\");goog.i18n.bidi.hasAnyRtl=function(a,b){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl;\ngoog.i18n.bidi.hasAnyLtr=function(a,b){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.ltrRe_=new RegExp(\"^[\"+goog.i18n.bidi.ltrChars_+\"]\");goog.i18n.bidi.rtlRe_=new RegExp(\"^[\"+goog.i18n.bidi.rtlChars_+\"]\");goog.i18n.bidi.isRtlChar=function(a){return goog.i18n.bidi.rtlRe_.test(a)};goog.i18n.bidi.isLtrChar=function(a){return goog.i18n.bidi.ltrRe_.test(a)};goog.i18n.bidi.isNeutralChar=function(a){return!goog.i18n.bidi.isLtrChar(a)&&!goog.i18n.bidi.isRtlChar(a)};\ngoog.i18n.bidi.ltrDirCheckRe_=new RegExp(\"^[^\"+goog.i18n.bidi.rtlChars_+\"]*[\"+goog.i18n.bidi.ltrChars_+\"]\");goog.i18n.bidi.rtlDirCheckRe_=new RegExp(\"^[^\"+goog.i18n.bidi.ltrChars_+\"]*[\"+goog.i18n.bidi.rtlChars_+\"]\");goog.i18n.bidi.startsWithRtl=function(a,b){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl;\ngoog.i18n.bidi.startsWithLtr=function(a,b){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr;goog.i18n.bidi.isRequiredLtrRe_=/^http:\\/\\/.*/;goog.i18n.bidi.isNeutralText=function(a,b){a=goog.i18n.bidi.stripHtmlIfNeeded_(a,b);return goog.i18n.bidi.isRequiredLtrRe_.test(a)||!goog.i18n.bidi.hasAnyLtr(a)&&!goog.i18n.bidi.hasAnyRtl(a)};\ngoog.i18n.bidi.ltrExitDirCheckRe_=new RegExp(\"[\"+goog.i18n.bidi.ltrChars_+\"][^\"+goog.i18n.bidi.rtlChars_+\"]*$\");goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp(\"[\"+goog.i18n.bidi.rtlChars_+\"][^\"+goog.i18n.bidi.ltrChars_+\"]*$\");goog.i18n.bidi.endsWithLtr=function(a,b){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr;\ngoog.i18n.bidi.endsWithRtl=function(a,b){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl;goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;goog.i18n.bidi.isRtlLanguage=function(a){return goog.i18n.bidi.rtlLocalesRe_.test(a)};goog.i18n.bidi.bracketGuardTextRe_=/(\\(.*?\\)+)|(\\[.*?\\]+)|(\\{.*?\\}+)|(<.*?>+)/g;\ngoog.i18n.bidi.guardBracketInText=function(a,b){b=(void 0===b?goog.i18n.bidi.hasAnyRtl(a):b)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM;return a.replace(goog.i18n.bidi.bracketGuardTextRe_,b+\"$&\"+b)};goog.i18n.bidi.enforceRtlInHtml=function(a){return\"<\"==a.charAt(0)?a.replace(/<\\w+/,\"$& dir=rtl\"):\"\\n<span dir=rtl>\"+a+\"</span>\"};goog.i18n.bidi.enforceRtlInText=function(a){return goog.i18n.bidi.Format.RLE+a+goog.i18n.bidi.Format.PDF};\ngoog.i18n.bidi.enforceLtrInHtml=function(a){return\"<\"==a.charAt(0)?a.replace(/<\\w+/,\"$& dir=ltr\"):\"\\n<span dir=ltr>\"+a+\"</span>\"};goog.i18n.bidi.enforceLtrInText=function(a){return goog.i18n.bidi.Format.LRE+a+goog.i18n.bidi.Format.PDF};goog.i18n.bidi.dimensionsRe_=/:\\s*([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)/g;goog.i18n.bidi.leftRe_=/left/gi;goog.i18n.bidi.rightRe_=/right/gi;goog.i18n.bidi.tempRe_=/%%%%/g;\ngoog.i18n.bidi.mirrorCSS=function(a){return a.replace(goog.i18n.bidi.dimensionsRe_,\":$1 $4 $3 $2\").replace(goog.i18n.bidi.leftRe_,\"%%%%\").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)};goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\\u0591-\\u05f2])\"/g;goog.i18n.bidi.singleQuoteSubstituteRe_=/([\\u0591-\\u05f2])'/g;\ngoog.i18n.bidi.normalizeHebrewQuote=function(a){return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,\"$1\\u05f4\").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,\"$1\\u05f3\")};goog.i18n.bidi.wordSeparatorRe_=/\\s+/;goog.i18n.bidi.hasNumeralsRe_=/[\\d\\u06f0-\\u06f9]/;goog.i18n.bidi.rtlDetectionThreshold_=.4;\ngoog.i18n.bidi.estimateDirection=function(a,b){var c=0,d=0,e=!1;a=goog.i18n.bidi.stripHtmlIfNeeded_(a,b).split(goog.i18n.bidi.wordSeparatorRe_);for(b=0;b<a.length;b++){var f=a[b];goog.i18n.bidi.startsWithRtl(f)?(c++,d++):goog.i18n.bidi.isRequiredLtrRe_.test(f)?e=!0:goog.i18n.bidi.hasAnyLtr(f)?d++:goog.i18n.bidi.hasNumeralsRe_.test(f)&&(e=!0)}return 0==d?e?goog.i18n.bidi.Dir.LTR:goog.i18n.bidi.Dir.NEUTRAL:c/d>goog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR};\ngoog.i18n.bidi.detectRtlDirectionality=function(a,b){return goog.i18n.bidi.estimateDirection(a,b)==goog.i18n.bidi.Dir.RTL};goog.i18n.bidi.setElementDirAndAlign=function(a,b){a&&(b=goog.i18n.bidi.toDir(b))&&(a.style.textAlign=b==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,a.dir=b==goog.i18n.bidi.Dir.RTL?\"rtl\":\"ltr\")};\ngoog.i18n.bidi.setElementDirByTextDirectionality=function(a,b){switch(goog.i18n.bidi.estimateDirection(b)){case goog.i18n.bidi.Dir.LTR:a.dir=\"ltr\";break;case goog.i18n.bidi.Dir.RTL:a.dir=\"rtl\";break;default:a.removeAttribute(\"dir\")}};goog.i18n.bidi.DirectionalString=function(){};goog.html.TrustedResourceUrl=function(){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=\"\";this.trustedURL_=null;this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};\ngoog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR};\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||\"\";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_(\"?\",c[2]||\"\",a)+goog.html.TrustedResourceUrl.stringifyParams_(\"#\",d,b))};\ngoog.DEBUG&&(goog.html.TrustedResourceUrl.prototype.toString=function(){return\"TrustedResourceUrl{\"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+\"}\"});goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl&&a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail(\"expected object of type TrustedResourceUrl, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:TrustedResourceUrl\"};\ngoog.html.TrustedResourceUrl.unwrapTrustedURL=function(a){return a.trustedURL_?a.trustedURL_:goog.html.TrustedResourceUrl.unwrap(a)};\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error(\"Invalid TrustedResourceUrl format: \"+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(a,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error('Found marker, \"'+e+'\", in format string, \"'+c+'\", but no valid label mapping found in args: '+JSON.stringify(b));a=b[e];return a instanceof goog.string.Const?goog.string.Const.unwrap(a):\nencodeURIComponent(String(a))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=/^((https:)?\\/\\/[0-9a-z.:[\\]-]+\\/|\\/[^/\\\\]|[^:/\\\\%]+\\/|[^:/\\\\%]*[?#]|about:blank#)/i;goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/;\ngoog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){var b=new goog.html.TrustedResourceUrl;b.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(a):a;goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY&&(b.trustedURL_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(a));return b};\ngoog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if(goog.isString(c))return c?a+encodeURIComponent(c):\"\";for(var d in c){var e=c[d];e=goog.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?\"&\":\"\")+encodeURIComponent(d)+\"=\"+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){var c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.substr(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};\ngoog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\\s\\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};\ngoog.string.internal.newLineToBr=function(a,b){return a.replace(/(\\r\\n|\\r|\\n)/g,b?\"<br />\":\"<br>\")};\ngoog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,\"&amp;\").replace(goog.string.internal.LT_RE_,\"&lt;\").replace(goog.string.internal.GT_RE_,\"&gt;\").replace(goog.string.internal.QUOT_RE_,\"&quot;\").replace(goog.string.internal.SINGLE_QUOTE_RE_,\"&#39;\").replace(goog.string.internal.NULL_RE_,\"&#0;\");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf(\"&\")&&(a=a.replace(goog.string.internal.AMP_RE_,\"&amp;\"));-1!=a.indexOf(\"<\")&&(a=a.replace(goog.string.internal.LT_RE_,\n\"&lt;\"));-1!=a.indexOf(\">\")&&(a=a.replace(goog.string.internal.GT_RE_,\"&gt;\"));-1!=a.indexOf('\"')&&(a=a.replace(goog.string.internal.QUOT_RE_,\"&quot;\"));-1!=a.indexOf(\"'\")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,\"&#39;\"));-1!=a.indexOf(\"\\x00\")&&(a=a.replace(goog.string.internal.NULL_RE_,\"&#0;\"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/\"/g;goog.string.internal.SINGLE_QUOTE_RE_=/'/g;\ngoog.string.internal.NULL_RE_=/\\x00/g;goog.string.internal.ALL_RE_=/[\\x00&<>\"']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g,\" &#160;\"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};\ngoog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(\".\");b=goog.string.internal.trim(String(b)).split(\".\");for(var d=Math.max(a.length,b.length),e=0;0==c&&e<d;e++){var f=a[e]||\"\",g=b[e]||\"\";do{f=/(\\d*)(\\D*)(.*)/.exec(f)||[\"\",\"\",\"\",\"\"];g=/(\\d*)(\\D*)(.*)/.exec(g)||[\"\",\"\",\"\",\"\"];if(0==f[0].length&&0==g[0].length)break;c=0==f[1].length?0:parseInt(f[1],10);var h=0==g[1].length?0:parseInt(g[1],10);c=goog.string.internal.compareElements_(c,h)||goog.string.internal.compareElements_(0==\nf[2].length,0==g[2].length)||goog.string.internal.compareElements_(f[2],g[2]);f=f[3];g=g[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=function(){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=\"\";this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeUrl.INNOCUOUS_STRING=\"about:invalid#zClosurez\";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};\ngoog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR};goog.DEBUG&&(goog.html.SafeUrl.prototype.toString=function(){return\"SafeUrl{\"+this.privateDoNotAccessOrElseSafeUrlWrappedValue_+\"}\"});goog.html.SafeUrl.unwrap=function(a){return goog.html.SafeUrl.unwrapTrustedURL(a).toString()};\ngoog.html.SafeUrl.unwrapTrustedURL=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl&&a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail(\"expected object of type SafeUrl, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeUrl\"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\ngoog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:audio\\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-wav|wav|webm)|image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\\/csv|video\\/(?:mpeg|mp4|ogg|webm|quicktime))(?:;\\w+=(?:\\w+|\"[\\w;=]+\"))*$/i;goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};goog.html.SafeUrl.fromBlob=function(a){a=goog.html.SAFE_MIME_TYPE_PATTERN_.test(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.DATA_URL_PATTERN_=/^data:([^,]*);base64,[a-z0-9+\\/]+=*$/i;goog.html.SafeUrl.fromDataUrl=function(a){a=a.replace(/(%0A|%0D)/g,\"\");var b=a.match(goog.html.DATA_URL_PATTERN_);b=b&&goog.html.SAFE_MIME_TYPE_PATTERN_.test(b[1]);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b?a:goog.html.SafeUrl.INNOCUOUS_STRING)};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"tel:\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SIP_URL_PATTERN_=/^sip[s]?:[+a-z0-9_.!$%&'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$/i;goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"fb-messenger://share\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"whatsapp://send\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"sms:\")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf(\"#\");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"ssh://\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,a,b)};\ngoog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(a){return goog.string.Const.unwrap(a)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};\ngoog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.sanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a=\"object\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);goog.html.SAFE_URL_PATTERN_.test(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a=\"object\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),\"%s does not match the safe URL pattern\",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){var b=new goog.html.SafeUrl;b.privateDoNotAccessOrElseSafeUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(a):a;return b};goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\"about:blank\");goog.html.SafeStyle=function(){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=\"\";this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeStyle.prototype.implementsGoogStringTypedString=!0;goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.SafeStyle.fromConstant=function(a){a=goog.string.Const.unwrap(a);if(0===a.length)return goog.html.SafeStyle.EMPTY;goog.asserts.assert(goog.string.internal.endsWith(a,\";\"),\"Last character of style string is not ';': \"+a);goog.asserts.assert(goog.string.internal.contains(a,\":\"),\"Style string must contain at least one ':', to specify a \\\"name: value\\\" pair: \"+a);return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeStyle.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_};goog.DEBUG&&(goog.html.SafeStyle.prototype.toString=function(){return\"SafeStyle{\"+this.privateDoNotAccessOrElseSafeStyleWrappedValue_+\"}\"});\ngoog.html.SafeStyle.unwrap=function(a){if(a instanceof goog.html.SafeStyle&&a.constructor===goog.html.SafeStyle&&a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;goog.asserts.fail(\"expected object of type SafeStyle, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeStyle\"};goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(a)};\ngoog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=a;return this};goog.html.SafeStyle.EMPTY=goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(\"\");goog.html.SafeStyle.INNOCUOUS_STRING=\"zClosurez\";\ngoog.html.SafeStyle.create=function(a){var b=\"\",c;for(c in a){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(\"Name allows only [-_a-zA-Z0-9], got: \"+c);var d=a[c];null!=d&&(d=goog.isArray(d)?goog.array.map(d,goog.html.SafeStyle.sanitizePropertyValue_).join(\" \"):goog.html.SafeStyle.sanitizePropertyValue_(d),b+=c+\":\"+d+\";\")}return b?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):goog.html.SafeStyle.EMPTY};\ngoog.html.SafeStyle.sanitizePropertyValue_=function(a){if(a instanceof goog.html.SafeUrl)return'url(\"'+goog.html.SafeUrl.unwrap(a).replace(/</g,\"%3c\").replace(/[\\\\\"]/g,\"\\\\$&\")+'\")';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):goog.html.SafeStyle.sanitizePropertyValueString_(String(a));if(/[{;}]/.test(a))throw new goog.asserts.AssertionError(\"Value does not allow [{;}], got: %s.\",[a]);return a};\ngoog.html.SafeStyle.sanitizePropertyValueString_=function(a){var b=a.replace(goog.html.SafeStyle.FUNCTIONS_RE_,\"$1\").replace(goog.html.SafeStyle.FUNCTIONS_RE_,\"$1\").replace(goog.html.SafeStyle.URL_RE_,\"url\");if(goog.html.SafeStyle.VALUE_RE_.test(b)){if(goog.html.SafeStyle.COMMENT_RE_.test(a))return goog.asserts.fail(\"String value disallows comments, got: \"+a),goog.html.SafeStyle.INNOCUOUS_STRING;if(!goog.html.SafeStyle.hasBalancedQuotes_(a))return goog.asserts.fail(\"String value requires balanced quotes, got: \"+\na),goog.html.SafeStyle.INNOCUOUS_STRING;if(!goog.html.SafeStyle.hasBalancedSquareBrackets_(a))return goog.asserts.fail(\"String value requires balanced square brackets and one identifier per pair of brackets, got: \"+a),goog.html.SafeStyle.INNOCUOUS_STRING}else return goog.asserts.fail(\"String value allows only \"+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+\" and simple functions, got: \"+a),goog.html.SafeStyle.INNOCUOUS_STRING;return goog.html.SafeStyle.sanitizeUrl_(a)};\ngoog.html.SafeStyle.hasBalancedQuotes_=function(a){for(var b=!0,c=!0,d=0;d<a.length;d++){var e=a.charAt(d);\"'\"==e&&c?b=!b:'\"'==e&&b&&(c=!c)}return b&&c};goog.html.SafeStyle.hasBalancedSquareBrackets_=function(a){for(var b=!0,c=/^[-_a-zA-Z0-9]$/,d=0;d<a.length;d++){var e=a.charAt(d);if(\"]\"==e){if(b)return!1;b=!0}else if(\"[\"==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b};goog.html.SafeStyle.VALUE_ALLOWED_CHARS_=\"[-,.\\\"'%_!# a-zA-Z0-9\\\\[\\\\]]\";\ngoog.html.SafeStyle.VALUE_RE_=new RegExp(\"^\"+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+\"+$\");goog.html.SafeStyle.URL_RE_=/\\b(url\\([ \\t\\n]*)('[ -&(-\\[\\]-~]*'|\"[ !#-\\[\\]-~]*\"|[!#-&*-\\[\\]-~]*)([ \\t\\n]*\\))/g;goog.html.SafeStyle.FUNCTIONS_RE_=/\\b(hsl|hsla|rgb|rgba|matrix|calc|minmax|fit-content|repeat|(rotate|scale|translate)(X|Y|Z|3d)?)\\([-+*/0-9a-z.%\\[\\], ]+\\)/g;goog.html.SafeStyle.COMMENT_RE_=/\\/\\*/;\ngoog.html.SafeStyle.sanitizeUrl_=function(a){return a.replace(goog.html.SafeStyle.URL_RE_,function(a,c,d,e){var b=\"\";d=d.replace(/^(['\"])(.*)\\1$/,function(a,c,d){b=c;return d});a=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+b+a+b+e})};goog.html.SafeStyle.concat=function(a){var b=\"\",c=function(a){goog.isArray(a)?goog.array.forEach(a,c):b+=goog.html.SafeStyle.unwrap(a)};goog.array.forEach(arguments,c);return b?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):goog.html.SafeStyle.EMPTY};goog.html.SafeStyleSheet=function(){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=\"\";this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString=!0;goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.SafeStyleSheet.createRule=function(a,b){if(goog.string.internal.contains(a,\"<\"))throw Error(\"Selector does not allow '<', got: \"+a);var c=a.replace(/('|\")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,\"\");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(c))throw Error(\"Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: \"+a);if(!goog.html.SafeStyleSheet.hasBalancedBrackets_(c))throw Error(\"() and [] in selector must be balanced, got: \"+a);b instanceof goog.html.SafeStyle||(b=goog.html.SafeStyle.create(b));\na=a+\"{\"+goog.html.SafeStyle.unwrap(b).replace(/</g,\"\\\\3C \")+\"}\";return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeStyleSheet.hasBalancedBrackets_=function(a){for(var b={\"(\":\")\",\"[\":\"]\"},c=[],d=0;d<a.length;d++){var e=a[d];if(b[e])c.push(b[e]);else if(goog.object.contains(b,e)&&c.pop()!=e)return!1}return 0==c.length};\ngoog.html.SafeStyleSheet.concat=function(a){var b=\"\",c=function(a){goog.isArray(a)?goog.array.forEach(a,c):b+=goog.html.SafeStyleSheet.unwrap(a)};goog.array.forEach(arguments,c);return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.SafeStyleSheet.fromConstant=function(a){a=goog.string.Const.unwrap(a);if(0===a.length)return goog.html.SafeStyleSheet.EMPTY;goog.asserts.assert(!goog.string.internal.contains(a,\"<\"),\"Forbidden '<' character in style sheet string: \"+a);return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeStyleSheet.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_};\ngoog.DEBUG&&(goog.html.SafeStyleSheet.prototype.toString=function(){return\"SafeStyleSheet{\"+this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_+\"}\"});\ngoog.html.SafeStyleSheet.unwrap=function(a){if(a instanceof goog.html.SafeStyleSheet&&a.constructor===goog.html.SafeStyleSheet&&a.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;goog.asserts.fail(\"expected object of type SafeStyleSheet, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeStyleSheet\"};\ngoog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(a)};goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=a;return this};goog.html.SafeStyleSheet.EMPTY=goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(\"\");goog.labs={};goog.labs.userAgent={};goog.labs.userAgent.util={};goog.labs.userAgent.util.getNativeUserAgentString_=function(){var a=goog.labs.userAgent.util.getNavigator_();return a&&(a=a.userAgent)?a:\"\"};goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator};goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_();goog.labs.userAgent.util.setUserAgent=function(a){goog.labs.userAgent.util.userAgent_=a||goog.labs.userAgent.util.getNativeUserAgentString_()};\ngoog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_};goog.labs.userAgent.util.matchUserAgent=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.contains(b,a)};goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.caseInsensitiveContains(b,a)};\ngoog.labs.userAgent.util.extractVersionTuples=function(a){for(var b=/(\\w[\\w ]+)\\/([^\\s]+)\\s*(?:\\((.*?)\\))?/g,c=[],d;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c};goog.labs.userAgent.browser={};goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Opera\")};goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Trident\")||goog.labs.userAgent.util.matchUserAgent(\"MSIE\")};goog.labs.userAgent.browser.matchEdgeHtml_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Edge\")};goog.labs.userAgent.browser.matchEdgeChromium_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Edg/\")};\ngoog.labs.userAgent.browser.matchOperaChromium_=function(){return goog.labs.userAgent.util.matchUserAgent(\"OPR\")};goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Firefox\")||goog.labs.userAgent.util.matchUserAgent(\"FxiOS\")};\ngoog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Safari\")&&!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdgeHtml_()||goog.labs.userAgent.browser.matchEdgeChromium_()||goog.labs.userAgent.browser.matchOperaChromium_()||goog.labs.userAgent.browser.matchFirefox_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent(\"Android\"))};\ngoog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Coast\")};goog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent(\"iPad\")||goog.labs.userAgent.util.matchUserAgent(\"iPhone\"))&&!goog.labs.userAgent.browser.matchSafari_()&&!goog.labs.userAgent.browser.matchChrome_()&&!goog.labs.userAgent.browser.matchCoast_()&&!goog.labs.userAgent.browser.matchFirefox_()&&goog.labs.userAgent.util.matchUserAgent(\"AppleWebKit\")};\ngoog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent(\"Chrome\")||goog.labs.userAgent.util.matchUserAgent(\"CriOS\"))&&!goog.labs.userAgent.browser.matchEdgeHtml_()};goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Android\")&&!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())};\ngoog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_;goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_;goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdgeHtml_;goog.labs.userAgent.browser.isEdgeChromium=goog.labs.userAgent.browser.matchEdgeChromium_;goog.labs.userAgent.browser.isOperaChromium=goog.labs.userAgent.browser.matchOperaChromium_;goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_;\ngoog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_;goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_;goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_;goog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_;goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_;goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent(\"Silk\")};\ngoog.labs.userAgent.browser.getVersion=function(){function a(a){a=goog.array.find(a,d);return c[a]||\"\"}var b=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(b);b=goog.labs.userAgent.util.extractVersionTuples(b);var c={};goog.array.forEach(b,function(a){c[a[0]]=a[1]});var d=goog.partial(goog.object.containsKey,c);return goog.labs.userAgent.browser.isOpera()?a([\"Version\",\"Opera\"]):goog.labs.userAgent.browser.isEdge()?a([\"Edge\"]):\ngoog.labs.userAgent.browser.isEdgeChromium()?a([\"Edg\"]):goog.labs.userAgent.browser.isChrome()?a([\"Chrome\",\"CriOS\"]):(b=b[2])&&b[1]||\"\"};goog.labs.userAgent.browser.isVersionOrHigher=function(a){return 0<=goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(),a)};\ngoog.labs.userAgent.browser.getIEVersion_=function(a){var b=/rv: *([\\d\\.]*)/.exec(a);if(b&&b[1])return b[1];b=\"\";var c=/MSIE +([\\d\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\/(\\d.\\d)/.exec(a),\"7.0\"==c[1])if(a&&a[1])switch(a[1]){case \"4.0\":b=\"8.0\";break;case \"5.0\":b=\"9.0\";break;case \"6.0\":b=\"10.0\";break;case \"7.0\":b=\"11.0\"}else b=\"7.0\";else b=c[1];return b};goog.html.SafeHtml=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=\"\";this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;this.dir_=null};goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.SafeHtml.prototype.getDirection=function(){return this.dir_};goog.html.SafeHtml.prototype.implementsGoogStringTypedString=!0;goog.html.SafeHtml.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()};\ngoog.DEBUG&&(goog.html.SafeHtml.prototype.toString=function(){return\"SafeHtml{\"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+\"}\"});goog.html.SafeHtml.unwrap=function(a){return goog.html.SafeHtml.unwrapTrustedHTML(a).toString()};\ngoog.html.SafeHtml.unwrapTrustedHTML=function(a){if(a instanceof goog.html.SafeHtml&&a.constructor===goog.html.SafeHtml&&a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(\"expected object of type SafeHtml, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeHtml\"};\ngoog.html.SafeHtml.htmlEscape=function(a){if(a instanceof goog.html.SafeHtml)return a;var b=\"object\"==typeof a,c=null;b&&a.implementsGoogI18nBidiDirectionalString&&(c=a.getDirection());a=b&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a),c)};\ngoog.html.SafeHtml.htmlEscapePreservingNewlines=function(a){if(a instanceof goog.html.SafeHtml)return a;a=goog.html.SafeHtml.htmlEscape(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(a)),a.getDirection())};\ngoog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces=function(a){if(a instanceof goog.html.SafeHtml)return a;a=goog.html.SafeHtml.htmlEscape(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(a)),a.getDirection())};goog.html.SafeHtml.from=goog.html.SafeHtml.htmlEscape;goog.html.SafeHtml.VALID_NAMES_IN_TAG_=/^[a-zA-Z0-9-]+$/;\ngoog.html.SafeHtml.URL_ATTRIBUTES_={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0};goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_={APPLET:!0,BASE:!0,EMBED:!0,IFRAME:!0,LINK:!0,MATH:!0,META:!0,OBJECT:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};goog.html.SafeHtml.create=function(a,b,c){goog.html.SafeHtml.verifyTagName(String(a));return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)};\ngoog.html.SafeHtml.verifyTagName=function(a){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a))throw Error(\"Invalid tag name <\"+a+\">.\");if(a.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error(\"Tag name <\"+a+\"> is not allowed for SafeHtml.\");};\ngoog.html.SafeHtml.createIframe=function(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);var e={};e.src=a||null;e.srcdoc=b&&goog.html.SafeHtml.unwrap(b);a=goog.html.SafeHtml.combineAttributes(e,{sandbox:\"\"},c);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"iframe\",a,d)};\ngoog.html.SafeHtml.createSandboxIframe=function(a,b,c,d){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error(\"The browser does not support sandboxed iframes.\");var e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox=\"\";a=goog.html.SafeHtml.combineAttributes(e,{},c);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"iframe\",a,d)};\ngoog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&&\"sandbox\"in goog.global.HTMLIFrameElement.prototype};goog.html.SafeHtml.createScriptSrc=function(a,b){goog.html.TrustedResourceUrl.unwrap(a);a=goog.html.SafeHtml.combineAttributes({src:a},{},b);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"script\",a)};\ngoog.html.SafeHtml.createScript=function(a,b){for(var c in b){var d=c.toLowerCase();if(\"language\"==d||\"src\"==d||\"text\"==d||\"type\"==d)throw Error('Cannot set \"'+d+'\" attribute');}c=\"\";a=goog.array.concat(a);for(d=0;d<a.length;d++)c+=goog.html.SafeScript.unwrap(a[d]);a=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c,goog.i18n.bidi.Dir.NEUTRAL);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"script\",b,a)};\ngoog.html.SafeHtml.createStyle=function(a,b){b=goog.html.SafeHtml.combineAttributes({type:\"text/css\"},{},b);var c=\"\";a=goog.array.concat(a);for(var d=0;d<a.length;d++)c+=goog.html.SafeStyleSheet.unwrap(a[d]);a=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c,goog.i18n.bidi.Dir.NEUTRAL);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"style\",b,a)};\ngoog.html.SafeHtml.createMetaRefresh=function(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(goog.labs.userAgent.browser.isIE()||goog.labs.userAgent.browser.isEdge())&&goog.string.internal.contains(a,\";\")&&(a=\"'\"+a.replace(/'/g,\"%27\")+\"'\");return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"meta\",{\"http-equiv\":\"refresh\",content:(b||0)+\"; url=\"+a})};\ngoog.html.SafeHtml.getAttrNameAndValue_=function(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if(\"style\"==b.toLowerCase())c=goog.html.SafeHtml.getStyleValue_(c);else{if(/^on/i.test(b))throw Error('Attribute \"'+b+'\" requires goog.string.Const value, \"'+c+'\" given.');if(b.toLowerCase()in goog.html.SafeHtml.URL_ATTRIBUTES_)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);\nelse if(goog.isString(c))c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error('Attribute \"'+b+'\" on tag \"'+a+'\" requires goog.html.SafeUrl, goog.string.Const, or string, value \"'+c+'\" given.');}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert(goog.isString(c)||goog.isNumber(c),\"String or number value expected, got \"+typeof c+\" with value: \"+c);return b+'=\"'+goog.string.internal.htmlEscape(String(c))+'\"'};\ngoog.html.SafeHtml.getStyleValue_=function(a){if(!goog.isObject(a))throw Error('The \"style\" attribute requires goog.html.SafeStyle or map of style properties, '+typeof a+\" given: \"+a);a instanceof goog.html.SafeStyle||(a=goog.html.SafeStyle.create(a));return goog.html.SafeStyle.unwrap(a)};goog.html.SafeHtml.createWithDir=function(a,b,c,d){b=goog.html.SafeHtml.create(b,c,d);b.dir_=a;return b};\ngoog.html.SafeHtml.join=function(a,b){a=goog.html.SafeHtml.htmlEscape(a);var c=a.getDirection(),d=[],e=function(a){goog.isArray(a)?goog.array.forEach(a,e):(a=goog.html.SafeHtml.htmlEscape(a),d.push(goog.html.SafeHtml.unwrap(a)),a=a.getDirection(),c==goog.i18n.bidi.Dir.NEUTRAL?c=a:a!=goog.i18n.bidi.Dir.NEUTRAL&&c!=a&&(c=null))};goog.array.forEach(b,e);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(d.join(goog.html.SafeHtml.unwrap(a)),c)};\ngoog.html.SafeHtml.concat=function(a){return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY,Array.prototype.slice.call(arguments))};goog.html.SafeHtml.concatWithDir=function(a,b){var c=goog.html.SafeHtml.concat(goog.array.slice(arguments,1));c.dir_=a;return c};goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse=function(a,b){return(new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(a,b)};\ngoog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(a):a;this.dir_=b;return this};\ngoog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse=function(a,b,c){var d=null;var e=\"<\"+a+goog.html.SafeHtml.stringifyAttributes(a,b);goog.isDefAndNotNull(c)?goog.isArray(c)||(c=[c]):c=[];goog.dom.tags.isVoidTag(a.toLowerCase())?(goog.asserts.assert(!c.length,\"Void tag <\"+a+\"> does not allow content.\"),e+=\">\"):(d=goog.html.SafeHtml.concat(c),e+=\">\"+goog.html.SafeHtml.unwrap(d)+\"</\"+a+\">\",d=d.getDirection());(a=b&&b.dir)&&(d=/^(ltr|rtl|auto)$/i.test(a)?goog.i18n.bidi.Dir.NEUTRAL:\nnull);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e,d)};goog.html.SafeHtml.stringifyAttributes=function(a,b){var c=\"\";if(b)for(var d in b){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(d))throw Error('Invalid attribute name \"'+d+'\".');var e=b[d];goog.isDefAndNotNull(e)&&(c+=\" \"+goog.html.SafeHtml.getAttrNameAndValue_(a,d,e))}return c};\ngoog.html.SafeHtml.combineAttributes=function(a,b,c){var d={},e;for(e in a)goog.asserts.assert(e.toLowerCase()==e,\"Must be lower case\"),d[e]=a[e];for(e in b)goog.asserts.assert(e.toLowerCase()==e,\"Must be lower case\"),d[e]=b[e];for(e in c){var f=e.toLowerCase();if(f in a)throw Error('Cannot override \"'+f+'\" attribute, got \"'+e+'\" with value \"'+c[e]+'\"');f in b&&delete d[f];d[e]=c[e]}return d};\ngoog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\"<!DOCTYPE html>\",goog.i18n.bidi.Dir.NEUTRAL);goog.html.SafeHtml.EMPTY=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\"\",goog.i18n.bidi.Dir.NEUTRAL);goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\"<br>\",goog.i18n.bidi.Dir.NEUTRAL);goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b,c){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b,c||null)};\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:\"afterbegin\",AFTEREND:\"afterend\",BEFOREBEGIN:\"beforebegin\",BEFOREEND:\"beforeend\"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,goog.html.SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\ngoog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&\"undefined\"===typeof document)return!1;var a=document.createElement(\"div\"),b=document.createElement(\"div\");b.appendChild(document.createElement(\"div\"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY);return!b.parentElement});\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error(\"goog.dom.safe.setInnerHtml cannot be used to set content of \"+a.tagName+\".\");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=goog.html.SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrapTrustedURL(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrapTrustedURL(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=goog.html.SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(goog.html.SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrapTrustedURL(b)};goog.dom.safe.setImageSrc=function(a,b){goog.dom.asserts.assertIsHTMLImageElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:image\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrapTrustedURL(b)};goog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(b)};goog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=goog.html.SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,\"stylesheet\")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because \"rel\" contains \"stylesheet\"'),a.href=goog.html.TrustedResourceUrl.unwrapTrustedURL(b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrapTrustedURL(b):b instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrapTrustedURL(b):\ngoog.html.SafeUrl.unwrapTrustedURL(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);(b=goog.getScriptNonce())&&a.setAttribute(\"nonce\",b)};\ngoog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);a.text=goog.html.SafeScript.unwrapTrustedScript(b);(b=goog.getScriptNonce())&&a.setAttribute(\"nonce\",b)};goog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrapTrustedURL(b))};goog.dom.safe.replaceLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrapTrustedURL(b))};\ngoog.dom.safe.openInWindow=function(a,b,c,d,e){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);return(b||goog.global).open(goog.html.SafeUrl.unwrapTrustedURL(a),c?goog.string.Const.unwrap(c):\"\",d,e)};goog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,\"text/html\")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(b),c)};\ngoog.dom.safe.createImageFromBlob=function(a){if(!/^image\\/.*/g.test(a.type))throw Error(\"goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.\");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};goog.dom.safe.setImageSrc(a,goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from(\"Image blob URL.\"),b));return a};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:\"\\u00a0\"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;\ngoog.string.subs=function(a,b){for(var c=a.split(\"%s\"),d=\"\",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join(\"%s\")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\s\\xa0]+/g,\" \").replace(/^\\s+|\\s+$/g,\"\")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;goog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};\ngoog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\t\\n\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return\" \"==a};goog.string.isUnicodeChar=function(a){return 1==a.length&&\" \"<=a&&\"~\">=a||\"\\u0080\"<=a&&\"\\ufffd\">=a};\ngoog.string.stripNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)+/g,\" \")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)/g,\"\\n\")};goog.string.normalizeWhitespace=function(a){return a.replace(/\\xa0|\\s/g,\" \")};goog.string.normalizeSpaces=function(a){return a.replace(/\\xa0|[ \\t]+/g,\" \")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\t\\r\\n ]+/g,\" \").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,\"\")};goog.string.trim=goog.string.internal.trim;\ngoog.string.trimLeft=function(a){return a.replace(/^[\\s\\xa0]+/,\"\")};goog.string.trimRight=function(a){return a.replace(/[\\s\\xa0]+$/,\"\")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length),g=0;g<f;g++){c=d[g];var h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\D+/g)};\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\.\\d+|\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\+/g,\" \"))};goog.string.newLineToBr=goog.string.internal.newLineToBr;\ngoog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,\"&#101;\"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,\"&\")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&\"document\"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,\"&\")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){var c={\"&amp;\":\"&\",\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"'};var d=b?b.createElement(\"div\"):goog.global.document.createElement(\"div\");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var e=c[a];if(e)return e;\"#\"==b.charAt(0)&&(b=Number(\"0\"+b.substr(1)),isNaN(b)||(e=String.fromCharCode(b)));e||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from(\"Single HTML entity.\"),\na+\" \")),e=d.firstChild.nodeValue.slice(0,-1));return c[a]=e})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case \"amp\":return\"&\";case \"lt\":return\"<\";case \"gt\":return\">\";case \"quot\":return'\"';default:return\"#\"!=c.charAt(0)||(c=Number(\"0\"+c.substr(1)),isNaN(c))?a:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g,\" &#160;\"),b)};\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\n ]) /g,\"$1\"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+\"...\");c&&(a=goog.string.htmlEscape(a));return a};\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+\"...\"+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+\"...\"+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={\"\\x00\":\"\\\\0\",\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\\t\":\"\\\\t\",\"\\x0B\":\"\\\\x0B\",'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\",\"<\":\"\\\\u003C\"};goog.string.jsEscapeCache_={\"'\":\"\\\\'\"};\ngoog.string.quote=function(a){a=String(a);for(var b=['\"'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('\"');return b.join(\"\")};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join(\"\")};\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b=a.charCodeAt(0);if(31<b&&127>b)var c=a;else{if(256>b){if(c=\"\\\\x\",16>b||256<b)c+=\"0\"}else c=\"\\\\u\",4096>b&&(c+=\"0\");c+=b.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=c};goog.string.contains=goog.string.internal.contains;goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;\ngoog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0<=b&&b<a.length&&0<c&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){return a.replace(b,\"\")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),\"g\");return a.replace(b,\"\")};goog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),\"g\");return a.replace(b,c.replace(/\\$/g,\"$$$$\"))};\ngoog.string.regExpEscape=function(a){return String(a).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,\"\\\\$1\").replace(/\\x08/g,\"\\\\x08\")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(\".\");-1==c&&(c=a.length);return goog.string.repeat(\"0\",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?\"\":String(a)};\ngoog.string.buildString=function(a){return Array.prototype.join.call(arguments,\"\")};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};goog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;\ngoog.string.createUniqueString=function(){return\"goog_\"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){var b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\-([a-z])/g,function(a,c){return c.toUpperCase()})};\ngoog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,\"-$1\").toLowerCase()};goog.string.toTitleCase=function(a,b){b=goog.isString(b)?goog.string.regExpEscape(b):\"\\\\s\";return a.replace(new RegExp(\"(^\"+(b?\"|[\"+b+\"]+\":\"\")+\")([a-z])\",\"g\"),function(a,b,e){return b+e.toUpperCase()})};goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.substr(1)).toLowerCase()};\ngoog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return goog.isString(a)?/^\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};goog.string.lastComponent=function(a,b){if(b)\"string\"==typeof b&&(b=[b]);else return a;for(var c=-1,d=0;d<b.length;d++)if(\"\"!=b[d]){var e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\ngoog.string.editDistance=function(a,b){var c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.labs.userAgent.engine={};goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent(\"Presto\")};goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent(\"Trident\")||goog.labs.userAgent.util.matchUserAgent(\"MSIE\")};goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent(\"Edge\")};\ngoog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase(\"WebKit\")&&!goog.labs.userAgent.engine.isEdge()};goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent(\"Gecko\")&&!goog.labs.userAgent.engine.isWebKit()&&!goog.labs.userAgent.engine.isTrident()&&!goog.labs.userAgent.engine.isEdge()};\ngoog.labs.userAgent.engine.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent();if(a){a=goog.labs.userAgent.util.extractVersionTuples(a);var b=goog.labs.userAgent.engine.getEngineTuple_(a);if(b)return\"Gecko\"==b[0]?goog.labs.userAgent.engine.getVersionForKey_(a,\"Firefox\"):b[1];a=a[0];var c;if(a&&(c=a[2])&&(c=/Trident\\/([^\\s;]+)/.exec(c)))return c[1]}return\"\"};\ngoog.labs.userAgent.engine.getEngineTuple_=function(a){if(!goog.labs.userAgent.engine.isEdge())return a[1];for(var b=0;b<a.length;b++){var c=a[b];if(\"Edge\"==c[0])return c}};goog.labs.userAgent.engine.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(),a)};goog.labs.userAgent.engine.getVersionForKey_=function(a,b){return(a=goog.array.find(a,function(a){return b==a[0]}))&&a[1]||\"\"};goog.labs.userAgent.platform={};goog.labs.userAgent.platform.isAndroid=function(){return goog.labs.userAgent.util.matchUserAgent(\"Android\")};goog.labs.userAgent.platform.isIpod=function(){return goog.labs.userAgent.util.matchUserAgent(\"iPod\")};goog.labs.userAgent.platform.isIphone=function(){return goog.labs.userAgent.util.matchUserAgent(\"iPhone\")&&!goog.labs.userAgent.util.matchUserAgent(\"iPod\")&&!goog.labs.userAgent.util.matchUserAgent(\"iPad\")};goog.labs.userAgent.platform.isIpad=function(){return goog.labs.userAgent.util.matchUserAgent(\"iPad\")};\ngoog.labs.userAgent.platform.isIos=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpad()||goog.labs.userAgent.platform.isIpod()};goog.labs.userAgent.platform.isMacintosh=function(){return goog.labs.userAgent.util.matchUserAgent(\"Macintosh\")};goog.labs.userAgent.platform.isLinux=function(){return goog.labs.userAgent.util.matchUserAgent(\"Linux\")};goog.labs.userAgent.platform.isWindows=function(){return goog.labs.userAgent.util.matchUserAgent(\"Windows\")};\ngoog.labs.userAgent.platform.isChromeOS=function(){return goog.labs.userAgent.util.matchUserAgent(\"CrOS\")};goog.labs.userAgent.platform.isChromecast=function(){return goog.labs.userAgent.util.matchUserAgent(\"CrKey\")};goog.labs.userAgent.platform.isKaiOS=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase(\"KaiOS\")};goog.labs.userAgent.platform.isGo2Phone=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase(\"GAFP\")};\ngoog.labs.userAgent.platform.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent(),b=\"\";goog.labs.userAgent.platform.isWindows()?(b=/Windows (?:NT|Phone) ([0-9.]+)/,b=(a=b.exec(a))?a[1]:\"0.0\"):goog.labs.userAgent.platform.isIos()?(b=/(?:iPhone|iPod|iPad|CPU)\\s+OS\\s+(\\S+)/,b=(a=b.exec(a))&&a[1].replace(/_/g,\".\")):goog.labs.userAgent.platform.isMacintosh()?(b=/Mac OS X ([0-9_.]+)/,b=(a=b.exec(a))?a[1].replace(/_/g,\".\"):\"10\"):goog.labs.userAgent.platform.isKaiOS()?(b=/(?:KaiOS)\\/(\\S+)/i,\nb=(a=b.exec(a))&&a[1]):goog.labs.userAgent.platform.isAndroid()?(b=/Android\\s+([^\\);]+)(\\)|;)/,b=(a=b.exec(a))&&a[1]):goog.labs.userAgent.platform.isChromeOS()&&(b=/(?:CrOS\\s+(?:i686|x86_64)\\s+([0-9.]+))/,b=(a=b.exec(a))&&a[1]);return b||\"\"};goog.labs.userAgent.platform.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(),a)};goog.reflect={};goog.reflect.object=function(a,b){return b};goog.reflect.objectProperty=function(a,b){return a};goog.reflect.sinkValue=function(a){goog.reflect.sinkValue[\" \"](a);return a};goog.reflect.sinkValue[\" \"]=goog.nullFunction;goog.reflect.canAccessProperty=function(a,b){try{return goog.reflect.sinkValue(a[b]),!0}catch(c){}return!1};goog.reflect.cache=function(a,b,c,d){d=d?d(b):b;return Object.prototype.hasOwnProperty.call(a,d)?a[d]:a[d]=c(b)};goog.userAgent={};goog.userAgent.ASSUME_IE=!1;goog.userAgent.ASSUME_EDGE=!1;goog.userAgent.ASSUME_GECKO=!1;goog.userAgent.ASSUME_WEBKIT=!1;goog.userAgent.ASSUME_MOBILE_WEBKIT=!1;goog.userAgent.ASSUME_OPERA=!1;goog.userAgent.ASSUME_ANY_VERSION=!1;goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA;goog.userAgent.getUserAgentString=function(){return goog.labs.userAgent.util.getUserAgent()};\ngoog.userAgent.getNavigatorTyped=function(){return goog.global.navigator||null};goog.userAgent.getNavigator=function(){return goog.userAgent.getNavigatorTyped()};goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.labs.userAgent.browser.isOpera();goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.labs.userAgent.browser.isIE();goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.labs.userAgent.engine.isEdge();\ngoog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE;goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.labs.userAgent.engine.isGecko();goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.labs.userAgent.engine.isWebKit();goog.userAgent.isMobile_=function(){return goog.userAgent.WEBKIT&&goog.labs.userAgent.util.matchUserAgent(\"Mobile\")};\ngoog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.isMobile_();goog.userAgent.SAFARI=goog.userAgent.WEBKIT;goog.userAgent.determinePlatform_=function(){var a=goog.userAgent.getNavigatorTyped();return a&&a.platform||\"\"};goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_();goog.userAgent.ASSUME_MAC=!1;goog.userAgent.ASSUME_WINDOWS=!1;goog.userAgent.ASSUME_LINUX=!1;goog.userAgent.ASSUME_X11=!1;goog.userAgent.ASSUME_ANDROID=!1;goog.userAgent.ASSUME_IPHONE=!1;\ngoog.userAgent.ASSUME_IPAD=!1;goog.userAgent.ASSUME_IPOD=!1;goog.userAgent.ASSUME_KAIOS=!1;goog.userAgent.ASSUME_GO2PHONE=!1;goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11||goog.userAgent.ASSUME_ANDROID||goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD;goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.labs.userAgent.platform.isMacintosh();\ngoog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.labs.userAgent.platform.isWindows();goog.userAgent.isLegacyLinux_=function(){return goog.labs.userAgent.platform.isLinux()||goog.labs.userAgent.platform.isChromeOS()};goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.isLegacyLinux_();goog.userAgent.isX11_=function(){var a=goog.userAgent.getNavigatorTyped();return!!a&&goog.string.contains(a.appVersion||\"\",\"X11\")};\ngoog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.isX11_();goog.userAgent.ANDROID=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_ANDROID:goog.labs.userAgent.platform.isAndroid();goog.userAgent.IPHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE:goog.labs.userAgent.platform.isIphone();goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad();\ngoog.userAgent.IPOD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIpod();goog.userAgent.IOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIos();goog.userAgent.KAIOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_KAIOS:goog.labs.userAgent.platform.isKaiOS();goog.userAgent.GO2PHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_GO2PHONE:goog.labs.userAgent.platform.isGo2Phone();\ngoog.userAgent.determineVersion_=function(){var a=\"\",b=goog.userAgent.getVersionRegexResult_();b&&(a=b?b[1]:\"\");return goog.userAgent.IE&&(b=goog.userAgent.getDocumentMode_(),null!=b&&b>parseFloat(a))?String(b):a};\ngoog.userAgent.getVersionRegexResult_=function(){var a=goog.userAgent.getUserAgentString();if(goog.userAgent.GECKO)return/rv:([^\\);]+)(\\)|;)/.exec(a);if(goog.userAgent.EDGE)return/Edge\\/([\\d\\.]+)/.exec(a);if(goog.userAgent.IE)return/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(goog.userAgent.WEBKIT)return/WebKit\\/(\\S+)/.exec(a);if(goog.userAgent.OPERA)return/(?:Version)[ \\/]?(\\S+)/.exec(a)};goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};\ngoog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(a,b){return goog.string.compareVersions(a,b)};goog.userAgent.isVersionOrHigherCache_={};goog.userAgent.isVersionOrHigher=function(a){return goog.userAgent.ASSUME_ANY_VERSION||goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_,a,function(){return 0<=goog.string.compareVersions(goog.userAgent.VERSION,a)})};goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher;\ngoog.userAgent.isDocumentModeOrHigher=function(a){return Number(goog.userAgent.DOCUMENT_MODE)>=a};goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher;goog.userAgent.DOCUMENT_MODE=function(){if(goog.global.document&&goog.userAgent.IE)return goog.userAgent.getDocumentMode_()}();goog.userAgent.product={};goog.userAgent.product.ASSUME_FIREFOX=!1;goog.userAgent.product.ASSUME_IPHONE=!1;goog.userAgent.product.ASSUME_IPAD=!1;goog.userAgent.product.ASSUME_ANDROID=!1;goog.userAgent.product.ASSUME_CHROME=!1;goog.userAgent.product.ASSUME_SAFARI=!1;\ngoog.userAgent.product.PRODUCT_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_OPERA||goog.userAgent.product.ASSUME_FIREFOX||goog.userAgent.product.ASSUME_IPHONE||goog.userAgent.product.ASSUME_IPAD||goog.userAgent.product.ASSUME_ANDROID||goog.userAgent.product.ASSUME_CHROME||goog.userAgent.product.ASSUME_SAFARI;goog.userAgent.product.OPERA=goog.userAgent.OPERA;goog.userAgent.product.IE=goog.userAgent.IE;goog.userAgent.product.EDGE=goog.userAgent.EDGE;\ngoog.userAgent.product.FIREFOX=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_FIREFOX:goog.labs.userAgent.browser.isFirefox();goog.userAgent.product.isIphoneOrIpod_=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpod()};goog.userAgent.product.IPHONE=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPHONE:goog.userAgent.product.isIphoneOrIpod_();\ngoog.userAgent.product.IPAD=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad();goog.userAgent.product.ANDROID=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_ANDROID:goog.labs.userAgent.browser.isAndroidBrowser();goog.userAgent.product.CHROME=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CHROME:goog.labs.userAgent.browser.isChrome();\ngoog.userAgent.product.isSafariDesktop_=function(){return goog.labs.userAgent.browser.isSafari()&&!goog.labs.userAgent.platform.isIos()};goog.userAgent.product.SAFARI=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_SAFARI:goog.userAgent.product.isSafariDesktop_();goog.crypt.base64={};goog.crypt.base64.DEFAULT_ALPHABET_COMMON_=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";goog.crypt.base64.ENCODED_VALS=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+\"+/=\";goog.crypt.base64.ENCODED_VALS_WEBSAFE=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+\"-_.\";goog.crypt.base64.Alphabet={DEFAULT:0,NO_PADDING:1,WEBSAFE:2,WEBSAFE_DOT_PADDING:3,WEBSAFE_NO_PADDING:4};goog.crypt.base64.paddingChars_=\"=.\";\ngoog.crypt.base64.isPadding_=function(a){return goog.string.contains(goog.crypt.base64.paddingChars_,a)};goog.crypt.base64.byteToCharMaps_={};goog.crypt.base64.charToByteMap_=null;goog.crypt.base64.ASSUME_NATIVE_SUPPORT_=goog.userAgent.GECKO||goog.userAgent.WEBKIT&&!goog.userAgent.product.SAFARI||goog.userAgent.OPERA;goog.crypt.base64.HAS_NATIVE_ENCODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||\"function\"==typeof goog.global.btoa;\ngoog.crypt.base64.HAS_NATIVE_DECODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||!goog.userAgent.product.SAFARI&&!goog.userAgent.IE&&\"function\"==typeof goog.global.atob;\ngoog.crypt.base64.encodeByteArray=function(a,b){goog.asserts.assert(goog.isArrayLike(a),\"encodeByteArray takes an array as a parameter\");void 0===b&&(b=goog.crypt.base64.Alphabet.DEFAULT);goog.crypt.base64.init_();b=goog.crypt.base64.byteToCharMaps_[b];for(var c=[],d=0;d<a.length;d+=3){var e=a[d],f=d+1<a.length,g=f?a[d+1]:0,h=d+2<a.length,k=h?a[d+2]:0,l=e>>2;e=(e&3)<<4|g>>4;g=(g&15)<<2|k>>6;k&=63;h||(k=64,f||(g=64));c.push(b[l],b[e],b[g]||\"\",b[k]||\"\")}return c.join(\"\")};\ngoog.crypt.base64.encodeString=function(a,b){return goog.crypt.base64.HAS_NATIVE_ENCODE_&&!b?goog.global.btoa(a):goog.crypt.base64.encodeByteArray(goog.crypt.stringToByteArray(a),b)};goog.crypt.base64.decodeString=function(a,b){if(goog.crypt.base64.HAS_NATIVE_DECODE_&&!b)return goog.global.atob(a);var c=\"\";goog.crypt.base64.decodeStringInternal_(a,function(a){c+=String.fromCharCode(a)});return c};\ngoog.crypt.base64.decodeStringToByteArray=function(a,b){var c=[];goog.crypt.base64.decodeStringInternal_(a,function(a){c.push(a)});return c};\ngoog.crypt.base64.decodeStringToUint8Array=function(a){goog.asserts.assert(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher(\"10\"),\"Browser does not support typed arrays\");var b=a.length,c=3*b/4;c%3?c=Math.floor(c):goog.crypt.base64.isPadding_(a[b-1])&&(c=goog.crypt.base64.isPadding_(a[b-2])?c-2:c-1);var d=new Uint8Array(c),e=0;goog.crypt.base64.decodeStringInternal_(a,function(a){d[e++]=a});return d.subarray(0,e)};\ngoog.crypt.base64.decodeStringInternal_=function(a,b){function c(b){for(;d<a.length;){var c=a.charAt(d++),e=goog.crypt.base64.charToByteMap_[c];if(null!=e)return e;if(!goog.string.isEmptyOrWhitespace(c))throw Error(\"Unknown base64 encoding at char: \"+c);}return b}goog.crypt.base64.init_();for(var d=0;;){var e=c(-1),f=c(0),g=c(64),h=c(64);if(64===h&&-1===e)break;b(e<<2|f>>4);64!=g&&(b(f<<4&240|g>>2),64!=h&&b(g<<6&192|h))}};\ngoog.crypt.base64.init_=function(){if(!goog.crypt.base64.charToByteMap_){goog.crypt.base64.charToByteMap_={};for(var a=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_.split(\"\"),b=[\"+/=\",\"+/\",\"-_=\",\"-_.\",\"-_\"],c=0;5>c;c++){var d=a.concat(b[c].split(\"\"));goog.crypt.base64.byteToCharMaps_[c]=d;for(var e=0;e<d.length;e++){var f=d[e],g=goog.crypt.base64.charToByteMap_[f];void 0===g?goog.crypt.base64.charToByteMap_[f]=e:goog.asserts.assert(g===e)}}}};jspb.utils={};jspb.utils.split64Low=0;jspb.utils.split64High=0;jspb.utils.splitUint64=function(a){var b=a>>>0;a=Math.floor((a-b)/jspb.BinaryConstants.TWO_TO_32)>>>0;jspb.utils.split64Low=b;jspb.utils.split64High=a};jspb.utils.splitInt64=function(a){var b=0>a;a=Math.abs(a);var c=a>>>0;a=Math.floor((a-c)/jspb.BinaryConstants.TWO_TO_32);a>>>=0;b&&(a=~a>>>0,c=(~c>>>0)+1,4294967295<c&&(c=0,a++,4294967295<a&&(a=0)));jspb.utils.split64Low=c;jspb.utils.split64High=a};\njspb.utils.splitZigzag64=function(a){var b=0>a;a=2*Math.abs(a);jspb.utils.splitUint64(a);a=jspb.utils.split64Low;var c=jspb.utils.split64High;b&&(0==a?0==c?c=a=4294967295:(c--,a=4294967295):a--);jspb.utils.split64Low=a;jspb.utils.split64High=c};\njspb.utils.splitFloat32=function(a){var b=0>a?1:0;a=b?-a:a;if(0===a)0<1/a?(jspb.utils.split64High=0,jspb.utils.split64Low=0):(jspb.utils.split64High=0,jspb.utils.split64Low=2147483648);else if(isNaN(a))jspb.utils.split64High=0,jspb.utils.split64Low=2147483647;else if(a>jspb.BinaryConstants.FLOAT32_MAX)jspb.utils.split64High=0,jspb.utils.split64Low=(b<<31|2139095040)>>>0;else if(a<jspb.BinaryConstants.FLOAT32_MIN)a=Math.round(a/Math.pow(2,-149)),jspb.utils.split64High=0,jspb.utils.split64Low=(b<<31|\na)>>>0;else{var c=Math.floor(Math.log(a)/Math.LN2);a*=Math.pow(2,-c);a=Math.round(a*jspb.BinaryConstants.TWO_TO_23);16777216<=a&&++c;jspb.utils.split64High=0;jspb.utils.split64Low=(b<<31|c+127<<23|a&8388607)>>>0}};\njspb.utils.splitFloat64=function(a){var b=0>a?1:0;a=b?-a:a;if(0===a)jspb.utils.split64High=0<1/a?0:2147483648,jspb.utils.split64Low=0;else if(isNaN(a))jspb.utils.split64High=2147483647,jspb.utils.split64Low=4294967295;else if(a>jspb.BinaryConstants.FLOAT64_MAX)jspb.utils.split64High=(b<<31|2146435072)>>>0,jspb.utils.split64Low=0;else if(a<jspb.BinaryConstants.FLOAT64_MIN){var c=a/Math.pow(2,-1074);a=c/jspb.BinaryConstants.TWO_TO_32;jspb.utils.split64High=(b<<31|a)>>>0;jspb.utils.split64Low=c>>>0}else{c=\na;var d=0;if(2<=c)for(;2<=c&&1023>d;)d++,c/=2;else for(;1>c&&-1022<d;)c*=2,d--;c=a*Math.pow(2,-d);a=c*jspb.BinaryConstants.TWO_TO_20&1048575;c=c*jspb.BinaryConstants.TWO_TO_52>>>0;jspb.utils.split64High=(b<<31|d+1023<<20|a)>>>0;jspb.utils.split64Low=c}};\njspb.utils.splitHash64=function(a){var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=a.charCodeAt(4),g=a.charCodeAt(5),h=a.charCodeAt(6);a=a.charCodeAt(7);jspb.utils.split64Low=b+(c<<8)+(d<<16)+(e<<24)>>>0;jspb.utils.split64High=f+(g<<8)+(h<<16)+(a<<24)>>>0};jspb.utils.joinUint64=function(a,b){return b*jspb.BinaryConstants.TWO_TO_32+(a>>>0)};\njspb.utils.joinInt64=function(a,b){var c=b&2147483648;c&&(a=~a+1>>>0,b=~b>>>0,0==a&&(b=b+1>>>0));a=jspb.utils.joinUint64(a,b);return c?-a:a};jspb.utils.toZigzag64=function(a,b,c){var d=b>>31;return c(a<<1^d,(b<<1|a>>>31)^d)};jspb.utils.joinZigzag64=function(a,b){return jspb.utils.fromZigzag64(a,b,jspb.utils.joinInt64)};jspb.utils.fromZigzag64=function(a,b,c){var d=-(a&1);return c((a>>>1|b<<31)^d,b>>>1^d)};\njspb.utils.joinFloat32=function(a,b){b=2*(a>>31)+1;var c=a>>>23&255;a&=8388607;return 255==c?a?NaN:Infinity*b:0==c?b*Math.pow(2,-149)*a:b*Math.pow(2,c-150)*(a+Math.pow(2,23))};jspb.utils.joinFloat64=function(a,b){var c=2*(b>>31)+1,d=b>>>20&2047;a=jspb.BinaryConstants.TWO_TO_32*(b&1048575)+a;return 2047==d?a?NaN:Infinity*c:0==d?c*Math.pow(2,-1074)*a:c*Math.pow(2,d-1075)*(a+jspb.BinaryConstants.TWO_TO_52)};\njspb.utils.joinHash64=function(a,b){return String.fromCharCode(a>>>0&255,a>>>8&255,a>>>16&255,a>>>24&255,b>>>0&255,b>>>8&255,b>>>16&255,b>>>24&255)};jspb.utils.DIGITS=\"0123456789abcdef\".split(\"\");jspb.utils.ZERO_CHAR_CODE_=48;jspb.utils.A_CHAR_CODE_=97;\njspb.utils.joinUnsignedDecimalString=function(a,b){function c(a,b){a=a?String(a):\"\";return b?\"0000000\".slice(a.length)+a:a}if(2097151>=b)return\"\"+jspb.utils.joinUint64(a,b);var d=(a>>>24|b<<8)>>>0&16777215;b=b>>16&65535;a=(a&16777215)+6777216*d+6710656*b;d+=8147497*b;b*=2;1E7<=a&&(d+=Math.floor(a/1E7),a%=1E7);1E7<=d&&(b+=Math.floor(d/1E7),d%=1E7);return c(b,0)+c(d,b)+c(a,1)};\njspb.utils.joinSignedDecimalString=function(a,b){var c=b&2147483648;c&&(a=~a+1>>>0,b=~b+(0==a?1:0)>>>0);a=jspb.utils.joinUnsignedDecimalString(a,b);return c?\"-\"+a:a};jspb.utils.hash64ToDecimalString=function(a,b){jspb.utils.splitHash64(a);a=jspb.utils.split64Low;var c=jspb.utils.split64High;return b?jspb.utils.joinSignedDecimalString(a,c):jspb.utils.joinUnsignedDecimalString(a,c)};\njspb.utils.hash64ArrayToDecimalStrings=function(a,b){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]=jspb.utils.hash64ToDecimalString(a[d],b);return c};\njspb.utils.decimalStringToHash64=function(a){function b(a,b){for(var c=0;8>c&&(1!==a||0<b);c++)b=a*e[c]+b,e[c]=b&255,b>>>=8}function c(){for(var a=0;8>a;a++)e[a]=~e[a]&255}goog.asserts.assert(0<a.length);var d=!1;\"-\"===a[0]&&(d=!0,a=a.slice(1));for(var e=[0,0,0,0,0,0,0,0],f=0;f<a.length;f++)b(10,a.charCodeAt(f)-jspb.utils.ZERO_CHAR_CODE_);d&&(c(),b(1,1));return goog.crypt.byteArrayToString(e)};jspb.utils.splitDecimalString=function(a){jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a))};\njspb.utils.toHexDigit_=function(a){return String.fromCharCode(10>a?jspb.utils.ZERO_CHAR_CODE_+a:jspb.utils.A_CHAR_CODE_-10+a)};jspb.utils.fromHexCharCode_=function(a){return a>=jspb.utils.A_CHAR_CODE_?a-jspb.utils.A_CHAR_CODE_+10:a-jspb.utils.ZERO_CHAR_CODE_};jspb.utils.hash64ToHexString=function(a){var b=Array(18);b[0]=\"0\";b[1]=\"x\";for(var c=0;8>c;c++){var d=a.charCodeAt(7-c);b[2*c+2]=jspb.utils.toHexDigit_(d>>4);b[2*c+3]=jspb.utils.toHexDigit_(d&15)}return b.join(\"\")};\njspb.utils.hexStringToHash64=function(a){a=a.toLowerCase();goog.asserts.assert(18==a.length);goog.asserts.assert(\"0\"==a[0]);goog.asserts.assert(\"x\"==a[1]);for(var b=\"\",c=0;8>c;c++){var d=jspb.utils.fromHexCharCode_(a.charCodeAt(2*c+2)),e=jspb.utils.fromHexCharCode_(a.charCodeAt(2*c+3));b=String.fromCharCode(16*d+e)+b}return b};\njspb.utils.hash64ToNumber=function(a,b){jspb.utils.splitHash64(a);a=jspb.utils.split64Low;var c=jspb.utils.split64High;return b?jspb.utils.joinInt64(a,c):jspb.utils.joinUint64(a,c)};jspb.utils.numberToHash64=function(a){jspb.utils.splitInt64(a);return jspb.utils.joinHash64(jspb.utils.split64Low,jspb.utils.split64High)};jspb.utils.countVarints=function(a,b,c){for(var d=0,e=b;e<c;e++)d+=a[e]>>7;return c-b-d};\njspb.utils.countVarintFields=function(a,b,c,d){var e=0;d=8*d+jspb.BinaryConstants.WireType.VARINT;if(128>d)for(;b<c&&a[b++]==d;)for(e++;;){var f=a[b++];if(0==(f&128))break}else for(;b<c;){for(f=d;128<f;){if(a[b]!=(f&127|128))return e;b++;f>>=7}if(a[b++]!=f)break;for(e++;f=a[b++],0!=(f&128););}return e};jspb.utils.countFixedFields_=function(a,b,c,d,e){var f=0;if(128>d)for(;b<c&&a[b++]==d;)f++,b+=e;else for(;b<c;){for(var g=d;128<g;){if(a[b++]!=(g&127|128))return f;g>>=7}if(a[b++]!=g)break;f++;b+=e}return f};\njspb.utils.countFixed32Fields=function(a,b,c,d){return jspb.utils.countFixedFields_(a,b,c,8*d+jspb.BinaryConstants.WireType.FIXED32,4)};jspb.utils.countFixed64Fields=function(a,b,c,d){return jspb.utils.countFixedFields_(a,b,c,8*d+jspb.BinaryConstants.WireType.FIXED64,8)};\njspb.utils.countDelimitedFields=function(a,b,c,d){var e=0;for(d=8*d+jspb.BinaryConstants.WireType.DELIMITED;b<c;){for(var f=d;128<f;){if(a[b++]!=(f&127|128))return e;f>>=7}if(a[b++]!=f)break;e++;for(var g=0,h=1;f=a[b++],g+=(f&127)*h,h*=128,0!=(f&128););b+=g}return e};jspb.utils.debugBytesToTextFormat=function(a){var b='\"';if(a){a=jspb.utils.byteSourceToUint8Array(a);for(var c=0;c<a.length;c++)b+=\"\\\\x\",16>a[c]&&(b+=\"0\"),b+=a[c].toString(16)}return b+'\"'};\njspb.utils.debugScalarToTextFormat=function(a){return\"string\"===typeof a?goog.string.quote(a):a.toString()};jspb.utils.stringToByteArray=function(a){for(var b=new Uint8Array(a.length),c=0;c<a.length;c++){var d=a.charCodeAt(c);if(255<d)throw Error(\"Conversion error: string contains codepoint outside of byte range\");b[c]=d}return b};\njspb.utils.byteSourceToUint8Array=function(a){if(a.constructor===Uint8Array)return a;if(a.constructor===ArrayBuffer||\"undefined\"!=typeof Buffer&&a.constructor===Buffer||a.constructor===Array)return new Uint8Array(a);if(a.constructor===String)return goog.crypt.base64.decodeStringToUint8Array(a);goog.asserts.fail(\"Type not convertible to Uint8Array.\");return new Uint8Array(0)};jspb.BinaryDecoder=function(a,b,c){this.bytes_=null;this.cursor_=this.end_=this.start_=0;this.error_=!1;a&&this.setBlock(a,b,c)};jspb.BinaryDecoder.instanceCache_=[];jspb.BinaryDecoder.alloc=function(a,b,c){if(jspb.BinaryDecoder.instanceCache_.length){var d=jspb.BinaryDecoder.instanceCache_.pop();a&&d.setBlock(a,b,c);return d}return new jspb.BinaryDecoder(a,b,c)};jspb.BinaryDecoder.prototype.free=function(){this.clear();100>jspb.BinaryDecoder.instanceCache_.length&&jspb.BinaryDecoder.instanceCache_.push(this)};\njspb.BinaryDecoder.prototype.clone=function(){return jspb.BinaryDecoder.alloc(this.bytes_,this.start_,this.end_-this.start_)};jspb.BinaryDecoder.prototype.clear=function(){this.bytes_=null;this.cursor_=this.end_=this.start_=0;this.error_=!1};jspb.BinaryDecoder.prototype.getBuffer=function(){return this.bytes_};\njspb.BinaryDecoder.prototype.setBlock=function(a,b,c){this.bytes_=jspb.utils.byteSourceToUint8Array(a);this.start_=void 0!==b?b:0;this.end_=void 0!==c?this.start_+c:this.bytes_.length;this.cursor_=this.start_};jspb.BinaryDecoder.prototype.getEnd=function(){return this.end_};jspb.BinaryDecoder.prototype.setEnd=function(a){this.end_=a};jspb.BinaryDecoder.prototype.reset=function(){this.cursor_=this.start_};jspb.BinaryDecoder.prototype.getCursor=function(){return this.cursor_};\njspb.BinaryDecoder.prototype.setCursor=function(a){this.cursor_=a};jspb.BinaryDecoder.prototype.advance=function(a){this.cursor_+=a;goog.asserts.assert(this.cursor_<=this.end_)};jspb.BinaryDecoder.prototype.atEnd=function(){return this.cursor_==this.end_};jspb.BinaryDecoder.prototype.pastEnd=function(){return this.cursor_>this.end_};jspb.BinaryDecoder.prototype.getError=function(){return this.error_||0>this.cursor_||this.cursor_>this.end_};\njspb.BinaryDecoder.prototype.readSplitVarint64=function(a){for(var b=128,c=0,d=0,e=0;4>e&&128<=b;e++)b=this.bytes_[this.cursor_++],c|=(b&127)<<7*e;128<=b&&(b=this.bytes_[this.cursor_++],c|=(b&127)<<28,d|=(b&127)>>4);if(128<=b)for(e=0;5>e&&128<=b;e++)b=this.bytes_[this.cursor_++],d|=(b&127)<<7*e+3;if(128>b)return a(c>>>0,d>>>0);goog.asserts.fail(\"Failed to read varint, encoding is invalid.\");this.error_=!0};\njspb.BinaryDecoder.prototype.readSplitZigzagVarint64=function(a){return this.readSplitVarint64(function(b,c){return jspb.utils.fromZigzag64(b,c,a)})};jspb.BinaryDecoder.prototype.readSplitFixed64=function(a){var b=this.bytes_,c=this.cursor_;this.cursor_+=8;for(var d=0,e=0,f=c+7;f>=c;f--)d=d<<8|b[f],e=e<<8|b[f+4];return a(d,e)};jspb.BinaryDecoder.prototype.skipVarint=function(){for(;this.bytes_[this.cursor_]&128;)this.cursor_++;this.cursor_++};\njspb.BinaryDecoder.prototype.unskipVarint=function(a){for(;128<a;)this.cursor_--,a>>>=7;this.cursor_--};\njspb.BinaryDecoder.prototype.readUnsignedVarint32=function(){var a=this.bytes_;var b=a[this.cursor_+0];var c=b&127;if(128>b)return this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),c;b=a[this.cursor_+1];c|=(b&127)<<7;if(128>b)return this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),c;b=a[this.cursor_+2];c|=(b&127)<<14;if(128>b)return this.cursor_+=3,goog.asserts.assert(this.cursor_<=this.end_),c;b=a[this.cursor_+3];c|=(b&127)<<21;if(128>b)return this.cursor_+=4,goog.asserts.assert(this.cursor_<=\nthis.end_),c;b=a[this.cursor_+4];c|=(b&15)<<28;if(128>b)return this.cursor_+=5,goog.asserts.assert(this.cursor_<=this.end_),c>>>0;this.cursor_+=5;128<=a[this.cursor_++]&&128<=a[this.cursor_++]&&128<=a[this.cursor_++]&&128<=a[this.cursor_++]&&128<=a[this.cursor_++]&&goog.asserts.assert(!1);goog.asserts.assert(this.cursor_<=this.end_);return c};jspb.BinaryDecoder.prototype.readSignedVarint32=jspb.BinaryDecoder.prototype.readUnsignedVarint32;jspb.BinaryDecoder.prototype.readUnsignedVarint32String=function(){return this.readUnsignedVarint32().toString()};\njspb.BinaryDecoder.prototype.readSignedVarint32String=function(){return this.readSignedVarint32().toString()};jspb.BinaryDecoder.prototype.readZigzagVarint32=function(){var a=this.readUnsignedVarint32();return a>>>1^-(a&1)};jspb.BinaryDecoder.prototype.readUnsignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinUint64)};jspb.BinaryDecoder.prototype.readUnsignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinUnsignedDecimalString)};\njspb.BinaryDecoder.prototype.readSignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinInt64)};jspb.BinaryDecoder.prototype.readSignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinSignedDecimalString)};jspb.BinaryDecoder.prototype.readZigzagVarint64=function(){return this.readSplitVarint64(jspb.utils.joinZigzag64)};jspb.BinaryDecoder.prototype.readZigzagVarintHash64=function(){return this.readSplitZigzagVarint64(jspb.utils.joinHash64)};\njspb.BinaryDecoder.prototype.readZigzagVarint64String=function(){return this.readSplitZigzagVarint64(jspb.utils.joinSignedDecimalString)};jspb.BinaryDecoder.prototype.readUint8=function(){var a=this.bytes_[this.cursor_+0];this.cursor_+=1;goog.asserts.assert(this.cursor_<=this.end_);return a};jspb.BinaryDecoder.prototype.readUint16=function(){var a=this.bytes_[this.cursor_+0],b=this.bytes_[this.cursor_+1];this.cursor_+=2;goog.asserts.assert(this.cursor_<=this.end_);return a<<0|b<<8};\njspb.BinaryDecoder.prototype.readUint32=function(){var a=this.bytes_[this.cursor_+0],b=this.bytes_[this.cursor_+1],c=this.bytes_[this.cursor_+2],d=this.bytes_[this.cursor_+3];this.cursor_+=4;goog.asserts.assert(this.cursor_<=this.end_);return(a<<0|b<<8|c<<16|d<<24)>>>0};jspb.BinaryDecoder.prototype.readUint64=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinUint64(a,b)};\njspb.BinaryDecoder.prototype.readUint64String=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinUnsignedDecimalString(a,b)};jspb.BinaryDecoder.prototype.readInt8=function(){var a=this.bytes_[this.cursor_+0];this.cursor_+=1;goog.asserts.assert(this.cursor_<=this.end_);return a<<24>>24};\njspb.BinaryDecoder.prototype.readInt16=function(){var a=this.bytes_[this.cursor_+0],b=this.bytes_[this.cursor_+1];this.cursor_+=2;goog.asserts.assert(this.cursor_<=this.end_);return(a<<0|b<<8)<<16>>16};jspb.BinaryDecoder.prototype.readInt32=function(){var a=this.bytes_[this.cursor_+0],b=this.bytes_[this.cursor_+1],c=this.bytes_[this.cursor_+2],d=this.bytes_[this.cursor_+3];this.cursor_+=4;goog.asserts.assert(this.cursor_<=this.end_);return a<<0|b<<8|c<<16|d<<24};\njspb.BinaryDecoder.prototype.readInt64=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinInt64(a,b)};jspb.BinaryDecoder.prototype.readInt64String=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinSignedDecimalString(a,b)};jspb.BinaryDecoder.prototype.readFloat=function(){var a=this.readUint32();return jspb.utils.joinFloat32(a,0)};\njspb.BinaryDecoder.prototype.readDouble=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinFloat64(a,b)};jspb.BinaryDecoder.prototype.readBool=function(){return!!this.bytes_[this.cursor_++]};jspb.BinaryDecoder.prototype.readEnum=function(){return this.readSignedVarint32()};\njspb.BinaryDecoder.prototype.readString=function(a){var b=this.bytes_,c=this.cursor_;a=c+a;for(var d=[],e=\"\";c<a;){var f=b[c++];if(128>f)d.push(f);else if(192>f)continue;else if(224>f){var g=b[c++];d.push((f&31)<<6|g&63)}else if(240>f){g=b[c++];var h=b[c++];d.push((f&15)<<12|(g&63)<<6|h&63)}else if(248>f){g=b[c++];h=b[c++];var k=b[c++];f=(f&7)<<18|(g&63)<<12|(h&63)<<6|k&63;f-=65536;d.push((f>>10&1023)+55296,(f&1023)+56320)}8192<=d.length&&(e+=String.fromCharCode.apply(null,d),d.length=0)}e+=goog.crypt.byteArrayToString(d);\nthis.cursor_=c;return e};jspb.BinaryDecoder.prototype.readStringWithLength=function(){var a=this.readUnsignedVarint32();return this.readString(a)};jspb.BinaryDecoder.prototype.readBytes=function(a){if(0>a||this.cursor_+a>this.bytes_.length)return this.error_=!0,goog.asserts.fail(\"Invalid byte length!\"),new Uint8Array(0);var b=this.bytes_.subarray(this.cursor_,this.cursor_+a);this.cursor_+=a;goog.asserts.assert(this.cursor_<=this.end_);return b};jspb.BinaryDecoder.prototype.readVarintHash64=function(){return this.readSplitVarint64(jspb.utils.joinHash64)};\njspb.BinaryDecoder.prototype.readFixedHash64=function(){var a=this.bytes_,b=this.cursor_,c=a[b+0],d=a[b+1],e=a[b+2],f=a[b+3],g=a[b+4],h=a[b+5],k=a[b+6];a=a[b+7];this.cursor_+=8;return String.fromCharCode(c,d,e,f,g,h,k,a)};jspb.BinaryReader=function(a,b,c){this.decoder_=jspb.BinaryDecoder.alloc(a,b,c);this.fieldCursor_=this.decoder_.getCursor();this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER;this.nextWireType_=jspb.BinaryConstants.WireType.INVALID;this.error_=!1;this.readCallbacks_=null};jspb.BinaryReader.instanceCache_=[];\njspb.BinaryReader.alloc=function(a,b,c){if(jspb.BinaryReader.instanceCache_.length){var d=jspb.BinaryReader.instanceCache_.pop();a&&d.decoder_.setBlock(a,b,c);return d}return new jspb.BinaryReader(a,b,c)};jspb.BinaryReader.prototype.alloc=jspb.BinaryReader.alloc;\njspb.BinaryReader.prototype.free=function(){this.decoder_.clear();this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER;this.nextWireType_=jspb.BinaryConstants.WireType.INVALID;this.error_=!1;this.readCallbacks_=null;100>jspb.BinaryReader.instanceCache_.length&&jspb.BinaryReader.instanceCache_.push(this)};jspb.BinaryReader.prototype.getFieldCursor=function(){return this.fieldCursor_};jspb.BinaryReader.prototype.getCursor=function(){return this.decoder_.getCursor()};\njspb.BinaryReader.prototype.getBuffer=function(){return this.decoder_.getBuffer()};jspb.BinaryReader.prototype.getFieldNumber=function(){return this.nextField_};jspb.BinaryReader.prototype.getWireType=function(){return this.nextWireType_};jspb.BinaryReader.prototype.isDelimited=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED};jspb.BinaryReader.prototype.isEndGroup=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP};\njspb.BinaryReader.prototype.getError=function(){return this.error_||this.decoder_.getError()};jspb.BinaryReader.prototype.setBlock=function(a,b,c){this.decoder_.setBlock(a,b,c);this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER;this.nextWireType_=jspb.BinaryConstants.WireType.INVALID};jspb.BinaryReader.prototype.reset=function(){this.decoder_.reset();this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER;this.nextWireType_=jspb.BinaryConstants.WireType.INVALID};\njspb.BinaryReader.prototype.advance=function(a){this.decoder_.advance(a)};\njspb.BinaryReader.prototype.nextField=function(){if(this.decoder_.atEnd())return!1;if(this.getError())return goog.asserts.fail(\"Decoder hit an error\"),!1;this.fieldCursor_=this.decoder_.getCursor();var a=this.decoder_.readUnsignedVarint32(),b=a>>>3;a&=7;if(a!=jspb.BinaryConstants.WireType.VARINT&&a!=jspb.BinaryConstants.WireType.FIXED32&&a!=jspb.BinaryConstants.WireType.FIXED64&&a!=jspb.BinaryConstants.WireType.DELIMITED&&a!=jspb.BinaryConstants.WireType.START_GROUP&&a!=jspb.BinaryConstants.WireType.END_GROUP)return goog.asserts.fail(\"Invalid wire type: %s (at position %s)\",\na,this.fieldCursor_),this.error_=!0,!1;this.nextField_=b;this.nextWireType_=a;return!0};jspb.BinaryReader.prototype.unskipHeader=function(){this.decoder_.unskipVarint(this.nextField_<<3|this.nextWireType_)};jspb.BinaryReader.prototype.skipMatchingFields=function(){var a=this.nextField_;for(this.unskipHeader();this.nextField()&&this.getFieldNumber()==a;)this.skipField();this.decoder_.atEnd()||this.unskipHeader()};\njspb.BinaryReader.prototype.skipVarintField=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.VARINT?(goog.asserts.fail(\"Invalid wire type for skipVarintField\"),this.skipField()):this.decoder_.skipVarint()};jspb.BinaryReader.prototype.skipDelimitedField=function(){if(this.nextWireType_!=jspb.BinaryConstants.WireType.DELIMITED)goog.asserts.fail(\"Invalid wire type for skipDelimitedField\"),this.skipField();else{var a=this.decoder_.readUnsignedVarint32();this.decoder_.advance(a)}};\njspb.BinaryReader.prototype.skipFixed32Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED32?(goog.asserts.fail(\"Invalid wire type for skipFixed32Field\"),this.skipField()):this.decoder_.advance(4)};jspb.BinaryReader.prototype.skipFixed64Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED64?(goog.asserts.fail(\"Invalid wire type for skipFixed64Field\"),this.skipField()):this.decoder_.advance(8)};\njspb.BinaryReader.prototype.skipGroup=function(){var a=this.nextField_;do{if(!this.nextField()){goog.asserts.fail(\"Unmatched start-group tag: stream EOF\");this.error_=!0;break}if(this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP){this.nextField_!=a&&(goog.asserts.fail(\"Unmatched end-group tag\"),this.error_=!0);break}this.skipField()}while(1)};\njspb.BinaryReader.prototype.skipField=function(){switch(this.nextWireType_){case jspb.BinaryConstants.WireType.VARINT:this.skipVarintField();break;case jspb.BinaryConstants.WireType.FIXED64:this.skipFixed64Field();break;case jspb.BinaryConstants.WireType.DELIMITED:this.skipDelimitedField();break;case jspb.BinaryConstants.WireType.FIXED32:this.skipFixed32Field();break;case jspb.BinaryConstants.WireType.START_GROUP:this.skipGroup();break;default:goog.asserts.fail(\"Invalid wire encoding for field.\")}};\njspb.BinaryReader.prototype.registerReadCallback=function(a,b){null===this.readCallbacks_&&(this.readCallbacks_={});goog.asserts.assert(!this.readCallbacks_[a]);this.readCallbacks_[a]=b};jspb.BinaryReader.prototype.runReadCallback=function(a){goog.asserts.assert(null!==this.readCallbacks_);a=this.readCallbacks_[a];goog.asserts.assert(a);return a(this)};\njspb.BinaryReader.prototype.readAny=function(a){this.nextWireType_=jspb.BinaryConstants.FieldTypeToWireType(a);var b=jspb.BinaryConstants.FieldType;switch(a){case b.DOUBLE:return this.readDouble();case b.FLOAT:return this.readFloat();case b.INT64:return this.readInt64();case b.UINT64:return this.readUint64();case b.INT32:return this.readInt32();case b.FIXED64:return this.readFixed64();case b.FIXED32:return this.readFixed32();case b.BOOL:return this.readBool();case b.STRING:return this.readString();\ncase b.GROUP:goog.asserts.fail(\"Group field type not supported in readAny()\");case b.MESSAGE:goog.asserts.fail(\"Message field type not supported in readAny()\");case b.BYTES:return this.readBytes();case b.UINT32:return this.readUint32();case b.ENUM:return this.readEnum();case b.SFIXED32:return this.readSfixed32();case b.SFIXED64:return this.readSfixed64();case b.SINT32:return this.readSint32();case b.SINT64:return this.readSint64();case b.FHASH64:return this.readFixedHash64();case b.VHASH64:return this.readVarintHash64();\ndefault:goog.asserts.fail(\"Invalid field type in readAny()\")}return 0};jspb.BinaryReader.prototype.readMessage=function(a,b){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var c=this.decoder_.getEnd(),d=this.decoder_.readUnsignedVarint32();d=this.decoder_.getCursor()+d;this.decoder_.setEnd(d);b(a,this);this.decoder_.setCursor(d);this.decoder_.setEnd(c)};\njspb.BinaryReader.prototype.readGroup=function(a,b,c){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.START_GROUP);goog.asserts.assert(this.nextField_==a);c(b,this);this.error_||this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP||(goog.asserts.fail(\"Group submessage did not end with an END_GROUP tag\"),this.error_=!0)};\njspb.BinaryReader.prototype.getFieldDecoder=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var a=this.decoder_.readUnsignedVarint32(),b=this.decoder_.getCursor(),c=b+a;a=jspb.BinaryDecoder.alloc(this.decoder_.getBuffer(),b,a);this.decoder_.setCursor(c);return a};jspb.BinaryReader.prototype.readInt32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint32()};\njspb.BinaryReader.prototype.readInt32String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint32String()};jspb.BinaryReader.prototype.readInt64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint64()};jspb.BinaryReader.prototype.readInt64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint64String()};\njspb.BinaryReader.prototype.readUint32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readUnsignedVarint32()};jspb.BinaryReader.prototype.readUint32String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readUnsignedVarint32String()};jspb.BinaryReader.prototype.readUint64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readUnsignedVarint64()};\njspb.BinaryReader.prototype.readUint64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readUnsignedVarint64String()};jspb.BinaryReader.prototype.readSint32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readZigzagVarint32()};jspb.BinaryReader.prototype.readSint64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readZigzagVarint64()};\njspb.BinaryReader.prototype.readSint64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readZigzagVarint64String()};jspb.BinaryReader.prototype.readFixed32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32);return this.decoder_.readUint32()};jspb.BinaryReader.prototype.readFixed64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readUint64()};\njspb.BinaryReader.prototype.readFixed64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readUint64String()};jspb.BinaryReader.prototype.readSfixed32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32);return this.decoder_.readInt32()};jspb.BinaryReader.prototype.readSfixed32String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32);return this.decoder_.readInt32().toString()};\njspb.BinaryReader.prototype.readSfixed64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readInt64()};jspb.BinaryReader.prototype.readSfixed64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readInt64String()};jspb.BinaryReader.prototype.readFloat=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32);return this.decoder_.readFloat()};\njspb.BinaryReader.prototype.readDouble=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readDouble()};jspb.BinaryReader.prototype.readBool=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return!!this.decoder_.readUnsignedVarint32()};jspb.BinaryReader.prototype.readEnum=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint64()};\njspb.BinaryReader.prototype.readString=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var a=this.decoder_.readUnsignedVarint32();return this.decoder_.readString(a)};jspb.BinaryReader.prototype.readBytes=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var a=this.decoder_.readUnsignedVarint32();return this.decoder_.readBytes(a)};\njspb.BinaryReader.prototype.readVarintHash64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readVarintHash64()};jspb.BinaryReader.prototype.readSintHash64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readZigzagVarintHash64()};jspb.BinaryReader.prototype.readSplitVarint64=function(a){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSplitVarint64(a)};\njspb.BinaryReader.prototype.readSplitZigzagVarint64=function(a){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSplitVarint64(function(b,c){return jspb.utils.fromZigzag64(b,c,a)})};jspb.BinaryReader.prototype.readFixedHash64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readFixedHash64()};\njspb.BinaryReader.prototype.readSplitFixed64=function(a){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readSplitFixed64(a)};jspb.BinaryReader.prototype.readPackedField_=function(a){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var b=this.decoder_.readUnsignedVarint32();b=this.decoder_.getCursor()+b;for(var c=[];this.decoder_.getCursor()<b;)c.push(a.call(this.decoder_));return c};\njspb.BinaryReader.prototype.readPackedInt32=function(){return this.readPackedField_(this.decoder_.readSignedVarint32)};jspb.BinaryReader.prototype.readPackedInt32String=function(){return this.readPackedField_(this.decoder_.readSignedVarint32String)};jspb.BinaryReader.prototype.readPackedInt64=function(){return this.readPackedField_(this.decoder_.readSignedVarint64)};jspb.BinaryReader.prototype.readPackedInt64String=function(){return this.readPackedField_(this.decoder_.readSignedVarint64String)};\njspb.BinaryReader.prototype.readPackedUint32=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32)};jspb.BinaryReader.prototype.readPackedUint32String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32String)};jspb.BinaryReader.prototype.readPackedUint64=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64)};jspb.BinaryReader.prototype.readPackedUint64String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64String)};\njspb.BinaryReader.prototype.readPackedSint32=function(){return this.readPackedField_(this.decoder_.readZigzagVarint32)};jspb.BinaryReader.prototype.readPackedSint64=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64)};jspb.BinaryReader.prototype.readPackedSint64String=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64String)};jspb.BinaryReader.prototype.readPackedFixed32=function(){return this.readPackedField_(this.decoder_.readUint32)};\njspb.BinaryReader.prototype.readPackedFixed64=function(){return this.readPackedField_(this.decoder_.readUint64)};jspb.BinaryReader.prototype.readPackedFixed64String=function(){return this.readPackedField_(this.decoder_.readUint64String)};jspb.BinaryReader.prototype.readPackedSfixed32=function(){return this.readPackedField_(this.decoder_.readInt32)};jspb.BinaryReader.prototype.readPackedSfixed64=function(){return this.readPackedField_(this.decoder_.readInt64)};\njspb.BinaryReader.prototype.readPackedSfixed64String=function(){return this.readPackedField_(this.decoder_.readInt64String)};jspb.BinaryReader.prototype.readPackedFloat=function(){return this.readPackedField_(this.decoder_.readFloat)};jspb.BinaryReader.prototype.readPackedDouble=function(){return this.readPackedField_(this.decoder_.readDouble)};jspb.BinaryReader.prototype.readPackedBool=function(){return this.readPackedField_(this.decoder_.readBool)};jspb.BinaryReader.prototype.readPackedEnum=function(){return this.readPackedField_(this.decoder_.readEnum)};\njspb.BinaryReader.prototype.readPackedVarintHash64=function(){return this.readPackedField_(this.decoder_.readVarintHash64)};jspb.BinaryReader.prototype.readPackedFixedHash64=function(){return this.readPackedField_(this.decoder_.readFixedHash64)};jspb.BinaryEncoder=function(){this.buffer_=[]};jspb.BinaryEncoder.prototype.length=function(){return this.buffer_.length};jspb.BinaryEncoder.prototype.end=function(){var a=this.buffer_;this.buffer_=[];return a};\njspb.BinaryEncoder.prototype.writeSplitVarint64=function(a,b){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(b==Math.floor(b));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_32);for(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32);0<b||127<a;)this.buffer_.push(a&127|128),a=(a>>>7|b<<25)>>>0,b>>>=7;this.buffer_.push(a)};\njspb.BinaryEncoder.prototype.writeSplitFixed64=function(a,b){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(b==Math.floor(b));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_32);goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32);this.writeUint32(a);this.writeUint32(b)};\njspb.BinaryEncoder.prototype.writeUnsignedVarint32=function(a){goog.asserts.assert(a==Math.floor(a));for(goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_32);127<a;)this.buffer_.push(a&127|128),a>>>=7;this.buffer_.push(a)};\njspb.BinaryEncoder.prototype.writeSignedVarint32=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_31&&a<jspb.BinaryConstants.TWO_TO_31);if(0<=a)this.writeUnsignedVarint32(a);else{for(var b=0;9>b;b++)this.buffer_.push(a&127|128),a>>=7;this.buffer_.push(1)}};\njspb.BinaryEncoder.prototype.writeUnsignedVarint64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_64);jspb.utils.splitInt64(a);this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeSignedVarint64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_63&&a<jspb.BinaryConstants.TWO_TO_63);jspb.utils.splitInt64(a);this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeZigzagVarint32=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_31&&a<jspb.BinaryConstants.TWO_TO_31);this.writeUnsignedVarint32((a<<1^a>>31)>>>0)};jspb.BinaryEncoder.prototype.writeZigzagVarint64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_63&&a<jspb.BinaryConstants.TWO_TO_63);jspb.utils.splitZigzag64(a);this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeZigzagVarint64String=function(a){this.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(a))};jspb.BinaryEncoder.prototype.writeZigzagVarintHash64=function(a){var b=this;jspb.utils.splitHash64(a);jspb.utils.toZigzag64(jspb.utils.split64Low,jspb.utils.split64High,function(a,d){b.writeSplitVarint64(a>>>0,d>>>0)})};\njspb.BinaryEncoder.prototype.writeUint8=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&256>a);this.buffer_.push(a>>>0&255)};jspb.BinaryEncoder.prototype.writeUint16=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&65536>a);this.buffer_.push(a>>>0&255);this.buffer_.push(a>>>8&255)};\njspb.BinaryEncoder.prototype.writeUint32=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_32);this.buffer_.push(a>>>0&255);this.buffer_.push(a>>>8&255);this.buffer_.push(a>>>16&255);this.buffer_.push(a>>>24&255)};jspb.BinaryEncoder.prototype.writeUint64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_64);jspb.utils.splitUint64(a);this.writeUint32(jspb.utils.split64Low);this.writeUint32(jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeInt8=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(-128<=a&&128>a);this.buffer_.push(a>>>0&255)};jspb.BinaryEncoder.prototype.writeInt16=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(-32768<=a&&32768>a);this.buffer_.push(a>>>0&255);this.buffer_.push(a>>>8&255)};\njspb.BinaryEncoder.prototype.writeInt32=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_31&&a<jspb.BinaryConstants.TWO_TO_31);this.buffer_.push(a>>>0&255);this.buffer_.push(a>>>8&255);this.buffer_.push(a>>>16&255);this.buffer_.push(a>>>24&255)};\njspb.BinaryEncoder.prototype.writeInt64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_63&&a<jspb.BinaryConstants.TWO_TO_63);jspb.utils.splitInt64(a);this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeInt64String=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(+a>=-jspb.BinaryConstants.TWO_TO_63&&+a<jspb.BinaryConstants.TWO_TO_63);jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a));this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeFloat=function(a){goog.asserts.assert(Infinity===a||-Infinity===a||isNaN(a)||a>=-jspb.BinaryConstants.FLOAT32_MAX&&a<=jspb.BinaryConstants.FLOAT32_MAX);jspb.utils.splitFloat32(a);this.writeUint32(jspb.utils.split64Low)};\njspb.BinaryEncoder.prototype.writeDouble=function(a){goog.asserts.assert(Infinity===a||-Infinity===a||isNaN(a)||a>=-jspb.BinaryConstants.FLOAT64_MAX&&a<=jspb.BinaryConstants.FLOAT64_MAX);jspb.utils.splitFloat64(a);this.writeUint32(jspb.utils.split64Low);this.writeUint32(jspb.utils.split64High)};jspb.BinaryEncoder.prototype.writeBool=function(a){goog.asserts.assert(\"boolean\"===typeof a||\"number\"===typeof a);this.buffer_.push(a?1:0)};\njspb.BinaryEncoder.prototype.writeEnum=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_31&&a<jspb.BinaryConstants.TWO_TO_31);this.writeSignedVarint32(a)};jspb.BinaryEncoder.prototype.writeBytes=function(a){this.buffer_.push.apply(this.buffer_,a)};jspb.BinaryEncoder.prototype.writeVarintHash64=function(a){jspb.utils.splitHash64(a);this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeFixedHash64=function(a){jspb.utils.splitHash64(a);this.writeUint32(jspb.utils.split64Low);this.writeUint32(jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeString=function(a){for(var b=this.buffer_.length,c=0;c<a.length;c++){var d=a.charCodeAt(c);if(128>d)this.buffer_.push(d);else if(2048>d)this.buffer_.push(d>>6|192),this.buffer_.push(d&63|128);else if(65536>d)if(55296<=d&&56319>=d&&c+1<a.length){var e=a.charCodeAt(c+1);56320<=e&&57343>=e&&(d=1024*(d-55296)+e-56320+65536,this.buffer_.push(d>>18|240),this.buffer_.push(d>>12&63|128),this.buffer_.push(d>>6&63|128),this.buffer_.push(d&63|128),c++)}else this.buffer_.push(d>>\n12|224),this.buffer_.push(d>>6&63|128),this.buffer_.push(d&63|128)}return this.buffer_.length-b};jspb.arith={};jspb.arith.UInt64=function(a,b){this.lo=a;this.hi=b};jspb.arith.UInt64.prototype.cmp=function(a){return this.hi<a.hi||this.hi==a.hi&&this.lo<a.lo?-1:this.hi==a.hi&&this.lo==a.lo?0:1};jspb.arith.UInt64.prototype.rightShift=function(){return new jspb.arith.UInt64((this.lo>>>1|(this.hi&1)<<31)>>>0,this.hi>>>1>>>0)};jspb.arith.UInt64.prototype.leftShift=function(){return new jspb.arith.UInt64(this.lo<<1>>>0,(this.hi<<1|this.lo>>>31)>>>0)};\njspb.arith.UInt64.prototype.msb=function(){return!!(this.hi&2147483648)};jspb.arith.UInt64.prototype.lsb=function(){return!!(this.lo&1)};jspb.arith.UInt64.prototype.zero=function(){return 0==this.lo&&0==this.hi};jspb.arith.UInt64.prototype.add=function(a){return new jspb.arith.UInt64((this.lo+a.lo&4294967295)>>>0>>>0,((this.hi+a.hi&4294967295)>>>0)+(4294967296<=this.lo+a.lo?1:0)>>>0)};\njspb.arith.UInt64.prototype.sub=function(a){return new jspb.arith.UInt64((this.lo-a.lo&4294967295)>>>0>>>0,((this.hi-a.hi&4294967295)>>>0)-(0>this.lo-a.lo?1:0)>>>0)};jspb.arith.UInt64.mul32x32=function(a,b){var c=a&65535;a>>>=16;var d=b&65535,e=b>>>16;b=c*d+65536*(c*e&65535)+65536*(a*d&65535);for(c=a*e+(c*e>>>16)+(a*d>>>16);4294967296<=b;)b-=4294967296,c+=1;return new jspb.arith.UInt64(b>>>0,c>>>0)};\njspb.arith.UInt64.prototype.mul=function(a){var b=jspb.arith.UInt64.mul32x32(this.lo,a);a=jspb.arith.UInt64.mul32x32(this.hi,a);a.hi=a.lo;a.lo=0;return b.add(a)};\njspb.arith.UInt64.prototype.div=function(a){if(0==a)return[];var b=new jspb.arith.UInt64(0,0),c=new jspb.arith.UInt64(this.lo,this.hi);a=new jspb.arith.UInt64(a,0);for(var d=new jspb.arith.UInt64(1,0);!a.msb();)a=a.leftShift(),d=d.leftShift();for(;!d.zero();)0>=a.cmp(c)&&(b=b.add(d),c=c.sub(a)),a=a.rightShift(),d=d.rightShift();return[b,c]};jspb.arith.UInt64.prototype.toString=function(){for(var a=\"\",b=this;!b.zero();){b=b.div(10);var c=b[0];a=b[1].lo+a;b=c}\"\"==a&&(a=\"0\");return a};\njspb.arith.UInt64.fromString=function(a){for(var b=new jspb.arith.UInt64(0,0),c=new jspb.arith.UInt64(0,0),d=0;d<a.length;d++){if(\"0\">a[d]||\"9\"<a[d])return null;var e=parseInt(a[d],10);c.lo=e;b=b.mul(10).add(c)}return b};jspb.arith.UInt64.prototype.clone=function(){return new jspb.arith.UInt64(this.lo,this.hi)};jspb.arith.Int64=function(a,b){this.lo=a;this.hi=b};\njspb.arith.Int64.prototype.add=function(a){return new jspb.arith.Int64((this.lo+a.lo&4294967295)>>>0>>>0,((this.hi+a.hi&4294967295)>>>0)+(4294967296<=this.lo+a.lo?1:0)>>>0)};jspb.arith.Int64.prototype.sub=function(a){return new jspb.arith.Int64((this.lo-a.lo&4294967295)>>>0>>>0,((this.hi-a.hi&4294967295)>>>0)-(0>this.lo-a.lo?1:0)>>>0)};jspb.arith.Int64.prototype.clone=function(){return new jspb.arith.Int64(this.lo,this.hi)};\njspb.arith.Int64.prototype.toString=function(){var a=0!=(this.hi&2147483648),b=new jspb.arith.UInt64(this.lo,this.hi);a&&(b=(new jspb.arith.UInt64(0,0)).sub(b));return(a?\"-\":\"\")+b.toString()};jspb.arith.Int64.fromString=function(a){var b=0<a.length&&\"-\"==a[0];b&&(a=a.substring(1));a=jspb.arith.UInt64.fromString(a);if(null===a)return null;b&&(a=(new jspb.arith.UInt64(0,0)).sub(a));return new jspb.arith.Int64(a.lo,a.hi)};jspb.BinaryWriter=function(){this.blocks_=[];this.totalLength_=0;this.encoder_=new jspb.BinaryEncoder;this.bookmarks_=[]};jspb.BinaryWriter.prototype.appendUint8Array_=function(a){var b=this.encoder_.end();this.blocks_.push(b);this.blocks_.push(a);this.totalLength_+=b.length+a.length};\njspb.BinaryWriter.prototype.beginDelimited_=function(a){this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED);a=this.encoder_.end();this.blocks_.push(a);this.totalLength_+=a.length;a.push(this.totalLength_);return a};jspb.BinaryWriter.prototype.endDelimited_=function(a){var b=a.pop();b=this.totalLength_+this.encoder_.length()-b;for(goog.asserts.assert(0<=b);127<b;)a.push(b&127|128),b>>>=7,this.totalLength_++;a.push(b);this.totalLength_++};\njspb.BinaryWriter.prototype.writeSerializedMessage=function(a,b,c){this.appendUint8Array_(a.subarray(b,c))};jspb.BinaryWriter.prototype.maybeWriteSerializedMessage=function(a,b,c){null!=a&&null!=b&&null!=c&&this.writeSerializedMessage(a,b,c)};jspb.BinaryWriter.prototype.reset=function(){this.blocks_=[];this.encoder_.end();this.totalLength_=0;this.bookmarks_=[]};\njspb.BinaryWriter.prototype.getResultBuffer=function(){goog.asserts.assert(0==this.bookmarks_.length);for(var a=new Uint8Array(this.totalLength_+this.encoder_.length()),b=this.blocks_,c=b.length,d=0,e=0;e<c;e++){var f=b[e];a.set(f,d);d+=f.length}b=this.encoder_.end();a.set(b,d);d+=b.length;goog.asserts.assert(d==a.length);this.blocks_=[a];return a};jspb.BinaryWriter.prototype.getResultBase64String=function(a){return goog.crypt.base64.encodeByteArray(this.getResultBuffer(),a)};\njspb.BinaryWriter.prototype.beginSubMessage=function(a){this.bookmarks_.push(this.beginDelimited_(a))};jspb.BinaryWriter.prototype.endSubMessage=function(){goog.asserts.assert(0<=this.bookmarks_.length);this.endDelimited_(this.bookmarks_.pop())};jspb.BinaryWriter.prototype.writeFieldHeader_=function(a,b){goog.asserts.assert(1<=a&&a==Math.floor(a));this.encoder_.writeUnsignedVarint32(8*a+b)};\njspb.BinaryWriter.prototype.writeAny=function(a,b,c){var d=jspb.BinaryConstants.FieldType;switch(a){case d.DOUBLE:this.writeDouble(b,c);break;case d.FLOAT:this.writeFloat(b,c);break;case d.INT64:this.writeInt64(b,c);break;case d.UINT64:this.writeUint64(b,c);break;case d.INT32:this.writeInt32(b,c);break;case d.FIXED64:this.writeFixed64(b,c);break;case d.FIXED32:this.writeFixed32(b,c);break;case d.BOOL:this.writeBool(b,c);break;case d.STRING:this.writeString(b,c);break;case d.GROUP:goog.asserts.fail(\"Group field type not supported in writeAny()\");\nbreak;case d.MESSAGE:goog.asserts.fail(\"Message field type not supported in writeAny()\");break;case d.BYTES:this.writeBytes(b,c);break;case d.UINT32:this.writeUint32(b,c);break;case d.ENUM:this.writeEnum(b,c);break;case d.SFIXED32:this.writeSfixed32(b,c);break;case d.SFIXED64:this.writeSfixed64(b,c);break;case d.SINT32:this.writeSint32(b,c);break;case d.SINT64:this.writeSint64(b,c);break;case d.FHASH64:this.writeFixedHash64(b,c);break;case d.VHASH64:this.writeVarintHash64(b,c);break;default:goog.asserts.fail(\"Invalid field type in writeAny()\")}};\njspb.BinaryWriter.prototype.writeUnsignedVarint32_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint32(b))};jspb.BinaryWriter.prototype.writeSignedVarint32_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(b))};jspb.BinaryWriter.prototype.writeUnsignedVarint64_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint64(b))};\njspb.BinaryWriter.prototype.writeSignedVarint64_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint64(b))};jspb.BinaryWriter.prototype.writeZigzagVarint32_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint32(b))};jspb.BinaryWriter.prototype.writeZigzagVarint64_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64(b))};\njspb.BinaryWriter.prototype.writeZigzagVarint64String_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64String(b))};jspb.BinaryWriter.prototype.writeZigzagVarintHash64_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarintHash64(b))};\njspb.BinaryWriter.prototype.writeInt32=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(a,b))};jspb.BinaryWriter.prototype.writeInt32String=function(a,b){null!=b&&(b=parseInt(b,10),goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(a,b))};\njspb.BinaryWriter.prototype.writeInt64=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_63&&b<jspb.BinaryConstants.TWO_TO_63),this.writeSignedVarint64_(a,b))};jspb.BinaryWriter.prototype.writeInt64String=function(a,b){null!=b&&(b=jspb.arith.Int64.fromString(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(b.lo,b.hi))};\njspb.BinaryWriter.prototype.writeUint32=function(a,b){null!=b&&(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(a,b))};jspb.BinaryWriter.prototype.writeUint32String=function(a,b){null!=b&&(b=parseInt(b,10),goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(a,b))};jspb.BinaryWriter.prototype.writeUint64=function(a,b){null!=b&&(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_64),this.writeUnsignedVarint64_(a,b))};\njspb.BinaryWriter.prototype.writeUint64String=function(a,b){null!=b&&(b=jspb.arith.UInt64.fromString(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(b.lo,b.hi))};jspb.BinaryWriter.prototype.writeSint32=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeZigzagVarint32_(a,b))};\njspb.BinaryWriter.prototype.writeSint64=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_63&&b<jspb.BinaryConstants.TWO_TO_63),this.writeZigzagVarint64_(a,b))};jspb.BinaryWriter.prototype.writeSintHash64=function(a,b){null!=b&&this.writeZigzagVarintHash64_(a,b)};jspb.BinaryWriter.prototype.writeSint64String=function(a,b){null!=b&&this.writeZigzagVarint64String_(a,b)};\njspb.BinaryWriter.prototype.writeFixed32=function(a,b){null!=b&&(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeUint32(b))};jspb.BinaryWriter.prototype.writeFixed64=function(a,b){null!=b&&(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_64),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeUint64(b))};\njspb.BinaryWriter.prototype.writeFixed64String=function(a,b){null!=b&&(b=jspb.arith.UInt64.fromString(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(b.lo,b.hi))};jspb.BinaryWriter.prototype.writeSfixed32=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeInt32(b))};\njspb.BinaryWriter.prototype.writeSfixed64=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_63&&b<jspb.BinaryConstants.TWO_TO_63),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeInt64(b))};jspb.BinaryWriter.prototype.writeSfixed64String=function(a,b){null!=b&&(b=jspb.arith.Int64.fromString(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(b.lo,b.hi))};\njspb.BinaryWriter.prototype.writeFloat=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeFloat(b))};jspb.BinaryWriter.prototype.writeDouble=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeDouble(b))};\njspb.BinaryWriter.prototype.writeBool=function(a,b){null!=b&&(goog.asserts.assert(\"boolean\"===typeof b||\"number\"===typeof b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeBool(b))};jspb.BinaryWriter.prototype.writeEnum=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(b))};\njspb.BinaryWriter.prototype.writeString=function(a,b){null!=b&&(a=this.beginDelimited_(a),this.encoder_.writeString(b),this.endDelimited_(a))};jspb.BinaryWriter.prototype.writeBytes=function(a,b){null!=b&&(b=jspb.utils.byteSourceToUint8Array(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(b.length),this.appendUint8Array_(b))};jspb.BinaryWriter.prototype.writeMessage=function(a,b,c){null!=b&&(a=this.beginDelimited_(a),c(b,this),this.endDelimited_(a))};\njspb.BinaryWriter.prototype.writeMessageSet=function(a,b,c){null!=b&&(this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.START_GROUP),this.writeFieldHeader_(2,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(a),a=this.beginDelimited_(3),c(b,this),this.endDelimited_(a),this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.END_GROUP))};\njspb.BinaryWriter.prototype.writeGroup=function(a,b,c){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.START_GROUP),c(b,this),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.END_GROUP))};jspb.BinaryWriter.prototype.writeFixedHash64=function(a,b){null!=b&&(goog.asserts.assert(8==b.length),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeFixedHash64(b))};\njspb.BinaryWriter.prototype.writeVarintHash64=function(a,b){null!=b&&(goog.asserts.assert(8==b.length),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeVarintHash64(b))};jspb.BinaryWriter.prototype.writeSplitFixed64=function(a,b,c){this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64);this.encoder_.writeSplitFixed64(b,c)};\njspb.BinaryWriter.prototype.writeSplitVarint64=function(a,b,c){this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT);this.encoder_.writeSplitVarint64(b,c)};jspb.BinaryWriter.prototype.writeSplitZigzagVarint64=function(a,b,c){this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT);var d=this.encoder_;jspb.utils.toZigzag64(b,c,function(a,b){d.writeSplitVarint64(a>>>0,b>>>0)})};\njspb.BinaryWriter.prototype.writeRepeatedInt32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSignedVarint32_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedInt32String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeInt32String(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedInt64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSignedVarint64_(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedSplitFixed64=function(a,b,c,d){if(null!=b)for(var e=0;e<b.length;e++)this.writeSplitFixed64(a,c(b[e]),d(b[e]))};jspb.BinaryWriter.prototype.writeRepeatedSplitVarint64=function(a,b,c,d){if(null!=b)for(var e=0;e<b.length;e++)this.writeSplitVarint64(a,c(b[e]),d(b[e]))};jspb.BinaryWriter.prototype.writeRepeatedSplitZigzagVarint64=function(a,b,c,d){if(null!=b)for(var e=0;e<b.length;e++)this.writeSplitZigzagVarint64(a,c(b[e]),d(b[e]))};\njspb.BinaryWriter.prototype.writeRepeatedInt64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeInt64String(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedUint32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeUnsignedVarint32_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedUint32String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeUint32String(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedUint64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeUnsignedVarint64_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedUint64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeUint64String(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSint32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeZigzagVarint32_(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedSint64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeZigzagVarint64_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSint64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeZigzagVarint64String_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSintHash64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeZigzagVarintHash64_(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedFixed32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFixed32(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedFixed64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFixed64(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedFixed64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFixed64String(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedSfixed32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSfixed32(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSfixed64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSfixed64(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSfixed64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSfixed64String(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedFloat=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFloat(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedDouble=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeDouble(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedBool=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeBool(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedEnum=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeEnum(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedString=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeString(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedBytes=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeBytes(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedMessage=function(a,b,c){if(null!=b)for(var d=0;d<b.length;d++){var e=this.beginDelimited_(a);c(b[d],this);this.endDelimited_(e)}};\njspb.BinaryWriter.prototype.writeRepeatedGroup=function(a,b,c){if(null!=b)for(var d=0;d<b.length;d++)this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.START_GROUP),c(b[d],this),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.END_GROUP)};jspb.BinaryWriter.prototype.writeRepeatedFixedHash64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFixedHash64(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedVarintHash64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeVarintHash64(a,b[c])};jspb.BinaryWriter.prototype.writePackedInt32=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeSignedVarint32(b[c]);this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedInt32String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeSignedVarint32(parseInt(b[c],10));this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedInt64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeSignedVarint64(b[c]);this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedSplitFixed64=function(a,b,c,d){if(null!=b){a=this.beginDelimited_(a);for(var e=0;e<b.length;e++)this.encoder_.writeSplitFixed64(c(b[e]),d(b[e]));this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedSplitVarint64=function(a,b,c,d){if(null!=b){a=this.beginDelimited_(a);for(var e=0;e<b.length;e++)this.encoder_.writeSplitVarint64(c(b[e]),d(b[e]));this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedSplitZigzagVarint64=function(a,b,c,d){if(null!=b){a=this.beginDelimited_(a);for(var e=this.encoder_,f=0;f<b.length;f++)jspb.utils.toZigzag64(c(b[f]),d(b[f]),function(a,b){e.writeSplitVarint64(a>>>0,b>>>0)});this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedInt64String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++){var d=jspb.arith.Int64.fromString(b[c]);this.encoder_.writeSplitVarint64(d.lo,d.hi)}this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedUint32=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeUnsignedVarint32(b[c]);this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedUint32String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeUnsignedVarint32(parseInt(b[c],10));this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedUint64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeUnsignedVarint64(b[c]);this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedUint64String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++){var d=jspb.arith.UInt64.fromString(b[c]);this.encoder_.writeSplitVarint64(d.lo,d.hi)}this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedSint32=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeZigzagVarint32(b[c]);this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedSint64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeZigzagVarint64(b[c]);this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedSint64String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(b[c]));this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedSintHash64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeZigzagVarintHash64(b[c]);this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedFixed32=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*b.length),a=0;a<b.length;a++)this.encoder_.writeUint32(b[a])};jspb.BinaryWriter.prototype.writePackedFixed64=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeUint64(b[a])};\njspb.BinaryWriter.prototype.writePackedFixed64String=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++){var c=jspb.arith.UInt64.fromString(b[a]);this.encoder_.writeSplitFixed64(c.lo,c.hi)}};\njspb.BinaryWriter.prototype.writePackedSfixed32=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*b.length),a=0;a<b.length;a++)this.encoder_.writeInt32(b[a])};jspb.BinaryWriter.prototype.writePackedSfixed64=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeInt64(b[a])};\njspb.BinaryWriter.prototype.writePackedSfixed64String=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeInt64String(b[a])};jspb.BinaryWriter.prototype.writePackedFloat=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*b.length),a=0;a<b.length;a++)this.encoder_.writeFloat(b[a])};\njspb.BinaryWriter.prototype.writePackedDouble=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeDouble(b[a])};jspb.BinaryWriter.prototype.writePackedBool=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(b.length),a=0;a<b.length;a++)this.encoder_.writeBool(b[a])};\njspb.BinaryWriter.prototype.writePackedEnum=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeEnum(b[c]);this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedFixedHash64=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeFixedHash64(b[a])};\njspb.BinaryWriter.prototype.writePackedVarintHash64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeVarintHash64(b[c]);this.endDelimited_(a)}};jspb.Map=function(a,b){this.arr_=a;this.valueCtor_=b;this.map_={};this.arrClean=!0;0<this.arr_.length&&this.loadFromArray_()};jspb.Map.prototype.loadFromArray_=function(){for(var a=0;a<this.arr_.length;a++){var b=this.arr_[a],c=b[0];this.map_[c.toString()]=new jspb.Map.Entry_(c,b[1])}this.arrClean=!0};\njspb.Map.prototype.toArray=function(){if(this.arrClean){if(this.valueCtor_){var a=this.map_,b;for(b in a)if(Object.prototype.hasOwnProperty.call(a,b)){var c=a[b].valueWrapper;c&&c.toArray()}}}else{this.arr_.length=0;a=this.stringKeys_();a.sort();for(b=0;b<a.length;b++){var d=this.map_[a[b]];(c=d.valueWrapper)&&c.toArray();this.arr_.push([d.key,d.value])}this.arrClean=!0}return this.arr_};\njspb.Map.prototype.toObject=function(a,b){for(var c=this.toArray(),d=[],e=0;e<c.length;e++){var f=this.map_[c[e][0].toString()];this.wrapEntry_(f);var g=f.valueWrapper;g?(goog.asserts.assert(b),d.push([f.key,b(a,g)])):d.push([f.key,f.value])}return d};jspb.Map.fromObject=function(a,b,c){b=new jspb.Map([],b);for(var d=0;d<a.length;d++){var e=a[d][0],f=c(a[d][1]);b.set(e,f)}return b};jspb.Map.ArrayIteratorIterable_=function(a){this.idx_=0;this.arr_=a};\njspb.Map.ArrayIteratorIterable_.prototype.next=function(){return this.idx_<this.arr_.length?{done:!1,value:this.arr_[this.idx_++]}:{done:!0,value:void 0}};\"undefined\"!=typeof Symbol&&(jspb.Map.ArrayIteratorIterable_.prototype[Symbol.iterator]=function(){return this});jspb.Map.prototype.getLength=function(){return this.stringKeys_().length};jspb.Map.prototype.clear=function(){this.map_={};this.arrClean=!1};\njspb.Map.prototype.del=function(a){a=a.toString();var b=this.map_.hasOwnProperty(a);delete this.map_[a];this.arrClean=!1;return b};jspb.Map.prototype.getEntryList=function(){var a=[],b=this.stringKeys_();b.sort();for(var c=0;c<b.length;c++){var d=this.map_[b[c]];a.push([d.key,d.value])}return a};jspb.Map.prototype.entries=function(){var a=[],b=this.stringKeys_();b.sort();for(var c=0;c<b.length;c++){var d=this.map_[b[c]];a.push([d.key,this.wrapEntry_(d)])}return new jspb.Map.ArrayIteratorIterable_(a)};\njspb.Map.prototype.keys=function(){var a=[],b=this.stringKeys_();b.sort();for(var c=0;c<b.length;c++)a.push(this.map_[b[c]].key);return new jspb.Map.ArrayIteratorIterable_(a)};jspb.Map.prototype.values=function(){var a=[],b=this.stringKeys_();b.sort();for(var c=0;c<b.length;c++)a.push(this.wrapEntry_(this.map_[b[c]]));return new jspb.Map.ArrayIteratorIterable_(a)};\njspb.Map.prototype.forEach=function(a,b){var c=this.stringKeys_();c.sort();for(var d=0;d<c.length;d++){var e=this.map_[c[d]];a.call(b,this.wrapEntry_(e),e.key,this)}};jspb.Map.prototype.set=function(a,b){var c=new jspb.Map.Entry_(a);this.valueCtor_?(c.valueWrapper=b,c.value=b.toArray()):c.value=b;this.map_[a.toString()]=c;this.arrClean=!1;return this};jspb.Map.prototype.wrapEntry_=function(a){return this.valueCtor_?(a.valueWrapper||(a.valueWrapper=new this.valueCtor_(a.value)),a.valueWrapper):a.value};\njspb.Map.prototype.get=function(a){if(a=this.map_[a.toString()])return this.wrapEntry_(a)};jspb.Map.prototype.has=function(a){return a.toString()in this.map_};jspb.Map.prototype.serializeBinary=function(a,b,c,d,e){var f=this.stringKeys_();f.sort();for(var g=0;g<f.length;g++){var h=this.map_[f[g]];b.beginSubMessage(a);c.call(b,1,h.key);this.valueCtor_?d.call(b,2,this.wrapEntry_(h),e):d.call(b,2,h.value);b.endSubMessage()}};\njspb.Map.deserializeBinary=function(a,b,c,d,e,f,g){for(;b.nextField()&&!b.isEndGroup();){var h=b.getFieldNumber();1==h?f=c.call(b):2==h&&(a.valueCtor_?(goog.asserts.assert(e),g||(g=new a.valueCtor_),d.call(b,g,e)):g=d.call(b))}goog.asserts.assert(void 0!=f);goog.asserts.assert(void 0!=g);a.set(f,g)};jspb.Map.prototype.stringKeys_=function(){var a=this.map_,b=[],c;for(c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return b};\njspb.Map.Entry_=function(a,b){this.key=a;this.value=b;this.valueWrapper=void 0};jspb.ExtensionFieldInfo=function(a,b,c,d,e){this.fieldIndex=a;this.fieldName=b;this.ctor=c;this.toObjectFn=d;this.isRepeated=e};jspb.ExtensionFieldBinaryInfo=function(a,b,c,d,e,f){this.fieldInfo=a;this.binaryReaderFn=b;this.binaryWriterFn=c;this.binaryMessageSerializeFn=d;this.binaryMessageDeserializeFn=e;this.isPacked=f};jspb.ExtensionFieldInfo.prototype.isMessageType=function(){return!!this.ctor};jspb.Message=function(){};jspb.Message.GENERATE_TO_OBJECT=!0;jspb.Message.GENERATE_FROM_OBJECT=!goog.DISALLOW_TEST_ONLY_CODE;\njspb.Message.GENERATE_TO_STRING=!0;jspb.Message.ASSUME_LOCAL_ARRAYS=!1;jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS=!0;jspb.Message.SUPPORTS_UINT8ARRAY_=\"function\"==typeof Uint8Array;jspb.Message.prototype.getJsPbMessageId=function(){return this.messageId_};jspb.Message.getIndex_=function(a,b){return b+a.arrayIndexOffset_};jspb.Message.hiddenES6Property_=function(){};jspb.Message.getFieldNumber_=function(a,b){return b-a.arrayIndexOffset_};\njspb.Message.initialize=function(a,b,c,d,e,f){a.wrappers_=null;b||(b=c?[c]:[]);a.messageId_=c?String(c):void 0;a.arrayIndexOffset_=0===c?-1:0;a.array=b;jspb.Message.initPivotAndExtensionObject_(a,d);a.convertedPrimitiveFields_={};jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS||(a.repeatedFields=e);if(e)for(b=0;b<e.length;b++)c=e[b],c<a.pivot_?(c=jspb.Message.getIndex_(a,c),a.array[c]=a.array[c]||jspb.Message.EMPTY_LIST_SENTINEL_):(jspb.Message.maybeInitEmptyExtensionObject_(a),a.extensionObject_[c]=\na.extensionObject_[c]||jspb.Message.EMPTY_LIST_SENTINEL_);if(f&&f.length)for(b=0;b<f.length;b++)jspb.Message.computeOneofCase(a,f[b])};jspb.Message.EMPTY_LIST_SENTINEL_=goog.DEBUG&&Object.freeze?Object.freeze([]):[];jspb.Message.isArray_=function(a){return jspb.Message.ASSUME_LOCAL_ARRAYS?a instanceof Array:Array.isArray(a)};jspb.Message.isExtensionObject_=function(a){return null!==a&&\"object\"==typeof a&&!jspb.Message.isArray_(a)&&!(jspb.Message.SUPPORTS_UINT8ARRAY_&&a instanceof Uint8Array)};\njspb.Message.initPivotAndExtensionObject_=function(a,b){var c=a.array.length,d=-1;if(c&&(d=c-1,c=a.array[d],jspb.Message.isExtensionObject_(c))){a.pivot_=jspb.Message.getFieldNumber_(a,d);a.extensionObject_=c;return}-1<b?(a.pivot_=Math.max(b,jspb.Message.getFieldNumber_(a,d+1)),a.extensionObject_=null):a.pivot_=Number.MAX_VALUE};jspb.Message.maybeInitEmptyExtensionObject_=function(a){var b=jspb.Message.getIndex_(a,a.pivot_);a.array[b]||(a.extensionObject_=a.array[b]={})};\njspb.Message.toObjectList=function(a,b,c){for(var d=[],e=0;e<a.length;e++)d[e]=b.call(a[e],c,a[e]);return d};jspb.Message.toObjectExtension=function(a,b,c,d,e){for(var f in c){var g=c[f],h=d.call(a,g);if(null!=h){for(var k in g.fieldName)if(g.fieldName.hasOwnProperty(k))break;b[k]=g.toObjectFn?g.isRepeated?jspb.Message.toObjectList(h,g.toObjectFn,e):g.toObjectFn(e,h):h}}};\njspb.Message.serializeBinaryExtensions=function(a,b,c,d){for(var e in c){var f=c[e],g=f.fieldInfo;if(!f.binaryWriterFn)throw Error(\"Message extension present that was generated without binary serialization support\");var h=d.call(a,g);if(null!=h)if(g.isMessageType())if(f.binaryMessageSerializeFn)f.binaryWriterFn.call(b,g.fieldIndex,h,f.binaryMessageSerializeFn);else throw Error(\"Message extension present holding submessage without binary support enabled, and message is being serialized to binary format\");\nelse f.binaryWriterFn.call(b,g.fieldIndex,h)}};jspb.Message.readBinaryExtension=function(a,b,c,d,e){var f=c[b.getFieldNumber()];if(f){c=f.fieldInfo;if(!f.binaryReaderFn)throw Error(\"Deserializing extension whose generated code does not support binary format\");if(c.isMessageType()){var g=new c.ctor;f.binaryReaderFn.call(b,g,f.binaryMessageDeserializeFn)}else g=f.binaryReaderFn.call(b);c.isRepeated&&!f.isPacked?(b=d.call(a,c))?b.push(g):e.call(a,c,[g]):e.call(a,c,g)}else b.skipField()};\njspb.Message.getField=function(a,b){if(b<a.pivot_){b=jspb.Message.getIndex_(a,b);var c=a.array[b];return c===jspb.Message.EMPTY_LIST_SENTINEL_?a.array[b]=[]:c}if(a.extensionObject_)return c=a.extensionObject_[b],c===jspb.Message.EMPTY_LIST_SENTINEL_?a.extensionObject_[b]=[]:c};jspb.Message.getRepeatedField=function(a,b){return jspb.Message.getField(a,b)};jspb.Message.getOptionalFloatingPointField=function(a,b){a=jspb.Message.getField(a,b);return null==a?a:+a};\njspb.Message.getBooleanField=function(a,b){a=jspb.Message.getField(a,b);return null==a?a:!!a};jspb.Message.getRepeatedFloatingPointField=function(a,b){var c=jspb.Message.getRepeatedField(a,b);a.convertedPrimitiveFields_||(a.convertedPrimitiveFields_={});if(!a.convertedPrimitiveFields_[b]){for(var d=0;d<c.length;d++)c[d]=+c[d];a.convertedPrimitiveFields_[b]=!0}return c};\njspb.Message.getRepeatedBooleanField=function(a,b){var c=jspb.Message.getRepeatedField(a,b);a.convertedPrimitiveFields_||(a.convertedPrimitiveFields_={});if(!a.convertedPrimitiveFields_[b]){for(var d=0;d<c.length;d++)c[d]=!!c[d];a.convertedPrimitiveFields_[b]=!0}return c};\njspb.Message.bytesAsB64=function(a){if(null==a||\"string\"===typeof a)return a;if(jspb.Message.SUPPORTS_UINT8ARRAY_&&a instanceof Uint8Array)return goog.crypt.base64.encodeByteArray(a);goog.asserts.fail(\"Cannot coerce to b64 string: \"+goog.typeOf(a));return null};jspb.Message.bytesAsU8=function(a){if(null==a||a instanceof Uint8Array)return a;if(\"string\"===typeof a)return goog.crypt.base64.decodeStringToUint8Array(a);goog.asserts.fail(\"Cannot coerce to Uint8Array: \"+goog.typeOf(a));return null};\njspb.Message.bytesListAsB64=function(a){jspb.Message.assertConsistentTypes_(a);return a.length&&\"string\"!==typeof a[0]?goog.array.map(a,jspb.Message.bytesAsB64):a};jspb.Message.bytesListAsU8=function(a){jspb.Message.assertConsistentTypes_(a);return!a.length||a[0]instanceof Uint8Array?a:goog.array.map(a,jspb.Message.bytesAsU8)};\njspb.Message.assertConsistentTypes_=function(a){if(goog.DEBUG&&a&&1<a.length){var b=goog.typeOf(a[0]);goog.array.forEach(a,function(a){goog.typeOf(a)!=b&&goog.asserts.fail(\"Inconsistent type in JSPB repeated field array. Got \"+goog.typeOf(a)+\" expected \"+b)})}};jspb.Message.getFieldWithDefault=function(a,b,c){a=jspb.Message.getField(a,b);return null==a?c:a};jspb.Message.getBooleanFieldWithDefault=function(a,b,c){a=jspb.Message.getBooleanField(a,b);return null==a?c:a};\njspb.Message.getFloatingPointFieldWithDefault=function(a,b,c){a=jspb.Message.getOptionalFloatingPointField(a,b);return null==a?c:a};jspb.Message.getFieldProto3=jspb.Message.getFieldWithDefault;jspb.Message.getMapField=function(a,b,c,d){a.wrappers_||(a.wrappers_={});if(b in a.wrappers_)return a.wrappers_[b];var e=jspb.Message.getField(a,b);if(!e){if(c)return;e=[];jspb.Message.setField(a,b,e)}return a.wrappers_[b]=new jspb.Map(e,d)};\njspb.Message.setField=function(a,b,c){goog.asserts.assertInstanceof(a,jspb.Message);b<a.pivot_?a.array[jspb.Message.getIndex_(a,b)]=c:(jspb.Message.maybeInitEmptyExtensionObject_(a),a.extensionObject_[b]=c);return a};jspb.Message.setProto3IntField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,0)};jspb.Message.setProto3FloatField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,0)};\njspb.Message.setProto3BooleanField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,!1)};jspb.Message.setProto3StringField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,\"\")};jspb.Message.setProto3BytesField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,\"\")};jspb.Message.setProto3EnumField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,0)};\njspb.Message.setProto3StringIntField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,\"0\")};jspb.Message.setFieldIgnoringDefault_=function(a,b,c,d){goog.asserts.assertInstanceof(a,jspb.Message);c!==d?jspb.Message.setField(a,b,c):b<a.pivot_?a.array[jspb.Message.getIndex_(a,b)]=null:(jspb.Message.maybeInitEmptyExtensionObject_(a),delete a.extensionObject_[b]);return a};\njspb.Message.addToRepeatedField=function(a,b,c,d){goog.asserts.assertInstanceof(a,jspb.Message);b=jspb.Message.getRepeatedField(a,b);void 0!=d?b.splice(d,0,c):b.push(c);return a};jspb.Message.setOneofField=function(a,b,c,d){goog.asserts.assertInstanceof(a,jspb.Message);(c=jspb.Message.computeOneofCase(a,c))&&c!==b&&void 0!==d&&(a.wrappers_&&c in a.wrappers_&&(a.wrappers_[c]=void 0),jspb.Message.setField(a,c,void 0));return jspb.Message.setField(a,b,d)};\njspb.Message.computeOneofCase=function(a,b){for(var c,d,e=0;e<b.length;e++){var f=b[e],g=jspb.Message.getField(a,f);null!=g&&(c=f,d=g,jspb.Message.setField(a,f,void 0))}return c?(jspb.Message.setField(a,c,d),c):0};jspb.Message.getWrapperField=function(a,b,c,d){a.wrappers_||(a.wrappers_={});if(!a.wrappers_[c]){var e=jspb.Message.getField(a,c);if(d||e)a.wrappers_[c]=new b(e)}return a.wrappers_[c]};\njspb.Message.getRepeatedWrapperField=function(a,b,c){jspb.Message.wrapRepeatedField_(a,b,c);b=a.wrappers_[c];b==jspb.Message.EMPTY_LIST_SENTINEL_&&(b=a.wrappers_[c]=[]);return b};jspb.Message.wrapRepeatedField_=function(a,b,c){a.wrappers_||(a.wrappers_={});if(!a.wrappers_[c]){for(var d=jspb.Message.getRepeatedField(a,c),e=[],f=0;f<d.length;f++)e[f]=new b(d[f]);a.wrappers_[c]=e}};\njspb.Message.setWrapperField=function(a,b,c){goog.asserts.assertInstanceof(a,jspb.Message);a.wrappers_||(a.wrappers_={});var d=c?c.toArray():c;a.wrappers_[b]=c;return jspb.Message.setField(a,b,d)};jspb.Message.setOneofWrapperField=function(a,b,c,d){goog.asserts.assertInstanceof(a,jspb.Message);a.wrappers_||(a.wrappers_={});var e=d?d.toArray():d;a.wrappers_[b]=d;return jspb.Message.setOneofField(a,b,c,e)};\njspb.Message.setRepeatedWrapperField=function(a,b,c){goog.asserts.assertInstanceof(a,jspb.Message);a.wrappers_||(a.wrappers_={});c=c||[];for(var d=[],e=0;e<c.length;e++)d[e]=c[e].toArray();a.wrappers_[b]=c;return jspb.Message.setField(a,b,d)};\njspb.Message.addToRepeatedWrapperField=function(a,b,c,d,e){jspb.Message.wrapRepeatedField_(a,d,b);var f=a.wrappers_[b];f||(f=a.wrappers_[b]=[]);c=c?c:new d;a=jspb.Message.getRepeatedField(a,b);void 0!=e?(f.splice(e,0,c),a.splice(e,0,c.toArray())):(f.push(c),a.push(c.toArray()));return c};jspb.Message.toMap=function(a,b,c,d){for(var e={},f=0;f<a.length;f++)e[b.call(a[f])]=c?c.call(a[f],d,a[f]):a[f];return e};\njspb.Message.prototype.syncMapFields_=function(){if(this.wrappers_)for(var a in this.wrappers_){var b=this.wrappers_[a];if(Array.isArray(b))for(var c=0;c<b.length;c++)b[c]&&b[c].toArray();else b&&b.toArray()}};jspb.Message.prototype.toArray=function(){this.syncMapFields_();return this.array};jspb.Message.GENERATE_TO_STRING&&(jspb.Message.prototype.toString=function(){this.syncMapFields_();return this.array.toString()});\njspb.Message.prototype.getExtension=function(a){if(this.extensionObject_){this.wrappers_||(this.wrappers_={});var b=a.fieldIndex;if(a.isRepeated){if(a.isMessageType())return this.wrappers_[b]||(this.wrappers_[b]=goog.array.map(this.extensionObject_[b]||[],function(b){return new a.ctor(b)})),this.wrappers_[b]}else if(a.isMessageType())return!this.wrappers_[b]&&this.extensionObject_[b]&&(this.wrappers_[b]=new a.ctor(this.extensionObject_[b])),this.wrappers_[b];return this.extensionObject_[b]}};\njspb.Message.prototype.setExtension=function(a,b){this.wrappers_||(this.wrappers_={});jspb.Message.maybeInitEmptyExtensionObject_(this);var c=a.fieldIndex;a.isRepeated?(b=b||[],a.isMessageType()?(this.wrappers_[c]=b,this.extensionObject_[c]=goog.array.map(b,function(a){return a.toArray()})):this.extensionObject_[c]=b):a.isMessageType()?(this.wrappers_[c]=b,this.extensionObject_[c]=b?b.toArray():b):this.extensionObject_[c]=b;return this};\njspb.Message.difference=function(a,b){if(!(a instanceof b.constructor))throw Error(\"Messages have different types.\");var c=a.toArray();b=b.toArray();var d=[],e=0,f=c.length>b.length?c.length:b.length;a.getJsPbMessageId()&&(d[0]=a.getJsPbMessageId(),e=1);for(;e<f;e++)jspb.Message.compareFields(c[e],b[e])||(d[e]=b[e]);return new a.constructor(d)};jspb.Message.equals=function(a,b){return a==b||!(!a||!b)&&a instanceof b.constructor&&jspb.Message.compareFields(a.toArray(),b.toArray())};\njspb.Message.compareExtensions=function(a,b){a=a||{};b=b||{};var c={},d;for(d in a)c[d]=0;for(d in b)c[d]=0;for(d in c)if(!jspb.Message.compareFields(a[d],b[d]))return!1;return!0};\njspb.Message.compareFields=function(a,b){if(a==b)return!0;if(!goog.isObject(a)||!goog.isObject(b))return\"number\"===typeof a&&isNaN(a)||\"number\"===typeof b&&isNaN(b)?String(a)==String(b):!1;if(a.constructor!=b.constructor)return!1;if(jspb.Message.SUPPORTS_UINT8ARRAY_&&a.constructor===Uint8Array){if(a.length!=b.length)return!1;for(var c=0;c<a.length;c++)if(a[c]!=b[c])return!1;return!0}if(a.constructor===Array){var d=void 0,e=void 0,f=Math.max(a.length,b.length);for(c=0;c<f;c++){var g=a[c],h=b[c];g&&\ng.constructor==Object&&(goog.asserts.assert(void 0===d),goog.asserts.assert(c===a.length-1),d=g,g=void 0);h&&h.constructor==Object&&(goog.asserts.assert(void 0===e),goog.asserts.assert(c===b.length-1),e=h,h=void 0);if(!jspb.Message.compareFields(g,h))return!1}return d||e?(d=d||{},e=e||{},jspb.Message.compareExtensions(d,e)):!0}if(a.constructor===Object)return jspb.Message.compareExtensions(a,b);throw Error(\"Invalid type in JSPB array\");};jspb.Message.prototype.cloneMessage=function(){return jspb.Message.cloneMessage(this)};\njspb.Message.prototype.clone=function(){return jspb.Message.cloneMessage(this)};jspb.Message.clone=function(a){return jspb.Message.cloneMessage(a)};jspb.Message.cloneMessage=function(a){return new a.constructor(jspb.Message.clone_(a.toArray()))};\njspb.Message.copyInto=function(a,b){goog.asserts.assertInstanceof(a,jspb.Message);goog.asserts.assertInstanceof(b,jspb.Message);goog.asserts.assert(a.constructor==b.constructor,\"Copy source and target message should have the same type.\");a=jspb.Message.clone(a);for(var c=b.toArray(),d=a.toArray(),e=c.length=0;e<d.length;e++)c[e]=d[e];b.wrappers_=a.wrappers_;b.extensionObject_=a.extensionObject_};\njspb.Message.clone_=function(a){if(Array.isArray(a)){for(var b=Array(a.length),c=0;c<a.length;c++){var d=a[c];null!=d&&(b[c]=\"object\"==typeof d?jspb.Message.clone_(goog.asserts.assert(d)):d)}return b}if(jspb.Message.SUPPORTS_UINT8ARRAY_&&a instanceof Uint8Array)return new Uint8Array(a);b={};for(c in a)d=a[c],null!=d&&(b[c]=\"object\"==typeof d?jspb.Message.clone_(goog.asserts.assert(d)):d);return b};jspb.Message.registerMessageType=function(a,b){b.messageId=a};jspb.Message.messageSetExtensions={};\njspb.Message.messageSetExtensionsBinary={};jspb.Export={};\"object\"===typeof exports&&(exports.Map=jspb.Map,exports.Message=jspb.Message,exports.BinaryReader=jspb.BinaryReader,exports.BinaryWriter=jspb.BinaryWriter,exports.ExtensionFieldInfo=jspb.ExtensionFieldInfo,exports.ExtensionFieldBinaryInfo=jspb.ExtensionFieldBinaryInfo,exports.exportSymbol=goog.exportSymbol,exports.inherits=goog.inherits,exports.object={extend:goog.object.extend},exports.typeOf=goog.typeOf);\n","'use strict';\n\nvar $BigInt = global.BigInt;\n\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar numToStr = Number.prototype.toString;\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\tnumToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n","var map = require(\"./map\");\n\nvar getCountryCode = function(localeString) {\n var components = localeString.split(\"_\");\n if (components.length == 2) {\n return components.pop();\n }\n components = localeString.split(\"-\");\n if (components.length == 2) {\n return components.pop();\n }\n return localeString;\n}\n\nexports.getCurrency = function(locale) {\n var countryCode = getCountryCode(locale).toUpperCase();\n if (countryCode in map) {\n return map[countryCode];\n }\n return null;\n}\n\nexports.getLocales = function(currencyCode) {\n currencyCode = currencyCode.toUpperCase();\n var locales = [];\n for (countryCode in map) {\n if (map[countryCode] === currencyCode) {\n locales.push(countryCode);\n }\n }\n return locales;\n}","// Generated using ShowCurrencies.java\nvar map = {\nAD: 'EUR',\nAE: 'AED',\nAF: 'AFN',\nAG: 'XCD',\nAI: 'XCD',\nAL: 'ALL',\nAM: 'AMD',\nAN: 'ANG',\nAO: 'AOA',\nAR: 'ARS',\nAS: 'USD',\nAT: 'EUR',\nAU: 'AUD',\nAW: 'AWG',\nAX: 'EUR',\nAZ: 'AZN',\nBA: 'BAM',\nBB: 'BBD',\nBD: 'BDT',\nBE: 'EUR',\nBF: 'XOF',\nBG: 'BGN',\nBH: 'BHD',\nBI: 'BIF',\nBJ: 'XOF',\nBL: 'EUR',\nBM: 'BMD',\nBN: 'BND',\nBO: 'BOB',\nBQ: 'USD',\nBR: 'BRL',\nBS: 'BSD',\nBT: 'BTN',\nBV: 'NOK',\nBW: 'BWP',\nBY: 'BYR',\nBZ: 'BZD',\nCA: 'CAD',\nCC: 'AUD',\nCD: 'CDF',\nCF: 'XAF',\nCG: 'XAF',\nCH: 'CHF',\nCI: 'XOF',\nCK: 'NZD',\nCL: 'CLP',\nCM: 'XAF',\nCN: 'CNY',\nCO: 'COP',\nCR: 'CRC',\nCU: 'CUP',\nCV: 'CVE',\nCW: 'ANG',\nCX: 'AUD',\nCY: 'EUR',\nCZ: 'CZK',\nDE: 'EUR',\nDJ: 'DJF',\nDK: 'DKK',\nDM: 'XCD',\nDO: 'DOP',\nDZ: 'DZD',\nEC: 'USD',\nEE: 'EUR',\nEG: 'EGP',\nEH: 'MAD',\nER: 'ERN',\nES: 'EUR',\nET: 'ETB',\nFI: 'EUR',\nFJ: 'FJD',\nFK: 'FKP',\nFM: 'USD',\nFO: 'DKK',\nFR: 'EUR',\nGA: 'XAF',\nGB: 'GBP',\nGD: 'XCD',\nGE: 'GEL',\nGF: 'EUR',\nGG: 'GBP',\nGH: 'GHS',\nGI: 'GIP',\nGL: 'DKK',\nGM: 'GMD',\nGN: 'GNF',\nGP: 'EUR',\nGQ: 'XAF',\nGR: 'EUR',\nGS: 'GBP',\nGT: 'GTQ',\nGU: 'USD',\nGW: 'XOF',\nGY: 'GYD',\nHK: 'HKD',\nHM: 'AUD',\nHN: 'HNL',\nHR: 'HRK',\nHT: 'HTG',\nHU: 'HUF',\nID: 'IDR',\nIE: 'EUR',\nIL: 'ILS',\nIM: 'GBP',\nIN: 'INR',\nIO: 'USD',\nIQ: 'IQD',\nIR: 'IRR',\nIS: 'ISK',\nIT: 'EUR',\nJE: 'GBP',\nJM: 'JMD',\nJO: 'JOD',\nJP: 'JPY',\nKE: 'KES',\nKG: 'KGS',\nKH: 'KHR',\nKI: 'AUD',\nKM: 'KMF',\nKN: 'XCD',\nKP: 'KPW',\nKR: 'KRW',\nKW: 'KWD',\nKY: 'KYD',\nKZ: 'KZT',\nLA: 'LAK',\nLB: 'LBP',\nLC: 'XCD',\nLI: 'CHF',\nLK: 'LKR',\nLR: 'LRD',\nLS: 'LSL',\nLT: 'LTL',\nLU: 'EUR',\nLV: 'LVL',\nLY: 'LYD',\nMA: 'MAD',\nMC: 'EUR',\nMD: 'MDL',\nME: 'EUR',\nMF: 'EUR',\nMG: 'MGA',\nMH: 'USD',\nMK: 'MKD',\nML: 'XOF',\nMM: 'MMK',\nMN: 'MNT',\nMO: 'MOP',\nMP: 'USD',\nMQ: 'EUR',\nMR: 'MRO',\nMS: 'XCD',\nMT: 'EUR',\nMU: 'MUR',\nMV: 'MVR',\nMW: 'MWK',\nMX: 'MXN',\nMY: 'MYR',\nMZ: 'MZN',\nNA: 'NAD',\nNC: 'XPF',\nNE: 'XOF',\nNF: 'AUD',\nNG: 'NGN',\nNI: 'NIO',\nNL: 'EUR',\nNO: 'NOK',\nNP: 'NPR',\nNR: 'AUD',\nNU: 'NZD',\nNZ: 'NZD',\nOM: 'OMR',\nPA: 'PAB',\nPE: 'PEN',\nPF: 'XPF',\nPG: 'PGK',\nPH: 'PHP',\nPK: 'PKR',\nPL: 'PLN',\nPM: 'EUR',\nPN: 'NZD',\nPR: 'USD',\nPS: 'ILS',\nPT: 'EUR',\nPW: 'USD',\nPY: 'PYG',\nQA: 'QAR',\nRE: 'EUR',\nRO: 'RON',\nRS: 'RSD',\nRU: 'RUB',\nRW: 'RWF',\nSA: 'SAR',\nSB: 'SBD',\nSC: 'SCR',\nSD: 'SDG',\nSE: 'SEK',\nSG: 'SGD',\nSH: 'SHP',\nSI: 'EUR',\nSJ: 'NOK',\nSK: 'EUR',\nSL: 'SLL',\nSM: 'EUR',\nSN: 'XOF',\nSO: 'SOS',\nSR: 'SRD',\nST: 'STD',\nSV: 'SVC',\nSX: 'ANG',\nSY: 'SYP',\nSZ: 'SZL',\nTC: 'USD',\nTD: 'XAF',\nTF: 'EUR',\nTG: 'XOF',\nTH: 'THB',\nTJ: 'TJS',\nTK: 'NZD',\nTL: 'USD',\nTM: 'TMT',\nTN: 'TND',\nTO: 'TOP',\nTR: 'TRY',\nTT: 'TTD',\nTV: 'AUD',\nTW: 'TWD',\nTZ: 'TZS',\nUA: 'UAH',\nUG: 'UGX',\nUM: 'USD',\nUS: 'USD',\nUY: 'UYU',\nUZ: 'UZS',\nVA: 'EUR',\nVC: 'XCD',\nVE: 'VEF',\nVG: 'USD',\nVI: 'USD',\nVN: 'VND',\nVU: 'VUV',\nWF: 'XPF',\nWS: 'WST',\nYE: 'YER',\nYT: 'EUR',\nZA: 'ZAR',\nZM: 'ZMK',\nZW: 'ZWL'\n};\n\nmodule.exports = map;","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 2; i < arguments.length; i++) {\n walker = insert(this, walker, arguments[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","var simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nfunction index (resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = simpleIsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index], index);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n}\n\nexport default index;\n","(function(){\n var _global = this;\n\n /**\n * JS Implementation of MurmurHash2\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} str ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n function MurmurHashV2(str, seed) {\n var\n l = str.length,\n h = seed ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k =\n ((str.charCodeAt(i) & 0xff)) |\n ((str.charCodeAt(++i) & 0xff) << 8) |\n ((str.charCodeAt(++i) & 0xff) << 16) |\n ((str.charCodeAt(++i) & 0xff) << 24);\n\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n k ^= k >>> 24;\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;\n\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1: h ^= (str.charCodeAt(i) & 0xff);\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n }\n\n h ^= h >>> 13;\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n h ^= h >>> 15;\n\n return h >>> 0;\n };\n\n /**\n * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} key ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n function MurmurHashV3(key, seed) {\n var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i;\n\n remainder = key.length & 3; // key.length % 4\n bytes = key.length - remainder;\n h1 = seed;\n c1 = 0xcc9e2d51;\n c2 = 0x1b873593;\n i = 0;\n\n while (i < bytes) {\n k1 =\n ((key.charCodeAt(i) & 0xff)) |\n ((key.charCodeAt(++i) & 0xff) << 8) |\n ((key.charCodeAt(++i) & 0xff) << 16) |\n ((key.charCodeAt(++i) & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n case 1: k1 ^= (key.charCodeAt(i) & 0xff);\n\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n }\n\n var murmur = MurmurHashV3;\n murmur.v2 = MurmurHashV2;\n murmur.v3 = MurmurHashV3;\n\n if (typeof(module) != 'undefined') {\n module.exports = murmur;\n } else {\n var _previousRoot = _global.murmur;\n murmur.noConflict = function() {\n _global.murmur = _previousRoot;\n return murmur;\n }\n _global.murmur = murmur;\n }\n}());\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if ('cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","module.exports = require('util').inspect;\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tsyms = getSymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif ($propIsEnumerable(source, key)) {\n\t\t\t\t\t$push(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif ($propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In node.js\n// this is pretty straight-forward - we use the crypto API.\n\nvar crypto = require('crypto');\n\nmodule.exports = function nodeRNG() {\n return crypto.randomBytes(16);\n};\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n","'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\nmodule.exports = function whichCollection(value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","class Query {\n constructor(state) {\n this.state = {\n filterExpressions: state.filterExpressions || [],\n selectExpressions: state.selectExpressions || [],\n groupExpressions: state.groupExpressions || [],\n orderExpressions: state.orderExpressions || [],\n calculation: false,\n rawMode: false,\n withDead: false,\n validateRefs: true,\n limit: null,\n offset: null,\n ...state\n };\n }\n\n filter(expr) {\n return new Query({\n ...this.state,\n filterExpressions: [...this.state.filterExpressions, expr]\n });\n }\n\n unfilter(exprs) {\n let exprSet = new Set(exprs);\n return new Query({\n ...this.state,\n filterExpressions: this.state.filterExpressions.filter(\n expr => !exprSet.has(Object.keys(expr)[0])\n )\n });\n }\n\n select(exprs = []) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n let query = new Query({ ...this.state, selectExpressions: exprs });\n query.state.calculation = false;\n return query;\n }\n\n calculate(expr) {\n let query = this.select({ result: expr });\n query.state.calculation = true;\n return query;\n }\n\n groupBy(exprs) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n return new Query({\n ...this.state,\n groupExpressions: [...this.state.groupExpressions, ...exprs]\n });\n }\n\n orderBy(exprs) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n return new Query({\n ...this.state,\n orderExpressions: [...this.state.orderExpressions, ...exprs]\n });\n }\n\n limit(num) {\n return new Query({ ...this.state, limit: num });\n }\n\n offset(num) {\n return new Query({ ...this.state, offset: num });\n }\n\n raw() {\n return new Query({ ...this.state, rawMode: true });\n }\n\n withDead() {\n return new Query({ ...this.state, withDead: true });\n }\n\n withoutValidatedRefs() {\n return new Query({ ...this.state, validateRefs: false });\n }\n\n options(opts) {\n return new Query({ ...this.state, tableOptions: opts });\n }\n\n serialize() {\n return this.state;\n }\n}\n\nfunction getPrimaryOrderBy(query, defaultOrderBy) {\n let orderExprs = query.serialize().orderExpressions;\n if (orderExprs.length === 0) {\n if (defaultOrderBy) {\n return { order: 'asc', ...defaultOrderBy };\n }\n return null;\n }\n\n let firstOrder = orderExprs[0];\n if (typeof firstOrder === 'string') {\n return { field: firstOrder, order: 'asc' };\n }\n // Handle this form: { field: 'desc' }\n let [field] = Object.keys(firstOrder);\n return { field, order: firstOrder[field] };\n}\n\nmodule.exports = function q(table) {\n return new Query({ table });\n};\n","// TODO: comment on why it works this way\n\nlet send;\n\nmodule.exports = { send };\n","const q = require('./app/query');\nconst injected = require('./injected');\n\nfunction send(name, args) {\n return injected.send(name, args);\n}\n\nasync function runImport(name, func) {\n await send('api/start-import', { budgetName: name });\n try {\n await func();\n } catch (e) {\n await send('api/abort-import');\n throw e;\n }\n await send('api/finish-import');\n}\n\nasync function loadBudget(budgetId) {\n return send('api/load-budget', { id: budgetId });\n}\n\nasync function batchBudgetUpdates(func) {\n await send('api/batch-budget-start');\n try {\n await func();\n } finally {\n await send('api/batch-budget-end');\n }\n}\n\nfunction runQuery(query) {\n return send('api/query', { query: query.serialize() });\n}\n\nfunction getBudgetMonths() {\n return send('api/budget-months');\n}\n\nfunction getBudgetMonth(month) {\n return send('api/budget-month', { month });\n}\n\nfunction setBudgetAmount(month, categoryId, value) {\n return send('api/budget-set-amount', { month, categoryId, amount: value });\n}\n\nfunction setBudgetCarryover(month, categoryId, flag) {\n return send('api/budget-set-carryover', { month, categoryId, flag });\n}\n\nfunction addTransactions(accountId, transactions) {\n return send('api/transactions-add', { accountId, transactions });\n}\n\nfunction importTransactions(accountId, transactions) {\n return send('api/transactions-import', { accountId, transactions });\n}\n\nfunction getTransactions(accountId, startDate, endDate) {\n return send('api/transactions-get', { accountId, startDate, endDate });\n}\n\nfunction filterTransactions(accountId, text) {\n return send('api/transactions-filter', { accountId, text });\n}\n\nfunction updateTransaction(id, fields) {\n return send('api/transaction-update', { id, fields });\n}\n\nfunction deleteTransaction(id) {\n return send('api/transaction-delete', { id });\n}\n\nfunction getAccounts() {\n return send('api/accounts-get');\n}\n\nfunction createAccount(account, initialBalance) {\n return send('api/account-create', { account, initialBalance });\n}\n\nfunction updateAccount(id, fields) {\n return send('api/account-update', { id, fields });\n}\n\nfunction closeAccount(id, transferAccountId, transferCategoryId) {\n return send('api/account-close', {\n id,\n transferAccountId,\n transferCategoryId\n });\n}\n\nfunction reopenAccount(id) {\n return send('api/account-reopen', { id });\n}\n\nfunction deleteAccount(id) {\n return send('api/account-delete', { id });\n}\n\nfunction getCategoryGroups() {\n return send('api/categories-get', { grouped: true });\n}\n\nfunction createCategoryGroup(group) {\n return send('api/category-group-create', { group });\n}\n\nfunction updateCategoryGroup(id, fields) {\n return send('api/category-group-update', { id, fields });\n}\n\nfunction deleteCategoryGroup(id, transferCategoryId) {\n return send('api/category-group-delete', { id, transferCategoryId });\n}\n\nfunction getCategories() {\n return send('api/categories-get', { grouped: false });\n}\n\nfunction createCategory(category) {\n return send('api/category-create', { category });\n}\n\nfunction updateCategory(id, fields) {\n return send('api/category-update', { id, fields });\n}\n\nfunction deleteCategory(id, transferCategoryId) {\n return send('api/category-delete', { id, transferCategoryId });\n}\n\nfunction getPayees() {\n return send('api/payees-get');\n}\n\nfunction createPayee(payee) {\n return send('api/payee-create', { payee });\n}\n\nfunction updatePayee(id, fields) {\n return send('api/payee-update', { id, fields });\n}\n\nfunction deletePayee(id) {\n return send('api/payee-delete', { id });\n}\n\nfunction getPayeeRules(payeeId) {\n return send('api/payee-rules-get', { payeeId });\n}\n\nfunction createPayeeRule(payeeId, rule) {\n return send('api/payee-rule-create', { payee_id: payeeId, rule });\n}\n\nfunction updatePayeeRule(id, fields) {\n return send('api/payee-rule-update', { id, fields });\n}\n\nfunction deletePayeeRule(id) {\n return send('api/payee-rule-delete', { id });\n}\n\nmodule.exports = {\n runImport,\n\n runQuery,\n q,\n\n loadBudget,\n batchBudgetUpdates,\n getBudgetMonths,\n getBudgetMonth,\n setBudgetAmount,\n setBudgetCarryover,\n\n addTransactions,\n importTransactions,\n filterTransactions,\n getTransactions,\n updateTransaction,\n deleteTransaction,\n\n getAccounts,\n createAccount,\n updateAccount,\n closeAccount,\n reopenAccount,\n deleteAccount,\n\n getCategories,\n createCategoryGroup,\n updateCategoryGroup,\n deleteCategoryGroup,\n createCategory,\n updateCategory,\n deleteCategory,\n\n getPayees,\n createPayee,\n updatePayee,\n deletePayee,\n getPayeeRules,\n createPayeeRule,\n deletePayeeRule,\n updatePayeeRule\n};\n","const d = require('date-fns');\nconst normalizePathSep = require('slash');\nconst uuid = require('uuid');\nconst AdmZip = require('adm-zip');\nconst actual = require('@actual-app/api/methods');\nconst { amountToInteger } = require('@actual-app/api/utils');\n\n// Utils\n\nfunction mapAccountType(type) {\n switch (type) {\n case 'Cash':\n case 'Checking':\n return 'checking';\n case 'CreditCard':\n return 'credit';\n case 'Savings':\n return 'savings';\n case 'InvestmentAccount':\n return 'investment';\n case 'Mortgage':\n return 'mortgage';\n default:\n return 'other';\n }\n}\n\nfunction sortByKey(arr, key) {\n return [...arr].sort((item1, item2) => {\n if (item1[key] < item2[key]) {\n return -1;\n } else if (item1[key] > item2[key]) {\n return 1;\n }\n return 0;\n });\n}\n\nfunction groupBy(arr, keyName) {\n return arr.reduce(function(obj, item) {\n var key = item[keyName];\n if (!obj.hasOwnProperty(key)) {\n obj[key] = [];\n }\n obj[key].push(item);\n return obj;\n }, {});\n}\n\nfunction _parse(value) {\n if (typeof value === 'string') {\n // We don't want parsing to take local timezone into account,\n // which parsing a string does. Pass the integers manually to\n // bypass it.\n\n let [year, month, day] = value.split('-');\n if (day != null) {\n return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));\n } else if (month != null) {\n return new Date(parseInt(year), parseInt(month) - 1, 1);\n } else {\n return new Date(parseInt(year), 0, 1);\n }\n }\n return value;\n}\n\nfunction monthFromDate(date) {\n return d.format(_parse(date), 'yyyy-MM');\n}\n\nfunction getCurrentMonth() {\n return d.format(new Date(), 'yyyy-MM');\n}\n\n// Importer\n\nasync function importAccounts(data, entityIdMap) {\n return Promise.all(\n data.accounts.map(async account => {\n if (!account.isTombstone) {\n const id = await actual.createAccount({\n type: mapAccountType(account.accountType),\n name: account.accountName,\n offbudget: account.onBudget ? false : true,\n closed: account.hidden ? true : false\n });\n entityIdMap.set(account.entityId, id);\n }\n })\n );\n}\n\nasync function importCategories(data, entityIdMap) {\n const masterCategories = sortByKey(data.masterCategories, 'sortableIndex');\n\n await Promise.all(\n masterCategories.map(async masterCategory => {\n if (\n masterCategory.type === 'OUTFLOW' &&\n !masterCategory.isTombstone &&\n masterCategory.subCategories &&\n masterCategory.subCategories.some(cat => !cat.isTombstone) > 0\n ) {\n const id = await actual.createCategoryGroup({\n name: masterCategory.name,\n is_income: false\n });\n entityIdMap.set(masterCategory.entityId, id);\n\n if (masterCategory.subCategories) {\n const subCategories = sortByKey(\n masterCategory.subCategories,\n 'sortableIndex'\n );\n subCategories.reverse();\n\n // This can't be done in parallel because sort order depends\n // on insertion order\n for (let category of subCategories) {\n if (!category.isTombstone) {\n const id = await actual.createCategory({\n name: category.name,\n group_id: entityIdMap.get(category.masterCategoryId)\n });\n entityIdMap.set(category.entityId, id);\n }\n }\n }\n }\n })\n );\n}\n\nasync function importPayees(data, entityIdMap) {\n for (let payee of data.payees) {\n if (!payee.isTombstone) {\n let id = await actual.createPayee({\n name: payee.name,\n category: entityIdMap.get(payee.autoFillCategoryId) || null,\n transfer_acct: entityIdMap.get(payee.targetAccountId) || null\n });\n\n // TODO: import payee rules\n\n entityIdMap.set(payee.entityId, id);\n }\n }\n}\n\nasync function importTransactions(data, entityIdMap) {\n const categories = await actual.getCategories();\n const incomeCategoryId = categories.find(cat => cat.name === 'Income').id;\n const accounts = await actual.getAccounts();\n const payees = await actual.getPayees();\n\n function getCategory(id) {\n if (id == null || id === 'Category/__Split__') {\n return null;\n } else if (\n id === 'Category/__ImmediateIncome__' ||\n id === 'Category/__DeferredIncome__'\n ) {\n return incomeCategoryId;\n }\n return entityIdMap.get(id);\n }\n\n function isOffBudget(acctId) {\n let acct = accounts.find(acct => acct.id === acctId);\n if (!acct) {\n throw new Error('Could not find account for transaction when importing');\n }\n return acct.offbudget;\n }\n\n // Go ahead and generate ids for all of the transactions so we can\n // reliably resolve transfers\n for (let transaction of data.transactions) {\n entityIdMap.set(transaction.entityId, uuid.v4());\n }\n\n let sortOrder = 1;\n let transactionsGrouped = groupBy(data.transactions, 'accountId');\n\n await Promise.all(\n Object.keys(transactionsGrouped).map(async accountId => {\n let transactions = transactionsGrouped[accountId];\n\n let toImport = transactions\n .map(transaction => {\n if (transaction.isTombstone) {\n return;\n }\n\n let id = entityIdMap.get(transaction.entityId);\n let transferId =\n entityIdMap.get(transaction.transferTransactionId) || null;\n\n let payee = null;\n if (transferId) {\n payee = payees.find(\n p =>\n p.transfer_acct === entityIdMap.get(transaction.targetAccountId)\n ).id;\n } else {\n payee = entityIdMap.get(transaction.payeeId);\n }\n\n let newTransaction = {\n id,\n amount: amountToInteger(transaction.amount),\n category: isOffBudget(entityIdMap.get(accountId))\n ? null\n : getCategory(transaction.categoryId),\n date: transaction.date,\n notes: transaction.memo || null,\n payee,\n transfer_id: transferId\n };\n\n newTransaction.subtransactions =\n transaction.subTransactions &&\n transaction.subTransactions.map((t, i) => {\n return {\n amount: amountToInteger(t.amount),\n category: getCategory(t.categoryId)\n };\n });\n\n return newTransaction;\n })\n .filter(x => x);\n\n await actual.addTransactions(entityIdMap.get(accountId), toImport);\n })\n );\n}\n\nfunction fillInBudgets(data, categoryBudgets) {\n // YNAB only contains entries for categories that have been actually\n // budgeted. That would be fine except that we need to set the\n // \"carryover\" flag on each month when carrying debt across months.\n // To make sure our system has a chance to set this flag on each\n // category, make sure a budget exists for every category of every\n // month.\n const budgets = [...categoryBudgets];\n data.masterCategories.forEach(masterCategory => {\n if (masterCategory.subCategories) {\n masterCategory.subCategories.forEach(category => {\n if (!budgets.find(b => b.categoryId === category.entityId)) {\n budgets.push({\n budgeted: 0,\n categoryId: category.entityId\n });\n }\n });\n }\n });\n return budgets;\n}\n\nasync function importBudgets(data, entityIdMap) {\n let budgets = sortByKey(data.monthlyBudgets, 'month');\n let earliestMonth = monthFromDate(budgets[0].month);\n let currentMonth = getCurrentMonth();\n\n await actual.batchBudgetUpdates(async () => {\n const carryoverFlags = {};\n\n for (let budget of budgets) {\n let filled = fillInBudgets(\n data,\n budget.monthlySubCategoryBudgets.filter(b => !b.isTombstone)\n );\n\n await Promise.all(\n filled.map(async catBudget => {\n let amount = amountToInteger(catBudget.budgeted);\n let catId = entityIdMap.get(catBudget.categoryId);\n let month = monthFromDate(budget.month);\n if (!catId) {\n return;\n }\n\n await actual.setBudgetAmount(month, catId, amount);\n\n if (catBudget.overspendingHandling === 'AffectsBuffer') {\n // Turn off the carryover flag so it doesn't propagate\n // to future months\n carryoverFlags[catId] = false;\n } else if (\n catBudget.overspendingHandling === 'Confined' ||\n carryoverFlags[catId]\n ) {\n // Overspending has switched to carryover, set the\n // flag so it propagates to future months\n carryoverFlags[catId] = true;\n\n await actual.setBudgetCarryover(month, catId, true);\n }\n })\n );\n }\n });\n}\n\nfunction estimateRecentness(str) {\n // The \"recentness\" is the total amount of changes that this device\n // is aware of, which is estimated by summing up all of the version\n // numbers that its aware of. This works because version numbers are\n // increasing integers.\n return str.split(',').reduce((total, version) => {\n const [_, number] = version.split('-');\n return total + parseInt(number);\n }, 0);\n}\n\nfunction findLatestDevice(zipped, entries) {\n let devices = entries\n .map(entry => {\n const contents = zipped.readFile(entry).toString('utf8');\n\n let data;\n try {\n data = JSON.parse(contents);\n } catch (e) {\n return null;\n }\n\n if (data.hasFullKnowledge) {\n return {\n deviceGUID: data.deviceGUID,\n shortName: data.shortDeviceId,\n recentness: estimateRecentness(data.knowledge)\n };\n }\n\n return null;\n })\n .filter(x => x);\n\n devices = sortByKey(devices, 'recentness');\n return devices[devices.length - 1].deviceGUID;\n}\n\nasync function doImport(data) {\n const entityIdMap = new Map();\n\n console.log('Importing Accounts...');\n await importAccounts(data, entityIdMap);\n\n console.log('Importing Categories...');\n await importCategories(data, entityIdMap);\n\n console.log('Importing Payees...');\n await importPayees(data, entityIdMap);\n\n console.log('Importing Transactions...');\n await importTransactions(data, entityIdMap);\n\n console.log('Importing Budgets...');\n await importBudgets(data, entityIdMap);\n\n console.log('Setting up...');\n}\n\nfunction getBudgetName(filepath) {\n let unixFilepath = normalizePathSep(filepath);\n\n if (!/\\.zip/.test(unixFilepath)) {\n return null;\n }\n\n unixFilepath = unixFilepath.replace(/\\.zip$/, '').replace(/.ynab4$/, '');\n\n // Most budgets are named like \"Budget~51938D82.ynab4\" but sometimes\n // they are only \"Budget.ynab4\". We only want to grab the name\n // before the ~ if it exists.\n let m = unixFilepath.match(/([^/~]+)[^/]*$/);\n if (!m) {\n return null;\n }\n return m[1];\n}\n\nfunction getFile(entries, path) {\n let files = entries.filter(e => e.entryName === path);\n if (files.length === 0) {\n throw new Error('Could not find file: ' + path);\n }\n if (files.length >= 2) {\n throw new Error('File name matches multiple files: ' + path);\n }\n return files[0];\n}\n\nfunction join(...paths) {\n return paths.slice(1).reduce((full, path) => {\n return full + '/' + path.replace(/^\\//, '');\n }, paths[0].replace(/\\/$/, ''));\n}\n\nasync function importBuffer(filepath, buffer) {\n let budgetName = getBudgetName(filepath);\n\n if (!budgetName) {\n throw new Error('Not a YNAB4 file: ' + filepath);\n }\n\n let zipped = new AdmZip(buffer);\n let entries = zipped.getEntries();\n\n let root = '';\n let dirMatch = entries[0].entryName.match(/([^/]*\\.ynab4)/);\n if (dirMatch) {\n root = dirMatch[1] + '/';\n }\n\n let metaStr = zipped.readFile(getFile(entries, root + 'Budget.ymeta'));\n let meta = JSON.parse(metaStr.toString('utf8'));\n let budgetPath = join(root, meta.relativeDataFolderName);\n\n let deviceFiles = entries.filter(e =>\n e.entryName.startsWith(join(budgetPath, 'devices'))\n );\n let deviceGUID = findLatestDevice(zipped, deviceFiles);\n\n const yfullPath = join(budgetPath, deviceGUID, 'Budget.yfull');\n let contents;\n try {\n contents = zipped.readFile(getFile(entries, yfullPath)).toString('utf8');\n } catch (e) {\n console.log(e);\n throw new Error('Error reading Budget.yfull file');\n }\n\n let data;\n try {\n data = JSON.parse(contents);\n } catch (e) {\n throw new Error('Error parsing Budget.yull file');\n }\n\n return actual.runImport(budgetName, () => doImport(data));\n}\n\nmodule.exports = { importBuffer };\n","function amountToInteger(n) {\n return Math.round(n * 100) | 0;\n}\n\nfunction integerToAmount(n) {\n return parseFloat((n / 100).toFixed(2));\n}\n\nmodule.exports = { amountToInteger, integerToAmount };\n","const d = require('date-fns');\nconst uuid = require('uuid');\nconst actual = require('@actual-app/api/methods');\nconst { amountToInteger } = require('@actual-app/api/utils');\n\nfunction amountFromYnab(amount) {\n // ynabs multiplies amount by 1000 and actual by 100\n // so, this function divides by 10\n return Math.round(amount / 10);\n}\n\nfunction monthFromDate(date) {\n let parts = date.split('-');\n return parts[0] + '-' + parts[1];\n}\n\nfunction mapAccountType(type) {\n switch (type) {\n case 'cash':\n case 'checking':\n return 'checking';\n case 'creditCard':\n case 'lineOfCredit':\n return 'credit';\n case 'savings':\n return 'savings';\n case 'investmentAccount':\n return 'investment';\n case 'mortgage':\n return 'mortgage';\n default:\n return 'other';\n }\n}\n\nfunction sortByKey(arr, key) {\n return [...arr].sort((item1, item2) => {\n if (item1[key] < item2[key]) {\n return -1;\n } else if (item1[key] > item2[key]) {\n return 1;\n }\n return 0;\n });\n}\n\nfunction groupBy(arr, keyName) {\n return arr.reduce(function(obj, item) {\n var key = item[keyName];\n if (!obj.hasOwnProperty(key)) {\n obj[key] = [];\n }\n obj[key].push(item);\n return obj;\n }, {});\n}\n\nfunction importAccounts(data, entityIdMap) {\n return Promise.all(\n data.accounts.map(async account => {\n if (!account.deleted) {\n let id = await actual.createAccount({\n type: mapAccountType(account.type),\n name: account.name,\n offbudget: account.on_budget ? false : true,\n closed: account.closed\n });\n entityIdMap.set(account.id, id);\n }\n })\n );\n}\n\nasync function importCategories(data, entityIdMap) {\n // Hidden categories are put in its own group by YNAB,\n // so it's already handled.\n\n const categories = await actual.getCategories();\n const incomeCatId = categories.find(cat => cat.name === 'Income').id;\n const ynabIncomeCategories = ['To be Budgeted', 'Inflow: Ready to Assign'];\n\n function checkSpecialCat(cat) {\n if (\n cat.category_group_id ===\n data.category_groups.find(\n group => group.name === 'Internal Master Category'\n ).id\n ) {\n if (ynabIncomeCategories.includes(cat.name)) {\n return 'income';\n } else {\n return 'internal';\n }\n } else if (\n cat.category_group_id ===\n data.category_groups.find(group => group.name === 'Credit Card Payments')\n .id\n ) {\n return 'creditCard';\n }\n }\n // Can't be done in parallel to have\n // correct sort order.\n\n for (let group of data.category_groups) {\n if (!group.deleted) {\n // Ignores internal category and credit cards\n if (\n group.name !== 'Internal Master Category' &&\n group.name !== 'Credit Card Payments'\n ) {\n var groupId = await actual.createCategoryGroup({\n name: group.name,\n is_income: false\n });\n entityIdMap.set(group.id, groupId);\n }\n\n let cats = data.categories.filter(\n cat => cat.category_group_id === group.id\n );\n\n for (let cat of cats.reverse()) {\n if (!cat.deleted) {\n let newCategory = {};\n newCategory.name = cat.name;\n\n // Handles special categories. Starting balance is a payee\n // in YNAB so it's handled in importTransactions\n switch (checkSpecialCat(cat)) {\n case 'income': {\n // doesn't create new category, only assigns id\n let id = incomeCatId;\n entityIdMap.set(cat.id, id);\n break;\n }\n case 'creditCard': // ignores it\n case 'internal': // uncategorized is ignored too, handled by actual\n break;\n default: {\n newCategory.group_id = groupId;\n let id = await actual.createCategory(newCategory);\n entityIdMap.set(cat.id, id);\n break;\n }\n }\n }\n }\n }\n }\n}\n\nfunction importPayees(data, entityIdMap) {\n return Promise.all(\n data.payees.map(async payee => {\n if (!payee.deleted) {\n let id = await actual.createPayee({\n name: payee.name\n });\n entityIdMap.set(payee.id, id);\n }\n })\n );\n}\n\nasync function importTransactions(data, entityIdMap) {\n const payees = await actual.getPayees();\n const categories = await actual.getCategories();\n const incomeCatId = categories.find(cat => cat.name === 'Income').id;\n const startingBalanceCatId = categories.find(\n cat => cat.name === 'Starting Balances'\n ).id; //better way to do it?\n const startingPayeeYNAB = data.payees.find(\n payee => payee.name === 'Starting Balance'\n ).id;\n\n let transactionsGrouped = groupBy(data.transactions, 'account_id');\n let subtransactionsGrouped = groupBy(data.subtransactions, 'transaction_id');\n\n // Go ahead and generate ids for all of the transactions so we can\n // reliably resolve transfers\n for (let transaction of data.transactions) {\n entityIdMap.set(transaction.id, uuid.v4());\n }\n\n await Promise.all(\n Object.keys(transactionsGrouped).map(async accountId => {\n let transactions = transactionsGrouped[accountId];\n\n let toImport = transactions\n .map(transaction => {\n if (transaction.deleted) {\n return null;\n }\n\n // Handle subtransactions\n let subtransactions = subtransactionsGrouped[transaction.id];\n if (subtransactions) {\n subtransactions = subtransactions.map(subtrans => {\n return {\n amount: amountFromYnab(subtrans.amount),\n category: entityIdMap.get(subtrans.category_id) || null,\n notes: subtrans.memo\n };\n });\n }\n\n // Add transaction\n let newTransaction = {\n id: entityIdMap.get(transaction.id),\n account: entityIdMap.get(transaction.account_id),\n date: transaction.date,\n amount: amountFromYnab(transaction.amount),\n category: entityIdMap.get(transaction.category_id) || null,\n cleared: ['cleared', 'reconciled'].includes(transaction.cleared),\n notes: transaction.memo || null,\n imported_id: transaction.import_id || null,\n transfer_id:\n entityIdMap.get(transaction.transfer_transaction_id) || null,\n subtransactions: subtransactions\n };\n\n // Handle transfer payee\n if (transaction.transfer_account_id) {\n newTransaction.payee = payees.find(\n p =>\n p.transfer_acct ===\n entityIdMap.get(transaction.transfer_account_id)\n ).id;\n } else {\n newTransaction.payee = entityIdMap.get(transaction.payee_id);\n }\n\n // Handle starting balances\n if (\n transaction.payee_id === startingPayeeYNAB &&\n entityIdMap.get(transaction.category_id) === incomeCatId\n ) {\n newTransaction.category = startingBalanceCatId;\n newTransaction.payee = null;\n }\n return newTransaction;\n })\n .filter(x => x);\n\n await actual.addTransactions(entityIdMap.get(accountId), toImport);\n })\n );\n}\n\nasync function importBudgets(data, entityIdMap) {\n // There should be info in the docs to deal with\n // no credit card category and how YNAB and Actual\n // handle differently the amount To be Budgeted\n // i.e. Actual considers the cc debt while YNAB doesn't\n //\n // Also, there could be a way to set rollover using\n // Deferred Income Subcat and Immediate Income Subcat\n\n let budgets = sortByKey(data.months, 'month');\n\n const internalCatIdYnab = data.category_groups.find(\n group => group.name === 'Internal Master Category'\n ).id;\n const creditcardCatIdYnab = data.category_groups.find(\n group => group.name === 'Credit Card Payments'\n ).id;\n\n await actual.batchBudgetUpdates(async () => {\n for (let budget of budgets) {\n let month = monthFromDate(budget.month);\n\n await Promise.all(\n budget.categories.map(async catBudget => {\n let catId = entityIdMap.get(catBudget.id);\n let amount = catBudget.budgeted / 10;\n\n if (\n !catId ||\n catBudget.category_group_id === internalCatIdYnab ||\n catBudget.category_group_id === creditcardCatIdYnab\n ) {\n return;\n }\n\n await actual.setBudgetAmount(month, catId, amount);\n })\n );\n }\n });\n}\n\n// Utils\n\nasync function doImport(data) {\n const entityIdMap = new Map();\n\n console.log('Importing Accounts...');\n await importAccounts(data, entityIdMap);\n\n console.log('Importing Categories...');\n await importCategories(data, entityIdMap);\n\n console.log('Importing Payees...');\n await importPayees(data, entityIdMap);\n\n console.log('Importing Transactions...');\n await importTransactions(data, entityIdMap);\n\n console.log('Importing Budgets...');\n await importBudgets(data, entityIdMap);\n\n console.log('Setting up...');\n}\n\nasync function importYNAB5(data) {\n if (data.data) {\n data = data.data;\n }\n\n return actual.runImport(data.budget.name, () => doImport(data.budget));\n}\n\nmodule.exports = { importYNAB5 };\n","function amountToInteger(n) {\n return Math.round(n * 100) | 0;\n}\n\nfunction integerToAmount(n) {\n return parseFloat((n / 100).toFixed(2));\n}\n\nmodule.exports = { amountToInteger, integerToAmount };\n","export default async function runMigration(db, uuid) {\n function getValue(node) {\n return node.expr != null ? node.expr : node.cachedValue;\n }\n\n db.execQuery(`\nCREATE TABLE zero_budget_months\n (id TEXT PRIMARY KEY,\n buffered INTEGER DEFAULT 0); \n\nCREATE TABLE zero_budgets\n (id TEXT PRIMARY KEY,\n month INTEGER,\n category TEXT,\n amount INTEGER DEFAULT 0,\n carryover INTEGER DEFAULT 0);\n\nCREATE TABLE reflect_budgets\n (id TEXT PRIMARY KEY,\n month INTEGER,\n category TEXT,\n amount INTEGER DEFAULT 0,\n carryover INTEGER DEFAULT 0);\n\nCREATE TABLE notes\n (id TEXT PRIMARY KEY,\n note TEXT);\n\nCREATE TABLE kvcache (key TEXT PRIMARY KEY, value TEXT);\nCREATE TABLE kvcache_key (id INTEGER PRIMARY KEY, key REAL);\n`);\n\n // Migrate budget amounts and carryover\n let budget = db.runQuery(\n `SELECT * FROM spreadsheet_cells WHERE name LIKE 'budget%!budget-%'`,\n [],\n true\n );\n db.transaction(() => {\n budget.map(monthBudget => {\n let match = monthBudget.name.match(\n /^(budget-report|budget)(\\d+)!budget-(.+)$/\n );\n if (match == null) {\n console.log('Warning: invalid budget month name', monthBudget.name);\n return;\n }\n\n let type = match[1];\n let month = match[2].slice(0, 4) + '-' + match[2].slice(4);\n let dbmonth = parseInt(match[2]);\n let cat = match[3];\n\n let amount = parseInt(getValue(monthBudget));\n if (isNaN(amount)) {\n amount = 0;\n }\n\n let sheetName = monthBudget.name.split('!')[0];\n let carryover = db.runQuery(\n 'SELECT * FROM spreadsheet_cells WHERE name = ?',\n [`${sheetName}!carryover-${cat}`],\n true\n );\n\n let table = type === 'budget-report' ? 'reflect_budgets' : 'zero_budgets';\n db.runQuery(\n `INSERT INTO ${table} (id, month, category, amount, carryover) VALUES (?, ?, ?, ?, ?)`,\n [\n `${month}-${cat}`,\n dbmonth,\n cat,\n amount,\n carryover.length > 0 && getValue(carryover[0]) === 'true' ? 1 : 0\n ]\n );\n });\n });\n\n // Migrate buffers\n let buffers = db.runQuery(\n `SELECT * FROM spreadsheet_cells WHERE name LIKE 'budget%!buffered'`,\n [],\n true\n );\n db.transaction(() => {\n buffers.map(buffer => {\n let match = buffer.name.match(/^budget(\\d+)!buffered$/);\n if (match) {\n let month = match[1].slice(0, 4) + '-' + match[1].slice(4);\n let amount = parseInt(getValue(buffer));\n if (isNaN(amount)) {\n amount = 0;\n }\n\n db.runQuery(\n `INSERT INTO zero_budget_months (id, buffered) VALUES (?, ?)`,\n [month, amount]\n );\n }\n });\n });\n\n // Migrate notes\n let notes = db.runQuery(\n `SELECT * FROM spreadsheet_cells WHERE name LIKE 'notes!%'`,\n [],\n true\n );\n\n let parseNote = str => {\n try {\n let value = JSON.parse(str);\n return value && value !== '' ? value : null;\n } catch (e) {\n return null;\n }\n };\n\n db.transaction(() => {\n notes.forEach(note => {\n let parsed = parseNote(getValue(note));\n if (parsed) {\n let [, id] = note.name.split('!');\n db.runQuery(`INSERT INTO notes (id, note) VALUES (?, ?)`, [id, parsed]);\n }\n });\n });\n\n db.execQuery(`\n DROP TABLE spreadsheet_cells;\n ANALYZE;\n VACUUM;\n `);\n}\n","var Utils = require(\"./util\");\nvar fs = Utils.FileSystem.require(),\n\tpth = require(\"path\");\n\nfs.existsSync = fs.existsSync || pth.existsSync;\n\nvar ZipEntry = require(\"./zipEntry\"),\n\tZipFile = require(\"./zipFile\");\n\nvar isWin = /^win/.test(process.platform);\n\n\nmodule.exports = function (/*String*/input) {\n\tvar _zip = undefined,\n\t\t_filename = \"\";\n\n\tif (input && typeof input === \"string\") { // load zip file\n\t\tif (fs.existsSync(input)) {\n\t\t\t_filename = input;\n\t\t\t_zip = new ZipFile(input, Utils.Constants.FILE);\n\t\t} else {\n\t\t\tthrow Utils.Errors.INVALID_FILENAME;\n\t\t}\n\t} else if (input && Buffer.isBuffer(input)) { // load buffer\n\t\t_zip = new ZipFile(input, Utils.Constants.BUFFER);\n\t} else { // create new zip file\n\t\t_zip = new ZipFile(null, Utils.Constants.NONE);\n\t}\n\n\tfunction sanitize(prefix, name) {\n\t\tprefix = pth.resolve(pth.normalize(prefix));\n\t\tvar parts = name.split('/');\n\t\tfor (var i = 0, l = parts.length; i < l; i++) {\n\t\t\tvar path = pth.normalize(pth.join(prefix, parts.slice(i, l).join(pth.sep)));\n\t\t\tif (path.indexOf(prefix) === 0) {\n\t\t\t\treturn path;\n\t\t\t}\n\t\t}\n\t\treturn pth.normalize(pth.join(prefix, pth.basename(name)));\n\t}\n\n\tfunction getEntry(/*Object*/entry) {\n\t\tif (entry && _zip) {\n\t\t\tvar item;\n\t\t\t// If entry was given as a file name\n\t\t\tif (typeof entry === \"string\")\n\t\t\t\titem = _zip.getEntry(entry);\n\t\t\t// if entry was given as a ZipEntry object\n\t\t\tif (typeof entry === \"object\" && typeof entry.entryName !== \"undefined\" && typeof entry.header !== \"undefined\")\n\t\t\t\titem = _zip.getEntry(entry.entryName);\n\n\t\t\tif (item) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t/**\n\t\t * Extracts the given entry from the archive and returns the content as a Buffer object\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t *\n\t\t * @return Buffer or Null in case of error\n\t\t */\n\t\treadFile: function (/*Object*/entry) {\n\t\t\tvar item = getEntry(entry);\n\t\t\treturn item && item.getData() || null;\n\t\t},\n\n\t\t/**\n\t\t * Asynchronous readFile\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t * @param callback\n\t\t *\n\t\t * @return Buffer or Null in case of error\n\t\t */\n\t\treadFileAsync: function (/*Object*/entry, /*Function*/callback) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\titem.getDataAsync(callback);\n\t\t\t} else {\n\t\t\t\tcallback(null, \"getEntry failed for:\" + entry)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extracts the given entry from the archive and returns the content as plain text in the given encoding\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t * @param encoding Optional. If no encoding is specified utf8 is used\n\t\t *\n\t\t * @return String\n\t\t */\n\t\treadAsText: function (/*Object*/entry, /*String - Optional*/encoding) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\tvar data = item.getData();\n\t\t\t\tif (data && data.length) {\n\t\t\t\t\treturn data.toString(encoding || \"utf8\");\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t},\n\n\t\t/**\n\t\t * Asynchronous readAsText\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t * @param callback\n\t\t * @param encoding Optional. If no encoding is specified utf8 is used\n\t\t *\n\t\t * @return String\n\t\t */\n\t\treadAsTextAsync: function (/*Object*/entry, /*Function*/callback, /*String - Optional*/encoding) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\titem.getDataAsync(function (data, err) {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tcallback(data, err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data && data.length) {\n\t\t\t\t\t\tcallback(data.toString(encoding || \"utf8\"));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(\"\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tcallback(\"\");\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove the entry from the file or the entry and all it's nested directories and files if the given entry is a directory\n\t\t *\n\t\t * @param entry\n\t\t */\n\t\tdeleteFile: function (/*Object*/entry) { // @TODO: test deleteFile\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\t_zip.deleteEntry(item.entryName);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Adds a comment to the zip. The zip must be rewritten after adding the comment.\n\t\t *\n\t\t * @param comment\n\t\t */\n\t\taddZipComment: function (/*String*/comment) { // @TODO: test addZipComment\n\t\t\t_zip.comment = comment;\n\t\t},\n\n\t\t/**\n\t\t * Returns the zip comment\n\t\t *\n\t\t * @return String\n\t\t */\n\t\tgetZipComment: function () {\n\t\t\treturn _zip.comment || '';\n\t\t},\n\n\t\t/**\n\t\t * Adds a comment to a specified zipEntry. The zip must be rewritten after adding the comment\n\t\t * The comment cannot exceed 65535 characters in length\n\t\t *\n\t\t * @param entry\n\t\t * @param comment\n\t\t */\n\t\taddZipEntryComment: function (/*Object*/entry, /*String*/comment) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\titem.comment = comment;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Returns the comment of the specified entry\n\t\t *\n\t\t * @param entry\n\t\t * @return String\n\t\t */\n\t\tgetZipEntryComment: function (/*Object*/entry) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\treturn item.comment || '';\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\n\t\t/**\n\t\t * Updates the content of an existing entry inside the archive. The zip must be rewritten after updating the content\n\t\t *\n\t\t * @param entry\n\t\t * @param content\n\t\t */\n\t\tupdateFile: function (/*Object*/entry, /*Buffer*/content) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\titem.setData(content);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Adds a file from the disk to the archive\n\t\t *\n\t\t * @param localPath File to add to zip\n\t\t * @param zipPath Optional path inside the zip\n\t\t * @param zipName Optional name for the file\n\t\t */\n\t\taddLocalFile: function (/*String*/localPath, /*String*/zipPath, /*String*/zipName) {\n\t\t\tif (fs.existsSync(localPath)) {\n\t\t\t\tif (zipPath) {\n\t\t\t\t\tzipPath = zipPath.split(\"\\\\\").join(\"/\");\n\t\t\t\t\tif (zipPath.charAt(zipPath.length - 1) !== \"/\") {\n\t\t\t\t\t\tzipPath += \"/\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tzipPath = \"\";\n\t\t\t\t}\n\t\t\t\tvar p = localPath.split(\"\\\\\").join(\"/\").split(\"/\").pop();\n\n\t\t\t\tif (zipName) {\n\t\t\t\t\tthis.addFile(zipPath + zipName, fs.readFileSync(localPath), \"\", 0)\n\t\t\t\t} else {\n\t\t\t\t\tthis.addFile(zipPath + p, fs.readFileSync(localPath), \"\", 0)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Adds a local directory and all its nested files and directories to the archive\n\t\t *\n\t\t * @param localPath\n\t\t * @param zipPath optional path inside zip\n\t\t * @param filter optional RegExp or Function if files match will\n\t\t * be included.\n\t\t */\n\t\taddLocalFolder: function (/*String*/localPath, /*String*/zipPath, /*RegExp|Function*/filter) {\n\t\t\tif (filter === undefined) {\n\t\t\t\tfilter = function () {\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t} else if (filter instanceof RegExp) {\n\t\t\t\tfilter = function (filter) {\n\t\t\t\t\treturn function (filename) {\n\t\t\t\t\t\treturn filter.test(filename);\n\t\t\t\t\t}\n\t\t\t\t}(filter);\n\t\t\t}\n\n\t\t\tif (zipPath) {\n\t\t\t\tzipPath = zipPath.split(\"\\\\\").join(\"/\");\n\t\t\t\tif (zipPath.charAt(zipPath.length - 1) !== \"/\") {\n\t\t\t\t\tzipPath += \"/\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tzipPath = \"\";\n\t\t\t}\n\t\t\t// normalize the path first\n\t\t\tlocalPath = pth.normalize(localPath);\n\t\t\tlocalPath = localPath.split(\"\\\\\").join(\"/\"); //windows fix\n\t\t\tif (localPath.charAt(localPath.length - 1) !== \"/\")\n\t\t\t\tlocalPath += \"/\";\n\n\t\t\tif (fs.existsSync(localPath)) {\n\n\t\t\t\tvar items = Utils.findFiles(localPath),\n\t\t\t\t\tself = this;\n\n\t\t\t\tif (items.length) {\n\t\t\t\t\titems.forEach(function (path) {\n\t\t\t\t\t\tvar p = path.split(\"\\\\\").join(\"/\").replace(new RegExp(localPath.replace(/(\\(|\\))/g, '\\\\$1'), 'i'), \"\"); //windows fix\n\t\t\t\t\t\tif (filter(p)) {\n\t\t\t\t\t\t\tif (p.charAt(p.length - 1) !== \"/\") {\n\t\t\t\t\t\t\t\tself.addFile(zipPath + p, fs.readFileSync(path), \"\", 0)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.addFile(zipPath + p, Buffer.alloc(0), \"\", 0)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Allows you to create a entry (file or directory) in the zip file.\n\t\t * If you want to create a directory the entryName must end in / and a null buffer should be provided.\n\t\t * Comment and attributes are optional\n\t\t *\n\t\t * @param entryName\n\t\t * @param content\n\t\t * @param comment\n\t\t * @param attr\n\t\t */\n\t\taddFile: function (/*String*/entryName, /*Buffer*/content, /*String*/comment, /*Number*/attr) {\n\t\t\tvar entry = new ZipEntry();\n\t\t\tentry.entryName = entryName;\n\t\t\tentry.comment = comment || \"\";\n\n\t\t\tif (!attr) {\n\t\t\t\tif (entry.isDirectory) {\n\t\t\t\t\tattr = (0o40755 << 16) | 0x10; // (permissions drwxr-xr-x) + (MS-DOS directory flag)\n\t\t\t\t} else {\n\t\t\t\t\tattr = 0o644 << 16; // permissions -r-wr--r--\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tentry.attr = attr;\n\n\t\t\tentry.setData(content);\n\t\t\t_zip.setEntry(entry);\n\t\t},\n\n\t\t/**\n\t\t * Returns an array of ZipEntry objects representing the files and folders inside the archive\n\t\t *\n\t\t * @return Array\n\t\t */\n\t\tgetEntries: function () {\n\t\t\tif (_zip) {\n\t\t\t\treturn _zip.entries;\n\t\t\t} else {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Returns a ZipEntry object representing the file or folder specified by ``name``.\n\t\t *\n\t\t * @param name\n\t\t * @return ZipEntry\n\t\t */\n\t\tgetEntry: function (/*String*/name) {\n\t\t\treturn getEntry(name);\n\t\t},\n\n\t\t/**\n\t\t * Extracts the given entry to the given targetPath\n\t\t * If the entry is a directory inside the archive, the entire directory and it's subdirectories will be extracted\n\t\t *\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t * @param targetPath Target folder where to write the file\n\t\t * @param maintainEntryPath If maintainEntryPath is true and the entry is inside a folder, the entry folder\n\t\t * will be created in targetPath as well. Default is TRUE\n\t\t * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n\t\t * Default is FALSE\n\t\t *\n\t\t * @return Boolean\n\t\t */\n\t\textractEntryTo: function (/*Object*/entry, /*String*/targetPath, /*Boolean*/maintainEntryPath, /*Boolean*/overwrite) {\n\t\t\toverwrite = overwrite || false;\n\t\t\tmaintainEntryPath = typeof maintainEntryPath === \"undefined\" ? true : maintainEntryPath;\n\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (!item) {\n\t\t\t\tthrow Utils.Errors.NO_ENTRY;\n\t\t\t}\n\n\t\t\tvar entryName = item.entryName;\n\n\t\t\tvar target = sanitize(targetPath, maintainEntryPath ? entryName : pth.basename(entryName));\n\n\t\t\tif (item.isDirectory) {\n\t\t\t\ttarget = pth.resolve(target, \"..\");\n\t\t\t\tvar children = _zip.getEntryChildren(item);\n\t\t\t\tchildren.forEach(function (child) {\n\t\t\t\t\tif (child.isDirectory) return;\n\t\t\t\t\tvar content = child.getData();\n\t\t\t\t\tif (!content) {\n\t\t\t\t\t\tthrow Utils.Errors.CANT_EXTRACT_FILE;\n\t\t\t\t\t}\n\t\t\t\t\tvar childName = sanitize(targetPath, maintainEntryPath ? child.entryName : pth.basename(child.entryName));\n\n\t\t\t\t\tUtils.writeFileTo(childName, content, overwrite);\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tvar content = item.getData();\n\t\t\tif (!content) throw Utils.Errors.CANT_EXTRACT_FILE;\n\n\t\t\tif (fs.existsSync(target) && !overwrite) {\n\t\t\t\tthrow Utils.Errors.CANT_OVERRIDE;\n\t\t\t}\n\t\t\tUtils.writeFileTo(target, content, overwrite);\n\n\t\t\treturn true;\n\t\t},\n\n\t\t/**\n\t\t * Test the archive\n\t\t *\n\t\t */\n\t\ttest: function () {\n\t\t\tif (!_zip) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor (var entry in _zip.entries) {\n\t\t\t\ttry {\n\t\t\t\t\tif (entry.isDirectory) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tvar content = _zip.entries[entry].getData();\n\t\t\t\t\tif (!content) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t/**\n\t\t * Extracts the entire archive to the given location\n\t\t *\n\t\t * @param targetPath Target location\n\t\t * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n\t\t * Default is FALSE\n\t\t */\n\t\textractAllTo: function (/*String*/targetPath, /*Boolean*/overwrite) {\n\t\t\toverwrite = overwrite || false;\n\t\t\tif (!_zip) {\n\t\t\t\tthrow Utils.Errors.NO_ZIP;\n\t\t\t}\n\t\t\t_zip.entries.forEach(function (entry) {\n\t\t\t\tvar entryName = sanitize(targetPath, entry.entryName.toString());\n\t\t\t\tif (entry.isDirectory) {\n\t\t\t\t\tUtils.makeDir(entryName);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar content = entry.getData();\n\t\t\t\tif (!content) {\n\t\t\t\t\tthrow Utils.Errors.CANT_EXTRACT_FILE;\n\t\t\t\t}\n\t\t\t\tUtils.writeFileTo(entryName, content, overwrite);\n\t\t\t\ttry {\n\t\t\t\t\tfs.utimesSync(entryName, entry.header.time, entry.header.time)\n\t\t\t\t} catch (err) {\n\t\t\t\t\tthrow Utils.Errors.CANT_EXTRACT_FILE;\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Asynchronous extractAllTo\n\t\t *\n\t\t * @param targetPath Target location\n\t\t * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n\t\t * Default is FALSE\n\t\t * @param callback\n\t\t */\n\t\textractAllToAsync: function (/*String*/targetPath, /*Boolean*/overwrite, /*Function*/callback) {\n\t\t\tif (!callback) {\n\t\t\t\tcallback = function() {}\n\t\t\t}\n\t\t\toverwrite = overwrite || false;\n\t\t\tif (!_zip) {\n\t\t\t\tcallback(new Error(Utils.Errors.NO_ZIP));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar entries = _zip.entries;\n\t\t\tvar i = entries.length;\n\t\t\tentries.forEach(function (entry) {\n\t\t\t\tif (i <= 0) return; // Had an error already\n\n\t\t\t\tvar entryName = pth.normalize(entry.entryName.toString());\n\n\t\t\t\tif (entry.isDirectory) {\n\t\t\t\t\tUtils.makeDir(sanitize(targetPath, entryName));\n\t\t\t\t\tif (--i === 0)\n\t\t\t\t\t\tcallback(undefined);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tentry.getDataAsync(function (content, err) {\n\t\t\t\t\tif (i <= 0) return;\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tcallback(new Error(err));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!content) {\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tcallback(new Error(Utils.Errors.CANT_EXTRACT_FILE));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tUtils.writeFileToAsync(sanitize(targetPath, entryName), content, overwrite, function (succ) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tfs.utimesSync(pth.resolve(targetPath, entryName), entry.header.time, entry.header.time);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tcallback(new Error('Unable to set utimes'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i <= 0) return;\n\t\t\t\t\t\tif (!succ) {\n\t\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\t\tcallback(new Error('Unable to write'));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (--i === 0)\n\t\t\t\t\t\t\tcallback(undefined);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Writes the newly created zip file to disk at the specified location or if a zip was opened and no ``targetFileName`` is provided, it will overwrite the opened zip\n\t\t *\n\t\t * @param targetFileName\n\t\t * @param callback\n\t\t */\n\t\twriteZip: function (/*String*/targetFileName, /*Function*/callback) {\n\t\t\tif (arguments.length === 1) {\n\t\t\t\tif (typeof targetFileName === \"function\") {\n\t\t\t\t\tcallback = targetFileName;\n\t\t\t\t\ttargetFileName = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!targetFileName && _filename) {\n\t\t\t\ttargetFileName = _filename;\n\t\t\t}\n\t\t\tif (!targetFileName) return;\n\n\t\t\tvar zipData = _zip.compressToBuffer();\n\t\t\tif (zipData) {\n\t\t\t\tvar ok = Utils.writeFileTo(targetFileName, zipData, true);\n\t\t\t\tif (typeof callback === 'function') callback(!ok ? new Error(\"failed\") : null, \"\");\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Returns the content of the entire zip file as a Buffer object\n\t\t *\n\t\t * @return Buffer\n\t\t */\n\t\ttoBuffer: function (/*Function*/onSuccess, /*Function*/onFail, /*Function*/onItemStart, /*Function*/onItemEnd) {\n\t\t\tthis.valueOf = 2;\n\t\t\tif (typeof onSuccess === \"function\") {\n\t\t\t\t_zip.toAsyncBuffer(onSuccess, onFail, onItemStart, onItemEnd);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn _zip.compressToBuffer()\n\t\t}\n\t}\n};\n","var Utils = require(\"../util\"),\n Constants = Utils.Constants;\n\n/* The central directory file header */\nmodule.exports = function () {\n var _verMade = 0x0A,\n _version = 0x0A,\n _flags = 0,\n _method = 0,\n _time = 0,\n _crc = 0,\n _compressedSize = 0,\n _size = 0,\n _fnameLen = 0,\n _extraLen = 0,\n\n _comLen = 0,\n _diskStart = 0,\n _inattr = 0,\n _attr = 0,\n _offset = 0;\n\n var _dataHeader = {};\n\n function setTime(val) {\n val = new Date(val);\n _time = (val.getFullYear() - 1980 & 0x7f) << 25 // b09-16 years from 1980\n | (val.getMonth() + 1) << 21 // b05-08 month\n | val.getDate() << 16 // b00-04 hour\n\n // 2 bytes time\n | val.getHours() << 11 // b11-15 hour\n | val.getMinutes() << 5 // b05-10 minute\n | val.getSeconds() >> 1; // b00-04 seconds divided by 2\n }\n\n setTime(+new Date());\n\n return {\n get made () { return _verMade; },\n set made (val) { _verMade = val; },\n\n get version () { return _version; },\n set version (val) { _version = val },\n\n get flags () { return _flags },\n set flags (val) { _flags = val; },\n\n get method () { return _method; },\n set method (val) { _method = val; },\n\n get time () { return new Date(\n ((_time >> 25) & 0x7f) + 1980,\n ((_time >> 21) & 0x0f) - 1,\n (_time >> 16) & 0x1f,\n (_time >> 11) & 0x1f,\n (_time >> 5) & 0x3f,\n (_time & 0x1f) << 1\n );\n },\n set time (val) {\n setTime(val);\n },\n\n get crc () { return _crc; },\n set crc (val) { _crc = val; },\n\n get compressedSize () { return _compressedSize; },\n set compressedSize (val) { _compressedSize = val; },\n\n get size () { return _size; },\n set size (val) { _size = val; },\n\n get fileNameLength () { return _fnameLen; },\n set fileNameLength (val) { _fnameLen = val; },\n\n get extraLength () { return _extraLen },\n set extraLength (val) { _extraLen = val; },\n\n get commentLength () { return _comLen },\n set commentLength (val) { _comLen = val },\n\n get diskNumStart () { return _diskStart },\n set diskNumStart (val) { _diskStart = val },\n\n get inAttr () { return _inattr },\n set inAttr (val) { _inattr = val },\n\n get attr () { return _attr },\n set attr (val) { _attr = val },\n\n get offset () { return _offset },\n set offset (val) { _offset = val },\n\n get encripted () { return (_flags & 1) === 1 },\n\n get entryHeaderSize () {\n return Constants.CENHDR + _fnameLen + _extraLen + _comLen;\n },\n\n get realDataOffset () {\n return _offset + Constants.LOCHDR + _dataHeader.fnameLen + _dataHeader.extraLen;\n },\n\n get dataHeader () {\n return _dataHeader;\n },\n\n loadDataHeaderFromBinary : function(/*Buffer*/input) {\n var data = input.slice(_offset, _offset + Constants.LOCHDR);\n // 30 bytes and should start with \"PK\\003\\004\"\n if (data.readUInt32LE(0) !== Constants.LOCSIG) {\n throw Utils.Errors.INVALID_LOC;\n }\n _dataHeader = {\n // version needed to extract\n version : data.readUInt16LE(Constants.LOCVER),\n // general purpose bit flag\n flags : data.readUInt16LE(Constants.LOCFLG),\n // compression method\n method : data.readUInt16LE(Constants.LOCHOW),\n // modification time (2 bytes time, 2 bytes date)\n time : data.readUInt32LE(Constants.LOCTIM),\n // uncompressed file crc-32 value\n crc : data.readUInt32LE(Constants.LOCCRC),\n // compressed size\n compressedSize : data.readUInt32LE(Constants.LOCSIZ),\n // uncompressed size\n size : data.readUInt32LE(Constants.LOCLEN),\n // filename length\n fnameLen : data.readUInt16LE(Constants.LOCNAM),\n // extra field length\n extraLen : data.readUInt16LE(Constants.LOCEXT)\n }\n },\n\n loadFromBinary : function(/*Buffer*/data) {\n // data should be 46 bytes and start with \"PK 01 02\"\n if (data.length !== Constants.CENHDR || data.readUInt32LE(0) !== Constants.CENSIG) {\n throw Utils.Errors.INVALID_CEN;\n }\n // version made by\n _verMade = data.readUInt16LE(Constants.CENVEM);\n // version needed to extract\n _version = data.readUInt16LE(Constants.CENVER);\n // encrypt, decrypt flags\n _flags = data.readUInt16LE(Constants.CENFLG);\n // compression method\n _method = data.readUInt16LE(Constants.CENHOW);\n // modification time (2 bytes time, 2 bytes date)\n _time = data.readUInt32LE(Constants.CENTIM);\n // uncompressed file crc-32 value\n _crc = data.readUInt32LE(Constants.CENCRC);\n // compressed size\n _compressedSize = data.readUInt32LE(Constants.CENSIZ);\n // uncompressed size\n _size = data.readUInt32LE(Constants.CENLEN);\n // filename length\n _fnameLen = data.readUInt16LE(Constants.CENNAM);\n // extra field length\n _extraLen = data.readUInt16LE(Constants.CENEXT);\n // file comment length\n _comLen = data.readUInt16LE(Constants.CENCOM);\n // volume number start\n _diskStart = data.readUInt16LE(Constants.CENDSK);\n // internal file attributes\n _inattr = data.readUInt16LE(Constants.CENATT);\n // external file attributes\n _attr = data.readUInt32LE(Constants.CENATX);\n // LOC header offset\n _offset = data.readUInt32LE(Constants.CENOFF);\n },\n\n dataHeaderToBinary : function() {\n // LOC header size (30 bytes)\n var data = Buffer.alloc(Constants.LOCHDR);\n // \"PK\\003\\004\"\n data.writeUInt32LE(Constants.LOCSIG, 0);\n // version needed to extract\n data.writeUInt16LE(_version, Constants.LOCVER);\n // general purpose bit flag\n data.writeUInt16LE(_flags, Constants.LOCFLG);\n // compression method\n data.writeUInt16LE(_method, Constants.LOCHOW);\n // modification time (2 bytes time, 2 bytes date)\n data.writeUInt32LE(_time, Constants.LOCTIM);\n // uncompressed file crc-32 value\n data.writeUInt32LE(_crc, Constants.LOCCRC);\n // compressed size\n data.writeUInt32LE(_compressedSize, Constants.LOCSIZ);\n // uncompressed size\n data.writeUInt32LE(_size, Constants.LOCLEN);\n // filename length\n data.writeUInt16LE(_fnameLen, Constants.LOCNAM);\n // extra field length\n data.writeUInt16LE(_extraLen, Constants.LOCEXT);\n return data;\n },\n\n entryHeaderToBinary : function() {\n // CEN header size (46 bytes)\n var data = Buffer.alloc(Constants.CENHDR + _fnameLen + _extraLen + _comLen);\n // \"PK\\001\\002\"\n data.writeUInt32LE(Constants.CENSIG, 0);\n // version made by\n data.writeUInt16LE(_verMade, Constants.CENVEM);\n // version needed to extract\n data.writeUInt16LE(_version, Constants.CENVER);\n // encrypt, decrypt flags\n data.writeUInt16LE(_flags, Constants.CENFLG);\n // compression method\n data.writeUInt16LE(_method, Constants.CENHOW);\n // modification time (2 bytes time, 2 bytes date)\n data.writeUInt32LE(_time, Constants.CENTIM);\n // uncompressed file crc-32 value\n data.writeUInt32LE(_crc, Constants.CENCRC);\n // compressed size\n data.writeUInt32LE(_compressedSize, Constants.CENSIZ);\n // uncompressed size\n data.writeUInt32LE(_size, Constants.CENLEN);\n // filename length\n data.writeUInt16LE(_fnameLen, Constants.CENNAM);\n // extra field length\n data.writeUInt16LE(_extraLen, Constants.CENEXT);\n // file comment length\n data.writeUInt16LE(_comLen, Constants.CENCOM);\n // volume number start\n data.writeUInt16LE(_diskStart, Constants.CENDSK);\n // internal file attributes\n data.writeUInt16LE(_inattr, Constants.CENATT);\n // external file attributes\n data.writeUInt32LE(_attr, Constants.CENATX);\n // LOC header offset\n data.writeUInt32LE(_offset, Constants.CENOFF);\n // fill all with\n data.fill(0x00, Constants.CENHDR);\n return data;\n },\n\n toString : function() {\n return '{\\n' +\n '\\t\"made\" : ' + _verMade + \",\\n\" +\n '\\t\"version\" : ' + _version + \",\\n\" +\n '\\t\"flags\" : ' + _flags + \",\\n\" +\n '\\t\"method\" : ' + Utils.methodToString(_method) + \",\\n\" +\n '\\t\"time\" : ' + this.time + \",\\n\" +\n '\\t\"crc\" : 0x' + _crc.toString(16).toUpperCase() + \",\\n\" +\n '\\t\"compressedSize\" : ' + _compressedSize + \" bytes,\\n\" +\n '\\t\"size\" : ' + _size + \" bytes,\\n\" +\n '\\t\"fileNameLength\" : ' + _fnameLen + \",\\n\" +\n '\\t\"extraLength\" : ' + _extraLen + \" bytes,\\n\" +\n '\\t\"commentLength\" : ' + _comLen + \" bytes,\\n\" +\n '\\t\"diskNumStart\" : ' + _diskStart + \",\\n\" +\n '\\t\"inAttr\" : ' + _inattr + \",\\n\" +\n '\\t\"attr\" : ' + _attr + \",\\n\" +\n '\\t\"offset\" : ' + _offset + \",\\n\" +\n '\\t\"entryHeaderSize\" : ' + (Constants.CENHDR + _fnameLen + _extraLen + _comLen) + \" bytes\\n\" +\n '}';\n }\n }\n};\n","exports.EntryHeader = require(\"./entryHeader\");\r\nexports.MainHeader = require(\"./mainHeader\");\r\n","var Utils = require(\"../util\"),\n Constants = Utils.Constants;\n\n/* The entries in the end of central directory */\nmodule.exports = function () {\n var _volumeEntries = 0,\n _totalEntries = 0,\n _size = 0,\n _offset = 0,\n _commentLength = 0;\n\n return {\n get diskEntries () { return _volumeEntries },\n set diskEntries (/*Number*/val) { _volumeEntries = _totalEntries = val; },\n\n get totalEntries () { return _totalEntries },\n set totalEntries (/*Number*/val) { _totalEntries = _volumeEntries = val; },\n\n get size () { return _size },\n set size (/*Number*/val) { _size = val; },\n\n get offset () { return _offset },\n set offset (/*Number*/val) { _offset = val; },\n\n get commentLength () { return _commentLength },\n set commentLength (/*Number*/val) { _commentLength = val; },\n\n get mainHeaderSize () {\n return Constants.ENDHDR + _commentLength;\n },\n\n loadFromBinary : function(/*Buffer*/data) {\n // data should be 22 bytes and start with \"PK 05 06\"\n if (data.length !== Constants.ENDHDR || data.readUInt32LE(0) !== Constants.ENDSIG)\n throw Utils.Errors.INVALID_END;\n\n // number of entries on this volume\n _volumeEntries = data.readUInt16LE(Constants.ENDSUB);\n // total number of entries\n _totalEntries = data.readUInt16LE(Constants.ENDTOT);\n // central directory size in bytes\n _size = data.readUInt32LE(Constants.ENDSIZ);\n // offset of first CEN header\n _offset = data.readUInt32LE(Constants.ENDOFF);\n // zip file comment length\n _commentLength = data.readUInt16LE(Constants.ENDCOM);\n },\n\n toBinary : function() {\n var b = Buffer.alloc(Constants.ENDHDR + _commentLength);\n // \"PK 05 06\" signature\n b.writeUInt32LE(Constants.ENDSIG, 0);\n b.writeUInt32LE(0, 4);\n // number of entries on this volume\n b.writeUInt16LE(_volumeEntries, Constants.ENDSUB);\n // total number of entries\n b.writeUInt16LE(_totalEntries, Constants.ENDTOT);\n // central directory size in bytes\n b.writeUInt32LE(_size, Constants.ENDSIZ);\n // offset of first CEN header\n b.writeUInt32LE(_offset, Constants.ENDOFF);\n // zip file comment length\n b.writeUInt16LE(_commentLength, Constants.ENDCOM);\n // fill comment memory with spaces so no garbage is left there\n b.fill(\" \", Constants.ENDHDR);\n\n return b;\n },\n\n toString : function() {\n return '{\\n' +\n '\\t\"diskEntries\" : ' + _volumeEntries + \",\\n\" +\n '\\t\"totalEntries\" : ' + _totalEntries + \",\\n\" +\n '\\t\"size\" : ' + _size + \" bytes,\\n\" +\n '\\t\"offset\" : 0x' + _offset.toString(16).toUpperCase() + \",\\n\" +\n '\\t\"commentLength\" : 0x' + _commentLength + \"\\n\" +\n '}';\n }\n }\n};","module.exports = function (/*Buffer*/inbuf) {\n\n var zlib = require(\"zlib\");\n \n var opts = {chunkSize: (parseInt(inbuf.length / 1024) + 1) * 1024};\n \n return {\n deflate: function () {\n return zlib.deflateRawSync(inbuf, opts);\n },\n\n deflateAsync: function (/*Function*/callback) {\n var tmp = zlib.createDeflateRaw(opts), parts = [], total = 0;\n tmp.on('data', function (data) {\n parts.push(data);\n total += data.length;\n });\n tmp.on('end', function () {\n var buf = Buffer.alloc(total), written = 0;\n buf.fill(0);\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n part.copy(buf, written);\n written += part.length;\n }\n callback && callback(buf);\n });\n tmp.end(inbuf);\n }\n }\n};\n","exports.Deflater = require(\"./deflater\");\r\nexports.Inflater = require(\"./inflater\");","module.exports = function (/*Buffer*/inbuf) {\n\n var zlib = require(\"zlib\");\n\n return {\n inflate: function () {\n return zlib.inflateRawSync(inbuf);\n },\n\n inflateAsync: function (/*Function*/callback) {\n var tmp = zlib.createInflateRaw(), parts = [], total = 0;\n tmp.on('data', function (data) {\n parts.push(data);\n total += data.length;\n });\n tmp.on('end', function () {\n var buf = Buffer.alloc(total), written = 0;\n buf.fill(0);\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n part.copy(buf, written);\n written += part.length;\n }\n callback && callback(buf);\n });\n tmp.end(inbuf);\n }\n }\n};\n","module.exports = {\r\n /* The local file header */\r\n LOCHDR : 30, // LOC header size\r\n LOCSIG : 0x04034b50, // \"PK\\003\\004\"\r\n LOCVER : 4,\t// version needed to extract\r\n LOCFLG : 6, // general purpose bit flag\r\n LOCHOW : 8, // compression method\r\n LOCTIM : 10, // modification time (2 bytes time, 2 bytes date)\r\n LOCCRC : 14, // uncompressed file crc-32 value\r\n LOCSIZ : 18, // compressed size\r\n LOCLEN : 22, // uncompressed size\r\n LOCNAM : 26, // filename length\r\n LOCEXT : 28, // extra field length\r\n\r\n /* The Data descriptor */\r\n EXTSIG : 0x08074b50, // \"PK\\007\\008\"\r\n EXTHDR : 16, // EXT header size\r\n EXTCRC : 4, // uncompressed file crc-32 value\r\n EXTSIZ : 8, // compressed size\r\n EXTLEN : 12, // uncompressed size\r\n\r\n /* The central directory file header */\r\n CENHDR : 46, // CEN header size\r\n CENSIG : 0x02014b50, // \"PK\\001\\002\"\r\n CENVEM : 4, // version made by\r\n CENVER : 6, // version needed to extract\r\n CENFLG : 8, // encrypt, decrypt flags\r\n CENHOW : 10, // compression method\r\n CENTIM : 12, // modification time (2 bytes time, 2 bytes date)\r\n CENCRC : 16, // uncompressed file crc-32 value\r\n CENSIZ : 20, // compressed size\r\n CENLEN : 24, // uncompressed size\r\n CENNAM : 28, // filename length\r\n CENEXT : 30, // extra field length\r\n CENCOM : 32, // file comment length\r\n CENDSK : 34, // volume number start\r\n CENATT : 36, // internal file attributes\r\n CENATX : 38, // external file attributes (host system dependent)\r\n CENOFF : 42, // LOC header offset\r\n\r\n /* The entries in the end of central directory */\r\n ENDHDR : 22, // END header size\r\n ENDSIG : 0x06054b50, // \"PK\\005\\006\"\r\n ENDSUB : 8, // number of entries on this disk\r\n ENDTOT : 10, // total number of entries\r\n ENDSIZ : 12, // central directory size in bytes\r\n ENDOFF : 16, // offset of first CEN header\r\n ENDCOM : 20, // zip file comment length\r\n\r\n /* Compression methods */\r\n STORED : 0, // no compression\r\n SHRUNK : 1, // shrunk\r\n REDUCED1 : 2, // reduced with compression factor 1\r\n REDUCED2 : 3, // reduced with compression factor 2\r\n REDUCED3 : 4, // reduced with compression factor 3\r\n REDUCED4 : 5, // reduced with compression factor 4\r\n IMPLODED : 6, // imploded\r\n // 7 reserved\r\n DEFLATED : 8, // deflated\r\n ENHANCED_DEFLATED: 9, // enhanced deflated\r\n PKWARE : 10,// PKWare DCL imploded\r\n // 11 reserved\r\n BZIP2 : 12, // compressed using BZIP2\r\n // 13 reserved\r\n LZMA : 14, // LZMA\r\n // 15-17 reserved\r\n IBM_TERSE : 18, // compressed using IBM TERSE\r\n IBM_LZ77 : 19, //IBM LZ77 z\r\n\r\n /* General purpose bit flag */\r\n FLG_ENC : 0, // encripted file\r\n FLG_COMP1 : 1, // compression option\r\n FLG_COMP2 : 2, // compression option\r\n FLG_DESC : 4, // data descriptor\r\n FLG_ENH : 8, // enhanced deflation\r\n FLG_STR : 16, // strong encryption\r\n FLG_LNG : 1024, // language encoding\r\n FLG_MSK : 4096, // mask header values\r\n\r\n /* Load type */\r\n FILE : 0,\r\n BUFFER : 1,\r\n NONE : 2,\r\n\r\n /* 4.5 Extensible data fields */\r\n EF_ID : 0,\r\n EF_SIZE : 2,\r\n\r\n /* Header IDs */\r\n ID_ZIP64 : 0x0001,\r\n ID_AVINFO : 0x0007,\r\n ID_PFS : 0x0008,\r\n ID_OS2 : 0x0009,\r\n ID_NTFS : 0x000a,\r\n ID_OPENVMS : 0x000c,\r\n ID_UNIX : 0x000d,\r\n ID_FORK : 0x000e,\r\n ID_PATCH : 0x000f,\r\n ID_X509_PKCS7 : 0x0014,\r\n ID_X509_CERTID_F : 0x0015,\r\n ID_X509_CERTID_C : 0x0016,\r\n ID_STRONGENC : 0x0017,\r\n ID_RECORD_MGT : 0x0018,\r\n ID_X509_PKCS7_RL : 0x0019,\r\n ID_IBM1 : 0x0065,\r\n ID_IBM2 : 0x0066,\r\n ID_POSZIP : 0x4690,\r\n\r\n EF_ZIP64_OR_32 : 0xffffffff,\r\n EF_ZIP64_OR_16 : 0xffff,\r\n EF_ZIP64_SUNCOMP : 0,\r\n EF_ZIP64_SCOMP : 8,\r\n EF_ZIP64_RHO : 16,\r\n EF_ZIP64_DSN : 24\r\n};\r\n","module.exports = {\r\n /* Header error messages */\r\n \"INVALID_LOC\" : \"Invalid LOC header (bad signature)\",\r\n \"INVALID_CEN\" : \"Invalid CEN header (bad signature)\",\r\n \"INVALID_END\" : \"Invalid END header (bad signature)\",\r\n\r\n /* ZipEntry error messages*/\r\n \"NO_DATA\" : \"Nothing to decompress\",\r\n \"BAD_CRC\" : \"CRC32 checksum failed\",\r\n \"FILE_IN_THE_WAY\" : \"There is a file in the way: %s\",\r\n \"UNKNOWN_METHOD\" : \"Invalid/unsupported compression method\",\r\n\r\n /* Inflater error messages */\r\n \"AVAIL_DATA\" : \"inflate::Available inflate data did not terminate\",\r\n \"INVALID_DISTANCE\" : \"inflate::Invalid literal/length or distance code in fixed or dynamic block\",\r\n \"TO_MANY_CODES\" : \"inflate::Dynamic block code description: too many length or distance codes\",\r\n \"INVALID_REPEAT_LEN\" : \"inflate::Dynamic block code description: repeat more than specified lengths\",\r\n \"INVALID_REPEAT_FIRST\" : \"inflate::Dynamic block code description: repeat lengths with no first length\",\r\n \"INCOMPLETE_CODES\" : \"inflate::Dynamic block code description: code lengths codes incomplete\",\r\n \"INVALID_DYN_DISTANCE\": \"inflate::Dynamic block code description: invalid distance code lengths\",\r\n \"INVALID_CODES_LEN\": \"inflate::Dynamic block code description: invalid literal/length code lengths\",\r\n \"INVALID_STORE_BLOCK\" : \"inflate::Stored block length did not match one's complement\",\r\n \"INVALID_BLOCK_TYPE\" : \"inflate::Invalid block type (type == 3)\",\r\n\r\n /* ADM-ZIP error messages */\r\n \"CANT_EXTRACT_FILE\" : \"Could not extract the file\",\r\n \"CANT_OVERRIDE\" : \"Target file already exists\",\r\n \"NO_ZIP\" : \"No zip file was loaded\",\r\n \"NO_ENTRY\" : \"Entry doesn't exist\",\r\n \"DIRECTORY_CONTENT_ERROR\" : \"A directory cannot have content\",\r\n \"FILE_NOT_FOUND\" : \"File not found: %s\",\r\n \"NOT_IMPLEMENTED\" : \"Not implemented\",\r\n \"INVALID_FILENAME\" : \"Invalid filename\",\r\n \"INVALID_FORMAT\" : \"Invalid or unsupported zip format. No END header found\"\r\n};","var fs = require(\"./fileSystem\").require(),\r\n pth = require(\"path\");\r\n\t\r\nfs.existsSync = fs.existsSync || pth.existsSync;\r\n\r\nmodule.exports = function(/*String*/path) {\r\n\r\n var _path = path || \"\",\r\n _permissions = 0,\r\n _obj = newAttr(),\r\n _stat = null;\r\n\r\n function newAttr() {\r\n return {\r\n directory : false,\r\n readonly : false,\r\n hidden : false,\r\n executable : false,\r\n mtime : 0,\r\n atime : 0\r\n }\r\n }\r\n\r\n if (_path && fs.existsSync(_path)) {\r\n _stat = fs.statSync(_path);\r\n _obj.directory = _stat.isDirectory();\r\n _obj.mtime = _stat.mtime;\r\n _obj.atime = _stat.atime;\r\n _obj.executable = !!(1 & parseInt ((_stat.mode & parseInt (\"777\", 8)).toString (8)[0]));\r\n _obj.readonly = !!(2 & parseInt ((_stat.mode & parseInt (\"777\", 8)).toString (8)[0]));\r\n _obj.hidden = pth.basename(_path)[0] === \".\";\r\n } else {\r\n console.warn(\"Invalid path: \" + _path)\r\n }\r\n\r\n return {\r\n\r\n get directory () {\r\n return _obj.directory;\r\n },\r\n\r\n get readOnly () {\r\n return _obj.readonly;\r\n },\r\n\r\n get hidden () {\r\n return _obj.hidden;\r\n },\r\n\r\n get mtime () {\r\n return _obj.mtime;\r\n },\r\n\r\n get atime () {\r\n return _obj.atime;\r\n },\r\n\r\n\r\n get executable () {\r\n return _obj.executable;\r\n },\r\n\r\n decodeAttributes : function(val) {\r\n\r\n },\r\n\r\n encodeAttributes : function (val) {\r\n\r\n },\r\n\r\n toString : function() {\r\n return '{\\n' +\r\n '\\t\"path\" : \"' + _path + \",\\n\" +\r\n '\\t\"isDirectory\" : ' + _obj.directory + \",\\n\" +\r\n '\\t\"isReadOnly\" : ' + _obj.readonly + \",\\n\" +\r\n '\\t\"isHidden\" : ' + _obj.hidden + \",\\n\" +\r\n '\\t\"isExecutable\" : ' + _obj.executable + \",\\n\" +\r\n '\\t\"mTime\" : ' + _obj.mtime + \"\\n\" +\r\n '\\t\"aTime\" : ' + _obj.atime + \"\\n\" +\r\n '}';\r\n }\r\n }\r\n\r\n};\r\n","exports.require = function() {\n var fs = require(\"fs\");\n if (process.versions['electron']) {\n\t try {\n\t originalFs = require(\"original-fs\");\n\t if (Object.keys(originalFs).length > 0) {\n\t fs = originalFs;\n }\n\t } catch (e) {}\n }\n return fs\n};\n","module.exports = require(\"./utils\");\r\nmodule.exports.FileSystem = require(\"./fileSystem\");\r\nmodule.exports.Constants = require(\"./constants\");\r\nmodule.exports.Errors = require(\"./errors\");\r\nmodule.exports.FileAttr = require(\"./fattr\");","var fs = require(\"./fileSystem\").require(),\r\n pth = require('path');\r\n\r\nfs.existsSync = fs.existsSync || pth.existsSync;\r\n\r\nmodule.exports = (function() {\r\n\r\n var crcTable = [],\r\n Constants = require('./constants'),\r\n Errors = require('./errors'),\r\n\r\n PATH_SEPARATOR = pth.sep;\r\n\r\n\r\n function mkdirSync(/*String*/path) {\r\n var resolvedPath = path.split(PATH_SEPARATOR)[0];\r\n path.split(PATH_SEPARATOR).forEach(function(name) {\r\n if (!name || name.substr(-1,1) === \":\") return;\r\n resolvedPath += PATH_SEPARATOR + name;\r\n var stat;\r\n try {\r\n stat = fs.statSync(resolvedPath);\r\n } catch (e) {\r\n fs.mkdirSync(resolvedPath);\r\n }\r\n if (stat && stat.isFile())\r\n throw Errors.FILE_IN_THE_WAY.replace(\"%s\", resolvedPath);\r\n });\r\n }\r\n\r\n function findSync(/*String*/dir, /*RegExp*/pattern, /*Boolean*/recoursive) {\r\n if (typeof pattern === 'boolean') {\r\n recoursive = pattern;\r\n pattern = undefined;\r\n }\r\n var files = [];\r\n fs.readdirSync(dir).forEach(function(file) {\r\n var path = pth.join(dir, file);\r\n\r\n if (fs.statSync(path).isDirectory() && recoursive)\r\n files = files.concat(findSync(path, pattern, recoursive));\r\n\r\n if (!pattern || pattern.test(path)) {\r\n files.push(pth.normalize(path) + (fs.statSync(path).isDirectory() ? PATH_SEPARATOR : \"\"));\r\n }\r\n\r\n });\r\n return files;\r\n }\r\n\r\n return {\r\n makeDir : function(/*String*/path) {\r\n mkdirSync(path);\r\n },\r\n\r\n crc32 : function(buf) {\r\n if (typeof buf === 'string') {\r\n buf = Buffer.alloc(buf.length, buf);\r\n }\r\n var b = Buffer.alloc(4);\r\n if (!crcTable.length) {\r\n for (var n = 0; n < 256; n++) {\r\n var c = n;\r\n for (var k = 8; --k >= 0;) //\r\n if ((c & 1) !== 0) { c = 0xedb88320 ^ (c >>> 1); } else { c = c >>> 1; }\r\n if (c < 0) {\r\n b.writeInt32LE(c, 0);\r\n c = b.readUInt32LE(0);\r\n }\r\n crcTable[n] = c;\r\n }\r\n }\r\n var crc = 0, off = 0, len = buf.length, c1 = ~crc;\r\n while(--len >= 0) c1 = crcTable[(c1 ^ buf[off++]) & 0xff] ^ (c1 >>> 8);\r\n crc = ~c1;\r\n b.writeInt32LE(crc & 0xffffffff, 0);\r\n return b.readUInt32LE(0);\r\n },\r\n\r\n methodToString : function(/*Number*/method) {\r\n switch (method) {\r\n case Constants.STORED:\r\n return 'STORED (' + method + ')';\r\n case Constants.DEFLATED:\r\n return 'DEFLATED (' + method + ')';\r\n default:\r\n return 'UNSUPPORTED (' + method + ')';\r\n }\r\n\r\n },\r\n\r\n writeFileTo : function(/*String*/path, /*Buffer*/content, /*Boolean*/overwrite, /*Number*/attr) {\r\n if (fs.existsSync(path)) {\r\n if (!overwrite)\r\n return false; // cannot overwrite\r\n\r\n var stat = fs.statSync(path);\r\n if (stat.isDirectory()) {\r\n return false;\r\n }\r\n }\r\n var folder = pth.dirname(path);\r\n if (!fs.existsSync(folder)) {\r\n mkdirSync(folder);\r\n }\r\n\r\n var fd;\r\n try {\r\n fd = fs.openSync(path, 'w', 438); // 0666\r\n } catch(e) {\r\n fs.chmodSync(path, 438);\r\n fd = fs.openSync(path, 'w', 438);\r\n }\r\n if (fd) {\r\n try {\r\n fs.writeSync(fd, content, 0, content.length, 0);\r\n }\r\n catch (e){\r\n throw e;\r\n }\r\n finally {\r\n fs.closeSync(fd);\r\n }\r\n }\r\n fs.chmodSync(path, attr || 438);\r\n return true;\r\n },\r\n\r\n writeFileToAsync : function(/*String*/path, /*Buffer*/content, /*Boolean*/overwrite, /*Number*/attr, /*Function*/callback) {\r\n if(typeof attr === 'function') {\r\n callback = attr;\r\n attr = undefined;\r\n }\r\n\r\n fs.exists(path, function(exists) {\r\n if(exists && !overwrite)\r\n return callback(false);\r\n\r\n fs.stat(path, function(err, stat) {\r\n if(exists &&stat.isDirectory()) {\r\n return callback(false);\r\n }\r\n\r\n var folder = pth.dirname(path);\r\n fs.exists(folder, function(exists) {\r\n if(!exists)\r\n mkdirSync(folder);\r\n\r\n fs.open(path, 'w', 438, function(err, fd) {\r\n if(err) {\r\n fs.chmod(path, 438, function() {\r\n fs.open(path, 'w', 438, function(err, fd) {\r\n fs.write(fd, content, 0, content.length, 0, function() {\r\n fs.close(fd, function() {\r\n fs.chmod(path, attr || 438, function() {\r\n callback(true);\r\n })\r\n });\r\n });\r\n });\r\n })\r\n } else {\r\n if(fd) {\r\n fs.write(fd, content, 0, content.length, 0, function() {\r\n fs.close(fd, function() {\r\n fs.chmod(path, attr || 438, function() {\r\n callback(true);\r\n })\r\n });\r\n });\r\n } else {\r\n fs.chmod(path, attr || 438, function() {\r\n callback(true);\r\n })\r\n }\r\n }\r\n });\r\n })\r\n })\r\n })\r\n },\r\n\r\n findFiles : function(/*String*/path) {\r\n return findSync(path, true);\r\n },\r\n\r\n getAttributes : function(/*String*/path) {\r\n\r\n },\r\n\r\n setAttributes : function(/*String*/path) {\r\n\r\n },\r\n\r\n toBuffer : function(input) {\r\n if (Buffer.isBuffer(input)) {\r\n return input;\r\n } else {\r\n if (input.length === 0) {\r\n return Buffer.alloc(0)\r\n }\r\n return Buffer.from(input, 'utf8');\r\n }\r\n },\r\n\r\n Constants : Constants,\r\n Errors : Errors\r\n }\r\n})();\r\n","var Utils = require(\"./util\"),\n Headers = require(\"./headers\"),\n Constants = Utils.Constants,\n Methods = require(\"./methods\");\n\nmodule.exports = function (/*Buffer*/input) {\n\n var _entryHeader = new Headers.EntryHeader(),\n _entryName = Buffer.alloc(0),\n _comment = Buffer.alloc(0),\n _isDirectory = false,\n uncompressedData = null,\n _extra = Buffer.alloc(0);\n\n function getCompressedDataFromZip() {\n if (!input || !Buffer.isBuffer(input)) {\n return Buffer.alloc(0);\n }\n _entryHeader.loadDataHeaderFromBinary(input);\n return input.slice(_entryHeader.realDataOffset, _entryHeader.realDataOffset + _entryHeader.compressedSize)\n }\n\n function crc32OK(data) {\n // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written\n if ((_entryHeader.flags & 0x8) !== 0x8) {\n if (Utils.crc32(data) !== _entryHeader.dataHeader.crc) {\n return false;\n }\n } else {\n // @TODO: load and check data descriptor header\n // The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure\n // (optionally preceded by a 4-byte signature) immediately after the compressed data:\n }\n return true;\n }\n\n function decompress(/*Boolean*/async, /*Function*/callback, /*String*/pass) {\n if(typeof callback === 'undefined' && typeof async === 'string') {\n pass=async;\n async=void 0;\n }\n if (_isDirectory) {\n if (async && callback) {\n callback(Buffer.alloc(0), Utils.Errors.DIRECTORY_CONTENT_ERROR); //si added error.\n }\n return Buffer.alloc(0);\n }\n\n var compressedData = getCompressedDataFromZip();\n \n if (compressedData.length === 0) {\n if (async && callback) callback(compressedData, Utils.Errors.NO_DATA);//si added error.\n return compressedData;\n }\n\n var data = Buffer.alloc(_entryHeader.size);\n\n switch (_entryHeader.method) {\n case Utils.Constants.STORED:\n compressedData.copy(data);\n if (!crc32OK(data)) {\n if (async && callback) callback(data, Utils.Errors.BAD_CRC);//si added error\n return Utils.Errors.BAD_CRC;\n } else {//si added otherwise did not seem to return data.\n if (async && callback) callback(data);\n return data;\n }\n case Utils.Constants.DEFLATED:\n var inflater = new Methods.Inflater(compressedData);\n if (!async) {\n var result = inflater.inflate(data);\n result.copy(data, 0);\n if (!crc32OK(data)) {\n console.warn(Utils.Errors.BAD_CRC + \" \" + _entryName.toString())\n }\n return data;\n } else {\n inflater.inflateAsync(function(result) {\n result.copy(data, 0);\n if (!crc32OK(data)) {\n if (callback) callback(data, Utils.Errors.BAD_CRC); //si added error\n } else { //si added otherwise did not seem to return data.\n if (callback) callback(data);\n }\n })\n }\n break;\n default:\n if (async && callback) callback(Buffer.alloc(0), Utils.Errors.UNKNOWN_METHOD);\n return Utils.Errors.UNKNOWN_METHOD;\n }\n }\n\n function compress(/*Boolean*/async, /*Function*/callback) {\n if ((!uncompressedData || !uncompressedData.length) && Buffer.isBuffer(input)) {\n // no data set or the data wasn't changed to require recompression\n if (async && callback) callback(getCompressedDataFromZip());\n return getCompressedDataFromZip();\n }\n\n if (uncompressedData.length && !_isDirectory) {\n var compressedData;\n // Local file header\n switch (_entryHeader.method) {\n case Utils.Constants.STORED:\n _entryHeader.compressedSize = _entryHeader.size;\n\n compressedData = Buffer.alloc(uncompressedData.length);\n uncompressedData.copy(compressedData);\n\n if (async && callback) callback(compressedData);\n return compressedData;\n default:\n case Utils.Constants.DEFLATED:\n\n var deflater = new Methods.Deflater(uncompressedData);\n if (!async) {\n var deflated = deflater.deflate();\n _entryHeader.compressedSize = deflated.length;\n return deflated;\n } else {\n deflater.deflateAsync(function(data) {\n compressedData = Buffer.alloc(data.length);\n _entryHeader.compressedSize = data.length;\n data.copy(compressedData);\n callback && callback(compressedData);\n })\n }\n deflater = null;\n break;\n }\n } else {\n if (async && callback) {\n callback(Buffer.alloc(0));\n } else {\n return Buffer.alloc(0);\n }\n }\n }\n\n function readUInt64LE(buffer, offset) {\n return (buffer.readUInt32LE(offset + 4) << 4) + buffer.readUInt32LE(offset);\n }\n\n function parseExtra(data) {\n var offset = 0;\n var signature, size, part;\n while(offset<data.length) {\n signature = data.readUInt16LE(offset);\n offset += 2;\n size = data.readUInt16LE(offset);\n offset += 2;\n part = data.slice(offset, offset+size);\n offset += size;\n if(Constants.ID_ZIP64 === signature) {\n parseZip64ExtendedInformation(part);\n }\n }\n }\n\n //Override header field values with values from the ZIP64 extra field\n function parseZip64ExtendedInformation(data) {\n var size, compressedSize, offset, diskNumStart;\n\n if(data.length >= Constants.EF_ZIP64_SCOMP) {\n size = readUInt64LE(data, Constants.EF_ZIP64_SUNCOMP);\n if(_entryHeader.size === Constants.EF_ZIP64_OR_32) {\n _entryHeader.size = size;\n }\n }\n if(data.length >= Constants.EF_ZIP64_RHO) {\n compressedSize = readUInt64LE(data, Constants.EF_ZIP64_SCOMP);\n if(_entryHeader.compressedSize === Constants.EF_ZIP64_OR_32) {\n _entryHeader.compressedSize = compressedSize;\n }\n }\n if(data.length >= Constants.EF_ZIP64_DSN) {\n offset = readUInt64LE(data, Constants.EF_ZIP64_RHO);\n if(_entryHeader.offset === Constants.EF_ZIP64_OR_32) {\n _entryHeader.offset = offset;\n }\n }\n if(data.length >= Constants.EF_ZIP64_DSN+4) {\n diskNumStart = data.readUInt32LE(Constants.EF_ZIP64_DSN);\n if(_entryHeader.diskNumStart === Constants.EF_ZIP64_OR_16) {\n _entryHeader.diskNumStart = diskNumStart;\n }\n }\n }\n\n\n return {\n get entryName () { return _entryName.toString(); },\n get rawEntryName() { return _entryName; },\n set entryName (val) {\n _entryName = Utils.toBuffer(val);\n var lastChar = _entryName[_entryName.length - 1];\n _isDirectory = (lastChar === 47) || (lastChar === 92);\n _entryHeader.fileNameLength = _entryName.length;\n },\n\n get extra () { return _extra; },\n set extra (val) {\n _extra = val;\n _entryHeader.extraLength = val.length;\n parseExtra(val);\n },\n\n get comment () { return _comment.toString(); },\n set comment (val) {\n _comment = Utils.toBuffer(val);\n _entryHeader.commentLength = _comment.length;\n },\n\n get name () { var n = _entryName.toString(); return _isDirectory ? n.substr(n.length - 1).split(\"/\").pop() : n.split(\"/\").pop(); },\n get isDirectory () { return _isDirectory },\n\n getCompressedData : function() {\n return compress(false, null)\n },\n\n getCompressedDataAsync : function(/*Function*/callback) {\n compress(true, callback)\n },\n\n setData : function(value) {\n uncompressedData = Utils.toBuffer(value);\n if (!_isDirectory && uncompressedData.length) {\n _entryHeader.size = uncompressedData.length;\n _entryHeader.method = Utils.Constants.DEFLATED;\n _entryHeader.crc = Utils.crc32(value);\n _entryHeader.changed = true;\n } else { // folders and blank files should be stored\n _entryHeader.method = Utils.Constants.STORED;\n }\n },\n\n getData : function(pass) {\n if (_entryHeader.changed) {\n\t\t\t\treturn uncompressedData;\n\t\t\t} else {\n\t\t\t\treturn decompress(false, null, pass);\n }\n },\n\n getDataAsync : function(/*Function*/callback, pass) {\n\t\t\tif (_entryHeader.changed) {\n\t\t\t\tcallback(uncompressedData)\n\t\t\t} else {\n\t\t\t\tdecompress(true, callback, pass)\n }\n },\n\n set attr(attr) { _entryHeader.attr = attr; },\n get attr() { return _entryHeader.attr; },\n\n set header(/*Buffer*/data) {\n _entryHeader.loadFromBinary(data);\n },\n\n get header() {\n return _entryHeader;\n },\n\n packHeader : function() {\n var header = _entryHeader.entryHeaderToBinary();\n // add\n _entryName.copy(header, Utils.Constants.CENHDR);\n if (_entryHeader.extraLength) {\n _extra.copy(header, Utils.Constants.CENHDR + _entryName.length)\n }\n if (_entryHeader.commentLength) {\n _comment.copy(header, Utils.Constants.CENHDR + _entryName.length + _entryHeader.extraLength, _comment.length);\n }\n return header;\n },\n\n toString : function() {\n return '{\\n' +\n '\\t\"entryName\" : \"' + _entryName.toString() + \"\\\",\\n\" +\n '\\t\"name\" : \"' + (_isDirectory ? _entryName.toString().replace(/\\/$/, '').split(\"/\").pop() : _entryName.toString().split(\"/\").pop()) + \"\\\",\\n\" +\n '\\t\"comment\" : \"' + _comment.toString() + \"\\\",\\n\" +\n '\\t\"isDirectory\" : ' + _isDirectory + \",\\n\" +\n '\\t\"header\" : ' + _entryHeader.toString().replace(/\\t/mg, \"\\t\\t\").replace(/}/mg, \"\\t}\") + \",\\n\" +\n '\\t\"compressedData\" : <' + (input && input.length + \" bytes buffer\" || \"null\") + \">\\n\" +\n '\\t\"data\" : <' + (uncompressedData && uncompressedData.length + \" bytes buffer\" || \"null\") + \">\\n\" +\n '}';\n }\n }\n};\n","var ZipEntry = require(\"./zipEntry\"),\n\tHeaders = require(\"./headers\"),\n\tUtils = require(\"./util\");\n\nmodule.exports = function (/*String|Buffer*/input, /*Number*/inputType) {\n\tvar entryList = [],\n\t\tentryTable = {},\n\t\t_comment = Buffer.alloc(0),\n\t\tfilename = \"\",\n\t\tfs = Utils.FileSystem.require(),\n\t\tinBuffer = null,\n\t\tmainHeader = new Headers.MainHeader();\n\n\tif (inputType === Utils.Constants.FILE) {\n\t\t// is a filename\n\t\tfilename = input;\n\t\tinBuffer = fs.readFileSync(filename);\n\t\treadMainHeader();\n\t} else if (inputType === Utils.Constants.BUFFER) {\n\t\t// is a memory buffer\n\t\tinBuffer = input;\n\t\treadMainHeader();\n\t} else {\n\t\t// none. is a new file\n\t}\n\n\tfunction readEntries() {\n\t\tentryTable = {};\n\t\tentryList = new Array(mainHeader.diskEntries); // total number of entries\n\t\tvar index = mainHeader.offset; // offset of first CEN header\n\t\tfor (var i = 0; i < entryList.length; i++) {\n\n\t\t\tvar tmp = index,\n\t\t\t\tentry = new ZipEntry(inBuffer);\n\t\t\tentry.header = inBuffer.slice(tmp, tmp += Utils.Constants.CENHDR);\n\n\t\t\tentry.entryName = inBuffer.slice(tmp, tmp += entry.header.fileNameLength);\n\n\t\t\tif (entry.header.extraLength) {\n\t\t\t\tentry.extra = inBuffer.slice(tmp, tmp += entry.header.extraLength);\n\t\t\t}\n\n\t\t\tif (entry.header.commentLength)\n\t\t\t\tentry.comment = inBuffer.slice(tmp, tmp + entry.header.commentLength);\n\n\t\t\tindex += entry.header.entryHeaderSize;\n\n\t\t\tentryList[i] = entry;\n\t\t\tentryTable[entry.entryName] = entry;\n\t\t}\n\t}\n\n\tfunction readMainHeader() {\n\t\tvar i = inBuffer.length - Utils.Constants.ENDHDR, // END header size\n\t\t\tn = Math.max(0, i - 0xFFFF), // 0xFFFF is the max zip file comment length\n\t\t\tendOffset = -1; // Start offset of the END header\n\n\t\tfor (i; i >= n; i--) {\n\t\t\tif (inBuffer[i] !== 0x50) continue; // quick check that the byte is 'P'\n\t\t\tif (inBuffer.readUInt32LE(i) === Utils.Constants.ENDSIG) { // \"PK\\005\\006\"\n\t\t\t\tendOffset = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!~endOffset)\n\t\t\tthrow Utils.Errors.INVALID_FORMAT;\n\n\t\tmainHeader.loadFromBinary(inBuffer.slice(endOffset, endOffset + Utils.Constants.ENDHDR));\n\t\tif (mainHeader.commentLength) {\n\t\t\t_comment = inBuffer.slice(endOffset + Utils.Constants.ENDHDR);\n\t\t}\n\t\treadEntries();\n\t}\n\n\treturn {\n\t\t/**\n\t\t * Returns an array of ZipEntry objects existent in the current opened archive\n\t\t * @return Array\n\t\t */\n\t\tget entries() {\n\t\t\treturn entryList;\n\t\t},\n\n\t\t/**\n\t\t * Archive comment\n\t\t * @return {String}\n\t\t */\n\t\tget comment() {\n\t\t\treturn _comment.toString();\n\t\t},\n\t\tset comment(val) {\n\t\t\tmainHeader.commentLength = val.length;\n\t\t\t_comment = val;\n\t\t},\n\n\t\t/**\n\t\t * Returns a reference to the entry with the given name or null if entry is inexistent\n\t\t *\n\t\t * @param entryName\n\t\t * @return ZipEntry\n\t\t */\n\t\tgetEntry: function (/*String*/entryName) {\n\t\t\treturn entryTable[entryName] || null;\n\t\t},\n\n\t\t/**\n\t\t * Adds the given entry to the entry list\n\t\t *\n\t\t * @param entry\n\t\t */\n\t\tsetEntry: function (/*ZipEntry*/entry) {\n\t\t\tentryList.push(entry);\n\t\t\tentryTable[entry.entryName] = entry;\n\t\t\tmainHeader.totalEntries = entryList.length;\n\t\t},\n\n\t\t/**\n\t\t * Removes the entry with the given name from the entry list.\n\t\t *\n\t\t * If the entry is a directory, then all nested files and directories will be removed\n\t\t * @param entryName\n\t\t */\n\t\tdeleteEntry: function (/*String*/entryName) {\n\t\t\tvar entry = entryTable[entryName];\n\t\t\tif (entry && entry.isDirectory) {\n\t\t\t\tvar _self = this;\n\t\t\t\tthis.getEntryChildren(entry).forEach(function (child) {\n\t\t\t\t\tif (child.entryName !== entryName) {\n\t\t\t\t\t\t_self.deleteEntry(child.entryName)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\tentryList.splice(entryList.indexOf(entry), 1);\n\t\t\tdelete(entryTable[entryName]);\n\t\t\tmainHeader.totalEntries = entryList.length;\n\t\t},\n\n\t\t/**\n\t\t * Iterates and returns all nested files and directories of the given entry\n\t\t *\n\t\t * @param entry\n\t\t * @return Array\n\t\t */\n\t\tgetEntryChildren: function (/*ZipEntry*/entry) {\n\t\t\tif (entry.isDirectory) {\n\t\t\t\tvar list = [],\n\t\t\t\t\tname = entry.entryName,\n\t\t\t\t\tlen = name.length;\n\n\t\t\t\tentryList.forEach(function (zipEntry) {\n\t\t\t\t\tif (zipEntry.entryName.substr(0, len) === name) {\n\t\t\t\t\t\tlist.push(zipEntry);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn list;\n\t\t\t}\n\t\t\treturn []\n\t\t},\n\n\t\t/**\n\t\t * Returns the zip file\n\t\t *\n\t\t * @return Buffer\n\t\t */\n\t\tcompressToBuffer: function () {\n\t\t\tif (entryList.length > 1) {\n\t\t\t\tentryList.sort(function (a, b) {\n\t\t\t\t\tvar nameA = a.entryName.toLowerCase();\n\t\t\t\t\tvar nameB = b.entryName.toLowerCase();\n\t\t\t\t\tif (nameA < nameB) {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (nameA > nameB) {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar totalSize = 0,\n\t\t\t\tdataBlock = [],\n\t\t\t\tentryHeaders = [],\n\t\t\t\tdindex = 0;\n\n\t\t\tmainHeader.size = 0;\n\t\t\tmainHeader.offset = 0;\n\n\t\t\tentryList.forEach(function (entry) {\n\t\t\t\t// compress data and set local and entry header accordingly. Reason why is called first\n\t\t\t\tvar compressedData = entry.getCompressedData();\n\t\t\t\t// data header\n\t\t\t\tentry.header.offset = dindex;\n\t\t\t\tvar dataHeader = entry.header.dataHeaderToBinary();\n\t\t\t\tvar entryNameLen = entry.rawEntryName.length;\n\t\t\t\tvar extra = entry.extra.toString();\n\t\t\t\tvar postHeader = Buffer.alloc(entryNameLen + extra.length);\n\t\t\t\tentry.rawEntryName.copy(postHeader, 0);\n\t\t\t\tpostHeader.fill(extra, entryNameLen);\n\n\t\t\t\tvar dataLength = dataHeader.length + postHeader.length + compressedData.length;\n\n\t\t\t\tdindex += dataLength;\n\n\t\t\t\tdataBlock.push(dataHeader);\n\t\t\t\tdataBlock.push(postHeader);\n\t\t\t\tdataBlock.push(compressedData);\n\n\t\t\t\tvar entryHeader = entry.packHeader();\n\t\t\t\tentryHeaders.push(entryHeader);\n\t\t\t\tmainHeader.size += entryHeader.length;\n\t\t\t\ttotalSize += (dataLength + entryHeader.length);\n\t\t\t});\n\n\t\t\ttotalSize += mainHeader.mainHeaderSize; // also includes zip file comment length\n\t\t\t// point to end of data and beginning of central directory first record\n\t\t\tmainHeader.offset = dindex;\n\n\t\t\tdindex = 0;\n\t\t\tvar outBuffer = Buffer.alloc(totalSize);\n\t\t\tdataBlock.forEach(function (content) {\n\t\t\t\tcontent.copy(outBuffer, dindex); // write data blocks\n\t\t\t\tdindex += content.length;\n\t\t\t});\n\t\t\tentryHeaders.forEach(function (content) {\n\t\t\t\tcontent.copy(outBuffer, dindex); // write central directory entries\n\t\t\t\tdindex += content.length;\n\t\t\t});\n\n\t\t\tvar mh = mainHeader.toBinary();\n\t\t\tif (_comment) {\n\t\t\t\t_comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment\n\t\t\t}\n\n\t\t\tmh.copy(outBuffer, dindex); // write main header\n\n\t\t\treturn outBuffer\n\t\t},\n\n\t\ttoAsyncBuffer: function (/*Function*/onSuccess, /*Function*/onFail, /*Function*/onItemStart, /*Function*/onItemEnd) {\n\t\t\tif (entryList.length > 1) {\n\t\t\t\tentryList.sort(function (a, b) {\n\t\t\t\t\tvar nameA = a.entryName.toLowerCase();\n\t\t\t\t\tvar nameB = b.entryName.toLowerCase();\n\t\t\t\t\tif (nameA > nameB) {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (nameA < nameB) {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar totalSize = 0,\n\t\t\t\tdataBlock = [],\n\t\t\t\tentryHeaders = [],\n\t\t\t\tdindex = 0;\n\n\t\t\tmainHeader.size = 0;\n\t\t\tmainHeader.offset = 0;\n\n\t\t\tvar compress = function (entryList) {\n\t\t\t\tvar self = arguments.callee;\n\t\t\t\tif (entryList.length) {\n\t\t\t\t\tvar entry = entryList.pop();\n\t\t\t\t\tvar name = entry.entryName + entry.extra.toString();\n\t\t\t\t\tif (onItemStart) onItemStart(name);\n\t\t\t\t\tentry.getCompressedDataAsync(function (compressedData) {\n\t\t\t\t\t\tif (onItemEnd) onItemEnd(name);\n\n\t\t\t\t\t\tentry.header.offset = dindex;\n\t\t\t\t\t\t// data header\n\t\t\t\t\t\tvar dataHeader = entry.header.dataHeaderToBinary();\n\t\t\t\t\t\tvar postHeader;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tpostHeader = Buffer.alloc(name.length, name); // using alloc will work on node 5.x+\n\t\t\t\t\t\t} catch(e){\n\t\t\t\t\t\t\tpostHeader = new Buffer(name); // use deprecated method if alloc fails...\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar dataLength = dataHeader.length + postHeader.length + compressedData.length;\n\n\t\t\t\t\t\tdindex += dataLength;\n\n\t\t\t\t\t\tdataBlock.push(dataHeader);\n\t\t\t\t\t\tdataBlock.push(postHeader);\n\t\t\t\t\t\tdataBlock.push(compressedData);\n\n\t\t\t\t\t\tvar entryHeader = entry.packHeader();\n\t\t\t\t\t\tentryHeaders.push(entryHeader);\n\t\t\t\t\t\tmainHeader.size += entryHeader.length;\n\t\t\t\t\t\ttotalSize += (dataLength + entryHeader.length);\n\n\t\t\t\t\t\tif (entryList.length) {\n\t\t\t\t\t\t\tself(entryList);\n\t\t\t\t\t\t} else {\n\n\n\t\t\t\t\t\t\ttotalSize += mainHeader.mainHeaderSize; // also includes zip file comment length\n\t\t\t\t\t\t\t// point to end of data and beginning of central directory first record\n\t\t\t\t\t\t\tmainHeader.offset = dindex;\n\n\t\t\t\t\t\t\tdindex = 0;\n\t\t\t\t\t\t\tvar outBuffer = Buffer.alloc(totalSize);\n\t\t\t\t\t\t\tdataBlock.forEach(function (content) {\n\t\t\t\t\t\t\t\tcontent.copy(outBuffer, dindex); // write data blocks\n\t\t\t\t\t\t\t\tdindex += content.length;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tentryHeaders.forEach(function (content) {\n\t\t\t\t\t\t\t\tcontent.copy(outBuffer, dindex); // write central directory entries\n\t\t\t\t\t\t\t\tdindex += content.length;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tvar mh = mainHeader.toBinary();\n\t\t\t\t\t\t\tif (_comment) {\n\t\t\t\t\t\t\t\t_comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmh.copy(outBuffer, dindex); // write main header\n\n\t\t\t\t\t\t\tonSuccess(outBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tcompress(entryList);\n\t\t}\n\t}\n};\n","export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = any> = (event?: T) => void;\nexport type WildcardHandler = (type: EventType, event?: any) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList = Array<Handler>;\nexport type WildCardEventHandlerList = Array<WildcardHandler>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap = Map<EventType, EventHandlerList | WildCardEventHandlerList>;\n\nexport interface Emitter {\n\tall: EventHandlerMap;\n\n\ton<T = any>(type: EventType, handler: Handler<T>): void;\n\ton(type: '*', handler: WildcardHandler): void;\n\n\toff<T = any>(type: EventType, handler: Handler<T>): void;\n\toff(type: '*', handler: WildcardHandler): void;\n\n\temit<T = any>(type: EventType, event?: T): void;\n\temit(type: '*', event?: any): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt(all?: EventHandlerMap): Emitter {\n\tall = all || new Map();\n\n\treturn {\n\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<T = any>(type: EventType, handler: Handler<T>) {\n\t\t\tconst handlers = all.get(type);\n\t\t\tconst added = handlers && handlers.push(handler);\n\t\t\tif (!added) {\n\t\t\t\tall.set(type, [handler]);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<T = any>(type: EventType, handler: Handler<T>) {\n\t\t\tconst handlers = all.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing \"*\" handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<T = any>(type: EventType, evt: T) {\n\t\t\t((all.get(type) || []) as EventHandlerList).slice().map((handler) => { handler(evt); });\n\t\t\t((all.get('*') || []) as WildCardEventHandlerList).slice().map((handler) => { handler(type, evt); });\n\t\t}\n\t};\n}\n","import * as monthUtils from '../shared/months';\nimport * as sheet from '../server/sheet';\nimport * as budget from '../server/budget/base';\nimport * as db from '../server/db';\nimport * as prefs from '../server/prefs';\nimport * as budgetActions from '../server/budget/actions';\nimport { runQuery as aqlQuery } from '../server/aql/schema/run-query';\nimport { batchMessages, setSyncingMode } from '../server/sync';\nimport { runHandler, runMutator } from '../server/mutators';\nimport { addTransactions } from '../server/accounts/sync';\nimport q from '../shared/query';\n\nfunction pickRandom(list) {\n return list[((Math.random() * list.length) | 0) % list.length];\n}\n\nfunction number(start, end) {\n return start + (end - start) * Math.random();\n}\n\nfunction integer(start, end) {\n return number(start, end) | 0;\n}\n\nfunction findMin(items, field) {\n let item = items[0];\n for (let i = 0; i < items.length; i++) {\n if (items[i][field] < item[field]) {\n item = items[i];\n }\n }\n return item;\n}\n\nfunction getStartingBalanceCat(categories) {\n return categories.find(c => c.name === 'Starting Balances').id;\n}\n\nfunction extractCommonThings(payees, groups) {\n let incomePayee = payees.find(p => p.name === 'Deposit');\n let expensePayees = payees.filter(\n p => p.name !== 'Deposit' && p.name !== 'Starting Balance'\n );\n let expenseGroup = groups.find(g => g.is_income === 0);\n let incomeGroup = groups.find(g => g.is_income === 1);\n let categories = expenseGroup.categories.filter(\n c =>\n [\n 'Food',\n 'Restaurants',\n 'Entertainment',\n 'Clothing',\n 'General',\n 'Gift',\n 'Medical'\n ].indexOf(c.name) !== -1\n );\n\n return {\n incomePayee,\n expensePayees: expensePayees.filter(p => !p.bill),\n incomeGroup,\n expenseCategories: categories,\n billCategories: groups.find(g => g.name === 'Bills').categories,\n billPayees: expensePayees.filter(p => p.bill)\n };\n}\n\nasync function fillPrimaryChecking(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories,\n billCategories,\n billPayees\n } = extractCommonThings(payees, groups);\n let numTransactions = integer(100, 200);\n\n let transactions = [];\n for (let i = 0; i < numTransactions; i++) {\n let payee;\n if (Math.random() < 0.09) {\n payee = incomePayee;\n } else {\n payee = pickRandom(expensePayees);\n }\n\n let category;\n if (payee.name === 'Deposit') {\n category = incomeGroup.categories.find(c => c.name === 'Income');\n } else {\n category = pickRandom(expenseCategories);\n }\n\n let amount;\n if (payee.name === 'Deposit') {\n amount = integer(50000, 70000);\n } else {\n amount = integer(0, Math.random() < 0.05 ? -8000 : -700);\n }\n\n let transaction = {\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subDays(monthUtils.currentDay(), (i / 3) | 0),\n category: category.id\n };\n transactions.push(transaction);\n\n if (Math.random() < 0.2) {\n let a = (transaction.amount / 3) | 0;\n let pick = () =>\n payee === incomePayee\n ? incomeGroup.categories.find(c => c.name === 'Income').id\n : pickRandom(expenseCategories).id;\n transaction.subtransactions = [\n { amount: a, category: pick() },\n { amount: a, category: pick() },\n {\n amount: transaction.amount - a * 2,\n category: pick()\n }\n ];\n }\n }\n\n let earliestMonth = monthUtils.monthFromDate(\n transactions[transactions.length - 1].date\n );\n let months = monthUtils.rangeInclusive(\n earliestMonth,\n monthUtils.currentMonth()\n );\n let currentDay = monthUtils.currentDay();\n for (let month of months) {\n let date = monthUtils.addDays(month, '12');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -10000,\n payee: billPayees.find(p => p.name.toLowerCase().includes('power')).id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Power').id\n });\n }\n\n date = monthUtils.addDays(month, '18');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -9000,\n payee: billPayees.find(p => p.name.toLowerCase().includes('water')).id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Water').id\n });\n }\n\n date = monthUtils.addDays(month, '2');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -120000,\n payee: billPayees.find(p => p.name.toLowerCase().includes('housy')).id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Mortgage').id\n });\n }\n\n date = monthUtils.addDays(month, '20');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -6000,\n payee: billPayees.find(p => p.name.toLowerCase().includes('internet'))\n .id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Internet').id\n });\n }\n\n date = monthUtils.addDays(month, '23');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -7500,\n payee: billPayees.find(p => p.name.toLowerCase().includes('t-mobile'))\n .id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Cell').id\n });\n }\n }\n\n let earliestDate = null;\n transactions.forEach(t => {\n if (earliestDate == null || t.date < earliestDate) {\n earliestDate = t.date;\n }\n });\n\n transactions.unshift({\n amount: 100000,\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date: earliestDate,\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n });\n\n return addTransactions(account.id, transactions);\n}\n\nasync function fillChecking(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n let numTransactions = integer(20, 40);\n\n let transactions = [];\n for (let i = 0; i < numTransactions; i++) {\n let payee;\n if (Math.random() < 0.04) {\n payee = incomePayee;\n } else {\n payee = pickRandom(expensePayees);\n }\n\n let category;\n if (payee.name === 'Deposit') {\n category = incomeGroup.categories.find(c => c.name === 'Income');\n } else {\n category = pickRandom(expenseCategories);\n }\n\n let amount =\n payee.name === 'Deposit' ? integer(50000, 70000) : integer(0, -10000);\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subDays(monthUtils.currentDay(), (i * 2) | 0),\n category: category.id\n });\n }\n\n transactions.unshift({\n amount: integer(90000, 120000),\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date: transactions[transactions.length - 1].date,\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n });\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function fillInvestment(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n\n let numTransactions = integer(10, 30);\n\n let transactions = [];\n for (let i = 0; i < numTransactions; i++) {\n let payee = incomePayee;\n let category = incomeGroup.categories.find(c => c.name === 'Income');\n\n let amount = integer(10000, 20000);\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subDays(monthUtils.currentDay(), integer(10, 360)),\n category: category.id\n });\n }\n\n transactions.unshift({\n amount: integer(10000, 20000),\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date: findMin(transactions, 'date').date,\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n });\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function fillSavings(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n\n let numTransactions = integer(15, 40);\n\n let transactions = [];\n for (let i = 0; i < numTransactions; i++) {\n let payee;\n if (Math.random() < 0.3) {\n payee = incomePayee;\n } else {\n payee = pickRandom(expensePayees);\n }\n let category =\n payee === incomePayee\n ? incomeGroup.categories.find(c => c.name === 'Income')\n : pickRandom(expenseCategories);\n let amount =\n payee === incomePayee ? integer(10000, 80000) : integer(-10000, -2000);\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subDays(monthUtils.currentDay(), (i * 5) | 0),\n category: category.id\n });\n }\n\n transactions.unshift({\n amount: 30000,\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date: transactions[transactions.length - 1].date,\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n });\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function fillMortgage(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n\n let numTransactions = integer(7, 10);\n let amount = integer(100000, 200000);\n let category = incomeGroup.categories.find(c => c.name === 'Income');\n\n let transactions = [\n {\n amount: integer(-3000, -3500) * 100 * 100,\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date:\n monthUtils.subMonths(monthUtils.currentDay(), numTransactions) + '-02',\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n }\n ];\n for (let i = 0; i < numTransactions; i++) {\n let payee = incomePayee;\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subMonths(monthUtils.currentDay(), i) + '-02',\n category: category.id,\n starting_balance_flag: true\n });\n }\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function fillOther(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n\n let numTransactions = integer(3, 6);\n let category = incomeGroup.categories.find(c => c.name === 'Income');\n\n let transactions = [\n {\n amount: integer(3250, 3700) * 100 * 100,\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date:\n monthUtils.subMonths(monthUtils.currentDay(), numTransactions) + '-02',\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n }\n ];\n for (let i = 0; i < numTransactions; i++) {\n let payee = incomePayee;\n let amount = integer(4, 9) * 100 * 100;\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subMonths(monthUtils.currentDay(), i) + '-02',\n category: category.id\n });\n }\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function createBudget(accounts, payees, groups) {\n let primaryAccount = accounts.find(a => (a.name = 'Bank of America'));\n let earliestDate = (await db.first(\n `SELECT * FROM v_transactions t LEFT JOIN accounts a ON t.account = a.id\n WHERE a.offbudget = 0 AND t.is_child = 0 ORDER BY date ASC LIMIT 1`\n )).date;\n let earliestPrimaryDate = (await db.first(\n `SELECT * FROM v_transactions t LEFT JOIN accounts a ON t.account = a.id\n WHERE a.id = ? AND a.offbudget = 0 AND t.is_child = 0 ORDER BY date ASC LIMIT 1`,\n [primaryAccount.id]\n )).date;\n\n let start = monthUtils.monthFromDate(db.fromDateRepr(earliestDate));\n let end = monthUtils.currentMonth();\n let months = monthUtils.rangeInclusive(start, end);\n\n function category(name) {\n for (let group of groups) {\n let cat = group.categories.find(c => c.name === name);\n if (cat) {\n return cat;\n }\n }\n }\n\n function setBudget(month, category, amount) {\n return budgetActions.setBudget({ month, category: category.id, amount });\n }\n\n function setBudgetIfSpent(month, cat) {\n let spent = sheet.getCellValue(\n monthUtils.sheetForMonth(month),\n `sum-amount-${cat.id}`\n );\n\n if (spent < 0) {\n setBudget(month, cat, -spent);\n }\n }\n\n await runMutator(() =>\n batchMessages(async () => {\n for (let month of months) {\n if (\n month >=\n monthUtils.monthFromDate(db.fromDateRepr(earliestPrimaryDate))\n ) {\n setBudget(month, category('Food'), 40000);\n setBudget(month, category('Restaurants'), 30000);\n setBudget(month, category('Entertainment'), 10000);\n setBudget(month, category('Clothing'), 3000);\n setBudget(month, category('General'), 50000);\n setBudget(month, category('Gift'), 7500);\n setBudget(month, category('Medical'), 10000);\n\n setBudget(month, category('Cell'), 7500);\n setBudget(month, category('Internet'), 6000);\n setBudget(month, category('Mortgage'), 120000);\n setBudget(month, category('Water'), 9000);\n setBudget(month, category('Power'), 10000);\n } else {\n setBudgetIfSpent(month, category('Food'));\n setBudgetIfSpent(month, category('Restaurants'));\n setBudgetIfSpent(month, category('Entertainment'));\n setBudgetIfSpent(month, category('Clothing'));\n setBudgetIfSpent(month, category('General'));\n setBudgetIfSpent(month, category('Gift'));\n setBudgetIfSpent(month, category('Medical'));\n\n setBudgetIfSpent(month, category('Cell'));\n setBudgetIfSpent(month, category('Internet'));\n setBudgetIfSpent(month, category('Mortgage'));\n setBudgetIfSpent(month, category('Water'));\n setBudgetIfSpent(month, category('Power'));\n }\n }\n })\n );\n\n await sheet.waitOnSpreadsheet();\n\n await runMutator(() =>\n batchMessages(async () => {\n let prevSaved = 0;\n for (let month of months) {\n if (\n month >=\n monthUtils.monthFromDate(db.fromDateRepr(earliestPrimaryDate)) &&\n month <= monthUtils.currentMonth()\n ) {\n let sheetName = monthUtils.sheetForMonth(month);\n let toBudget = sheet.getCellValue(sheetName, 'to-budget');\n let available = toBudget - prevSaved;\n\n if (available - 403000 > 0) {\n setBudget(month, category('Savings'), available - 403000);\n budgetActions.setBuffer(month, 403000);\n\n prevSaved += available - 403000;\n } else if (available > 0) {\n budgetActions.setBuffer(month, available);\n }\n }\n }\n })\n );\n\n await sheet.waitOnSpreadsheet();\n\n let sheetName = monthUtils.sheetForMonth(monthUtils.currentMonth());\n let toBudget = sheet.getCellValue(sheetName, 'to-budget');\n if (toBudget < 0) {\n await addTransactions(primaryAccount.id, [\n {\n amount: -toBudget,\n category: category('Income').id,\n date: monthUtils.currentMonth() + '-01'\n }\n ]);\n }\n\n // let sheetName = monthUtils.sheetForMonth(monthUtils.currentMonth());\n // let toBudget = sheet.getCellValue(sheetName, 'to-budget');\n // setBudget(monthUtils.currentMonth(), category('Savings'), toBudget);\n\n await sheet.waitOnSpreadsheet();\n}\n\nexport async function createTestBudget(handlers) {\n setSyncingMode('import');\n\n await db.execQuery('PRAGMA journal_mode = OFF');\n\n // Clear out the default categories. This is fine to do without\n // going through the sync system because we are in import mode and\n // these aren't tracked through messages anyway.\n await db.runQuery('DELETE FROM categories;');\n await db.runQuery('DELETE FROM category_groups');\n\n let accounts = [\n { name: 'Bank of America', type: 'checking' },\n { name: 'Ally Savings', type: 'savings' },\n { name: 'Capital One Checking', type: 'checking' },\n { name: 'HSBC', type: 'checking' },\n { name: 'Vanguard 401k', type: 'investment', offBudget: 1 },\n { name: 'Mortgage', type: 'mortgage', offBudget: 1 },\n { name: 'House Asset', type: 'other', offBudget: 1 },\n { name: 'Roth IRA', type: 'investment', offBudget: 1 }\n ];\n await runMutator(() =>\n batchMessages(async () => {\n for (let account of accounts) {\n account.id = await handlers['account-create'](account);\n }\n })\n );\n\n let payees = [\n { name: 'Starting Balance' },\n { name: 'Kroger' },\n { name: 'Publix' },\n { name: 'Home Depot' },\n { name: 'Movies' },\n { name: 'Online store' },\n { name: 'Deposit' },\n { name: 'Dominion Power', bill: true },\n { name: 'Extra Watery', bill: true },\n { name: 'Housy House', bill: true },\n { name: 'Fast Internet', bill: true },\n { name: 'T-mobile', bill: true }\n ];\n\n await runMutator(() =>\n batchMessages(async () => {\n for (let payee of payees) {\n payee.id = await handlers['payee-create']({ name: payee.name });\n }\n })\n );\n\n let categoryGroups = [\n {\n name: 'Usual Expenses',\n categories: [\n { name: 'Savings' },\n { name: 'Medical' },\n { name: 'Gift' },\n { name: 'General' },\n { name: 'Clothing' },\n { name: 'Entertainment' },\n { name: 'Restaurants' },\n { name: 'Food' }\n ]\n },\n {\n name: 'Bills',\n categories: [\n { name: 'Power' },\n { name: 'Water' },\n { name: 'Mortgage' },\n { name: 'Internet' },\n { name: 'Cell' }\n ]\n },\n {\n name: 'Income',\n is_income: true,\n categories: [\n { name: 'Income', is_income: true },\n { name: 'Misc', is_income: true },\n { name: 'Starting Balances', is_income: true }\n ]\n }\n ];\n\n await runMutator(async () => {\n for (let group of categoryGroups) {\n group.id = await handlers['category-group-create']({\n name: group.name,\n isIncome: group.is_income ? 1 : 0\n });\n\n for (let category of group.categories) {\n category.id = await handlers['category-create']({\n ...category,\n isIncome: category.is_income ? 1 : 0,\n groupId: group.id\n });\n }\n }\n });\n\n let allGroups = (await runHandler(handlers['get-categories'])).grouped;\n\n setSyncingMode('import');\n\n await runMutator(() =>\n batchMessages(async () => {\n for (let account of accounts) {\n switch (account.type) {\n case 'checking':\n if (account.name === 'Bank of America') {\n await fillPrimaryChecking(handlers, account, payees, allGroups);\n } else {\n await fillChecking(handlers, account, payees, allGroups);\n }\n break;\n case 'investment':\n await fillInvestment(handlers, account, payees, allGroups);\n break;\n case 'savings':\n await fillSavings(handlers, account, payees, allGroups);\n break;\n case 'mortgage':\n await fillMortgage(handlers, account, payees, allGroups);\n break;\n case 'other':\n if (account.name === 'House Asset') {\n await fillOther(handlers, account, payees, allGroups);\n } else {\n await fillChecking(handlers, account, payees, allGroups);\n }\n break;\n default:\n }\n }\n })\n );\n\n setSyncingMode('import');\n\n // This checks to see if the primary account is in the negative.\n // This might happen depending on the transactions added, but we\n // don't want to show that as it'd be weird. We modify the latest\n // deposit transaction to force it to be positive\n let primaryAccount = accounts.find(a => (a.name = 'Bank of America'));\n let { data: primaryBalance } = await aqlQuery(\n q('transactions')\n .filter({ account: primaryAccount.id })\n .calculate({ $sum: '$amount' })\n .serialize()\n );\n if (primaryBalance < 0) {\n let { data: results } = await aqlQuery(\n q('transactions')\n .filter({ account: primaryAccount.id, amount: { $gt: 0 } })\n .limit(1)\n .select(['id', 'amount'])\n .serialize()\n );\n let lastDeposit = results[0];\n\n await runHandler(handlers['transaction-update'], {\n ...lastDeposit,\n amount: lastDeposit.amount + -primaryBalance + integer(10000, 20000)\n });\n }\n\n // Bust the cache and reload the spreadsheet\n setSyncingMode('disabled');\n await prefs.savePrefs({ isCached: false });\n await sheet.reloadSpreadsheet(db);\n await budget.createAllBudgets();\n\n await sheet.waitOnSpreadsheet();\n\n // Create a budget\n await createBudget(accounts, payees, allGroups);\n}\n","export function captureException(exc) {\n console.log('[Exception]', exc);\n if (global.SentryClient) {\n global.SentryClient.captureException(exc);\n }\n}\n\nexport function captureBreadcrumb(breadcrumb) {\n if (global.SentryClient) {\n global.SentryClient.addBreadcrumb(breadcrumb);\n }\n}\n","const lootFs = require('../fs');\nconst fs = require('fs');\nconst { join } = require('path');\n\nlet getStorePath = () => join(lootFs.getDataDir(), 'global-store.json');\nlet store;\nlet persisted = true;\n\nfunction init({ persist = true } = {}) {\n if (persist) {\n try {\n store = JSON.parse(fs.readFileSync(getStorePath(), 'utf8'));\n } catch (e) {\n store = {};\n }\n } else {\n store = {};\n }\n\n persisted = persist;\n}\n\nfunction _saveStore() {\n if (persisted) {\n return new Promise(function(resolve, reject) {\n fs.writeFile(getStorePath(), JSON.stringify(store), 'utf8', function(\n err,\n _\n ) {\n return err ? reject(err) : resolve();\n });\n });\n }\n}\n\nfunction getItem(key) {\n return new Promise(function(resolve) {\n return resolve(store[key]);\n });\n}\n\nfunction setItem(key, value) {\n store[key] = value;\n return _saveStore();\n}\n\nfunction removeItem(key) {\n delete store[key];\n return _saveStore();\n}\n\nfunction multiGet(keys) {\n return new Promise(function(resolve) {\n return resolve(\n keys.map(function(key) {\n return [key, store[key]];\n })\n );\n });\n}\n\nfunction multiSet(keyValues) {\n keyValues.forEach(function([key, value]) {\n store[key] = value;\n });\n return _saveStore();\n}\n\nfunction multiRemove(keys) {\n keys.forEach(function(key) {\n delete store[key];\n });\n return _saveStore();\n}\n\nmodule.exports = {\n init,\n getItem,\n setItem,\n removeItem,\n multiGet,\n multiSet,\n multiRemove\n};\n","function init() {}\n\nfunction send(type, args) {\n // Nothing\n}\n\nmodule.exports = { init, send };\n","let fs = require('fs');\nlet fetch = require('node-fetch');\n\nasync function fetchBinary(url, filepath) {\n const res = await fetch(url);\n return new Promise((resolve, reject) => {\n const fileStream = fs.createWriteStream(filepath);\n res.body.pipe(fileStream);\n res.body.on('error', err => {\n reject(err);\n });\n fileStream.on('finish', function() {\n resolve();\n });\n });\n}\n\nmodule.exports = { fetch, fetchBinary };\n","const fs = require('fs');\nconst path = require('path');\n\nlet documentDir;\n\nlet rootPath = path.join(__dirname, '..', '..', '..', '..');\n\nif (__filename.match('bundle')) {\n // The file name is not our filename and indicates that we're in the\n // bundled form. Because of this, the root path is different.\n rootPath = path.join(__dirname, '..');\n}\n\nmodule.exports = {\n init: () => {\n // Nothing to do\n },\n getDataDir: () => {\n if (!process.env.ACTUAL_DATA_DIR) {\n throw new Error('ACTUAL_DATA_DIR env variable is required');\n }\n return process.env.ACTUAL_DATA_DIR;\n },\n _setDocumentDir: dir => (documentDir = dir),\n getDocumentDir: () => {\n if (!documentDir) {\n throw new Error('Document directory is not set');\n }\n return documentDir;\n },\n getBudgetDir: id => {\n if (!id) {\n throw new Error('getDocumentDir: id is falsy: ' + id);\n }\n\n // TODO: This should be better\n //\n // A cheesy safe guard. The id is generated from the budget name,\n // so it provides an entry point for the user to accidentally (or\n // intentionally) access other parts of the system. Always\n // restrict it to only access files within the budget directory by\n // never allowing slashes.\n if (id.match(/[^A-Za-z0-9\\-_]/)) {\n throw new Error(\n `Invalid budget id \"${id}\". Check the id of your budget in the \"Advanced\" section of the settings page.`\n );\n }\n\n return path.join(module.exports.getDocumentDir(), id);\n },\n bundledDatabasePath: path.join(rootPath, 'default-db.sqlite'),\n migrationsPath: path.join(rootPath, 'migrations'),\n demoBudgetPath: path.join(rootPath, 'demo-budget'),\n join: path.join,\n basename: filepath => path.basename(filepath),\n listDir: filepath =>\n new Promise((resolve, reject) => {\n fs.readdir(filepath, (err, files) => {\n if (err) {\n reject(err);\n } else {\n resolve(files);\n }\n });\n }),\n exists: filepath =>\n new Promise(resolve => {\n fs.access(filepath, fs.constants.F_OK, err => {\n return resolve(!err);\n });\n }),\n mkdir: filepath =>\n new Promise((resolve, reject) => {\n fs.mkdir(filepath, err => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n }),\n size: filepath =>\n new Promise((resolve, reject) => {\n fs.stat(filepath, (err, stats) => {\n if (err) {\n reject(err);\n } else {\n resolve(stats.size);\n }\n });\n }),\n copyFile: (frompath, topath) => {\n return new Promise((resolve, reject) => {\n const readStream = fs.createReadStream(frompath);\n const writeStream = fs.createWriteStream(topath);\n\n readStream.on('error', reject);\n writeStream.on('error', reject);\n\n writeStream.on('open', () => readStream.pipe(writeStream));\n writeStream.once('close', resolve);\n });\n },\n readFile: (filepath, encoding = 'utf8') => {\n if (encoding === 'binary') {\n // `binary` is not actually a valid encoding, you pass `null` into node if\n // you want a buffer\n encoding = null;\n }\n return new Promise((resolve, reject) => {\n fs.readFile(filepath, encoding, (err, data) => {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n });\n },\n writeFile: (filepath, contents) => {\n return new Promise(function(resolve, reject) {\n fs.writeFile(filepath, contents, 'utf8', function(err, _) {\n return err ? reject(err) : resolve();\n });\n });\n },\n removeFile: filepath => {\n return new Promise(function(resolve, reject) {\n fs.unlink(filepath, err => {\n return err ? reject(err) : resolve();\n });\n });\n },\n removeDir: dirpath => {\n return new Promise(function(resolve, reject) {\n fs.rmdir(dirpath, err => {\n return err ? reject(err) : resolve();\n });\n });\n },\n removeDirRecursively: async dirpath => {\n const f = module.exports;\n if (await f.exists(dirpath)) {\n for (let file of await f.listDir(dirpath)) {\n const fullpath = f.join(dirpath, file);\n if (fs.statSync(fullpath).isDirectory()) {\n await f.removeDirRecursively(fullpath);\n } else {\n await f.removeFile(fullpath);\n }\n }\n\n await f.removeDir(dirpath);\n }\n },\n getModifiedTime: filepath => {\n return new Promise(function(resolve, reject) {\n fs.stat(filepath, (err, stats) => {\n if (err) {\n reject(err);\n } else {\n resolve(new Date(stats.mtime));\n }\n });\n });\n }\n};\n","export default {\n info: (...args) => {\n console.log(...args);\n },\n warn: (...args) => {\n console.warn(...args);\n }\n};\n","const Database = require('better-sqlite3');\n\nfunction verifyParamTypes(sql, arr) {\n arr.forEach(val => {\n if (typeof val !== 'string' && typeof val !== 'number' && val !== null) {\n console.log(sql, arr);\n throw new Error('Invalid field type ' + val + ' for sql ' + sql);\n }\n });\n}\n\nexport async function init() {}\n\nexport function prepare(db, sql) {\n return db.prepare(sql);\n}\n\nexport function runQuery(db, sql, params = [], fetchAll) {\n if (params) {\n verifyParamTypes(sql, params);\n }\n\n let stmt;\n try {\n stmt = typeof sql === 'string' ? db.prepare(sql) : sql;\n } catch (e) {\n console.log('error', sql);\n throw e;\n }\n\n if (fetchAll) {\n try {\n let result = stmt.all(...params);\n return result;\n } catch (e) {\n console.log('error', sql);\n throw e;\n }\n } else {\n try {\n let info = stmt.run(...params);\n return { changes: info.changes, insertId: info.lastInsertRowid };\n } catch (e) {\n // console.log('error', sql);\n throw e;\n }\n }\n}\n\nexport function execQuery(db, sql) {\n db.exec(sql);\n}\n\nexport function transaction(db, fn) {\n db.transaction(fn)();\n}\n\n// **Important**: this is an unsafe function since sqlite executes\n// executes statements sequentially. It would be easy for other code\n// to run statements in between our transaction and get caught up in\n// it. This is rarely used, and only needed for specific cases (like\n// batch importing a bunch of data). Don't use this.\nlet transactionDepth = 0;\nexport async function asyncTransaction(db, fn) {\n // Support nested transactions by \"coalescing\" them into the parent\n // one if one is already started\n if (transactionDepth === 0) {\n db.exec('BEGIN TRANSACTION');\n }\n transactionDepth++;\n\n try {\n await fn();\n } finally {\n transactionDepth--;\n // We always commit because rollback is more dangerous - any\n // queries that ran *in-between* this async function would be\n // lost. Right now we are only using transactions for speed\n // purposes unfortunately\n if (transactionDepth === 0) {\n db.exec('COMMIT');\n }\n }\n}\n\nexport function openDatabase(pathOrBuffer) {\n return new Database(pathOrBuffer);\n}\n\nexport function closeDatabase(db) {\n return db.close();\n}\n\nexport function exportDatabase(db) {\n return db.serialize();\n}\n","const uuid = require('uuid');\n\nmodule.exports = {\n v4: function() {\n return Promise.resolve(uuid.v4());\n },\n\n v4Sync: function() {\n return uuid.v4();\n }\n};\n","import fs from 'fs';\nimport csvStringify from 'csv-stringify/lib/sync';\nimport { runQuery as aqlQuery } from '../aql/schema/run-query';\nimport { integerToAmount } from '../../shared/util';\n\nexport async function exportToCSV(\n transactions,\n accounts,\n categoryGroups,\n payees\n) {\n const accountNamesById = accounts.reduce((reduced, { id, name }) => {\n reduced[id] = name;\n return reduced;\n }, {});\n\n const categoryNamesById = categoryGroups.reduce(\n (reduced, { name, categories: subCategories }) => {\n subCategories.forEach(\n subCategory =>\n (reduced[subCategory.id] = `${name}: ${subCategory.name}`)\n );\n return reduced;\n },\n {}\n );\n\n const payeeNamesById = payees.reduce((reduced, { id, name }) => {\n reduced[id] = name;\n return reduced;\n }, {});\n\n const transactionsForExport = transactions.map(\n ({ account, date, payee, notes, category, amount }) => ({\n Account: accountNamesById[account],\n Date: date,\n Payee: payeeNamesById[payee],\n Notes: notes,\n Category: categoryNamesById[category],\n Amount: amount == null ? 0 : integerToAmount(amount)\n })\n );\n\n return csvStringify(transactionsForExport, { header: true });\n}\n\nexport async function exportQueryToCSV(query) {\n let { data: transactions } = await aqlQuery(\n query\n .select([\n { Id: 'id' },\n { Account: 'account.name' },\n { Date: 'date' },\n { Payee: 'payee.name' },\n { ParentId: 'parent_id' },\n { IsParent: 'is_parent' },\n { Notes: 'notes' },\n { Category: 'category.name' },\n { Amount: 'amount' }\n ])\n .options({ splits: 'all' })\n );\n\n let parentsPayees = new Map();\n for (let trans of transactions) {\n if (trans.IsParent) {\n parentsPayees.set(trans.Id, trans.Payee);\n }\n }\n\n // filter out any parent transactions\n let noParents = transactions.filter(t => !t.IsParent);\n\n // map final properties for export and grab the payee for splits from their parent transaction\n let transactionsForExport = noParents.map(trans => {\n return {\n Account: trans.Account,\n Date: trans.Date,\n Payee: trans.ParentId ? parentsPayees.get(trans.ParentId) : trans.Payee,\n Notes: trans.Notes,\n Category: trans.Category,\n Amount: trans.Amount == null ? 0 : integerToAmount(trans.Amount)\n };\n });\n\n return csvStringify(transactionsForExport, { header: true });\n}\n","import asyncStorage from '../../platform/server/asyncStorage';\nimport * as db from '../db';\nimport { getServer } from '../server-config';\nimport * as bankSync from './sync';\nimport { fromPlaidAccountType } from '../../shared/accounts';\nimport { amountToInteger } from '../../shared/util';\nimport { post } from '../post';\nimport { runMutator } from '../mutators';\nconst uuid = require('../../platform/uuid');\n\nexport async function handoffPublicToken(institution, publicToken) {\n let [[, userId], [, key]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n if (institution == null || !institution.institution_id || !institution.name) {\n throw new Error('Invalid institution object');\n }\n\n let id = uuid.v4Sync();\n\n // Make sure to generate an access token first before inserting it\n // into our local database in case it fails\n await post(getServer().PLAID_SERVER + '/handoff_public_token', {\n userId,\n key,\n item_id: id,\n public_token: publicToken\n });\n\n await runMutator(() =>\n db.insertWithUUID('banks', {\n id,\n bank_id: institution.institution_id,\n name: institution.name\n })\n );\n\n return id;\n}\n\nexport async function addAccounts(bankId, accountIds, offbudgetIds = []) {\n let [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n // Get all the available accounts\n let accounts = await bankSync.getAccounts(userId, userKey, bankId);\n\n // Only add the selected accounts\n accounts = accounts.filter(acct => accountIds.includes(acct.account_id));\n\n return Promise.all(\n accounts.map(async acct => {\n let id = await runMutator(async () => {\n let id = await db.insertAccount({\n account_id: acct.account_id,\n name: acct.name,\n official_name: acct.official_name,\n type: fromPlaidAccountType(acct.type),\n balance_current: amountToInteger(acct.balances.current),\n mask: acct.mask,\n bank: bankId,\n offbudget: offbudgetIds.includes(acct.account_id) ? 1 : 0\n });\n\n // Create a transfer payee\n await db.insertPayee({\n name: '',\n transfer_acct: id\n });\n\n return id;\n });\n\n // Do an initial sync\n await bankSync.syncAccount(userId, userKey, id, acct.account_id, bankId);\n\n return id;\n })\n );\n}\n","import fs from '../../platform/server/fs';\nimport qif2json from './qif2json';\nimport csv2json from 'csv-parse/lib/sync';\nimport { dayFromDate } from '../../shared/months';\nimport { looselyParseAmount } from '../../shared/util';\n\nexport function parseFile(filepath, options) {\n let errors = [];\n let m = filepath.match(/\\.[^.]*$/);\n\n if (m) {\n let ext = m[0];\n\n switch (ext.toLowerCase()) {\n case '.qif':\n return parseQIF(filepath);\n case '.csv':\n return parseCSV(filepath, options);\n case '.ofx':\n case '.qfx':\n return parseOFX(filepath);\n default:\n }\n }\n\n errors.push({\n message: 'Invalid file type',\n internal: ''\n });\n return { errors };\n}\n\nasync function parseCSV(filepath, options = {}) {\n let errors = [];\n let contents = await fs.readFile(filepath);\n\n let data;\n try {\n data = csv2json(contents, {\n columns: true,\n bom: true,\n delimiter: options.delimiter || ',',\n quote: '\"',\n trim: true,\n relax_column_count: true\n });\n } catch (err) {\n errors.push({\n message: 'Failed parsing: ' + err.message,\n internal: err.message\n });\n return { errors, transactions: [] };\n }\n\n return { errors, transactions: data };\n}\n\nasync function parseQIF(filepath) {\n let errors = [];\n let contents = await fs.readFile(filepath);\n\n let data;\n try {\n data = qif2json(contents);\n } catch (err) {\n errors.push({\n message: \"Failed parsing: doesn't look like a valid QIF file.\",\n internal: err.stack\n });\n return { errors, transactions: [] };\n }\n\n return {\n errors,\n transactions: data.transactions.map(trans => ({\n amount: trans.amount != null ? looselyParseAmount(trans.amount) : null,\n date: trans.date,\n payee_name: trans.payee,\n imported_payee: trans.payee,\n notes: trans.memo || null\n }))\n };\n}\n\nasync function parseOFX(filepath) {\n let { getOFXTransactions, initModule } = await import(\n /* webpackChunkName: 'xfo' */ 'node-libofx'\n );\n await initModule();\n\n let errors = [];\n let contents = await fs.readFile(filepath);\n\n let data;\n try {\n data = getOFXTransactions(contents);\n } catch (err) {\n errors.push({\n message: 'Failed importing file',\n internal: err.stack\n });\n return { errors };\n }\n\n return {\n errors,\n transactions: data.map(trans => ({\n amount: trans.amount,\n imported_id: trans.fi_id,\n date: trans.date ? dayFromDate(trans.date * 1000) : null,\n payee_name: trans.name,\n imported_payee: trans.name,\n notes: trans.memo || null\n }))\n };\n}\n","import * as db from '../db';\n\nexport async function createPayee(description) {\n // Check to make sure no payee already exists with exactly the same\n // name\n let row = await db.first(\n `SELECT id FROM payees WHERE LOWER(name) = ? AND tombstone = 0`,\n [description.toLowerCase()]\n );\n\n if (row) {\n return row.id;\n } else {\n return db.insertPayee({ name: description });\n }\n}\n\nexport async function getStartingBalancePayee() {\n let category = await db.first(`\n SELECT * FROM categories\n WHERE is_income = 1 AND\n LOWER(name) = 'starting balances' AND\n tombstone = 0\n `);\n if (category === null) {\n category = await db.first(\n 'SELECT * FROM categories WHERE is_income = 1 AND tombstone = 0'\n );\n }\n\n let id = await createPayee('Starting Balance');\n return {\n id,\n category: category ? category.id : null\n };\n}\n","export default function parse(qif, options) {\n var lines = qif.split('\\n'),\n line = lines.shift(),\n type = /!Type:([^$]*)$/.exec(line.trim()),\n data = {},\n transactions = (data.transactions = []),\n transaction = {};\n\n options = options || {};\n\n if (!type || !type.length) {\n throw new Error('File does not appear to be a valid qif file: ' + line);\n }\n data.type = type[1];\n\n var division = {};\n\n while ((line = lines.shift())) {\n line = line.trim();\n if (line === '^') {\n transactions.push(transaction);\n transaction = {};\n continue;\n }\n switch (line[0]) {\n case 'D':\n transaction.date = line.substring(1);\n break;\n case 'T':\n transaction.amount = line.substring(1);\n break;\n case 'N':\n transaction.number = line.substring(1);\n break;\n case 'M':\n transaction.memo = line.substring(1);\n break;\n case 'A':\n transaction.address = (transaction.address || []).concat(\n line.substring(1)\n );\n break;\n case 'P':\n transaction.payee = line.substring(1).replace(/&amp;/g, '&');\n break;\n case 'L':\n var lArray = line.substring(1).split(':');\n transaction.category = lArray[0];\n if (lArray[1] !== undefined) {\n transaction.subcategory = lArray[1];\n }\n break;\n case 'C':\n transaction.clearedStatus = line.substring(1);\n break;\n case 'S':\n var sArray = line.substring(1).split(':');\n division.category = sArray[0];\n if (sArray[1] !== undefined) {\n division.subcategory = sArray[1];\n }\n break;\n case 'E':\n division.description = line.substring(1);\n break;\n case '$':\n division.amount = parseFloat(line.substring(1));\n if (!(transaction.division instanceof Array)) {\n transaction.division = [];\n }\n transaction.division.push(division);\n division = {};\n\n break;\n\n default:\n throw new Error('Unknown Detail Code: ' + line[0]);\n }\n }\n\n if (Object.keys(transaction).length) {\n transactions.push(transaction);\n }\n\n data.dateFormat = options.dateFormat;\n return data;\n}\n","import { RuleError } from '../errors';\nimport * as dateFns from 'date-fns';\nimport {\n monthFromDate,\n yearFromDate,\n isBefore,\n isAfter,\n addDays,\n subDays,\n format as formatDate,\n parseDate\n} from '../../shared/months';\nimport { fastSetMerge } from '../../shared/util';\nimport { sortNumbers, getApproxNumberThreshold } from '../../shared/rules';\nimport { recurConfigToRSchedule } from '../../shared/schedules';\nimport { Schedule as RSchedule } from '../util/rschedule';\n\nfunction safeNumber(n) {\n return isNaN(n) ? null : n;\n}\n\nfunction safeParseInt(n) {\n return safeNumber(parseInt(n));\n}\n\nfunction assert(test, type, msg) {\n if (!test) {\n throw new RuleError(type, msg);\n }\n}\n\nexport function parseRecurDate(desc) {\n try {\n let rules = recurConfigToRSchedule(desc);\n\n return {\n type: 'recur',\n schedule: new RSchedule({ rrules: rules })\n };\n } catch (e) {\n throw new RuleError('parse-recur-date', e.message);\n }\n}\n\nexport function parseDateString(str) {\n if (typeof str !== 'string') {\n return null;\n } else if (str.length === 10) {\n // YYYY-MM-DD\n if (!dateFns.isValid(dateFns.parseISO(str))) {\n return null;\n }\n\n return { type: 'date', date: str };\n } else if (str.length === 7) {\n // YYYY-MM\n if (!dateFns.isValid(dateFns.parseISO(str + '-01'))) {\n return null;\n }\n\n return { type: 'month', date: str };\n } else if (str.length === 4) {\n // YYYY\n if (!dateFns.isValid(dateFns.parseISO(str + '-01-01'))) {\n return null;\n }\n\n return { type: 'year', date: str };\n }\n\n return null;\n}\n\nexport function parseBetweenAmount(between) {\n let { num1, num2 } = between;\n if (typeof num1 !== 'number' || typeof num2 !== 'number') {\n return null;\n }\n return { type: 'between', num1, num2 };\n}\n\nlet CONDITION_TYPES = {\n date: {\n ops: ['is', 'isapprox', 'gt', 'gte', 'lt', 'lte'],\n nullable: false,\n parse(op, value, fieldName) {\n let parsed =\n typeof value === 'string'\n ? parseDateString(value)\n : value.frequency != null\n ? parseRecurDate(value)\n : null;\n assert(\n parsed,\n 'date-format',\n `Invalid date format (field: ${fieldName})`\n );\n\n // Approximate only works with exact & recurring dates\n if (op === 'isapprox') {\n assert(\n parsed.type === 'date' || parsed.type === 'recur',\n 'date-format',\n `Invalid date value for \"isapprox\" (field: ${fieldName})`\n );\n }\n // These only work with exact dates\n else if (op === 'gt' || op === 'gte' || op === 'lt' || op === 'lte') {\n assert(\n parsed.type === 'date',\n 'date-format',\n `Invalid date value for \"${op}\" (field: ${fieldName})`\n );\n }\n\n return parsed;\n }\n },\n id: {\n ops: ['is', 'contains', 'oneOf'],\n nullable: true,\n parse(op, value, fieldName) {\n if (op === 'oneOf') {\n assert(\n Array.isArray(value),\n 'no-empty-array',\n `oneOf must have an array value (field: ${fieldName})`\n );\n return value;\n }\n return value;\n }\n },\n string: {\n ops: ['is', 'contains', 'oneOf'],\n nullable: false,\n parse(op, value, fieldName) {\n if (op === 'oneOf') {\n assert(\n Array.isArray(value),\n 'no-empty-array',\n `oneOf must have an array value (field: ${fieldName}): ${JSON.stringify(\n value\n )}`\n );\n return value.filter(Boolean).map(val => val.toLowerCase());\n }\n\n if (op === 'contains') {\n assert(\n typeof value === 'string' && value.length > 0,\n 'no-empty-string',\n `contains must have non-empty string (field: ${fieldName})`\n );\n }\n\n return value.toLowerCase();\n }\n },\n number: {\n ops: ['is', 'isapprox', 'isbetween', 'gt', 'gte', 'lt', 'lte'],\n nullable: false,\n parse(op, value, fieldName) {\n let parsed =\n typeof value === 'number'\n ? { type: 'literal', value }\n : parseBetweenAmount(value);\n\n assert(\n parsed != null,\n 'not-number',\n `Value must be a number or between amount: ${JSON.stringify(\n value\n )} (field: ${fieldName})`\n );\n\n if (op === 'isbetween') {\n assert(\n parsed.type === 'between',\n 'number-format',\n `Invalid between value for \"${op}\" (field: ${fieldName})`\n );\n } else {\n assert(\n parsed.type === 'literal',\n 'number-format',\n `Invalid number value for \"${op}\" (field: ${fieldName})`\n );\n }\n\n return parsed;\n }\n },\n boolean: {\n ops: ['is'],\n nullable: false,\n parse(op, value, fieldName) {\n assert(\n typeof value === 'boolean',\n 'not-boolean',\n `Value must be a boolean: ${value} (field: ${fieldName})`\n );\n\n return value;\n }\n }\n};\n\nexport class Condition {\n constructor(op, field, value, options, fieldTypes) {\n let typeName = fieldTypes.get(field);\n assert(typeName, 'internal', 'Invalid condition field: ' + field);\n\n let type = CONDITION_TYPES[typeName];\n\n // It's important to validate rules because a faulty rule might mess\n // up the user's transaction (and be very confusing)\n assert(\n type,\n 'internal',\n `Invalid condition type: ${typeName} (field: ${field})`\n );\n assert(\n type.ops.includes(op),\n 'internal',\n `Invalid condition operator: ${op} (type: ${typeName}, field: ${field})`\n );\n\n if (type.nullable !== true) {\n assert(value != null, 'no-null', `Field cannot be empty: ${field}`);\n }\n\n // For strings, an empty string is equal to null\n if (typeName === 'string' && type.nullable !== true) {\n assert(value !== '', 'no-null', `Field cannot be empty: ${field}`);\n }\n\n this.rawValue = value;\n this.unparsedValue = value;\n this.op = op;\n this.field = field;\n this.value = type.parse ? type.parse(op, value, field) : value;\n this.options = options;\n this.type = typeName;\n }\n\n eval(object) {\n let fieldValue = object[this.field];\n if (fieldValue === undefined) {\n return false;\n }\n\n if (typeof fieldValue === 'string') {\n fieldValue = fieldValue.toLowerCase();\n }\n\n let type = this.type;\n\n if (type === 'number' && this.options) {\n if (this.options.outflow) {\n if (fieldValue > 0) {\n return false;\n }\n\n fieldValue = -fieldValue;\n } else if (this.options.inflow) {\n if (fieldValue < 0) {\n return false;\n }\n }\n }\n\n let extractValue = v => (type === 'number' ? v.value : v);\n\n switch (this.op) {\n case 'isapprox':\n case 'is':\n if (type === 'date') {\n if (fieldValue == null) {\n return false;\n }\n\n if (this.value.type === 'recur') {\n let { schedule } = this.value;\n if (this.op === 'isapprox') {\n let fieldDate = parseDate(fieldValue);\n return schedule.occursBetween(\n dateFns.subDays(fieldDate, 2),\n dateFns.addDays(fieldDate, 2)\n );\n } else {\n return schedule.occursOn({ date: parseDate(fieldValue) });\n }\n } else {\n let { date } = this.value;\n\n if (this.op === 'isapprox') {\n let fullDate = parseDate(date);\n let high = addDays(fullDate, 2);\n let low = subDays(fullDate, 2);\n\n return fieldValue >= low && fieldValue <= high;\n } else {\n switch (this.value.type) {\n case 'date':\n return fieldValue === date;\n case 'month':\n return monthFromDate(fieldValue) === date;\n case 'year':\n return yearFromDate(fieldValue) === date;\n default:\n }\n }\n }\n } else if (type === 'number') {\n let number = this.value.value;\n if (this.op === 'isapprox') {\n let threshold = getApproxNumberThreshold(number);\n return (\n fieldValue >= number - threshold &&\n fieldValue <= number + threshold\n );\n }\n return fieldValue === number;\n }\n\n return fieldValue === this.value;\n case 'isbetween': {\n // The parsing logic already checks that the value is of the\n // right type (only numbers with high and low)\n let [low, high] = sortNumbers(this.value.num1, this.value.num2);\n return fieldValue >= low && fieldValue <= high;\n }\n case 'contains':\n if (fieldValue === null) {\n return false;\n }\n return fieldValue.indexOf(this.value) !== -1;\n case 'oneOf':\n if (fieldValue === null) {\n return false;\n }\n return this.value.indexOf(fieldValue) !== -1;\n case 'gt':\n if (fieldValue === null) {\n return false;\n } else if (type === 'date') {\n return isAfter(fieldValue, this.value.date);\n }\n\n return fieldValue > extractValue(this.value);\n case 'gte':\n if (fieldValue === null) {\n return false;\n } else if (type === 'date') {\n return (\n fieldValue === this.value.date ||\n isAfter(fieldValue, this.value.date)\n );\n }\n\n return fieldValue >= extractValue(this.value);\n case 'lt':\n if (fieldValue === null) {\n return false;\n } else if (type === 'date') {\n return isBefore(fieldValue, this.value.date);\n }\n return fieldValue < extractValue(this.value);\n case 'lte':\n if (fieldValue === null) {\n return false;\n } else if (type === 'date') {\n return (\n fieldValue === this.value.date ||\n isBefore(fieldValue, this.value.date)\n );\n }\n return fieldValue <= extractValue(this.value);\n default:\n }\n\n return false;\n }\n\n getValue() {\n return this.value;\n }\n\n serialize() {\n return {\n op: this.op,\n field: this.field,\n value: this.unparsedValue,\n type: this.type,\n ...(this.options ? { options: this.options } : null)\n };\n }\n}\n\nlet ACTION_OPS = ['set', 'link-schedule'];\n\nexport class Action {\n constructor(op, field, value, options, fieldTypes) {\n assert(\n ACTION_OPS.includes(op),\n 'internal',\n `Invalid action operation: ${op}`\n );\n\n if (op === 'set') {\n let typeName = fieldTypes.get(field);\n assert(typeName, 'internal', `Invalid field for action: ${field}`);\n this.field = field;\n this.type = typeName;\n } else if (op === 'link-schedule') {\n this.field = null;\n this.type = 'id';\n }\n\n this.op = op;\n this.rawValue = value;\n this.value = value;\n this.options = options;\n }\n\n exec(object) {\n switch (this.op) {\n case 'set':\n object[this.field] = this.value;\n break;\n case 'link-schedule':\n object.schedule = this.value;\n break;\n default:\n }\n }\n\n serialize() {\n return {\n op: this.op,\n field: this.field,\n value: this.value,\n type: this.type,\n ...(this.options ? { options: this.options } : null)\n };\n }\n}\n\nexport class Rule {\n constructor({ id, stage, conditions, actions, fieldTypes }) {\n this.id = id;\n this.stage = stage;\n this.conditions = conditions.map(\n c => new Condition(c.op, c.field, c.value, c.options, fieldTypes)\n );\n this.actions = actions.map(\n a => new Action(a.op, a.field, a.value, a.options, fieldTypes)\n );\n }\n\n evalConditions(object) {\n if (this.conditions.length === 0) {\n return false;\n }\n\n return this.conditions.every(condition => {\n return condition.eval(object);\n });\n }\n\n execActions(object) {\n let changes = {};\n this.actions.forEach(action => action.exec(changes));\n return changes;\n }\n\n exec(object) {\n if (this.evalConditions(object)) {\n return this.execActions(object);\n }\n return null;\n }\n\n // Apply is similar to exec but applies the changes for you\n apply(object) {\n let changes = this.exec(object);\n return Object.assign({}, object, changes);\n }\n\n getId() {\n return this.id;\n }\n\n serialize() {\n return {\n id: this.id,\n stage: this.stage,\n conditions: this.conditions.map(c => c.serialize()),\n actions: this.actions.map(a => a.serialize())\n };\n }\n}\n\nexport class RuleIndexer {\n constructor({ field, method }) {\n this.field = field;\n this.method = method;\n this.rules = new Map();\n }\n\n getIndex(key) {\n if (!this.rules.has(key)) {\n this.rules.set(key, new Set());\n }\n return this.rules.get(key);\n }\n\n getIndexForValue(value) {\n return this.getIndex(this.getKey(value) || '*');\n }\n\n getKey(value) {\n if (typeof value === 'string' && value !== '') {\n if (this.method === 'firstchar') {\n return value[0].toLowerCase();\n }\n return value.toLowerCase();\n }\n return null;\n }\n\n getIndexes(rule) {\n let cond = rule.conditions.find(cond => cond.field === this.field);\n let indexes = [];\n\n if (cond && (cond.op === 'oneOf' || cond.op === 'is')) {\n if (cond.op === 'oneOf') {\n cond.value.forEach(val => indexes.push(this.getIndexForValue(val)));\n } else {\n indexes.push(this.getIndexForValue(cond.value));\n }\n } else {\n indexes.push(this.getIndex('*'));\n }\n\n return indexes;\n }\n\n index(rule) {\n let indexes = this.getIndexes(rule);\n indexes.forEach(index => {\n index.add(rule);\n });\n }\n\n remove(rule) {\n let indexes = this.getIndexes(rule);\n indexes.forEach(index => {\n index.delete(rule);\n });\n }\n\n getApplicableRules(object) {\n let indexedRules;\n if (this.field in object) {\n let key = this.getKey(object[this.field]);\n if (key) {\n indexedRules = this.rules.get(key);\n }\n }\n\n return fastSetMerge(\n indexedRules || new Set(),\n this.rules.get('*') || new Set()\n );\n }\n}\n\nconst OP_SCORES = {\n is: 10,\n oneOf: 9,\n isapprox: 5,\n isbetween: 5,\n gt: 1,\n gte: 1,\n lt: 1,\n lte: 1,\n contains: 0\n};\n\nfunction computeScore(rule) {\n let initialScore = rule.conditions.reduce((score, condition) => {\n if (OP_SCORES[condition.op] == null) {\n console.log(`Found invalid operation while ranking: ${condition.op}`);\n return 0;\n }\n\n return score + OP_SCORES[condition.op];\n }, 0);\n\n if (\n rule.conditions.every(\n cond => cond.op === 'is' || cond.op === 'isapprox' || cond.op === 'oneOf'\n )\n ) {\n return initialScore * 2;\n }\n return initialScore;\n}\n\nfunction _rankRules(rules) {\n let scores = new Map();\n rules.forEach(rule => {\n scores.set(rule, computeScore(rule));\n });\n\n // No matter the order of rules, this must always return exactly the same\n // order. That's why rules have ids: if two rules have the same score, it\n // sorts by id\n return [...rules].sort((r1, r2) => {\n let score1 = scores.get(r1);\n let score2 = scores.get(r2);\n if (score1 < score2) {\n return -1;\n } else if (score1 > score2) {\n return 1;\n } else {\n let id1 = r1.getId();\n let id2 = r2.getId();\n return id1 < id2 ? -1 : id1 > id2 ? 1 : 0;\n }\n });\n}\n\nexport function rankRules(rules) {\n let pre = [];\n let normal = [];\n let post = [];\n\n for (let rule of rules) {\n switch (rule.stage) {\n case 'pre':\n pre.push(rule);\n break;\n case 'post':\n post.push(rule);\n break;\n default:\n normal.push(rule);\n }\n }\n\n pre = _rankRules(pre);\n normal = _rankRules(normal);\n post = _rankRules(post);\n\n return pre.concat(normal).concat(post);\n}\n\nexport function migrateIds(rule, mappings) {\n // Go through the in-memory rules and patch up ids that have been\n // \"migrated\" to other ids. This is a little tricky, but a lot\n // easier than trying to keep an up-to-date mapping in the db. This\n // is necessary because ids can be transparently mapped as items are\n // merged/deleted in the system.\n //\n // It's very important here that we look at `rawValue` specifically,\n // and only apply the patches to the other `value` fields. We always\n // need to keep the original id around because undo can walk\n // backwards, and we need to be able to consistently apply a\n // \"projection\" of these mapped values. For example: if we have ids\n // [1, 2] and applying mappings transforms it to [2, 2], if `1` gets\n // mapped to something else there's no way to no to map *only* the\n // first id back to make [1, 2]. Keeping the original value around\n // solves this.\n for (let ci = 0; ci < rule.conditions.length; ci++) {\n let cond = rule.conditions[ci];\n if (cond.type === 'id') {\n switch (cond.op) {\n case 'is':\n cond.value = mappings.get(cond.rawValue) || cond.rawValue;\n cond.unparsedValue = cond.value;\n break;\n case 'oneOf':\n cond.value = cond.rawValue.map(v => mappings.get(v) || v);\n cond.unparsedValue = [...cond.value];\n break;\n default:\n }\n }\n }\n\n for (let ai = 0; ai < rule.actions.length; ai++) {\n let action = rule.actions[ai];\n if (action.type === 'id') {\n if (action.op === 'set') {\n action.value = mappings.get(action.rawValue) || action.rawValue;\n }\n }\n }\n}\n\n// This finds all the rules that reference the `id`\nexport function iterateIds(rules, fieldName, func) {\n let counts = {};\n let i;\n\n ruleiter: for (i = 0; i < rules.length; i++) {\n let rule = rules[i];\n for (let ci = 0; ci < rule.conditions.length; ci++) {\n let cond = rule.conditions[ci];\n if (cond.type === 'id' && cond.field === fieldName) {\n switch (cond.op) {\n case 'is':\n if (func(rule, cond.value)) {\n continue ruleiter;\n }\n break;\n case 'oneOf':\n for (let vi = 0; vi < cond.value.length; vi++) {\n if (func(rule, cond.value[vi])) {\n continue ruleiter;\n }\n }\n break;\n default:\n }\n }\n }\n\n for (let ai = 0; ai < rule.actions.length; ai++) {\n let action = rule.actions[ai];\n if (action.type === 'id' && action.field === fieldName) {\n // Currently `set` is the only op, but if we add more this\n // will need to be extended\n if (action.op === 'set') {\n if (func(rule, action.value)) {\n break;\n }\n }\n }\n }\n }\n}\n","import title from './title';\nimport * as db from '../db';\nimport {\n mergeObjects,\n hasFieldsChanged,\n toRelaxedNumber,\n amountToInteger,\n integerToAmount\n} from '../../shared/util';\nimport {\n makeChild as makeChildTransaction,\n recalculateSplit\n} from '../../shared/transactions';\nimport * as monthUtils from '../../shared/months';\nimport { transactionModel } from '../api-models';\nimport { getServer } from '../server-config';\nimport { batchMessages } from '../sync';\nimport { runMutator } from '../mutators';\nimport { getStartingBalancePayee } from './payees';\nimport * as transfer from './transfer';\nimport { TransactionError } from '../errors';\nimport { runRules } from './transaction-rules';\nimport { batchUpdateTransactions } from './transactions';\n\nconst dateFns = require('date-fns');\nconst { post } = require('../post');\nconst levenshtein = require('damerau-levenshtein');\nconst uuid = require('../../platform/uuid');\n\n// Plaid article about API options:\n// https://support.plaid.com/customer/en/portal/articles/2612155-transactions-returned-per-request\n\nfunction BankSyncError(type, code) {\n return { type: 'BankSyncError', category: type, code };\n}\n\nfunction makeSplitTransaction(trans, subtransactions) {\n // We need to calculate the final state of split transactions\n let { subtransactions: sub, ...parent } = recalculateSplit({\n ...trans,\n is_parent: true,\n subtransactions: subtransactions.map((transaction, idx) =>\n makeChildTransaction(trans, {\n ...transaction,\n sort_order: 0 - idx\n })\n )\n });\n return [parent, ...sub];\n}\n\nfunction getAccountBalance(account) {\n // Debt account types need their balance reversed\n switch (account.type) {\n case 'credit':\n case 'loan':\n return -account.balances.current;\n default:\n return account.balances.current;\n }\n}\n\nasync function updateAccountBalance(id, balance) {\n await db.runQuery('UPDATE accounts SET balance_current = ? WHERE id = ?', [\n amountToInteger(balance),\n id\n ]);\n}\n\nexport async function getAccounts(userId, userKey, id) {\n let res = await post(getServer().PLAID_SERVER + '/accounts', {\n userId,\n key: userKey,\n item_id: id\n });\n\n let { accounts } = res;\n\n accounts.forEach(acct => {\n acct.balances.current = getAccountBalance(acct);\n });\n\n return accounts;\n}\n\nexport function fromPlaid(trans) {\n return {\n imported_id: trans.transaction_id,\n payee_name: trans.name,\n imported_payee: trans.name,\n amount: -amountToInteger(trans.amount),\n date: trans.date\n };\n}\n\nasync function downloadTransactions(\n userId,\n userKey,\n acctId,\n bankId,\n since,\n count\n) {\n let allTransactions = [];\n let accountBalance = null;\n let pageSize = 100;\n let offset = 0;\n let numDownloaded = 0;\n\n while (1) {\n const endDate = monthUtils.currentDay();\n\n const res = await post(getServer().PLAID_SERVER + '/transactions', {\n userId: userId,\n key: userKey,\n item_id: '' + bankId,\n account_id: acctId,\n start_date: since,\n end_date: endDate,\n count: pageSize,\n offset\n });\n\n if (res.error_code) {\n throw BankSyncError(res.error_type, res.error_code);\n }\n\n if (res.transactions.length === 0) {\n break;\n }\n\n numDownloaded += res.transactions.length;\n\n // Remove pending transactions for now - we will handle them in\n // the future.\n allTransactions = allTransactions.concat(\n res.transactions.filter(t => !t.pending)\n );\n accountBalance = getAccountBalance(res.accounts[0]);\n\n if (\n numDownloaded === res.total_transactions ||\n (count != null && allTransactions.length >= count)\n ) {\n break;\n }\n\n offset += pageSize;\n }\n\n allTransactions =\n count != null ? allTransactions.slice(0, count) : allTransactions;\n\n return {\n transactions: allTransactions.map(fromPlaid),\n accountBalance\n };\n}\n\nasync function resolvePayee(trans, payeeName, payeesToCreate) {\n if (trans.payee == null && payeeName) {\n // First check our registry of new payees (to avoid a db access)\n // then check the db for existing payees\n let payee = payeesToCreate.get(payeeName.toLowerCase());\n payee = payee || (await db.getPayeeByName(payeeName));\n\n if (payee != null) {\n return payee.id;\n } else {\n // Otherwise we're going to create a new one\n let newPayee = { id: uuid.v4Sync(), name: payeeName };\n payeesToCreate.set(payeeName.toLowerCase(), newPayee);\n return newPayee.id;\n }\n }\n\n return trans.payee;\n}\n\nasync function normalizeTransactions(\n transactions,\n acctId,\n { rawPayeeName } = {}\n) {\n let payeesToCreate = new Map();\n\n let normalized = [];\n for (let trans of transactions) {\n // Validate the date because we do some stuff with it. The db\n // layer does better validation, but this will give nicer errors\n if (trans.date == null) {\n throw new Error('`date` is required when adding a transaction');\n }\n\n // Strip off the irregular properties\n let { payee_name, subtransactions, ...rest } = trans;\n trans = rest;\n\n if (payee_name) {\n let trimmed = payee_name.trim();\n if (trimmed === '') {\n payee_name = null;\n } else {\n payee_name = rawPayeeName ? trimmed : title(trimmed);\n }\n }\n\n trans.imported_payee = trans.imported_payee || payee_name;\n if (trans.imported_payee) {\n trans.imported_payee = trans.imported_payee.trim();\n }\n\n // It's important to resolve both the account and payee early so\n // when rules are run, they have the right data. Resolving payees\n // also simplifies the payee creation process\n trans.account = acctId;\n trans.payee = await resolvePayee(trans, payee_name, payeesToCreate);\n\n normalized.push({\n payee_name,\n subtransactions: subtransactions\n ? subtransactions.map(t => ({ ...t, account: acctId }))\n : null,\n trans\n });\n }\n\n return { normalized, payeesToCreate };\n}\n\nasync function createNewPayees(payeesToCreate, addsAndUpdates) {\n let usedPayeeIds = new Set(addsAndUpdates.map(t => t.payee));\n\n await batchMessages(async () => {\n for (let payee of payeesToCreate.values()) {\n // Only create the payee if it ended up being used\n if (usedPayeeIds.has(payee.id)) {\n await db.insertPayee(payee);\n }\n }\n });\n}\n\nexport async function reconcileTransactions(acctId, transactions) {\n const hasMatched = new Set();\n const updated = [];\n const added = [];\n\n let { normalized, payeesToCreate } = await normalizeTransactions(\n transactions,\n acctId\n );\n\n // The first pass runs the rules, and preps data for fuzzy matching\n let transactionsStep1 = [];\n for (let { payee_name, trans, subtransactions } of normalized) {\n // Run the rules\n trans = runRules(trans);\n\n let match = null;\n let fuzzyDataset = null;\n\n // First, match with an existing transaction's imported_id. This\n // is the highest fidelity match and should always be attempted\n // first.\n if (trans.imported_id) {\n match = await db.first(\n 'SELECT * FROM v_transactions WHERE imported_id = ? AND account = ?',\n [trans.imported_id, acctId]\n );\n\n // TODO: Pending transactions\n\n if (match) {\n hasMatched.add(match.id);\n }\n }\n\n // If it didn't match, query data needed for fuzzy matching\n if (!match) {\n // Look 1 day ahead and 4 days back when fuzzy matching. This\n // needs to select all fields that need to be read from the\n // matched transaction. See the final pass below for the needed\n // fields.\n fuzzyDataset = await db.all(\n `SELECT id, date, imported_id, payee, category, notes FROM v_transactions\n WHERE date >= ? AND date <= ? AND amount = ? AND account = ? AND is_child = 0`,\n [\n db.toDateRepr(monthUtils.subDays(trans.date, 4)),\n db.toDateRepr(monthUtils.addDays(trans.date, 1)),\n trans.amount || 0,\n acctId\n ]\n );\n }\n\n transactionsStep1.push({\n payee_name,\n trans,\n subtransactions,\n match,\n fuzzyDataset\n });\n }\n\n // Next, do the fuzzy matching. This first pass matches based on the\n // payee id. We do this in multiple passes so that higher fidelity\n // matching always happens first, i.e. a transaction should match\n // match with low fidelity if a later transaction is going to match\n // the same one with high fidelity.\n let transactionsStep2 = transactionsStep1.map(data => {\n if (!data.match && data.fuzzyDataset) {\n // Try to find one where the payees match.\n let match = data.fuzzyDataset.find(\n row => !hasMatched.has(row.id) && data.trans.payee === row.payee\n );\n\n if (match) {\n hasMatched.add(match.id);\n return { ...data, match };\n }\n }\n return data;\n });\n\n // The final fuzzy matching pass. This is the lowest fidelity\n // matching: it just find the first transaction that hasn't been\n // matched yet. Remember the the dataset only contains transactions\n // around the same date with the same amount.\n let transactionsStep3 = transactionsStep2.map(data => {\n if (!data.match && data.fuzzyDataset) {\n let match = data.fuzzyDataset.find(row => !hasMatched.has(row.id));\n if (match) {\n hasMatched.add(match.id);\n return { ...data, match };\n }\n }\n return data;\n });\n\n // Finally, generate & commit the changes\n for (let { payee_name, trans, subtransactions, match } of transactionsStep3) {\n if (match) {\n // TODO: change the above sql query to use aql\n let existing = {\n ...match,\n cleared: match.cleared === 1,\n date: db.fromDateRepr(match.date)\n };\n\n // Update the transaction\n const updates = {\n date: trans.date,\n imported_id: trans.imported_id || null,\n payee: existing.payee || trans.payee || null,\n category: existing.category || trans.category || null,\n imported_payee: trans.imported_payee || null,\n notes: existing.notes || trans.notes || null,\n cleared: trans.cleared != null ? trans.cleared : true\n };\n\n if (hasFieldsChanged(existing, updates, Object.keys(updates))) {\n updated.push({ id: existing.id, ...updates });\n }\n } else {\n // Insert a new transaction\n let finalTransaction = {\n ...trans,\n id: uuid.v4Sync(),\n category: trans.category || null,\n cleared: trans.cleared != null ? trans.cleared : true\n };\n\n if (subtransactions && subtransactions.length > 0) {\n added.push(...makeSplitTransaction(finalTransaction, subtransactions));\n } else {\n added.push(finalTransaction);\n }\n }\n }\n\n await createNewPayees(payeesToCreate, [...added, ...updated]);\n await batchUpdateTransactions({ added, updated });\n\n return {\n added: added.map(trans => trans.id),\n updated: updated.map(trans => trans.id)\n };\n}\n\n// This is similar to `reconcileTransactions` except much simpler: it\n// does not try to match any transactions. It just adds them\nexport async function addTransactions(\n acctId,\n transactions,\n { runTransfers = true } = {}\n) {\n const added = [];\n\n let { normalized, payeesToCreate } = await normalizeTransactions(\n transactions,\n acctId,\n { rawPayeeName: true }\n );\n\n for (let { payee_name, trans, subtransactions } of normalized) {\n // Run the rules\n trans = runRules(trans);\n\n let finalTransaction = {\n id: uuid.v4Sync(),\n ...trans,\n account: acctId,\n cleared: trans.cleared != null ? trans.cleared : true\n };\n\n // Add split transactions if they are given\n if (subtransactions && subtransactions.length > 0) {\n added.push(...makeSplitTransaction(finalTransaction, subtransactions));\n } else {\n added.push(finalTransaction);\n }\n }\n\n await createNewPayees(payeesToCreate, added);\n\n let newTransactions;\n if (runTransfers) {\n let res = await batchUpdateTransactions({ added });\n newTransactions = res.added.map(t => t.id);\n } else {\n await batchMessages(async () => {\n newTransactions = await Promise.all(\n added.map(async trans => db.insertTransaction(trans))\n );\n });\n }\n return newTransactions;\n}\n\nexport async function syncAccount(userId, userKey, id, acctId, bankId) {\n // TODO: Handle the case where transactions exist in the future\n // (that will make start date after end date)\n const latestTransaction = await db.first(\n 'SELECT * FROM v_transactions WHERE account = ? ORDER BY date DESC LIMIT 1',\n [id]\n );\n\n if (latestTransaction) {\n const startingTransaction = await db.first(\n 'SELECT date FROM v_transactions WHERE account = ? ORDER BY date ASC LIMIT 1',\n [id]\n );\n const startingDate = db.fromDateRepr(startingTransaction.date);\n // assert(startingTransaction)\n\n // Get all transactions since the latest transaction, plus any 5\n // days before the latest transaction. This gives us a chance to\n // resolve any transactions that were entered manually.\n //\n // TODO: What this really should do is query the last imported_id\n // and since then\n let date = monthUtils.subDays(db.fromDateRepr(latestTransaction.date), 31);\n\n // Never download transactions before the starting date. This was\n // when the account was added to the system.\n if (date < startingDate) {\n date = startingDate;\n }\n\n let { transactions, accountBalance } = await downloadTransactions(\n userId,\n userKey,\n acctId,\n bankId,\n date\n );\n if (transactions.length === 0) {\n return { added: [], updated: [] };\n }\n\n transactions = transactions.map(trans => ({ ...trans, account: id }));\n\n return runMutator(async () => {\n const result = await reconcileTransactions(id, transactions);\n await updateAccountBalance(id, accountBalance);\n return result;\n });\n } else {\n const acctRow = await db.select('accounts', id);\n\n // Otherwise, download transaction for the last few days if it's an\n // on-budget account, or for the past 30 days if off-budget\n const startingDay = monthUtils.subDays(\n monthUtils.currentDay(),\n acctRow.offbudget === 0 ? 1 : 30\n );\n\n const { transactions } = await downloadTransactions(\n userId,\n userKey,\n acctId,\n bankId,\n dateFns.format(dateFns.parseISO(startingDay), 'yyyy-MM-dd')\n );\n\n // We need to add a transaction that represents the starting\n // balance for everything to balance out. In order to get balance\n // before the first imported transaction, we need to get the\n // current balance from the accounts table and subtract all the\n // imported transactions.\n let currentBalance = acctRow.balance_current;\n\n const previousBalance = transactions.reduce((total, trans) => {\n return total - trans.amount;\n }, currentBalance);\n\n const oldestDate =\n transactions.length > 0\n ? transactions[transactions.length - 1].date\n : monthUtils.currentDay();\n\n let payee = await getStartingBalancePayee();\n\n return runMutator(async () => {\n let initialId = await db.insertTransaction({\n account: id,\n amount: previousBalance,\n category: acctRow.offbudget === 0 ? payee.category : null,\n payee: payee.id,\n date: oldestDate,\n cleared: true,\n starting_balance_flag: true\n });\n\n let result = await reconcileTransactions(id, transactions);\n return {\n ...result,\n added: [initialId, ...result.added]\n };\n });\n }\n}\n","// Utilities\nconst lowerCase = require('./lower-case');\nconst specials = require('./specials');\n\nlet character =\n '[0-9\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376-\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06E5-\\u06E6\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4-\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58-\\u0C59\\u0C60-\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0-\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E46\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A-\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]';\nlet regex = new RegExp(\n `(?:(?:(\\\\s?(?:^|[.\\\\(\\\\)!?;:\"-])\\\\s*)(${character}))|(${character}))(${character}*[']*${character}*)`,\n 'g'\n);\n\nlet convertToRegExp = specials =>\n specials.map(s => [new RegExp(`\\\\b${s}\\\\b`, 'gi'), s]);\n\nfunction parseMatch(match) {\n const firstCharacter = match[0];\n\n // test first character\n if (/\\s/.test(firstCharacter)) {\n // if whitespace - trim and return\n return match.substr(1);\n }\n if (/[()]/.test(firstCharacter)) {\n // if parens - this shouldn't be replaced\n return null;\n }\n\n return match;\n}\n\nmodule.exports = (str, options = {}) => {\n str = str\n .toLowerCase()\n .replace(regex, (m, lead = '', forced, lower, rest) => {\n const parsedMatch = parseMatch(m);\n if (!parsedMatch) {\n return m;\n }\n if (!forced) {\n const fullLower = lower + rest;\n\n if (lowerCase.has(fullLower)) {\n return parsedMatch;\n }\n }\n\n return lead + (lower || forced).toUpperCase() + rest;\n });\n\n const customSpecials = options.special || [];\n const replace = [...specials, ...customSpecials];\n const replaceRegExp = convertToRegExp(replace);\n\n replaceRegExp.forEach(([pattern, s]) => {\n str = str.replace(pattern, s);\n });\n\n return str;\n};\n","const conjunctions = [\n 'for',\n 'and',\n 'nor',\n 'but',\n 'or',\n 'yet',\n 'so'\n]\n\nconst articles = [\n 'a',\n 'an',\n 'the'\n]\n\nconst prepositions = [\n 'aboard',\n 'about',\n 'above',\n 'across',\n 'after',\n 'against',\n 'along',\n 'amid',\n 'among',\n 'anti',\n 'around',\n 'as',\n 'at',\n 'before',\n 'behind',\n 'below',\n 'beneath',\n 'beside',\n 'besides',\n 'between',\n 'beyond',\n 'but',\n 'by',\n 'concerning',\n 'considering',\n 'despite',\n 'down',\n 'during',\n 'except',\n 'excepting',\n 'excluding',\n 'following',\n 'for',\n 'from',\n 'in',\n 'inside',\n 'into',\n 'like',\n 'minus',\n 'near',\n 'of',\n 'off',\n 'on',\n 'onto',\n 'opposite',\n 'over',\n 'past',\n 'per',\n 'plus',\n 'regarding',\n 'round',\n 'save',\n 'since',\n 'than',\n 'through',\n 'to',\n 'toward',\n 'towards',\n 'under',\n 'underneath',\n 'unlike',\n 'until',\n 'up',\n 'upon',\n 'versus',\n 'via',\n 'with',\n 'within',\n 'without'\n]\n\nmodule.exports = new Set([\n ...conjunctions,\n ...articles,\n ...prepositions\n])\n","const intended = [\n 'CLI',\n 'API',\n 'HTTP',\n 'HTTPS',\n 'JSX',\n 'DNS',\n 'URL',\n 'CI',\n 'CDN',\n 'GitHub',\n 'CSS',\n 'JS',\n 'JavaScript',\n 'TypeScript',\n 'HTML',\n 'WordPress',\n 'JavaScript',\n 'Next.js',\n 'Node.js'\n];\n\nmodule.exports = intended;\n","import * as db from '../db';\nimport {\n Condition,\n Action,\n Rule,\n RuleIndexer,\n rankRules,\n migrateIds,\n iterateIds\n} from './rules';\nimport { getMappings } from '../db/mappings';\nimport { addDays, subDays, parseDate, dayFromDate } from '../../shared/months';\nimport { addSyncListener } from '../sync/index';\nimport { RuleError } from '../errors';\nimport {\n FIELD_TYPES,\n sortNumbers,\n getApproxNumberThreshold\n} from '../../shared/rules';\nimport q from '../../shared/query';\nimport { requiredFields, toDateRepr } from '../models';\nimport { currentDay } from '../../shared/months';\nimport { partitionByField, fastSetMerge } from '../../shared/util';\nimport { setSyncingMode, batchMessages } from '../sync';\nimport { schemaConfig } from '../aql/schema';\nconst uuid = require('../../platform/uuid');\n\n// TODO: Detect if it looks like the user is creating a rename rule\n// and prompt to create it in the pre phase instead\n// * We could also make the \"create rule\" button a dropdown that\n// provides different \"templates\" like \"create renaming rule\"\n\nexport { iterateIds } from './rules';\n\nlet allRules;\nlet unlistenSync;\nlet firstcharIndexer;\nlet payeeIndexer;\n\nexport function resetState() {\n allRules = new Map();\n firstcharIndexer = new RuleIndexer({\n field: 'imported_payee',\n method: 'firstchar'\n });\n payeeIndexer = new RuleIndexer({ field: 'payee' });\n}\n\n// Database functions\n\nfunction invert(obj) {\n return Object.fromEntries(\n Object.entries(obj).map(entry => {\n return [entry[1], entry[0]];\n })\n );\n}\n\nlet internalFields = schemaConfig.views.transactions.fields;\nlet publicFields = invert(schemaConfig.views.transactions.fields);\n\nfunction fromInternalField(obj) {\n return {\n ...obj,\n field: publicFields[obj.field] || obj.field\n };\n}\n\nfunction toInternalField(obj) {\n return {\n ...obj,\n field: internalFields[obj.field] || obj.field\n };\n}\n\nexport const ruleModel = {\n validate(rule, { update } = {}) {\n requiredFields('rules', rule, ['conditions', 'actions'], update);\n\n if (!update || 'stage' in rule) {\n if (\n rule.stage !== 'pre' &&\n rule.stage !== 'post' &&\n rule.stage !== null\n ) {\n throw new Error('Invalid rule stage: ' + rule.stage);\n }\n }\n\n return rule;\n },\n\n toJS(row) {\n function parseArray(str) {\n let value;\n try {\n value = typeof str === 'string' ? JSON.parse(str) : str;\n } catch (e) {\n throw new RuleError('internal', 'Cannot parse rule json');\n }\n\n if (!Array.isArray(value)) {\n throw new RuleError('internal', 'Rule json must be an array');\n }\n return value;\n }\n\n let rule = { ...row };\n rule.conditions = rule.conditions\n ? parseArray(rule.conditions).map(cond => fromInternalField(cond))\n : [];\n rule.actions = rule.actions\n ? parseArray(rule.actions).map(action => fromInternalField(action))\n : [];\n return rule;\n },\n\n fromJS(rule) {\n let row = { ...rule };\n if ('conditions' in row) {\n let conditions = row.conditions.map(cond => toInternalField(cond));\n row.conditions = JSON.stringify(conditions);\n }\n if ('actions' in row) {\n let actions = row.actions.map(action => toInternalField(action));\n row.actions = JSON.stringify(actions);\n }\n return row;\n }\n};\n\nexport function makeRule(data) {\n let rule;\n try {\n rule = new Rule({\n ...ruleModel.toJS(data),\n fieldTypes: FIELD_TYPES\n });\n } catch (e) {\n console.warn('Invalid rule', e);\n if (e instanceof RuleError) {\n return null;\n }\n throw e;\n }\n\n // This is needed because we map ids on the fly, and they might\n // not be persisted into the db. Mappings allow items to\n // transparently merge with other items\n migrateIds(rule, getMappings());\n\n return rule;\n}\n\nexport async function loadRules() {\n resetState();\n\n let rules = await db.all(`\n SELECT * FROM rules\n WHERE conditions IS NOT NULL AND actions IS NOT NULL AND tombstone = 0\n `);\n\n for (let i = 0; i < rules.length; i++) {\n let desc = rules[i];\n // These are old stages, can be removed before release\n if (desc.stage === 'cleanup' || desc.stage === 'modify') {\n desc.stage = 'pre';\n }\n\n let rule = makeRule(desc);\n if (rule) {\n allRules.set(rule.id, rule);\n firstcharIndexer.index(rule);\n payeeIndexer.index(rule);\n }\n }\n\n if (unlistenSync) {\n unlistenSync();\n }\n unlistenSync = addSyncListener(onApplySync);\n}\n\nexport function getRules() {\n // This can simply return the in-memory data\n return [...allRules.values()];\n}\n\nexport async function insertRule(rule) {\n rule = ruleModel.validate(rule);\n return db.insertWithUUID('rules', ruleModel.fromJS(rule));\n}\n\nexport async function updateRule(rule) {\n rule = ruleModel.validate(rule, { update: true });\n return db.update('rules', ruleModel.fromJS(rule));\n}\n\nexport async function deleteRule(rule) {\n let schedule = await db.first('SELECT id FROM schedules WHERE rule = ?', [\n rule.id\n ]);\n\n if (schedule) {\n return false;\n }\n\n return db.delete_('rules', rule.id);\n}\n\n// Sync projections\n\nfunction onApplySync(oldValues, newValues) {\n newValues.forEach((items, table) => {\n if (table === 'rules') {\n items.forEach(newValue => {\n let oldRule = allRules.get(newValue.id);\n\n if (newValue.tombstone === 1) {\n // Deleted, need to remove it from in-memory\n let rule = allRules.get(newValue.id);\n if (rule) {\n allRules.delete(rule.getId());\n firstcharIndexer.remove(rule);\n payeeIndexer.remove(rule);\n }\n } else {\n // Inserted/updated\n let rule = makeRule(newValue);\n if (rule) {\n if (oldRule) {\n firstcharIndexer.remove(oldRule);\n payeeIndexer.remove(oldRule);\n }\n allRules.set(newValue.id, rule);\n firstcharIndexer.index(rule);\n payeeIndexer.index(rule);\n }\n }\n });\n }\n });\n\n // If any of the mapping tables have changed, we need to refresh the\n // ids\n let tables = [...newValues.keys()];\n if (tables.find(table => table.indexOf('mapping') !== -1)) {\n getRules().forEach(rule => {\n migrateIds(rule, getMappings());\n });\n }\n}\n\n// Runner\nexport function runRules(trans) {\n let finalTrans = { ...trans };\n let allChanges = {};\n\n let rules = rankRules(\n fastSetMerge(\n firstcharIndexer.getApplicableRules(trans),\n payeeIndexer.getApplicableRules(trans)\n )\n );\n\n for (let i = 0; i < rules.length; i++) {\n finalTrans = rules[i].apply(finalTrans);\n }\n\n return finalTrans;\n}\n\n// This does the inverse: finds all the transactions matching a rule\nexport function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) {\n let errors = [];\n\n conditions = conditions\n .map(cond => {\n if (cond instanceof Condition) {\n return cond;\n }\n\n try {\n return new Condition(\n cond.op,\n cond.field,\n cond.value,\n cond.options,\n FIELD_TYPES\n );\n } catch (e) {\n errors.push(e.type || 'internal');\n console.log('conditionsToAQL: invalid condition: ' + e.message);\n return null;\n }\n })\n .filter(Boolean);\n\n // rule -> actualql\n let filters = conditions.map(cond => {\n let { type, field, op, value, options } = cond;\n\n let getValue = value => {\n if (type === 'number') {\n return value.value;\n }\n return value;\n };\n\n let apply = (field, op, value) => {\n if (type === 'number') {\n if (options) {\n if (options.outflow) {\n return {\n $and: [\n { amount: { $lt: 0 } },\n { [field]: { $transform: '$neg', [op]: value } }\n ]\n };\n } else if (options.inflow) {\n return {\n $and: [{ amount: { $gt: 0 } }, { [field]: { [op]: value } }]\n };\n }\n }\n\n return { amount: { [op]: value } };\n } else if (type === 'string') {\n return { [field]: { $transform: '$lower', [op]: value } };\n } else if (type === 'date') {\n return { [field]: { [op]: value.date } };\n }\n return { [field]: { [op]: value } };\n };\n\n switch (op) {\n case 'isapprox':\n case 'is':\n if (type === 'date') {\n if (value.type === 'recur') {\n let dates = value.schedule\n .occurrences({ take: recurDateBounds })\n .toArray()\n .map(d => dayFromDate(d.date));\n\n let compare = d => ({ $eq: d });\n\n return {\n $or: dates.map(d => {\n if (op === 'isapprox') {\n return {\n $and: [\n { date: { $gte: subDays(d, 2) } },\n { date: { $lte: addDays(d, 2) } }\n ]\n };\n }\n return { date: d };\n })\n };\n } else {\n let { date } = value;\n\n if (op === 'isapprox') {\n let fullDate = parseDate(value.date);\n let high = addDays(fullDate, 2);\n let low = subDays(fullDate, 2);\n\n return {\n $and: [{ date: { $gte: low } }, { date: { $lte: high } }]\n };\n } else {\n switch (value.type) {\n case 'date':\n return { date: value.date };\n case 'month': {\n let low = value.date + '-00';\n let high = value.date + '-99';\n return {\n $and: [{ date: { $gte: low } }, { date: { $lte: high } }]\n };\n }\n case 'year': {\n let low = value.date + '-00-00';\n let high = value.date + '-99-99';\n return {\n $and: [{ date: { $gte: low } }, { date: { $lte: high } }]\n };\n }\n default:\n }\n }\n }\n } else if (type === 'number') {\n let number = value.value;\n if (op === 'isapprox') {\n let threshold = getApproxNumberThreshold(number);\n\n return {\n $and: [\n apply(field, '$gte', number - threshold),\n apply(field, '$lte', number + threshold)\n ]\n };\n }\n return apply(field, '$eq', number);\n }\n\n return apply(field, '$eq', value);\n\n case 'isbetween':\n // This operator is only applicable to the specific `between`\n // number type so we don't use `apply`\n let [low, high] = sortNumbers(value.num1, value.num2);\n return {\n [field]: [{ $gte: low }, { $lte: high }]\n };\n case 'contains':\n // Running contains with id will automatically reach into\n // the `name` of the referenced table and do a string match\n return apply(\n type === 'id' ? field + '.name' : field,\n '$like',\n '%' + value + '%'\n );\n case 'oneOf':\n let values = value;\n if (values.length === 0) {\n // This forces it to match nothing\n return { id: null };\n }\n return { $or: values.map(v => apply(field, '$eq', v)) };\n case 'gt':\n return apply(field, '$gt', getValue(value));\n case 'gte':\n return apply(field, '$gte', getValue(value));\n case 'lt':\n return apply(field, '$lt', getValue(value));\n case 'lte':\n return apply(field, '$lte', getValue(value));\n case 'true':\n return apply(field, '$eq', true);\n case 'false':\n return apply(field, '$eq', false);\n default:\n throw new Error('Unhandled operator: ' + op);\n }\n });\n\n return { filters, errors };\n}\n\nexport function applyActions(transactionIds, actions, handlers) {\n let parsedActions = actions\n .map(action => {\n if (action instanceof Action) {\n return action;\n }\n\n try {\n return new Action(\n action.op,\n action.field,\n action.value,\n action.options,\n FIELD_TYPES\n );\n } catch (e) {\n console.log('Action error', e);\n return null;\n }\n })\n .filter(Boolean);\n\n if (parsedActions.length !== actions.length) {\n // An error happened while parsing\n return null;\n }\n\n let updated = transactionIds.map(id => {\n let update = { id };\n for (let action of parsedActions) {\n action.exec(update);\n }\n return update;\n });\n\n return handlers['transactions-batch-update']({ updated });\n}\n\nexport function getRulesForPayee(payeeId) {\n let rules = new Set();\n iterateIds(getRules(), 'payee', (rule, id) => {\n if (id === payeeId) {\n rules.add(rule);\n }\n });\n\n return rankRules([...rules]);\n}\n\nfunction* getIsSetterRules(\n stage,\n condField,\n actionField,\n { condValue, actionValue }\n) {\n let rules = getRules();\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i];\n\n if (\n rule.stage === stage &&\n rule.actions.length === 1 &&\n rule.actions[0].op === 'set' &&\n rule.actions[0].field === actionField &&\n (actionValue === undefined || rule.actions[0].value === actionValue) &&\n rule.conditions.length === 1 &&\n rule.conditions[0].op === 'is' &&\n rule.conditions[0].field === condField &&\n (condValue === undefined || rule.conditions[0].value === condValue)\n ) {\n yield rule.serialize();\n }\n }\n\n return null;\n}\n\nfunction* getOneOfSetterRules(\n stage,\n condField,\n actionField,\n { condValue, actionValue }\n) {\n let rules = getRules();\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i];\n\n if (\n rule.stage === stage &&\n rule.actions.length === 1 &&\n rule.actions[0].op === 'set' &&\n rule.actions[0].field === actionField &&\n (actionValue == null || rule.actions[0].value === actionValue) &&\n rule.conditions.length === 1 &&\n rule.conditions[0].op === 'oneOf' &&\n rule.conditions[0].field === condField &&\n (condValue == null || rule.conditions[0].value.indexOf(condValue) !== -1)\n ) {\n yield rule.serialize();\n }\n }\n\n return null;\n}\n\nexport async function updatePayeeRenameRule(fromNames, to) {\n let renameRule = getOneOfSetterRules('pre', 'imported_payee', 'payee', {\n actionValue: to\n }).next().value;\n\n // Note that we don't check for existing rules that set this\n // `imported_payee` to something else. It's important to do\n // that for categories because categories will be changes frequently\n // for the same payee, but renames won't be changed much. It's a use\n // case we could improve in the future, but this is fine for now.\n\n if (renameRule) {\n let condition = renameRule.conditions[0];\n let newValue = [\n ...fastSetMerge(\n new Set(condition.value),\n new Set(fromNames.filter(name => name !== ''))\n )\n ];\n let rule = {\n ...renameRule,\n conditions: [{ ...condition, value: newValue }]\n };\n await updateRule(rule);\n return renameRule.id;\n } else {\n let rule = new Rule({\n stage: 'pre',\n conditions: [{ op: 'oneOf', field: 'imported_payee', value: fromNames }],\n actions: [{ op: 'set', field: 'payee', value: to }],\n fieldTypes: FIELD_TYPES\n });\n return insertRule(rule.serialize());\n }\n}\n\nexport function getProbableCategory(transactions) {\n let scores = new Map();\n\n transactions.forEach(trans => {\n if (trans.category) {\n scores.set(trans.category, (scores.get(trans.category) || 0) + 1);\n }\n });\n\n let winner = transactions.reduce((winner, trans) => {\n let score = scores.get(trans.category);\n if (!winner || score > winner.score) {\n return { score, category: trans.category };\n }\n return winner;\n }, null);\n\n return winner.score >= 3 ? winner.category : null;\n}\n\nexport async function updateCategoryRules(transactions) {\n if (transactions.length === 0) {\n return;\n }\n\n let payeeIds = new Set(transactions.map(trans => trans.payee));\n let transIds = new Set(transactions.map(trans => trans.id));\n\n // It's going to be quickest to get the oldest date and then query\n // all transactions since then so we can work in memory\n let oldestDate = null;\n for (let i = 0; i < transactions.length; i++) {\n if (oldestDate === null || transactions[i].date < oldestDate) {\n oldestDate = transactions[i].date;\n }\n }\n\n // We look 6 months behind to include any other transaction. This\n // makes it so we, 1. don't have to load in all transactions ever\n // and 2. \"forget\" really old transactions which might be nice and\n // 3. don't have to individually run a query for each payee\n oldestDate = subDays(oldestDate, 180);\n\n // Also look 180 days in the future to get any future transactions\n // (this might change when we think about scheduled transactions)\n let register = await db.all(\n `SELECT t.* FROM v_transactions t\n LEFT JOIN accounts a ON a.id = t.account\n WHERE date >= ? AND date <= ? AND is_parent = 0 AND a.closed = 0`,\n [toDateRepr(oldestDate), toDateRepr(addDays(currentDay(), 180))]\n );\n\n let allTransactions = partitionByField(register, 'payee');\n let categoriesToSet = new Map();\n\n for (let payeeId of payeeIds) {\n // Don't do anything if payee is null\n if (payeeId) {\n let latestTrans = (allTransactions.get(payeeId) || []).slice(0, 5);\n\n // Check if one of the latest transactions was one that was\n // updated. We only want to update anything if so.\n if (latestTrans.find(trans => transIds.has(trans.id))) {\n let category = getProbableCategory(latestTrans);\n if (category) {\n categoriesToSet.set(payeeId, category);\n }\n }\n }\n }\n\n await batchMessages(async () => {\n for (let [payeeId, category] of categoriesToSet.entries()) {\n let ruleSetters = [\n ...getIsSetterRules(null, 'payee', 'category', {\n condValue: payeeId\n })\n ];\n\n if (ruleSetters.length > 0) {\n // If there are existing rules, change all of them to the new\n // category (if they aren't already using it). We set all of\n // them because it's possible that multiple rules exist\n // because 2 clients made them independently. Not really a big\n // deal, but to make sure our update gets applied set it to\n // all of them\n for (let rule of ruleSetters) {\n let action = rule.actions[0];\n if (action.value !== category) {\n await updateRule({\n ...rule,\n actions: [{ ...action, value: category }]\n });\n }\n }\n } else {\n // No existing rules, so create one\n let newRule = new Rule({\n stage: null,\n conditions: [{ op: 'is', field: 'payee', value: payeeId }],\n actions: [{ op: 'set', field: 'category', value: category }],\n fieldTypes: FIELD_TYPES\n });\n await insertRule(newRule.serialize());\n }\n }\n });\n}\n\n// This can be removed in the future\nexport async function migrateOldRules() {\n let allPayees = await db.all(\n `SELECT p.*, c.id as category FROM payees p\n LEFT JOIN category_mapping cm ON cm.id = p.category\n LEFT JOIN categories c ON (c.id = cm.transferId AND c.tombstone = 0)\n WHERE p.tombstone = 0 AND transfer_acct IS NULL`\n );\n let allRules = await db.all(\n `SELECT pr.*, pm.targetId as payee_id FROM payee_rules pr\n LEFT JOIN payee_mapping pm ON pm.id = pr.payee_id\n WHERE pr.tombstone = 0`\n );\n\n let payeesById = new Map();\n for (let i = 0; i < allPayees.length; i++) {\n payeesById.set(allPayees[i].id, allPayees[i]);\n }\n\n let rulesByPayeeId = new Map();\n for (let i = 0; i < allRules.length; i++) {\n let item = allRules[i];\n let rules = rulesByPayeeId.get(item.payee_id) || [];\n rules.push(item);\n rulesByPayeeId.set(item.payee_id, rules);\n }\n\n let rules = [];\n\n // Convert payee name rules\n for (let [payeeId, payeeRules] of rulesByPayeeId.entries()) {\n let equals = payeeRules.filter(r => {\n let payee = payeesById.get(r.payee_id);\n\n return (\n (r.type === 'equals' || r.type == null) &&\n (!payee || r.value.toLowerCase() !== payee.name.toLowerCase())\n );\n });\n let contains = payeeRules.filter(r => r.type === 'contains');\n let actions = [{ op: 'set', field: 'payee', value: payeeId }];\n\n if (equals.length > 0) {\n rules.push({\n stage: null,\n conditions: [\n {\n op: 'oneOf',\n field: 'imported_payee',\n value: equals.map(payeeRule => payeeRule.value)\n }\n ],\n actions\n });\n }\n\n if (contains.length > 0) {\n rules = rules.concat(\n contains.map(payeeRule => ({\n stage: null,\n conditions: [\n {\n op: 'contains',\n field: 'imported_payee',\n value: payeeRule.value\n }\n ],\n actions\n }))\n );\n }\n }\n\n // Convert category rules\n let catRules = allPayees\n .filter(p => p.category)\n .reduce((map, payee) => {\n let ids = map.get(payee.category) || new Set();\n ids.add(payee.id);\n map.set(payee.category, ids);\n return map;\n }, new Map());\n\n for (let [catId, payeeIds] of catRules) {\n rules.push({\n stage: null,\n conditions: [\n {\n op: 'oneOf',\n field: 'payee',\n value: [...payeeIds]\n }\n ],\n actions: [\n {\n op: 'set',\n field: 'category',\n value: catId\n }\n ]\n });\n }\n\n // Very important: we never want to sync migration changes, but it\n // still has to run through the syncing layer to make sure\n // projections are correct. This is only OK because we require a\n // sync reset after this.\n let prevMode = setSyncingMode('disabled');\n await batchMessages(async () => {\n for (let rule of rules) {\n await insertRule({\n stage: rule.stage,\n conditions: rule.conditions,\n actions: rule.actions\n });\n }\n\n await db.runQuery('DELETE FROM payee_rules', []);\n });\n setSyncingMode(prevMode);\n}\n","import * as sheet from '../sheet';\nimport { batchMessages } from '../sync';\nimport * as db from '../db';\nimport { incrFetch, whereIn } from '../db/util';\nimport * as transfer from './transfer';\nimport * as rules from './transaction-rules';\nconst connection = require('../../platform/server/connection');\n\nasync function idsWithChildren(ids) {\n let whereIds = whereIn(ids, 'parent_id');\n let rows = await db.all(\n `SELECT id FROM v_transactions_internal WHERE ${whereIds}`\n );\n let set = new Set(ids);\n for (let row of rows) {\n set.add(row.id);\n }\n return [...set];\n}\n\nasync function getTransactionsByIds(ids) {\n // TODO: convert to whereIn\n //\n // or better yet, use ActualQL\n return incrFetch(\n (query, params) => db.selectWithSchema('transactions', query, params),\n ids,\n id => `id = '${id}'`,\n where => `SELECT * FROM v_transactions_internal WHERE ${where}`\n );\n}\n\nexport async function batchUpdateTransactions({\n added,\n deleted,\n updated,\n learnCategories = false,\n detectOrphanPayees = true\n}) {\n // Track the ids of each type of transaction change (see below for why)\n let addedIds = [];\n let updatedIds = updated ? updated.map(u => u.id) : [];\n let deletedIds = deleted ? await idsWithChildren(deleted.map(d => d.id)) : [];\n\n let oldPayees = new Set();\n let accounts = await db.all('SELECT * FROM accounts WHERE tombstone = 0');\n\n // We need to get all the payees of updated transactions _before_\n // making changes\n if (updated) {\n let descUpdatedIds = updated\n .filter(update => update.payee)\n .map(update => update.id);\n\n let transactions = await getTransactionsByIds(descUpdatedIds);\n\n for (let i = 0; i < transactions.length; i++) {\n oldPayees.add(transactions[i].payee);\n }\n }\n\n // Apply all the updates. We can batch this now! This is important\n // and makes bulk updates much faster\n await batchMessages(async () => {\n if (added) {\n addedIds = await Promise.all(\n added.map(async t => db.insertTransaction(t))\n );\n }\n\n if (deleted) {\n await Promise.all(\n // It's important to use `deletedIds` and not `deleted` here\n // because we've expanded it to include children above. The\n // inconsistency of the delete APIs is annoying and should\n // be fixed (it should only take an id)\n deletedIds.map(async id => {\n await db.deleteTransaction({ id });\n })\n );\n }\n\n if (updated) {\n await Promise.all(\n updated.map(async t => {\n if (t.account) {\n // Moving transactions off budget should always clear the\n // category\n let account = accounts.find(acct => acct.id === t.account);\n if (account.offbudget === 1) {\n t.category = null;\n }\n }\n\n await db.updateTransaction(t);\n })\n );\n }\n });\n\n // Get all of the full transactions that were changed. This is\n // needed to run any cascading logic that depends on the full\n // transaction. Things like transfers, analyzing rule updates, and\n // more\n let allAdded = await getTransactionsByIds(addedIds);\n let allUpdated = await getTransactionsByIds(updatedIds);\n let allDeleted = await getTransactionsByIds(deletedIds);\n\n // Post-processing phase: first do any updates to transfers.\n // Transfers update the transactions and we need to return updates\n // to the client so that can apply them. Note that added\n // transactions just return the full transaction.\n let resultAdded = allAdded;\n let resultUpdated;\n\n await batchMessages(async () => {\n await Promise.all(allAdded.map(t => transfer.onInsert(t)));\n\n // Return any updates from here\n resultUpdated = (await Promise.all(\n allUpdated.map(t => transfer.onUpdate(t))\n )).filter(Boolean);\n\n await Promise.all(allDeleted.map(t => transfer.onDelete(t)));\n });\n\n if (learnCategories) {\n // Analyze any updated categories and update rules to learn from\n // the user's activity\n let ids = new Set([\n ...(added ? added.filter(add => add.category).map(add => add.id) : []),\n ...(updated\n ? updated.filter(update => update.category).map(update => update.id)\n : [])\n ]);\n await rules.updateCategoryRules(\n allAdded.concat(allUpdated).filter(trans => ids.has(trans.id))\n );\n }\n\n if (detectOrphanPayees) {\n // Look for any orphaned payees and notify the user about merging\n // them\n\n if (updated) {\n let newPayeeIds = updated.map(u => u.payee).filter(Boolean);\n if (newPayeeIds.length > 0) {\n let allOrphaned = new Set(await db.getOrphanedPayees());\n\n let orphanedIds = [...oldPayees].filter(id => allOrphaned.has(id));\n\n if (orphanedIds.length > 0) {\n connection.send('orphaned-payees', {\n orphanedIds,\n updatedPayeeIds: newPayeeIds\n });\n }\n }\n }\n }\n\n return {\n added: resultAdded,\n updated: resultUpdated\n };\n}\n","import * as db from '../db';\n\nasync function getPayee(acct) {\n return db.first('SELECT * FROM payees WHERE transfer_acct = ?', [acct]);\n}\n\nasync function getTransferredAccount(transaction) {\n if (transaction.payee) {\n let { transfer_acct, id } = await db.first(\n 'SELECT id, transfer_acct FROM v_payees WHERE id = ?',\n [transaction.payee]\n );\n return transfer_acct;\n }\n return null;\n}\n\nasync function clearCategory(transaction, transferAcct) {\n const { offbudget: fromOffBudget } = await db.first(\n 'SELECT offbudget FROM accounts WHERE id = ?',\n [transaction.account]\n );\n const { offbudget: toOffBudget } = await db.first(\n 'SELECT offbudget FROM accounts WHERE id = ?',\n [transferAcct]\n );\n\n // We should clear the category to make sure it's not being\n // accounted for in the budget, unless it should be in the case of\n // transferring from an on-budget to off-budget account\n if (fromOffBudget === toOffBudget) {\n await db.updateTransaction({ id: transaction.id, category: null });\n return true;\n }\n return false;\n}\n\nexport async function addTransfer(transaction, transferredAccount) {\n let { id: fromPayee } = await db.first(\n 'SELECT id FROM payees WHERE transfer_acct = ?',\n [transaction.account]\n );\n\n // We need to enforce certain constraints with child transaction transfers\n if (transaction.parent_id) {\n let row = await db.first(\n `\n SELECT p.id, p.transfer_acct FROM v_transactions t\n LEFT JOIN payees p ON p.id = t.payee\n WHERE t.id = ?\n `,\n [transaction.parent_id]\n );\n\n if (row.transfer_acct) {\n if (row.id !== transaction.payee) {\n // This child transaction is trying to use a transfer payee,\n // but the parent is already using a different transfer payee.\n // This is not allowed, so not only do we do nothing, we clear\n // the payee of the child transaction to make it clear\n await db.updateTransaction({ id: transaction.id, payee: null });\n return { id: transaction.id, payee: null };\n }\n\n // The parent has the same transfer payee, so it \"owns\" the\n // transfer logic\n return null;\n }\n }\n\n const id = await db.insertTransaction({\n account: transferredAccount,\n amount: -transaction.amount,\n payee: fromPayee,\n date: transaction.date,\n transfer_id: transaction.id,\n notes: transaction.notes || null,\n cleared: false\n });\n\n await db.updateTransaction({ id: transaction.id, transfer_id: id });\n const categoryCleared = await clearCategory(transaction, transferredAccount);\n\n return {\n id: transaction.id,\n transfer_id: id,\n ...(categoryCleared ? { category: null } : {})\n };\n}\n\nexport async function removeTransfer(transaction) {\n let transferTrans = await db.getTransaction(transaction.transfer_id);\n if (transferTrans.is_child) {\n // If it's a child transaction, we don't delete it because that\n // would invalidate the whole split transaction. Instead of turn\n // it into a normal transaction\n await db.updateTransaction({\n id: transaction.transfer_id,\n transfer_id: null,\n payee: null\n });\n } else {\n await db.deleteTransaction({ id: transaction.transfer_id });\n }\n await db.updateTransaction({ id: transaction.id, transfer_id: null });\n return { id: transaction.id, transfer_id: null };\n}\n\nexport async function updateTransfer(transaction, transferredAccount) {\n let payee = await getPayee(transaction.account);\n\n await db.updateTransaction({\n id: transaction.transfer_id,\n account: transferredAccount,\n // Make sure to update the payee on the other side in case the\n // user moved this transaction into another account\n payee: payee.id,\n date: transaction.date,\n notes: transaction.notes,\n amount: -transaction.amount\n });\n\n const categoryCleared = await clearCategory(transaction, transferredAccount);\n if (categoryCleared) {\n return { id: transaction.id, category: null };\n }\n}\n\nexport async function onInsert(transaction) {\n let transferredAccount = await getTransferredAccount(transaction);\n\n if (transferredAccount) {\n return addTransfer(transaction, transferredAccount);\n }\n}\n\nexport async function onDelete(transaction) {\n if (transaction.transfer_id) {\n await removeTransfer(transaction);\n }\n}\n\nexport async function onUpdate(transaction) {\n const transferredAccount = await getTransferredAccount(transaction);\n\n if (transferredAccount && !transaction.transfer_id) {\n return addTransfer(transaction, transferredAccount);\n }\n\n if (!transferredAccount && transaction.transfer_id) {\n return removeTransfer(transaction);\n }\n\n if (transferredAccount && transaction.transfer_id) {\n return updateTransfer(transaction, transferredAccount);\n }\n}\n","import * as models from './models';\n\nexport const transactionModel = {\n ...models.transactionModel,\n\n toExternal(transactions, idx, payees) {\n return transactions;\n // function convert(t, payee) {\n // return {\n // id: t.id,\n // account_id: t.acct,\n // amount: t.amount,\n // payee_id: payee ? payee.id : null,\n // payee: payee ? payee.name : null,\n // imported_payee: t.imported_description,\n // category_id: t.category,\n // date: t.date,\n // notes: t.notes,\n // imported_id: t.financial_id,\n // transfer_id: t.transferred_id,\n // cleared: t.cleared\n // };\n // }\n\n // let splits = getAllSplitTransactions(transactions, idx);\n // if (splits) {\n // let payee =\n // splits.parent.description && payees[splits.parent.description];\n\n // return {\n // ...convert(splits.parent, payee),\n // subtransactions: splits.children.map(child => convert(child, payee))\n // };\n // }\n\n // let transaction = transactions[idx];\n // let payee = transaction.description && payees[transaction.description];\n // return convert(transaction, payee);\n },\n\n fromExternal(transaction) {\n let result = {};\n if ('id' in transaction) {\n result.id = transaction.id;\n }\n if ('account_id' in transaction) {\n result.acct = transaction.account_id;\n }\n if ('amount' in transaction) {\n result.amount = transaction.amount;\n }\n if ('payee_id' in transaction) {\n result.description = transaction.payee_id;\n }\n if ('imported_payee' in transaction) {\n result.imported_description = transaction.imported_payee;\n }\n if ('category_id' in transaction) {\n result.category = transaction.category_id;\n }\n if ('date' in transaction) {\n result.date = transaction.date;\n }\n if ('notes' in transaction) {\n result.notes = transaction.notes;\n }\n if ('imported_id' in transaction) {\n result.financial_id = transaction.imported_id;\n }\n if ('transfer_id' in transaction) {\n result.transferred_id = transaction.transfer_id;\n }\n if ('cleared' in transaction) {\n result.cleared = transaction.cleared;\n }\n return result;\n }\n};\n\nexport const accountModel = {\n ...models.accountModel,\n\n toExternal(account) {\n return {\n id: account.id,\n name: account.name,\n type: account.type,\n offbudget: account.offbudget ? true : false,\n closed: account.closed ? true : false\n };\n },\n\n fromExternal(account) {\n let result = { ...account };\n if ('offbudget' in account) {\n result.offbudget = account.offbudget ? 1 : 0;\n }\n if ('closed' in account) {\n result.closed = account.closed ? 1 : 0;\n }\n return result;\n }\n};\n\nexport const categoryModel = {\n ...models.categoryModel,\n\n toExternal(category) {\n return {\n id: category.id,\n name: category.name,\n is_income: category.is_income ? true : false,\n group_id: category.cat_group\n };\n },\n\n fromExternal(category) {\n let { group_id: _, ...result } = category;\n if ('is_income' in category) {\n result.is_income = category.is_income ? 1 : 0;\n }\n if ('group_id' in category) {\n result.cat_group = category.group_id;\n }\n return result;\n }\n};\n\nexport const categoryGroupModel = {\n ...models.categoryGroupModel,\n\n toExternal(group) {\n return {\n id: group.id,\n name: group.name,\n is_income: group.is_income ? true : false,\n categories: group.categories.map(categoryModel.toExternal)\n };\n },\n\n fromExternal(group) {\n let result = { ...group };\n if ('is_income' in group) {\n result.is_income = group.is_income ? 1 : 0;\n }\n if ('categories' in group) {\n result.categories = group.categories.map(categoryModel.fromExternal);\n }\n return result;\n }\n};\n\nexport const payeeModel = {\n ...models.payeeModel,\n\n toExternal(payee) {\n return {\n id: payee.id,\n name: payee.name,\n category: payee.category,\n transfer_acct: payee.transfer_acct\n };\n },\n\n fromExternal(payee) {\n // No translation is needed\n return payee;\n }\n};\n\nexport const payeeRuleModel = {\n ...models.payeeRuleModel,\n\n toExternal(rule) {\n let { tombstone, ...result } = rule;\n return result;\n },\n\n fromExternal(rule) {\n return rule;\n }\n};\n","import { addTransactions } from './accounts/sync';\nimport {\n transactionModel,\n accountModel,\n categoryModel,\n categoryGroupModel,\n payeeModel,\n payeeRuleModel\n} from './api-models';\nimport {\n ungroupTransactions,\n updateTransaction,\n deleteTransaction\n} from '../shared/transactions';\nimport * as db from './db';\nimport * as sheet from './sheet';\nimport * as prefs from './prefs';\nimport * as monthUtils from '../shared/months';\nimport * as update from './update';\nimport * as cloudStorage from './cloud-storage';\nimport { setSyncingMode, batchMessages } from './sync';\nimport { groupById, cleanUUID } from '../shared/util';\nimport { getClock } from './timestamp';\nimport { runMutator } from './mutators';\nimport { integerToAmount } from '../shared/util';\nimport { runQuery as aqlQuery } from './aql/schema/run-query';\nimport q from '../shared/query';\n\nconst { resolveName } = require('./spreadsheet/util');\nconst connection = require('../platform/server/connection');\n\nlet IMPORT_MODE = false;\n\n// This is duplicate from main.js...\nfunction APIError(msg, meta) {\n return { type: 'APIError', message: msg, meta };\n}\n\n// The API is different in two ways: we never want undo enabled, and\n// we also need to notify the UI manually if stuff has changed (if\n// they are connecting to an already running instance, the UI should\n// update). The wrapper handles that.\nfunction withMutation(handler) {\n return args => {\n return runMutator(\n async () => {\n let latestTimestamp = getClock().timestamp.toString();\n let result = await handler(args);\n\n let rows = await db.all(\n 'SELECT DISTINCT dataset FROM messages_crdt WHERE timestamp > ?',\n [latestTimestamp]\n );\n\n // Only send the sync event if anybody else is connected\n if (connection.getNumClients() > 1) {\n connection.send('sync-event', {\n type: 'success',\n tables: rows.map(row => row.dataset)\n });\n }\n\n return result;\n },\n { undoDisabled: true }\n );\n };\n}\n\nlet handlers = {};\n\nasync function validateMonth(month) {\n if (!month.match(/^\\d{4}-\\d{2}$/)) {\n throw APIError('Invalid month format, use YYYY-MM: ' + month);\n }\n\n if (!IMPORT_MODE) {\n let { start, end } = await handlers['get-budget-bounds']();\n let range = monthUtils.range(start, end);\n if (!range.includes(month)) {\n throw APIError('No budget exists for month: ' + month);\n }\n }\n}\n\nasync function validateExpenseCategory(debug, id) {\n if (id == null) {\n throw APIError(`${debug}: category id is required`);\n }\n\n let row = await db.first('SELECT is_income FROM categories WHERE id = ?', [\n id\n ]);\n\n if (!row) {\n throw APIError(`${debug}: category \"${id}\" does not exist`);\n }\n\n if (row.is_income !== 0) {\n throw APIError(`${debug}: category \"${id}\" is not an expense category`);\n }\n}\n\nlet batchPromise = null;\n\nhandlers['api/batch-budget-start'] = async function() {\n if (batchPromise) {\n throw APIError('Cannot start a batch process: batch already started');\n }\n\n // If we are importing, all we need to do is start a raw database\n // transaction. Updating spreadsheet cells doesn't go through the\n // syncing layer in that case.\n if (IMPORT_MODE) {\n db.asyncTransaction(() => {\n return new Promise((resolve, reject) => {\n batchPromise = { resolve, reject };\n });\n });\n } else {\n batchMessages(() => {\n return new Promise((resolve, reject) => {\n batchPromise = { resolve, reject };\n });\n });\n }\n};\n\nhandlers['api/batch-budget-end'] = async function() {\n if (!batchPromise) {\n throw APIError('Cannot end a batch process: no batch started');\n }\n\n batchPromise.resolve();\n batchPromise = null;\n};\n\nhandlers['api/load-budget'] = async function({ id }) {\n let { id: currentId } = prefs.getPrefs() || {};\n\n if (currentId !== id) {\n connection.send('start-load');\n let { error } = await handlers['load-budget']({ id });\n\n if (!error) {\n connection.send('finish-load');\n } else {\n connection.send('show-budgets');\n\n if (error === 'out-of-sync-migrations' || error === 'out-of-sync-data') {\n throw new Error(\n 'This budget cannot be loaded with this version of the app.'\n );\n } else if (error === 'budget-not-found') {\n throw new Error(\n 'Budget \"' +\n id +\n '\" not found. Check the id of your budget in the \"Advanced\" section of the settings page.'\n );\n } else {\n throw new Error('We had an unknown problem opening \"' + id + '\".');\n }\n }\n }\n};\n\nhandlers['api/start-import'] = async function({ budgetName }) {\n // Notify UI to close budget\n await handlers['close-budget']();\n\n // Create the budget\n await handlers['create-budget']({ budgetName, avoidUpload: true });\n\n // Clear out the default expense categories\n await db.runQuery('DELETE FROM categories WHERE is_income = 0');\n await db.runQuery('DELETE FROM category_groups WHERE is_income = 0');\n\n // Turn syncing off\n setSyncingMode('import');\n\n connection.send('start-import');\n IMPORT_MODE = true;\n};\n\nhandlers['api/finish-import'] = async function() {\n sheet.get().markCacheDirty();\n\n // We always need to fully reload the app. Importing doesn't touch\n // the spreadsheet, but we can't just recreate the spreadsheet\n // either; there is other internal state that isn't created\n let { id } = prefs.getPrefs();\n await handlers['close-budget']();\n await handlers['load-budget']({ id });\n\n await handlers['get-budget-bounds']();\n await sheet.waitOnSpreadsheet();\n\n await cloudStorage.upload().catch(err => {});\n\n connection.send('finish-import');\n IMPORT_MODE = false;\n};\n\nhandlers['api/abort-import'] = async function() {\n if (IMPORT_MODE) {\n let { id } = prefs.getPrefs();\n\n await handlers['close-budget']();\n await handlers['delete-budget']({ id });\n connection.send('show-budgets');\n }\n\n IMPORT_MODE = false;\n};\n\nhandlers['api/query'] = async function({ query }) {\n return aqlQuery(query);\n};\n\nhandlers['api/budget-months'] = async function() {\n let { start, end } = await handlers['get-budget-bounds']();\n return monthUtils.range(start, end);\n};\n\nhandlers['api/budget-month'] = async function({ month }) {\n await validateMonth(month);\n\n let groups = await db.getCategoriesGrouped();\n let sheetName = monthUtils.sheetForMonth(month);\n\n function value(name) {\n let v = sheet.get().getCellValue(sheetName, name);\n return v === '' ? 0 : v;\n }\n\n // This is duplicated from main.js because the return format is\n // different (for now)\n return {\n month,\n incomeAvailable: value('available-funds'),\n lastMonthOverspent: value('last-month-overspent'),\n forNextMonth: value('buffered'),\n totalBudgeted: value('total-budgeted'),\n toBudget: value('to-budget'),\n\n fromLastMonth: value('from-last-month'),\n totalIncome: value('total-income'),\n totalSpent: value('total-spent'),\n totalBalance: value('total-leftover'),\n\n categoryGroups: groups.map(group => {\n if (group.is_income) {\n return {\n ...categoryGroupModel.toExternal(group),\n received: value('total-income'),\n\n categories: group.categories.map(cat => ({\n ...categoryModel.toExternal(cat),\n received: value(`sum-amount-${cat.id}`)\n }))\n };\n }\n\n return {\n ...categoryGroupModel.toExternal(group),\n budgeted: value(`group-budget-${group.id}`),\n spent: value(`group-sum-amount-${group.id}`),\n balance: value(`group-leftover-${group.id}`),\n\n categories: group.categories.map(cat => ({\n ...categoryModel.toExternal(cat),\n budgeted: value(`budget-${cat.id}`),\n spent: value(`sum-amount-${cat.id}`),\n balance: value(`leftover-${cat.id}`),\n carryover: value(`carryover-${cat.id}`)\n }))\n };\n })\n };\n};\n\nhandlers['api/budget-set-amount'] = withMutation(async function({\n month,\n categoryId,\n amount\n}) {\n return handlers['budget/budget-amount']({\n month,\n category: categoryId,\n amount\n });\n});\n\nhandlers['api/budget-set-carryover'] = withMutation(async function({\n month,\n categoryId,\n flag\n}) {\n await validateMonth(month);\n await validateExpenseCategory('budget-set-carryover', categoryId);\n return handlers['budget/set-carryover']({\n startMonth: month,\n category: categoryId,\n flag\n });\n});\n\nhandlers['api/transactions-export'] = async function({\n transactions,\n categoryGroups,\n payees\n}) {\n return handlers['transactions-export']({\n transactions,\n categoryGroups,\n payees\n });\n};\n\nhandlers['api/transactions-import'] = withMutation(async function({\n accountId,\n transactions\n}) {\n return handlers['transactions-import']({ accountId, transactions });\n});\n\nhandlers['api/transactions-add'] = withMutation(async function({\n accountId,\n transactions\n}) {\n await addTransactions(accountId, transactions, { runTransfers: false });\n return 'ok';\n});\n\nhandlers['api/transactions-get'] = async function({\n accountId,\n startDate,\n endDate\n}) {\n let { data } = await aqlQuery(\n q('transactions')\n .filter({\n $and: [\n accountId && { account: accountId },\n startDate && { date: { $gte: startDate } },\n endDate && { date: { $lte: endDate } }\n ].filter(Boolean)\n })\n .select('*')\n .options({ splits: 'grouped' })\n );\n return data;\n};\n\nhandlers['api/transactions-filter'] = async function({ text, accountId }) {\n throw new Error('`filterTransactions` is deprecated, use `runQuery` instead');\n};\n\nhandlers['api/transaction-update'] = withMutation(async function({\n id,\n fields\n}) {\n let { data } = await aqlQuery(\n q('transactions')\n .filter({ id })\n .select('*')\n .options({ splits: 'grouped' })\n );\n let transactions = ungroupTransactions(data);\n\n if (transactions.length === 0) {\n return [];\n }\n\n let { diff } = updateTransaction(transactions, fields);\n return handlers['transactions-batch-update'](diff);\n});\n\nhandlers['api/transaction-delete'] = withMutation(async function({ id }) {\n let { data } = await aqlQuery(\n q('transactions')\n .filter({ id })\n .select('*')\n .options({ splits: 'grouped' })\n );\n let transactions = ungroupTransactions(data);\n\n if (transactions.length === 0) {\n return [];\n }\n\n let { diff } = deleteTransaction(transactions, id);\n return handlers['transactions-batch-update'](diff);\n});\n\nhandlers['api/accounts-get'] = async function() {\n let accounts = await db.getAccounts();\n return accounts.map(account => accountModel.toExternal(account));\n};\n\nhandlers['api/account-create'] = withMutation(async function({\n account,\n initialBalance = null\n}) {\n return handlers['account-create']({\n name: account.name,\n type: account.type,\n offBudget: account.offbudget,\n closed: account.closed,\n // Current the API expects an amount but it really should expect\n // an integer\n balance: initialBalance != null ? integerToAmount(initialBalance) : null\n });\n});\n\nhandlers['api/account-update'] = withMutation(async function({ id, fields }) {\n return db.updateAccount({ id, ...accountModel.fromExternal(fields) });\n});\n\nhandlers['api/account-close'] = withMutation(async function({\n id,\n transferAccountId,\n transferCategoryId\n}) {\n return handlers['account-close']({\n id,\n transferAccountId,\n categoryId: transferCategoryId\n });\n});\n\nhandlers['api/account-reopen'] = withMutation(async function({ id }) {\n return handlers['account-reopen']({ id });\n});\n\nhandlers['api/account-delete'] = withMutation(async function({ id }) {\n return handlers['account-close']({ id, forced: true });\n});\n\nhandlers['api/categories-get'] = async function({ grouped } = {}) {\n let result = await handlers['get-categories']();\n return grouped\n ? result.grouped.map(categoryGroupModel.toExternal)\n : result.list.map(categoryModel.toExternal);\n};\n\nhandlers['api/category-group-create'] = withMutation(async function({ group }) {\n return handlers['category-group-create']({ name: group.name });\n});\n\nhandlers['api/category-group-update'] = withMutation(async function({\n id,\n fields\n}) {\n return handlers['category-group-update']({\n id,\n ...categoryGroupModel.fromExternal(fields)\n });\n});\n\nhandlers['api/category-group-delete'] = withMutation(async function({\n id,\n transferCategoryId\n}) {\n return handlers['category-group-delete']({\n id,\n transferId: transferCategoryId\n });\n});\n\nhandlers['api/category-create'] = withMutation(async function({ category }) {\n return handlers['category-create']({\n name: category.name,\n groupId: category.group_id,\n isIncome: category.is_income\n });\n});\n\nhandlers['api/category-update'] = withMutation(async function({ id, fields }) {\n return handlers['category-update']({\n id,\n ...categoryModel.fromExternal(fields)\n });\n});\n\nhandlers['api/category-delete'] = withMutation(async function({\n id,\n transferCategoryId\n}) {\n return handlers['category-delete']({\n id,\n transferId: transferCategoryId\n });\n});\n\nhandlers['api/payees-get'] = async function() {\n let payees = await handlers['payees-get']();\n return payees.map(payeeModel.toExternal);\n};\n\nhandlers['api/payee-create'] = withMutation(async function({ payee }) {\n return handlers['payee-create']({ name: payee.name });\n});\n\nhandlers['api/payee-update'] = withMutation(async function({ id, fields }) {\n return handlers['payees-batch-change']({\n updated: [{ id, ...payeeModel.fromExternal(fields) }]\n });\n});\n\nhandlers['api/payee-delete'] = withMutation(async function({ id }) {\n return handlers['payees-batch-change']({ deleted: [{ id }] });\n});\n\nhandlers['api/payee-rules-get'] = async function({ payeeId }) {\n let rules = await handlers['payees-get-rules']({ id: payeeId });\n return rules.map(payeeRuleModel.toExternal);\n};\n\nhandlers['api/payee-rule-create'] = withMutation(async function({\n payee_id,\n rule\n}) {\n return handlers['payees-add-rule']({\n payee_id,\n type: rule.type,\n value: rule.value || null\n });\n});\n\nhandlers['api/payee-rule-update'] = withMutation(async function({\n id,\n fields\n}) {\n return handlers['payees-update-rule']({\n id,\n ...payeeRuleModel.fromExternal(fields)\n });\n});\n\nhandlers['api/payee-rule-delete'] = withMutation(async function({ id }) {\n return handlers['payees-delete-rule']({ id });\n});\n\nexport default function(serverHandlers) {\n handlers = Object.assign({}, serverHandlers, handlers);\n return handlers;\n}\n","import mitt from 'mitt';\nimport { captureException } from '../platform/exceptions';\n\n// This is a simple helper abstraction for defining methods exposed to\n// the client. It doesn't do much, but checks for naming conflicts and\n// makes it cleaner to combine methods. We call a group of related\n// methods an \"app\".\n\nclass App {\n constructor() {\n this.handlers = {};\n this.services = [];\n this.events = mitt();\n this.unlistenServices = [];\n }\n\n method(name, func) {\n if (this.handlers[name] != null) {\n throw new Error(\n 'Conflicting method name, names must be globally unique: ' + name\n );\n }\n this.handlers[name] = func;\n }\n\n service(func) {\n this.services.push(func);\n }\n\n combine(...apps) {\n for (let app of apps) {\n Object.keys(app.handlers).forEach(name => {\n this.method(name, app.handlers[name]);\n });\n\n app.services.forEach(service => {\n this.service(service);\n });\n\n for (let [name, listeners] of app.events.all.entries()) {\n for (let listener of listeners) {\n this.events.on(name, listener);\n }\n }\n }\n }\n\n startServices() {\n if (this.unlistenServices.length > 0) {\n captureException(\n new Error(\n 'App: startServices called while services are already running'\n )\n );\n }\n this.unlistenServices = this.services.map(service => service());\n }\n\n stopServices() {\n this.unlistenServices.forEach(unlisten => {\n if (unlisten) {\n unlisten();\n }\n });\n this.unlistenServices = [];\n }\n}\n\nexport function createApp() {\n return new App();\n}\n","let _uid = 0;\nfunction resetUid() {\n _uid = 0;\n}\n\nfunction uid(tableName) {\n _uid++;\n return tableName + _uid;\n}\n\nclass CompileError extends Error {}\n\nfunction nativeDateToInt(date) {\n let pad = x => (x < 10 ? '0' : '') + x;\n return date.getFullYear() + pad(date.getMonth() + 1) + pad(date.getDate());\n}\n\nfunction dateToInt(date) {\n return parseInt(date.replace(/-/g, ''));\n}\n\nexport function addTombstone(schema, tableName, tableId, whereStr) {\n let hasTombstone = schema[tableName].tombstone != null;\n return hasTombstone ? `${whereStr} AND ${tableId}.tombstone = 0` : whereStr;\n}\n\nfunction popPath(path) {\n let parts = path.split('.');\n return { path: parts.slice(0, -1).join('.'), field: parts[parts.length - 1] };\n}\n\nfunction isKeyword(str) {\n return str === 'group';\n}\n\nexport function quoteAlias(alias) {\n return alias.indexOf('.') === -1 && !isKeyword(alias) ? alias : `\"${alias}\"`;\n}\n\nfunction typed(value, type, { literal = false } = {}) {\n return { value, type, literal };\n}\n\nfunction getFieldDescription(schema, tableName, field) {\n if (schema[tableName] == null) {\n throw new CompileError(`Table \"${tableName}\" does not exist in the schema`);\n }\n\n let fieldDesc = schema[tableName][field];\n if (fieldDesc == null) {\n throw new CompileError(\n `Field \"${field}\" does not exist in table \"${tableName}\"`\n );\n }\n return fieldDesc;\n}\n\nfunction makePath(state, path) {\n let { schema, paths } = state;\n\n let parts = path.split('.');\n if (parts.length < 2) {\n throw new CompileError('Invalid path: ' + path);\n }\n\n let initialTable = parts[0];\n\n let tableName = parts.slice(1).reduce((tableName, field) => {\n let table = schema[tableName];\n\n if (table == null) {\n throw new CompileError(`Path error: ${tableName} table does not exist`);\n }\n\n if (!table[field] || table[field].ref == null) {\n throw new CompileError(\n `Field not joinable on table ${tableName}: \"${field}\"`\n );\n }\n\n return table[field].ref;\n }, initialTable);\n\n let joinTable;\n let parentParts = parts.slice(0, -1);\n if (parentParts.length === 1) {\n joinTable = parentParts[0];\n } else {\n let parentPath = parentParts.join('.');\n let parentDesc = paths.get(parentPath);\n if (!parentDesc) {\n throw new CompileError('Path does not exist: ' + parentPath);\n }\n joinTable = parentDesc.tableId;\n }\n\n return {\n tableName: tableName,\n tableId: uid(tableName),\n joinField: parts[parts.length - 1],\n joinTable\n };\n}\n\nfunction resolvePath(state, path) {\n let paths = path.split('.');\n let tableId;\n\n paths = paths.reduce(\n (acc, name) => {\n let fullName = acc.context + '.' + name;\n return {\n context: fullName,\n path: [...acc.path, fullName]\n };\n },\n { context: state.implicitTableName, path: [] }\n ).path;\n\n paths.forEach(path => {\n if (!state.paths.get(path)) {\n state.paths.set(path, makePath(state, path));\n }\n });\n\n let pathInfo = state.paths.get(paths[paths.length - 1]);\n return pathInfo;\n}\n\nfunction transformField(state, name) {\n if (typeof name !== 'string') {\n throw new CompileError('Invalid field name, must be a string');\n }\n\n let { path, field } = popPath(name);\n\n let pathInfo;\n if (path === '') {\n pathInfo = {\n tableName: state.implicitTableName,\n tableId: state.implicitTableId\n };\n } else {\n pathInfo = resolvePath(state, path);\n }\n\n let fieldDesc = getFieldDescription(state.schema, pathInfo.tableName, field);\n\n // If this is a field that references an item in another table, that\n // item could have been deleted. If that's the case, we want to\n // return `null` instead of an id pointing to a deleted item. This\n // converts an id reference into a path that pulls the id through a\n // table join which will filter out dead items, resulting in a\n // `null` id if the item is deleted\n if (\n state.validateRefs &&\n fieldDesc.ref &&\n fieldDesc.type === 'id' &&\n field !== 'id'\n ) {\n let refPath = state.implicitTableName + '.' + name;\n let refPathInfo = state.paths.get(refPath);\n\n if (!refPathInfo) {\n refPathInfo = makePath(state, refPath);\n refPathInfo.noMapping = true;\n state.paths.set(refPath, refPathInfo);\n }\n\n field = 'id';\n pathInfo = refPathInfo;\n }\n\n let fieldStr = pathInfo.tableId + '.' + field;\n return typed(fieldStr, fieldDesc.type);\n}\n\nfunction parseDate(str) {\n let m = str.match(/^(\\d{4}-\\d{2}-\\d{2})$/);\n if (m) {\n return typed(dateToInt(m[1]), 'date', { literal: true });\n }\n return null;\n}\n\nfunction parseMonth(str) {\n let m = str.match(/^(\\d{4}-\\d{2})$/);\n if (m) {\n return typed(dateToInt(m[1]), 'date', { literal: true });\n }\n return null;\n}\n\nfunction parseYear(str) {\n let m = str.match(/^(\\d{4})$/);\n if (m) {\n return typed(dateToInt(m[1]), 'date', { literal: true });\n }\n return null;\n}\n\nfunction badDateFormat(str, type) {\n throw new CompileError(`Bad ${type} format: ${str}`);\n}\n\nfunction inferParam(param, type) {\n let existingType = param.paramType;\n if (existingType) {\n let casts = {\n date: ['string'],\n 'date-month': ['date'],\n 'date-year': ['date', 'date-month'],\n id: ['string'],\n float: ['integer']\n };\n\n if (\n existingType !== type &&\n (!casts[type] || !casts[type].includes(existingType))\n ) {\n throw new Error(\n `Parameter \"${name}\" can't convert to ${type} (already inferred as ${existingType})`\n );\n }\n } else {\n param.paramType = type;\n }\n}\n\nfunction castInput(state, expr, type) {\n if (expr.type === type) {\n return expr;\n } else if (expr.type === 'param') {\n inferParam(expr, type);\n return typed(expr.value, type);\n } else if (expr.type === 'null') {\n if (!expr.literal) {\n throw new CompileError(\"A non-literal null doesn't make sense\");\n }\n\n if (type === 'boolean') {\n return typed(0, 'boolean', { literal: true });\n }\n return expr;\n }\n\n // These are all things that can be safely casted automatically\n if (type === 'date') {\n if (expr.type === 'string') {\n if (expr.literal) {\n return parseDate(expr.value) || badDateFormat(expr.value, 'date');\n } else {\n throw new CompileError(\n 'Casting string fields to dates is not supported'\n );\n }\n }\n\n throw new CompileError(`Can't cast ${expr.type} to date`);\n } else if (type === 'date-month') {\n let expr2;\n if (expr.type === 'date') {\n expr2 = expr;\n } else if (expr.type === 'string' || expr.type === 'any') {\n expr2 =\n parseMonth(expr.value) ||\n parseDate(expr.value) ||\n badDateFormat(expr.value, 'date-month');\n } else {\n throw new CompileError(`Can't cast ${expr.type} to date-month`);\n }\n\n if (expr2.literal) {\n return typed(\n dateToInt(expr2.value.toString().slice(0, 6)),\n 'date-month',\n { literal: true }\n );\n } else {\n return typed(\n `CAST(SUBSTR(${expr2.value}, 1, 6) AS integer)`,\n 'date-month'\n );\n }\n } else if (type === 'date-year') {\n let expr2;\n if (expr.type === 'date' || expr.type === 'date-month') {\n expr2 = expr;\n } else if (expr.type === 'string') {\n expr2 =\n parseYear(expr.value) ||\n parseMonth(expr.value) ||\n parseDate(expr.value) ||\n badDateFormat(expr.value, 'date-year');\n } else {\n throw new CompileError(`Can't cast ${expr.type} to date-year`);\n }\n\n if (expr2.literal) {\n return typed(dateToInt(expr2.value.toString().slice(0, 4)), 'date-year', {\n literal: true\n });\n } else {\n return typed(\n `CAST(SUBSTR(${expr2.value}, 1, 4) AS integer)`,\n 'date-year'\n );\n }\n } else if (type === 'id') {\n if (expr.type === 'string') {\n return typed(expr.value, 'id', { literal: expr.literal });\n }\n } else if (type === 'float') {\n if (expr.type === 'integer') {\n return typed(expr.value, 'float', { literal: expr.literal });\n }\n }\n\n if (expr.type === 'any') {\n return typed(expr.value, type, { literal: expr.literal });\n }\n\n throw new CompileError(`Can't convert ${expr.type} to ${type}`);\n}\n\n// TODO: remove state from these functions\nfunction val(state, expr, type) {\n let castedExpr = expr;\n\n // Cast the type if necessary\n if (type) {\n castedExpr = castInput(state, expr, type);\n }\n\n if (castedExpr.literal) {\n if (castedExpr.type === 'id') {\n return `'${castedExpr.value}'`;\n } else if (castedExpr.type === 'string') {\n // Escape quotes\n let value = castedExpr.value.replace(/'/g, \"''\");\n return `'${value}'`;\n }\n }\n\n return castedExpr.value;\n}\n\nfunction valArray(state, arr, types) {\n return arr.map((value, idx) => val(state, value, types ? types[idx] : null));\n}\n\nfunction validateArgLength(arr, min, max) {\n if (max == null) {\n max = min;\n }\n\n if (min != null && arr.length < min) {\n throw new CompileError('Too few arguments');\n }\n if (max != null && arr.length > max) {\n throw new CompileError('Too many arguments');\n }\n}\n\n//// Nice errors\n\nfunction saveStack(type, func) {\n return (state, ...args) => {\n if (state == null || state.compileStack == null) {\n throw new CompileError(\n 'This function cannot track error data. ' +\n 'It needs to accept the compiler state as the first argument.'\n );\n }\n\n state.compileStack.push({ type, args });\n let ret = func(state, ...args);\n state.compileStack.pop();\n return ret;\n };\n}\n\nfunction prettyValue(value) {\n if (typeof value === 'string') {\n return value;\n } else if (value === undefined) {\n return 'undefined';\n }\n\n let str = JSON.stringify(value);\n if (str.length > 70) {\n let expanded = JSON.stringify(value, null, 2);\n return expanded.split('\\n').join('\\n ');\n }\n return str;\n}\n\nfunction getCompileError(error, stack) {\n if (stack.length === 0) {\n return error;\n }\n\n let stackStr = stack\n .slice(1)\n .reverse()\n .map(entry => {\n switch (entry.type) {\n case 'expr':\n case 'function':\n return prettyValue(entry.args[0]);\n case 'op': {\n let [fieldRef, opData] = entry.args;\n return prettyValue({ [fieldRef]: opData });\n }\n case 'value':\n return prettyValue(entry.value);\n default:\n return '';\n }\n })\n .map(str => '\\n ' + str)\n .join('');\n\n const rootMethod = stack[0].type;\n const methodArgs = stack[0].args[0];\n stackStr += `\\n ${rootMethod}(${prettyValue(\n methodArgs.length === 1 ? methodArgs[0] : methodArgs\n )})`;\n\n // In production, hide internal stack traces\n if (process.env.NODE_ENV === 'production') {\n const err = new CompileError();\n err.message = `${error.message}\\n\\nExpression stack:` + stackStr;\n err.stack = null;\n return err;\n }\n\n error.message = `${error.message}\\n\\nExpression stack:` + stackStr;\n return error;\n}\n\n//// Compiler\n\nfunction compileLiteral(value) {\n if (value === undefined) {\n throw new CompileError('`undefined` is not a valid query value');\n } else if (value === null) {\n return typed('NULL', 'null', { literal: true });\n } else if (value instanceof Date) {\n return typed(nativeDateToInt(value), 'date', { literal: true });\n } else if (typeof value === 'string') {\n // Allow user to escape $, and quote the string to make it a\n // string literal in the output\n value = value.replace(/\\\\\\$/g, '$');\n return typed(value, 'string', { literal: true });\n } else if (typeof value === 'boolean') {\n return typed(value ? 1 : 0, 'boolean', { literal: true });\n } else if (typeof value === 'number') {\n return typed(value, (value | 0) === value ? 'integer' : 'float', {\n literal: true\n });\n } else if (Array.isArray(value)) {\n return typed(value, 'array', { literal: true });\n } else {\n throw new CompileError(\n 'Unsupported type of expression: ' + JSON.stringify(value)\n );\n }\n}\n\nconst compileExpr = saveStack('expr', (state, expr) => {\n if (typeof expr === 'string') {\n // Field reference\n if (expr[0] === '$') {\n let fieldRef = expr === '$' ? state.implicitField : expr.slice(1);\n\n if (fieldRef == null || fieldRef === '') {\n throw new CompileError('Invalid field reference: ' + expr);\n }\n\n return transformField(state, fieldRef);\n }\n\n // Named parameter\n if (expr[0] === ':') {\n let param = { value: '?', type: 'param', paramName: expr.slice(1) };\n state.namedParameters.push(param);\n return param;\n }\n }\n\n if (expr !== null) {\n if (Array.isArray(expr)) {\n return compileLiteral(expr);\n } else if (\n typeof expr === 'object' &&\n Object.keys(expr).find(k => k[0] === '$')\n ) {\n // It's a function call\n return compileFunction(state, expr);\n }\n }\n\n return compileLiteral(expr);\n});\n\nfunction assertType(name, data, acceptedTypes) {\n if (acceptedTypes.indexOf(data.type) === -1) {\n throw new CompileError(\n `Invalid type of expression to ${name}, must be one of ${JSON.stringify(\n acceptedTypes\n )}: ${JSON.stringify(data.value)}`\n );\n }\n}\n\nfunction assertArgLength(name, args, len) {\n if (args.length !== len) {\n throw new CompileError(\n `Invalid number of args to ${name}: expected ${len} but received ${args.length}`\n )();\n }\n}\n\nconst compileFunction = saveStack('function', (state, func) => {\n let [name] = Object.keys(func);\n let argExprs = func[name];\n if (!Array.isArray(argExprs)) {\n argExprs = [argExprs];\n }\n\n if (name[0] !== '$') {\n throw new CompileError(\n `Unknown property \"${name}\". Did you mean to call a function? Try prefixing it with $`\n );\n }\n\n let args = argExprs;\n // `$condition` is a special-case where it will be evaluated later\n if (name !== '$condition') {\n args = argExprs.map(arg => compileExpr(state, arg));\n }\n\n switch (name) {\n // aggregate functions\n case '$sum': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['float']);\n return typed(`SUM(${arg1})`, args[0].type);\n }\n\n case '$sumOver': {\n let [arg1] = valArray(state, args, ['float']);\n let order = state.orders\n ? 'ORDER BY ' + compileOrderBy(state, state.orders)\n : '';\n\n return typed(\n `(SUM(${arg1}) OVER (${order} ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING))`,\n args[0].type\n );\n }\n\n case '$count': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args);\n return typed(`COUNT(${arg1})`, 'integer');\n }\n\n // string functions\n case '$substr': {\n validateArgLength(args, 2, 3);\n let [arg1, arg2, arg3] = valArray(state, args, [\n 'string',\n 'integer',\n 'integer'\n ]);\n return typed(`SUBSTR(${arg1}, ${arg2}, ${arg3})`, 'string');\n }\n case '$lower': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['string']);\n return typed(`LOWER(${arg1})`, 'string');\n }\n\n // integer/float functions\n case '$neg': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['float']);\n return typed(`(-${val(state, args[0])})`, args[0].type);\n }\n case '$abs': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['float']);\n return typed(`ABS(${val(state, args[0])})`, args[0].type);\n }\n case '$idiv': {\n validateArgLength(args, 2);\n let [arg1, arg2] = valArray(state, args, ['integer', 'integer']);\n return typed(\n `(${val(state, args[0])} / ${val(state, args[1])})`,\n args[0].type\n );\n }\n\n // date functions\n case '$month': {\n validateArgLength(args, 1);\n return castInput(state, args[0], 'date-month');\n }\n case '$year': {\n validateArgLength(args, 1);\n return castInput(state, args[0], 'date-year');\n }\n\n // various functions\n case '$condition':\n validateArgLength(args, 1);\n let conds = compileConditions(state, args[0]);\n return typed(conds.join(' AND '), 'boolean');\n\n case '$nocase':\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['string']);\n return typed(`${arg1} COLLATE NOCASE`, args[0].type);\n\n case '$literal': {\n validateArgLength(args, 1);\n if (!args[0].literal) {\n throw new CompileError('Literal not passed to $literal');\n }\n return args[0];\n }\n default:\n throw new CompileError(`Unknown function: ${name}`);\n }\n});\n\nconst compileOp = saveStack('op', (state, fieldRef, opData) => {\n let { $transform, ...opExpr } = opData;\n let [op] = Object.keys(opExpr);\n\n let rhs = compileExpr(state, opData[op]);\n\n let lhs;\n if ($transform) {\n lhs = compileFunction(\n { ...state, implicitField: fieldRef },\n typeof $transform === 'string' ? { [$transform]: '$' } : $transform\n );\n } else {\n lhs = compileExpr(state, '$' + fieldRef);\n }\n\n switch (op) {\n case '$gte': {\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n return `${left} >= ${right}`;\n }\n case '$lte': {\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n return `${left} <= ${right}`;\n }\n case '$gt': {\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n return `${left} > ${right}`;\n }\n case '$lt': {\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n return `${left} < ${right}`;\n }\n case '$eq': {\n if (castInput(state, rhs, lhs.type).type === 'null') {\n return `${val(state, lhs)} IS NULL`;\n }\n\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n\n if (rhs.type === 'param') {\n let orders = state.namedParameters.map(param => {\n return param === rhs || param === lhs ? [param, { ...param }] : param;\n });\n state.namedParameters = [].concat.apply([], orders);\n\n return `CASE\n WHEN ${left} IS NULL THEN ${right} IS NULL\n ELSE ${left} = ${right}\n END`;\n }\n\n return `${left} = ${right}`;\n }\n case '$oneof': {\n let [left, right] = valArray(state, [lhs, rhs], [null, 'array']);\n // Dedupe the ids\n let ids = [...new Set(right)];\n return `${left} IN (` + ids.map(id => `'${id}'`).join(',') + ')';\n }\n case '$like': {\n let [left, right] = valArray(state, [lhs, rhs], ['string', 'string']);\n return `${left} LIKE ${right}`;\n }\n default:\n throw new CompileError(`Unknown operator: ${op}`);\n }\n});\n\nfunction compileConditions(state, conds) {\n if (!Array.isArray(conds)) {\n // Convert the object form `{foo: 1, bar:2}` into the array form\n // `[{foo: 1}, {bar:2}]`\n conds = Object.entries(conds).map(cond => {\n return { [cond[0]]: cond[1] };\n });\n }\n\n return conds.filter(Boolean).reduce((res, condsObj) => {\n let compiled = Object.entries(condsObj)\n .map(([field, cond]) => {\n // Allow a falsy value in the lhs of $and and $or to allow for\n // quick forms like `$or: amount != 0 && ...`\n if (field === '$and') {\n if (!cond) {\n return null;\n }\n return compileAnd(state, cond);\n } else if (field === '$or') {\n if (!cond) {\n return null;\n }\n return compileOr(state, cond);\n }\n\n if (\n typeof cond === 'string' ||\n typeof cond === 'number' ||\n typeof cond === 'boolean' ||\n cond instanceof Date ||\n cond == null\n ) {\n return compileOp(state, field, { $eq: cond });\n }\n\n if (Array.isArray(cond)) {\n // An array of conditions for a field is implicitly an `and`\n return cond.map(c => compileOp(state, field, c)).join(' AND ');\n }\n return compileOp(state, field, cond);\n })\n .filter(Boolean);\n\n return [...res, ...compiled];\n }, []);\n}\n\nfunction compileOr(state, conds) {\n // Same as above\n if (!conds) {\n return '0';\n }\n let res = compileConditions(state, conds);\n if (res.length === 0) {\n return '0';\n }\n return '(' + res.join('\\n OR ') + ')';\n}\n\nfunction compileAnd(state, conds) {\n // Same as above\n if (!conds) {\n return '1';\n }\n let res = compileConditions(state, conds);\n if (res.length === 0) {\n return '1';\n }\n return '(' + res.join('\\n AND ') + ')';\n}\n\nconst compileWhere = saveStack('filter', (state, conds) => {\n return compileAnd(state, conds);\n});\n\nfunction compileJoins(state, tableRef, internalTableFilters) {\n let joins = [];\n state.paths.forEach((desc, path) => {\n let {\n tableName,\n tableId,\n joinField,\n joinTable,\n noMapping\n } = state.paths.get(path);\n\n let on = `${tableId}.id = ${tableRef(joinTable)}.${quoteAlias(joinField)}`;\n\n let filters = internalTableFilters(tableName);\n if (filters.length > 0) {\n on +=\n ' AND ' +\n compileAnd(\n { ...state, implicitTableName: tableName, implicitTableId: tableId },\n filters\n );\n }\n\n joins.push(\n `LEFT JOIN ${\n noMapping ? tableName : tableRef(tableName, true)\n } ${tableId} ON ${addTombstone(state.schema, tableName, tableId, on)}`\n );\n\n if (state.dependencies.indexOf(tableName) === -1) {\n state.dependencies.push(tableName);\n }\n });\n return joins.join('\\n');\n}\n\nfunction expandStar(state, expr) {\n let path;\n let pathInfo;\n if (expr === '*') {\n pathInfo = {\n tableName: state.implicitTableName,\n tableId: state.implicitTableId\n };\n } else if (expr.match(/\\.\\*$/)) {\n let result = popPath(expr);\n path = result.path;\n pathInfo = resolvePath(state, result.path);\n }\n\n let table = state.schema[pathInfo.tableName];\n if (table == null) {\n throw new Error(`Table \"${pathInfo.tableName}\" does not exist`);\n }\n\n return Object.keys(table).map(field => (path ? `${path}.${field}` : field));\n}\n\nconst compileSelect = saveStack(\n 'select',\n (state, exprs, isAggregate, orders) => {\n // Always include the id if it's not an aggregate\n if (!isAggregate && !exprs.includes('id') && !exprs.includes('*')) {\n exprs = exprs.concat(['id']);\n }\n\n let select = exprs.map(expr => {\n if (typeof expr === 'string') {\n if (expr.indexOf('*') !== -1) {\n let fields = expandStar(state, expr);\n\n return fields\n .map(field => {\n let compiled = compileExpr(state, '$' + field);\n state.outputTypes.set(field, compiled.type);\n return compiled.value + ' AS ' + quoteAlias(field);\n })\n .join(', ');\n }\n\n let compiled = compileExpr(state, '$' + expr);\n state.outputTypes.set(expr, compiled.type);\n return compiled.value + ' AS ' + quoteAlias(expr);\n }\n\n let [name, value] = Object.entries(expr)[0];\n if (name[0] === '$') {\n state.compileStack.push({ type: 'value', value: expr });\n throw new CompileError(\n `Invalid field \"${name}\", are you trying to select a function? You need to name the expression`\n );\n }\n\n if (typeof value === 'string') {\n let compiled = compileExpr(state, '$' + value);\n state.outputTypes.set(name, compiled.type);\n return `${compiled.value} AS ${quoteAlias(name)}`;\n }\n\n let compiled = compileFunction({ ...state, orders }, value);\n state.outputTypes.set(name, compiled.type);\n return compiled.value + ` AS ${quoteAlias(name)}`;\n });\n\n return select.join(', ');\n }\n);\n\nconst compileGroupBy = saveStack('groupBy', (state, exprs) => {\n let groupBy = exprs.map(expr => {\n if (typeof expr === 'string') {\n return compileExpr(state, '$' + expr).value;\n }\n\n return compileFunction(state, expr).value;\n });\n\n return groupBy.join(', ');\n});\n\nconst compileOrderBy = saveStack('orderBy', (state, exprs) => {\n let orderBy = exprs.map(expr => {\n let compiled;\n let dir = null;\n\n if (typeof expr === 'string') {\n compiled = compileExpr(state, '$' + expr).value;\n } else {\n let entries = Object.entries(expr);\n let entry = entries[0];\n\n // Check if this is a field reference\n if (entries.length === 1 && entry[0][0] !== '$') {\n dir = entry[1];\n compiled = compileExpr(state, '$' + entry[0]).value;\n } else {\n // Otherwise it's a function\n let { $dir, ...func } = expr;\n dir = $dir;\n compiled = compileFunction(state, func).value;\n }\n }\n\n if (dir != null) {\n if (dir !== 'desc' && dir !== 'asc') {\n throw new CompileError('Invalid order direction: ' + dir);\n }\n return `${compiled} ${dir}`;\n }\n return compiled;\n });\n\n return orderBy.join(', ');\n});\n\nlet AGGREGATE_FUNCTIONS = ['$sum', '$count'];\nfunction isAggregateFunction(expr) {\n if (typeof expr !== 'object' || Array.isArray(expr)) {\n return false;\n }\n\n let [name, argExprs] = Object.entries(expr)[0];\n if (!Array.isArray(argExprs)) {\n argExprs = [argExprs];\n }\n\n if (AGGREGATE_FUNCTIONS.indexOf(name) !== -1) {\n return true;\n }\n\n return argExprs.find(ex => isAggregateFunction(ex));\n}\n\nexport function isAggregateQuery(queryState) {\n // it's aggregate if:\n // either an aggregate function is used in `select`\n // or a `groupBy` exists\n\n if (queryState.groupExpressions.length > 0) {\n return true;\n }\n\n return queryState.selectExpressions.find(expr => {\n if (typeof expr !== 'string') {\n let [name, value] = Object.entries(expr)[0];\n return isAggregateFunction(value);\n }\n return false;\n });\n}\n\nexport function compileQuery(queryState, schema, schemaConfig = {}) {\n let { withDead, validateRefs = true, tableOptions, rawMode } = queryState;\n\n let {\n tableViews = {},\n tableFilters = name => [],\n customizeQuery = queryState => queryState\n } = schemaConfig;\n\n let internalTableFilters = name => {\n let filters = tableFilters(name);\n // These filters cannot join tables and must be simple strings\n for (let filter of filters) {\n if (Array.isArray(filter)) {\n throw new CompileError(\n 'Invalid internal table filter: only object filters are supported'\n );\n }\n if (Object.keys(filter)[0].indexOf('.') !== -1) {\n throw new CompileError(\n 'Invalid internal table filter: field names cannot contain paths'\n );\n }\n }\n return filters;\n };\n\n let tableRef = (name, isJoin) => {\n let view =\n typeof tableViews === 'function'\n ? tableViews(name, { withDead, isJoin, tableOptions })\n : tableViews[name];\n return view || name;\n };\n\n let tableName = queryState.table;\n\n let {\n filterExpressions,\n selectExpressions,\n groupExpressions,\n orderExpressions,\n limit,\n offset,\n calculation\n } = customizeQuery(queryState);\n\n let select = '';\n let where = '';\n let joins = '';\n let groupBy = '';\n let orderBy = '';\n let dependences = [];\n let state = {\n schema,\n implicitTableName: tableName,\n implicitTableId: tableRef(tableName),\n paths: new Map(),\n dependencies: [tableName],\n compileStack: [],\n outputTypes: new Map(),\n validateRefs,\n namedParameters: []\n };\n\n resetUid();\n\n try {\n select = compileSelect(\n state,\n selectExpressions,\n isAggregateQuery(queryState),\n orderExpressions\n );\n\n if (filterExpressions.length > 0) {\n let result = compileWhere(state, filterExpressions);\n where = 'WHERE ' + result;\n } else {\n where = 'WHERE 1';\n }\n\n if (!rawMode) {\n let filters = internalTableFilters(tableName);\n if (filters.length > 0) {\n where += ' AND ' + compileAnd(state, filters);\n }\n }\n\n if (groupExpressions.length > 0) {\n let result = compileGroupBy(state, groupExpressions);\n groupBy = 'GROUP BY ' + result;\n }\n\n // Orders don't matter if doing a single calculation\n if (orderExpressions.length > 0) {\n let result = compileOrderBy(state, orderExpressions);\n orderBy = 'ORDER BY ' + result;\n }\n\n if (state.paths.size > 0) {\n joins = compileJoins(state, tableRef, internalTableFilters);\n }\n } catch (e) {\n if (e instanceof CompileError) {\n throw getCompileError(e, state.compileStack);\n }\n\n throw e;\n }\n\n let sqlPieces = {\n select,\n from: tableRef(tableName),\n joins,\n where,\n groupBy,\n orderBy,\n limit,\n offset\n };\n\n return {\n sqlPieces,\n state\n };\n}\n\nexport function defaultConstructQuery(queryState, state, sqlPieces) {\n let s = sqlPieces;\n\n let where = queryState.withDead\n ? s.where\n : addTombstone(\n state.schema,\n state.implicitTableName,\n state.implicitTableId,\n s.where\n );\n\n return `\n SELECT ${s.select} FROM ${s.from}\n ${s.joins}\n ${where}\n ${s.groupBy}\n ${s.orderBy}\n ${s.limit != null ? `LIMIT ${s.limit}` : ''}\n ${s.offset != null ? `OFFSET ${s.offset}` : ''}\n `;\n}\n\nexport function generateSQLWithState(queryState, schema, schemaConfig) {\n let { sqlPieces, state } = compileQuery(queryState, schema, schemaConfig);\n return { sql: defaultConstructQuery(queryState, state, sqlPieces), state };\n}\n\nexport function generateSQL(queryState) {\n return generateSQLWithState(queryState).sql;\n}\n","import * as db from '../db';\nimport { compileQuery, defaultConstructQuery } from './compiler';\nimport { convertInputType, convertOutputType } from './schema-helpers';\n\n// TODO (compiler):\n// * Properly safeguard all inputs against SQL injection\n// * Functions for incr/decr dates\n// * Support HAVING\n// * Allow creating in-memory tables to run queries against static\n// data\n// * For aggregate functions on selected ids, manually implement\n// them only only support a specific few (sum amount / etc)\n// * Select expressions should be evaluated first, and added to a\n// global \"field lookup\" table that other filter/groupBy/etc\n// expressions can reference\n\nfunction applyTypes(data, outputTypes) {\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n Object.keys(item).forEach(name => {\n item[name] = convertOutputType(item[name], outputTypes.get(name));\n });\n }\n}\n\nexport async function execQuery(\n queryState,\n state,\n sqlPieces,\n params,\n outputTypes\n) {\n let sql = defaultConstructQuery(queryState, state, sqlPieces);\n let data = await db.all(sql, params);\n applyTypes(data, outputTypes);\n return data;\n}\n\nexport async function runCompiledQuery(\n query,\n pieces,\n state,\n { params = {}, executors = {} } = {}\n) {\n let paramArray = state.namedParameters.map(param => {\n let name = param.paramName;\n if (params[name] === undefined) {\n throw new Error(`Parameter ${name} not provided to query`);\n }\n return convertInputType(params[name], param.paramType);\n });\n\n let data;\n if (executors[state.implicitTableName]) {\n data = await executors[state.implicitTableName](\n state,\n query,\n pieces,\n paramArray,\n state.outputTypes\n );\n } else {\n data = await execQuery(query, state, pieces, paramArray, state.outputTypes);\n }\n\n if (query.calculation) {\n if (data.length > 0) {\n let row = data[0];\n let k = Object.keys(row)[0];\n // TODO: the function being run should be the one to\n // determine the default value, not hardcoded as 0\n data = row[k] || 0;\n } else {\n data = null;\n }\n }\n return data;\n}\n\nexport async function runQuery(schema, schemaConfig, query, options) {\n let { sqlPieces, state } = compileQuery(query, schema, schemaConfig);\n let data = await runCompiledQuery(query, sqlPieces, state, options);\n return { data, dependencies: state.dependencies };\n}\n","import { toDateRepr, fromDateRepr } from '../models';\nimport { dayFromDate } from '../../shared/months';\n\nfunction isRequired(name, fieldDesc) {\n return fieldDesc.required || name === 'id';\n}\n\n// TODO: All of the data type needs to check the input value. This\n// doesn't just convert, it casts. See integer handling.\nexport function convertInputType(value, type) {\n if (value === undefined) {\n throw new Error('Query value cannot be undefined');\n } else if (value === null) {\n if (type === 'boolean') {\n return 0;\n }\n\n return null;\n }\n\n switch (type) {\n case 'date':\n if (value instanceof Date) {\n return toDateRepr(dayFromDate(value));\n } else if (\n value.match(/^\\d{4}-\\d{2}-\\d{2}$/) == null ||\n value.date < '2000-01-01'\n ) {\n throw new Error('Invalid date: ' + value);\n }\n\n return toDateRepr(value);\n case 'date-month':\n return toDateRepr(value.slice(0, 7));\n case 'date-year':\n return toDateRepr(value.slice(0, 4));\n case 'boolean':\n return value ? 1 : 0;\n case 'id':\n if (typeof value !== 'string' && value !== null) {\n throw new Error('Invalid id, must be string: ' + value);\n }\n return value;\n case 'integer':\n if (typeof value === 'number' && (value | 0) === value) {\n return value;\n } else {\n throw new Error(\"Can't convert to integer: \" + JSON.stringify(value));\n }\n case 'json':\n return JSON.stringify(value);\n default:\n }\n return value;\n}\n\nexport function convertOutputType(value, type) {\n if (value === null) {\n if (type === 'boolean') {\n return false;\n }\n return null;\n }\n\n switch (type) {\n case 'date':\n return fromDateRepr(value);\n case 'date-month':\n return fromDateRepr(value).slice(0, 7);\n case 'date-year':\n return fromDateRepr(value).slice(0, 4);\n case 'boolean':\n return value === 1;\n case 'json':\n case 'json/fallback':\n try {\n return JSON.parse(value);\n } catch (e) {\n return type === 'json/fallback' ? value : null;\n }\n default:\n }\n\n return value;\n}\n\nexport function conform(schema, schemaConfig, table, obj, { skipNull } = {}) {\n let tableSchema = schema[table];\n if (tableSchema == null) {\n throw new Error(`Table \"${table}\" does not exist`);\n }\n\n let views = schemaConfig.views || {};\n\n // Rename fields if necessary\n let fieldRef = field => {\n if (views[table] && views[table].fields) {\n return views[table].fields[field] || field;\n }\n return field;\n };\n\n return Object.fromEntries(\n Object.keys(obj)\n .map(field => {\n // Fields that start with an underscore are ignored\n if (field[0] === '_') {\n return null;\n }\n\n let fieldDesc = tableSchema[field];\n if (fieldDesc == null) {\n throw new Error(\n `Field \"${field}\" does not exist on table ${table}: ${JSON.stringify(\n obj\n )}`\n );\n }\n\n if (isRequired(field, fieldDesc) && obj[field] == null) {\n throw new Error(\n `\"${field}\" is required for table \"${table}\": ${JSON.stringify(\n obj\n )}`\n );\n }\n\n // This option removes null values (see `convertForInsert`)\n if (skipNull && obj[field] == null) {\n return null;\n }\n\n return [fieldRef(field), convertInputType(obj[field], fieldDesc.type)];\n })\n .filter(Boolean)\n );\n}\n\nexport function convertForInsert(schema, schemaConfig, table, rawObj) {\n let obj = { ...rawObj };\n\n let tableSchema = schema[table];\n if (tableSchema == null) {\n throw new Error(`Error inserting: table \"${table}\" does not exist`);\n }\n\n // Inserting checks all the fields in the table and adds any default\n // values necessary\n Object.keys(tableSchema).forEach(field => {\n let fieldDesc = tableSchema[field];\n\n if (obj[field] == null) {\n if (fieldDesc.default !== undefined) {\n obj[field] =\n typeof fieldDesc.default === 'function'\n ? fieldDesc.default()\n : fieldDesc.default;\n } else if (isRequired(field, fieldDesc)) {\n // Although this check is also done in `conform`, it only\n // checks the fields in `obj`. For insert, we need to do it\n // here to check that all required fields in the table exist\n throw new Error(\n `\"${field}\" is required for table \"${table}\": ${JSON.stringify(obj)}`\n );\n }\n }\n });\n\n // We use `skipNull` to remove any null values. There's no need to\n // set those when inserting, that will be the default and it reduces\n // the amount of messages generated to sync\n return conform(schema, schemaConfig, table, obj, { skipNull: true });\n}\n\nexport function convertForUpdate(schema, schemaConfig, table, rawObj) {\n let obj = { ...rawObj };\n\n let tableSchema = schema[table];\n if (tableSchema == null) {\n throw new Error(`Error updating: table \"${table}\" does not exist`);\n }\n\n return conform(schema, schemaConfig, table, obj);\n}\n\nexport function convertFromSelect(schema, schemaConfig, table, obj) {\n let tableSchema = schema[table];\n if (tableSchema == null) {\n throw new Error(`Table \"${table}\" does not exist`);\n }\n\n let fields = Object.keys(tableSchema);\n let result = {};\n for (let i = 0; i < fields.length; i++) {\n let fieldName = fields[i];\n let fieldDesc = tableSchema[fieldName];\n\n result[fieldName] = convertOutputType(obj[fieldName], fieldDesc.type);\n }\n return result;\n}\n","import * as db from '../../db';\nimport { whereIn } from '../../db/util';\nimport { groupBy } from '../../../shared/util';\nimport { isAggregateQuery } from '../compiler';\nimport { convertOutputType } from '../schema-helpers';\nimport { execQuery } from '../exec';\n\n// Transactions executor\n\nexport function toGroup(parents, children, mapper = x => x) {\n return parents.reduce((list, parent) => {\n let childs = children.get(parent.id) || [];\n list.push({\n ...mapper(parent),\n subtransactions: childs.map(mapper)\n });\n return list;\n }, []);\n}\n\n// These two queries will return very different things:\n//\n// q('transactions').select({ $count: 'id' })\n// q('transactions', { splits: \"grouped\" }).select({ $count: 'id' })\n//\n// The first will return the count of non-split and child\n// transactions, and the second will return the count of all parent\n// (or non-split) transactions\n\nfunction execTransactions(state, query, sql, params, outputTypes) {\n let tableOptions = query.tableOptions || {};\n let splitType = tableOptions.splits || 'inline';\n\n if (['all', 'inline', 'none', 'grouped'].indexOf(splitType) === -1) {\n throw new Error(`Invalid \"splits\" option for transactions: \"${splitType}\"`);\n }\n\n if (splitType === 'all' || splitType === 'inline' || splitType === 'none') {\n return execTransactionsBasic(\n state,\n query,\n sql,\n params,\n splitType,\n outputTypes\n );\n } else if (splitType === 'grouped') {\n return execTransactionsGrouped(\n state,\n query,\n sql,\n params,\n splitType,\n outputTypes\n );\n }\n}\n\nfunction _isUnhappy(filter) {\n // These fields can be filtered - all split transactions will\n // still be returned regardless\n for (let key of Object.keys(filter)) {\n if (key === '$or' || key === '$and') {\n if (filter[key] && _isUnhappy(filter[key])) {\n return true;\n }\n } else if (!(key.indexOf('account') === 0 || key === 'date')) {\n return true;\n }\n }\n return false;\n}\n\nexport function isHappyPathQuery(queryState) {\n return queryState.filterExpressions.find(_isUnhappy) == null;\n}\n\nasync function execTransactionsGrouped(\n state,\n queryState,\n sql,\n params,\n splitType,\n outputTypes\n) {\n let { table: tableName, withDead } = queryState;\n let whereDead = withDead ? '' : `AND ${sql.from}.tombstone = 0`;\n\n if (isAggregateQuery(queryState)) {\n let allSql = `\n SELECT ${sql.select}\n FROM ${sql.from}\n ${sql.joins}\n ${sql.where} AND is_parent = 0 ${whereDead}\n ${sql.groupBy}\n ${sql.orderBy}\n ${sql.limit != null ? `LIMIT ${sql.limit}` : ''}\n ${sql.offset != null ? `OFFSET ${sql.offset}` : ''}\n `;\n return db.all(allSql);\n }\n\n let rows;\n let matched = null;\n\n if (isHappyPathQuery(queryState)) {\n // This is just an optimization - we can just filter out children\n // directly and only list parents\n let rowSql = `\n SELECT ${sql.from}.id as group_id\n FROM ${sql.from}\n ${sql.joins}\n ${sql.where} AND is_child = 0 ${whereDead}\n ${sql.orderBy}\n ${sql.limit != null ? `LIMIT ${sql.limit}` : ''}\n ${sql.offset != null ? `OFFSET ${sql.offset}` : ''}\n `;\n rows = await db.all(rowSql, params);\n } else {\n // TODO: phew, what a doozy. write docs why it works this way\n //\n // prettier-ignore\n let rowSql = `\n SELECT group_id, matched FROM (\n SELECT\n group_id,\n GROUP_CONCAT(id) as matched\n FROM (\n SELECT ${sql.from}.id, IFNULL(${sql.from}.parent_id, ${sql.from}.id) as group_id\n FROM ${sql.from}\n LEFT JOIN transactions _t2 ON ${sql.from}.is_child = 1 AND _t2.id = ${sql.from}.parent_id\n ${sql.joins}\n ${sql.where} AND ${sql.from}.tombstone = 0 AND IFNULL(_t2.tombstone, 0) = 0\n )\n GROUP BY group_id\n )\n LEFT JOIN ${sql.from} ON ${sql.from}.id = group_id\n ${sql.joins}\n ${sql.orderBy}\n ${sql.limit != null ? `LIMIT ${sql.limit}` : ''}\n ${sql.offset != null ? `OFFSET ${sql.offset}` : ''}\n `;\n\n rows = await db.all(rowSql, params);\n matched = new Set(\n [].concat.apply([], rows.map(row => row.matched.split(',')))\n );\n }\n\n let where = whereIn(\n rows.map(row => row.group_id),\n `IFNULL(${sql.from}.parent_id, ${sql.from}.id)`\n );\n let finalSql = `\n SELECT ${sql.select}, parent_id AS _parent_id FROM ${sql.from}\n ${sql.joins}\n WHERE ${where} ${whereDead}\n ${sql.orderBy}\n `;\n\n let start = Date.now();\n let allRows = await db.all(finalSql);\n\n // Group the parents and children up\n let { parents, children } = allRows.reduce(\n (acc, trans) => {\n let pid = trans._parent_id;\n delete trans._parent_id;\n\n if (pid == null) {\n acc.parents.push(trans);\n } else {\n let arr = acc.children.get(pid) || [];\n arr.push(trans);\n acc.children.set(pid, arr);\n }\n return acc;\n },\n { parents: [], children: new Map() }\n );\n\n let mapper = trans => {\n Object.keys(trans).forEach(name => {\n trans[name] = convertOutputType(trans[name], outputTypes.get(name));\n });\n\n if (matched && !matched.has(trans.id)) {\n trans._unmatched = true;\n }\n return trans;\n };\n\n return toGroup(parents, children, mapper);\n}\n\nasync function execTransactionsBasic(\n state,\n queryState,\n sql,\n params,\n splitType,\n outputTypes\n) {\n let s = { ...sql };\n\n if (splitType !== 'all') {\n if (splitType === 'none') {\n s.where = `${s.where} AND ${s.from}.parent_id IS NULL`;\n } else {\n s.where = `${s.where} AND ${s.from}.is_parent = 0`;\n }\n }\n\n return execQuery(queryState, state, s, params, outputTypes);\n}\n\nexport default {\n transactions: execTransactions\n};\n","function f(type, opts) {\n return { type, ...opts };\n}\n\n// This is the table schema!\n//\n// The schema itself is the public API for querying and updating data.\n// The schema config provides a lot of control over how queries are\n// constructed other metadata used by the executors. The goal is to\n// provide a simple interface to the app, but allow the backend to\n// highly optimize how queries are run.\n//\n// A few notes:\n//\n// * `transactions` is a special table and is has a highly customized\n// executor (see `executors.js`) for performace. It should mostly be\n// transparent to you, but it's worth reading the comments in there if\n// requirements change, especially regarding split transactions.\n//\n// * You should rarely change the schema and only add to it, but it is\n// relatively safe to change if needed. The only problem is changing a\n// public API, but that could be mitigated with an option in schema\n// config to map field name for backwards compatibility.\n//\n// * It's important that the table names here in the schema map to the\n// real tables in sqlite that are updated. Otherwise subscriptions\n// might not work because the dependencies are wrong. If needed in the\n// future, we can provide another option in the schema config to map a\n// table name the internal table that is updated.\n\nexport const schema = {\n transactions: {\n id: f('id'),\n is_parent: f('boolean'),\n is_child: f('boolean'),\n parent_id: f('id'),\n account: f('id', { ref: 'accounts', required: true }),\n category: f('id', { ref: 'categories' }),\n amount: f('integer', { default: 0, required: true }),\n payee: f('id', { ref: 'payees' }),\n notes: f('string'),\n date: f('date', { required: true }),\n imported_id: f('string'),\n error: f('json'),\n imported_payee: f('string'),\n starting_balance_flag: f('boolean'),\n transfer_id: f('id'),\n sort_order: f('float', { default: () => Date.now() }),\n cleared: f('boolean', { default: true }),\n tombstone: f('boolean'),\n schedule: f('id', { ref: 'schedules' })\n // subtransactions is a special field added if the table has the\n // `splits: grouped` option\n },\n payees: {\n id: f('id'),\n name: f('string', { required: true }),\n transfer_acct: f('id', { ref: 'accounts' }),\n tombstone: f('boolean')\n },\n accounts: {\n id: f('id'),\n name: f('string', { required: true }),\n // TODO: enum\n type: f('string'),\n offbudget: f('boolean'),\n closed: f('boolean'),\n sort_order: f('float'),\n tombstone: f('boolean')\n },\n categories: {\n id: f('id'),\n name: f('string'),\n is_income: f('boolean'),\n group: f('id', { ref: 'category_groups' }),\n sort_order: f('float'),\n tombstone: f('boolean')\n },\n category_groups: {\n id: f('id'),\n name: f('string'),\n is_income: f('boolean'),\n sort_order: f('float'),\n tombstone: f('boolean')\n },\n schedules: {\n id: f('id'),\n rule: f('id', { ref: 'rules', required: true }),\n next_date: f('date'),\n completed: f('boolean'),\n posts_transaction: f('boolean'),\n tombstone: f('boolean'),\n\n // These are special fields that are actually pulled from the\n // underlying rule\n _payee: f('id', { ref: 'payees' }),\n _account: f('id', { ref: 'accounts' }),\n _amount: f('json/fallback'),\n _amountOp: f('string'),\n _date: f('json/fallback'),\n _conditions: f('json'),\n _actions: f('json')\n },\n rules: {\n id: f('id'),\n stage: f('string'),\n conditions: f('json'),\n actions: f('json'),\n tombstone: f('boolean')\n },\n notes: {\n id: f('id'),\n note: f('string')\n }\n};\n\nexport const schemaConfig = {\n // Note: these views *must* represent the underlying table that we\n // are mapping here. The compiler makes optimizations with this\n // assumption\n tableViews(name, { isJoin, withDead, tableOptions = {} }) {\n switch (name) {\n case 'transactions': {\n // If joining, we always only show alive transactions. There's\n // no way to configure join behavior yet\n if (isJoin) {\n return 'v_transactions_internal_alive';\n }\n\n let splitType = tableOptions.splits || 'inline';\n // Use the view to exclude dead transactions if using `inline` or `none`\n if (!withDead && (splitType === 'inline' || splitType === 'none')) {\n return 'v_transactions_internal_alive';\n }\n\n // Otherwse we disregard the `withDead` option here and handle\n // that in the executors to improve performance\n return 'v_transactions_internal';\n }\n\n case 'schedules':\n return 'v_schedules';\n\n case 'categories':\n return 'v_categories';\n\n case 'payees':\n return 'v_payees';\n\n default:\n }\n return name;\n },\n\n customizeQuery(queryState) {\n let { table: tableName, tableOptions = {} } = queryState;\n\n function orderBy(orders) {\n // If order was specified, always add id as the last sort to make\n // it deterministic\n if (orders.length > 0) {\n return orders.concat(['id']);\n }\n\n // Otherwise, these are the default orders for each table\n switch (tableName) {\n case 'transactions':\n return [\n { date: 'desc' },\n 'starting_balance_flag',\n { sort_order: 'desc' },\n 'id'\n ];\n case 'payees':\n return [\n { $condition: { transfer_acct: null }, $dir: 'desc' },\n { $nocase: '$name' }\n ];\n case 'accounts':\n return ['sort_order', 'name'];\n case 'schedules':\n return [{ $condition: { completed: true } }, 'next_date'];\n default:\n }\n\n return [];\n }\n\n return {\n ...queryState,\n orderExpressions: orderBy(queryState.orderExpressions)\n };\n },\n\n views: {\n payees: {\n v_payees: internalFields => {\n let fields = internalFields({\n name: 'COALESCE(__accounts.name, _.name)'\n });\n\n return `\n SELECT ${fields} FROM payees _\n LEFT JOIN accounts __accounts ON (_.transfer_acct = __accounts.id AND __accounts.tombstone = 0)\n -- We never want to show transfer payees that are pointing to deleted accounts.\n -- Either this isn't a transfer payee, if the account exists\n WHERE _.transfer_acct IS NULL OR __accounts.id IS NOT NULL\n `;\n }\n },\n\n categories: {\n fields: {\n group: 'cat_group'\n },\n\n v_categories: internalFields => {\n let fields = internalFields({ group: 'cat_group' });\n return `SELECT ${fields} FROM categories _`;\n }\n },\n\n schedules: {\n v_schedules: internalFields => {\n let fields = internalFields({\n next_date: `\n CASE\n WHEN _nd.local_next_date_ts = _nd.base_next_date_ts THEN _nd.local_next_date\n ELSE _nd.base_next_date\n END\n `,\n _payee: `pm.targetId`,\n _account: `json_extract(_rules.conditions, _paths.account || '.value')`,\n _amount: `json_extract(_rules.conditions, _paths.amount || '.value')`,\n _amountOp: `json_extract(_rules.conditions, _paths.amount || '.op')`,\n _date: `json_extract(_rules.conditions, _paths.date || '.value')`,\n _conditions: '_rules.conditions',\n _actions: '_rules.actions'\n });\n\n return `\n SELECT ${fields} FROM schedules _\n LEFT JOIN schedules_next_date _nd ON _nd.schedule_id = _.id\n LEFT JOIN schedules_json_paths _paths ON _paths.schedule_id = _.id\n LEFT JOIN rules _rules ON _rules.id = _.rule\n LEFT JOIN payee_mapping pm ON pm.id = json_extract(_rules.conditions, _paths.payee || '.value')\n `;\n }\n },\n\n transactions: {\n fields: {\n is_parent: 'isParent',\n is_child: 'isChild',\n account: 'acct',\n imported_id: 'financial_id',\n imported_payee: 'imported_description',\n transfer_id: 'transferred_id',\n payee: 'description'\n },\n\n v_transactions_internal: internalFields => {\n // Override some fields to make custom stuff\n let fields = internalFields({\n payee: 'pm.targetId',\n category: `CASE WHEN _.isParent = 1 THEN NULL ELSE cm.transferId END`,\n amount: `IFNULL(_.amount, 0)`,\n parent_id: 'CASE WHEN _.isChild = 0 THEN NULL ELSE _.parent_id END'\n });\n\n return `\n SELECT ${fields} FROM transactions _\n LEFT JOIN category_mapping cm ON cm.id = _.category\n LEFT JOIN payee_mapping pm ON pm.id = _.description\n WHERE\n _.date IS NOT NULL AND\n _.acct IS NOT NULL AND\n (_.isChild = 0 OR _.parent_id IS NOT NULL)\n `;\n },\n\n // We join on t2 to only include valid child transactions. We\n // want to only include ones with valid parents, which is when\n // an alive parent transaction exists\n v_transactions_internal_alive: `\n SELECT _.* FROM v_transactions_internal _\n LEFT JOIN transactions t2 ON (_.is_child = 1 AND t2.id = _.parent_id)\n WHERE IFNULL(_.tombstone, 0) = 0 AND (_.is_child = 0 OR t2.tombstone = 0)\n `,\n\n v_transactions: (_, publicFields) => {\n let fields = publicFields({\n payee: 'p.id',\n category: 'c.id',\n account: 'a.id'\n });\n\n // This adds an order, and also validates any id references by\n // selecting the ids through a join which return null if they\n // are dead\n return `\n SELECT ${fields} FROM v_transactions_internal_alive _\n LEFT JOIN payees p ON (p.id = _.payee AND p.tombstone = 0)\n LEFT JOIN categories c ON (c.id = _.category AND c.tombstone = 0)\n LEFT JOIN accounts a ON (a.id = _.account AND a.tombstone = 0)\n ORDER BY _.date desc, _.starting_balance_flag, _.sort_order desc, _.id;\n `;\n }\n }\n }\n};\n","import { schema, schemaConfig } from './index';\nimport schemaExecutors from './executors';\nimport {\n runQuery as _runQuery,\n runCompiledQuery as _runCompiledQuery\n} from '../exec';\nimport { Query } from '../../../shared/query';\n\nexport function runCompiledQuery(query, sqlPieces, state, params) {\n return _runCompiledQuery(query, sqlPieces, state, {\n params,\n executors: schemaExecutors\n });\n}\n\nexport function runQuery(query, params) {\n if (query instanceof Query) {\n query = query.serialize();\n }\n\n return _runQuery(schema, schemaConfig, query, {\n params,\n executors: schemaExecutors\n });\n}\n","import { quoteAlias } from './compiler';\n\nfunction selectFields(fields) {\n return Object.keys(fields)\n .map(as => {\n let field = fields[as];\n let needsAs = field !== as;\n // If it's just an identifier, we automatically prefix it with\n // `_.` which makes sure it references the root table\n if (!field.match(/[ .]/)) {\n field = `_.${field}`;\n }\n return needsAs ? `${field} AS ${quoteAlias(as)}` : `${field}`;\n })\n .join(', ');\n}\n\nexport function makeViews(schema, schemaConfig) {\n let views = schemaConfig.views;\n let viewStrs = [];\n\n Object.keys(views).forEach(table => {\n let { fields: fieldMappings = {}, ...tableViews } = views[table];\n\n let publicFields = Object.fromEntries(\n Object.keys(schema[table]).map(name => [name, name])\n );\n let internalFields = { ...publicFields, ...fieldMappings };\n\n Object.keys(tableViews).forEach(viewName => {\n let publicMaker = overrides => {\n let fields = { ...publicFields, ...overrides };\n return selectFields(fields);\n };\n let internalMaker = overrides => {\n let fields = { ...internalFields, ...overrides };\n return selectFields(fields);\n };\n\n let sql;\n if (typeof tableViews[viewName] === 'function') {\n sql = tableViews[viewName](internalMaker, publicMaker);\n } else {\n sql = tableViews[viewName];\n }\n sql = sql.trim().replace(/;$/, '');\n\n viewStrs.push(`\n DROP VIEW IF EXISTS ${viewName};\n CREATE VIEW ${viewName} AS ${sql};\n `);\n });\n });\n\n return viewStrs.join('\\n');\n}\n","import fs from '../platform/server/fs';\nimport * as monthUtils from '../shared/months';\nimport * as sqlite from '../platform/server/sqlite';\nimport * as prefs from './prefs';\nimport * as cloudStorage from './cloud-storage';\nconst connection = require('../platform/server/connection');\nconst uuid = require('../platform/uuid');\nconst dateFns = require('date-fns');\n\n// A special backup that represents the latest version of the db that\n// can be reverted to after loading a backup\nconst LATEST_BACKUP_FILENAME = 'db.latest.sqlite';\nlet serviceInterval = null;\n\nexport async function getBackups(id) {\n const budgetDir = fs.getBudgetDir(id);\n const backupDir = fs.join(budgetDir, 'backups');\n\n let paths = [];\n if (await fs.exists(backupDir)) {\n paths = await fs.listDir(backupDir);\n paths = paths.filter(file => file.match(/\\.sqlite$/));\n }\n\n const backups = await Promise.all(\n paths.map(async path => {\n const mtime = await fs.getModifiedTime(fs.join(backupDir, path));\n return {\n id: path,\n date: new Date(mtime)\n };\n })\n );\n\n backups.sort((b1, b2) => {\n if (b1.date < b2.date) {\n return 1;\n } else if (b1.date > b2.date) {\n return -1;\n }\n return 0;\n });\n\n return backups;\n}\n\nexport async function getLatestBackup(id) {\n const budgetDir = fs.getBudgetDir(id);\n if (await fs.exists(fs.join(budgetDir, LATEST_BACKUP_FILENAME))) {\n return {\n id: LATEST_BACKUP_FILENAME,\n date: null,\n isLatest: true\n };\n }\n return null;\n}\n\nexport async function getAvailableBackups(id) {\n let backups = await getBackups(id);\n\n let latestBackup = await getLatestBackup(id);\n if (latestBackup) {\n backups.unshift(latestBackup);\n }\n\n backups = backups.map(backup => ({\n ...backup,\n date: backup.date ? dateFns.format(backup.date, 'yyyy-MM-dd h:mm') : null\n }));\n\n return backups;\n}\n\nexport async function updateBackups(backups) {\n const byDay = backups.reduce((groups, backup) => {\n const day = dateFns.format(backup.date, 'yyyy-MM-dd');\n groups[day] = groups[day] || [];\n groups[day].push(backup);\n return groups;\n }, {});\n\n const removed = [];\n for (let day of Object.keys(byDay)) {\n const dayBackups = byDay[day];\n const isToday = day === monthUtils.currentDay();\n // Allow 3 backups of the current day (so fine-grained edits are\n // kept around). Otherwise only keep around one backup per day.\n // And only keep a total of 10 backups.\n for (let backup of dayBackups.slice(isToday ? 3 : 1)) {\n removed.push(backup.id);\n }\n }\n\n // Get the list of remaining backups and only keep the latest 10\n const currentBackups = backups.filter(backup => !removed.includes(backup.id));\n return removed.concat(currentBackups.slice(10).map(backup => backup.id));\n}\n\nexport async function makeBackup(id) {\n const budgetDir = fs.getBudgetDir(id);\n\n // When making a backup, we no longer consider the user to be\n // viewing any backups. If there exists a \"latest backup\" we should\n // delete it and consider whatever is current as the latest\n if (await fs.exists(fs.join(budgetDir, LATEST_BACKUP_FILENAME))) {\n await fs.removeFile(fs.join(fs.getBudgetDir(id), LATEST_BACKUP_FILENAME));\n }\n\n let backupId = `${uuid.v4Sync()}.sqlite`;\n let backupPath = fs.join(budgetDir, 'backups', backupId);\n\n if (!(await fs.exists(fs.join(budgetDir, 'backups')))) {\n await fs.mkdir(fs.join(budgetDir, 'backups'));\n }\n\n await fs.copyFile(fs.join(budgetDir, 'db.sqlite'), backupPath);\n\n // Remove all the messages from the backup\n const db = sqlite.openDatabase(backupPath);\n await sqlite.runQuery(db, 'DELETE FROM messages_crdt');\n await sqlite.runQuery(db, 'DELETE FROM messages_clock');\n sqlite.closeDatabase(db);\n\n const toRemove = await updateBackups(await getBackups(id));\n for (let id of toRemove) {\n await fs.removeFile(fs.join(budgetDir, 'backups', id));\n }\n\n connection.send('backups-updated', await getAvailableBackups(id));\n}\n\nexport async function loadBackup(id, backupId) {\n const budgetDir = fs.getBudgetDir(id);\n\n if (!(await fs.exists(fs.join(budgetDir, LATEST_BACKUP_FILENAME)))) {\n // If this is the first time we're loading a backup, save the\n // current version so the user can easily revert back to it\n await fs.copyFile(\n fs.join(budgetDir, 'db.sqlite'),\n fs.join(budgetDir, LATEST_BACKUP_FILENAME)\n );\n\n await fs.copyFile(\n fs.join(budgetDir, 'metadata.json'),\n fs.join(budgetDir, 'metadata.latest.json')\n );\n\n // Restart the backup service to make sure the user has the full\n // amount of time to figure out which one they want\n stopBackupService();\n startBackupService(id);\n\n await prefs.loadPrefs(id);\n }\n\n if (backupId === LATEST_BACKUP_FILENAME) {\n console.log('Reverting backup');\n\n // If reverting back to the latest, copy and delete the latest\n // backup\n await fs.copyFile(\n fs.join(budgetDir, LATEST_BACKUP_FILENAME),\n fs.join(budgetDir, 'db.sqlite')\n );\n await fs.copyFile(\n fs.join(budgetDir, 'metadata.latest.json'),\n fs.join(budgetDir, 'metadata.json')\n );\n await fs.removeFile(fs.join(budgetDir, LATEST_BACKUP_FILENAME));\n await fs.removeFile(fs.join(budgetDir, 'metadata.latest.json'));\n\n // Re-upload the new file\n try {\n await cloudStorage.upload();\n } catch (e) {}\n prefs.unloadPrefs();\n } else {\n console.log('Loading backup', backupId);\n\n // This function is only ever called when a budget isn't loaded,\n // so it's safe to load our prefs in. We need to forget about any\n // syncing data if we are loading a backup (the current sync data\n // will be restored if the user reverts to the original version)\n await prefs.loadPrefs(id);\n await prefs.savePrefs({\n groupId: null,\n lastSyncedTimestamp: null,\n lastUploaded: null\n });\n\n // Re-upload the new file\n try {\n await cloudStorage.upload();\n } catch (e) {}\n\n prefs.unloadPrefs();\n\n await fs.copyFile(\n fs.join(budgetDir, 'backups', backupId),\n fs.join(budgetDir, 'db.sqlite')\n );\n }\n}\n\nexport function startBackupService(id) {\n if (serviceInterval) {\n clearInterval(serviceInterval);\n }\n\n // Make a backup every 15 minutes\n serviceInterval = setInterval(async () => {\n console.log('Making backup');\n await makeBackup(id);\n }, 1000 * 60 * 15);\n}\n\nexport function stopBackupService() {\n clearInterval(serviceInterval);\n serviceInterval = null;\n}\n","import * as monthUtils from '../../shared/months';\nimport * as db from '../db';\nimport { batchMessages } from '../sync';\nimport { groupBySingle } from '../../shared/util';\nimport * as prefs from '../prefs';\nimport * as sheet from '../sheet';\n\nasync function getSheetValue(sheetName, cell) {\n const node = await sheet.getCell(sheetName, cell);\n return typeof node.value === 'number' ? node.value : 0;\n}\n\n// We want to only allow the positive movement of money back and\n// forth. buffered should never be allowed to go into the negative,\n// and you shouldn't be allowed to pull non-existant money from\n// leftover.\nfunction calcBufferedAmount(toBudget, buffered, amount) {\n amount = Math.min(Math.max(amount, -buffered), Math.max(toBudget, 0));\n return buffered + amount;\n}\n\nfunction getBudgetTable() {\n let { budgetType } = prefs.getPrefs() || {};\n return budgetType === 'report' ? 'reflect_budgets' : 'zero_budgets';\n}\n\nfunction isReflectBudget() {\n let { budgetType } = prefs.getPrefs();\n return budgetType === 'report';\n}\n\nfunction isZeroBudget() {\n let { budgetType } = prefs.getPrefs();\n return budgetType === 'rollover';\n}\n\nfunction dbMonth(month) {\n return parseInt(month.replace('-', ''));\n}\n\nfunction getBudgetData(table, month) {\n return db.all(\n `\n SELECT b.*, c.is_income FROM v_categories c\n LEFT JOIN ${table} b ON b.category = c.id\n WHERE c.tombstone = 0 AND b.month = ?\n `,\n [month]\n );\n}\n\nfunction getAllMonths(startMonth) {\n let { createdMonths } = sheet.get().meta();\n let latest = null;\n for (let month of createdMonths) {\n if (latest == null || month > latest) {\n latest = month;\n }\n }\n return monthUtils.rangeInclusive(startMonth, latest);\n}\n\n// TODO: Valid month format in all the functions below\n\nexport function getBudget({ category, month }) {\n let table = getBudgetTable();\n let existing = db.firstSync(\n `SELECT * FROM ${table} WHERE month = ? AND category = ?`,\n [dbMonth(month), category]\n );\n return existing ? existing.amount || 0 : 0;\n}\n\nexport function setBudget({ category, month, amount }) {\n if (typeof amount !== 'number') {\n amount = 0;\n }\n const table = getBudgetTable();\n\n let existing = db.firstSync(\n `SELECT id FROM ${table} WHERE month = ? AND category = ?`,\n [dbMonth(month), category]\n );\n if (existing) {\n return db.update(table, { id: existing.id, amount });\n }\n return db.insert(table, {\n id: `${dbMonth(month)}-${category}`,\n month: dbMonth(month),\n category,\n amount\n });\n}\n\nexport function setBuffer(month, amount) {\n let existing = db.firstSync(\n `SELECT id FROM zero_budget_months WHERE id = ?`,\n [month]\n );\n if (existing) {\n return db.update('zero_budget_months', {\n id: existing.id,\n buffered: amount\n });\n }\n return db.insert('zero_budget_months', { id: month, buffered: amount });\n}\n\nfunction setCarryover(table, category, month, flag) {\n let existing = db.firstSync(\n `SELECT id FROM ${table} WHERE month = ? AND category = ?`,\n [month, category]\n );\n if (existing) {\n return db.update(table, { id: existing.id, carryover: flag ? 1 : 0 });\n }\n return db.insert(table, {\n id: `${month}-${category}`,\n month,\n category,\n carryover: flag ? 1 : 0\n });\n}\n\n// Actions\n\nexport async function copyPreviousMonth({ month }) {\n let prevMonth = dbMonth(monthUtils.prevMonth(month));\n let table = getBudgetTable();\n let budgetData = await getBudgetData(table, prevMonth);\n\n await batchMessages(() => {\n budgetData.forEach(prevBudget => {\n if (prevBudget.is_income === 1 && !isReflectBudget()) {\n return;\n }\n setBudget({\n category: prevBudget.category,\n month,\n amount: prevBudget.amount\n });\n });\n });\n}\n\nexport async function setZero({ month }) {\n let categories = await db.all(\n 'SELECT * FROM v_categories WHERE tombstone = 0'\n );\n\n await batchMessages(() => {\n categories.forEach(cat => {\n if (cat.is_income === 1 && !isReflectBudget()) {\n return;\n }\n setBudget({ category: cat.id, month, amount: 0 });\n });\n });\n}\n\nexport async function set3MonthAvg({ month }) {\n let categories = await db.all(\n 'SELECT * FROM v_categories WHERE tombstone = 0'\n );\n\n let prevMonth1 = monthUtils.prevMonth(month);\n let prevMonth2 = monthUtils.prevMonth(prevMonth1);\n let prevMonth3 = monthUtils.prevMonth(prevMonth2);\n\n await batchMessages(async () => {\n for (let cat of categories) {\n if (cat.is_income === 1 && !isReflectBudget()) {\n continue;\n }\n\n let spent1 = await getSheetValue(\n monthUtils.sheetForMonth(prevMonth1),\n 'sum-amount-' + cat.id\n );\n let spent2 = await getSheetValue(\n monthUtils.sheetForMonth(prevMonth2),\n 'sum-amount-' + cat.id\n );\n let spent3 = await getSheetValue(\n monthUtils.sheetForMonth(prevMonth3),\n 'sum-amount-' + cat.id\n );\n\n const avg = ((spent1 + spent2 + spent3) / 3) | 0;\n setBudget({ category: cat.id, month, amount: -avg });\n }\n });\n}\n\nexport async function setAllFuture({ startMonth }) {\n if (!isReflectBudget()) {\n throw new Error('setAllFuture only applies to report budget type');\n }\n let table = getBudgetTable();\n let budgetData = await getBudgetData(table, dbMonth(startMonth));\n let months = getAllMonths(monthUtils.addMonths(startMonth, 1));\n\n batchMessages(() => {\n for (let month of months) {\n budgetData.forEach(budget => {\n if (budget.is_income === 1 && !isReflectBudget()) {\n return;\n }\n setBudget({ category: budget.category, month, amount: budget.amount });\n });\n }\n });\n}\n\nexport async function holdForNextMonth({ month, amount }) {\n let row = await db.first(\n 'SELECT buffered FROM zero_budget_months WHERE id = ?',\n [month]\n );\n\n let sheetName = monthUtils.sheetForMonth(month);\n let toBudget = await getSheetValue(sheetName, 'to-budget');\n\n if (toBudget > 0) {\n let bufferedAmount = calcBufferedAmount(\n toBudget,\n (row && row.buffered) || 0,\n amount\n );\n\n await setBuffer(month, bufferedAmount);\n return true;\n }\n return false;\n}\n\nexport async function holdForFutureMonths({ startMonth, amount }) {\n let months = getAllMonths(startMonth);\n\n await batchMessages(async () => {\n for (let month of months) {\n if (!(await holdForNextMonth({ month, amount }))) {\n break;\n }\n }\n });\n}\n\nexport async function resetHold({ month }) {\n await setBuffer(month, 0);\n}\n\nexport async function coverOverspending({ month, to, from }) {\n let sheetName = monthUtils.sheetForMonth(month);\n let toBudgeted = await getSheetValue(sheetName, 'budget-' + to);\n let leftover = await getSheetValue(sheetName, 'leftover-' + to);\n let leftoverFrom = await getSheetValue(\n sheetName,\n from === 'to-be-budgeted' ? 'to-budget' : 'leftover-' + from\n );\n\n if (leftover >= 0 || leftoverFrom <= 0) {\n return;\n }\n\n let amountCovered = Math.min(-leftover, leftoverFrom);\n\n // If we are covering it from the to be budgeted amount, ignore this\n if (from !== 'to-be-budgeted') {\n const fromBudgeted = await getSheetValue(sheetName, 'budget-' + from);\n await setBudget({\n category: from,\n month,\n amount: fromBudgeted - amountCovered\n });\n }\n\n await setBudget({ category: to, month, amount: toBudgeted + amountCovered });\n}\n\nexport async function transferAvailable({ month, amount, category }) {\n let sheetName = monthUtils.sheetForMonth(month);\n let leftover = await getSheetValue(sheetName, 'to-budget');\n amount = Math.max(Math.min(amount, leftover), 0);\n\n let budgeted = await getSheetValue(sheetName, 'budget-' + category);\n await setBudget({ category, month, amount: budgeted + amount });\n}\n\nexport async function transferCategory({ month, amount, from, to }) {\n const sheetName = monthUtils.sheetForMonth(month);\n const fromBudgeted = await getSheetValue(sheetName, 'budget-' + from);\n\n await setBudget({ category: from, month, amount: fromBudgeted - amount });\n\n // If we are simply moving it back into available cash to budget,\n // don't do anything else\n if (to !== 'to-be-budgeted') {\n const toBudgeted = await getSheetValue(sheetName, 'budget-' + to);\n await setBudget({ category: to, month, amount: toBudgeted + amount });\n }\n}\n\nexport async function setCategoryCarryover({ startMonth, category, flag }) {\n let table = getBudgetTable();\n let months = getAllMonths(startMonth);\n\n await batchMessages(() => {\n for (let month of months) {\n setCarryover(table, category, dbMonth(month), flag);\n }\n });\n}\n","import { createApp } from '../app';\nimport { mutator } from '../mutators';\nimport { undoable } from '../undo';\nimport * as actions from './actions';\n\n\nlet app = createApp();\n\napp.method('budget/budget-amount', mutator(undoable(actions.setBudget)));\napp.method(\n 'budget/copy-previous-month',\n mutator(undoable(actions.copyPreviousMonth))\n);\napp.method('budget/set-zero', mutator(undoable(actions.setZero)));\napp.method('budget/set-3month-avg', mutator(undoable(actions.set3MonthAvg)));\napp.method('budget/set-all-future', mutator(undoable(actions.setAllFuture)));\napp.method(\n 'budget/hold-for-next-month',\n mutator(undoable(actions.holdForNextMonth))\n);\napp.method(\n 'budget/hold-for-future-months',\n mutator(undoable(actions.holdForFutureMonths))\n);\napp.method('budget/reset-hold', mutator(undoable(actions.resetHold)));\napp.method(\n 'budget/cover-overspending',\n mutator(undoable(actions.coverOverspending))\n);\napp.method(\n 'budget/transfer-available',\n mutator(undoable(actions.transferAvailable))\n);\napp.method(\n 'budget/transfer-category',\n mutator(undoable(actions.transferCategory))\n);\napp.method(\n 'budget/set-carryover',\n mutator(undoable(actions.setCategoryCarryover))\n);\n\nexport default app;\n","import * as sheet from '../sheet';\nimport * as db from '../db';\nimport * as monthUtils from '../../shared/months';\nimport { getChangedValues } from '../../shared/util';\nimport { resolveName } from '../spreadsheet/util';\nimport * as report from './report';\nimport * as rollover from './rollover';\nimport { sumAmounts } from './util';\nimport * as budgetActions from '../budget/actions';\n\nfunction mergeUpdates(updates) {\n const merged = {};\n updates.forEach(update => {\n Object.keys(update).forEach(sheet => {\n if (merged[sheet]) {\n merged[sheet] = { ...merged[sheet], ...update[sheet] };\n } else {\n merged[sheet] = update[sheet];\n }\n });\n });\n return merged;\n}\n\nexport function getBudgetType() {\n let meta = sheet.get().meta();\n return meta.budgetType || 'rollover';\n}\n\nexport function getBudgetRange(start, end) {\n start = monthUtils.getMonth(start);\n end = monthUtils.getMonth(end);\n\n // The start date should never be after the end date. If that\n // happened, the month range might be a valid range and weird\n // things happen\n if (start > end) {\n start = end;\n }\n\n // Budgets should exist 3 months before the earliest needed date\n // (either the oldest transaction or the current month if no\n // transactions yet), and a year from the current date. There's no\n // need to ever have budgets outside that range.\n start = monthUtils.subMonths(start, 3);\n end = monthUtils.addMonths(end, 12);\n\n return { start, end, range: monthUtils.rangeInclusive(start, end) };\n}\n\nfunction createCategory(cat, sheetName, prevSheetName, start, end) {\n sheet.get().createDynamic(sheetName, 'sum-amount-' + cat.id, {\n initialValue: 0,\n run: () => {\n // Making this sync is faster!\n let rows = db.runQuery(\n `SELECT SUM(amount) as amount FROM v_transactions_internal_alive t\n LEFT JOIN accounts a ON a.id = t.account\n WHERE t.date >= ${start} AND t.date <= ${end}\n AND category = '${cat.id}' AND a.offbudget = 0`,\n [],\n true\n );\n let row = rows[0];\n let amount = row ? row.amount : 0;\n return amount || 0;\n }\n });\n\n if (getBudgetType() === 'rollover') {\n rollover.createCategory(cat, sheetName, prevSheetName);\n } else {\n report.createCategory(cat, sheetName, prevSheetName);\n }\n}\n\nfunction createCategoryGroup(group, sheetName) {\n sheet.get().createDynamic(sheetName, 'group-sum-amount-' + group.id, {\n initialValue: 0,\n dependencies: group.categories.map(cat => `sum-amount-${cat.id}`),\n run: sumAmounts\n });\n\n if (!group.is_income || getBudgetType() !== 'rollover') {\n sheet.get().createDynamic(sheetName, 'group-budget-' + group.id, {\n initialValue: 0,\n dependencies: group.categories.map(cat => `budget-${cat.id}`),\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'group-leftover-' + group.id, {\n initialValue: 0,\n dependencies: group.categories.map(cat => `leftover-${cat.id}`),\n run: sumAmounts\n });\n }\n}\n\nfunction handleAccountChange(months, oldValue, newValue) {\n if (!oldValue || oldValue.offbudget !== newValue.offbudget) {\n let rows = db.runQuery(\n `\n SELECT DISTINCT(category) as category FROM transactions\n WHERE acct = ?\n `,\n [newValue.id],\n true\n );\n\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, getBudgetType());\n\n rows.forEach(row => {\n sheet\n .get()\n .recompute(resolveName(sheetName, 'sum-amount-' + row.category));\n });\n });\n }\n}\n\nfunction handleTransactionChange(transaction, changedFields) {\n if (\n (changedFields.has('date') ||\n changedFields.has('acct') ||\n changedFields.has('amount') ||\n changedFields.has('category') ||\n changedFields.has('tombstone') ||\n changedFields.has('isParent')) &&\n transaction.date &&\n transaction.category\n ) {\n let month = monthUtils.monthFromDate(db.fromDateRepr(transaction.date));\n let sheetName = monthUtils.sheetForMonth(month, getBudgetType());\n\n sheet\n .get()\n .recompute(resolveName(sheetName, 'sum-amount-' + transaction.category));\n }\n}\n\nfunction handleCategoryMappingChange(months, oldValue, newValue) {\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, getBudgetType());\n if (oldValue) {\n sheet\n .get()\n .recompute(resolveName(sheetName, 'sum-amount-' + oldValue.transferId));\n }\n sheet\n .get()\n .recompute(resolveName(sheetName, 'sum-amount-' + newValue.transferId));\n });\n}\n\nfunction handleCategoryChange(months, oldValue, newValue) {\n function addDeps(sheetName, groupId, catId) {\n sheet\n .get()\n .addDependencies(sheetName, `group-sum-amount-${groupId}`, [\n `sum-amount-${catId}`\n ]);\n sheet\n .get()\n .addDependencies(sheetName, `group-budget-${groupId}`, [\n `budget-${catId}`\n ]);\n sheet\n .get()\n .addDependencies(sheetName, `group-leftover-${groupId}`, [\n `leftover-${catId}`\n ]);\n }\n\n function removeDeps(sheetName, groupId, catId) {\n sheet\n .get()\n .removeDependencies(sheetName, `group-sum-amount-${groupId}`, [\n `sum-amount-${catId}`\n ]);\n sheet\n .get()\n .removeDependencies(sheetName, `group-budget-${groupId}`, [\n `budget-${catId}`\n ]);\n sheet\n .get()\n .removeDependencies(sheetName, `group-leftover-${groupId}`, [\n `leftover-${catId}`\n ]);\n }\n\n let budgetType = getBudgetType();\n\n if (oldValue && oldValue.tombstone === 0 && newValue.tombstone === 1) {\n let id = newValue.id;\n let groupId = newValue.cat_group;\n\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month);\n removeDeps(sheetName, groupId, id);\n });\n } else if (\n newValue.tombstone === 0 &&\n (!oldValue || oldValue.tombstone === 1)\n ) {\n if (budgetType === 'rollover') {\n rollover.createBlankCategory(newValue, months);\n }\n\n months.forEach(month => {\n let prevMonth = monthUtils.prevMonth(month);\n let prevSheetName = monthUtils.sheetForMonth(prevMonth, budgetType);\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n let { start, end } = monthUtils.bounds(month);\n\n createCategory(newValue, sheetName, prevSheetName, start, end);\n\n let id = newValue.id;\n let groupId = newValue.cat_group;\n\n if (getBudgetType() === 'rollover') {\n sheet\n .get()\n .addDependencies(sheetName, 'last-month-overspent', [\n `${prevSheetName}!leftover-${id}`,\n `${prevSheetName}!carryover-${id}`\n ]);\n }\n\n addDeps(sheetName, groupId, id);\n });\n } else if (oldValue && oldValue.cat_group !== newValue.cat_group) {\n // The category moved so we need to update the dependencies\n let id = newValue.id;\n\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n removeDeps(sheetName, oldValue.cat_group, id);\n addDeps(sheetName, newValue.cat_group, id);\n });\n }\n}\n\nfunction handleCategoryGroupChange(months, oldValue, newValue) {\n let budgetType = getBudgetType();\n\n function addDeps(sheetName, groupId) {\n sheet\n .get()\n .addDependencies(sheetName, 'total-budgeted', [\n `group-budget-${groupId}`\n ]);\n sheet\n .get()\n .addDependencies(sheetName, 'total-spent', [\n `group-sum-amount-${groupId}`\n ]);\n sheet\n .get()\n .addDependencies(sheetName, 'total-leftover', [\n `group-leftover-${groupId}`\n ]);\n }\n\n function removeDeps(sheetName, groupId) {\n sheet\n .get()\n .removeDependencies(sheetName, 'total-budgeted', [\n `group-budget-${groupId}`\n ]);\n sheet\n .get()\n .removeDependencies(sheetName, 'total-spent', [\n `group-sum-amount-${groupId}`\n ]);\n sheet\n .get()\n .removeDependencies(sheetName, 'total-leftover', [\n `group-leftover-${groupId}`\n ]);\n }\n\n if (newValue.tombstone === 1 && oldValue && oldValue.tombstone === 0) {\n let id = newValue.id;\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n removeDeps(sheetName, id);\n });\n } else if (\n newValue.tombstone === 0 &&\n (!oldValue || oldValue.tombstone === 1)\n ) {\n let group = newValue;\n\n if (!group.is_income || budgetType !== 'rollover') {\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n\n // Dirty, dirty hack. These functions should not be async, but this is\n // OK because we're leveraging the sync nature of queries. Ideally we\n // wouldn't be querying here. But I think we have to. At least for now\n // we do\n let categories = db.runQuery(\n 'SELECT * FROM categories WHERE tombstone = 0 AND cat_group = ?',\n [group.id],\n true\n );\n createCategoryGroup({ ...group, categories }, sheetName);\n\n addDeps(sheetName, group.id);\n });\n }\n }\n}\n\nfunction handleBudgetMonthChange(budget) {\n let sheetName = monthUtils.sheetForMonth(budget.id);\n sheet.get().set(`${sheetName}!buffered`, budget.buffered);\n}\n\nfunction handleBudgetChange(budget) {\n if (budget.category) {\n let sheetName = monthUtils.sheetForMonth(budget.month.toString());\n sheet\n .get()\n .set(`${sheetName}!budget-${budget.category}`, budget.amount || 0);\n sheet\n .get()\n .set(\n `${sheetName}!carryover-${budget.category}`,\n budget.carryover === 1 ? true : false\n );\n }\n}\n\nexport function triggerBudgetChanges(oldValues, newValues) {\n let { createdMonths = new Set() } = sheet.get().meta();\n sheet.startTransaction();\n\n try {\n newValues.forEach((items, table) => {\n let old = oldValues.get(table);\n\n items.forEach(newValue => {\n let oldValue = old && old.get(newValue.id);\n\n if (table === 'zero_budget_months') {\n handleBudgetMonthChange(newValue);\n } else if (table === 'zero_budgets' || table === 'reflect_budgets') {\n handleBudgetChange(newValue);\n } else if (table === 'transactions') {\n let changed = new Set(\n Object.keys(getChangedValues(oldValue || {}, newValue) || {})\n );\n\n if (oldValue) {\n handleTransactionChange(oldValue, changed);\n }\n handleTransactionChange(newValue, changed);\n } else if (table === 'category_mapping') {\n handleCategoryMappingChange(createdMonths, oldValue, newValue);\n } else if (table === 'categories') {\n handleCategoryChange(createdMonths, oldValue, newValue);\n } else if (table === 'category_groups') {\n handleCategoryGroupChange(createdMonths, oldValue, newValue);\n } else if (table === 'accounts') {\n handleAccountChange(createdMonths, oldValue, newValue);\n }\n });\n });\n } finally {\n sheet.endTransaction();\n }\n}\n\nexport async function doTransfer(categoryIds, transferId) {\n let { createdMonths: months } = sheet.get().meta();\n\n [...months].map(month => {\n let totalValue = categoryIds\n .map(id => {\n return budgetActions.getBudget({ month, category: id });\n })\n .reduce((total, value) => total + value, 0);\n\n let transferValue = budgetActions.getBudget({\n month,\n category: transferId\n });\n\n budgetActions.setBudget({\n month,\n category: transferId,\n amount: totalValue + transferValue\n });\n });\n}\n\nexport async function createBudget(months) {\n const categories = await db.getCategories();\n const groups = await db.getCategoriesGrouped();\n\n sheet.startTransaction();\n let meta = sheet.get().meta();\n meta.createdMonths = meta.createdMonths || new Set();\n\n let budgetType = getBudgetType();\n\n if (budgetType === 'rollover') {\n rollover.createBudget(meta, categories, months);\n }\n\n months.forEach(month => {\n if (!meta.createdMonths.has(month)) {\n let prevMonth = monthUtils.prevMonth(month);\n let { start, end } = monthUtils.bounds(month);\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n let prevSheetName = monthUtils.sheetForMonth(prevMonth, budgetType);\n\n categories.forEach(cat => {\n createCategory(cat, sheetName, prevSheetName, start, end);\n });\n groups.forEach(group => {\n createCategoryGroup(group, sheetName);\n });\n\n if (budgetType === 'rollover') {\n rollover.createSummary(groups, categories, prevSheetName, sheetName);\n } else {\n report.createSummary(groups, categories, sheetName);\n }\n\n meta.createdMonths.add(month);\n }\n });\n\n sheet.get().setMeta(meta);\n sheet.endTransaction();\n\n // Wait for the spreadsheet to finish computing. Normally this won't\n // do anything (as values are cached) but on first run this need to\n // show the loading screen while it initially sets up.\n await sheet.waitOnSpreadsheet();\n}\n\nexport async function createAllBudgets() {\n let earliestTransaction = await db.first(\n 'SELECT * FROM transactions WHERE isChild=0 AND date IS NOT NULL ORDER BY date ASC LIMIT 1'\n );\n let earliestDate =\n earliestTransaction && db.fromDateRepr(earliestTransaction.date);\n let currentMonth = monthUtils.currentMonth();\n\n // Get the range based off of the earliest transaction and the\n // current month. If no transactions currently exist the current\n // month is also used as the starting month\n let { start, end, range } = getBudgetRange(\n earliestDate || currentMonth,\n currentMonth\n );\n\n let meta = sheet.get().meta();\n let createdMonths = meta.createdMonths || new Set();\n let newMonths = range.filter(m => !createdMonths.has(m));\n\n if (newMonths.length > 0) {\n await createBudget(range);\n }\n\n return { start, end };\n}\n\nexport async function setType(type) {\n let meta = sheet.get().meta();\n if (type === meta.budgetType) {\n return;\n }\n\n meta.budgetType = type;\n meta.createdMonths = new Set();\n\n // Go through and force all the cells to be recomputed\n let nodes = sheet.get().getNodes();\n db.transaction(() => {\n for (let name of nodes.keys()) {\n let [sheetName, cellName] = name.split('!');\n if (sheetName.match(/^budget\\d+/)) {\n sheet.get().deleteCell(sheetName, cellName);\n }\n }\n });\n\n sheet.get().startCacheBarrier();\n sheet.loadUserBudgets(db);\n let bounds = await createAllBudgets();\n sheet.get().endCacheBarrier();\n\n return bounds;\n}\n","import * as sheet from '../sheet';\nimport * as monthUtils from '../../shared/months';\nimport { number, sumAmounts } from './util';\nconst { resolveName } = require('../spreadsheet/util');\n\nexport async function createCategory(cat, sheetName, prevSheetName) {\n sheet.get().createStatic(sheetName, `budget-${cat.id}`, 0);\n\n // This makes the app more robust by \"fixing up\" null budget values.\n // Those should not be allowed, but in case somehow a null value\n // ends up there, we are resilient to it. Preferrably the\n // spreadsheet would have types and be more strict about what is\n // allowed to be set.\n if (sheet.get().getCellValue(sheetName, `budget-${cat.id}`) == null) {\n sheet.get().set(resolveName(sheetName, `budget-${cat.id}`), 0);\n }\n\n sheet.get().createDynamic(sheetName, `leftover-${cat.id}`, {\n initialValue: 0,\n dependencies: [\n `budget-${cat.id}`,\n `sum-amount-${cat.id}`,\n `${prevSheetName}!carryover-${cat.id}`,\n `${prevSheetName}!leftover-${cat.id}`\n ],\n run: (budgeted, sumAmount, prevCarryover, prevLeftover) => {\n if (cat.is_income) {\n return (\n number(budgeted) -\n number(sumAmount) +\n (prevCarryover ? number(prevLeftover) : 0)\n );\n }\n\n return (\n number(budgeted) +\n number(sumAmount) +\n (prevCarryover ? number(prevLeftover) : 0)\n );\n }\n });\n sheet.get().createDynamic(sheetName, `spent-with-carryover-${cat.id}`, {\n initialValue: 0,\n dependencies: [\n `budget-${cat.id}`,\n `sum-amount-${cat.id}`,\n `carryover-${cat.id}`\n ],\n // TODO: Why refresh??\n refresh: true,\n run: (budgeted, sumAmount, carryover) => {\n return carryover\n ? Math.max(0, number(budgeted) + number(sumAmount))\n : sumAmount;\n }\n });\n\n sheet.get().createStatic(sheetName, `carryover-${cat.id}`, false);\n}\n\nexport function createSummary(groups, categories, sheetName) {\n let incomeGroup = groups.filter(group => group.is_income)[0];\n let expenseCategories = categories.filter(cat => !cat.is_income);\n\n sheet.get().createDynamic(sheetName, 'total-budgeted', {\n initialValue: 0,\n dependencies: groups\n .filter(group => !group.is_income)\n .map(group => `group-budget-${group.id}`),\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'total-spent', {\n initialValue: 0,\n refresh: true,\n dependencies: expenseCategories.map(\n cat => `${sheetName}!spent-with-carryover-${cat.id}`\n ),\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'total-income', {\n initialValue: 0,\n dependencies: [`group-sum-amount-${incomeGroup.id}`],\n run: amount => amount\n });\n\n sheet.get().createDynamic(sheetName, 'total-leftover', {\n initialValue: 0,\n dependencies: ['total-budgeted', 'total-spent'],\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'total-budget-income', {\n initialValue: 0,\n dependencies: [`group-budget-${incomeGroup.id}`],\n run: amount => amount\n });\n\n sheet.get().createDynamic(sheetName, 'total-saved', {\n initialValue: 0,\n dependencies: ['total-budget-income', 'total-budgeted'],\n run: (income, budgeted) => {\n return income - budgeted;\n }\n });\n\n sheet.get().createDynamic(sheetName, 'real-saved', {\n initialValue: 0,\n dependencies: ['total-income', 'total-spent'],\n run: (income, spent) => {\n return income - -spent;\n }\n });\n}\n","import * as sheet from '../sheet';\nimport * as monthUtils from '../../shared/months';\nimport { number, sumAmounts, flatten2, unflatten2 } from './util';\nconst { resolveName } = require('../spreadsheet/util');\n\nfunction getBlankSheet(months) {\n let blankMonth = monthUtils.prevMonth(months[0]);\n return monthUtils.sheetForMonth(blankMonth, 'rollover');\n}\n\nexport function createBlankCategory(cat, months) {\n if (months.length > 0) {\n let sheetName = getBlankSheet(months);\n sheet.get().createStatic(sheetName, `carryover-${cat.id}`, false);\n sheet.get().createStatic(sheetName, `leftover-${cat.id}`, 0);\n sheet.get().createStatic(sheetName, `leftover-pos-${cat.id}`, 0);\n }\n}\n\nfunction createBlankMonth(categories, sheetName, months) {\n sheet.get().createStatic(sheetName, 'is-blank', true);\n sheet.get().createStatic(sheetName, 'to-budget', 0);\n sheet.get().createStatic(sheetName, 'buffered', 0);\n\n categories.forEach(cat => createBlankCategory(cat, months));\n}\n\nexport function createCategory(cat, sheetName, prevSheetName) {\n if (!cat.is_income) {\n sheet.get().createStatic(sheetName, `budget-${cat.id}`, 0);\n\n // This makes the app more robust by \"fixing up\" null budget values.\n // Those should not be allowed, but in case somehow a null value\n // ends up there, we are resilient to it. Preferrably the\n // spreadsheet would have types and be more strict about what is\n // allowed to be set.\n if (sheet.get().getCellValue(sheetName, `budget-${cat.id}`) == null) {\n sheet.get().set(resolveName(sheetName, `budget-${cat.id}`), 0);\n }\n\n sheet.get().createStatic(sheetName, `carryover-${cat.id}`, false);\n\n sheet.get().createDynamic(sheetName, `leftover-${cat.id}`, {\n initialValue: 0,\n dependencies: [\n `budget-${cat.id}`,\n `sum-amount-${cat.id}`,\n `${prevSheetName}!carryover-${cat.id}`,\n `${prevSheetName}!leftover-${cat.id}`,\n `${prevSheetName}!leftover-pos-${cat.id}`\n ],\n run: (budgeted, spent, prevCarryover, prevLeftover, prevLeftoverPos) => {\n return (\n number(budgeted) +\n number(spent) +\n (prevCarryover ? number(prevLeftover) : number(prevLeftoverPos))\n );\n }\n });\n\n sheet.get().createDynamic(sheetName, 'leftover-pos-' + cat.id, {\n initialValue: 0,\n dependencies: [`leftover-${cat.id}`],\n run: leftover => {\n return leftover < 0 ? 0 : leftover;\n }\n });\n }\n}\n\nexport function createSummary(groups, categories, prevSheetName, sheetName) {\n let incomeGroup = groups.filter(group => group.is_income)[0];\n let expenseCategories = categories.filter(cat => !cat.is_income);\n\n sheet.get().createStatic(sheetName, 'buffered', 0);\n\n sheet.get().createDynamic(sheetName, 'from-last-month', {\n initialValue: 0,\n dependencies: [`${prevSheetName}!to-budget`, `${prevSheetName}!buffered`],\n run: (toBudget, buffered) => number(toBudget) + number(buffered)\n });\n\n // Alias the group income total to `total-income`\n sheet.get().createDynamic(sheetName, 'total-income', {\n initialValue: 0,\n dependencies: [`group-sum-amount-${incomeGroup.id}`],\n run: amount => amount\n });\n\n sheet.get().createDynamic(sheetName, 'available-funds', {\n initialValue: 0,\n dependencies: ['total-income', 'from-last-month'],\n run: (income, fromLastMonth) => number(income) + number(fromLastMonth)\n });\n\n sheet.get().createDynamic(sheetName, 'last-month-overspent', {\n initialValue: 0,\n dependencies: flatten2(\n expenseCategories.map(cat => [\n `${prevSheetName}!leftover-${cat.id}`,\n `${prevSheetName}!carryover-${cat.id}`\n ])\n ),\n run: (...data) => {\n data = unflatten2(data);\n return data.reduce((total, [leftover, carryover]) => {\n if (carryover) {\n return total;\n }\n return total + Math.min(0, number(leftover));\n }, 0);\n }\n });\n\n sheet.get().createDynamic(sheetName, 'total-budgeted', {\n initialValue: 0,\n dependencies: groups\n .filter(group => !group.is_income)\n .map(group => `group-budget-${group.id}`),\n run: (...amounts) => {\n // Negate budgeted amount\n return -sumAmounts(...amounts);\n }\n });\n\n sheet.get().createDynamic(sheetName, 'buffered', { initialValue: 0 });\n\n sheet.get().createDynamic(sheetName, 'to-budget', {\n initialValue: 0,\n dependencies: [\n 'available-funds',\n 'last-month-overspent',\n 'total-budgeted',\n 'buffered'\n ],\n run: (available, lastOverspent, totalBudgeted, buffered) => {\n return (\n number(available) +\n number(lastOverspent) +\n number(totalBudgeted) -\n number(buffered)\n );\n }\n });\n\n sheet.get().createDynamic(sheetName, 'total-spent', {\n initialValue: 0,\n dependencies: groups\n .filter(group => !group.is_income)\n .map(group => `group-sum-amount-${group.id}`),\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'total-leftover', {\n initialValue: 0,\n dependencies: groups\n .filter(group => !group.is_income)\n .map(group => `group-leftover-${group.id}`),\n run: sumAmounts\n });\n}\n\nexport function createBudget(meta, categories, months) {\n // The spreadsheet is now strict - so we need to fill in some\n // default values for the month before the first month. Only do this\n // if it doesn't already exist\n let blankSheet = getBlankSheet(months);\n if (meta.blankSheet !== blankSheet) {\n sheet.get().clearSheet(meta.blankSheet);\n createBlankMonth(categories, blankSheet, months);\n meta.blankSheet = blankSheet;\n }\n}\n","import { number } from '../spreadsheet/globals';\n\nexport { number } from '../spreadsheet/globals';\n\nexport function sumAmounts(...amounts) {\n return amounts.reduce((total, amount) => {\n return total + number(amount);\n }, 0);\n}\n\nexport function flatten2(arr) {\n return Array.prototype.concat.apply([], arr);\n}\n\nexport function unflatten2(arr) {\n let res = [];\n for (let i = 0; i < arr.length; i += 2) {\n res.push([arr[i], arr[i + 1]]);\n }\n return res;\n}\n\n","import fs from '../platform/server/fs';\nimport asyncStorage from '../platform/server/asyncStorage';\nimport { fetch } from '../platform/server/fetch';\nimport * as monthUtils from '../shared/months';\nimport * as sqlite from '../platform/server/sqlite';\nimport * as prefs from './prefs';\nimport { getServer } from './server-config';\nimport { runMutator } from './mutators';\nimport {\n HTTPError,\n PostError,\n FileDownloadError,\n FileUploadError\n} from './errors';\nimport encryption from './encryption';\nimport { post } from './post';\nlet uuid = require('../platform/uuid');\nlet AdmZip = require('adm-zip');\n\nlet UPLOAD_FREQUENCY_IN_DAYS = 7;\n\nasync function checkHTTPStatus(res) {\n if (res.status !== 200) {\n return res.text().then(str => {\n throw new HTTPError(res.status, str);\n });\n } else {\n return res;\n }\n}\n\nasync function fetchJSON(...args) {\n let res = await fetch(...args);\n res = await checkHTTPStatus(res);\n return res.json();\n}\n\nexport async function checkKey() {\n let userToken = await asyncStorage.getItem('user-token');\n\n let { cloudFileId, encryptKeyId } = prefs.getPrefs();\n\n let res;\n try {\n res = await post(getServer().SYNC_SERVER + '/user-get-key', {\n token: userToken,\n fileId: cloudFileId\n });\n } catch (e) {\n console.log(e);\n return { error: { reason: 'network' } };\n }\n\n // This == comparison is important, they could be null or undefined\n // eslint-disable-next-line\n return {\n valid:\n res.id == encryptKeyId && // eslint-disable-line\n (encryptKeyId == null || encryption.hasKey(encryptKeyId))\n };\n}\n\nexport async function resetSyncState(newKeyState) {\n let userToken = await asyncStorage.getItem('user-token');\n\n let { cloudFileId } = prefs.getPrefs();\n\n if (process.env.IS_BETA) {\n return { error: { reason: 'beta-version' } };\n }\n\n try {\n await post(getServer().SYNC_SERVER + '/reset-user-file', {\n token: userToken,\n fileId: cloudFileId\n });\n } catch (e) {\n if (e instanceof PostError) {\n return {\n error: {\n reason: e.reason === 'unauthorized' ? 'unauthorized' : 'network'\n }\n };\n }\n return { error: { reason: 'internal' } };\n }\n\n if (newKeyState) {\n try {\n await post(getServer().SYNC_SERVER + '/user-create-key', {\n token: userToken,\n fileId: cloudFileId,\n keyId: newKeyState.key.getId(),\n keySalt: newKeyState.salt,\n testContent: newKeyState.testContent\n });\n } catch (e) {\n if (e instanceof PostError) {\n return { error: { reason: 'network' } };\n }\n return { error: { reason: 'internal' } };\n }\n }\n\n return {};\n}\n\nexport async function exportBuffer() {\n let { id, budgetName } = prefs.getPrefs();\n if (!budgetName) {\n return null;\n }\n\n let budgetDir = fs.getBudgetDir(id);\n\n // create zip\n let zipped = new AdmZip();\n\n // We run this in a mutator even though its not mutating anything\n // because we are reading the sqlite file from disk. We want to make\n // sure that we get a valid snapshot of it so we want this to be\n // serialized with all other mutations.\n await runMutator(async () => {\n let rawDbContent = await fs.readFile(\n fs.join(budgetDir, 'db.sqlite'),\n 'binary'\n );\n\n // Do some post-processing of the database. We NEVER upload the cache with\n // the database; this forces new downloads to always recompute everything\n // which is not only safer, but reduces the filesize a lot.\n let memDb = await sqlite.openDatabase(rawDbContent);\n sqlite.execQuery(\n memDb,\n `\n DELETE FROM kvcache;\n DELETE FROM kvcache_key;\n `\n );\n\n let dbContent = sqlite.exportDatabase(memDb);\n sqlite.closeDatabase(memDb);\n\n // mark it as a file that needs a new clock so when a new client\n // downloads it, it'll get set to a unique node\n let meta = JSON.parse(\n await fs.readFile(fs.join(budgetDir, 'metadata.json'))\n );\n\n meta.resetClock = true;\n let metaContent = Buffer.from(JSON.stringify(meta), 'utf8');\n\n zipped.addFile('db.sqlite', dbContent);\n zipped.addFile('metadata.json', metaContent);\n });\n\n return Buffer.from(zipped.toBuffer());\n}\n\nexport async function importBuffer(fileData, buffer) {\n let zipped = new AdmZip(buffer);\n let entries = zipped.getEntries();\n let dbEntry = entries.find(e => e.entryName.includes('db.sqlite'));\n let metaEntry = entries.find(e => e.entryName.includes('metadata.json'));\n\n if (!dbEntry || !metaEntry) {\n throw FileDownloadError('invalid-zip-file');\n }\n\n let dbContent = zipped.readFile(dbEntry);\n let metaContent = zipped.readFile(metaEntry);\n\n let meta;\n try {\n meta = JSON.parse(metaContent.toString('utf8'));\n } catch (err) {\n throw FileDownloadError('invalid-meta-file');\n }\n\n // Update the metadata. The stored file on the server might be\n // out-of-date with a few keys\n meta = {\n ...meta,\n cloudFileId: fileData.fileId,\n groupId: fileData.groupId,\n lastUploaded: monthUtils.currentDay(),\n encryptKeyId: fileData.encryptMeta ? fileData.encryptMeta.keyId : null\n };\n\n let budgetDir = fs.getBudgetDir(meta.id);\n\n if (await fs.exists(budgetDir)) {\n // Don't remove the directory so that backups are retained\n let dbFile = fs.join(budgetDir, 'db.sqlite');\n let metaFile = fs.join(budgetDir, 'metadata.json');\n\n if (await fs.exists(dbFile)) {\n await fs.removeFile(dbFile);\n }\n if (await fs.exists(metaFile)) {\n await fs.removeFile(metaFile);\n }\n } else {\n await fs.mkdir(budgetDir);\n }\n\n await fs.writeFile(fs.join(budgetDir, 'db.sqlite'), dbContent);\n await fs.writeFile(fs.join(budgetDir, 'metadata.json'), JSON.stringify(meta));\n\n return { id: meta.id };\n}\n\nexport async function upload() {\n let userToken = await asyncStorage.getItem('user-token');\n if (!userToken) {\n throw FileUploadError('unauthorized');\n }\n\n // We never change the server from the beta version\n if (process.env.IS_BETA) {\n throw FileUploadError('beta-version');\n }\n\n let zipContent = await exportBuffer();\n if (zipContent == null) {\n return;\n }\n\n let { id, groupId, budgetName, cloudFileId, encryptKeyId } = prefs.getPrefs();\n let uploadContent = zipContent;\n let uploadMeta = null;\n\n // The upload process encrypts with the key tagged in the prefs for\n // the file. It will upload the file and the server is responsible\n // for checking that the key is up-to-date and rejecting it if not\n if (encryptKeyId) {\n let encrypted;\n try {\n encrypted = await encryption.encrypt(zipContent, encryptKeyId);\n } catch (e) {\n throw FileUploadError('encrypt-failure', {\n isMissingKey: e.message === 'missing-key'\n });\n }\n uploadContent = encrypted.value;\n uploadMeta = encrypted.meta;\n }\n\n if (!cloudFileId) {\n cloudFileId = uuid.v4Sync();\n }\n\n let res;\n try {\n res = await fetchJSON(getServer().SYNC_SERVER + '/upload-user-file', {\n method: 'POST',\n headers: {\n 'Content-Length': uploadContent.length,\n 'Content-Type': 'application/encrypted-file',\n 'X-ACTUAL-TOKEN': userToken,\n 'X-ACTUAL-FILE-ID': cloudFileId,\n 'X-ACTUAL-NAME': encodeURIComponent(budgetName),\n 'X-ACTUAL-FORMAT': 2,\n ...(uploadMeta\n ? { 'X-ACTUAL-ENCRYPT-META': JSON.stringify(uploadMeta) }\n : null),\n ...(groupId ? { 'X-ACTUAL-GROUP-ID': groupId } : null)\n },\n body: uploadContent\n });\n } catch (err) {\n console.log('Upload failure', err);\n\n let reason = err instanceof PostError ? err.reason : 'network';\n\n if (err instanceof PostError) {\n throw new FileUploadError(\n err.reason === 'unauthorized' ? 'unauthorized' : err.reason || 'network'\n );\n }\n\n throw FileUploadError('internal');\n }\n\n if (res.status === 'ok') {\n // Only save it if we are still working on the same file\n if (prefs.getPrefs() && prefs.getPrefs().id === id) {\n await prefs.savePrefs({\n lastUploaded: monthUtils.currentDay(),\n cloudFileId,\n groupId: res.groupId\n });\n }\n } else {\n throw FileUploadError('internal');\n }\n}\n\nexport async function possiblyUpload() {\n let { cloudFileId, groupId, lastUploaded, id } = prefs.getPrefs();\n\n let threshold =\n lastUploaded && monthUtils.addDays(lastUploaded, UPLOAD_FREQUENCY_IN_DAYS);\n let currentDay = monthUtils.currentDay();\n\n // We only want to try to upload every UPLOAD_FREQUENCY_IN_DAYS days\n if (lastUploaded && currentDay < threshold) {\n return;\n }\n\n // We only want to upload existing cloud files that are part of a\n // valid group\n if (!cloudFileId || !groupId) {\n return;\n }\n\n // Don't block on uploading\n upload().catch(err => {});\n}\n\nexport async function removeFile(fileId) {\n const [[, userToken]] = await asyncStorage.multiGet(['user-token']);\n\n await post(getServer().SYNC_SERVER + '/delete-user-file', {\n token: userToken,\n fileId\n });\n}\n\nexport async function listRemoteFiles() {\n let userToken = await asyncStorage.getItem('user-token');\n if (!userToken) {\n return null;\n }\n\n let res;\n try {\n res = await fetchJSON(getServer().SYNC_SERVER + '/list-user-files', {\n headers: {\n 'X-ACTUAL-TOKEN': userToken\n }\n });\n } catch (e) {\n console.log('Error', e);\n return null;\n }\n\n if (res.status === 'error') {\n return null;\n }\n\n return res.data.map(file => ({\n ...file,\n hasKey: encryption.hasKey(file.encryptKeyId)\n }));\n}\n\nexport async function download(fileId, replace) {\n let userToken = await asyncStorage.getItem('user-token');\n\n let buffer;\n try {\n buffer = await fetch(getServer().SYNC_SERVER + '/download-user-file', {\n headers: {\n 'X-ACTUAL-TOKEN': userToken,\n 'X-ACTUAL-FILE-ID': fileId\n }\n })\n .then(checkHTTPStatus)\n .then(res => {\n if (res.arrayBuffer) {\n return res.arrayBuffer().then(ab => Buffer.from(ab));\n }\n return res.buffer();\n });\n } catch (err) {\n console.log('Download failure', err);\n throw FileDownloadError('download-failure');\n }\n\n let res;\n try {\n res = await fetchJSON(getServer().SYNC_SERVER + '/get-user-file-info', {\n headers: {\n 'X-ACTUAL-TOKEN': userToken,\n 'X-ACTUAL-FILE-ID': fileId\n }\n });\n } catch (err) {\n throw FileDownloadError('internal', { fileId });\n }\n\n if (res.status !== 'ok') {\n throw FileDownloadError('internal', { fileId });\n }\n let fileData = res.data;\n\n // The download process checks if the server gave us decrypt\n // information. It is assumed that this key has already been loaded\n // in, which is done in a previous step\n if (fileData.encryptMeta) {\n try {\n buffer = await encryption.decrypt(buffer, fileData.encryptMeta);\n } catch (e) {\n throw FileDownloadError('decrypt-failure', {\n isMissingKey: e.message === 'missing-key'\n });\n }\n }\n\n return importBuffer(fileData, buffer, replace);\n}\n","import LRU from 'lru-cache';\nimport * as sqlite from '../../platform/server/sqlite';\nimport fs from '../../platform/server/fs';\nimport { sendMessages, batchMessages } from '../sync';\nimport { schema, schemaConfig } from '../aql/schema';\nimport {\n accountModel,\n categoryModel,\n categoryGroupModel,\n payeeModel,\n payeeRuleModel\n} from '../models';\nimport { groupById } from '../../shared/util';\nimport Timestamp, {\n makeClock,\n setClock,\n serializeClock,\n deserializeClock,\n makeClientId\n} from '../timestamp';\nimport {\n convertForInsert,\n convertForUpdate,\n convertFromSelect\n} from '../aql/schema-helpers';\nimport { shoveSortOrders, SORT_INCREMENT } from './sort';\n\nexport { toDateRepr, fromDateRepr } from '../models';\n\nconst uuid = require('../../platform/uuid');\n\nlet dbPath;\nlet db;\n\n// Util\n\nexport function getDatabasePath() {\n return dbPath;\n}\n\nexport async function openDatabase(id) {\n if (db) {\n await sqlite.closeDatabase(db);\n }\n\n dbPath = fs.join(fs.getBudgetDir(id), 'db.sqlite');\n setDatabase(await sqlite.openDatabase(dbPath));\n\n // await execQuery('PRAGMA journal_mode = WAL');\n}\n\nexport async function reopenDatabase() {\n await sqlite.closeDatabase(db);\n setDatabase(await sqlite.openDatabase(dbPath));\n}\n\nexport async function closeDatabase() {\n if (db) {\n await sqlite.closeDatabase(db);\n setDatabase(null);\n }\n}\n\nexport function setDatabase(db_) {\n db = db_;\n resetQueryCache();\n}\n\nexport function getDatabase() {\n return db;\n}\n\nexport async function loadClock() {\n let row = await first('SELECT * FROM messages_clock');\n if (row) {\n let clock = deserializeClock(row.clock);\n setClock(clock);\n } else {\n // No clock exists yet (first run of the app), so create a default\n // one.\n let timestamp = new Timestamp(0, 0, makeClientId());\n let clock = makeClock(timestamp);\n setClock(clock);\n\n await runQuery('INSERT INTO messages_clock (id, clock) VALUES (?, ?)', [\n 1,\n serializeClock(clock)\n ]);\n }\n}\n\n// Functions\n\nexport function runQuery(sql, params, fetchAll) {\n // const unrecord = perf.record('sqlite');\n const result = sqlite.runQuery(db, sql, params, fetchAll);\n // unrecord();\n return result;\n}\n\nexport function execQuery(sql) {\n sqlite.execQuery(db, sql);\n}\n\n// This manages an LRU cache of prepared query statements. This is\n// only needed in hot spots when you are running lots of queries.\nlet _queryCache = new LRU({ max: 100 });\nexport function cache(sql) {\n let cached = _queryCache.get(sql);\n if (cached) {\n return cached;\n }\n\n let prepared = sqlite.prepare(db, sql);\n _queryCache.set(sql, prepared);\n return prepared;\n}\n\nfunction resetQueryCache() {\n _queryCache = new LRU({ max: 100 });\n}\n\nexport function transaction(fn) {\n return sqlite.transaction(db, fn);\n}\n\nexport function asyncTransaction(fn) {\n return sqlite.asyncTransaction(db, fn);\n}\n\n// This function is marked as async because `runQuery` is no longer\n// async. We return a promise here until we've audited all the code to\n// make sure nothing calls `.then` on this.\nexport async function all(sql, params) {\n return runQuery(sql, params, true);\n}\n\nexport async function first(sql, params) {\n const arr = await runQuery(sql, params, true);\n return arr.length === 0 ? null : arr[0];\n}\n\n// The underlying sql system is now sync, but we can't update `first` yet\n// without auditing all uses of it\nexport function firstSync(sql, params) {\n const arr = runQuery(sql, params, true);\n return arr.length === 0 ? null : arr[0];\n}\n\n// This function is marked as async because `runQuery` is no longer\n// async. We return a promise here until we've audited all the code to\n// make sure nothing calls `.then` on this.\nexport async function run(sql, params) {\n return runQuery(sql, params);\n}\n\nexport async function select(table, id) {\n const rows = await runQuery(\n 'SELECT * FROM ' + table + ' WHERE id = ?',\n [id],\n true\n );\n return rows[0];\n}\n\nexport async function update(table, params) {\n let fields = Object.keys(params).filter(k => k !== 'id');\n\n if (params.id == null) {\n throw new Error('update: id is required');\n }\n\n await sendMessages(\n fields.map(k => {\n return {\n dataset: table,\n row: params.id,\n column: k,\n value: params[k],\n timestamp: Timestamp.send()\n };\n })\n );\n}\n\nexport async function insertWithUUID(table, row) {\n if (!row.id) {\n row = { ...row, id: uuid.v4Sync() };\n }\n\n await insert(table, row);\n\n // We can't rely on the return value of insert because if the\n // primary key is text, sqlite returns the internal row id which we\n // don't care about. We want to return the generated UUID.\n return row.id;\n}\n\nexport async function insert(table, row) {\n let fields = Object.keys(row).filter(k => k !== 'id');\n\n if (row.id == null) {\n throw new Error('insert: id is required');\n }\n\n await sendMessages(\n fields.map(k => {\n return {\n dataset: table,\n row: row.id,\n column: k,\n value: row[k],\n timestamp: Timestamp.send()\n };\n })\n );\n}\n\nexport async function delete_(table, id) {\n await sendMessages([\n {\n dataset: table,\n row: id,\n column: 'tombstone',\n value: 1,\n timestamp: Timestamp.send()\n }\n ]);\n}\n\nexport async function selectWithSchema(table, sql, params) {\n let rows = await runQuery(sql, params, true);\n return rows\n .map(row => convertFromSelect(schema, schemaConfig, table, row))\n .filter(Boolean);\n}\n\nexport async function selectFirstWithSchema(table, sql, params) {\n let rows = await selectWithSchema(table, sql, params);\n return rows.length > 0 ? rows[0] : null;\n}\n\nexport function insertWithSchema(table, row) {\n // Even though `insertWithUUID` does this, we need to do it here so\n // the schema validation passes\n if (!row.id) {\n row = { ...row, id: uuid.v4Sync() };\n }\n\n return insertWithUUID(\n table,\n convertForInsert(schema, schemaConfig, table, row)\n );\n}\n\nexport function updateWithSchema(table, fields) {\n return update(table, convertForUpdate(schema, schemaConfig, table, fields));\n}\n\n// Data-specific functions. Ideally this would be split up into\n// different files\n\nexport async function getCategories() {\n return all(`\n SELECT c.* FROM categories c\n LEFT JOIN category_groups cg ON c.cat_group = cg.id\n WHERE c.tombstone = 0\n ORDER BY cg.sort_order, cg.id, c.sort_order, c.id\n `);\n}\n\nexport async function getCategoriesGrouped() {\n const groups = await all(\n 'SELECT * FROM category_groups WHERE tombstone = 0 ORDER BY is_income, sort_order, id'\n );\n const rows = await all(`\n SELECT * FROM categories WHERE tombstone = 0\n ORDER BY sort_order, id\n `);\n\n return groups.map(group => {\n return {\n ...group,\n categories: rows.filter(row => row.cat_group === group.id)\n };\n });\n}\n\nexport async function insertCategoryGroup(group) {\n const lastGroup = await first(`\n SELECT sort_order FROM category_groups WHERE tombstone = 0 ORDER BY sort_order DESC, id DESC LIMIT 1\n `);\n const sort_order = (lastGroup ? lastGroup.sort_order : 0) + SORT_INCREMENT;\n\n group = {\n ...categoryGroupModel.validate(group),\n sort_order: sort_order\n };\n return insertWithUUID('category_groups', group);\n}\n\nexport function updateCategoryGroup(group) {\n group = categoryGroupModel.validate(group, { update: true });\n return update('category_groups', group);\n}\n\nexport async function moveCategoryGroup(id, targetId) {\n const groups = await all(\n `SELECT id, sort_order FROM category_groups WHERE tombstone = 0 ORDER BY sort_order, id`\n );\n\n const { updates, sort_order } = shoveSortOrders(groups, targetId);\n for (let info of updates) {\n await update('category_groups', info);\n }\n await update('category_groups', { id, sort_order });\n}\n\nexport async function deleteCategoryGroup(group, transferId) {\n const categories = await all('SELECT * FROM categories WHERE cat_group = ?', [\n group.id\n ]);\n\n // Delete all the categories within a group\n await Promise.all(categories.map(cat => deleteCategory(cat, transferId)));\n await delete_('category_groups', group.id);\n}\n\nexport async function insertCategory(category, { atEnd } = {}) {\n let sort_order;\n\n let id_;\n await batchMessages(async () => {\n if (atEnd) {\n const lastCat = await first(`\n SELECT sort_order FROM categories WHERE tombstone = 0 ORDER BY sort_order DESC, id DESC LIMIT 1\n `);\n sort_order = (lastCat ? lastCat.sort_order : 0) + SORT_INCREMENT;\n } else {\n // Unfortunately since we insert at the beginning, we need to shove\n // the sort orders to make sure there's room for it\n const categories = await all(\n `SELECT id, sort_order FROM categories WHERE cat_group = ? AND tombstone = 0 ORDER BY sort_order, id`,\n [category.cat_group]\n );\n\n const { updates, sort_order: order } = shoveSortOrders(\n categories,\n categories.length > 0 ? categories[0].id : null\n );\n for (let info of updates) {\n await update('categories', info);\n }\n sort_order = order;\n }\n\n category = {\n ...categoryModel.validate(category),\n sort_order: sort_order\n };\n\n const id = await insertWithUUID('categories', category);\n // Create an entry in the mapping table that points it to itself\n await insert('category_mapping', { id, transferId: id });\n id_ = id;\n });\n return id_;\n}\n\nexport function updateCategory(category) {\n category = categoryModel.validate(category, { update: true });\n return update('categories', category);\n}\n\nexport async function moveCategory(id, groupId, targetId) {\n if (!groupId) {\n throw new Error('moveCategory: groupId is required');\n }\n\n const categories = await all(\n `SELECT id, sort_order FROM categories WHERE cat_group = ? AND tombstone = 0 ORDER BY sort_order, id`,\n [groupId]\n );\n\n const { updates, sort_order } = shoveSortOrders(categories, targetId);\n for (let info of updates) {\n await update('categories', info);\n }\n await update('categories', { id, sort_order, cat_group: groupId });\n}\n\nexport async function deleteCategory(category, transferId) {\n if (transferId) {\n // We need to update all the deleted categories that currently\n // point to the one we're about to delete so they all are\n // \"forwarded\" to the new transferred category.\n const existingTransfers = await all(\n 'SELECT * FROM category_mapping WHERE transferId = ?',\n [category.id]\n );\n for (let mapping of existingTransfers) {\n await update('category_mapping', { id: mapping.id, transferId });\n }\n\n // Finally, map the category we're about to delete to the new one\n await update('category_mapping', { id: category.id, transferId });\n }\n\n return delete_('categories', category.id);\n}\n\nexport async function getPayee(id) {\n return first(`SELECT * FROM payees WHERE id = ?`, [id]);\n}\n\nexport async function insertPayee(payee) {\n payee = payeeModel.validate(payee);\n let id;\n await batchMessages(async () => {\n id = await insertWithUUID('payees', payee);\n await insert('payee_mapping', { id, targetId: id });\n });\n return id;\n}\n\nexport async function deletePayee(payee) {\n let { transfer_acct } = await first('SELECT * FROM payees WHERE id = ?', [\n payee.id\n ]);\n if (transfer_acct) {\n // You should never be able to delete transfer payees\n return;\n }\n\n // let mappings = await all('SELECT id FROM payee_mapping WHERE targetId = ?', [\n // payee.id\n // ]);\n // await Promise.all(\n // mappings.map(m => update('payee_mapping', { id: m.id, targetId: null }))\n // );\n\n let rules = await all('SELECT * FROM payee_rules WHERE payee_id = ?', [\n payee.id\n ]);\n await Promise.all(rules.map(rule => deletePayeeRule({ id: rule.id })));\n return delete_('payees', payee.id);\n}\n\nexport async function deleteTransferPayee(payee) {\n // This allows deleting transfer payees\n return delete_('payees', payee.id);\n}\n\nexport function updatePayee(payee) {\n payee = payeeModel.validate(payee, { update: true });\n return update('payees', payee);\n}\n\nexport async function mergePayees(target, ids) {\n // Load in payees so we can check some stuff\n let payees = groupById(await all('SELECT * FROM payees'));\n\n // Filter out any transfer payees\n if (payees[target].transfer_acct != null) {\n return;\n }\n ids = ids.filter(id => payees[id].transfer_acct == null);\n\n await batchMessages(async () => {\n await Promise.all(\n ids.map(async id => {\n let mappings = await all(\n 'SELECT id FROM payee_mapping WHERE targetId = ?',\n [id]\n );\n await Promise.all(\n mappings.map(m =>\n update('payee_mapping', { id: m.id, targetId: target })\n )\n );\n })\n );\n\n return Promise.all(\n ids.map(id =>\n Promise.all([\n update('payee_mapping', { id, targetId: target }),\n delete_('payees', id)\n ])\n )\n );\n });\n}\n\nexport function getPayees() {\n return all(`\n SELECT p.*, COALESCE(a.name, p.name) AS name FROM payees p\n LEFT JOIN accounts a ON (p.transfer_acct = a.id AND a.tombstone = 0)\n WHERE p.tombstone = 0 AND (p.transfer_acct IS NULL OR a.id IS NOT NULL)\n ORDER BY p.transfer_acct IS NULL DESC, p.name COLLATE NOCASE\n `);\n}\n\nexport async function getOrphanedPayees() {\n let rows = await all(`\n SELECT p.id FROM payees p\n LEFT JOIN payee_mapping pm ON pm.id = p.id\n LEFT JOIN v_transactions_internal_alive t ON t.payee = pm.targetId\n WHERE p.tombstone = 0 AND p.transfer_acct IS NULL AND t.id IS NULL\n `);\n return rows.map(row => row.id);\n}\n\nexport async function getPayeeByName(name) {\n return first(`SELECT * FROM payees WHERE LOWER(name) = ? AND tombstone = 0`, [\n name.toLowerCase()\n ]);\n}\n\nexport function insertPayeeRule(rule) {\n rule = payeeRuleModel.validate(rule);\n return insertWithUUID('payee_rules', rule);\n}\n\nexport function deletePayeeRule(rule) {\n return delete_('payee_rules', rule.id);\n}\n\nexport function updatePayeeRule(rule) {\n rule = payeeModel.validate(rule, { update: true });\n return update('payee_rules', rule);\n}\n\nexport function getPayeeRules(id) {\n return all(\n `SELECT pr.* FROM payee_rules pr\n LEFT JOIN payee_mapping pm ON pm.id = pr.payee_id\n WHERE pm.targetId = ? AND pr.tombstone = 0`,\n [id]\n );\n}\n\nexport function getAccounts() {\n return all(\n `SELECT a.*, b.name as bankName, b.id as bankId FROM accounts a\n LEFT JOIN banks b ON a.bank = b.id\n WHERE a.tombstone = 0\n ORDER BY sort_order, name`\n );\n}\n\nexport async function insertAccount(account) {\n // Default to checking. Makes it a lot easier for tests and is\n // generally harmless.\n if (account.type === undefined) {\n account = { ...account, type: 'checking' };\n }\n\n const accounts = await all(\n 'SELECT * FROM accounts WHERE offbudget = ? ORDER BY sort_order, name',\n [account.offbudget != null ? account.offbudget : 0]\n );\n\n // Don't pass a target in, it will default to appending at the end\n let { sort_order } = shoveSortOrders(accounts);\n\n account = accountModel.validate({ ...account, sort_order });\n return insertWithUUID('accounts', account);\n}\n\nexport function updateAccount(account) {\n account = accountModel.validate(account, { update: true });\n return update('accounts', account);\n}\n\nexport function deleteAccount(account) {\n return delete_('accounts', account.id);\n}\n\nexport async function moveAccount(id, targetId) {\n let account = await first('SELECT * FROM accounts WHERE id = ?', [id]);\n let accounts;\n if (account.closed) {\n accounts = await all(\n `SELECT id, sort_order FROM accounts WHERE closed = 1 ORDER BY sort_order, name`\n );\n } else {\n accounts = await all(\n `SELECT id, sort_order FROM accounts WHERE tombstone = 0 AND offbudget = ? ORDER BY sort_order, name`,\n [account.offbudget]\n );\n }\n\n const { updates, sort_order } = shoveSortOrders(accounts, targetId);\n await batchMessages(() => {\n for (let info of updates) {\n update('accounts', info);\n }\n update('accounts', { id, sort_order });\n });\n}\n\nexport async function getTransaction(id) {\n let rows = await selectWithSchema(\n 'transactions',\n 'SELECT * FROM v_transactions WHERE id = ?',\n [id]\n );\n return rows[0];\n}\n\nfunction _addFragmentForAccount(accountId, addWhere, options = {}) {\n let { showClosed = false, showOffbudget = true } = options;\n\n let fragment = addWhere ? ' WHERE (' : ' AND ';\n let params = [];\n\n if (accountId) {\n if (accountId === 'offbudget') {\n fragment += 'a.closed = 0 AND a.offbudget = 1 ';\n } else if (accountId === 'budgeted') {\n fragment += 'a.closed = 0 AND a.offbudget = 0 ';\n } else if (accountId === 'uncategorized') {\n fragment += `\n t.category IS NULL AND a.offbudget = 0 AND isParent = 0 AND (\n ta.offbudget IS NULL OR ta.offbudget = 1\n )\n `;\n } else {\n fragment += 'a.id = ? ';\n params.push(accountId);\n }\n } else {\n fragment += showClosed ? '1' : 'a.closed = 0';\n\n if (!showOffbudget) {\n fragment += ' AND a.offbudget = 0';\n }\n }\n\n return { fragment, params };\n}\n\nexport async function getTransactionsByDate(\n accountId,\n startDate,\n endDate,\n options = {}\n) {\n throw new Error('`getTransactionsByDate` is deprecated');\n}\n\nexport async function getTransactions(accountId, arg2) {\n if (arg2 !== undefined) {\n throw new Error(\n '`getTransactions` was given a second argument, it now only takes a single argument `accountId`'\n );\n }\n\n return selectWithSchema(\n 'transactions',\n 'SELECT * FROM v_transactions WHERE account = ?',\n [accountId]\n );\n}\n\nexport function insertTransaction(transaction) {\n return insertWithSchema('transactions', transaction);\n}\n\nexport function updateTransaction(transaction) {\n return updateWithSchema('transactions', transaction);\n}\n\nexport async function deleteTransaction(transaction) {\n return delete_('transactions', transaction.id);\n}\n","import * as db from './index';\nimport { addSyncListener } from '../sync/index';\n\n// This file keeps all the mappings in memory so we can access it\n// synchronously. This is primarily used in the rules system, but\n// there may be other uses in the future. You don't need to worry\n// about this generally; if you are querying transactions, ids are\n// transparently mapped for you. But if you are building something\n// that stores ids and later uses them, you need to remember to map\n// the ids.\n//\n// IMPORTANT: `loadMappings` must be called first before other modules\n// that listen for sync changes. This must be the first sync listener\n// to run in case other listeners use this mapping table; otherwise\n// they might see stale mappings.\n\nlet allMappings;\nlet unlistenSync;\n\nexport async function loadMappings() {\n // The mappings are separated into tables specific to the type of\n // data. But you know, we really could keep a global mapping table.\n let categories = (await db.all('SELECT * FROM category_mapping')).map(r => [\n r.id,\n r.transferId\n ]);\n let payees = (await db.all('SELECT * FROM payee_mapping')).map(r => [\n r.id,\n r.targetId\n ]);\n\n // All ids are unique, so we can just keep a global table of mappings\n allMappings = new Map(categories.concat(payees));\n\n if (unlistenSync) {\n unlistenSync();\n }\n unlistenSync = addSyncListener(onApplySync);\n}\n\nfunction onApplySync(oldValues, newValues) {\n newValues.forEach((items, table) => {\n if (table.indexOf('mapping') !== -1) {\n let field = table === 'category_mapping' ? 'transferId' : 'targetId';\n\n items.forEach(newValue => {\n allMappings.set(newValue.id, newValue[field]);\n });\n }\n });\n}\n\nexport function getMappings() {\n return allMappings;\n}\n\nexport function getMapping(id) {\n return allMappings.get(id) || null;\n}\n","export const SORT_INCREMENT = 16384;\n\nfunction midpoint(items, to) {\n const below = items[to - 1];\n const above = items[to];\n\n if (!below) {\n return above.sort_order / 2;\n } else if (!above) {\n return below.sort_order + SORT_INCREMENT;\n } else {\n return (below.sort_order + above.sort_order) / 2;\n }\n}\n\nexport function shoveSortOrders(items, targetId) {\n const to = items.findIndex(item => item.id === targetId);\n const target = items[to];\n const before = items[to - 1];\n let updates = [];\n\n // If no target is specified, append at the end\n if (!targetId || to === -1) {\n let order;\n if (items.length > 0) {\n // Add a new increment to whatever is the latest sort order\n order = items[items.length - 1].sort_order + SORT_INCREMENT;\n } else {\n // If no items exist, the default is to use the first increment\n order = SORT_INCREMENT;\n }\n\n return { updates, sort_order: order };\n } else {\n if (target.sort_order - (before ? before.sort_order : 0) <= 2) {\n let next = to;\n let order = (items[next].sort_order | 0) + SORT_INCREMENT;\n while (next < items.length) {\n // No need to update it if it's already greater than the current\n // order. This can happen because there may already be large\n // gaps\n if (order <= items[next].sort_order) {\n break;\n }\n\n updates.push({ id: items[next].id, sort_order: order });\n\n next++;\n order += SORT_INCREMENT;\n }\n }\n\n return { updates, sort_order: midpoint(items, to) };\n }\n}\n","export async function incrFetch(\n runQuery,\n terms,\n compare,\n makeQuery,\n params = []\n) {\n let pageCount = 500;\n let results = [];\n\n let fetchedIds = new Set();\n\n for (let i = 0; i < terms.length; i += pageCount) {\n let slice = terms.slice(i, i + pageCount).filter(id => !fetchedIds.has(id));\n if (slice.length > 0) {\n let filter = slice.map(id => compare(id)).join(' OR ');\n let query = makeQuery('(' + filter + ')');\n\n let rows = await runQuery(query, params, true);\n fetchedIds = new Set([...fetchedIds, ...slice]);\n results = results.concat(rows);\n }\n }\n\n return results;\n}\n\nexport function whereIn(ids, field) {\n let ids2 = [...new Set(ids)];\n let filter = `${field} IN (` + ids2.map(id => `'${id}'`).join(',') + ')';\n return filter;\n}\n","let crypto = require('crypto');\n\nlet ENCRYPTION_ALGORITHM = 'aes-256-gcm';\n\nexport async function sha256String(str) {\n return crypto\n .createHash('sha256')\n .update(str)\n .digest('base64');\n}\n\nexport function randomBytes(n) {\n return crypto.randomBytes(n);\n}\n\nexport function encrypt(masterKey, value) {\n let masterKeyBuffer = masterKey.getValue().raw;\n // let iv = createKeyBuffer({ numBytes: 12, secret: masterKeyBuffer });\n let iv = crypto.randomBytes(12);\n let cipher = crypto.createCipheriv(ENCRYPTION_ALGORITHM, masterKeyBuffer, iv);\n let encrypted = cipher.update(value);\n encrypted = Buffer.concat([encrypted, cipher.final()]);\n\n let authTag = cipher.getAuthTag();\n\n return {\n value: encrypted,\n meta: {\n keyId: masterKey.getId(),\n algorithm: ENCRYPTION_ALGORITHM,\n iv: iv.toString('base64'),\n authTag: authTag.toString('base64')\n }\n };\n}\n\nexport function decrypt(masterKey, encrypted, meta) {\n let masterKeyBuffer = masterKey.getValue().raw;\n let { algorithm, iv, authTag } = meta;\n iv = Buffer.from(iv, 'base64');\n\n authTag = Buffer.from(authTag, 'base64');\n\n let decipher = crypto.createDecipheriv(algorithm, masterKeyBuffer, iv);\n decipher.setAuthTag(authTag);\n\n let decrypted = decipher.update(encrypted);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted;\n}\n\nexport function createKey({ secret, salt }) {\n let buffer = createKeyBuffer({ secret, salt });\n return {\n raw: buffer,\n base64: buffer.toString('base64')\n };\n}\n\nexport function importKey(str) {\n return {\n raw: Buffer.from(str, 'base64'),\n base64: str\n };\n}\n\n/**\n * Generates a Buffer of a desired byte length to be used as either an encryption key or an initialization vector.\n *\n * @private\n * @param {Integer} [numBytes = 32] - Optional, number of bytes to fill the Buffer with.\n * @param {String} [secret = <random bytes>] - Optional, a secret to use as a basis for the key generation algorithm.\n * @returns {Buffer}\n */\nfunction createKeyBuffer({ numBytes, secret, salt }) {\n return crypto.pbkdf2Sync(\n secret || crypto.randomBytes(128).toString('base64'),\n salt || crypto.randomBytes(32).toString('base64'),\n 10000,\n numBytes || 32,\n 'sha512'\n );\n}\n","import * as internals from './encryption-internals';\nlet uuid = require('../platform/uuid/index.electron.js');\n\n// A map of all possible master encryption keys to use, keyed by\n// unique id\nlet keys = {};\n\nclass Key {\n constructor({ id, value }) {\n this.id = id || uuid.v4Sync();\n }\n\n async createFromPassword({ password, salt }) {\n this.value = await internals.createKey({ secret: password, salt });\n }\n\n async createFromBase64(str) {\n this.value = await internals.importKey(str);\n }\n\n getId() {\n return this.id;\n }\n\n getValue() {\n return this.value;\n }\n\n serialize() {\n return {\n id: this.id,\n base64: this.value.base64\n };\n }\n}\n\nfunction getKey(keyId) {\n if (keyId == null || keys[keyId] == null) {\n throw new Error('missing-key');\n }\n return keys[keyId];\n}\n\nfunction hasKey(keyId) {\n return keyId in keys;\n}\n\nfunction encrypt(value, keyId) {\n return internals.encrypt(getKey(keyId), value);\n}\n\nfunction decrypt(encrypted, meta) {\n return internals.decrypt(getKey(meta.keyId), encrypted, meta);\n}\n\nfunction randomBytes(n) {\n return internals.randomBytes(n);\n}\n\nasync function loadKey(key) {\n let keyInstance;\n if (!(key instanceof Key)) {\n keyInstance = new Key({ id: key.id });\n await keyInstance.createFromBase64(key.base64);\n } else {\n keyInstance = key;\n }\n\n keys[keyInstance.getId()] = keyInstance;\n}\n\nfunction unloadKey(key) {\n delete keys[key.getId()];\n}\n\nfunction unloadAllKeys() {\n keys = {};\n}\n\nasync function createKey({ id, password, salt }) {\n let key = new Key({ id });\n await key.createFromPassword({ password, salt });\n return key;\n}\n\nexport default {\n decrypt,\n encrypt,\n randomBytes,\n createKey,\n loadKey,\n getKey,\n hasKey,\n unloadKey,\n unloadAllKeys\n};\n","// TODO: normalize error types\nexport class PostError extends Error {\n constructor(reason, meta) {\n super('PostError: ' + reason);\n this.type = 'PostError';\n this.reason = reason;\n this.meta = meta;\n }\n}\n\nexport class HTTPError extends Error {\n constructor(code, body) {\n super(`HTTPError: unsuccessful status code (${code}): ${body}`);\n this.statusCode = code;\n this.responseBody = body;\n }\n}\n\nexport class SyncError extends Error {\n constructor(reason, meta) {\n super('SyncError: ' + reason);\n this.reason = reason;\n this.meta = meta;\n }\n}\n\nexport class TransactionError extends Error {\n // eslint-disable-next-line\n constructor(message) {\n super(message);\n }\n}\n\nexport class RuleError extends Error {\n constructor(type, message) {\n super('RuleError: ' + message);\n this.type = type;\n }\n}\n\nexport function APIError(msg, meta) {\n return { type: 'APIError', message: msg, meta };\n}\n\nexport function FileDownloadError(reason, meta) {\n return { type: 'FileDownloadError', reason, meta };\n}\n\nexport function FileUploadError(reason, meta) {\n return { type: 'FileUploadError', reason, meta };\n}\n\nexport function isCodeError(err) {\n return err instanceof ReferenceError || err instanceof SyntaxError;\n}\n","import { createApp } from './app';\nconst connection = require('../platform/server/connection');\n\n// Main app\nconst app = createApp();\n\napp.events.on('sync', info => {\n connection.send('sync-event', info);\n});\n\nexport default app;\n","import './polyfills';\nimport { differenceInDays } from 'date-fns';\nimport asyncStorage from '../platform/server/asyncStorage';\nimport { captureException, captureBreadcrumb } from '../platform/exceptions';\nimport * as prefs from './prefs';\nimport fs from '../platform/server/fs';\nimport * as sqlite from '../platform/server/sqlite';\nimport logger from '../platform/server/log';\nimport Platform from './platform';\nimport * as db from './db';\nimport * as sheet from './sheet';\nimport { withUndo, clearUndo, undo, redo } from './undo';\nimport { updateVersion } from './update';\nimport { Condition, Action, rankRules } from './accounts/rules';\nimport * as rules from './accounts/transaction-rules';\nimport * as mappings from './db/mappings';\nimport { batchUpdateTransactions } from './accounts/transactions';\nimport { FIELD_TYPES as ruleFieldTypes } from '../shared/rules';\nimport {\n getAvailableBackups,\n loadBackup,\n makeBackup,\n startBackupService,\n stopBackupService\n} from './backups';\nimport { amountToInteger, stringToInteger } from '../shared/util';\nimport * as monthUtils from '../shared/months';\nimport { fromPlaidAccountType } from '../shared/accounts';\nimport * as budget from './budget/base';\nimport * as bankSync from './accounts/sync';\nimport * as link from './accounts/link';\nimport { uniqueFileName, idFromFileName } from './util/budget-name';\nimport { mutator, runHandler } from './mutators';\nimport * as timestamp from './timestamp';\nimport * as merkle from './merkle';\nimport {\n initialFullSync,\n fullSync,\n batchMessages,\n setSyncingMode,\n makeTestMessage,\n clearFullSyncTimeout,\n syncAndReceiveMessages,\n resetSync,\n repairSync\n} from './sync';\nimport * as syncMigrations from './sync/migrate';\nimport { getStartingBalancePayee } from './accounts/payees';\nimport { parseFile } from './accounts/parse-file';\nimport { exportToCSV, exportQueryToCSV } from './accounts/export-to-csv';\nimport { getServer, setServer } from './server-config';\nimport installAPI from './api';\nimport injectAPI from '@actual-app/api/injected';\nimport * as cloudStorage from './cloud-storage';\nimport encryption from './encryption';\nimport * as tracking from './tracking/events';\nimport { get, post } from './post';\nimport { APIError, TransactionError, PostError, RuleError } from './errors';\nimport { createTestBudget } from '../mocks/budget';\nimport { runQuery as aqlQuery } from './aql/schema/run-query';\nimport { Query } from '../shared/query';\nimport q from '../shared/query';\nimport app from './main-app';\n\n// Apps\nimport schedulesApp from './schedules/app';\nimport budgetApp from './budget/app';\nimport notesApp from './notes/app';\nimport toolsApp from './tools/app';\n\nconst YNAB4 = require('@actual-app/import-ynab4/importer');\nconst YNAB5 = require('@actual-app/import-ynab5/importer');\nconst uuid = require('../platform/uuid');\nconst connection = require('../platform/server/connection');\nconst { resolveName, unresolveName } = require('./spreadsheet/util');\nconst SyncPb = require('./sync/proto/sync_pb');\n\n// let indexeddb = require('../platform/server/indexeddb');\n\nlet VERSION;\nlet DEMO_BUDGET_ID = '_demo-budget';\nlet TEST_BUDGET_ID = '_test-budget';\nlet UNCONFIGURED_SERVER = 'https://not-configured/';\n\n// util\n\nfunction onSheetChange({ names }) {\n const nodes = names.map(name => {\n let node = sheet.get()._getNode(name);\n return { name: node.name, value: node.value };\n });\n connection.send('cells-changed', nodes);\n}\n\n// handlers\n\nexport let handlers = {};\n\nhandlers['undo'] = mutator(async function() {\n return undo();\n});\n\nhandlers['redo'] = mutator(function() {\n return redo();\n});\n\nhandlers['transactions-batch-update'] = mutator(async function({\n added,\n deleted,\n updated,\n learnCategories\n}) {\n return withUndo(async () => {\n let result = await batchUpdateTransactions({\n added,\n updated,\n deleted,\n learnCategories\n });\n\n // Return all data updates to the frontend\n return result.updated;\n });\n});\n\nhandlers['transaction-add'] = mutator(async function(transaction) {\n await handlers['transactions-batch-update']({ added: [transaction] });\n return {};\n});\n\nhandlers['transaction-update'] = mutator(async function(transaction) {\n await handlers['transactions-batch-update']({ updated: [transaction] });\n return {};\n});\n\nhandlers['transaction-delete'] = mutator(async function(transaction) {\n await handlers['transactions-batch-update']({ deleted: [transaction] });\n return {};\n});\n\nhandlers['transactions-filter'] = async function({\n term,\n accountId,\n latestDate,\n count,\n notPaged,\n options = {}\n}) {\n return db.getTransactions(\n term,\n accountId,\n latestDate,\n notPaged ? null : count == null ? undefined : count,\n options\n );\n};\n\nhandlers['transactions-parse-file'] = async function({ filepath, options }) {\n return parseFile(filepath, options);\n};\n\nhandlers['transactions-export'] = async function({\n transactions,\n accounts,\n categoryGroups,\n payees\n}) {\n return exportToCSV(transactions, accounts, categoryGroups, payees);\n};\n\nhandlers['transactions-export-query'] = async function({ query: queryState }) {\n return exportQueryToCSV(new Query(queryState));\n};\n\nhandlers['get-categories'] = async function() {\n return {\n grouped: await db.getCategoriesGrouped(),\n list: await db.getCategories()\n };\n};\n\nhandlers['get-earliest-transaction'] = async function() {\n let { data } = await aqlQuery(\n q('transactions')\n .options({ splits: 'none' })\n .orderBy({ date: 'asc' })\n .select('*')\n .limit(1)\n );\n return data[0] || null;\n};\n\nhandlers['get-budget-bounds'] = async function() {\n return budget.createAllBudgets();\n};\n\nhandlers['rollover-budget-month'] = async function({ month }) {\n let groups = await db.getCategoriesGrouped();\n let sheetName = monthUtils.sheetForMonth(month);\n\n function value(name) {\n let v = sheet.getCellValue(sheetName, name);\n return { value: v === '' ? 0 : v, name: resolveName(sheetName, name) };\n }\n\n let values = [\n value('available-funds'),\n value('last-month-overspent'),\n value('buffered'),\n value('total-budgeted'),\n value('to-budget'),\n\n value('from-last-month'),\n value('total-income'),\n value('total-spent'),\n value('total-leftover')\n ];\n\n for (let group of groups) {\n if (group.is_income) {\n values.push(value('total-income'));\n\n for (let cat of group.categories) {\n values.push(value(`sum-amount-${cat.id}`));\n }\n } else {\n values = values.concat([\n value(`group-budget-${group.id}`),\n value(`group-sum-amount-${group.id}`),\n value(`group-leftover-${group.id}`)\n ]);\n\n for (let cat of group.categories) {\n values = values.concat([\n value(`budget-${cat.id}`),\n value(`sum-amount-${cat.id}`),\n value(`leftover-${cat.id}`),\n value(`carryover-${cat.id}`)\n ]);\n }\n }\n }\n\n return values;\n};\n\nhandlers['report-budget-month'] = async function({ month }) {\n let groups = await db.getCategoriesGrouped();\n let sheetName = monthUtils.sheetForMonth(month);\n\n function value(name) {\n let v = sheet.getCellValue(sheetName, name);\n return { value: v === '' ? 0 : v, name: resolveName(sheetName, name) };\n }\n\n let values = [\n value('total-budgeted'),\n value('total-budget-income'),\n value('total-saved'),\n value('total-income'),\n value('total-spent'),\n value('real-saved'),\n value('total-leftover')\n ];\n\n for (let group of groups) {\n values = values.concat([\n value(`group-budget-${group.id}`),\n value(`group-sum-amount-${group.id}`),\n value(`group-leftover-${group.id}`)\n ]);\n\n for (let cat of group.categories) {\n values = values.concat([\n value(`budget-${cat.id}`),\n value(`sum-amount-${cat.id}`),\n value(`leftover-${cat.id}`)\n ]);\n\n if (!group.is_income) {\n values.push(value(`carryover-${cat.id}`));\n }\n }\n }\n\n return values;\n};\n\nhandlers['budget-set-type'] = async function({ type }) {\n if (type !== 'rollover' && type !== 'report') {\n throw new Error('Invalid budget type: ' + type);\n }\n\n // It's already the same; don't do anything\n if (type === prefs.getPrefs().budgetType) {\n return;\n }\n\n // Save prefs\n return prefs.savePrefs({ budgetType: type });\n};\n\nhandlers['category-create'] = mutator(async function({\n name,\n groupId,\n isIncome\n}) {\n return withUndo(async () => {\n if (!groupId) {\n throw APIError('Creating a category: groupId is required');\n }\n\n return db.insertCategory({\n name,\n cat_group: groupId,\n is_income: isIncome ? 1 : 0\n });\n });\n});\n\nhandlers['category-update'] = mutator(async function(category) {\n return withUndo(async () => {\n try {\n await db.updateCategory(category);\n } catch (e) {\n if (e.message.toLowerCase().includes('unique constraint')) {\n return { error: { type: 'category-exists' } };\n }\n throw e;\n }\n return {};\n });\n});\n\nhandlers['category-move'] = mutator(async function({ id, groupId, targetId }) {\n return withUndo(async () => {\n await batchMessages(async () => {\n await db.moveCategory(id, groupId, targetId);\n });\n return 'ok';\n });\n});\n\nhandlers['category-delete'] = mutator(async function({ id, transferId }) {\n return withUndo(async () => {\n let result = {};\n await batchMessages(async () => {\n let row = await db.first(\n 'SELECT is_income FROM categories WHERE id = ?',\n [id]\n );\n if (!row) {\n result = { error: 'no-categories' };\n return;\n }\n\n let transfer =\n transferId &&\n (await db.first('SELECT is_income FROM categories WHERE id = ?', [\n transferId\n ]));\n\n if (!row || (transferId && !transfer)) {\n result = { error: 'no-categories' };\n return;\n } else if (transferId && row.is_income !== transfer.is_income) {\n result = { error: 'category-type' };\n return;\n }\n\n // Update spreadsheet values if it's an expense category\n // TODO: We should do this for income too if it's a reflect budget\n if (row.is_income === 0) {\n if (transferId) {\n await budget.doTransfer([id], transferId);\n }\n }\n\n await db.deleteCategory({ id }, transferId);\n });\n\n return result;\n });\n});\n\nhandlers['category-group-create'] = mutator(async function({ name, isIncome }) {\n return withUndo(async () => {\n return db.insertCategoryGroup({\n name,\n is_income: isIncome ? 1 : 0\n });\n });\n});\n\nhandlers['category-group-update'] = mutator(async function(group) {\n return withUndo(async () => {\n return db.updateCategoryGroup(group);\n });\n});\n\nhandlers['category-group-move'] = mutator(async function({ id, targetId }) {\n return withUndo(async () => {\n await batchMessages(async () => {\n await db.moveCategoryGroup(id, targetId);\n });\n return 'ok';\n });\n});\n\nhandlers['category-group-delete'] = mutator(async function({ id, transferId }) {\n return withUndo(async () => {\n const groupCategories = await db.all(\n 'SELECT id FROM categories WHERE cat_group = ? AND tombstone = 0',\n [id]\n );\n\n return batchMessages(async () => {\n if (transferId) {\n await budget.doTransfer(groupCategories.map(c => c.id), transferId);\n }\n await db.deleteCategoryGroup({ id }, transferId);\n });\n });\n});\n\nhandlers['must-category-transfer'] = async function({ id }) {\n const res = await db.runQuery(\n `SELECT count(t.id) as count FROM transactions t\n LEFT JOIN category_mapping cm ON cm.id = t.category\n WHERE cm.transferId = ? AND t.tombstone = 0`,\n [id],\n true\n );\n\n // If there are transactions with this category, return early since\n // we already know it needs to be tranferred\n if (res[0].count !== 0) {\n return true;\n }\n\n // If there are any non-zero budget values, also force the user to\n // transfer the category.\n return [...sheet.get().meta().createdMonths].some(month => {\n const sheetName = monthUtils.sheetForMonth(month);\n const value = sheet.get().getCellValue(sheetName, 'budget-' + id);\n\n return value !== 0;\n });\n};\n\nhandlers['payee-create'] = mutator(async function({ name }) {\n return withUndo(async () => {\n return db.insertPayee({ name });\n });\n});\n\nhandlers['payees-get'] = async function() {\n return db.getPayees();\n};\n\nhandlers['payees-get-rule-counts'] = async function() {\n let payeeCounts = {};\n let allRules = rules.getRules();\n\n rules.iterateIds(rules.getRules(), 'payee', (rule, id) => {\n if (payeeCounts[id] == null) {\n payeeCounts[id] = 0;\n }\n payeeCounts[id]++;\n });\n\n return payeeCounts;\n};\n\nhandlers['payees-merge'] = mutator(async function({ targetId, mergeIds }) {\n return withUndo(\n async () => {\n return db.mergePayees(targetId, mergeIds);\n },\n { targetId, mergeIds }\n );\n});\n\nhandlers['payees-batch-change'] = mutator(async function({\n added,\n deleted,\n updated\n}) {\n return withUndo(async () => {\n return batchMessages(async () => {\n if (deleted) {\n await Promise.all(deleted.map(p => db.deletePayee(p)));\n }\n\n if (added) {\n await Promise.all(added.map(p => db.insertPayee(p)));\n }\n\n if (updated) {\n await Promise.all(updated.map(p => db.updatePayee(p)));\n }\n });\n });\n});\n\nhandlers['payees-check-orphaned'] = async function({ ids }) {\n let orphaned = new Set(await db.getOrphanedPayees());\n return ids.filter(id => orphaned.has(id));\n};\n\nhandlers['payees-get-rules'] = async function({ id }) {\n return rules.getRulesForPayee(id).map(rule => rule.serialize());\n};\n\nhandlers['payees-delete-rule'] = mutator(async function({ id, payee_id }) {\n return withUndo(\n async () => {\n return await db.deletePayeeRule({ id });\n },\n { payeeId: payee_id }\n );\n});\n\nhandlers['payees-update-rule'] = mutator(async function(rule) {\n return withUndo(\n async () => {\n return await db.updatePayeeRule(rule);\n },\n { payeeId: rule.payee_id }\n );\n});\n\nhandlers['payees-add-rule'] = mutator(async function(rule) {\n return withUndo(\n async () => {\n let id = await db.insertPayeeRule(rule);\n return { ...rule, id };\n },\n { payeeId: rule.payee_id }\n );\n});\n\nfunction validateRule(rule) {\n // Returns an array of errors, the array is the same link as the\n // passed-in `array`, or null if there are no errors\n function runValidation(array, validate) {\n let result = array.map(item => {\n try {\n validate(item);\n } catch (e) {\n if (e instanceof RuleError) {\n console.warn('Invalid rule', e);\n return e.type;\n }\n throw e;\n }\n return null;\n });\n\n return result.some(Boolean) ? result : null;\n }\n\n let conditionErrors = runValidation(\n rule.conditions,\n cond =>\n new Condition(\n cond.op,\n cond.field,\n cond.value,\n cond.options,\n ruleFieldTypes\n )\n );\n\n let actionErrors = runValidation(\n rule.actions,\n action =>\n new Action(\n action.op,\n action.field,\n action.value,\n action.options,\n ruleFieldTypes\n )\n );\n\n if (conditionErrors || actionErrors) {\n return {\n conditionErrors,\n actionErrors\n };\n }\n\n return null;\n}\n\nhandlers['rule-validate'] = async function(rule) {\n let error = validateRule(rule);\n return { error };\n};\n\nhandlers['rule-add'] = mutator(async function(rule) {\n let error = validateRule(rule);\n if (error) {\n return { error };\n }\n\n let id = await rules.insertRule(rule);\n return { id };\n});\n\nhandlers['rule-update'] = mutator(async function(rule) {\n let error = validateRule(rule);\n if (error) {\n return { error };\n }\n\n await rules.updateRule(rule);\n return {};\n});\n\nhandlers['rule-delete'] = mutator(async function(rule) {\n return rules.deleteRule(rule);\n});\n\nhandlers['rule-delete-all'] = mutator(async function(ids) {\n let someDeletionsFailed = false;\n\n await batchMessages(async () => {\n for (let id of ids) {\n let res = await rules.deleteRule({ id });\n if (res === false) {\n someDeletionsFailed = true;\n }\n }\n });\n\n return { someDeletionsFailed };\n});\n\nhandlers['rule-apply-actions'] = mutator(async function({\n transactionIds,\n actions\n}) {\n return rules.applyActions(transactionIds, actions, handlers);\n});\n\nhandlers['rule-add-payee-rename'] = mutator(async function({ fromNames, to }) {\n return rules.updatePayeeRenameRule(fromNames, to);\n});\n\nhandlers['rules-get'] = async function() {\n return rankRules(rules.getRules()).map(rule => rule.serialize());\n};\n\nhandlers['rule-get'] = async function({ id }) {\n let rule = rules.getRules().find(rule => rule.id === id);\n return rule ? rule.serialize() : null;\n};\n\nhandlers['rules-run'] = async function({ transaction }) {\n return rules.runRules(transaction);\n};\n\nhandlers['rules-migrate'] = async function() {\n await rules.migrateOldRules();\n};\n\nhandlers['make-filters-from-conditions'] = async function({ conditions }) {\n return rules.conditionsToAQL(conditions);\n};\n\nhandlers['getCell'] = async function({ sheetName, name }) {\n // Fields is no longer used - hardcode\n let fields = ['name', 'value'];\n let node = sheet.get()._getNode(resolveName(sheetName, name));\n if (fields) {\n let res = {};\n fields.forEach(field => {\n if (field === 'run') {\n res[field] = node._run ? node._run.toString() : null;\n } else {\n res[field] = node[field];\n }\n });\n return res;\n } else {\n return node;\n }\n};\n\nhandlers['getCells'] = async function({ names }) {\n return names.map(name => ({ value: sheet.get()._getNode(name).value }));\n};\n\nhandlers['getCellNamesInSheet'] = async function({ sheetName }) {\n let names = [];\n for (let name of sheet\n .get()\n .getNodes()\n .keys()) {\n let { sheet: nodeSheet, name: nodeName } = unresolveName(name);\n if (nodeSheet === sheetName) {\n names.push(nodeName);\n }\n }\n return names;\n};\n\nhandlers['debugCell'] = async function({ sheetName, name }) {\n let node = sheet.get().getNode(resolveName(sheetName, name));\n return {\n ...node,\n _run: node._run && node._run.toString()\n };\n};\n\nhandlers['create-query'] = async function({ sheetName, name, query }) {\n // Always run it regardless of cache. We don't know anything has changed\n // between the cache value being saved and now\n sheet.get().createQuery(sheetName, name, query);\n return 'ok';\n};\n\nhandlers['query'] = async function(query) {\n if (query.table == null) {\n throw new Error('query has no table, did you forgot to call `.serialize`?');\n }\n\n return aqlQuery(query);\n};\n\nhandlers['bank-delete'] = async function({ id }) {\n const accts = await db.runQuery(\n 'SELECT * FROM accounts WHERE bank = ?',\n [id],\n true\n );\n\n await db.delete_('banks', id);\n await Promise.all(\n accts.map(async acct => {\n // TODO: This will not sync across devices because we are bypassing\n // the \"recorded\" functions\n await db.runQuery('DELETE FROM transactions WHERE acct = ?', [acct.id]);\n await db.delete_('accounts', acct.id);\n })\n );\n return 'ok';\n};\n\nhandlers['account-update'] = mutator(async function({ id, name }) {\n return withUndo(async () => {\n await db.update('accounts', { id, name });\n return {};\n });\n});\n\nhandlers['accounts-get'] = async function() {\n return db.getAccounts();\n};\n\nhandlers['account-properties'] = async function({ id }) {\n const { balance } = await db.first(\n 'SELECT sum(amount) as balance FROM transactions WHERE acct = ? AND isParent = 0 AND tombstone = 0',\n [id]\n );\n const { count } = await db.first(\n 'SELECT count(id) as count FROM transactions WHERE acct = ? AND tombstone = 0',\n [id]\n );\n\n return { balance: balance || 0, numTransactions: count };\n};\n\nhandlers['accounts-link'] = async function({\n institution,\n publicToken,\n accountId,\n upgradingId\n}) {\n let bankId = await link.handoffPublicToken(institution, publicToken);\n\n let [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n // Get all the available accounts and find the selected one\n let accounts = await bankSync.getAccounts(userId, userKey, bankId);\n let account = accounts.find(acct => acct.account_id === accountId);\n\n await db.update('accounts', {\n id: upgradingId,\n account_id: account.account_id,\n official_name: account.official_name,\n type: fromPlaidAccountType(account.type),\n balance_current: amountToInteger(account.balances.current),\n balance_available: amountToInteger(account.balances.available),\n balance_limit: amountToInteger(account.balances.limit),\n mask: account.mask,\n bank: bankId\n });\n\n await bankSync.syncAccount(\n userId,\n userKey,\n upgradingId,\n account.account_id,\n bankId\n );\n\n connection.send('sync-event', {\n type: 'success',\n tables: ['transactions']\n });\n\n return 'ok';\n};\n\nhandlers['accounts-connect'] = async function({\n institution,\n publicToken,\n accountIds,\n offbudgetIds\n}) {\n let bankId = await link.handoffPublicToken(institution, publicToken);\n let ids = await link.addAccounts(bankId, accountIds, offbudgetIds);\n return ids;\n};\n\nhandlers['account-create'] = mutator(async function({\n name,\n type,\n balance,\n offBudget,\n closed\n}) {\n return withUndo(async () => {\n const id = await db.insertAccount({\n name,\n type,\n offbudget: offBudget ? 1 : 0,\n closed: closed ? 1 : 0\n });\n\n await db.insertPayee({\n name: '',\n transfer_acct: id\n });\n\n if (balance != null) {\n let payee = await getStartingBalancePayee();\n\n await db.insertTransaction({\n account: id,\n amount: amountToInteger(balance),\n category: offBudget ? null : payee.category,\n payee: payee.id,\n date: monthUtils.currentDay(),\n cleared: true,\n starting_balance_flag: true\n });\n }\n\n return id;\n });\n});\n\nhandlers['account-close'] = mutator(async function({\n id,\n transferAccountId,\n categoryId,\n forced\n}) {\n // Unlink the account if it's linked. This makes sure to remove it\n // from Plaid. (This should not be undo-able, as it mutates the\n // remote server and the user will have to link the account again)\n await handlers['account-unlink']({ id });\n\n return withUndo(async () => {\n let account = await db.first(\n 'SELECT * FROM accounts WHERE id = ? AND tombstone = 0',\n [id]\n );\n\n // Do nothing if the account doesn't exist or it's already been\n // closed\n if (!account || account.closed === 1) {\n return;\n }\n\n const { balance, numTransactions } = await handlers['account-properties']({\n id\n });\n\n // If there are no transactions, we can simply delete the account\n if (numTransactions === 0) {\n await db.deleteAccount({ id });\n } else if (forced) {\n let rows = await db.runQuery(\n 'SELECT id, transfer_id FROM v_transactions WHERE account = ?',\n [id],\n true\n );\n\n let { id: payeeId } = await db.first(\n 'SELECT id FROM payees WHERE transfer_acct = ?',\n [id]\n );\n\n await batchMessages(() => {\n // TODO: what this should really do is send a special message that\n // automatically marks the tombstone value for all transactions\n // within an account... or something? This is problematic\n // because another client could easily add new data that\n // should be marked as deleted.\n\n rows.forEach(row => {\n if (row.transfer_id) {\n db.updateTransaction({\n id: row.transfer_id,\n payee: null,\n transfer_id: null\n });\n }\n\n db.deleteTransaction({ id: row.id });\n });\n\n db.deleteAccount({ id });\n db.deleteTransferPayee({ id: payeeId });\n });\n } else {\n if (balance !== 0 && transferAccountId == null) {\n throw APIError('balance is non-zero: transferAccountId is required');\n }\n\n await db.update('accounts', { id, closed: 1 });\n\n // If there is a balance we need to transfer it to the specified\n // account (and possibly categorize it)\n if (balance !== 0) {\n let { id: payeeId } = await db.first(\n 'SELECT id FROM payees WHERE transfer_acct = ?',\n [transferAccountId]\n );\n\n await handlers['transaction-add']({\n id: uuid.v4Sync(),\n payee: payeeId,\n amount: -balance,\n account: id,\n date: monthUtils.currentDay(),\n notes: 'Closing account',\n category: categoryId || null\n });\n }\n }\n });\n});\n\nhandlers['account-reopen'] = mutator(async function({ id }) {\n return withUndo(async () => {\n await db.update('accounts', { id, closed: 0 });\n });\n});\n\nhandlers['account-move'] = mutator(async function({ id, targetId }) {\n return withUndo(async () => {\n await db.moveAccount(id, targetId);\n });\n});\n\nlet stopPolling = false;\n\nhandlers['poll-web-token'] = async function({ token }) {\n let [[, userId], [, key]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n let startTime = Date.now();\n stopPolling = false;\n\n async function getData(cb) {\n if (stopPolling) {\n return;\n }\n\n if (Date.now() - startTime >= 1000 * 60 * 10) {\n cb('timeout');\n return;\n }\n\n let data = await post(\n getServer().PLAID_SERVER + '/get-web-token-contents',\n {\n userId,\n key,\n token\n }\n );\n\n if (data) {\n if (data.error) {\n cb('unknown');\n } else {\n cb(null, data);\n }\n } else {\n setTimeout(() => getData(cb), 3000);\n }\n }\n\n return new Promise(resolve => {\n getData((error, data) => {\n if (error) {\n resolve({ error });\n } else {\n resolve({ data });\n }\n });\n });\n};\n\nhandlers['poll-web-token-stop'] = async function() {\n stopPolling = true;\n return 'ok';\n};\n\nhandlers['accounts-sync'] = async function({ id }) {\n let [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n let accounts = await db.runQuery(\n `SELECT a.*, b.id as bankId FROM accounts a\n LEFT JOIN banks b ON a.bank = b.id\n WHERE a.tombstone = 0 AND a.closed = 0`,\n [],\n true\n );\n\n if (id) {\n accounts = accounts.filter(acct => acct.id === id);\n }\n\n let errors = [];\n let newTransactions = [];\n let matchedTransactions = [];\n let updatedAccounts = [];\n\n let { groupId } = prefs.getPrefs();\n\n for (var i = 0; i < accounts.length; i++) {\n const acct = accounts[i];\n if (acct.bankId) {\n try {\n const res = await bankSync.syncAccount(\n userId,\n userKey,\n acct.id,\n acct.account_id,\n acct.bankId\n );\n let { added, updated } = res;\n\n newTransactions = newTransactions.concat(added);\n matchedTransactions = matchedTransactions.concat(updated);\n\n if (added.length > 0 || updated.length > 0) {\n updatedAccounts = updatedAccounts.concat(acct.id);\n }\n } catch (err) {\n if (err.type === 'BankSyncError') {\n errors.push({\n type: 'SyncError',\n accountId: acct.id,\n message: 'Failed syncing account \"' + acct.name + '\".',\n category: err.category,\n code: err.code\n });\n } else if (err instanceof PostError && err.reason !== 'internal') {\n errors.push({\n accountId: acct.id,\n message: `Account \"${\n acct.name\n }\" is not linked properly. Please link it again`\n });\n } else {\n errors.push({\n accountId: acct.id,\n message:\n 'There was an internal error. Please email help@actualbudget.com for support.',\n internal: err.stack\n });\n\n err.message = 'Failed syncing account: ' + err.message;\n\n captureException(err);\n }\n }\n }\n }\n\n if (updatedAccounts.length > 0) {\n connection.send('sync-event', {\n type: 'success',\n tables: ['transactions']\n });\n }\n\n return { errors, newTransactions, matchedTransactions, updatedAccounts };\n};\n\nhandlers['transactions-import'] = mutator(function({\n accountId,\n transactions\n}) {\n return withUndo(async () => {\n if (typeof accountId !== 'string') {\n throw APIError('transactions-import: accountId must be an id');\n }\n\n try {\n return await bankSync.reconcileTransactions(accountId, transactions);\n } catch (err) {\n if (err instanceof TransactionError) {\n return { errors: [{ message: err.message }], added: [], updated: [] };\n }\n\n throw err;\n }\n });\n});\n\nhandlers['account-unlink'] = mutator(async function({ id }) {\n let { bank: bankId } = await db.first(\n 'SELECT bank FROM accounts WHERE id = ?',\n [id]\n );\n\n if (!bankId) {\n return 'ok';\n }\n\n await db.updateAccount({\n id,\n account_id: null,\n bank: null,\n balance_current: null,\n balance_available: null,\n balance_limit: null\n });\n\n let { count } = await db.first(\n 'SELECT COUNT(*) as count FROM accounts WHERE bank = ?',\n [bankId]\n );\n\n if (count === 0) {\n // No more accounts are associated with this bank. We can remove\n // it from Plaid.\n\n let [[, userId], [, key]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n await post(getServer().PLAID_SERVER + '/remove-access-token', {\n userId,\n key,\n item_id: bankId\n });\n }\n\n return 'ok';\n});\n\nhandlers['make-plaid-public-token'] = async function({ bankId }) {\n let [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n let data = await post(getServer().PLAID_SERVER + '/make-public-token', {\n userId: userId,\n key: userKey,\n item_id: '' + bankId\n });\n\n if (data.error_code) {\n return { error: '', code: data.error_code, type: data.error_type };\n }\n\n return { linkToken: data.link_token };\n};\n\nhandlers['save-global-prefs'] = async function(prefs) {\n if ('maxMonths' in prefs) {\n await asyncStorage.setItem('max-months', '' + prefs.maxMonths);\n }\n if ('trackUsage' in prefs) {\n tracking.toggle(prefs.trackUsage);\n await asyncStorage.setItem('track-usage', '' + prefs.trackUsage);\n }\n if ('autoUpdate' in prefs) {\n await asyncStorage.setItem('auto-update', '' + prefs.autoUpdate);\n process.send({ type: 'shouldAutoUpdate', flag: prefs.autoUpdate });\n }\n if ('documentDir' in prefs) {\n if (await fs.exists(prefs.documentDir)) {\n await asyncStorage.setItem('document-dir', prefs.documentDir);\n }\n }\n if ('floatingSidebar' in prefs) {\n await asyncStorage.setItem('floating-sidebar', '' + prefs.floatingSidebar);\n }\n return 'ok';\n};\n\nhandlers['load-global-prefs'] = async function() {\n let [\n [, floatingSidebar],\n [, seenTutorial],\n [, maxMonths],\n [, trackUsage],\n [, autoUpdate],\n [, documentDir],\n [, encryptKey]\n ] = await asyncStorage.multiGet([\n 'floating-sidebar',\n 'seen-tutorial',\n 'max-months',\n 'track-usage',\n 'auto-update',\n 'document-dir',\n 'encrypt-key'\n ]);\n return {\n floatingSidebar: floatingSidebar === 'true' ? true : false,\n seenTutorial: seenTutorial === 'true' ? true : false,\n maxMonths: stringToInteger(maxMonths || ''),\n // Default to true\n trackUsage: trackUsage == null || trackUsage === 'true' ? true : false,\n autoUpdate: autoUpdate == null || autoUpdate === 'true' ? true : false,\n documentDir: documentDir || getDefaultDocumentDir(),\n keyId: encryptKey && JSON.parse(encryptKey).id\n };\n};\n\nhandlers['save-prefs'] = async function(prefsToSet) {\n let { cloudFileId } = prefs.getPrefs();\n\n // Need to sync the budget name on the server as well\n if (prefsToSet.budgetName && cloudFileId) {\n let userToken = await asyncStorage.getItem('user-token');\n\n await post(getServer().SYNC_SERVER + '/update-user-filename', {\n token: userToken,\n fileId: cloudFileId,\n name: prefsToSet.budgetName\n });\n }\n\n await prefs.savePrefs(prefsToSet);\n return 'ok';\n};\n\nhandlers['load-prefs'] = async function() {\n return prefs.getPrefs();\n};\n\nhandlers['sync-reset'] = async function() {\n return await resetSync();\n};\n\nhandlers['sync-repair'] = async function() {\n await repairSync();\n};\n\n// A user can only enable/change their key with the file loaded. This\n// will change in the future: during onboarding the user should be\n// able to enable encryption. (Imagine if they are importing data from\n// another source, they should be able to encrypt first)\nhandlers['key-make'] = async function({ password }) {\n if (!prefs.getPrefs()) {\n throw new Error('user-set-key must be called with file loaded');\n }\n\n let cloudFileId = prefs.getPrefs().cloudFileId;\n\n let salt = encryption.randomBytes(32).toString('base64');\n let id = uuid.v4Sync();\n let key = await encryption.createKey({ id, password, salt });\n\n // Load the key\n await encryption.loadKey(key);\n\n // Make some test data to use if the key is valid or not\n let testContent = await makeTestMessage(key.getId());\n\n // Changing your key necessitates a sync reset as well. This will\n // clear all existing encrypted data from the server so you won't\n // have a mix of data encrypted with different keys.\n return await resetSync({\n key,\n salt,\n testContent: JSON.stringify({\n ...testContent,\n value: testContent.value.toString('base64')\n })\n });\n};\n\n// This can be called both while a file is already loaded or not. This\n// will see if a key is valid and if so save it off.\nhandlers['key-test'] = async function({ fileId, password }) {\n let userToken = await asyncStorage.getItem('user-token');\n\n if (fileId == null) {\n fileId = prefs.getPrefs().cloudFileId;\n }\n\n let res;\n try {\n res = await post(getServer().SYNC_SERVER + '/user-get-key', {\n token: userToken,\n fileId\n });\n } catch (e) {\n console.log(e);\n return { error: { reason: 'network' } };\n }\n\n let { id, salt, test } = res;\n\n if (test == null) {\n return { error: { reason: 'old-key-style' } };\n }\n\n test = JSON.parse(test);\n\n let key = await encryption.createKey({ id, password, salt });\n encryption.loadKey(key);\n\n try {\n await encryption.decrypt(Buffer.from(test.value, 'base64'), test.meta);\n } catch (e) {\n console.log(e);\n\n // Unload the key, it's invalid\n encryption.unloadKey(key);\n return { error: { reason: 'decrypt-failure' } };\n }\n\n // Persist key in async storage\n let keys = JSON.parse((await asyncStorage.getItem(`encrypt-keys`)) || '{}');\n keys[fileId] = key.serialize();\n await asyncStorage.setItem('encrypt-keys', JSON.stringify(keys));\n\n // Save the key id in prefs if the are loaded. If they aren't, we\n // are testing a key to download a file and when the file is\n // actually downloaded it will update the prefs with the latest key id\n if (prefs.getPrefs()) {\n await prefs.savePrefs({ encryptKeyId: key.getId() });\n }\n\n return {};\n};\n\nhandlers['should-pitch-subscribe'] = async function() {\n let seenSubscribe = await asyncStorage.getItem('seenSubscribe');\n return seenSubscribe !== 'true';\n};\n\nhandlers['has-pitched-subscribe'] = async function() {\n await asyncStorage.setItem('seenSubscribe', 'true');\n return 'ok';\n};\n\nhandlers['subscribe-needs-bootstrap'] = async function({ url } = {}) {\n if (getServer(url).BASE_SERVER === UNCONFIGURED_SERVER) {\n return { bootstrapped: true };\n }\n\n let res;\n try {\n res = await get(getServer(url).SIGNUP_SERVER + '/needs-bootstrap');\n } catch (err) {\n return { error: 'network-failure' };\n }\n\n try {\n res = JSON.parse(res);\n } catch (err) {\n return { error: 'parse-failure' };\n }\n\n if (res.status === 'error') {\n return { error: res.reason };\n }\n\n return { bootstrapped: res.data.bootstrapped };\n};\n\nhandlers['subscribe-bootstrap'] = async function({ password }) {\n let res;\n try {\n res = await post(getServer().SIGNUP_SERVER + '/bootstrap', { password });\n } catch (err) {\n return { error: err.reason || 'network-failure' };\n }\n\n if (res.token) {\n await asyncStorage.setItem('user-token', res.token);\n return {};\n }\n return { error: 'internal' };\n};\n\nhandlers['subscribe-set-user'] = async function({ token }) {\n await asyncStorage.setItem('user-token', token);\n};\n\nhandlers['subscribe-get-user'] = async function() {\n if (getServer() && getServer().BASE_SERVER === UNCONFIGURED_SERVER) {\n return { offline: false };\n }\n\n let userToken = await asyncStorage.getItem('user-token');\n\n if (userToken) {\n try {\n let res = await get(getServer().SIGNUP_SERVER + '/validate', {\n headers: {\n 'X-ACTUAL-TOKEN': userToken\n }\n });\n res = JSON.parse(res);\n\n if (res.status === 'error') {\n if (res.reason === 'unauthorized') {\n return null;\n }\n return { offline: true };\n }\n\n return { offline: false };\n } catch (e) {\n console.log(e);\n return { offline: true };\n }\n }\n\n return null;\n};\n\nhandlers['subscribe-change-password'] = async function({ password }) {\n let userToken = await asyncStorage.getItem('user-token');\n let res;\n try {\n res = await post(getServer().SIGNUP_SERVER + '/change-password', {\n token: userToken,\n password\n });\n } catch (err) {\n return { error: err.reason || 'network-failure' };\n }\n\n return {};\n};\n\nhandlers['subscribe-sign-in'] = async function({ password }) {\n let res = await post(getServer().SIGNUP_SERVER + '/login', {\n password\n });\n\n if (res.token) {\n await asyncStorage.setItem('user-token', res.token);\n return {};\n }\n\n return { error: 'invalid-password' };\n};\n\nhandlers['subscribe-sign-out'] = async function() {\n encryption.unloadAllKeys();\n await asyncStorage.multiRemove([\n 'user-token',\n 'encrypt-keys',\n 'lastBudget',\n 'readOnly'\n ]);\n return 'ok';\n};\n\nhandlers['get-server-url'] = async function() {\n return getServer() && getServer().BASE_SERVER;\n};\n\nhandlers['set-server-url'] = async function({ url }) {\n if (url != null) {\n // Validate the server is running\n let { error } = await runHandler(handlers['subscribe-needs-bootstrap'], {\n url\n });\n if (error) {\n return { error };\n }\n } else {\n // When the server isn't configured, we just use a placeholder\n url = UNCONFIGURED_SERVER;\n }\n\n asyncStorage.setItem('server-url', url);\n setServer(url);\n return {};\n};\n\nhandlers['sync'] = async function() {\n return fullSync();\n};\n\nhandlers['get-version'] = async function() {\n return { version: VERSION };\n};\n\nhandlers['get-budgets'] = async function() {\n const paths = await fs.listDir(fs.getDocumentDir());\n const budgets = (await Promise.all(\n paths.map(async name => {\n const prefsPath = fs.join(fs.getDocumentDir(), name, 'metadata.json');\n if (await fs.exists(prefsPath)) {\n let prefs;\n try {\n prefs = JSON.parse(await fs.readFile(prefsPath));\n } catch (e) {\n console.log('Error parsing metadata:', e.stack);\n return;\n }\n\n // We treat the directory name as the canonical id so that if\n // the user moves it around/renames/etc, nothing breaks. The\n // id is stored in prefs just for convenience (and the prefs\n // will always update to the latest given id)\n if (name !== DEMO_BUDGET_ID) {\n return {\n id: name,\n cloudFileId: prefs.cloudFileId,\n groupId: prefs.groupId,\n name: prefs.budgetName || '(no name)'\n };\n }\n }\n\n return null;\n })\n )).filter(x => x);\n\n return budgets;\n};\n\nhandlers['get-ynab4-files'] = async function() {\n return YNAB4.findBudgets();\n};\n\nhandlers['get-remote-files'] = async function() {\n return cloudStorage.listRemoteFiles();\n};\n\nhandlers['reset-budget-cache'] = mutator(async function() {\n // Recomputing everything will update the cache\n await sheet.loadUserBudgets(db);\n sheet.get().recomputeAll();\n await sheet.waitOnSpreadsheet();\n});\n\nhandlers['upload-budget'] = async function({ id } = {}) {\n if (id) {\n if (prefs.getPrefs()) {\n throw new Error('upload-budget: id given but prefs already loaded');\n }\n\n await prefs.loadPrefs(id);\n }\n\n try {\n await cloudStorage.upload();\n } catch (e) {\n console.log(e);\n if (e.type === 'FileUploadError') {\n return { error: e };\n }\n captureException(e);\n return { error: { reason: 'internal' } };\n } finally {\n if (id) {\n prefs.unloadPrefs();\n }\n }\n\n return {};\n};\n\nhandlers['download-budget'] = async function({ fileId, replace }) {\n let result;\n try {\n result = await cloudStorage.download(fileId, replace);\n } catch (e) {\n if (e.type === 'FileDownloadError') {\n if (e.reason === 'file-exists' && e.meta.id) {\n await prefs.loadPrefs(e.meta.id);\n let name = prefs.getPrefs().budgetName;\n prefs.unloadPrefs();\n\n e.meta = { ...e.meta, name };\n }\n\n return { error: e };\n } else {\n captureException(e);\n return { error: { reason: 'internal' } };\n }\n }\n\n let id = result.id;\n\n // Load the budget and do a full sync\n result = await loadBudget(result.id, VERSION, { showUpdate: true });\n if (result.error) {\n return { error: { reason: result.error } };\n }\n\n setSyncingMode('enabled');\n await initialFullSync();\n\n await handlers['close-budget']();\n\n return { id };\n};\n\nhandlers['load-budget'] = async function({ id }) {\n let currentPrefs = prefs.getPrefs();\n\n if (currentPrefs) {\n if (currentPrefs.id === id) {\n // If it's already loaded, do nothing\n return {};\n } else {\n // Otherwise, close the currently loaded budget\n await handlers['close-budget']();\n }\n }\n\n let res = await loadBudget(id, VERSION, { showUpdate: true });\n\n async function trackSizes() {\n let getFileSize = async name => {\n let dbFile = fs.join(fs.getBudgetDir(id), name);\n try {\n return await fs.size(dbFile);\n } catch (err) {\n return null;\n }\n };\n\n try {\n let dbSize = await getFileSize('db.sqlite');\n let cacheSize = await getFileSize('cache.sqlite');\n tracking.track('app:load-budget', { size: dbSize, cacheSize });\n } catch (err) {\n console.warn(err);\n }\n }\n trackSizes();\n\n return res;\n};\n\nhandlers['create-demo-budget'] = async function() {\n // Make sure the read only flag isn't leftover (normally it's\n // reset when signing in, but you don't have to sign in for the\n // demo budget)\n await asyncStorage.setItem('readOnly', '');\n\n return handlers['create-budget']({\n budgetName: 'Demo Budget',\n testMode: true,\n testBudgetId: DEMO_BUDGET_ID\n });\n};\n\nhandlers['close-budget'] = async function() {\n captureBreadcrumb({ message: 'Closing budget' });\n\n // The spreadsheet may be running, wait for it to complete\n await sheet.waitOnSpreadsheet();\n sheet.unloadSpreadsheet();\n\n clearFullSyncTimeout();\n await app.stopServices();\n\n await db.closeDatabase();\n\n try {\n await asyncStorage.setItem('lastBudget', '');\n } catch (e) {\n // This might fail if we are shutting down after failing to load a\n // budget. We want to unload whatever has already been loaded but\n // be resilient to anything failing\n }\n\n prefs.unloadPrefs();\n stopBackupService();\n return 'ok';\n};\n\nhandlers['delete-budget'] = async function({ id, cloudFileId }) {\n // If it's a cloud file, you can delete it from the server by\n // passing its cloud id\n if (cloudFileId && !process.env.IS_BETA) {\n await cloudStorage.removeFile(cloudFileId).catch(err => {});\n }\n\n // If a local file exists, you can delete it by passing its local id\n if (id) {\n let budgetDir = fs.getBudgetDir(id);\n await fs.removeDirRecursively(budgetDir);\n }\n\n return 'ok';\n};\n\nhandlers['create-budget'] = async function({\n budgetName,\n avoidUpload,\n testMode,\n testBudgetId\n} = {}) {\n let id;\n if (testMode) {\n budgetName = budgetName || 'Test Budget';\n id = testBudgetId || TEST_BUDGET_ID;\n\n if (await fs.exists(fs.getBudgetDir(id))) {\n await fs.removeDirRecursively(fs.getBudgetDir(id));\n }\n } else {\n // Generate budget name if not given\n if (!budgetName) {\n // Unfortunately we need to load all of the existing files first\n // so we can detect conflicting names.\n let files = await handlers['get-budgets']();\n budgetName = await uniqueFileName(files);\n }\n\n id = await idFromFileName(budgetName);\n }\n\n let budgetDir = fs.getBudgetDir(id);\n await fs.mkdir(budgetDir);\n\n // Create the initial database\n await fs.copyFile(fs.bundledDatabasePath, fs.join(budgetDir, 'db.sqlite'));\n\n // Create the initial prefs file\n await fs.writeFile(\n fs.join(budgetDir, 'metadata.json'),\n JSON.stringify(prefs.getDefaultPrefs(id, budgetName))\n );\n\n // Load it in\n let { error } = await loadBudget(id, VERSION);\n if (error) {\n console.log('Error creating budget: ' + error);\n return { error };\n }\n\n if (!avoidUpload && !testMode) {\n try {\n await cloudStorage.upload();\n } catch (e) {\n // Ignore any errors uploading. If they are offline they should\n // still be able to create files.\n }\n }\n\n if (testMode) {\n await createTestBudget(handlers);\n }\n\n return {};\n};\n\nhandlers['set-tutorial-seen'] = async function() {\n await asyncStorage.setItem('seen-tutorial', 'true');\n return 'ok';\n};\n\nhandlers['import-budget'] = async function({ filepath, type }) {\n try {\n if (!(await fs.exists(filepath))) {\n throw new Error(`File not found at the provided path: ${filepath}`);\n }\n\n let buffer = Buffer.from(await fs.readFile(filepath, 'binary'));\n\n switch (type) {\n case 'ynab4':\n try {\n await YNAB4.importBuffer(filepath, buffer);\n } catch (e) {\n let msg = e.message.toLowerCase();\n if (\n msg.includes('not a ynab4') ||\n msg.includes('could not find file')\n ) {\n return { error: 'not-ynab4' };\n }\n }\n break;\n case 'ynab5':\n let data;\n try {\n data = JSON.parse(buffer.toString());\n } catch (e) {\n return { error: 'parse-error' };\n }\n\n try {\n await YNAB5.importYNAB5(data);\n } catch (e) {\n return { error: 'not-ynab5' };\n }\n break;\n case 'actual':\n // We should pull out import/export into its own app so this\n // can be abstracted out better. Importing Actual files is a\n // special case because we can directly write down the files,\n // but because it doesn't go through the API layer we need to\n // duplicate some of the workflow\n await handlers['close-budget']();\n\n let { id } = await cloudStorage.importBuffer(\n { cloudFileId: null, groupId: null },\n buffer\n );\n\n // We never want to load cached data from imported files, so\n // delete the cache\n let sqliteDb = await sqlite.openDatabase(\n fs.join(fs.getBudgetDir(id), 'db.sqlite')\n );\n sqlite.execQuery(\n sqliteDb,\n `\n DELETE FROM kvcache;\n DELETE FROM kvcache_key;\n `\n );\n sqlite.closeDatabase(sqliteDb);\n\n // Load the budget, force everything to be computed, and try\n // to upload it as a cloud file\n await handlers['load-budget']({ id });\n await handlers['get-budget-bounds']();\n await sheet.waitOnSpreadsheet();\n await cloudStorage.upload().catch(err => {});\n\n break;\n default:\n }\n } catch (err) {\n err.message = 'Error importing budget: ' + err.message;\n captureException(err);\n return { error: 'internal-error' };\n }\n\n return {};\n};\n\nhandlers['export-budget'] = async function() {\n return await cloudStorage.exportBuffer();\n};\n\nasync function loadBudget(id, appVersion, { showUpdate } = {}) {\n let dir;\n try {\n dir = fs.getBudgetDir(id);\n } catch (e) {\n captureException(\n new Error('`getBudgetDir` failed in `loadBudget`: ' + e.message)\n );\n return { error: 'budget-not-found' };\n }\n\n captureBreadcrumb({ message: 'Loading budget ' + dir });\n\n if (!(await fs.exists(dir))) {\n captureException(new Error('budget directory does not exist'));\n return { error: 'budget-not-found' };\n }\n\n try {\n await prefs.loadPrefs(id);\n await db.openDatabase(id);\n } catch (e) {\n captureBreadcrumb({ message: 'Error loading budget ' + id });\n captureException(e);\n await handlers['close-budget']();\n return { error: 'opening-budget' };\n }\n\n // Older versions didn't tag the file with the current user, so do\n // so now\n if (!prefs.getPrefs().userId) {\n let [[, userId]] = await asyncStorage.multiGet(['user-token']);\n prefs.savePrefs({ userId });\n }\n\n let { budgetVersion, budgetId } = prefs.getPrefs();\n\n try {\n await updateVersion(budgetVersion, showUpdate);\n } catch (e) {\n console.warn('Error updating', e);\n let result;\n if (e.message.includes('out-of-sync-migrations')) {\n result = { error: 'out-of-sync-migrations' };\n } else if (e.message.includes('out-of-sync-data')) {\n result = { error: 'out-of-sync-data' };\n } else {\n captureException(e);\n logger.info('Error updating budget ' + id, e);\n console.log('Error updating budget', e);\n result = { error: 'loading-budget' };\n }\n\n await handlers['close-budget']();\n return result;\n }\n\n await db.loadClock();\n\n if (prefs.getPrefs().resetClock) {\n // If we need to generate a fresh clock, we need to generate a new\n // client id. This happens when the database is transferred to a\n // new device.\n //\n // TODO: The client id should be stored elsewhere. It shouldn't\n // work this way, but it's fine for now.\n timestamp.getClock().timestamp.setNode(timestamp.makeClientId());\n await db.runQuery(\n 'INSERT OR REPLACE INTO messages_clock (id, clock) VALUES (1, ?)',\n [timestamp.serializeClock(timestamp.getClock())]\n );\n\n await prefs.savePrefs({ resetClock: false });\n }\n\n if (!Platform.isWeb && !Platform.isMobile && !global.__TESTING__) {\n startBackupService(id);\n }\n\n try {\n await sheet.loadSpreadsheet(db, onSheetChange);\n } catch (e) {\n captureException(e);\n await handlers['close-budget']();\n return { error: 'opening-budget' };\n }\n\n // This is a bit leaky, but we need to set the initial budget type\n sheet.get().meta().budgetType = prefs.getPrefs().budgetType;\n await budget.createAllBudgets();\n\n // Load all the in-memory state\n await mappings.loadMappings();\n await rules.loadRules();\n await syncMigrations.listen();\n await app.startServices();\n\n clearUndo();\n\n // Ensure that syncing is enabled\n if (!global.__TESTING__) {\n if (process.env.IS_BETA || id === DEMO_BUDGET_ID) {\n setSyncingMode('disabled');\n } else if (id === TEST_BUDGET_ID) {\n await asyncStorage.setItem('lastBudget', id);\n } else {\n setSyncingMode('enabled');\n\n await asyncStorage.setItem('lastBudget', id);\n\n // Only upload periodically on desktop\n if (!Platform.isMobile) {\n await cloudStorage.possiblyUpload();\n }\n }\n }\n\n app.events.emit('load-budget', { id });\n\n return {};\n}\n\nhandlers['get-upgrade-notifications'] = async function() {\n let { id } = prefs.getPrefs();\n if (id === TEST_BUDGET_ID || id === DEMO_BUDGET_ID) {\n return [];\n }\n\n let types = ['schedules', 'repair-splits'];\n let unseen = [];\n\n for (let type of types) {\n let key = `notifications.${type}`;\n if (prefs.getPrefs()[key] == null) {\n unseen.push(type);\n }\n }\n\n return unseen;\n};\n\nhandlers['seen-upgrade-notification'] = async function({ type }) {\n let key = `notifications.${type}`;\n prefs.savePrefs({ [key]: true });\n};\n\nhandlers['upload-file-web'] = async function({ filename, contents }) {\n if (!Platform.isWeb) {\n return null;\n }\n\n await fs.writeFile('/uploads/' + filename, contents);\n return 'ok';\n};\n\nhandlers['backups-get'] = async function({ id }) {\n return getAvailableBackups(id);\n};\n\nhandlers['backup-load'] = async function({ id, backupId }) {\n await loadBackup(id, backupId);\n};\n\nhandlers['backup-make'] = async function({ id }) {\n await makeBackup(id);\n};\n\nhandlers['get-last-opened-backup'] = async function() {\n const id = await asyncStorage.getItem('lastBudget');\n if (id && id !== '') {\n const budgetDir = fs.getBudgetDir(id);\n\n // We never want to give back a budget that does not exist on the\n // filesystem anymore, so first check that it exists\n if (await fs.exists(budgetDir)) {\n return id;\n }\n }\n return null;\n};\n\nhandlers['app-focused'] = async function() {\n if (prefs.getPrefs() && prefs.getPrefs().id) {\n // First we sync\n fullSync();\n }\n};\n\nhandlers['track'] = async function({ name, props }) {\n tracking.track(name, props);\n};\n\nhandlers = installAPI(handlers);\n\ninjectAPI.send = (name, args) => runHandler(app.handlers[name], args);\n\n// A hack for now until we clean up everything\napp.handlers = handlers;\napp.combine(schedulesApp, budgetApp, notesApp, toolsApp);\n\nfunction getDefaultDocumentDir() {\n if (Platform.isMobile) {\n // On mobile, unfortunately we need to be backwards compatible\n // with the old folder structure which does not store files inside\n // of an `Actual` directory. In the future, if we really care, we\n // can migrate them, but for now just return the documents dir\n return process.env.ACTUAL_DOCUMENT_DIR;\n }\n return fs.join(process.env.ACTUAL_DOCUMENT_DIR, 'Actual');\n}\n\nasync function setupDocumentsDir() {\n async function ensureExists(dir) {\n // Make sure the document folder exists\n if (!(await fs.exists(dir))) {\n await fs.mkdir(dir);\n }\n }\n\n let documentDir = await asyncStorage.getItem('document-dir');\n\n // Test the existing documents directory to make sure it's a valid\n // path that exists, and if it errors fallback to the default one\n if (documentDir) {\n try {\n await ensureExists(documentDir);\n } catch (e) {\n documentDir = null;\n }\n }\n\n if (!documentDir) {\n documentDir = getDefaultDocumentDir();\n }\n\n await ensureExists(documentDir);\n fs._setDocumentDir(documentDir);\n}\n\nexport async function initApp(version, isDev, socketName) {\n VERSION = version;\n\n await sqlite.init();\n await Promise.all([asyncStorage.init(), fs.init()]);\n await tracking.init();\n await setupDocumentsDir();\n\n let keysStr = await asyncStorage.getItem('encrypt-keys');\n if (keysStr) {\n try {\n let keys = JSON.parse(keysStr);\n\n // Load all the keys\n await Promise.all(\n Object.keys(keys).map(fileId => {\n return encryption.loadKey(keys[fileId]);\n })\n );\n } catch (e) {\n console.log('Error loading key', e);\n throw new Error('load-key-error');\n }\n }\n\n if (isDev) {\n const lastBudget = await asyncStorage.getItem('lastBudget');\n // if (lastBudget) {\n // loadBudget(lastBudget, VERSION);\n // }\n }\n\n const url = await asyncStorage.getItem('server-url');\n if (url) {\n setServer(url);\n }\n\n connection.init(socketName, app.handlers);\n\n tracking.track('app:init', {\n platform: Platform.isMobile ? 'mobile' : Platform.isWeb ? 'web' : 'desktop'\n });\n\n if (!isDev && !Platform.isMobile && !Platform.isWeb) {\n let autoUpdate = await asyncStorage.getItem('auto-update');\n process.send({\n type: 'shouldAutoUpdate',\n flag: autoUpdate == null || autoUpdate === 'true'\n });\n }\n\n if (isDev || process.env.IS_BETA) {\n global.$send = (name, args) => runHandler(app.handlers[name], args);\n global.$query = aqlQuery;\n global.$q = q;\n global.$db = db;\n global.$setSyncingMode = setSyncingMode;\n }\n}\n\nexport async function init({ budgetId, config }) {\n // Get from build\n // eslint-disable-next-line\n VERSION = ACTUAL_APP_VERSION;\n\n let dataDir, serverURL;\n if (config) {\n dataDir = config.dataDir;\n serverURL = config.serverURL;\n } else {\n dataDir = process.env.ACTUAL_DATA_DIR;\n serverURL = process.env.ACTUAL_SERVER_URL;\n }\n\n await sqlite.init();\n await Promise.all([asyncStorage.init({ persist: false }), fs.init()]);\n fs._setDocumentDir(dataDir || process.cwd());\n\n if (serverURL) {\n setServer(serverURL);\n } else {\n // This turns off all server URLs. In this mode we don't want any\n // access to the server, we are doing things locally\n setServer(null);\n\n app.events.on('load-budget', () => {\n setSyncingMode('offline');\n });\n }\n\n if (budgetId) {\n await runHandler(handlers['load-budget'], { id: budgetId });\n }\n\n return lib;\n}\n\n// Export a few things required for the platform\nexport const lib = {\n getDataDir: fs.getDataDir,\n sendMessage: (msg, args) => connection.send(msg, args),\n send: async (name, args) => {\n let res = await runHandler(app.handlers[name], args);\n return res;\n },\n on: (name, func) => app.events.on(name, func),\n syncAndReceiveMessages,\n q,\n db,\n\n // Expose CRDT mechanisms so server can use them\n merkle,\n timestamp,\n SyncProtoBuf: SyncPb\n};\n\nif (process.env.NODE_ENV === 'development' && Platform.isWeb) {\n // Support reloading the backend\n self.addEventListener('message', async e => {\n if (e.data.type === '__actual:shutdown') {\n await sheet.waitOnSpreadsheet();\n await app.stopServices();\n await db.closeDatabase();\n asyncStorage.shutdown();\n fs.shutdown();\n\n setTimeout(() => {\n // Give everything else some time to process shutdown events\n self.close();\n }, 100);\n }\n });\n}\n","// TODO: Ok, several problems:\n//\n// * If nothing matches between two merkle trees, we should fallback\n// * to the last window instead the front one (use 0 instead of the\n// * key)\n//\n// * Need to check to make sure if account exists when handling\n// * transaction changes in syncing\n\nexport function getKeys(trie) {\n return Object.keys(trie).filter(x => x !== 'hash');\n}\n\nexport function keyToTimestamp(key) {\n // 16 is the length of the base 3 value of the current time in\n // minutes. Ensure it's padded to create the full value\n let fullkey = key + '0'.repeat(16 - key.length);\n\n // Parse the base 3 representation\n return parseInt(fullkey, 3) * 1000 * 60;\n}\n\nexport function insert(trie, timestamp) {\n let hash = timestamp.hash();\n let key = Number((timestamp.millis() / 1000 / 60) | 0).toString(3);\n\n trie = Object.assign({}, trie, { hash: trie.hash ^ hash });\n return insertKey(trie, key, hash);\n}\n\nfunction insertKey(trie, key, hash) {\n if (key.length === 0) {\n return trie;\n }\n const c = key[0];\n const n = trie[c] || {};\n return Object.assign({}, trie, {\n [c]: Object.assign({}, n, insertKey(n, key.slice(1), hash), {\n hash: n.hash ^ hash\n })\n });\n}\n\nexport function build(timestamps) {\n let trie = {};\n for (let timestamp of timestamps) {\n insert(trie, timestamp);\n }\n return trie;\n}\n\nexport function diff(trie1, trie2) {\n if (trie1.hash === trie2.hash) {\n return null;\n }\n\n let node1 = trie1;\n let node2 = trie2;\n let k = '';\n\n // This loop will eventually stop when it traverses down to find\n // where the hashes differ, or otherwise when there are no leaves\n // left (this shouldn't happen, if that's the case the hash check at\n // the top of this function should pass)\n while (1) {\n let keyset = new Set([...getKeys(node1), ...getKeys(node2)]);\n let keys = [...keyset.values()];\n keys.sort();\n\n let diffkey = null;\n\n // Traverse down the trie through keys that aren't the same. We\n // traverse down the keys in order. Stop in two cases: either one\n // of the nodes doesn't have the key, or a different key isn't\n // found. For the former case, we have to that because pruning is\n // lossy. We don't know if we've pruned off a changed key so we\n // can't traverse down anymore. For the latter case, it means two\n // things: either we've hit the bottom of the tree, or the changed\n // key has been pruned off. In the latter case we have a \"partial\"\n // key and will fill the rest with 0s. Note that if multiple older\n // messages were added into one trie, it's possible we will\n // generate a time that only encompasses *some* of the those\n // messages. Pruning is lossy, and we traverse down the left-most\n // changed time that we know of, because of pruning it might take\n // multiple passes to sync up a trie.\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n\n if (!node1[key] || !node2[key]) {\n break;\n }\n\n let next1 = node1[key];\n let next2 = node2[key];\n if (next1.hash !== next2.hash) {\n diffkey = key;\n break;\n }\n }\n\n if (!diffkey) {\n return keyToTimestamp(k);\n }\n\n k += diffkey;\n node1 = node1[diffkey] || {};\n node2 = node2[diffkey] || {};\n }\n}\n\nexport function prune(trie, n = 2) {\n // Do nothing if empty\n if (!trie.hash) {\n return trie;\n }\n\n let keys = getKeys(trie);\n keys.sort();\n\n let next = { hash: trie.hash };\n keys = keys.slice(-n).map(k => (next[k] = prune(trie[k], n)));\n\n return next;\n}\n\nexport function debug(trie, k = '', indent = 0) {\n const str =\n ' '.repeat(indent) +\n (k !== '' ? `k: ${k} ` : '') +\n `hash: ${trie.hash || '(empty)'}\\n`;\n return (\n str +\n getKeys(trie)\n .map(key => {\n return debug(trie[key], key, indent + 2);\n })\n .join('')\n );\n}\n","import fs from '../../platform/server/fs';\nimport * as sqlite from '../../platform/server/sqlite';\n\n// We have to bundle in JS migrations manually to avoid having to `eval`\n// them which doesn't play well with CSP. There isn't great, and eventually\n// we can remove this migration.\nimport m1632571489012 from '../../../migrations/1632571489012_remove_cache.js';\n\nconst uuid = require('../../platform/uuid');\n\nlet MIGRATIONS_DIR = fs.migrationsPath;\n\nlet javascriptMigrations = {\n 1632571489012: m1632571489012\n};\n\nexport async function withMigrationsDir(dir, func) {\n let oldDir = MIGRATIONS_DIR;\n MIGRATIONS_DIR = dir;\n await func();\n MIGRATIONS_DIR = oldDir;\n}\n\nexport function getMigrationsDir() {\n return MIGRATIONS_DIR;\n}\n\nfunction getMigrationId(name) {\n return parseInt(name.match(/^(\\d)+/)[0]);\n}\n\nexport function getUpMigration(id, names) {\n for (let m of names) {\n if (getMigrationId(m) === id) {\n return m;\n }\n }\n}\n\nexport async function getAppliedMigrations(db) {\n const rows = await sqlite.runQuery(\n db,\n 'SELECT * FROM __migrations__ ORDER BY id ASC',\n [],\n true\n );\n return rows.map(row => row.id);\n}\n\nexport async function getMigrationList(migrationsDir) {\n const files = await fs.listDir(migrationsDir);\n return files\n .filter(name => name.match(/(\\.sql|\\.js)$/))\n .sort((m1, m2) => {\n const id1 = getMigrationId(m1);\n const id2 = getMigrationId(m2);\n if (id1 < id2) {\n return -1;\n } else if (id1 > id2) {\n return 1;\n }\n return 0;\n });\n}\n\nexport function getPending(appliedIds, all) {\n return all.filter(name => {\n const id = getMigrationId(name);\n return appliedIds.indexOf(id) === -1;\n });\n}\n\nasync function applyJavaScript(db, id) {\n const dbInterface = {\n runQuery: (query, params, fetchAll) =>\n sqlite.runQuery(db, query, params, fetchAll),\n execQuery: query => sqlite.execQuery(db, query),\n transaction: func => sqlite.transaction(db, func)\n };\n\n if (javascriptMigrations[id] == null) {\n throw new Error('Could not find JS migration code to run for ' + id);\n }\n\n let run = javascriptMigrations[id];\n return run(dbInterface, () => uuid.v4Sync());\n}\n\nasync function applySql(db, sql) {\n try {\n await sqlite.execQuery(db, sql);\n } catch (e) {\n console.log('Error applying sql:', sql);\n throw e;\n }\n}\n\nexport async function applyMigration(db, name, migrationsDir) {\n const code = await fs.readFile(fs.join(migrationsDir, name));\n if (name.match(/\\.js$/)) {\n await applyJavaScript(db, getMigrationId(name));\n } else {\n await applySql(db, code);\n }\n await sqlite.runQuery(db, 'INSERT INTO __migrations__ (id) VALUES (?)', [\n getMigrationId(name)\n ]);\n}\n\nfunction checkDatabaseValidity(appliedIds, available) {\n for (let i = 0; i < appliedIds.length; i++) {\n if (\n i >= available.length ||\n appliedIds[i] !== getMigrationId(available[i])\n ) {\n throw new Error('out-of-sync-migrations');\n }\n }\n}\n\nexport async function migrate(db) {\n let appliedIds = await getAppliedMigrations(db);\n let available = await getMigrationList(MIGRATIONS_DIR);\n\n checkDatabaseValidity(appliedIds, available);\n\n const pending = getPending(appliedIds, available);\n\n for (let migration of pending) {\n await applyMigration(db, migration, MIGRATIONS_DIR);\n }\n\n return pending;\n}\n","export function requiredFields(name, row, fields, update) {\n fields.forEach(field => {\n if (update) {\n if (row.hasOwnProperty(field) && row[field] == null) {\n throw new Error(`${name} is missing field ${field}`);\n }\n } else {\n if (!row.hasOwnProperty(field) || row[field] == null) {\n throw new Error(`${name} is missing field ${field}`);\n }\n }\n });\n}\n\nexport function toDateRepr(str) {\n if (typeof str !== 'string') {\n throw new Error('toDateRepr not passed a string: ' + str);\n }\n\n return parseInt(str.replace(/-/g, ''));\n}\n\nexport function fromDateRepr(number) {\n if (typeof number !== 'number') {\n throw new Error('fromDateRepr not passed a number: ' + number);\n }\n\n const dateString = number.toString();\n return (\n dateString.slice(0, 4) +\n '-' +\n dateString.slice(4, 6) +\n '-' +\n dateString.slice(6)\n );\n}\n\nexport const accountModel = {\n validateAccountType(account) {\n const { type } = account;\n if (\n type !== 'checking' &&\n type !== 'savings' &&\n type !== 'investment' &&\n type !== 'credit' &&\n type !== 'mortgage' &&\n type !== 'debt' &&\n type !== 'other'\n ) {\n throw new Error('Invalid account type: ' + type);\n }\n },\n\n validate(account, { update } = {}) {\n if (!update || account.type != null) {\n accountModel.validateAccountType(account);\n }\n\n requiredFields(\n 'account',\n account,\n update ? ['name', 'type', 'offbudget', 'closed'] : ['name', 'type'],\n update\n );\n\n return account;\n }\n};\n\nexport const categoryModel = {\n validate(category, { update } = {}) {\n requiredFields(\n 'category',\n category,\n update ? ['name', 'is_income', 'cat_group'] : ['name', 'cat_group'],\n update\n );\n\n let { sort_order, ...rest } = category;\n return rest;\n }\n};\n\nexport const categoryGroupModel = {\n validate(categoryGroup, { update } = {}) {\n requiredFields(\n 'categoryGroup',\n categoryGroup,\n update ? ['name', 'is_income'] : ['name'],\n update\n );\n\n let { sort_order, ...rest } = categoryGroup;\n return rest;\n }\n};\n\nexport const payeeModel = {\n validate(payee, { update } = {}) {\n requiredFields('payee', payee, ['name'], update);\n return payee;\n }\n};\n\nexport const payeeRuleModel = {\n validateType(rule) {\n const { type } = rule;\n if (type !== 'equals' && type !== 'contains') {\n throw new Error('Invalid rule type: ' + type);\n }\n },\n\n validate(rule, { update } = {}) {\n if (!update || 'type' in rule) {\n payeeRuleModel.validateType(rule);\n }\n\n requiredFields('payee_rules', rule, ['payee_id', 'type'], update);\n return rule;\n }\n};\n\nexport const transactionModel = {\n validate(trans, { update } = {}) {\n requiredFields('transaction', trans, ['date', 'acct'], update);\n\n if ('date' in trans) {\n // Make sure it's the right format, and also do a sanity check.\n // Really old dates can mess up the system and can happen by\n // accident\n if (\n trans.date.match(/^\\d{4}-\\d{2}-\\d{2}$/) == null ||\n trans.date < '2000-01-01'\n ) {\n throw new Error('Invalid transaction date: ' + trans.date);\n }\n }\n\n return trans;\n },\n\n toJS(row) {\n // Check a non-important field that typically wouldn't be passed in\n // manually, and use it as a smoke test to see if this is a\n // fully-formed transaction or not.\n if (!('location' in row)) {\n throw new Error(\n 'A full transaction is required to be passed to `toJS`. Instead got: ' +\n JSON.stringify(row)\n );\n }\n\n let trans = { ...row };\n trans.error = row.error ? JSON.parse(row.error) : null;\n trans.isParent = row.isParent === 1 ? true : false;\n trans.isChild = row.isChild === 1 ? true : false;\n trans.starting_balance_flag =\n row.starting_balance_flag === 1 ? true : false;\n trans.cleared = row.cleared === 1 ? true : false;\n trans.pending = row.pending === 1 ? true : false;\n trans.date = trans.date && fromDateRepr(trans.date);\n return trans;\n },\n\n fromJS(trans) {\n let row = { ...trans };\n if ('error' in row) {\n row.error = trans.error ? JSON.stringify(trans.error) : null;\n }\n if ('isParent' in row) {\n row.isParent = trans.isParent ? 1 : 0;\n }\n if ('isChild' in row) {\n row.isChild = trans.isChild ? 1 : 0;\n }\n if ('cleared' in row) {\n row.cleared = trans.cleared ? 1 : 0;\n }\n if ('pending' in row) {\n row.pending = trans.pending ? 1 : 0;\n }\n if ('starting_balance_flag' in row) {\n row.starting_balance_flag = trans.starting_balance_flag ? 1 : 0;\n }\n if ('date' in row) {\n row.date = toDateRepr(trans.date);\n }\n\n return row;\n }\n};\n","import { sequential } from '../shared/async';\nimport { captureException, captureBreadcrumb } from '../platform/exceptions';\n\nlet runningMethods = new Set();\n\nlet currentContext = null;\nlet mutatingMethods = new WeakMap();\nlet globalMutationsEnabled = false;\n\nlet _latestHandlerNames = [];\n\nexport function mutator(handler) {\n mutatingMethods.set(handler, true);\n return handler;\n}\n\nexport function isMutating(handler) {\n return mutatingMethods.has(handler);\n}\n\nasync function flushRunningMethods() {\n // Give the client some time to invoke new requests\n await wait(200);\n\n while (runningMethods.size > 0) {\n // Wait for all of them\n await Promise.all([...runningMethods.values()]);\n\n // We give clients more time to make other requests. This lets them continue\n // to do an async workflow\n await wait(100);\n }\n}\n\nfunction wait(time) {\n return new Promise(resolve => setTimeout(resolve, time));\n}\n\nexport async function runHandler(handler, args, { undoTag, name } = {}) {\n // For debug reasons, track the latest handlers that have been\n // called\n _latestHandlerNames.push(name);\n if (_latestHandlerNames.length > 5) {\n _latestHandlerNames = _latestHandlerNames.slice(-5);\n }\n\n if (mutatingMethods.has(handler)) {\n return runMutator(() => handler(args), { undoTag });\n }\n\n // When closing a file, it clears out all global state for the file. That\n // means any async workflows currently executed would be cut off. We handle\n // this by letting all async workflows finish executing before closing the\n // file\n if (name === 'close-budget') {\n await flushRunningMethods();\n }\n\n let promise = handler(args);\n runningMethods.add(promise);\n promise.then(() => {\n runningMethods.delete(promise);\n });\n return promise;\n}\n\n// These are useful for tests. Only use them in tests.\nexport function enableGlobalMutations() {\n if (global.__TESTING__) {\n globalMutationsEnabled = true;\n }\n}\n\nexport function disableGlobalMutations() {\n if (global.__TESTING__) {\n globalMutationsEnabled = false;\n }\n}\n\nexport const runMutator = sequential(async (func, initialContext = {}) => {\n currentContext = initialContext;\n return func().finally(() => {\n currentContext = null;\n });\n});\n\nexport function withMutatorContext(context, func) {\n if (currentContext == null && !globalMutationsEnabled) {\n captureBreadcrumb('Recent methods: ' + _latestHandlerNames.join(', '));\n captureException(new Error('withMutatorContext: mutator not running'));\n\n // See comment below. This is not an error right now, but it will\n // be in the future.\n return func();\n }\n\n let prevContext = currentContext;\n currentContext = { ...currentContext, ...context };\n return func().finally(() => {\n currentContext = prevContext;\n });\n}\n\nexport function getMutatorContext() {\n if (currentContext == null) {\n captureBreadcrumb({\n category: 'server',\n message: 'Recent methods: ' + _latestHandlerNames.join(', ')\n });\n // captureException(new Error('getMutatorContext: mutator not running'));\n\n // For now, this is a non-fatal error. It will be in the future,\n // but this is relatively non-critical (undo just won't work) so\n // return an empty context. When we have more confidence that\n // everything is running inside a mutator, throw an error.\n return {};\n }\n\n if (currentContext == null && globalMutationsEnabled) {\n return {};\n }\n return currentContext;\n}\n","import { createApp } from '../app';\nimport * as db from '../db';\n\nlet app = createApp();\n\napp.method('notes-save', async ({ id, note }) => {\n await db.update('notes', { id, note });\n});\n\nexport default app;\n","let enabled = false;\nlet entries = {};\nlet counters = {};\n\nexport function reset() {\n entries = {};\n counters = {};\n}\n\nexport function record(name) {\n const start = Date.now();\n return () => unrecord(name, start);\n}\n\nfunction unrecord(name, start) {\n const end = Date.now();\n\n if (enabled) {\n if (entries[name] == null) {\n entries[name] = [];\n }\n entries[name].push(end - start);\n }\n}\n\nexport function increment(name) {\n if (enabled) {\n if (counters[name] == null) {\n counters[name] = 0;\n }\n counters[name]++;\n }\n}\n\nexport function start() {\n enabled = true;\n}\n\nexport function stop() {\n enabled = false;\n\n console.log('~~ PERFORMANCE REPORT ~~');\n for (let name in entries) {\n const records = entries[name];\n const total = records.reduce((total, n) => total + n / 1000, 0);\n const avg = total / records.length;\n\n console.log(\n `[${name}] count: ${records.length} total: ${total}s avg: ${avg}`\n );\n }\n\n for (let name in counters) {\n console.log(`[${name}] ${counters[name]}`);\n }\n console.log('~~ END REPORT ~~');\n\n reset();\n}\n","export default {\n isMobile: false,\n isWeb: false,\n isDesktop: true\n};\n","// By default, no polyfills are installed\n","import Platform from './platform';\nconst { PostError, HTTPError } = require('./errors');\nconst { fetch } = require('../platform/server/fetch');\n\nfunction throwIfNot200(res, text) {\n if (res.status !== 200) {\n if (res.status === 500) {\n throw new PostError(res.status === 500 ? 'internal' : text);\n }\n\n let contentType = res.headers.get('Content-Type');\n if (contentType.toLowerCase().indexOf('application/json') !== -1) {\n let json = JSON.parse(text);\n throw new PostError(json.reason);\n }\n throw new PostError(text);\n }\n}\n\nexport async function post(url, data) {\n let text;\n let res;\n\n let s = new Error().stack;\n\n try {\n res = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n text = await res.text();\n } catch (err) {\n throw new PostError('network-failure');\n }\n\n throwIfNot200(res, text);\n\n try {\n res = JSON.parse(text);\n } catch (err) {\n // Something seriously went wrong. TODO handle errors\n throw new PostError('parse-json', { meta: text });\n }\n\n if (res.status !== 'ok') {\n console.log(\n 'API call failed: ' +\n url +\n '\\nData: ' +\n JSON.stringify(data, null, 2) +\n '\\nResponse: ' +\n JSON.stringify(res, null, 2)\n );\n\n throw new PostError(res.description || res.reason || 'unknown');\n }\n\n return res.data;\n}\n\nexport async function postBinary(url, data, headers) {\n let res;\n try {\n res = await fetch(url, {\n method: 'POST',\n body: Platform.isWeb ? data : Buffer.from(data),\n headers: {\n 'Content-Length': data.length,\n 'Content-Type': 'application/actual-sync',\n ...headers\n }\n });\n } catch (err) {\n throw new PostError('network-failure');\n }\n\n let buffer;\n if (res.arrayBuffer) {\n buffer = Buffer.from(await res.arrayBuffer());\n } else {\n buffer = await res.buffer();\n }\n\n throwIfNot200(res, buffer.toString());\n\n return buffer;\n}\n\nexport function get(url, opts) {\n return fetch(url, opts).then(res => res.text());\n}\n","import { sendMessages } from './sync';\nimport Timestamp from './timestamp';\nconst fs = require('../platform/server/fs');\n\nlet prefs = null;\n\nexport async function loadPrefs(id) {\n if (global.__TESTING__ && !id) {\n prefs = { dummyTestPrefs: true };\n return prefs;\n }\n\n const fullpath = fs.join(fs.getBudgetDir(id), 'metadata.json');\n\n try {\n prefs = JSON.parse(await fs.readFile(fullpath));\n } catch (e) {\n // If the user messed something up, be flexible and allow them to\n // still load the budget database. Default the budget name to the\n // id.\n prefs = { id, budgetName: id };\n }\n\n // No matter what is in `id` field, force it to be the current id.\n // This makes it resilient to users moving around folders, etc\n prefs.id = id;\n return prefs;\n}\n\nexport async function savePrefs(prefsToSet, { avoidSync = false } = {}) {\n Object.assign(prefs, prefsToSet);\n\n if (!avoidSync) {\n // Sync whitelisted prefs\n let messages = Object.keys(prefsToSet)\n .map(key => {\n if (key === 'budgetType' || key === 'budgetName') {\n return {\n dataset: 'prefs',\n row: key,\n column: 'value',\n value: prefsToSet[key],\n timestamp: Timestamp.send()\n };\n }\n return null;\n })\n .filter(x => x);\n\n if (messages.length > 0) {\n await sendMessages(messages);\n }\n }\n\n if (!prefs.dummyTestPrefs) {\n let prefsPath = fs.join(fs.getBudgetDir(prefs.id), 'metadata.json');\n await fs.writeFile(prefsPath, JSON.stringify(prefs));\n }\n}\n\nexport function unloadPrefs() {\n prefs = null;\n}\n\nexport function getPrefs() {\n return prefs;\n}\n\nexport function getDefaultPrefs(id, budgetName) {\n // Add any notifications in here that new users shouldn't see.\n // Without them, a popup will show to explain a new feature.\n return {\n id,\n budgetName,\n 'notifications.schedules': true,\n 'notifications.repair-splits': true\n };\n}\n\nexport async function readPrefs(id) {\n const fullpath = fs.join(fs.getBudgetDir(id), 'metadata.json');\n\n try {\n return JSON.parse(await fs.readFile(fullpath));\n } catch (e) {\n return null;\n }\n}\n","import deepEqual from 'deep-equal';\nimport * as d from 'date-fns';\nimport { createApp } from '../app';\nimport * as db from '../db';\nimport * as prefs from '../prefs';\nimport { toDateRepr } from '../models';\nimport { runQuery as aqlQuery } from '../aql/schema/run-query';\nimport { compileQuery } from '../aql/compiler';\nimport { schema, schemaConfig } from '../aql/schema';\nimport { dayFromDate, currentDay, parseDate } from '../../shared/months';\nimport q from '../../shared/query';\nimport {\n insertRule,\n updateRule,\n getRules,\n ruleModel\n} from '../accounts/transaction-rules';\nimport { Rule, Condition } from '../accounts/rules';\nimport {\n extractScheduleConds,\n recurConfigToRSchedule,\n getHasTransactionsQuery,\n getStatus,\n getScheduledAmount\n} from '../../shared/schedules';\nimport { mutator, runMutator } from '../mutators';\nimport { undoable } from '../undo';\nimport { Schedule as RSchedule } from '../util/rschedule';\nimport { addSyncListener, batchMessages } from '../sync';\nimport { captureBreadcrumb } from '../../platform/exceptions';\nimport { addTransactions } from '../accounts/sync';\nimport { findSchedules } from './find-schedules';\n\nconst connection = require('../../platform/server/connection');\nconst uuid = require('../../platform/uuid');\n\n// Utilities\n\nfunction zip(arr1, arr2) {\n let result = [];\n for (let i = 0; i < arr1.length; i++) {\n result.push([arr1[i], arr2[i]]);\n }\n return result;\n}\n\nexport function updateConditions(conditions, newConditions) {\n let scheduleConds = extractScheduleConds(conditions);\n let newScheduleConds = extractScheduleConds(newConditions);\n\n let replacements = zip(\n Object.values(scheduleConds),\n Object.values(newScheduleConds)\n );\n\n let updated = conditions.map(cond => {\n let r = replacements.find(r => cond === r[0]);\n return r && r[1] ? r[1] : cond;\n });\n\n let added = replacements\n .filter(x => x[0] == null && x[1] != null)\n .map(x => x[1]);\n\n return updated.concat(added);\n}\n\nexport function getNextDate(dateCond, start = new Date()) {\n start = d.startOfDay(start);\n\n let cond = new Condition(\n dateCond.op,\n 'date',\n dateCond.value,\n null,\n new Map(Object.entries({ date: 'date' }))\n );\n let value = cond.getValue();\n\n if (value.type === 'date') {\n return value.date;\n } else if (value.type === 'recur') {\n let dates = value.schedule.occurrences({ start, take: 1 }).toArray();\n\n if (dates.length > 0) {\n let date = dates[0].date;\n return dayFromDate(date);\n }\n }\n return null;\n}\n\nexport async function getRuleForSchedule(id) {\n if (id == null) {\n throw new Error('Schedule not attached to a rule');\n }\n\n let { data: ruleId } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .calculate('rule')\n );\n return getRules().find(rule => rule.id === ruleId);\n}\n\nexport async function fixRuleForSchedule(id) {\n let { data: ruleId } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .calculate('rule')\n );\n\n if (ruleId) {\n // Take the bad rule out of the system so it never causes problems\n // in the future\n await db.delete_('rules', ruleId);\n }\n\n let newId = await insertRule({\n stage: null,\n conditions: [\n { op: 'isapprox', field: 'date', value: currentDay() },\n { op: 'isapprox', field: 'amount', value: 0 }\n ],\n actions: [{ op: 'link-schedule', value: id }]\n });\n\n await db.updateWithSchema('schedules', { id, rule: newId });\n\n return getRules().find(rule => rule.id === newId);\n}\n\nexport async function setNextDate({ id, start, conditions, reset }) {\n if (conditions == null) {\n let rule = await getRuleForSchedule(id);\n if (rule == null) {\n throw new Error('No rule found for schedule');\n }\n conditions = rule.serialize().conditions;\n }\n\n let { date: dateCond } = extractScheduleConds(conditions);\n\n let { data: nextDate } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .calculate('next_date')\n );\n\n // Only do this if a date condition exists\n if (dateCond) {\n let newNextDate = getNextDate(\n dateCond,\n start ? start(nextDate) : new Date()\n );\n\n if (newNextDate !== nextDate) {\n // Our `update` functon requires the id of the item and we don't\n // have it, so we need to query it\n let nd = await db.first(\n 'SELECT id, base_next_date_ts FROM schedules_next_date WHERE schedule_id = ?',\n [id]\n );\n\n await db.update(\n 'schedules_next_date',\n reset\n ? {\n id: nd.id,\n base_next_date: toDateRepr(newNextDate),\n base_next_date_ts: Date.now()\n }\n : {\n id: nd.id,\n local_next_date: toDateRepr(newNextDate),\n local_next_date_ts: nd.base_next_date_ts\n }\n );\n }\n }\n}\n\n// Methods\n\nexport async function createSchedule({ schedule, conditions = [] } = {}) {\n let scheduleId = (schedule && schedule.id) || uuid.v4Sync();\n\n let { date: dateCond } = extractScheduleConds(conditions);\n if (dateCond == null) {\n throw new Error('A date condition is required to create a schedule');\n }\n if (dateCond.value == null) {\n throw new Error('Date is required');\n }\n\n let nextDate = getNextDate(dateCond);\n let nextDateRepr = nextDate ? toDateRepr(nextDate) : null;\n\n // Create the rule here based on the info\n let ruleId;\n ruleId = await insertRule({\n stage: null,\n conditions,\n actions: [{ op: 'link-schedule', value: scheduleId }]\n });\n\n let now = Date.now();\n let nextDateId = await db.insertWithUUID('schedules_next_date', {\n schedule_id: scheduleId,\n local_next_date: nextDateRepr,\n local_next_date_ts: now,\n base_next_date: nextDateRepr,\n base_next_date_ts: now\n });\n\n let id = await db.insertWithSchema('schedules', {\n ...schedule,\n id: scheduleId,\n rule: ruleId\n });\n\n return scheduleId;\n}\n\n// TODO: don't allow deleting rules that link schedules\n\nexport async function updateSchedule({ schedule, conditions, resetNextDate }) {\n if (schedule.rule) {\n throw new Error('You cannot change the rule of a schedule');\n }\n\n // We need the rule if there are conditions\n let rule;\n\n // This must be outside the `batchMessages` call because we change\n // and then read data\n if (conditions) {\n let { date: dateCond } = extractScheduleConds(conditions);\n if (dateCond && dateCond.value == null) {\n throw new Error('Date is required');\n }\n\n // We need to get the full rule to merge in the updated\n // conditions\n rule = await getRuleForSchedule(schedule.id);\n\n if (rule == null) {\n // In the edge case that a rule gets corrupted (either by a bug in\n // the system or user messing with their data), don't crash. We\n // generate a new rule because schedules have to have a rule\n // attached to them.\n rule = await fixRuleForSchedule(schedule.id);\n }\n }\n\n await batchMessages(async () => {\n if (conditions) {\n let oldConditions = rule.serialize().conditions;\n let newConditions = updateConditions(oldConditions, conditions);\n\n await updateRule({ id: rule.id, conditions: newConditions });\n\n // Annoyingly, sometimes it has `type` and sometimes it doesn't\n let stripType = ({ type, ...fields }) => fields;\n\n // Update `next_date` if the user forced it, or if the account\n // or date changed. We check account because we don't update\n // schedules automatically for closed account, and the user\n // might switch accounts from a closed one\n if (\n resetNextDate ||\n !deepEqual(\n oldConditions.find(c => c.field === 'account'),\n oldConditions.find(c => c.field === 'account')\n ) ||\n !deepEqual(\n stripType(oldConditions.find(c => c.field === 'date')),\n stripType(newConditions.find(c => c.field === 'date'))\n )\n ) {\n await setNextDate({\n id: schedule.id,\n conditions: newConditions,\n reset: true\n });\n }\n } else if (resetNextDate) {\n await setNextDate({ id: schedule.id, reset: true });\n }\n\n await db.updateWithSchema('schedules', schedule);\n });\n}\n\nexport async function deleteSchedule({ id }) {\n let { data: ruleId } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .calculate('rule')\n );\n\n await batchMessages(async () => {\n await db.delete_('rules', ruleId);\n await db.delete_('schedules', id);\n });\n}\n\nexport async function skipNextDate({ id }) {\n return setNextDate({\n id,\n start: nextDate => {\n return d.addDays(parseDate(nextDate), 1);\n }\n });\n}\n\n// `schedule` here might not be a saved schedule, so it might not have\n// an id\nexport function getPossibleTransactions({ schedule }) {}\n\nexport function discoverSchedules() {\n return findSchedules();\n}\n\nexport async function getUpcomingDates({ config, count }) {\n let rules = recurConfigToRSchedule(config);\n\n try {\n let schedule = new RSchedule({ rrules: rules });\n\n return schedule\n .occurrences({ start: d.startOfDay(new Date()), take: count })\n .toArray()\n .map(date => dayFromDate(date.date));\n } catch (err) {\n captureBreadcrumb(config);\n throw err;\n }\n}\n\n// Services\n\nfunction onRuleUpdate(rule) {\n let { actions, conditions } =\n rule instanceof Rule ? rule.serialize() : ruleModel.toJS(rule);\n\n if (actions && actions.find(a => a.op === 'link-schedule')) {\n let scheduleId = actions.find(a => a.op === 'link-schedule').value;\n\n if (scheduleId) {\n let conds = extractScheduleConds(conditions);\n\n let payeeIdx = conditions.findIndex(c => c === conds.payee);\n let accountIdx = conditions.findIndex(c => c === conds.account);\n let amountIdx = conditions.findIndex(c => c === conds.amount);\n let dateIdx = conditions.findIndex(c => c === conds.date);\n\n db.runQuery(\n 'INSERT OR REPLACE INTO schedules_json_paths (schedule_id, payee, account, amount, date) VALUES (?, ?, ?, ?, ?)',\n [\n scheduleId,\n payeeIdx === -1 ? null : `$[${payeeIdx}]`,\n accountIdx === -1 ? null : `$[${accountIdx}]`,\n amountIdx === -1 ? null : `$[${amountIdx}]`,\n dateIdx === -1 ? null : `$[${dateIdx}]`\n ]\n );\n }\n }\n}\n\nfunction trackJSONPaths() {\n // Populate the table\n db.transaction(() => {\n getRules().forEach(rule => {\n onRuleUpdate(rule);\n });\n });\n\n return addSyncListener(onApplySync);\n}\n\nfunction onApplySync(oldValues, newValues) {\n let found = false;\n newValues.forEach((items, table) => {\n if (table === 'rules') {\n found = true;\n items.forEach(newValue => {\n onRuleUpdate(newValue);\n });\n }\n });\n}\n\n// This is the service that move schedules forward automatically and\n// posts transactions\n\nasync function postTransactionForSchedule({ id }) {\n let { data } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .select('*')\n );\n let schedule = data[0];\n if (schedule == null || schedule._account == null) {\n return;\n }\n\n let transaction = {\n payee: schedule._payee,\n account: schedule._account,\n amount: getScheduledAmount(schedule._amount),\n date: schedule.next_date,\n schedule: schedule.id,\n cleared: false\n };\n\n if (transaction.account) {\n await addTransactions(transaction.account, [transaction]);\n }\n}\n\n// TODO: make this sequential\n\nexport async function advanceSchedulesService(syncSuccess) {\n // Move all paid schedules\n let { data: schedules } = await aqlQuery(\n q('schedules')\n .filter({ completed: false, '_account.closed': false })\n .select('*')\n );\n let { data: hasTransData } = await aqlQuery(\n getHasTransactionsQuery(schedules)\n );\n let hasTrans = new Set(hasTransData.filter(Boolean).map(row => row.schedule));\n\n let failedToPost = [];\n let didPost = false;\n\n for (let schedule of schedules) {\n let status = getStatus(\n schedule.next_date,\n schedule.completed,\n hasTrans.has(schedule.id)\n );\n\n if (status === 'paid') {\n if (schedule._date) {\n // Move forward recurring schedules\n if (schedule._date.frequency) {\n try {\n await setNextDate({ id: schedule.id });\n } catch (err) {\n // This might error if the rule is corrupted and it can't\n // find the rule\n }\n } else {\n if (schedule._date < currentDay()) {\n // Complete any single schedules\n await updateSchedule({\n schedule: { id: schedule.id, completed: true }\n });\n }\n }\n }\n } else if (\n (status === 'due' || status === 'missed') &&\n schedule.posts_transaction &&\n schedule._account\n ) {\n // Automatically create a transaction for due schedules\n if (syncSuccess) {\n await postTransactionForSchedule({ id: schedule.id });\n\n didPost = true;\n } else {\n failedToPost.push(schedule._payee);\n }\n }\n }\n\n if (failedToPost.length > 0) {\n connection.send('schedules-offline', { payees: failedToPost });\n } else if (didPost) {\n // This forces a full refresh of transactions because it\n // simulates them coming in from a full sync. This not a\n // great API right now, but I think generally the approach\n // is sane to treat them as external sync events.\n connection.send('sync-event', {\n type: 'success',\n tables: ['transactions'],\n syncDisabled: 'false'\n });\n }\n}\n\n// Expose functions to the client\nlet app = createApp();\n\napp.method('schedule/create', mutator(undoable(createSchedule)));\napp.method('schedule/update', mutator(undoable(updateSchedule)));\napp.method('schedule/delete', mutator(undoable(deleteSchedule)));\napp.method('schedule/skip-next-date', mutator(undoable(skipNextDate)));\napp.method(\n 'schedule/post-transaction',\n mutator(undoable(postTransactionForSchedule))\n);\napp.method(\n 'schedule/force-run-service',\n mutator(() => advanceSchedulesService(true))\n);\napp.method('schedule/get-possible-transactions', getPossibleTransactions);\napp.method('schedule/discover', discoverSchedules);\napp.method('schedule/get-upcoming-dates', getUpcomingDates);\n\napp.service(trackJSONPaths);\n\napp.events.on('sync', ({ type, subtype }) => {\n let completeEvent =\n type === 'success' || type === 'error' || type === 'unauthorized';\n\n if (completeEvent && prefs.getPrefs()) {\n let { lastScheduleRun } = prefs.getPrefs();\n\n if (lastScheduleRun !== currentDay()) {\n runMutator(() => advanceSchedulesService(type === 'success'));\n\n prefs.savePrefs({ lastScheduleRun: currentDay() });\n }\n }\n});\n\nexport default app;\n","import * as d from 'date-fns';\nimport * as db from '../db';\nimport { Schedule as RSchedule } from '../util/rschedule';\nimport { groupBy } from '../../shared/util';\nimport { fromDateRepr } from '../models';\nimport { runQuery as aqlQuery } from '../aql/schema/run-query';\nimport q from '../../shared/query';\nimport { getApproxNumberThreshold } from '../../shared/rules';\nimport { recurConfigToRSchedule } from '../../shared/schedules';\nimport { dayFromDate, parseDate, subDays } from '../../shared/months';\nimport { conditionsToAQL } from '../accounts/transaction-rules';\nconst uuid = require('../../platform/uuid');\n\nfunction takeDates(config) {\n let schedule = new RSchedule({ rrules: recurConfigToRSchedule(config) });\n return schedule\n .occurrences({ take: 3 })\n .toArray()\n .map(d => d.date);\n}\n\nasync function getTransactions(date, account) {\n let { data } = await aqlQuery(\n q('transactions')\n .filter({\n account,\n schedule: null,\n // Don't match transfers\n 'payee.transfer_acct': null,\n $and: [\n { date: { $gte: d.subDays(date, 2) } },\n { date: { $lte: d.addDays(date, 2) } }\n ]\n })\n .select('*')\n .options({ splits: 'none' })\n );\n return data;\n}\n\nfunction getRank(day1, day2) {\n let dayDiff = Math.abs(d.differenceInDays(parseDate(day1), parseDate(day2)));\n\n // The amount of days off determines the rank: exact same day\n // is highest rank 1, 1 day off is .5, etc. This will find the\n // best start date that matches all the dates the closest\n return 1 / (dayDiff + 1);\n}\n\nexport function matchSchedules(allOccurs, config, partialMatchRank = 0.5) {\n allOccurs = [...allOccurs].reverse();\n let baseOccur = allOccurs[0];\n let occurs = allOccurs.slice(1);\n let schedules = [];\n\n for (let trans of baseOccur.transactions) {\n let threshold = getApproxNumberThreshold(trans.amount);\n let payee = trans.payee;\n let account = trans.account;\n\n let found = occurs.map(occur => {\n let matched = occur.transactions.find(\n t =>\n t.amount >= trans.amount - threshold &&\n t.amount <= trans.amount + threshold\n );\n matched = matched && matched.payee === payee ? matched : null;\n\n if (matched) {\n return { trans: matched, rank: getRank(occur.date, matched.date) };\n }\n return null;\n });\n\n if (found.indexOf(null) !== -1) {\n continue;\n }\n\n let rank = found.reduce(\n (total, match) => total + match.rank,\n getRank(baseOccur.date, trans.date)\n );\n\n let exactAmount = found.reduce(\n (exact, match) => exact && match.trans.amount === trans.amount,\n true\n );\n\n schedules.push({\n rank,\n amount: trans.amount,\n account: trans.account,\n payee: trans.payee,\n date: config,\n // Exact dates rank as 1, so all of them matches exactly it\n // would equal the number of `allOccurs`\n exactDate: rank === allOccurs.length,\n exactAmount\n });\n }\n\n return schedules;\n}\n\nasync function schedulesForPattern(\n baseStart,\n numDays,\n baseConfig,\n accountId,\n partialMatchRank\n) {\n let schedules = [];\n\n let i = 0;\n for (let i = 0; i < numDays; i++) {\n let start = d.addDays(baseStart, i);\n let config;\n if (typeof baseConfig === 'function') {\n config = baseConfig(start);\n\n if (config === false) {\n // Skip this one\n continue;\n }\n } else {\n config = { ...baseConfig, start };\n }\n\n // Our recur config expects a day string, not a native date format\n config.start = dayFromDate(config.start);\n\n let data = [];\n let dates = takeDates(config);\n for (let date of dates) {\n data.push({\n date: dayFromDate(date),\n transactions: await getTransactions(date, accountId)\n });\n }\n\n schedules = schedules.concat(\n matchSchedules(data, config, partialMatchRank)\n );\n }\n return schedules;\n}\n\nasync function weekly(startDate, accountId) {\n return schedulesForPattern(\n d.subWeeks(parseDate(startDate), 4),\n 7 * 2,\n { frequency: 'weekly' },\n accountId\n );\n}\n\nasync function every2weeks(startDate, accountId) {\n return schedulesForPattern(\n // 6 weeks would cover 3 instances, but we also scan an addition\n // week back\n d.subWeeks(parseDate(startDate), 7),\n 7 * 2,\n { frequency: 'weekly', interval: 2 },\n accountId\n );\n}\n\nasync function monthly(startDate, accountId) {\n return schedulesForPattern(\n d.subMonths(parseDate(startDate), 4),\n 31 * 2,\n start => {\n // 28 is the max number of days that all months are guaranteed\n // to have. We don't want to go any higher than that because\n // we'll end up skipping months that don't have that day.\n // The use cases of end of month days will be covered with the\n // `monthlyLastDay` pattern;\n if (d.getDate(start) > 28) {\n return false;\n }\n return { start, frequency: 'monthly' };\n },\n accountId\n );\n}\n\nasync function monthlyLastDay(startDate, accountId) {\n // We do two separate calls because this pattern doesn't fit into\n // how `schedulesForPattern` works\n let s1 = await schedulesForPattern(\n d.subMonths(parseDate(startDate), 3),\n 1,\n { frequency: 'monthly', patterns: [{ type: 'day', value: -1 }] },\n accountId,\n // Last day patterns should win over day-specific ones that just\n // happen to match\n 0.75\n );\n\n let s2 = await schedulesForPattern(\n d.subMonths(parseDate(startDate), 4),\n 1,\n { frequency: 'monthly', patterns: [{ type: 'day', value: -1 }] },\n accountId,\n 0.75\n );\n\n return s1.concat(s2);\n}\n\nasync function monthly1stor3rd(startDate, accountId) {\n return schedulesForPattern(\n d.subWeeks(parseDate(startDate), 8),\n 14,\n start => {\n let day = d.format(new Date(), 'iiii');\n let dayValue = day.slice(0, 2).toUpperCase();\n\n return {\n start,\n frequency: 'monthly',\n patterns: [{ type: dayValue, value: 1 }, { type: dayValue, value: 3 }]\n };\n },\n accountId\n );\n}\n\nasync function monthly2ndor4th(startDate, accountId) {\n return schedulesForPattern(\n d.subMonths(parseDate(startDate), 8),\n 14,\n start => {\n let day = d.format(new Date(), 'iiii');\n let dayValue = day.slice(0, 2).toUpperCase();\n\n return {\n start,\n frequency: 'monthly',\n patterns: [{ type: dayValue, value: 2 }, { type: dayValue, value: 4 }]\n };\n },\n accountId\n );\n}\n\nasync function findStartDate(schedule) {\n let conditions = schedule._conditions;\n let dateCond = conditions.find(c => c.field === 'date');\n let currentConfig = dateCond.value;\n\n while (1) {\n let prevConfig = currentConfig;\n currentConfig = { ...prevConfig };\n\n switch (currentConfig.frequency) {\n case 'weekly':\n currentConfig.start = dayFromDate(\n d.subWeeks(\n parseDate(currentConfig.start),\n currentConfig.interval || 1\n )\n );\n\n break;\n case 'monthly':\n currentConfig.start = dayFromDate(\n d.subMonths(\n parseDate(currentConfig.start),\n currentConfig.interval || 1\n )\n );\n break;\n case 'yearly':\n currentConfig.start = dayFromDate(\n d.subYears(\n parseDate(currentConfig.start),\n currentConfig.interval || 1\n )\n );\n break;\n default:\n throw new Error('findStartDate: invalid frequency');\n }\n\n let newConditions = conditions.map(c =>\n c.field === 'date' ? { ...c, value: currentConfig } : c\n );\n\n let { filters, errors } = conditionsToAQL(newConditions, {\n recurDateBounds: 1\n });\n if (errors.length > 0) {\n // Somehow we generated an invalid config. Abort the whole\n // process and don't change the date at all\n currentConfig = null;\n break;\n }\n\n let { data } = await aqlQuery(\n q('transactions')\n .filter({ $and: filters })\n .select('*')\n );\n\n if (data.length === 0) {\n // No data, revert back to the last valid value and stop\n currentConfig = prevConfig;\n break;\n }\n }\n\n if (currentConfig) {\n return {\n ...schedule,\n date: currentConfig,\n _conditions: conditions.map(c =>\n c.field === 'date' ? { ...c, value: currentConfig } : c\n )\n };\n }\n return schedule;\n}\n\nexport async function findSchedules() {\n // Patterns to look for:\n // * Weekly\n // * Every two weeks\n // * Monthly on day X\n // * Monthly on every 1st or 3rd day\n // * Monthly on every 2nd or 4th day\n //\n // Search for them approx (+- 2 days) but track which transactions\n // and find the best one...\n\n let { data: accounts } = await aqlQuery(\n q('accounts')\n .filter({ closed: false })\n .select('*')\n );\n\n let allSchedules = [];\n\n for (let account of accounts) {\n // Find latest transaction-ish to start with\n let latestTrans = await db.first(\n 'SELECT * FROM v_transactions WHERE account = ? AND parent_id IS NULL ORDER BY date DESC LIMIT 1',\n [account.id]\n );\n\n if (latestTrans) {\n let latestDate = fromDateRepr(latestTrans.date);\n allSchedules = allSchedules.concat(\n await weekly(latestDate, account.id),\n await every2weeks(latestDate, account.id),\n await monthly(latestDate, account.id),\n await monthlyLastDay(latestDate, account.id),\n await monthly1stor3rd(latestDate, account.id),\n await monthly2ndor4th(latestDate, account.id)\n );\n }\n }\n\n let schedules = [...groupBy(allSchedules, 'payee').entries()].map(\n ([payeeId, schedules]) => {\n schedules.sort((s1, s2) => s2.rank - s1.rank);\n let winner = schedules[0];\n\n // Convert to schedule and return it\n return {\n id: uuid.v4Sync(),\n account: winner.account,\n payee: winner.payee,\n date: winner.date,\n amount: winner.amount,\n _conditions: [\n { op: 'is', field: 'account', value: winner.account },\n { op: 'is', field: 'payee', value: winner.payee },\n {\n op: winner.exactDate ? 'is' : 'isapprox',\n field: 'date',\n value: winner.date\n },\n {\n op: winner.exactAmount ? 'is' : 'isapprox',\n field: 'amount',\n value: winner.amount\n }\n ]\n };\n }\n );\n\n let finalized = [];\n for (let schedule of schedules) {\n finalized.push(await findStartDate(schedule));\n }\n return finalized;\n}\n","import fs from '../platform/server/fs';\n\nlet config = null;\n\nfunction joinURL(base, ...paths) {\n let url = new URL(base);\n url.pathname = fs.join(...paths);\n return url.toString();\n}\n\nexport function setServer(url) {\n if (url == null) {\n config = null;\n } else {\n config = getServer(url);\n }\n}\n\n// `url` is optional; if not given it will provide the global config\nexport function getServer(url) {\n if (url) {\n return {\n BASE_SERVER: url,\n SYNC_SERVER: joinURL(url, '/sync'),\n SIGNUP_SERVER: joinURL(url, '/account'),\n PLAID_SERVER: joinURL(url, '/plaid')\n };\n }\n return config;\n}\n","import Spreadsheet from './spreadsheet/spreadsheet';\nimport * as prefs from './prefs';\nimport { captureBreadcrumb } from '../platform/exceptions';\nimport * as sqlite from '../platform/server/sqlite';\nimport { sheetForMonth } from '../shared/months';\nimport Platform from './platform';\nconst { resolveName } = require('./spreadsheet/util');\n\nlet globalSheet, globalOnChange;\nlet globalCacheDb;\n\nexport function get() {\n return globalSheet;\n}\n\nasync function updateSpreadsheetCache(rawDb, names) {\n await sqlite.transaction(rawDb, () => {\n names.forEach(name => {\n const node = globalSheet._getNode(name);\n\n // Don't cache query nodes yet\n if (node.sql == null) {\n sqlite.runQuery(\n rawDb,\n 'INSERT OR REPLACE INTO kvcache (key, value) VALUES (?, ?)',\n [name, JSON.stringify(node.value)]\n );\n }\n });\n });\n}\n\nfunction setCacheStatus(mainDb, cacheDb, { clean }) {\n if (clean) {\n // Generate random number and stick in both places\n let num = Math.random() * 10000000;\n sqlite.runQuery(\n cacheDb,\n 'INSERT OR REPLACE INTO kvcache_key (id, key) VALUES (1, ?)',\n [num]\n );\n\n if (mainDb) {\n sqlite.runQuery(\n mainDb,\n 'INSERT OR REPLACE INTO kvcache_key (id, key) VALUES (1, ?)',\n [num]\n );\n }\n } else {\n sqlite.runQuery(cacheDb, 'DELETE FROM kvcache_key');\n }\n}\n\nfunction isCacheDirty(mainDb, cacheDb) {\n let rows = sqlite.runQuery(\n cacheDb,\n 'SELECT key FROM kvcache_key WHERE id = 1',\n [],\n true\n );\n let num = rows.length === 0 ? null : rows[0].key;\n\n if (num == null) {\n return true;\n }\n\n if (mainDb) {\n let rows = sqlite.runQuery(\n mainDb,\n 'SELECT key FROM kvcache_key WHERE id = 1',\n [],\n true\n );\n if (rows.length === 0 || rows[0].key !== num) {\n return true;\n }\n }\n\n // Always also check if there is anything in `kvcache`. We ask for one item;\n // if we didn't get back anything it's empty so there is no cache\n rows = sqlite.runQuery(cacheDb, 'SELECT * FROM kvcache LIMIT 1', [], true);\n return rows.length === 0;\n}\n\nexport async function loadSpreadsheet(db, onSheetChange) {\n let cacheEnabled = !global.__TESTING__;\n let mainDb = db.getDatabase();\n let cacheDb;\n\n if (Platform.isDesktop && cacheEnabled) {\n // Desktop apps use a separate database for the cache. This is because it is\n // much more likely to directly work with files on desktop, and this makes\n // it a lot clearer what the true filesize of the main db is (and avoid\n // copying the cache data around).\n let cachePath = db.getDatabasePath().replace(/db\\.sqlite$/, 'cache.sqlite');\n globalCacheDb = cacheDb = sqlite.openDatabase(cachePath);\n\n sqlite.execQuery(\n cacheDb,\n `\n CREATE TABLE IF NOT EXISTS kvcache (key TEXT PRIMARY KEY, value TEXT);\n CREATE TABLE IF NOT EXISTS kvcache_key (id INTEGER PRIMARY KEY, key REAL)\n `\n );\n } else {\n // All other platforms use the same database for cache\n cacheDb = mainDb;\n }\n\n let sheet;\n if (cacheEnabled) {\n sheet = new Spreadsheet(\n updateSpreadsheetCache.bind(null, cacheDb),\n setCacheStatus.bind(null, mainDb, cacheDb)\n );\n } else {\n sheet = new Spreadsheet();\n }\n\n captureBreadcrumb({\n message: 'loading spreaadsheet',\n category: 'server'\n });\n\n globalSheet = sheet;\n globalOnChange = onSheetChange;\n\n if (onSheetChange) {\n sheet.addEventListener('change', onSheetChange);\n }\n\n if (cacheEnabled && !isCacheDirty(mainDb, cacheDb)) {\n let cachedRows = await sqlite.runQuery(\n cacheDb,\n 'SELECT * FROM kvcache',\n [],\n true\n );\n console.log(`Loaded spreadsheet from cache (${cachedRows.length} items)`);\n\n for (let row of cachedRows) {\n let parsed = JSON.parse(row.value);\n sheet.load(row.key, parsed);\n }\n } else {\n console.log('Loading fresh spreadsheet');\n await loadUserBudgets(db);\n }\n\n captureBreadcrumb({\n message: 'loaded spreaadsheet',\n category: 'server'\n });\n\n return sheet;\n}\n\nexport function unloadSpreadsheet() {\n if (globalSheet) {\n // TODO: Should wait for the sheet to finish\n globalSheet.unload();\n globalSheet = null;\n }\n\n if (globalCacheDb) {\n sqlite.closeDatabase(globalCacheDb);\n globalCacheDb = null;\n }\n}\n\nexport async function reloadSpreadsheet(db) {\n if (globalSheet) {\n unloadSpreadsheet();\n return loadSpreadsheet(db, globalOnChange);\n }\n}\n\nexport async function loadUserBudgets(db) {\n let sheet = globalSheet;\n\n // TODO: Clear out the cache here so make sure future loads of the app\n // don't load any extra values that aren't set here\n\n let { budgetType } = prefs.getPrefs() || {};\n\n let table = budgetType === 'report' ? 'reflect_budgets' : 'zero_budgets';\n let budgets = await db.all(`\n SELECT * FROM ${table} b\n LEFT JOIN categories c ON c.id = b.category\n WHERE c.tombstone = 0\n `);\n\n sheet.startTransaction();\n\n // Load all the budget amounts and carryover values\n for (let budget of budgets) {\n if (budget.month && budget.category) {\n let sheetName = `budget${budget.month}`;\n sheet.set(`${sheetName}!budget-${budget.category}`, budget.amount);\n sheet.set(\n `${sheetName}!carryover-${budget.category}`,\n budget.carryover === 1 ? true : false\n );\n }\n }\n\n // For zero-based budgets, load the buffered amounts\n if (budgetType !== 'report') {\n let budgetMonths = await db.all('SELECT * FROM zero_budget_months');\n for (let budgetMonth of budgetMonths) {\n let sheetName = sheetForMonth(budgetMonth.id);\n sheet.set(`${sheetName}!buffered`, budgetMonth.buffered);\n }\n }\n\n sheet.endTransaction();\n}\n\nexport function getCell(sheet, name) {\n return globalSheet._getNode(resolveName(sheet, name));\n}\n\nexport function getCellValue(sheet, name) {\n return globalSheet.getValue(resolveName(sheet, name));\n}\n\nexport function startTransaction() {\n if (globalSheet) {\n globalSheet.startTransaction();\n }\n}\n\nexport function endTransaction() {\n if (globalSheet) {\n globalSheet.endTransaction();\n }\n}\n\nexport function waitOnSpreadsheet() {\n return new Promise(resolve => {\n if (globalSheet) {\n globalSheet.onFinish(resolve);\n } else {\n resolve();\n }\n });\n}\n","function first(arr) {\n return arr[0];\n}\n\nfunction firstValue(arr) {\n const keys = Object.keys(arr[0]);\n return arr[0][keys[0]];\n}\n\nfunction number(v) {\n if (typeof v === 'number') {\n return v;\n } else if (typeof v === 'string') {\n const parsed = parseFloat(v);\n if (isNaN(parsed)) {\n return 0;\n }\n return parsed;\n }\n\n return 0;\n}\n\nfunction min(x, y) {\n return Math.min(x, y);\n}\n\nfunction max(x, y) {\n return Math.max(x, y);\n}\n\nmodule.exports = {\n first,\n firstValue,\n number,\n min,\n max\n};\n","function Graph(serialized) {\n var graph = {\n addNode,\n removeNode,\n adjacent,\n adjacentIncoming,\n addEdge,\n removeEdge,\n removeIncomingEdges,\n topologicalSort,\n generateDOT,\n getEdges\n };\n\n var edges = new Map();\n var incomingEdges = new Map();\n\n function getEdges() {\n return { edges, incomingEdges };\n }\n\n function addNode(node) {\n edges.set(node, adjacent(node));\n incomingEdges.set(node, adjacentIncoming(node));\n return graph;\n }\n\n function removeIncomingEdges(node) {\n const incoming = adjacentIncoming(node);\n incomingEdges.set(node, new Set());\n\n let iter = incoming.values();\n let cur = iter.next();\n while (!cur.done) {\n removeEdge(cur.value, node);\n cur = iter.next();\n }\n }\n\n function removeNode(node) {\n removeIncomingEdges(node);\n edges.delete(node);\n incomingEdges.delete(node);\n }\n\n function adjacent(node) {\n return edges.get(node) || new Set();\n }\n\n function adjacentIncoming(node) {\n return incomingEdges.get(node) || new Set();\n }\n\n // Adds an edge from node u to node v.\n // Implicitly adds the nodes if they were not already added.\n function addEdge(node1, node2) {\n addNode(node1);\n addNode(node2);\n adjacent(node1).add(node2);\n adjacentIncoming(node2).add(node1);\n return graph;\n }\n\n // Removes the edge from node u to node v.\n // Does not remove the nodes.\n // Does nothing if the edge does not exist.\n function removeEdge(node1, node2) {\n if (edges.has(node1)) {\n adjacent(node1).delete(node2);\n }\n if (incomingEdges.has(node2)) {\n adjacentIncoming(node2).delete(node1);\n }\n return graph;\n }\n\n function topologicalSortUntil(name, visited, sorted) {\n visited.add(name);\n\n let iter = adjacent(name).values();\n let cur = iter.next();\n while (!cur.done) {\n if (!visited.has(cur.value)) {\n topologicalSortUntil(cur.value, visited, sorted);\n }\n cur = iter.next();\n }\n\n sorted.unshift(name);\n }\n\n function topologicalSort(sourceNodes) {\n const visited = new Set();\n const sorted = [];\n\n sourceNodes.forEach(name => {\n if (!visited.has(name)) {\n topologicalSortUntil(name, visited, sorted);\n }\n });\n\n return sorted;\n }\n\n function generateDOT() {\n let edgeStrings = [];\n edges.forEach(function(adj, edge) {\n if (adj.length !== 0) {\n edgeStrings.push(`${edge} -> {${adj.join(',')}}`);\n }\n });\n\n return `\n digraph G {\n ${edgeStrings.join('\\n').replace(/!/g, '_')}\n }\n `;\n }\n\n return graph;\n}\n\nmodule.exports = Graph;\n","import mitt from 'mitt';\nimport { schema, schemaConfig } from '../aql/schema';\nimport { compileQuery } from '../aql/compiler';\nimport { runCompiledQuery } from '../aql/schema/run-query';\n\nconst Graph = require('./graph-data-structure');\nconst { unresolveName, resolveName } = require('./util');\n\nexport default class Spreadsheet {\n constructor(saveCache, setCacheStatus) {\n this.graph = new Graph();\n this.nodes = new Map();\n this.transactionDepth = 0;\n this.saveCache = saveCache;\n this.setCacheStatus = setCacheStatus;\n this.dirtyCells = [];\n this.computeQueue = [];\n this.events = mitt();\n this._meta = {\n createdMonths: new Set()\n };\n }\n\n meta() {\n return this._meta;\n }\n\n setMeta(meta) {\n this._meta = meta;\n }\n\n // Spreadsheet interface\n\n _getNode(name) {\n const { sheet } = unresolveName(name);\n\n if (!this.nodes.has(name)) {\n this.nodes.set(name, {\n name,\n expr: null,\n value: null,\n sheet: sheet\n });\n }\n return this.nodes.get(name);\n }\n\n getNode(name) {\n return this._getNode(name);\n }\n\n hasCell(name) {\n return this.nodes.has(name);\n }\n\n add(name, expr, value) {\n this.set(name, expr);\n }\n\n getNodes() {\n return this.nodes;\n }\n\n serialize() {\n return {\n graph: this.graph.getEdges(),\n nodes: [...this.nodes.entries()]\n };\n }\n\n transaction(func) {\n this.startTransaction();\n try {\n func();\n } catch (e) {\n console.log(e);\n }\n return this.endTransaction();\n }\n\n startTransaction() {\n this.transactionDepth++;\n }\n\n endTransaction() {\n this.transactionDepth--;\n\n if (this.transactionDepth === 0) {\n const cells = this.dirtyCells;\n this.dirtyCells = [];\n\n this.queueComputation(this.graph.topologicalSort(cells));\n }\n\n return [];\n }\n\n queueComputation(cellNames) {\n // TODO: Formally write out the different cases when the existing\n // queue is not empty. There should be cases where we can easily\n // optimize this by skipping computations if we know they are\n // going to be computed again. The hard thing is to ensure that\n // the order of computations stays correct\n\n this.computeQueue = this.computeQueue.concat(cellNames);\n\n // Begin running on the next tick so we guarantee that it doesn't finish\n // within the same tick. Since some computations are async, this makes it\n // consistent (otherwise it would only sometimes finish sync)\n Promise.resolve().then(() => {\n if (!this.running) {\n this.runComputations();\n }\n });\n }\n\n runComputations(idx = 0) {\n this.running = true;\n\n while (idx < this.computeQueue.length) {\n let name = this.computeQueue[idx];\n let node;\n let result;\n\n try {\n node = this.getNode(name);\n\n if (node._run) {\n let args = node._dependencies.map(dep => {\n return this.getNode(dep).value;\n });\n\n result = node._run(...args);\n\n if (result instanceof Promise) {\n console.warn(\n 'dynamic cell returned a promise! this is discouraged because errors are not handled properly'\n );\n }\n } else if (node.sql) {\n result = runCompiledQuery(\n node.query,\n node.sql.sqlPieces,\n node.sql.state\n );\n } else {\n idx++;\n continue;\n }\n } catch (e) {\n console.log('Error while evaluating ' + name + ':', e);\n // If an error happens, bail on the rest of the computations\n this.running = false;\n this.computeQueue = [];\n return;\n }\n\n if (result instanceof Promise) {\n // When the cell is finished computing, finish computing the\n // rest\n result.then(\n value => {\n node.value = value;\n this.runComputations(idx + 1);\n },\n err => {\n // TODO: use captureException here\n console.warn(`Failed running ${node.name}!`, err);\n this.runComputations(idx + 1);\n }\n );\n\n return;\n } else {\n node.value = result;\n }\n\n idx++;\n }\n\n // If everything computed in one loop (no async operations) notify\n // the user and empty the queue\n if (idx === this.computeQueue.length) {\n this.events.emit('change', { names: this.computeQueue });\n\n // Cache the updated cells\n if (this.saveCache) {\n this.saveCache(this.computeQueue);\n }\n this.markCacheSafe();\n\n this.running = false;\n this.computeQueue = [];\n }\n }\n\n markCacheSafe() {\n if (!this.cacheBarrier) {\n if (this.setCacheStatus) {\n this.setCacheStatus({ clean: true });\n }\n }\n }\n\n markCacheDirty() {\n if (this.setCacheStatus) {\n this.setCacheStatus({ clean: false });\n }\n }\n\n startCacheBarrier() {\n this.cacheBarrier = true;\n this.markCacheDirty();\n }\n\n endCacheBarrier() {\n this.cacheBarrier = false;\n\n let pendingChange = this.running || this.computeQueue.length > 0;\n if (!pendingChange) {\n this.markCacheSafe();\n }\n }\n\n addEventListener(name, func) {\n this.events.on(name, func);\n return () => this.events.off(name, func);\n }\n\n onFinish(func) {\n if (this.transactionDepth !== 0) {\n throw new Error(\n 'onFinish called while inside a spreadsheet transaction. This is not allowed as it will lead to race conditions'\n );\n }\n\n if (!this.running && this.computeQueue.length === 0) {\n func([]);\n // The remove function does nothing\n return () => {};\n }\n\n let remove = this.addEventListener('change', (...args) => {\n remove();\n return func(...args);\n });\n return remove;\n }\n\n unload() {\n this.events.all.clear();\n }\n\n getValue(name) {\n return this.getNode(name).value;\n }\n\n getExpr(name) {\n return this.getNode(name).expr;\n }\n\n getCellValue(sheet, name) {\n return this.getNode(resolveName(sheet, name)).value;\n }\n\n getCellExpr(sheet, name) {\n return this.getNode(resolveName(sheet, name)).expr;\n }\n\n getCellValueLoose(sheetName, cellName) {\n let name = resolveName(sheetName, cellName);\n if (this.nodes.has(name)) {\n return this.getNode(name).value;\n }\n return null;\n }\n\n bootup(onReady) {\n this.onFinish(() => {\n onReady();\n });\n }\n\n load(name, value) {\n const node = this._getNode(name);\n node.expr = value;\n node.value = value;\n }\n\n create(name, value) {\n return this.transaction(() => {\n const node = this._getNode(name);\n node.expr = value;\n node.value = value;\n this._markDirty(name);\n });\n }\n\n set(name, value) {\n this.create(name, value);\n }\n\n recompute(name) {\n this.transaction(() => {\n this.dirtyCells.push(name);\n });\n }\n\n recomputeAll() {\n // Recompute everything!\n this.transaction(() => {\n this.dirtyCells = [...this.nodes.keys()];\n });\n }\n\n createQuery(sheetName, cellName, query) {\n let name = resolveName(sheetName, cellName);\n let node = this._getNode(name);\n\n if (node.query !== query) {\n node.query = query;\n let { sqlPieces, state } = compileQuery(node.query, schema, schemaConfig);\n node.sql = { sqlPieces, state };\n\n this.transaction(() => {\n this._markDirty(name);\n });\n }\n }\n\n createStatic(sheetName, cellName, initialValue) {\n let name = resolveName(sheetName, cellName);\n let exists = this.nodes.has(name);\n if (!exists) {\n this.create(name, initialValue);\n }\n }\n\n createDynamic(\n sheetName,\n cellName,\n { dependencies = [], run, initialValue, refresh }\n ) {\n let name = resolveName(sheetName, cellName);\n let node = this._getNode(name);\n\n if (node.dynamic) {\n // If it already exists, do nothing\n return;\n }\n\n node.dynamic = true;\n node._run = run;\n\n dependencies = dependencies.map(dep => {\n let resolved;\n if (!unresolveName(dep).sheet) {\n resolved = resolveName(sheetName, dep);\n } else {\n resolved = dep;\n }\n\n return resolved;\n });\n\n node._dependencies = dependencies;\n\n // TODO: diff these\n this.graph.removeIncomingEdges(name);\n dependencies.forEach(dep => {\n this.graph.addEdge(dep, name);\n });\n\n if (node.value == null || refresh) {\n this.transaction(() => {\n node.value = initialValue;\n this._markDirty(name);\n });\n }\n }\n\n clearSheet(sheetName) {\n for (let [name, node] of this.nodes.entries()) {\n if (node.sheet === sheetName) {\n this.nodes.delete(name);\n }\n }\n }\n\n voidCell(sheetName, name, voidValue = null) {\n let node = this.getNode(resolveName(sheetName, name));\n node._run = null;\n node.dynamic = false;\n node.value = voidValue;\n }\n\n deleteCell(sheetName, name) {\n this.voidCell(sheetName, name);\n this.nodes.delete(resolveName(sheetName, name));\n }\n\n addDependencies(sheetName, cellName, deps) {\n let name = resolveName(sheetName, cellName);\n\n deps = deps.map(dep => {\n if (!unresolveName(dep).sheet) {\n return resolveName(sheetName, dep);\n }\n return dep;\n });\n\n let node = this.getNode(name);\n let newDeps = deps.filter(\n dep => (node._dependencies || []).indexOf(dep) === -1\n );\n\n if (newDeps.length > 0) {\n node._dependencies = (node._dependencies || []).concat(newDeps);\n newDeps.forEach(dep => {\n this.graph.addEdge(dep, name);\n });\n this.recompute(name);\n }\n }\n\n removeDependencies(sheetName, cellName, deps) {\n let name = resolveName(sheetName, cellName);\n\n deps = deps.map(dep => {\n if (!unresolveName(dep).sheet) {\n return resolveName(sheetName, dep);\n }\n return dep;\n });\n\n let node = this.getNode(name);\n\n node._dependencies = (node._dependencies || []).filter(\n dep => deps.indexOf(dep) === -1\n );\n\n deps.forEach(dep => {\n this.graph.removeEdge(dep, name);\n });\n this.recompute(name);\n }\n\n _markDirty(name) {\n this.dirtyCells.push(name);\n }\n\n triggerDatabaseChanges(oldValues, newValues) {\n let tables = new Set([...oldValues.keys(), ...newValues.keys()]);\n\n this.startTransaction();\n // TODO: Create an index of deps so we don't have to iterate\n // across all nodes\n this.nodes.forEach(node => {\n if (\n node.sql &&\n node.sql.state.dependencies.some(dep => tables.has(dep))\n ) {\n this._markDirty(node.name);\n }\n });\n this.endTransaction();\n }\n}\n","function unresolveName(name) {\n let idx = name.indexOf('!');\n if (idx !== -1) {\n return {\n sheet: name.slice(0, idx),\n name: name.slice(idx + 1)\n };\n }\n return { sheet: null, name };\n}\n\nfunction resolveName(sheet, name) {\n return sheet + '!' + name;\n}\n\nfunction resolveNamesAsObjects(sheets) {\n const cells = {};\n Object.keys(sheets).forEach(sheetName => {\n const sheet = sheets[sheetName];\n\n Object.keys(sheet).forEach(name => {\n const expr = sheet[name];\n cells[resolveName(sheetName, name)] = expr;\n });\n });\n return cells;\n}\n\nfunction resolveNamesAsArrays(sheets) {\n const cells = [];\n Object.keys(sheets).forEach(sheetName => {\n const sheet = sheets[sheetName];\n\n sheet.forEach(name => {\n const expr = sheet[name];\n cells.push(resolveName(sheetName, name));\n });\n });\n return cells;\n}\n\nmodule.exports = {\n unresolveName,\n resolveName,\n resolveNamesAsObjects,\n resolveNamesAsArrays\n};\n","import encryption from '../encryption';\nimport * as prefs from '../prefs';\nlet { SyncError } = require('../errors');\nlet SyncPb = require('./proto/sync_pb');\n\nfunction coerceBuffer(value) {\n // The web encryption APIs give us back raw Uint8Array... but our\n // encryption code assumes we can work with it as a buffer. This is\n // a leaky abstraction and ideally the our abstraction over the web\n // encryption APIs should do this.\n if (!Buffer.isBuffer(value)) {\n return Buffer.from(value);\n }\n return value;\n}\n\nexport async function encode(groupId, fileId, since, messages) {\n let { encryptKeyId } = prefs.getPrefs();\n let requestPb = new SyncPb.SyncRequest();\n\n for (let i = 0; i < messages.length; i++) {\n let msg = messages[i];\n let envelopePb = new SyncPb.MessageEnvelope();\n envelopePb.setTimestamp(msg.timestamp);\n\n let messagePb = new SyncPb.Message();\n messagePb.setDataset(msg.dataset);\n messagePb.setRow(msg.row);\n messagePb.setColumn(msg.column);\n messagePb.setValue(msg.value);\n let binaryMsg = messagePb.serializeBinary();\n\n if (encryptKeyId) {\n let encrypted = new SyncPb.EncryptedData();\n\n let result;\n try {\n result = await encryption.encrypt(binaryMsg, encryptKeyId);\n } catch (e) {\n throw new SyncError('encrypt-failure', {\n isMissingKey: e.message === 'missing-key'\n });\n }\n\n encrypted.setData(result.value);\n encrypted.setIv(Buffer.from(result.meta.iv, 'base64'));\n encrypted.setAuthtag(Buffer.from(result.meta.authTag, 'base64'));\n\n envelopePb.setContent(encrypted.serializeBinary());\n envelopePb.setIsencrypted(true);\n } else {\n envelopePb.setContent(binaryMsg);\n }\n\n requestPb.addMessages(envelopePb);\n }\n\n requestPb.setGroupid(groupId);\n requestPb.setFileid(fileId);\n requestPb.setKeyid(encryptKeyId);\n requestPb.setSince(since);\n\n return requestPb.serializeBinary();\n}\n\nexport async function decode(data) {\n let { encryptKeyId } = prefs.getPrefs();\n\n let responsePb = SyncPb.SyncResponse.deserializeBinary(data);\n let merkle = JSON.parse(responsePb.getMerkle());\n let list = responsePb.getMessagesList();\n let messages = [];\n\n for (let i = 0; i < list.length; i++) {\n let envelopePb = list[i];\n let timestamp = envelopePb.getTimestamp();\n let encrypted = envelopePb.getIsencrypted();\n let msg;\n\n if (encrypted) {\n let binary = SyncPb.EncryptedData.deserializeBinary(\n envelopePb.getContent()\n );\n\n let decrypted;\n try {\n decrypted = await encryption.decrypt(coerceBuffer(binary.getData()), {\n keyId: encryptKeyId,\n algorithm: 'aes-256-gcm',\n iv: coerceBuffer(binary.getIv()),\n authTag: coerceBuffer(binary.getAuthtag())\n });\n } catch (e) {\n console.log(e);\n throw new SyncError('decrypt-failure', {\n isMissingKey: e.message === 'missing-key'\n });\n }\n\n msg = SyncPb.Message.deserializeBinary(decrypted);\n } else {\n msg = SyncPb.Message.deserializeBinary(envelopePb.getContent());\n }\n\n messages.push({\n timestamp: timestamp,\n dataset: msg.getDataset(),\n row: msg.getRow(),\n column: msg.getColumn(),\n value: msg.getValue()\n });\n }\n\n return { messages, merkle };\n}\n","import { sequential, once } from '../../shared/async';\nimport * as perf from '../perf';\nimport * as prefs from '../prefs';\nimport app from '../main-app';\nimport asyncStorage from '../../platform/server/asyncStorage';\nimport { captureException } from '../../platform/exceptions';\nimport logger from '../../platform/server/log';\nimport { postBinary } from '../post';\nimport * as db from '../db';\nimport * as sheet from '../sheet';\nimport { triggerBudgetChanges, setType as setBudgetType } from '../budget/base';\nimport * as undo from '../undo';\nimport { runMutator } from '../mutators';\nimport { setIn, getIn } from '../../shared/util';\nimport Timestamp, {\n serializeClock,\n deserializeClock,\n getClock\n} from '../timestamp';\nimport * as merkle from '../merkle';\nimport * as encoder from './encoder';\nimport { getServer } from '../server-config';\nimport { rebuildMerkleHash } from './repair';\n\nconst { PostError, SyncError } = require('../errors');\nconst connection = require('../../platform/server/connection');\n\nlet FULL_SYNC_DELAY = 1000;\nlet SYNCING_MODE = 'enabled';\n\nexport function setSyncingMode(mode) {\n let prevMode = SYNCING_MODE;\n switch (mode) {\n case 'enabled':\n SYNCING_MODE = 'enabled';\n break;\n case 'offline':\n SYNCING_MODE = 'offline';\n break;\n case 'disabled':\n SYNCING_MODE = 'disabled';\n break;\n case 'import':\n SYNCING_MODE = 'import';\n break;\n default:\n throw new Error('setSyncingMode: invalid mode: ' + mode);\n }\n return prevMode;\n}\n\nexport function checkSyncingMode(mode) {\n switch (mode) {\n case 'enabled':\n return SYNCING_MODE === 'enabled' || SYNCING_MODE === 'offline';\n case 'disabled':\n return SYNCING_MODE === 'disabled' || SYNCING_MODE === 'import';\n case 'offline':\n return SYNCING_MODE === 'offline';\n case 'import':\n return SYNCING_MODE === 'import';\n default:\n throw new Error('checkSyncingMode: invalid mode: ' + mode);\n }\n}\n\nexport makeTestMessage from './make-test-message';\nexport resetSync from './reset';\nexport repairSync from './repair';\n\nfunction apply(msg, prev) {\n let { dataset, row, column, value } = msg;\n\n if (dataset === 'prefs') {\n // Do nothing, it doesn't exist in the db\n } else {\n try {\n let query;\n if (prev) {\n query = {\n sql: db.cache(`UPDATE ${dataset} SET ${column} = ? WHERE id = ?`),\n params: [value, row]\n };\n } else {\n query = {\n sql: db.cache(`INSERT INTO ${dataset} (id, ${column}) VALUES (?, ?)`),\n params: [row, value]\n };\n }\n\n db.runQuery(query.sql, query.params);\n } catch (e) {\n //console.log(e);\n throw new SyncError('invalid-schema');\n }\n }\n}\n\nasync function fetchAll(table, ids) {\n let results = [];\n\n // TODO: convert to `whereIn`\n\n for (let i = 0; i < ids.length; i += 500) {\n let partIds = ids.slice(i, i + 500);\n let sql;\n let column = `${table}.id`;\n\n // We have to provide *mapped* data so the spreadsheet works. The functions\n // which trigger budget changes based on data changes assumes data has been\n // mapped. The only mapped data that the budget is concerned about is\n // categories. This is kind of annoying, but we manually map it here\n if (table === 'transactions') {\n sql = `\n SELECT t.*, c.transferId AS category\n FROM transactions t\n LEFT JOIN category_mapping c ON c.id = t.category\n `;\n column = 't.id';\n } else {\n sql = `SELECT * FROM ${table}`;\n }\n\n sql += ` WHERE `;\n sql += partIds.map(id => `${column} = ?`).join(' OR ');\n\n try {\n let rows = await db.runQuery(sql, partIds, true);\n results = results.concat(rows);\n } catch (e) {\n throw new SyncError('invalid-schema');\n }\n }\n\n return results;\n}\n\nexport function serializeValue(value) {\n if (value === null) {\n return '0:';\n } else if (typeof value === 'number') {\n return 'N:' + value;\n } else if (typeof value === 'string') {\n return 'S:' + value;\n }\n\n throw new Error('Unserializable value type: ' + JSON.stringify(value));\n}\n\nexport function deserializeValue(value) {\n const type = value[0];\n switch (type) {\n case '0':\n return null;\n case 'N':\n return parseFloat(value.slice(2));\n case 'S':\n return value.slice(2);\n default:\n }\n\n throw new Error('Invalid type key for value: ' + value);\n}\n\nlet _syncListeners = [];\n\nexport function addSyncListener(func) {\n _syncListeners.push(func);\n\n return () => {\n _syncListeners = _syncListeners.filter(f => f !== func);\n };\n}\n\nasync function compareMessages(messages) {\n let newMessages = [];\n\n for (let i = 0; i < messages.length; i++) {\n let message = messages[i];\n let { dataset, row, column, timestamp } = message;\n let timestampStr = timestamp.toString();\n\n let res = db.runQuery(\n db.cache(\n 'SELECT timestamp FROM messages_crdt WHERE dataset = ? AND row = ? AND column = ? AND timestamp >= ?'\n ),\n [dataset, row, column, timestampStr],\n true\n );\n\n // Returned message is any one that is \"later\" than this message,\n // meaning if the result exists this message is an old one\n if (res.length === 0) {\n newMessages.push(message);\n } else if (res[0].timestamp !== timestampStr) {\n newMessages.push({ ...message, old: true });\n }\n }\n\n return newMessages;\n}\n\n// This is the fast path `apply` function when in \"import\" mode.\n// There's no need to run through the whole sync system when\n// importing, but **there is a caveat**: because we don't run sync\n// listeners importers should not rely on any functions that use any\n// projected state (like rules). We can't fire those because they\n// depend on having both old and new data which we don't quere here\nfunction applyMessagesForImport(messages) {\n db.transaction(() => {\n for (let i = 0; i < messages.length; i++) {\n let msg = messages[i];\n let { dataset, row, column, timestamp, value } = msg;\n\n if (!msg.old) {\n try {\n apply(msg);\n } catch (e) {\n apply(msg, true);\n }\n\n if (dataset === 'prefs') {\n throw new Error('Cannot set prefs while importing');\n }\n }\n }\n });\n}\n\nexport const applyMessages = sequential(async messages => {\n if (checkSyncingMode('import')) {\n return applyMessagesForImport(messages);\n } else if (checkSyncingMode('enabled')) {\n // Compare the messages with the existing crdt. This filters out\n // already applied messages and determines if a message is old or\n // not. An \"old\" message doesn't need to be applied, but it still\n // needs to be put into the merkle trie to maintain the hash.\n messages = await compareMessages(messages);\n }\n\n messages = [...messages].sort((m1, m2) => {\n let t1 = m1.timestamp ? m1.timestamp.toString() : '';\n let t2 = m2.timestamp ? m2.timestamp.toString() : '';\n if (t1 < t2) {\n return -1;\n } else if (t1 > t2) {\n return 1;\n }\n return 0;\n });\n\n let idsPerTable = {};\n messages.forEach(msg => {\n if (msg.dataset === 'prefs') {\n return;\n }\n\n if (idsPerTable[msg.dataset] == null) {\n idsPerTable[msg.dataset] = [];\n }\n idsPerTable[msg.dataset].push(msg.row);\n });\n\n async function fetchData() {\n let data = new Map();\n\n for (let table of Object.keys(idsPerTable)) {\n const rows = await fetchAll(table, idsPerTable[table]);\n\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i];\n setIn(data, [table, row.id], row);\n }\n }\n\n return data;\n }\n\n let prefsToSet = {};\n let oldData = await fetchData();\n\n undo.appendMessages(messages, oldData);\n\n // It's important to not mutate the clock while processing the\n // messages. We only want to mutate it if the transaction succeeds.\n // The merkle variable will be updated while applying the messages and\n // we'll apply it afterwards.\n let clock;\n let currentMerkle;\n if (checkSyncingMode('enabled')) {\n clock = getClock();\n currentMerkle = clock.merkle;\n }\n\n if (sheet.get()) {\n sheet.get().startCacheBarrier();\n }\n\n // Now that we have all of the data, go through and apply the\n // messages carefully. This transaction is **crucial**: it\n // guarantees that everything is atomically committed to the\n // database, and if any part of it fails everything aborts and\n // nothing is changed. This is critical to maintain consistency. We\n // also avoid any side effects to in-memory objects, and apply them\n // after this succeeds.\n db.transaction(() => {\n let added = new Set();\n\n for (let i = 0; i < messages.length; i++) {\n let msg = messages[i];\n let { dataset, row, column, timestamp, value } = msg;\n\n if (!msg.old) {\n apply(msg, getIn(oldData, [dataset, row]) || added.has(dataset + row));\n\n if (dataset === 'prefs') {\n prefsToSet[row] = value;\n } else {\n // Keep track of which items have been added it in this sync\n // so it knows whether they already exist in the db or not. We\n // ignore any changes to the spreadsheet.\n added.add(dataset + row);\n }\n }\n\n if (checkSyncingMode('enabled')) {\n db.runQuery(\n db.cache(`INSERT INTO messages_crdt (timestamp, dataset, row, column, value)\n VALUES (?, ?, ?, ?, ?)`),\n [timestamp.toString(), dataset, row, column, serializeValue(value)]\n );\n\n currentMerkle = merkle.insert(currentMerkle, msg.timestamp);\n }\n }\n\n if (checkSyncingMode('enabled')) {\n currentMerkle = merkle.prune(currentMerkle);\n\n // Save the clock in the db first (queries might throw\n // exceptions)\n db.runQuery(\n db.cache(\n 'INSERT OR REPLACE INTO messages_clock (id, clock) VALUES (1, ?)'\n ),\n [serializeClock({ ...clock, merkle: currentMerkle })]\n );\n }\n });\n\n if (checkSyncingMode('enabled')) {\n // The transaction succeeded, so we can update in-memory objects\n // now. Update the in-memory clock.\n clock.merkle = currentMerkle;\n }\n\n // Save any synced prefs\n if (Object.keys(prefsToSet).length > 0) {\n prefs.savePrefs(prefsToSet, { avoidSync: true });\n\n if (prefsToSet.budgetType) {\n setBudgetType(prefsToSet.budgetType);\n }\n\n connection.send('prefs-updated');\n }\n\n let newData = await fetchData();\n\n // In testing, sometimes the spreadsheet isn't loaded, and that's ok\n if (sheet.get()) {\n // Need to clean up these APIs and make them consistent\n sheet.startTransaction();\n triggerBudgetChanges(oldData, newData);\n sheet.get().triggerDatabaseChanges(oldData, newData);\n sheet.endTransaction();\n\n // Allow the cache to be used in the future. At this point it's guaranteed\n // to be up-to-date because we are done mutating any other data\n sheet.get().endCacheBarrier();\n }\n\n _syncListeners.forEach(func => func(oldData, newData));\n\n let tables = getTablesFromMessages(messages.filter(msg => !msg.old));\n app.events.emit('sync', {\n type: 'applied',\n tables,\n data: newData,\n prevData: oldData\n });\n\n return messages;\n});\n\nexport function receiveMessages(messages) {\n messages.forEach(msg => {\n Timestamp.recv(msg.timestamp);\n });\n\n return runMutator(() => applyMessages(messages));\n}\n\nasync function _sendMessages(messages) {\n try {\n await applyMessages(messages);\n } catch (e) {\n if (e instanceof SyncError) {\n if (e.reason === 'invalid-schema') {\n // We know this message came from a local modification, and it\n // couldn't apply, which doesn't make any sense. Must be a bug\n // in the code. Send a specific error type for it for a custom\n // message.\n app.events.emit('sync', {\n type: 'error',\n subtype: 'apply-failure'\n });\n } else {\n app.events.emit('sync', { type: 'error' });\n }\n }\n\n throw e;\n }\n\n await scheduleFullSync();\n}\n\nlet IS_BATCHING = false;\nlet _BATCHED = [];\nexport async function batchMessages(func) {\n if (IS_BATCHING) {\n await func();\n return;\n }\n\n IS_BATCHING = true;\n let batched = [];\n\n try {\n await func();\n // TODO: if it fails, it shouldn't apply them?\n } finally {\n IS_BATCHING = false;\n batched = _BATCHED;\n _BATCHED = [];\n }\n\n if (batched.length > 0) {\n await _sendMessages(batched);\n }\n}\n\nexport async function sendMessages(messages) {\n if (IS_BATCHING) {\n _BATCHED = _BATCHED.concat(messages);\n } else {\n return _sendMessages(messages);\n }\n}\n\nexport function getMessagesSince(since) {\n return db.runQuery(\n 'SELECT timestamp, dataset, row, column, value FROM messages_crdt WHERE timestamp > ?',\n [since],\n true\n );\n}\n\nexport async function syncAndReceiveMessages(messages, since) {\n let localMessages = await getMessagesSince(since);\n await receiveMessages(\n messages.map(msg => ({\n ...msg,\n value: deserializeValue(msg.value),\n timestamp: Timestamp.parse(msg.timestamp)\n }))\n );\n return localMessages;\n}\n\nexport function clearFullSyncTimeout() {\n if (syncTimeout) {\n clearTimeout(syncTimeout);\n syncTimeout = null;\n }\n}\n\nlet syncTimeout = null;\nexport function scheduleFullSync() {\n clearFullSyncTimeout();\n\n if (checkSyncingMode('enabled') && !checkSyncingMode('offline')) {\n if (global.__TESTING__) {\n return fullSync().then(res => {\n if (res.error) {\n throw res.error;\n }\n return res;\n });\n } else {\n syncTimeout = setTimeout(fullSync, FULL_SYNC_DELAY);\n }\n }\n}\n\nfunction getTablesFromMessages(messages) {\n return messages.reduce((acc, message) => {\n let dataset =\n message.dataset === 'schedules_next_date' ? 'schedules' : message.dataset;\n\n if (!acc.includes(dataset)) {\n acc.push(dataset);\n }\n return acc;\n }, []);\n}\n\n// This is different than `fullSync` because it waits for the\n// spreadsheet to finish any processing. This is useful if we want to\n// perform a full sync and wait for everything to finish, usually if\n// you're doing an initial sync before working with a file.\nexport async function initialFullSync() {\n let result = await fullSync();\n if (!result.error) {\n // Make sure to wait for anything in the spreadsheet to process\n await sheet.waitOnSpreadsheet();\n }\n}\n\nexport const fullSync = once(async function() {\n app.events.emit('sync', { type: 'start' });\n let messages;\n\n try {\n messages = await _fullSync(null, 0, null);\n } catch (e) {\n console.log(e);\n\n if (e instanceof SyncError) {\n if (e.reason === 'out-of-sync') {\n captureException(e);\n\n app.events.emit('sync', {\n type: 'error',\n subtype: 'out-of-sync'\n });\n } else if (e.reason === 'invalid-schema') {\n app.events.emit('sync', {\n type: 'error',\n subtype: 'invalid-schema'\n });\n } else if (\n e.reason === 'decrypt-failure' ||\n e.reason === 'encrypt-failure'\n ) {\n app.events.emit('sync', {\n type: 'error',\n subtype: e.reason,\n meta: e.meta\n });\n } else if (e.reason === 'beta-version') {\n app.events.emit('sync', {\n type: 'error',\n subtype: e.reason\n });\n } else {\n app.events.emit('sync', { type: 'error' });\n }\n } else if (e instanceof PostError) {\n console.log(e);\n if (e.reason === 'unauthorized') {\n app.events.emit('sync', { type: 'unauthorized' });\n\n // Set the user into read-only mode\n asyncStorage.setItem('readOnly', 'true');\n } else if (e.reason === 'network-failure') {\n app.events.emit('sync', { type: 'error', subtype: 'network' });\n } else {\n app.events.emit('sync', { type: 'error', subtype: e.reason });\n }\n } else {\n captureException(e);\n // TODO: Send the message to the client and allow them to expand & view it\n app.events.emit('sync', { type: 'error' });\n }\n\n return { error: { message: e.message, reason: e.reason, meta: e.meta } };\n }\n\n let tables = getTablesFromMessages(messages);\n\n app.events.emit('sync', {\n type: 'success',\n tables,\n syncDisabled: checkSyncingMode('disabled')\n });\n return { messages };\n});\n\nasync function _fullSync(sinceTimestamp, count, prevDiffTime) {\n let { cloudFileId, groupId, lastSyncedTimestamp } = prefs.getPrefs() || {};\n\n clearFullSyncTimeout();\n\n if (checkSyncingMode('disabled') || checkSyncingMode('offline')) {\n return [];\n }\n\n // Snapshot the point at which we are currently syncing\n let currentTime = getClock().timestamp.toString();\n\n let since =\n sinceTimestamp ||\n lastSyncedTimestamp ||\n // Default to 5 minutes ago\n new Timestamp(Date.now() - 5 * 60 * 1000, 0, '0').toString();\n\n let messages = getMessagesSince(since);\n\n let userToken = await asyncStorage.getItem('user-token');\n\n logger.info(\n 'Syncing since',\n since,\n messages.length,\n '(attempt: ' + count + ')'\n );\n\n let buffer = await encoder.encode(groupId, cloudFileId, since, messages);\n\n // TODO: There a limit on how many messages we can send because of\n // the payload size. Right now it's at 20MB on the server. We should\n // check the worst case here and make multiple requests if it's\n // really large.\n let resBuffer = await postBinary(getServer().SYNC_SERVER + '/sync', buffer, {\n 'X-ACTUAL-TOKEN': userToken\n });\n\n // Abort if the file is either no longer loaded, the group id has\n // changed because of a sync reset\n if (!prefs.getPrefs() || prefs.getPrefs().groupId !== groupId) {\n return [];\n }\n\n let res = await encoder.decode(resBuffer);\n\n logger.info('Got messages from server', res.messages.length);\n\n let localTimeChanged = getClock().timestamp.toString() !== currentTime;\n\n // Apply the new messages\n let receivedMessages = [];\n if (res.messages.length > 0) {\n receivedMessages = await receiveMessages(\n res.messages.map(msg => ({\n ...msg,\n value: deserializeValue(msg.value),\n timestamp: Timestamp.parse(msg.timestamp)\n }))\n );\n }\n\n let diffTime = merkle.diff(res.merkle, getClock().merkle);\n let result = res.messages;\n\n if (diffTime !== null) {\n // This is a bit wonky, but we loop until we are in sync with the\n // server. While syncing, either the client or server could change\n // out from under us, so it might take a couple passes to\n // completely sync up. This is a check that stops the loop in case\n // we are corrupted and can't sync up. We try 10 times if we keep\n // getting the same diff time, and add a upper limit of 300 no\n // matter what (just to stop this from ever being an infinite\n // loop).\n //\n // It's slightly possible for the user to add more messages while we\n // are in `receiveMessages`, but `localTimeChanged` would still be\n // false. In that case, we don't reset the counter but it should be\n // very unlikely that this happens enough to hit the loop limit.\n\n if ((count >= 10 && diffTime === prevDiffTime) || count >= 100) {\n logger.info('SENT -------');\n logger.info(JSON.stringify(messages));\n logger.info('RECEIVED -------');\n logger.info(JSON.stringify(res.messages));\n\n let rebuiltMerkle = rebuildMerkleHash();\n\n console.log(\n count,\n 'messages:',\n messages.length,\n messages.length > 0 ? messages[0] : null,\n 'res.messages:',\n res.messages.length,\n res.messages.length > 0 ? res.messages[0] : null,\n 'clientId',\n getClock().timestamp.node(),\n 'groupId',\n groupId,\n 'diffTime:',\n diffTime,\n diffTime === prevDiffTime,\n 'local clock:',\n getClock().timestamp.toString(),\n getClock().merkle.hash,\n 'rebuilt hash:',\n rebuiltMerkle.numMessages,\n rebuiltMerkle.trie.hash,\n 'server hash:',\n res.merkle.hash,\n 'localTimeChanged:',\n localTimeChanged\n );\n\n if (rebuiltMerkle.trie.hash === res.merkle.hash) {\n // Rebuilding the merkle worked... but why?\n let clocks = await db.all('SELECT * FROM messages_clock');\n if (clocks.length !== 1) {\n console.log('Bad number of clocks:', clocks.length);\n }\n let hash = deserializeClock(clocks[0]).merkle.hash;\n console.log('Merkle hash in db:', hash);\n }\n\n throw new SyncError('out-of-sync');\n }\n\n receivedMessages = receivedMessages.concat(\n await _fullSync(\n new Timestamp(diffTime, 0, '0').toString(),\n // If something local changed while we were syncing, always\n // reset, token the counter. We never want to think syncing failed\n // because we tried to syncing many times and couldn't sync,\n // but it was because the user kept changing stuff in the\n // middle of syncing.\n localTimeChanged ? 0 : count + 1,\n diffTime\n )\n );\n } else {\n // All synced up, store the current time as a simple optimization\n // for the next sync\n await prefs.savePrefs({\n lastSyncedTimestamp: getClock().timestamp.toString()\n });\n }\n\n return receivedMessages;\n}\n","import encryption from '../encryption';\nlet SyncPb = require('./proto/sync_pb');\n\nasync function randomString() {\n return (await encryption.randomBytes(12)).toString();\n}\n\nexport default async function makeTestMessage(keyId) {\n let messagePb = new SyncPb.Message();\n messagePb.setDataset(await randomString());\n messagePb.setRow(await randomString());\n messagePb.setColumn(await randomString());\n messagePb.setValue(await randomString());\n let binaryMsg = messagePb.serializeBinary();\n\n return await encryption.encrypt(binaryMsg, keyId);\n}\n","import { addSyncListener, applyMessages } from './index';\nimport Timestamp from '../timestamp';\n\nfunction migrateParentIds(oldValues, newValues) {\n newValues.forEach((items, table) => {\n if (table === 'transactions') {\n let old = oldValues.get(table);\n let toApply = [];\n\n items.forEach(newValue => {\n if (\n newValue.isChild === 1 &&\n newValue.parent_id == null &&\n newValue.id.includes('/')\n ) {\n let parentId = newValue.id.split('/')[0];\n\n toApply.push({\n dataset: 'transactions',\n row: newValue.id,\n column: 'parent_id',\n value: parentId,\n timestamp: Timestamp.send()\n });\n }\n });\n\n if (toApply.length > 0) {\n applyMessages(toApply);\n }\n }\n });\n}\n\nlet _unlisten = null;\nexport function listen() {\n unlisten();\n _unlisten = addSyncListener(migrateParentIds);\n}\n\nexport function unlisten() {\n if (_unlisten) {\n _unlisten();\n _unlisten = null;\n }\n}\n","// source: sync.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = globalThis;\n\ngoog.exportSymbol('proto.EncryptedData', null, global);\ngoog.exportSymbol('proto.Message', null, global);\ngoog.exportSymbol('proto.MessageEnvelope', null, global);\ngoog.exportSymbol('proto.SyncRequest', null, global);\ngoog.exportSymbol('proto.SyncResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.EncryptedData = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.EncryptedData, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.EncryptedData.displayName = 'proto.EncryptedData';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Message = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Message, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.Message.displayName = 'proto.Message';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.MessageEnvelope = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.MessageEnvelope, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.MessageEnvelope.displayName = 'proto.MessageEnvelope';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.SyncRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.SyncRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.SyncRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.SyncRequest.displayName = 'proto.SyncRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.SyncResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.SyncResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.SyncResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.SyncResponse.displayName = 'proto.SyncResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.EncryptedData.prototype.toObject = function(opt_includeInstance) {\n return proto.EncryptedData.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.EncryptedData} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.EncryptedData.toObject = function(includeInstance, msg) {\n var f, obj = {\n iv: msg.getIv_asB64(),\n authtag: msg.getAuthtag_asB64(),\n data: msg.getData_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.EncryptedData}\n */\nproto.EncryptedData.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.EncryptedData;\n return proto.EncryptedData.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.EncryptedData} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.EncryptedData}\n */\nproto.EncryptedData.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setIv(value);\n break;\n case 2:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setAuthtag(value);\n break;\n case 3:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setData(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.EncryptedData.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.EncryptedData.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.EncryptedData} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.EncryptedData.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getIv_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 1,\n f\n );\n }\n f = message.getAuthtag_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 2,\n f\n );\n }\n f = message.getData_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional bytes iv = 1;\n * @return {!(string|Uint8Array)}\n */\nproto.EncryptedData.prototype.getIv = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * optional bytes iv = 1;\n * This is a type-conversion wrapper around `getIv()`\n * @return {string}\n */\nproto.EncryptedData.prototype.getIv_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getIv()));\n};\n\n\n/**\n * optional bytes iv = 1;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getIv()`\n * @return {!Uint8Array}\n */\nproto.EncryptedData.prototype.getIv_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getIv()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.EncryptedData} returns this\n */\nproto.EncryptedData.prototype.setIv = function(value) {\n return jspb.Message.setProto3BytesField(this, 1, value);\n};\n\n\n/**\n * optional bytes authTag = 2;\n * @return {!(string|Uint8Array)}\n */\nproto.EncryptedData.prototype.getAuthtag = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * optional bytes authTag = 2;\n * This is a type-conversion wrapper around `getAuthtag()`\n * @return {string}\n */\nproto.EncryptedData.prototype.getAuthtag_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getAuthtag()));\n};\n\n\n/**\n * optional bytes authTag = 2;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getAuthtag()`\n * @return {!Uint8Array}\n */\nproto.EncryptedData.prototype.getAuthtag_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getAuthtag()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.EncryptedData} returns this\n */\nproto.EncryptedData.prototype.setAuthtag = function(value) {\n return jspb.Message.setProto3BytesField(this, 2, value);\n};\n\n\n/**\n * optional bytes data = 3;\n * @return {!(string|Uint8Array)}\n */\nproto.EncryptedData.prototype.getData = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * optional bytes data = 3;\n * This is a type-conversion wrapper around `getData()`\n * @return {string}\n */\nproto.EncryptedData.prototype.getData_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getData()));\n};\n\n\n/**\n * optional bytes data = 3;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getData()`\n * @return {!Uint8Array}\n */\nproto.EncryptedData.prototype.getData_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getData()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.EncryptedData} returns this\n */\nproto.EncryptedData.prototype.setData = function(value) {\n return jspb.Message.setProto3BytesField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Message.prototype.toObject = function(opt_includeInstance) {\n return proto.Message.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.Message} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Message.toObject = function(includeInstance, msg) {\n var f, obj = {\n dataset: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n row: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n column: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n value: jspb.Message.getFieldWithDefault(msg, 4, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Message}\n */\nproto.Message.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.Message;\n return proto.Message.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Message} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Message}\n */\nproto.Message.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setDataset(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setRow(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setColumn(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setValue(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Message.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.Message.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Message} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Message.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDataset();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getRow();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getColumn();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getValue();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional string dataset = 1;\n * @return {string}\n */\nproto.Message.prototype.getDataset = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setDataset = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string row = 2;\n * @return {string}\n */\nproto.Message.prototype.getRow = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setRow = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string column = 3;\n * @return {string}\n */\nproto.Message.prototype.getColumn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setColumn = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string value = 4;\n * @return {string}\n */\nproto.Message.prototype.getValue = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setValue = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.MessageEnvelope.prototype.toObject = function(opt_includeInstance) {\n return proto.MessageEnvelope.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.MessageEnvelope} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.MessageEnvelope.toObject = function(includeInstance, msg) {\n var f, obj = {\n timestamp: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n isencrypted: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n content: msg.getContent_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.MessageEnvelope}\n */\nproto.MessageEnvelope.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.MessageEnvelope;\n return proto.MessageEnvelope.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.MessageEnvelope} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.MessageEnvelope}\n */\nproto.MessageEnvelope.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setTimestamp(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsencrypted(value);\n break;\n case 3:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setContent(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.MessageEnvelope.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.MessageEnvelope.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.MessageEnvelope} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.MessageEnvelope.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getTimestamp();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getIsencrypted();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n f = message.getContent_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional string timestamp = 1;\n * @return {string}\n */\nproto.MessageEnvelope.prototype.getTimestamp = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.MessageEnvelope} returns this\n */\nproto.MessageEnvelope.prototype.setTimestamp = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional bool isEncrypted = 2;\n * @return {boolean}\n */\nproto.MessageEnvelope.prototype.getIsencrypted = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.MessageEnvelope} returns this\n */\nproto.MessageEnvelope.prototype.setIsencrypted = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * optional bytes content = 3;\n * @return {!(string|Uint8Array)}\n */\nproto.MessageEnvelope.prototype.getContent = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * optional bytes content = 3;\n * This is a type-conversion wrapper around `getContent()`\n * @return {string}\n */\nproto.MessageEnvelope.prototype.getContent_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getContent()));\n};\n\n\n/**\n * optional bytes content = 3;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getContent()`\n * @return {!Uint8Array}\n */\nproto.MessageEnvelope.prototype.getContent_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getContent()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.MessageEnvelope} returns this\n */\nproto.MessageEnvelope.prototype.setContent = function(value) {\n return jspb.Message.setProto3BytesField(this, 3, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.SyncRequest.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.SyncRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.SyncRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.SyncRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SyncRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n messagesList: jspb.Message.toObjectList(msg.getMessagesList(),\n proto.MessageEnvelope.toObject, includeInstance),\n fileid: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n groupid: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n keyid: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n since: jspb.Message.getFieldWithDefault(msg, 6, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.SyncRequest}\n */\nproto.SyncRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.SyncRequest;\n return proto.SyncRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.SyncRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.SyncRequest}\n */\nproto.SyncRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.MessageEnvelope;\n reader.readMessage(value,proto.MessageEnvelope.deserializeBinaryFromReader);\n msg.addMessages(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setFileid(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setGroupid(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setKeyid(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setSince(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.SyncRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.SyncRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.SyncRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SyncRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMessagesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.MessageEnvelope.serializeBinaryToWriter\n );\n }\n f = message.getFileid();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getGroupid();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getKeyid();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getSince();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n};\n\n\n/**\n * repeated MessageEnvelope messages = 1;\n * @return {!Array<!proto.MessageEnvelope>}\n */\nproto.SyncRequest.prototype.getMessagesList = function() {\n return /** @type{!Array<!proto.MessageEnvelope>} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.MessageEnvelope, 1));\n};\n\n\n/**\n * @param {!Array<!proto.MessageEnvelope>} value\n * @return {!proto.SyncRequest} returns this\n*/\nproto.SyncRequest.prototype.setMessagesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.MessageEnvelope=} opt_value\n * @param {number=} opt_index\n * @return {!proto.MessageEnvelope}\n */\nproto.SyncRequest.prototype.addMessages = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.MessageEnvelope, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.clearMessagesList = function() {\n return this.setMessagesList([]);\n};\n\n\n/**\n * optional string fileId = 2;\n * @return {string}\n */\nproto.SyncRequest.prototype.getFileid = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.setFileid = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string groupId = 3;\n * @return {string}\n */\nproto.SyncRequest.prototype.getGroupid = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.setGroupid = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string keyId = 5;\n * @return {string}\n */\nproto.SyncRequest.prototype.getKeyid = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.setKeyid = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string since = 6;\n * @return {string}\n */\nproto.SyncRequest.prototype.getSince = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.setSince = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.SyncResponse.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.SyncResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.SyncResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.SyncResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SyncResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n messagesList: jspb.Message.toObjectList(msg.getMessagesList(),\n proto.MessageEnvelope.toObject, includeInstance),\n merkle: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.SyncResponse}\n */\nproto.SyncResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.SyncResponse;\n return proto.SyncResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.SyncResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.SyncResponse}\n */\nproto.SyncResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.MessageEnvelope;\n reader.readMessage(value,proto.MessageEnvelope.deserializeBinaryFromReader);\n msg.addMessages(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setMerkle(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.SyncResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.SyncResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.SyncResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SyncResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMessagesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.MessageEnvelope.serializeBinaryToWriter\n );\n }\n f = message.getMerkle();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * repeated MessageEnvelope messages = 1;\n * @return {!Array<!proto.MessageEnvelope>}\n */\nproto.SyncResponse.prototype.getMessagesList = function() {\n return /** @type{!Array<!proto.MessageEnvelope>} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.MessageEnvelope, 1));\n};\n\n\n/**\n * @param {!Array<!proto.MessageEnvelope>} value\n * @return {!proto.SyncResponse} returns this\n*/\nproto.SyncResponse.prototype.setMessagesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.MessageEnvelope=} opt_value\n * @param {number=} opt_index\n * @return {!proto.MessageEnvelope}\n */\nproto.SyncResponse.prototype.addMessages = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.MessageEnvelope, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.SyncResponse} returns this\n */\nproto.SyncResponse.prototype.clearMessagesList = function() {\n return this.setMessagesList([]);\n};\n\n\n/**\n * optional string merkle = 2;\n * @return {string}\n */\nproto.SyncResponse.prototype.getMerkle = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncResponse} returns this\n */\nproto.SyncResponse.prototype.setMerkle = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\ngoog.object.extend(exports, proto);\n","import * as db from '../db';\nimport Timestamp, { serializeClock, getClock } from '../timestamp';\nimport * as merkle from '../merkle';\n\nexport function rebuildMerkleHash() {\n let rows = db.runQuery('SELECT timestamp FROM messages_crdt', [], true);\n let trie = {};\n\n for (let i = 0; i < rows.length; i++) {\n trie = merkle.insert(trie, Timestamp.parse(rows[i].timestamp));\n }\n\n return {\n numMessages: rows.length,\n trie: trie\n };\n}\n\nexport default async function repairSync() {\n let rebuilt = rebuildMerkleHash();\n let clock = getClock();\n\n // Save it locally\n clock.merkle = rebuilt.trie;\n\n // Persist it in the db\n db.runQuery(\n db.cache('INSERT OR REPLACE INTO messages_clock (id, clock) VALUES (1, ?)'),\n [serializeClock(clock)]\n );\n}\n","import * as cloudStorage from '../cloud-storage';\nimport * as db from '../db';\nimport * as prefs from '../prefs';\nimport asyncStorage from '../../platform/server/asyncStorage';\nimport { captureException } from '../../platform/exceptions';\nimport { runMutator } from '../mutators';\nconst connection = require('../../platform/server/connection');\n\nexport default async function resetSync(keyState) {\n if (!keyState) {\n // If we aren't resetting the key, make sure our key is up-to-date\n // so we don't accidentally upload a file encrypted with the wrong\n // key (or not encrypted at all)\n let { valid, error } = await cloudStorage.checkKey();\n if (error) {\n return { error };\n } else if (!valid) {\n return { error: { reason: 'file-has-new-key' } };\n }\n }\n\n let { error } = await cloudStorage.resetSyncState(keyState);\n if (error) {\n return { error };\n }\n\n await runMutator(async () => {\n // TOOD: We could automatically generate the list of tables to\n // cleanup by looking at the schema\n //\n // Be VERY careful here since we are bulk deleting data. It should\n // never delete any data that doesn't have `tombstone = 1`\n await db.execQuery(`\n DELETE FROM messages_crdt;\n DELETE FROM messages_clock;\n DELETE FROM transactions WHERE tombstone = 1;\n DELETE FROM accounts WHERE tombstone = 1;\n DELETE FROM payees WHERE tombstone = 1;\n DELETE FROM categories WHERE tombstone = 1;\n DELETE FROM category_groups WHERE tombstone = 1;\n DELETE FROM schedules WHERE tombstone = 1;\n DELETE FROM rules WHERE tombstone = 1;\n ANALYZE;\n VACUUM;\n `);\n await db.loadClock();\n });\n\n await prefs.savePrefs({\n groupId: null,\n lastSyncedTimestamp: null,\n lastUploaded: null\n });\n\n if (keyState) {\n let { key } = keyState;\n let { cloudFileId } = prefs.getPrefs();\n\n // The key has changed, we need to update our local data to\n // store the new key\n\n // Persist key in async storage\n let keys = JSON.parse((await asyncStorage.getItem(`encrypt-keys`)) || '{}');\n keys[cloudFileId] = key.serialize();\n await asyncStorage.setItem('encrypt-keys', JSON.stringify(keys));\n\n // Save the key id in prefs\n await prefs.savePrefs({ encryptKeyId: key.getId() });\n }\n\n // Finally, upload the file to make it the \"true\" version that all\n // other clients need to pull down to get back in sync\n try {\n await cloudStorage.upload();\n } catch (e) {\n if (e.reason) {\n return { error: e };\n }\n captureException(e);\n return { error: { reason: 'upload-failure' } };\n } finally {\n connection.send('prefs-updated');\n }\n\n return {};\n}\n","import murmurhash from 'murmurhash';\nconst uuid = require('../platform/uuid');\n\n/**\n * Hybrid Unique Logical Clock (HULC) timestamp generator\n *\n * Globally-unique, monotonic timestamps are generated from the\n * combination of the unreliable system time, a counter, and an\n * identifier for the current node (instance, machine, process, etc.).\n * These timestamps can accommodate clock stuttering (duplicate values),\n * regression, and node differences within the configured maximum drift.\n *\n * In order to generate timestamps locally or for transmission to another\n * node, use the send() method. For global causality, timestamps must\n * be included in each message processed by the system. Whenever a\n * message is received, its timestamp must be passed to the recv()\n * method.\n *\n * Timestamps serialize into a 46-character collatable string\n * example: 2015-04-24T22:23:42.123Z-1000-0123456789ABCDEF\n * example: 2015-04-24T22:23:42.123Z-1000-A219E7A71CC18912\n *\n * The 64-bit hybrid clock is based on the HLC specification,\n * http://www.cse.buffalo.edu/tech-reports/2014-04.pdf\n */\n\n// A mutable global clock\nlet clock = null;\n\nexport function setClock(clock_) {\n clock = clock_;\n}\n\nexport function getClock() {\n return clock;\n}\n\nexport function makeClock(timestamp, merkle = {}) {\n return { timestamp: MutableTimestamp.from(timestamp), merkle };\n}\n\nexport function serializeClock(clock) {\n return JSON.stringify({\n timestamp: clock.timestamp.toString(),\n merkle: clock.merkle\n });\n}\n\nexport function deserializeClock(clock) {\n let data;\n try {\n data = JSON.parse(clock);\n } catch (e) {\n data = {\n timestamp: '1970-01-01T00:00:00.000Z-0000-' + makeClientId(),\n merkle: {}\n };\n }\n\n return {\n timestamp: MutableTimestamp.from(Timestamp.parse(data.timestamp)),\n merkle: data.merkle\n };\n}\n\nexport function makeClientId() {\n return uuid\n .v4Sync()\n .replace(/-/g, '')\n .slice(-16);\n}\n\nvar config = {\n // Allow 5 minutes of clock drift\n maxDrift: 5 * 60 * 1000\n};\n\n/**\n * timestamp instance class\n */\nexport default class Timestamp {\n constructor(millis, counter, node) {\n this._state = {\n millis: millis,\n counter: counter,\n node: node\n };\n }\n\n valueOf() {\n return this.toString();\n }\n\n toString() {\n return [\n new Date(this.millis()).toISOString(),\n (\n '0000' +\n this.counter()\n .toString(16)\n .toUpperCase()\n ).slice(-4),\n ('0000000000000000' + this.node()).slice(-16)\n ].join('-');\n }\n\n millis() {\n return this._state.millis;\n }\n\n counter() {\n return this._state.counter;\n }\n\n node() {\n return this._state.node;\n }\n\n hash() {\n return murmurhash.v3(this.toString());\n }\n}\n\nexport class MutableTimestamp extends Timestamp {\n setMillis(n) {\n this._state.millis = n;\n }\n\n setCounter(n) {\n this._state.counter = n;\n }\n\n setNode(n) {\n this._state.node = n;\n }\n}\n\nMutableTimestamp.from = timestamp => {\n return new MutableTimestamp(\n timestamp.millis(),\n timestamp.counter(),\n timestamp.node()\n );\n};\n\n// Timestamp generator initialization\n// * sets the node ID to an arbitrary value\n// * useful for mocking/unit testing\nTimestamp.init = function(options = {}) {\n if (options.maxDrift) {\n config.maxDrift = options.maxDrift;\n }\n\n setClock(\n makeClock(\n new Timestamp(\n 0,\n 0,\n options.node\n ? ('0000000000000000' + options.node).toString().slice(-16)\n : ''\n )\n ),\n null\n );\n};\n\n/**\n * Timestamp send. Generates a unique, monotonic timestamp suitable\n * for transmission to another system in string format\n */\nTimestamp.send = function() {\n if (!clock) {\n return null;\n }\n\n // retrieve the local wall time\n var phys = Date.now();\n\n // unpack the clock.timestamp logical time and counter\n var lOld = clock.timestamp.millis();\n var cOld = clock.timestamp.counter();\n\n // calculate the next logical time and counter\n // * ensure that the logical time never goes backward\n // * increment the counter if phys time does not advance\n var lNew = Math.max(lOld, phys);\n var cNew = lOld === lNew ? cOld + 1 : 0;\n\n // check the result for drift and counter overflow\n if (lNew - phys > config.maxDrift) {\n throw new Timestamp.ClockDriftError(lNew, phys, config.maxDrift);\n }\n if (cNew > 65535) {\n throw new Timestamp.OverflowError();\n }\n\n // repack the logical time/counter\n clock.timestamp.setMillis(lNew);\n clock.timestamp.setCounter(cNew);\n\n return new Timestamp(\n clock.timestamp.millis(),\n clock.timestamp.counter(),\n clock.timestamp.node()\n );\n};\n\n// Timestamp receive. Parses and merges a timestamp from a remote\n// system with the local timeglobal uniqueness and monotonicity are\n// preserved\nTimestamp.recv = function(msg) {\n if (!clock) {\n return null;\n }\n\n // retrieve the local wall time\n var phys = Date.now();\n\n // unpack the message wall time/counter\n var lMsg = msg.millis();\n var cMsg = msg.counter();\n\n // assert the node id and remote clock drift\n // if (msg.node() === clock.timestamp.node()) {\n // throw new Timestamp.DuplicateNodeError(clock.timestamp.node());\n // }\n if (lMsg - phys > config.maxDrift) {\n throw new Timestamp.ClockDriftError();\n }\n\n // unpack the clock.timestamp logical time and counter\n var lOld = clock.timestamp.millis();\n var cOld = clock.timestamp.counter();\n\n // calculate the next logical time and counter\n // . ensure that the logical time never goes backward\n // . if all logical clocks are equal, increment the max counter\n // . if max = old > message, increment local counter\n // . if max = messsage > old, increment message counter\n // . otherwise, clocks are monotonic, reset counter\n var lNew = Math.max(Math.max(lOld, phys), lMsg);\n var cNew =\n lNew === lOld && lNew === lMsg\n ? Math.max(cOld, cMsg) + 1\n : lNew === lOld\n ? cOld + 1\n : lNew === lMsg\n ? cMsg + 1\n : 0;\n\n // check the result for drift and counter overflow\n if (lNew - phys > config.maxDrift) {\n throw new Timestamp.ClockDriftError();\n }\n if (cNew > 65535) {\n throw new Timestamp.OverflowError();\n }\n\n // repack the logical time/counter\n clock.timestamp.setMillis(lNew);\n clock.timestamp.setCounter(cNew);\n\n return new Timestamp(\n clock.timestamp.millis(),\n clock.timestamp.counter(),\n clock.timestamp.node()\n );\n};\n\n/**\n * timestamp parsing\n * converts a fixed-length string timestamp to the structured value\n */\nTimestamp.parse = function(timestamp) {\n if (typeof timestamp === 'string') {\n var parts = timestamp.split('-');\n if (parts && parts.length === 5) {\n var millis = Date.parse(parts.slice(0, 3).join('-')).valueOf();\n var counter = parseInt(parts[3], 16);\n var node = parts[4];\n if (!isNaN(millis) && !isNaN(counter))\n return new Timestamp(millis, counter, node);\n }\n }\n return null;\n};\n\n/**\n * zero/minimum timestamp\n */\nvar zero = Timestamp.parse('1970-01-01T00:00:00.000Z-0000-0000000000000000');\nTimestamp.zero = function() {\n return zero;\n};\n\n/**\n * maximum timestamp\n */\nvar max = Timestamp.parse('9999-12-31T23:59:59.999Z-FFFF-FFFFFFFFFFFFFFFF');\nTimestamp.max = function() {\n return max;\n};\n\nTimestamp.since = isoString => {\n return isoString + '-0000-0000000000000000';\n};\n\n/**\n * error classes\n */\nTimestamp.DuplicateNodeError = class extends Error {\n constructor(node) {\n super();\n this.type = 'DuplicateNodeError';\n this.message = 'duplicate node identifier ' + node;\n }\n};\n\nTimestamp.ClockDriftError = class extends Error {\n constructor(...args) {\n super();\n this.type = 'ClockDriftError';\n this.message = ['maximum clock drift exceeded'].concat(args).join(' ');\n }\n};\n\nTimestamp.OverflowError = class extends Error {\n constructor() {\n super();\n this.type = 'OverflowError';\n this.message = 'timestamp counter overflow';\n }\n};\n","import { batchMessages } from '../sync';\nimport { runMutator } from '../mutators';\nimport { createApp } from '../app';\nimport * as db from '../db';\nimport { batchUpdateTransactions } from '../accounts/transactions';\n\nlet app = createApp();\n\napp.method('tools/fix-split-transactions', async () => {\n // 1. Check for child transactions that have a blank payee, and set\n // the payee to whatever the parent has\n let blankPayeeRows = await db.all(`\n SELECT t.*, p.payee AS parentPayee FROM v_transactions_internal t\n LEFT JOIN v_transactions_internal p ON t.parent_id = p.id\n WHERE t.is_child = 1 AND t.payee IS NULL AND p.payee IS NOT NULL\n `);\n\n await runMutator(async () => {\n let updated = blankPayeeRows.map(row => ({\n id: row.id,\n payee: row.parentPayee\n }));\n await batchUpdateTransactions({ updated });\n });\n\n // 2. Make sure the \"cleared\" flag is synced up with the parent\n // transactions\n let clearedRows = await db.all(`\n SELECT t.id, p.cleared FROM v_transactions_internal t\n LEFT JOIN v_transactions_internal p ON t.parent_id = p.id\n WHERE t.is_child = 1 AND t.cleared != p.cleared\n `);\n\n await runMutator(async () => {\n let updated = clearedRows.map(row => ({\n id: row.id,\n cleared: row.cleared === 1\n }));\n await batchUpdateTransactions({ updated });\n });\n\n // 3. Mark the `tombstone` field as true on any child transactions\n // that have a dead parent\n let deletedRows = await db.all(`\n SELECT t.* FROM v_transactions_internal t\n LEFT JOIN v_transactions_internal p ON t.parent_id = p.id\n WHERE t.is_child = 1 AND t.tombstone = 0 AND (p.tombstone = 1 OR p.id IS NULL)\n `);\n\n await runMutator(async () => {\n let updated = deletedRows.map(row => ({ id: row.id, tombstone: 1 }));\n await batchUpdateTransactions({ updated });\n });\n\n return {\n numBlankPayees: blankPayeeRows.length,\n numCleared: clearedRows.length,\n numDeleted: deletedRows.length\n };\n});\n\nexport default app;\n","import asyncStorage from '../../platform/server/asyncStorage';\nimport { sha256String } from '../encryption-internals';\nlet uuid = require('../../platform/uuid');\n\nlet currentUniqueId;\nlet mixpanel;\nlet isEnabled = true;\n\nexport function toggle(trackUsage) {\n isEnabled = trackUsage == null || trackUsage === 'true' ? true : false;\n}\n\n// TODO: Figure out location, send to EU data centers if in EU\n// {\n// host: \"api-eu.mixpanel.com\",\n// },\n\n// This must stay up-to-date with all apps that hit mixpanel! That includes the\n// website and server. If changing this, make sure to change it everywhere\nasync function hash(userId) {\n let hashed = await sha256String(userId);\n return `user-${hashed.replace(/[=/]/g, '')}`;\n}\n\nfunction isAnonymous(id) {\n return !id.startsWith('user-');\n}\n\nexport async function init() {\n}\n\nexport async function login(userId) {\n}\n\nlet BUFFERING = false;\nlet BUFFER = [];\n\nfunction startBuffering() {\n BUFFERING = true;\n BUFFER = [];\n}\n\nfunction stopBuffering() {\n for (let call of BUFFER) {\n call[0](...call[1]);\n }\n BUFFERING = false;\n BUFFER = [];\n}\n\nfunction buffered(func) {\n return (...args) => {\n if (process.env.NODE_ENV !== 'development') {\n if (BUFFERING) {\n BUFFER.push([func, [currentUniqueId, ...args]]);\n } else {\n func(currentUniqueId, ...args);\n }\n }\n };\n}\n\nexport const track = buffered((distinct_id, name, props) => {});\n\nexport const setProfile = buffered((distinct_id, props) => {});\n","import { sendMessages } from './sync';\nimport { getIn } from '../shared/util';\nimport Timestamp from './timestamp';\nimport { withMutatorContext, getMutatorContext } from './mutators';\nconst connection = require('../platform/server/connection');\n\n// A marker always sits as the first entry to simplify logic\nlet MESSAGE_HISTORY = [{ type: 'marker' }];\nlet CURSOR = 0;\nlet HISTORY_SIZE = 20;\n\nfunction trimHistory() {\n MESSAGE_HISTORY = MESSAGE_HISTORY.slice(0, CURSOR + 1);\n\n let markers = MESSAGE_HISTORY.filter(item => item.type === 'marker');\n if (markers.length > HISTORY_SIZE) {\n let slice = markers.slice(-HISTORY_SIZE);\n let cutoff = MESSAGE_HISTORY.indexOf(slice[0]);\n MESSAGE_HISTORY = MESSAGE_HISTORY.slice(cutoff);\n CURSOR = MESSAGE_HISTORY.length - 1;\n }\n}\n\nexport function appendMessages(messages, oldData) {\n let context = getMutatorContext();\n\n if (context.undoListening && messages.length > 0) {\n trimHistory();\n\n let { undoTag } = context;\n\n MESSAGE_HISTORY.push({\n type: 'messages',\n messages,\n oldData,\n undoTag\n });\n CURSOR++;\n }\n}\n\nexport function clearUndo() {\n MESSAGE_HISTORY = [{ type: 'marker' }];\n CURSOR = 0;\n}\n\nexport function withUndo(func, meta) {\n let context = getMutatorContext();\n if (context.undoDisabled || context.undoListening) {\n return func();\n }\n\n MESSAGE_HISTORY = MESSAGE_HISTORY.slice(0, CURSOR + 1);\n\n let marker = { type: 'marker', meta };\n\n if (MESSAGE_HISTORY[MESSAGE_HISTORY.length - 1].type === 'marker') {\n MESSAGE_HISTORY[MESSAGE_HISTORY.length - 1] = marker;\n } else {\n MESSAGE_HISTORY.push(marker);\n CURSOR++;\n }\n\n return withMutatorContext(\n { undoListening: true, undoTag: context.undoTag },\n func\n );\n}\n\nexport function undoable(func) {\n return (...args) => {\n return withUndo(() => {\n return func(...args);\n });\n };\n}\n\nasync function applyUndoAction(messages, meta, undoTag) {\n await withMutatorContext({ undoListening: false }, () => {\n return sendMessages(\n messages.map(msg => ({ ...msg, timestamp: Timestamp.send() }))\n );\n });\n\n const tables = messages.reduce((acc, message) => {\n if (!acc.includes(message.dataset)) {\n acc.push(message.dataset);\n }\n return acc;\n }, []);\n\n connection.send('undo-event', {\n messages,\n tables,\n meta,\n undoTag\n });\n}\n\nexport async function undo() {\n let end = CURSOR;\n CURSOR = Math.max(CURSOR - 1, 0);\n\n // Walk back to the nearest marker\n while (CURSOR > 0 && MESSAGE_HISTORY[CURSOR].type !== 'marker') {\n CURSOR--;\n }\n\n let meta = MESSAGE_HISTORY[CURSOR].meta;\n let start = Math.max(CURSOR, 0);\n let entries = MESSAGE_HISTORY.slice(start, end + 1).filter(\n entry => entry.type === 'messages'\n );\n\n if (entries.length > 0) {\n let toApply = entries\n .reduce((acc, entry) => {\n return acc.concat(\n entry.messages\n .map(message => undoMessage(message, entry.oldData))\n .filter(x => x)\n );\n }, [])\n .reverse();\n\n await applyUndoAction(toApply, meta, entries[0].undoTag);\n }\n}\n\nfunction undoMessage(message, oldData) {\n let oldItem = getIn(oldData, [message.dataset, message.row]);\n if (oldItem) {\n let column = message.column;\n if (message.dataset === 'spreadsheet_cells') {\n // The spreadsheet messages use the `expr` column, but only as a\n // placeholder. We actually want to read the `cachedValue` prop\n // from the old item.\n column = 'cachedValue';\n }\n\n return { ...message, value: oldItem[column] };\n } else {\n if (message.dataset === 'spreadsheet_cells') {\n if (message.column === 'expr') {\n return { ...message, value: null };\n }\n return message;\n } else if (\n // The mapping fields aren't ever deleted... this should be\n // harmless since all they are is meta information. Maybe we\n // should fix this though.\n message.dataset !== 'category_mapping' &&\n message.dataset !== 'payee_mapping'\n ) {\n if (\n message.dataset === 'zero_budget_months' ||\n message.dataset === 'zero_budgets' ||\n message.dataset === 'reflect_budgets'\n ) {\n // Only these fields are reversable\n if (['buffered', 'amount', 'carryover'].includes(message.column)) {\n return { ...message, value: 0 };\n }\n return null;\n } else if (message.dataset === 'notes') {\n return { ...message, value: null };\n }\n\n return { ...message, column: 'tombstone', value: 1 };\n }\n }\n return null;\n}\n\nexport async function redo() {\n let meta =\n MESSAGE_HISTORY[CURSOR].type === 'marker'\n ? MESSAGE_HISTORY[CURSOR].meta\n : null;\n\n let start = CURSOR;\n CURSOR = Math.min(CURSOR + 1, MESSAGE_HISTORY.length - 1);\n\n // Walk forward to the nearest marker\n while (\n CURSOR < MESSAGE_HISTORY.length - 1 &&\n MESSAGE_HISTORY[CURSOR].type !== 'marker'\n ) {\n CURSOR++;\n }\n\n let end = CURSOR;\n let entries = MESSAGE_HISTORY.slice(start + 1, end + 1).filter(\n entry => entry.type === 'messages'\n );\n\n if (entries.length > 0) {\n let toApply = entries.reduce((acc, entry) => {\n return acc\n .concat(entry.messages)\n .concat(redoResurrections(entry.messages, entry.oldData));\n }, []);\n\n await applyUndoAction(toApply, meta, entries[entries.length - 1].undoTag);\n }\n}\n\nfunction redoResurrections(messages, oldData) {\n let resurrect = new Set();\n\n messages.forEach(message => {\n // If any of the ids didn't exist before, we need to \"resurrect\"\n // them by resetting their tombstones to 0\n let oldItem = getIn(oldData, [message.dataset, message.row]);\n if (\n !oldItem &&\n ![\n 'zero_budget_months',\n 'zero_budgets',\n 'reflect_budgets',\n 'notes',\n 'category_mapping',\n 'payee_mapping'\n ].includes(message.dataset)\n ) {\n resurrect.add(message.dataset + '.' + message.row);\n }\n });\n\n return [...resurrect].map(desc => {\n let [table, row] = desc.split('.');\n return {\n dataset: table,\n row,\n column: 'tombstone',\n value: 0,\n timestamp: Timestamp.send()\n };\n });\n}\n","import md5 from 'md5';\nimport * as migrations from './migrate/migrations';\nimport * as db from './db';\nimport { schema, schemaConfig } from './aql/schema';\nimport { makeViews } from './aql/views';\n\n// Managing the init/update process\n\nasync function runMigrations() {\n await migrations.migrate(db.getDatabase());\n}\n\nexport async function updateViews() {\n let hashKey = 'view-hash';\n let row = await db.first('SELECT value FROM __meta__ WHERE key = ?', [\n hashKey\n ]);\n let { value: hash } = row || {};\n\n let views = makeViews(schema, schemaConfig);\n let currentHash = md5(views);\n\n if (hash !== currentHash) {\n await db.execQuery(views);\n await db.runQuery(\n 'INSERT OR REPLACE INTO __meta__ (key, value) VALUES (?, ?)',\n [hashKey, currentHash]\n );\n }\n}\n\nexport async function updateVersion() {\n await runMigrations();\n await updateViews();\n}\n","import fs from '../../platform/server/fs';\nconst uuid = require('../../platform/uuid');\n\nexport async function uniqueFileName(existingFiles) {\n let initialName = 'My Finances';\n let idx = 1;\n\n // If there is a conflict, keep appending an index until there is no\n // conflict and we have a unique name\n let newName = initialName;\n while (existingFiles.find(file => file.name === newName)) {\n newName = `${initialName} ${idx}`;\n idx++;\n }\n\n return newName;\n}\n\nexport async function idFromFileName(name) {\n let id =\n name.replace(/( |[^A-Za-z0-9])/g, '-') + '-' + uuid.v4Sync().slice(0, 7);\n\n // Make sure the id is unique. There's a chance one could already\n // exist (although very unlikely now that we append unique\n // characters onto the id)\n let index = 0;\n\n let budgetDir = fs.getBudgetDir(id);\n while (await fs.exists(budgetDir)) {\n index++;\n budgetDir = fs.getBudgetDir(id + index.toString());\n }\n\n // If a suffix was added, update the id\n if (index > 0) {\n id = id + index.toString();\n }\n\n return id;\n}\n","import '@rschedule/standard-date-adapter/setup';\nimport '@rschedule/json-tools/Schedule';\n\nexport * from '@rschedule/standard-date-adapter';\nexport * from '@rschedule/core';\nexport * from '@rschedule/core/generators';\n","export function fromPlaidAccountType(type, subtype) {\n switch (type) {\n case 'brokerage':\n case 'investment':\n return 'investment';\n case 'credit':\n return 'credit';\n case 'loan':\n return 'debt';\n case 'other':\n return 'other';\n case 'depository':\n default:\n switch (subtype) {\n case 'money market':\n case 'savings':\n return 'savings';\n case 'cd':\n return 'cd';\n default:\n return 'checking';\n }\n }\n}\n\nexport function prettyAccountType(type) {\n switch (type) {\n case 'checking':\n return 'Checking';\n case 'savings':\n return 'Savings';\n case 'cd':\n return 'CD';\n case 'investment':\n return 'Investment';\n case 'credit':\n return 'Credit Card';\n case 'mortgage':\n return 'Mortgage';\n case 'debt':\n return 'Debt';\n case 'other':\n default:\n return 'Other';\n }\n}\n\nexport function determineOffBudget(type) {\n switch (type) {\n case 'investment':\n case 'mortgage':\n case 'debt':\n case 'other':\n return true;\n default:\n }\n return false;\n}\n","export function sequential(fn) {\n let sequenceState = {\n running: null,\n queue: []\n };\n\n function pump() {\n if (sequenceState.queue.length > 0) {\n const next = sequenceState.queue.shift();\n run(next.args, next.resolve, next.reject);\n } else {\n sequenceState.running = null;\n }\n }\n\n function run(args, resolve, reject) {\n sequenceState.running = fn(...args);\n\n sequenceState.running.then(\n val => {\n pump();\n resolve(val);\n },\n err => {\n pump();\n reject(err);\n }\n );\n }\n\n return (...args) => {\n if (!sequenceState.running) {\n return new Promise((resolve, reject) => {\n return run(args, resolve, reject);\n });\n } else {\n return new Promise((resolve, reject) => {\n sequenceState.queue.push({ resolve, reject, args });\n });\n }\n };\n}\n\nexport function once(fn) {\n let promise = null;\n let onceFn = (...args) => {\n if (!promise) {\n promise = fn(...args).finally(() => {\n promise = null;\n });\n return promise;\n }\n\n return promise;\n };\n\n return onceFn;\n}\n","import * as d from 'date-fns';\nimport memoizeOne from 'memoize-one';\n\nfunction _parse(value) {\n if (typeof value === 'string') {\n // Dates are hard. We just want to deal with months in the format\n // 2020-01 and days in the format 2020-01-01, but life is never\n // simple. We want to rely on native dates for date logic because\n // days are complicated (leap years, etc). But relying on native\n // dates mean we're exposed to craziness.\n //\n // The biggest problem is that JS dates work with local time by\n // default. We could try to only work with UTC, but there's not an\n // easy way to make `format` avoid local time, and not sure if we\n // want that anyway (`currentMonth` should surely print the local\n // time). We need to embrace local time, and as long as inputs to\n // date logic and outputs from format are local time, it should\n // work.\n //\n // To make sure we're in local time, always give Date integer\n // values. If you pass in a string to parse, different string\n // formats produce different results.\n //\n // A big problem is daylight savings, however. Usually, when\n // giving the time to the Date constructor, you get back a date\n // specifically for that time in your local timezone. However, if\n // daylight savings occurs on that exact time, you will get back\n // something different:\n //\n // This is fine:\n // > new Date(2017, 2, 12, 1).toString()\n // > 'Sun Mar 12 2017 01:00:00 GMT-0500 (Eastern Standard Time)'\n //\n // But wait, we got back a different time (3AM instead of 2AM):\n // > new Date(2017, 2, 12, 2).toString()\n // > 'Sun Mar 12 2017 03:00:00 GMT-0400 (Eastern Daylight Time)'\n //\n // The time is \"correctly\" adjusted via DST, but we _really_\n // wanted 2AM. The problem is that time simply doesn't exist.\n //\n // Why is this a problem? Well, consider a case where the DST\n // shift happens *at midnight* and it goes back an hour. You think\n // you have a date object for the next day, but when formatted it\n // actually shows the previous day. A more likely scenario: buggy\n // timezone data makes JS dates do this shift when it shouldn't,\n // so using midnight at the time for date logic gives back the\n // last day. See the time range of Sep 30 15:00 - Oct 1 1:00 for\n // the AEST timezone when nodejs-mobile incorrectly gives you back\n // a time an hour *before* you specified. Since this happens on\n // Oct 1, doing `addMonths(September, 1)` still gives you back\n // September. Issue here:\n // https://github.com/JaneaSystems/nodejs-mobile/issues/251\n //\n // The fix is simple once you understand this. Always use the 12th\n // hour of the day. That's it. There is no DST that shifts more\n // than 12 hours (god let's hope not) so no matter how far DST has\n // shifted backwards or forwards, doing date logic will stay\n // within the day we want.\n\n let [year, month, day] = value.split('-');\n if (day != null) {\n return new Date(parseInt(year), parseInt(month) - 1, parseInt(day), 12);\n } else if (month != null) {\n return new Date(parseInt(year), parseInt(month) - 1, 1, 12);\n } else {\n return new Date(parseInt(year), 0, 1, 12);\n }\n }\n return value;\n}\n\nexport const parseDate = _parse;\n\nexport function yearFromDate(date) {\n return d.format(_parse(date), 'yyyy');\n}\n\nexport function monthFromDate(date) {\n return d.format(_parse(date), 'yyyy-MM');\n}\n\nexport function dayFromDate(date) {\n return d.format(_parse(date), 'yyyy-MM-dd');\n}\n\nexport function currentMonth() {\n if (global.IS_TESTING) {\n return '2017-01';\n } else {\n return d.format(new Date(), 'yyyy-MM');\n }\n}\n\nexport function currentDay() {\n if (global.IS_TESTING) {\n return '2017-01-01';\n } else {\n return d.format(new Date(), 'yyyy-MM-dd');\n }\n}\n\nexport function nextMonth(month) {\n return d.format(d.addMonths(_parse(month), 1), 'yyyy-MM');\n}\n\nexport function prevMonth(month) {\n return d.format(d.subMonths(_parse(month), 1), 'yyyy-MM');\n}\n\nexport function addMonths(month, n) {\n return d.format(d.addMonths(_parse(month), n), 'yyyy-MM');\n}\n\nexport function subMonths(month, n) {\n return d.format(d.subMonths(_parse(month), n), 'yyyy-MM');\n}\n\nexport function addDays(day, n) {\n return d.format(d.addDays(_parse(day), n), 'yyyy-MM-dd');\n}\n\nexport function subDays(day, n) {\n return d.format(d.subDays(_parse(day), n), 'yyyy-MM-dd');\n}\n\nexport function isBefore(month1, month2) {\n return d.isBefore(_parse(month1), _parse(month2));\n}\n\nexport function isAfter(month1, month2) {\n return d.isAfter(_parse(month1), _parse(month2));\n}\n\n// TODO: This doesn't really fit in this module anymore, should\n// probably live elsewhere\nexport function bounds(month) {\n return {\n start: parseInt(d.format(d.startOfMonth(_parse(month)), 'yyyyMMdd')),\n end: parseInt(d.format(d.endOfMonth(_parse(month)), 'yyyyMMdd'))\n };\n}\n\nexport function _range(start, end, inclusive) {\n const months = [];\n let month = monthFromDate(start);\n while (d.isBefore(_parse(month), _parse(end))) {\n months.push(month);\n month = addMonths(month, 1);\n }\n\n if (inclusive) {\n months.push(month);\n }\n\n return months;\n}\n\nexport function range(start, end) {\n return _range(start, end);\n}\n\nexport function rangeInclusive(start, end) {\n return _range(start, end, true);\n}\n\nexport function _dayRange(start, end, inclusive) {\n const days = [];\n let day = start;\n while (d.isBefore(_parse(day), _parse(end))) {\n days.push(day);\n day = addDays(day, 1);\n }\n\n if (inclusive) {\n days.push(day);\n }\n\n return days;\n}\n\nexport function dayRange(start, end) {\n return _dayRange(start, end);\n}\n\nexport function dayRangeInclusive(start, end) {\n return _dayRange(start, end, true);\n}\n\nexport function getMonthIndex(month) {\n return parseInt(month.slice(5, 7)) - 1;\n}\n\nexport function getYear(month) {\n return month.slice(0, 4);\n}\n\nexport function getMonth(day) {\n return day.slice(0, 7);\n}\n\nexport function getYearStart(month) {\n return getYear(month) + '-01';\n}\n\nexport function getYearEnd(month) {\n return getYear(month) + '-12';\n}\n\nexport function sheetForMonth(month) {\n return 'budget' + month.replace('-', '');\n}\n\nexport function nameForMonth(month) {\n return d.format(_parse(month), \"MMMM 'yy\");\n}\n\nexport function format(month, str) {\n return d.format(_parse(month), str);\n}\n\nexport const getDateFormatRegex = memoizeOne(format => {\n return new RegExp(\n format\n .replace(/d+/g, '\\\\d{1,2}')\n .replace(/M+/g, '\\\\d{1,2}')\n .replace(/y+/g, '\\\\d{4}')\n );\n});\n\nexport const getDayMonthFormat = memoizeOne(format => {\n return format\n .replace(/y+/g, '')\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '');\n});\n\nexport const getDayMonthRegex = memoizeOne(format => {\n let regex = format\n .replace(/y+/g, '')\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '')\n .replace(/d+/g, '\\\\d{1,2}')\n .replace(/M+/g, '\\\\d{1,2}');\n return new RegExp('^' + regex + '$');\n});\n\nexport const getMonthYearFormat = memoizeOne(format => {\n return format\n .replace(/d+/g, '')\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '')\n .replace(/\\/\\//, '/')\n .replace(/\\.\\./, '.')\n .replace(/--/, '-');\n});\n\nexport const getMonthYearRegex = memoizeOne(format => {\n let regex = format\n .replace(/d+/g, '')\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '')\n .replace(/\\/\\//, '/')\n .replace(/M+/g, '\\\\d{1,2}')\n .replace(/y+/g, '\\\\d{2,4}');\n return new RegExp('^' + regex + '$');\n});\n\nexport const getShortYearFormat = memoizeOne(format => {\n return format.replace(/y+/g, 'yy');\n});\n\nexport const getShortYearRegex = memoizeOne(format => {\n let regex = format\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '')\n .replace(/d+/g, '\\\\d{1,2}')\n .replace(/M+/g, '\\\\d{1,2}')\n .replace(/y+/g, '\\\\d{2}');\n return new RegExp('^' + regex + '$');\n});\n","export class Query {\n constructor(state) {\n this.state = {\n filterExpressions: state.filterExpressions || [],\n selectExpressions: state.selectExpressions || [],\n groupExpressions: state.groupExpressions || [],\n orderExpressions: state.orderExpressions || [],\n calculation: false,\n rawMode: false,\n withDead: false,\n validateRefs: true,\n limit: null,\n offset: null,\n ...state\n };\n }\n\n filter(expr) {\n return new Query({\n ...this.state,\n filterExpressions: [...this.state.filterExpressions, expr]\n });\n }\n\n unfilter(exprs) {\n let exprSet = new Set(exprs);\n return new Query({\n ...this.state,\n filterExpressions: this.state.filterExpressions.filter(\n expr => !exprSet.has(Object.keys(expr)[0])\n )\n });\n }\n\n select(exprs = []) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n let query = new Query({ ...this.state, selectExpressions: exprs });\n query.state.calculation = false;\n return query;\n }\n\n calculate(expr) {\n let query = this.select({ result: expr });\n query.state.calculation = true;\n return query;\n }\n\n groupBy(exprs) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n return new Query({\n ...this.state,\n groupExpressions: [...this.state.groupExpressions, ...exprs]\n });\n }\n\n orderBy(exprs) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n return new Query({\n ...this.state,\n orderExpressions: [...this.state.orderExpressions, ...exprs]\n });\n }\n\n limit(num) {\n return new Query({ ...this.state, limit: num });\n }\n\n offset(num) {\n return new Query({ ...this.state, offset: num });\n }\n\n raw() {\n return new Query({ ...this.state, rawMode: true });\n }\n\n withDead() {\n return new Query({ ...this.state, withDead: true });\n }\n\n withoutValidatedRefs() {\n return new Query({ ...this.state, validateRefs: false });\n }\n\n options(opts) {\n return new Query({ ...this.state, tableOptions: opts });\n }\n\n serialize() {\n return this.state;\n }\n}\n\nexport function getPrimaryOrderBy(query, defaultOrderBy) {\n let orderExprs = query.serialize().orderExpressions;\n if (orderExprs.length === 0) {\n if (defaultOrderBy) {\n return { order: 'asc', ...defaultOrderBy };\n }\n return null;\n }\n\n let firstOrder = orderExprs[0];\n if (typeof firstOrder === 'string') {\n return { field: firstOrder, order: 'asc' };\n }\n // Handle this form: { field: 'desc' }\n let [field] = Object.keys(firstOrder);\n return { field, order: firstOrder[field] };\n}\n\nexport default function q(table) {\n return new Query({ table });\n}\n","import { integerToAmount, amountToInteger, currencyToAmount } from './util';\n\n// For now, this info is duplicated from the backend. Figure out how\n// to share it later.\nexport const TYPE_INFO = {\n date: {\n ops: ['is', 'isapprox', 'gt', 'gte', 'lt', 'lte'],\n nullable: false\n },\n id: {\n ops: ['is', 'contains', 'oneOf'],\n nullable: true\n },\n string: {\n ops: ['is', 'contains', 'oneOf'],\n nullable: false\n },\n number: {\n ops: ['is', 'isapprox', 'isbetween', 'gt', 'gte', 'lt', 'lte'],\n nullable: false\n },\n boolean: {\n ops: ['is'],\n nullable: false\n }\n};\n\nexport const FIELD_TYPES = new Map(\n Object.entries({\n imported_payee: 'string',\n payee: 'id',\n date: 'date',\n notes: 'string',\n amount: 'number',\n amountInflow: 'number',\n amountOutfow: 'number',\n category: 'id',\n account: 'id',\n cleared: 'boolean'\n })\n);\n\nexport function mapField(field, opts) {\n opts = opts || {};\n\n switch (field) {\n case 'imported_payee':\n return 'imported payee';\n case 'amount':\n if (opts.inflow) {\n return 'amount (inflow)';\n } else if (opts.outflow) {\n return 'amount (outflow)';\n }\n return 'amount';\n case 'amount-inflow':\n return 'amount (inflow)';\n case 'amount-outflow':\n return 'amount (outflow)';\n default:\n return field;\n }\n}\n\nexport function friendlyOp(op, type) {\n switch (op) {\n case 'oneOf':\n return 'one of';\n case 'is':\n return 'is';\n case 'isapprox':\n return 'is approx';\n case 'isbetween':\n return 'is between';\n case 'contains':\n return 'contains';\n case 'gt':\n if (type === 'date') {\n return 'is after';\n }\n return 'is greater than';\n case 'gte':\n if (type === 'date') {\n return 'is after or equals';\n }\n return 'is greater than or equals';\n case 'lt':\n if (type === 'date') {\n return 'is before';\n }\n return 'is less than';\n case 'lte':\n if (type === 'date') {\n return 'is before or equals';\n }\n return 'is less than or equals';\n case 'true':\n return 'is true';\n case 'false':\n return 'is false';\n case 'set':\n return 'set';\n case 'link-schedule':\n return 'link schedule';\n default:\n return '';\n }\n}\n\nexport function deserializeField(field) {\n if (field === 'amount-inflow') {\n return { field: 'amount', options: { inflow: true } };\n } else if (field === 'amount-outflow') {\n return { field: 'amount', options: { outflow: true } };\n } else {\n return { field };\n }\n}\n\nexport function getFieldError(type) {\n switch (type) {\n case 'date-format':\n return 'Invalid date format';\n case 'no-null':\n case 'no-empty-array':\n case 'no-empty-string':\n return 'Value cannot be empty';\n case 'not-number':\n return 'Value must be a number';\n case 'invalid-field':\n return 'Please choose a valid field for this type of rule';\n default:\n return 'Internal error, sorry! Contact help@actualbudget.com';\n }\n}\n\nexport function sortNumbers(num1, num2) {\n if (num1 < num2) {\n return [num1, num2];\n }\n return [num2, num1];\n}\n\nexport function parse(item) {\n switch (item.type) {\n case 'number': {\n let parsed = item.value;\n if (item.field === 'amount' && item.op !== 'isbetween') {\n parsed = integerToAmount(parsed);\n }\n return { ...item, value: parsed };\n }\n case 'string': {\n let parsed = item.value == null ? '' : item.value;\n return { ...item, value: parsed };\n }\n default:\n }\n\n return { ...item, error: null };\n}\n\nexport function unparse({ error, inputKey, ...item }) {\n switch (item.type) {\n case 'number': {\n let unparsed = item.value;\n if (item.field === 'amount' && item.op !== 'isbetween') {\n unparsed = amountToInteger(unparsed);\n }\n\n return { ...item, value: unparsed };\n }\n case 'string': {\n let unparsed = item.value == null ? '' : item.value;\n return { ...item, value: unparsed };\n }\n default:\n }\n\n return item;\n}\n\nexport function makeValue(value, cond) {\n switch (cond.type) {\n case 'number': {\n if (cond.op !== 'isbetween') {\n return {\n ...cond,\n error: null,\n value: value ? currencyToAmount(value) || 0 : 0\n };\n }\n break;\n }\n default:\n }\n\n return { ...cond, error: null, value };\n}\n\nexport function getApproxNumberThreshold(number) {\n return (Math.abs(number) * 0.075) | 0;\n}\n","import * as monthUtils from './months';\nimport q from './query';\n\nexport function getStatus(nextDate, completed, hasTrans) {\n let today = monthUtils.currentDay();\n\n if (completed) {\n return 'completed';\n } else if (hasTrans) {\n return 'paid';\n } else if (nextDate === today) {\n return 'due';\n } else if (nextDate > today && nextDate <= monthUtils.addDays(today, 7)) {\n return 'upcoming';\n } else if (nextDate < today) {\n return 'missed';\n } else {\n return 'scheduled';\n }\n}\n\nexport function getHasTransactionsQuery(schedules) {\n let filters = schedules.map(schedule => {\n let dateCond = schedule._conditions.find(c => c.field === 'date');\n return {\n $and: {\n schedule: schedule.id,\n date: {\n $gte:\n dateCond && dateCond.op === 'is'\n ? schedule.next_date\n : monthUtils.subDays(schedule.next_date, 2)\n }\n }\n };\n });\n\n return q('transactions')\n .filter({ $or: filters })\n .orderBy({ date: 'desc' })\n .groupBy('schedule')\n .select(['schedule', 'date']);\n}\n\nfunction makeNumberSuffix(num) {\n // Slight abuse of date-fns to turn a number like \"1\" into the full\n // form \"1st\" but formatting a date with that number\n return monthUtils.format(new Date(2020, 0, num, 12), 'do');\n}\n\nfunction prettyDayName(day) {\n let days = {\n SU: 'Sunday',\n MO: 'Monday',\n TU: 'Tuesday',\n WE: 'Wednesday',\n TH: 'Thursday',\n FR: 'Friday',\n SA: 'Saturday'\n };\n return days[day];\n}\n\nexport function getRecurringDescription(config) {\n let interval = config.interval || 1;\n\n switch (config.frequency) {\n case 'weekly': {\n let desc = 'Every ';\n desc += interval !== 1 ? `${interval} weeks` : 'week';\n desc += ' on ' + monthUtils.format(config.start, 'EEEE');\n return desc;\n }\n case 'monthly': {\n let desc = 'Every ';\n desc += interval !== 1 ? `${interval} months` : 'month';\n\n if (config.patterns && config.patterns.length > 0) {\n // Sort the days ascending. We filter out -1 because that\n // represents \"last days\" and should always be last, but this\n // sort would put them first\n let patterns = [...config.patterns]\n .sort((p1, p2) => {\n let typeOrder =\n (p1.type === 'day' ? 1 : 0) - (p2.type === 'day' ? 1 : 0);\n let valOrder = p1.value - p2.value;\n\n if (typeOrder === 0) {\n return valOrder;\n }\n return typeOrder;\n })\n .filter(p => p.value !== -1);\n\n // Add on all -1 values to the end\n patterns = patterns.concat(config.patterns.filter(p => p.value === -1));\n\n desc += ' on the ';\n\n let strs = [];\n\n let uniqueDays = new Set(patterns.map(p => p.type));\n let isSameDay = uniqueDays.length === 1 && !uniqueDays.has('day');\n\n for (let pattern of patterns) {\n if (pattern.type === 'day') {\n if (pattern.value === -1) {\n strs.push('last day');\n } else {\n // Example: 15th day\n strs.push(makeNumberSuffix(pattern.value));\n }\n } else {\n let dayName = isSameDay ? '' : ' ' + prettyDayName(pattern.type);\n\n if (pattern.value === -1) {\n // Example: last Monday\n strs.push('last' + dayName);\n } else {\n // Example: 3rd Monday\n strs.push(makeNumberSuffix(pattern.value) + dayName);\n }\n }\n }\n\n if (strs.length > 2) {\n desc += strs.slice(0, strs.length - 1).join(', ');\n desc += ', and ';\n desc += strs[strs.length - 1];\n } else {\n desc += strs.join(' and ');\n }\n\n if (isSameDay) {\n desc += ' ' + prettyDayName(patterns[0].type);\n }\n } else {\n desc += ' on the ' + monthUtils.format(config.start, 'do');\n }\n\n return desc;\n }\n case 'yearly': {\n let desc = 'Every ';\n desc += interval !== 1 ? `${interval} years` : 'year';\n desc += ' on ' + monthUtils.format(config.start, 'LLL do');\n return desc;\n }\n default:\n return 'Recurring error';\n }\n}\n\nexport function recurConfigToRSchedule(config) {\n let base = {\n start: monthUtils.parseDate(config.start),\n frequency: config.frequency.toUpperCase(),\n byHourOfDay: [12]\n };\n\n if (config.interval) {\n base.interval = config.interval;\n }\n\n let abbrevDay = name => name.slice(0, 2).toUpperCase();\n\n switch (config.frequency) {\n case 'weekly':\n // Nothing to do\n return [base];\n case 'monthly':\n if (config.patterns && config.patterns.length > 0) {\n let days = config.patterns.filter(p => p.type === 'day');\n let dayNames = config.patterns.filter(p => p.type !== 'day');\n\n return [\n days.length > 0 && { ...base, byDayOfMonth: days.map(p => p.value) },\n dayNames.length > 0 && {\n ...base,\n byDayOfWeek: dayNames.map(p => [abbrevDay(p.type), p.value])\n }\n ].filter(Boolean);\n } else {\n // Nothing to do\n return [base];\n }\n case 'yearly':\n return [base];\n default:\n throw new Error('Invalid recurring date config');\n }\n}\n\nexport function extractScheduleConds(conditions) {\n return {\n payee:\n conditions.find(cond => cond.op === 'is' && cond.field === 'payee') ||\n conditions.find(\n cond => cond.op === 'is' && cond.field === 'description'\n ) ||\n null,\n account:\n conditions.find(cond => cond.op === 'is' && cond.field === 'account') ||\n conditions.find(cond => cond.op === 'is' && cond.field === 'acct') ||\n null,\n amount:\n conditions.find(\n cond =>\n (cond.op === 'is' ||\n cond.op === 'isapprox' ||\n cond.op === 'isbetween') &&\n cond.field === 'amount'\n ) || null,\n date:\n conditions.find(\n cond =>\n (cond.op === 'is' || cond.op === 'isapprox') && cond.field === 'date'\n ) || null\n };\n}\n\nexport function getScheduledAmount(amount) {\n if (amount && typeof amount !== 'number') {\n return ((amount.num1 + amount.num2) / 2) | 0;\n }\n return amount;\n}\n","import { last, diffItems, getChangedValues, applyChanges } from './util';\nconst uuid = require('../platform/uuid');\n\n// The amount might be null when adding a new transaction\nfunction num(n) {\n return typeof n === 'number' ? n : 0;\n}\n\nfunction SplitTransactionError(total, parent) {\n let difference = num(parent.amount) - total;\n\n return {\n type: 'SplitTransactionError',\n version: 1,\n difference\n };\n}\n\nexport function makeChild(parent, data) {\n let prefix = parent.id === 'temp' ? 'temp' : '';\n\n return {\n amount: 0,\n ...data,\n payee: data.payee || parent.payee,\n id: data.id ? data.id : prefix + uuid.v4Sync(),\n account: parent.account,\n date: parent.date,\n cleared: parent.cleared != null ? parent.cleared : null,\n starting_balance_flag:\n parent.starting_balance_flag != null\n ? parent.starting_balance_flag\n : null,\n is_child: true,\n parent_id: parent.id,\n error: null\n };\n}\n\nexport function recalculateSplit(trans) {\n // Calculate the new total of split transactions and make sure\n // that it equals the parent amount\n const total = trans.subtransactions.reduce(\n (acc, t) => acc + num(t.amount),\n 0\n );\n return {\n ...trans,\n error:\n total === num(trans.amount) ? null : SplitTransactionError(total, trans)\n };\n}\n\nexport function findParentIndex(transactions, idx) {\n // This relies on transactions being sorted in a way where parents\n // are always before children, which is enforced in the db layer.\n // Walk backwards and find the last parent;\n while (idx >= 0) {\n let trans = transactions[idx];\n if (trans.is_parent) {\n return idx;\n }\n idx--;\n }\n return null;\n}\n\nexport function getSplit(transactions, parentIndex) {\n let split = [transactions[parentIndex]];\n let curr = parentIndex + 1;\n while (curr < transactions.length && transactions[curr].is_child) {\n split.push(transactions[curr]);\n curr++;\n }\n return split;\n}\n\nexport function ungroupTransactions(transactions) {\n let x = transactions.reduce((list, parent) => {\n let { subtransactions, ...trans } = parent;\n subtransactions = subtransactions || [];\n\n list.push(trans);\n\n for (let i = 0; i < subtransactions.length; i++) {\n list.push(subtransactions[i]);\n }\n return list;\n }, []);\n return x;\n}\n\nexport function groupTransaction(split) {\n return { ...split[0], subtransactions: split.slice(1) };\n}\n\nexport function ungroupTransaction(split) {\n if (split == null) {\n return null;\n }\n return ungroupTransactions([split]);\n}\n\nexport function applyTransactionDiff(groupedTrans, diff) {\n return groupTransaction(applyChanges(diff, ungroupTransaction(groupedTrans)));\n}\n\nexport function replaceTransactions(transactions, id, func) {\n let idx = transactions.findIndex(t => t.id === id);\n let trans = transactions[idx];\n let transactionsCopy = [...transactions];\n\n if (idx === -1) {\n throw new Error('Tried to edit unknown transaction id: ' + id);\n }\n\n if (trans.is_parent || trans.is_child) {\n let parentIndex = findParentIndex(transactions, idx);\n if (parentIndex == null) {\n console.log('Cannot find parent index');\n return { diff: { deleted: [], updated: [] } };\n }\n\n let split = getSplit(transactions, parentIndex);\n let grouped = func(groupTransaction(split));\n let newSplit = ungroupTransaction(grouped);\n\n let diff;\n if (newSplit == null) {\n // If everything was deleted, just delete the parent which will\n // delete everything\n diff = { deleted: [{ id: split[0].id }], updated: [] };\n grouped = { id: split[0].id, _deleted: true };\n transactionsCopy.splice(parentIndex, split.length);\n } else {\n diff = diffItems(split, newSplit);\n transactionsCopy.splice(parentIndex, split.length, ...newSplit);\n }\n\n return { data: transactionsCopy, newTransaction: grouped, diff };\n } else {\n let grouped = func(trans);\n let newTrans = ungroupTransaction(grouped) || [];\n if (grouped) {\n grouped.subtransactions = grouped.subtransactions || [];\n }\n transactionsCopy.splice(idx, 1, ...newTrans);\n\n return {\n data: transactionsCopy,\n newTransaction: grouped || { id: trans.id, _deleted: true },\n diff: diffItems([trans], newTrans)\n };\n }\n}\n\nexport function addSplitTransaction(transactions, id) {\n return replaceTransactions(transactions, id, trans => {\n if (!trans.is_parent) {\n return trans;\n }\n let prevSub = last(trans.subtransactions);\n trans.subtransactions.push(\n makeChild(trans, {\n amount: 0,\n sort_order: num(prevSub && prevSub.sort_order) - 1\n })\n );\n return trans;\n });\n}\n\nexport function updateTransaction(transactions, transaction) {\n return replaceTransactions(transactions, transaction.id, trans => {\n if (trans.is_parent) {\n let parent = trans.id === transaction.id ? transaction : trans;\n let sub = trans.subtransactions.map(t => {\n // Make sure to update the children to reflect the updated\n // properties (if the parent updated)\n\n let child = t;\n if (trans.id === transaction.id) {\n child = {\n ...t,\n payee: t.payee === trans.payee ? transaction.payee : t.payee\n };\n } else if (t.id === transaction.id) {\n child = transaction;\n }\n\n return makeChild(parent, child);\n });\n\n return recalculateSplit({ ...parent, subtransactions: sub });\n } else {\n return transaction;\n }\n });\n}\n\nexport function deleteTransaction(transactions, id) {\n return replaceTransactions(transactions, id, trans => {\n if (trans.is_parent) {\n if (trans.id === id) {\n return null;\n } else if (trans.subtransactions.length === 1) {\n return {\n ...trans,\n subtransactions: null,\n is_parent: false,\n error: null\n };\n } else {\n let sub = trans.subtransactions.filter(t => t.id !== id);\n return recalculateSplit({ ...trans, subtransactions: sub });\n }\n } else {\n return null;\n }\n });\n}\n\nexport function splitTransaction(transactions, id) {\n return replaceTransactions(transactions, id, trans => {\n if (trans.is_parent || trans.is_child) {\n return trans;\n }\n\n return {\n ...trans,\n is_parent: true,\n error: num(trans.amount) === 0 ? null : SplitTransactionError(0, trans),\n subtransactions: [makeChild(trans, { amount: 0, sort_order: -1 })]\n };\n });\n}\n\nexport function realizeTempTransactions(transactions) {\n let parent = transactions.find(t => !t.is_child);\n parent = { ...parent, id: uuid.v4Sync() };\n\n let children = transactions.filter(t => t.is_child);\n return [\n parent,\n ...children.map(child => ({\n ...child,\n id: uuid.v4Sync(),\n parent_id: parent.id\n }))\n ];\n}\n","let currencyFormatter = require('currency-formatter');\n\nexport function cleanUUID(uuid) {\n return uuid.replace(/-/g, '');\n}\n\nexport function last(arr) {\n return arr[arr.length - 1];\n}\n\nexport function mergeObjects(objects) {\n return Object.assign.apply(null, [{}, ...objects]);\n}\n\nexport function composeCellChanges(objects) {\n const merged = {};\n Object.keys(objects).forEach(key => {\n if (merged[key]) {\n merged[key] = { ...merged[key], ...objects[key] };\n } else {\n merged[key] = objects[key];\n }\n });\n}\n\nexport function flattenArray(arrays) {\n return Array.prototype.concat.apply([], arrays);\n}\n\nexport function shallowEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n var numKeysA = 0,\n numKeysB = 0,\n key;\n for (key in b) {\n numKeysB++;\n if (!a.hasOwnProperty(key) || a[key] !== b[key]) {\n return false;\n }\n }\n for (key in a) {\n numKeysA++;\n }\n return numKeysA === numKeysB;\n}\n\nexport function getChangedValues(obj1, obj2) {\n // Keep the id field because this is mostly used to diff database\n // objects\n const diff = obj1.id ? { id: obj1.id } : {};\n const keys = Object.keys(obj2);\n let hasChanged = false;\n\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n\n if (obj1[key] !== obj2[key]) {\n diff[key] = obj2[key];\n hasChanged = true;\n }\n }\n\n return hasChanged ? diff : null;\n}\n\nexport function hasFieldsChanged(obj1, obj2, fields) {\n let changed = false;\n for (var i = 0; i < fields.length; i++) {\n let field = fields[i];\n if (obj1[field] !== obj2[field]) {\n changed = true;\n break;\n }\n }\n return changed;\n}\n\nexport function applyChanges(changes, items) {\n items = [...items];\n\n if (changes.added) {\n changes.added.forEach(add => {\n items.push(add);\n });\n }\n\n if (changes.updated) {\n changes.updated.forEach(({ id, ...fields }) => {\n const idx = items.findIndex(t => t.id === id);\n items[idx] = {\n ...items[idx],\n ...fields\n };\n });\n }\n\n if (changes.deleted) {\n changes.deleted.forEach(t => {\n const idx = items.findIndex(t2 => t.id === t2.id);\n if (idx !== -1) {\n items.splice(idx, 1);\n }\n });\n }\n\n return items;\n}\n\nexport function partitionByField(data, field) {\n let res = new Map();\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n let key = item[field];\n\n let items = res.get(key) || [];\n items.push(item);\n\n res.set(key, items);\n }\n return res;\n}\n\nexport function groupBy(data, field, mapper) {\n let res = new Map();\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n let key = item[field];\n let existing = res.get(key) || [];\n res.set(key, existing.concat([mapper ? mapper(item) : data[i]]));\n }\n return res;\n}\n\nexport function groupBySingle(data, field, mapper) {\n let res = new Map();\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n let key = item[field];\n if (res.has(key)) {\n throw new Error('groupBySingle found conflicting key: ' + key);\n }\n res.set(key, mapper ? mapper(item) : data[i]);\n }\n return res;\n}\n\n// This should replace the existing `groupById` function, since a\n// `Map` is better, but we can't swap it out because `Map` has a\n// different API and we need to go through and update everywhere that\n// uses it.\nfunction _groupById(data) {\n let res = new Map();\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n res.set(item.id, item);\n }\n return res;\n}\n\nexport function diffItems(items, newItems) {\n let grouped = _groupById(items);\n let newGrouped = _groupById(newItems);\n let added = [];\n let updated = [];\n\n let deleted = items\n .filter(item => !newGrouped.has(item.id))\n .map(item => ({ id: item.id }));\n\n newItems.forEach(newItem => {\n let item = grouped.get(newItem.id);\n if (!item) {\n added.push(newItem);\n } else {\n const changes = getChangedValues(item, newItem);\n if (changes) {\n updated.push(changes);\n }\n }\n });\n\n return { added, updated, deleted };\n}\n\nexport function groupById(data) {\n let res = {};\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n res[item.id] = item;\n }\n return res;\n}\n\nexport function debugMemoFailure(prevProps, nextProps) {\n let changed = getChangedValues(prevProps, nextProps);\n if (changed !== null) {\n console.log(changed);\n }\n return changed === null;\n}\n\nexport function setIn(map, keys, item) {\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n\n if (i === keys.length - 1) {\n map.set(key, item);\n } else {\n if (!map.has(key)) {\n map.set(key, new Map());\n }\n\n map = map.get(key);\n }\n }\n}\n\nexport function getIn(map, keys) {\n let item = map;\n for (let i = 0; i < keys.length; i++) {\n item = item.get(keys[i]);\n\n if (item == null) {\n return item;\n }\n }\n return item;\n}\n\n// Useful for throwing exception from expressions\nexport function throwError(err) {\n throw err;\n}\n\nexport function fastSetMerge(set1, set2) {\n let finalSet = new Set(set1);\n let iter = set2.values();\n let value = iter.next();\n while (!value.done) {\n finalSet.add(value.value);\n value = iter.next();\n }\n return finalSet;\n}\n\nexport function titleFirst(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nexport let numberFormats = [\n { value: 'comma-dot', label: '1,000.33' },\n { value: 'dot-comma', label: '1.000,33' },\n { value: 'space-comma', label: '1 000,33' }\n];\n\nlet numberFormat = {\n value: null,\n formatter: null,\n regex: null\n};\n\nexport function setNumberFormat(format) {\n let locale, regex, separator;\n\n switch (format) {\n case 'space-comma':\n locale = 'za-ZA';\n regex = /[^-0-9,]/g;\n separator = ',';\n break;\n case 'dot-comma':\n locale = 'de-DE';\n regex = /[^-0-9,]/g;\n separator = ',';\n break;\n case 'comma-dot':\n default:\n locale = 'en-US';\n regex = /[^-0-9.]/g;\n separator = '.';\n }\n\n numberFormat = {\n value: format,\n separator,\n // This is the keep in line with the Intl API which we might\n // switch to when it's available on all mobile platforms\n formatter: {\n format: number =>\n currencyFormatter.format(number, { locale, format: '%v' })\n },\n regex\n };\n}\n\nexport function getNumberFormat() {\n return numberFormat;\n}\n\nsetNumberFormat('1,000.33');\n\nexport function toRelaxedNumber(value) {\n return integerToAmount(currencyToInteger(value) || 0);\n}\n\nexport function toRelaxedInteger(value) {\n return stringToInteger(value) || 0;\n}\n\nexport function integerToCurrency(n) {\n // Awesome\n return numberFormat.formatter.format(n / 100);\n}\n\nexport function amountToCurrency(n) {\n return numberFormat.formatter.format(n);\n}\n\nexport function amountToPrettyCurrency(n, code) {\n return currencyFormatter.format(n, { code });\n}\n\nexport function currencyToAmount(str) {\n let amount = parseFloat(\n str.replace(numberFormat.regex, '').replace(numberFormat.separator, '.')\n );\n return isNaN(amount) ? null : amount;\n}\n\nexport function currencyToInteger(str) {\n let amount = currencyToAmount(str);\n return amount ? amountToInteger(amount) : null;\n}\n\nexport function stringToInteger(str) {\n let amount = parseInt(str.replace(/[^-0-9.,]/g, ''));\n if (!isNaN(amount)) {\n return amount;\n }\n return null;\n}\n\nexport function amountToInteger(n) {\n return Math.round(n * 100);\n}\n\nexport function integerToAmount(n) {\n return parseFloat((n / 100).toFixed(2));\n}\n\n// This is used when the input format could be anything (from\n// financial files and we don't want to parse based on the user's\n// number format, because the user could be importing from many\n// currencies. We extract out the numbers and just ignore separators.\nexport function looselyParseAmount(amount) {\n function safeNumber(v) {\n return isNaN(v) ? null : v;\n }\n\n let m = amount.match(/[.,][^.,]*$/);\n if (!m || m.index === 0) {\n return safeNumber(parseFloat(amount));\n }\n\n let left = amount.slice(0, m.index);\n let right = amount.slice(m.index + 1);\n\n return safeNumber(parseFloat(left.replace(/[^0-9-]/g, '') + '.' + right));\n}\n\nexport function semverToNumber(str) {\n return parseInt(\n '1' +\n str\n .split('.')\n .map(x => {\n return ('000' + x.replace(/[^0-9]/g, '')).slice(-3);\n })\n .join('')\n );\n}\n","module.exports = require(\"better-sqlite3\");","module.exports = require(\"crypto\");","module.exports = require(\"fs\");","module.exports = require(\"node-fetch\");","module.exports = require(\"node-libofx\");","module.exports = require(\"path\");","module.exports = require(\"stream\");","module.exports = require(\"string_decoder\");","module.exports = require(\"util\");","module.exports = require(\"zlib\");"],"sourceRoot":""}