@waku/discovery 0.0.2-434be7b.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.js +27179 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/dns/constants.d.ts +9 -0
- package/dist/dns/constants.js +13 -0
- package/dist/dns/constants.js.map +1 -0
- package/dist/dns/dns.d.ts +32 -0
- package/dist/dns/dns.js +160 -0
- package/dist/dns/dns.js.map +1 -0
- package/dist/dns/dns_discovery.d.ts +24 -0
- package/dist/dns/dns_discovery.js +95 -0
- package/dist/dns/dns_discovery.js.map +1 -0
- package/dist/dns/dns_over_https.d.ts +25 -0
- package/dist/dns/dns_over_https.js +72 -0
- package/dist/dns/dns_over_https.js.map +1 -0
- package/dist/dns/enrtree.d.ts +33 -0
- package/dist/dns/enrtree.js +76 -0
- package/dist/dns/enrtree.js.map +1 -0
- package/dist/dns/fetch_nodes.d.ts +13 -0
- package/dist/dns/fetch_nodes.js +133 -0
- package/dist/dns/fetch_nodes.js.map +1 -0
- package/dist/dns/index.d.ts +3 -0
- package/dist/dns/index.js +4 -0
- package/dist/dns/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/local-peer-cache/index.d.ts +24 -0
- package/dist/local-peer-cache/index.js +106 -0
- package/dist/local-peer-cache/index.js.map +1 -0
- package/dist/peer-exchange/index.d.ts +2 -0
- package/dist/peer-exchange/index.js +3 -0
- package/dist/peer-exchange/index.js.map +1 -0
- package/dist/peer-exchange/rpc.d.ts +22 -0
- package/dist/peer-exchange/rpc.js +41 -0
- package/dist/peer-exchange/rpc.js.map +1 -0
- package/dist/peer-exchange/waku_peer_exchange.d.ts +21 -0
- package/dist/peer-exchange/waku_peer_exchange.js +80 -0
- package/dist/peer-exchange/waku_peer_exchange.js.map +1 -0
- package/dist/peer-exchange/waku_peer_exchange_discovery.d.ts +53 -0
- package/dist/peer-exchange/waku_peer_exchange_discovery.js +136 -0
- package/dist/peer-exchange/waku_peer_exchange_discovery.js.map +1 -0
- package/package.json +1 -0
- package/src/dns/constants.ts +16 -0
- package/src/dns/dns.ts +215 -0
- package/src/dns/dns_discovery.ts +144 -0
- package/src/dns/dns_over_https.ts +83 -0
- package/src/dns/enrtree.ts +123 -0
- package/src/dns/fetch_nodes.ts +181 -0
- package/src/dns/index.ts +3 -0
- package/src/index.ts +21 -0
- package/src/local-peer-cache/index.ts +160 -0
- package/src/peer-exchange/index.ts +11 -0
- package/src/peer-exchange/rpc.ts +44 -0
- package/src/peer-exchange/waku_peer_exchange.ts +111 -0
- package/src/peer-exchange/waku_peer_exchange_discovery.ts +238 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/@libp2p/interface/node_modules/multiformats/dist/src/bases/interface.d.ts","../../../node_modules/@libp2p/interface/node_modules/multiformats/dist/src/block/interface.d.ts","../../../node_modules/@libp2p/interface/node_modules/multiformats/dist/src/hashes/interface.d.ts","../../../node_modules/@libp2p/interface/node_modules/multiformats/dist/src/link/interface.d.ts","../../../node_modules/@libp2p/interface/node_modules/multiformats/dist/src/cid.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-id/index.d.ts","../../../node_modules/@multiformats/multiaddr/dist/src/protocols-table.d.ts","../../../node_modules/@multiformats/multiaddr/dist/src/filter/multiaddr-filter.d.ts","../../../node_modules/@multiformats/multiaddr/dist/src/index.d.ts","../../../node_modules/it-stream-types/dist/src/index.d.ts","../../../node_modules/uint8arraylist/dist/src/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/connection/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-info/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/content-routing/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/event-target.d.ts","../../../node_modules/@libp2p/interface/dist/src/metrics/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-routing/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-store/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/startable.d.ts","../../../node_modules/@libp2p/interface/dist/src/stream-handler/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/topology/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/stream-muxer/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/transport/index.d.ts","../../../node_modules/progress-events/dist/src/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/connection-encrypter/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/connection-gater/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/keys/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-discovery/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-store/tags.d.ts","../../../node_modules/it-pushable/dist/src/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/pubsub/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/record/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/errors.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/events.d.ts","../../../node_modules/@libp2p/interface/dist/src/index.d.ts","../../interfaces/dist/enr.d.ts","../../interfaces/dist/misc.d.ts","../../interfaces/dist/message.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/decodeRpc.d.ts","../../../node_modules/protons-runtime/dist/src/codec.d.ts","../../../node_modules/protons-runtime/dist/src/decode.d.ts","../../../node_modules/protons-runtime/dist/src/encode.d.ts","../../../node_modules/protons-runtime/dist/src/codecs/enum.d.ts","../../../node_modules/protons-runtime/dist/src/codecs/message.d.ts","../../../node_modules/protons-runtime/dist/src/utils/reader.d.ts","../../../node_modules/protons-runtime/dist/src/utils/writer.d.ts","../../../node_modules/protons-runtime/dist/src/index.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/rpc.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/types.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message-cache.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score-thresholds.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/metrics.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score-params.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/set.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-stats.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/compute-score.d.ts","../../../node_modules/denque/index.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/message-deliveries.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/index.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/stream.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/tracer.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/config.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/address-manager/index.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/map.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/set.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/list.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/tracked-map.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/tracked-set.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/tracked-list.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/connection-manager/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/record/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/registrar/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/transport-manager/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/index.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/index.d.ts","../../../node_modules/@libp2p/identify/dist/src/index.d.ts","../../../node_modules/@libp2p/ping/dist/src/constants.d.ts","../../../node_modules/@libp2p/ping/dist/src/index.d.ts","../../../node_modules/libp2p/dist/src/address-manager/index.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/bases/interface.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/hashes/interface.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/link/interface.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/cid.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/block/interface.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/codecs/interface.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/codecs/json.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/codecs/raw.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/bytes.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/hashes/digest.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/hashes/hasher.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/varint.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/interface.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/index.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/bases/base.d.ts","../../../node_modules/uint8arrays/node_modules/multiformats/dist/src/basics.d.ts","../../../node_modules/uint8arrays/dist/src/util/bases.d.ts","../../../node_modules/uint8arrays/dist/src/to-string.d.ts","../../../node_modules/interface-datastore/dist/src/key.d.ts","../../../node_modules/interface-store/dist/src/index.d.ts","../../../node_modules/interface-datastore/dist/src/index.d.ts","../../../node_modules/libp2p/dist/src/components.d.ts","../../../node_modules/libp2p/dist/src/connection-manager/auto-dial.d.ts","../../../node_modules/libp2p/dist/src/connection-manager/connection-pruner.d.ts","../../../node_modules/p-defer/index.d.ts","../../../node_modules/@libp2p/utils/dist/src/queue/recipient.d.ts","../../../node_modules/@libp2p/utils/dist/src/queue/job.d.ts","../../../node_modules/@libp2p/utils/dist/src/queue/index.d.ts","../../../node_modules/libp2p/dist/src/connection-manager/dial-queue.d.ts","../../../node_modules/libp2p/dist/src/connection-manager/index.d.ts","../../../node_modules/libp2p/dist/src/transport-manager.d.ts","../../../node_modules/@libp2p/peer-store/dist/src/index.d.ts","../../../node_modules/libp2p/dist/src/index.d.ts","../../interfaces/dist/metadata.d.ts","../../interfaces/dist/libp2p.d.ts","../../interfaces/dist/protocols.d.ts","../../interfaces/dist/receiver.d.ts","../../interfaces/dist/filter.d.ts","../../interfaces/dist/sender.d.ts","../../interfaces/dist/light_push.d.ts","../../interfaces/dist/peer_exchange.d.ts","../../interfaces/dist/relay.d.ts","../../interfaces/dist/store.d.ts","../../interfaces/dist/connection_manager.d.ts","../../interfaces/dist/waku.d.ts","../../interfaces/dist/keep_alive_manager.d.ts","../../interfaces/dist/dns_discovery.d.ts","../../interfaces/dist/constants.d.ts","../../interfaces/dist/local_storage.d.ts","../../interfaces/dist/index.d.ts","../../utils/dist/common/is_defined.d.ts","../../utils/dist/common/random_subset.d.ts","../../utils/dist/common/group_by.d.ts","../../utils/dist/common/to_async_iterator.d.ts","../../utils/dist/common/is_size_valid.d.ts","../../utils/dist/common/sharding.d.ts","../../utils/dist/common/push_or_init_map.d.ts","../../utils/dist/common/relay_shard_codec.d.ts","../../utils/dist/common/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../utils/dist/logger/index.d.ts","../../utils/dist/index.d.ts","../src/dns/constants.ts","../../enr/dist/constants.d.ts","../../enr/dist/raw_enr.d.ts","../../enr/dist/enr.d.ts","../../enr/dist/creator.d.ts","../../enr/dist/decoder.d.ts","../../enr/dist/peer_id.d.ts","../../enr/dist/waku2_codec.d.ts","../../enr/dist/crypto.d.ts","../../enr/dist/index.d.ts","../../utils/dist/bytes/index.d.ts","../../../node_modules/@leichtgewicht/dns-packet/types.d.ts","../../../node_modules/@leichtgewicht/dns-packet/rcodes.d.ts","../../../node_modules/@leichtgewicht/dns-packet/optioncodes.d.ts","../../../node_modules/@leichtgewicht/dns-packet/opcodes.d.ts","../../../node_modules/@leichtgewicht/dns-packet/types/index.d.ts","../../../node_modules/dns-query/common.d.ts","../../../node_modules/dns-query/types/index.d.ts","../src/dns/dns_over_https.ts","../../../node_modules/hi-base32/index.d.ts","../../../node_modules/uint8arrays/dist/src/from-string.d.ts","../src/dns/enrtree.ts","../src/dns/fetch_nodes.ts","../src/dns/dns.ts","../src/dns/dns_discovery.ts","../../core/dist/lib/stream_manager.d.ts","../../core/dist/lib/base_protocol.d.ts","../../../node_modules/it-all/dist/src/index.d.ts","../../../node_modules/it-length-prefixed/dist/src/encode.d.ts","../../../node_modules/it-reader/dist/src/index.d.ts","../../../node_modules/it-length-prefixed/dist/src/decode.d.ts","../../../node_modules/it-length-prefixed/dist/src/index.d.ts","../../../node_modules/it-pipe/dist/src/index.d.ts","../../proto/dist/lib/message.d.ts","../../proto/dist/lib/filter.d.ts","../../proto/dist/lib/topic_only_message.d.ts","../../proto/dist/lib/filter_v2.d.ts","../../proto/dist/lib/light_push.d.ts","../../proto/dist/lib/store.d.ts","../../proto/dist/lib/peer_exchange.d.ts","../../proto/dist/lib/metadata.d.ts","../../proto/dist/index.d.ts","../src/peer-exchange/rpc.ts","../src/peer-exchange/waku_peer_exchange.ts","../src/peer-exchange/waku_peer_exchange_discovery.ts","../../../node_modules/@libp2p/peer-id-factory/dist/src/index.d.ts","../src/local-peer-cache/index.ts","../src/index.ts","../src/dns/index.ts","../src/peer-exchange/index.ts","../../../node_modules/@types/mocha/index.d.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"4a3605bef1a5ef29fd5a1696dd95b0b4e2259e2d07a4d88fac79f3a9765c44a2","370079895f1acdd4bb5194a403c85bf60cfbb2654bced9430a6c7210e7246be8","90240231e730deed31569f6c686766a538e4a024bbc33ea1738fe924f477ba61","552223520e823223ee13c5764e9b69b1819c985818a8bcda435d8d1dbd909bee","49b7c3ddd683c09aa437dd92681699387441f522524b14d2331ce494a9bf2f27","ce17c39c9c8b05418cae045bdcf5918e3486ecb9f61deac9f3e026b85e427164","5212dd78d1d63ab33332c8846a0ea5ce248159e74033cde16de48373036b4704","d71577e78c7a4257074aaf82f595724175210c89e8b467ef82f949a6cbd891bc","ffaf24e6241a0bd700a6fba3a1390dfb7225a47a4eace0a9d24a00e9bec2b598","c84146dbc9d2e5f43d2cbf15485a4eabf90219dbb66c0d481f20f12d3851bffc","d35b5db21a04a45ae6323c4d4b25acc983dfe2870fc670fd05249eb19d839a5e","cdfba6341ba0089ef9e0eebf679854f641518c6507d5956e86783e7dba9485fd","99c24f331c9f4e75a779b9a988e942442db3cf29923ceb820d3bdd4ed1edfef2","25b1f20d5868ef9ef18132f7dd76b40b7038688ff7c56c58930537a8dff9f231","0699e4b82c89b8b4da3c56de9457ce959ee8e7ac346af75785bc59a91f688d3f","9140481c3bd07062179ef0dfa9719f646a36c7aaad49d05e0fd6d45a1edb063f","8c92080253bac0506d82b83d555a029582595f0944abb349954ea732322baa5c","9196da290a76cf32b70a8cfdbeb165f75bee9a094d70662cee6383fa09a73e43","230eb449f719119cab1728252f20ecdd36d7a20cef659e4a51ada1a232a8aaad","85786f052b5dcd0b36564b657a9aea3e80f1fd0e76e4606a4400ec21928892c1","d9ee6bcbf3231a4446de6241fe71967f73d6ae7e7279c5540ee52e1dea4d3114","1bf687d978bdd6d5aff10b9eb0ff0695179f8594d4446946fd0182d6d25fa433","a79af05fa696e233c65261e9e9e0e5b08ba9847d98261fe367b9bfeb8ca965d9","6e6733927ade923e34b243d6fbec1465cfc8ed6edf62c6e09ed00c529f0d93de","f5337c3ea7b8702ffe2718f56a24325a67d517c0d552ef71b8d578d9f33a99d3","7f2cc72a16a663ab9f8d99bd5658e583251ce0c003bf80a948973e15a7ef9596","fb0747c05bf570dbc947b28b51bd26f8a70406084bd7d2a55943004e6bb714e3","c8ffd61bf2db2e7bccb996dd70c9499805cb338f1b1c781987e38ba99dd5b296","55e5a976b594dc02f054860fb59a5299872a5b3c8c90e96733a5c9c9d4ed1fb8","fac83d4c6898d5bf90c508cc84409ded40fdc14611cf42d7fb750fb2c7847979","8a1cce1f66006707d7219898543512bbdce3eb744b7e730606965b2c9680f5f7","cdebdc5861de7a07ddfbd6740a7ad3415068522e19a82bc652ae313c76e4f83d","9c7aa50c1eaa6e0fb07d478ef1b047e9bedb89efd626bfe342f57c8dec15536c","587f13f1e8157bd8cec0adda0de4ef558bb8573daa9d518d1e2af38e87ecc91f","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"d32f90e6cf32e99c86009b5f79fa50bc750fe54e17137d9bb029c377a2822ee2","affectsGlobalScope":true},"33536b5951667cd5a54b4bea28d3d52aaca1844448258f1281d3843b89ac5895",{"version":"c81c51f43e343b6d89114b17341fb9d381c4ccbb25e0ee77532376052c801ba7","affectsGlobalScope":true},"3dd49afd822c82b63b3905a13e22240f34cf367aea4f4dd0e6564f4bddcb8370","57135ce61976a8b1dadd01bb412406d1805b90db6e8ecb726d0d78e0b5f76050",{"version":"49479e21a040c0177d1b1bc05a124c0383df7a08a0726ad4d9457619642e875a","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","f302f3a47d7758f67f2afc753b9375d6504dde05d2e6ecdb1df50abbb131fc89","93db4c949a785a3dbef7f5e08523be538e468c580dd276178b818e761b3b68cd","5b1c0a23f464f894e7c2b2b6c56df7b9afa60ed48c5345f8618d389a636b2108","be2b092f2765222757c6441b86c53a5ea8dfed47bbc43eab4c5fe37942c866b3","8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","1ca735bb3d407b2af4fbee7665f3a0a83be52168c728cc209755060ba7ed67bd",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"6e335a70826a634c5a1a1fa36a2dacbf3712ef2be7a517540ae1de8a1e8ea4f6","affectsGlobalScope":true},"255eb00ff28266f9b35e1b73a19a4451542572b33dc0e78daa6d6e1d1d22f3bf","992e52cd58b975ff089613d4095a316d9c9b63466299f15c9b7cc0249d6d6908","1b0856424524be4d18e41b31506c9640c4786ee68fd9658abdbf27c856f70125","3122a3f1136508a27a229e0e4e2848299028300ffa11d0cdfe99df90c492fe20","42b40e40f2a358cda332456214fad311e1806a6abf3cebaaac72496e07556642","ad8848c289c0b633452e58179f46edccd14b5a0fe90ebce411f79ff040b803e0",{"version":"b748ed8ff77f2c330857f01f385e52f708448b6ff6424415ab0de749fd7bc664","affectsGlobalScope":true},"fe6dba0e8c69f2b244e3da38e53dd2cc9e51b2543e647e805396af73006613f7","5e2b91328a540a0933ab5c2203f4358918e6f0fe7505d22840a891a6117735f1","3abc3512fa04aa0230f59ea1019311fd8667bd935d28306311dccc8b17e79d5d",{"version":"5810080a0da989a944d3b691b7b479a4a13c75947fb538abb8070710baa5ccee","affectsGlobalScope":true},{"version":"72f4a812489dee501c41a085f174e1a843aa78e93dd2af0a6f9ed89f796565c8","affectsGlobalScope":true},"1349077576abb41f0e9c78ec30762ff75b710208aff77f5fdcc6a8c8ce6289dd","e2ce82603102b5c0563f59fb40314cc1ff95a4d521a66ad14146e130ea80d89c","a3e0395220255a350aa9c6d56f882bfcb5b85c19fddf5419ec822cf22246a26d","c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","898840e876dfd21843db9f2aa6ae38ba2eab550eb780ff62b894b9fbfebfae6b","8904e5b670bbfc712dda607853de9227206e7dad93ac97109fe30875c5f12b78","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","164deb2409ac5f4da3cd139dbcee7f7d66753d90363a4d7e2db8d8874f272270",{"version":"a54ee34c2cc03ec4bbf0c9b10a08b9f909a21b3314f90a743de7b12b85867cef","affectsGlobalScope":true},{"version":"8a985c7d30aea82342d5017730b546bb2b734fe37a2684ca55d4734deb019d58","affectsGlobalScope":true},"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","5bc85813bfcb6907cc3a960fec8734a29d7884e0e372515147720c5991b8bc22","812b25f798033c202baedf386a1ccc41f9191b122f089bffd10fdccce99fba11","993325544790073f77e945bee046d53988c0bc3ac5695c9cf8098166feb82661",{"version":"4d06f3abc2a6aae86f1be39e397372f74fb6e7964f594d645926b4a3419cc15d","affectsGlobalScope":true},{"version":"0e08c360c9b5961ecb0537b703e253842b3ded53151ee07024148219b61a8baf","affectsGlobalScope":true},"2ce2210032ccaff7710e2abf6a722e62c54960458e73e356b6a365c93ab6ca66","5ba5b760345053acdf5beb1a9048ff43a51373f3d87849963779c1711ea7cbcc","16a3080e885ed52d4017c902227a8d0d8daf723d062bec9e45627c6fdcd6699b",{"version":"d19e76b1210879a533e64d687e7c4aa605c7fecaa554fbb6b319d9ae9d0f5164","affectsGlobalScope":true},"1ca6858a0cbcd74d7db72d7b14c5360a928d1d16748a55ecfa6bfaff8b83071b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"13e851ee5f3dad116583e14e9d3f4aaf231194bbb6f4b969dc7446ae98a3fa73","c663a7e4ee2cb54d99cf095479a5bcf1dd18d762ffdfa038aa1b2d79b070b0d7","9e910424e844b1ec763c2aa997e29e84e014b90e7acbba1fa2841a14c4d4314e","aaeb956ad95882bfbae261b2e4a10ff5ee53c6bfaf6e8c086fff68ddef517471","d48e600f9bb31327ac202c0d99d0ef83befe307cea703ed63b593a011995a5b0","e91f4ed7f7354e127a611337e3c4a38e1d665b7e5fccf87791d54f4c65b2d16b","7ad3e0aaeb840047fa4711306188cac803514091f251b6baecb9b2aacf15b976","6d268309f0e15dd820b2df9806234166554cb4e2fe00d11737adcb4e5489f700","58cf96187feb10cc8ad3bb080871cd30888ef63bc5db131f11458850ef8f6245","9102986ff52326a2016e8cddc1cf3092f0808ac916dcc8dc2d2c7195cd181987","fa82b7b22d9df87323e31e9e2ad75911028f3e544647fd212424b3c4452fee3f","01f20dac9dc14f0d306e5d1215c5c1c3b4d1805905e60ae92fabac4031eae7da","9ceec2a882368c0160a8a3879aa0efce0fb985751fc23ff6191006030969cfa4","cad5d6451789234434c28dd2d6a8267b0d64c479b1ad267321faa31ba90d570b","d5197053be441d40f4d074185a40d461137c8fa8db9e00cceedf2d9ca6583157","3cd33c37432c2de7bdd9f1d48b3ea4fd03afad4969cfc5ba88d81e6ed03f432c","f8372fd25d6711cfee5d8baa0c9be51114123d88f6ce4f2e0d8bc0a8a9207d81","561ef05d7e369040c28800d878d7e6461af62e459460263e911d508f319c8d5d","a1b60bd2328318dcbec30bdf529dad31a13315ff2df60c8bd71630c58a575b06","a399dd9b73e4bbfbed2ad1c1259d707f5f147f40dc5e3eeb541bf0bf2da42b25","8cc6a35806cd10d448b0f2ab01fe0b6194ca57fdaced2d71781b68e83c55bd88","8f364fec0ef20506aa9cf00b5cd8b620c1c0389687b11a3a32b0b5d4716ad894","5d11703e2c5d4dbe00bbe79f3bc864d178cf8d6ebccc2d1448ea29e93654f029","f4e82c91aac3b61f3ad04f11a44c5b79f724ff8a09281d0afa24a6624633ff25","ed849d616865076f44a41c87f27698f7cdf230290c44bafc71d7c2bc6919b202","7b8b9017156ef8bf3bbe42785fac8956e5c9869f4a494536d7f548a7c1c7d98a","07c34d1f83dfc5746de4229e01f0cb4d388a9f128eab6beadb4ae1621ebb87c6","763bb8df872cbb8783e29e19bd7a1dea0f88f7fd7398343af38be8509a65df82","372b3681eb9618821c0e0e10bcc775b838e45b51912b8998bc5ba035100dc9e5","c286b410193495d067668bcdbd13ea3f3a39001edff02edee248babf2652e563","ba1405da509cc84896a588978efc45400d4f9844ee738d750b59868b1ad1618a","af89ab13b40dd28cd91818fc6329914d2b9663591831f032ff0f0cb4a028d4a5","63007f1618ada5041fb3b47630b64a9987d268bf740dd72334c38b5d23f5239b","3395f90467d2bb9db039a5c22ed6659ca2ff6f0b4f7ee5f223b0f77288f54ea7","20df2907d398e369d49e8906d6e0f096c465501e9ceff9d61293bf0f4e9020f1","ea0a3bb69845621165c21e80ebb0d2b28dad22cd9920564516ce8e927a828f79","6a81475a67505af60be3242841c65ce4bf6d0b624d8b3fada646ba459a3eaad8","6834dd6cc060648604278cdb920a9316fa916e9116134b17dfad90e42800ca47","c650bd19e0ac44559343e85a0ce18b0f92e5c1789bdf334e9bb9cf02b15cd9a6","27ace1ac753bfb2cb2973b2b5a4508751bc10a7d689662c9b41067b5387d5ad7","ef6e6d838cc600162626a53167046484f38e9a4bab9454e72350bed76c497228","8adf9a02b0c2508f81516b561a6c8080ea2169126f166e39767bcb5389b9cfbc","e9c4245bbf5a7d7773b8ec2c3cda931333cdd1a1cfcb67e3165160c1a14d7d68","643dcc834b6d8e8f6929de74c6afc11739d19afbcd53a75b3d79d401d885f334","05ebc19bea67a53b7d336f03bdd9097062c357279a5c6bf6faa5596443e11416","0d58206ad8985b8ea1b9b972504720030472e4d0f6f840f44cc1db0f32bda73b","ea9b8f7426fe0e92b4e7d3cdffa9c2d0bf994abddf3a4bb469beda7b45be34e2","135d2c5bb3919efdd655f2a868533582504827b2d1c10188e1bc3ba80ee015cc","447d3c90ddd4ca1a84c357682ee533766720dcef1e040c720d266afa64b223d7","4a3605bef1a5ef29fd5a1696dd95b0b4e2259e2d07a4d88fac79f3a9765c44a2","90240231e730deed31569f6c686766a538e4a024bbc33ea1738fe924f477ba61","552223520e823223ee13c5764e9b69b1819c985818a8bcda435d8d1dbd909bee","49b7c3ddd683c09aa437dd92681699387441f522524b14d2331ce494a9bf2f27","d3df79602ca0303c65d2197c9e71222db97a4a0e5a691bdab49a65f83397558f","f9e46527ef7833f803a47c256179c05e5149a8dc776c5a6952572052c9e00b24","535584854e5d6dbd20b7f355ee0c1a97719aa850e3c4f92d5daa1dbb62431276","889544d1627fadd88835869442835e8d0395719734f6323a40f76668fc3be15f","929fc31f7523aaa1d19735b77e637af06e58d76007648ec088ecfbec1521cbfe","8510595d2ca2660e6407be65d8bf95f0c53877dbb812e269cdd980fc34de5f78","a6eb23f2a83113ce0ab7203bfda2be0888720f8d694a20abaef83b9f62832061","363dca5004ac5a3d9c2bba12812b97a64461911762f0b8f9320a8856ec53bcad","557b8c7481296f4b7ed362320f3bbb40bb87404edf880c81224f365a8d1e17f3","283ed3d075bf7d3e8793f63b2a52f475ed84d95b7b6351c5d5bcc6c49d4b845b","6544dab49004fecb69a4ef775e9ad2773a6148b1f9bfd9b75508e3afa11f5d35","bd4c741820ec3574b7ed3b782c8d78034d6e4631d11997e701e6b955b86a87c1","e2dd36a524ea5b13de1ed104ede9cea79696588175c1df1940d6a29113a4aee0","a878d4c7237a7af50e96534295fcf723134d70cbb1e9bfd8365266b912aee6ec","a1f708ddf34053065f8f53682123421af299cee37ae110a86ba07851adf940da","36d756189d9295e3a964e5cd45cb8ac965d5d2ada53ed848e08608426c146d69","11705a4aad6e2e724b82ffee6c4fa271d798f0fb68806ace4b1c425c266f8d98","1c65a7a7dfdc8a54b4417445c8364760377353f751023d87be5f08d02b7b3a60","a6cb689a6c97d8cffb0a4bd649711838d37d2e574eeb8d40402d4a47c645dbd3","5a1ffbe813678cd26a88d802d317005bc8f39aef35d822aeb80572773a9171d4","acd5d501223e3a7cdd229b501fce5fb071937b72bd05fa33e543eb21c8ee0aba","2b4a4dc7f87f1cac5d0dac76bb6020ddcef8daf0a62cb96645e4975d33d5dcd7","6996e12939efb49a3b88770c26cf1ba04572720f430798e66e40b1f1ae630ef3","95acb85153563b78865d19b019237c72ee508e699d903451e03be1f26229c2bc","bf9faedf5a5316d5535fe961f28de99d6071fbc3e549443626ba606190f7ec9d","b38cef1ccf5f367c87fb5b0b78fa5d2f7c7e0243fbb0ed6e1cbc9af4a54080a4","c29cf47a3bf95c8e569e374d684177b3cfde5725362d732de97c7d5959a746f4","cbe00d8364e32d303295626453f095d09e8ff700281c582922bf32e1def473ee","88da78512fb8d7d3bab097975255f7e171c73b2b7ff45b810d87128026df6caf","ac445e342103b546df0528e1250011a85f9627f0ae6bf2c16954f99ae2e5d333","44e5cbdc30e23179f8298032e9a7fe1c8b62deeab39ffca11f1936a807af75b4","632e37c420dc124fb24823096eee8f63512d5b74c8610d0138707f2d4fc77c1b","5f564b2e0af50b5777adfb90730d8518a6b1b0d66a21323d1c1d11f44546c602","3d42fa80603bf07d0cc32be51bf10210d53a0ef596685699587c13b17af88f25","ff80f1684384d2efb41a5acec11d1d5d8e1fb7df9a0b63ed4077eb1d617c65d3","01d29d12c4745439a4258b260a695c277f9ac339c84444ca7fd13aaf37019a08","6a88603bab92e4a90f9184601a8d7b7e6a4f4b71782e07a969ca25a9eb91500f","a9c9cc04b5d804c36666f17778d804741224480f6841bc9d8fa5d530a91a0acf","51af4bf7a7daf6466658608a9d91b17f215913f78a567a216f0f7b0f393d60f7","ad58e2b0bf1db2526456750f458692960c3c2a6100610666e07e7cb2fc312bf6","4737c19fbe12a12e20ff90e8734a8582ae8e55321cebd17180a3ffd3497f5299","09ac11dc22366cb89d815665ca03e3388fe437b270592bce1c1ca7fe3ddaec5d","fc6b03f2a16c3882eeda411509ef8a3793e28c6182623d4f2942274bc995e678","b750c4f0ed198afbf21898ffb85c2e61d720ab99633221f5e3b96aabd7d597ff","1e9e07cdc0218f4a3fccc43ce59199cd45cc5217d7f2f5c2f3cba948905c57df","c135f4bdcaf3e1e9153cccc06e75a106e3c4d912ac084480bda1aecb7d2afc97","d84450725701131933730844923a4974de4cfe0f6e1fe8d3a74e132e292b44c7","433a8fabb08be4997b99eee7863a2362b52c0aca1fcb54330fbf6567a2c92ab0","a4ae79da4d1bb7fb6196294897f1f78a70c8213d2683f750246deab0527511d2","0bbcaafb46edeaf8a72ba969c070fbe9d98459b7b3a17b8c99f79cab49121032","d713b07550ea416686316c24e88dc6245c0f0c12ef78603cae4c9a9791557fb8","b0bf061eb1e05a717ec5025cde567909b7f00f2dfeb2f78b54aedd4ea7007554","e8423fe31351f1ce358798b0e0d64e7b0b3396f9f8ef2cfb5713fa3b7d9020f2","4b54f90cffb36f4bc8175ed414995b6432279d6fe9c9dccb704b8472bd7d88b4","fbcab1a29c704b97eaf0afce15ca299385650859f4d6c3782afa90e90f88b02c","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","e84466de76161653e78201871213987bffc4a6e5c85bb69cac46aa965b81bc90","3762f27827fd30d8372c355e7b8739fb4bfc830c6ce33c241f236416d34924a1",{"version":"caa7f908f048a9f18aec71d71e6f0027b11ea5532a3c4f328b326512bffbe255","signature":"2f59a36c77543ec23b3220071e6a30d632da5470ab48209b7d788d0eac1818f3"},"02745a73c954228b9ee7fdb90451051e3f93a14f4a20ec3190113b37d101a021","5c0a4e37b766b3ad2d05fe696b04d88423e336fa001735a59afa355f8ceb39c2","5955f2d04b1bd225aba69dd4958e67c71edd8aef6b0a26a224ff5f5e3eceb4bd","4ef6914da8349455f64844f4ae750dc89c9ce1f409ef9ab96dc2565918de88cd","8a5b3464a391ec690d3bf48f2caf432009ecfbe8a1947bca52ca500124c3d5b9","2bd0daba849641a5d74f5ed5b3b24fca00c31ba37aa8f78eb305c47efce9c628","4179c29964885be3f24fd7dd3d7848fa36a4f2db2d619d6629fc57cb2d485ab9","de6928bfa2e865593212ca1b31d36e8243f17fb5a9c3110d36017e0485d77e37","9a09602a78e685b385cfc15e78b49fa6db9b8abe1903026b63a33176c75f9f01","f98f7fd5c208374f072a67a46306ab9b3f914554b4ebb673fb805e13a4119b6c","af327bc3ec7f6c72cf1b73aacafedcf6f6f7309c30d17f9a8e301afcd30f44f9","a0b3b5fbe8a389e11f8b8fbdcb4526e1e989c5887a5769fcf9b0a57d2550f881","e7a8ab9ccc6e79364e314f0bbe9d8bfc1ec5717fcf135661a05e4401583f14a1","5ab6cb7323dca44bf29e55506877bc5d0eacb0f3c5ff26d52c02d13420f4b009","07c68bf90808034e2c3506e6886be2f61e9127a3f7004ddf3b49981d226c6bd6","6e333790ca44da365c88ebf16386b2431e93364da9ad1827b691926926224617","7538ef9170d0881b8a208a61670b98b79103be7cec423646fda2c94c40c42354",{"version":"a7a97e3f3c0894630541b895bad945df6a2a28fb41fcdf012e7439155c676bcd","signature":"46f2e4ffdd48a9447f7a32576088fbd7214b140e65cd4b9999d9e105e34c7775"},"47be229e12f1953e577533f93d304ed68be89fb1c36bf86bc340b0b772a1fb6e","ac63a01fcac70315fc9b416e9a57e568b18032c7cfcaa314e1751f03ef71286f",{"version":"9f5930329be3c787c60a68c079589df6ebb1721e9319fdadd196028191451039","signature":"95f15e5e0fc528a919d7c216cea5cf3cd3053002bf07c68936a2084f908482e4"},{"version":"c621becb83dfa2fd10b077091494ec1522e3418058ddd5ee8ddd3f7d40d5c303","signature":"00c0ab4d4352095b6f81c8d6bd821c20a8df4c7052b0935eb30b8bd4c9a081d1"},{"version":"198e9055f83b49b2442172816d01fcd3b5050c48f860122380482626aeaec0ff","signature":"b7f4760c95cd5d29b3b9a69c2c2b80ee065e6fb27cf5c1836e7d1ea7299aadd8"},{"version":"b64200d1299f026ff737fa6a2dcfa1dd2409d889876e00fe93fc8d7513dfdce9","signature":"e5430a04d48447215981ecc7cc0895419a2bdd92eac7716d7b3a768b2da38467"},"e1da58271626f4f4533361642beb3ed90a1d7d041cfb1f8720e390ea143552dc","db08a3e258eec5b9bbe3edec92262fd979611a11b8ec469f3dbb84f491f994bc","5ccc3c7f73ef48c223635cd4506f21133560de7abc4c09c623327bb1b54386dc","f30cfcfff28ee8f87563225b47239bb07b9b11edd09dda0ea6499b18cca1a30e","0edb8a97ead1fefd337458449050857e80740e31a3f76cffa656262f4e651a50","db8e4b47dd8c22634e3a326e5a5f60aa71a8ad4a0458fc0aadb6951f1c7cdc54","5b7a6d3f5c1b1d94d6cbc6c1e113588e20ae61d583d0d0cb5ec3fd92926d3749","56558ae167446acf230ea2cc072a835309a37ae63d286b484308afd8c504c2d6","2a973e17f3c28a674fa6654e80b7749c975420d2782e64fa67dc805babefe15b","9f9ee9d830b8764029781831e21886a7871be7181c16eab0237e00f1eb53478a","e7bde6aa372dd8c2db4ebc169c84825e1ebb8975081fcc5dbf06cc4b21f061a5","92f276e1b281bf31d2574b580dea905c32ccefae5238c0bf7a20da4a0f30056b","8234650c842a98e61b5df25903a7f5fc3717ed238c40d665ebea2605cda1f6d1","122062832068d2a685dbb819b8e47006e3f8d1e8bb28a2da4d62e7dbc8a12def","a3a2b8ee17d847ebeb6a91db668bdafadebd742842964025fdd6392ebc204517","8e2fa15047e6d06f28cafbeaad51a62b975233827d5a5955e8b284e3c031bdfa","4ebd47ee425727e25a9be9f3d35342f7d8e6d1d294f2c8185a4b2341e29b13e6",{"version":"b6c77ddb2cced68eba2f851a8852b795b9089d45d27de27df39ed6eb170af8b9","signature":"a335408f3518442c3f1ea4f016db09718c8dc27777b08e5bac8941e572b9a9eb"},{"version":"619471c48b0c99a97a2d3595431f33539697036ba79902eea64354f36c7c58b3","signature":"61d48a554297967a44ef0612826f6f0802dcf4934e1a968ddd463cbec34eae03"},{"version":"c1959d7f1752f78a11273d61f738e1bddf1b0d8efb23cf0d5ef0e12aeb8f895e","signature":"6c5a3e2b3b215beb37ae4f9d5c445e0e3b777f45de512301a600b4f3fc870b58"},"05940447d12c65991eebc441a0ce7514c331e5d84f4c3140b2620e1d19c2e663",{"version":"dc0bb68dd2bf79f6502054e63d9bdf64da831bb96eadccd502c57bd44870ab41","signature":"e010f63ffb0d08529fccc5446974b62bda71b95f0960d721dc8b7582fb0217c0"},{"version":"ebad37562ae2ae4616929e3b97e8956bcf4bd4fdef3fb29ab7d3080e95027559","signature":"1ee878da272a64381b1b9f3913eead570e336dcccc6230f1323eb92549b1d9dc"},"7ba48d8fb08f3045e74388b72713f69c1e418d28260d64f6d20bdfad023d28ab",{"version":"4e56a0cb79280ac861c6ceda7a3dd0486ede20583aee17252f266c44356d2499","signature":"94a1016949412f6c5944d4ef94f38d9548ecaabd4f3157baf64ba2a7702e2005"},{"version":"0ea93d01083b3d5863cc98cb589b5d0eac55d14417487f9e5e455dfa0b17c660","affectsGlobalScope":true}],"root":[257,275,[278,281],[299,301],[303,306]],"options":{"alwaysStrict":true,"declaration":true,"esModuleInterop":true,"module":7,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[138],[138,147,151,160,161,162,164,172,173,174,175,188],[138,160,161],[69,138,159],[138,147,160,161,163],[138,165,167],[138,163,165,171],[138,169],[138,147,161,164,165,166,167,168,170],[138,161],[69,138,147],[138,161,164],[67,138,147,160],[138,268,269,270,271],[138,147,188],[67,138],[67,138,147,183],[138,176,184,185,186,187],[138,147],[67,138,147],[64,68,69,70,138],[64,67,70,138],[64,67,68,69,138,147],[63,71,138,147],[108,138,145],[64,67,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,89,90,91,138,146],[69,138],[70,138],[71,73,138],[61,63,138],[64,67,138],[64,71,138,147],[64,69,70,73,88,138],[64,69,138],[68,69,70,138,147],[64,70,138],[67,70,73,80,138,147],[62,63,138],[62,138],[59,60,61,138],[138,177,178,179,180,181,182],[138,147,179],[138,147,177],[138,147,178],[67,138,147,214],[67,138,147,188,191],[138,147,220],[138,147,219,221],[138,218],[65,66,138],[138,253],[92,138],[95,138],[96,101,129,138],[97,108,109,116,126,137,138],[97,98,108,116,138],[99,138],[100,101,109,117,138],[101,126,134,138],[102,104,108,116,138],[103,138],[104,105,138],[108,138],[106,108,138],[108,109,110,126,137,138],[108,109,110,123,126,129,138],[138,142],[104,108,111,116,126,137,138],[108,109,111,112,116,126,134,137,138],[111,113,126,134,137,138],[92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144],[108,114,138],[115,137,138,142],[104,108,116,126,138],[117,138],[118,138],[95,119,138],[120,136,138,142],[121,138],[122,138],[108,123,124,138],[123,125,138,140],[96,108,126,127,128,129,138],[96,126,128,138],[126,127,138],[129,138],[130,138],[95,126,138],[108,132,133,138],[132,133,138],[101,116,126,134,138],[135,138],[116,136,138],[96,111,122,137,138],[101,138],[126,138,139],[115,138,140],[138,141],[96,101,108,110,119,126,137,138,140,142],[126,138,143],[138,272,273],[138,212,213],[138,211],[68,69,138,286,288],[68,69,138,288],[69,138,285,287],[68,138],[68,69,138],[67,138,147,188],[138,147,188,214],[67,138,147,183,188,221],[67,138,147,183,188,216,217,222],[138,147,193,214,215,223,224,225],[138,159],[138,152],[69,138,152],[138,152,153,154,155,156,157,158],[138,210],[138,207,209],[138,194],[138,200,201,207,208],[138,196,197],[138,196],[138,198],[138,199],[138,195],[138,195,203],[138,197,202,203,204,205,206],[138,194,195,196,198,199],[138,194,195,198],[138,147,243,256,282],[138,147,243],[138,243],[138,243,256,266,275,278,279],[138,147,243,256,257,280],[138,243,256,267,274],[138,266,267,276,277],[138,243,256],[138,257,280,281],[138,257,280,281,300,301,303],[67,138,147,243,256,302],[138,300,301],[69,138,298],[69,138,243,256,266,283,284,288,289,299],[138,147,243,256,300],[138,147,243,260],[138,260],[67,138,147,243,259],[138,258,260,261,262,263,264,265],[67,138,243],[138,147,149,150,229,230],[138,148,149,150,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,147,189,190,192,226,227],[138,229,232],[138,149],[138,147,148,229],[138,150],[138,147,148,188,229],[138,147,148,149,150,228],[138,149,150,229],[138,149,161,189,230,232],[138,150,229],[67,138,147,228,229,231,233,235,236,237],[138,290,291,292,293,294,295,296,297],[67,138,244,245,246,247,248,249,250,251],[138,252,255],[138,254],[243],[147,243],[243,274],[257,280,281,300,301,303],[300,301],[69,298],[243,283]],"referencedMap":[[175,1],[189,2],[162,3],[151,1],[160,4],[164,5],[168,6],[172,7],[170,8],[165,1],[163,1],[171,9],[167,10],[173,11],[174,12],[161,13],[166,1],[271,1],[270,1],[269,1],[268,1],[272,14],[190,15],[176,16],[184,17],[188,18],[185,11],[186,19],[187,20],[83,21],[84,22],[70,23],[72,24],[91,1],[73,1],[146,25],[147,26],[85,27],[74,28],[86,29],[64,30],[71,31],[75,32],[76,31],[87,1],[89,33],[90,34],[77,1],[78,28],[80,35],[79,36],[81,37],[59,1],[60,38],[63,39],[61,1],[62,40],[183,41],[179,19],[177,19],[178,19],[182,42],[180,43],[181,44],[302,19],[225,45],[191,1],[192,46],[221,47],[220,48],[219,49],[66,16],[67,50],[65,16],[254,51],[307,1],[253,1],[92,52],[93,52],[95,53],[96,54],[97,55],[98,56],[99,57],[100,58],[101,59],[102,60],[103,61],[104,62],[105,62],[107,63],[106,64],[108,63],[109,65],[110,66],[94,67],[144,1],[111,68],[112,69],[113,70],[145,71],[114,72],[115,73],[116,74],[117,75],[118,76],[119,77],[120,78],[121,79],[122,80],[123,81],[124,81],[125,82],[126,83],[128,84],[127,85],[129,86],[130,87],[131,88],[132,89],[133,90],[134,91],[135,92],[136,93],[137,94],[138,95],[139,96],[140,97],[141,98],[142,99],[143,100],[169,1],[273,1],[274,101],[276,1],[214,102],[212,103],[213,1],[284,1],[287,104],[285,105],[288,106],[289,107],[88,1],[286,108],[68,1],[193,109],[215,110],[216,15],[217,109],[222,111],[223,112],[226,113],[224,109],[218,1],[82,1],[152,114],[155,115],[156,115],[153,116],[154,115],[159,117],[157,4],[158,114],[57,1],[58,1],[10,1],[12,1],[11,1],[2,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[3,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[8,1],[48,1],[45,1],[46,1],[47,1],[49,1],[9,1],[50,1],[51,1],[52,1],[55,1],[53,1],[54,1],[1,1],[56,1],[69,1],[277,118],[211,118],[210,119],[208,120],[194,1],[209,121],[198,122],[202,1],[197,123],[199,124],[200,125],[201,125],[203,126],[204,127],[195,1],[207,128],[206,129],[196,130],[205,1],[283,131],[282,132],[257,133],[280,134],[281,135],[275,136],[278,137],[279,138],[305,139],[304,140],[303,141],[306,142],[299,143],[300,144],[301,145],[258,1],[261,146],[265,1],[262,147],[260,148],[266,149],[263,19],[259,150],[264,133],[237,19],[241,1],[240,19],[148,20],[231,151],[243,152],[239,1],[228,153],[233,154],[242,1],[150,155],[227,156],[149,157],[234,158],[229,159],[230,160],[235,161],[232,162],[236,162],[238,163],[298,164],[291,4],[293,4],[294,4],[290,4],[297,4],[296,4],[295,4],[292,4],[267,1],[246,1],[252,165],[244,1],[248,133],[250,1],[245,1],[251,133],[249,133],[247,133],[256,166],[255,167]],"exportedModulesMap":[[175,1],[189,2],[162,3],[151,1],[160,4],[164,5],[168,6],[172,7],[170,8],[165,1],[163,1],[171,9],[167,10],[173,11],[174,12],[161,13],[166,1],[271,1],[270,1],[269,1],[268,1],[272,14],[190,15],[176,16],[184,17],[188,18],[185,11],[186,19],[187,20],[83,21],[84,22],[70,23],[72,24],[91,1],[73,1],[146,25],[147,26],[85,27],[74,28],[86,29],[64,30],[71,31],[75,32],[76,31],[87,1],[89,33],[90,34],[77,1],[78,28],[80,35],[79,36],[81,37],[59,1],[60,38],[63,39],[61,1],[62,40],[183,41],[179,19],[177,19],[178,19],[182,42],[180,43],[181,44],[302,19],[225,45],[191,1],[192,46],[221,47],[220,48],[219,49],[66,16],[67,50],[65,16],[254,51],[307,1],[253,1],[92,52],[93,52],[95,53],[96,54],[97,55],[98,56],[99,57],[100,58],[101,59],[102,60],[103,61],[104,62],[105,62],[107,63],[106,64],[108,63],[109,65],[110,66],[94,67],[144,1],[111,68],[112,69],[113,70],[145,71],[114,72],[115,73],[116,74],[117,75],[118,76],[119,77],[120,78],[121,79],[122,80],[123,81],[124,81],[125,82],[126,83],[128,84],[127,85],[129,86],[130,87],[131,88],[132,89],[133,90],[134,91],[135,92],[136,93],[137,94],[138,95],[139,96],[140,97],[141,98],[142,99],[143,100],[169,1],[273,1],[274,101],[276,1],[214,102],[212,103],[213,1],[284,1],[287,104],[285,105],[288,106],[289,107],[88,1],[286,108],[68,1],[193,109],[215,110],[216,15],[217,109],[222,111],[223,112],[226,113],[224,109],[218,1],[82,1],[152,114],[155,115],[156,115],[153,116],[154,115],[159,117],[157,4],[158,114],[57,1],[58,1],[10,1],[12,1],[11,1],[2,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[3,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[8,1],[48,1],[45,1],[46,1],[47,1],[49,1],[9,1],[50,1],[51,1],[52,1],[55,1],[53,1],[54,1],[1,1],[56,1],[69,1],[277,118],[211,118],[210,119],[208,120],[194,1],[209,121],[198,122],[202,1],[197,123],[199,124],[200,125],[201,125],[203,126],[204,127],[195,1],[207,128],[206,129],[196,130],[205,1],[283,131],[282,132],[257,168],[280,168],[281,169],[275,170],[279,168],[305,139],[304,171],[303,169],[306,172],[299,173],[300,174],[301,169],[258,1],[261,146],[265,1],[262,147],[260,148],[266,149],[263,19],[259,150],[264,133],[237,19],[241,1],[240,19],[148,20],[231,151],[243,152],[239,1],[228,153],[233,154],[242,1],[150,155],[227,156],[149,157],[234,158],[229,159],[230,160],[235,161],[232,162],[236,162],[238,163],[298,164],[291,4],[293,4],[294,4],[290,4],[297,4],[296,4],[295,4],[292,4],[267,1],[246,1],[252,165],[244,1],[248,133],[250,1],[245,1],[251,133],[249,133],[247,133],[256,166],[255,167]],"semanticDiagnosticsPerFile":[175,189,162,151,160,164,168,172,170,165,163,171,167,173,174,161,166,271,270,269,268,272,190,176,184,188,185,186,187,83,84,70,72,91,73,146,147,85,74,86,64,71,75,76,87,89,90,77,78,80,79,81,59,60,63,61,62,183,179,177,178,182,180,181,302,225,191,192,221,220,219,66,67,65,254,307,253,92,93,95,96,97,98,99,100,101,102,103,104,105,107,106,108,109,110,94,144,111,112,113,145,114,115,116,117,118,119,120,121,122,123,124,125,126,128,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,169,273,274,276,214,212,213,284,287,285,288,289,88,286,68,193,215,216,217,222,223,226,224,218,82,152,155,156,153,154,159,157,158,57,58,10,12,11,2,13,14,15,16,17,18,19,20,3,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,55,53,54,1,56,69,277,211,210,208,194,209,198,202,197,199,200,201,203,204,195,207,206,196,205,283,282,257,280,281,275,278,279,305,304,303,306,299,300,301,258,261,265,262,260,266,263,259,264,237,241,240,148,231,243,239,228,233,242,150,227,149,234,229,230,235,232,236,238,298,291,293,294,290,297,296,295,292,267,246,252,244,248,250,245,251,249,247,256,255]},"version":"5.3.3"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import type { NodeCapabilityCount } from "@waku/interfaces";
|
2
|
+
export declare const enrTree: {
|
3
|
+
TEST: string;
|
4
|
+
PROD: string;
|
5
|
+
};
|
6
|
+
export declare const DEFAULT_BOOTSTRAP_TAG_NAME = "bootstrap";
|
7
|
+
export declare const DEFAULT_BOOTSTRAP_TAG_VALUE = 50;
|
8
|
+
export declare const DEFAULT_BOOTSTRAP_TAG_TTL = 100000000;
|
9
|
+
export declare const DEFAULT_NODE_REQUIREMENTS: Partial<NodeCapabilityCount>;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
export const enrTree = {
|
2
|
+
TEST: "enrtree://AO47IDOLBKH72HIZZOXQP6NMRESAN7CHYWIBNXDXWRJRZWLODKII6@test.wakuv2.nodes.status.im",
|
3
|
+
PROD: "enrtree://ANEDLO25QVUGJOUTQFRYKWX6P4Z4GKVESBMHML7DZ6YK4LGS5FC5O@prod.wakuv2.nodes.status.im"
|
4
|
+
};
|
5
|
+
export const DEFAULT_BOOTSTRAP_TAG_NAME = "bootstrap";
|
6
|
+
export const DEFAULT_BOOTSTRAP_TAG_VALUE = 50;
|
7
|
+
export const DEFAULT_BOOTSTRAP_TAG_TTL = 100000000;
|
8
|
+
export const DEFAULT_NODE_REQUIREMENTS = {
|
9
|
+
store: 2,
|
10
|
+
filter: 1,
|
11
|
+
lightPush: 1
|
12
|
+
};
|
13
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/dns/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,6FAA6F;IACnG,IAAI,EAAE,6FAA6F;CACpG,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;AACtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAW,CAAC;AAErD,MAAM,CAAC,MAAM,yBAAyB,GAAiC;IACrE,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACb,CAAC"}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import type { DnsClient, IEnr, NodeCapabilityCount } from "@waku/interfaces";
|
2
|
+
export declare class DnsNodeDiscovery {
|
3
|
+
private readonly dns;
|
4
|
+
private readonly _DNSTreeCache;
|
5
|
+
private readonly _errorTolerance;
|
6
|
+
static dnsOverHttp(dnsClient?: DnsClient): Promise<DnsNodeDiscovery>;
|
7
|
+
/**
|
8
|
+
* Returns a list of verified peers listed in an EIP-1459 DNS tree. Method may
|
9
|
+
* return fewer peers than requested if @link wantedNodeCapabilityCount requires
|
10
|
+
* larger quantity of peers than available or the number of errors/duplicate
|
11
|
+
* peers encountered by randomized search exceeds the sum of the fields of
|
12
|
+
* @link wantedNodeCapabilityCount plus the @link _errorTolerance factor.
|
13
|
+
*/
|
14
|
+
getPeers(enrTreeUrls: string[], wantedNodeCapabilityCount: Partial<NodeCapabilityCount>): Promise<IEnr[]>;
|
15
|
+
constructor(dns: DnsClient);
|
16
|
+
/**
|
17
|
+
* {@inheritDoc getPeers}
|
18
|
+
*/
|
19
|
+
getNextPeer(enrTreeUrls: string[], wantedNodeCapabilityCount: Partial<NodeCapabilityCount>): AsyncGenerator<IEnr>;
|
20
|
+
/**
|
21
|
+
* Runs a recursive, randomized descent of the DNS tree to retrieve a single
|
22
|
+
* ENR record as an ENR. Returns null if parsing or DNS resolution fails.
|
23
|
+
*/
|
24
|
+
private _search;
|
25
|
+
/**
|
26
|
+
* Retrieves the TXT record stored at a location from either
|
27
|
+
* this DNS tree cache or via DNS query.
|
28
|
+
*
|
29
|
+
* @throws if the TXT Record contains non-UTF-8 values.
|
30
|
+
*/
|
31
|
+
private _getTXTRecord;
|
32
|
+
}
|
package/dist/dns/dns.js
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
import { EnrDecoder } from "@waku/enr";
|
2
|
+
import { Logger } from "@waku/utils";
|
3
|
+
import { DnsOverHttps } from "./dns_over_https.js";
|
4
|
+
import { ENRTree } from "./enrtree.js";
|
5
|
+
import { fetchNodesUntilCapabilitiesFulfilled, yieldNodesUntilCapabilitiesFulfilled } from "./fetch_nodes.js";
|
6
|
+
const log = new Logger("discovery:dns");
|
7
|
+
export class DnsNodeDiscovery {
|
8
|
+
dns;
|
9
|
+
_DNSTreeCache;
|
10
|
+
_errorTolerance = 10;
|
11
|
+
static async dnsOverHttp(dnsClient) {
|
12
|
+
if (!dnsClient) {
|
13
|
+
dnsClient = await DnsOverHttps.create();
|
14
|
+
}
|
15
|
+
return new DnsNodeDiscovery(dnsClient);
|
16
|
+
}
|
17
|
+
/**
|
18
|
+
* Returns a list of verified peers listed in an EIP-1459 DNS tree. Method may
|
19
|
+
* return fewer peers than requested if @link wantedNodeCapabilityCount requires
|
20
|
+
* larger quantity of peers than available or the number of errors/duplicate
|
21
|
+
* peers encountered by randomized search exceeds the sum of the fields of
|
22
|
+
* @link wantedNodeCapabilityCount plus the @link _errorTolerance factor.
|
23
|
+
*/
|
24
|
+
async getPeers(enrTreeUrls, wantedNodeCapabilityCount) {
|
25
|
+
const networkIndex = Math.floor(Math.random() * enrTreeUrls.length);
|
26
|
+
const { publicKey, domain } = ENRTree.parseTree(enrTreeUrls[networkIndex]);
|
27
|
+
const context = {
|
28
|
+
domain,
|
29
|
+
publicKey,
|
30
|
+
visits: {}
|
31
|
+
};
|
32
|
+
const peers = await fetchNodesUntilCapabilitiesFulfilled(wantedNodeCapabilityCount, this._errorTolerance, () => this._search(domain, context));
|
33
|
+
log.info("retrieved peers: ", peers.map((peer) => {
|
34
|
+
return {
|
35
|
+
id: peer.peerId?.toString(),
|
36
|
+
multiaddrs: peer.multiaddrs?.map((ma) => ma.toString())
|
37
|
+
};
|
38
|
+
}));
|
39
|
+
return peers;
|
40
|
+
}
|
41
|
+
constructor(dns) {
|
42
|
+
this._DNSTreeCache = {};
|
43
|
+
this.dns = dns;
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* {@inheritDoc getPeers}
|
47
|
+
*/
|
48
|
+
async *getNextPeer(enrTreeUrls, wantedNodeCapabilityCount) {
|
49
|
+
const networkIndex = Math.floor(Math.random() * enrTreeUrls.length);
|
50
|
+
const { publicKey, domain } = ENRTree.parseTree(enrTreeUrls[networkIndex]);
|
51
|
+
const context = {
|
52
|
+
domain,
|
53
|
+
publicKey,
|
54
|
+
visits: {}
|
55
|
+
};
|
56
|
+
for await (const peer of yieldNodesUntilCapabilitiesFulfilled(wantedNodeCapabilityCount, this._errorTolerance, () => this._search(domain, context))) {
|
57
|
+
yield peer;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
/**
|
61
|
+
* Runs a recursive, randomized descent of the DNS tree to retrieve a single
|
62
|
+
* ENR record as an ENR. Returns null if parsing or DNS resolution fails.
|
63
|
+
*/
|
64
|
+
async _search(subdomain, context) {
|
65
|
+
try {
|
66
|
+
const entry = await this._getTXTRecord(subdomain, context);
|
67
|
+
context.visits[subdomain] = true;
|
68
|
+
let next;
|
69
|
+
let branches;
|
70
|
+
const entryType = getEntryType(entry);
|
71
|
+
try {
|
72
|
+
switch (entryType) {
|
73
|
+
case ENRTree.ROOT_PREFIX:
|
74
|
+
next = ENRTree.parseAndVerifyRoot(entry, context.publicKey);
|
75
|
+
return await this._search(next, context);
|
76
|
+
case ENRTree.BRANCH_PREFIX:
|
77
|
+
branches = ENRTree.parseBranch(entry);
|
78
|
+
next = selectRandomPath(branches, context);
|
79
|
+
return await this._search(next, context);
|
80
|
+
case ENRTree.RECORD_PREFIX:
|
81
|
+
return EnrDecoder.fromString(entry);
|
82
|
+
default:
|
83
|
+
return null;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
catch (error) {
|
87
|
+
log.error(`Failed to search DNS tree ${entryType} at subdomain ${subdomain}: ${error}`);
|
88
|
+
return null;
|
89
|
+
}
|
90
|
+
}
|
91
|
+
catch (error) {
|
92
|
+
log.error(`Failed to retrieve TXT record at subdomain ${subdomain}: ${error}`);
|
93
|
+
return null;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
/**
|
97
|
+
* Retrieves the TXT record stored at a location from either
|
98
|
+
* this DNS tree cache or via DNS query.
|
99
|
+
*
|
100
|
+
* @throws if the TXT Record contains non-UTF-8 values.
|
101
|
+
*/
|
102
|
+
async _getTXTRecord(subdomain, context) {
|
103
|
+
if (this._DNSTreeCache[subdomain]) {
|
104
|
+
return this._DNSTreeCache[subdomain];
|
105
|
+
}
|
106
|
+
// Location is either the top level tree entry host or a subdomain of it.
|
107
|
+
const location = subdomain !== context.domain
|
108
|
+
? `${subdomain}.${context.domain}`
|
109
|
+
: context.domain;
|
110
|
+
const response = await this.dns.resolveTXT(location);
|
111
|
+
if (!response.length)
|
112
|
+
throw new Error("Received empty result array while fetching TXT record");
|
113
|
+
if (!response[0].length)
|
114
|
+
throw new Error("Received empty TXT record");
|
115
|
+
// Branch entries can be an array of strings of comma delimited subdomains, with
|
116
|
+
// some subdomain strings split across the array elements
|
117
|
+
const result = response.join("");
|
118
|
+
this._DNSTreeCache[subdomain] = result;
|
119
|
+
return result;
|
120
|
+
}
|
121
|
+
}
|
122
|
+
function getEntryType(entry) {
|
123
|
+
if (entry.startsWith(ENRTree.ROOT_PREFIX))
|
124
|
+
return ENRTree.ROOT_PREFIX;
|
125
|
+
if (entry.startsWith(ENRTree.BRANCH_PREFIX))
|
126
|
+
return ENRTree.BRANCH_PREFIX;
|
127
|
+
if (entry.startsWith(ENRTree.RECORD_PREFIX))
|
128
|
+
return ENRTree.RECORD_PREFIX;
|
129
|
+
return "";
|
130
|
+
}
|
131
|
+
/**
|
132
|
+
* Returns a randomly selected subdomain string from the list provided by a branch
|
133
|
+
* entry record.
|
134
|
+
*
|
135
|
+
* The client must track subdomains which are already resolved to avoid
|
136
|
+
* going into an infinite loop b/c branch entries can contain
|
137
|
+
* circular references. It’s in the client’s best interest to traverse the
|
138
|
+
* tree in random order.
|
139
|
+
*/
|
140
|
+
function selectRandomPath(branches, context) {
|
141
|
+
// Identify domains already visited in this traversal of the DNS tree.
|
142
|
+
// Then filter against them to prevent cycles.
|
143
|
+
const circularRefs = {};
|
144
|
+
for (const [idx, subdomain] of branches.entries()) {
|
145
|
+
if (context.visits[subdomain]) {
|
146
|
+
circularRefs[idx] = true;
|
147
|
+
}
|
148
|
+
}
|
149
|
+
// If all possible paths are circular...
|
150
|
+
if (Object.keys(circularRefs).length === branches.length) {
|
151
|
+
throw new Error("Unresolvable circular path detected");
|
152
|
+
}
|
153
|
+
// Randomly select a viable path
|
154
|
+
let index;
|
155
|
+
do {
|
156
|
+
index = Math.floor(Math.random() * branches.length);
|
157
|
+
} while (circularRefs[index]);
|
158
|
+
return branches[index];
|
159
|
+
}
|
160
|
+
//# sourceMappingURL=dns.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dns.js","sourceRoot":"","sources":["../../src/dns/dns.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { PeerDiscovery, PeerDiscoveryEvents, TypedEventEmitter } from "@libp2p/interface";
|
2
|
+
import { peerDiscoverySymbol as symbol } from "@libp2p/interface";
|
3
|
+
import type { DnsDiscOptions, DnsDiscoveryComponents, NodeCapabilityCount } from "@waku/interfaces";
|
4
|
+
/**
|
5
|
+
* Parse options and expose function to return bootstrap peer addresses.
|
6
|
+
*/
|
7
|
+
export declare class PeerDiscoveryDns extends TypedEventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
|
8
|
+
private nextPeer;
|
9
|
+
private _started;
|
10
|
+
private _components;
|
11
|
+
private _options;
|
12
|
+
constructor(components: DnsDiscoveryComponents, options: DnsDiscOptions);
|
13
|
+
/**
|
14
|
+
* Start discovery process
|
15
|
+
*/
|
16
|
+
start(): Promise<void>;
|
17
|
+
/**
|
18
|
+
* Stop emitting events
|
19
|
+
*/
|
20
|
+
stop(): void;
|
21
|
+
get [symbol](): true;
|
22
|
+
get [Symbol.toStringTag](): string;
|
23
|
+
}
|
24
|
+
export declare function wakuDnsDiscovery(enrUrls: string[], wantedNodeCapabilityCount?: Partial<NodeCapabilityCount>): (components: DnsDiscoveryComponents) => PeerDiscoveryDns;
|
@@ -0,0 +1,95 @@
|
|
1
|
+
import { CustomEvent, TypedEventEmitter } from "@libp2p/interface";
|
2
|
+
import { peerDiscoverySymbol as symbol } from "@libp2p/interface";
|
3
|
+
import { encodeRelayShard, Logger } from "@waku/utils";
|
4
|
+
import { DEFAULT_BOOTSTRAP_TAG_NAME, DEFAULT_BOOTSTRAP_TAG_TTL, DEFAULT_BOOTSTRAP_TAG_VALUE, DEFAULT_NODE_REQUIREMENTS } from "./constants.js";
|
5
|
+
import { DnsNodeDiscovery } from "./dns.js";
|
6
|
+
const log = new Logger("peer-discovery-dns");
|
7
|
+
/**
|
8
|
+
* Parse options and expose function to return bootstrap peer addresses.
|
9
|
+
*/
|
10
|
+
export class PeerDiscoveryDns extends TypedEventEmitter {
|
11
|
+
nextPeer;
|
12
|
+
_started;
|
13
|
+
_components;
|
14
|
+
_options;
|
15
|
+
constructor(components, options) {
|
16
|
+
super();
|
17
|
+
this._started = false;
|
18
|
+
this._components = components;
|
19
|
+
this._options = options;
|
20
|
+
const { enrUrls } = options;
|
21
|
+
log.info("Use following EIP-1459 ENR Tree URLs: ", enrUrls);
|
22
|
+
}
|
23
|
+
/**
|
24
|
+
* Start discovery process
|
25
|
+
*/
|
26
|
+
async start() {
|
27
|
+
log.info("Starting peer discovery via dns");
|
28
|
+
this._started = true;
|
29
|
+
if (this.nextPeer === undefined) {
|
30
|
+
let { enrUrls } = this._options;
|
31
|
+
if (!Array.isArray(enrUrls))
|
32
|
+
enrUrls = [enrUrls];
|
33
|
+
const { wantedNodeCapabilityCount } = this._options;
|
34
|
+
const dns = await DnsNodeDiscovery.dnsOverHttp();
|
35
|
+
this.nextPeer = dns.getNextPeer.bind(dns, enrUrls, wantedNodeCapabilityCount);
|
36
|
+
}
|
37
|
+
for await (const peerEnr of this.nextPeer()) {
|
38
|
+
if (!this._started) {
|
39
|
+
return;
|
40
|
+
}
|
41
|
+
const { peerInfo, shardInfo } = peerEnr;
|
42
|
+
if (!peerInfo) {
|
43
|
+
continue;
|
44
|
+
}
|
45
|
+
const tagsToUpdate = {
|
46
|
+
[DEFAULT_BOOTSTRAP_TAG_NAME]: {
|
47
|
+
value: this._options.tagValue ?? DEFAULT_BOOTSTRAP_TAG_VALUE,
|
48
|
+
ttl: this._options.tagTTL ?? DEFAULT_BOOTSTRAP_TAG_TTL
|
49
|
+
}
|
50
|
+
};
|
51
|
+
let isPeerChanged = false;
|
52
|
+
const isPeerExists = await this._components.peerStore.has(peerInfo.id);
|
53
|
+
if (isPeerExists) {
|
54
|
+
const peer = await this._components.peerStore.get(peerInfo.id);
|
55
|
+
const hasBootstrapTag = peer.tags.has(DEFAULT_BOOTSTRAP_TAG_NAME);
|
56
|
+
if (!hasBootstrapTag) {
|
57
|
+
isPeerChanged = true;
|
58
|
+
await this._components.peerStore.merge(peerInfo.id, {
|
59
|
+
tags: tagsToUpdate
|
60
|
+
});
|
61
|
+
}
|
62
|
+
}
|
63
|
+
else {
|
64
|
+
isPeerChanged = true;
|
65
|
+
await this._components.peerStore.save(peerInfo.id, {
|
66
|
+
tags: tagsToUpdate,
|
67
|
+
...(shardInfo && {
|
68
|
+
metadata: {
|
69
|
+
shardInfo: encodeRelayShard(shardInfo)
|
70
|
+
}
|
71
|
+
})
|
72
|
+
});
|
73
|
+
}
|
74
|
+
if (isPeerChanged) {
|
75
|
+
this.dispatchEvent(new CustomEvent("peer", { detail: peerInfo }));
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
/**
|
80
|
+
* Stop emitting events
|
81
|
+
*/
|
82
|
+
stop() {
|
83
|
+
this._started = false;
|
84
|
+
}
|
85
|
+
get [symbol]() {
|
86
|
+
return true;
|
87
|
+
}
|
88
|
+
get [Symbol.toStringTag]() {
|
89
|
+
return "@waku/bootstrap";
|
90
|
+
}
|
91
|
+
}
|
92
|
+
export function wakuDnsDiscovery(enrUrls, wantedNodeCapabilityCount = DEFAULT_NODE_REQUIREMENTS) {
|
93
|
+
return (components) => new PeerDiscoveryDns(components, { enrUrls, wantedNodeCapabilityCount });
|
94
|
+
}
|
95
|
+
//# sourceMappingURL=dns_discovery.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dns_discovery.js","sourceRoot":"","sources":["../../src/dns/dns_discovery.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import type { DnsClient } from "@waku/interfaces";
|
2
|
+
import { Endpoint } from "dns-query";
|
3
|
+
export declare class DnsOverHttps implements DnsClient {
|
4
|
+
private endpoints;
|
5
|
+
private retries;
|
6
|
+
/**
|
7
|
+
* Create new Dns-Over-Http DNS client.
|
8
|
+
*
|
9
|
+
* @param endpoints The endpoints for Dns-Over-Https queries;
|
10
|
+
* Defaults to using dns-query's API..
|
11
|
+
* @param retries Retries if a given endpoint fails.
|
12
|
+
*
|
13
|
+
* @throws {code: string} If DNS query fails.
|
14
|
+
*/
|
15
|
+
static create(endpoints?: Endpoint[], retries?: number): Promise<DnsOverHttps>;
|
16
|
+
private constructor();
|
17
|
+
/**
|
18
|
+
* Resolves a TXT record
|
19
|
+
*
|
20
|
+
* @param domain The domain name
|
21
|
+
*
|
22
|
+
* @throws if the query fails
|
23
|
+
*/
|
24
|
+
resolveTXT(domain: string): Promise<string[]>;
|
25
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import { Logger } from "@waku/utils";
|
2
|
+
import { bytesToUtf8 } from "@waku/utils/bytes";
|
3
|
+
import { query, wellknown } from "dns-query";
|
4
|
+
const log = new Logger("dns-over-https");
|
5
|
+
export class DnsOverHttps {
|
6
|
+
endpoints;
|
7
|
+
retries;
|
8
|
+
/**
|
9
|
+
* Create new Dns-Over-Http DNS client.
|
10
|
+
*
|
11
|
+
* @param endpoints The endpoints for Dns-Over-Https queries;
|
12
|
+
* Defaults to using dns-query's API..
|
13
|
+
* @param retries Retries if a given endpoint fails.
|
14
|
+
*
|
15
|
+
* @throws {code: string} If DNS query fails.
|
16
|
+
*/
|
17
|
+
static async create(endpoints, retries) {
|
18
|
+
const _endpoints = endpoints ?? (await wellknown.endpoints("doh"));
|
19
|
+
return new DnsOverHttps(_endpoints, retries);
|
20
|
+
}
|
21
|
+
constructor(endpoints, retries = 3) {
|
22
|
+
this.endpoints = endpoints;
|
23
|
+
this.retries = retries;
|
24
|
+
}
|
25
|
+
/**
|
26
|
+
* Resolves a TXT record
|
27
|
+
*
|
28
|
+
* @param domain The domain name
|
29
|
+
*
|
30
|
+
* @throws if the query fails
|
31
|
+
*/
|
32
|
+
async resolveTXT(domain) {
|
33
|
+
let answers;
|
34
|
+
try {
|
35
|
+
const res = await query({
|
36
|
+
question: { type: "TXT", name: domain }
|
37
|
+
}, {
|
38
|
+
endpoints: this.endpoints,
|
39
|
+
retries: this.retries
|
40
|
+
});
|
41
|
+
answers = res.answers;
|
42
|
+
}
|
43
|
+
catch (error) {
|
44
|
+
log.error("query failed: ", error);
|
45
|
+
throw new Error("DNS query failed");
|
46
|
+
}
|
47
|
+
if (!answers)
|
48
|
+
throw new Error(`Could not resolve ${domain}`);
|
49
|
+
const data = answers.map((a) => a.data);
|
50
|
+
const result = [];
|
51
|
+
data.forEach((d) => {
|
52
|
+
if (typeof d === "string") {
|
53
|
+
result.push(d);
|
54
|
+
}
|
55
|
+
else if (Array.isArray(d)) {
|
56
|
+
d.forEach((sd) => {
|
57
|
+
if (typeof sd === "string") {
|
58
|
+
result.push(sd);
|
59
|
+
}
|
60
|
+
else {
|
61
|
+
result.push(bytesToUtf8(sd));
|
62
|
+
}
|
63
|
+
});
|
64
|
+
}
|
65
|
+
else {
|
66
|
+
result.push(bytesToUtf8(d));
|
67
|
+
}
|
68
|
+
});
|
69
|
+
return result;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
//# sourceMappingURL=dns_over_https.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dns_over_https.js","sourceRoot":"","sources":["../../src/dns/dns_over_https.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAY,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEzC,MAAM,OAAO,YAAY;IAoBb;IACA;IApBV;;;;;;;;OAQG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,SAAsB,EACtB,OAAgB;QAEhB,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAEnE,OAAO,IAAI,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,YACU,SAAqB,EACrB,UAAkB,CAAC;QADnB,cAAS,GAAT,SAAS,CAAY;QACrB,YAAO,GAAP,OAAO,CAAY;IAC1B,CAAC;IAEJ;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB;gBACE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;aACxC,EACD;gBACE,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CACF,CAAC;YACF,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAED,CAAC;QAEtC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBACf,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;wBAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|