@aeternity/aepp-sdk 9.0.1 → 11.0.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/README.md +15 -14
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +7 -36
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/account/base.mjs +179 -0
- package/es/account/base.mjs.map +1 -0
- package/es/account/memory.mjs +99 -0
- package/es/account/memory.mjs.map +1 -0
- package/es/account/multiple.mjs +179 -0
- package/es/account/multiple.mjs.map +1 -0
- package/es/ae/aens.mjs +404 -0
- package/es/ae/aens.mjs.map +1 -0
- package/es/ae/{aepp.js → aepp.mjs} +9 -9
- package/es/ae/aepp.mjs.map +1 -0
- package/es/ae/contract.mjs +159 -0
- package/es/ae/contract.mjs.map +1 -0
- package/es/ae/index.mjs +207 -0
- package/es/ae/index.mjs.map +1 -0
- package/es/ae/oracle.mjs +339 -0
- package/es/ae/oracle.mjs.map +1 -0
- package/es/ae/{universal.js → universal.mjs} +10 -10
- package/es/ae/universal.mjs.map +1 -0
- package/es/ae/{wallet.js → wallet.mjs} +10 -10
- package/es/ae/wallet.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +74 -0
- package/es/bignumber.d.ts +1 -7
- package/es/chain/{index.js → index.mjs} +29 -9
- package/es/chain/index.mjs.map +1 -0
- package/es/chain/node.mjs +442 -0
- package/es/chain/node.mjs.map +1 -0
- package/es/channel/handlers.mjs +1110 -0
- package/es/channel/handlers.mjs.map +1 -0
- package/es/channel/{index.js → index.mjs} +245 -472
- package/es/channel/index.mjs.map +1 -0
- package/es/channel/internal.mjs +283 -0
- package/es/channel/internal.mjs.map +1 -0
- package/es/contract/aci.mjs +477 -0
- package/es/contract/aci.mjs.map +1 -0
- package/es/contract/compiler.mjs +115 -0
- package/es/contract/compiler.mjs.map +1 -0
- package/es/contract/ga/helpers.mjs +30 -0
- package/es/contract/ga/helpers.mjs.map +1 -0
- package/es/contract/ga/index.mjs +178 -0
- package/es/contract/ga/index.mjs.map +1 -0
- package/es/errors.d.ts +284 -0
- package/es/index.mjs +57 -0
- package/es/index.mjs.map +1 -0
- package/es/node-pool/index.mjs +188 -0
- package/es/node-pool/index.mjs.map +1 -0
- package/es/node.mjs +133 -0
- package/es/node.mjs.map +1 -0
- package/es/other.d.ts +1 -1
- package/es/tx/builder/field-types.mjs +74 -0
- package/es/tx/builder/field-types.mjs.map +1 -0
- package/es/tx/builder/helpers.mjs +363 -0
- package/es/tx/builder/helpers.mjs.map +1 -0
- package/es/tx/builder/index.mjs +606 -0
- package/es/tx/builder/index.mjs.map +1 -0
- package/es/tx/builder/schema.mjs +760 -0
- package/es/tx/builder/schema.mjs.map +1 -0
- package/es/tx/{index.js → index.mjs} +107 -15
- package/es/tx/index.mjs.map +1 -0
- package/es/tx/tx-object.mjs +283 -0
- package/es/tx/tx-object.mjs.map +1 -0
- package/es/tx/tx.mjs +938 -0
- package/es/tx/tx.mjs.map +1 -0
- package/es/tx/validator.mjs +247 -0
- package/es/tx/validator.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs +2 -0
- package/es/typings/blakejs/{index.d.js.map → index.d.mjs.map} +1 -1
- package/es/utils/aepp-wallet-communication/connection/{browser-runtime.js → browser-runtime.mjs} +27 -29
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +183 -0
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/connection/{index.js → index.mjs} +7 -3
- package/es/utils/aepp-wallet-communication/connection/index.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/{content-script-bridge.js → content-script-bridge.mjs} +29 -23
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/helpers.mjs +92 -0
- package/es/utils/aepp-wallet-communication/helpers.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +375 -0
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +275 -0
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +541 -0
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/schema.mjs +102 -0
- package/es/utils/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs +110 -0
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/utils/amount-formatter.mjs +139 -0
- package/es/utils/amount-formatter.mjs.map +1 -0
- package/es/utils/async-init.mjs +64 -0
- package/es/utils/async-init.mjs.map +1 -0
- package/es/utils/bignumber.mjs +21 -0
- package/es/utils/bignumber.mjs.map +1 -0
- package/es/utils/{bytes.js → bytes.mjs} +16 -12
- package/es/utils/bytes.mjs.map +1 -0
- package/es/utils/{crypto-ts.js → crypto-ts.mjs} +11 -3
- package/es/utils/crypto-ts.mjs.map +1 -0
- package/es/utils/crypto.mjs +239 -0
- package/es/utils/crypto.mjs.map +1 -0
- package/es/utils/errors.mjs +689 -0
- package/es/utils/errors.mjs.map +1 -0
- package/es/utils/hd-wallet.mjs +111 -0
- package/es/utils/hd-wallet.mjs.map +1 -0
- package/es/utils/json-big.mjs +45 -0
- package/es/utils/json-big.mjs.map +1 -0
- package/es/utils/keystore.mjs +240 -0
- package/es/utils/keystore.mjs.map +1 -0
- package/es/utils/mptree.mjs +161 -0
- package/es/utils/mptree.mjs.map +1 -0
- package/es/utils/other.mjs +43 -0
- package/es/utils/other.mjs.map +1 -0
- package/es/utils/semver-satisfies.mjs +16 -0
- package/es/utils/semver-satisfies.mjs.map +1 -0
- package/es/utils/{string.js → string.mjs} +5 -14
- package/es/utils/string.mjs.map +1 -0
- package/es/utils/swagger.mjs +164 -0
- package/es/utils/swagger.mjs.map +1 -0
- package/package.json +55 -62
- package/src/account/base.js +3 -1
- package/src/account/memory.js +13 -8
- package/src/account/multiple.js +31 -22
- package/src/ae/aens.js +75 -77
- package/src/ae/aepp.js +2 -2
- package/src/ae/contract.js +27 -291
- package/src/ae/index.js +9 -7
- package/src/ae/oracle.js +51 -28
- package/src/ae/universal.js +4 -2
- package/src/ae/wallet.js +2 -2
- package/src/chain/index.js +29 -6
- package/src/chain/node.js +95 -67
- package/src/channel/handlers.js +30 -21
- package/src/channel/index.js +44 -20
- package/src/channel/internal.js +30 -24
- package/src/contract/aci.js +376 -0
- package/src/contract/compiler.js +41 -91
- package/src/contract/ga/helpers.js +10 -13
- package/src/contract/ga/index.js +42 -33
- package/src/index.js +9 -10
- package/src/node-pool/index.js +29 -17
- package/src/node.js +33 -36
- package/src/tx/builder/field-types.js +61 -0
- package/src/tx/builder/helpers.js +126 -84
- package/src/tx/builder/index.js +83 -41
- package/src/tx/builder/schema.js +50 -40
- package/src/tx/index.js +101 -12
- package/src/tx/tx-object.js +35 -15
- package/src/tx/tx.js +232 -153
- package/src/tx/validator.js +34 -12
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +11 -5
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +35 -13
- package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +14 -7
- package/src/utils/aepp-wallet-communication/helpers.js +6 -14
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +107 -60
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +24 -11
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +98 -56
- package/src/utils/aepp-wallet-communication/schema.ts +80 -0
- package/src/utils/aepp-wallet-communication/wallet-detector.js +6 -2
- package/src/utils/amount-formatter.ts +4 -3
- package/src/utils/async-init.js +10 -6
- package/src/utils/bignumber.ts +3 -10
- package/src/utils/bytes.ts +3 -2
- package/src/utils/crypto-ts.ts +2 -2
- package/src/utils/crypto.js +10 -144
- package/src/utils/errors.ts +683 -0
- package/src/utils/hd-wallet.js +11 -26
- package/src/utils/keystore.js +57 -53
- package/src/utils/mptree.ts +12 -6
- package/src/utils/other.ts +1 -1
- package/src/utils/semver-satisfies.ts +1 -1
- package/src/utils/swagger.js +75 -45
- package/es/account/base.js +0 -259
- package/es/account/base.js.map +0 -1
- package/es/account/memory.js +0 -86
- package/es/account/memory.js.map +0 -1
- package/es/account/multiple.js +0 -267
- package/es/account/multiple.js.map +0 -1
- package/es/ae/aens.js +0 -829
- package/es/ae/aens.js.map +0 -1
- package/es/ae/aepp.js.map +0 -1
- package/es/ae/contract.js +0 -985
- package/es/ae/contract.js.map +0 -1
- package/es/ae/index.js +0 -442
- package/es/ae/index.js.map +0 -1
- package/es/ae/oracle.js +0 -690
- package/es/ae/oracle.js.map +0 -1
- package/es/ae/universal.js.map +0 -1
- package/es/ae/wallet.js.map +0 -1
- package/es/chain/index.js.map +0 -1
- package/es/chain/node.js +0 -1119
- package/es/chain/node.js.map +0 -1
- package/es/channel/handlers.js +0 -1601
- package/es/channel/handlers.js.map +0 -1
- package/es/channel/index.js.map +0 -1
- package/es/channel/internal.js +0 -438
- package/es/channel/internal.js.map +0 -1
- package/es/contract/aci/helpers.js +0 -298
- package/es/contract/aci/helpers.js.map +0 -1
- package/es/contract/aci/index.js +0 -517
- package/es/contract/aci/index.js.map +0 -1
- package/es/contract/aci/transformation.js +0 -742
- package/es/contract/aci/transformation.js.map +0 -1
- package/es/contract/compiler.js +0 -316
- package/es/contract/compiler.js.map +0 -1
- package/es/contract/ga/helpers.js +0 -120
- package/es/contract/ga/helpers.js.map +0 -1
- package/es/contract/ga/index.js +0 -307
- package/es/contract/ga/index.js.map +0 -1
- package/es/contract/index.js +0 -158
- package/es/contract/index.js.map +0 -1
- package/es/index.js +0 -57
- package/es/index.js.map +0 -1
- package/es/node-pool/index.js +0 -204
- package/es/node-pool/index.js.map +0 -1
- package/es/node.js +0 -228
- package/es/node.js.map +0 -1
- package/es/tx/builder/helpers.js +0 -355
- package/es/tx/builder/helpers.js.map +0 -1
- package/es/tx/builder/index.js +0 -686
- package/es/tx/builder/index.js.map +0 -1
- package/es/tx/builder/schema.js +0 -695
- package/es/tx/builder/schema.js.map +0 -1
- package/es/tx/index.js.map +0 -1
- package/es/tx/tx-object.js +0 -297
- package/es/tx/tx-object.js.map +0 -1
- package/es/tx/tx.js +0 -1757
- package/es/tx/tx.js.map +0 -1
- package/es/tx/validator.js +0 -344
- package/es/tx/validator.js.map +0 -1
- package/es/typings/blakejs/index.d.js +0 -2
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -211
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.js +0 -148
- package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -652
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -285
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -763
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.js +0 -103
- package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -135
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
- package/es/utils/amount-formatter.js +0 -152
- package/es/utils/amount-formatter.js.map +0 -1
- package/es/utils/async-init.js +0 -103
- package/es/utils/async-init.js.map +0 -1
- package/es/utils/bignumber.js +0 -36
- package/es/utils/bignumber.js.map +0 -1
- package/es/utils/bytes.js.map +0 -1
- package/es/utils/crypto-ts.js.map +0 -1
- package/es/utils/crypto.js +0 -358
- package/es/utils/crypto.js.map +0 -1
- package/es/utils/hd-wallet.js +0 -148
- package/es/utils/hd-wallet.js.map +0 -1
- package/es/utils/json-big.js +0 -78
- package/es/utils/json-big.js.map +0 -1
- package/es/utils/keystore.js +0 -393
- package/es/utils/keystore.js.map +0 -1
- package/es/utils/mptree.js +0 -198
- package/es/utils/mptree.js.map +0 -1
- package/es/utils/other.js +0 -93
- package/es/utils/other.js.map +0 -1
- package/es/utils/semver-satisfies.js +0 -35
- package/es/utils/semver-satisfies.js.map +0 -1
- package/es/utils/string.js.map +0 -1
- package/es/utils/swagger.js +0 -269
- package/es/utils/swagger.js.map +0 -1
- package/src/contract/aci/helpers.js +0 -140
- package/src/contract/aci/index.js +0 -191
- package/src/contract/aci/transformation.js +0 -464
- package/src/contract/index.js +0 -159
- package/src/utils/aepp-wallet-communication/schema.js +0 -110
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://Ae/webpack/universalModuleDefinition","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/ends-with.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/entries.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/fill.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find-index.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/flat.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/pad-start.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reverse.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/starts-with.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/map.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/number/is-integer.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/number/max-safe-integer.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/freeze.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/from-entries.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/object/values.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/set-interval.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/set.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/url.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/array/from.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/instance/index-of.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/object/get-own-property-symbols.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/object/keys.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/promise.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/symbol.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/regenerator/index.js","webpack://Ae/./node_modules/core-js-pure/es/array/from.js","webpack://Ae/./node_modules/core-js-pure/es/array/is-array.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/concat.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/entries.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/fill.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/filter.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/find-index.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/find.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/flat.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/for-each.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/includes.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/index-of.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/map.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/reduce.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/reverse.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/slice.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/some.js","webpack://Ae/./node_modules/core-js-pure/es/function/virtual/bind.js","webpack://Ae/./node_modules/core-js-pure/es/instance/bind.js","webpack://Ae/./node_modules/core-js-pure/es/instance/concat.js","webpack://Ae/./node_modules/core-js-pure/es/instance/ends-with.js","webpack://Ae/./node_modules/core-js-pure/es/instance/fill.js","webpack://Ae/./node_modules/core-js-pure/es/instance/filter.js","webpack://Ae/./node_modules/core-js-pure/es/instance/find-index.js","webpack://Ae/./node_modules/core-js-pure/es/instance/find.js","webpack://Ae/./node_modules/core-js-pure/es/instance/flat.js","webpack://Ae/./node_modules/core-js-pure/es/instance/includes.js","webpack://Ae/./node_modules/core-js-pure/es/instance/index-of.js","webpack://Ae/./node_modules/core-js-pure/es/instance/map.js","webpack://Ae/./node_modules/core-js-pure/es/instance/pad-start.js","webpack://Ae/./node_modules/core-js-pure/es/instance/reduce.js","webpack://Ae/./node_modules/core-js-pure/es/instance/reverse.js","webpack://Ae/./node_modules/core-js-pure/es/instance/slice.js","webpack://Ae/./node_modules/core-js-pure/es/instance/some.js","webpack://Ae/./node_modules/core-js-pure/es/instance/starts-with.js","webpack://Ae/./node_modules/core-js-pure/es/json/stringify.js","webpack://Ae/./node_modules/core-js-pure/es/map/index.js","webpack://Ae/./node_modules/core-js-pure/es/number/is-integer.js","webpack://Ae/./node_modules/core-js-pure/es/number/max-safe-integer.js","webpack://Ae/./node_modules/core-js-pure/es/object/assign.js","webpack://Ae/./node_modules/core-js-pure/es/object/define-properties.js","webpack://Ae/./node_modules/core-js-pure/es/object/define-property.js","webpack://Ae/./node_modules/core-js-pure/es/object/entries.js","webpack://Ae/./node_modules/core-js-pure/es/object/freeze.js","webpack://Ae/./node_modules/core-js-pure/es/object/from-entries.js","webpack://Ae/./node_modules/core-js-pure/es/object/get-own-property-descriptor.js","webpack://Ae/./node_modules/core-js-pure/es/object/get-own-property-descriptors.js","webpack://Ae/./node_modules/core-js-pure/es/object/get-own-property-symbols.js","webpack://Ae/./node_modules/core-js-pure/es/object/keys.js","webpack://Ae/./node_modules/core-js-pure/es/object/values.js","webpack://Ae/./node_modules/core-js-pure/es/parse-int.js","webpack://Ae/./node_modules/core-js-pure/es/promise/index.js","webpack://Ae/./node_modules/core-js-pure/es/set/index.js","webpack://Ae/./node_modules/core-js-pure/es/string/virtual/ends-with.js","webpack://Ae/./node_modules/core-js-pure/es/string/virtual/includes.js","webpack://Ae/./node_modules/core-js-pure/es/string/virtual/pad-start.js","webpack://Ae/./node_modules/core-js-pure/es/string/virtual/starts-with.js","webpack://Ae/./node_modules/core-js-pure/es/symbol/index.js","webpack://Ae/./node_modules/core-js-pure/es/symbol/iterator.js","webpack://Ae/./node_modules/core-js-pure/es/weak-map/index.js","webpack://Ae/./node_modules/core-js-pure/features/array/from.js","webpack://Ae/./node_modules/core-js-pure/features/array/is-array.js","webpack://Ae/./node_modules/core-js-pure/features/get-iterator-method.js","webpack://Ae/./node_modules/core-js-pure/features/instance/index-of.js","webpack://Ae/./node_modules/core-js-pure/features/instance/slice.js","webpack://Ae/./node_modules/core-js-pure/features/object/define-property.js","webpack://Ae/./node_modules/core-js-pure/features/object/get-own-property-symbols.js","webpack://Ae/./node_modules/core-js-pure/features/object/keys.js","webpack://Ae/./node_modules/core-js-pure/features/promise/index.js","webpack://Ae/./node_modules/core-js-pure/features/symbol/index.js","webpack://Ae/./node_modules/core-js-pure/features/symbol/iterator.js","webpack://Ae/./node_modules/core-js-pure/internals/a-function.js","webpack://Ae/./node_modules/core-js-pure/internals/a-possible-prototype.js","webpack://Ae/./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://Ae/./node_modules/core-js-pure/internals/an-instance.js","webpack://Ae/./node_modules/core-js-pure/internals/an-object.js","webpack://Ae/./node_modules/core-js-pure/internals/array-fill.js","webpack://Ae/./node_modules/core-js-pure/internals/array-for-each.js","webpack://Ae/./node_modules/core-js-pure/internals/array-from.js","webpack://Ae/./node_modules/core-js-pure/internals/array-includes.js","webpack://Ae/./node_modules/core-js-pure/internals/array-iteration.js","webpack://Ae/./node_modules/core-js-pure/internals/array-method-has-species-support.js","webpack://Ae/./node_modules/core-js-pure/internals/array-method-is-strict.js","webpack://Ae/./node_modules/core-js-pure/internals/array-reduce.js","webpack://Ae/./node_modules/core-js-pure/internals/array-species-create.js","webpack://Ae/./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","webpack://Ae/./node_modules/core-js-pure/internals/check-correctness-of-iteration.js","webpack://Ae/./node_modules/core-js-pure/internals/classof-raw.js","webpack://Ae/./node_modules/core-js-pure/internals/classof.js","webpack://Ae/./node_modules/core-js-pure/internals/collection-strong.js","webpack://Ae/./node_modules/core-js-pure/internals/collection-weak.js","webpack://Ae/./node_modules/core-js-pure/internals/collection.js","webpack://Ae/./node_modules/core-js-pure/internals/correct-is-regexp-logic.js","webpack://Ae/./node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack://Ae/./node_modules/core-js-pure/internals/create-iterator-constructor.js","webpack://Ae/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://Ae/./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://Ae/./node_modules/core-js-pure/internals/create-property.js","webpack://Ae/./node_modules/core-js-pure/internals/define-iterator.js","webpack://Ae/./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack://Ae/./node_modules/core-js-pure/internals/descriptors.js","webpack://Ae/./node_modules/core-js-pure/internals/document-create-element.js","webpack://Ae/./node_modules/core-js-pure/internals/dom-iterables.js","webpack://Ae/./node_modules/core-js-pure/internals/engine-is-browser.js","webpack://Ae/./node_modules/core-js-pure/internals/engine-is-ios.js","webpack://Ae/./node_modules/core-js-pure/internals/engine-is-node.js","webpack://Ae/./node_modules/core-js-pure/internals/engine-is-webos-webkit.js","webpack://Ae/./node_modules/core-js-pure/internals/engine-user-agent.js","webpack://Ae/./node_modules/core-js-pure/internals/engine-v8-version.js","webpack://Ae/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://Ae/./node_modules/core-js-pure/internals/enum-bug-keys.js","webpack://Ae/./node_modules/core-js-pure/internals/export.js","webpack://Ae/./node_modules/core-js-pure/internals/fails.js","webpack://Ae/./node_modules/core-js-pure/internals/flatten-into-array.js","webpack://Ae/./node_modules/core-js-pure/internals/freezing.js","webpack://Ae/./node_modules/core-js-pure/internals/function-bind-context.js","webpack://Ae/./node_modules/core-js-pure/internals/function-bind.js","webpack://Ae/./node_modules/core-js-pure/internals/get-built-in.js","webpack://Ae/./node_modules/core-js-pure/internals/get-iterator-method.js","webpack://Ae/./node_modules/core-js-pure/internals/get-iterator.js","webpack://Ae/./node_modules/core-js-pure/internals/global.js","webpack://Ae/./node_modules/core-js-pure/internals/has.js","webpack://Ae/./node_modules/core-js-pure/internals/hidden-keys.js","webpack://Ae/./node_modules/core-js-pure/internals/host-report-errors.js","webpack://Ae/./node_modules/core-js-pure/internals/html.js","webpack://Ae/./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack://Ae/./node_modules/core-js-pure/internals/indexed-object.js","webpack://Ae/./node_modules/core-js-pure/internals/inspect-source.js","webpack://Ae/./node_modules/core-js-pure/internals/internal-metadata.js","webpack://Ae/./node_modules/core-js-pure/internals/internal-state.js","webpack://Ae/./node_modules/core-js-pure/internals/is-array-iterator-method.js","webpack://Ae/./node_modules/core-js-pure/internals/is-array.js","webpack://Ae/./node_modules/core-js-pure/internals/is-forced.js","webpack://Ae/./node_modules/core-js-pure/internals/is-integer.js","webpack://Ae/./node_modules/core-js-pure/internals/is-object.js","webpack://Ae/./node_modules/core-js-pure/internals/is-pure.js","webpack://Ae/./node_modules/core-js-pure/internals/is-regexp.js","webpack://Ae/./node_modules/core-js-pure/internals/iterate.js","webpack://Ae/./node_modules/core-js-pure/internals/iterator-close.js","webpack://Ae/./node_modules/core-js-pure/internals/iterators-core.js","webpack://Ae/./node_modules/core-js-pure/internals/iterators.js","webpack://Ae/./node_modules/core-js-pure/internals/microtask.js","webpack://Ae/./node_modules/core-js-pure/internals/native-promise-constructor.js","webpack://Ae/./node_modules/core-js-pure/internals/native-symbol.js","webpack://Ae/./node_modules/core-js-pure/internals/native-url.js","webpack://Ae/./node_modules/core-js-pure/internals/native-weak-map.js","webpack://Ae/./node_modules/core-js-pure/internals/new-promise-capability.js","webpack://Ae/./node_modules/core-js-pure/internals/not-a-regexp.js","webpack://Ae/./node_modules/core-js-pure/internals/number-parse-int.js","webpack://Ae/./node_modules/core-js-pure/internals/object-assign.js","webpack://Ae/./node_modules/core-js-pure/internals/object-create.js","webpack://Ae/./node_modules/core-js-pure/internals/object-define-properties.js","webpack://Ae/./node_modules/core-js-pure/internals/object-define-property.js","webpack://Ae/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack://Ae/./node_modules/core-js-pure/internals/object-get-own-property-names-external.js","webpack://Ae/./node_modules/core-js-pure/internals/object-get-own-property-names.js","webpack://Ae/./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack://Ae/./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack://Ae/./node_modules/core-js-pure/internals/object-keys-internal.js","webpack://Ae/./node_modules/core-js-pure/internals/object-keys.js","webpack://Ae/./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://Ae/./node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack://Ae/./node_modules/core-js-pure/internals/object-to-array.js","webpack://Ae/./node_modules/core-js-pure/internals/object-to-string.js","webpack://Ae/./node_modules/core-js-pure/internals/own-keys.js","webpack://Ae/./node_modules/core-js-pure/internals/path.js","webpack://Ae/./node_modules/core-js-pure/internals/perform.js","webpack://Ae/./node_modules/core-js-pure/internals/promise-resolve.js","webpack://Ae/./node_modules/core-js-pure/internals/redefine-all.js","webpack://Ae/./node_modules/core-js-pure/internals/redefine.js","webpack://Ae/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://Ae/./node_modules/core-js-pure/internals/set-global.js","webpack://Ae/./node_modules/core-js-pure/internals/set-species.js","webpack://Ae/./node_modules/core-js-pure/internals/set-to-string-tag.js","webpack://Ae/./node_modules/core-js-pure/internals/shared-key.js","webpack://Ae/./node_modules/core-js-pure/internals/shared-store.js","webpack://Ae/./node_modules/core-js-pure/internals/shared.js","webpack://Ae/./node_modules/core-js-pure/internals/species-constructor.js","webpack://Ae/./node_modules/core-js-pure/internals/string-multibyte.js","webpack://Ae/./node_modules/core-js-pure/internals/string-pad-webkit-bug.js","webpack://Ae/./node_modules/core-js-pure/internals/string-pad.js","webpack://Ae/./node_modules/core-js-pure/internals/string-punycode-to-ascii.js","webpack://Ae/./node_modules/core-js-pure/internals/string-repeat.js","webpack://Ae/./node_modules/core-js-pure/internals/string-trim.js","webpack://Ae/./node_modules/core-js-pure/internals/task.js","webpack://Ae/./node_modules/core-js-pure/internals/to-absolute-index.js","webpack://Ae/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://Ae/./node_modules/core-js-pure/internals/to-integer.js","webpack://Ae/./node_modules/core-js-pure/internals/to-length.js","webpack://Ae/./node_modules/core-js-pure/internals/to-object.js","webpack://Ae/./node_modules/core-js-pure/internals/to-primitive.js","webpack://Ae/./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://Ae/./node_modules/core-js-pure/internals/uid.js","webpack://Ae/./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack://Ae/./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","webpack://Ae/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://Ae/./node_modules/core-js-pure/internals/whitespaces.js","webpack://Ae/./node_modules/core-js-pure/modules/es.aggregate-error.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.concat.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.fill.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.filter.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.find-index.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.find.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.flat.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.for-each.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.from.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.includes.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.index-of.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.is-array.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.iterator.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.map.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.reduce.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.reverse.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.slice.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.some.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.unscopables.flat.js","webpack://Ae/./node_modules/core-js-pure/modules/es.function.bind.js","webpack://Ae/./node_modules/core-js-pure/modules/es.json.stringify.js","webpack://Ae/./node_modules/core-js-pure/modules/es.json.to-string-tag.js","webpack://Ae/./node_modules/core-js-pure/modules/es.map.js","webpack://Ae/./node_modules/core-js-pure/modules/es.number.is-integer.js","webpack://Ae/./node_modules/core-js-pure/modules/es.number.max-safe-integer.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.assign.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.define-properties.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.define-property.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.entries.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.freeze.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.from-entries.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.keys.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.values.js","webpack://Ae/./node_modules/core-js-pure/modules/es.parse-int.js","webpack://Ae/./node_modules/core-js-pure/modules/es.promise.all-settled.js","webpack://Ae/./node_modules/core-js-pure/modules/es.promise.any.js","webpack://Ae/./node_modules/core-js-pure/modules/es.promise.finally.js","webpack://Ae/./node_modules/core-js-pure/modules/es.promise.js","webpack://Ae/./node_modules/core-js-pure/modules/es.set.js","webpack://Ae/./node_modules/core-js-pure/modules/es.string.ends-with.js","webpack://Ae/./node_modules/core-js-pure/modules/es.string.includes.js","webpack://Ae/./node_modules/core-js-pure/modules/es.string.iterator.js","webpack://Ae/./node_modules/core-js-pure/modules/es.string.pad-start.js","webpack://Ae/./node_modules/core-js-pure/modules/es.string.starts-with.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.async-iterator.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.has-instance.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.iterator.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.match-all.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.match.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.replace.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.search.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.species.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.split.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.to-primitive.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","webpack://Ae/./node_modules/core-js-pure/modules/es.symbol.unscopables.js","webpack://Ae/./node_modules/core-js-pure/modules/es.weak-map.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.aggregate-error.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.promise.all-settled.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.promise.any.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.promise.try.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.symbol.dispose.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.symbol.matcher.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.symbol.metadata.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.symbol.observable.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","webpack://Ae/./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","webpack://Ae/./node_modules/core-js-pure/modules/web.dom-collections.iterator.js","webpack://Ae/./node_modules/core-js-pure/modules/web.timers.js","webpack://Ae/./node_modules/core-js-pure/modules/web.url-search-params.js","webpack://Ae/./node_modules/core-js-pure/modules/web.url.js","webpack://Ae/./node_modules/core-js-pure/stable/array/from.js","webpack://Ae/./node_modules/core-js-pure/stable/array/is-array.js","webpack://Ae/./node_modules/core-js-pure/stable/array/virtual/entries.js","webpack://Ae/./node_modules/core-js-pure/stable/array/virtual/for-each.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/bind.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/concat.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/ends-with.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/entries.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/fill.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/filter.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/find-index.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/find.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/flat.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/for-each.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/includes.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/index-of.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/map.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/pad-start.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/reduce.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/reverse.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/slice.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/some.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/starts-with.js","webpack://Ae/./node_modules/core-js-pure/stable/json/stringify.js","webpack://Ae/./node_modules/core-js-pure/stable/map/index.js","webpack://Ae/./node_modules/core-js-pure/stable/number/is-integer.js","webpack://Ae/./node_modules/core-js-pure/stable/number/max-safe-integer.js","webpack://Ae/./node_modules/core-js-pure/stable/object/assign.js","webpack://Ae/./node_modules/core-js-pure/stable/object/define-properties.js","webpack://Ae/./node_modules/core-js-pure/stable/object/define-property.js","webpack://Ae/./node_modules/core-js-pure/stable/object/entries.js","webpack://Ae/./node_modules/core-js-pure/stable/object/freeze.js","webpack://Ae/./node_modules/core-js-pure/stable/object/from-entries.js","webpack://Ae/./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js","webpack://Ae/./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js","webpack://Ae/./node_modules/core-js-pure/stable/object/get-own-property-symbols.js","webpack://Ae/./node_modules/core-js-pure/stable/object/keys.js","webpack://Ae/./node_modules/core-js-pure/stable/object/values.js","webpack://Ae/./node_modules/core-js-pure/stable/parse-int.js","webpack://Ae/./node_modules/core-js-pure/stable/promise/index.js","webpack://Ae/./node_modules/core-js-pure/stable/set-interval.js","webpack://Ae/./node_modules/core-js-pure/stable/set-timeout.js","webpack://Ae/./node_modules/core-js-pure/stable/set/index.js","webpack://Ae/./node_modules/core-js-pure/stable/url/index.js","webpack://Ae/./node_modules/core-js-pure/stable/weak-map/index.js","webpack://Ae/./node_modules/core-js-pure/web/url.js","webpack://Ae/./node_modules/ramda/src/T.js","webpack://Ae/./node_modules/ramda/src/always.js","webpack://Ae/./node_modules/ramda/src/bind.js","webpack://Ae/./node_modules/ramda/src/cond.js","webpack://Ae/./node_modules/ramda/src/contains.js","webpack://Ae/./node_modules/ramda/src/curryN.js","webpack://Ae/./node_modules/ramda/src/defaultTo.js","webpack://Ae/./node_modules/ramda/src/equals.js","webpack://Ae/./node_modules/ramda/src/filter.js","webpack://Ae/./node_modules/ramda/src/flatten.js","webpack://Ae/./node_modules/ramda/src/flip.js","webpack://Ae/./node_modules/ramda/src/fromPairs.js","webpack://Ae/./node_modules/ramda/src/head.js","webpack://Ae/./node_modules/ramda/src/identical.js","webpack://Ae/./node_modules/ramda/src/internal/_arity.js","webpack://Ae/./node_modules/ramda/src/internal/_arrayFromIterator.js","webpack://Ae/./node_modules/ramda/src/internal/_complement.js","webpack://Ae/./node_modules/ramda/src/internal/_curry1.js","webpack://Ae/./node_modules/ramda/src/internal/_curry2.js","webpack://Ae/./node_modules/ramda/src/internal/_curry3.js","webpack://Ae/./node_modules/ramda/src/internal/_curryN.js","webpack://Ae/./node_modules/ramda/src/internal/_dispatchable.js","webpack://Ae/./node_modules/ramda/src/internal/_equals.js","webpack://Ae/./node_modules/ramda/src/internal/_filter.js","webpack://Ae/./node_modules/ramda/src/internal/_functionName.js","webpack://Ae/./node_modules/ramda/src/internal/_has.js","webpack://Ae/./node_modules/ramda/src/internal/_includes.js","webpack://Ae/./node_modules/ramda/src/internal/_includesWith.js","webpack://Ae/./node_modules/ramda/src/internal/_indexOf.js","webpack://Ae/./node_modules/ramda/src/internal/_isArguments.js","webpack://Ae/./node_modules/ramda/src/internal/_isArray.js","webpack://Ae/./node_modules/ramda/src/internal/_isArrayLike.js","webpack://Ae/./node_modules/ramda/src/internal/_isInteger.js","webpack://Ae/./node_modules/ramda/src/internal/_isObject.js","webpack://Ae/./node_modules/ramda/src/internal/_isPlaceholder.js","webpack://Ae/./node_modules/ramda/src/internal/_isString.js","webpack://Ae/./node_modules/ramda/src/internal/_isTransformer.js","webpack://Ae/./node_modules/ramda/src/internal/_makeFlat.js","webpack://Ae/./node_modules/ramda/src/internal/_map.js","webpack://Ae/./node_modules/ramda/src/internal/_objectAssign.js","webpack://Ae/./node_modules/ramda/src/internal/_objectIs.js","webpack://Ae/./node_modules/ramda/src/internal/_reduce.js","webpack://Ae/./node_modules/ramda/src/internal/_xfBase.js","webpack://Ae/./node_modules/ramda/src/internal/_xfilter.js","webpack://Ae/./node_modules/ramda/src/internal/_xmap.js","webpack://Ae/./node_modules/ramda/src/internal/_xwrap.js","webpack://Ae/./node_modules/ramda/src/keys.js","webpack://Ae/./node_modules/ramda/src/last.js","webpack://Ae/./node_modules/ramda/src/lt.js","webpack://Ae/./node_modules/ramda/src/lte.js","webpack://Ae/./node_modules/ramda/src/map.js","webpack://Ae/./node_modules/ramda/src/max.js","webpack://Ae/./node_modules/ramda/src/merge.js","webpack://Ae/./node_modules/ramda/src/nth.js","webpack://Ae/./node_modules/ramda/src/path.js","webpack://Ae/./node_modules/ramda/src/paths.js","webpack://Ae/./node_modules/ramda/src/pick.js","webpack://Ae/./node_modules/ramda/src/prop.js","webpack://Ae/./node_modules/ramda/src/reduce.js","webpack://Ae/./node_modules/ramda/src/reject.js","webpack://Ae/./node_modules/ramda/src/type.js","webpack://Ae/./node_modules/ramda/src/uniqWith.js","webpack://Ae/./node_modules/ramda/src/without.js","webpack://Ae/./node_modules/ramda/src/zipObj.js","webpack://Ae/./node_modules/regenerator-runtime/runtime.js","webpack://Ae/external {\"commonjs\":\"@aeternity/bip39\",\"commonjs2\":\"@aeternity/bip39\"}","webpack://Ae/external {\"commonjs\":\"@aeternity/json-bigint\",\"commonjs2\":\"@aeternity/json-bigint\"}","webpack://Ae/external {\"commonjs\":\"@stamp/it\",\"commonjs2\":\"@stamp/it\"}","webpack://Ae/external {\"commonjs\":\"@stamp/required\",\"commonjs2\":\"@stamp/required\"}","webpack://Ae/external {\"commonjs\":\"aes-js\",\"commonjs2\":\"aes-js\"}","webpack://Ae/external {\"commonjs\":\"bignumber.js\",\"commonjs2\":\"bignumber.js\"}","webpack://Ae/external {\"commonjs\":\"bip32-path\",\"commonjs2\":\"bip32-path\"}","webpack://Ae/external {\"commonjs\":\"blakejs\",\"commonjs2\":\"blakejs\"}","webpack://Ae/external {\"commonjs\":\"bs58check\",\"commonjs2\":\"bs58check\"}","webpack://Ae/external {\"commonjs\":\"buffer\",\"commonjs2\":\"buffer\"}","webpack://Ae/external {\"commonjs\":\"cross-fetch\",\"commonjs2\":\"cross-fetch\"}","webpack://Ae/external {\"commonjs\":\"ed2curve\",\"commonjs2\":\"ed2curve\"}","webpack://Ae/external {\"commonjs\":\"events\",\"commonjs2\":\"events\"}","webpack://Ae/external {\"commonjs\":\"joi-browser\",\"commonjs2\":\"joi-browser\"}","webpack://Ae/external {\"commonjs\":\"libsodium-wrappers-sumo\",\"commonjs2\":\"libsodium-wrappers-sumo\"}","webpack://Ae/external {\"commonjs\":\"rlp\",\"commonjs2\":\"rlp\"}","webpack://Ae/external {\"commonjs\":\"sha.js\",\"commonjs2\":\"sha.js\"}","webpack://Ae/external {\"commonjs\":\"swagger-client\",\"commonjs2\":\"swagger-client\"}","webpack://Ae/external {\"commonjs\":\"tweetnacl\",\"commonjs2\":\"tweetnacl\"}","webpack://Ae/external {\"commonjs\":\"tweetnacl-auth\",\"commonjs2\":\"tweetnacl-auth\"}","webpack://Ae/external {\"commonjs\":\"uuid\",\"commonjs2\":\"uuid\"}","webpack://Ae/external {\"commonjs\":\"websocket\",\"commonjs2\":\"websocket\"}","webpack://Ae/webpack/bootstrap","webpack://Ae/webpack/runtime/compat get default export","webpack://Ae/webpack/runtime/define property getters","webpack://Ae/webpack/runtime/global","webpack://Ae/webpack/runtime/hasOwnProperty shorthand","webpack://Ae/webpack/runtime/make namespace object","webpack://Ae/./src/utils/string.ts","webpack://Ae/./src/utils/bytes.ts","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/arrayWithHoles.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/arrayLikeToArray.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/unsupportedIterableToArray.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/nonIterableRest.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/slicedToArray.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArrayLimit.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArray.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/toConsumableArray.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/arrayWithoutHoles.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/nonIterableSpread.js","webpack://Ae/./src/utils/crypto-ts.ts","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/defineProperty.js","webpack://Ae/./src/tx/builder/schema.js","webpack://Ae/./src/utils/bignumber.ts","webpack://Ae/./src/tx/builder/helpers.js","webpack://Ae/./src/utils/crypto.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/asyncToGenerator.js","webpack://Ae/./src/utils/keystore.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/typeof.js","webpack://Ae/./src/utils/amount-formatter.ts","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/createClass.js","webpack://Ae/./src/utils/mptree.ts","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/classCallCheck.js","webpack://Ae/./src/tx/builder/index.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/toArray.js","webpack://Ae/./src/contract/aci/transformation.js","webpack://Ae/./src/contract/aci/helpers.js","webpack://Ae/./src/utils/hd-wallet.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/objectWithoutProperties.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/esm/objectWithoutPropertiesLoose.js","webpack://Ae/./src/tx/index.js","webpack://Ae/./src/chain/index.js","webpack://Ae/./src/utils/async-init.js","webpack://Ae/./src/utils/json-big.js","webpack://Ae/./src/utils/other.ts","webpack://Ae/./src/utils/swagger.js","webpack://Ae/./src/utils/semver-satisfies.ts","webpack://Ae/./src/node.js","webpack://Ae/./src/account/base.js","webpack://Ae/./src/ae/index.js","webpack://Ae/./src/tx/validator.js","webpack://Ae/./src/node-pool/index.js","webpack://Ae/./src/chain/node.js","webpack://Ae/./src/tx/tx-object.js","webpack://Ae/./src/tx/tx.js","webpack://Ae/./src/account/memory.js","webpack://Ae/./src/account/multiple.js","webpack://Ae/./src/ae/aens.js","webpack://Ae/./src/contract/index.js","webpack://Ae/./src/contract/compiler.js","webpack://Ae/./src/contract/aci/index.js","webpack://Ae/./src/ae/contract.js","webpack://Ae/./src/contract/ga/helpers.js","webpack://Ae/./src/contract/ga/index.js","webpack://Ae/./src/utils/aepp-wallet-communication/schema.js","webpack://Ae/./src/utils/aepp-wallet-communication/helpers.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/rpc-client.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/aepp-rpc.js","webpack://Ae/./src/ae/oracle.js","webpack://Ae/./src/ae/aepp.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/wallet-rpc.js","webpack://Ae/./src/ae/wallet.js","webpack://Ae/./src/channel/internal.js","webpack://Ae/./src/channel/handlers.js","webpack://Ae/./src/channel/index.js","webpack://Ae/./src/ae/universal.js","webpack://Ae/./src/utils/aepp-wallet-communication/content-script-bridge.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/index.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/browser-window-message.js","webpack://Ae/./src/utils/aepp-wallet-communication/wallet-detector.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/browser-runtime.js"],"names":["root","factory","exports","module","require","define","amd","undefined","self","__WEBPACK_EXTERNAL_MODULE__7042__","__WEBPACK_EXTERNAL_MODULE__4468__","__WEBPACK_EXTERNAL_MODULE__9964__","__WEBPACK_EXTERNAL_MODULE__1426__","__WEBPACK_EXTERNAL_MODULE__7785__","__WEBPACK_EXTERNAL_MODULE__4285__","__WEBPACK_EXTERNAL_MODULE__2570__","__WEBPACK_EXTERNAL_MODULE__9457__","__WEBPACK_EXTERNAL_MODULE__2692__","__WEBPACK_EXTERNAL_MODULE__5237__","__WEBPACK_EXTERNAL_MODULE__4102__","__WEBPACK_EXTERNAL_MODULE__5992__","__WEBPACK_EXTERNAL_MODULE__7711__","__WEBPACK_EXTERNAL_MODULE__8991__","__WEBPACK_EXTERNAL_MODULE__3465__","__WEBPACK_EXTERNAL_MODULE__8454__","__WEBPACK_EXTERNAL_MODULE__9422__","__WEBPACK_EXTERNAL_MODULE__1804__","__WEBPACK_EXTERNAL_MODULE__4866__","__WEBPACK_EXTERNAL_MODULE__6532__","__WEBPACK_EXTERNAL_MODULE__9685__","__WEBPACK_EXTERNAL_MODULE__6648__","path","Array","from","isArray","entryVirtual","concat","entries","fill","filter","findIndex","find","flat","forEach","includes","indexOf","map","reduce","reverse","slice","some","bind","FunctionPrototype","Function","prototype","it","own","ArrayPrototype","endsWith","StringPrototype","String","arrayIncludes","stringIncludes","padStart","startsWith","core","JSON","stringify","replacer","space","apply","arguments","Map","Number","isInteger","Object","assign","defineProperties","T","D","sham","defineProperty","key","desc","freeze","fromEntries","getOwnPropertyDescriptor","getOwnPropertyDescriptors","getOwnPropertySymbols","keys","values","parseInt","Promise","Set","Symbol","WrappedWellKnownSymbolModule","f","WeakMap","parent","getIteratorMethod","TypeError","isObject","Constructor","name","toObject","toAbsoluteIndex","toLength","value","O","this","length","argumentsLength","index","end","endPos","$forEach","STRICT_METHOD","arrayMethodIsStrict","callbackfn","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","arrayLike","result","step","iterator","next","C","mapfn","mapping","iteratorMethod","call","done","toIndexedObject","createMethod","IS_INCLUDES","$this","el","fromIndex","IndexedObject","arraySpeciesCreate","push","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","that","specificCreate","boundFunction","create","target","every","filterOut","fails","wellKnownSymbol","V8_VERSION","SPECIES","METHOD_NAME","array","constructor","foo","Boolean","argument","method","aFunction","IS_RIGHT","memo","i","left","right","originalArray","anObject","iteratorClose","fn","ENTRIES","error","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","exec","SKIP_CLOSING","ITERATION_SUPPORT","object","toString","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","redefineAll","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","ADDER","iterable","type","first","last","size","AS_ENTRIES","getInternalState","previous","state","entry","getEntry","removed","clear","data","prev","has","get","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","getWeakData","ArrayIterationModule","$has","id","uncaughtFrozenStore","store","frozen","UncaughtFrozenStore","findUncaughtFrozen","splice","$","global","InternalMetadataModule","createNonEnumerableProperty","setToStringTag","common","IS_WEAK","NativeConstructor","NativePrototype","exported","collection","KEY","IS_ADDER","a","b","configurable","REQUIRED","forced","MATCH","regexp","error1","error2","F","getPrototypeOf","IteratorPrototype","createPropertyDescriptor","Iterators","returnThis","IteratorConstructor","NAME","definePropertyModule","bitmap","enumerable","writable","toPrimitive","propertyKey","createIteratorConstructor","setPrototypeOf","redefine","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","proto","wrappedWellKnownSymbolModule","document","EXISTS","createElement","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","window","userAgent","test","classof","process","getBuiltIn","match","version","versions","v8","split","CONSTRUCTOR","isForced","wrapConstructor","Wrapper","c","options","source","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","descriptor","TARGET","GLOBAL","STATIC","stat","PROTO","nativeSource","targetPrototype","noTargetGet","wrap","real","flattenIntoArray","original","sourceLen","start","depth","mapper","thisArg","element","targetIndex","sourceIndex","mapFn","isExtensible","preventExtensions","factories","construct","argsLength","args","list","join","partArgs","variable","namespace","check","Math","globalThis","g","hasOwnProperty","hasOwn","console","propertyIsEnumerable","functionToString","inspectSource","hiddenKeys","uid","FREEZING","METADATA","setMetadata","objectID","weakData","meta","onFreeze","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","OBJECT_ALREADY_INITIALIZED","wmget","wmhas","wmset","metadata","facade","STATE","enforce","arg","replacement","feature","detection","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","floor","isFinite","isRegExp","Result","stopped","unboundFunction","iterFn","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","returnMethod","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","flush","head","notify","toggle","node","promise","then","macrotask","IS_IOS","IS_WEBOS_WEBKIT","IS_NODE","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","domain","exit","enter","resolve","nextTick","createTextNode","observe","characterData","task","symbol","url","URL","searchParams","pathname","toJSON","sort","href","URLSearchParams","username","host","hash","PromiseCapability","reject","$$resolve","$$reject","trim","whitespaces","$parseInt","hex","radix","S","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","$assign","A","B","alphabet","chr","j","activeXDocument","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","ActiveXObject","iframeDocument","iframe","write","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","appendChild","src","contentWindow","open","Properties","IE8_DOM_DEFINE","$defineProperty","P","Attributes","$getOwnPropertyDescriptor","$getOwnPropertyNames","windowNames","getOwnPropertyNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","names","$propertyIsEnumerable","NASHORN_BUG","1","V","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","TO_ENTRIES","getOwnPropertyNamesModule","newPromiseCapability","x","promiseCapability","unsafe","TAG","SET_METHOD","setGlobal","SHARED","mode","copyright","defaultConstructor","toInteger","requireObjectCoercible","CONVERT_TO_STRING","pos","second","position","charCodeAt","charAt","codeAt","repeat","ceil","IS_END","maxLength","fillString","fillLen","stringFiller","stringLength","fillStr","intMaxLength","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","k","baseMinusTMin","base","encode","input","currentValue","output","inputLength","counter","extra","ucs2decode","n","bias","basicLength","handledCPCount","m","handledCPCountPlusOne","RangeError","q","t","qMinusT","baseMinusT","label","encoded","labels","count","str","Infinity","whitespace","ltrim","RegExp","rtrim","defer","channel","port","location","setImmediate","clearImmediate","MessageChannel","Dispatch","queue","run","runner","listener","event","post","postMessage","protocol","now","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","max","min","integer","isNaN","PREFERRED_STRING","val","valueOf","postfix","random","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$AggregateError","errors","message","Error","errorsArray","AggregateError","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","len","E","addToUnscopables","$filter","$findIndex","FIND_INDEX","SKIPS_HOLES","$find","FIND","depthArg","checkCorrectnessOfIteration","$includes","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","ARRAY_ITERATOR","Arguments","$map","$reduce","CHROME_VERSION","nativeReverse","HAS_SPECIES_SUPPORT","nativeSlice","fin","$some","$stringify","re","low","hi","fix","offset","collectionStrong","init","$entries","$freeze","obj","v","nativeGetOwnPropertyDescriptor","FAILS_ON_PRIMITIVES","ownKeys","getOwnPropertyDescriptorModule","nativeKeys","$values","parseIntImplementation","newPromiseCapabilityModule","perform","allSettled","capability","promiseResolve","remaining","alreadyCalled","status","reason","PROMISE_ANY_ERROR","any","alreadyResolved","alreadyRejected","NativePromise","speciesConstructor","onFinally","isFunction","e","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","microtask","hostReportErrors","IS_BROWSER","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromiseConstructorPrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","r","$promiseResolve","race","notARegExp","correctIsRegExpLogic","$endsWith","CORRECT_IS_REGEXP_LOGIC","searchString","endPosition","search","STRING_ITERATOR","point","$padStart","$startsWith","defineWellKnownSymbol","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","SYMBOL","TO_PRIMITIVE","$Symbol","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","description","isSymbol","$defineProperties","properties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","$replacer","InternalWeakMap","collectionWeak","enforceIternalState","IS_IE11","$WeakMap","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","nativeSet","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","scheduler","timeout","boundArgs","setInterval","USE_NATIVE_URL","getIterator","$fetch","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","plus","sequences","percentSequence","bytes","percentDecode","sequence","decodeURIComponent","deserialize","serialize","encodeURIComponent","parseSearchParams","query","attribute","attributes","shift","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","params","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","append","getAll","found","entriesIndex","sliceIndex","callback","fetch","body","headers","getState","EOF","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","pow","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","number","ipv4","parts","pop","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","unshift","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","code","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","buffer","seenAt","seenBracket","seenPasswordToken","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","origin","getOrigin","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","getter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","always","_curry1","_arity","_curry2","thisObj","cond","pairs","arity","pair","idx","_includes","contains","_curryN","curryN","defaultTo","d","_equals","equals","_dispatchable","_filter","_isObject","_reduce","_xfilter","pred","filterable","acc","flatten","_makeFlat","flip","fromPairs","nth","_objectIs","identical","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","iter","_isPlaceholder","f1","f2","_b","_a","f3","_c","received","combined","argsIdx","combinedIdx","_isArray","_isTransformer","methodNames","xf","transducer","_arrayFromIterator","_includesWith","_functionName","_has","_uniqContentEquals","aIterator","bIterator","stackA","stackB","eq","aItem","typeA","ignoreCase","multiline","sticky","unicode","keysA","extendedStackA","extendedStackB","prop","_indexOf","inf","item","_isArguments","_isString","_isArrayLike","nodeType","recursive","flatt","jlen","ilen","functor","nextKey","is","_xwrap","_iterableReduce","_methodReduce","methodName","symIterator","_arrayReduce","_xfBase","XFilter","XMap","_xmap","XWrap","hasEnumBug","nonEnumerableProps","hasArgsEnumBug","nIdx","ks","checkArgsLength","lt","lte","_map","_objectAssign","merge","l","paths","pathAr","_isInteger","pathsArray","p","pick","_curry3","_complement","uniqWith","without","xs","zipObj","out","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","err","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__esModule","definition","o","snakeToPascal","s","toUpperCase","pascalToSnake","isHex","bigNumberToByteArray","toFixed","hexString","Buffer","toBytes","big","BigNumber","str2buf","enc","isBase64","_arrayWithHoles","arr","_arrayLikeToArray","arr2","_unsupportedIterableToArray","minLen","_context","_nonIterableRest","_slicedToArray","_i","_s","_e","_arr","_n","_d","_iterableToArray","_toConsumableArray","blake2b","_defineProperty","VSN","VSN_2","TX_TTL","QUERY_FEE","ORACLE_TTL","QUERY_TTL","RESPONSE_TTL","DEPOSIT","AMOUNT","GAS","MIN_GAS_PRICE","MAX_AUTH_FUN_GAS","DRY_RUN_ACCOUNT","pub","amount","NAME_TTL","NAME_MAX_TTL","NAME_MAX_CLIENT_TTL","CLIENT_TTL","NAME_FEE","NAME_FEE_MULTIPLIER","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","NAME_BID_MAX_LENGTH","NAME_ID_KEY","ak","ct","ch","NAME_BID_RANGES","31","times","30","29","28","27","26","25","24","23","22","21","20","19","18","17","16","15","14","13","12","11","10","9","8","7","6","5","4","3","2","NAME_BID_TIMEOUTS","OBJECT_TAG_SIGNED_TRANSACTION","OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX","OBJECT_TAG_CHANNEL_RECONNECT_TX","OBJECT_TAG_CONTRACTS_TREE","OBJECT_TAG_CONTRACT_CALLS_TREE","OBJECT_TAG_CHANNELS_TREE","OBJECT_TAG_NAMESERVICE_TREE","OBJECT_TAG_ORACLES_TREE","OBJECT_TAG_ACCOUNTS_TREE","TX_FIELD","prefix","TX_SCHEMA_FIELD","schema","objectId","TX_TYPE","account","signed","spend","nameClaim","namePreClaim","nameUpdate","nameRevoke","nameTransfer","contract","contractCreate","contractCall","contractCallResult","oracleRegister","oracleExtend","oracleQuery","oracleResponse","channelCreate","channelCloseMutual","channelCloseSolo","channelSlash","channelDeposit","channelWithdraw","channelSettle","channelOffChain","channelForceProgress","channelSnapshotSolo","channelOffChainUpdateTransfer","channelOffChainUpdateDeposit","channelOffChainUpdateWithdrawal","channelOffChainCreateContract","channelOffChainCallContract","channelReconnect","proofOfInclusion","stateTrees","merklePatriciaTree","merklePatriciaTreeValue","contractsTree","contractCallsTree","channelsTree","nameserviceTree","oraclesTree","accountsTree","gaAttach","gaMeta","payingFor","sophiaByteCode","VM_VERSIONS","NO_VM","SOPHIA","SOPHIA_IMPROVEMENTS_MINERVA","SOPHIA_IMPROVEMENTS_FORTUNA","FATE","SOPHIA_IMPROVEMENTS_LIMA","FATE_2","ABI_VERSIONS","NO_ABI","PROTOCOL_VERSIONS","IRIS","PROTOCOL_VM_ABI","vmVersion","abiVersion","OBJECT_ID_TX_TYPE","FIELD_TYPES","int","ids","binary","rlpBinary","rlpBinaries","rawBinary","bool","signatures","pointers","offChainUpdates","callStack","mptrees","callReturnType","ctVersion","sophiaCodeTypeInfo","payload","stateTree","BASE_GAS","GAS_PER_BYTE","DEFAULT_FEE","KEY_BLOCK_INTERVAL","TX_FEE_BASE_GAS","txType","factor","TX_FEE_OTHER_GAS","txSize","relativeTtl","innerTxSize","minus","ID_TAG","commitment","oracle","PREFIX_ID_TAG","nm","cm","ID_TAG_PREFIX","revertObject","VALIDATION_MESSAGE","isMinusValue","BASE_TX","CONTRACT_BYTE_CODE_LIMA","ACCOUNT_TX_2","SPEND_TX","SIGNED_TX","NAME_PRE_CLAIM_TX","NAME_CLAIM_TX_2","NAME_UPDATE_TX","NAME_TRANSFER_TX","NAME_REVOKE_TX","CONTRACT_TX","GA_ATTACH_TX","GA_META_TX_2","PAYING_FOR_TX","CONTRACT_CREATE_TX","CONTRACT_CALL_TX","CONTRACT_CALL_RESULT_TX","ORACLE_REGISTER_TX","ORACLE_EXTEND_TX","ORACLE_QUERY_TX","ORACLE_RESPOND_TX","CHANNEL_CREATE_TX_2","CHANNEL_DEPOSIT_TX","CHANNEL_WITHDRAW_TX","CHANNEL_CLOSE_MUTUAL_TX","CHANNEL_CLOSE_SOLO_TX","CHANNEL_SLASH_TX","CHANNEL_SETTLE_TX","CHANNEL_FORCE_PROGRESS_TX","CHANNEL_OFFCHAIN_TX_2","CHANNEL_TX_3","CHANNEL_SNAPSHOT_SOLO_TX","CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX","CHANNEL_OFFCHAIN_CALL_CONTRACT_TX","CHANNEL_RECONNECT_TX","CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX","CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX","CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX","PROOF_OF_INCLUSION_TX","STATE_TREES_TX","MERKLE_PATRICIA_TREE_TX","MERKLE_PATRICIA_TREE_VALUE_TX","CONTRACTS_TREE_TX","CONTRACT_CALLS_TREE_TX","CHANNELS_TREE_TX","NAMESERVICE_TREE_TX","ORACLES_TREE_TX","ACCOUNTS_TREE_TX","TX_SERIALIZATION_SCHEMA","TX_DESERIALIZATION_SCHEMA","isBigNumber","bigNumber","integerValue","createSalt","salt","base64Types","buildContractId","ownerId","nonce","decode","oracleQueryId","senderId","oracleId","nonceBE","alloc","formatSalt","produceNameId","ensureNameValid","commitmentHash","encodeBase58Check","requiredPrefix","decodeBase64Check","decodeBase58Check","encodeBase64Check","writeId","hashId","idTag","readId","buf","readUIntBE","writeInt","readInt","buildPointers","readPointers","isNameValid","classify","klass","substr","validatePointers","getMinimumNameFee","nameLength","computeBidFee","startFee","increment","computeAuctionEndBlock","claimHeight","isAuctionName","Ecb","aesjs","getAddressFromPriv","secret","nacl","publicBuffer","publicKey","isAddressValid","addressFromDecimal","decimalAddress","aeEncodeKey","sha256hash","shajs","update","digest","checksum","checkSumFn","newChecksum","decodeRaw","bs58check","encodeUnsigned","allocUnsafe","writeUInt32BE","encodeContractAddress","owner","generateKeyPairFromSecret","generateKeyPair","raw","keyPair","secretBuffer","secretKey","encryptKey","binaryData","hashedPasswordBytes","encrypt","decryptKey","encrypted","encryptedBytes","aesEcb","decrypt","sign","privateKey","verify","signature","Uint8Array","messageToHash","msg","signMessage","verifyMessage","binaryKey","pubKeyAddress","isValidKeypair","encryptData","ephemeralKeyPair","pubKeyUInt8Array","encryptedMessage","ed2curve","ciphertext","ephemPubKey","decryptData","encryptedData","receiverSecretKeyUint8Array","decrypted","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_sodium","DEFAULTS","crypto","secret_type","symmetric_alg","kdf","kdf_params","memlimit_kib","opslimit","parallelism","DERIVED_KEY_FUNCTIONS","argon2id","deriveKeyUsingArgon2id","memoryCost","timeCost","ready","sodium","crypto_pwhash","crypto_pwhash_ALG_ARGON2ID13","CRYPTO_FUNCTIONS","plaintext","res","algo","deriveKey","marshal","derivedKey","opt","public_key","uuid","cipher_params","recover","keyObject","validateKeyObj","kdfParams","dump","cryptoKeys","missingRootKeys","missingCryptoKeys","_typeof","AE_AMOUNT_FORMATS","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","DENOMINATION_MAGNITUDE","toAe","denomination","formatAmount","targetDenomination","toAettos","denominations","shiftedBy","prefixes","magnitude","getNearestPrefix","exponent","abs","getLowerBoundPrefix","rawValue","exp","precision","_defineProperties","props","NodeType","MPTree","instance","rootHash","nodes","nodeHash","parseNode","Branch","Extension","protoProps","staticProps","rlpEncode","nibble","Leaf","tree","mptHash","searchFrom","ORACLE_TTL_TYPES","serializeField","rlpEncoded","transformParams","schemaKeys","getOracleRelativeTtl","ttlKey","calculateMinFee","gas","vsn","multiplier","actualFee","buildFee","fee","expected","buildTx","tx","encodedTx","calculateFee","showWarning","warn","validateParams","excludeKeys","assert","valid","gte","validateField","buildRawTx","filteredSchema","fieldType","unpackRawTx","vm","abi","unpackTx","funHash","fnName","argType","outType","deserializeField","getSchema","objId","isDeserialize","firstKey","txObject","fromRlpBinary","rlpDecode","buildTxHash","rawTx","_toArray","SOPHIA_TYPES","ChainTtl","decodeEvents","events","topics","eName","eParams","hexHash","types","decoded","transformEvent","tail","injectVars","aciType","typedef","baseType","generic","varianValue","variant","vars","linkTypeDefs","bindings","typeDef","contractTypeDefs","type_defs","isTypedDefOrState","isRemoteAddress","readType","transform","tuple","option","transformMap","transformVariant","variantArgs","transformDecodedData","aci","skipTransformDecoded","addressPrefix","keyT","valueT","variantType","genericMap","prepareSchema","Joi","getJoiErrorMsg","or","regex","items","ordered","JoiBinary","bufferCheck","optional","joi","pre","convert","rules","validate","isBuffer","createError","validateArguments","validationSchema","sparse","abortEarly","getFunctionACI","external","functions","buildContractMethods","aciArgs","stateful","parseArguments","deploy","callStatic","send","externalAci","unpackByteCode","bytecode","prepareArgsForEncode","fnACI","unpackEvents","decodeCallResult","returns","log","decodedResult","decodedEvents","ED25519_CURVE","HARDENED_OFFSET","toHex","derivePathFromKey","segments","fromString","toPathArray","parentKey","deriveChild","derivePathFromSeed","seed","masterKey","getMasterKeyFromSeed","formatAccount","getKeyPair","I","hmac","chainCode","indexBuffer","getHdWalletAccountFromMnemonic","mnemonic","accountIdx","walletKey","mnemonicToSeed","getSaveHDWalletAccounts","saveHDWallet","accountCount","_","generateSaveHDWallet","validateMnemonic","generateMnemonic","genMnemonic","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","stampit","spendTx","namePreclaimTx","nameClaimTx","nameTransferTx","nameUpdateTx","nameRevokeTx","contractCreateTx","contractCallTx","oracleRegisterTx","oracleExtendTx","oraclePostQueryTx","oracleRespondTx","getAccountNonce","channelCloseSoloTx","channelSlashTx","channelSettleTx","channelSnapshotSoloTx","gaAttachTx","getVmVersion","prepareTxParams","deepProps","Ae","defaults","waitMined","sendTransaction","height","awaitHeight","topBlock","poll","balance","getBalance","getTxInfo","mempool","txDryRun","getAccount","asyncInit","stamp","compose","deepConfiguration","AsyncInit","initializers","ret","deepConf","composers","composables","jsonBig","JsonBig","storeAsString","convertValuesToBigNumbers","bn","parse","pause","duration","mapObject","filterObject","traverseKeys","snakizeKeys","pascalizeKeys","warnedAboutInternalApiUsage","specUrl","spec","internalUrl","disableBigNumbers","disableCaseConversion","json","jsonImp","schemes","SwaggerClient","responseInterceptor","response","text","internal","combinedApi","apis","opSpecs","operationId","api","opId","opSpec","parameters","requestBody","param","req","rootKeys","filteredValue","__requestBody","stringified","geVersion","ltVersion","getComponents","versionComponents","geComponents","ltComponents","componentsToNumber","components","vNumber","geNumber","ltNumber","getNetworkId","networkId","force","selectedNode","protocols","getCurrentKeyBlock","effectiveAtHeight","Node","ignoreVersion","genSwaggerClient","client","semverSatisfies","NODE_GE_VERSION","NODE_LT_VERSION","getStatus","revision","nodeRevision","genesisHash","genesisKeyBlockHash","getConsensusProtocolVersion","consensusProtocolVersion","nodeNetworkId","getNodeInfo","isAccountBase","innerTx","rlpBinaryTx","txWithNetworkId","returnHex","sig","verifyMessageCrypto","signTransaction","contractId","authFun","signUsingGA","TxBuilder","authData","createMetaTx","recipientIdOrName","resolveName","recipientId","fraction","desiredAmount","gt","transaction","payerId","payingForTx","Tx","AccountBase","Chain","transferFunds","payForTransaction","destroyInstance","destroyMethods","validators","parentTxTypes","txHashWithNetworkId","decodedPub","checkedKeys","verifyTransaction","minFee","ttl","nameFee","cost","validNonce","gasPrice","txProtocol","getSenderAddress","getAccountByPubkey","getCurrentKeyBlockHeight","pool","validateNodes","addNode","selectNode","propertyDescriptors","select","isNodeConnected","getNodesInPool","unknown","validation","postTransaction","txHash","txData","confirm","waitForTxConfirm","confirmationHeight","verifyTx","blockHeight","newBlockHeight","getAccountByPubkeyAndHeight","getAccountByPubkeyAndHash","format","getTransactionByHash","_heightPromise","interval","attempts","currentHeight","getTopHeader","th","blocks","allowUnsynced","getTransactionInfoByHash","callInfo","getPendingTransactions","getCurrentGeneration","hashOrHeight","getGenerationByHash","getGenerationByHeight","getMicroBlockTransactionsByHash","transactions","getKeyBlockByHash","getKeyBlockByHeight","getMicroBlockHeaderByHash","accountAddress","protectedDryRunTxs","txs","accounts","pubKey","results","resultPayload","other","getContractCode","getContract","getNameEntryByName","nameOrId","resolveByNode","getName","NodePool","getGeneration","getMicroBlockHeader","getMicroBlockTransactions","getKeyBlock","getContractByteCode","buildTransaction","unpackTransaction","initTransaction","TxObject","isSigned","statics","fromRlp","setProp","getSignatures","addSignature","nativeMode","postSpend","accountId","commitmentId","postNamePreclaim","nameSalt","postNameClaim","nameId","postNameTransfer","nameTtl","clientTtl","postNameUpdate","postNameRevoke","deposit","callData","postContractCreate","callerId","postContractCall","queryFormat","responseFormat","queryFee","oracleTtl","postOracleRegister","postOracleExtend","responseTtl","queryTtl","postOracleQuery","queryId","postOracleRespond","channelId","fromId","poi","postChannelCloseSolo","postChannelSlash","initiatorAmountFinal","responderAmountFinal","postChannelSettle","postChannelSnapshotSolo","calculateTtl","relative","accountNonce","absoluteTtl","ChainNode","supportedProtocol","protocolForTX","secrets","keypair","gaId","isGa","pubBuffer","selectedAddress","onAccount","_resolveAccount","addresses","addAccount","selectAccount","removeAccount","MemoryAccount","extendPointers","aensUpdate","aensQuery","transfer","aensTransfer","revoke","aensRevoke","extendTtl","minNameFee","claimTx","nameInter","_salt","preclaimTx","claim","aensClaim","aensPreclaim","aensBid","contractEncodeCallDataAPI","compileContractAPI","contractGetACI","setCompilerUrl","getCompilerVersion","contractDecodeCallResultAPI","validateByteCodeAPI","getFateAssembler","getBytecodeCompilerVersion","ContractBase","compilerUrl","compilerVersion","_compilerApi","_isCompiler6","COMPILER_6_GE_VERSION","COMPILER_LT_VERSION","COMPILER_GE_VERSION","_ensureCompilerReady","_prepareCompilerOptions","filesystem","file_system","encodeCalldata","function","calldata","compileContract","generateACI","contractDecodeCallDataByCodeAPI","decodeCalldataBytecode","contractDecodeCallDataBySourceAPI","decodeCalldataSource","callValue","callResult","validateByteCode","getFateAssemblerCode","contractAddress","forceCodeCheck","defaultOptions","skipArgsConvert","interface","external_encoded_aci","compiled","deployInfo","setOptions","active","onChanByteCode","compile","eventDecode","payable","prepareArgs","contractCallStatic","contractDeploy","createdAt","contractCompile","txInfo","_handleCallError","returnType","returnValue","revert","top","contractEncodeCall","txOpt","callObj","dryRunOther","contractDecodeData","argsOrCallData","_sendAndProcess","initState","Date","encodeCall","deployStatic","delegateSignatureCommon","ContractAPI","getContractInstance","createAensDelegationSignature","createOracleDelegationSignature","ContractWithCompiler","ContractCompilerAPI","prepareGaParams","ins","authFnName","authCallData","getContractAuthFan","createGeneralizeAccount","isGA","gaContractId","wrapInEmptySignedTx","rawTransaction","wrappedTx","metaTxRlp","asEnum","VERSION","MESSAGE_DIRECTION","WALLET_TYPE","NOTIFICATIONS","REQUESTS","SUBSCRIPTION_VALUES","SUBSCRIPTION_TYPES","METHODS","wallet","readyToConnect","updateAddress","aepp","connect","subscribeAddress","updateNetwork","closeConnection","RPC_STATUS","CONNECTED","DISCONNECTED","CONNECTION_REJECTED","WAITING_FOR_CONNECTION_APPROVE","WAITING_FOR_CONNECTION_REQUEST","WAITING_FOR_SUBSCRIPTION","ERRORS","broadcastFailed","invalidTransaction","rejectedByUser","connectionDeny","permissionDeny","internalError","notAuthorize","unsupportedProtocol","unsupportedNetwork","getBrowserAPI","chrome","browser","isInIframe","sendMessage","connection","messageId","isNotificationOrResponse","msgData","jsonrpc","getHandler","debug","responseMessage","sendResponseMessage","voidFn","isValidAccounts","resolveOnAccount","icons","handlers","onMessage","onDisconnect","callbacks","addressSubscription","disconnect","currentAccount","isHasAccounts","current","connected","updateInfo","isSubscribed","hasAccessToAccount","isConnected","getCurrentAccount","forceConnectionClose","setAccounts","forceNotification","updateSubscription","subscribe","unsubscribe","request","msgId","processResponse","transformResult","rpcClient","onAddressChange","onNetworkChange","disconnectWallet","RESPONSES","subscription","signedTransaction","transactionHash","handleMessage","forceValidation","eventsHandlers","connectToWallet","walletBroadcast","RpcClient","connectionInfo","sendConnectRequest","sendDisconnect","askAddresses","returnSigned","getOracleByPubkey","getOracleQueriesByPubkey","queries","oracleQueries","pollQueries","pollForQueries","postQuery","postQueryToOracle","respondToQuery","extendOracle","extendOracleTtl","getQuery","getQueryObject","getOracleQueryByPubkeyAndQueryId","decodedQuery","decodedResponse","respond","pollForResponse","pollForQueryResponse","responseBuffer","getOracleObject","registerOracle","onQuery","knownQueryIds","checkNewQueries","intervalId","clearInterval","Oracle","Contract","Aens","AeppRpc","callInstance","getWalletInfo","clientAccounts","getAccounts","onAcc","rpcClients","accept","deny","errorObjectOrHandler","AccountMultiple","onConnection","onSubscription","onSign","onAskAccounts","onMessageSign","_selectAccount","_addAccount","_selectNode","removeRpcClient","addRpcClient","clientConnection","shareWalletInfo","postFn","extension","WalletRpc","GeneralizeAccount","fsm","websockets","eventEmitters","messageQueue","messageQueueLocked","actionQueue","actionQueueLocked","rpcCallbacks","pingTimeoutId","pongTimeoutId","fsmId","enterState","nextState","dequeueAction","changeStatus","newStatus","changeState","newState","enqueueAction","guard","action","locked","dequeueMessage","ping","clearTimeout","channel_id","details","wrapCallErrorMessage","initialize","channelOptions","existingFsmId","awaitingReconnection","awaitingConnection","EventEmitter","wsUrl","W3CWebSocket","onerror","onopen","reconnectTx","channelOpen","signed_tx","onclose","encodeRlpTx","appendSignature","signFn","signedTx","handleUnexpectedMessage","wsMessage","channel_accept","funding_created","awaitingChannelCreateTx","awaitingOpenConfirmation","fsm_id","channelClosed","initiator","responder","role","awaitingOnChainTx","awaitingBlockInclusion","own_funding_locked","funding_locked","awaitingInitialState","awaitingTxSignRequest","awaitingOffChainTx","updates","awaitingOffChainUpdate","accepted","errorCode","error_code","errorMessage","error_msg","awaitingUpdateConflict","to","awaitingShutdownTx","awaitingShutdownOnChainTx","awaitingLeave","awaitingWithdrawTx","awaitingWithdrawCompletion","onOnChainTx","own_withdraw_locked","onOwnWithdrawLocked","withdraw_locked","onWithdrawLocked","awaitingDepositTx","awaitingDepositCompletion","own_deposit_locked","onOwnDepositLocked","deposit_locked","onDepositLocked","awaitingNewContractTx","awaitingNewContractCompletion","round","awaitingCallContractUpdateTx","awaitingCallContractCompletion","awaitingCallContractForceProgressUpdate","awaitingForceProgressCompletion","awaitingCallsPruned","channels","closeTx","snakeToPascalObjKeys","contracts","call_data","contract_id","abi_version","caller","caller_id","pubkey","txParams","Channel","on","off","removeListener","channelStatus","channelState","channelFsmId","balances","leave","shutdown","recipient","doSend","onStatusChanged","withdraw","createContract","vm_version","callContract","callContractStatic","getContractCall","getContractState","channelDisconnect","cleanContractCalls","forceProgress","gas_price","reconnect","Transaction","pageConnection","extConnection","allowCrossOrigin","getTarget","isExtensionContext","isWeb","sendDirection","receiveDirection","to_aepp","forceOrigin","selfP","targetP","subscribeFn","unsubscribeFn","removeEventListener","WalletConnection","BrowserWindowMessageConnection","wallets","scan","onDetected","getConnection","isExtension","to_waellet","newWallet","stopScan","addListener","warning","hasListeners","hasListener"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,EAAQG,QAAQ,aAAcA,QAAQ,mBAAoBA,QAAQ,gBAAiBA,QAAQ,aAAcA,QAAQ,YAAaA,QAAQ,aAAcA,QAAQ,UAAWA,QAAQ,UAAWA,QAAQ,WAAYA,QAAQ,UAAWA,QAAQ,OAAQA,QAAQ,kBAAmBA,QAAQ,eAAgBA,QAAQ,0BAA2BA,QAAQ,QAASA,QAAQ,eAAgBA,QAAQ,aAAcA,QAAQ,UAAWA,QAAQ,2BAA4BA,QAAQ,kBAAmBA,QAAQ,cAAeA,QAAQ,qBAC/e,mBAAXC,QAAyBA,OAAOC,IAC9CD,OAAO,CAAC,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,CAAE,GAAKJ,GAC3B,iBAAZC,QACdA,QAAY,GAAID,EAAQG,QAAQ,aAAcA,QAAQ,mBAAoBA,QAAQ,gBAAiBA,QAAQ,aAAcA,QAAQ,YAAaA,QAAQ,aAAcA,QAAQ,UAAWA,QAAQ,UAAWA,QAAQ,WAAYA,QAAQ,UAAWA,QAAQ,OAAQA,QAAQ,kBAAmBA,QAAQ,eAAgBA,QAAQ,0BAA2BA,QAAQ,QAASA,QAAQ,eAAgBA,QAAQ,aAAcA,QAAQ,UAAWA,QAAQ,2BAA4BA,QAAQ,kBAAmBA,QAAQ,cAAeA,QAAQ,qBAEvgBJ,EAAS,GAAIC,EAAQD,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,GAAYP,OAAKO,IARjY,CASGC,MAAM,SAASC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,EAAmCC,GACjvB,M,4BCVA3B,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,cCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,cCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,cCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAAC,EAAOD,QAAU,EAAjB,O,eCAA,EAAQ,MACR,EAAQ,MACR,IAAI6B,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAKC,MAAMC,M,eCJ5B,EAAQ,MACR,IAAIF,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAKC,MAAME,S,eCH5B,EAAQ,MACR,IAAIC,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASC,Q,eCHvC,EAAQ,MACR,IAAID,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASE,S,eCHvC,EAAQ,KACR,IAAIF,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASG,M,eCHvC,EAAQ,MACR,IAAIH,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASI,Q,YCHvC,EAAQ,MACR,IAAIJ,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASK,W,eCHvC,EAAQ,KACR,IAAIL,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASM,M,eCHvC,EAAQ,MACR,EAAQ,MACR,IAAIN,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASO,M,eCJvC,EAAQ,MACR,IAAIP,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASQ,S,cCHvC,EAAQ,MACR,IAAIR,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASS,U,eCHvC,EAAQ,MACR,IAAIT,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASU,S,eCHvC,EAAQ,MACR,IAAIV,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASW,K,eCHvC,EAAQ,MACR,IAAIX,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASY,Q,eCHvC,EAAQ,MACR,IAAIZ,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASa,S,eCHvC,EAAQ,KACR,IAAIb,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASc,O,eCHvC,EAAQ,MACR,IAAId,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,SAASe,M,eCHvC,EAAQ,MACR,IAAIf,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,YAAYgB,M,eCH1C,IAAIA,EAAO,EAAQ,MAEfC,EAAoBC,SAASC,UAEjCnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGJ,KACb,OAAOI,IAAOH,GAAsBG,aAAcF,UAAYG,IAAQJ,EAAkBD,KAAQA,EAAOK,I,eCNzG,IAAIpB,EAAS,EAAQ,MAEjBqB,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGnB,OACb,OAAOmB,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAerB,OAAUA,EAASoB,I,eCNpG,IAAIE,EAAW,EAAQ,MAEnBC,EAAkBC,OAAON,UAE7BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGG,SACb,MAAqB,iBAAPH,GAAmBA,IAAOI,GAClCJ,aAAcK,QAAUJ,IAAQG,EAAgBD,SAAYA,EAAWF,I,cCP/E,IAAIlB,EAAO,EAAQ,MAEfmB,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGjB,KACb,OAAOiB,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAenB,KAAQA,EAAOkB,I,eCNhG,IAAIjB,EAAS,EAAQ,MAEjBkB,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGhB,OACb,OAAOgB,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAelB,OAAUA,EAASiB,I,eCNpG,IAAIhB,EAAY,EAAQ,GAEpBiB,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGf,UACb,OAAOe,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAejB,UAAaA,EAAYgB,I,eCN1G,IAAIf,EAAO,EAAQ,MAEfgB,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGd,KACb,OAAOc,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAehB,KAAQA,EAAOe,I,eCNhG,IAAId,EAAO,EAAQ,MAEfe,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGb,KACb,OAAOa,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAef,KAAQA,EAAOc,I,eCNhG,IAAIK,EAAgB,EAAQ,KACxBC,EAAiB,EAAQ,MAEzBL,EAAiBzB,MAAMsB,UACvBK,EAAkBC,OAAON,UAE7BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGX,SACb,OAAIW,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAeb,SAAkBiB,EAC5E,iBAAPN,GAAmBA,IAAOI,GAAoBJ,aAAcK,QAAUJ,IAAQG,EAAgBf,SAChGkB,EACAN,I,eCXX,IAAIX,EAAU,EAAQ,MAElBY,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGV,QACb,OAAOU,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAeZ,QAAWA,EAAUW,I,eCNtG,IAAIV,EAAM,EAAQ,MAEdW,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGT,IACb,OAAOS,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAeX,IAAOA,EAAMU,I,eCN9F,IAAIO,EAAW,EAAQ,MAEnBJ,EAAkBC,OAAON,UAE7BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGQ,SACb,MAAqB,iBAAPR,GAAmBA,IAAOI,GAClCJ,aAAcK,QAAUJ,IAAQG,EAAgBI,SAAYA,EAAWP,I,eCP/E,IAAIT,EAAS,EAAQ,MAEjBU,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGR,OACb,OAAOQ,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAeV,OAAUA,EAASS,I,eCNpG,IAAIR,EAAU,EAAQ,MAElBS,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGP,QACb,OAAOO,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAeT,QAAWA,EAAUQ,I,eCNtG,IAAIP,EAAQ,EAAQ,MAEhBQ,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGN,MACb,OAAOM,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAeR,MAASA,EAAQO,I,eCNlG,IAAIN,EAAO,EAAQ,MAEfO,EAAiBzB,MAAMsB,UAE3BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGL,KACb,OAAOK,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAeP,KAAQA,EAAOM,I,eCNhG,IAAIQ,EAAa,EAAQ,MAErBL,EAAkBC,OAAON,UAE7BnD,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGS,WACb,MAAqB,iBAAPT,GAAmBA,IAAOI,GAClCJ,aAAcK,QAAUJ,IAAQG,EAAgBK,WAAcA,EAAaR,I,eCPnF,EAAQ,MACR,IAAIS,EAAO,EAAQ,MAGdA,EAAKC,OAAMD,EAAKC,KAAO,CAAEC,UAAWD,KAAKC,YAG9ChE,EAAOD,QAAU,SAAmBqD,EAAIa,EAAUC,GAChD,OAAOJ,EAAKC,KAAKC,UAAUG,MAAM,KAAMC,a,eCRzC,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,IAAIxC,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAKyC,K,eCNtB,EAAQ,KACR,IAAIzC,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK0C,OAAOC,W,eCH7B,EAAQ,MAERvE,EAAOD,QAAU,kB,eCFjB,EAAQ,MACR,IAAI6B,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4C,OAAOC,Q,eCH7B,EAAQ,MACR,IAEID,EAFO,EAAQ,MAEDA,OAEdE,EAAmB1E,EAAOD,QAAU,SAA0B4E,EAAGC,GACnE,OAAOJ,EAAOE,iBAAiBC,EAAGC,IAGhCJ,EAAOE,iBAAiBG,OAAMH,EAAiBG,MAAO,I,eCT1D,EAAQ,MACR,IAEIL,EAFO,EAAQ,MAEDA,OAEdM,EAAiB9E,EAAOD,QAAU,SAAwBqD,EAAI2B,EAAKC,GACrE,OAAOR,EAAOM,eAAe1B,EAAI2B,EAAKC,IAGpCR,EAAOM,eAAeD,OAAMC,EAAeD,MAAO,I,eCTtD,EAAQ,MACR,IAAIjD,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4C,OAAOtC,S,eCH7B,EAAQ,MACR,IAAIN,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4C,OAAOS,Q,eCH7B,EAAQ,MACR,EAAQ,MACR,IAAIrD,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4C,OAAOU,a,cCJ7B,EAAQ,MACR,IAEIV,EAFO,EAAQ,MAEDA,OAEdW,EAA2BnF,EAAOD,QAAU,SAAkCqD,EAAI2B,GACpF,OAAOP,EAAOW,yBAAyB/B,EAAI2B,IAGzCP,EAAOW,yBAAyBN,OAAMM,EAAyBN,MAAO,I,eCT1E,EAAQ,MACR,IAAIjD,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4C,OAAOY,2B,cCH7B,EAAQ,MACR,IAAIxD,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4C,OAAOa,uB,eCH7B,EAAQ,MACR,IAAIzD,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4C,OAAOc,M,eCH7B,EAAQ,MACR,IAAI1D,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4C,OAAOe,Q,eCH7B,EAAQ,MACR,IAAI3D,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK4D,U,eCHtB,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,IAAI5D,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK6D,S,eCVtB,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,IAAI7D,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK8D,K,eCNtB,EAAQ,MACR,IAAI1D,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,UAAUuB,U,eCHxC,EAAQ,MACR,IAAIvB,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,UAAUS,U,eCHxC,EAAQ,MACR,IAAIT,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,UAAU4B,U,eCHxC,EAAQ,MACR,IAAI5B,EAAe,EAAQ,MAE3BhC,EAAOD,QAAUiC,EAAa,UAAU6B,Y,eCHxC,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,IAAIjC,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK+D,Q,eCtBtB,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,IAAIC,EAA+B,EAAQ,MAE3C5F,EAAOD,QAAU6F,EAA6BC,EAAE,a,eCLhD,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,IAAIjE,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAKkE,S,eCLtB,IAAIC,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,EAAQ,MACR,EAAQ,MACR,IAAIC,EAAoB,EAAQ,MAEhChG,EAAOD,QAAUiG,G,eCJjB,IAAID,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,KAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MACrB,EAAQ,MAER,EAAQ,MACR,EAAQ,IACR,EAAQ,MAER/F,EAAOD,QAAUgG,G,eCPjB,IAAIA,EAAS,EAAQ,MACrB,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MAER,EAAQ,KAER,EAAQ,MAER/F,EAAOD,QAAUgG,G,eCXjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,SCFjB/F,EAAOD,QAAU,SAAUqD,GACzB,GAAiB,mBAANA,EACT,MAAM6C,UAAUxC,OAAOL,GAAM,sBAC7B,OAAOA,I,eCHX,IAAI8C,EAAW,EAAQ,KAEvBlG,EAAOD,QAAU,SAAUqD,GACzB,IAAK8C,EAAS9C,IAAc,OAAPA,EACnB,MAAM6C,UAAU,aAAexC,OAAOL,GAAM,mBAC5C,OAAOA,I,SCLXpD,EAAOD,QAAU,c,SCAjBC,EAAOD,QAAU,SAAUqD,EAAI+C,EAAaC,GAC1C,KAAMhD,aAAc+C,GAClB,MAAMF,UAAU,cAAgBG,EAAOA,EAAO,IAAM,IAAM,cAC1D,OAAOhD,I,eCHX,IAAI8C,EAAW,EAAQ,KAEvBlG,EAAOD,QAAU,SAAUqD,GACzB,IAAK8C,EAAS9C,GACZ,MAAM6C,UAAUxC,OAAOL,GAAM,qBAC7B,OAAOA,I,4BCJX,IAAIiD,EAAW,EAAQ,MACnBC,EAAkB,EAAQ,MAC1BC,EAAW,EAAQ,MAIvBvG,EAAOD,QAAU,SAAcyG,GAO7B,IANA,IAAIC,EAAIJ,EAASK,MACbC,EAASJ,EAASE,EAAEE,QACpBC,EAAkBxC,UAAUuC,OAC5BE,EAAQP,EAAgBM,EAAkB,EAAIxC,UAAU,QAAKhE,EAAWuG,GACxEG,EAAMF,EAAkB,EAAIxC,UAAU,QAAKhE,EAC3C2G,OAAiB3G,IAAR0G,EAAoBH,EAASL,EAAgBQ,EAAKH,GACxDI,EAASF,GAAOJ,EAAEI,KAAWL,EACpC,OAAOC,I,4BCdT,IAAIO,EAAW,gBAGXC,EAFsB,EAAQ,KAEdC,CAAoB,WAIxClH,EAAOD,QAAWkH,EAGd,GAAGzE,QAH2B,SAAiB2E,GACjD,OAAOH,EAASN,KAAMS,EAAY/C,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,K,4BCR1E,IAAI4C,EAAO,EAAQ,MACfqD,EAAW,EAAQ,MACnBe,EAA+B,EAAQ,MACvCC,EAAwB,EAAQ,MAChCd,EAAW,EAAQ,MACnBe,EAAiB,EAAQ,MACzBtB,EAAoB,EAAQ,MAIhChG,EAAOD,QAAU,SAAcwH,GAC7B,IAOIZ,EAAQa,EAAQC,EAAMC,EAAUC,EAAMnB,EAPtCC,EAAIJ,EAASkB,GACbK,EAAmB,mBAARlB,KAAqBA,KAAO7E,MACvC+E,EAAkBxC,UAAUuC,OAC5BkB,EAAQjB,EAAkB,EAAIxC,UAAU,QAAKhE,EAC7C0H,OAAoB1H,IAAVyH,EACVE,EAAiB/B,EAAkBS,GACnCI,EAAQ,EAIZ,GAFIiB,IAASD,EAAQ7E,EAAK6E,EAAOjB,EAAkB,EAAIxC,UAAU,QAAKhE,EAAW,IAE3DA,MAAlB2H,GAAiCH,GAAK/F,OAASwF,EAAsBU,GAWvE,IADAP,EAAS,IAAII,EADbjB,EAASJ,EAASE,EAAEE,SAEdA,EAASE,EAAOA,IACpBL,EAAQsB,EAAUD,EAAMpB,EAAEI,GAAQA,GAASJ,EAAEI,GAC7CS,EAAeE,EAAQX,EAAOL,QAThC,IAFAmB,GADAD,EAAWK,EAAeC,KAAKvB,IACfkB,KAChBH,EAAS,IAAII,IACLH,EAAOE,EAAKK,KAAKN,IAAWO,KAAMpB,IACxCL,EAAQsB,EAAUV,EAA6BM,EAAUG,EAAO,CAACJ,EAAKjB,MAAOK,IAAQ,GAAQY,EAAKjB,MAClGc,EAAeE,EAAQX,EAAOL,GAWlC,OADAgB,EAAOb,OAASE,EACTW,I,eCvCT,IAAIU,EAAkB,EAAQ,MAC1B3B,EAAW,EAAQ,MACnBD,EAAkB,EAAQ,MAG1B6B,EAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAOC,EAAIC,GAC1B,IAGI/B,EAHAC,EAAIyB,EAAgBG,GACpB1B,EAASJ,EAASE,EAAEE,QACpBE,EAAQP,EAAgBiC,EAAW5B,GAIvC,GAAIyB,GAAeE,GAAMA,GAAI,KAAO3B,EAASE,GAG3C,IAFAL,EAAQC,EAAEI,OAEGL,EAAO,OAAO,OAEtB,KAAMG,EAASE,EAAOA,IAC3B,IAAKuB,GAAevB,KAASJ,IAAMA,EAAEI,KAAWyB,EAAI,OAAOF,GAAevB,GAAS,EACnF,OAAQuB,IAAgB,IAI9BpI,EAAOD,QAAU,CAGf0C,SAAU0F,GAAa,GAGvBzF,QAASyF,GAAa,K,eC9BxB,IAAInF,EAAO,EAAQ,MACfwF,EAAgB,EAAQ,MACxBnC,EAAW,EAAQ,MACnBE,EAAW,EAAQ,MACnBkC,EAAqB,EAAQ,MAE7BC,EAAO,GAAGA,KAGVP,EAAe,SAAUQ,GAC3B,IAAIC,EAAiB,GAARD,EACTE,EAAoB,GAARF,EACZG,EAAkB,GAARH,EACVI,EAAmB,GAARJ,EACXK,EAAwB,GAARL,EAChBM,EAAwB,GAARN,EAChBO,EAAmB,GAARP,GAAaK,EAC5B,OAAO,SAAUX,EAAOlB,EAAYgC,EAAMC,GASxC,IARA,IAOI5C,EAAOgB,EAPPf,EAAIJ,EAASgC,GACbhI,EAAOmI,EAAc/B,GACrB4C,EAAgBrG,EAAKmE,EAAYgC,EAAM,GACvCxC,EAASJ,EAASlG,EAAKsG,QACvBE,EAAQ,EACRyC,EAASF,GAAkBX,EAC3Bc,EAASX,EAASU,EAAOjB,EAAO1B,GAAUkC,GAAaI,EAAgBK,EAAOjB,EAAO,QAAKjI,EAExFuG,EAASE,EAAOA,IAAS,IAAIqC,GAAYrC,KAASxG,KAEtDmH,EAAS6B,EADT7C,EAAQnG,EAAKwG,GACiBA,EAAOJ,GACjCkC,GACF,GAAIC,EAAQW,EAAO1C,GAASW,OACvB,GAAIA,EAAQ,OAAQmB,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAOnC,EACf,KAAK,EAAG,OAAOK,EACf,KAAK,EAAG6B,EAAKV,KAAKuB,EAAQ/C,QACrB,OAAQmC,GACb,KAAK,EAAG,OAAO,EACf,KAAK,EAAGD,EAAKV,KAAKuB,EAAQ/C,GAIhC,OAAOwC,GAAiB,EAAIF,GAAWC,EAAWA,EAAWQ,IAIjEvJ,EAAOD,QAAU,CAGfyC,QAAS2F,EAAa,GAGtBxF,IAAKwF,EAAa,GAGlB/F,OAAQ+F,EAAa,GAGrBpF,KAAMoF,EAAa,GAGnBqB,MAAOrB,EAAa,GAGpB7F,KAAM6F,EAAa,GAGnB9F,UAAW8F,EAAa,GAGxBsB,UAAWtB,EAAa,K,cCtE1B,IAAIuB,EAAQ,EAAQ,MAChBC,EAAkB,EAAQ,MAC1BC,EAAa,EAAQ,MAErBC,EAAUF,EAAgB,WAE9B3J,EAAOD,QAAU,SAAU+J,GAIzB,OAAOF,GAAc,KAAOF,GAAM,WAChC,IAAIK,EAAQ,GAKZ,OAJkBA,EAAMC,YAAc,IAC1BH,GAAW,WACrB,MAAO,CAAEI,IAAK,IAE2B,IAApCF,EAAMD,GAAaI,SAASD,S,4BCfvC,IAAIP,EAAQ,EAAQ,MAEpB1J,EAAOD,QAAU,SAAU+J,EAAaK,GACtC,IAAIC,EAAS,GAAGN,GAChB,QAASM,GAAUV,GAAM,WAEvBU,EAAOpC,KAAK,KAAMmC,GAAY,WAAc,MAAM,GAAM,Q,eCP5D,IAAIE,EAAY,EAAQ,MACpBhE,EAAW,EAAQ,MACnBmC,EAAgB,EAAQ,MACxBjC,EAAW,EAAQ,MAGnB4B,EAAe,SAAUmC,GAC3B,OAAO,SAAUnB,EAAMhC,EAAYP,EAAiB2D,GAClDF,EAAUlD,GACV,IAAIV,EAAIJ,EAAS8C,GACb9I,EAAOmI,EAAc/B,GACrBE,EAASJ,EAASE,EAAEE,QACpBE,EAAQyD,EAAW3D,EAAS,EAAI,EAChC6D,EAAIF,GAAY,EAAI,EACxB,GAAI1D,EAAkB,EAAG,OAAa,CACpC,GAAIC,KAASxG,EAAM,CACjBkK,EAAOlK,EAAKwG,GACZA,GAAS2D,EACT,MAGF,GADA3D,GAAS2D,EACLF,EAAWzD,EAAQ,EAAIF,GAAUE,EACnC,MAAMZ,UAAU,+CAGpB,KAAMqE,EAAWzD,GAAS,EAAIF,EAASE,EAAOA,GAAS2D,EAAO3D,KAASxG,IACrEkK,EAAOpD,EAAWoD,EAAMlK,EAAKwG,GAAQA,EAAOJ,IAE9C,OAAO8D,IAIXvK,EAAOD,QAAU,CAGf0K,KAAMtC,GAAa,GAGnBuC,MAAOvC,GAAa,K,eCtCtB,IAAIjC,EAAW,EAAQ,KACnBnE,EAAU,EAAQ,MAGlB8H,EAFkB,EAAQ,KAEhBF,CAAgB,WAI9B3J,EAAOD,QAAU,SAAU4K,EAAehE,GACxC,IAAIiB,EASF,OARE7F,EAAQ4I,KAGM,mBAFhB/C,EAAI+C,EAAcX,cAEapC,IAAM/F,QAASE,EAAQ6F,EAAEzE,WAC/C+C,EAAS0B,IAEN,QADVA,EAAIA,EAAEiC,MACUjC,OAAIxH,GAH+CwH,OAAIxH,GAKlE,SAAWA,IAANwH,EAAkB/F,MAAQ+F,GAAc,IAAXjB,EAAe,EAAIA,K,eClBhE,IAAIiE,EAAW,EAAQ,MACnBC,EAAgB,EAAQ,MAG5B7K,EAAOD,QAAU,SAAU2H,EAAUoD,EAAItE,EAAOuE,GAC9C,IACE,OAAOA,EAAUD,EAAGF,EAASpE,GAAO,GAAIA,EAAM,IAAMsE,EAAGtE,GACvD,MAAOwE,GAEP,MADAH,EAAcnD,GACRsD,K,eCTV,IAEIC,EAFkB,EAAQ,KAEftB,CAAgB,YAC3BuB,GAAe,EAEnB,IACE,IAAIC,EAAS,EACTC,EAAqB,CACvBzD,KAAM,WACJ,MAAO,CAAEM,OAAQkD,MAEnB,OAAU,WACRD,GAAe,IAGnBE,EAAmBH,GAAY,WAC7B,OAAOvE,MAGT7E,MAAMC,KAAKsJ,GAAoB,WAAc,MAAM,KACnD,MAAOJ,IAEThL,EAAOD,QAAU,SAAUsL,EAAMC,GAC/B,IAAKA,IAAiBJ,EAAc,OAAO,EAC3C,IAAIK,GAAoB,EACxB,IACE,IAAIC,EAAS,GACbA,EAAOP,GAAY,WACjB,MAAO,CACLtD,KAAM,WACJ,MAAO,CAAEM,KAAMsD,GAAoB,MAIzCF,EAAKG,GACL,MAAOR,IACT,OAAOO,I,SCpCT,IAAIE,EAAW,GAAGA,SAElBzL,EAAOD,QAAU,SAAUqD,GACzB,OAAOqI,EAASzD,KAAK5E,GAAIN,MAAM,GAAI,K,eCHrC,IAAI4I,EAAwB,EAAQ,MAChCC,EAAa,EAAQ,MAGrBC,EAFkB,EAAQ,KAEVjC,CAAgB,eAEhCkC,EAAuE,aAAnDF,EAAW,WAAc,OAAOvH,UAArB,IAUnCpE,EAAOD,QAAU2L,EAAwBC,EAAa,SAAUvI,GAC9D,IAAIqD,EAAGqF,EAAKtE,EACZ,YAAcpH,IAAPgD,EAAmB,YAAqB,OAAPA,EAAc,OAEM,iBAAhD0I,EAXD,SAAU1I,EAAI2B,GACzB,IACE,OAAO3B,EAAG2B,GACV,MAAOiG,KAQSe,CAAOtF,EAAIjC,OAAOpB,GAAKwI,IAA8BE,EAEnED,EAAoBF,EAAWlF,GAEH,WAA3Be,EAASmE,EAAWlF,KAAsC,mBAAZA,EAAEuF,OAAuB,YAAcxE,I,4BCvB5F,IAAI1C,EAAiB,UACjBwE,EAAS,EAAQ,MACjB2C,EAAc,EAAQ,MACtBjJ,EAAO,EAAQ,MACfkJ,EAAa,EAAQ,MACrBC,EAAU,EAAQ,MAClBC,EAAiB,EAAQ,MACzBC,EAAa,EAAQ,MACrBC,EAAc,EAAQ,MACtBC,EAAU,gBACVC,EAAsB,EAAQ,MAE9BC,EAAmBD,EAAoBE,IACvCC,EAAyBH,EAAoBI,UAEjD5M,EAAOD,QAAU,CACf8M,eAAgB,SAAUC,EAASC,EAAkBnE,EAAQoE,GAC3D,IAAIpF,EAAIkF,GAAQ,SAAU3D,EAAM8D,GAC9Bf,EAAW/C,EAAMvB,EAAGmF,GACpBN,EAAiBtD,EAAM,CACrB+D,KAAMH,EACNlG,MAAOyC,EAAO,MACd6D,WAAO/M,EACPgN,UAAMhN,EACNiN,KAAM,IAEHf,IAAanD,EAAKkE,KAAO,GACdjN,MAAZ6M,GAAuBd,EAAQc,EAAU9D,EAAK6D,GAAQ,CAAE7D,KAAMA,EAAMmE,WAAY1E,OAGlF2E,EAAmBZ,EAAuBI,GAE1C7M,EAAS,SAAUiJ,EAAMpE,EAAKyB,GAChC,IAEIgH,EAAU3G,EAFV4G,EAAQF,EAAiBpE,GACzBuE,EAAQC,EAASxE,EAAMpE,GAqBzB,OAlBE2I,EACFA,EAAMlH,MAAQA,GAGdiH,EAAML,KAAOM,EAAQ,CACnB7G,MAAOA,EAAQ0F,EAAQxH,GAAK,GAC5BA,IAAKA,EACLyB,MAAOA,EACPgH,SAAUA,EAAWC,EAAML,KAC3BzF,UAAMvH,EACNwN,SAAS,GAENH,EAAMN,QAAOM,EAAMN,MAAQO,GAC5BF,IAAUA,EAAS7F,KAAO+F,GAC1BpB,EAAamB,EAAMJ,OAClBlE,EAAKkE,OAEI,MAAVxG,IAAe4G,EAAM5G,MAAMA,GAAS6G,IACjCvE,GAGPwE,EAAW,SAAUxE,EAAMpE,GAC7B,IAGI2I,EAHAD,EAAQF,EAAiBpE,GAEzBtC,EAAQ0F,EAAQxH,GAEpB,GAAc,MAAV8B,EAAe,OAAO4G,EAAM5G,MAAMA,GAEtC,IAAK6G,EAAQD,EAAMN,MAAOO,EAAOA,EAAQA,EAAM/F,KAC7C,GAAI+F,EAAM3I,KAAOA,EAAK,OAAO2I,GAwFjC,OApFAzB,EAAYrE,EAAEzE,UAAW,CAIvB0K,MAAO,WAKL,IAJA,IACIJ,EAAQF,EADD7G,MAEPoH,EAAOL,EAAM5G,MACb6G,EAAQD,EAAMN,MACXO,GACLA,EAAME,SAAU,EACZF,EAAMF,WAAUE,EAAMF,SAAWE,EAAMF,SAAS7F,UAAOvH,UACpD0N,EAAKJ,EAAM7G,OAClB6G,EAAQA,EAAM/F,KAEhB8F,EAAMN,MAAQM,EAAML,UAAOhN,EACvBkM,EAAamB,EAAMJ,KAAO,EAXnB3G,KAYD2G,KAAO,GAKnB,OAAU,SAAUtI,GAClB,IAAIoE,EAAOzC,KACP+G,EAAQF,EAAiBpE,GACzBuE,EAAQC,EAASxE,EAAMpE,GAC3B,GAAI2I,EAAO,CACT,IAAI/F,EAAO+F,EAAM/F,KACboG,EAAOL,EAAMF,gBACVC,EAAM5G,MAAM6G,EAAM7G,OACzB6G,EAAME,SAAU,EACZG,IAAMA,EAAKpG,KAAOA,GAClBA,IAAMA,EAAK6F,SAAWO,GACtBN,EAAMN,OAASO,IAAOD,EAAMN,MAAQxF,GACpC8F,EAAML,MAAQM,IAAOD,EAAML,KAAOW,GAClCzB,EAAamB,EAAMJ,OAClBlE,EAAKkE,OACV,QAASK,GAKblL,QAAS,SAAiB2E,GAIxB,IAHA,IAEIuG,EAFAD,EAAQF,EAAiB7G,MACzB2C,EAAgBrG,EAAKmE,EAAY/C,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,EAAW,GAE/EsN,EAAQA,EAAQA,EAAM/F,KAAO8F,EAAMN,OAGxC,IAFA9D,EAAcqE,EAAMlH,MAAOkH,EAAM3I,IAAK2B,MAE/BgH,GAASA,EAAME,SAASF,EAAQA,EAAMF,UAMjDQ,IAAK,SAAajJ,GAChB,QAAS4I,EAASjH,KAAM3B,MAI5BkH,EAAYrE,EAAEzE,UAAWyF,EAAS,CAGhCqF,IAAK,SAAalJ,GAChB,IAAI2I,EAAQC,EAASjH,KAAM3B,GAC3B,OAAO2I,GAASA,EAAMlH,OAIxBkG,IAAK,SAAa3H,EAAKyB,GACrB,OAAOtG,EAAOwG,KAAc,IAAR3B,EAAY,EAAIA,EAAKyB,KAEzC,CAGF0H,IAAK,SAAa1H,GAChB,OAAOtG,EAAOwG,KAAMF,EAAkB,IAAVA,EAAc,EAAIA,EAAOA,MAGrD8F,GAAaxH,EAAe8C,EAAEzE,UAAW,OAAQ,CACnD8K,IAAK,WACH,OAAOV,EAAiB7G,MAAM2G,QAG3BzF,GAETuG,UAAW,SAAUvG,EAAGmF,EAAkBnE,GACxC,IAAIwF,EAAgBrB,EAAmB,YACnCsB,EAA6B1B,EAAuBI,GACpDuB,EAA2B3B,EAAuByB,GAUtDhC,EAAexE,EAAGmF,GAAkB,SAAUwB,EAAUC,GACtD/B,EAAiB/F,KAAM,CACrBwG,KAAMkB,EACN7E,OAAQgF,EACRd,MAAOY,EAA2BE,GAClCC,KAAMA,EACNpB,UAAMhN,OAEP,WAKD,IAJA,IAAIqN,EAAQa,EAAyB5H,MACjC8H,EAAOf,EAAMe,KACbd,EAAQD,EAAML,KAEXM,GAASA,EAAME,SAASF,EAAQA,EAAMF,SAE7C,OAAKC,EAAMlE,SAAYkE,EAAML,KAAOM,EAAQA,EAAQA,EAAM/F,KAAO8F,EAAMA,MAAMN,OAMjE,QAARqB,EAAuB,CAAEhI,MAAOkH,EAAM3I,IAAKkD,MAAM,GACzC,UAARuG,EAAyB,CAAEhI,MAAOkH,EAAMlH,MAAOyB,MAAM,GAClD,CAAEzB,MAAO,CAACkH,EAAM3I,IAAK2I,EAAMlH,OAAQyB,MAAM,IAN9CwF,EAAMlE,YAASnJ,EACR,CAAEoG,WAAOpG,EAAW6H,MAAM,MAMlCW,EAAS,UAAY,UAAWA,GAAQ,GAK3CyD,EAAWU,M,4BCtMf,IAAId,EAAc,EAAQ,MACtBwC,EAAc,oBACd7D,EAAW,EAAQ,MACnB1E,EAAW,EAAQ,KACnBgG,EAAa,EAAQ,MACrBC,EAAU,EAAQ,MAClBuC,EAAuB,EAAQ,MAC/BC,EAAO,EAAQ,MACfnC,EAAsB,EAAQ,MAE9BC,EAAmBD,EAAoBE,IACvCC,EAAyBH,EAAoBI,UAC7CtK,EAAOoM,EAAqBpM,KAC5BD,EAAYqM,EAAqBrM,UACjCuM,EAAK,EAGLC,EAAsB,SAAUC,GAClC,OAAOA,EAAMC,SAAWD,EAAMC,OAAS,IAAIC,IAGzCA,EAAsB,WACxBtI,KAAKxE,QAAU,IAGb+M,EAAqB,SAAUH,EAAO/J,GACxC,OAAOzC,EAAKwM,EAAM5M,SAAS,SAAUkB,GACnC,OAAOA,EAAG,KAAO2B,MAIrBiK,EAAoB7L,UAAY,CAC9B8K,IAAK,SAAUlJ,GACb,IAAI2I,EAAQuB,EAAmBvI,KAAM3B,GACrC,GAAI2I,EAAO,OAAOA,EAAM,IAE1BM,IAAK,SAAUjJ,GACb,QAASkK,EAAmBvI,KAAM3B,IAEpC2H,IAAK,SAAU3H,EAAKyB,GAClB,IAAIkH,EAAQuB,EAAmBvI,KAAM3B,GACjC2I,EAAOA,EAAM,GAAKlH,EACjBE,KAAKxE,QAAQwG,KAAK,CAAC3D,EAAKyB,KAE/B,OAAU,SAAUzB,GAClB,IAAI8B,EAAQxE,EAAUqE,KAAKxE,SAAS,SAAUkB,GAC5C,OAAOA,EAAG,KAAO2B,KAGnB,OADK8B,GAAOH,KAAKxE,QAAQgN,OAAOrI,EAAO,MAC7BA,IAId7G,EAAOD,QAAU,CACf8M,eAAgB,SAAUC,EAASC,EAAkBnE,EAAQoE,GAC3D,IAAIpF,EAAIkF,GAAQ,SAAU3D,EAAM8D,GAC9Bf,EAAW/C,EAAMvB,EAAGmF,GACpBN,EAAiBtD,EAAM,CACrB+D,KAAMH,EACN6B,GAAIA,IACJG,YAAQ3O,IAEMA,MAAZ6M,GAAuBd,EAAQc,EAAU9D,EAAK6D,GAAQ,CAAE7D,KAAMA,EAAMmE,WAAY1E,OAGlF2E,EAAmBZ,EAAuBI,GAE1C7M,EAAS,SAAUiJ,EAAMpE,EAAKyB,GAChC,IAAIiH,EAAQF,EAAiBpE,GACzB2E,EAAOW,EAAY7D,EAAS7F,IAAM,GAGtC,OAFa,IAAT+I,EAAee,EAAoBpB,GAAOf,IAAI3H,EAAKyB,GAClDsH,EAAKL,EAAMmB,IAAMpI,EACf2C,GAkDT,OA/CA8C,EAAYrE,EAAEzE,UAAW,CAIvB,OAAU,SAAU4B,GAClB,IAAI0I,EAAQF,EAAiB7G,MAC7B,IAAKR,EAASnB,GAAM,OAAO,EAC3B,IAAI+I,EAAOW,EAAY1J,GACvB,OAAa,IAAT+I,EAAsBe,EAAoBpB,GAAe,OAAE1I,GACxD+I,GAAQa,EAAKb,EAAML,EAAMmB,YAAcd,EAAKL,EAAMmB,KAK3DZ,IAAK,SAAajJ,GAChB,IAAI0I,EAAQF,EAAiB7G,MAC7B,IAAKR,EAASnB,GAAM,OAAO,EAC3B,IAAI+I,EAAOW,EAAY1J,GACvB,OAAa,IAAT+I,EAAsBe,EAAoBpB,GAAOO,IAAIjJ,GAClD+I,GAAQa,EAAKb,EAAML,EAAMmB,OAIpC3C,EAAYrE,EAAEzE,UAAWyF,EAAS,CAGhCqF,IAAK,SAAalJ,GAChB,IAAI0I,EAAQF,EAAiB7G,MAC7B,GAAIR,EAASnB,GAAM,CACjB,IAAI+I,EAAOW,EAAY1J,GACvB,OAAa,IAAT+I,EAAsBe,EAAoBpB,GAAOQ,IAAIlJ,GAClD+I,EAAOA,EAAKL,EAAMmB,SAAMxO,IAKnCsM,IAAK,SAAa3H,EAAKyB,GACrB,OAAOtG,EAAOwG,KAAM3B,EAAKyB,KAEzB,CAGF0H,IAAK,SAAa1H,GAChB,OAAOtG,EAAOwG,KAAMF,GAAO,MAIxBoB,K,4BC1HX,IAAIuH,EAAI,EAAQ,MACZC,EAAS,EAAQ,MACjBC,EAAyB,EAAQ,MACjC3F,EAAQ,EAAQ,MAChB4F,EAA8B,EAAQ,MACtCnD,EAAU,EAAQ,MAClBD,EAAa,EAAQ,MACrBhG,EAAW,EAAQ,KACnBqJ,EAAiB,EAAQ,KACzBzK,EAAiB,UACjBtC,EAAU,gBACV8J,EAAc,EAAQ,MACtBE,EAAsB,EAAQ,MAE9BC,EAAmBD,EAAoBE,IACvCC,EAAyBH,EAAoBI,UAEjD5M,EAAOD,QAAU,SAAUgN,EAAkBD,EAAS0C,GACpD,IAMIrJ,EANAyC,GAA8C,IAArCmE,EAAiBrK,QAAQ,OAClC+M,GAAgD,IAAtC1C,EAAiBrK,QAAQ,QACnCsK,EAAQpE,EAAS,MAAQ,MACzB8G,EAAoBN,EAAOrC,GAC3B4C,EAAkBD,GAAqBA,EAAkBvM,UACzDyM,EAAW,GAGf,GAAKtD,GAA2C,mBAArBoD,IACpBD,GAAWE,EAAgBnN,UAAYkH,GAAM,YAAc,IAAIgG,GAAoBxN,UAAUyF,WAK7F,CACLxB,EAAc2G,GAAQ,SAAUvD,EAAQ0D,GACtCR,EAAiBP,EAAW3C,EAAQpD,EAAa4G,GAAmB,CAClEG,KAAMH,EACN8C,WAAY,IAAIH,IAEFtP,MAAZ6M,GAAuBd,EAAQc,EAAU1D,EAAOyD,GAAQ,CAAE7D,KAAMI,EAAQ+D,WAAY1E,OAG1F,IAAI2E,EAAmBZ,EAAuBI,GAE9CvK,EAAQ,CAAC,MAAO,QAAS,SAAU,UAAW,MAAO,MAAO,MAAO,OAAQ,SAAU,YAAY,SAAUsN,GACzG,IAAIC,EAAkB,OAAPD,GAAuB,OAAPA,IAC3BA,KAAOH,IAAqBF,GAAkB,SAAPK,GACzCR,EAA4BnJ,EAAYhD,UAAW2M,GAAK,SAAUE,EAAGC,GACnE,IAAIJ,EAAatC,EAAiB7G,MAAMmJ,WACxC,IAAKE,GAAYN,IAAYvJ,EAAS8J,GAAI,MAAc,OAAPF,QAAe1P,EAChE,IAAIoH,EAASqI,EAAWC,GAAW,IAANE,EAAU,EAAIA,EAAGC,GAC9C,OAAOF,EAAWrJ,KAAOc,QAK/BiI,GAAW3K,EAAeqB,EAAYhD,UAAW,OAAQ,CACvD+M,cAAc,EACdjC,IAAK,WACH,OAAOV,EAAiB7G,MAAMmJ,WAAWxC,aA5B7ClH,EAAcqJ,EAAO3C,eAAeC,EAASC,EAAkBnE,EAAQoE,GACvEqC,EAAuBc,UAAW,EAuCpC,OAPAZ,EAAepJ,EAAa4G,GAAkB,GAAO,GAErD6C,EAAS7C,GAAoB5G,EAC7BgJ,EAAE,CAAEC,QAAQ,EAAMgB,QAAQ,GAAQR,GAE7BH,GAASD,EAAOrB,UAAUhI,EAAa4G,EAAkBnE,GAEvDzC,I,eCvET,IAEIkK,EAFkB,EAAQ,KAElB1G,CAAgB,SAE5B3J,EAAOD,QAAU,SAAU+J,GACzB,IAAIwG,EAAS,IACb,IACE,MAAMxG,GAAawG,GACnB,MAAOC,GACP,IAEE,OADAD,EAAOD,IAAS,EACT,MAAMvG,GAAawG,GAC1B,MAAOE,KACT,OAAO,I,eCbX,IAAI9G,EAAQ,EAAQ,MAEpB1J,EAAOD,SAAW2J,GAAM,WACtB,SAAS+G,KAGT,OAFAA,EAAEtN,UAAU6G,YAAc,KAEnBxF,OAAOkM,eAAe,IAAID,KAASA,EAAEtN,c,4BCL9C,IAAIwN,EAAoB,0BACpBrH,EAAS,EAAQ,MACjBsH,EAA2B,EAAQ,MACnCrB,EAAiB,EAAQ,KACzBsB,EAAY,EAAQ,MAEpBC,EAAa,WAAc,OAAOpK,MAEtC1G,EAAOD,QAAU,SAAUgR,EAAqBC,EAAMrJ,GACpD,IAAIiE,EAAgBoF,EAAO,YAI3B,OAHAD,EAAoB5N,UAAYmG,EAAOqH,EAAmB,CAAEhJ,KAAMiJ,EAAyB,EAAGjJ,KAC9F4H,EAAewB,EAAqBnF,GAAe,GAAO,GAC1DiF,EAAUjF,GAAiBkF,EACpBC,I,eCdT,IAAIzE,EAAc,EAAQ,MACtB2E,EAAuB,EAAQ,MAC/BL,EAA2B,EAAQ,MAEvC5Q,EAAOD,QAAUuM,EAAc,SAAUd,EAAQzG,EAAKyB,GACpD,OAAOyK,EAAqBpL,EAAE2F,EAAQzG,EAAK6L,EAAyB,EAAGpK,KACrE,SAAUgF,EAAQzG,EAAKyB,GAEzB,OADAgF,EAAOzG,GAAOyB,EACPgF,I,SCRTxL,EAAOD,QAAU,SAAUmR,EAAQ1K,GACjC,MAAO,CACL2K,aAAuB,EAATD,GACdhB,eAAyB,EAATgB,GAChBE,WAAqB,EAATF,GACZ1K,MAAOA,K,4BCJX,IAAI6K,EAAc,EAAQ,MACtBJ,EAAuB,EAAQ,MAC/BL,EAA2B,EAAQ,MAEvC5Q,EAAOD,QAAU,SAAUyL,EAAQzG,EAAKyB,GACtC,IAAI8K,EAAcD,EAAYtM,GAC1BuM,KAAe9F,EAAQyF,EAAqBpL,EAAE2F,EAAQ8F,EAAaV,EAAyB,EAAGpK,IAC9FgF,EAAO8F,GAAe9K,I,4BCP7B,IAAI2I,EAAI,EAAQ,MACZoC,EAA4B,EAAQ,MACpCb,EAAiB,EAAQ,KACzBc,EAAiB,EAAQ,MACzBjC,EAAiB,EAAQ,KACzBD,EAA8B,EAAQ,MACtCmC,EAAW,EAAQ,MACnB9H,EAAkB,EAAQ,MAC1B+H,EAAU,EAAQ,MAClBb,EAAY,EAAQ,MACpBc,EAAgB,EAAQ,MAExBhB,EAAoBgB,EAAchB,kBAClCiB,EAAyBD,EAAcC,uBACvC3G,EAAWtB,EAAgB,YAC3BkI,EAAO,OACPC,EAAS,SACT/G,EAAU,UAEV+F,EAAa,WAAc,OAAOpK,MAEtC1G,EAAOD,QAAU,SAAUgS,EAAUf,EAAMD,EAAqBpJ,EAAMqK,EAASC,EAAQC,GACrFX,EAA0BR,EAAqBC,EAAMrJ,GAErD,IAkBIwK,EAA0BC,EAAStC,EAlBnCuC,EAAqB,SAAUC,GACjC,GAAIA,IAASN,GAAWO,EAAiB,OAAOA,EAChD,IAAKX,GAA0BU,KAAQE,EAAmB,OAAOA,EAAkBF,GACnF,OAAQA,GACN,KAAKT,EACL,KAAKC,EACL,KAAK/G,EAAS,OAAO,WAAqB,OAAO,IAAIgG,EAAoBrK,KAAM4L,IAC/E,OAAO,WAAc,OAAO,IAAIvB,EAAoBrK,QAGpDkF,EAAgBoF,EAAO,YACvByB,GAAwB,EACxBD,EAAoBT,EAAS5O,UAC7BuP,EAAiBF,EAAkBvH,IAClCuH,EAAkB,eAClBR,GAAWQ,EAAkBR,GAC9BO,GAAmBX,GAA0Bc,GAAkBL,EAAmBL,GAClFW,EAA4B,SAAR3B,GAAkBwB,EAAkBtQ,SAA4BwQ,EAiCxF,GA7BIC,IACFR,EAA2BzB,EAAeiC,EAAkB3K,KAAK,IAAI+J,IACjEpB,IAAsBnM,OAAOrB,WAAagP,EAAyBxK,OAChE+J,GAAWhB,EAAeyB,KAA8BxB,IACvDa,EACFA,EAAeW,EAA0BxB,GACa,mBAAtCwB,EAAyBlH,IACzCqE,EAA4B6C,EAA0BlH,EAAU6F,IAIpEvB,EAAe4C,EAA0BvG,GAAe,GAAM,GAC1D8F,IAASb,EAAUjF,GAAiBkF,KAKxCkB,GAAWF,GAAUY,GAAkBA,EAAetM,OAAS0L,IACjEW,GAAwB,EACxBF,EAAkB,WAAoB,OAAOG,EAAe1K,KAAKtB,QAI7DgL,IAAWQ,GAAWM,EAAkBvH,KAAcsH,GAC1DjD,EAA4BkD,EAAmBvH,EAAUsH,GAE3D1B,EAAUG,GAAQuB,EAGdP,EAMF,GALAI,EAAU,CACR7M,OAAQ8M,EAAmBP,GAC3BxM,KAAM2M,EAASM,EAAkBF,EAAmBR,GACpD3P,QAASmQ,EAAmBtH,IAE1BmH,EAAQ,IAAKpC,KAAOsC,GAClBR,GAA0Ba,KAA2B3C,KAAO0C,KAC9Df,EAASe,EAAmB1C,EAAKsC,EAAQtC,SAEtCX,EAAE,CAAE5F,OAAQyH,EAAM4B,OAAO,EAAMxC,OAAQwB,GAA0Ba,GAAyBL,GAGnG,OAAOA,I,eCxFT,IAAIxQ,EAAO,EAAQ,MACfoM,EAAM,EAAQ,MACd6E,EAA+B,EAAQ,MACvC/N,EAAiB,UAErB9E,EAAOD,QAAU,SAAUiR,GACzB,IAAIrL,EAAS/D,EAAK+D,SAAW/D,EAAK+D,OAAS,IACtCqI,EAAIrI,EAAQqL,IAAOlM,EAAea,EAAQqL,EAAM,CACnDxK,MAAOqM,EAA6BhN,EAAEmL,O,eCR1C,IAAItH,EAAQ,EAAQ,MAGpB1J,EAAOD,SAAW2J,GAAM,WAEtB,OAA8E,GAAvElF,OAAOM,eAAe,GAAI,EAAG,CAAEmJ,IAAK,WAAc,OAAO,KAAQ,O,eCL1E,IAAImB,EAAS,EAAQ,MACjBlJ,EAAW,EAAQ,KAEnB4M,EAAW1D,EAAO0D,SAElBC,EAAS7M,EAAS4M,IAAa5M,EAAS4M,EAASE,eAErDhT,EAAOD,QAAU,SAAUqD,GACzB,OAAO2P,EAASD,EAASE,cAAc5P,GAAM,K,SCN/CpD,EAAOD,QAAU,CACfkT,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,I,SCjCb/U,EAAOD,QAA2B,iBAAViV,Q,eCAxB,IAAIC,EAAY,EAAQ,MAExBjV,EAAOD,QAAU,qCAAqCmV,KAAKD,I,eCF3D,IAAIE,EAAU,EAAQ,MAClB/F,EAAS,EAAQ,MAErBpP,EAAOD,QAAqC,WAA3BoV,EAAQ/F,EAAOgG,U,eCHhC,IAAIH,EAAY,EAAQ,MAExBjV,EAAOD,QAAU,qBAAqBmV,KAAKD,I,eCF3C,IAAII,EAAa,EAAQ,KAEzBrV,EAAOD,QAAUsV,EAAW,YAAa,cAAgB,I,eCFzD,IAMIC,EAAOC,EANPnG,EAAS,EAAQ,MACjB6F,EAAY,EAAQ,MAEpBG,EAAUhG,EAAOgG,QACjBI,EAAWJ,GAAWA,EAAQI,SAC9BC,EAAKD,GAAYA,EAASC,GAG1BA,EAEFF,GADAD,EAAQG,EAAGC,MAAM,MACD,GAAK,EAAI,EAAIJ,EAAM,GAAKA,EAAM,GACrCL,MACTK,EAAQL,EAAUK,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQL,EAAUK,MAAM,oBACbC,EAAUD,EAAM,IAI/BtV,EAAOD,QAAUwV,IAAYA,G,eCnB7B,IAAI3T,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU,SAAU4V,GACzB,OAAO/T,EAAK+T,EAAc,e,SCF5B3V,EAAOD,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,Y,4BCPF,IAAIqP,EAAS,EAAQ,MACjBjK,EAA2B,UAC3ByQ,EAAW,EAAQ,MACnBhU,EAAO,EAAQ,MACfoB,EAAO,EAAQ,MACfsM,EAA8B,EAAQ,MACtCtB,EAAM,EAAQ,MAEd6H,EAAkB,SAAUnG,GAC9B,IAAIoG,EAAU,SAAU9F,EAAGC,EAAG8F,GAC5B,GAAIrP,gBAAgBgJ,EAAmB,CACrC,OAAQtL,UAAUuC,QAChB,KAAK,EAAG,OAAO,IAAI+I,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAkBM,GACrC,KAAK,EAAG,OAAO,IAAIN,EAAkBM,EAAGC,GACxC,OAAO,IAAIP,EAAkBM,EAAGC,EAAG8F,GACrC,OAAOrG,EAAkBvL,MAAMuC,KAAMtC,YAGzC,OADA0R,EAAQ3S,UAAYuM,EAAkBvM,UAC/B2S,GAiBT9V,EAAOD,QAAU,SAAUiW,EAASC,GAClC,IAUYC,EAAYC,EACpBpR,EAAKqR,EAAgBC,EAAgBC,EAAgBC,EAAgBC,EAXrEC,EAAST,EAAQzM,OACjBmN,EAASV,EAAQ5G,OACjBuH,EAASX,EAAQY,KACjBC,EAAQb,EAAQpD,MAEhBkE,EAAeJ,EAAStH,EAASuH,EAASvH,EAAOqH,IAAWrH,EAAOqH,IAAW,IAAItT,UAElFoG,EAASmN,EAAS9U,EAAOA,EAAK6U,KAAY7U,EAAK6U,GAAU,IACzDM,EAAkBxN,EAAOpG,UAK7B,IAAK4B,KAAOkR,EAGVC,GAFSN,EAASc,EAAS3R,EAAM0R,GAAUE,EAAS,IAAM,KAAO5R,EAAKiR,EAAQ5F,SAEtD0G,GAAgB9I,EAAI8I,EAAc/R,GAE1DsR,EAAiB9M,EAAOxE,GAEpBmR,IAEFI,EAFkBN,EAAQgB,aAC1BR,EAAarR,EAAyB2R,EAAc/R,KACrByR,EAAWhQ,MACpBsQ,EAAa/R,IAGrCqR,EAAkBF,GAAcI,EAAkBA,EAAiBL,EAAOlR,GAEtEmR,UAAqBG,UAA0BD,IAGnBG,EAA5BP,EAAQhT,MAAQkT,EAA6BlT,EAAKoT,EAAgBhH,GAE7D4G,EAAQiB,MAAQf,EAA6BL,EAAgBO,GAE7DS,GAAkC,mBAAlBT,EAA+CpT,EAAKE,SAAS8E,KAAMoO,GAEtEA,GAGlBJ,EAAQnR,MAASuR,GAAkBA,EAAevR,MAAUwR,GAAkBA,EAAexR,OAC/FyK,EAA4BiH,EAAgB,QAAQ,GAGtDhN,EAAOxE,GAAOwR,EAEVM,IAEG7I,EAAIpM,EADTuU,EAAoBM,EAAS,cAE3BnH,EAA4B1N,EAAMuU,EAAmB,IAGvDvU,EAAKuU,GAAmBpR,GAAOqR,EAE3BJ,EAAQkB,MAAQH,IAAoBA,EAAgBhS,IACtDuK,EAA4ByH,EAAiBhS,EAAKqR,O,SC7F1DpW,EAAOD,QAAU,SAAUsL,GACzB,IACE,QAASA,IACT,MAAOL,GACP,OAAO,K,4BCHX,IAAIjJ,EAAU,EAAQ,MAClBwE,EAAW,EAAQ,MACnBvD,EAAO,EAAQ,MAIfmU,EAAmB,SAAU5N,EAAQ6N,EAAUnB,EAAQoB,EAAWC,EAAOC,EAAOC,EAAQC,GAM1F,IALA,IAGIC,EAHAC,EAAcL,EACdM,EAAc,EACdC,IAAQL,GAASxU,EAAKwU,EAAQC,EAAS,GAGpCG,EAAcP,GAAW,CAC9B,GAAIO,KAAe3B,EAAQ,CAGzB,GAFAyB,EAAUG,EAAQA,EAAM5B,EAAO2B,GAAcA,EAAaR,GAAYnB,EAAO2B,GAEzEL,EAAQ,GAAKxV,EAAQ2V,GACvBC,EAAcR,EAAiB5N,EAAQ6N,EAAUM,EAASnR,EAASmR,EAAQ/Q,QAASgR,EAAaJ,EAAQ,GAAK,MACzG,CACL,GAAII,GAAe,iBAAkB,MAAM1R,UAAU,sCACrDsD,EAAOoO,GAAeD,EAGxBC,IAEFC,IAEF,OAAOD,GAGT3X,EAAOD,QAAUoX,G,eC/BjB,IAAIzN,EAAQ,EAAQ,MAEpB1J,EAAOD,SAAW2J,GAAM,WAEtB,OAAOlF,OAAOsT,aAAatT,OAAOuT,kBAAkB,S,eCJtD,IAAI1N,EAAY,EAAQ,MAGxBrK,EAAOD,QAAU,SAAU+K,EAAI3B,EAAMxC,GAEnC,GADA0D,EAAUS,QACG1K,IAAT+I,EAAoB,OAAO2B,EAC/B,OAAQnE,GACN,KAAK,EAAG,OAAO,WACb,OAAOmE,EAAG9C,KAAKmB,IAEjB,KAAK,EAAG,OAAO,SAAU6G,GACvB,OAAOlF,EAAG9C,KAAKmB,EAAM6G,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAGC,GAC1B,OAAOnF,EAAG9C,KAAKmB,EAAM6G,EAAGC,IAE1B,KAAK,EAAG,OAAO,SAAUD,EAAGC,EAAG8F,GAC7B,OAAOjL,EAAG9C,KAAKmB,EAAM6G,EAAGC,EAAG8F,IAG/B,OAAO,WACL,OAAOjL,EAAG3G,MAAMgF,EAAM/E,c,4BCpB1B,IAAIiG,EAAY,EAAQ,MACpBnE,EAAW,EAAQ,KAEnBpD,EAAQ,GAAGA,MACXkV,EAAY,GAEZC,EAAY,SAAUrQ,EAAGsQ,EAAYC,GACvC,KAAMD,KAAcF,GAAY,CAC9B,IAAK,IAAII,EAAO,GAAI5N,EAAI,EAAGA,EAAI0N,EAAY1N,IAAK4N,EAAK5N,GAAK,KAAOA,EAAI,IAErEwN,EAAUE,GAAchV,SAAS,MAAO,gBAAkBkV,EAAKC,KAAK,KAAO,KAC3E,OAAOL,EAAUE,GAAYtQ,EAAGuQ,IAKpCnY,EAAOD,QAAUmD,SAASF,MAAQ,SAAcmG,GAC9C,IAAI2B,EAAKT,EAAU3D,MACf4R,EAAWxV,EAAMkF,KAAK5D,UAAW,GACjCiF,EAAgB,WAClB,IAAI8O,EAAOG,EAASrW,OAAOa,EAAMkF,KAAK5D,YACtC,OAAOsC,gBAAgB2C,EAAgB4O,EAAUnN,EAAIqN,EAAKxR,OAAQwR,GAAQrN,EAAG3G,MAAMgF,EAAMgP,IAG3F,OADIjS,EAAS4E,EAAG3H,aAAYkG,EAAclG,UAAY2H,EAAG3H,WAClDkG,I,cCzBT,IAAIzH,EAAO,EAAQ,MACfwN,EAAS,EAAQ,MAEjB/E,EAAY,SAAUkO,GACxB,MAA0B,mBAAZA,EAAyBA,OAAWnY,GAGpDJ,EAAOD,QAAU,SAAUyY,EAAWpO,GACpC,OAAOhG,UAAUuC,OAAS,EAAI0D,EAAUzI,EAAK4W,KAAenO,EAAU+E,EAAOoJ,IACzE5W,EAAK4W,IAAc5W,EAAK4W,GAAWpO,IAAWgF,EAAOoJ,IAAcpJ,EAAOoJ,GAAWpO,K,eCT3F,IAAI+K,EAAU,EAAQ,MAClBtE,EAAY,EAAQ,MAGpB5F,EAFkB,EAAQ,KAEftB,CAAgB,YAE/B3J,EAAOD,QAAU,SAAUqD,GACzB,GAAUhD,MAANgD,EAAiB,OAAOA,EAAG6H,IAC1B7H,EAAG,eACHyN,EAAUsE,EAAQ/R,M,cCTzB,IAAIwH,EAAW,EAAQ,MACnB5E,EAAoB,EAAQ,MAEhChG,EAAOD,QAAU,SAAUqD,GACzB,IAAI2E,EAAiB/B,EAAkB5C,GACvC,GAA6B,mBAAlB2E,EACT,MAAM9B,UAAUxC,OAAOL,GAAM,oBAC7B,OAAOwH,EAAS7C,EAAeC,KAAK5E,M,eCPxC,IAAIqV,EAAQ,SAAUrV,GACpB,OAAOA,GAAMA,EAAGsV,MAAQA,MAAQtV,GAIlCpD,EAAOD,QAEL0Y,EAA2B,iBAAdE,YAA0BA,aACvCF,EAAuB,iBAAVzD,QAAsBA,SAEnCyD,EAAqB,iBAARpY,MAAoBA,OACjCoY,EAAuB,iBAAV,EAAAG,GAAsB,EAAAA,IAEnC,WAAe,OAAOlS,KAAtB,IAAoCxD,SAAS,cAATA,I,eCbtC,IAAImD,EAAW,EAAQ,MAEnBwS,EAAiB,GAAGA,eAExB7Y,EAAOD,QAAUyE,OAAOsU,QAAU,SAAgB1V,EAAI2B,GACpD,OAAO8T,EAAe7Q,KAAK3B,EAASjD,GAAK2B,K,SCL3C/E,EAAOD,QAAU,I,eCAjB,IAAIqP,EAAS,EAAQ,MAErBpP,EAAOD,QAAU,SAAUiQ,EAAGC,GAC5B,IAAI8I,EAAU3J,EAAO2J,QACjBA,GAAWA,EAAQ/N,QACA,IAArB5G,UAAUuC,OAAeoS,EAAQ/N,MAAMgF,GAAK+I,EAAQ/N,MAAMgF,EAAGC,M,eCLjE,IAAIoF,EAAa,EAAQ,KAEzBrV,EAAOD,QAAUsV,EAAW,WAAY,oB,eCFxC,IAAI/I,EAAc,EAAQ,MACtB5C,EAAQ,EAAQ,MAChBsJ,EAAgB,EAAQ,MAG5BhT,EAAOD,SAAWuM,IAAgB5C,GAAM,WAEtC,OAEQ,GAFDlF,OAAOM,eAAekO,EAAc,OAAQ,IAAK,CACtD/E,IAAK,WAAc,OAAO,KACzB+B,M,eCTL,IAAItG,EAAQ,EAAQ,MAChByL,EAAU,EAAQ,MAElBO,EAAQ,GAAGA,MAGf1V,EAAOD,QAAU2J,GAAM,WAGrB,OAAQlF,OAAO,KAAKwU,qBAAqB,MACtC,SAAU5V,GACb,MAAsB,UAAf+R,EAAQ/R,GAAkBsS,EAAM1N,KAAK5E,EAAI,IAAMoB,OAAOpB,IAC3DoB,Q,eCZJ,IAAIsK,EAAQ,EAAQ,MAEhBmK,EAAmB/V,SAASuI,SAGE,mBAAvBqD,EAAMoK,gBACfpK,EAAMoK,cAAgB,SAAU9V,GAC9B,OAAO6V,EAAiBjR,KAAK5E,KAIjCpD,EAAOD,QAAU+O,EAAMoK,e,eCXvB,IAAIC,EAAa,EAAQ,MACrBjT,EAAW,EAAQ,KACnB8H,EAAM,EAAQ,MACdlJ,EAAiB,UACjBsU,EAAM,EAAQ,MACdC,EAAW,EAAQ,MAEnBC,EAAWF,EAAI,QACfxK,EAAK,EAGLkJ,EAAetT,OAAOsT,cAAgB,WACxC,OAAO,GAGLyB,EAAc,SAAUnW,GAC1B0B,EAAe1B,EAAIkW,EAAU,CAAE9S,MAAO,CACpCgT,SAAU,OAAQ5K,EAClB6K,SAAU,OAoCVC,EAAO1Z,EAAOD,QAAU,CAC1BoQ,UAAU,EACV5D,QAlCY,SAAUnJ,EAAIkG,GAE1B,IAAKpD,EAAS9C,GAAK,MAAoB,iBAANA,EAAiBA,GAAmB,iBAANA,EAAiB,IAAM,KAAOA,EAC7F,IAAK4K,EAAI5K,EAAIkW,GAAW,CAEtB,IAAKxB,EAAa1U,GAAK,MAAO,IAE9B,IAAKkG,EAAQ,MAAO,IAEpBiQ,EAAYnW,GAEZ,OAAOA,EAAGkW,GAAUE,UAwBtB/K,YArBgB,SAAUrL,EAAIkG,GAC9B,IAAK0E,EAAI5K,EAAIkW,GAAW,CAEtB,IAAKxB,EAAa1U,GAAK,OAAO,EAE9B,IAAKkG,EAAQ,OAAO,EAEpBiQ,EAAYnW,GAEZ,OAAOA,EAAGkW,GAAUG,UAatBE,SATa,SAAUvW,GAEvB,OADIiW,GAAYK,EAAKvJ,UAAY2H,EAAa1U,KAAQ4K,EAAI5K,EAAIkW,IAAWC,EAAYnW,GAC9EA,IAUT+V,EAAWG,IAAY,G,eC7DvB,IAWI5M,EAAKuB,EAAKD,EAXV4L,EAAkB,EAAQ,MAC1BxK,EAAS,EAAQ,MACjBlJ,EAAW,EAAQ,KACnBoJ,EAA8B,EAAQ,MACtCuK,EAAY,EAAQ,MACpBC,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBZ,EAAa,EAAQ,MAErBa,EAA6B,6BAC7BlU,EAAUsJ,EAAOtJ,QAgBrB,GAAI8T,GAAmBE,EAAOrM,MAAO,CACnC,IAAIqB,EAAQgL,EAAOrM,QAAUqM,EAAOrM,MAAQ,IAAI3H,GAC5CmU,EAAQnL,EAAMb,IACdiM,EAAQpL,EAAMd,IACdmM,EAAQrL,EAAMpC,IAClBA,EAAM,SAAUtJ,EAAIgX,GAClB,GAAIF,EAAMlS,KAAK8G,EAAO1L,GAAK,MAAM,IAAI6C,UAAU+T,GAG/C,OAFAI,EAASC,OAASjX,EAClB+W,EAAMnS,KAAK8G,EAAO1L,EAAIgX,GACfA,GAETnM,EAAM,SAAU7K,GACd,OAAO6W,EAAMjS,KAAK8G,EAAO1L,IAAO,IAElC4K,EAAM,SAAU5K,GACd,OAAO8W,EAAMlS,KAAK8G,EAAO1L,QAEtB,CACL,IAAIkX,EAAQP,EAAU,SACtBZ,EAAWmB,IAAS,EACpB5N,EAAM,SAAUtJ,EAAIgX,GAClB,GAAIP,EAAUzW,EAAIkX,GAAQ,MAAM,IAAIrU,UAAU+T,GAG9C,OAFAI,EAASC,OAASjX,EAClBkM,EAA4BlM,EAAIkX,EAAOF,GAChCA,GAETnM,EAAM,SAAU7K,GACd,OAAOyW,EAAUzW,EAAIkX,GAASlX,EAAGkX,GAAS,IAE5CtM,EAAM,SAAU5K,GACd,OAAOyW,EAAUzW,EAAIkX,IAIzBta,EAAOD,QAAU,CACf2M,IAAKA,EACLuB,IAAKA,EACLD,IAAKA,EACLuM,QAnDY,SAAUnX,GACtB,OAAO4K,EAAI5K,GAAM6K,EAAI7K,GAAMsJ,EAAItJ,EAAI,KAmDnCwJ,UAhDc,SAAUjE,GACxB,OAAO,SAAUvF,GACf,IAAIqK,EACJ,IAAKvH,EAAS9C,KAAQqK,EAAQQ,EAAI7K,IAAK8J,OAASvE,EAC9C,MAAM1C,UAAU,0BAA4B0C,EAAO,aACnD,OAAO8E,M,eCtBb,IAAI9D,EAAkB,EAAQ,MAC1BkH,EAAY,EAAQ,MAEpB5F,EAAWtB,EAAgB,YAC3BrG,EAAiBzB,MAAMsB,UAG3BnD,EAAOD,QAAU,SAAUqD,GACzB,YAAchD,IAAPgD,IAAqByN,EAAUhP,QAAUuB,GAAME,EAAe2H,KAAc7H,K,eCRrF,IAAI+R,EAAU,EAAQ,MAKtBnV,EAAOD,QAAU8B,MAAME,SAAW,SAAiByY,GACjD,MAAuB,SAAhBrF,EAAQqF,K,eCNjB,IAAI9Q,EAAQ,EAAQ,MAEhB+Q,EAAc,kBAEd7E,EAAW,SAAU8E,EAASC,GAChC,IAAInU,EAAQsH,EAAK8M,EAAUF,IAC3B,OAAOlU,GAASqU,GACZrU,GAASsU,IACW,mBAAbH,EAA0BjR,EAAMiR,KACrCA,IAGJC,EAAYhF,EAASgF,UAAY,SAAUG,GAC7C,OAAOtX,OAAOsX,GAAQC,QAAQP,EAAa,KAAKQ,eAG9CnN,EAAO8H,EAAS9H,KAAO,GACvBgN,EAASlF,EAASkF,OAAS,IAC3BD,EAAWjF,EAASiF,SAAW,IAEnC7a,EAAOD,QAAU6V,G,eCpBjB,IAAI1P,EAAW,EAAQ,KAEnBgV,EAAQxC,KAAKwC,MAIjBlb,EAAOD,QAAU,SAAmBqD,GAClC,OAAQ8C,EAAS9C,IAAO+X,SAAS/X,IAAO8X,EAAM9X,KAAQA,I,QCPxDpD,EAAOD,QAAU,SAAUqD,GACzB,MAAqB,iBAAPA,EAAyB,OAAPA,EAA4B,mBAAPA,I,SCDvDpD,EAAOD,SAAU,G,cCAjB,IAAImG,EAAW,EAAQ,KACnBiP,EAAU,EAAQ,MAGlB9E,EAFkB,EAAQ,KAElB1G,CAAgB,SAI5B3J,EAAOD,QAAU,SAAUqD,GACzB,IAAIgY,EACJ,OAAOlV,EAAS9C,UAAmChD,KAA1Bgb,EAAWhY,EAAGiN,MAA0B+K,EAA0B,UAAfjG,EAAQ/R,M,eCVtF,IAAIwH,EAAW,EAAQ,MACnBvD,EAAwB,EAAQ,MAChCd,EAAW,EAAQ,MACnBvD,EAAO,EAAQ,MACfgD,EAAoB,EAAQ,MAC5B6E,EAAgB,EAAQ,MAExBwQ,EAAS,SAAUC,EAAS9T,GAC9Bd,KAAK4U,QAAUA,EACf5U,KAAKc,OAASA,GAGhBxH,EAAOD,QAAU,SAAUkN,EAAUsO,EAAiBvF,GACpD,IAKItO,EAAU8T,EAAQ3U,EAAOF,EAAQa,EAAQG,EAAMF,EAL/C0B,EAAO6M,GAAWA,EAAQ7M,KAC1BmE,KAAgB0I,IAAWA,EAAQ1I,YACnCmO,KAAiBzF,IAAWA,EAAQyF,aACpCC,KAAiB1F,IAAWA,EAAQ0F,aACpC5Q,EAAK9H,EAAKuY,EAAiBpS,EAAM,EAAImE,EAAaoO,GAGlDC,EAAO,SAAUC,GAEnB,OADIlU,GAAUmD,EAAcnD,GACrB,IAAI2T,GAAO,EAAMO,IAGtBC,EAAS,SAAUrV,GACrB,OAAI8G,GACF1C,EAASpE,GACFkV,EAAc5Q,EAAGtE,EAAM,GAAIA,EAAM,GAAImV,GAAQ7Q,EAAGtE,EAAM,GAAIA,EAAM,KAChEkV,EAAc5Q,EAAGtE,EAAOmV,GAAQ7Q,EAAGtE,IAG9C,GAAIiV,EACF/T,EAAWuF,MACN,CAEL,GAAqB,mBADrBuO,EAASxV,EAAkBiH,IACM,MAAMhH,UAAU,0BAEjD,GAAIoB,EAAsBmU,GAAS,CACjC,IAAK3U,EAAQ,EAAGF,EAASJ,EAAS0G,EAAStG,QAASA,EAASE,EAAOA,IAElE,IADAW,EAASqU,EAAO5O,EAASpG,MACXW,aAAkB6T,EAAQ,OAAO7T,EAC/C,OAAO,IAAI6T,GAAO,GAEtB3T,EAAW8T,EAAOxT,KAAKiF,GAIzB,IADAtF,EAAOD,EAASC,OACPF,EAAOE,EAAKK,KAAKN,IAAWO,MAAM,CACzC,IACET,EAASqU,EAAOpU,EAAKjB,OACrB,MAAOwE,GAEP,MADAH,EAAcnD,GACRsD,EAER,GAAqB,iBAAVxD,GAAsBA,GAAUA,aAAkB6T,EAAQ,OAAO7T,EAC5E,OAAO,IAAI6T,GAAO,K,eCxDtB,IAAIzQ,EAAW,EAAQ,MAEvB5K,EAAOD,QAAU,SAAU2H,GACzB,IAAIoU,EAAepU,EAAiB,OACpC,QAAqBtH,IAAjB0b,EACF,OAAOlR,EAASkR,EAAa9T,KAAKN,IAAWlB,Q,4BCJjD,IAcImK,EAAmBoL,EAAmCC,EAdtDtS,EAAQ,EAAQ,MAChBgH,EAAiB,EAAQ,KACzBpB,EAA8B,EAAQ,MACtCtB,EAAM,EAAQ,MACdrE,EAAkB,EAAQ,MAC1B+H,EAAU,EAAQ,MAElBzG,EAAWtB,EAAgB,YAC3BiI,GAAyB,EASzB,GAAGtM,OAGC,SAFN0W,EAAgB,GAAG1W,SAIjByW,EAAoCrL,EAAeA,EAAesL,OACxBxX,OAAOrB,YAAWwN,EAAoBoL,GAHlDnK,GAAyB,GAO3D,IAAIqK,EAA8C7b,MAArBuQ,GAAkCjH,GAAM,WACnE,IAAIwL,EAAO,GAEX,OAAOvE,EAAkB1F,GAAUjD,KAAKkN,KAAUA,KAGhD+G,IAAwBtL,EAAoB,IAI1Ce,IAAWuK,GAA4BjO,EAAI2C,EAAmB1F,IAClEqE,EAA4BqB,EAAmB1F,GA5BhC,WAAc,OAAOvE,QA+BtC1G,EAAOD,QAAU,CACf4Q,kBAAmBA,EACnBiB,uBAAwBA,I,SC5C1B5R,EAAOD,QAAU,I,eCAjB,IAeImc,EAAOC,EAAM/O,EAAMgP,EAAQC,EAAQC,EAAMC,EAASC,EAflDpN,EAAS,EAAQ,MACjBjK,EAA2B,UAC3BsX,EAAY,YACZC,EAAS,EAAQ,MACjBC,EAAkB,EAAQ,MAC1BC,EAAU,EAAQ,MAElBC,EAAmBzN,EAAOyN,kBAAoBzN,EAAO0N,uBACrDhK,EAAW1D,EAAO0D,SAClBsC,EAAUhG,EAAOgG,QACjB3P,EAAU2J,EAAO3J,QAEjBsX,EAA2B5X,EAAyBiK,EAAQ,kBAC5D4N,EAAiBD,GAA4BA,EAAyBvW,MAKrEwW,IACHd,EAAQ,WACN,IAAInW,EAAQ+E,EAEZ,IADI8R,IAAY7W,EAASqP,EAAQ6H,SAASlX,EAAOmX,OAC1Cf,GAAM,CACXrR,EAAKqR,EAAKrR,GACVqR,EAAOA,EAAKxU,KACZ,IACEmD,IACA,MAAOE,GAGP,MAFImR,EAAMC,IACLhP,OAAOhN,EACN4K,GAERoC,OAAOhN,EACL2F,GAAQA,EAAOoX,SAKhBT,GAAWE,GAAYD,IAAmBE,IAAoB/J,EAQxDrN,GAAWA,EAAQ2X,UAE5Bb,EAAU9W,EAAQ2X,aAAQhd,IAElB4J,YAAcvE,EACtB+W,EAAOD,EAAQC,KACfJ,EAAS,WACPI,EAAKxU,KAAKuU,EAASL,KAIrBE,EADSQ,EACA,WACPxH,EAAQiI,SAASnB,IASV,WAEPO,EAAUzU,KAAKoH,EAAQ8M,KA9BzBG,GAAS,EACTC,EAAOxJ,EAASwK,eAAe,IAC/B,IAAIT,EAAiBX,GAAOqB,QAAQjB,EAAM,CAAEkB,eAAe,IAC3DpB,EAAS,WACPE,EAAKxO,KAAOuO,GAAUA,KA+B5Brc,EAAOD,QAAUid,GAAkB,SAAUlS,GAC3C,IAAI2S,EAAO,CAAE3S,GAAIA,EAAInD,UAAMvH,GACvBgN,IAAMA,EAAKzF,KAAO8V,GACjBtB,IACHA,EAAOsB,EACPrB,KACAhP,EAAOqQ,I,eChFX,IAAIrO,EAAS,EAAQ,MAErBpP,EAAOD,QAAUqP,EAAO3J,S,eCDxB,IAAImE,EAAa,EAAQ,MACrBF,EAAQ,EAAQ,MAGpB1J,EAAOD,UAAYyE,OAAOa,wBAA0BqE,GAAM,WACxD,IAAIgU,EAAS/X,SAGb,OAAQlC,OAAOia,MAAalZ,OAAOkZ,aAAmB/X,UAEnDA,OAAOd,MAAQ+E,GAAcA,EAAa,O,eCX/C,IAAIF,EAAQ,EAAQ,MAChBC,EAAkB,EAAQ,MAC1B+H,EAAU,EAAQ,MAElBzG,EAAWtB,EAAgB,YAE/B3J,EAAOD,SAAW2J,GAAM,WACtB,IAAIiU,EAAM,IAAIC,IAAI,gBAAiB,YAC/BC,EAAeF,EAAIE,aACnBrW,EAAS,GAMb,OALAmW,EAAIG,SAAW,QACfD,EAAarb,SAAQ,SAAUgE,EAAOzB,GACpC8Y,EAAqB,OAAE,KACvBrW,GAAUzC,EAAMyB,KAEVkL,IAAYiM,EAAII,SAClBF,EAAaG,MACD,2BAAbL,EAAIM,MACsB,MAA1BJ,EAAa5P,IAAI,MACuB,QAAxCxK,OAAO,IAAIya,gBAAgB,WAC1BL,EAAa5S,IAEsB,MAApC,IAAI2S,IAAI,eAAeO,UACsC,MAA7D,IAAID,gBAAgB,IAAIA,gBAAgB,QAAQjQ,IAAI,MAEpB,eAAhC,IAAI2P,IAAI,eAAeQ,MAEQ,YAA/B,IAAIR,IAAI,cAAcS,MAEX,SAAX7W,GAEwC,MAAxC,IAAIoW,IAAI,gBAAYxd,GAAWge,S,eC/BtC,IAAIhP,EAAS,EAAQ,MACjB8J,EAAgB,EAAQ,MAExBpT,EAAUsJ,EAAOtJ,QAErB9F,EAAOD,QAA6B,mBAAZ+F,GAA0B,cAAcoP,KAAKgE,EAAcpT,K,4BCJnF,IAAIuE,EAAY,EAAQ,MAEpBiU,EAAoB,SAAU1W,GAChC,IAAIwV,EAASmB,EACb7X,KAAK6V,QAAU,IAAI3U,GAAE,SAAU4W,EAAWC,GACxC,QAAgBre,IAAZgd,QAAoChd,IAAXme,EAAsB,MAAMtY,UAAU,2BACnEmX,EAAUoB,EACVD,EAASE,KAEX/X,KAAK0W,QAAU/S,EAAU+S,GACzB1W,KAAK6X,OAASlU,EAAUkU,IAK1Bve,EAAOD,QAAQ8F,EAAI,SAAU+B,GAC3B,OAAO,IAAI0W,EAAkB1W,K,cCjB/B,IAAIwT,EAAW,EAAQ,KAEvBpb,EAAOD,QAAU,SAAUqD,GACzB,GAAIgY,EAAShY,GACX,MAAM6C,UAAU,iDAChB,OAAO7C,I,eCLX,IAAIgM,EAAS,EAAQ,MACjBsP,EAAO,aACPC,EAAc,EAAQ,MAEtBC,EAAYxP,EAAO5J,SACnBqZ,EAAM,cACN3M,EAA2C,IAAlC0M,EAAUD,EAAc,OAAmD,KAApCC,EAAUD,EAAc,QAI5E3e,EAAOD,QAAUmS,EAAS,SAAkB6I,EAAQ+D,GAClD,IAAIC,EAAIL,EAAKjb,OAAOsX,IACpB,OAAO6D,EAAUG,EAAID,IAAU,IAAOD,EAAI3J,KAAK6J,GAAK,GAAK,MACvDH,G,4BCZJ,IAAItS,EAAc,EAAQ,MACtB5C,EAAQ,EAAQ,MAChBsV,EAAa,EAAQ,MACrBC,EAA8B,EAAQ,MACtCC,EAA6B,EAAQ,MACrC7Y,EAAW,EAAQ,MACnBmC,EAAgB,EAAQ,MAGxB2W,EAAU3a,OAAOC,OAEjBK,EAAiBN,OAAOM,eAI5B9E,EAAOD,SAAWof,GAAWzV,GAAM,WAEjC,GAAI4C,GAQiB,IARF6S,EAAQ,CAAElP,EAAG,GAAKkP,EAAQra,EAAe,GAAI,IAAK,CACnEqM,YAAY,EACZlD,IAAK,WACHnJ,EAAe4B,KAAM,IAAK,CACxBF,MAAO,EACP2K,YAAY,OAGd,CAAElB,EAAG,KAAMA,EAAS,OAAO,EAE/B,IAAImP,EAAI,GACJC,EAAI,GAEJ3B,EAAS/X,SACT2Z,EAAW,uBAGf,OAFAF,EAAE1B,GAAU,EACZ4B,EAAS5J,MAAM,IAAIlT,SAAQ,SAAU+c,GAAOF,EAAEE,GAAOA,KACpB,GAA1BJ,EAAQ,GAAIC,GAAG1B,IAAgBsB,EAAWG,EAAQ,GAAIE,IAAIhH,KAAK,KAAOiH,KAC1E,SAAgB/V,EAAQ0M,GAM3B,IALA,IAAItR,EAAI0B,EAASkD,GACb3C,EAAkBxC,UAAUuC,OAC5BE,EAAQ,EACRxB,EAAwB4Z,EAA4BpZ,EACpDmT,EAAuBkG,EAA2BrZ,EAC/Ce,EAAkBC,GAMvB,IALA,IAII9B,EAJAga,EAAIvW,EAAcpE,UAAUyC,MAC5BvB,EAAOD,EAAwB2Z,EAAWD,GAAG9c,OAAOoD,EAAsB0Z,IAAMC,EAAWD,GAC3FpY,EAASrB,EAAKqB,OACd6Y,EAAI,EAED7Y,EAAS6Y,GACdza,EAAMO,EAAKka,KACNlT,IAAe0M,EAAqBhR,KAAK+W,EAAGha,KAAMJ,EAAEI,GAAOga,EAAEha,IAEpE,OAAOJ,GACPwa,G,eCrDJ,IAmDIM,EAnDA7U,EAAW,EAAQ,MACnBlG,EAAmB,EAAQ,MAC3Bgb,EAAc,EAAQ,MACtBvG,EAAa,EAAQ,MACrBwG,EAAO,EAAQ,MACfC,EAAwB,EAAQ,MAOhCC,EANY,EAAQ,KAMT9F,CAAU,YAErB+F,EAAmB,aAEnBC,EAAY,SAAUC,GACxB,MAAOC,WAAmBD,EAAnBC,cAmCLC,EAAkB,WACpB,IAEET,EAAkB3M,SAASmK,QAAU,IAAIkD,cAAc,YACvD,MAAOnV,IA1BoB,IAIzBoV,EAFAC,EAyBJH,EAAkBT,EApCY,SAAUA,GACxCA,EAAgBa,MAAMP,EAAU,KAChCN,EAAgBc,QAChB,IAAIC,EAAOf,EAAgBgB,aAAajc,OAExC,OADAib,EAAkB,KACXe,EA+B6BE,CAA0BjB,KAzB1DY,EAAST,EAAsB,WAG5Be,MAAMC,QAAU,OACvBjB,EAAKkB,YAAYR,GAEjBA,EAAOS,IAAMrd,OALJ,gBAMT2c,EAAiBC,EAAOU,cAAcjO,UACvBkO,OACfZ,EAAeE,MAAMP,EAAU,sBAC/BK,EAAeG,QACRH,EAAe3P,GAgBtB,IADA,IAAI9J,EAAS+Y,EAAY/Y,OAClBA,YAAiBuZ,EAAyB,UAAER,EAAY/Y,IAC/D,OAAOuZ,KAGT/G,EAAW0G,IAAY,EAIvB7f,EAAOD,QAAUyE,OAAO8E,QAAU,SAAgB7C,EAAGwa,GACnD,IAAIzZ,EAQJ,OAPU,OAANf,GACFqZ,EAA0B,UAAIlV,EAASnE,GACvCe,EAAS,IAAIsY,EACbA,EAA0B,UAAI,KAE9BtY,EAAOqY,GAAYpZ,GACde,EAAS0Y,SACM9f,IAAf6gB,EAA2BzZ,EAAS9C,EAAiB8C,EAAQyZ,K,eC5EtE,IAAI3U,EAAc,EAAQ,MACtB2E,EAAuB,EAAQ,MAC/BrG,EAAW,EAAQ,MACnBoU,EAAa,EAAQ,MAKzBhf,EAAOD,QAAUuM,EAAc9H,OAAOE,iBAAmB,SAA0B+B,EAAGwa,GACpFrW,EAASnE,GAKT,IAJA,IAGI1B,EAHAO,EAAO0Z,EAAWiC,GAClBta,EAASrB,EAAKqB,OACdE,EAAQ,EAELF,EAASE,GAAOoK,EAAqBpL,EAAEY,EAAG1B,EAAMO,EAAKuB,KAAUoa,EAAWlc,IACjF,OAAO0B,I,eCfT,IAAI6F,EAAc,EAAQ,MACtB4U,EAAiB,EAAQ,MACzBtW,EAAW,EAAQ,MACnByG,EAAc,EAAQ,MAGtB8P,EAAkB3c,OAAOM,eAI7B/E,EAAQ8F,EAAIyG,EAAc6U,EAAkB,SAAwB1a,EAAG2a,EAAGC,GAIxE,GAHAzW,EAASnE,GACT2a,EAAI/P,EAAY+P,GAAG,GACnBxW,EAASyW,GACLH,EAAgB,IAClB,OAAOC,EAAgB1a,EAAG2a,EAAGC,GAC7B,MAAOrW,IACT,GAAI,QAASqW,GAAc,QAASA,EAAY,MAAMpb,UAAU,2BAEhE,MADI,UAAWob,IAAY5a,EAAE2a,GAAKC,EAAW7a,OACtCC,I,eCnBT,IAAI6F,EAAc,EAAQ,MACtB4S,EAA6B,EAAQ,MACrCtO,EAA2B,EAAQ,MACnC1I,EAAkB,EAAQ,MAC1BmJ,EAAc,EAAQ,MACtBrD,EAAM,EAAQ,MACdkT,EAAiB,EAAQ,MAGzBI,EAA4B9c,OAAOW,yBAIvCpF,EAAQ8F,EAAIyG,EAAcgV,EAA4B,SAAkC7a,EAAG2a,GAGzF,GAFA3a,EAAIyB,EAAgBzB,GACpB2a,EAAI/P,EAAY+P,GAAG,GACfF,EAAgB,IAClB,OAAOI,EAA0B7a,EAAG2a,GACpC,MAAOpW,IACT,GAAIgD,EAAIvH,EAAG2a,GAAI,OAAOxQ,GAA0BsO,EAA2BrZ,EAAEmC,KAAKvB,EAAG2a,GAAI3a,EAAE2a,M,cClB7F,IAAIlZ,EAAkB,EAAQ,MAC1BqZ,EAAuB,SAEvB9V,EAAW,GAAGA,SAEd+V,EAA+B,iBAAVxM,QAAsBA,QAAUxQ,OAAOid,oBAC5Djd,OAAOid,oBAAoBzM,QAAU,GAWzChV,EAAOD,QAAQ8F,EAAI,SAA6BzC,GAC9C,OAAOoe,GAAoC,mBAArB/V,EAASzD,KAAK5E,GAVjB,SAAUA,GAC7B,IACE,OAAOme,EAAqBne,GAC5B,MAAO4H,GACP,OAAOwW,EAAY1e,SAOjB4e,CAAete,GACfme,EAAqBrZ,EAAgB9E,M,cCrB3C,IAAIue,EAAqB,EAAQ,MAG7BxI,EAFc,EAAQ,MAEGlX,OAAO,SAAU,aAK9ClC,EAAQ8F,EAAIrB,OAAOid,qBAAuB,SAA6Bhb,GACrE,OAAOkb,EAAmBlb,EAAG0S,K,aCR/BpZ,EAAQ8F,EAAIrB,OAAOa,uB,cCDnB,IAAI2I,EAAM,EAAQ,MACd3H,EAAW,EAAQ,MACnB0T,EAAY,EAAQ,MACpB6H,EAA2B,EAAQ,MAEnC/B,EAAW9F,EAAU,YACrB8H,EAAkBrd,OAAOrB,UAK7BnD,EAAOD,QAAU6hB,EAA2Bpd,OAAOkM,eAAiB,SAAUjK,GAE5E,OADAA,EAAIJ,EAASI,GACTuH,EAAIvH,EAAGoZ,GAAkBpZ,EAAEoZ,GACH,mBAAjBpZ,EAAEuD,aAA6BvD,aAAaA,EAAEuD,YAChDvD,EAAEuD,YAAY7G,UACdsD,aAAajC,OAASqd,EAAkB,O,eChBnD,IAAI7T,EAAM,EAAQ,MACd9F,EAAkB,EAAQ,MAC1BxF,EAAU,gBACVyW,EAAa,EAAQ,MAEzBnZ,EAAOD,QAAU,SAAUyL,EAAQsW,GACjC,IAGI/c,EAHA0B,EAAIyB,EAAgBsD,GACpBhB,EAAI,EACJhD,EAAS,GAEb,IAAKzC,KAAO0B,GAAIuH,EAAImL,EAAYpU,IAAQiJ,EAAIvH,EAAG1B,IAAQyC,EAAOkB,KAAK3D,GAEnE,KAAO+c,EAAMnb,OAAS6D,GAAOwD,EAAIvH,EAAG1B,EAAM+c,EAAMtX,SAC7C9H,EAAQ8E,EAAQzC,IAAQyC,EAAOkB,KAAK3D,IAEvC,OAAOyC,I,eCfT,IAAIma,EAAqB,EAAQ,MAC7BjC,EAAc,EAAQ,MAK1B1f,EAAOD,QAAUyE,OAAOc,MAAQ,SAAcmB,GAC5C,OAAOkb,EAAmBlb,EAAGiZ,K,0BCN/B,IAAIqC,EAAwB,GAAG/I,qBAE3B7T,EAA2BX,OAAOW,yBAGlC6c,EAAc7c,IAA6B4c,EAAsB/Z,KAAK,CAAEia,EAAG,GAAK,GAIpFliB,EAAQ8F,EAAImc,EAAc,SAA8BE,GACtD,IAAI1L,EAAarR,EAAyBuB,KAAMwb,GAChD,QAAS1L,GAAcA,EAAWrF,YAChC4Q,G,eCZJ,IAAInX,EAAW,EAAQ,MACnBuX,EAAqB,EAAQ,MAMjCniB,EAAOD,QAAUyE,OAAOgN,iBAAmB,aAAe,GAAK,WAC7D,IAEI4Q,EAFAC,GAAiB,EACjBnN,EAAO,GAEX,KAEEkN,EAAS5d,OAAOW,yBAAyBX,OAAOrB,UAAW,aAAauJ,KACjE1E,KAAKkN,EAAM,IAClBmN,EAAiBnN,aAAgBrT,MACjC,MAAOmJ,IACT,OAAO,SAAwBvE,EAAGmM,GAKhC,OAJAhI,EAASnE,GACT0b,EAAmBvP,GACfyP,EAAgBD,EAAOpa,KAAKvB,EAAGmM,GAC9BnM,EAAE6b,UAAY1P,EACZnM,GAfoD,QAiBzDrG,I,eCzBN,IAAIkM,EAAc,EAAQ,MACtB0S,EAAa,EAAQ,MACrB9W,EAAkB,EAAQ,MAC1B8Q,EAAuB,UAGvB7Q,EAAe,SAAUoa,GAC3B,OAAO,SAAUnf,GAOf,IANA,IAKI2B,EALA0B,EAAIyB,EAAgB9E,GACpBkC,EAAO0Z,EAAWvY,GAClBE,EAASrB,EAAKqB,OACd6D,EAAI,EACJhD,EAAS,GAENb,EAAS6D,GACdzF,EAAMO,EAAKkF,KACN8B,IAAe0M,EAAqBhR,KAAKvB,EAAG1B,IAC/CyC,EAAOkB,KAAK6Z,EAAa,CAACxd,EAAK0B,EAAE1B,IAAQ0B,EAAE1B,IAG/C,OAAOyC,IAIXxH,EAAOD,QAAU,CAGfmC,QAASiG,GAAa,GAGtB5C,OAAQ4C,GAAa,K,4BC7BvB,IAAIuD,EAAwB,EAAQ,MAChCyJ,EAAU,EAAQ,MAItBnV,EAAOD,QAAU2L,EAAwB,GAAGD,SAAW,WACrD,MAAO,WAAa0J,EAAQzO,MAAQ,M,eCPtC,IAAI2O,EAAa,EAAQ,KACrBmN,EAA4B,EAAQ,KACpCvD,EAA8B,EAAQ,MACtCrU,EAAW,EAAQ,MAGvB5K,EAAOD,QAAUsV,EAAW,UAAW,YAAc,SAAiBjS,GACpE,IAAIkC,EAAOkd,EAA0B3c,EAAE+E,EAASxH,IAC5CiC,EAAwB4Z,EAA4BpZ,EACxD,OAAOR,EAAwBC,EAAKrD,OAAOoD,EAAsBjC,IAAOkC,I,SCT1EtF,EAAOD,QAAU,I,MCAjBC,EAAOD,QAAU,SAAUsL,GACzB,IACE,MAAO,CAAEL,OAAO,EAAOxE,MAAO6E,KAC9B,MAAOL,GACP,MAAO,CAAEA,OAAO,EAAMxE,MAAOwE,M,eCJjC,IAAIJ,EAAW,EAAQ,MACnB1E,EAAW,EAAQ,KACnBuc,EAAuB,EAAQ,MAEnCziB,EAAOD,QAAU,SAAU6H,EAAG8a,GAE5B,GADA9X,EAAShD,GACL1B,EAASwc,IAAMA,EAAE1Y,cAAgBpC,EAAG,OAAO8a,EAC/C,IAAIC,EAAoBF,EAAqB5c,EAAE+B,GAG/C,OADAwV,EADcuF,EAAkBvF,SACxBsF,GACDC,EAAkBpG,U,eCV3B,IAAI9K,EAAW,EAAQ,MAEvBzR,EAAOD,QAAU,SAAUwJ,EAAQuX,EAAK9K,GACtC,IAAK,IAAIjR,KAAO+b,EACV9K,GAAWA,EAAQ4M,QAAUrZ,EAAOxE,GAAMwE,EAAOxE,GAAO+b,EAAI/b,GAC3D0M,EAASlI,EAAQxE,EAAK+b,EAAI/b,GAAMiR,GACrC,OAAOzM,I,eCNX,IAAI+F,EAA8B,EAAQ,MAE1CtP,EAAOD,QAAU,SAAUwJ,EAAQxE,EAAKyB,EAAOwP,GACzCA,GAAWA,EAAQ7E,WAAY5H,EAAOxE,GAAOyB,EAC5C8I,EAA4B/F,EAAQxE,EAAKyB,K,SCFhDxG,EAAOD,QAAU,SAAUqD,GACzB,GAAUhD,MAANgD,EAAiB,MAAM6C,UAAU,wBAA0B7C,GAC/D,OAAOA,I,eCJT,IAAIgM,EAAS,EAAQ,MACjBE,EAA8B,EAAQ,MAE1CtP,EAAOD,QAAU,SAAUgF,EAAKyB,GAC9B,IACE8I,EAA4BF,EAAQrK,EAAKyB,GACzC,MAAOwE,GACPoE,EAAOrK,GAAOyB,EACd,OAAOA,I,4BCPX,IAAI6O,EAAa,EAAQ,KACrBpE,EAAuB,EAAQ,MAC/BtH,EAAkB,EAAQ,MAC1B2C,EAAc,EAAQ,MAEtBzC,EAAUF,EAAgB,WAE9B3J,EAAOD,QAAU,SAAUgN,GACzB,IAAI5G,EAAckP,EAAWtI,GACzBjI,EAAiBmM,EAAqBpL,EAEtCyG,GAAenG,IAAgBA,EAAY0D,IAC7C/E,EAAeqB,EAAa0D,EAAS,CACnCqG,cAAc,EACdjC,IAAK,WAAc,OAAOvH,U,cCfhC,IAAIgF,EAAwB,EAAQ,MAChC5G,EAAiB,UACjBwK,EAA8B,EAAQ,MACtCtB,EAAM,EAAQ,MACdvC,EAAW,EAAQ,MAGnBG,EAFkB,EAAQ,KAEVjC,CAAgB,eAEpC3J,EAAOD,QAAU,SAAUqD,EAAIyf,EAAKlM,EAAQmM,GAC1C,GAAI1f,EAAI,CACN,IAAImG,EAASoN,EAASvT,EAAKA,EAAGD,UACzB6K,EAAIzE,EAAQqC,IACf9G,EAAeyE,EAAQqC,EAAe,CAAEsE,cAAc,EAAM1J,MAAOqc,IAEjEC,IAAepX,GACjB4D,EAA4B/F,EAAQ,WAAYkC,M,eChBtD,IAAIqO,EAAS,EAAQ,MACjBV,EAAM,EAAQ,MAEd9T,EAAOwU,EAAO,QAElB9Z,EAAOD,QAAU,SAAUgF,GACzB,OAAOO,EAAKP,KAASO,EAAKP,GAAOqU,EAAIrU,M,eCNvC,IAAIqK,EAAS,EAAQ,MACjB2T,EAAY,EAAQ,MAEpBC,EAAS,qBACTlU,EAAQM,EAAO4T,IAAWD,EAAUC,EAAQ,IAEhDhjB,EAAOD,QAAU+O,G,eCNjB,IAAI4C,EAAU,EAAQ,MAClB5C,EAAQ,EAAQ,OAEnB9O,EAAOD,QAAU,SAAUgF,EAAKyB,GAC/B,OAAOsI,EAAM/J,KAAS+J,EAAM/J,QAAiB3E,IAAVoG,EAAsBA,EAAQ,MAChE,WAAY,IAAIkC,KAAK,CACtB6M,QAAS,SACT0N,KAAMvR,EAAU,OAAS,SACzBwR,UAAW,0C,cCRb,IAAItY,EAAW,EAAQ,MACnBP,EAAY,EAAQ,MAGpBR,EAFkB,EAAQ,KAEhBF,CAAgB,WAI9B3J,EAAOD,QAAU,SAAU0G,EAAG0c,GAC5B,IACIpE,EADAnX,EAAIgD,EAASnE,GAAGuD,YAEpB,YAAa5J,IAANwH,GAAiDxH,OAA7B2e,EAAInU,EAAShD,GAAGiC,IAAyBsZ,EAAqB9Y,EAAU0U,K,eCXrG,IAAIqE,EAAY,EAAQ,MACpBC,EAAyB,EAAQ,MAGjClb,EAAe,SAAUmb,GAC3B,OAAO,SAAUjb,EAAOkb,GACtB,IAGIpW,EAAOqW,EAHPzE,EAAItb,OAAO4f,EAAuBhb,IAClCob,EAAWL,EAAUG,GACrBlW,EAAO0R,EAAEpY,OAEb,OAAI8c,EAAW,GAAKA,GAAYpW,EAAaiW,EAAoB,QAAKljB,GACtE+M,EAAQ4R,EAAE2E,WAAWD,IACN,OAAUtW,EAAQ,OAAUsW,EAAW,IAAMpW,IACtDmW,EAASzE,EAAE2E,WAAWD,EAAW,IAAM,OAAUD,EAAS,MAC1DF,EAAoBvE,EAAE4E,OAAOF,GAAYtW,EACzCmW,EAAoBvE,EAAEjc,MAAM2gB,EAAUA,EAAW,GAA+BD,EAAS,OAAlCrW,EAAQ,OAAU,IAA0B,QAI7GnN,EAAOD,QAAU,CAGf6jB,OAAQzb,GAAa,GAGrBwb,OAAQxb,GAAa,K,eCxBvB,IAAI8M,EAAY,EAAQ,MAGxBjV,EAAOD,QAAU,mEAAmEmV,KAAKD,I,eCHzF,IAAI1O,EAAW,EAAQ,MACnBsd,EAAS,EAAQ,MACjBR,EAAyB,EAAQ,MAEjCS,EAAOpL,KAAKoL,KAGZ3b,EAAe,SAAU4b,GAC3B,OAAO,SAAU1b,EAAO2b,EAAWC,GACjC,IAIIC,EAASC,EAJTpF,EAAItb,OAAO4f,EAAuBhb,IAClC+b,EAAerF,EAAEpY,OACjB0d,OAAyBjkB,IAAf6jB,EAA2B,IAAMxgB,OAAOwgB,GAClDK,EAAe/d,EAASyd,GAE5B,OAAIM,GAAgBF,GAA2B,IAAXC,EAAsBtF,GAC1DmF,EAAUI,EAAeF,GACzBD,EAAeN,EAAO7b,KAAKqc,EAASP,EAAKI,EAAUG,EAAQ1d,UAC1CA,OAASud,IAASC,EAAeA,EAAarhB,MAAM,EAAGohB,IACjEH,EAAShF,EAAIoF,EAAeA,EAAepF,KAItD/e,EAAOD,QAAU,CAGfuX,MAAOnP,GAAa,GAGpBrB,IAAKqB,GAAa,K,sBC3BpB,IAAIoc,EAAS,WASTC,EAAgB,eAChBC,EAAkB,yBAClBC,EAAiB,kDAEjBxJ,EAAQxC,KAAKwC,MACbyJ,EAAqBlhB,OAAOmhB,aAoC5BC,EAAe,SAAUC,GAG3B,OAAOA,EAAQ,GAAK,IAAMA,EAAQ,KAOhCC,EAAQ,SAAUC,EAAOC,EAAWC,GACtC,IAAIC,EAAI,EAGR,IAFAH,EAAQE,EAAYhK,EAAM8J,EAzDjB,KAyDiCA,GAAS,EACnDA,GAAS9J,EAAM8J,EAAQC,GAChBD,EAAQI,IAA2BD,GA/DjC,GAgEPH,EAAQ9J,EAAM8J,EArDEK,IAuDlB,OAAOnK,EAAMiK,EAAI,GAAsBH,GAASA,EA/DvC,MAuEPM,EAAS,SAAUC,GACrB,IAYI/a,EAAGgb,EAZHC,EAAS,GAMTC,GAHJH,EAxDe,SAAUxK,GAIzB,IAHA,IAAI0K,EAAS,GACTE,EAAU,EACVhf,EAASoU,EAAOpU,OACbgf,EAAUhf,GAAQ,CACvB,IAAIH,EAAQuU,EAAO2I,WAAWiC,KAC9B,GAAInf,GAAS,OAAUA,GAAS,OAAUmf,EAAUhf,EAAQ,CAE1D,IAAIif,EAAQ7K,EAAO2I,WAAWiC,KACN,QAAX,MAARC,GACHH,EAAO/c,OAAe,KAARlC,IAAkB,KAAe,KAARof,GAAiB,QAIxDH,EAAO/c,KAAKlC,GACZmf,UAGFF,EAAO/c,KAAKlC,GAGhB,OAAOif,EAmCCI,CAAWN,IAGK5e,OAGpBmf,EA9ES,IA+ETd,EAAQ,EACRe,EAjFY,GAqFhB,IAAKvb,EAAI,EAAGA,EAAI+a,EAAM5e,OAAQ6D,KAC5Bgb,EAAeD,EAAM/a,IACF,KACjBib,EAAO/c,KAAKic,EAAmBa,IAInC,IAAIQ,EAAcP,EAAO9e,OACrBsf,EAAiBD,EAQrB,IALIA,GACFP,EAAO/c,KA/FK,KAmGPud,EAAiBP,GAAa,CAEnC,IAAIQ,EAAI3B,EACR,IAAK/Z,EAAI,EAAGA,EAAI+a,EAAM5e,OAAQ6D,KAC5Bgb,EAAeD,EAAM/a,KACDsb,GAAKN,EAAeU,IACtCA,EAAIV,GAKR,IAAIW,EAAwBF,EAAiB,EAC7C,GAAIC,EAAIJ,EAAI5K,GAAOqJ,EAASS,GAASmB,GACnC,MAAMC,WAAW1B,GAMnB,IAHAM,IAAUkB,EAAIJ,GAAKK,EACnBL,EAAII,EAEC1b,EAAI,EAAGA,EAAI+a,EAAM5e,OAAQ6D,IAAK,CAEjC,IADAgb,EAAeD,EAAM/a,IACFsb,KAAOd,EAAQT,EAChC,MAAM6B,WAAW1B,GAEnB,GAAIc,GAAgBM,EAAG,CAGrB,IADA,IAAIO,EAAIrB,EACCG,EArIN,IAqIoCA,GArIpC,GAqI+C,CAChD,IAAImB,EAAInB,GAAKY,EArIZ,EAqI2BZ,GAAKY,EApIhC,MAoIqDZ,EAAIY,EAC1D,GAAIM,EAAIC,EAAG,MACX,IAAIC,EAAUF,EAAIC,EACdE,EAzIH,GAyIuBF,EACxBb,EAAO/c,KAAKic,EAAmBE,EAAayB,EAAIC,EAAUC,KAC1DH,EAAInL,EAAMqL,EAAUC,GAGtBf,EAAO/c,KAAKic,EAAmBE,EAAawB,KAC5CN,EAAOhB,EAAMC,EAAOmB,EAAuBF,GAAkBD,GAC7DhB,EAAQ,IACNiB,KAIJjB,IACAc,EAEJ,OAAOL,EAAOpN,KAAK,KAGrBrY,EAAOD,QAAU,SAAUwlB,GACzB,IAEI/a,EAAGic,EAFHC,EAAU,GACVC,EAASpB,EAAMtK,cAAcD,QAAQyJ,EAAiB,KAAU/O,MAAM,KAE1E,IAAKlL,EAAI,EAAGA,EAAImc,EAAOhgB,OAAQ6D,IAC7Bic,EAAQE,EAAOnc,GACfkc,EAAQhe,KAAK8b,EAActP,KAAKuR,GAAS,OAASnB,EAAOmB,GAASA,GAEpE,OAAOC,EAAQrO,KAAK,O,4BCrKtB,IAAI+K,EAAY,EAAQ,MACpBC,EAAyB,EAAQ,MAIrCrjB,EAAOD,QAAU,SAAgB6mB,GAC/B,IAAIC,EAAMpjB,OAAO4f,EAAuB3c,OACpCc,EAAS,GACTse,EAAI1C,EAAUwD,GAClB,GAAId,EAAI,GAAKA,GAAKgB,IAAU,MAAMV,WAAW,+BAC7C,KAAMN,EAAI,GAAIA,KAAO,KAAOe,GAAOA,GAAc,EAAJf,IAAOte,GAAUqf,GAC9D,OAAOrf,I,eCZT,IAAI6b,EAAyB,EAAQ,MAGjC0D,EAAa,IAFC,EAAQ,MAEW,IACjCC,EAAQC,OAAO,IAAMF,EAAaA,EAAa,KAC/CG,EAAQD,OAAOF,EAAaA,EAAa,MAGzC5e,EAAe,SAAUQ,GAC3B,OAAO,SAAUN,GACf,IAAI0S,EAAStX,OAAO4f,EAAuBhb,IAG3C,OAFW,EAAPM,IAAUoS,EAASA,EAAOC,QAAQgM,EAAO,KAClC,EAAPre,IAAUoS,EAASA,EAAOC,QAAQkM,EAAO,KACtCnM,IAIX/a,EAAOD,QAAU,CAGfuX,MAAOnP,EAAa,GAGpBrB,IAAKqB,EAAa,GAGlBuW,KAAMvW,EAAa,K,eC1BrB,IAiBIgf,EAAOC,EAASC,EAjBhBjY,EAAS,EAAQ,MACjB1F,EAAQ,EAAQ,MAChB1G,EAAO,EAAQ,MACf2c,EAAO,EAAQ,MACf3M,EAAgB,EAAQ,MACxB0J,EAAS,EAAQ,MACjBE,EAAU,EAAQ,MAElB0K,EAAWlY,EAAOkY,SAClB5a,EAAM0C,EAAOmY,aACb1Z,EAAQuB,EAAOoY,eACfpS,EAAUhG,EAAOgG,QACjBqS,EAAiBrY,EAAOqY,eACxBC,EAAWtY,EAAOsY,SAClB/B,EAAU,EACVgC,EAAQ,GAIRC,EAAM,SAAUhZ,GAElB,GAAI+Y,EAAM9O,eAAejK,GAAK,CAC5B,IAAI9D,EAAK6c,EAAM/Y,UACR+Y,EAAM/Y,GACb9D,MAIA+c,EAAS,SAAUjZ,GACrB,OAAO,WACLgZ,EAAIhZ,KAIJkZ,EAAW,SAAUC,GACvBH,EAAIG,EAAMja,OAGRka,EAAO,SAAUpZ,GAEnBQ,EAAO6Y,YAAYrZ,EAAK,GAAI0Y,EAASY,SAAW,KAAOZ,EAASlJ,OAI7D1R,GAAQmB,IACXnB,EAAM,SAAsB5B,GAG1B,IAFA,IAAIqN,EAAO,GACP3N,EAAI,EACDpG,UAAUuC,OAAS6D,GAAG2N,EAAKzP,KAAKtE,UAAUoG,MAMjD,OALAmd,IAAQhC,GAAW,YAEH,mBAAN7a,EAAmBA,EAAK5H,SAAS4H,IAAK3G,WAAM/D,EAAW+X,IAEjEgP,EAAMxB,GACCA,GAET9X,EAAQ,SAAwBe,UACvB+Y,EAAM/Y,IAGXgO,EACFuK,EAAQ,SAAUvY,GAChBwG,EAAQiI,SAASwK,EAAOjZ,KAGjB8Y,GAAYA,EAASS,IAC9BhB,EAAQ,SAAUvY,GAChB8Y,EAASS,IAAIN,EAAOjZ,KAIb6Y,IAAmB/K,GAE5B2K,GADAD,EAAU,IAAIK,GACCW,MACfhB,EAAQiB,MAAMC,UAAYR,EAC1BX,EAAQnkB,EAAKqkB,EAAKY,YAAaZ,EAAM,IAIrCjY,EAAOmZ,kBACe,mBAAfN,cACN7Y,EAAOoZ,eACRlB,GAAkC,UAAtBA,EAASY,WACpBxe,EAAMse,IAEPb,EAAQa,EACR5Y,EAAOmZ,iBAAiB,UAAWT,GAAU,IAG7CX,EAzEqB,uBAwEUnU,EAAc,UACrC,SAAUpE,GAChB+Q,EAAKkB,YAAY7N,EAAc,WAA6B,mBAAI,WAC9D2M,EAAK8I,YAAY/hB,MACjBkhB,EAAIhZ,KAKA,SAAUA,GAChB8Z,WAAWb,EAAOjZ,GAAK,KAK7B5O,EAAOD,QAAU,CACf2M,IAAKA,EACLmB,MAAOA,I,eCzGT,IAAIuV,EAAY,EAAQ,MAEpBuF,EAAMjQ,KAAKiQ,IACXC,EAAMlQ,KAAKkQ,IAKf5oB,EAAOD,QAAU,SAAU8G,EAAOF,GAChC,IAAIkiB,EAAUzF,EAAUvc,GACxB,OAAOgiB,EAAU,EAAIF,EAAIE,EAAUliB,EAAQ,GAAKiiB,EAAIC,EAASliB,K,eCT/D,IAAI6B,EAAgB,EAAQ,MACxB6a,EAAyB,EAAQ,MAErCrjB,EAAOD,QAAU,SAAUqD,GACzB,OAAOoF,EAAc6a,EAAuBjgB,M,SCL9C,IAAI0gB,EAAOpL,KAAKoL,KACZ5I,EAAQxC,KAAKwC,MAIjBlb,EAAOD,QAAU,SAAUoK,GACzB,OAAO2e,MAAM3e,GAAYA,GAAY,GAAKA,EAAW,EAAI+Q,EAAQ4I,GAAM3Z,K,eCNzE,IAAIiZ,EAAY,EAAQ,MAEpBwF,EAAMlQ,KAAKkQ,IAIf5oB,EAAOD,QAAU,SAAUoK,GACzB,OAAOA,EAAW,EAAIye,EAAIxF,EAAUjZ,GAAW,kBAAoB,I,eCPrE,IAAIkZ,EAAyB,EAAQ,MAIrCrjB,EAAOD,QAAU,SAAUoK,GACzB,OAAO3F,OAAO6e,EAAuBlZ,M,eCLvC,IAAIjE,EAAW,EAAQ,KAMvBlG,EAAOD,QAAU,SAAUwlB,EAAOwD,GAChC,IAAK7iB,EAASqf,GAAQ,OAAOA,EAC7B,IAAIza,EAAIke,EACR,GAAID,GAAoD,mBAAxBje,EAAKya,EAAM9Z,YAA4BvF,EAAS8iB,EAAMle,EAAG9C,KAAKud,IAAS,OAAOyD,EAC9G,GAAmC,mBAAvBle,EAAKya,EAAM0D,WAA2B/iB,EAAS8iB,EAAMle,EAAG9C,KAAKud,IAAS,OAAOyD,EACzF,IAAKD,GAAoD,mBAAxBje,EAAKya,EAAM9Z,YAA4BvF,EAAS8iB,EAAMle,EAAG9C,KAAKud,IAAS,OAAOyD,EAC/G,MAAM/iB,UAAU,6C,eCZlB,IAGIiP,EAAO,GAEXA,EALsB,EAAQ,KAEVvL,CAAgB,gBAGd,IAEtB3J,EAAOD,QAA2B,eAAjB0D,OAAOyR,I,SCPxB,IAAItG,EAAK,EACLsa,EAAUxQ,KAAKyQ,SAEnBnpB,EAAOD,QAAU,SAAUgF,GACzB,MAAO,UAAYtB,YAAerD,IAAR2E,EAAoB,GAAKA,GAAO,QAAU6J,EAAKsa,GAASzd,SAAS,M,eCH7F,IAAI2d,EAAgB,EAAQ,MAE5BppB,EAAOD,QAAUqpB,IACXzjB,OAAOd,MACkB,iBAAnBc,OAAO+B,U,eCLnB,IAAIiC,EAAkB,EAAQ,MAE9B5J,EAAQ8F,EAAI8D,G,eCFZ,IAAIyF,EAAS,EAAQ,MACjB0K,EAAS,EAAQ,MACjB9L,EAAM,EAAQ,MACdoL,EAAM,EAAQ,MACdgQ,EAAgB,EAAQ,MACxBC,EAAoB,EAAQ,MAE5BC,EAAwBxP,EAAO,OAC/BnU,EAASyJ,EAAOzJ,OAChB4jB,EAAwBF,EAAoB1jB,EAASA,GAAUA,EAAO6jB,eAAiBpQ,EAE3FpZ,EAAOD,QAAU,SAAUqG,GAOvB,OANG4H,EAAIsb,EAAuBljB,KAAWgjB,GAAuD,iBAA/BE,EAAsBljB,MACnFgjB,GAAiBpb,EAAIrI,EAAQS,GAC/BkjB,EAAsBljB,GAAQT,EAAOS,GAErCkjB,EAAsBljB,GAAQmjB,EAAsB,UAAYnjB,IAE3DkjB,EAAsBljB,K,SCjBjCpG,EAAOD,QAAU,iD,4BCAjB,IAAIoP,EAAI,EAAQ,MACZuB,EAAiB,EAAQ,KACzBc,EAAiB,EAAQ,MACzBlI,EAAS,EAAQ,MACjBgG,EAA8B,EAAQ,MACtCsB,EAA2B,EAAQ,MACnCzE,EAAU,EAAQ,MAElBsd,EAAkB,SAAwBC,EAAQC,GACpD,IAAIxgB,EAAOzC,KACX,KAAMyC,aAAgBsgB,GAAkB,OAAO,IAAIA,EAAgBC,EAAQC,GACvEnY,IAEFrI,EAAOqI,EAAe,IAAIoY,WAAMxpB,GAAYsQ,EAAevH,UAE7C/I,IAAZupB,GAAuBra,EAA4BnG,EAAM,UAAW1F,OAAOkmB,IAC/E,IAAIE,EAAc,GAGlB,OAFA1d,EAAQud,EAAQG,EAAYnhB,KAAM,CAAES,KAAM0gB,IAC1Cva,EAA4BnG,EAAM,SAAU0gB,GACrC1gB,GAGTsgB,EAAgBtmB,UAAYmG,EAAOsgB,MAAMzmB,UAAW,CAClD6G,YAAa4G,EAAyB,EAAG6Y,GACzCE,QAAS/Y,EAAyB,EAAG,IACrCxK,KAAMwK,EAAyB,EAAG,oBAKpCzB,EAAE,CAAEC,QAAQ,GAAQ,CAClB0a,eAAgBL,K,4BC/BlB,IAAIta,EAAI,EAAQ,MACZzF,EAAQ,EAAQ,MAChB3H,EAAU,EAAQ,MAClBmE,EAAW,EAAQ,KACnBG,EAAW,EAAQ,MACnBE,EAAW,EAAQ,MACnBe,EAAiB,EAAQ,MACzBmB,EAAqB,EAAQ,MAC7BshB,EAA+B,EAAQ,KACvCpgB,EAAkB,EAAQ,MAC1BC,EAAa,EAAQ,MAErBogB,EAAuBrgB,EAAgB,sBACvCsgB,EAAmB,iBACnBC,EAAiC,iCAKjCC,EAA+BvgB,GAAc,KAAOF,GAAM,WAC5D,IAAIK,EAAQ,GAEZ,OADAA,EAAMigB,IAAwB,EACvBjgB,EAAM9H,SAAS,KAAO8H,KAG3BqgB,EAAkBL,EAA6B,UAE/CM,EAAqB,SAAU5jB,GACjC,IAAKP,EAASO,GAAI,OAAO,EACzB,IAAI6jB,EAAa7jB,EAAEujB,GACnB,YAAsB5pB,IAAfkqB,IAA6BA,EAAavoB,EAAQ0E,IAQ3D0I,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,QALpB+Z,IAAiCC,GAKK,CAElDnoB,OAAQ,SAAgBuY,GACtB,IAGIhQ,EAAG2a,EAAGxe,EAAQ4jB,EAAKC,EAHnB/jB,EAAIJ,EAASK,MACb0Y,EAAI3W,EAAmBhC,EAAG,GAC1Bqf,EAAI,EAER,IAAKtb,GAAK,EAAG7D,EAASvC,UAAUuC,OAAQ6D,EAAI7D,EAAQ6D,IAElD,GAAI6f,EADJG,GAAW,IAAPhgB,EAAW/D,EAAIrC,UAAUoG,IACF,CAEzB,GAAIsb,GADJyE,EAAMhkB,EAASikB,EAAE7jB,SACHsjB,EAAkB,MAAMhkB,UAAUikB,GAChD,IAAK/E,EAAI,EAAGA,EAAIoF,EAAKpF,IAAKW,IAASX,KAAKqF,GAAGljB,EAAe8X,EAAG0G,EAAG0E,EAAErF,QAC7D,CACL,GAAIW,GAAKmE,EAAkB,MAAMhkB,UAAUikB,GAC3C5iB,EAAe8X,EAAG0G,IAAK0E,GAI3B,OADApL,EAAEzY,OAASmf,EACJ1G,M,cC1DX,IAAIjQ,EAAI,EAAQ,MACZhN,EAAO,EAAQ,MACfsoB,EAAmB,EAAQ,MAI/Btb,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,GAAQ,CAClCzQ,KAAMA,IAIRsoB,EAAiB,S,4BCVjB,IAAItb,EAAI,EAAQ,MACZub,EAAU,eAQdvb,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,QAPC,EAAQ,IAEjB2Z,CAA6B,WAKW,CAChE3nB,OAAQ,SAAgB+E,GACtB,OAAOujB,EAAQhkB,KAAMS,EAAY/C,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,O,4BCX3E,IAAI+O,EAAI,EAAQ,MACZwb,EAAa,kBACbF,EAAmB,EAAQ,MAE3BG,EAAa,YACbC,GAAc,EAGdD,IAAc,IAAI/oB,MAAM,GAAa,WAAE,WAAcgpB,GAAc,KAIvE1b,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,OAAQya,GAAe,CACvDxoB,UAAW,SAAmB8E,GAC5B,OAAOwjB,EAAWjkB,KAAMS,EAAY/C,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,MAK9EqqB,EAAiBG,I,2BCnBjB,IAAIzb,EAAI,EAAQ,MACZ2b,EAAQ,aACRL,EAAmB,EAAQ,MAE3BM,EAAO,OACPF,GAAc,EAGdE,IAAQ,IAAIlpB,MAAM,GAAO,MAAE,WAAcgpB,GAAc,KAI3D1b,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,OAAQya,GAAe,CACvDvoB,KAAM,SAAc6E,GAClB,OAAO2jB,EAAMpkB,KAAMS,EAAY/C,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,MAKzEqqB,EAAiBM,I,4BCnBjB,IAAI5b,EAAI,EAAQ,MACZgI,EAAmB,EAAQ,MAC3B9Q,EAAW,EAAQ,MACnBE,EAAW,EAAQ,MACnB6c,EAAY,EAAQ,MACpB3a,EAAqB,EAAQ,MAIjC0G,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,GAAQ,CAClCrQ,KAAM,WACJ,IAAIyoB,EAAW5mB,UAAUuC,OAASvC,UAAU,QAAKhE,EAC7CqG,EAAIJ,EAASK,MACb2Q,EAAY9Q,EAASE,EAAEE,QACvByY,EAAI3W,EAAmBhC,EAAG,GAE9B,OADA2Y,EAAEzY,OAASwQ,EAAiBiI,EAAG3Y,EAAGA,EAAG4Q,EAAW,OAAgBjX,IAAb4qB,EAAyB,EAAI5H,EAAU4H,IACnF5L,M,4BChBX,IAAIjQ,EAAI,EAAQ,MACZ3M,EAAU,EAAQ,MAKtB2M,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,OAAQ,GAAG5N,SAAWA,GAAW,CACjEA,QAASA,K,eCRX,IAAI2M,EAAI,EAAQ,MACZrN,EAAO,EAAQ,MAUnBqN,EAAE,CAAE5F,OAAQ,QAASqN,MAAM,EAAMxG,QATC,EAAQ,KAEf6a,EAA4B,SAAUhe,GAE/DpL,MAAMC,KAAKmL,OAKmD,CAC9DnL,KAAMA,K,4BCXR,IAAIqN,EAAI,EAAQ,MACZ+b,EAAY,iBACZT,EAAmB,EAAQ,MAI/Btb,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,GAAQ,CAClCnQ,SAAU,SAAkB6F,GAC1B,OAAO4iB,EAAUxkB,KAAM4B,EAAIlE,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,MAKrEqqB,EAAiB,a,4BCZjB,IAAItb,EAAI,EAAQ,MACZgc,EAAW,gBACXjkB,EAAsB,EAAQ,MAE9BkkB,EAAgB,GAAG1oB,QAEnB2oB,IAAkBD,GAAiB,EAAI,CAAC,GAAG1oB,QAAQ,GAAI,GAAK,EAC5DuE,EAAgBC,EAAoB,WAIxCiI,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,OAAQib,IAAkBpkB,GAAiB,CAC3EvE,QAAS,SAAiB4oB,GACxB,OAAOD,EAEHD,EAAcjnB,MAAMuC,KAAMtC,YAAc,EACxC+mB,EAASzkB,KAAM4kB,EAAelnB,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,O,eClBpE,EAAQ,KAKhB+O,CAAE,CAAE5F,OAAQ,QAASqN,MAAM,GAAQ,CACjC7U,QALY,EAAQ,S,4BCAtB,IAAImG,EAAkB,EAAQ,MAC1BuiB,EAAmB,EAAQ,MAC3B5Z,EAAY,EAAQ,MACpBrE,EAAsB,EAAQ,MAC9BJ,EAAiB,EAAQ,MAEzBmf,EAAiB,iBACjB9e,EAAmBD,EAAoBE,IACvCa,EAAmBf,EAAoBI,UAAU2e,GAYrDvrB,EAAOD,QAAUqM,EAAevK,MAAO,SAAS,SAAU0M,EAAUC,GAClE/B,EAAiB/F,KAAM,CACrBwG,KAAMqe,EACNhiB,OAAQrB,EAAgBqG,GACxB1H,MAAO,EACP2H,KAAMA,OAIP,WACD,IAAIf,EAAQF,EAAiB7G,MACzB6C,EAASkE,EAAMlE,OACfiF,EAAOf,EAAMe,KACb3H,EAAQ4G,EAAM5G,QAClB,OAAK0C,GAAU1C,GAAS0C,EAAO5C,QAC7B8G,EAAMlE,YAASnJ,EACR,CAAEoG,WAAOpG,EAAW6H,MAAM,IAEvB,QAARuG,EAAuB,CAAEhI,MAAOK,EAAOoB,MAAM,GACrC,UAARuG,EAAyB,CAAEhI,MAAO+C,EAAO1C,GAAQoB,MAAM,GACpD,CAAEzB,MAAO,CAACK,EAAO0C,EAAO1C,IAASoB,MAAM,KAC7C,UAKH4I,EAAU2a,UAAY3a,EAAUhP,MAGhC4oB,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,Y,4BCnDjB,IAAItb,EAAI,EAAQ,MACZsc,EAAO,YAQXtc,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,QAPC,EAAQ,IAEjB2Z,CAA6B,QAKW,CAChEpnB,IAAK,SAAawE,GAChB,OAAOskB,EAAK/kB,KAAMS,EAAY/C,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,O,4BCXxE,IAAI+O,EAAI,EAAQ,MACZuc,EAAU,aACVxkB,EAAsB,EAAQ,MAC9BykB,EAAiB,EAAQ,MACzB/O,EAAU,EAAQ,MAStBzN,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,QAPdlJ,EAAoB,YAGtB0V,GAAW+O,EAAiB,IAAMA,EAAiB,IAIK,CACxE/oB,OAAQ,SAAgBuE,GACtB,OAAOukB,EAAQhlB,KAAMS,EAAY/C,UAAUuC,OAAQvC,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,O,4BCf7F,IAAI+O,EAAI,EAAQ,MACZpN,EAAU,EAAQ,MAElB6pB,EAAgB,GAAG/oB,QACnBqS,EAAO,CAAC,EAAG,GAMf/F,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,OAAQ3M,OAAOyR,KAAUzR,OAAOyR,EAAKrS,YAAc,CACnFA,QAAS,WAGP,OADId,EAAQ2E,QAAOA,KAAKC,OAASD,KAAKC,QAC/BilB,EAAc5jB,KAAKtB,U,2BCd9B,IAAIyI,EAAI,EAAQ,MACZjJ,EAAW,EAAQ,KACnBnE,EAAU,EAAQ,MAClBuE,EAAkB,EAAQ,MAC1BC,EAAW,EAAQ,MACnB2B,EAAkB,EAAQ,MAC1BZ,EAAiB,EAAQ,MACzBqC,EAAkB,EAAQ,MAG1BkiB,EAF+B,EAAQ,IAEjB9B,CAA6B,SAEnDlgB,EAAUF,EAAgB,WAC1BmiB,EAAc,GAAGhpB,MACjB6lB,EAAMjQ,KAAKiQ,IAKfxZ,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,QAASyb,GAAuB,CAChE/oB,MAAO,SAAewU,EAAOxQ,GAC3B,IAKIX,EAAaqB,EAAQse,EALrBrf,EAAIyB,EAAgBxB,MACpBC,EAASJ,EAASE,EAAEE,QACpBwe,EAAI7e,EAAgBgR,EAAO3Q,GAC3BolB,EAAMzlB,OAAwBlG,IAAR0G,EAAoBH,EAASG,EAAKH,GAG5D,GAAI5E,EAAQ0E,KAGgB,mBAF1BN,EAAcM,EAAEuD,cAEyB7D,IAAgBtE,QAASE,EAAQoE,EAAYhD,WAE3E+C,EAASC,IAEE,QADpBA,EAAcA,EAAY0D,MACA1D,OAAc/F,GAHxC+F,OAAc/F,EAKZ+F,IAAgBtE,YAAyBzB,IAAhB+F,GAC3B,OAAO2lB,EAAY9jB,KAAKvB,EAAG0e,EAAG4G,GAIlC,IADAvkB,EAAS,SAAqBpH,IAAhB+F,EAA4BtE,MAAQsE,GAAawiB,EAAIoD,EAAM5G,EAAG,IACvEW,EAAI,EAAGX,EAAI4G,EAAK5G,IAAKW,IAASX,KAAK1e,GAAGa,EAAeE,EAAQse,EAAGrf,EAAE0e,IAEvE,OADA3d,EAAOb,OAASmf,EACTte,M,4BC3CX,IAAI2H,EAAI,EAAQ,MACZ6c,EAAQ,aAOZ7c,EAAE,CAAE5F,OAAQ,QAASqJ,OAAO,EAAMxC,QANR,EAAQ,KAEdlJ,CAAoB,SAIoB,CAC1DnE,KAAM,SAAcoE,GAClB,OAAO6kB,EAAMtlB,KAAMS,EAAY/C,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,O,eCTlD,EAAQ,KAG/BqqB,CAAiB,S,eCLT,EAAQ,KAKhBtb,CAAE,CAAE5F,OAAQ,WAAYqJ,OAAO,GAAQ,CACrC5P,KALS,EAAQ,S,eCDnB,IAAImM,EAAI,EAAQ,MACZkG,EAAa,EAAQ,KACrB3L,EAAQ,EAAQ,MAEhBuiB,EAAa5W,EAAW,OAAQ,aAChC6W,EAAK,mBACLC,EAAM,oBACNC,EAAK,oBAELC,EAAM,SAAU/W,EAAOgX,EAAQvR,GACjC,IAAIhN,EAAOgN,EAAO4I,OAAO2I,EAAS,GAC9B3kB,EAAOoT,EAAO4I,OAAO2I,EAAS,GAClC,OAAKH,EAAIjX,KAAKI,KAAW8W,EAAGlX,KAAKvN,IAAWykB,EAAGlX,KAAKI,KAAW6W,EAAIjX,KAAKnH,GAC/D,MAAQuH,EAAMoO,WAAW,GAAGjY,SAAS,IACrC6J,GAGPpD,EAASxI,GAAM,WACjB,MAAsC,qBAA/BuiB,EAAW,iBACY,cAAzBA,EAAW,aAGdA,GAIF9c,EAAE,CAAE5F,OAAQ,OAAQqN,MAAM,EAAMxG,OAAQ8B,GAAU,CAEhDlO,UAAW,SAAmBZ,EAAIa,EAAUC,GAC1C,IAAIsD,EAASykB,EAAW9nB,MAAM,KAAMC,WACpC,MAAwB,iBAAVoD,EAAqBA,EAAOwT,QAAQkR,EAAIG,GAAO7kB,M,eC9BnE,IAAI4H,EAAS,EAAQ,MACA,EAAQ,IAI7BG,CAAeH,EAAOrL,KAAM,QAAQ,I,4BCJpC,IAAI8L,EAAa,EAAQ,MACrB0c,EAAmB,EAAQ,MAI/BvsB,EAAOD,QAAU8P,EAAW,OAAO,SAAU2c,GAC3C,OAAO,WAAiB,OAAOA,EAAK9lB,KAAMtC,UAAUuC,OAASvC,UAAU,QAAKhE,MAC3EmsB,I,0BCRK,EAAQ,KAKhBpd,CAAE,CAAE5F,OAAQ,SAAUqN,MAAM,GAAQ,CAClCrS,UALc,EAAQ,S,eCDhB,EAAQ,KAIhB4K,CAAE,CAAE5F,OAAQ,SAAUqN,MAAM,GAAQ,CAClCqT,iBAAkB,oB,eCLpB,IAAI9a,EAAI,EAAQ,MACZ1K,EAAS,EAAQ,MAKrB0K,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,OAAQ5L,OAAOC,SAAWA,GAAU,CACpEA,OAAQA,K,eCPV,IAAI0K,EAAI,EAAQ,MACZ7C,EAAc,EAAQ,MAK1B6C,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,QAAS9D,EAAazH,MAAOyH,GAAe,CAC5E5H,iBALqB,EAAQ,S,eCF/B,IAAIyK,EAAI,EAAQ,MACZ7C,EAAc,EAAQ,MAK1B6C,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,QAAS9D,EAAazH,MAAOyH,GAAe,CAC5ExH,eAL+B,EAAQ,MAKIe,K,eCP7C,IAAIsJ,EAAI,EAAQ,MACZsd,EAAW,gBAIftd,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,GAAQ,CAClC1U,QAAS,SAAiBuE,GACxB,OAAOgmB,EAAShmB,O,eCPpB,IAAI0I,EAAI,EAAQ,MACZkK,EAAW,EAAQ,MACnB3P,EAAQ,EAAQ,MAChBxD,EAAW,EAAQ,KACnByT,EAAW,iBAGX+S,EAAUloB,OAAOS,OAKrBkK,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,OAJR1G,GAAM,WAAcgjB,EAAQ,MAIS7nB,MAAOwU,GAAY,CAChFpU,OAAQ,SAAgB7B,GACtB,OAAOspB,GAAWxmB,EAAS9C,GAAMspB,EAAQ/S,EAASvW,IAAOA,M,eCd7D,IAAI+L,EAAI,EAAQ,MACZhD,EAAU,EAAQ,MAClB7E,EAAiB,EAAQ,MAI7B6H,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,GAAQ,CAClC1R,YAAa,SAAqB+H,GAChC,IAAI0f,EAAM,GAIV,OAHAxgB,EAAQc,GAAU,SAAUkY,EAAGyH,GAC7BtlB,EAAeqlB,EAAKxH,EAAGyH,KACtB,CAAEtf,YAAY,IACVqf,M,eCZX,IAAIxd,EAAI,EAAQ,MACZzF,EAAQ,EAAQ,MAChBxB,EAAkB,EAAQ,MAC1B2kB,EAAiC,UACjCvgB,EAAc,EAAQ,MAEtBwgB,EAAsBpjB,GAAM,WAAcmjB,EAA+B,MAK7E1d,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,QAJpB9D,GAAewgB,EAIqBjoB,MAAOyH,GAAe,CACtEnH,yBAA0B,SAAkC/B,EAAI2B,GAC9D,OAAO8nB,EAA+B3kB,EAAgB9E,GAAK2B,O,eCb/D,IAAIoK,EAAI,EAAQ,MACZ7C,EAAc,EAAQ,MACtBygB,EAAU,EAAQ,MAClB7kB,EAAkB,EAAQ,MAC1B8kB,EAAiC,EAAQ,MACzC1lB,EAAiB,EAAQ,MAI7B6H,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAM/R,MAAOyH,GAAe,CACtDlH,0BAA2B,SAAmCoG,GAO5D,IANA,IAKIzG,EAAKyR,EALL/P,EAAIyB,EAAgBsD,GACpBrG,EAA2B6nB,EAA+BnnB,EAC1DP,EAAOynB,EAAQtmB,GACfe,EAAS,GACTX,EAAQ,EAELvB,EAAKqB,OAASE,QAEAzG,KADnBoW,EAAarR,EAAyBsB,EAAG1B,EAAMO,EAAKuB,QACtBS,EAAeE,EAAQzC,EAAKyR,GAE5D,OAAOhP,M,eCrBX,IAAI2H,EAAI,EAAQ,MACZ9I,EAAW,EAAQ,MACnB4mB,EAAa,EAAQ,MAOzB9d,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,OANtB,EAAQ,KAEM1G,EAAM,WAAcujB,EAAW,OAIQ,CAC/D3nB,KAAM,SAAclC,GAClB,OAAO6pB,EAAW5mB,EAASjD,Q,2BCX/B,IAAI+L,EAAI,EAAQ,MACZ+d,EAAU,eAId/d,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,GAAQ,CAClCrR,OAAQ,SAAgBkB,GACtB,OAAOymB,EAAQzmB,O,eCPnB,IAAI0I,EAAI,EAAQ,MACZge,EAAyB,EAAQ,MAIrChe,EAAE,CAAEC,QAAQ,EAAMgB,OAAQ5K,UAAY2nB,GAA0B,CAC9D3nB,SAAU2nB,K,4BCLZ,IAAIhe,EAAI,EAAQ,MACZ9E,EAAY,EAAQ,MACpB+iB,EAA6B,EAAQ,MACrCC,EAAU,EAAQ,GAClBlhB,EAAU,EAAQ,MAItBgD,EAAE,CAAE5F,OAAQ,UAAWqN,MAAM,GAAQ,CACnC0W,WAAY,SAAoBrgB,GAC9B,IAAIrF,EAAIlB,KACJ6mB,EAAaH,EAA2BvnB,EAAE+B,GAC1CwV,EAAUmQ,EAAWnQ,QACrBmB,EAASgP,EAAWhP,OACpB/W,EAAS6lB,GAAQ,WACnB,IAAIG,EAAiBnjB,EAAUzC,EAAEwV,SAC7B7X,EAAS,GACTogB,EAAU,EACV8H,EAAY,EAChBthB,EAAQc,GAAU,SAAUsP,GAC1B,IAAI1V,EAAQ8e,IACR+H,GAAgB,EACpBnoB,EAAOmD,UAAKtI,GACZqtB,IACAD,EAAexlB,KAAKJ,EAAG2U,GAASC,MAAK,SAAUhW,GACzCknB,IACJA,GAAgB,EAChBnoB,EAAOsB,GAAS,CAAE8mB,OAAQ,YAAannB,MAAOA,KAC5CinB,GAAarQ,EAAQ7X,OACtB,SAAUyF,GACP0iB,IACJA,GAAgB,EAChBnoB,EAAOsB,GAAS,CAAE8mB,OAAQ,WAAYC,OAAQ5iB,KAC5CyiB,GAAarQ,EAAQ7X,YAGzBkoB,GAAarQ,EAAQ7X,MAGzB,OADIiC,EAAOwD,OAAOuT,EAAO/W,EAAOhB,OACzB+mB,EAAWhR,Y,4BCvCtB,IAAIpN,EAAI,EAAQ,MACZ9E,EAAY,EAAQ,MACpBgL,EAAa,EAAQ,KACrB+X,EAA6B,EAAQ,MACrCC,EAAU,EAAQ,GAClBlhB,EAAU,EAAQ,MAElB0hB,EAAoB,0BAIxB1e,EAAE,CAAE5F,OAAQ,UAAWqN,MAAM,GAAQ,CACnCkX,IAAK,SAAa7gB,GAChB,IAAIrF,EAAIlB,KACJ6mB,EAAaH,EAA2BvnB,EAAE+B,GAC1CwV,EAAUmQ,EAAWnQ,QACrBmB,EAASgP,EAAWhP,OACpB/W,EAAS6lB,GAAQ,WACnB,IAAIG,EAAiBnjB,EAAUzC,EAAEwV,SAC7BsM,EAAS,GACT/D,EAAU,EACV8H,EAAY,EACZM,GAAkB,EACtB5hB,EAAQc,GAAU,SAAUsP,GAC1B,IAAI1V,EAAQ8e,IACRqI,GAAkB,EACtBtE,EAAOhhB,UAAKtI,GACZqtB,IACAD,EAAexlB,KAAKJ,EAAG2U,GAASC,MAAK,SAAUhW,GACzCwnB,GAAmBD,IACvBA,GAAkB,EAClB3Q,EAAQ5W,OACP,SAAUwE,GACPgjB,GAAmBD,IACvBC,GAAkB,EAClBtE,EAAO7iB,GAASmE,IACdyiB,GAAalP,EAAO,IAAKlJ,EAAW,kBAAhB,CAAmCqU,EAAQmE,aAGnEJ,GAAalP,EAAO,IAAKlJ,EAAW,kBAAhB,CAAmCqU,EAAQmE,OAGnE,OADIrmB,EAAOwD,OAAOuT,EAAO/W,EAAOhB,OACzB+mB,EAAWhR,Y,4BC1CtB,IAAIpN,EAAI,EAAQ,MACZuC,EAAU,EAAQ,MAClBuc,EAAgB,EAAQ,MACxBvkB,EAAQ,EAAQ,MAChB2L,EAAa,EAAQ,KACrB6Y,EAAqB,EAAQ,KAC7BV,EAAiB,EAAQ,MACzB/b,EAAW,EAAQ,MAyBvB,GAhBAtC,EAAE,CAAE5F,OAAQ,UAAWqJ,OAAO,EAAMsE,MAAM,EAAM9G,SAN5B6d,GAAiBvkB,GAAM,WACzCukB,EAAc9qB,UAAmB,QAAE6E,KAAK,CAAEwU,KAAM,eAA+B,mBAKV,CACrE,QAAW,SAAU2R,GACnB,IAAIvmB,EAAIsmB,EAAmBxnB,KAAM2O,EAAW,YACxC+Y,EAAiC,mBAAbD,EACxB,OAAOznB,KAAK8V,KACV4R,EAAa,SAAU1L,GACrB,OAAO8K,EAAe5lB,EAAGumB,KAAa3R,MAAK,WAAc,OAAOkG,MAC9DyL,EACJC,EAAa,SAAUC,GACrB,OAAOb,EAAe5lB,EAAGumB,KAAa3R,MAAK,WAAc,MAAM6R,MAC7DF,OAMLzc,GAAmC,mBAAjBuc,EAA6B,CAClD,IAAI7jB,EAASiL,EAAW,WAAWlS,UAAmB,QAClD8qB,EAAc9qB,UAAmB,UAAMiH,GACzCqH,EAASwc,EAAc9qB,UAAW,UAAWiH,EAAQ,CAAEwY,QAAQ,M,4BCnCnE,IAqDI0L,EAAUC,EAAsBC,EAAgBC,EArDhDtf,EAAI,EAAQ,MACZuC,EAAU,EAAQ,MAClBtC,EAAS,EAAQ,MACjBiG,EAAa,EAAQ,KACrB4Y,EAAgB,EAAQ,MACxBxc,EAAW,EAAQ,MACnBxF,EAAc,EAAQ,MACtBuF,EAAiB,EAAQ,MACzBjC,EAAiB,EAAQ,KACzBlD,EAAa,EAAQ,MACrBnG,EAAW,EAAQ,KACnBmE,EAAY,EAAQ,MACpB6B,EAAa,EAAQ,MACrBgN,EAAgB,EAAQ,MACxB/M,EAAU,EAAQ,MAClB8e,EAA8B,EAAQ,MACtCiD,EAAqB,EAAQ,KAC7BzQ,EAAO,YACPiR,EAAY,EAAQ,MACpBlB,EAAiB,EAAQ,MACzBmB,EAAmB,EAAQ,MAC3BvB,EAA6B,EAAQ,MACrCC,EAAU,EAAQ,GAClB7gB,EAAsB,EAAQ,MAC9BoJ,EAAW,EAAQ,MACnBjM,EAAkB,EAAQ,MAC1BilB,EAAa,EAAQ,MACrBhS,EAAU,EAAQ,MAClBhT,EAAa,EAAQ,MAErBC,EAAUF,EAAgB,WAC1BklB,EAAU,UACVthB,EAAmBf,EAAoByB,IACvCxB,EAAmBD,EAAoBE,IACvCoiB,EAA0BtiB,EAAoBI,UAAUiiB,GACxDE,EAAyBd,GAAiBA,EAAc9qB,UACxD6rB,EAAqBf,EACrBgB,EAA8BF,EAC9B9oB,EAAYmJ,EAAOnJ,UACnB6M,EAAW1D,EAAO0D,SAClBsC,EAAUhG,EAAOgG,QACjBqN,EAAuB2K,EAA2BvnB,EAClDqpB,EAA8BzM,EAC9B0M,KAAoBrc,GAAYA,EAASsc,aAAehgB,EAAOigB,eAC/DC,EAAyD,mBAAzBC,sBAChCC,EAAsB,qBAOtBC,GAAc,EAGdvd,EAAS0D,EAASiZ,GAAS,WAC7B,IAAIa,EAAyBxW,EAAc8V,KAAwBvrB,OAAOurB,GAI1E,IAAKU,GAAyC,KAAf9lB,EAAmB,OAAO,EAEzD,GAAI8H,IAAYud,EAAqC,QAAG,OAAO,EAI/D,GAAIrlB,GAAc,IAAM,cAAcsL,KAAK8Z,GAAqB,OAAO,EAEvE,IAAIzS,EAAU,IAAIyS,GAAmB,SAAU5R,GAAWA,EAAQ,MAC9DuS,EAAc,SAAUtkB,GAC1BA,GAAK,eAA6B,gBAKpC,OAHkBkR,EAAQvS,YAAc,IAC5BH,GAAW8lB,IACvBF,EAAclT,EAAQC,MAAK,yBAAwCmT,KAG3DD,GAA0Bd,IAAeU,KAG/CM,GAAsB1d,IAAW+Y,GAA4B,SAAUhe,GACzE+hB,EAAmBa,IAAI5iB,GAAiB,OAAE,kBAIxC6iB,GAAa,SAAU1sB,GACzB,IAAIoZ,EACJ,SAAOtW,EAAS9C,IAAkC,mBAAnBoZ,EAAOpZ,EAAGoZ,QAAsBA,GAG7DJ,GAAS,SAAU3O,EAAOsiB,GAC5B,IAAItiB,EAAMuiB,SAAV,CACAviB,EAAMuiB,UAAW,EACjB,IAAIC,EAAQxiB,EAAMyiB,UAClBxB,GAAU,WAKR,IAJA,IAAIloB,EAAQiH,EAAMjH,MACd2pB,EAhDQ,GAgDH1iB,EAAMA,MACX5G,EAAQ,EAELopB,EAAMtpB,OAASE,GAAO,CAC3B,IAKIW,EAAQgV,EAAM4T,EALdC,EAAWJ,EAAMppB,KACjBypB,EAAUH,EAAKE,EAASF,GAAKE,EAASE,KACtCnT,EAAUiT,EAASjT,QACnBmB,EAAS8R,EAAS9R,OAClBtB,EAASoT,EAASpT,OAEtB,IACMqT,GACGH,IAzDC,IA0DA1iB,EAAM+iB,WAAyBC,GAAkBhjB,GACrDA,EAAM+iB,UA5DJ,IA8DY,IAAZF,EAAkB9oB,EAAShB,GAEzByW,GAAQA,EAAOE,QACnB3V,EAAS8oB,EAAQ9pB,GACbyW,IACFA,EAAOC,OACPkT,GAAS,IAGT5oB,IAAW6oB,EAAS9T,QACtBgC,EAAOtY,EAAU,yBACRuW,EAAOsT,GAAWtoB,IAC3BgV,EAAKxU,KAAKR,EAAQ4V,EAASmB,GACtBnB,EAAQ5V,IACV+W,EAAO/X,GACd,MAAOwE,GACHiS,IAAWmT,GAAQnT,EAAOC,OAC9BqB,EAAOvT,IAGXyC,EAAMyiB,UAAY,GAClBziB,EAAMuiB,UAAW,EACbD,IAAatiB,EAAM+iB,WAAWE,GAAYjjB,QAI9C4hB,GAAgB,SAAUjpB,EAAMmW,EAASqR,GAC3C,IAAI7F,EAAOuI,EACPnB,IACFpH,EAAQjV,EAASsc,YAAY,UACvB7S,QAAUA,EAChBwL,EAAM6F,OAASA,EACf7F,EAAM4I,UAAUvqB,GAAM,GAAO,GAC7BgJ,EAAOigB,cAActH,IAChBA,EAAQ,CAAExL,QAASA,EAASqR,OAAQA,IACtC0B,IAA2BgB,EAAUlhB,EAAO,KAAOhJ,IAAQkqB,EAAQvI,GAC/D3hB,IAASopB,GAAqBb,EAAiB,8BAA+Bf,IAGrF8C,GAAc,SAAUjjB,GAC1BgQ,EAAKzV,KAAKoH,GAAQ,WAChB,IAGI5H,EAHA+U,EAAU9O,EAAM4M,OAChB7T,EAAQiH,EAAMjH,MAGlB,GAFmBoqB,GAAYnjB,KAG7BjG,EAAS6lB,GAAQ,WACXzQ,EACFxH,EAAQyb,KAAK,qBAAsBrqB,EAAO+V,GACrC8S,GAAcG,EAAqBjT,EAAS/V,MAGrDiH,EAAM+iB,UAAY5T,GAAWgU,GAAYnjB,GAjH/B,EADF,EAmHJjG,EAAOwD,OAAO,MAAMxD,EAAOhB,UAKjCoqB,GAAc,SAAUnjB,GAC1B,OAzHY,IAyHLA,EAAM+iB,YAA0B/iB,EAAM1H,QAG3C0qB,GAAoB,SAAUhjB,GAChCgQ,EAAKzV,KAAKoH,GAAQ,WAChB,IAAImN,EAAU9O,EAAM4M,OAChBuC,EACFxH,EAAQyb,KAAK,mBAAoBtU,GAC5B8S,GArIa,mBAqIoB9S,EAAS9O,EAAMjH,WAIvDxD,GAAO,SAAU8H,EAAI2C,EAAOqjB,GAC9B,OAAO,SAAUtqB,GACfsE,EAAG2C,EAAOjH,EAAOsqB,KAIjBC,GAAiB,SAAUtjB,EAAOjH,EAAOsqB,GACvCrjB,EAAMxF,OACVwF,EAAMxF,MAAO,EACT6oB,IAAQrjB,EAAQqjB,GACpBrjB,EAAMjH,MAAQA,EACdiH,EAAMA,MAjJO,EAkJb2O,GAAO3O,GAAO,KAGZujB,GAAkB,SAAUvjB,EAAOjH,EAAOsqB,GAC5C,IAAIrjB,EAAMxF,KAAV,CACAwF,EAAMxF,MAAO,EACT6oB,IAAQrjB,EAAQqjB,GACpB,IACE,GAAIrjB,EAAM4M,SAAW7T,EAAO,MAAMP,EAAU,oCAC5C,IAAIuW,EAAOsT,GAAWtpB,GAClBgW,EACFkS,GAAU,WACR,IAAI5hB,EAAU,CAAE7E,MAAM,GACtB,IACEuU,EAAKxU,KAAKxB,EACRxD,GAAKguB,GAAiBlkB,EAASW,GAC/BzK,GAAK+tB,GAAgBjkB,EAASW,IAEhC,MAAOzC,GACP+lB,GAAejkB,EAAS9B,EAAOyC,QAInCA,EAAMjH,MAAQA,EACdiH,EAAMA,MA3KI,EA4KV2O,GAAO3O,GAAO,IAEhB,MAAOzC,GACP+lB,GAAe,CAAE9oB,MAAM,GAAS+C,EAAOyC,MAK3C,GAAIyE,IAaF+c,GAXAD,EAAqB,SAAiBiC,GACpC/kB,EAAWxF,KAAMsoB,EAAoBH,GACrCxkB,EAAU4mB,GACV3C,EAAStmB,KAAKtB,MACd,IAAI+G,EAAQF,EAAiB7G,MAC7B,IACEuqB,EAASjuB,GAAKguB,GAAiBvjB,GAAQzK,GAAK+tB,GAAgBtjB,IAC5D,MAAOzC,GACP+lB,GAAetjB,EAAOzC,MAGuB7H,WAEjDmrB,EAAW,SAAiB2C,GAC1BxkB,EAAiB/F,KAAM,CACrBwG,KAAM2hB,EACN5mB,MAAM,EACN+nB,UAAU,EACVjqB,QAAQ,EACRmqB,UAAW,GACXM,WAAW,EACX/iB,MA5MQ,EA6MRjH,WAAOpG,MAGF+C,UAAY8I,EAAYgjB,EAA6B,CAG5DzS,KAAM,SAAc0U,EAAaC,GAC/B,IAAI1jB,EAAQqhB,EAAwBpoB,MAChC2pB,EAAW5N,EAAqByL,EAAmBxnB,KAAMsoB,IAO7D,OANAqB,EAASF,GAA2B,mBAAfe,GAA4BA,EACjDb,EAASE,KAA4B,mBAAdY,GAA4BA,EACnDd,EAASpT,OAASL,EAAUxH,EAAQ6H,YAAS7c,EAC7CqN,EAAM1H,QAAS,EACf0H,EAAMyiB,UAAUxnB,KAAK2nB,GA1Nb,GA2NJ5iB,EAAMA,OAAkB2O,GAAO3O,GAAO,GACnC4iB,EAAS9T,SAIlB,MAAS,SAAU4U,GACjB,OAAOzqB,KAAK8V,UAAKpc,EAAW+wB,MAGhC5C,EAAuB,WACrB,IAAIhS,EAAU,IAAI+R,EACd7gB,EAAQF,EAAiBgP,GAC7B7V,KAAK6V,QAAUA,EACf7V,KAAK0W,QAAUpa,GAAKguB,GAAiBvjB,GACrC/G,KAAK6X,OAASvb,GAAK+tB,GAAgBtjB,IAErC2f,EAA2BvnB,EAAI4c,EAAuB,SAAU7a,GAC9D,OAAOA,IAAMonB,GAAsBpnB,IAAM4mB,EACrC,IAAID,EAAqB3mB,GACzBsnB,EAA4BtnB,KAG7B8J,GAAmC,mBAAjBuc,GAA+Bc,IAA2BvqB,OAAOrB,WAAW,CACjGsrB,EAAaM,EAAuBvS,KAE/BiT,IAEHhe,EAASsd,EAAwB,QAAQ,SAAcmC,EAAaC,GAClE,IAAIhoB,EAAOzC,KACX,OAAO,IAAIsoB,GAAmB,SAAU5R,EAASmB,GAC/CkQ,EAAWzmB,KAAKmB,EAAMiU,EAASmB,MAC9B/B,KAAK0U,EAAaC,KAEpB,CAAEvO,QAAQ,IAGbnR,EAASsd,EAAwB,QAASE,EAAmC,MAAG,CAAErM,QAAQ,KAI5F,WACSmM,EAAuB/kB,YAC9B,MAAOgB,IAGLwG,GACFA,EAAeud,EAAwBE,GAK7C9f,EAAE,CAAEC,QAAQ,EAAM6H,MAAM,EAAM7G,OAAQ8B,GAAU,CAC9CzM,QAASupB,IAGXzf,EAAeyf,EAAoBH,GAAS,GAAO,GACnDxiB,EAAWwiB,GAEXL,EAAiBnZ,EAAWwZ,GAG5B1f,EAAE,CAAE5F,OAAQslB,EAASjY,MAAM,EAAMxG,OAAQ8B,GAAU,CAGjDqM,OAAQ,SAAgB6S,GACtB,IAAI7D,EAAa9K,EAAqB/b,MAEtC,OADA6mB,EAAWhP,OAAOvW,UAAK5H,EAAWgxB,GAC3B7D,EAAWhR,WAItBpN,EAAE,CAAE5F,OAAQslB,EAASjY,MAAM,EAAMxG,OAAQsB,GAAWQ,GAAU,CAG5DkL,QAAS,SAAiBsF,GACxB,OAAO8K,EAAe9b,GAAWhL,OAAS8nB,EAAiBQ,EAAqBtoB,KAAMgc,MAI1FvT,EAAE,CAAE5F,OAAQslB,EAASjY,MAAM,EAAMxG,OAAQwf,IAAuB,CAG9DC,IAAK,SAAa5iB,GAChB,IAAIrF,EAAIlB,KACJ6mB,EAAa9K,EAAqB7a,GAClCwV,EAAUmQ,EAAWnQ,QACrBmB,EAASgP,EAAWhP,OACpB/W,EAAS6lB,GAAQ,WACnB,IAAIgE,EAAkBhnB,EAAUzC,EAAEwV,SAC9B7X,EAAS,GACTogB,EAAU,EACV8H,EAAY,EAChBthB,EAAQc,GAAU,SAAUsP,GAC1B,IAAI1V,EAAQ8e,IACR+H,GAAgB,EACpBnoB,EAAOmD,UAAKtI,GACZqtB,IACA4D,EAAgBrpB,KAAKJ,EAAG2U,GAASC,MAAK,SAAUhW,GAC1CknB,IACJA,GAAgB,EAChBnoB,EAAOsB,GAASL,IACdinB,GAAarQ,EAAQ7X,MACtBgZ,QAEHkP,GAAarQ,EAAQ7X,MAGzB,OADIiC,EAAOwD,OAAOuT,EAAO/W,EAAOhB,OACzB+mB,EAAWhR,SAIpB+U,KAAM,SAAcrkB,GAClB,IAAIrF,EAAIlB,KACJ6mB,EAAa9K,EAAqB7a,GAClC2W,EAASgP,EAAWhP,OACpB/W,EAAS6lB,GAAQ,WACnB,IAAIgE,EAAkBhnB,EAAUzC,EAAEwV,SAClCjR,EAAQc,GAAU,SAAUsP,GAC1B8U,EAAgBrpB,KAAKJ,EAAG2U,GAASC,KAAK+Q,EAAWnQ,QAASmB,SAI9D,OADI/W,EAAOwD,OAAOuT,EAAO/W,EAAOhB,OACzB+mB,EAAWhR,Y,wCCpYtB,IAAI1M,EAAa,EAAQ,MACrB0c,EAAmB,EAAQ,MAI/BvsB,EAAOD,QAAU8P,EAAW,OAAO,SAAU2c,GAC3C,OAAO,WAAiB,OAAOA,EAAK9lB,KAAMtC,UAAUuC,OAASvC,UAAU,QAAKhE,MAC3EmsB,I,4BCPH,IAeM/V,EAfFrH,EAAI,EAAQ,MACZhK,EAA2B,UAC3BoB,EAAW,EAAQ,MACnBgrB,EAAa,EAAQ,KACrBlO,EAAyB,EAAQ,MACjCmO,EAAuB,EAAQ,MAC/B9f,EAAU,EAAQ,MAGlB+f,EAAY,GAAGluB,SACfqlB,EAAMlQ,KAAKkQ,IAEX8I,EAA0BF,EAAqB,YASnDriB,EAAE,CAAE5F,OAAQ,SAAUqJ,OAAO,EAAMxC,UAPXsB,IAAYggB,IAC9Blb,EAAarR,EAAyB1B,OAAON,UAAW,YACrDqT,IAAeA,EAAWpF,WAK8BsgB,IAA2B,CAC1FnuB,SAAU,SAAkBouB,GAC1B,IAAIxoB,EAAO1F,OAAO4f,EAAuB3c,OACzC6qB,EAAWI,GACX,IAAIC,EAAcxtB,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,EACpDmqB,EAAMhkB,EAAS4C,EAAKxC,QACpBG,OAAsB1G,IAAhBwxB,EAA4BrH,EAAM3B,EAAIriB,EAASqrB,GAAcrH,GACnEsH,EAASpuB,OAAOkuB,GACpB,OAAOF,EACHA,EAAUzpB,KAAKmB,EAAM0oB,EAAQ/qB,GAC7BqC,EAAKrG,MAAMgE,EAAM+qB,EAAOlrB,OAAQG,KAAS+qB,M,4BC/BjD,IAAI1iB,EAAI,EAAQ,MACZoiB,EAAa,EAAQ,KACrBlO,EAAyB,EAAQ,MAKrClU,EAAE,CAAE5F,OAAQ,SAAUqJ,OAAO,EAAMxC,QAJR,EAAQ,KAISohB,CAAqB,aAAe,CAC9E/uB,SAAU,SAAkBkvB,GAC1B,SAAUluB,OAAO4f,EAAuB3c,OACrChE,QAAQ6uB,EAAWI,GAAevtB,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,O,4BCV/E,IAAIujB,EAAS,eACTnX,EAAsB,EAAQ,MAC9BJ,EAAiB,EAAQ,MAEzB0lB,EAAkB,kBAClBrlB,EAAmBD,EAAoBE,IACvCa,EAAmBf,EAAoBI,UAAUklB,GAIrD1lB,EAAe3I,OAAQ,UAAU,SAAU8K,GACzC9B,EAAiB/F,KAAM,CACrBwG,KAAM4kB,EACN/W,OAAQtX,OAAO8K,GACf1H,MAAO,OAIR,WACD,IAGIkrB,EAHAtkB,EAAQF,EAAiB7G,MACzBqU,EAAStN,EAAMsN,OACflU,EAAQ4G,EAAM5G,MAElB,OAAIA,GAASkU,EAAOpU,OAAe,CAAEH,WAAOpG,EAAW6H,MAAM,IAC7D8pB,EAAQpO,EAAO5I,EAAQlU,GACvB4G,EAAM5G,OAASkrB,EAAMprB,OACd,CAAEH,MAAOurB,EAAO9pB,MAAM,Q,4BC1B/B,IAAIkH,EAAI,EAAQ,MACZ6iB,EAAY,cAKhB7iB,EAAE,CAAE5F,OAAQ,SAAUqJ,OAAO,EAAMxC,OAJlB,EAAQ,OAIgC,CACvDxM,SAAU,SAAkBogB,GAC1B,OAAOgO,EAAUtrB,KAAMsd,EAAW5f,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,O,4BCR5E,IAeMoW,EAfFrH,EAAI,EAAQ,MACZhK,EAA2B,UAC3BoB,EAAW,EAAQ,MACnBgrB,EAAa,EAAQ,KACrBlO,EAAyB,EAAQ,MACjCmO,EAAuB,EAAQ,MAC/B9f,EAAU,EAAQ,MAGlBugB,EAAc,GAAGpuB,WACjB+kB,EAAMlQ,KAAKkQ,IAEX8I,EAA0BF,EAAqB,cASnDriB,EAAE,CAAE5F,OAAQ,SAAUqJ,OAAO,EAAMxC,UAPXsB,IAAYggB,IAC9Blb,EAAarR,EAAyB1B,OAAON,UAAW,cACrDqT,IAAeA,EAAWpF,WAK8BsgB,IAA2B,CAC1F7tB,WAAY,SAAoB8tB,GAC9B,IAAIxoB,EAAO1F,OAAO4f,EAAuB3c,OACzC6qB,EAAWI,GACX,IAAI9qB,EAAQN,EAASqiB,EAAIxkB,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,EAAW+I,EAAKxC,SAC3EkrB,EAASpuB,OAAOkuB,GACpB,OAAOM,EACHA,EAAYjqB,KAAKmB,EAAM0oB,EAAQhrB,GAC/BsC,EAAKrG,MAAM+D,EAAOA,EAAQgrB,EAAOlrB,UAAYkrB,M,eC9BzB,EAAQ,KAIpCK,CAAsB,kB,2BCJM,EAAQ,KAIpCA,CAAsB,gB,eCJM,EAAQ,KAIpCA,CAAsB,uB,eCJM,EAAQ,KAIpCA,CAAsB,a,4BCHtB,IAAI/iB,EAAI,EAAQ,MACZC,EAAS,EAAQ,MACjBiG,EAAa,EAAQ,KACrB3D,EAAU,EAAQ,MAClBpF,EAAc,EAAQ,MACtB8c,EAAgB,EAAQ,MACxBC,EAAoB,EAAQ,MAC5B3f,EAAQ,EAAQ,MAChBsE,EAAM,EAAQ,MACdjM,EAAU,EAAQ,MAClBmE,EAAW,EAAQ,KACnB0E,EAAW,EAAQ,MACnBvE,EAAW,EAAQ,MACnB6B,EAAkB,EAAQ,MAC1BmJ,EAAc,EAAQ,MACtBT,EAA2B,EAAQ,MACnCuhB,EAAqB,EAAQ,MAC7BnT,EAAa,EAAQ,MACrBwD,EAA4B,EAAQ,KACpC4P,EAA8B,EAAQ,KACtCnT,EAA8B,EAAQ,MACtC+N,EAAiC,EAAQ,MACzC/b,EAAuB,EAAQ,MAC/BiO,EAA6B,EAAQ,MACrC5P,EAA8B,EAAQ,MACtCmC,EAAW,EAAQ,MACnBqI,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBZ,EAAa,EAAQ,MACrBC,EAAM,EAAQ,MACdzP,EAAkB,EAAQ,MAC1BkJ,EAA+B,EAAQ,MACvCqf,EAAwB,EAAQ,MAChC3iB,EAAiB,EAAQ,KACzB/C,EAAsB,EAAQ,MAC9BxF,EAAW,gBAEXqrB,EAAStY,EAAU,UACnBuY,EAAS,SAETC,EAAe5oB,EAAgB,eAC/B8C,EAAmBD,EAAoBE,IACvCa,EAAmBf,EAAoBI,UAAU0lB,GACjDzQ,EAAkBrd,OAAgB,UAClCguB,EAAUpjB,EAAOzJ,OACjBsmB,EAAa5W,EAAW,OAAQ,aAChCwX,EAAiCG,EAA+BnnB,EAChE4sB,EAAuBxhB,EAAqBpL,EAC5C6sB,EAA4BN,EAA4BvsB,EACxD8sB,EAA6BzT,EAA2BrZ,EACxD+sB,EAAa9Y,EAAO,WACpB+Y,EAAyB/Y,EAAO,cAChCgZ,EAAyBhZ,EAAO,6BAChCiZ,GAAyBjZ,EAAO,6BAChCwP,GAAwBxP,EAAO,OAC/BkZ,GAAU5jB,EAAO4jB,QAEjBC,IAAcD,KAAYA,GAAiB,YAAMA,GAAiB,UAAEE,UAGpEC,GAAsB7mB,GAAe5C,GAAM,WAC7C,OAES,GAFFyoB,EAAmBM,EAAqB,GAAI,IAAK,CACtDxkB,IAAK,WAAc,OAAOwkB,EAAqB/rB,KAAM,IAAK,CAAEF,MAAO,IAAKwJ,MACtEA,KACD,SAAUvJ,EAAG2a,EAAGC,GACnB,IAAI+R,EAA4BvG,EAA+BhL,EAAiBT,GAC5EgS,UAAkCvR,EAAgBT,GACtDqR,EAAqBhsB,EAAG2a,EAAGC,GACvB+R,GAA6B3sB,IAAMob,GACrC4Q,EAAqB5Q,EAAiBT,EAAGgS,IAEzCX,EAEAxb,GAAO,SAAUnL,EAAKunB,GACxB,IAAI3V,EAASkV,EAAW9mB,GAAOqmB,EAAmBK,EAAiB,WAOnE,OANA/lB,EAAiBiR,EAAQ,CACvBxQ,KAAMolB,EACNxmB,IAAKA,EACLunB,YAAaA,IAEV/mB,IAAaoR,EAAO2V,YAAcA,GAChC3V,GAGL4V,GAAWjK,EAAoB,SAAUjmB,GAC3C,MAAoB,iBAANA,GACZ,SAAUA,GACZ,OAAOoB,OAAOpB,aAAeovB,GAG3BrR,GAAkB,SAAwB1a,EAAG2a,EAAGC,GAC9C5a,IAAMob,GAAiBV,GAAgB0R,EAAwBzR,EAAGC,GACtEzW,EAASnE,GACT,IAAI1B,EAAMsM,EAAY+P,GAAG,GAEzB,OADAxW,EAASyW,GACLrT,EAAI4kB,EAAY7tB,IACbsc,EAAWlQ,YAIVnD,EAAIvH,EAAG4rB,IAAW5rB,EAAE4rB,GAAQttB,KAAM0B,EAAE4rB,GAAQttB,IAAO,GACvDsc,EAAa8Q,EAAmB9Q,EAAY,CAAElQ,WAAYP,EAAyB,GAAG,OAJjF5C,EAAIvH,EAAG4rB,IAASI,EAAqBhsB,EAAG4rB,EAAQzhB,EAAyB,EAAG,KACjFnK,EAAE4rB,GAAQttB,IAAO,GAIVouB,GAAoB1sB,EAAG1B,EAAKsc,IAC9BoR,EAAqBhsB,EAAG1B,EAAKsc,IAGpCkS,GAAoB,SAA0B9sB,EAAGwa,GACnDrW,EAASnE,GACT,IAAI+sB,EAAatrB,EAAgB+Y,GAC7B3b,EAAO0Z,EAAWwU,GAAYvxB,OAAOwxB,GAAuBD,IAIhE,OAHAxsB,EAAS1B,GAAM,SAAUP,GAClBuH,IAAeyV,GAAsB/Z,KAAKwrB,EAAYzuB,IAAMoc,GAAgB1a,EAAG1B,EAAKyuB,EAAWzuB,OAE/F0B,GAOLsb,GAAwB,SAA8BG,GACxD,IAAId,EAAI/P,EAAY6Q,GAAG,GACnB/Q,EAAawhB,EAA2B3qB,KAAKtB,KAAM0a,GACvD,QAAI1a,OAASmb,GAAmB7T,EAAI4kB,EAAYxR,KAAOpT,EAAI6kB,EAAwBzR,QAC5EjQ,IAAenD,EAAItH,KAAM0a,KAAOpT,EAAI4kB,EAAYxR,IAAMpT,EAAItH,KAAM2rB,IAAW3rB,KAAK2rB,GAAQjR,KAAKjQ,IAGlGmQ,GAA4B,SAAkC7a,EAAG2a,GACnE,IAAIhe,EAAK8E,EAAgBzB,GACrB1B,EAAMsM,EAAY+P,GAAG,GACzB,GAAIhe,IAAOye,IAAmB7T,EAAI4kB,EAAY7tB,IAASiJ,EAAI6kB,EAAwB9tB,GAAnF,CACA,IAAIyR,EAAaqW,EAA+BzpB,EAAI2B,GAIpD,OAHIyR,IAAcxI,EAAI4kB,EAAY7tB,IAAUiJ,EAAI5K,EAAIivB,IAAWjvB,EAAGivB,GAAQttB,KACxEyR,EAAWrF,YAAa,GAEnBqF,IAGL+K,GAAuB,SAA6B9a,GACtD,IAAIqb,EAAQ4Q,EAA0BxqB,EAAgBzB,IAClDe,EAAS,GAIb,OAHAR,EAAS8a,GAAO,SAAU/c,GACnBiJ,EAAI4kB,EAAY7tB,IAASiJ,EAAImL,EAAYpU,IAAMyC,EAAOkB,KAAK3D,MAE3DyC,GAGLisB,GAAyB,SAA+BhtB,GAC1D,IAAIitB,EAAsBjtB,IAAMob,EAC5BC,EAAQ4Q,EAA0BgB,EAAsBb,EAAyB3qB,EAAgBzB,IACjGe,EAAS,GAMb,OALAR,EAAS8a,GAAO,SAAU/c,IACpBiJ,EAAI4kB,EAAY7tB,IAAU2uB,IAAuB1lB,EAAI6T,EAAiB9c,IACxEyC,EAAOkB,KAAKkqB,EAAW7tB,OAGpByC,GAKJ4hB,IAcH3X,GAbA+gB,EAAU,WACR,GAAI9rB,gBAAgB8rB,EAAS,MAAMvsB,UAAU,+BAC7C,IAAIotB,EAAejvB,UAAUuC,aAA2BvG,IAAjBgE,UAAU,GAA+BX,OAAOW,UAAU,SAA7BhE,EAChE0L,EAAMsN,EAAIia,GACVjR,EAAS,SAAU5b,GACjBE,OAASmb,GAAiBO,EAAOpa,KAAK6qB,EAAwBrsB,GAC9DwH,EAAItH,KAAM2rB,IAAWrkB,EAAItH,KAAK2rB,GAASvmB,KAAMpF,KAAK2rB,GAAQvmB,IAAO,GACrEqnB,GAAoBzsB,KAAMoF,EAAK8E,EAAyB,EAAGpK,KAG7D,OADI8F,GAAe2mB,IAAYE,GAAoBtR,EAAiB/V,EAAK,CAAEoE,cAAc,EAAMxD,IAAK0V,IAC7FnL,GAAKnL,EAAKunB,KAGO,UAAG,YAAY,WACvC,OAAO9lB,EAAiB7G,MAAMoF,OAGhC2F,EAAS+gB,EAAS,iBAAiB,SAAUa,GAC3C,OAAOpc,GAAKmC,EAAIia,GAAcA,MAGhCnU,EAA2BrZ,EAAIkc,GAC/B9Q,EAAqBpL,EAAIsb,GACzB6L,EAA+BnnB,EAAIyb,GACnCkB,EAA0B3c,EAAIusB,EAA4BvsB,EAAI0b,GAC9DtC,EAA4BpZ,EAAI4tB,GAEhC5gB,EAA6BhN,EAAI,SAAUO,GACzC,OAAO6Q,GAAKtN,EAAgBvD,GAAOA,IAGjCkG,IAEFmmB,EAAqBD,EAAiB,UAAG,cAAe,CACtDtiB,cAAc,EACdjC,IAAK,WACH,OAAOV,EAAiB7G,MAAM2sB,eAG7B3hB,GACHD,EAASoQ,EAAiB,uBAAwBE,GAAuB,CAAEa,QAAQ,MAKzFzT,EAAE,CAAEC,QAAQ,EAAM6H,MAAM,EAAM7G,QAASgZ,EAAevkB,MAAOukB,GAAiB,CAC5EzjB,OAAQ6sB,IAGVxrB,EAASgY,EAAWsK,KAAwB,SAAUljB,GACpD8rB,EAAsB9rB,MAGxB+I,EAAE,CAAE5F,OAAQ+oB,EAAQ1b,MAAM,EAAMxG,QAASgZ,GAAiB,CAGxD,IAAO,SAAUrkB,GACf,IAAIgW,EAAStX,OAAOsB,GACpB,GAAIiJ,EAAI8kB,EAAwB/X,GAAS,OAAO+X,EAAuB/X,GACvE,IAAI2C,EAAS8U,EAAQzX,GAGrB,OAFA+X,EAAuB/X,GAAU2C,EACjCqV,GAAuBrV,GAAU3C,EAC1B2C,GAITiW,OAAQ,SAAgBC,GACtB,IAAKN,GAASM,GAAM,MAAM3tB,UAAU2tB,EAAM,oBAC1C,GAAI5lB,EAAI+kB,GAAwBa,GAAM,OAAOb,GAAuBa,IAEtEC,UAAW,WAAcZ,IAAa,GACtCa,UAAW,WAAcb,IAAa,KAGxC9jB,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,QAASgZ,EAAevkB,MAAOyH,GAAe,CAG9EhD,OA3HY,SAAgB7C,EAAGwa,GAC/B,YAAsB7gB,IAAf6gB,EAA2BkR,EAAmB1rB,GAAK8sB,GAAkBpB,EAAmB1rB,GAAIwa,IA6HnGnc,eAAgBqc,GAGhBzc,iBAAkB6uB,GAGlBpuB,yBAA0Bmc,KAG5BnS,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,QAASgZ,GAAiB,CAG1D3H,oBAAqBF,GAGrBlc,sBAAuBouB,KAKzBtkB,EAAE,CAAE5F,OAAQ,SAAUqN,MAAM,EAAMxG,OAAQ1G,GAAM,WAAcuV,EAA4BpZ,EAAE,OAAU,CACpGR,sBAAuB,SAA+BjC,GACpD,OAAO6b,EAA4BpZ,EAAEQ,EAASjD,OAM9C6oB,GAWF9c,EAAE,CAAE5F,OAAQ,OAAQqN,MAAM,EAAMxG,QAVHgZ,GAAiB1f,GAAM,WAClD,IAAIgU,EAAS8U,IAEb,MAA+B,UAAxBvG,EAAW,CAACvO,KAEe,MAA7BuO,EAAW,CAAEjc,EAAG0N,KAEc,MAA9BuO,EAAWznB,OAAOkZ,QAGwC,CAE/D1Z,UAAW,SAAmBZ,EAAIa,EAAUC,GAI1C,IAHA,IAEI6vB,EAFA5b,EAAO,CAAC/U,GACRyD,EAAQ,EAELzC,UAAUuC,OAASE,GAAOsR,EAAKzP,KAAKtE,UAAUyC,MAErD,GADAktB,EAAY9vB,GACPiC,EAASjC,SAAoB7D,IAAPgD,KAAoBkwB,GAASlwB,GAMxD,OALKrB,EAAQkC,KAAWA,EAAW,SAAUc,EAAKyB,GAEhD,GADwB,mBAAbutB,IAAyBvtB,EAAQutB,EAAU/rB,KAAKtB,KAAM3B,EAAKyB,KACjE8sB,GAAS9sB,GAAQ,OAAOA,IAE/B2R,EAAK,GAAKlU,EACHgoB,EAAW9nB,MAAM,KAAMgU,MAO/Bqa,EAAiB,UAAED,IACtBjjB,EAA4BkjB,EAAiB,UAAGD,EAAcC,EAAiB,UAAEvJ,SAInF1Z,EAAeijB,EAASF,GAExBnZ,EAAWkZ,IAAU,G,eCtTO,EAAQ,KAIpCH,CAAsB,a,eCJM,EAAQ,KAIpCA,CAAsB,U,eCJM,EAAQ,KAIpCA,CAAsB,Y,eCJM,EAAQ,KAIpCA,CAAsB,W,eCJM,EAAQ,KAIpCA,CAAsB,Y,eCJM,EAAQ,KAIpCA,CAAsB,U,eCJM,EAAQ,KAIpCA,CAAsB,gB,eCJM,EAAQ,KAIpCA,CAAsB,gB,cCJM,EAAQ,KAIpCA,CAAsB,gB,4BCHtB,IAYI8B,EAZA5kB,EAAS,EAAQ,MACjBnD,EAAc,EAAQ,MACtBoD,EAAyB,EAAQ,MACjCQ,EAAa,EAAQ,MACrBokB,EAAiB,EAAQ,MACzB/tB,EAAW,EAAQ,KACnBguB,EAAsB,gBACtBta,EAAkB,EAAQ,MAE1Bua,GAAW/kB,EAAO+Q,eAAiB,kBAAmB/Q,EAEtD0I,EAAetT,OAAOsT,aAGtBhL,EAAU,SAAU0f,GACtB,OAAO,WACL,OAAOA,EAAK9lB,KAAMtC,UAAUuC,OAASvC,UAAU,QAAKhE,KAMpDg0B,EAAWp0B,EAAOD,QAAU8P,EAAW,UAAW/C,EAASmnB,GAK/D,GAAIra,GAAmBua,EAAS,CAC9BH,EAAkBC,EAAepnB,eAAeC,EAAS,WAAW,GACpEuC,EAAuBc,UAAW,EAClC,IAAIkkB,EAAmBD,EAASjxB,UAC5BmxB,EAAeD,EAAyB,OACxCE,EAAYF,EAAiBrmB,IAC7BwmB,EAAYH,EAAiBpmB,IAC7BwmB,EAAYJ,EAAiB3nB,IACjCT,EAAYooB,EAAkB,CAC5B,OAAU,SAAUtvB,GAClB,GAAImB,EAASnB,KAAS+S,EAAa/S,GAAM,CACvC,IAAI0I,EAAQymB,EAAoBxtB,MAEhC,OADK+G,EAAMsB,SAAQtB,EAAMsB,OAAS,IAAIilB,GAC/BM,EAAatsB,KAAKtB,KAAM3B,IAAQ0I,EAAMsB,OAAe,OAAEhK,GAC9D,OAAOuvB,EAAatsB,KAAKtB,KAAM3B,IAEnCiJ,IAAK,SAAajJ,GAChB,GAAImB,EAASnB,KAAS+S,EAAa/S,GAAM,CACvC,IAAI0I,EAAQymB,EAAoBxtB,MAEhC,OADK+G,EAAMsB,SAAQtB,EAAMsB,OAAS,IAAIilB,GAC/BO,EAAUvsB,KAAKtB,KAAM3B,IAAQ0I,EAAMsB,OAAOf,IAAIjJ,GACrD,OAAOwvB,EAAUvsB,KAAKtB,KAAM3B,IAEhCkJ,IAAK,SAAalJ,GAChB,GAAImB,EAASnB,KAAS+S,EAAa/S,GAAM,CACvC,IAAI0I,EAAQymB,EAAoBxtB,MAEhC,OADK+G,EAAMsB,SAAQtB,EAAMsB,OAAS,IAAIilB,GAC/BO,EAAUvsB,KAAKtB,KAAM3B,GAAOyvB,EAAUxsB,KAAKtB,KAAM3B,GAAO0I,EAAMsB,OAAOd,IAAIlJ,GAChF,OAAOyvB,EAAUxsB,KAAKtB,KAAM3B,IAEhC2H,IAAK,SAAa3H,EAAKyB,GACrB,GAAIN,EAASnB,KAAS+S,EAAa/S,GAAM,CACvC,IAAI0I,EAAQymB,EAAoBxtB,MAC3B+G,EAAMsB,SAAQtB,EAAMsB,OAAS,IAAIilB,GACtCO,EAAUvsB,KAAKtB,KAAM3B,GAAO0vB,EAAUzsB,KAAKtB,KAAM3B,EAAKyB,GAASiH,EAAMsB,OAAOrC,IAAI3H,EAAKyB,QAChFiuB,EAAUzsB,KAAKtB,KAAM3B,EAAKyB,GACjC,OAAOE,U,eC/Db,EAAQ,O,eCAR,EAAQ,O,eCAR,EAAQ,O,0BCAR,IAAIyI,EAAI,EAAQ,MACZie,EAA6B,EAAQ,MACrCC,EAAU,EAAQ,GAItBle,EAAE,CAAE5F,OAAQ,UAAWqN,MAAM,GAAQ,CACnC,IAAO,SAAUzP,GACf,IAAIwb,EAAoByK,EAA2BvnB,EAAEa,MACjDc,EAAS6lB,EAAQlmB,GAErB,OADCK,EAAOwD,MAAQ2X,EAAkBpE,OAASoE,EAAkBvF,SAAS5V,EAAOhB,OACtEmc,EAAkBpG,Y,eCZD,EAAQ,KAIpC2V,CAAsB,iB,eCJM,EAAQ,KAIpCA,CAAsB,Y,eCJM,EAAQ,KAIpCA,CAAsB,Y,eCJM,EAAQ,KAIpCA,CAAsB,a,eCJM,EAAQ,KAIpCA,CAAsB,e,cCHM,EAAQ,KAIpCA,CAAsB,iB,eCJM,EAAQ,KAEpCA,CAAsB,e,eCHtB,EAAQ,MACR,IAAIwC,EAAe,EAAQ,MACvBtlB,EAAS,EAAQ,MACjB+F,EAAU,EAAQ,MAClB7F,EAA8B,EAAQ,MACtCuB,EAAY,EAAQ,MAGpBjF,EAFkB,EAAQ,KAEVjC,CAAgB,eAEpC,IAAK,IAAIgrB,KAAmBD,EAAc,CACxC,IAAIE,EAAaxlB,EAAOulB,GACpBE,EAAsBD,GAAcA,EAAWzxB,UAC/C0xB,GAAuB1f,EAAQ0f,KAAyBjpB,GAC1D0D,EAA4BulB,EAAqBjpB,EAAe+oB,GAElE9jB,EAAU8jB,GAAmB9jB,EAAUhP,Q,eChBzC,IAAIsN,EAAI,EAAQ,MACZC,EAAS,EAAQ,MACjB6F,EAAY,EAAQ,MAEpBnS,EAAQ,GAAGA,MAGXmU,EAAO,SAAU6d,GACnB,OAAO,SAAUxE,EAASyE,GACxB,IAAIC,EAAY5wB,UAAUuC,OAAS,EAC/BwR,EAAO6c,EAAYlyB,EAAMkF,KAAK5D,UAAW,QAAKhE,EAClD,OAAO00B,EAAUE,EAAY,YAER,mBAAX1E,EAAwBA,EAAUptB,SAASotB,IAAUnsB,MAAMuC,KAAMyR,IACvEmY,EAASyE,KAMjB5lB,EAAE,CAAEC,QAAQ,EAAMpM,MAAM,EAAMoN,OAfnB,WAAW8E,KAAKD,IAemB,CAG5CyT,WAAYzR,EAAK7H,EAAOsZ,YAGxBuM,YAAahe,EAAK7H,EAAO6lB,gB,4BCxB3B,EAAQ,MACR,IAAI9lB,EAAI,EAAQ,MACZkG,EAAa,EAAQ,KACrB6f,EAAiB,EAAQ,MACzBzjB,EAAW,EAAQ,MACnBxF,EAAc,EAAQ,MACtBsD,EAAiB,EAAQ,KACzBgC,EAA4B,EAAQ,MACpC/E,EAAsB,EAAQ,MAC9BN,EAAa,EAAQ,MACrB4M,EAAS,EAAQ,MACjB9V,EAAO,EAAQ,MACfmS,EAAU,EAAQ,MAClBvK,EAAW,EAAQ,MACnB1E,EAAW,EAAQ,KACnBoD,EAAS,EAAQ,MACjBsH,EAA2B,EAAQ,MACnCukB,EAAc,EAAQ,KACtBnvB,EAAoB,EAAQ,MAC5B2D,EAAkB,EAAQ,MAE1ByrB,EAAS/f,EAAW,SACpBggB,EAAUhgB,EAAW,WACrBpK,EAAWtB,EAAgB,YAC3B2rB,EAAoB,kBACpBC,EAA6BD,0BAC7B7oB,EAAmBD,EAAoBE,IACvC8oB,EAAyBhpB,EAAoBI,UAAU0oB,GACvDhnB,EAA2B9B,EAAoBI,UAAU2oB,GAEzDE,EAAO,MACPC,EAAY7zB,MAAM,GAElB8zB,EAAkB,SAAUC,GAC9B,OAAOF,EAAUE,EAAQ,KAAOF,EAAUE,EAAQ,GAAK3O,OAAO,qBAAuB2O,EAAQ,KAAM,QAGjGC,EAAgB,SAAUC,GAC5B,IACE,OAAOC,mBAAmBD,GAC1B,MAAO9qB,GACP,OAAO8qB,IAIPE,EAAc,SAAU5yB,GAC1B,IAAIoE,EAASpE,EAAG4X,QAAQya,EAAM,KAC1BG,EAAQ,EACZ,IACE,OAAOG,mBAAmBvuB,GAC1B,MAAOwD,GACP,KAAO4qB,GACLpuB,EAASA,EAAOwT,QAAQ2a,EAAgBC,KAAUC,GAEpD,OAAOruB,IAIPlF,EAAO,eAEP0Y,EAAU,CACZ,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,KAGL/W,EAAW,SAAUqR,GACvB,OAAO0F,EAAQ1F,IAGb2gB,EAAY,SAAU7yB,GACxB,OAAO8yB,mBAAmB9yB,GAAI4X,QAAQ1Y,EAAM2B,IAG1CkyB,EAAoB,SAAU3uB,EAAQ4uB,GACxC,GAAIA,EAIF,IAHA,IAEIC,EAAW3oB,EAFX4oB,EAAaF,EAAM1gB,MAAM,KACzB7O,EAAQ,EAELA,EAAQyvB,EAAW3vB,SACxB0vB,EAAYC,EAAWzvB,MACTF,SACZ+G,EAAQ2oB,EAAU3gB,MAAM,KACxBlO,EAAOkB,KAAK,CACV3D,IAAKixB,EAAYtoB,EAAM6oB,SACvB/vB,MAAOwvB,EAAYtoB,EAAM2K,KAAK,UAOpCme,EAAqB,SAAUJ,GACjC1vB,KAAKxE,QAAQyE,OAAS,EACtBwvB,EAAkBzvB,KAAKxE,QAASk0B,IAG9BK,EAA0B,SAAUC,EAAQC,GAC9C,GAAID,EAASC,EAAU,MAAM1wB,UAAU,yBAGrC2wB,EAA0BrlB,GAA0B,SAAkBslB,EAAQroB,GAChF/B,EAAiB/F,KAAM,CACrBwG,KAAMqoB,EACN7tB,SAAUytB,EAAYK,EAAuBqB,GAAQ30B,SACrDsM,KAAMA,MAEP,YAAY,WACb,IAAIf,EAAQa,EAAyB5H,MACjC8H,EAAOf,EAAMe,KACb/G,EAAOgG,EAAM/F,SAASC,OACtB+F,EAAQjG,EAAKjB,MAGf,OAFGiB,EAAKQ,OACRR,EAAKjB,MAAiB,SAATgI,EAAkBd,EAAM3I,IAAe,WAATyJ,EAAoBd,EAAMlH,MAAQ,CAACkH,EAAM3I,IAAK2I,EAAMlH,QACxFiB,KAKPqvB,EAA6B,WAC/B5qB,EAAWxF,KAAMowB,EAA4BxB,GAC7C,IAGIvtB,EAAgBL,EAAUC,EAAMF,EAAMsvB,EAAeC,EAAW7pB,EAAOqW,EAAQze,EAH/EynB,EAAOpoB,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,EAC7C+I,EAAOzC,KACPxE,EAAU,GAUd,GAPAuK,EAAiBtD,EAAM,CACrB+D,KAAMooB,EACNpzB,QAASA,EACT+0B,UAAW,aACXT,mBAAoBA,SAGTp2B,IAATosB,EACF,GAAItmB,EAASsmB,GAEX,GAA8B,mBAD9BzkB,EAAiB/B,EAAkBwmB,IAIjC,IADA7kB,GADAD,EAAWK,EAAeC,KAAKwkB,IACf7kB,OACPF,EAAOE,EAAKK,KAAKN,IAAWO,MAAM,CAGzC,IACGkF,GAFH6pB,GADAD,EAAgB5B,EAAYvqB,EAASnD,EAAKjB,SAChBmB,MAELK,KAAK+uB,IAAgB9uB,OACvCub,EAASwT,EAAUhvB,KAAK+uB,IAAgB9uB,OACxC+uB,EAAUhvB,KAAK+uB,GAAe9uB,KAC/B,MAAMhC,UAAU,mCAClB/D,EAAQwG,KAAK,CAAE3D,IAAKoI,EAAM3G,MAAQ,GAAIA,MAAOgd,EAAOhd,MAAQ,UAEzD,IAAKzB,KAAOynB,EAAU1T,EAAO0T,EAAMznB,IAAM7C,EAAQwG,KAAK,CAAE3D,IAAKA,EAAKyB,MAAOgmB,EAAKznB,GAAO,UAE5FoxB,EAAkBj0B,EAAyB,iBAATsqB,EAAuC,MAAnBA,EAAK7I,OAAO,GAAa6I,EAAK1pB,MAAM,GAAK0pB,EAAOA,EAAO,KAK/G0K,EAA2BJ,EAA2B3zB,UAE1D8I,EAAYirB,EAA0B,CAGpCC,OAAQ,SAAgB/wB,EAAMI,GAC5BiwB,EAAwBryB,UAAUuC,OAAQ,GAC1C,IAAI8G,EAAQ+nB,EAAuB9uB,MACnC+G,EAAMvL,QAAQwG,KAAK,CAAE3D,IAAKqB,EAAO,GAAII,MAAOA,EAAQ,KACpDiH,EAAMwpB,aAIR,OAAU,SAAU7wB,GAClBqwB,EAAwBryB,UAAUuC,OAAQ,GAK1C,IAJA,IAAI8G,EAAQ+nB,EAAuB9uB,MAC/BxE,EAAUuL,EAAMvL,QAChB6C,EAAMqB,EAAO,GACbS,EAAQ,EACLA,EAAQ3E,EAAQyE,QACjBzE,EAAQ2E,GAAO9B,MAAQA,EAAK7C,EAAQgN,OAAOrI,EAAO,GACjDA,IAEP4G,EAAMwpB,aAIRhpB,IAAK,SAAa7H,GAChBqwB,EAAwBryB,UAAUuC,OAAQ,GAI1C,IAHA,IAAIzE,EAAUszB,EAAuB9uB,MAAMxE,QACvC6C,EAAMqB,EAAO,GACbS,EAAQ,EACLA,EAAQ3E,EAAQyE,OAAQE,IAC7B,GAAI3E,EAAQ2E,GAAO9B,MAAQA,EAAK,OAAO7C,EAAQ2E,GAAOL,MAExD,OAAO,MAIT4wB,OAAQ,SAAgBhxB,GACtBqwB,EAAwBryB,UAAUuC,OAAQ,GAK1C,IAJA,IAAIzE,EAAUszB,EAAuB9uB,MAAMxE,QACvC6C,EAAMqB,EAAO,GACboB,EAAS,GACTX,EAAQ,EACLA,EAAQ3E,EAAQyE,OAAQE,IACzB3E,EAAQ2E,GAAO9B,MAAQA,GAAKyC,EAAOkB,KAAKxG,EAAQ2E,GAAOL,OAE7D,OAAOgB,GAITwG,IAAK,SAAa5H,GAChBqwB,EAAwBryB,UAAUuC,OAAQ,GAI1C,IAHA,IAAIzE,EAAUszB,EAAuB9uB,MAAMxE,QACvC6C,EAAMqB,EAAO,GACbS,EAAQ,EACLA,EAAQ3E,EAAQyE,QACrB,GAAIzE,EAAQ2E,KAAS9B,MAAQA,EAAK,OAAO,EAE3C,OAAO,GAIT2H,IAAK,SAAatG,EAAMI,GACtBiwB,EAAwBryB,UAAUuC,OAAQ,GAQ1C,IAPA,IAMI+G,EANAD,EAAQ+nB,EAAuB9uB,MAC/BxE,EAAUuL,EAAMvL,QAChBm1B,GAAQ,EACRtyB,EAAMqB,EAAO,GACb4iB,EAAMxiB,EAAQ,GACdK,EAAQ,EAELA,EAAQ3E,EAAQyE,OAAQE,KAC7B6G,EAAQxL,EAAQ2E,IACN9B,MAAQA,IACZsyB,EAAOn1B,EAAQgN,OAAOrI,IAAS,IAEjCwwB,GAAQ,EACR3pB,EAAMlH,MAAQwiB,IAIfqO,GAAOn1B,EAAQwG,KAAK,CAAE3D,IAAKA,EAAKyB,MAAOwiB,IAC5Cvb,EAAMwpB,aAIRjZ,KAAM,WACJ,IAIItQ,EAAO4pB,EAAcC,EAJrB9pB,EAAQ+nB,EAAuB9uB,MAC/BxE,EAAUuL,EAAMvL,QAEhBY,EAAQZ,EAAQY,QAGpB,IADAZ,EAAQyE,OAAS,EACZ4wB,EAAa,EAAGA,EAAaz0B,EAAM6D,OAAQ4wB,IAAc,CAE5D,IADA7pB,EAAQ5K,EAAMy0B,GACTD,EAAe,EAAGA,EAAeC,EAAYD,IAChD,GAAIp1B,EAAQo1B,GAAcvyB,IAAM2I,EAAM3I,IAAK,CACzC7C,EAAQgN,OAAOooB,EAAc,EAAG5pB,GAChC,MAGA4pB,IAAiBC,GAAYr1B,EAAQwG,KAAKgF,GAEhDD,EAAMwpB,aAGRz0B,QAAS,SAAiBg1B,GAKxB,IAJA,IAGI9pB,EAHAxL,EAAUszB,EAAuB9uB,MAAMxE,QACvCmH,EAAgBrG,EAAKw0B,EAAUpzB,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,EAAW,GAChFyG,EAAQ,EAELA,EAAQ3E,EAAQyE,QAErB0C,GADAqE,EAAQxL,EAAQ2E,MACIL,MAAOkH,EAAM3I,IAAK2B,OAI1CpB,KAAM,WACJ,OAAO,IAAIsxB,EAAwBlwB,KAAM,SAG3CnB,OAAQ,WACN,OAAO,IAAIqxB,EAAwBlwB,KAAM,WAG3CxE,QAAS,WACP,OAAO,IAAI00B,EAAwBlwB,KAAM,aAE1C,CAAEyK,YAAY,IAGjBM,EAASylB,EAA0BjsB,EAAUisB,EAAyBh1B,SAItEuP,EAASylB,EAA0B,YAAY,WAK7C,IAJA,IAGIxpB,EAHAxL,EAAUszB,EAAuB9uB,MAAMxE,QACvCsF,EAAS,GACTX,EAAQ,EAELA,EAAQ3E,EAAQyE,QACrB+G,EAAQxL,EAAQ2E,KAChBW,EAAOkB,KAAKutB,EAAUvoB,EAAM3I,KAAO,IAAMkxB,EAAUvoB,EAAMlH,QACzD,OAAOgB,EAAO6Q,KAAK,OACpB,CAAElH,YAAY,IAEjB5B,EAAeunB,EAA4BxB,GAE3CnmB,EAAE,CAAEC,QAAQ,EAAMgB,QAAS8kB,GAAkB,CAC3ChX,gBAAiB4Y,IAKd5B,GAAmC,mBAAVE,GAA0C,mBAAXC,GAC3DlmB,EAAE,CAAEC,QAAQ,EAAM+B,YAAY,EAAMf,QAAQ,GAAQ,CAClDqnB,MAAO,SAAelS,GACpB,IACIiH,EAAMkL,EAAMC,EADZxf,EAAO,CAACoN,GAkBV,OAhBEnhB,UAAUuC,OAAS,IAEjBT,EADJsmB,EAAOpoB,UAAU,MAEfszB,EAAOlL,EAAKkL,KACRviB,EAAQuiB,KAAUpC,KACpBqC,EAAUnL,EAAKmL,QAAU,IAAItC,EAAQ7I,EAAKmL,SAAW,IAAItC,GAC5CrnB,IAAI,iBACf2pB,EAAQjrB,IAAI,eAAgB,mDAE9B8f,EAAOljB,EAAOkjB,EAAM,CAClBkL,KAAM9mB,EAAyB,EAAGnN,OAAOi0B,IACzCC,QAAS/mB,EAAyB,EAAG+mB,OAI3Cxf,EAAKzP,KAAK8jB,IACH4I,EAAOjxB,MAAMuC,KAAMyR,MAKlCnY,EAAOD,QAAU,CACfme,gBAAiB4Y,EACjBc,SAAUpC,I,4BCvVZ,EAAQ,MACR,IA2CIqC,EA3CA1oB,EAAI,EAAQ,MACZ7C,EAAc,EAAQ,MACtB4oB,EAAiB,EAAQ,MACzB9lB,EAAS,EAAQ,MACjB1K,EAAmB,EAAQ,MAC3B+M,EAAW,EAAQ,MACnBvF,EAAa,EAAQ,MACrB8B,EAAM,EAAQ,MACdvJ,EAAS,EAAQ,MACjBqzB,EAAY,EAAQ,MACpBlU,EAAS,eACTmU,EAAU,EAAQ,MAClBxoB,EAAiB,EAAQ,KACzByoB,EAAwB,EAAQ,MAChCxrB,EAAsB,EAAQ,MAE9ByrB,EAAY7oB,EAAOwO,IACnBM,EAAkB8Z,EAAsB9Z,gBACxCga,EAA+BF,EAAsBJ,SACrDnrB,EAAmBD,EAAoBE,IACvCyrB,EAAsB3rB,EAAoBI,UAAU,OACpDsO,EAAQxC,KAAKwC,MACbkd,EAAM1f,KAAK0f,IAGXC,EAAiB,iBACjBC,EAAe,eACfC,EAAe,eAEfC,EAAQ,WAERC,EAAe,gBACfC,EAAQ,KACRC,EAAY,WACZC,EAAM,WACNC,EAAM,QACNC,EAAM,gBAENC,EAA4B,wBAC5BC,EAA8C,uBAC9CC,EAA2C,yCAC3CC,EAAmB,YAInBC,EAAY,SAAUxb,EAAK4H,GAC7B,IAAI/d,EAAQ4xB,EAAYvyB,EACxB,GAAuB,KAAnB0e,EAAM5B,OAAO,GAAW,CAC1B,GAAsC,KAAlC4B,EAAM5B,OAAO4B,EAAM5e,OAAS,GAAW,OAAO2xB,EAElD,KADA9wB,EAAS6xB,EAAU9T,EAAMziB,MAAM,GAAI,KACtB,OAAOw1B,EACpB3a,EAAIS,KAAO5W,OAEN,GAAK8xB,EAAU3b,GAQf,CAEL,GADA4H,EAAQwS,EAAQxS,GACZwT,EAA0B7jB,KAAKqQ,GAAQ,OAAO+S,EAElD,GAAe,QADf9wB,EAAS+xB,EAAUhU,IACE,OAAO+S,EAC5B3a,EAAIS,KAAO5W,MAbe,CAC1B,GAAIwxB,EAA4C9jB,KAAKqQ,GAAQ,OAAO+S,EAGpE,IAFA9wB,EAAS,GACT4xB,EAAatB,EAAUvS,GAClB1e,EAAQ,EAAGA,EAAQuyB,EAAWzyB,OAAQE,IACzCW,GAAUgyB,EAAcJ,EAAWvyB,GAAQ4yB,GAE7C9b,EAAIS,KAAO5W,IAUX+xB,EAAY,SAAUhU,GACxB,IACImU,EAAaC,EAAS9yB,EAAO+yB,EAAM9a,EAAO+a,EAAQC,EADlDC,EAAQxU,EAAM7P,MAAM,KAMxB,GAJIqkB,EAAMpzB,QAAqC,IAA3BozB,EAAMA,EAAMpzB,OAAS,IACvCozB,EAAMC,OAERN,EAAcK,EAAMpzB,QACF,EAAG,OAAO4e,EAE5B,IADAoU,EAAU,GACL9yB,EAAQ,EAAGA,EAAQ6yB,EAAa7yB,IAAS,CAE5C,GAAY,KADZ+yB,EAAOG,EAAMlzB,IACG,OAAO0e,EAMvB,GALAzG,EAAQ,GACJ8a,EAAKjzB,OAAS,GAAuB,KAAlBizB,EAAKjW,OAAO,KACjC7E,EAAQ6Z,EAAUzjB,KAAK0kB,GAAQ,GAAK,EACpCA,EAAOA,EAAK92B,MAAe,GAATgc,EAAa,EAAI,IAExB,KAAT8a,EACFC,EAAS,MACJ,CACL,KAAe,IAAT/a,EAAc+Z,EAAe,GAAT/Z,EAAa8Z,EAAME,GAAK5jB,KAAK0kB,GAAO,OAAOrU,EACrEsU,EAASr0B,SAASo0B,EAAM9a,GAE1B6a,EAAQjxB,KAAKmxB,GAEf,IAAKhzB,EAAQ,EAAGA,EAAQ6yB,EAAa7yB,IAEnC,GADAgzB,EAASF,EAAQ9yB,GACbA,GAAS6yB,EAAc,GACzB,GAAIG,GAAUzB,EAAI,IAAK,EAAIsB,GAAc,OAAO,UAC3C,GAAIG,EAAS,IAAK,OAAO,KAGlC,IADAC,EAAOH,EAAQK,MACVnzB,EAAQ,EAAGA,EAAQ8yB,EAAQhzB,OAAQE,IACtCizB,GAAQH,EAAQ9yB,GAASuxB,EAAI,IAAK,EAAIvxB,GAExC,OAAOizB,GAILT,EAAY,SAAU9T,GACxB,IAII/e,EAAOG,EAAQszB,EAAaC,EAAWL,EAAQM,EAAOC,EAJtDC,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCC,EAAa,EACbC,EAAW,KACXC,EAAU,EAGVC,EAAO,WACT,OAAOlV,EAAM5B,OAAO6W,IAGtB,GAAc,KAAVC,IAAe,CACjB,GAAuB,KAAnBlV,EAAM5B,OAAO,GAAW,OAC5B6W,GAAW,EAEXD,IADAD,EAGF,KAAOG,KAAQ,CACb,GAAkB,GAAdH,EAAiB,OACrB,GAAc,KAAVG,IAAJ,CAQA,IADAj0B,EAAQG,EAAS,EACVA,EAAS,GAAKmyB,EAAI5jB,KAAKulB,MAC5Bj0B,EAAgB,GAARA,EAAahB,SAASi1B,IAAQ,IACtCD,IACA7zB,IAEF,GAAc,KAAV8zB,IAAe,CACjB,GAAc,GAAV9zB,EAAa,OAEjB,GADA6zB,GAAW7zB,EACP2zB,EAAa,EAAG,OAEpB,IADAL,EAAc,EACPQ,KAAQ,CAEb,GADAP,EAAY,KACRD,EAAc,EAAG,CACnB,KAAc,KAAVQ,KAAiBR,EAAc,GAC9B,OADiCO,IAGxC,IAAK9B,EAAMxjB,KAAKulB,KAAS,OACzB,KAAO/B,EAAMxjB,KAAKulB,MAAS,CAEzB,GADAZ,EAASr0B,SAASi1B,IAAQ,IACR,OAAdP,EAAoBA,EAAYL,MAC/B,IAAiB,GAAbK,EAAgB,OACpBA,EAAwB,GAAZA,EAAiBL,EAClC,GAAIK,EAAY,IAAK,OACrBM,IAEFH,EAAQC,GAAoC,IAAtBD,EAAQC,GAAoBJ,EAE/B,KADnBD,GACuC,GAAfA,GAAkBK,IAE5C,GAAmB,GAAfL,EAAkB,OACtB,MACK,GAAc,KAAVQ,KAET,GADAD,KACKC,IAAQ,YACR,GAAIA,IAAQ,OACnBJ,EAAQC,KAAgB9zB,MA3CxB,CACE,GAAiB,OAAb+zB,EAAmB,OACvBC,IAEAD,IADAD,GA0CJ,GAAiB,OAAbC,EAGF,IAFAJ,EAAQG,EAAaC,EACrBD,EAAa,EACQ,GAAdA,GAAmBH,EAAQ,GAChCC,EAAOC,EAAQC,GACfD,EAAQC,KAAgBD,EAAQE,EAAWJ,EAAQ,GACnDE,EAAQE,IAAaJ,GAASC,OAE3B,GAAkB,GAAdE,EAAiB,OAC5B,OAAOD,GA6BLK,EAAgB,SAAUtc,GAC5B,IAAI5W,EAAQX,EAAO0zB,EAAUI,EAE7B,GAAmB,iBAARvc,EAAkB,CAE3B,IADA5W,EAAS,GACJX,EAAQ,EAAGA,EAAQ,EAAGA,IACzBW,EAAOozB,QAAQxc,EAAO,KACtBA,EAAOlD,EAAMkD,EAAO,KACpB,OAAO5W,EAAO6Q,KAAK,KAEhB,GAAmB,iBAAR+F,EAAkB,CAGlC,IAFA5W,EAAS,GACT+yB,EAtC0B,SAAUM,GAMtC,IALA,IAAIC,EAAW,KACX9W,EAAY,EACZ+W,EAAY,KACZC,EAAa,EACbn0B,EAAQ,EACLA,EAAQ,EAAGA,IACI,IAAhBg0B,EAAKh0B,IACHm0B,EAAahX,IACf8W,EAAWC,EACX/W,EAAYgX,GAEdD,EAAY,KACZC,EAAa,IAEK,OAAdD,IAAoBA,EAAYl0B,KAClCm0B,GAON,OAJIA,EAAahX,IACf8W,EAAWC,EACX/W,EAAYgX,GAEPF,EAeMG,CAAwB7c,GAC9BvX,EAAQ,EAAGA,EAAQ,EAAGA,IACrB8zB,GAA2B,IAAhBvc,EAAKvX,KAChB8zB,IAASA,GAAU,GACnBJ,IAAa1zB,GACfW,GAAUX,EAAQ,IAAM,KACxB8zB,GAAU,IAEVnzB,GAAU4W,EAAKvX,GAAO4E,SAAS,IAC3B5E,EAAQ,IAAGW,GAAU,OAG7B,MAAO,IAAMA,EAAS,IACtB,OAAO4W,GAGPqb,EAA4B,GAC5ByB,EAA2Bz2B,EAAO,GAAIg1B,EAA2B,CACnE,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAEnC0B,EAAuB12B,EAAO,GAAIy2B,EAA0B,CAC9D,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAE3BE,EAA2B32B,EAAO,GAAI02B,EAAsB,CAC9D,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAG5E3B,EAAgB,SAAUiB,EAAM/tB,GAClC,IAAI2uB,EAAOzX,EAAO6W,EAAM,GACxB,OAAOY,EAAO,IAAQA,EAAO,MAASrtB,EAAItB,EAAK+tB,GAAQA,EAAOvE,mBAAmBuE,IAG/Ea,EAAiB,CACnBC,IAAK,GACLC,KAAM,KACNC,KAAM,GACNC,MAAO,IACPC,GAAI,GACJC,IAAK,KAGHtC,EAAY,SAAU3b,GACxB,OAAO3P,EAAIstB,EAAgB3d,EAAIke,SAG7BC,EAAsB,SAAUne,GAClC,MAAuB,IAAhBA,EAAIQ,UAAkC,IAAhBR,EAAIoe,UAG/BC,EAAiC,SAAUre,GAC7C,OAAQA,EAAIS,MAAQT,EAAIse,kBAAkC,QAAdte,EAAIke,QAG9CK,EAAuB,SAAUnhB,EAAQohB,GAC3C,IAAI3Y,EACJ,OAAwB,GAAjBzI,EAAOpU,QAAe6xB,EAAMtjB,KAAK6F,EAAO4I,OAAO,MACjB,MAA9BH,EAASzI,EAAO4I,OAAO,MAAgBwY,GAAwB,KAAV3Y,IAG1D4Y,GAA+B,SAAUrhB,GAC3C,IAAIshB,EACJ,OAAOthB,EAAOpU,OAAS,GAAKu1B,EAAqBnhB,EAAOjY,MAAM,EAAG,MAC9C,GAAjBiY,EAAOpU,QACyB,OAA9B01B,EAAQthB,EAAO4I,OAAO,KAAyB,OAAV0Y,GAA4B,MAAVA,GAA2B,MAAVA,IAI1EC,GAAkB,SAAU3e,GAC9B,IAAI/b,EAAO+b,EAAI/b,KACX26B,EAAW36B,EAAK+E,QAChB41B,GAA2B,QAAd5e,EAAIke,QAAgC,GAAZU,GAAkBL,EAAqBt6B,EAAK,IAAI,IACvFA,EAAKo4B,OAILwC,GAAc,SAAUC,GAC1B,MAAmB,MAAZA,GAA6C,QAA1BA,EAAQxhB,eAShCyhB,GAAe,GACfC,GAAS,GACTC,GAAY,GACZC,GAAgC,GAChCC,GAAoB,GACpBC,GAAW,GACXC,GAAiB,GACjBC,GAA4B,GAC5BC,GAAmC,GACnCC,GAAY,GACZC,GAAO,GACPC,GAAW,GACXC,GAAO,GACPC,GAAO,GACPC,GAAa,GACbC,GAAY,GACZC,GAAa,GACbC,GAAO,GACPC,GAA4B,GAC5BC,GAAQ,GACRC,GAAW,GAGXC,GAAW,SAAUpgB,EAAK4H,EAAOyY,EAAe3Y,GAClD,IAMI+T,EAAYqB,EAAMwD,EAAkBC,EApCdzB,EA8BtBhvB,EAAQuwB,GAAiBtB,GACzBlC,EAAU,EACV2D,EAAS,GACTC,GAAS,EACTC,GAAc,EACdC,GAAoB,EAoBxB,IAjBKN,IACHrgB,EAAIke,OAAS,GACble,EAAIQ,SAAW,GACfR,EAAIoe,SAAW,GACfpe,EAAIS,KAAO,KACXT,EAAI0J,KAAO,KACX1J,EAAI/b,KAAO,GACX+b,EAAIyY,MAAQ,KACZzY,EAAI4gB,SAAW,KACf5gB,EAAIse,kBAAmB,EACvB1W,EAAQA,EAAMvK,QAAQie,EAA0C,KAGlE1T,EAAQA,EAAMvK,QAAQke,EAAkB,IAExCE,EAAatB,EAAUvS,GAEhBiV,GAAWpB,EAAWzyB,QAAQ,CAEnC,OADA8zB,EAAOrB,EAAWoB,GACV/sB,GACN,KAAKivB,GACH,IAAIjC,IAAQjC,EAAMtjB,KAAKulB,GAGhB,IAAKuD,EAGL,OAAO3F,EAFZ5qB,EAAQmvB,GACR,SAJAuB,GAAU1D,EAAKxf,cACfxN,EAAQkvB,GAKV,MAEF,KAAKA,GACH,GAAIlC,IAAShC,EAAavjB,KAAKulB,IAAiB,KAARA,GAAuB,KAARA,GAAuB,KAARA,GACpE0D,GAAU1D,EAAKxf,kBACV,IAAY,KAARwf,EA0BJ,IAAKuD,EAKL,OAAO3F,EAJZ8F,EAAS,GACT1wB,EAAQmvB,GACRpC,EAAU,EACV,SA7BA,GAAIwD,IACD1E,EAAU3b,IAAQ3P,EAAIstB,EAAgB6C,IAC5B,QAAVA,IAAqBrC,EAAoBne,IAAqB,OAAbA,EAAI0J,OACvC,QAAd1J,EAAIke,SAAqBle,EAAIS,MAC7B,OAEH,GADAT,EAAIke,OAASsC,EACTH,EAEF,YADI1E,EAAU3b,IAAQ2d,EAAe3d,EAAIke,SAAWle,EAAI0J,OAAM1J,EAAI0J,KAAO,OAG3E8W,EAAS,GACS,QAAdxgB,EAAIke,OACNpuB,EAAQ8vB,GACCjE,EAAU3b,IAAQ0H,GAAQA,EAAKwW,QAAUle,EAAIke,OACtDpuB,EAAQovB,GACCvD,EAAU3b,GACnBlQ,EAAQwvB,GAC4B,KAA3B7D,EAAWoB,EAAU,IAC9B/sB,EAAQqvB,GACRtC,MAEA7c,EAAIse,kBAAmB,EACvBte,EAAI/b,KAAK8G,KAAK,IACd+E,EAAQmwB,IAQZ,MAEF,KAAKhB,GACH,IAAKvX,GAASA,EAAK4W,kBAA4B,KAARxB,EAAc,OAAOpC,EAC5D,GAAIhT,EAAK4W,kBAA4B,KAARxB,EAAa,CACxC9c,EAAIke,OAASxW,EAAKwW,OAClBle,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrB6a,EAAIyY,MAAQ/Q,EAAK+Q,MACjBzY,EAAI4gB,SAAW,GACf5gB,EAAIse,kBAAmB,EACvBxuB,EAAQqwB,GACR,MAEFrwB,EAAuB,QAAf4X,EAAKwW,OAAmB0B,GAAOR,GACvC,SAEF,KAAKF,GACH,GAAY,KAARpC,GAA0C,KAA3BrB,EAAWoB,EAAU,GAGjC,CACL/sB,EAAQsvB,GACR,SAJAtvB,EAAQyvB,GACR1C,IAIA,MAEJ,KAAKsC,GACH,GAAY,KAARrC,EAAa,CACfhtB,EAAQ0vB,GACR,MAEA1vB,EAAQkwB,GACR,SAGJ,KAAKZ,GAEH,GADApf,EAAIke,OAASxW,EAAKwW,OACdpB,GAAQ5C,EACVla,EAAIQ,SAAWkH,EAAKlH,SACpBR,EAAIoe,SAAW1W,EAAK0W,SACpBpe,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI0J,KAAOhC,EAAKgC,KAChB1J,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrB6a,EAAIyY,MAAQ/Q,EAAK+Q,WACZ,GAAY,KAARqE,GAAwB,MAARA,GAAgBnB,EAAU3b,GACnDlQ,EAAQuvB,QACH,GAAY,KAARvC,EACT9c,EAAIQ,SAAWkH,EAAKlH,SACpBR,EAAIoe,SAAW1W,EAAK0W,SACpBpe,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI0J,KAAOhC,EAAKgC,KAChB1J,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrB6a,EAAIyY,MAAQ,GACZ3oB,EAAQowB,OACH,IAAY,KAARpD,EASJ,CACL9c,EAAIQ,SAAWkH,EAAKlH,SACpBR,EAAIoe,SAAW1W,EAAK0W,SACpBpe,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI0J,KAAOhC,EAAKgC,KAChB1J,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrB6a,EAAI/b,KAAKo4B,MACTvsB,EAAQkwB,GACR,SAhBAhgB,EAAIQ,SAAWkH,EAAKlH,SACpBR,EAAIoe,SAAW1W,EAAK0W,SACpBpe,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI0J,KAAOhC,EAAKgC,KAChB1J,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrB6a,EAAIyY,MAAQ/Q,EAAK+Q,MACjBzY,EAAI4gB,SAAW,GACf9wB,EAAQqwB,GAUR,MAEJ,KAAKd,GACH,IAAI1D,EAAU3b,IAAiB,KAAR8c,GAAuB,MAARA,EAE/B,IAAY,KAARA,EAEJ,CACL9c,EAAIQ,SAAWkH,EAAKlH,SACpBR,EAAIoe,SAAW1W,EAAK0W,SACpBpe,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI0J,KAAOhC,EAAKgC,KAChB5Z,EAAQkwB,GACR,SAPAlwB,EAAQ0vB,QAFR1vB,EAAQyvB,GAUR,MAEJ,KAAKD,GAEH,GADAxvB,EAAQyvB,GACI,KAARzC,GAA6C,KAA9B0D,EAAOxa,OAAO6W,EAAU,GAAW,SACtDA,IACA,MAEF,KAAK0C,GACH,GAAY,KAARzC,GAAuB,MAARA,EAAc,CAC/BhtB,EAAQ0vB,GACR,SACA,MAEJ,KAAKA,GACH,GAAY,KAAR1C,EAAa,CACX2D,IAAQD,EAAS,MAAQA,GAC7BC,GAAS,EACTH,EAAmBnG,EAAUqG,GAC7B,IAAK,IAAI3zB,EAAI,EAAGA,EAAIyzB,EAAiBt3B,OAAQ6D,IAAK,CAChD,IAAIg0B,EAAYP,EAAiBzzB,GACjC,GAAiB,KAAbg0B,GAAqBF,EAAzB,CAIA,IAAIG,EAAoBjF,EAAcgF,EAAWpD,GAC7CkD,EAAmB3gB,EAAIoe,UAAY0C,EAClC9gB,EAAIQ,UAAYsgB,OALnBH,GAAoB,EAOxBH,EAAS,QACJ,GACL1D,GAAQ5C,GAAe,KAAR4C,GAAuB,KAARA,GAAuB,KAARA,GACpC,MAARA,GAAgBnB,EAAU3b,GAC3B,CACA,GAAIygB,GAAoB,IAAVD,EAAc,MApfd,oBAqfd3D,GAAW1C,EAAUqG,GAAQx3B,OAAS,EACtCw3B,EAAS,GACT1wB,EAAQ2vB,QACHe,GAAU1D,EACjB,MAEF,KAAK2C,GACL,KAAKC,GACH,GAAIW,GAA+B,QAAdrgB,EAAIke,OAAkB,CACzCpuB,EAAQgwB,GACR,SACK,GAAY,KAARhD,GAAgB4D,EAOpB,IACL5D,GAAQ5C,GAAe,KAAR4C,GAAuB,KAARA,GAAuB,KAARA,GACpC,MAARA,GAAgBnB,EAAU3b,GAC3B,CACA,GAAI2b,EAAU3b,IAAkB,IAAVwgB,EAAc,OAAO7F,EAC3C,GAAI0F,GAA2B,IAAVG,IAAiBrC,EAAoBne,IAAqB,OAAbA,EAAI0J,MAAgB,OAEtF,GADA6W,EAAU/E,EAAUxb,EAAKwgB,GACZ,OAAOD,EAGpB,GAFAC,EAAS,GACT1wB,EAAQiwB,GACJM,EAAe,OACnB,SAEY,KAARvD,EAAa4D,GAAc,EACd,KAAR5D,IAAa4D,GAAc,GACpCF,GAAU1D,MAtB4B,CACtC,GAAc,IAAV0D,EAAc,OAAO7F,EAEzB,GADA4F,EAAU/E,EAAUxb,EAAKwgB,GACZ,OAAOD,EAGpB,GAFAC,EAAS,GACT1wB,EAAQ6vB,GACJU,GAAiBX,GAAU,OAiB/B,MAEJ,KAAKC,GACH,IAAI5E,EAAMxjB,KAAKulB,GAER,IACLA,GAAQ5C,GAAe,KAAR4C,GAAuB,KAARA,GAAuB,KAARA,GACpC,MAARA,GAAgBnB,EAAU3b,IAC3BqgB,EACA,CACA,GAAc,IAAVG,EAAc,CAChB,IAAI9W,EAAO7hB,SAAS24B,EAAQ,IAC5B,GAAI9W,EAAO,MAAQ,OAAOkR,EAC1B5a,EAAI0J,KAAQiS,EAAU3b,IAAQ0J,IAASiU,EAAe3d,EAAIke,QAAW,KAAOxU,EAC5E8W,EAAS,GAEX,GAAIH,EAAe,OACnBvwB,EAAQiwB,GACR,SACK,OAAOnF,EAfZ4F,GAAU1D,EAgBZ,MAEF,KAAK8C,GAEH,GADA5f,EAAIke,OAAS,OACD,KAARpB,GAAuB,MAARA,EAAchtB,EAAQ+vB,OACpC,KAAInY,GAAuB,QAAfA,EAAKwW,OAyBf,CACLpuB,EAAQkwB,GACR,SA1BA,GAAIlD,GAAQ5C,EACVla,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrB6a,EAAIyY,MAAQ/Q,EAAK+Q,WACZ,GAAY,KAARqE,EACT9c,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrB6a,EAAIyY,MAAQ,GACZ3oB,EAAQowB,OACH,IAAY,KAARpD,EAMJ,CACA2B,GAA6BhD,EAAWt2B,MAAM03B,GAASniB,KAAK,OAC/DsF,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrBw5B,GAAgB3e,IAElBlQ,EAAQkwB,GACR,SAZAhgB,EAAIS,KAAOiH,EAAKjH,KAChBT,EAAI/b,KAAOyjB,EAAKzjB,KAAKkB,QACrB6a,EAAIyY,MAAQ/Q,EAAK+Q,MACjBzY,EAAI4gB,SAAW,GACf9wB,EAAQqwB,IAaV,MAEJ,KAAKN,GACH,GAAY,KAAR/C,GAAuB,MAARA,EAAc,CAC/BhtB,EAAQgwB,GACR,MAEEpY,GAAuB,QAAfA,EAAKwW,SAAqBO,GAA6BhD,EAAWt2B,MAAM03B,GAASniB,KAAK,OAC5F6jB,EAAqB7W,EAAKzjB,KAAK,IAAI,GAAO+b,EAAI/b,KAAK8G,KAAK2c,EAAKzjB,KAAK,IACjE+b,EAAIS,KAAOiH,EAAKjH,MAEvB3Q,EAAQkwB,GACR,SAEF,KAAKF,GACH,GAAIhD,GAAQ5C,GAAe,KAAR4C,GAAuB,MAARA,GAAwB,KAARA,GAAuB,KAARA,EAAa,CAC5E,IAAKuD,GAAiB9B,EAAqBiC,GACzC1wB,EAAQkwB,QACH,GAAc,IAAVQ,EAAc,CAEvB,GADAxgB,EAAIS,KAAO,GACP4f,EAAe,OACnBvwB,EAAQiwB,OACH,CAEL,GADAQ,EAAU/E,EAAUxb,EAAKwgB,GACZ,OAAOD,EAEpB,GADgB,aAAZvgB,EAAIS,OAAqBT,EAAIS,KAAO,IACpC4f,EAAe,OACnBG,EAAS,GACT1wB,EAAQiwB,GACR,SACGS,GAAU1D,EACjB,MAEF,KAAKiD,GACH,GAAIpE,EAAU3b,IAEZ,GADAlQ,EAAQkwB,GACI,KAARlD,GAAuB,MAARA,EAAc,cAC5B,GAAKuD,GAAyB,KAARvD,EAGtB,GAAKuD,GAAyB,KAARvD,GAGtB,GAAIA,GAAQ5C,IACjBpqB,EAAQkwB,GACI,KAARlD,GAAa,cAJjB9c,EAAI4gB,SAAW,GACf9wB,EAAQqwB,QAJRngB,EAAIyY,MAAQ,GACZ3oB,EAAQowB,GAOR,MAEJ,KAAKF,GACH,GACElD,GAAQ5C,GAAe,KAAR4C,GACN,MAARA,GAAgBnB,EAAU3b,KACzBqgB,IAA0B,KAARvD,GAAuB,KAARA,GACnC,CAkBA,GA3XW,QADnBgC,GAD0BA,EA4WF0B,GA3WNljB,gBACqB,SAAZwhB,GAAkC,SAAZA,GAAkC,WAAZA,GA2W7DH,GAAgB3e,GACJ,KAAR8c,GAAyB,MAARA,GAAgBnB,EAAU3b,IAC7CA,EAAI/b,KAAK8G,KAAK,KAEP8zB,GAAY2B,GACT,KAAR1D,GAAyB,MAARA,GAAgBnB,EAAU3b,IAC7CA,EAAI/b,KAAK8G,KAAK,KAGE,QAAdiV,EAAIke,SAAqBle,EAAI/b,KAAK+E,QAAUu1B,EAAqBiC,KAC/DxgB,EAAIS,OAAMT,EAAIS,KAAO,IACzB+f,EAASA,EAAOxa,OAAO,GAAK,KAE9BhG,EAAI/b,KAAK8G,KAAKy1B,IAEhBA,EAAS,GACS,QAAdxgB,EAAIke,SAAqBpB,GAAQ5C,GAAe,KAAR4C,GAAuB,KAARA,GACzD,KAAO9c,EAAI/b,KAAK+E,OAAS,GAAqB,KAAhBgX,EAAI/b,KAAK,IACrC+b,EAAI/b,KAAK20B,QAGD,KAARkE,GACF9c,EAAIyY,MAAQ,GACZ3oB,EAAQowB,IACS,KAARpD,IACT9c,EAAI4gB,SAAW,GACf9wB,EAAQqwB,SAGVK,GAAU3E,EAAciB,EAAMU,GAC9B,MAEJ,KAAKyC,GACS,KAARnD,GACF9c,EAAIyY,MAAQ,GACZ3oB,EAAQowB,IACS,KAARpD,GACT9c,EAAI4gB,SAAW,GACf9wB,EAAQqwB,IACCrD,GAAQ5C,IACjBla,EAAI/b,KAAK,IAAM43B,EAAciB,EAAMhB,IACnC,MAEJ,KAAKoE,GACEG,GAAyB,KAARvD,EAGXA,GAAQ5C,IACL,KAAR4C,GAAenB,EAAU3b,GAAMA,EAAIyY,OAAS,MAC1BzY,EAAIyY,OAAT,KAARqE,EAA0B,MACjBjB,EAAciB,EAAMhB,KALtC9b,EAAI4gB,SAAW,GACf9wB,EAAQqwB,IAKR,MAEJ,KAAKA,GACCrD,GAAQ5C,IAAKla,EAAI4gB,UAAY/E,EAAciB,EAAMS,IAIzDV,MAMAkE,GAAiB,SAAa/gB,GAChC,IAIIghB,EAAWT,EAJX/0B,EAAO+C,EAAWxF,KAAMg4B,GAAgB,OACxCrZ,EAAOjhB,UAAUuC,OAAS,EAAIvC,UAAU,QAAKhE,EAC7Cw+B,EAAYn7B,OAAOka,GACnBlQ,EAAQhB,EAAiBtD,EAAM,CAAE+D,KAAM,QAE3C,QAAa9M,IAATilB,EACF,GAAIA,aAAgBqZ,GAAgBC,EAAYxG,EAAoB9S,QAGlE,GADA6Y,EAAUH,GAASY,EAAY,GAAIl7B,OAAO4hB,IAC7B,MAAMpf,UAAUi4B,GAIjC,GADAA,EAAUH,GAAStwB,EAAOmxB,EAAW,KAAMD,GAC9B,MAAM14B,UAAUi4B,GAC7B,IAAIrgB,EAAepQ,EAAMoQ,aAAe,IAAIK,EACxC2gB,EAAoB3G,EAA6Bra,GACrDghB,EAAkBrI,mBAAmB/oB,EAAM2oB,OAC3CyI,EAAkB5H,UAAY,WAC5BxpB,EAAM2oB,MAAQ3yB,OAAOoa,IAAiB,MAEnCvR,IACHnD,EAAK8U,KAAO6gB,GAAa92B,KAAKmB,GAC9BA,EAAK41B,OAASC,GAAUh3B,KAAKmB,GAC7BA,EAAK+e,SAAW+W,GAAYj3B,KAAKmB,GACjCA,EAAKgV,SAAW+gB,GAAYl3B,KAAKmB,GACjCA,EAAK4yB,SAAWoD,GAAYn3B,KAAKmB,GACjCA,EAAKiV,KAAOghB,GAAQp3B,KAAKmB,GACzBA,EAAKk2B,SAAWC,GAAYt3B,KAAKmB,GACjCA,EAAKke,KAAOkY,GAAQv3B,KAAKmB,GACzBA,EAAK2U,SAAW0hB,GAAYx3B,KAAKmB,GACjCA,EAAK0oB,OAAS4N,GAAUz3B,KAAKmB,GAC7BA,EAAK0U,aAAe6hB,GAAgB13B,KAAKmB,GACzCA,EAAKkV,KAAOshB,GAAQ33B,KAAKmB,KAIzBy2B,GAAelB,GAAev7B,UAE9B27B,GAAe,WACjB,IAAInhB,EAAMwa,EAAoBzxB,MAC1Bm1B,EAASle,EAAIke,OACb1d,EAAWR,EAAIQ,SACf4d,EAAWpe,EAAIoe,SACf3d,EAAOT,EAAIS,KACXiJ,EAAO1J,EAAI0J,KACXzlB,EAAO+b,EAAI/b,KACXw0B,EAAQzY,EAAIyY,MACZmI,EAAW5gB,EAAI4gB,SACf9Y,EAASoW,EAAS,IAYtB,OAXa,OAATzd,GACFqH,GAAU,KACNqW,EAAoBne,KACtB8H,GAAUtH,GAAY4d,EAAW,IAAMA,EAAW,IAAM,KAE1DtW,GAAUiV,EAActc,GACX,OAATiJ,IAAe5B,GAAU,IAAM4B,IAChB,QAAVwU,IAAkBpW,GAAU,MACvCA,GAAU9H,EAAIse,iBAAmBr6B,EAAK,GAAKA,EAAK+E,OAAS,IAAM/E,EAAKyW,KAAK,KAAO,GAClE,OAAV+d,IAAgB3Q,GAAU,IAAM2Q,GACnB,OAAbmI,IAAmB9Y,GAAU,IAAM8Y,GAChC9Y,GAGLuZ,GAAY,WACd,IAAIrhB,EAAMwa,EAAoBzxB,MAC1Bm1B,EAASle,EAAIke,OACbxU,EAAO1J,EAAI0J,KACf,GAAc,QAAVwU,EAAkB,IACpB,OAAO,IAAI6C,GAAe7C,EAAOj6B,KAAK,IAAIm9B,OAC1C,MAAO/zB,GACP,MAAO,OAET,MAAc,QAAV6wB,GAAqBvC,EAAU3b,GAC5Bke,EAAS,MAAQnB,EAAc/c,EAAIS,OAAkB,OAATiJ,EAAgB,IAAMA,EAAO,IADhC,QAI9C4X,GAAc,WAChB,OAAO9G,EAAoBzxB,MAAMm1B,OAAS,KAGxCqD,GAAc,WAChB,OAAO/G,EAAoBzxB,MAAMyX,UAG/BghB,GAAc,WAChB,OAAOhH,EAAoBzxB,MAAMq1B,UAG/BqD,GAAU,WACZ,IAAIzhB,EAAMwa,EAAoBzxB,MAC1B0X,EAAOT,EAAIS,KACXiJ,EAAO1J,EAAI0J,KACf,OAAgB,OAATjJ,EAAgB,GACV,OAATiJ,EAAgBqT,EAActc,GAC9Bsc,EAActc,GAAQ,IAAMiJ,GAG9BiY,GAAc,WAChB,IAAIlhB,EAAO+Z,EAAoBzxB,MAAM0X,KACrC,OAAgB,OAATA,EAAgB,GAAKsc,EAActc,IAGxCmhB,GAAU,WACZ,IAAIlY,EAAO8Q,EAAoBzxB,MAAM2gB,KACrC,OAAgB,OAATA,EAAgB,GAAK5jB,OAAO4jB,IAGjCmY,GAAc,WAChB,IAAI7hB,EAAMwa,EAAoBzxB,MAC1B9E,EAAO+b,EAAI/b,KACf,OAAO+b,EAAIse,iBAAmBr6B,EAAK,GAAKA,EAAK+E,OAAS,IAAM/E,EAAKyW,KAAK,KAAO,IAG3EonB,GAAY,WACd,IAAIrJ,EAAQ+B,EAAoBzxB,MAAM0vB,MACtC,OAAOA,EAAQ,IAAMA,EAAQ,IAG3BsJ,GAAkB,WACpB,OAAOvH,EAAoBzxB,MAAMmX,cAG/B8hB,GAAU,WACZ,IAAIpB,EAAWpG,EAAoBzxB,MAAM63B,SACzC,OAAOA,EAAW,IAAMA,EAAW,IAGjCsB,GAAqB,SAAUC,EAAQ1d,GACzC,MAAO,CAAEnU,IAAK6xB,EAAQpzB,IAAK0V,EAAQlS,cAAc,EAAMiB,YAAY,IAyHrE,GAtHI7E,GACF5H,EAAiBk7B,GAAc,CAG7B3hB,KAAM4hB,GAAmBf,IAAc,SAAU7gB,GAC/C,IAAIN,EAAMwa,EAAoBzxB,MAC1Bk4B,EAAYn7B,OAAOwa,GACnBigB,EAAUH,GAASpgB,EAAKihB,GAC5B,GAAIV,EAAS,MAAMj4B,UAAUi4B,GAC7BhG,EAA6Bva,EAAIE,cAAc2Y,mBAAmB7Y,EAAIyY,UAIxE2I,OAAQc,GAAmBb,IAG3B9W,SAAU2X,GAAmBZ,IAAa,SAAU/W,GAClD,IAAIvK,EAAMwa,EAAoBzxB,MAC9Bq3B,GAASpgB,EAAKla,OAAOykB,GAAY,IAAKwU,OAIxCve,SAAU0hB,GAAmBX,IAAa,SAAU/gB,GAClD,IAAIR,EAAMwa,EAAoBzxB,MAC1B0yB,EAAatB,EAAUr0B,OAAO0a,IAClC,IAAI6d,EAA+Bre,GAAnC,CACAA,EAAIQ,SAAW,GACf,IAAK,IAAI3T,EAAI,EAAGA,EAAI4uB,EAAWzyB,OAAQ6D,IACrCmT,EAAIQ,UAAYqb,EAAcJ,EAAW5uB,GAAI4wB,OAKjDW,SAAU8D,GAAmBV,IAAa,SAAUpD,GAClD,IAAIpe,EAAMwa,EAAoBzxB,MAC1B0yB,EAAatB,EAAUr0B,OAAOs4B,IAClC,IAAIC,EAA+Bre,GAAnC,CACAA,EAAIoe,SAAW,GACf,IAAK,IAAIvxB,EAAI,EAAGA,EAAI4uB,EAAWzyB,OAAQ6D,IACrCmT,EAAIoe,UAAYvC,EAAcJ,EAAW5uB,GAAI4wB,OAKjDhd,KAAMyhB,GAAmBT,IAAS,SAAUhhB,GAC1C,IAAIT,EAAMwa,EAAoBzxB,MAC1BiX,EAAIse,kBACR8B,GAASpgB,EAAKla,OAAO2a,GAAOgf,OAI9BiC,SAAUQ,GAAmBP,IAAa,SAAUD,GAClD,IAAI1hB,EAAMwa,EAAoBzxB,MAC1BiX,EAAIse,kBACR8B,GAASpgB,EAAKla,OAAO47B,GAAWhC,OAIlChW,KAAMwY,GAAmBN,IAAS,SAAUlY,GAC1C,IAAI1J,EAAMwa,EAAoBzxB,MAC1Bs1B,EAA+Bre,KAEvB,KADZ0J,EAAO5jB,OAAO4jB,IACE1J,EAAI0J,KAAO,KACtB0W,GAASpgB,EAAK0J,EAAMiW,QAI3Bxf,SAAU+hB,GAAmBL,IAAa,SAAU1hB,GAClD,IAAIH,EAAMwa,EAAoBzxB,MAC1BiX,EAAIse,mBACRte,EAAI/b,KAAO,GACXm8B,GAASpgB,EAAKG,EAAW,GAAI4f,QAI/B7L,OAAQgO,GAAmBJ,IAAW,SAAU5N,GAC9C,IAAIlU,EAAMwa,EAAoBzxB,MAEhB,KADdmrB,EAASpuB,OAAOouB,IAEdlU,EAAIyY,MAAQ,MAER,KAAOvE,EAAOlO,OAAO,KAAIkO,EAASA,EAAO/uB,MAAM,IACnD6a,EAAIyY,MAAQ,GACZ2H,GAASpgB,EAAKkU,EAAQgM,KAExB3F,EAA6Bva,EAAIE,cAAc2Y,mBAAmB7Y,EAAIyY,UAIxEvY,aAAcgiB,GAAmBH,IAGjCrhB,KAAMwhB,GAAmBF,IAAS,SAAUthB,GAC1C,IAAIV,EAAMwa,EAAoBzxB,MAElB,KADZ2X,EAAO5a,OAAO4a,KAKV,KAAOA,EAAKsF,OAAO,KAAItF,EAAOA,EAAKvb,MAAM,IAC7C6a,EAAI4gB,SAAW,GACfR,GAASpgB,EAAKU,EAAMyf,KALlBngB,EAAI4gB,SAAW,UAYvB9sB,EAASmuB,GAAc,UAAU,WAC/B,OAAOd,GAAa92B,KAAKtB,QACxB,CAAEyK,YAAY,IAIjBM,EAASmuB,GAAc,YAAY,WACjC,OAAOd,GAAa92B,KAAKtB,QACxB,CAAEyK,YAAY,IAEb8mB,EAAW,CACb,IAAI8H,GAAwB9H,EAAU+H,gBAClCC,GAAwBhI,EAAUiI,gBAIlCH,IAAuBtuB,EAASitB,GAAgB,mBAAmB,SAAyByB,GAC9F,OAAOJ,GAAsB57B,MAAM8zB,EAAW7zB,cAK5C67B,IAAuBxuB,EAASitB,GAAgB,mBAAmB,SAAyB/gB,GAC9F,OAAOsiB,GAAsB97B,MAAM8zB,EAAW7zB,cAIlDmL,EAAemvB,GAAgB,OAE/BvvB,EAAE,CAAEC,QAAQ,EAAMgB,QAAS8kB,EAAgBrwB,MAAOyH,GAAe,CAC/DsR,IAAK8gB,M,2BC5+BP,IAAI34B,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,EAAQ,MACR,IAAI7D,EAAU,EAAQ,MAClBiT,EAAU,EAAQ,MAClB7R,EAAiBzB,MAAMsB,UAEvBuxB,EAAe,CACjBnhB,cAAc,EACdU,UAAU,GAGZjU,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGlB,QACb,OAAOkB,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAepB,SAE1EwyB,EAAa7b,eAAe1D,EAAQ/R,IAAOlB,EAAUmB,I,eCd5D,IAAI0C,EAAS,EAAQ,KAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,EAAQ,MACR,IAAIvD,EAAU,EAAQ,MAClB2S,EAAU,EAAQ,MAClB7R,EAAiBzB,MAAMsB,UAEvBuxB,EAAe,CACjBnhB,cAAc,EACdU,UAAU,GAGZjU,EAAOD,QAAU,SAAUqD,GACzB,IAAIC,EAAMD,EAAGZ,QACb,OAAOY,IAAOE,GAAmBF,aAAcvB,OAASwB,IAAQC,EAAed,SAE1EkyB,EAAa7b,eAAe1D,EAAQ/R,IAAOZ,EAAUa,I,eCd5D,IAAI0C,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,KAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,KAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,EAAQ,MACR,IAAInE,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAKqzB,a,eCHtB,EAAQ,MACR,IAAIrzB,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAK8mB,Y,eCHtB,IAAI3iB,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,IAAIA,EAAS,EAAQ,MAErB/F,EAAOD,QAAUgG,G,eCFjB,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,IAAInE,EAAO,EAAQ,MAEnB5B,EAAOD,QAAU6B,EAAKgc,K,SCctB5d,EAAOD,QAJC,WACN,OAAO,I,eChBT,IAwBIqgC,EAtBJ,EAAQ,KAwBRC,EAAQ,SAAgBrX,GACtB,OAAO,WACL,OAAOA,MAIXhpB,EAAOD,QAAUqgC,G,eChCjB,IAAIE,EAEJ,EAAQ,MA6BJt9B,EAzBJ,EAAQ,KA2BRu9B,EAAQ,SAAcz1B,EAAI01B,GACxB,OAAOF,EAAOx1B,EAAGnE,QAAQ,WACvB,OAAOmE,EAAG3G,MAAMq8B,EAASp8B,iBAI7BpE,EAAOD,QAAUiD,G,eCvCjB,IAAIs9B,EAEJ,EAAQ,MAEJD,EAEJ,EAAQ,MAEJ19B,EAEJ,EAAQ,MAEJgmB,EAEJ,EAAQ,MAEJ/lB,EAEJ,EAAQ,KA8BJ69B,EAEJJ,GAAQ,SAAcK,GACpB,IAAIC,EAAQ/9B,EAAO+lB,EAAK,EAAGhmB,GAAI,SAAUi+B,GACvC,OAAOA,EAAK,GAAGj6B,SACd+5B,IACH,OAAOJ,EAAOK,GAAO,WAGnB,IAFA,IAAIE,EAAM,EAEHA,EAAMH,EAAM/5B,QAAQ,CACzB,GAAI+5B,EAAMG,GAAK,GAAG18B,MAAMuC,KAAMtC,WAC5B,OAAOs8B,EAAMG,GAAK,GAAG18B,MAAMuC,KAAMtC,WAGnCy8B,GAAO,SAKb7gC,EAAOD,QAAU0gC,G,eCnEjB,IAAIK,EAEJ,EAAQ,MA8BJC,EA1BJ,EAAQ,KA4BRR,CAAQO,GAER9gC,EAAOD,QAAUghC,G,eCpCjB,IAAIT,EAEJ,EAAQ,MAEJD,EAEJ,EAAQ,MAEJE,EAEJ,EAAQ,MAEJS,EAEJ,EAAQ,MA6CJC,EAEJV,GAAQ,SAAgB55B,EAAQmE,GAC9B,OAAe,IAAXnE,EACK05B,EAAQv1B,GAGVw1B,EAAO35B,EAAQq6B,EAAQr6B,EAAQ,GAAImE,OAG5C9K,EAAOD,QAAUkhC,G,eCrEjB,IA4BIC,EA1BJ,EAAQ,KA4BRX,EAAQ,SAAmBY,EAAGvU,GAC5B,OAAY,MAALA,GAAaA,GAAMA,EAAIuU,EAAIvU,KAGpC5sB,EAAOD,QAAUmhC,G,eClCjB,IAAIX,EAEJ,EAAQ,MAEJa,EAEJ,EAAQ,MA4BJC,EAEJd,GAAQ,SAAgBvwB,EAAGC,GACzB,OAAOmxB,EAAQpxB,EAAGC,EAAG,GAAI,OAG3BjQ,EAAOD,QAAUshC,G,eCxCjB,IAAId,EAEJ,EAAQ,MAEJe,EAEJ,EAAQ,MAEJC,EAEJ,EAAQ,MAEJC,EAEJ,EAAQ,MAEJC,EAEJ,EAAQ,MAEJC,EAEJ,EAAQ,KAEJp8B,EAEJ,EAAQ,MA8BJlD,EAEJm+B,EAEAe,EAAc,CAAC,UAAWI,GAAU,SAAUC,EAAMC,GAClD,OAAOJ,EAAUI,GAAcH,GAAQ,SAAUI,EAAK98B,GAKpD,OAJI48B,EAAKC,EAAW78B,MAClB88B,EAAI98B,GAAO68B,EAAW78B,IAGjB88B,IACN,GAAIv8B,EAAKs8B,IACZL,EAAQI,EAAMC,OAGhB5hC,EAAOD,QAAUqC,G,eCvEjB,IA0BI0/B,EAxBJ,EAAQ,KA0BRzB,CAtBA,EAAQ,KAwBR0B,EAAU,IAEV/hC,EAAOD,QAAU+hC,G,eChCjB,IAAIzB,EAEJ,EAAQ,MAEJY,EAEJ,EAAQ,MAuBJe,EAEJ3B,GAAQ,SAAcv1B,GACpB,OAAOm2B,EAAOn2B,EAAGnE,QAAQ,SAAUqJ,EAAGC,GACpC,IAAIkI,EAAOtW,MAAMsB,UAAUL,MAAMkF,KAAK5D,UAAW,GAGjD,OAFA+T,EAAK,GAAKlI,EACVkI,EAAK,GAAKnI,EACHlF,EAAG3G,MAAMuC,KAAMyR,SAI1BnY,EAAOD,QAAUiiC,G,cCxCjB,IAqBIC,EAnBJ,EAAQ,KAqBR5B,EAAQ,SAAmBK,GAIzB,IAHA,IAAIl5B,EAAS,GACTq5B,EAAM,EAEHA,EAAMH,EAAM/5B,QACjBa,EAAOk5B,EAAMG,GAAK,IAAMH,EAAMG,GAAK,GACnCA,GAAO,EAGT,OAAOr5B,KAGTxH,EAAOD,QAAUkiC,G,eCnCjB,IA0BI9lB,EAxBJ,EAAQ,KA0BR+lB,CAAI,GACJliC,EAAOD,QAAUoc,G,eC7BjB,IAAIgmB,EAEJ,EAAQ,MAgCJC,EA5BJ,EAAQ,KA8BR7B,CAAQ4B,GAERniC,EAAOD,QAAUqiC,G,SCyBjBpiC,EAAOD,QA/DP,SAAgB+lB,EAAGhb,GAEjB,OAAQgb,GACN,KAAK,EACH,OAAO,WACL,OAAOhb,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,GACf,OAAOv3B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,EAAIC,GACnB,OAAOx3B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,EAAIC,EAAIC,GACvB,OAAOz3B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,EAAIC,EAAIC,EAAIC,GAC3B,OAAO13B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,EAAIC,EAAIC,EAAIC,EAAIC,GAC/B,OAAO33B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACnC,OAAO53B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACvC,OAAO73B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC3C,OAAO93B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,EACH,OAAO,SAAUi+B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC/C,OAAO/3B,EAAG3G,MAAMuC,KAAMtC,YAG1B,KAAK,GACH,OAAO,SAAUi+B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACnD,OAAOh4B,EAAG3G,MAAMuC,KAAMtC,YAG1B,QACE,MAAM,IAAIwlB,MAAM,kF,SChDtB5pB,EAAOD,QAXP,SAA4BgjC,GAI1B,IAHA,IACIp7B,EADAyQ,EAAO,KAGFzQ,EAAOo7B,EAAKp7B,QAAQM,MAC3BmQ,EAAK1P,KAAKf,EAAKnB,OAGjB,OAAO4R,I,SCFTpY,EAAOD,QANP,SAAqB8F,GACnB,OAAO,WACL,OAAQA,EAAE1B,MAAMuC,KAAMtC,c,eCF1B,IAAI4+B,EAEJ,EAAQ,MAqBRhjC,EAAOD,QAVP,SAAiB+K,GACf,OAAO,SAASm4B,EAAGjzB,GACjB,OAAyB,IAArB5L,UAAUuC,QAAgBq8B,EAAehzB,GACpCizB,EAEAn4B,EAAG3G,MAAMuC,KAAMtC,c,eClB5B,IAAIi8B,EAEJ,EAAQ,MAEJ2C,EAEJ,EAAQ,MAgCRhjC,EAAOD,QArBP,SAAiB+K,GACf,OAAO,SAASo4B,EAAGlzB,EAAGC,GACpB,OAAQ7L,UAAUuC,QAChB,KAAK,EACH,OAAOu8B,EAET,KAAK,EACH,OAAOF,EAAehzB,GAAKkzB,EAAK7C,GAAQ,SAAU8C,GAChD,OAAOr4B,EAAGkF,EAAGmzB,MAGjB,QACE,OAAOH,EAAehzB,IAAMgzB,EAAe/yB,GAAKizB,EAAKF,EAAehzB,GAAKqwB,GAAQ,SAAU+C,GACzF,OAAOt4B,EAAGs4B,EAAInzB,MACX+yB,EAAe/yB,GAAKowB,GAAQ,SAAU8C,GACzC,OAAOr4B,EAAGkF,EAAGmzB,MACVr4B,EAAGkF,EAAGC,O,eCjCnB,IAAIowB,EAEJ,EAAQ,MAEJE,EAEJ,EAAQ,MAEJyC,EAEJ,EAAQ,MAiDRhjC,EAAOD,QAtCP,SAAiB+K,GACf,OAAO,SAASu4B,EAAGrzB,EAAGC,EAAG8F,GACvB,OAAQ3R,UAAUuC,QAChB,KAAK,EACH,OAAO08B,EAET,KAAK,EACH,OAAOL,EAAehzB,GAAKqzB,EAAK9C,GAAQ,SAAU4C,EAAIG,GACpD,OAAOx4B,EAAGkF,EAAGmzB,EAAIG,MAGrB,KAAK,EACH,OAAON,EAAehzB,IAAMgzB,EAAe/yB,GAAKozB,EAAKL,EAAehzB,GAAKuwB,GAAQ,SAAU6C,EAAIE,GAC7F,OAAOx4B,EAAGs4B,EAAInzB,EAAGqzB,MACdN,EAAe/yB,GAAKswB,GAAQ,SAAU4C,EAAIG,GAC7C,OAAOx4B,EAAGkF,EAAGmzB,EAAIG,MACdjD,GAAQ,SAAUiD,GACrB,OAAOx4B,EAAGkF,EAAGC,EAAGqzB,MAGpB,QACE,OAAON,EAAehzB,IAAMgzB,EAAe/yB,IAAM+yB,EAAejtB,GAAKstB,EAAKL,EAAehzB,IAAMgzB,EAAe/yB,GAAKswB,GAAQ,SAAU6C,EAAID,GACvI,OAAOr4B,EAAGs4B,EAAID,EAAIptB,MACfitB,EAAehzB,IAAMgzB,EAAejtB,GAAKwqB,GAAQ,SAAU6C,EAAIE,GAClE,OAAOx4B,EAAGs4B,EAAInzB,EAAGqzB,MACdN,EAAe/yB,IAAM+yB,EAAejtB,GAAKwqB,GAAQ,SAAU4C,EAAIG,GAClE,OAAOx4B,EAAGkF,EAAGmzB,EAAIG,MACdN,EAAehzB,GAAKqwB,GAAQ,SAAU+C,GACzC,OAAOt4B,EAAGs4B,EAAInzB,EAAG8F,MACditB,EAAe/yB,GAAKowB,GAAQ,SAAU8C,GACzC,OAAOr4B,EAAGkF,EAAGmzB,EAAIptB,MACditB,EAAejtB,GAAKsqB,GAAQ,SAAUiD,GACzC,OAAOx4B,EAAGkF,EAAGC,EAAGqzB,MACbx4B,EAAGkF,EAAGC,EAAG8F,O,eCtDtB,IAAIuqB,EAEJ,EAAQ,MAEJ0C,EAEJ,EAAQ,MA2CRhjC,EAAOD,QA9BP,SAASihC,EAAQr6B,EAAQ48B,EAAUz4B,GACjC,OAAO,WAML,IALA,IAAI04B,EAAW,GACXC,EAAU,EACVh5B,EAAO9D,EACP+8B,EAAc,EAEXA,EAAcH,EAAS58B,QAAU88B,EAAUr/B,UAAUuC,QAAQ,CAClE,IAAIa,EAEAk8B,EAAcH,EAAS58B,UAAYq8B,EAAeO,EAASG,KAAiBD,GAAWr/B,UAAUuC,QACnGa,EAAS+7B,EAASG,IAElBl8B,EAASpD,UAAUq/B,GACnBA,GAAW,GAGbD,EAASE,GAAel8B,EAEnBw7B,EAAex7B,KAClBiD,GAAQ,GAGVi5B,GAAe,EAGjB,OAAOj5B,GAAQ,EAAIK,EAAG3G,MAAMuC,KAAM88B,GAAYlD,EAAO71B,EAAMu2B,EAAQr6B,EAAQ68B,EAAU14B,O,eC7CzF,IAAI64B,EAEJ,EAAQ,KAEJC,EAEJ,EAAQ,MA+CR5jC,EAAOD,QA9BP,SAAuB8jC,EAAaC,EAAIh5B,GACtC,OAAO,WACL,GAAyB,IAArB1G,UAAUuC,OACZ,OAAOmE,IAGT,IAAIqN,EAAOtW,MAAMsB,UAAUL,MAAMkF,KAAK5D,UAAW,GAC7CuoB,EAAMxU,EAAK6hB,MAEf,IAAK2J,EAAShX,GAAM,CAGlB,IAFA,IAAIkU,EAAM,EAEHA,EAAMgD,EAAYl9B,QAAQ,CAC/B,GAAqC,mBAA1BgmB,EAAIkX,EAAYhD,IACzB,OAAOlU,EAAIkX,EAAYhD,IAAM18B,MAAMwoB,EAAKxU,GAG1C0oB,GAAO,EAGT,GAAI+C,EAAejX,GAAM,CACvB,IAAIoX,EAAaD,EAAG3/B,MAAM,KAAMgU,GAChC,OAAO4rB,EAAWpX,IAItB,OAAO7hB,EAAG3G,MAAMuC,KAAMtC,c,eCjD1B,IAAI4/B,EAEJ,EAAQ,MAEJC,EAEJ,EAAQ,MAEJC,EAEJ,EAAQ,MAEJC,EAEJ,EAAQ,MAEJhC,EAEJ,EAAQ,MAEJ78B,EAEJ,EAAQ,MAEJ4H,EAEJ,EAAQ,MAaR,SAASk3B,EAAmBC,EAAWC,EAAWC,EAAQC,GACxD,IAAIx0B,EAAIg0B,EAAmBK,GAEvBp0B,EAAI+zB,EAAmBM,GAE3B,SAASG,EAAGrB,EAAID,GACd,OAAO/B,EAAQgC,EAAID,EAAIoB,EAAOzhC,QAAS0hC,EAAO1hC,SAIhD,OAAQmhC,GAAc,SAAUh0B,EAAGy0B,GACjC,OAAQT,EAAcQ,EAAIC,EAAOz0B,KAChCA,EAAGD,GAGR,SAASoxB,EAAQpxB,EAAGC,EAAGs0B,EAAQC,GAC7B,GAAIrC,EAAUnyB,EAAGC,GACf,OAAO,EAGT,IAAI00B,EAAQz3B,EAAK8C,GAEjB,GAAI20B,IAAUz3B,EAAK+C,GACjB,OAAO,EAGT,GAAS,MAALD,GAAkB,MAALC,EACf,OAAO,EAGT,GAAwC,mBAA7BD,EAAE,wBAA6E,mBAA7BC,EAAE,uBAC7D,MAA2C,mBAA7BD,EAAE,wBAAyCA,EAAE,uBAAuBC,IAA0C,mBAA7BA,EAAE,wBAAyCA,EAAE,uBAAuBD,GAGrK,GAAwB,mBAAbA,EAAEqxB,QAA6C,mBAAbpxB,EAAEoxB,OAC7C,MAA2B,mBAAbrxB,EAAEqxB,QAAyBrxB,EAAEqxB,OAAOpxB,IAA0B,mBAAbA,EAAEoxB,QAAyBpxB,EAAEoxB,OAAOrxB,GAGrG,OAAQ20B,GACN,IAAK,YACL,IAAK,QACL,IAAK,SACH,GAA6B,mBAAlB30B,EAAEhG,aAA+D,YAAjCk6B,EAAcl0B,EAAEhG,aACzD,OAAOgG,IAAMC,EAGf,MAEF,IAAK,UACL,IAAK,SACL,IAAK,SACH,UAAaD,UAAaC,IAAKkyB,EAAUnyB,EAAEiZ,UAAWhZ,EAAEgZ,WACtD,OAAO,EAGT,MAEF,IAAK,OACH,IAAKkZ,EAAUnyB,EAAEiZ,UAAWhZ,EAAEgZ,WAC5B,OAAO,EAGT,MAEF,IAAK,QACH,OAAOjZ,EAAE5J,OAAS6J,EAAE7J,MAAQ4J,EAAE2Z,UAAY1Z,EAAE0Z,QAE9C,IAAK,SACH,GAAM3Z,EAAEiG,SAAWhG,EAAEgG,QAAUjG,EAAEZ,SAAWa,EAAEb,QAAUY,EAAE40B,aAAe30B,EAAE20B,YAAc50B,EAAE60B,YAAc50B,EAAE40B,WAAa70B,EAAE80B,SAAW70B,EAAE60B,QAAU90B,EAAE+0B,UAAY90B,EAAE80B,QAC/J,OAAO,EAQb,IAFA,IAAIlE,EAAM0D,EAAO59B,OAAS,EAEnBk6B,GAAO,GAAG,CACf,GAAI0D,EAAO1D,KAAS7wB,EAClB,OAAOw0B,EAAO3D,KAAS5wB,EAGzB4wB,GAAO,EAGT,OAAQ8D,GACN,IAAK,MACH,OAAI30B,EAAE3C,OAAS4C,EAAE5C,MAIV+2B,EAAmBp0B,EAAE9N,UAAW+N,EAAE/N,UAAWqiC,EAAOtiC,OAAO,CAAC+N,IAAKw0B,EAAOviC,OAAO,CAACgO,KAEzF,IAAK,MACH,OAAID,EAAE3C,OAAS4C,EAAE5C,MAIV+2B,EAAmBp0B,EAAEzK,SAAU0K,EAAE1K,SAAUg/B,EAAOtiC,OAAO,CAAC+N,IAAKw0B,EAAOviC,OAAO,CAACgO,KAEvF,IAAK,YACL,IAAK,QACL,IAAK,SACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,eACL,IAAK,cACH,MAEF,QAEE,OAAO,EAGX,IAAI+0B,EAAQ1/B,EAAK0K,GAEjB,GAAIg1B,EAAMr+B,SAAWrB,EAAK2K,GAAGtJ,OAC3B,OAAO,EAGT,IAAIs+B,EAAiBV,EAAOtiC,OAAO,CAAC+N,IAChCk1B,EAAiBV,EAAOviC,OAAO,CAACgO,IAGpC,IAFA4wB,EAAMmE,EAAMr+B,OAAS,EAEdk6B,GAAO,GAAG,CACf,IAAI97B,EAAMigC,EAAMnE,GAEhB,IAAMsD,EAAKp/B,EAAKkL,KAAMmxB,EAAQnxB,EAAElL,GAAMiL,EAAEjL,GAAMkgC,EAAgBC,GAC5D,OAAO,EAGTrE,GAAO,EAGT,OAAO,EAGT7gC,EAAOD,QAAUqhC,G,SC5KjBphC,EAAOD,QAhBP,SAAiB+K,EAAIsN,GAKnB,IAJA,IAAIyoB,EAAM,EACNtW,EAAMnS,EAAKzR,OACXa,EAAS,GAENq5B,EAAMtW,GACPzf,EAAGsN,EAAKyoB,MACVr5B,EAAOA,EAAOb,QAAUyR,EAAKyoB,IAG/BA,GAAO,EAGT,OAAOr5B,I,SCPTxH,EAAOD,QANP,SAAuB8F,GAErB,IAAIyP,EAAQ7R,OAAOoC,GAAGyP,MAAM,mBAC5B,OAAgB,MAATA,EAAgB,GAAKA,EAAM,K,SCCpCtV,EAAOD,QAJP,SAAcolC,EAAMxY,GAClB,OAAOnoB,OAAOrB,UAAU0V,eAAe7Q,KAAK2kB,EAAKwY,K,eCDnD,IAAIC,EAEJ,EAAQ,MAMRplC,EAAOD,QAJP,SAAmBiQ,EAAGoI,GACpB,OAAOgtB,EAAShtB,EAAMpI,EAAG,IAAM,I,SCUjChQ,EAAOD,QAfP,SAAuB4hC,EAAMjf,EAAGtK,GAI9B,IAHA,IAAIyoB,EAAM,EACNtW,EAAMnS,EAAKzR,OAERk6B,EAAMtW,GAAK,CAChB,GAAIoX,EAAKjf,EAAGtK,EAAKyoB,IACf,OAAO,EAGTA,GAAO,EAGT,OAAO,I,eCZT,IAAIQ,EAEJ,EAAQ,MAqERrhC,EAAOD,QAnEP,SAAkBqY,EAAMpI,EAAG6wB,GACzB,IAAIwE,EAAKC,EAET,GAA4B,mBAAjBltB,EAAK1V,QACd,cAAesN,GACb,IAAK,SACH,GAAU,IAANA,EAAS,CAIX,IAFAq1B,EAAM,EAAIr1B,EAEH6wB,EAAMzoB,EAAKzR,QAAQ,CAGxB,GAAa,KAFb2+B,EAAOltB,EAAKyoB,KAEM,EAAIyE,IAASD,EAC7B,OAAOxE,EAGTA,GAAO,EAGT,OAAQ,EACH,GAAI7wB,GAAMA,EAAG,CAElB,KAAO6wB,EAAMzoB,EAAKzR,QAAQ,CAGxB,GAAoB,iBAFpB2+B,EAAOltB,EAAKyoB,KAEoByE,GAASA,EACvC,OAAOzE,EAGTA,GAAO,EAGT,OAAQ,EAIV,OAAOzoB,EAAK1V,QAAQsN,EAAG6wB,GAGzB,IAAK,SACL,IAAK,UACL,IAAK,WACL,IAAK,YACH,OAAOzoB,EAAK1V,QAAQsN,EAAG6wB,GAEzB,IAAK,SACH,GAAU,OAAN7wB,EAEF,OAAOoI,EAAK1V,QAAQsN,EAAG6wB,GAO/B,KAAOA,EAAMzoB,EAAKzR,QAAQ,CACxB,GAAI06B,EAAOjpB,EAAKyoB,GAAM7wB,GACpB,OAAO6wB,EAGTA,GAAO,EAGT,OAAQ,I,eCpEV,IAAIsD,EAEJ,EAAQ,MAEJ14B,EAAWjH,OAAOrB,UAAUsI,SAE5B85B,EAEJ,WACE,MAAoC,uBAA7B95B,EAASzD,KAAK5D,WAAsC,SAAsBse,GAC/E,MAA4B,uBAArBjX,EAASzD,KAAK0a,IACnB,SAAsBA,GACxB,OAAOyhB,EAAK,SAAUzhB,IAJ1B,GAQA1iB,EAAOD,QAAUwlC,G,QCJjBvlC,EAAOD,QAAU8B,MAAME,SAAW,SAAkBinB,GAClD,OAAc,MAAPA,GAAeA,EAAIriB,QAAU,GAA6C,mBAAxCnC,OAAOrB,UAAUsI,SAASzD,KAAKghB,K,eCb1E,IAAIqX,EAEJ,EAAQ,MAEJsD,EAEJ,EAAQ,KAEJ6B,EAEJ,EAAQ,KAoBJC,EAEJpF,GAAQ,SAAqB3d,GAC3B,QAAIihB,EAASjhB,MAIRA,GAIY,iBAANA,IAIP8iB,EAAU9iB,KAIK,IAAfA,EAAEgjB,WACKhjB,EAAE/b,OAGI,IAAb+b,EAAE/b,QAIF+b,EAAE/b,OAAS,GACN+b,EAAE7J,eAAe,IAAM6J,EAAE7J,eAAe6J,EAAE/b,OAAS,OAM9D3G,EAAOD,QAAU0lC,G,QCxDjBzlC,EAAOD,QAAUuE,OAAOC,WAAa,SAAoBuhB,GACvD,OAAOA,GAAK,IAAMA,I,SCLpB9lB,EAAOD,QAJP,SAAmB2iB,GACjB,MAA6C,oBAAtCle,OAAOrB,UAAUsI,SAASzD,KAAK0a,K,SCGxC1iB,EAAOD,QAJP,SAAwBiQ,GACtB,OAAY,MAALA,GAA0B,iBAANA,IAAoD,IAAlCA,EAAE,8B,QCGjDhQ,EAAOD,QAJP,SAAmB2iB,GACjB,MAA6C,oBAAtCle,OAAOrB,UAAUsI,SAASzD,KAAK0a,K,SCGxC1iB,EAAOD,QAJP,SAAwB4sB,GACtB,OAAc,MAAPA,GAAmD,mBAA7BA,EAAI,uB,eCDnC,IAAI8Y,EAEJ,EAAQ,MAqCRzlC,EAAOD,QA5BP,SAAmB4lC,GACjB,OAAO,SAASC,EAAMxtB,GAMpB,IALA,IAAI5R,EAAOq/B,EAAMrmB,EACbhY,EAAS,GACTq5B,EAAM,EACNiF,EAAO1tB,EAAKzR,OAETk6B,EAAMiF,GAAM,CACjB,GAAIL,EAAartB,EAAKyoB,IAKpB,IAHArhB,EAAI,EACJqmB,GAFAr/B,EAAQm/B,EAAYC,EAAMxtB,EAAKyoB,IAAQzoB,EAAKyoB,IAE/Bl6B,OAEN6Y,EAAIqmB,GACTr+B,EAAOA,EAAOb,QAAUH,EAAMgZ,GAC9BA,GAAK,OAGPhY,EAAOA,EAAOb,QAAUyR,EAAKyoB,GAG/BA,GAAO,EAGT,OAAOr5B,K,SCtBXxH,EAAOD,QAbP,SAAc+K,EAAIi7B,GAKhB,IAJA,IAAIlF,EAAM,EACNtW,EAAMwb,EAAQp/B,OACda,EAAS3F,MAAM0oB,GAEZsW,EAAMtW,GACX/iB,EAAOq5B,GAAO/1B,EAAGi7B,EAAQlF,IACzBA,GAAO,EAGT,OAAOr5B,I,eCVT,IAAI28B,EAEJ,EAAQ,MA6BRnkC,EAAOD,QAAmC,mBAAlByE,OAAOC,OAAwBD,OAAOC,OA1B9D,SAAuB8E,GACrB,GAAc,MAAVA,EACF,MAAM,IAAItD,UAAU,8CAOtB,IAJA,IAAIwf,EAASjhB,OAAO+E,GAChBs3B,EAAM,EACNl6B,EAASvC,UAAUuC,OAEhBk6B,EAAMl6B,GAAQ,CACnB,IAAIsP,EAAS7R,UAAUy8B,GAEvB,GAAc,MAAV5qB,EACF,IAAK,IAAI+vB,KAAW/vB,EACdkuB,EAAK6B,EAAS/vB,KAChBwP,EAAOugB,GAAW/vB,EAAO+vB,IAK/BnF,GAAO,EAGT,OAAOpb,I,SCfTzlB,EAAOD,QAA+B,mBAAdyE,OAAOyhC,GAAoBzhC,OAAOyhC,GAZ1D,SAAmBj2B,EAAGC,GAEpB,OAAID,IAAMC,EAGK,IAAND,GAAW,EAAIA,GAAM,EAAIC,EAGzBD,GAAMA,GAAKC,GAAMA,I,eCT5B,IAAIw1B,EAEJ,EAAQ,MAEJS,EAEJ,EAAQ,MAEJljC,EAEJ,EAAQ,MAoBR,SAASmjC,EAAgBrC,EAAIjC,EAAKkB,GAGhC,IAFA,IAAIt7B,EAAOs7B,EAAKp7B,QAERF,EAAKQ,MAAM,CAGjB,IAFA45B,EAAMiC,EAAG,qBAAqBjC,EAAKp6B,EAAKjB,SAE7Bq7B,EAAI,wBAAyB,CACtCA,EAAMA,EAAI,sBACV,MAGFp6B,EAAOs7B,EAAKp7B,OAGd,OAAOm8B,EAAG,uBAAuBjC,GAGnC,SAASuE,EAActC,EAAIjC,EAAKlV,EAAK0Z,GACnC,OAAOvC,EAAG,uBAAuBnX,EAAI0Z,GAAYrjC,EAAK8gC,EAAG,qBAAsBA,GAAKjC,IAGtF,IAAIyE,EAAgC,oBAAX3gC,OAAyBA,OAAO+B,SAAW,aA8BpE1H,EAAOD,QA5BP,SAAiB+K,EAAI+2B,EAAKzpB,GAKxB,GAJkB,mBAAPtN,IACTA,EAAKo7B,EAAOp7B,IAGV26B,EAAartB,GACf,OA/CJ,SAAsB0rB,EAAIjC,EAAKzpB,GAI7B,IAHA,IAAIyoB,EAAM,EACNtW,EAAMnS,EAAKzR,OAERk6B,EAAMtW,GAAK,CAGhB,IAFAsX,EAAMiC,EAAG,qBAAqBjC,EAAKzpB,EAAKyoB,MAE7BgB,EAAI,wBAAyB,CACtCA,EAAMA,EAAI,sBACV,MAGFhB,GAAO,EAGT,OAAOiD,EAAG,uBAAuBjC,GAgCxB0E,CAAaz7B,EAAI+2B,EAAKzpB,GAG/B,GAA2C,mBAAhCA,EAAK,uBACd,OAAOguB,EAAct7B,EAAI+2B,EAAKzpB,EAAM,uBAGtC,GAAyB,MAArBA,EAAKkuB,GACP,OAAOH,EAAgBr7B,EAAI+2B,EAAKzpB,EAAKkuB,MAGvC,GAAyB,mBAAdluB,EAAKzQ,KACd,OAAOw+B,EAAgBr7B,EAAI+2B,EAAKzpB,GAGlC,GAA2B,mBAAhBA,EAAKxV,OACd,OAAOwjC,EAAct7B,EAAI+2B,EAAKzpB,EAAM,UAGtC,MAAM,IAAInS,UAAU,4C,SC9EtBjG,EAAOD,QAAU,CACfysB,KAAM,WACJ,OAAO9lB,KAAKo9B,GAAG,wBAEjBt8B,OAAQ,SAAUA,GAChB,OAAOd,KAAKo9B,GAAG,uBAAuBt8B,M,cCL1C,IAAI+4B,EAEJ,EAAQ,MAEJiG,EAEJ,EAAQ,MAEJC,EAEJ,WACE,SAASA,EAAQ5gC,EAAGi+B,GAClBp9B,KAAKo9B,GAAKA,EACVp9B,KAAKb,EAAIA,EAUX,OAPA4gC,EAAQtjC,UAAU,qBAAuBqjC,EAAQha,KACjDia,EAAQtjC,UAAU,uBAAyBqjC,EAAQh/B,OAEnDi/B,EAAQtjC,UAAU,qBAAuB,SAAUqE,EAAQ+d,GACzD,OAAO7e,KAAKb,EAAE0f,GAAS7e,KAAKo9B,GAAG,qBAAqBt8B,EAAQ+d,GAAS/d,GAGhEi/B,EAbT,GAgBI/E,EAEJnB,GAAQ,SAAkB16B,EAAGi+B,GAC3B,OAAO,IAAI2C,EAAQ5gC,EAAGi+B,MAGxB9jC,EAAOD,QAAU2hC,G,eChCjB,IAAInB,EAEJ,EAAQ,MAEJiG,EAEJ,EAAQ,MAEJE,EAEJ,WACE,SAASA,EAAK7gC,EAAGi+B,GACfp9B,KAAKo9B,GAAKA,EACVp9B,KAAKb,EAAIA,EAUX,OAPA6gC,EAAKvjC,UAAU,qBAAuBqjC,EAAQha,KAC9Cka,EAAKvjC,UAAU,uBAAyBqjC,EAAQh/B,OAEhDk/B,EAAKvjC,UAAU,qBAAuB,SAAUqE,EAAQ+d,GACtD,OAAO7e,KAAKo9B,GAAG,qBAAqBt8B,EAAQd,KAAKb,EAAE0f,KAG9CmhB,EAbT,GAgBIC,EAEJpG,GAAQ,SAAe16B,EAAGi+B,GACxB,OAAO,IAAI4C,EAAK7gC,EAAGi+B,MAGrB9jC,EAAOD,QAAU4mC,G,SChCjB,IAAIC,EAEJ,WACE,SAASA,EAAM97B,GACbpE,KAAKb,EAAIiF,EAeX,OAZA87B,EAAMzjC,UAAU,qBAAuB,WACrC,MAAM,IAAIymB,MAAM,kCAGlBgd,EAAMzjC,UAAU,uBAAyB,SAAU0+B,GACjD,OAAOA,GAGT+E,EAAMzjC,UAAU,qBAAuB,SAAU0+B,EAAKnf,GACpD,OAAOhc,KAAKb,EAAEg8B,EAAKnf,IAGdkkB,EAjBT,GAwBA5mC,EAAOD,QAJP,SAAgB+K,GACd,OAAO,IAAI87B,EAAM97B,K,eCvBnB,IAAIu1B,EAEJ,EAAQ,MAEJ8D,EAEJ,EAAQ,MAEJoB,EAEJ,EAAQ,MAGJsB,GAEJ,CACEp7B,SAAU,MACVuN,qBAAqB,YACnB8tB,EAAqB,CAAC,cAAe,UAAW,gBAAiB,WAAY,uBAAwB,iBAAkB,kBAEvHC,EAEJ,WACE,aAEA,OAAO3iC,UAAU4U,qBAAqB,UAHxC,GAMI+nB,EAAW,SAAkB3oB,EAAMktB,GAGrC,IAFA,IAAIzE,EAAM,EAEHA,EAAMzoB,EAAKzR,QAAQ,CACxB,GAAIyR,EAAKyoB,KAASyE,EAChB,OAAO,EAGTzE,GAAO,EAGT,OAAO,GAsBLv7B,EAA8B,mBAAhBd,OAAOc,MAAwByhC,EAMjD1G,GAAQ,SAAc1T,GACpB,GAAInoB,OAAOmoB,KAASA,EAClB,MAAO,GAGT,IAAIwY,EAAM6B,EACNC,EAAK,GAELC,EAAkBH,GAAkBxB,EAAa5Y,GAErD,IAAKwY,KAAQxY,GACPwX,EAAKgB,EAAMxY,IAAUua,GAA4B,WAAT/B,IAC1C8B,EAAGA,EAAGtgC,QAAUw+B,GAIpB,GAAI0B,EAGF,IAFAG,EAAOF,EAAmBngC,OAAS,EAE5BqgC,GAAQ,GAGT7C,EAFJgB,EAAO2B,EAAmBE,GAEXra,KAASoU,EAASkG,EAAI9B,KACnC8B,EAAGA,EAAGtgC,QAAUw+B,GAGlB6B,GAAQ,EAIZ,OAAOC,KAlCT5G,GAAQ,SAAc1T,GACpB,OAAOnoB,OAAOmoB,KAASA,EAAM,GAAKnoB,OAAOc,KAAKqnB,MAmChD3sB,EAAOD,QAAUuF,G,eCnGjB,IAyBI8H,EAvBJ,EAAQ,KAyBR80B,EAAK,GACLliC,EAAOD,QAAUqN,G,eC5BjB,IA0BI+5B,EAxBJ,EAAQ,KA0BR5G,EAAQ,SAAYvwB,EAAGC,GACrB,OAAOD,EAAIC,KAGbjQ,EAAOD,QAAUonC,G,eChCjB,IA0BIC,EAxBJ,EAAQ,KA0BR7G,EAAQ,SAAavwB,EAAGC,GACtB,OAAOD,GAAKC,KAGdjQ,EAAOD,QAAUqnC,G,eChCjB,IAAI7G,EAEJ,EAAQ,MAEJe,EAEJ,EAAQ,MAEJ+F,EAEJ,EAAQ,MAEJ5F,EAEJ,EAAQ,MAEJkF,EAEJ,EAAQ,MAEJ1F,EAEJ,EAAQ,MAEJ37B,EAEJ,EAAQ,MAsCJ3C,EAEJ49B,EAEAe,EAAc,CAAC,mBAAoB,OAAQqF,GAAO,SAAa77B,EAAIi7B,GACjE,OAAQvhC,OAAOrB,UAAUsI,SAASzD,KAAK+9B,IACrC,IAAK,oBACH,OAAO9E,EAAO8E,EAAQp/B,QAAQ,WAC5B,OAAOmE,EAAG9C,KAAKtB,KAAMq/B,EAAQ5hC,MAAMuC,KAAMtC,eAG7C,IAAK,kBACH,OAAOq9B,GAAQ,SAAUI,EAAK98B,GAE5B,OADA88B,EAAI98B,GAAO+F,EAAGi7B,EAAQhhC,IACf88B,IACN,GAAIv8B,EAAKygC,IAEd,QACE,OAAOsB,EAAKv8B,EAAIi7B,QAItB/lC,EAAOD,QAAU4C,G,eCtFjB,IAsBIgmB,EApBJ,EAAQ,KAsBR4X,EAAQ,SAAavwB,EAAGC,GACtB,OAAOA,EAAID,EAAIC,EAAID,KAGrBhQ,EAAOD,QAAU4oB,G,cC5BjB,IAAI2e,EAEJ,EAAQ,MA+BJC,EA3BJ,EAAQ,KA6BRhH,EAAQ,SAAeiH,EAAGpW,GACxB,OAAOkW,EAAc,GAAIE,EAAGpW,MAG9BpxB,EAAOD,QAAUwnC,G,eCvCjB,IAAIhH,EAEJ,EAAQ,MAEJiF,EAEJ,EAAQ,KA6BJtD,EAEJ3B,GAAQ,SAAajU,EAAQlU,GAC3B,IAAIyoB,EAAMvU,EAAS,EAAIlU,EAAKzR,OAAS2lB,EAASA,EAC9C,OAAOkZ,EAAUptB,GAAQA,EAAKuL,OAAOkd,GAAOzoB,EAAKyoB,MAGnD7gC,EAAOD,QAAUmiC,G,eC1CjB,IAAI3B,EAEJ,EAAQ,MAEJkH,EAEJ,EAAQ,MAuBJ7lC,EAEJ2+B,GAAQ,SAAcmH,EAAQ/a,GAC5B,OAAO8a,EAAM,CAACC,GAAS/a,GAAK,MAG9B3sB,EAAOD,QAAU6B,G,eCnCjB,IAAI2+B,EAEJ,EAAQ,MAEJoH,EAEJ,EAAQ,KAEJzF,EAEJ,EAAQ,MAqBJuF,EAEJlH,GAAQ,SAAeqH,EAAYjb,GACjC,OAAOib,EAAWjlC,KAAI,SAAU8kC,GAK9B,IAJA,IAEII,EAFA7e,EAAM2D,EACNkU,EAAM,EAGHA,EAAM4G,EAAM9gC,QAAQ,CACzB,GAAW,MAAPqiB,EACF,OAGF6e,EAAIJ,EAAM5G,GACV7X,EAAM2e,EAAWE,GAAK3F,EAAI2F,EAAG7e,GAAOA,EAAI6e,GACxChH,GAAO,EAGT,OAAO7X,QAIXhpB,EAAOD,QAAU0nC,G,eCrDjB,IAuBIK,EArBJ,EAAQ,KAuBRvH,EAAQ,SAAcze,EAAO6K,GAI3B,IAHA,IAAInlB,EAAS,GACTq5B,EAAM,EAEHA,EAAM/e,EAAMnb,QACbmb,EAAM+e,KAAQlU,IAChBnlB,EAAOsa,EAAM+e,IAAQlU,EAAI7K,EAAM+e,KAGjCA,GAAO,EAGT,OAAOr5B,KAGTxH,EAAOD,QAAU+nC,G,eCxCjB,IAAIvH,EAEJ,EAAQ,MAEJ3+B,EAEJ,EAAQ,MAwBJujC,EAEJ5E,GAAQ,SAAcsH,EAAGlb,GACvB,OAAO/qB,EAAK,CAACimC,GAAIlb,MAGnB3sB,EAAOD,QAAUolC,G,cCpCjB,IAuDIviC,EArDJ,EAAQ,KAuDRmlC,CAnDA,EAAQ,OAqDR/nC,EAAOD,QAAU6C,G,eC3DjB,IAAIolC,EAEJ,EAAQ,MAEJzH,EAEJ,EAAQ,MAEJn+B,EAEJ,EAAQ,MA2BJmc,EAEJgiB,GAAQ,SAAgBoB,EAAMC,GAC5B,OAAOx/B,EAAO4lC,EAAYrG,GAAOC,MAGnC5hC,EAAOD,QAAUwe,G,eC3CjB,IA8BIrR,EA5BJ,EAAQ,KA8BRmzB,EAAQ,SAAcrX,GACpB,OAAe,OAARA,EAAe,YAAiB5oB,IAAR4oB,EAAoB,YAAcxkB,OAAOrB,UAAUsI,SAASzD,KAAKghB,GAAKlmB,MAAM,GAAI,MAGjH9C,EAAOD,QAAUmN,G,eCpCjB,IAAI+2B,EAEJ,EAAQ,MA6BJgE,EAzBJ,EAAQ,KA2BR1H,EAAQ,SAAkBoB,EAAMvpB,GAM9B,IALA,IAGIktB,EAHAzE,EAAM,EACNtW,EAAMnS,EAAKzR,OACXa,EAAS,GAGNq5B,EAAMtW,GACX+a,EAAOltB,EAAKyoB,GAEPoD,EAActC,EAAM2D,EAAM99B,KAC7BA,EAAOA,EAAOb,QAAU2+B,GAG1BzE,GAAO,EAGT,OAAOr5B,KAGTxH,EAAOD,QAAUkoC,G,eCpDjB,IAAInH,EAEJ,EAAQ,MAEJP,EAEJ,EAAQ,MAEJyB,EAEJ,EAAQ,MAEJzjB,EAEJ,EAAQ,MAsBJ2pB,EAEJ3H,GAAQ,SAAU4H,EAAI/vB,GACpB,OAAOmG,EAAOyjB,EAAKlB,EAALkB,CAAgBmG,GAAK/vB,MAGrCpY,EAAOD,QAAUmoC,G,eC1CjB,IAsBIE,EApBJ,EAAQ,KAsBR7H,EAAQ,SAAgBj7B,EAAMC,GAK5B,IAJA,IAAIs7B,EAAM,EACNtW,EAAM7R,KAAKkQ,IAAItjB,EAAKqB,OAAQpB,EAAOoB,QACnC0hC,EAAM,GAEHxH,EAAMtW,GACX8d,EAAI/iC,EAAKu7B,IAAQt7B,EAAOs7B,GACxBA,GAAO,EAGT,OAAOwH,KAGTroC,EAAOD,QAAUqoC,G,SC9BjB,IAAIE,EAAW,SAAUvoC,GACvB,aAEA,IAEIK,EAFAmoC,EAAK/jC,OAAOrB,UACZ2V,EAASyvB,EAAG1vB,eAEZ2Z,EAA4B,mBAAX7sB,OAAwBA,OAAS,GAClD6iC,EAAiBhW,EAAQ9qB,UAAY,aACrC+gC,EAAsBjW,EAAQkW,eAAiB,kBAC/CC,EAAoBnW,EAAQoW,aAAe,gBAE/C,SAAS3xB,EAAK4xB,EAASC,EAASzoC,EAAM0oC,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQ3lC,qBAAqB8lC,EAAYH,EAAUG,EAC/EC,EAAY1kC,OAAO8E,OAAO0/B,EAAe7lC,WACzCgmC,EAAU,IAAIC,EAAQL,GAAe,IAMzC,OAFAG,EAAUG,QAqMZ,SAA0BR,EAASxoC,EAAM8oC,GACvC,IAAI17B,EAAQ67B,EAEZ,OAAO,SAAgBl/B,EAAQoQ,GAC7B,GAAI/M,IAAU87B,EACZ,MAAM,IAAI3f,MAAM,gCAGlB,GAAInc,IAAU+7B,EAAmB,CAC/B,GAAe,UAAXp/B,EACF,MAAMoQ,EAKR,OAAOivB,IAMT,IAHAN,EAAQ/+B,OAASA,EACjB++B,EAAQ3uB,IAAMA,IAED,CACX,IAAIkvB,EAAWP,EAAQO,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUP,GACnD,GAAIQ,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,GAIX,GAAuB,SAAnBR,EAAQ/+B,OAGV++B,EAAQW,KAAOX,EAAQY,MAAQZ,EAAQ3uB,SAElC,GAAuB,UAAnB2uB,EAAQ/+B,OAAoB,CACrC,GAAIqD,IAAU67B,EAEZ,MADA77B,EAAQ+7B,EACFL,EAAQ3uB,IAGhB2uB,EAAQa,kBAAkBb,EAAQ3uB,SAEN,WAAnB2uB,EAAQ/+B,QACjB++B,EAAQc,OAAO,SAAUd,EAAQ3uB,KAGnC/M,EAAQ87B,EAER,IAAIW,EAASC,EAAStB,EAASxoC,EAAM8oC,GACrC,GAAoB,WAAhBe,EAAOh9B,KAAmB,CAO5B,GAJAO,EAAQ07B,EAAQlhC,KACZuhC,EACAY,EAEAF,EAAO1vB,MAAQqvB,EACjB,SAGF,MAAO,CACLrjC,MAAO0jC,EAAO1vB,IACdvS,KAAMkhC,EAAQlhC,MAGS,UAAhBiiC,EAAOh9B,OAChBO,EAAQ+7B,EAGRL,EAAQ/+B,OAAS,QACjB++B,EAAQ3uB,IAAM0vB,EAAO1vB,OA7QP6vB,CAAiBxB,EAASxoC,EAAM8oC,GAE7CD,EAcT,SAASiB,EAASr/B,EAAI6hB,EAAKnS,GACzB,IACE,MAAO,CAAEtN,KAAM,SAAUsN,IAAK1P,EAAG9C,KAAK2kB,EAAKnS,IAC3C,MAAO8vB,GACP,MAAO,CAAEp9B,KAAM,QAASsN,IAAK8vB,IAhBjCvqC,EAAQkX,KAAOA,EAoBf,IAAIqyB,EAAyB,iBACzBc,EAAyB,iBACzBb,EAAoB,YACpBC,EAAoB,YAIpBK,EAAmB,GAMvB,SAASZ,KACT,SAASsB,KACT,SAASC,KAIT,IAAI75B,EAAoB,GACxBA,EAAkB63B,GAAkB,WAClC,OAAO9hC,MAGT,IAAI+jC,EAAWjmC,OAAOkM,eAClBg6B,EAA0BD,GAAYA,EAASA,EAASllC,EAAO,MAC/DmlC,GACAA,IAA4BnC,GAC5BzvB,EAAO9Q,KAAK0iC,EAAyBlC,KAGvC73B,EAAoB+5B,GAGtB,IAAIC,EAAKH,EAA2BrnC,UAClC8lC,EAAU9lC,UAAYqB,OAAO8E,OAAOqH,GAQtC,SAASi6B,EAAsBznC,GAC7B,CAAC,OAAQ,QAAS,UAAUX,SAAQ,SAAS4H,GAC3CjH,EAAUiH,GAAU,SAASoQ,GAC3B,OAAO9T,KAAK2iC,QAAQj/B,EAAQoQ,OAoClC,SAASqwB,EAAc3B,EAAW4B,GAChC,SAASC,EAAO3gC,EAAQoQ,EAAK4C,EAASmB,GACpC,IAAI2rB,EAASC,EAASjB,EAAU9+B,GAAS8+B,EAAW1uB,GACpD,GAAoB,UAAhB0vB,EAAOh9B,KAEJ,CACL,IAAI1F,EAAS0iC,EAAO1vB,IAChBhU,EAAQgB,EAAOhB,MACnB,OAAIA,GACiB,iBAAVA,GACPsS,EAAO9Q,KAAKxB,EAAO,WACdskC,EAAY1tB,QAAQ5W,EAAMwkC,SAASxuB,MAAK,SAAShW,GACtDukC,EAAO,OAAQvkC,EAAO4W,EAASmB,MAC9B,SAAS+rB,GACVS,EAAO,QAAST,EAAKltB,EAASmB,MAI3BusB,EAAY1tB,QAAQ5W,GAAOgW,MAAK,SAASyuB,GAI9CzjC,EAAOhB,MAAQykC,EACf7tB,EAAQ5V,MACP,SAASwD,GAGV,OAAO+/B,EAAO,QAAS//B,EAAOoS,EAASmB,MAvBzCA,EAAO2rB,EAAO1vB,KA4BlB,IAAI0wB,EAgCJxkC,KAAK2iC,QA9BL,SAAiBj/B,EAAQoQ,GACvB,SAAS2wB,IACP,OAAO,IAAIL,GAAY,SAAS1tB,EAASmB,GACvCwsB,EAAO3gC,EAAQoQ,EAAK4C,EAASmB,MAIjC,OAAO2sB,EAaLA,EAAkBA,EAAgB1uB,KAChC2uB,EAGAA,GACEA,KAkHV,SAASvB,EAAoBF,EAAUP,GACrC,IAAI/+B,EAASs/B,EAAShiC,SAASyhC,EAAQ/+B,QACvC,GAAIA,IAAWhK,EAAW,CAKxB,GAFA+oC,EAAQO,SAAW,KAEI,UAAnBP,EAAQ/+B,OAAoB,CAE9B,GAAIs/B,EAAShiC,SAAiB,SAG5ByhC,EAAQ/+B,OAAS,SACjB++B,EAAQ3uB,IAAMpa,EACdwpC,EAAoBF,EAAUP,GAEP,UAAnBA,EAAQ/+B,QAGV,OAAOy/B,EAIXV,EAAQ/+B,OAAS,QACjB++B,EAAQ3uB,IAAM,IAAIvU,UAChB,kDAGJ,OAAO4jC,EAGT,IAAIK,EAASC,EAAS//B,EAAQs/B,EAAShiC,SAAUyhC,EAAQ3uB,KAEzD,GAAoB,UAAhB0vB,EAAOh9B,KAIT,OAHAi8B,EAAQ/+B,OAAS,QACjB++B,EAAQ3uB,IAAM0vB,EAAO1vB,IACrB2uB,EAAQO,SAAW,KACZG,EAGT,IAAIuB,EAAOlB,EAAO1vB,IAElB,OAAM4wB,EAOFA,EAAKnjC,MAGPkhC,EAAQO,EAAS2B,YAAcD,EAAK5kC,MAGpC2iC,EAAQxhC,KAAO+hC,EAAS4B,QAQD,WAAnBnC,EAAQ/+B,SACV++B,EAAQ/+B,OAAS,OACjB++B,EAAQ3uB,IAAMpa,GAUlB+oC,EAAQO,SAAW,KACZG,GANEuB,GA3BPjC,EAAQ/+B,OAAS,QACjB++B,EAAQ3uB,IAAM,IAAIvU,UAAU,oCAC5BkjC,EAAQO,SAAW,KACZG,GAoDX,SAAS0B,EAAaC,GACpB,IAAI99B,EAAQ,CAAE+9B,OAAQD,EAAK,IAEvB,KAAKA,IACP99B,EAAMg+B,SAAWF,EAAK,IAGpB,KAAKA,IACP99B,EAAMi+B,WAAaH,EAAK,GACxB99B,EAAMk+B,SAAWJ,EAAK,IAGxB9kC,KAAKmlC,WAAWnjC,KAAKgF,GAGvB,SAASo+B,EAAcp+B,GACrB,IAAIw8B,EAASx8B,EAAMq+B,YAAc,GACjC7B,EAAOh9B,KAAO,gBACPg9B,EAAO1vB,IACd9M,EAAMq+B,WAAa7B,EAGrB,SAASd,EAAQL,GAIfriC,KAAKmlC,WAAa,CAAC,CAAEJ,OAAQ,SAC7B1C,EAAYvmC,QAAQ+oC,EAAc7kC,MAClCA,KAAKslC,OAAM,GA8Bb,SAASzmC,EAAO0H,GACd,GAAIA,EAAU,CACZ,IAAIlF,EAAiBkF,EAASu7B,GAC9B,GAAIzgC,EACF,OAAOA,EAAeC,KAAKiF,GAG7B,GAA6B,mBAAlBA,EAAStF,KAClB,OAAOsF,EAGT,IAAK6b,MAAM7b,EAAStG,QAAS,CAC3B,IAAI6D,GAAK,EAAG7C,EAAO,SAASA,IAC1B,OAAS6C,EAAIyC,EAAStG,QACpB,GAAImS,EAAO9Q,KAAKiF,EAAUzC,GAGxB,OAFA7C,EAAKnB,MAAQyG,EAASzC,GACtB7C,EAAKM,MAAO,EACLN,EAOX,OAHAA,EAAKnB,MAAQpG,EACbuH,EAAKM,MAAO,EAELN,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAM8hC,GAIjB,SAASA,IACP,MAAO,CAAEjjC,MAAOpG,EAAW6H,MAAM,GA+MnC,OA3mBAsiC,EAAkBpnC,UAAYwnC,EAAG3gC,YAAcwgC,EAC/CA,EAA2BxgC,YAAcugC,EACzCC,EAA2B7B,GACzB4B,EAAkB0B,YAAc,oBAYlClsC,EAAQmsC,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,mBAAXD,GAAyBA,EAAOniC,YAClD,QAAOoiC,IACHA,IAAS7B,GAG2B,uBAAnC6B,EAAKH,aAAeG,EAAKhmC,QAIhCrG,EAAQssC,KAAO,SAASF,GAUtB,OATI3nC,OAAOgN,eACThN,OAAOgN,eAAe26B,EAAQ3B,IAE9B2B,EAAO7pB,UAAYkoB,EACb7B,KAAqBwD,IACzBA,EAAOxD,GAAqB,sBAGhCwD,EAAOhpC,UAAYqB,OAAO8E,OAAOqhC,GAC1BwB,GAOTpsC,EAAQusC,MAAQ,SAAS9xB,GACvB,MAAO,CAAEwwB,QAASxwB,IAsEpBowB,EAAsBC,EAAc1nC,WACpC0nC,EAAc1nC,UAAUslC,GAAuB,WAC7C,OAAO/hC,MAET3G,EAAQ8qC,cAAgBA,EAKxB9qC,EAAQwsC,MAAQ,SAAS1D,EAASC,EAASzoC,EAAM0oC,EAAa+B,QACxC,IAAhBA,IAAwBA,EAAcrlC,SAE1C,IAAIs9B,EAAO,IAAI8H,EACb5zB,EAAK4xB,EAASC,EAASzoC,EAAM0oC,GAC7B+B,GAGF,OAAO/qC,EAAQmsC,oBAAoBpD,GAC/B/F,EACAA,EAAKp7B,OAAO6U,MAAK,SAAShV,GACxB,OAAOA,EAAOS,KAAOT,EAAOhB,MAAQu8B,EAAKp7B,WAuKjDijC,EAAsBD,GAEtBA,EAAGhC,GAAqB,YAOxBgC,EAAGnC,GAAkB,WACnB,OAAO9hC,MAGTikC,EAAGl/B,SAAW,WACZ,MAAO,sBAkCT1L,EAAQuF,KAAO,SAASkG,GACtB,IAAIlG,EAAO,GACX,IAAK,IAAIP,KAAOyG,EACdlG,EAAKoD,KAAK3D,GAMZ,OAJAO,EAAKzC,UAIE,SAAS8E,IACd,KAAOrC,EAAKqB,QAAQ,CAClB,IAAI5B,EAAMO,EAAK00B,MACf,GAAIj1B,KAAOyG,EAGT,OAFA7D,EAAKnB,MAAQzB,EACb4C,EAAKM,MAAO,EACLN,EAQX,OADAA,EAAKM,MAAO,EACLN,IAsCX5H,EAAQwF,OAASA,EAMjB6jC,EAAQjmC,UAAY,CAClB6G,YAAao/B,EAEb4C,MAAO,SAASQ,GAcd,GAbA9lC,KAAKqH,KAAO,EACZrH,KAAKiB,KAAO,EAGZjB,KAAKojC,KAAOpjC,KAAKqjC,MAAQ3pC,EACzBsG,KAAKuB,MAAO,EACZvB,KAAKgjC,SAAW,KAEhBhjC,KAAK0D,OAAS,OACd1D,KAAK8T,IAAMpa,EAEXsG,KAAKmlC,WAAWrpC,QAAQspC,IAEnBU,EACH,IAAK,IAAIpmC,KAAQM,KAEQ,MAAnBN,EAAKud,OAAO,IACZ7K,EAAO9Q,KAAKtB,KAAMN,KACjB0iB,OAAO1iB,EAAKtD,MAAM,MACrB4D,KAAKN,GAAQhG,IAMrBub,KAAM,WACJjV,KAAKuB,MAAO,EAEZ,IACIwkC,EADY/lC,KAAKmlC,WAAW,GACLE,WAC3B,GAAwB,UAApBU,EAAWv/B,KACb,MAAMu/B,EAAWjyB,IAGnB,OAAO9T,KAAKgmC,MAGd1C,kBAAmB,SAAS2C,GAC1B,GAAIjmC,KAAKuB,KACP,MAAM0kC,EAGR,IAAIxD,EAAUziC,KACd,SAASkmC,EAAOC,EAAKC,GAYnB,OAXA5C,EAAOh9B,KAAO,QACdg9B,EAAO1vB,IAAMmyB,EACbxD,EAAQxhC,KAAOklC,EAEXC,IAGF3D,EAAQ/+B,OAAS,OACjB++B,EAAQ3uB,IAAMpa,KAGN0sC,EAGZ,IAAK,IAAItiC,EAAI9D,KAAKmlC,WAAWllC,OAAS,EAAG6D,GAAK,IAAKA,EAAG,CACpD,IAAIkD,EAAQhH,KAAKmlC,WAAWrhC,GACxB0/B,EAASx8B,EAAMq+B,WAEnB,GAAqB,SAAjBr+B,EAAM+9B,OAIR,OAAOmB,EAAO,OAGhB,GAAIl/B,EAAM+9B,QAAU/kC,KAAKqH,KAAM,CAC7B,IAAIg/B,EAAWj0B,EAAO9Q,KAAK0F,EAAO,YAC9Bs/B,EAAal0B,EAAO9Q,KAAK0F,EAAO,cAEpC,GAAIq/B,GAAYC,EAAY,CAC1B,GAAItmC,KAAKqH,KAAOL,EAAMg+B,SACpB,OAAOkB,EAAOl/B,EAAMg+B,UAAU,GACzB,GAAIhlC,KAAKqH,KAAOL,EAAMi+B,WAC3B,OAAOiB,EAAOl/B,EAAMi+B,iBAGjB,GAAIoB,GACT,GAAIrmC,KAAKqH,KAAOL,EAAMg+B,SACpB,OAAOkB,EAAOl/B,EAAMg+B,UAAU,OAG3B,KAAIsB,EAMT,MAAM,IAAIpjB,MAAM,0CALhB,GAAIljB,KAAKqH,KAAOL,EAAMi+B,WACpB,OAAOiB,EAAOl/B,EAAMi+B,gBAU9B1B,OAAQ,SAAS/8B,EAAMsN,GACrB,IAAK,IAAIhQ,EAAI9D,KAAKmlC,WAAWllC,OAAS,EAAG6D,GAAK,IAAKA,EAAG,CACpD,IAAIkD,EAAQhH,KAAKmlC,WAAWrhC,GAC5B,GAAIkD,EAAM+9B,QAAU/kC,KAAKqH,MACrB+K,EAAO9Q,KAAK0F,EAAO,eACnBhH,KAAKqH,KAAOL,EAAMi+B,WAAY,CAChC,IAAIsB,EAAev/B,EACnB,OAIAu/B,IACU,UAAT//B,GACS,aAATA,IACD+/B,EAAaxB,QAAUjxB,GACvBA,GAAOyyB,EAAatB,aAGtBsB,EAAe,MAGjB,IAAI/C,EAAS+C,EAAeA,EAAalB,WAAa,GAItD,OAHA7B,EAAOh9B,KAAOA,EACdg9B,EAAO1vB,IAAMA,EAETyyB,GACFvmC,KAAK0D,OAAS,OACd1D,KAAKiB,KAAOslC,EAAatB,WAClB9B,GAGFnjC,KAAKwmC,SAAShD,IAGvBgD,SAAU,SAAShD,EAAQ0B,GACzB,GAAoB,UAAhB1B,EAAOh9B,KACT,MAAMg9B,EAAO1vB,IAcf,MAXoB,UAAhB0vB,EAAOh9B,MACS,aAAhBg9B,EAAOh9B,KACTxG,KAAKiB,KAAOuiC,EAAO1vB,IACM,WAAhB0vB,EAAOh9B,MAChBxG,KAAKgmC,KAAOhmC,KAAK8T,IAAM0vB,EAAO1vB,IAC9B9T,KAAK0D,OAAS,SACd1D,KAAKiB,KAAO,OACa,WAAhBuiC,EAAOh9B,MAAqB0+B,IACrCllC,KAAKiB,KAAOikC,GAGP/B,GAGTsD,OAAQ,SAASxB,GACf,IAAK,IAAInhC,EAAI9D,KAAKmlC,WAAWllC,OAAS,EAAG6D,GAAK,IAAKA,EAAG,CACpD,IAAIkD,EAAQhH,KAAKmlC,WAAWrhC,GAC5B,GAAIkD,EAAMi+B,aAAeA,EAGvB,OAFAjlC,KAAKwmC,SAASx/B,EAAMq+B,WAAYr+B,EAAMk+B,UACtCE,EAAcp+B,GACPm8B,IAKb,MAAS,SAAS4B,GAChB,IAAK,IAAIjhC,EAAI9D,KAAKmlC,WAAWllC,OAAS,EAAG6D,GAAK,IAAKA,EAAG,CACpD,IAAIkD,EAAQhH,KAAKmlC,WAAWrhC,GAC5B,GAAIkD,EAAM+9B,SAAWA,EAAQ,CAC3B,IAAIvB,EAASx8B,EAAMq+B,WACnB,GAAoB,UAAhB7B,EAAOh9B,KAAkB,CAC3B,IAAIkgC,EAASlD,EAAO1vB,IACpBsxB,EAAcp+B,GAEhB,OAAO0/B,GAMX,MAAM,IAAIxjB,MAAM,0BAGlByjB,cAAe,SAASpgC,EAAUo+B,EAAYC,GAa5C,OAZA5kC,KAAKgjC,SAAW,CACdhiC,SAAUnC,EAAO0H,GACjBo+B,WAAYA,EACZC,QAASA,GAGS,SAAhB5kC,KAAK0D,SAGP1D,KAAK8T,IAAMpa,GAGNypC,IAQJ9pC,EA1rBK,CAisBiBC,EAAOD,SAGtC,IACEutC,mBAAqBhF,EACrB,MAAOiF,GAUPrqC,SAAS,IAAK,yBAAdA,CAAwColC,K,sBCvtB1CtoC,EAAOD,QAAU4B,G,sBCAjB3B,EAAOD,QAAUoB,G,sBCAjBnB,EAAOD,QAAUO,G,sBCAjBN,EAAOD,QAAUQ,G,sBCAjBP,EAAOD,QAAUa,G,sBCAjBZ,EAAOD,QAAUS,G,sBCAjBR,EAAOD,QAAU2B,G,sBCAjB1B,EAAOD,QAAUe,G,sBCAjBd,EAAOD,QAAUU,G,sBCAjBT,EAAOD,QAAUgB,G,sBCAjBf,EAAOD,QAAUmB,G,sBCAjBlB,EAAOD,QAAUW,G,sBCAjBV,EAAOD,QAAUwB,G,sBCAjBvB,EAAOD,QAAUsB,G,sBCAjBrB,EAAOD,QAAUyB,G,sBCAjBxB,EAAOD,QAAUiB,G,sBCAjBhB,EAAOD,QAAUc,G,sBCAjBb,EAAOD,QAAUkB,G,sBCAjBjB,EAAOD,QAAUY,G,sBCAjBX,EAAOD,QAAU0B,G,sBCAjBzB,EAAOD,QAAUqB,G,sBCAjBpB,EAAOD,QAAUuB,ICCbksC,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBttC,IAAjButC,EACH,OAAOA,EAAa5tC,QAGrB,IAAIC,EAASwtC,EAAyBE,GAAY,CAGjD3tC,QAAS,IAOV,OAHA6tC,EAAoBF,GAAU1tC,EAAQA,EAAOD,QAAS0tC,GAG/CztC,EAAOD,QCpBf0tC,EAAoB3nB,EAAK9lB,IACxB,IAAI8/B,EAAS9/B,GAAUA,EAAO6tC,WAC7B,IAAO7tC,EAAiB,QACxB,IAAM,EAEP,OADAytC,EAAoBtM,EAAErB,EAAQ,CAAE9vB,EAAG8vB,IAC5BA,GCLR2N,EAAoBtM,EAAI,CAACphC,EAAS+tC,KACjC,IAAI,IAAI/oC,KAAO+oC,EACXL,EAAoBM,EAAED,EAAY/oC,KAAS0oC,EAAoBM,EAAEhuC,EAASgF,IAC5EP,OAAOM,eAAe/E,EAASgF,EAAK,CAAEoM,YAAY,EAAMlD,IAAK6/B,EAAW/oC,MCJ3E0oC,EAAoB70B,EAAI,WACvB,GAA0B,iBAAfD,WAAyB,OAAOA,WAC3C,IACC,OAAOjS,MAAQ,IAAIxD,SAAS,cAAb,GACd,MAAOmrB,GACR,GAAsB,iBAAXrZ,OAAqB,OAAOA,QALjB,GCAxBy4B,EAAoBM,EAAI,CAACphB,EAAKwY,IAAU3gC,OAAOrB,UAAU0V,eAAe7Q,KAAK2kB,EAAKwY,GCClFsI,EAAoBrc,EAAKrxB,IACH,oBAAX4F,QAA0BA,OAAOijC,aAC1CpkC,OAAOM,eAAe/E,EAAS4F,OAAOijC,YAAa,CAAEpiC,MAAO,WAE7DhC,OAAOM,eAAe/E,EAAS,aAAc,CAAEyG,OAAO,K,g7ICkBhD,SAASwnC,EAAeC,GAC7B,OAAOA,EAAEjzB,QAAQ,OAAO,SAAA1F,GAAK,OAAIA,EAAM,GAAG44B,iBASrC,SAASC,EAAeF,GAC7B,OAAOA,EAAEjzB,QAAQ,UAAU,SAAA1F,GAAK,iBAAQA,EAAM2F,kBAQzC,SAASmzB,EAAOvnB,GACrB,OAAOA,EAAIlgB,OAAS,GAAM,GAAK,eAAeuO,KAAK2R,G,qBCb9C,SAASwnB,EAAsB3rB,GACpC,IAAKA,EAAEne,YAAa,MAAM,IAAIqlB,MAAJ,wCAA2ClH,EAAE4rB,YACvE,IAAIC,EAAY7rB,EAAEjX,SAAS,IAE3B,OADI8iC,EAAU5nC,OAAS,GAAM,IAAG4nC,EAAY,IAAMA,GAC3CC,EAAO1sC,KAAKysC,EAAW,OASzB,SAASE,EAASzlB,GAAwE,IAA9B0lB,EAA8B,wDAK/F,GAAI1lB,QAAmC,OAAOwlB,EAAO1sC,KAAK,IAC1D,GAAI,IAAiBknB,IAAQ2lB,gBAAsB3lB,IAAQ0lB,EAEzD,OADKC,gBAAsB3lB,KAAMA,EAAM,IAAI2lB,IAAJ,CAAc3lB,IAC9CqlB,EAAqBrlB,GAE9B,GAAmB,iBAARA,EACT,OAAOwlB,EAAO1sC,KAAKknB,GAErB,MAAM,IAAIY,MAAM,oCAWX,SAASglB,EAAS/nB,EAAagoB,GAA8B,MAClE,OAAOL,EAAO1sC,KACZ+kB,EADK,UAELgoB,UAAQT,EAAMvnB,GAAO,WAAQzmB,SAFxB,QDjBF,SAAmBymB,GACxB,GAAIA,EAAIlgB,OAAS,EAAI,GAAK,gBAAgBuO,KAAK2R,GAAM,OAAO,EAC5D,IAAMhgB,EAAQ,IAAAggB,GAAG,KAAHA,EAAY,KAC1B,OAAkB,IAAXhgB,GAAgB,SAASqO,KAAK,IAAA2R,GAAG,KAAHA,EAAUhgB,ICgBDioC,CAASjoB,GAAO,cAAWzmB,G,8GCrE5D,SAAS2uC,GAAgBC,GACtC,GAAI,GAAeA,GAAM,OAAOA,E,gDCFnB,SAASC,GAAkBD,EAAKzkB,IAClC,MAAPA,GAAeA,EAAMykB,EAAIroC,UAAQ4jB,EAAMykB,EAAIroC,QAE/C,IAAK,IAAI6D,EAAI,EAAG0kC,EAAO,IAAIrtC,MAAM0oB,GAAM/f,EAAI+f,EAAK/f,IAC9C0kC,EAAK1kC,GAAKwkC,EAAIxkC,GAGhB,OAAO0kC,ECJM,SAASC,GAA4BpB,EAAGqB,GACrD,IAAIC,EAEJ,GAAKtB,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAO,GAAiBA,EAAGqB,GAEtD,IAAItpB,EAAI,GAAuBupB,EAAW7qC,OAAOrB,UAAUsI,SAASzD,KAAK+lC,IAAI/lC,KAAKqnC,EAAU,GAAI,GAGhG,MADU,WAANvpB,GAAkBioB,EAAE/jC,cAAa8b,EAAIioB,EAAE/jC,YAAY5D,MAC7C,QAAN0f,GAAqB,QAANA,EAAoB,GAAYioB,GACzC,cAANjoB,GAAqB,2CAA2C5Q,KAAK4Q,GAAW,GAAiBioB,EAAGqB,QAAxG,GCba,SAASE,KACtB,MAAM,IAAIrpC,UAAU,6ICGP,SAASspC,GAAeP,EAAKxkC,GAC1C,OAAO,GAAewkC,ICHT,SAA+BA,EAAKxkC,GACjD,IAAIglC,EAAKR,SAA2B,IAAZ,IAA2B,GAAmBA,IAAQA,EAAI,eAElF,GAAU,MAANQ,EAAJ,CACA,IAIIC,EAAIC,EAJJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKL,EAAKA,EAAGxnC,KAAKgnC,KAAQY,GAAMH,EAAKD,EAAG7nC,QAAQM,QAC9C0nC,EAAKjnC,KAAK+mC,EAAGjpC,QAETgE,GAAKmlC,EAAKhpC,SAAW6D,GAH4BolC,GAAK,IAK5D,MAAOtF,GACPuF,GAAK,EACLH,EAAKpF,EACL,QACA,IACOsF,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIK,EAAI,MAAMH,GAIlB,OAAOC,GDxBuB,CAAqBX,EAAKxkC,IAAM,GAA2BwkC,EAAKxkC,IAAM,KEFvF,SAASslC,GAAiB/M,GACvC,QAAuB,IAAZ,IAAuD,MAA5B,GAAmBA,IAAuC,MAAtBA,EAAK,cAAuB,OAAO,GAAYA,GCA5G,SAASgN,GAAmBf,GACzC,OCHa,SAA4BA,GACzC,GAAI,GAAeA,GAAM,OAAO,GAAiBA,GDE1C,CAAkBA,IAAQ,GAAgBA,IAAQ,GAA2BA,IELvE,WACb,MAAM,IAAI/oC,UAAU,wIFIwE,G,qKGqBvF,SAASoY,GAAMkH,GACpB,OAAOipB,GAAO1sC,MAAKkuC,cAAQzqB,EAAO,KAAM,K,eC1B3B,SAAS0qB,GAAgBtjB,EAAK5nB,EAAKyB,GAYhD,OAXIzB,KAAO4nB,EACT,GAAuBA,EAAK5nB,EAAK,CAC/ByB,MAAOA,EACP2K,YAAY,EACZjB,cAAc,EACdkB,UAAU,IAGZub,EAAI5nB,GAAOyB,EAGNmmB,E,4MCFIujB,GAAM,EACNC,GAAQ,EAGRC,GAAS,EAETC,GAAY,IACZC,GAAa,CAAEpjC,KAAM,QAAS1G,MAAO,KACrC+pC,GAAY,CAAErjC,KAAM,QAAS1G,MAAO,IACpCgqC,GAAe,CAAEtjC,KAAM,QAAS1G,MAAO,IAEvCiqC,GAAU,EACVC,GAAS,EACTC,GAAM,KACNC,GAAgB,IAChBC,GAAmB,IACnBC,GAAkB,CAAEC,IAAK,4CAA6CC,OAAQ,wCAE9EC,GAAW,KAIXC,GAAe,KACfC,GAAsB,MACtBC,GAAaD,GACbE,GAAW,EAEXC,GAAsB,KACtBC,GAAyB,IAEzBC,GAA0B,IAC1BC,GAAsB,GACtBC,GAAsB,GACtBC,GAAc,CACzBC,GAAI,iBACJzhB,GAAI,gBACJ0hB,GAAI,kBACJC,GAAI,WAIOC,GAAkB,CAC7BC,GAAIrD,IAAU,GAAGsD,MAAMX,IACvBY,GAAIvD,IAAU,GAAGsD,MAAMX,IACvBa,GAAIxD,IAAU,GAAGsD,MAAMX,IACvBc,GAAIzD,IAAU,IAAIsD,MAAMX,IACxBe,GAAI1D,IAAU,IAAIsD,MAAMX,IACxBgB,GAAI3D,IAAU,IAAIsD,MAAMX,IACxBiB,GAAI5D,IAAU,IAAIsD,MAAMX,IACxBkB,GAAI7D,IAAU,IAAIsD,MAAMX,IACxBmB,GAAI9D,IAAU,KAAKsD,MAAMX,IACzBoB,GAAI/D,IAAU,KAAKsD,MAAMX,IACzBqB,GAAIhE,IAAU,KAAKsD,MAAMX,IACzBsB,GAAIjE,IAAU,KAAKsD,MAAMX,IACzBuB,GAAIlE,IAAU,KAAKsD,MAAMX,IACzBwB,GAAInE,IAAU,MAAMsD,MAAMX,IAC1ByB,GAAIpE,IAAU,MAAMsD,MAAMX,IAC1B0B,GAAIrE,IAAU,MAAMsD,MAAMX,IAC1B2B,GAAItE,IAAU,MAAMsD,MAAMX,IAC1B4B,GAAIvE,IAAU,OAAOsD,MAAMX,IAC3B6B,GAAIxE,IAAU,OAAOsD,MAAMX,IAC3B8B,GAAIzE,IAAU,OAAOsD,MAAMX,IAC3B+B,GAAI1E,IAAU,OAAOsD,MAAMX,IAC3BgC,GAAI3E,IAAU,OAAOsD,MAAMX,IAC3BiC,EAAG5E,IAAU,QAAQsD,MAAMX,IAC3BkC,EAAG7E,IAAU,QAAQsD,MAAMX,IAC3BmC,EAAG9E,IAAU,QAAQsD,MAAMX,IAC3BoC,EAAG/E,IAAU,QAAQsD,MAAMX,IAC3BqC,EAAGhF,IAAU,QAAQsD,MAAMX,IAC3BsC,EAAGjF,IAAU,SAASsD,MAAMX,IAC5BuC,EAAGlF,IAAU,SAASsD,MAAMX,IAC5BwC,EAAGnF,IAAU,SAASsD,MAAMX,IAC5BrvB,EAAG0sB,IAAU,SAASsD,MAAMX,KAKjByC,GAAoB,CAC/BZ,GAAIxE,IAAU,GACdyE,GAAIzE,IAAU6C,IACdgC,EAAG7E,IAAU,IAAIsD,MAAMT,IACvBoC,EAAGjF,IAAU,IAAIsD,MAAMT,KAgBZwC,GAAgC,GAsBvCC,GAAuC,IAIvCC,GAAiD,IACjDC,GAAgD,IAChDC,GAAmD,IACnDC,GAAiD,IACjDC,GAA+C,IAC/CC,GAAkC,IAKlCC,GAA4B,IAC5BC,GAAiC,IACjCC,GAA2B,IAC3BC,GAA8B,IAC9BC,GAA0B,IAC1BC,GAA2B,IAM3BC,GAAW,SAAC1uC,EAAM8G,EAAM6nC,GAAb,MAAwB,CAAC3uC,EAAM8G,EAAM6nC,IAChDC,GAAkB,SAACC,EAAQC,GAAT,MAAsB,CAACD,EAAQC,IAsB1CC,GAAU,CACrBC,QAAS,UACTC,OAAQ,WACRC,MAAO,UAEPC,UAAW,cACXC,aAAc,iBACdC,WAAY,eACZC,WAAY,eACZC,aAAc,eAEdC,SAAU,WACVC,eAAgB,mBAChBC,aAAc,iBACdC,mBAAoB,qBAEpBC,eAAgB,iBAChBC,aAAc,eACdC,YAAa,cACbC,eAAgB,iBAEhBC,cAAe,gBACfC,mBAAoB,qBACpBC,iBAAkB,mBAClBC,aAAc,eACdC,eAAgB,iBAChBC,gBAAiB,kBACjBC,cAAe,gBACfC,gBAAiB,kBACjBC,qBAAsB,uBACtBxvB,QAAS,UACTyvB,oBAAqB,sBACrBC,8BAA+B,gCAC/BC,6BAA8B,+BAC9BC,gCAAiC,kCACjCC,8BAA+B,gCAC/BC,4BAA6B,8BAC7BC,iBAAkB,mBAClBC,iBAAkB,mBAClBC,WAAY,aACZC,mBAAoB,qBACpBC,wBAAyB,0BACzBC,cAAe,gBACfC,kBAAmB,oBACnBC,aAAc,eACdC,gBAAiB,kBACjBC,YAAa,cACbC,aAAc,eAEdC,SAAU,WACVC,OAAQ,SACRC,UAAW,YACXC,eAAgB,kBAILC,GAAc,CACzBC,MAAO,EACPC,OAAQ,EACRC,4BAA6B,EAC7BC,4BAA6B,EAC7BC,KAAM,EACNC,yBAA0B,EAC1BC,OAAQ,GAGGC,GAAe,CAC1BC,OAAQ,EACRP,OAAQ,EACRG,KAAM,GAGKK,GAAoB,CAC/BC,KAAM,GAIKC,GAAkB,MAC5BF,GAAkBC,MADO,SAEvB1D,GAAQU,eAAiB,CACxBkD,UAAW,CAACb,GAAYO,QAASO,WAAY,CAACN,GAAaH,QAHrC,MAMvBpD,GAAQW,aAAe,CACtBiD,UAAW,CACTb,GAAYO,OACZP,GAAYK,KACZL,GAAYM,yBACZN,GAAYI,4BACZJ,GAAYE,OACZF,GAAYG,6BAEdW,WAAY,CAACN,GAAaH,KAAMG,GAAaN,UAfvB,MAiBvBjD,GAAQa,eAAiB,CACxB+C,UAAW,GAAIC,WAAY,CAACN,GAAaC,OAAQD,GAAaN,UAlBxC,KAuBfa,IAAiB,SA3KH,GA4KH9D,GAAQC,SADF,MAE3BpB,GAAgCmB,GAAQE,QAFb,MAzKO,GA4KHF,GAAQG,OAHZ,MApKoB,GAyKHH,GAAQI,WALzB,MAnKuB,GAyKHJ,GAAQK,cAN5B,MAlKqB,GAyKHL,GAAQM,YAP1B,MAjKqB,GAyKHN,GAAQO,YAR1B,MAhKuB,GAyKHP,GAAQQ,cAT5B,MA/JF,GA0KHR,GAAQS,UAXH,MA7JiB,GAyKHT,GAAQU,gBAZtB,MA5Je,GAyKHV,GAAQW,cAbpB,MA9JG,GA4KHX,GAAQY,oBAdR,MAxKiB,GAwLHZ,GAAQa,gBAhBtB,MArKe,GAsLHb,GAAQc,cAjBpB,MAvKc,GAyLHd,GAAQe,aAlBnB,MAtKiB,GAyLHf,GAAQgB,gBAnBtB,MA3JO,GAgLHhB,GAAQiB,eArBZ,MAxJa,GA8KHjB,GAAQkB,oBAtBlB,MAvJW,GA8KHlB,GAAQmB,kBAvBhB,MAtJM,GA8KHnB,GAAQoB,cAxBX,MAyB3BtC,GAAuCkB,GAAQyB,sBAzBpB,MA1JQ,GAoLHzB,GAAQqB,gBA1Bb,MAzJQ,GAoLHrB,GAAQsB,iBA3Bb,MArJO,GAiLHtB,GAAQuB,eA5BZ,MAnJS,GAgLHvB,GAAQwB,iBA7Bd,MAlJH,GAgLHxB,GAAQ/tB,SA9BF,MAjJc,GAgLH+tB,GAAQ0B,qBA/BnB,MAgC3B3C,GAAiDiB,GAAQ2B,+BAhC9B,MAiC3B3C,GAAgDgB,GAAQ4B,8BAjC7B,MAkC3B3C,GAAmDe,GAAQ6B,iCAlChC,MAmC3B3C,GAAiDc,GAAQ8B,+BAnC9B,MAoC3B3C,GAA+Ca,GAAQ+B,6BApC5B,MAqC3B3C,GAAkCY,GAAQgC,kBArCf,MA1IQ,GAgLHhC,GAAQiC,kBAtCb,MAzIC,GAgLHjC,GAAQkC,YAvCN,MAxIU,GAgLHlC,GAAQmC,oBAxCf,MAvIgB,GAgLHnC,GAAQoC,yBAzCrB,MA0C3B/C,GAA4BW,GAAQqC,eA1CT,MA2C3B/C,GAAiCU,GAAQsC,mBA3Cd,MA4C3B/C,GAA2BS,GAAQuC,cA5CR,MA6C3B/C,GAA8BQ,GAAQwC,iBA7CX,MA8C3B/C,GAA0BO,GAAQyC,aA9CP,MA+C3B/C,GAA2BM,GAAQ0C,cA/CR,MAhID,GAiLH1C,GAAQ2C,UAjDJ,MA/HH,GAiLH3C,GAAQ4C,QAlDF,MA9HA,GAiLH5C,GAAQ6C,WAnDL,MA7HM,GAiLH7C,GAAQ8C,gBApDX,IAuDjBiB,GAAc,CACzBC,IAAK,MACLnI,OAAQ,SACRpiC,GAAI,KACJwqC,IAAK,MACLr+B,OAAQ,SACRs+B,OAAQ,SACRC,UAAW,YACXC,YAAa,cACbC,UAAW,YACXC,KAAM,OACN56B,IAAK,MACL66B,WAAY,aACZC,SAAU,WACVC,gBAAiB,kBACjBC,UAAW,YACXzC,iBAAkB,mBAClB0C,QAAS,UACTC,eAAgB,iBAChBC,UAAW,YACXC,mBAAoB,qBACpBC,QAAS,UACTpsB,IAAK,MACLqsB,UAAW,aAIAC,GAAW,KACXC,GAAe,GACfC,GAAc,IACdC,GAAqB,EAGrBC,GAAkB,SAACC,GAAW,MACnCC,GAAU,EAAD,QACZvF,GAAQyB,qBAAuB,IADnB,KAEZzB,GAAQwB,gBAAkB,GAFd,KAGZxB,GAAQ+B,4BAA8B,GAH1B,KAIZ/B,GAAQ8B,8BAAgC,GAJ5B,KAKZ9B,GAAQ4B,6BAA+B,GAL3B,KAMZ5B,GAAQ6B,gCAAkC,GAN9B,KAOZ7B,GAAQ2B,8BAAgC,GAP5B,KAQZ3B,GAAQU,eAAiB,GARb,KASZV,GAAQW,aAAe,IATX,KAUZX,GAAQ2C,SAAW,GAVP,KAWZ3C,GAAQ4C,OAAS,GAXL,KAYZ5C,GAAQ6C,UAAY,IAZR,GAaZyC,IAAW,EACd,OAAO,IAAI9L,IAAJ,CAAc+L,EAASN,KAGnBO,GAAmB,SAACF,EAAQG,EAAT,GAAkD,IAA/BC,EAA+B,EAA/BA,YAAaC,EAAkB,EAAlBA,YAC9D,OAAQL,GACN,KAAKtF,GAAQa,eACb,KAAKb,GAAQc,aACb,KAAKd,GAAQe,YACb,KAAKf,GAAQgB,eACX,OAAO,IAAIxH,IAAJ,CAAciM,GAClB3I,MAAMoI,IACN5kB,KACC/c,KAAKoL,KAAK,KAAQ+2B,EAAcniC,KAAKwC,MAAM,OAAgBq/B,MAEjE,KAAKpF,GAAQ4C,OACb,KAAK5C,GAAQ6C,UACX,OAAO,IAAIrJ,IAAJ,CAAciM,GAAQG,MAAMD,GAAa7I,MAAMoI,IACxD,QACE,OAAO,IAAI1L,IAAJ,CAAciM,GAAQ3I,MAAMoI,MAI5BW,GAAS,CACpB5F,QAlTqB,EAmTrBhvC,KAlTkB,EAmTlB60C,WAlTwB,EAmTxBC,OAlToB,EAmTpBtF,SAlTsB,EAmTtBxuB,QAlTqB,GAoTV+zB,GAAgB,CAC3BvJ,GAAIoJ,GAAO5F,QACXgG,GAAIJ,GAAO50C,KACXi1C,GAAIL,GAAOC,WACX9qB,GAAI6qB,GAAOE,OACXrJ,GAAImJ,GAAOpF,SACX9D,GAAIkJ,GAAO5zB,SAEAk0B,GArQQ,SAAC3uB,GAAD,aAAS,YAAeA,IAAf,QAA2B,SAACkV,EAAD,iBAAO98B,EAAP,YAAoB88B,EAApB,MAA6B98B,IAAQ88B,IAAK,IAqQtE0Z,CAAaJ,IAG7BK,IAAkB,SAC5BtC,GAAW,KAAO,gBAAG1yC,EAAH,EAAGA,MAAOi1C,EAAV,EAAUA,aAAV,MAA6D,GAAD,OAAIj1C,EAAnCi1C,EAA+B,gBAA4C,0CAD9F,MAE5BvC,GAAYlI,QAAS,gBAAGxqC,EAAH,EAAGA,MAAOi1C,EAAV,EAAUA,aAAV,MAA6D,GAAD,OAAIj1C,EAAnCi1C,EAA+B,gBAA4C,0CAFjG,MAG5BvC,GAAYtqC,IAAK,kBAAGpI,EAAH,EAAGA,MAAOuuC,EAAV,EAAUA,OAAV,OAAwC,iBAAIvuC,EAAL,oDAAqDuuC,EAArD,uCAH5B,MAI5BmE,GAAYG,QAAS,kBAAGtE,EAAH,EAAGA,OAAQvuC,EAAX,EAAWA,MAAX,OAAwC,iBAAIA,EAAL,oDAAqDuuC,EAArD,QAJhC,MAK5BmE,GAAYn+B,QAAS,qBAAGvU,MAA6B,kBALzB,MAM5B0yC,GAAYS,UAAW,qBAAGnzC,MAA6B,sIAN3B,MAO5B0yC,GAAYc,WAAY,qBAAGxzC,MAA6B,sEAP5B,IAUzBk1C,GAAU,CACd5G,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,MAGhByC,GAA0B,mBAClCD,GAD+B,CAElC5G,GAAS,iBAAkBoE,GAAYM,WACvC1E,GAAS,WAAYoE,GAAYe,oBACjCnF,GAAS,WAAYoE,GAAYM,WACjC1E,GAAS,kBAAmBoE,GAAYn+B,QACxC+5B,GAAS,UAAWoE,GAAYO,QAG5BmC,GAAe,mBAChBF,GADa,CAEhB5G,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,UAAWoE,GAAW,KAC/BpE,GAAS,aAAcoE,GAAYtqC,GAAI,CAAC,KAAM,OAC9CkmC,GAAS,YAAaoE,GAAYG,OAAQ,QAGtCwC,GAAW,mBACZH,GADS,CAEZ5G,GAAS,WAAYoE,GAAYtqC,GAAI,MACrCkmC,GAAS,cAAeoE,GAAYtqC,GAAI,CAAC,KAAM,OAC/CkmC,GAAS,SAAUoE,GAAYlI,QAC/B8D,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,UAAWoE,GAAYgB,WAG5B4B,GAAY,mBACbJ,GADU,CAEb5G,GAAS,aAAcoE,GAAYQ,YACnC5E,GAAS,YAAaoE,GAAYI,aAG9ByC,GAAoB,mBACrBL,GADkB,CAErB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,eAAgBoE,GAAYtqC,GAAI,MACzCkmC,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,OAGvB8C,GAAkB,mBACnBN,GADgB,CAEnB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,OAAQoE,GAAYG,OAAQ,MACrCvE,GAAS,WAAYoE,GAAW,KAChCpE,GAAS,UAAWoE,GAAYlI,QAChC8D,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,OAGvB+C,GAAiB,mBAClBP,GADe,CAElB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,UAAWoE,GAAW,KAC/BpE,GAAS,WAAYoE,GAAYS,UACjC7E,GAAS,YAAaoE,GAAW,KACjCpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,OAGvBgD,GAAmB,mBACpBR,GADiB,CAEpB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,cAAeoE,GAAYtqC,GAAI,CAAC,KAAM,OAC/CkmC,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,OAGvBiD,GAAiB,mBAClBT,GADe,CAElB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,OAGvBkD,GAAc,mBACfV,GADY,CAEf5G,GAAS,QAASoE,GAAYtqC,GAAI,MAClCkmC,GAAS,YAAaoE,GAAW,KACjCpE,GAAS,OAAQoE,GAAYG,OAAQ,MACrCvE,GAAS,MAAOoE,GAAYG,OAAQ,MACpCvE,GAAS,SAAUoE,GAAYO,MAC/B3E,GAAS,WAAYoE,GAAYE,IAAK,MACtCtE,GAAS,UAAWoE,GAAYlI,UAG5BqL,GAAe,mBAChBX,GADa,CAEhB5G,GAAS,UAAWoE,GAAYtqC,GAAI,MACpCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,OAAQoE,GAAYG,OAAQ,MACrCvE,GAAS,UAAWoE,GAAYM,WAChC1E,GAAS,YAAaoE,GAAYc,WAClClF,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,WAAYoE,GAAW,KAChCpE,GAAS,WAAYoE,GAAYG,OAAQ,QAGrCiD,GAAe,mBAChBZ,GADa,CAEhB5G,GAAS,OAAQoE,GAAYtqC,GAAI,MACjCkmC,GAAS,WAAYoE,GAAYG,OAAQ,MACzCvE,GAAS,aAAcoE,GAAW,KAClCpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,WAAYoE,GAAW,KAChCpE,GAAS,KAAMoE,GAAYI,aAGvBiD,GAAgB,mBACjBb,GADc,CAEjB5G,GAAS,UAAWoE,GAAYtqC,GAAI,MACpCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,KAAMoE,GAAYI,aAGvBkD,GAAqB,mBACtBd,GADmB,CAEtB5G,GAAS,UAAWoE,GAAYtqC,GAAI,MACpCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,OAAQoE,GAAYG,OAAQ,MACrCvE,GAAS,YAAaoE,GAAYc,WAClClF,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,UAAWoE,GAAYlI,QAChC8D,GAAS,SAAUoE,GAAYlI,QAC/B8D,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,WAAYoE,GAAW,KAChCpE,GAAS,WAAYoE,GAAYG,OAAQ,QAGrCoD,GAAmB,mBACpBf,GADiB,CAEpB5G,GAAS,WAAYoE,GAAYtqC,GAAI,MACrCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,aAAcoE,GAAYtqC,GAAI,CAAC,KAAM,OAC9CkmC,GAAS,aAAcoE,GAAW,KAClCpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,SAAUoE,GAAYlI,QAC/B8D,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,WAAYoE,GAAW,KAChCpE,GAAS,WAAYoE,GAAYG,OAAQ,QAGrCqD,GAA0B,mBAC3BhB,GADwB,CAE3B5G,GAAS,WAAYoE,GAAYtqC,GAAI,MACrCkmC,GAAS,cAAeoE,GAAW,KACnCpE,GAAS,SAAUoE,GAAW,KAC9BpE,GAAS,aAAcoE,GAAYtqC,GAAI,MACvCkmC,GAAS,WAAYoE,GAAW,KAChCpE,GAAS,UAAWoE,GAAW,KAC/BpE,GAAS,cAAeoE,GAAYG,OAAQ,MAC5CvE,GAAS,aAAcoE,GAAYa,gBAEnCjF,GAAS,MAAOoE,GAAYM,aAGxBmD,GAAqB,mBACtBjB,GADmB,CAEtB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,cAAeoE,GAAYn+B,QACpC+5B,GAAS,iBAAkBoE,GAAYn+B,QACvC+5B,GAAS,WAAYoE,GAAYlI,QACjC8D,GAAS,gBAAiBoE,GAAW,KACrCpE,GAAS,iBAAkBoE,GAAW,KACtCpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,aAAcoE,GAAW,OAG9B0D,GAAmB,mBACpBlB,GADiB,CAEpB5G,GAAS,WAAYoE,GAAYtqC,GAAI,CAAC,KAAM,OAC5CkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,gBAAiBoE,GAAW,KACrCpE,GAAS,iBAAkBoE,GAAW,KACtCpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,OAGvB2D,GAAkB,mBACnBnB,GADgB,CAEnB5G,GAAS,WAAYoE,GAAYtqC,GAAI,MACrCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,WAAYoE,GAAYtqC,GAAI,CAAC,KAAM,OAC5CkmC,GAAS,QAASoE,GAAYn+B,QAC9B+5B,GAAS,WAAYoE,GAAYlI,QACjC8D,GAAS,eAAgBoE,GAAW,KACpCpE,GAAS,gBAAiBoE,GAAW,KACrCpE,GAAS,kBAAmBoE,GAAW,KACvCpE,GAAS,mBAAoBoE,GAAW,KACxCpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,OAEvB4D,GAAoB,mBACrBpB,GADkB,CAErB5G,GAAS,WAAYoE,GAAYtqC,GAAI,MACrCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,UAAWoE,GAAYG,OAAQ,MACxCvE,GAAS,WAAYoE,GAAYn+B,QACjC+5B,GAAS,kBAAmBoE,GAAW,KACvCpE,GAAS,mBAAoBoE,GAAW,KACxCpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,OAGvB6D,GAAsB,mBACvBrB,GADoB,CAEvB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,kBAAmBoE,GAAW,KACvCpE,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,kBAAmBoE,GAAW,KACvCpE,GAAS,iBAAkBoE,GAAW,KACtCpE,GAAS,aAAcoE,GAAW,KAClCpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,uBAAwBoE,GAAYn+B,QAC7C+5B,GAAS,uBAAwBoE,GAAYn+B,QAC7C+5B,GAAS,YAAaoE,GAAYG,OAAQ,MAC1CvE,GAAS,QAASoE,GAAW,OAGzB8D,GAAqB,mBACtBtB,GADmB,CAEtB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,SAAUoE,GAAW,KAC9BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,YAAaoE,GAAYG,OAAQ,MAC1CvE,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,QAASoE,GAAW,OAGzB+D,GAAsB,mBACvBvB,GADoB,CAEvB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,OAAQoE,GAAYtqC,GAAI,MACjCkmC,GAAS,SAAUoE,GAAW,KAC9BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,YAAaoE,GAAYG,OAAQ,MAC1CvE,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,QAASoE,GAAW,OAGzBgE,GAA0B,mBAC3BxB,GADwB,CAE3B5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,uBAAwBoE,GAAW,KAC5CpE,GAAS,uBAAwBoE,GAAW,KAC5CpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,QAASoE,GAAW,OAGzBiE,GAAwB,mBACzBzB,GADsB,CAEzB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,UAAWoE,GAAYG,OAAQ,MACxCvE,GAAS,MAAOoE,GAAYG,OAAQ,MACpCvE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,QAASoE,GAAW,OAGzBkE,GAAmB,mBACpB1B,GADiB,CAEpB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,UAAWoE,GAAYG,OAAQ,MACxCvE,GAAS,MAAOoE,GAAYG,OAAQ,MACpCvE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,QAASoE,GAAW,OAGzBmE,GAAoB,mBACrB3B,GADkB,CAErB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,uBAAwBoE,GAAW,KAC5CpE,GAAS,uBAAwBoE,GAAW,KAC5CpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,QAASoE,GAAW,OAGzBoE,GAA4B,mBAC7B5B,GAD0B,CAE7B5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,UAAWoE,GAAYG,OAAQ,MACxCvE,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,SAAUoE,GAAYG,QAC/BvE,GAAS,YAAaoE,GAAYG,QAClCvE,GAAS,gBAAiBoE,GAAYiB,WACtCrF,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,QAASoE,GAAW,OAGzBqE,GAAwB,mBACzB7B,GADsB,CAEzB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,YAAaoE,GAAYG,OAAQ,QAGtCmE,GAAe,mBAChB9B,GADa,CAEhB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,gBAAiBoE,GAAW,KACrCpE,GAAS,kBAAmBoE,GAAW,KACvCpE,GAAS,kBAAmBoE,GAAW,KACvCpE,GAAS,iBAAkBoE,GAAW,KACtCpE,GAAS,uBAAwBoE,GAAYE,KAC7CtE,GAAS,uBAAwBoE,GAAYE,KAC7CtE,GAAS,YAAaoE,GAAYr6B,KAClCi2B,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,YAAaoE,GAAW,KACjCpE,GAAS,aAAcoE,GAAW,KAClCpE,GAAS,cAAeoE,GAAW,KACnCpE,GAAS,gBAAiBoE,GAAYG,OAAQ,MAC9CvE,GAAS,gBAAiBoE,GAAYG,OAAQ,QAG1CoE,GAA2B,mBAC5B/B,GADyB,CAE5B5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,UAAWoE,GAAYG,OAAQ,MACxCvE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,MAAOoE,GAAW,KAC3BpE,GAAS,QAASoE,GAAW,OAGzBwE,GAAsC,mBACvChC,GADoC,CAEvC5G,GAAS,QAASoE,GAAYtqC,GAAI,MAClCkmC,GAAS,YAAaoE,GAAW,KACjCpE,GAAS,OAAQoE,GAAYG,OAAQ,MACrCvE,GAAS,UAAWoE,GAAW,KAC/BpE,GAAS,WAAYoE,GAAYG,OAAQ,QAGrCsE,GAAoC,mBACrCjC,GADkC,CAErC5G,GAAS,SAAUoE,GAAYtqC,GAAI,MACnCkmC,GAAS,WAAYoE,GAAYtqC,GAAI,MACrCkmC,GAAS,aAAcoE,GAAW,KAClCpE,GAAS,SAAUoE,GAAW,KAC9BpE,GAAS,WAAYoE,GAAYG,OAAQ,MACzCvE,GAAS,YAAaoE,GAAYW,WAClC/E,GAAS,WAAYoE,GAAW,KAChCpE,GAAS,WAAYoE,GAAW,OAG5B0E,GAAuB,mBACxBlC,GADqB,CAExB5G,GAAS,YAAaoE,GAAYtqC,GAAI,MACtCkmC,GAAS,QAASoE,GAAW,KAC7BpE,GAAS,OAAQoE,GAAYn+B,QAC7B+5B,GAAS,SAAUoE,GAAYtqC,GAAI,QAG/BivC,GAAsC,mBACvCnC,GADoC,CAEvC5G,GAAS,OAAQoE,GAAYtqC,GAAI,MACjCkmC,GAAS,KAAMoE,GAAYtqC,GAAI,MAC/BkmC,GAAS,SAAUoE,GAAW,OAG1B4E,GAAqC,mBACtCpC,GADmC,CAEtC5G,GAAS,OAAQoE,GAAYtqC,GAAI,MACjCkmC,GAAS,SAAUoE,GAAW,OAG1B6E,GAAwC,mBACzCrC,GADsC,CAEzC5G,GAAS,OAAQoE,GAAYtqC,GAAI,MACjCkmC,GAAS,SAAUoE,GAAW,OAG1B8E,GAAwB,mBACzBtC,GADsB,CAEzB5G,GAAS,WAAYoE,GAAYY,SACjChF,GAAS,QAASoE,GAAYY,SAC9BhF,GAAS,WAAYoE,GAAYY,SACjChF,GAAS,YAAaoE,GAAYY,SAClChF,GAAS,KAAMoE,GAAYY,SAC3BhF,GAAS,UAAWoE,GAAYY,WAG5BmE,GAAiB,mBAClBvC,GADe,CAElB5G,GAAS,YAAaoE,GAAYI,WAClCxE,GAAS,QAASoE,GAAYI,WAC9BxE,GAAS,WAAYoE,GAAYI,WACjCxE,GAAS,KAAMoE,GAAYI,WAC3BxE,GAAS,UAAWoE,GAAYI,WAChCxE,GAAS,WAAYoE,GAAYI,aAG7B4E,GAA0B,mBAC3BxC,GADwB,CAE3B5G,GAAS,SAAUoE,GAAYK,eAG3B4E,GAAgC,mBACjCzC,GAD8B,CAEjC5G,GAAS,MAAOoE,GAAYr6B,KAC5Bi2B,GAAS,QAASoE,GAAYM,aAG1B4E,GAAoB,mBACrB1C,GADkB,CAErB5G,GAAS,YAAaoE,GAAYI,aAG9B+E,GAAyB,mBAC1B3C,GADuB,CAE1B5G,GAAS,QAASoE,GAAYI,aAG1BgF,GAAmB,mBACpB5C,GADiB,CAEpB5G,GAAS,WAAYoE,GAAYI,aAG7BiF,GAAsB,mBACvB7C,GADoB,CAEvB5G,GAAS,QAASoE,GAAYI,aAG1BkF,GAAkB,mBACnB9C,GADgB,CAEnB5G,GAAS,QAASoE,GAAYI,aAG1BmF,GAAmB,mBACpB/C,GADiB,CAEpB5G,GAAS,WAAYoE,GAAYI,aAGtBoF,IAAuB,SACjCvJ,GAAQC,QAAU,CACjBtB,EAAGkB,GAAgB4G,GA9xBI,MA4xBS,MAIjCzG,GAAQE,OAAS,CAChBpzB,EAAG+yB,GAAgB8G,GAAW9H,MALE,MAOjCmB,GAAQG,MAAQ,CACfrzB,EAAG+yB,GAAgB6G,GAlyBc,MA0xBD,MAUjC1G,GAAQK,aAAe,CACtBvzB,EAAG+yB,GAAgB+G,GA/xB8B,MAoxBjB,MAajC5G,GAAQI,UAAY,CACnBzB,EAAGkB,GAAgBgH,GAnyB2B,MAqxBd,MAgBjC7G,GAAQM,WAAa,CACpBxzB,EAAG+yB,GAAgBiH,GApyB4B,MAmxBf,MAmBjC9G,GAAQQ,aAAe,CACtB1zB,EAAG+yB,GAAgBkH,GAryB8B,MAixBjB,MAsBjC/G,GAAQO,WAAa,CACpBzzB,EAAG+yB,GAAgBmH,GAzyB4B,MAkxBf,MAyBjChH,GAAQS,SAAW,CAClB3zB,EAAG+yB,GAAgBoH,GA1yBK,MAgxBQ,MA4BjCjH,GAAQU,eAAiB,CACxB5zB,EAAG+yB,GAAgBwH,GA3yBwB,MA8wBX,MA+BjCrH,GAAQW,aAAe,CACtB7zB,EAAG+yB,GAAgByH,GA7yBsB,MA6wBT,MAkCjCtH,GAAQY,mBAAqB,CAC5B9zB,EAAG+yB,GAAgB0H,GAlzBU,MA+wBG,MAqCjCvH,GAAQa,eAAiB,CACxB/zB,EAAG+yB,GAAgB2H,GA/zBwB,MAyxBX,MAwCjCxH,GAAQc,aAAe,CACtBh0B,EAAG+yB,GAAgB4H,GA/zBsB,MAsxBT,MA2CjCzH,GAAQe,YAAc,CACrBj0B,EAAG+yB,GAAgB6H,GAp0BqB,MAwxBR,MA8CjC1H,GAAQgB,eAAiB,CACxBl0B,EAAG+yB,GAAgB8H,GAt0BwB,MAuxBX,MAiDjC3H,GAAQiB,cAAgB,CACvBtC,EAAGkB,GAAgB+H,GA9zBc,MA4wBD,MAoDjC5H,GAAQkB,mBAAqB,CAC5Bp0B,EAAG+yB,GAAgBkI,GA9zBoB,MAywBP,MAuDjC/H,GAAQmB,iBAAmB,CAC1Br0B,EAAG+yB,GAAgBmI,GAh0BkB,MAwwBL,MA0DjChI,GAAQoB,aAAe,CACtBt0B,EAAG+yB,GAAgBoI,GAl0Ba,MAuwBA,MA6DjCjI,GAAQqB,eAAiB,CACxBv0B,EAAG+yB,GAAgBgI,GAz0Be,MA2wBF,MAgEjC7H,GAAQsB,gBAAkB,CACzBx0B,EAAG+yB,GAAgBiI,GA30Be,MA0wBF,MAmEjC9H,GAAQuB,cAAgB,CACvBz0B,EAAG+yB,GAAgBqI,GA10Bc,MAswBD,MAsEjClI,GAAQyB,qBAAuB,CAC9B30B,EAAG+yB,GAAgBsI,GAA2BrJ,MAvEd,MAyEjCkB,GAAQwB,gBAAkB,CACzB7C,EAAGkB,GAAgBuI,GA90BgB,MAowBH,MA4EjCpI,GAAQ/tB,QAAU,CACjBysB,EAAGmB,GAAgBwI,GAh1BI,MAmwBS,MA+EjCrI,GAAQ0B,oBAAsB,CAC7B50B,EAAG+yB,GAAgByI,GAl1BqB,MAkwBR,MAkFjCtI,GAAQ2B,8BAAgC,CACvC70B,EAAG+yB,GAAgB6I,GAAqC3J,MAnFxB,MAqFjCiB,GAAQ4B,6BAA+B,CACtC90B,EAAG+yB,GAAgB8I,GAAoC3J,MAtFvB,MAwFjCgB,GAAQ6B,gCAAkC,CACzC/0B,EAAG+yB,GAAgB+I,GAAuC3J,MAzF1B,MA2FjCe,GAAQ8B,8BAAgC,CACvCh1B,EAAG+yB,GAAgB0I,GAAqCrJ,MA5FxB,MA8FjCc,GAAQ+B,4BAA8B,CACrCj1B,EAAG+yB,GAAgB2I,GAAmCrJ,MA/FtB,MAiGjCa,GAAQgC,iBAAmB,CAC1Bl1B,EAAG+yB,GAAgB4I,GAAsBrJ,MAlGT,MAoGjCY,GAAQiC,iBAAmB,CAC1Bn1B,EAAG+yB,GAAgBgJ,GAh2Be,MA2vBF,MAuGjC7I,GAAQkC,WAAa,CACpBp1B,EAAG+yB,GAAgBiJ,GAl2BQ,MA0vBK,MA0GjC9I,GAAQmC,mBAAqB,CAC5Br1B,EAAG+yB,GAAgBkJ,GAp2BiB,MAyvBJ,MA6GjC/I,GAAQoC,wBAA0B,CACjCt1B,EAAG+yB,GAAgBmJ,GAt2BuB,MAwvBV,MAgHjChJ,GAAQqC,cAAgB,CACvBv1B,EAAG+yB,GAAgBoJ,GAAmB5J,MAjHN,MAmHjCW,GAAQsC,kBAAoB,CAC3Bx1B,EAAG+yB,GAAgBqJ,GAAwB5J,MApHX,MAsHjCU,GAAQuC,aAAe,CACtBz1B,EAAG+yB,GAAgBsJ,GAAkB5J,MAvHL,MAyHjCS,GAAQwC,gBAAkB,CACzB11B,EAAG+yB,GAAgBuJ,GAAqB5J,MA1HR,MA4HjCQ,GAAQyC,YAAc,CACrB31B,EAAG+yB,GAAgBwJ,GAAiB5J,MA7HJ,MA+HjCO,GAAQ0C,aAAe,CACtB51B,EAAG+yB,GAAgByJ,GAAkB5J,MAhIL,MAkIjCM,GAAQ2C,SAAW,CAClB71B,EAAG+yB,GAAgBqH,GAp3BM,MAivBO,MAqIjClH,GAAQ4C,OAAS,CAChBjE,EAAGkB,GAAgBsH,GAt3BI,MAgvBS,MAwIjCnH,GAAQ6C,UAAY,CACnB/1B,EAAG+yB,GAAgBuH,GAx3BO,MA+uBM,IA6IvBoC,IAAyB,SAz6BX,GA06BH,CACpB7K,EAAGkB,GAAgB4G,GA36BI,MAy6BW,MAInC5H,GAAgC,CAC/B/xB,EAAG+yB,GAAgB8G,GAAW9H,MALI,MAv6BD,GA86BH,CAC9B/xB,EAAG+yB,GAAgB6G,GA/6Bc,MAu6BC,MAj6Be,GA26BH,CAC9C55B,EAAG+yB,GAAgB+G,GA56B8B,MAi6Bf,MAl6BY,GA+6BH,CAC3CjI,EAAGkB,GAAgBgH,GAh7B2B,MAk6BZ,MAh6Ba,GAg7BH,CAC5C/5B,EAAG+yB,GAAgBiH,GAj7B4B,MAg6Bb,MA95Be,GAi7BH,CAC9Ch6B,EAAG+yB,GAAgBkH,GAl7B8B,MA85Bf,MA/5Ba,GAq7BH,CAC5Cj6B,EAAG+yB,GAAgBmH,GAt7B4B,MA+5Bb,MA75BV,GAs7BH,CACrBl6B,EAAG+yB,GAAgBoH,GAv7BK,MA65BU,MA35BS,GAu7BH,CACxCn6B,EAAG+yB,GAAgBwH,GAx7BwB,MA25BT,MA15BO,GAy7BH,CACtCv6B,EAAG+yB,GAAgByH,GA17BsB,MA05BP,MA55BL,GA87BH,CAC1Bx6B,EAAG+yB,GAAgB0H,GA/7BU,MA45BK,MAt6BS,GA28BH,CACxCz6B,EAAG+yB,GAAgB2H,GA58BwB,MAs6BT,MAn6BO,GA28BH,CACtC16B,EAAG+yB,GAAgB4H,GA58BsB,MAm6BP,MAr6BM,GAg9BH,CACrC36B,EAAG+yB,GAAgB6H,GAj9BqB,MAq6BN,MAp6BS,GAk9BH,CACxC56B,EAAG+yB,GAAgB8H,GAn9BwB,MAo6BT,MAz5BD,GA08BH,CAC9BhJ,EAAGkB,GAAgB+H,GA38Bc,MAy5BC,MAt5BK,GA08BH,CACpC96B,EAAG+yB,GAAgBkI,GA38BoB,MAs5BL,MAr5BG,GA48BH,CAClCj7B,EAAG+yB,GAAgBmI,GA78BkB,MAq5BH,MAp5BF,GA88BH,CAC7Bl7B,EAAG+yB,GAAgBoI,GA/8Ba,MAo5BE,MAx5BA,GAq9BH,CAC/Bn7B,EAAG+yB,GAAgBgI,GAt9Be,MAw5BA,MAv5BA,GAu9BH,CAC/B/6B,EAAG+yB,GAAgBiI,GAx9Be,MAu5BA,MAn5BD,GAs9BH,CAC9Bh7B,EAAG+yB,GAAgBqI,GAv9Bc,MAm5BC,MAj5BC,GAu9BH,CAChCvJ,EAAGkB,GAAgBuI,GAx9BgB,MAi5BD,MAh5BX,GAy9BH,CACpB1J,EAAGmB,GAAgBwI,GA19BI,MAg5BW,MA/4BM,GA29BH,CACrCv7B,EAAG+yB,GAAgByI,GA59BqB,MA+4BN,MA+EnCvJ,GAAiD,CAChDjyB,EAAG+yB,GAAgB6I,GAAqC3J,MAhFtB,MAkFnCC,GAAgD,CAC/ClyB,EAAG+yB,GAAgB8I,GAAoC3J,MAnFrB,MAqFnCC,GAAmD,CAClDnyB,EAAG+yB,GAAgB+I,GAAuC3J,MAtFxB,MAwFnCC,GAAiD,CAChDpyB,EAAG+yB,GAAgB0I,GAAqCrJ,MAzFtB,MA2FnCC,GAA+C,CAC9CryB,EAAG+yB,GAAgB2I,GAAmCrJ,MA5FpB,MA8FnCC,GAAkC,CACjCtyB,EAAG+yB,GAAgB4I,GAAsBrJ,MA/FP,MAx4BA,GAy+BH,CAC/BtyB,EAAG+yB,GAAgBgJ,GA1+Be,MAw4BA,MAv4BP,GA2+BH,CACxB/7B,EAAG+yB,GAAgBiJ,GA5+BQ,MAu4BO,MAt4BE,GA6+BH,CACjCh8B,EAAG+yB,GAAgBkJ,GA9+BiB,MAs4BF,MAr4BQ,GA++BH,CACvCj8B,EAAG+yB,GAAgBmJ,GAh/BuB,MAq4BR,MA6GnC3J,GAA4B,CAC3BvyB,EAAG+yB,GAAgBoJ,GAAmB5J,MA9GJ,MAgHnCC,GAAiC,CAChCxyB,EAAG+yB,GAAgBqJ,GAAwB5J,MAjHT,MAmHnCC,GAA2B,CAC1BzyB,EAAG+yB,GAAgBsJ,GAAkB5J,MApHH,MAsHnCC,GAA8B,CAC7B1yB,EAAG+yB,GAAgBuJ,GAAqB5J,MAvHN,MAyHnCC,GAA0B,CACzB3yB,EAAG+yB,GAAgBwJ,GAAiB5J,MA1HF,MA4HnCC,GAA2B,CAC1B5yB,EAAG+yB,GAAgByJ,GAAkB5J,MA7HH,MA93BT,GA6/BH,CACtB5yB,EAAG+yB,GAAgBqH,GA9/BM,MA83BS,MA73BX,GA+/BH,CACpBvI,EAAGkB,GAAgBsH,GAhgCI,MA63BW,MA53BR,GAigCH,CACvBr6B,EAAG+yB,GAAgBuH,GAlgCO,MA43BQ,MAwInCtI,GAAuC,CACtChyB,EAAG+yB,GAAgBsI,GAA2BrJ,MAzIZ,MA33BF,GAsgCH,CAC7BJ,EAAGmB,GAAgB2G,GAvgCa,MA23BE,IChgCzBiD,GAAc,SAAC/kB,GAAD,OACxB/Q,MAAM+Q,IAAqB,IAAiBA,IAAW8U,gBAAsB9U,IAOnE/V,GAAO,SAAC+6B,GAAD,OAAqCA,EAAUC,aAAanQ,iB,kBCGnEoQ,GAAaC,GAEpBC,GAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAU9D,SAASC,GAAiBC,EAASC,GAAO,MAG/C,OAAO95B,GADSjH,GADQmwB,GAAO1sC,KAAP,oBAAgBu9C,GAAOF,EAAS,OAAhC,GAA0C1Q,EAAQ2Q,OAEnD,MAYlB,SAASE,GAAeC,EAAUH,EAAOI,GAAU,MAEhDC,EAKR,OAAOn6B,GADSjH,GAAKmwB,GAAO1sC,KAAP,oBAAgBu9C,GAAOE,EAAU,OAAjC,IAJbE,EAAUhR,EAIqD2Q,GAJxC,GACtB,IAAA5Q,IAAM,KAANA,GAAc,CAACA,GAAOkR,MAAM,GAAKD,EAAQ94C,QAAS84C,MAGtC,GAA6DJ,GAAOG,EAAU,UAC5E,MAUlB,SAASG,GAAYX,GAAM,MAChC,OAAOxQ,GAAO1sC,KAAK,OAAAk9C,EAAKvzC,SAAS,KAAd,OAA2B,GAAI,KAAM,OAUnD,SAASm0C,GAAex5C,GAE7B,OADAy5C,GAAgBz5C,GACTkf,GAAOjH,GAAKjY,EAAK6U,eAAgB,MAenC,SAAS6kC,GAAgB15C,GAA2B,IAArB44C,EAAqB,uDAAdD,KAE3C,OADAc,GAAgBz5C,GAChB,aAAa25C,GAAkB1hC,GAAK,IAAAmwB,IAAM,KAANA,GAAc,CAACA,GAAO1sC,KAAKsE,EAAK6U,eAAgB0kC,GAAWX,QAW1F,SAASK,GAAQvxC,EAAMkyC,GAC5B,IAEiD,EAFjD,KAAiClyC,EAAK4H,MAAM,KAA5C,GAAOq/B,EAAP,KAAemF,EAAf,KACA,GADA,KACW,MAAM,IAAItwB,MAAJ,2CAA8C9b,IAC/D,GAAIkyC,GAAkBA,IAAmBjL,EACvC,MAAM,IAAInrB,MAAJ,kDAA+CmrB,EAA/C,wBAAoEiL,EAApE,MAER,OAAQ,KAAAf,IAAW,KAAXA,GAAqBlK,GAAUkL,GAAoBC,IAAmBhG,GAWzE,SAAS50B,GAAQxX,EAAMZ,GAAM,MAClC,uBAAUA,EAAV,aAAkB,KAAA+xC,IAAW,KAAXA,GAAqB/xC,GACnCizC,GAAkBryC,GAClBiyC,GAAkBjyC,IAUjB,SAASsyC,GAASC,GAAQ,MACzBtL,EAAS,IAAAsL,GAAM,KAANA,EAAa,EAAG,GACzBC,EAAQnF,GAAcpG,GAC5B,IAAKuL,EAAO,MAAM,IAAI12B,MAAJ,4BAA+BmrB,EAA/B,gBAClB,OAAOvG,GAAO1sC,KAAP,oBAAgB2sC,EAAQ6R,IAAxB,GAAmCjB,GAAOgB,EAAQtL,MAUpD,SAASwL,GAAQC,GACtB,IAAM10C,EAAM00C,EAAIC,WAAW,EAAG,GACxB1L,EAASuG,GAAcxvC,GAC7B,IAAKipC,EAAQ,MAAM,IAAInrB,MAAJ,4BAA+B9d,EAA/B,gBACnB,OAAOwZ,GAAO,IAAAk7B,GAAG,KAAHA,EAAU,EAAGA,EAAI75C,QAASouC,GAUnC,SAAS2L,GAAU13B,GACxB,OAAOylB,EAAQzlB,GAAK,GAUf,SAAS23B,KAAgC,IAAvBH,EAAuB,uDAAjBhS,GAAO1sC,KAAK,IACzC,OAAO6sC,IAAU6R,EAAI/0C,SAAS,OAAQ,IAAIA,SAAS,IAU9C,SAASm1C,GAAejH,GAC7B,OAAO,KAAAA,GAAQ,KAARA,GACL,SAAA9R,GAAC,MAAI,CACH4G,EAAQ5G,EAAE9iC,KACVq7C,GAAQvY,EAAEj5B,QAYT,SAASiyC,GAAclH,GAC5B,OAAO,KAAAA,GAAQ,KAARA,GACL,0BAAE50C,EAAF,KAAO6J,EAAP,YAAe,KAAc,CAC3B7J,IAAKA,EAAI0G,WACTmD,GAAI2xC,GAAO3xC,QAaV,SAASixC,GAAiBz5C,GAC/B,IAAKA,GAAwB,iBAATA,EAAmB,MAAM,IAAIwjB,MAAM,yBACvD,IAAK,KAAAxjB,GAAI,KAAJA,EAAc,UAAW,MAAM,IAAIwjB,MAAJ,uCAA0CxjB,IAUzE,SAAS06C,GAAa16C,GAC3B,IAEE,OADAy5C,GAAgBz5C,IACT,EACP,MAAO4E,GACP,OAAO,GAWJ,SAAS+1C,GAAU9S,GACxB,IAAKA,EAAE34B,MAAM,gBACX,MAAM,IAAIsU,MAAM,oBAGlB,IAAMo3B,EAAQ/S,EAAEgT,OAAO,EAAG,GAC1B,GAAID,KAASrP,GACX,OAAOA,GAAYqP,GAEnB,MAAM,IAAIp3B,MAAJ,wBAA2Bo3B,IAW9B,SAASE,KAAiC,IAAfvH,EAAe,uDAAJ,GAC3C,OAAQ,KAAAA,GAAQ,KAARA,GACA,SAAA9R,GAAC,aAAKA,GAAkB,iBAANA,IAAmB,QAAC,KAAM,KAAM,KAAM,OAAnB,OAAkCA,EAAEnyB,MAAM,KAAK,OAUvF,SAASyrC,GAAmBlkC,GACjC,IAAMmkC,EAAankC,EAAOjC,QAAQ,SAAU,IAAIrU,OAChD,OAAOorC,GAAgBqP,GAAc3P,GAAsBA,GAAsB2P,GAY5E,SAASC,GAAepkC,GAAiE,IAAzDqkC,EAAyD,uDAA9CjQ,GAAUkQ,EAAoC,uDAAxBhQ,GACtE,GAAMjtC,OAAOi9C,KAAeA,GAAaA,EAAY,GAAM,EAAI,MAAM,IAAI33B,MAAJ,qDAAwD23B,IAC7H,GAAIA,EAAYhQ,GAAwB,MAAM,IAAI3nB,MAAJ,0CAA6C2nB,KAC3F,OAAOztB,GACL6qB,IAAUA,IAAU2S,GAAU7c,GAAG4M,IAAY8P,GAAkBlkC,GAAUqkC,GAAUrP,MAAMtD,IAAU4C,IAAwB9b,KAAK,KAY7H,SAAS+rB,GAAwBvkC,EAAQwkC,GAC9C,OAAO,IAAO,CACZ,CAAC,IAAK,GAAI,IAAS1N,GAAkB,GAAGte,KAAKgsB,KAC7C,CAAC,IAAK,GAAI,IAAS1N,GAAkB,GAAGte,KAAKgsB,KAC7C,CAAC,IAAM/P,IAAsB,IAASqC,GAAkB,IAAIte,KAAKgsB,KACjE,CAAC,IAAK,IAAS9S,IAAU8S,MAJpB,CAKJxkC,EAAOjC,QAAQ,SAAU,IAAIrU,QAAQ8E,SAAS,IAU5C,SAASi2C,GAAet7C,GAC7B,OAAOA,EAAK4U,QAAQ,SAAU,IAAIrU,OAAS,G,sBC7SvCg7C,GAAMC,wBAQL,SAASC,GAAoBC,GAClC,IAAMx8C,EAAOy8C,+BAAgCnT,EAAQkT,IAC/CE,EAAexT,GAAO1sC,KAAKwD,EAAK28C,WACtC,mBAAalC,GAAkBiC,IAU1B,SAASE,GAAgB7nB,GAAwB,IAAf0a,EAAe,uDAAN,KAChD,GAAuB,iBAAZ1a,EAAsB,OAAO,EACxC,IACE,OAA0C,KAAnCglB,GAAOhlB,EAAS0a,GAAQpuC,OAC/B,MAAO0nB,GACP,OAAO,GAUJ,SAAS8zB,GAAoBC,GAClC,OAAOC,GAAY5T,EAAQ2T,GAAgB,IAStC,SAASE,GAAY/8B,GAC1B,OAAOg9B,IAAM,UAAUC,OAAOj9B,GAAOk9B,SAQhC,SAASzD,KACd,OAAOtmC,KAAKwC,MAAMxC,KAAKyQ,SAAWzQ,KAAKwC,MAAL,MAS7B,SAASilC,GAAmB56B,GACjC,IAAM4Y,EAASqQ,GAAO1sC,KAAKyjB,GACrBm9B,EAAWC,GAAWp9B,GAE5B,OAD4B,IAAAipB,IAAM,KAANA,GAAc,CAACrQ,EAAQukB,GAAWvkB,EAAOx3B,OAAS,GACnD8E,SAAS,UAG/B,SAASk3C,GAAYzI,GAAS,MACnC,OAAO,MAAAoI,GAAWA,GAAWpI,KAAtB,OAAsC,EAAG,GAmB3C,SAAS+F,GAAmBp5B,GACjC,IACMqzB,EAlBR,SAAoB/b,GAClB,IAAM+b,EAAU,IAAA/b,GAAM,KAANA,EAAa,GAAI,GAC3BukB,EAAW,IAAAvkB,GAAM,KAANA,GAAc,GACzBykB,EAAcD,GAAWzI,GAE/B,GAAKwI,EAASrhB,OAAOuhB,GAErB,OAAO1I,EAWS2I,CADDrU,GAAO1sC,KAAK+kB,EAAK,WAEhC,IAAKqzB,EAAS,MAAM,IAAItwB,MAAM,oBAC9B,OAAO4kB,GAAO1sC,KAAKo4C,GASd,SAAS6F,GAAmBx6B,GACjC,OAAOu9B,WAAiBtU,GAAO1sC,KAAKyjB,IAS/B,SAAS26B,GAAmBr5B,GACjC,OAAOi8B,WAAiBj8B,GAUnB,SAASk8B,GAAgBv8C,GAC9B,IAAM6yC,EAAS7K,GAAOwU,YAAY,GAElC,OADA3J,EAAO4J,cAAcz8C,GACd,IAAA6yC,GAAM,KAANA,EAAa,IAAAA,GAAM,KAANA,GAAiB,SAAA7uC,GAAC,OAAU,IAANA,MAWrC,SAAS04C,GAAuBC,EAAO/D,GAC5C,IAAM6C,EAAY5C,GAAO8D,EAAO,MAC1B9J,EAAS,IAAA7K,IAAM,KAANA,GAAc,CAACyT,EAAWc,GAAe3D,KACxD,mBAAaW,GAAkB1hC,GAAKg7B,KAW/B,SAAS+J,GAA2BtB,GACzC,OAAOC,+BAAgCD,GASlC,SAASuB,KAA8B,IAAbC,EAAa,wDAEtCC,EAAUxB,mBAEVC,EAAexT,GAAO1sC,KAAKyhD,EAAQtB,WACnCuB,EAAehV,GAAO1sC,KAAKyhD,EAAQE,WAEzC,OAAIH,EACK,CACLrB,UAAWD,EACXyB,UAAWD,GAGN,CACLvB,UAAW,MAAF,OAAQlC,GAAkBiC,IACnCyB,UAAWD,EAAa/3C,SAAS,QAYhC,SAASi4C,GAAY3nB,EAAU4nB,GACpC,IAAMC,EAAsBtB,GAAWvmB,GAEvC,OADe,IAAI4lB,GAAIiC,GACTC,QAAQF,GAUjB,SAASG,GAAY/nB,EAAUgoB,GACpC,IAAMC,EAAiBxV,GAAO1sC,KAAKiiD,GAC7BH,EAAsBtB,GAAWvmB,GACjCkoB,EAAS,IAAItC,GAAIiC,GACvB,OAAOpV,GAAO1sC,KAAKmiD,EAAOC,QAAQF,IAY7B,SAASG,GAAMr2C,EAAMs2C,GAC1B,OAAOrC,kBAAmBvT,GAAO1sC,KAAKgM,GAAO0gC,GAAO1sC,KAAKsiD,IAWpD,SAASC,GAAQx9B,EAAKy9B,EAAWrC,GACtC,OAAOF,yBAA0B,IAAIwC,WAAW19B,GAAMy9B,EAAWrC,GAG5D,SAASuC,GAAe76B,GAC7B,IAAMke,EAAI2G,GAAO1sC,KAAK,8BAA+B,QAC/C2iD,EAAMjW,GAAO1sC,KAAK6nB,EAAS,QACjC,GAAI86B,EAAI99C,QAAU,IAAM,MAAM,IAAIijB,MAAM,oBACxC,OAAOvL,GAAK,IAAAmwB,IAAM,KAANA,GAAc,CAACA,GAAO1sC,KAAK,CAAC+lC,EAAElhC,SAAUkhC,EAAG2G,GAAO1sC,KAAK,CAAC2iD,EAAI99C,SAAU89C,KAG7E,SAASC,GAAa/6B,EAASy6B,GACpC,OAAOD,GAAKK,GAAc76B,GAAUy6B,GAG/B,SAASO,GAAe99B,EAAKy9B,EAAWrC,GAC7C,OAAOoC,GAAOG,GAAc39B,GAAMy9B,EAAWrC,GAUxC,SAASI,GAAauC,GAC3B,IACMC,EAAgB9E,GADEvR,GAAO1sC,KAAK8iD,EAAW,QAE/C,mBAAaC,GAYR,SAASC,GAAgBV,EAAYnC,GAC1C,IAAMt4B,EAAU6kB,GAAO1sC,KAAK,cAE5B,OAAOuiD,GAAO16B,EADIw6B,GAAKx6B,EAASy6B,GACEnC,GAY7B,SAAS8C,GAAaN,EAAKxC,GAChC,IAAM+C,EAAmBjD,kBACnBkD,EAAmB5F,GAAO4C,EAAW,MACrC7C,EAAQ2C,gBAAiBA,qBAEzBmD,EAAmBnD,QACvBvT,GAAO1sC,KAAK2iD,GACZrF,EACA+F,qBAA0BF,GAC1BD,EAAiBvB,WAGnB,MAAO,CACL2B,WAAY5W,GAAO1sC,KAAKojD,GAAkBz5C,SAAS,OACnD45C,YAAa7W,GAAO1sC,KAAKkjD,EAAiB/C,WAAWx2C,SAAS,OAC9D2zC,MAAO5Q,GAAO1sC,KAAKs9C,GAAO3zC,SAAS,OACnC8J,QAAS,4BAWN,SAAS+vC,GAAa7B,EAAW8B,GACtC,IAAMC,EAA8BL,qBAA0B3W,GAAO1sC,KAAK2hD,EAAW,QAC/ErE,EAAQ5Q,GAAO1sC,KAAKyjD,EAAcnG,MAAO,OACzCgG,EAAa5W,GAAO1sC,KAAKyjD,EAAcH,WAAY,OACnDC,EAAc7W,GAAO1sC,KAAKyjD,EAAcF,YAAa,OACrDI,EAAY1D,aAChBqD,EACAhG,EACAiG,EACAG,GAEF,OAAOC,EAAYjX,GAAO1sC,KAAK2jD,GAAaA,E,wKCvW9C,SAASC,GAAmBC,EAAKvoC,EAASmB,EAAQqnC,EAAOC,EAAQ9gD,EAAKyV,GACpE,IACE,IAAI4wB,EAAOua,EAAI5gD,GAAKyV,GAChBhU,EAAQ4kC,EAAK5kC,MACjB,MAAOwE,GAEP,YADAuT,EAAOvT,GAILogC,EAAKnjC,KACPmV,EAAQ5W,GAER,WAAiBA,GAAOgW,KAAKopC,EAAOC,GAIzB,SAASC,GAAkBh7C,GACxC,OAAO,WACL,IAAIzK,EAAOqG,KACPyR,EAAO/T,UACX,OAAO,IAAI,IAAS,SAAUgZ,EAASmB,GACrC,IAAIonC,EAAM76C,EAAG3G,MAAM9D,EAAM8X,GAEzB,SAASytC,EAAMp/C,GACbk/C,GAAmBC,EAAKvoC,EAASmB,EAAQqnC,EAAOC,EAAQ,OAAQr/C,GAGlE,SAASq/C,EAAOvb,GACdob,GAAmBC,EAAKvoC,EAASmB,EAAQqnC,EAAOC,EAAQ,QAASvb,GAGnEsb,OAAMxlD,O,ofC3BZ,IAAM2lD,GAAU9lD,EAAQ,MASlB+lD,GAAW,CACfC,OAAQ,CACNC,YAAa,UACbC,cAAe,oBACfC,IAAK,WACLC,WAAY,CACVC,aAAc,MACdC,SAAU,EACVC,YAAa,KAMbC,GAAwB,CAC5BC,SAAUC,IAGL,SAAeA,GAAtB,uC,sCAAO,WAAuC5qB,EAAUijB,EAAMhpC,GAAvD,qFACoDA,EAAQqwC,WAA3CO,EADjB,EACGN,aAAoCO,EADvC,EAC6BN,SAD7B,kBAIER,GAAQe,MAAMtqC,KAAd,cAAmB,8FAIlBhV,GAFAu/C,EAAShB,IAEOiB,cACpB,GACAjrB,EACAijB,EACA6H,EACa,KAAbD,EACAG,EAAOE,8BAVe,kBAYjBzY,GAAO1sC,KAAK0F,IAZK,6CAJrB,4C,sBAqBP,IAAM0/C,GAAmB,CACvB,oBAAqB,CAAErD,QAGzB,YAA6D,IAAzBsD,EAAyB,EAAzBA,UAAWpiD,EAAc,EAAdA,IAAKq6C,EAAS,EAATA,MAClD,OAAO2C,cAAeoF,EAAW/H,EAAOr6C,IAJiBm/C,QAO3D,YAA8D,IAA1BkB,EAA0B,EAA1BA,WAAYrgD,EAAc,EAAdA,IAAKq6C,EAAS,EAATA,MAC7CgI,EAAMrF,mBAAoBqD,EAAYhG,EAAOr6C,GACnD,IAAKqiD,EAAK,MAAM,IAAIx9B,MAAM,6BAC1B,OAAOw9B,KAWT,SAASvD,GAASsD,EAAWpiD,EAAKq6C,GAA6C,IAAtCiI,EAAsC,uDAA/BrB,GAASC,OAAOE,cAC9D,IAAKe,GAAiBG,GAAO,MAAM,IAAIz9B,MAAMy9B,EAAO,qBACpD,OAAOH,GAAiBG,GAAMxD,QAAQ,CAAEsD,YAAW/H,QAAOr6C,QAW5D,SAASm/C,GAASkB,EAAYrgD,EAAKq6C,EAAOiI,GACxC,IAAKH,GAAiBG,GAAO,MAAM,IAAIz9B,MAAMy9B,EAAO,qBACpD,OAAOH,GAAiBG,GAAMnD,QAAQ,CAAEkB,aAAYhG,QAAOr6C,Q,SAY9CuiD,G,2EAAf,WAA0BvrB,EAAUqjB,GAApC,uFAA2CppC,EAA3C,+BAAqD,CACnDqwC,WAAYL,GAASC,OAAOI,WAC5BD,IAAKJ,GAASC,OAAOG,KAEjB,MAAOrqB,GAAkDqjB,EAJ/D,sBAKU,IAAIx1B,MAAM,mDALpB,UAQOplB,OAAOrB,UAAU0V,eAAe7Q,KAAKy+C,GAAuBzwC,EAAQowC,KAR3E,sBAQuF,IAAIx8B,MAAM,wBARjG,gCAUS68B,GAAsBzwC,EAAQowC,KAAKrqB,EAAUqjB,EAAOppC,IAV7D,4C,sBA0BA,SAASuxC,GAASnhD,EAAMohD,EAAYpD,EAAYhF,EAAOJ,GAAoB,IAAdhpC,EAAc,uDAAJ,GAC/DyxC,EAAM,KAAc,GAAIzB,GAASC,OAAQjwC,GAC/C,OAAO,KACL,CAAE5P,OAAMmP,QAAS,EAAGmyC,WAAY7F,GAAmBuC,GAAax1C,IAAI+4C,YACpE,CACE1B,OAAQ,KACN,CACEC,YAAauB,EAAIvB,YACjBC,cAAesB,EAAItB,cACnBf,WAAY5W,GAAO1sC,KAAK+hD,GAAQrV,GAAO1sC,KAAKsiD,GAAaoD,EAAYpI,EAAOqI,EAAItB,gBAAgB16C,SAAS,OACzGm8C,cAAe,CAAExI,MAAO5Q,GAAO1sC,KAAKs9C,GAAO3zC,SAAS,SAEtD,CAAE26C,IAAKqB,EAAIrB,IAAKC,WAAY,GAAF,MAAOoB,EAAIpB,YAAX,IAAuBrH,KAAMxQ,GAAO1sC,KAAKk9C,GAAMvzC,SAAS,aAMnF,SAASo2C,GAAoBC,GAClC,IAAMx8C,EAAOy8C,+BAAgCnT,EAAQkT,IAC/CE,EAAexT,GAAO1sC,KAAKwD,EAAK28C,WACtC,mBAAalC,GAAkBiC,IAS1B,SAAe6F,GAAtB,qC,sCAAO,WAAwB9rB,EAAU+rB,GAAlC,uFACLC,GAAeD,GACT1I,EAAQmF,WAAWziD,KAAK8sC,EAAQkZ,EAAU7B,OAAO2B,cAAcxI,QAC/DJ,EAAOuF,WAAWziD,KAAK8sC,EAAQkZ,EAAU7B,OAAOI,WAAWrH,OAC3DgJ,EAAYF,EAAU7B,OAAOI,WAC7BD,EAAM0B,EAAU7B,OAAOG,IALxB,KAOalC,GAPb,KAQHK,WAAWziD,KAAK8sC,EAAQkZ,EAAU7B,OAAOb,aARtC,SASGkC,GAAUvrB,EAAUijB,EAAM,CAAEoH,MAAKC,WAAY2B,IAThD,+BAUH5I,EAVG,KAWH0I,EAAU7B,OAAOE,cAXd,mDAOCphD,EAPD,8BAaW,IAAI6kB,MAAM,oBAbrB,WAe2B,KAA5B4kB,GAAO1sC,KAAKiD,GAAK4B,OAfhB,0CAesC6nC,GAAO1sC,KAAKiD,GAAK0G,SAAS,QAfhE,iCAgBE+iC,GAAO1sC,KAAKiD,GAAK0G,SAAS,UAhB5B,6C,sBAgCA,SAAew8C,GAAtB,uC,sCAAO,WAAqB7hD,EAAM21B,EAAUqoB,GAArC,iGAAiDhF,EAAjD,+BAAyD2C,gBAAiB,IAAK/C,EAA/E,+BAAsF+C,gBAAiB,IAAK/rC,EAA5G,+BAAsH,GACrHyxC,EAAM,KAAc,GAAIzB,GAASC,OAAQjwC,GAD1C,KAEEuxC,GAFF,KAGHnhD,EAHG,SAIGkhD,GAAUvrB,EAAUijB,EAAMyI,GAJ7B,+BAKHrD,EALG,KAMHhF,EANG,KAOHJ,EAPG,KAQHyI,EARG,wG,sBAYA,SAASM,GAAgBp7B,GAC9B,IAAM9sB,EAAO,CAAC,SAAU,KAAM,UAAW,cACnCqoD,EAAa,CAAC,gBAAiB,aAAc,gBAAiB,MAAO,cAErEC,EAAkB,KAAAtoD,GAAI,KAAJA,GAAY,SAAAkF,GAAG,OAAKP,OAAOrB,UAAU0V,eAAe7Q,KAAK2kB,EAAK5nB,MACtF,GAAIojD,EAAgBxhD,OAAQ,MAAM,IAAIijB,MAAJ,uDAA0Du+B,IAE5F,IAAMC,EAAoB,KAAAF,GAAU,KAAVA,GAAkB,SAAAnjD,GAAG,OAAKP,OAAOrB,UAAU0V,eAAe7Q,KAAK2kB,EAAIs5B,OAAQlhD,MACrG,GAAIqjD,EAAkBzhD,OAAQ,MAAM,IAAIijB,MAAJ,uDAA0Dw+B,IAE9F,OAAO,E,eCnNM,SAASC,GAAQ17B,GAa9B,OATE07B,GADqB,mBAAZ,IAAsD,iBAArB,GAChC,SAAiB17B,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAA0B,mBAAZ,IAA0BA,EAAI3iB,cAAgB,IAAW2iB,IAAQ,aAAoB,gBAAkBA,IAIjHA,G,yGCaJ27B,GAAoB,CAC/BC,GAAI,KACJC,QAAS,SACTC,SAAU,UACVC,QAAS,SACTC,QAAS,SACTC,SAAU,UACVC,OAAQ,UAMGC,IAAsB,SAChCR,GAAkBC,GAAK,GADS,MAEhCD,GAAkBE,SAAW,GAFG,MAGhCF,GAAkBG,UAAY,GAHE,MAIhCH,GAAkBI,SAAW,GAJG,MAKhCJ,GAAkBK,SAAW,IALG,MAMhCL,GAAkBM,UAAY,IANE,MAOhCN,GAAkBO,QAAU,IAPI,IAiBtBE,GAAO,SAClBviD,GADkB,6DAE4B,GAF5B,IAEhBwiD,oBAFgB,MAEDV,GAAkBO,OAFjB,SAGPI,GAAaziD,EAAO,CAAEwiD,eAAcE,mBAAoBZ,GAAkBC,MAS1EY,GAAW,SACtB3iD,GADsB,6DAEoB,GAFpB,IAEpBwiD,oBAFoB,MAELV,GAAkBC,GAFb,SAGXU,GAAaziD,EAAO,CAAEwiD,kBAUtBC,GAAe,SAC1BziD,GAEW,6DADkF,GAClF,IADTwiD,oBACS,MADMV,GAAkBO,OACxB,MADgCK,0BAChC,MADqDZ,GAAkBO,OACvE,EACLO,EAAgB,KAAcd,IACpC,IAAK,KAAAc,GAAa,KAAbA,EAAuBJ,GAAe,MAAM,IAAIp/B,MAAJ,gCAAmCo/B,IACpF,IAAK,KAAAI,GAAa,KAAbA,EAAuBF,GAAqB,MAAM,IAAIt/B,MAAJ,uCAA0Cs/B,IACjG,IAAKtK,GAAYp4C,GAAQ,MAAM,IAAIojB,MAAJ,gBAAmBpjB,aAAnB,EAAmBA,EAAOiF,WAA1B,2BAE/B,OAAO,IAAIkjC,IAAJ,CAAcnoC,GAClB6iD,UAAUP,GAAuBE,GAAgBF,GAAuBI,IACxE5a,WAQCgb,GAAqB,CACzB,CAAEljD,KAAM,MAAOmjD,UAAW,IAC1B,CAAEnjD,KAAM,OAAQmjD,UAAW,GAC3B,CAAEnjD,KAAM,GAAImjD,UAAW,GACvB,CAAEnjD,KAAM,OAAQmjD,WAAY,KAGxBC,GAAmB,SAACC,GAAD,OAA8B,KAAAH,IAAQ,KAARA,IAAgB,SAACzhB,EAAG/hB,GAAJ,OACrEpN,KAAKgxC,IAAI5jC,EAAEyjC,UAAYE,GAAY/wC,KAAKgxC,IAAI7hB,EAAE0hB,UAAYE,GAAY3jC,EAAI+hB,MAEtE8hB,GAAsB,SAACF,GAAD,uBAA8B,KAAAH,IAAQ,KAARA,IAClD,SAAAzhB,GAAC,OAAIA,EAAE0hB,WAAaE,YADA,QACaH,GAASA,GAAS3iD,OAAS,IAEpE,kBAAgBijD,GAAkD,UAC1DpjD,EAAmB,IAAImoC,IAAJ,CAAcib,GAEjCC,EAAG,UAAGrjD,EAAM6nB,SAAT,QAAc,EACvB,GAA6Bw7B,EAAM,EAAIL,GAAmBG,IAAqBE,GAAvEzjD,EAAR,EAAQA,KAAMmjD,EAAd,EAAcA,UACR38B,EAAIpmB,EACP6iD,WAAWE,GACXO,UAAU,EAAIpxC,KAAKkQ,IAAIihC,EAAMN,EAAW,IACxCjb,UACH,6BAAU1hB,IAAV,OAAuB,KAATxmB,EAAc,IAAM,KAAlC,OAAuCA,IC1HzC,SAAS2jD,GAAkBxgD,EAAQygD,GACjC,IAAK,IAAIx/C,EAAI,EAAGA,EAAIw/C,EAAMrjD,OAAQ6D,IAAK,CACrC,IAAIgM,EAAawzC,EAAMx/C,GACvBgM,EAAWrF,WAAaqF,EAAWrF,aAAc,EACjDqF,EAAWtG,cAAe,EACtB,UAAWsG,IAAYA,EAAWpF,UAAW,GAEjD,GAAuB7H,EAAQiN,EAAWzR,IAAKyR,I,ICY9CyzC,G,wEAAAA,O,mBAAAA,I,yBAAAA,I,gBAAAA,Q,SAQgBC,G,WAcnB,WAAa7Q,GAAsB,eAMjC,GCjDW,SAAyB8Q,EAAUhkD,GAChD,KAAMgkD,aAAoBhkD,GACxB,MAAM,IAAIF,UAAU,qCDyCa,SACjCS,KAAK0jD,SAAW/Q,EAAO,GAAG5tC,SAAS,OACnC/E,KAAK2jD,MAAQ,KACX,OAAAhR,EAAO,IAAP,QAAc,SAAC/8B,GAAD,MAAU,CAACA,EAAK,GAAG7Q,SAAS,OAAQ6Q,EAAK,aAGvBlc,IAA9BsG,KAAK2jD,MAAM3jD,KAAK0jD,UAAyB,MAAM,IAAIxgC,MAAM,kCAC7D,YAAeljB,KAAK2jD,QAApB,QAAmC,YAAiB,kBAAftlD,EAAe,KAAVuX,EAAU,KAClD,GAAI4tC,EAAOI,SAAShuC,KAAUvX,EAAK,MAAM,IAAI6kB,MAAM,0CACnD,MAA0BsgC,EAAOK,UAAUjuC,GAAnCpP,EAAR,EAAQA,KAAMgtC,EAAd,EAAcA,QACd,OAAQhtC,GACN,KAAK+8C,GAASO,OACZ,kBAAAtQ,GAAO,KAAPA,EACS,EAAG,KADZ,QAEU,SAAAp0B,GAAC,OAAIA,EAAEnf,WAFjB,QAGW,SAACmf,GACR,QAAsC1lB,IAAlC,EAAKiqD,MAAMvkC,EAAEra,SAAS,QACxB,MAAM,IAAIme,MAAM,+CAGtB,MACF,KAAKqgC,GAASQ,UACZ,QAA+CrqD,IAA3C,EAAKiqD,MAAMnQ,EAAQ,GAAGzuC,SAAS,QACjC,MAAM,IAAIme,MAAM,mDDrDb,IAAsBzjB,EAAaukD,EAAYC,E,OAAzBxkD,E,EAAyBwkD,E,uBCoB5D,SAAyBruC,GACvB,OAAOkyB,GAAO1sC,KAAKuc,IAAKusC,aAAUtuC,KAAQ7Q,SAAS,S,uBA0CrD,SAA0B6Q,GACxB,OAAQA,EAAK3V,QACX,KAAK,GACH,MAAO,CAAEuG,KAAM+8C,GAASO,OAAQtQ,QAAS59B,EAAM1a,KAAM,MACvD,KAAK,EAAG,MACAA,EAAO0a,EAAK,GAAG7Q,SAAS,OACxBo/C,EAAS,KAASjpD,EAAK,GAAI,IACjC,GAAIipD,EAAS,EAAG,MAAM,IAAIjhC,MAAJ,+BAAkCihC,IACxD,IAAM39C,EAAO29C,GAAU,EAAIZ,GAASQ,UAAYR,GAASa,KACnDhoD,EAAQ,QAAC,EAAG,IAAJ,OAAgB+nD,GAAU,EAAI,EAC5C,MAAO,CAAE39C,OAAMgtC,QAAS,CAAC59B,EAAK,IAAK1a,KAAM,IAAAA,GAAI,KAAJA,EAAWkB,IAEtD,QACE,MAAM,IAAI8mB,MAAJ,+BAAkCtN,EAAK3V,cD5EH+jD,E,sBC2DhD,SAASK,GACP,OAAOrkD,KAAK0jD,WAAaW,EAAKX,W,uBAyBhC,WAA2B,MACzB,MAAO,CACL5b,GAAO1sC,KAAK4E,KAAK0jD,SAAU,OAC3B,YAAe1jD,KAAK2jD,QAApB,QAA+B,0BAAEW,EAAF,KAAWxkD,EAAX,WAAuB,CACpDgoC,GAAO1sC,KAAKkpD,EAAS,OACrBxkD,S,iBAWN,SAAKzB,GAEH,IADA,IAAIkmD,EAAavkD,KAAK0jD,WACT,CACX,MAAgCF,EAAOK,UAAU7jD,KAAK2jD,MAAMY,IAApD/9C,EAAR,EAAQA,KAAMgtC,EAAd,EAAcA,QAASt4C,EAAvB,EAAuBA,KACvB,OAAQsL,GACN,KAAK+8C,GAASO,OACZ,GAAmB,IAAfzlD,EAAI4B,OAAc,OAAOuzC,EAAQ,IACrC+Q,EAAa/Q,EAAQ,KAASn1C,EAAI,GAAI,KAAK0G,SAAS,OACpD1G,EAAMA,EAAIk8C,OAAO,GACjB,MACF,KAAKgJ,GAASQ,UACZ,GAAI1lD,EAAIk8C,OAAO,EAAGr/C,aAAd,EAAcA,EAAM+E,UAAY/E,EAAM,OAC1CqpD,EAAa/Q,EAAQ,GAAGzuC,SAAS,OACjC1G,EAAMA,EAAIk8C,OAAOr/C,EAAK+E,QACtB,MACF,KAAKsjD,GAASa,KACZ,GAAIlpD,IAASmD,EAAK,OAClB,OAAOm1C,EAAQ,UDrHP6P,GAAkB5jD,EAAYhD,UAAWunD,GACrDC,GAAaZ,GAAkB5jD,EAAawkD,G,+bGuBlD,IAAMO,GACG,QAkET,SAASC,GAAgB3kD,EAAO0G,EAAM6nC,GAAQ,QAC5C,OAAQ7nC,GACN,KAAKgsC,GAAYlI,OACjB,KAAKkI,GAAYC,IACf,OAAOuH,GAASl6C,GAClB,KAAK0yC,GAAYtqC,GACf,OAAOwxC,GAAQ55C,GACjB,KAAK0yC,GAAYE,IACf,OAAO,KAAA5yC,GAAK,KAALA,EAAU45C,IACnB,KAAKlH,GAAYO,KACf,OAAOjL,GAAO1sC,KAAK,CAAC0E,EAAQ,EAAI,IAClC,KAAK0yC,GAAYG,OACf,OAAOgG,GAAO74C,EAAOuuC,GACvB,KAAKmE,GAAYiB,UACf,OAAOkF,GAAO74C,EAAO,MACvB,KAAK0yC,GAAYr6B,IACf,OAAO2vB,GAAO1sC,KAAK0E,EAAO,OAC5B,KAAK0yC,GAAYQ,WACf,OAAO,KAAAlzC,GAAK,KAALA,EAAUgoC,GAAO1sC,MAC1B,KAAKo3C,GAAYgB,QACf,MAAwB,iBAAV1zC,GAA8C,OAAxBA,EAAMkP,MAAM,KAAK,GACjD2pC,GAAO74C,EAAO,MACdioC,EAAQjoC,GACd,KAAK0yC,GAAYn+B,OACf,OAAO0zB,EAAQjoC,GACjB,KAAK0yC,GAAYS,SACf,OAAOiH,GAAcp6C,GACvB,KAAK0yC,GAAYI,UACf,iBAAO9yC,EAAM4kD,kBAAb,QAA2B5kD,EAC7B,KAAK0yC,GAAYY,QACf,OAAO,KAAAtzC,GAAK,KAALA,GAAU,SAAA8f,GAAC,OAAIA,EAAE2P,eAC1B,KAAKijB,GAAYc,UACf,OAAOxL,GAAO1sC,KAAP,oBAAgB2sC,EAAQjoC,EAAMuyC,YAA9B,CAA0C,GAA1C,GAAgDtK,EAAQjoC,EAAMwyC,eACvE,KAAKE,GAAYa,eACf,OAAQvzC,GACN,IAAK,KAAM,OAAOk6C,GAAS,GAC3B,IAAK,QAAS,OAAOA,GAAS,GAC9B,IAAK,SAAU,OAAOA,GAAS,GAC/B,QAAS,OAAOl6C,EAEpB,QACE,OAAOA,GAkCb,SAAS6kD,GAAiBx0B,EAAQoe,GAA+B,iEAAJ,GAAjB+T,EAAqB,EAArBA,aAC1CnyB,EAAS,YAAAoe,GAAM,KAANA,GACC,6CAAkBiE,GAAYlI,WAD/B,QAEC,SAACnP,EAAD,OAAO98B,EAAP,qBAAC,MAAqB8xB,GAAtB,SAA+B9xB,EAAMkkD,GAAapyB,EAAO9xB,GAAM,CAAEikD,qBAAoBnyB,GAC/F,IAAMy0B,EAAa,KAAArW,GAAM,KAANA,GAAW,iCAC9B,OAAO,YACIpe,IADJ,QAGH,SAACgL,EAAD,GAAuB,gBAAhB98B,EAAgB,KAAXyB,EAAW,KAMrB,OALI,KAAA8kD,GAAU,KAAVA,EAAoBvmD,KAAM88B,EAAI98B,GAAOyB,GACrC,QAAC,YAAa,WAAY,gBAA1B,OAAkDzB,KACpD88B,EAAI,GAAD,OAAI98B,EAAJ,SAAiByB,EAAM0G,OAASg+C,GAAyB,EAAI,EAChErpB,EAAI,GAAD,OAAI98B,EAAJ,UAAkByB,EAAMA,OAEtBq7B,IAET,IAMN,SAAS0pB,GAAsB10B,EAAQ4jB,GAAQ,MACvC+Q,GAAS,UACZrW,GAAQa,eAAiB,aADb,KAEZb,GAAQc,aAAe,aAFX,KAGZd,GAAQe,YAAc,YAHV,KAIZf,GAAQgB,eAAiB,eAJb,GAKbsE,GAEF,OAAI5jB,EAAO20B,IAAW30B,EAAO,GAAD,OAAI20B,EAAJ,UACnB30B,EAAO,GAAD,OAAI20B,EAAJ,WAAsB30B,EAAO20B,GAAQhlD,MAE7C,EAeF,SAASilD,GAAiBhR,EAA1B,GAA4D,QAAxBiR,WAAwB,MAAlB,EAAkB,EAAf70B,EAAe,EAAfA,OAAQ80B,EAAO,EAAPA,IACpDC,EAAajd,IAAU,KAC7B,IAAK9X,EAAQ,OAAO8X,IAAU2L,IAAarI,MAAM2Z,GAAYngD,SAAS,IAKtE,IAHA,IAAIogD,EAAYC,GAASrR,EAAQ,CAAE5jB,OAAQ,SAAKA,GAAP,IAAek1B,IAAK,IAAKH,aAAYF,MAAKC,QAC/EK,EAAWrd,IAAU,IAEjBkd,EAAUpnB,GAAGunB,IAEnBA,EADAH,EAAYC,GAASrR,EAAQ,CAAE5jB,OAAQ,SAAKA,GAAP,IAAek1B,IAAKF,IAAaD,aAAYF,MAAKC,QAGzF,OAAOK,EAASvgD,SAAS,IAY3B,SAASqgD,GAAUrR,EAAnB,GAAiE,MAApC5jB,EAAoC,EAApCA,OAAiB+0B,GAAmB,EAA5BF,IAA4B,EAAnBE,YAAYD,EAAO,EAAPA,IAElD/Q,EAD+BqR,GAAQ,MAAKp1B,GAAU4jB,EAAQ,CAAEkR,QAA9DP,WACoBzkD,OAC5B,OAAO6zC,GAAgBC,GACpBhlB,KAAKklB,GAAiBF,EAAQG,EAAQ,CACrCC,YAAa0Q,GAAqB10B,EAAQ4jB,GAC1CK,YAAa,QAAC3F,GAAQ4C,OAAQ5C,GAAQ6C,YAAzB,OAA6CyC,GACtD5jB,EAAOq1B,GAAGA,GAAGC,UAAUf,WAAWzkD,OAAS,KAEhDsrC,MAAM2Z,GAgBJ,SAASQ,KAAkF,IAApEL,EAAoE,uDAA9D,EAAGtR,EAA2D,gGAAJ,GAAI,IAAjDiR,WAAiD,MAA3C,EAA2C,EAAxC70B,EAAwC,EAAxCA,OAAwC,IAAhCw1B,mBAAgC,SAAZV,EAAY,EAAZA,IAGpF,OAFK90B,GAAUw1B,GAAatzC,QAAQuzC,KAAR,+DAAqEhS,GAArE,MAErByR,GAAON,GAAgBhR,EAAQ,CAAE5jB,SAAQ60B,MAAKC,QAYhD,SAASY,GAAgB11B,EAAQoe,EAAjC,GAA+D,UAApBuX,mBAAoB,MAAN,GAAM,EACpE,OAAO,YAAAvX,GAAM,KAANA,GACG,gBAAElwC,EAAF,kBAAY,KAAAynD,GAAW,KAAXA,EAAqBznD,IAAgB,YAARA,MAD5C,QAGH,SAAC88B,EAAD,iBAAO98B,EAAP,KAAYmI,EAAZ,KAAkB6nC,EAAlB,YAA8B,KAAclT,EAjJlD,SAAwBr7B,EAAOzB,EAAKmI,EAAM6nC,GACxC,IAAM0X,EAAS,SAACC,EAAO71B,GAAR,OAAmB61B,EAAQ,GAAH,MAAW3nD,EAAMy2C,GAAmBtuC,GAAM2pB,KAEjF,GAAIrwB,QAAuC,OAAO,MAAGzB,EAAM,qBAG3D,OAAQmI,GACN,KAAKgsC,GAAYlI,OACjB,KAAKkI,GAAYC,IACf,IAAMsC,IAAiB3yB,MAAMtiB,IAAUmoC,gBAAsBnoC,KAAWmoC,IAAUnoC,GAAO2gC,GAAG,GAC5F,OAAOslB,IAAS3jC,MAAMtiB,IAAUmoC,gBAAsBnoC,KAAWmoC,IAAUnoC,GAAOmmD,IAAI,GAAI,CAAEnmD,QAAOi1C,iBAErG,KAAKvC,GAAYtqC,GACf,IAAM06C,EAAW,KAAcvU,GAAUA,EAAS,CAACA,GAEnD,OAAO0X,EADG,KAAAnD,GAAQ,KAARA,GAAc,SAAAzhB,GAAC,OAAIA,IAAMrhC,EAAMkP,MAAM,KAAK,OACjCylC,GAAc30C,EAAMkP,MAAM,KAAK,IAAK,CAAElP,QAAOuuC,WAElE,KAAKmE,GAAYG,OACf,OAAOoT,EAAOjmD,EAAMkP,MAAM,KAAK,KAAOq/B,EAAQ,CAAEA,SAAQvuC,UAC1D,KAAK0yC,GAAYn+B,OACf,OAAO0xC,GAAO,GAChB,KAAKvT,GAAYc,UACf,OAAOyS,EAAwB,WAAjB,GAAOjmD,IAAsBhC,OAAOrB,UAAU0V,eAAe7Q,KAAKxB,EAAO,eAAiBhC,OAAOrB,UAAU0V,eAAe7Q,KAAKxB,EAAO,cACtJ,KAAK0yC,GAAYS,SACf,OAAO8S,EAAO,KAAcjmD,KAAW,KAAAA,GAAK,KAALA,GAAW,SAAA6nB,GAAC,OAAIA,IAAM7pB,OAAO6pB,MAAK,CAAE7nB,UAC7E,QACE,MAAO,IAuH0ComD,CAAc/1B,EAAO9xB,GAAMA,EAAKmI,EAAM6nC,MACvF,IAgBC,SAAS8X,GAAYh2B,EAAQoe,GAA4E,6DAAJ,GAAI,IAAlEuX,mBAAkE,MAApD,GAAoD,MAAhDxD,oBAAgD,MAAjCV,GAAkBO,OAAe,EACxGiE,EAAiB,KAAA7X,GAAM,KAANA,GAAc,gBAAElwC,EAAF,kBAAY,KAAAynD,GAAW,KAAXA,EAAqBznD,MAKhE2nD,EAAQH,GAFd11B,EAASw0B,GAAgBx0B,EAAQi2B,EAAgB,CAAE9D,iBAEd/T,EAAQ,CAAEuX,gBAC/C,GAAI,KAAYE,GAAO/lD,OACrB,MAAM,IAAIijB,MAAM,4BAA8B,KAAe8iC,IAG/D,OAAO,KAAAI,GAAc,KAAdA,GACA,0BAAE/nD,EAAF,KAAOgoD,EAAP,KAAkBhY,EAAlB,YAA8BoW,GAAet0B,EAAO9xB,GAAMgoD,EAAWhY,MAWvE,SAASiY,GAAa3T,EAAQpE,GACnC,OAAO,KAAAA,GAAM,KAANA,GAEH,SACEpT,EADF,EAGEh7B,GAHF,cAEG9B,EAFH,KAEQgoD,EAFR,KAEmBhY,EAFnB,YAIK,KAAclT,EAAd,MAAsB98B,EA1SjC,SAA2ByB,EAAO0G,EAAM6nC,GACtC,IAAKvuC,EAAO,MAAO,GACnB,OAAQ0G,GACN,KAAKgsC,GAAYc,UACf,SAAoBxzC,EAApB,GAAOymD,EAAP,KAAaC,EAAb,KACA,MAAO,CAAEnU,UAAW4H,GAAQnS,GAAO1sC,KAAK,CAACmrD,KAAOjU,WAAY2H,GAAQnS,GAAO1sC,KAAK,CAACorD,MAEnF,KAAKhU,GAAYlI,OAEjB,KAAKkI,GAAYC,IACf,OAAOwH,GAAQn6C,GACjB,KAAK0yC,GAAYtqC,GACf,OAAO2xC,GAAO/5C,GAChB,KAAK0yC,GAAYE,IACf,OAAO,KAAA5yC,GAAK,KAALA,EAAU+5C,IACnB,KAAKrH,GAAYO,KACf,OAAoB,IAAbjzC,EAAM,GACf,KAAK0yC,GAAYG,OACf,OAAO/zB,GAAO9e,EAAOuuC,GACvB,KAAKmE,GAAYiB,UACf,OAAO70B,GAAO9e,EAAO,MACvB,KAAK0yC,GAAYn+B,OACf,OAAOvU,EAAMiF,WACf,KAAKytC,GAAYgB,QACf,OAAO50B,GAAO9e,EAAO,MACvB,KAAK0yC,GAAYS,SACf,OAAOkH,GAAar6C,GACtB,KAAK0yC,GAAYI,UACf,OAAO6T,GAAS3mD,GAAO,GACzB,KAAK0yC,GAAYK,YACf,OAAO,KAAA/yC,GAAK,KAALA,GAAU,SAAAomB,GAAC,OAAIugC,GAASvgC,GAAG,MACpC,KAAKssB,GAAYM,UACf,OAAOhzC,EACT,KAAK0yC,GAAYr6B,IACf,OAAOrY,EAAMiF,SAAS,OACxB,KAAKytC,GAAYU,gBACf,OAAO,KAAApzC,GAAK,KAALA,GAAU,SAAAomB,GAAC,OAAIugC,GAASvgC,GAAG,MACpC,KAAKssB,GAAYW,UAEf,MAAO,CAAC8G,GAAQn6C,IAClB,KAAK0yC,GAAYY,QACf,OAAO,KAAAtzC,GAAK,KAALA,GAAU,SAAA8f,GAAC,OAAI,IAAI4jC,GAAO5jC,MACnC,KAAK4yB,GAAYa,eACf,OAAQ4G,GAAQn6C,IACd,IAAK,IAAK,MAAO,KACjB,IAAK,IAAK,MAAO,QACjB,IAAK,IAAK,MAAO,SACjB,QAAS,OAAOA,EAEpB,KAAK0yC,GAAYe,mBACf,OAAO,KAAAzzC,GAAK,KAALA,GAEH,SAACq7B,EAAD,iBAAOurB,EAAP,KAAgBC,EAAhB,KAAwBC,EAAxB,KAAiCC,EAAjC,eAAC,MACO1rB,GADR,SACcwrB,EAAO5hD,WAAa,CAAE2hD,UAASE,UAASC,eACtD,IAEN,QACE,OAAO/mD,GAiP0BgnD,CAAiBnU,EAAOxyC,GAAQkmD,EAAWhY,OAC5E,IAWN,IAAM0Y,GAAY,SAAC,GAAyB,IAKnB,EAGK,IART9B,EAAuB,EAAvBA,IAAK+B,EAAkB,EAAlBA,MAAOxgD,EAAW,EAAXA,KACzBygD,IAAkBD,EAClBE,EAAWD,EAAgBD,EAAQxgD,EACnC+nC,EAAS0Y,EAAgBhP,GAA4BD,GAE3D,IAAKzJ,EAAO2Y,GACV,MAAM,IAAIhkC,MAAJ,4BAAyB+jC,EAAgB,kBAAoB,gBAA7D,iCAAoGA,EAAgB,OAASD,EAAQxgD,IAE7I,IAAK+nC,EAAO2Y,GAAUjC,GACpB,MAAM,IAAI/hC,MAAJ,kCAAyB+jC,EAAgB,kBAAoB,gBAA7D,iCAAoGA,EAAgB,OAASD,EAAQxgD,EAArI,qBAAqJy+C,IAE7J,OAAO1W,EAAO2Y,GAAUjC,IAenB,SAASM,GAASp1B,EAAQ3pB,GAAoG,+DAAJ,GAAI,IAA5Fs/C,mBAA4F,MAA9E,GAA8E,MAA1EzX,cAA0E,MAAjE,KAAiE,MAA3D4W,WAA2D,MAArDzb,GAAqD,MAAhD8Y,oBAAgD,MAAjCV,GAAkBO,OAAe,EACnI,EAAsB4E,GAAU,CAAEvgD,OAAMy+C,QAAxC,UAAO1W,EAAP,KAAenpC,EAAf,KACMutC,EAAS,OAAAwT,GAAW,SAAKh2B,GAAN,IAAcqZ,IAAKyb,EAAK7/C,QAAOmpC,EAAQ,CAAEuX,cAAaxD,aAAcnyB,EAAOmyB,cAAgBA,KAArG,QAA4H,SAAA36B,GAAC,YAAUjuB,IAANiuB,KAE1I+8B,GAAaR,aAAUvR,GACvB6S,EAAK5mC,GAAO8lC,EAAYrW,GAE9B,MAAO,CAAEmX,KAAId,aAAY/R,SAAQwU,SAAUb,GAAY3T,EAAQpE,IAY1D,SAASkY,GAAUhB,GAAiD,IAAtC2B,EAAsC,wDAAf/Y,EAAe,uDAAN,KAC7DqW,EAAa0C,EAAgB3B,EAAY9M,GAAO8M,EAAWpX,GAC3DsE,GAAS0U,aAAU3C,GAEnBsC,EAAQ/M,GAAQtH,EAAO,IACvBsS,EAAMhL,GAAQtH,EAAO,IAC3B,EAAiBoU,GAAU,CAAEC,QAAO/B,QAApC,UAAO1W,EAAP,KAEA,MAAO,CAAEwF,OAAQxB,GAAkByU,GAAQxB,GAAIc,GAAY3T,EAAQpE,GAASmW,aAAY/R,UAUnF,SAAS2U,GAAaC,GAE3B,OAAO3oC,GAAOjH,GADgB,iBAAV4vC,GAAsB,KAAAA,GAAK,KAALA,EAAiB,OAAS5O,GAAO4O,EAAO,MAAQA,GAChE,MAG5B,UAAiBxC,mBAAiBW,gBAAce,YAAUH,eAAaf,WAASY,cAAYN,kBAAgByB,gB,sECla7F,SAASE,GAASlf,GAC/B,OAAO,GAAeA,IAAQ,GAAgBA,IAAQ,GAA2BA,IAAQ,K,mgBCEpF,IAAMmf,GAAe,SAC1B,MACA,SACA,QACA,UACA,OACA,OACA,MACA,SACA,SACA,SACA,cACA,OACA,YACA,QACA,YAf0B,SAgBnB,SAACtsB,EAAK30B,GAAN,UAAC,MAAoB20B,GAArB,SAA2B30B,EAAOA,MAAS,CAAEkhD,SAAU,cASzD,SAASC,GAAcC,GAAkC,IAA1Bt4C,EAA0B,uDAAhB,CAAEi/B,OAAQ,IACxD,OAAKqZ,EAAO3nD,OAEL,KAAA2nD,GAAM,KAANA,GAAW,SAAA9mB,GAAK,MACrB,KAA4BA,EAAE+mB,QAAvBC,EAAP,KAAiBC,EAAjB,iBACMC,EAAUjgB,EAAQ+f,GAAO,GAAM/iD,SAAS,OACtCwpC,EAAW,OAAAj/B,EAAQi/B,QAAR,QAEf,SAACpT,EAAKv5B,GACJ,OAAI+V,GAAK/V,EAAGlC,MAAMqF,SAAS,SAAWijD,GACpClnB,EAAEphC,KAAOkC,EAAGlC,KACL,CACL6uC,OAAQ3sC,EAAGqmD,MACXvoD,KAAMkC,EAAGlC,OAGNy7B,IAET,CAAEoT,OAAQ,KAZNA,OAcA2Z,EAAY,KAAA3Z,GAAM,KAANA,GAAc,SAACpT,EAAKv5B,GAAO,MACb,EAAhC,GAAIA,IAAO6lD,GAAapzC,OACtB,MAAO,CAAE6zC,QAAS,oBAAI/sB,EAAI+sB,SAAV,CAAmBC,GAAernB,EAAE15B,KAAMxF,KAAMuuB,OAAQgL,EAAIhL,QAE9E,SAAyBgL,EAAIhL,QAAtB9O,EAAP,KAAiB+mC,EAAjB,iBACA,MAAO,CAAEF,QAAS,oBAAI/sB,EAAI+sB,SAAV,CAAmBC,GAAe9mC,EAAOzf,KAAMuuB,OAAQi4B,KACtE,CAAEF,QAAS,GAAI/3B,OAAQ43B,IANlBG,QAQR,gBACKpnB,GADL,IAEEonB,eA7BuB,GAwCtB,SAASC,GAAgB9mC,EAAO7a,GACrC,OAAQA,GACN,KAAKihD,GAAY,IACf,OZhEyBt0B,EYgEH9R,EZ/D1B,IAAI4mB,IAAJ,CAAc9U,EAAOpuB,YAAYA,SAAS,IYgExC,KAAK0iD,GAAa1U,KAChB,QAAS1xB,EACX,KAAKomC,GAAa9vC,KAChB,OAAOowB,EAAQ1mB,GAAO,GAAMtc,SAAS,OACvC,KAAK0iD,GAAa9zB,QAChB,OAAO8nB,GAAmBp6B,GAAOrS,MAAM,KAAK,GAC9C,KAAKy4C,GAAapzC,OAChB,OAAOskC,GAAOt3B,GAAOtc,SAAS,SAChC,QACE,OAAOgjC,EAAQ1mB,GAAO,GZ1EE,IAAC8R,EY8ExB,SAASk1B,GAAYzoC,EAAG0oC,GAC7B,SAA8B,KAAeA,EAAQC,SAArD,gBAAQC,EAAR,KAAkBC,EAAlB,KACA,KAA0B,KAAe7oC,GAAzC,GAAU8oC,EAAV,cACA,OAAQF,GACN,KAAKf,GAAakB,QAChB,aACGH,EAAW,KAAAC,GAAO,KAAPA,GAAY,SAAA7mD,GACtB,SAAmB,KAAeA,GAAI,GAAtC,GAAOwD,EAAP,KAAY65C,EAAZ,KACA,aACG75C,EAAM,KAAA65C,GAAG,KAAHA,GAAQ,SAAAz4C,GAAQ,QACfrG,EAAQ,aAAAmoD,EAAQM,MAAR,QAAiB,SAAAjhC,GAAC,OAAIA,EAAEjoB,SAAxB,OAAsC8G,GACpD,OAAkB,IAAXrG,EACHqG,EACAkiD,EAAYvoD,YAcvB,SAAS0oD,GAAcjpC,EAAGkpC,GAAU,QACzC,KAAqC,WAAb,GAAOlpC,GAAiB,KAAYA,GAAG,GAAG5Q,MAAM,KAAO4Q,EAAE5Q,MAAM,KAAvF,GAAO7V,EAAP,KAAa4vD,EAAb,KACMC,EAAmB,KAAAF,GAAQ,KAARA,GAAc,SAAAz5C,GAAC,OAAIA,EAAE3P,OAASvG,KACjDmvD,EAAU,2BACXU,EAAiBC,WADN,CAEd,CAAEvpD,KAAM,QAAS6oD,QAASS,EAAiBjiD,MAAO6hD,KAAM,OAF1C,QAGT,qBAAGlpD,OAAoBqpD,KAI9B,OAHIT,EAAQM,KAAK3oD,SACfqoD,EAAQC,QAAUF,GAAWzoC,EAAG0oC,IAE3BY,GAAkBZ,EAAQC,QAASO,GAAYD,GAAaP,EAAQC,QAASO,GAAYR,EAAQC,QAG1G,IAAMW,GAAoB,SAACtpC,EAAGkpC,GAAa,QACzC,IAAK,QAAC,SAAU,WAAX,UAAqClpC,IAAI,OAAO,EAGrD,UADAA,EAAiB,WAAb,GAAOA,GAAiB,KAAYA,GAAG,GAAKA,GACtB5Q,MAAM,MAAzB7V,EAAP,KAEA,QAFA,iBAEU8G,QACH,YAAA6oD,GAAQ,KAARA,GAAa,SAAAz5C,GAAC,OAAIA,EAAE3P,SAApB,OAAmCvG,IAGtCgwD,GAAkB,SAACvpC,GAAM,MAC7B,GAAiB,iBAANA,EAAgB,OAAO,EAClC,SAAwBA,EAAE5Q,MAAM,MAAzB7V,EAAP,KACA,OADA,iBACa8G,SAAW,YAAcwnD,KAAd,OAAqCtuD,IASxD,SAASiwD,GAAU5iD,GAAyB,6DAAJ,GAAbsiD,EAAiB,EAAjBA,SAChC,EAAU,KAActiD,GAAQA,EAAO,CAACA,GAAxC,UAAKoZ,EAAL,KAGA,GAAIupC,GAAgBvpC,GAAI,MAAO,CAAEA,EAAG6nC,GAAa9zB,SAIjD,GAFIu1B,GAAkBtpC,EAAGkpC,KAAWlpC,EAAIipC,GAAajpC,EAAGkpC,IAEvC,WAAb,GAAOlpC,GAAgB,CACzB,MAA8B,KAAeA,GAA7C,uBAAQ4oC,EAAR,KAAkBC,EAAlB,KACA,MAAO,CAAE7oC,EAAG4oC,EAAUC,WAGxB,MAAiB,iBAAN7oC,EAAuB,CAAEA,UAApC,EAYK,SAASypC,GAAW7iD,EAAM1G,GAA0B,6DAAJ,GAAbgpD,EAAiB,EAAjBA,SACxC,EAAuBM,GAAS5iD,EAAM,CAAEsiD,aAAhClpC,EAAR,EAAQA,EAAG6oC,EAAX,EAAWA,QAEX,OAAQ7oC,GACN,KAAK6nC,GAAaC,SAChB,gBAAU5nD,GACZ,KAAK2nD,GAAapzC,OAChB,iBAAWvU,EAAX,KACF,KAAK2nD,GAAa/1C,KAChB,iBAAW,KAAA5R,GAAK,KAALA,GAAU,SAAA8B,GAAE,OAAIynD,GAAUZ,EAAS7mD,EAAI,CAAEknD,gBAApD,KACF,KAAKrB,GAAa6B,MAChB,iBAAW,KAAAxpD,GAAK,KAALA,GAAU,SAAC8B,EAAIkC,GAAL,OAAWulD,GAAUZ,EAAQ3kD,GAAIlC,EAAI,CACxDknD,gBADF,KAGF,KAAKrB,GAAa8B,OAChB,YAAiB7vD,IAAVoG,EAAsB,OAAtB,eAAuCupD,GAAUZ,EAAS3oD,EAAO,CACtEgpD,aADK,KAIT,KAAKrB,GAAa9vC,KAClB,KAAK8vC,GAAav4B,MAClB,KAAKu4B,GAAa7J,UAChB,GAAqB,iBAAV99C,EAAoB,CAC7B,GAAI4nC,EAAM5nC,GAAQ,MAAO,IAAP,OAAWA,GAC7B,GAAI07C,GAAe17C,GAAQ,MAAO,IAAP,OAAW64C,GAAO74C,GAAOiF,SAAS,QAE/D,iBAAW+iC,GAAO1sC,KAAK0E,GAAOiF,SAAS,QACzC,KAAK0iD,GAAajkB,OAChB,iBAAW,KAAAilB,GAAO,KAAPA,GACT,SAACttB,EAAD,EAAsBr3B,GAAM,QAApBpE,EAAoB,EAApBA,KAAM8G,EAAc,EAAdA,KAIZ,OAHA20B,EAAO,sBAAS,IAANr3B,EAAU,IAAM,KAAvB,OAA4BpE,EAA5B,eAAsC2pD,GAAU7iD,EAAM1G,EAAMJ,GAAO,CACpEopD,gBAIJ,IAPF,KASF,UAAKrB,IACH,OAAO+B,GAAa1pD,EAAO2oD,EAAS,CAAEK,aACxC,KAAKrB,GAAakB,QAChB,OAAOc,GAAiB3pD,EAAO2oD,EAAS,CAAEK,aAG9C,gBAAUhpD,GAGL,SAAS2pD,GAAkB3pD,EAAO2oD,EAAlC,GAAyD,QAAZK,EAAY,EAAZA,SAClD,KAAkD,iBAAVhpD,EAAqB,CAAC,CAACA,EAAO,KAAO,KAAeA,GAA5F,gBAAQ6oD,EAAR,KAAiBe,EAAjB,KACA,KAAoB,KAAe,KAAAjB,GAAO,KAAPA,GAAa,SAAAphB,GAAC,OAAI,KAAYA,GAAG,GAAG9yB,gBAAkBo0C,EAAQp0C,kBAAjG,gBAAQ2R,EAAR,KAAW1f,EAAX,KACA,uBAAU0f,IAAV,OAAe1f,EAAKvG,OAAN,WAEN,WAAAypD,GAAW,KAAXA,EAAkB,EAAGljD,EAAKvG,SAA1B,QAAsC,SAAC2B,EAAIkC,GAAL,OAAWulD,GAAU7iD,EAAK1C,GAAIlC,EAAI,CAC5EknD,gBAHU,KACV,IAOC,SAASU,GAAc1pD,EAAO2oD,EAA9B,GAAqD,IAAZK,EAAY,EAAZA,SAM9C,OALK,KAAchpD,KACjB,KAAIA,GAAeA,EAAQ,KAAW,KAAAA,GAAK,KAALA,IAC7BA,aAAiBhC,SAAQgC,EAAQ,KAAeA,KAGpD,CACL,IACA,KAAAA,GAAK,KAALA,GACO,0BAAEzB,EAAF,KAAOyB,EAAP,WAAkB,CAAC,IAAD,OACjBupD,GAAUZ,EAAQ,GAAIpqD,EAAK,CAAEyqD,aADZ,KAErBO,GAAUZ,EAAQ,GAAI3oD,EAAO,CAAEgpD,cAC/Bn3C,KAAK,UACNA,OACH,KACAA,KAAK,IAYF,SAASg4C,GAAsBC,EAAK9oD,GAA+E,6DAAJ,GAAI,IAArE+oD,4BAAqE,SAAjBf,GAAiB,EAAvCgB,cAAuC,EAAjBhB,UACvG,GAAIe,EAAsB,OAAO/oD,EACjC,MAAuBsoD,GAASQ,EAAK,CAAEd,aAA/BlpC,EAAR,EAAQA,EAAG6oC,EAAX,EAAWA,QAEX,OAAQ7oC,GACN,KAAK6nC,GAAa1U,KAChB,QAASjyC,EACX,KAAK2mD,GAAa9zB,QAChB,OAAkB,IAAX7yB,EACH,EACAA,EACN,KAAK2mD,GAAa9vC,KAClB,KAAK8vC,GAAav4B,MAClB,KAAKu4B,GAAa7J,UAChB,OAAO98C,EAAOkO,MAAM,KAAK,GAC3B,UAAKy4C,IACH,SAAuBgB,EAAvB,GAAOsB,EAAP,KAAaC,EAAb,KACA,OAAO,KAAAlpD,GAAM,KAANA,GAEH,SAACq6B,EAAD,GAAqB,cAAd98B,EAAc,KAATikB,EAAS,KAInB,OAHAjkB,EAAMsrD,GAAqBI,EAAM1rD,EAAK,CAAEyqD,aACxCxmC,EAAMqnC,GAAqBK,EAAQ1nC,EAAK,CAAEwmC,aAC1C3tB,EAAIn5B,KAAK,CAAC3D,EAAKikB,IACR6Y,IAET,IAGN,KAAKssB,GAAa8B,OAChB,GAAe,SAAXzoD,EAAmB,OACvB,MAAiC,KAAeA,GAAhD,uBAAQmpD,EAAR,kBAAsBnqD,EAAtB,KACA,MAAuB,SAAhBmqD,EAAyBN,GAAqBlB,EAAS3oD,EAAO,CAAEgpD,kBAAcpvD,EAEvF,KAAK+tD,GAAa/1C,KAChB,OAAO,KAAA5Q,GAAM,KAANA,GAAW,SAAChB,GAAD,OAAW6pD,GAAqBlB,EAAS3oD,EAAO,CAAEgpD,gBACtE,KAAKrB,GAAa6B,MAChB,OAAO,KAAAxoD,GAAM,KAANA,GAAW,SAAChB,EAAOgE,GAAQ,OAAO6lD,GAAqBlB,EAAQ3kD,GAAIhE,EAAO,CAAEgpD,gBACrF,KAAKrB,GAAajkB,OAAQ,MAClB0mB,EAAa,KAAAzB,GAAO,KAAPA,GAAe,SAACttB,EAAK7Y,GAAN,UAAC,MAAmB6Y,GAApB,SAA0B7Y,EAAI5iB,KAAO,CAAE8G,KAAM8b,EAAI9b,UAAW,IAC9F,OAAO,YAAe1F,IAAf,QACL,SAACq6B,EAAD,iBAAOz7B,EAAP,KAAaI,EAAb,eAAC,MAEMq7B,GAFP,SAGKz7B,EAAOiqD,GAAqBO,EAAWxqD,GAAM8G,KAAM1G,EAAO,CAAEgpD,iBAEjE,IAIN,OAAOhoD,EAWF,SAASqpD,GAAe3jD,GAAyB,iEAAJ,GAAbsiD,EAAiB,EAAjBA,SACrC,EAAuBM,GAAS5iD,EAAM,CAAEsiD,aAAhClpC,EAAR,EAAQA,EAAG6oC,EAAX,EAAWA,QAEX,OAAQ7oC,GACN,KAAK6nC,GAAY,IACf,OAAO2C,cAAa9lD,MAAM+lD,IAC5B,KAAK5C,GAAakB,QAChB,OAAOyB,oBAAA,IAAuB,EAC5B,EAAAA,eAAapE,MAAb,WACK,KAAAyC,GAAO,KAAPA,GAAe,SAACttB,EAAKv5B,GACtB,SAAiB,KAAeA,GAAhC,gBAAQge,EAAR,KAAW1N,EAAX,KAEA,OADKA,GAAMA,EAAEjS,QAAQk7B,EAAIn5B,KAAK4d,GACvBub,IACN,OAEL,EAAAivB,YAAW,KAAA3B,GAAO,KAAPA,GAEP,SAACttB,EAAKv5B,GACJ,IAAM+mD,EAAU,KAAY/mD,GAAI,GAChC,gBAAYu5B,GAAZ,SAAkBwtB,EAAUyB,iBAE9B,MACFE,GAPF,WAOQ,KAAA7B,GAAO,KAAPA,GAAY,SAAA9gC,GAAC,OAAI,KAAYA,GAAG,UAE5C,KAAK8/B,GAAaC,SAElB,KAAKD,GAAapzC,OAChB,OAAO+1C,cAAa9lD,MAAM+lD,IAC5B,KAAK5C,GAAa9zB,QAChB,OAAOy2B,cAAaG,MAAM,sBAAsBjmD,MAAM+lD,IACxD,KAAK5C,GAAa1U,KAChB,OAAOqX,eAAc9lD,MAAM+lD,IAC7B,KAAK5C,GAAa/1C,KAChB,OAAO04C,aAAYI,MAAML,GAAc1B,EAAS,CAAEK,cAAaxkD,MAAM+lD,IACvE,KAAK5C,GAAa6B,MAChB,OAAOc,aAAYK,QAAQ,KAAAhC,GAAO,KAAPA,GAAY,SAAAjiD,GAAI,OAAI2jD,GAAc3jD,EAAM,CAAEsiD,aAAY74B,eAAalQ,MAAM,kBAAkBzb,MAAM+lD,IAC9H,KAAK5C,GAAajkB,OAChB,OAAO4mB,YACL,KAAA3B,GAAO,KAAPA,GAAe,SAACttB,EAAD,OAAQz7B,EAAR,EAAQA,KAAM8G,EAAd,EAAcA,KAAd,UAAC,MAA8B20B,GAA/B,SAAqCz7B,EAAOyqD,GAAc3jD,EAAM,CAAEsiD,iBAAgB,KACjGxkD,MAAM+lD,IACV,KAAK5C,GAAa9vC,KAChB,OAAO+yC,GAAU/X,SAASgY,YAAY,IAAIrmD,MAAM+lD,IAClD,KAAK5C,GAAav4B,MAChB,OAAOw7B,GAAU/X,SAASgY,YAAYlC,GAASnkD,MAAM+lD,IACvD,KAAK5C,GAAa7J,UAChB,OAAO8M,GAAU/X,SAASgY,YAAY,IAAIrmD,MAAM+lD,IAClD,KAAK5C,GAAa8B,OAChB,OAAOY,GAAc1B,EAAS,CAAEK,aAAY8B,WAAWtmD,MAAM+lD,IAI/D,QACE,OAAOD,YASN,SAASC,GAAgBrnC,GAC9B,OAAO,KAAAA,GAAM,KAANA,GAAW,SAAA4gB,GAAO,0BACf1oC,EAAwB0oC,EAAxB1oC,KAAMsL,EAAkBo9B,EAAlBp9B,KAAMi8B,EAAYmB,EAAZnB,QAChB3iC,EAAQhC,OAAOrB,UAAU0V,eAAe7Q,KAAKmhC,EAAS,SAAWA,EAAQ3iC,MAAQ2iC,EAAQ1iB,MAE7F,OADAjgB,EAAyB,WAAjB,GAAOA,GAAqB,iBAAeA,IAAf,OAA4B,IAA5B,OAAqC,GAAI,GAAKA,EAC1E0G,GACN,IAAK,cACH,gBAAao9B,GAAb,IAAkB3gB,QAAS,uBAAUnjB,EAAZ,wBAAgC5E,EAAhC,oBAC3B,IAAK,cACH,gBAAa0oC,GAAb,IAAkB3gB,QAAS,uBAAUnjB,EAAZ,wBAAgC5E,EAAhC,oBAC3B,IAAK,eACH,gBAAa0oC,GAAb,IAAkB3gB,QAAS,uBAAUnjB,EAAZ,wBAAgC5E,EAAhC,qBAC3B,IAAK,aACH,gBAAa0oC,GAAb,IAAkB3gB,QAAS,uBAAUnjB,EAAZ,wBAAgC5E,EAAhC,mBAC3B,IAAK,cACH,gBAAa0oC,GAAb,IAAkB3gB,QAAS,uBAAUnjB,EAAZ,wBAAgC5E,EAAhC,oBAC3B,IAAK,cACH,gBAAa0oC,GAAb,IAAkB3gB,QAAS,6BAAUnjB,EAAZ,wBAAgC5E,EAAhC,oBAA+CunC,EAAQj8B,QAClF,IAAK,qBACH,gBACKo9B,GADL,IAEE3gB,QAAS,6BAAU6kB,GAAO1sC,KAAK0E,GAAOiF,SAAS,OAAxC,wBAA6D7J,EAA7D,oBAA4EunC,EAAQ97B,KAApF,YAEX,QACE,OAAOi9B,MAQf,IAAM8mB,GAAYN,aAAW,SAACS,GAAD,MAAU,CACrCnrD,KAAM,SACNif,KAAMksC,EAAIzjC,MACV0jC,IAHqC,SAGhChrD,EAAOiH,EAAOuI,GACjB,GAAIA,EAAQy7C,SAA4B,iBAAVjrD,EAAoB,CAChD,GAAI07C,GAAe17C,GACjB,OAAO64C,GAAO74C,GAEhB,IACE,OAAOgoC,GAAO1sC,KAAK0E,EAAO,OAC1B,MAAO6nB,GAAK,QAGhB,OAAOmgB,GAAO1sC,KAAK0E,IAErBkrD,MAAO,CACL,CACEtrD,KAAM,cACNywB,OAAQ,CACNxpB,KAAMkkD,EAAI13B,SAASlD,YAErBg7B,SALF,SAKY96B,EAAQrwB,EAAOiH,EAAOuI,GAC9B,OAAKw4B,GAAOojB,SAASprD,GAGjBA,EAAMG,SAAWkwB,EAAOxpB,KACnB3G,KAAKmrD,YAAY,qBAAsB,CAAErrD,QAAO6G,KAAMwpB,EAAOxpB,MAAQI,EAAOuI,GAG9ExP,EANEE,KAAKmrD,YAAY,cAAe,CAAErrD,SAASiH,EAAOuI,UAiB5D,SAAS87C,GAAmBxB,EAAKz5B,GAAQ,MACxCk7B,EAAmBjB,aAAYK,QACnC,OAAAb,EAAIlsD,WAAJ,QACO,WAAWoG,GAAX,OAAiBqmD,GAAjB,EAAG3jD,KAAkC,CAAEsiD,SAAUc,EAAId,WAAY/oC,MAAhD,WAA0DoQ,EAAOrsB,GAAjE,UACxBwnD,QAAO,GAAMvrC,MAAM,YACbzb,EAAU8lD,cAAaj6B,EAAQk7B,EAAkB,CAAEE,YAAY,IAA/DjnD,MACR,GAAIA,EACF,MAAMA,E,waClcH,SAASknD,GAAgB5B,EAAKlqD,EAA9B,GAAkD,QAAZ+rD,EAAY,EAAZA,SAC3C,IAAK7B,EAAK,MAAM,IAAI1mC,MAAM,gBAC1B,IAAM9e,EAAK,OAAAwlD,EAAI8B,WAAJ,QAAmB,SAAAvsD,GAAC,OAAIA,EAAEO,OAASA,KAC9C,IAAK0E,GAAe,SAAT1E,EAAiB,MAAM,IAAIwjB,MAAJ,mBAAsBxjB,EAAtB,+BAElC,gBACK0E,GADL,IAEE0kD,SAAU,OACR,CACE/hD,MAAO6iD,EAAI7iD,MACXkiD,UAAWW,EAAIX,UACfvpD,KAAMkqD,EAAIlqD,QAJN,UAMH,KAAA+rD,GAAQ,KAARA,EAAa,KAAO,CAAC,QAAS,YAAa,YAEhDpqC,MAAOuoC,EAAIvoC,MAAQuoC,EAAIvoC,MAAMsnC,QAAU,KAQpC,IAAMgD,GAAuB,SAAClI,GAAD,OAAc,2BAAC,MAC9CA,EAASmG,IACR,OAAAnG,EACCmG,IACA8B,WAFD,QAIE,SAACvwB,EAAD,OAAQz7B,EAAR,EAAQA,KAAiBksD,EAAzB,EAAcluD,UAAoBmuD,EAAlC,EAAkCA,SAAlC,UAAC,MACI1wB,GADL,SAEGz7B,EAAO,MACN,WACE,MAAsBosD,GAAeF,EAAfE,CAAwBpuD,WAAtCqjD,EAAR,EAAQA,IAAKtvC,EAAb,EAAaA,KACb,MAAa,SAAT/R,EAAwB+jD,EAASsI,OAAOt6C,EAAMsvC,GAC3C0C,EAASniD,KAAK5B,EAAM+R,EAApB,IAA4Bu6C,YAAaH,GAAa9K,MAE/D,CACEx5C,IADF,WAEI,MAAsBukD,GAAeF,EAAfE,CAAwBpuD,WAAtCqjD,EAAR,EAAQA,IAAKtvC,EAAb,EAAaA,KACb,OAAOgyC,EAASniD,KAAK5B,EAAM+R,EAApB,SAA+BsvC,GAA/B,IAAoCiL,YAAY,MAEzDC,KALF,WAMI,MAAsBH,GAAeF,EAAfE,CAAwBpuD,WAAtCqjD,EAAR,EAAQA,IAAKtvC,EAAb,EAAaA,KACb,MAAa,SAAT/R,EAAwB+jD,EAASsI,OAAOt6C,EAAMsvC,GAC3C0C,EAASniD,KAAK5B,EAAM+R,EAApB,SAA+BsvC,GAA/B,IAAoCiL,YAAY,MAEzDrE,aAVF,SAUgBC,GACZ,OAAOnE,EAASkE,aAAajoD,EAAMkoD,UAK3C,IAEF,IACDnE,EAASmG,IAAM,CAChB9jC,KAAM,MACJ,WACE,MAA+B0lC,GAAe/H,EAASmG,IAAK,OAAQ,CAAE6B,SAAUhI,EAASyI,cAAtEN,EAAnB,EAAQluD,UACR,EAAsBouD,GAAeF,EAAfE,CAAwBpuD,WAAtCqjD,EAAR,EAAQA,IAAKtvC,EAAb,EAAaA,KACb,OAAOgyC,EAASsI,OAAOt6C,EAAMsvC,KAE/B,CACEx5C,IADF,WAEI,MAA+BikD,GAAe/H,EAASmG,IAAK,OAAQ,CAAE6B,SAAUhI,EAASyI,cAAtEN,EAAnB,EAAQluD,UACR,EAAsBouD,GAAeF,EAAfE,CAAwBpuD,WAAtCqjD,EAAR,EAAQA,IAAKtvC,EAAb,EAAaA,KACb,OAAOgyC,EAASsI,OAAOt6C,EAAhB,SAA2BsvC,GAA3B,IAAgCiL,YAAY,MAErDC,KANF,WAOI,MAA+BT,GAAe/H,EAASmG,IAAK,OAAQ,CAAE6B,SAAUhI,EAASyI,cAAtEN,EAAnB,EAAQluD,UACR,EAAsBouD,GAAeF,EAAfE,CAAwBpuD,WAAtCqjD,EAAR,EAAQA,IAAKtvC,EAAb,EAAaA,KACb,OAAOgyC,EAASsI,OAAOt6C,EAAhB,SAA2BsvC,GAA3B,IAAgCiL,YAAY,SAIvD,MAGOF,GAAiB,eAACF,EAAD,uDAAW,GAAX,OAAkB,SAACn6C,GAAD,YAAW,CACzDsvC,IAAKtvC,EAAKxR,OAAS2rD,EAAQ3rD,OAAS,KAAOwR,GAAQ,GACnDA,KAAM,WAAcA,IAAd,OAA0B,EAAGm6C,EAAQ3rD,WAGhCksD,GAAiB,SAACC,GAAD,OAAc3F,GAAS2F,GAAU,EAAO,MAAM5G,IAU/D6G,GAAoB,+BAAG,WAAOzC,EAAKz5B,GAAZ,qFAC7By5B,GAAQA,EAAIlsD,UADiB,yCACCyyB,GADD,YAG9By5B,EAAIlsD,UAAUuC,OAASkwB,EAAOlwB,QAHA,sBAI1B,IAAIijB,MAAJ,sCAAuB0mC,EAAIlqD,KAA3B,sBAA4CkqD,EAAIlsD,UAAUuC,OAA1D,iCAAwF,OAAA2pD,EAAIlsD,WAAJ,QAAkB,SAAA4L,GAAC,OAAI,KAAeA,EAAE9C,SAAhI,uBAAoJ,KAAA2pB,GAAM,KAANA,EAAM,MAA1J,MAJ0B,cAOlCi7B,GAAkBxB,EAAKz5B,GACjB24B,EAAWc,EAAId,SARa,kBAU3B,SAAY,OAAAc,EAAIlsD,WAAJ,sCAAkB,aAAiBoG,GAAjB,+EAAS0C,EAAT,EAASA,KAAT,kBAAuB6iD,GAAU7iD,EAAM2pB,EAAOrsB,GAAI,CACrFglD,cADmC,2CAAlB,2DAVe,2CAAH,wDAepBnB,GAAe,SAACC,EAAQ0E,GAAU,MAC7C,OAAKA,GAAUA,EAAMjrC,OAAUirC,EAAMjrC,MAAMphB,OAMpCssD,GAAa3E,EAAQ,CAAErZ,OAJT,OAAA+d,EAAMjrC,OAAN,QAAgB,SAAAsG,GACnC,IAAMjoB,EAAO,KAAYioB,GAAG,GAC5B,MAAO,CAAEjoB,OAAMuoD,MAAOtgC,EAAEjoB,SAJgC,IAS/C8sD,GAAgB,+BAAG,WAAO1rD,EAAQwrD,EAAOvL,GAAtB,8EAEP4I,GAFO,KAG1B2C,EAAMG,QAHoB,SAIpB3rD,EAAO63C,SAJa,wCAKrBoI,GALqB,IAKhB+H,SAAUwD,EAAMxD,WALA,iEAObnB,GAAa7mD,EAAOA,OAAO4rD,IAAKJ,GAPnB,mBAE5BK,cAF4B,KAO5BC,cAP4B,mDAAH,0D,ifC5H7B,IAAMC,GAAgB/kB,GAAO1sC,KAAK,gBAC5B0xD,GAAkB,WAElBC,GAAQ,SAACt1B,GAAD,OAAYqQ,GAAO1sC,KAAKq8B,GAAQ1yB,SAAS,QAEhD,SAASioD,GAAmB9xD,EAAMmD,GACvC,IAAM4uD,EAAoB,KAAT/xD,EAAc,IAAKgyD,iBAAWhyD,GAAMiyD,cAOrD,OANA,KAAAF,GAAQ,KAARA,GAAiB,SAACl3B,EAASjyB,GACzB,GAAIiyB,EAAU+2B,GACZ,MAAM,IAAI5pC,MAAJ,mBAAsBpf,EAAI,EAA1B,wBAIH,KAAAmpD,GAAQ,KAARA,GAAgB,SAACG,EAAWr3B,GAAZ,OAAwBs3B,GAAYD,EAAWr3B,KAAU13B,GAG3E,SAASivD,GAAoBpyD,EAAMqyD,GAAM,MAC9C,IAAK,QAAC,IAAK,OAAN,OAAqB,IAAAryD,GAAI,KAAJA,EAAW,EAAG,IACtC,MAAM,IAAIgoB,MAAM,gBAElB,IAAMsqC,EAAYC,GAAqBF,GACvC,OAAOP,GAAkB,IAAA9xD,GAAI,KAAJA,EAAW,GAAIsyD,GAG1C,SAASE,GAAe9uD,GACtB,IAAQm+C,EAAyBn+C,EAAzBm+C,UAAWxB,EAAc38C,EAAd28C,UACnB,MAAO,CACLwB,UAAWgQ,GAAMhQ,GACjBxB,UAAW,MAAF,OAAQlC,GAAkBkC,KAIhC,SAASoS,GAAY5Q,GAC1B,OAAO1B,0BAA2B0B,GAO7B,SAAS0Q,GAAsBF,GACpC,IAAMK,GAAIC,WAAKN,EAAMV,IAGrB,MAAO,CACL9P,UAHS,IAAA6Q,GAAC,KAADA,EAAQ,EAAG,IAIpBE,UAHS,IAAAF,GAAC,KAADA,EAAQ,KAOd,SAASP,GAAT,EAAgDltD,GAAO,IAA/B48C,EAA+B,EAA/BA,UAAW+Q,EAAoB,EAApBA,UACxC,GAAI3tD,EAAQ2sD,GACV,MAAM,IAAI5pC,MAAJ,uBAA0B/iB,EAA1B,sBAER,IAAM4tD,EAAcjmB,GAAOwU,YAAY,GACvCyR,EAAYxR,cAAcp8C,EAAO,GAEjC,IAAMiH,EAAO,IAAA0gC,IAAM,KAANA,GAAc,CAACA,GAAOkR,MAAM,EAAG,GAAIlR,GAAO1sC,KAAK2hD,GAAYjV,GAAO1sC,KAAK2yD,KAE9EH,GAAIC,WAAKzmD,EAAM0mD,GAGrB,MAAO,CACL/Q,UAHS,IAAA6Q,GAAC,KAADA,EAAQ,EAAG,IAIpBE,UAHS,IAAAF,GAAC,KAADA,EAAQ,KAwCrB,UACEI,+BAZ4C,SAACC,EAAUC,GACvD,IACMC,EAAYb,GAAmB,cADxBc,qBAAeH,IAI5B,gBACKP,GAFWC,GADAX,GAAkB,GAAD,OAAIkB,EAAJ,WAAyBC,GACvBpR,aACnC,IAEE5iB,IAAK+zB,KAMPG,wBAvBK,SAAkCC,EAAcj5B,EAAUk5B,GAAc,QACvEJ,EAAY,CAChBpR,UAAWK,GAAW/nB,EAAUyS,GAAO1sC,KAAKkzD,EAAavR,UAAW,QACpE+Q,UAAW1Q,GAAW/nB,EAAUyS,GAAO1sC,KAAKkzD,EAAaR,UAAW,SAEtE,OAAO,cAAC,IAAI3yD,MAAMozD,IAAX,iBACA,SAACC,EAAGr0B,GAAJ,OACHuzB,GAAcC,GAAWX,GAAkB,GAAD,OAAI7yB,EAAJ,WAAkBg0B,GAAWpR,gBAiB3E0R,qBApCK,SAA+BR,EAAU54B,GAC9C,KAAKq5B,uBAAiBT,GACpB,MAAM,IAAI/qC,MAAM,oBAElB,IACMirC,EAAYb,GAAmB,cADxBc,qBAAeH,IAE5B,MAAO,CACLlR,UAAWgQ,GAAM/P,GAAW3nB,EAAU84B,EAAUpR,YAChD+Q,UAAWf,GAAM/P,GAAW3nB,EAAU84B,EAAUL,cA6BlDa,iBArEK,WACL,OAAOC,0BAqEPvB,eACAI,yB,qCC9Ga,SAASoB,GAAyBt/C,EAAQu/C,GACvD,GAAc,MAAVv/C,EAAgB,MAAO,GAC3B,IACIlR,EAAKyF,EADLjB,ECHS,SAAuC0M,EAAQu/C,GAC5D,GAAc,MAAVv/C,EAAgB,MAAO,GAC3B,IAIIlR,EAAKyF,EAJLjB,EAAS,GAETksD,EAAa,GAAax/C,GAI9B,IAAKzL,EAAI,EAAGA,EAAIirD,EAAW9uD,OAAQ6D,IACjCzF,EAAM0wD,EAAWjrD,GACb,GAAyBgrD,GAAUxtD,KAAKwtD,EAAUzwD,IAAQ,IAC9DwE,EAAOxE,GAAOkR,EAAOlR,IAGvB,OAAOwE,EDXM,CAA6B0M,EAAQu/C,GAGlD,GAAI,GAA+B,CACjC,IAAIE,EAAmB,GAA8Bz/C,GAErD,IAAKzL,EAAI,EAAGA,EAAIkrD,EAAiB/uD,OAAQ6D,IACvCzF,EAAM2wD,EAAiBlrD,GACnB,GAAyBgrD,GAAUxtD,KAAKwtD,EAAUzwD,IAAQ,GACzDP,OAAOrB,UAAU6V,qBAAqBhR,KAAKiO,EAAQlR,KACxDwE,EAAOxE,GAAOkR,EAAOlR,IAIzB,OAAOwE,E,0DEgMT,SAxKWosD,MAAQh/B,eAAS,CAC1BvkB,QAAS,CACPwjD,QAASj/B,YACTk/B,eAAgBl/B,YAChBm/B,YAAan/B,YACbo/B,eAAgBp/B,YAChBq/B,aAAcr/B,YACds/B,aAAct/B,YACdu/B,iBAAkBv/B,YAClBw/B,eAAgBx/B,YAChBy/B,iBAAkBz/B,YAClB0/B,eAAgB1/B,YAChB2/B,kBAAmB3/B,YACnB4/B,gBAAiB5/B,YACjB6/B,gBAAiB7/B,YACjB8/B,mBAAoB9/B,YACpB+/B,eAAgB//B,YAChBggC,gBAAiBhgC,YACjBigC,sBAAuBjgC,YACvBkgC,WAAYlgC,YACZmgC,aAAcngC,YACdogC,gBAAiBpgC,gBCqLrB,GA/Mcg/B,KAAQ,CACpBqB,UAAW,CAAEC,GAAI,CAAEC,SAAU,CAAEC,WAAW,EAAM9S,QAAQ,OACvD1tB,eAAS,CACVvkB,QAAS,CACPglD,gBAAiBzgC,YACjB0gC,OAAQ1gC,YACR2gC,YAAa3gC,YACb4gC,SAAU5gC,YACV6gC,KAAM7gC,YACN8gC,QAAS9gC,YACT+gC,WAAY/gC,YACZu1B,GAAIv1B,YACJghC,UAAWhhC,YACXihC,QAASjhC,YACTkhC,SAAUlhC,YACVmhC,WAAYnhC,gB,kHCjChB,SAASohC,KAAoD,MAAzC/hD,EAAyC,uDAA/B,GAA+B,yCAAzBgiD,EAAyB,EAAzBA,MAAO7/C,EAAkB,EAAlBA,KAAMgyC,EAAY,EAAZA,SAC/C,OAAO,OAAA6N,EAAMC,QAAQC,kBAAkBC,UAAUC,cAA1C,sCAA8D,WAAOjO,EAAU39B,GAAjB,wFAClD,aAAgB29B,GADkC,UACnEA,EADmE,OAE/C,mBAAT39B,EAFwD,gCAG/C,aAAgBA,EAAKxkB,KAAKmiD,EAAUn0C,EAAS,CAAEgiD,QAAO7/C,OAAMgyC,cAHb,cAG3DkO,EAH2D,8BAIlDj4D,IAARi4D,EAAoBlO,EAAWkO,GAJ2B,gCAM5DlO,GAN4D,2CAA9D,wDAOJA,GAYL,SATkBwL,KAAQ,CACxB2C,SAAU,CAAEH,UAAW,CAAEC,aAAc,KACvCG,UAFwB,YAEW,IAAtBP,EAAsB,EAAtBA,MAAOQ,EAAe,EAAfA,YACLR,EAAMC,QAAQC,kBAAkBC,UACxCC,aAAe,KAAU,CAACL,IAAY,UAAwB,KAAU,KAAAS,GAAW,KAAXA,GAAgB,SAAAziD,GAAC,OAAI,KAAO,CAAC,UAAW,oBAAqB,YAAa,gBAAiBA,KAAOA,EAAEkiD,SAAWliD,GAAGqiD,cAAgB,SAC/MJ,EAAMC,QAAQG,aAAe,CAACL,O,+gBCjClC,IAAMU,G,OAAUC,GAAQ,CAAEC,eAAe,IAEnCC,GAA4B,SAA5BA,EAA4BpyD,GACiD,QAAjF,GAAqB,WAAjB,GAAOA,IAAgC,OAAVA,GAAkBA,EAAMwD,cAAgBxF,OACvE,OAAO,mBAAegC,IAAf,QACA,0BAAEzB,EAAF,KAAOyB,EAAP,WAAkB,CAACzB,EAAK6zD,EAA0BpyD,QADlD,QAEG,SAACqhC,EAAD,iBAAK1iB,EAAL,KAAQyH,EAAR,eAAC,MAAoBib,GAArB,SAAyB1iB,EAAIyH,MAAM,IAE/C,GAAI,KAAcpmB,GAChB,OAAO,KAAAA,GAAK,KAALA,GAAU,SAAA8+B,GAAI,OAAIszB,EAA0BtzB,MAErD,GAAqB,iBAAV9+B,GAAsBmoC,IAAUnoC,GAAOiF,SAAS,MAAQjF,EAAO,CACxE,IAAMqyD,EAAKlqB,IAAUnoC,GAErB,OADAqyD,EAAG96C,OAAS,kBAAM86C,EAAGptD,SAAS,KACvBotD,EAET,OAAOryD,GAGT,UACExC,UAAW,SAACwH,GAAD,6BAAY2M,EAAZ,iCAAYA,EAAZ,yBAAqBsgD,GAAQz0D,UAAR,MAAAy0D,GAAO,OAAWG,GAA0BptD,KAArC,OAAiD2M,KACxF2gD,MAAOL,GAAQK,O,gDCtBJC,GAAK,+BAAG,WAAOC,GAAP,kFACb,IAAI,KAAJ,EAAY,SAAA57C,GAAO,OAAI,KAAWA,EAAS47C,MAD9B,mFAAH,sDAGLC,GAAY,SACvBztD,EACAV,GAFuB,aAGZ,KAAmB,YAAeU,IAAf,OAA2BV,KAE9CouD,GAAe,SAC1B1tD,EACAV,GAF0B,aAGf,KAAmB,YAAeU,IAAf,OAA8BV,KAWjDquD,GAAe,SAAfA,EAAgBruD,EAAcU,GACzC,MAAsB,WAAlB,GAAOA,IAAkC,OAAXA,EAAwBA,EACtD,KAAcA,GAAgB,KAAAA,GAAM,KAANA,GAAW,SAAAhB,GAAC,OAAI2uD,EAAaruD,EAAIN,MAC5DyuD,GAAUztD,GAAQ,0BAAEzG,EAAF,KAAOyB,EAAP,WAAiC,CACxDsE,EAAG/F,GAAMo0D,EAAaruD,EAAItE,QAYjB4yD,GAAc,KAAAD,IAAY,KAAZA,GAAkB,KAAMhrB,GAUtCkrB,GAAgB,KAAAF,IAAY,KAAZA,GAAkB,KAAMnrB,G,6bCtBrD,IAAIsrB,IAA8B,EAgBlC,wCAAe,WAAOC,GAAP,gKAAkF,GAAhEC,EAAlB,EAAkBA,KAAMC,EAAxB,EAAwBA,YAAaC,EAArC,EAAqCA,kBAAmBC,EAAxD,EAAwDA,sBAAxD,KACNH,EADM,qCACe/hC,KAAM8hC,GADrB,8BAC+BK,OAD/B,iCACbJ,EADa,KAEPK,EAAUH,EAAoB31D,KAAO20D,IAGzC,QACE,6BACA,sCAFF,OAGW,IAAI,KAAJ,CAAQa,GAASx6B,SAC5B,iBAAQw6B,GAASx6B,QAAjB,OAAiC,eAEjCy6B,EAAKM,QAAU,CAAC,UAXL,UAcsB,SAAY,QAACP,EAASE,IAAV,QAA2B,SAAC97C,GACzE,OAAKA,EACEo8C,KAAc,CACnBp8C,MACA67C,OACAQ,oBAAqB,SAAAC,GACnB,IAAKA,EAASC,KAAM,OAAOD,EAC3B,IAAMviC,EAAOmiC,EAAQf,MAAMmB,EAASC,MACpC,OAAO,KAAcD,EAAU,CAC7BviC,KAAMiiC,EAAwBjiC,EAAO2hC,GAAc3hC,QARxC,SAfN,kCAcNy6B,EAdM,KAcIgI,EAdJ,KA6BPC,EAAc,2BACf,KAAcjI,EAASkI,OADR,CAElBpB,IAAUkB,aAAA,EAAAA,EAAUE,KAAKF,WAAY,IAAI,0BAAEp1D,EAAF,KAAOurB,EAAP,WAAoB,CAACvrB,EAAK,WASjE,OARKu0D,KACHvgD,QAAQuzC,KACN,qPAIFgN,IAA8B,GAEzBhpC,EAAO,WAAP,qBAXS,QAaX,SAACuR,EAAK/b,GAAN,UAAC,MAAiB+b,GAAQ/b,MAE7Bw0C,EAAU,0BAAcd,EAAK/xB,QAAnB,QACT,SAAAA,GAAK,OAAI,KAAcA,OADd,iBAGN,SAAC5F,EAAK/b,GAAN,UAAC,MAAiB+b,GAAlB,SAAwB/b,EAAEy0C,YAAcz0C,MAAM,IAElD00C,EAAMvB,GAAUmB,GAAa,0BAAEK,EAAF,KAAQnqC,EAAR,WAAqB,CACtD,IAAAmqC,GAAI,KAAJA,EAAW,EAAG,GAAGx/C,cAAgB,IAAAw/C,GAAI,KAAJA,EAAW,GADU,cAEtD,sIAAUtiD,EAAV,yBAAUA,EAAV,WACQuiD,EAASJ,EAAQG,GACjBE,EAFR,oBAGOD,EAAOC,YAHd,GAIOD,EAAOE,YAAc,CAAC,CACvBjkC,SAAU+jC,EAAOE,YAAYjkC,SAC7Bse,OAAQ,KAAcylB,EAAOE,YAAY56C,SAAS,GAAGi1B,OACrD7uC,KAAM,kBACH,KAEDuwB,EAAW,YAAAgkC,GAAU,KAAVA,GAAkB,SAAAE,GAAK,OAAIA,EAAMlkC,aAAjC,QAA+C,SAAAkR,GAAC,OAAIA,EAAEzhC,UACnE+R,EAAKxR,OAASgwB,EAAShwB,QAX7B,sBAW2C,IAAIijB,MAAM,iCAXrD,cAYQrkB,EAAS,KAAAoxB,GAAQ,KAARA,GACb,SAACkL,EAAKi5B,EAAKj6B,GAAX,UAAC,MAAwBgB,GAAzB,SAA+Bi5B,EAAM3iD,EAAK0oB,OAC1C1oB,EAAKwe,EAAShwB,SAAW,IAd7B,EAgB4CsyD,GAAU1zD,GAAQ,YAAoB,cAAlBs1D,EAAkB,KAAXr0D,EAAW,KAC9E,GAAqB,WAAjB,GAAOA,GAAoB,MAAO,CAACq0D,EAAOr0D,GAC9C,IAAMu0D,EAAW,KAAY,KAAAJ,GAAU,KAAVA,GAAgB,SAAA9yB,GAAC,OAAIA,EAAEzhC,OAASy0D,KAAO5lB,OAAOzhB,YACrEwnC,EAAgB9B,GACpBS,EAAwBnzD,EAAQ4yD,GAAY5yD,IAC5C,gBAAEzB,EAAF,kBAAW,KAAAg2D,GAAQ,KAARA,EAAkBh2D,MAE/B,MAAO,CAAC81D,EAAOhB,EAAQ71D,UAAUg3D,OAP3BC,EAhBV,EAgBUA,cAAkBC,EAhB5B,mBAyBgB5qC,EAAQ4qC,EAAa,CAAEN,YAAaK,IAzBpD,wCAyBsEvjC,MAzBtE,gDAnDW,kBAgFN,KAAcy6B,EAAU,CAAEqI,SAhFpB,4CAAf,sD,0BC5Ce,SAAS,GAACjlD,EAAiB4lD,EAAmBC,GAA4B,MACjFC,EAAgB,SAACzuC,GAAD,aAAyB,OAAAA,EAC5ClX,MAAM,KAAK,GAAGA,MAAM,MADwB,QACf,SAAAlL,GAAC,OAAKA,MAEhC8wD,EAAoBD,EAAc9lD,GAClCgmD,EAAeF,EAAcF,GAC7BK,EAAeH,EAAcD,GAE7B/1C,EAAO3M,KAAKiQ,IAAL,MAAAjQ,KAAI,SAAQ4iD,IAAR,UAA8BC,GAA9B,GAA+CC,KAAgB,EAC1EC,EAAqB,SAACC,GAAD,aAAkC,YAAAA,GAAU,KAAVA,IAAU,KAAV,GACnD,SAAC75B,EAAK/b,EAAG+a,GAAT,OAAiBgB,EAAM/b,EAAIpN,KAAK0f,IAAI/S,EAAMwb,KAAM,IAEpD86B,EAAUF,EAAmBH,GAC7BM,EAAWH,EAAmBF,GAC9BM,EAAWJ,EAAmBD,GACpC,OAAOG,GAAWC,GAAYD,EAAUE,ECoBnC,SAASC,KAAiD,6DAAJ,GAA7BC,EAAiC,EAAjCA,UAAiC,IAAtBC,aAAsB,SAC/D,KAAKA,GAAUD,GAAcr1D,KAAKq1D,WAAer1D,KAAKu1D,cAAiBv1D,KAAKu1D,aAAaF,WAAY,MAAM,IAAInyC,MAAM,6BACrH,OAAIoyC,GAAUD,GAAcr1D,KAAKq1D,WAAer1D,KAAKu1D,cAAiBv1D,KAAKu1D,aAAaF,UACjFA,GAAar1D,KAAKq1D,WAAar1D,KAAKu1D,aAAaF,UADmD,K,sCAU7G,wGAA4CG,EAA5C,+BAAwD,GAAI7E,EAA5D,uBACO6E,EADP,sBACwB,IAAItyC,MAAM,8BADlC,UAEOytC,EAFP,gCAE+B3wD,KAAK8zD,IAAI2B,qBAFxC,OAEe9E,EAFf,OAE8DA,OAF9D,YAGMA,EAAS,GAHf,uBAGwB,IAAIztC,MAAM,gCAHlC,iCAKS,YAAAsyC,GAAS,KAATA,GACG,gBAAGE,EAAH,EAAGA,kBAAH,OAA2B/E,GAAU+E,MADxC,QAGH,SAACv6B,EAAKgG,GAAN,OAAYA,EAAEu0B,kBAAoBv6B,EAAIu6B,kBAAoBv0B,EAAIhG,IAC9D,CAAEu6B,mBAAoB,EAAG7mD,QAAS,IAEnCA,SAXL,kD,sBA0BA,IAAM8mD,GAAOlE,WAAkB,CACvB3rC,KADuB,YACoB,0IAAnC7O,EAAmC,EAAnCA,IAAK87C,EAA8B,EAA9BA,YAAa6C,EAAiB,EAAjBA,cACzB3+C,EAD0C,sBAC/B,IAAIiM,MAAM,kBADqB,cAE/C,EAAKjM,IAAMA,EAAI3C,QAAQ,MAAO,IAC9B,EAAKy+C,YAAcA,EAAcA,EAAYz+C,QAAQ,MAAO,IAAM,EAAK2C,IAHxB,SAI1B4+C,GAAiB,GAAD,OAAI,EAAK5+C,IAAT,aAAyB,CAAE87C,YAAa,EAAKA,cAJnC,UAIzC+C,EAJyC,OAK/C,EAAKjnD,QAAUinD,EAAOhD,KAAKpuB,KAAK71B,QAE7BknD,GAAgB,EAAKlnD,QAASmnD,GAAiBC,KAC/CL,EAR4C,uBAUvC,IAAI1yC,MACR,mCAA4B,EAAKrU,QAAjC,oCACiBmnD,GADjB,eACsCC,KAZK,eAe/C,EAAKnC,IAAMgC,EAAOhC,IAf6B,UAiBkD,EAAKA,IAAIoC,YAjB3D,wBAiBzBC,EAjByB,EAiBvCC,aAA6CC,EAjBN,EAiBfC,oBAAkCjB,EAjBnB,EAiBmBA,UAAWG,EAjB9B,EAiB8BA,UAjB9B,UAkBT,EAAKe,4BAA4Bf,GAlBxB,eAkB/C,EAAKgB,yBAlB0C,OAmB/C,EAAKC,cAAgBpB,EAnB0B,kBAoBxC,KAAc,EAAM,CAAEc,WAAUE,iBApBQ,+CAsBjD3qD,QAAS,CACPgrD,YADO,WAEL,MAAO,CACLz/C,IAAKjX,KAAKiX,IACV87C,YAAa/yD,KAAK+yD,YAClB0D,cAAez2D,KAAKy2D,cACpB5nD,QAAS7O,KAAK6O,QACd2nD,yBAA0Bx2D,KAAKw2D,2BAGnCD,4B,6CAEFjT,MAAO,CACLz0C,QAAS,KACT2nD,yBAA0B,KAC1BC,cAAe,QAIbT,GAAkB,QAClBC,GAAkB,QAExB,Y,sBChFaU,GAAgB,SAACx7B,GAAD,aAAU,QAAC,OAAQ,YAAT,QAAyB,SAAAh8B,GAAC,MAAsB,mBAAXg8B,EAAIh8B,O,sCAYhF,WAAgCqmD,GAAhC,mGAAoCzE,EAApC,+BAA0C,GAClC6B,EAAW,CAAC5iD,KAAKo1D,aAAarU,IAChCA,EAAI6V,SAAShU,EAAS5gD,KAAK,YACzB60D,EAAcle,GAAO6M,EAAI,MACzBsR,EAAkB,IAAAhvB,IAAM,KAANA,GAAc,CAACA,GAAO1sC,KAAKwnD,EAASjxC,KAAK,MAAOgG,GAAKk/C,KAJ/E,SAM4B72D,KAAKy9C,KAAKqZ,EAAiB/V,GANvD,0BAMQ/N,EANR,yBAOSuS,GAAQ,CAAEE,UAAWoR,EAAa7jB,cAAcvE,GAAQE,QAAQ6W,IAPzE,kD,4DA4BA,WAA4BviC,GAA5B,6FAAqC89B,EAArC,+BAA2C,CAAEgW,WAAW,GAAxD,SACoB/2D,KAAKy9C,KAAKK,GAAc76B,GAAU89B,GADtD,cACQiW,EADR,yBAESjW,EAAIgW,UAAYjvB,GAAO1sC,KAAK47D,GAAKjyD,SAAS,OAASiyD,GAF5D,iD,4DAeA,WAA8B/zC,EAAS26B,GAAvC,2FAAkDmD,EAAlD,+BAAwD,GAAxD,KACSkW,GADT,KAEIh0C,EAFJ,KAGyB,iBAAd26B,EAAyB9V,GAAO1sC,KAAKwiD,EAAW,OAASA,EAHpE,KAIIjF,GAJJ,SAIiB34C,KAAK2zB,QAAQotB,GAJ9B,4I,sBAwBA,SAAekO,IAAf,CAAuB,CACrBnpC,KADqB,YACA,IAAbuvC,EAAa,EAAbA,WACDr1D,KAAKq1D,WAAaA,IACrBr1D,KAAKq1D,UAAYA,IAGrB3pD,QAAS,CAAEwrD,gB,6CAAiB9B,gBAAcpX,Y,6CAAaC,c,kDACtDhuB,eAAS,CACVvkB,QAAS,CACP+xC,KAAMxtB,YACN0D,QAAS1D,gB,4eCpFb,WAAqBu1B,GAArB,iGAAyBl2C,EAAzB,+BAAmC,GAC3ByxC,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,IACNA,EAAQsnD,QAF1C,qBAGM,CAAEO,YAAY,GAHpB,mCAGoCn3D,KAHpC,SAG0DA,KAAK2zB,QAAQotB,GAHvE,yCAGyCqQ,WAHzC,sDAEU+F,EAFV,EAEUA,WAAYC,EAFtB,EAEsBA,SAELD,EAJjB,kCAKYn3D,KAAKq3D,YAAY7R,EAAjB,SAA0BzE,GAA1B,IAA+BqW,aAL3C,6DAMYp3D,KAAKk3D,gBAAgB1R,EAAIzE,GANrC,mCAIQpS,EAJR,uBAOSoS,EAAI6V,QACP,CAAEj/C,KAAM2/C,eAAsB3oB,GAAS4Y,MAAO5Y,GAC9C3uC,KAAK0wD,gBAAgB/hB,EAAQoS,IATnC,kD,4DAYA,WAA4ByE,GAA5B,kIAAoE,GAAlC+R,EAAlC,EAAkCA,SAAUH,EAA5C,EAA4CA,QAAY9nD,EAAxD,2BACStP,KAAKw3D,aAAahS,EAAI+R,EAAUH,EAAS9nD,IADlD,iD,4DAcA,WAAsBg7B,EAAQmtB,EAAmBnoD,GAAjD,+EACQyxC,EADR,SACmB/gD,KAAKuwD,GAAGC,UAAalhD,GADxC,KAEStP,KAFT,KAGUA,KAHV,mBAIS+gD,GAJT,iBAKsB/gD,KAAK2zB,QAAQotB,GALnC,oCAMyB/gD,KAAK03D,YAAYD,EAAmB,KAAM1W,GANnE,gCAOMzW,EAPN,MAKMuO,SALN,KAMM8e,YANN,KAOMrtB,OAPN,mDAGe4kB,QAHf,kDASInO,EATJ,uBAEckL,KAFd,0E,4DAwBA,WAA8B2L,EAAUH,EAAmBnoD,GAA3D,2FACMsoD,EAAW,GAAKA,EAAW,GADjC,sBAEU,IAAI10C,MAAJ,2DAA8D00C,IAFxE,cAIQ7W,EAJR,SAImB/gD,KAAKuwD,GAAGC,UAAalhD,GAJxC,SAK4BtP,KAAK03D,YAAYD,EAAmB,KAAM1W,GALtE,cAKQ4W,EALR,gBAMyB33D,KAAK2zB,QAAQotB,GANtC,cAMQlI,EANR,YAOsB5Q,IAPtB,UAOsCjoC,KAAK+wD,QAAQlY,GAPnD,2BAOQkY,EAPR,eAQQ8G,EAAgB9G,EAAQxlB,MAAMqsB,GAAUxf,aAAanQ,mBAR7D,KAS0BqvB,GAT1B,UAUUt3D,KAAKkvD,QAAL,SAAkBnO,GAAlB,IAAuBlI,WAAU8e,cAAartB,OAAQutB,KAVhE,kCASoCpR,SATpC,gBASgBpB,EAThB,EASUG,GAAMH,IAIR/a,EAASutB,EAAc9oC,KAAKs2B,GAAKyS,GAAG/G,GAAWA,EAAQ1c,MAAMgR,GAAOwS,EAb5E,KAcS73D,KAdT,UAcyBA,KAAKkvD,QAAL,SAAkBnO,GAAlB,IAAuBlI,WAAU8e,cAAartB,YAdvE,gCAckFyW,EAdlF,uBAcckL,KAdd,wE,4DA0BA,WAAkC8L,EAAazoD,GAA/C,+EACQyxC,EADR,SACmB/gD,KAAKuwD,GAAGC,UAAalhD,GADxC,KAEStP,KAFT,KAGUA,KAHV,mBAIS+gD,GAJT,iBAKqB/gD,KAAK2zB,QAAQotB,GALlC,+BAMUgX,EANV,MAKMC,QALN,KAMMxS,GANN,mDAGeyS,YAHf,iDAQIlX,EARJ,uBAEckL,KAFd,yE,sBA8CA,SALWgD,KAAQiJ,GAAIC,GAAaC,GAAO,CACzC1sD,QAAS,CAAEugD,K,6CAAMrd,M,iDAAOypB,c,iDAAeC,kB,+CAAmBC,gBAzB5D,WAA4B,WACpBC,EAAiB,CAAC,gBAAiB,iBACzC,KAAAA,GAAc,KAAdA,GAAuB,SAAAh5C,GAAC,OAAI,EAAKA,IAAyB,mBAAZ,EAAKA,IAAqB,EAAKA,SAuBF63C,Y,8CAC3E/G,UAAW,CAAEC,GAAI,CAAEC,SAAU,CAAElO,aAAcV,GAAkBO,Y,odCpJjE,IAAMsW,GAAa,gCACjB,6GAAShT,EAAT,EAASA,UAAWzS,EAApB,EAAoBA,WAAgBtE,EAApC,EAAoCA,QAAS94B,EAA7C,EAA6CA,KAAM8iD,EAAnD,EAAmDA,mBACfh/D,KAA7B+rD,UAAazS,GADpB,yCACsD,IADtD,UAE4B,IAAtBA,EAAW/yC,OAFjB,yCAEsC,IAFtC,UAGQouC,EAASvG,GAAO1sC,KAAK,OACzBwa,EAAK6gD,gBADoB,UAEtB,KAAAiC,GAAa,KAAbA,EAAuBjqB,GAAQ6C,WAAa,CAAC,YAAc,KAC9D3/B,KAAK,MACDmlD,EAAkB,IAAAhvB,IAAM,KAANA,GAAc,CAACuG,EAAQoX,EAAUf,aACnDiU,EAAsB,IAAA7wB,IAAM,KAANA,GAAc,CAACuG,EAAQ12B,GAAK8tC,EAAUf,cAC5DkU,EAAajgB,GAAOjK,EAAQxmC,GAAI,OAClCy1C,GAAOmZ,EAAiB9jB,EAAW,GAAI4lB,KACzCjb,GAAOgb,EAAqB3lB,EAAW,GAAI4lB,GAX/C,0CAWmE,IAXnE,iCAYS,CAAC,CACN31C,QAAS,8IAET5kB,IAAK,mBACLw6D,YAAa,CAAC,YAAa,iBAhB/B,4CADiB,uFAoBjB,qGAASpT,EAAT,EAASA,UAAWD,EAApB,EAAoBA,GAAQ5vC,EAA5B,EAA4BA,KAAM8iD,EAAlC,EAAkCA,cAAe3kB,EAAjD,EAAiDA,YACrBr6C,KAArB+rD,UAAaD,GADpB,yCAC8C,IAD9C,gCAESsT,GACLl6C,IAAQ6mC,UAAaD,GAAId,WAAY,MACrC9uC,EAFsB,oBAGlB8iD,GAHkB,CAGH3kB,MALvB,2CApBiB,wDA4BjB,SAACyR,EAAD,GAAoB,MAAbzR,EAAa,EAAbA,OACL,QAAer6C,IAAX8rD,EAAGH,IAAmB,MAAO,GACjC,IAAM0T,EAASrT,GAAa,EAAG3R,EAAQ,CACrCiR,KAAMQ,EAAGR,KAAO,EAAG70B,OAAQq1B,EAAIG,aAAa,EAAOV,IAAKO,EAAGhc,MAE7D,OAAI,IAAIvB,IAAJ,CAAc8wB,GAAQr4B,IAAI8kB,EAAGH,KAAa,GACvC,CAAC,CACNpiC,QAAS,oBAAOuiC,EAAGH,IAAZ,6DAAmE0T,GAC1E16D,IAAK,kBACLw6D,YAAa,CAAC,UAGlB,cAAyB,MAAtBG,EAAsB,EAAtBA,IAASrI,EAAa,EAAbA,OACV,YAAYj3D,IAARs/D,GAEQ,IADZA,GAAOA,IACUA,GAAOrI,EAFM,GAGvB,CAAC,CACN1tC,QAAS,oBAAO+1C,EAAT,mDAAsDrI,GAC7DtyD,IAAK,aACLw6D,YAAa,CAAC,UAGlB,cAAsE,QAAnEvuB,EAAmE,EAAnEA,OAAQ+a,EAA2D,EAA3DA,IAAK4T,EAAsD,EAAtDA,QAASzT,EAA6C,EAA7CA,GAAQ9W,EAAqC,EAArCA,QAASgqB,EAA4B,EAA5BA,cAAe3kB,EAAa,EAAbA,OACvD,QAAmCr6C,KAA/B,UAAC4wC,UAAU+a,SAAX,QAAkB4T,GAAwB,MAAO,GACrD,IAAMC,EAAO,IAAIjxB,IAAJ,CAAcod,GAAKt2B,KAAKkqC,GAAW,GAAGlqC,KAAKub,GAAU,GAC/Dvb,KAAKglB,IAAWtF,GAAQ6C,UAAYkU,EAAGA,GAAGC,UAAUD,GAAGH,IAAM,GAC7DhR,MAAM,KAAAqkB,GAAa,KAAbA,EAAuBjqB,GAAQ6C,WAAa+T,EAAM,GAC3D,OAAI6T,EAAKx4B,IAAIgO,EAAQqiB,SAAiB,GAC/B,CAAC,CACN9tC,QAAS,gCAAmByrB,EAAQqiB,QAA7B,iEAA4FmI,EAAKtxB,WACxGvpC,IAAK,sBACLw6D,YAAa,CAAC,SAAU,MAAO,cAGnC,cAA2C,QAAxCngB,EAAwC,EAAxCA,MAAWhK,EAA6B,EAA7BA,QAASgqB,EAAoB,EAApBA,cACrB,QAAch/D,IAAVg/C,GAAuB,KAAAggB,GAAa,KAAbA,EAAuBjqB,GAAQ4C,QAAS,MAAO,GAC1EqH,GAASA,EACT,IAAMygB,EAAazqB,EAAQgK,MAAQ,EACnC,OAAIA,IAAUygB,EAAmB,GAC1B,CAAC,SACHzgB,EAAQygB,EAAa,CACtBl2C,QAAS,sBAASy1B,EAAX,6CAAoDygB,GAC3D96D,IAAK,oBACH,CACF4kB,QAAS,sBAASy1B,EAAX,yCAAgDygB,GACvD96D,IAAK,cANF,IAQLw6D,YAAa,CAAC,aAGlB,YAAkB,MAAfO,EAAe,EAAfA,SACD,YAAiB1/D,IAAb0/D,GACAA,GAAYlvB,GADmB,GAE5B,CAAC,CACNjnB,QAAS,0BAAam2C,EAAf,iCAA+ClvB,IACtD7rC,IAAK,cACLw6D,YAAa,CAAC,eAGlB,cAAiD,MAA9CvlB,EAA8C,EAA9CA,UAAWhB,EAAmC,EAAnCA,WAAgByB,EAAmB,EAAnBA,OACpByiB,EADuC,EAAX5gD,KACM8gD,cAAlCF,yBACFh1C,EAAW4wB,GAAgBokB,GACjC,IAAKh1C,EAAU,MAAM,IAAI0B,MAAJ,gCAAmCszC,IAEnDljB,IAAWA,EAAY,CAAEhB,eAC9B,IAEyF,EAFnF+mB,EAAa73C,EAASuyB,GAC5B,OAAKslB,GACD,YAAe/lB,IAAf,QAA+B,4BAAEj1C,EAAF,KAAOyB,EAAP,YAAmB,OAAAu5D,EAAWh7D,IAAX,QAA0ByB,MACvE,CAAC,CACNmjB,QAAS,+BAAkB,KAAeqwB,GAAnC,qCAAyE,KAAe+lB,IAC/Fh7D,IAAK,0BACLw6D,YAAa,CAAC,YAAa,gBALP,KAYtBS,GAAmB,SAAA9T,GAAE,iBAAI,sBAC7B,WAAY,YAAa,UAAW,WACpC,WAAY,SAAU,YAAa,OAAQ,YAFd,QAIxB,SAAAnnD,GAAG,OAAImnD,EAAGnnD,OAJc,QAKrB,SAAAiL,GAAC,OAAIA,MALgB,QAMxB,SAAAA,GAAC,OAAIA,EAAEgL,QAAQ,OAAQ,UAAQ,IAevB,SAAewkD,GAA9B,qC,sCAAe,WAAkCf,EAAaniD,GAA/C,+GAAqD8iD,EAArD,+BAAqE,GAArE,EACUjS,GAASsR,GAAxBvS,EADK,EACLA,GAAIzR,EADC,EACDA,OAENpgB,EAHO,UAGG2lC,GAAiB9T,UAHpB,QAIVzR,IAAWtF,GAAQE,OAAS2qB,GAAiB9T,EAAGC,UAAUD,IAAM,KAJtD,SAKmB,SAAY,CAC1C7xB,GAAW/d,EAAKk+C,IAAIyF,mBAAmB5lC,GAA5B,OAA2C,iBAAO,CAC3DzrB,GAAIyrB,EACJo9B,QAAS,IAAI9oB,IAAJ,CAAc,GACvByQ,MAAO,MAET9iC,EAAKk+C,IAAI0F,2BAA2B1jD,MAAK,qBAAG66C,YAXjC,iCAKNjiB,EALM,KAKGiiB,EALH,yBAcC,SACZ,KAAA8H,IAAU,KAAVA,IAAe,SAAAvyC,GAAC,OAAIA,EAAEs/B,EAAI,CAAEzR,SAAQn+B,OAAM84B,UAASiiB,SAAQ+H,sBAfhD,oH,wdCzHf,SAAezJ,IAAf,CAAuB,CACrBnpC,KADqB,WACM,oEAAJ,GAAI,IAAnB69B,aAAmB,MAAX,GAAW,EACzB3jD,KAAKy5D,KAAO,IAAI,MAChBz5D,KAAK05D,cAAc/V,GAEnB,KAAAA,GAAK,KAALA,GAAc,SAAC/tC,EAAM9R,GACnB,IAAQpE,EAAmBkW,EAAnBlW,KAAM+jD,EAAa7tC,EAAb6tC,SACd,EAAKkW,QAAQj6D,EAAM+jD,EAAgB,IAAN3/C,MAE3B6/C,EAAM1jD,QAAQD,KAAK45D,WAAWjW,EAAM,GAAGjkD,OAE7Cm6D,oBAAqB,CACnB/F,IAAK,CACHrpD,YAAY,EACZjB,cAAc,EACdjC,IAHG,WAID,IAAKvH,KAAKu1D,eAAiBv1D,KAAKu1D,aAAa9R,SAC3C,MAAM,IAAIvgC,MAAM,iEAElB,OAAOljB,KAAKu1D,aAAa9R,SAASqQ,OAIxCpoD,QAAS,CAaPiuD,QAbO,SAaEj6D,EAAMkW,GAAsB,IAAhBkkD,EAAgB,wDACnC,GAAI95D,KAAKy5D,KAAKnyD,IAAI5H,GAAO,MAAM,IAAIwjB,MAAJ,yBAA4BxjB,EAA5B,mBAE/BM,KAAK05D,cAAc,CAAC,CAAEh6D,OAAM+jD,SAAU7tC,KAEtC5V,KAAKy5D,KAAKzzD,IAAItG,EAAM,CAClBA,OACA+jD,SAAU7tC,EACVqB,IAAKrB,EAAKqB,IACV87C,YAAan9C,EAAKm9C,YAClBsC,UAAWz/C,EAAK6gD,cAChB5nD,QAAS+G,EAAK/G,QACd2nD,yBAA0B5gD,EAAK4gD,4BAE7BsD,GAAW95D,KAAKu1D,cAClBv1D,KAAK45D,WAAWl6D,IAapBk6D,WAzCO,SAyCKl6D,GACV,IAAKM,KAAKy5D,KAAKnyD,IAAI5H,GAAO,MAAM,IAAIwjB,MAAJ,yBAA4BxjB,EAA5B,iBAEhCM,KAAKu1D,aAAev1D,KAAKy5D,KAAKlyD,IAAI7H,IAWpC01D,gBAUA2E,gBAjEO,WAkEL,QAAS/5D,KAAKu1D,aAAa9R,UAW7BiT,YA7EO,WA8EL,IAAK12D,KAAK+5D,kBAAmB,MAAM,IAAI72C,MAAM,gDAC7C,WACExjB,KAAMM,KAAKu1D,aAAa71D,MACrBM,KAAKu1D,aAAa9R,SAASiT,gBAYlCsD,eA7FO,WA6FW,QAChB,OAAO,YAAW,OAAAh6D,KAAKy5D,MAAL,UAAX,QAAoC,qCACzC/5D,KADyC,WAEjC+jD,SAASiT,mBAGrBgD,cAnGO,SAmGQ/V,GACb,IAAQr/C,EAAU8lD,aAAYI,MAC5BJ,YAAW,CACT1qD,KAAM0qD,cAAan6B,WACnBwzB,SAAU2G,YAAW,CACnB0J,IAAK1J,cAAan6B,WAClBumC,yBAA0BpM,cAAan6B,WACvComC,YAAajM,cAAan6B,aACzBgqC,aAELl6C,MAAM,QAAQkrC,SAAStH,GATjBr/C,MAUR,GAAIA,EAAO,MAAMA,IAGrBg/C,MAAO,CACLiS,aAAc,M,wfC1HlB,WAAgC/P,GAAhC,4GAAoCl2C,EAApC,+BAA8C,GAA9C,EACgC,KAAQtP,KAAKuwD,GAAGC,SAAUlhD,GAAhDmhD,EADV,EACUA,WADV,EACqB9S,OADrB,gCAG6Bmb,GAAkBtT,EAAIxlD,KAAKu1D,aAAa9R,UAHrE,YAGUyW,EAHV,QAImBj6D,OAJnB,sBAKYgjB,EAAU,oCACd,KAAAi3C,GAAU,KAAVA,GAAe,SAAAh0C,GAAC,OAAIA,EAAEjD,WAAStR,KAAK,MAChC,KAAc,IAAIuR,MAAMD,GAAU,CACtC0R,KAAM,wBACNulC,aACAnC,YAAavS,IAVrB,iCAgB6BxlD,KAAK8zD,IAAIqG,gBAAgB,CAAE3U,OAhBxD,oBAgBY4U,EAhBZ,EAgBYA,QAEJ3J,EAlBR,0DAmBgCzwD,KAAK8wD,KAAKsJ,EAAQ9qD,GAnBlD,8DAmB4Di4C,MAAO/B,GAAvD6U,GAnBZ,yBAqBU/qD,EAAQgrD,QArBlB,2CAsBoBD,GAtBpB,kBAsBsDr6D,KAAKu6D,iBAAiBH,EAAQ9qD,GAtBpF,mCAsB4BkrD,mBAtB5B,qFAwBaH,GAxBb,iCA0BW,CAAE1iD,KAAMyiD,EAAQ7S,MAAO/B,IA1BlC,yCA4BU,WAAqB,CAAE+B,MAAO/B,EAAIiV,SAAU,kBAAM3B,GAAkBtT,EAAI,EAAK+P,aAAa9R,aA5BpG,2D,+BAgCe8W,G,yEAAf,WAAiCH,GAAjC,qGAAyC9qD,EAAzC,+BAAmD,CAAEgrD,QAAS,IACpDA,SAA8B,IAApBhrD,EAAQgrD,QAAmB,EAAIhrD,EAAQgrD,QAD3D,SAEgCt6D,KAAKwlD,GAAG4U,GAFxC,uBAEUM,EAFV,EAEUA,YAFV,SAGuB16D,KAAK4wD,YAAY8J,EAAcprD,EAAQgrD,QAAShrD,GAHvE,cAGQqhD,EAHR,iBAIgD3wD,KAAKwlD,GAAG4U,GAJxD,iBAIuBO,EAJvB,EAIUD,YAJV,KAKUC,EALV,QAMU,IANV,eAQSD,EART,0BAOY,IAAIx3C,MAAJ,sBAAyBk3C,EAAzB,2BAPZ,iCASazJ,GATb,iCAWa4J,GAAiBH,EAAQ9qD,IAXtC,kD,4DAeA,WAA2BqkB,GAA3B,4HAAuD,GAAjBg9B,EAAtC,EAAsCA,OAAQh5C,EAA9C,EAA8CA,MACxCg5C,EADN,yCACqB3wD,KAAK8zD,IAAI8G,4BAA4BjnC,EAASg9B,IADnE,WAEMh5C,EAFN,yCAEmB3X,KAAK8zD,IAAI+G,0BAA0BlnC,EAAShc,IAF/D,gCAGS3X,KAAK8zD,IAAIyF,mBAAmB5lC,IAHrC,iD,4DAUA,WAAwBA,GAAxB,wIAAuF,GAApDg9B,EAAnC,EAAmCA,OAAQh5C,EAA3C,EAA2CA,KAA3C,IAAiDmjD,cAAjD,MAA0DlZ,GAAkBO,OAA5E,WAC4BniD,KAAKoxD,WAAWz9B,EAAS,CAAEhc,OAAMg5C,WAD7D,uBACUI,EADV,EACUA,QADV,kBAGSxO,GAAawO,EAAS,CAAEvO,mBAAoBsY,IAAU/1D,YAH/D,iD,4DAMA,WAA2B4uB,GAA3B,wIAA0F,GAApDg9B,EAAtC,EAAsCA,OAAQh5C,EAA9C,EAA8CA,KAA9C,IAAoDmjD,cAApD,MAA6DlZ,GAAkBO,OAA/E,WAC4BniD,KAAKoxD,WAAWz9B,EAAS,CAAEhc,OAAMg5C,WAAjC,OAAiD,SAAAnC,GAAC,MAAK,CAAEuC,QAAS,MAD9F,uBACUA,EADV,EACUA,QADV,kBAGSxO,GAAawO,EAAS,CAAEvO,mBAAoBsY,IAAU/1D,YAH/D,iD,4DAMA,WAAmB4S,GAAnB,+FAAyB+sB,IAAzB,0CACmB1kC,KAAK8zD,IAAIiH,qBAAqBpjD,GADjD,UACQ6tC,EADR,QAEM,QAAC,mBAAoB,iBAAkB,2BAAvC,OAA0EA,EAAGA,GAAGh/C,QAASk+B,IAA4B,IAApB8gB,EAAGkV,YAF1G,oDAIkBlV,GAJlB,UAI+BxlD,KAAKixD,UAAUt5C,GAJ9C,qIAOS6tC,GAPT,2D,4DAUA,+FAESxlD,KAAKg7D,iBACRh7D,KAAKg7D,eAAiBh7D,KAAK8zD,IAAI0F,4BAHrC,SAKkBx5D,KAAKg7D,eALvB,uCAKuCrK,QALvC,8BAOW3wD,KAAKg7D,eAPhB,wE,4DAWA,WAA4BrK,GAA5B,qIAAyE,GAAzE,IAAsCsK,gBAAtC,MAAiD,IAAjD,MAAuDC,gBAAvD,MAAkE,GAAlE,EAEWp3D,EAAI,EAFf,YAEkBA,EAAIo3D,GAFtB,qBAGQp3D,EAHR,gCAGiBuuD,GAAM4I,GAHvB,uBAI0Bj7D,KAAK2wD,SAJ/B,aAIIwK,EAJJ,SAKyBxK,GALzB,0CAKwCwK,GALxC,QAEgCr3D,IAFhC,6BAOQ,IAAIof,MAAJ,uCAA8Bg4C,EAAW,GAAKD,EAA9C,gCAA6EE,EAA7E,8BAA+GxK,IAPvH,kD,4DAaA,wGACS3wD,KAAK8zD,IAAIsH,gBADlB,iD,4DAIA,WAAqBC,GAArB,8IAAmF,GAAnF,IAA2BC,cAA3B,MAAoC,GAApC,MAAwCL,gBAAxC,MAAmD,IAAnD,MAAyDM,qBAAzD,kBACoBv7D,KAAK2wD,SADzB,wBACoC2K,EAA5Br5C,EADR,iCAGqBjiB,KAAKwlD,GAAG6V,GAAR,OAAkB,SAAA7M,GAAC,OAAI,QAH5C,YAGUhJ,EAHV,YAImC,IAApBA,EAAGkV,aAAuBa,GAAiB/V,EAAGmL,QAJ7D,0CAKanL,GALb,yBAOU6M,GAAM4I,GAPhB,yBAQiBj7D,KAAK2wD,SARtB,4BAQiC1uC,EARjC,wCASQ,IAAIiB,MAAJ,gCAA6Bo4C,EAA7B,6CAAuED,IAT/E,kD,4DAYA,WAA0B1jD,GAA1B,wFACuB3X,KAAK8zD,IAAI0H,yBAAyB7jD,GADzD,cACQ7W,EADR,yBAESA,EAAO26D,UAAY36D,GAF5B,iD,4DAKA,wGACSd,KAAK8zD,IAAI4H,0BADlB,iD,4DAIA,wGACS17D,KAAK8zD,IAAI6H,wBADlB,iD,4DAIA,WAA8BC,GAA9B,qEAC8B,iBAAjBA,EADb,yCAC+C57D,KAAK8zD,IAAI+H,oBAAoBD,IAD5E,UAE8B,iBAAjBA,EAFb,yCAE+C57D,KAAK8zD,IAAIgI,sBAAsBF,IAF9E,aAGQ,IAAI14C,MAAM,+CAHlB,iD,4DAMA,WAA0CvL,GAA1C,kFACgB3X,KAAK8zD,IAAIiI,gCAAgCpkD,GADzD,uCACgEqkD,cADhE,iD,4DAIA,WAA4BJ,GAA5B,qEAC8B,iBAAjBA,EADb,yCAC+C57D,KAAK8zD,IAAImI,kBAAkBL,IAD1E,UAE8B,iBAAjBA,EAFb,yCAE+C57D,KAAK8zD,IAAIoI,oBAAoBN,IAF5E,aAGQ,IAAI14C,MAAM,+CAHlB,iD,4DAMA,WAAoCvL,GAApC,2FACS3X,KAAK8zD,IAAIqI,0BAA0BxkD,IAD5C,iD,4DAIA,WAAyB6tC,EAAI4W,EAAgB9sD,GAA7C,oGAEUtP,KAAK8zD,IAAIuI,mBAAT,SACD/sD,GADC,IAEJgtD,IAAK,CAAC,CAAE9W,OACR+W,SAAU,CAAC,CACTC,OAAQJ,EACR9xB,OAAQF,GAAgBE,YAPhC,0BACUmyB,QADV,UACsB37D,EADtB,EACsBA,OAAQomB,EAD9B,EAC8BA,OAAWw1C,EADzC,SAC8DC,EAD9D,SAWiB,OAAX77D,EAXN,mDAWmC47D,GAAkBC,IAXrD,cAaQ,KACJ,IAAIz5C,MAAM,kBAAoBgE,GAC9B,CAAEs+B,KAAI4W,iBAAgB9sD,YAf1B,kD,4DAmBA,WAAoC6nD,GAApC,2FACSn3D,KAAK8zD,IAAI8I,gBAAgBzF,IADlC,iD,4DAIA,WAA4BA,GAA5B,2FACSn3D,KAAK8zD,IAAI+I,YAAY1F,IAD9B,iD,4DAIA,WAAwBz3D,GAAxB,2FACSM,KAAK8zD,IAAIgJ,mBAAmBp9D,IADrC,iD,4DAaA,WAA4Bq9D,EAAU1uB,GAAtC,wIAA0E,GAA1BsP,EAAhD,EAAgDA,OAAQqf,EAAxD,EAAwDA,cACjDD,GAAgC,iBAAbA,EAD1B,sBAEU,IAAI75C,MAAJ,8CAAiD65C,IAF3D,UAIQna,EAAW,KAAY3X,IACxB,KAAA2X,GAAQ,KAARA,EAAkBvU,GALzB,sBAMU,IAAInrB,MAAJ,+BAA4BmrB,EAA5B,gCAAyDuU,EAAzD,MANV,uBASIjK,GAAOokB,EAAU1uB,GATrB,kBAUW0uB,GAVX,8CAYM3iB,GAAY2iB,GAZlB,qBAaQpf,IAAUqf,EAblB,kCAcyBh9D,KAAKi9D,QAAQF,GAAb,OAA6B,SAAAvO,GAAC,OAAI,QAd3D,WAcY9uD,EAdZ,8BAeuB,IAAIwjB,MAAJ,0BAA6B65C,IAfpD,WAgBYjpC,EAAU,OAAAp0B,EAAKuzC,UAAL,QAAmB,qBAAG/qC,GAAY8G,MAAM,KAAK,KAAOq/B,KAhB1E,uBAiB0B,IAAInrB,MAAJ,qBAAkB65C,EAAlB,qCAAsD1uB,IAjBhF,YAkBU2uB,EAlBV,0CAkBgClpC,EAAQ5rB,IAlBxC,iCAoBWgxC,GAAc6jB,IApBzB,cAsBQ,IAAI75C,MAAJ,mCAAsC65C,IAtB9C,2D,sBAgEA,SA3BkB3E,WAAc8E,GAAU,CACxCxxD,QAAS,CACPglD,gB,6CACAK,Q,6CACAC,W,6CACAI,W,6CACAP,S,4CACArL,G,6CACAmL,O,4CACAC,Y,6CACAE,K,6CACAG,U,6CACAC,Q,4CACAyK,qB,4CACAwB,c,6CACAC,oB,6CACAC,0B,6CACAC,Y,6CACAnM,S,iDACAoM,oB,6CACAV,Y,6CACAI,Q,6CACA1C,oBACA7C,Y,4hBC1QJ,IAAM8F,GAAmB,SAACh3D,EAAM2pB,GAAyB,MAAjB7gB,EAAiB,uDAAP,GAChD,GAAsB,WAAlB,GAAO6gB,GAAqB,MAAM,IAAIjN,MAAM,gCAChD,GAAoB,iBAAT1c,IAAsB,YAAcioC,KAAd,OAAgCjoC,GAAO,MAAM,IAAI0c,MAAJ,mCAAsC1c,IACpH,IAAM6+C,EAAMK,GAAav1B,EAAOk1B,IAAK7+C,EAAM,CAAEw+C,IAAK70B,EAAO60B,IAAK70B,SAAQ80B,IAAK90B,EAAO80B,MAClF,EAAwDM,GAAQ,SAAKp1B,GAAN,IAAck1B,QAAO7+C,EAArB,IAA6By+C,IAAK90B,EAAO80B,KAAQ31C,IAAxGo1C,EAAR,EAAQA,WAAY/R,EAApB,EAAoBA,OAAY8S,EAAhC,EAA4BD,GAAe2B,EAA3C,EAA2CA,SAC3C,MAAO,CAAEzC,aAAY/R,SAAQ8S,YAAWt1B,OAAQg3B,EAAU3gD,SAUtDi3D,GAAoB,SAACjY,GACzB,IAAKA,EAAI,MAAM,IAAItiC,MAAJ,+BAAkCsiC,IACjD,GAAkB,iBAAPA,EAAiB,CAC1B,MAAyDiB,GAASjB,GAClE,MAAO,CAAEC,UAAWD,EAAIh/C,KADxB,EAAQutC,OACsB5jB,OAD9B,EAAsBq1B,GACgBd,WADtC,EAAkCA,WACgB/R,OADlD,EAA8CA,QAGhD,GAAI7K,GAAOojB,SAAS1F,GAAK,CACvB,MAAyDiB,GAASjB,GAAI,GAAtDh/C,EAAhB,EAAQutC,OAAkB5jB,EAA1B,EAAsBq1B,GAAYd,EAAlC,EAAkCA,WAAY/R,EAA9C,EAA8CA,OAC9C,MAAO,CAAE8S,UAAW7mC,GAAO4mC,EAAI,MAAOh/C,OAAM2pB,SAAQu0B,aAAY/R,YAe9D+qB,GAAkB,WAA6C,6DAAP,GAAnClY,EAA0C,EAA1CA,GAAIr1B,EAAsC,EAAtCA,OAAQ3pB,EAA8B,EAA9BA,KAA8B,IAAxB8I,eAAwB,MAAd,GAAc,EACnE,GAAI6gB,GAAU3pB,EAAM,OAAOg3D,GAAiBh3D,EAAM2pB,EAAQ7gB,GAC1D,GAAIk2C,EAAI,OAAOiY,GAAkBjY,GACjC,MAAM,IAAItiC,MAAM,qHAkBLy6C,GAAW1O,KAAQ,CAC9BnpC,KAD8B,WACiB,6DAAJ,GAAnC0/B,EAAuC,EAAvCA,GAAIr1B,EAAmC,EAAnCA,OAAQ3pB,EAA2B,EAA3BA,KAA2B,IAArB8I,eAAqB,MAAX,GAAW,EAK7C,GAJAtP,KAAKsP,QAAUA,EACftP,KAAKgzC,WAAa,GAClB,KAAchzC,KAAM09D,GAAgB,CAAElY,KAAIr1B,SAAQ3pB,OAAM8I,aAEpDtP,KAAKwG,OAASioC,GAAQE,OAAQ,CAChC,MAAkD3uC,KAAKmwB,OAA/C6iB,EAAR,EAAQA,WAAR,IAAoByS,UAAa1R,EAAjC,EAAiCA,OAAQyR,EAAzC,EAAyCA,GACzCxlD,KAAKgzC,WAAaA,EAClBhzC,KAAKmwB,OAASq1B,EACdxlD,KAAKwG,KAAOutC,EACZ/zC,KAAK49D,UAAW,IAGpBC,QAAS,CAQP3Q,WAAY,SAAC1H,GAAD,OAAQmY,GAAS,CAAEnY,QAQ/BsY,QAAS,SAACtY,GAAD,OAAQmY,GAAS,CAAEnY,SAE9B95C,QAAS,CAQPqyD,QARO,WAQ4B,IAA1Bza,EAA0B,uDAAlB,GAAIh0C,EAAc,uDAAJ,GAC7B,GAAqB,WAAjB,GAAOg0C,GAAoB,MAAM,IAAIpgC,MAAM,6BAI/C,OAHAljB,KAAK49D,UAAW,EAChB59D,KAAKgzC,WAAa,GAClB,KAAchzC,KAAMw9D,GAAiBx9D,KAAKwG,KAAN,GAAC,SAAgBxG,KAAKmwB,QAAWmzB,GAAjC,IAAwC+B,IAAK,OAA7C,GAAC,MAAyDrlD,KAAKsP,SAAYA,KACxGtP,MAOTg+D,cApBO,WAqBL,IAAKh+D,KAAK49D,SAAU,MAAM,IAAI16C,MAAM,kDACpC,OAAOljB,KAAKgzC,YAQdirB,aA9BO,SA8BOrgB,GAAW,MAEvB,GADAA,EAAYlW,EAAMkW,GAAa9V,GAAO1sC,KAAKwiD,EAAW,OAASA,IAC1D9V,GAAOojB,SAAStN,IAAgBA,aAAqBC,YAAa,MAAM,IAAI36B,MAAM,qEACvF,KAAcljB,KAAMw9D,GAAiB/uB,GAAQE,OAAQ,CAAE8W,UAAWzlD,KAAK0kD,WAAY1R,WAAY,CAAC,oBAAIhzC,KAAKgzC,YAAV,CAAsB4K,QAErH,MAAkD59C,KAAKmwB,OAA/C6iB,EAAR,EAAQA,WAAR,IAAoByS,UAAa1R,EAAjC,EAAiCA,OAAQyR,EAAzC,EAAyCA,GACzCxlD,KAAKgzC,WAAaA,EAClBhzC,KAAKmwB,OAASq1B,EACdxlD,KAAKwG,KAAOutC,EACZ/zC,KAAK49D,UAAW,GAQlB7Y,gBA/CO,WA+CsB,IAAZzB,EAAY,uDAAJ,GACjBnzB,EAAS,SAAKnwB,KAAKmwB,QAAWmzB,GACpC,OAAOoC,GAAa,EAAG1lD,KAAKwG,KAAM,CAAEw+C,IAAK70B,EAAO60B,IAAK70B,SAAQ80B,IAAK90B,EAAO80B,UAK/E,Y,seCpIA,6HAA0BpM,EAA1B,EAA0BA,SAAU8e,EAApC,EAAoCA,YAAartB,EAAjD,EAAiDA,OAAjD,IAAyDkJ,eAAzD,MAAmE,GAAnE,WAEoCxzC,KAAKqwD,gBAAgB5hB,GAAQG,MAA7B,OAAsCiK,YAAa,SAAnD,IAAsErF,aAF1G,mBAEU6R,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAEH14C,KAAKk+D,WAJtB,sBAKM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CACjCwnC,cACA9e,WACAH,QACAsgB,MACAxlB,YAEFhtC,KAAMioC,GAAQG,QACb6W,WAfT,yCAiBYzlD,KAAK8zD,IAAIqK,UAAU,KAAQ,QAAmB,CACpD7zB,OAAQ,KAASA,GACjBqtB,cACA9e,WACAH,QACAsgB,MACA3T,IAAK,KAASA,GACd7R,aAxBN,0CAIUgS,EAJV,EAIUA,GAJV,kBA2BSA,GA3BT,kD,4DA8BA,qHAAiC4Y,EAAjC,EAAiCA,UAAjC,EAA4CC,aAA5C,SAEoCr+D,KAAKqwD,gBAAgB5hB,GAAQK,aAA7B,IAA6C+J,SAAUulB,GAAc,UAFzG,mBAEU/Y,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CAAEuoB,QAAOsgB,MAAK3T,QACjD7+C,KAAMioC,GAAQK,eACb2W,WAVT,yCAYYzlD,KAAK8zD,IAAIwK,iBAAiB,KAAQ,QAAmB,CAAE5lB,QAAOsgB,MAAK3T,IAAK,KAASA,MAZ7F,0CAKUG,EALV,EAKUA,GALV,kBAcSA,GAdT,kD,4DAiBA,yHAA8B4Y,EAA9B,EAA8BA,UAA9B,EAAyC1+D,KAAzC,EAA+C6+D,SAA/C,IAAyDtZ,WAAzD,MAA+D,EAA/D,WAEoCjlD,KAAKqwD,gBAAgB5hB,GAAQI,UAA7B,OAA0CgK,SAAUulB,GAAc,SAAlE,IAAqFnZ,SAFzH,mBAEUI,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CAAEuoB,QAAOsgB,MAAK3T,MAAKJ,QACtDz+C,KAAMioC,GAAQI,YACb4W,WAVT,yCAYYzlD,KAAK8zD,IAAI0K,cAAc,KAAQ,QAAmB,CAAE9lB,QAAOsgB,MAAK3T,IAAK,KAASA,MAZ1F,0CAKUG,EALV,EAKUA,GALV,kBAcSA,GAdT,kD,4DAiBA,uHAAiC4Y,EAAjC,EAAiCA,UAAjC,EAA4CK,OAAQ9G,EAApD,EAAoDA,YAApD,SAEoC33D,KAAKqwD,gBAAgB5hB,GAAQQ,aAA7B,IAA6C4J,SAAUulB,GAAc,UAFzG,mBAEU/Y,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CAAEwnC,cAAajf,QAAOsgB,MAAK3T,QAC9D7+C,KAAMioC,GAAQQ,eACbwW,WAVT,yCAYYzlD,KAAK8zD,IAAI4K,iBAAiB,KAAQ,QAAmB,CAAE/G,cAAajf,QAAOsgB,MAAK3T,IAAK,KAASA,MAZ1G,0CAKUG,EALV,EAKUA,GALV,kBAcSA,GAdT,kD,4DAiBA,qHAA+B4Y,EAA/B,EAA+BA,UAA/B,EAA0CK,OAA1C,EAAkDE,QAAlD,EAA2D1rB,SAA3D,EAAqE2rB,UAArE,SAEoC5+D,KAAKqwD,gBAAgB5hB,GAAQM,WAA7B,IAA2C8J,SAAUulB,GAAc,UAFvG,mBAEU/Y,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CAAEuoB,QAAOsgB,MAAK3T,QACjD7+C,KAAMioC,GAAQM,aACb0W,WAVT,yCAYYzlD,KAAK8zD,IAAI+K,eAAe,KAAQ,QAAmB,CAAEnmB,QAAOsgB,MAAK3T,IAAK,KAASA,MAZ3F,0CAKUG,EALV,EAKUA,GALV,kBAcSA,GAdT,kD,4DAiBA,qHAA+B4Y,EAA/B,EAA+BA,UAA/B,EAA0CK,OAA1C,SAEoCz+D,KAAKqwD,gBAAgB5hB,GAAQO,WAA7B,IAA2C6J,SAAUulB,GAAc,UAFvG,mBAEU/Y,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CAAEuoB,QAAOsgB,MAAK3T,QACjD7+C,KAAMioC,GAAQO,aACbyW,WAVT,yCAYYzlD,KAAK8zD,IAAIgL,eAAe,KAAQ,QAAmB,CAAEpmB,QAAOsgB,MAAK3T,IAAK,KAASA,MAZ3F,0CAKUG,EALV,EAKUA,GALV,kBAcSA,GAdT,kD,4DAiBA,yHAAmC/M,EAAnC,EAAmCA,QAAnC,EAA4C9jB,KAA5C,EAAkD0d,UAAlD,EAA6DC,WAA7D,EAAyEysB,QAAzE,EAAkFz0B,OAAQ0a,EAA1F,EAA0FA,IAA1F,IAA+FoU,gBAA/F,MAA0GlvB,GAA1G,IAAyH80B,SAEjH1rB,EAAYtzC,KAAKowD,aAAa3hB,GAAQU,eAAgB,SAF9D,SAIoCnvC,KAAKqwD,gBAAgB5hB,GAAQU,eAA7B,OAA+C0J,SAAUJ,GAAY,SAArE,IAAwFnF,YAAW8lB,cAJvI,uBAIU/T,EAJV,EAIUA,IAAK2T,EAJf,EAIeA,IAAKtgB,EAJpB,EAIoBA,MAJpB,kBAMS14C,KAAKk+D,WACR,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CAAEuoB,QAAOsgB,MAAK3T,MAAK/R,YAAW8lB,aACjE5yD,KAAMioC,GAAQU,iBACbsW,UACH0R,WAAY3e,GAAgBC,EAASC,IAErC14C,KAAK8zD,IAAImL,mBAAmB,KAAQ,QAAmB,CAAEvmB,QAAOsgB,MAAK3T,IAAK,KAASA,GAAML,IAAK,KAASA,GAAMoU,WAAU/mB,UAAWiB,EAAUjB,UAAWC,WAAYgB,EAAUhB,eAdnL,iD,4DAiBA,6HAAiC4sB,EAAjC,EAAiCA,SAAjC,EAA2C/H,WAA3C,EAAuD7kB,WAAvD,EAAmEhI,OAAQ0a,EAA3E,EAA2EA,IAA3E,IAAgFoU,gBAAhF,MAA2FlvB,GAA3F,IAA0G80B,SAClG1rB,EAAYtzC,KAAKowD,aAAa3hB,GAAQW,aAAc,SAD5D,SAGoCpvC,KAAKqwD,gBAAgB5hB,GAAQW,aAA7B,OAA6CyJ,SAAUqmB,GAAa,SAApE,IAAuF9F,WAAU9mB,WAAYgB,EAAUhB,cAH3J,mBAGU+S,EAHV,EAGUA,IAAK2T,EAHf,EAGeA,IAAKtgB,EAHpB,EAGoBA,OAGH14C,KAAKk+D,WANtB,sBAOM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CAAEuoB,QAAOsgB,MAAK3T,MAAK/S,WAAYgB,EAAUhB,WAAY8mB,aACxF5yD,KAAMioC,GAAQW,eACbqW,WAXT,yCAaYzlD,KAAK8zD,IAAIqL,iBAAiB,KAAQ,QAAmB,CAC3DzmB,QACAsgB,MACA3T,IAAK,KAASA,GACdL,IAAK,KAASA,GACdoU,WACA9mB,WAAYgB,EAAUhB,cAnB5B,0CAMUkT,EANV,EAMUA,GANV,kBAsBSA,GAtBT,kD,4DAyBA,iIAAmC4Y,EAAnC,EAAmCA,UAAWgB,EAA9C,EAA8CA,YAAaC,EAA3D,EAA2DA,eAAgBC,EAA3E,EAA2EA,SAAUC,EAArF,EAAqFA,UAArF,IAAgGjtB,kBAAhG,MAA6GN,GAAaC,OAA1H,WAGoCjyC,KAAKqwD,gBAAgB5hB,GAAQa,eAA7B,OAA+CuJ,SAAUulB,GAAc,SAAvE,IAA0F9rB,gBAH9H,mBAGU+S,EAHV,EAGUA,IAAK2T,EAHf,EAGeA,IAAKtgB,EAHpB,EAGoBA,OAEH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,CACNiuC,YACAkB,WACAhtB,aACA+S,MACAka,YACA7mB,QACAsgB,MACAoG,cACAC,kBAEF74D,KAAMioC,GAAQa,iBACbmW,WApBT,yCAsBYzlD,KAAK8zD,IAAI0L,mBAAmB,CAClCpB,YACAkB,WACAhtB,aACA+S,IAAK,KAASA,GACdka,YACA7mB,QACAsgB,MACAoG,cACAC,mBA/BN,0CAKU7Z,EALV,EAKUA,GALV,kBAkCSA,GAlCT,kD,4DAqCA,yHAAiC1M,EAAjC,EAAiCA,SAAUomB,EAA3C,EAA2CA,SAAUK,EAArD,EAAqDA,UAArD,SAEoCv/D,KAAKqwD,gBAAgB5hB,GAAQc,aAA7B,IAA6CsJ,SAAUqmB,GAAa,UAFxG,mBAEU7Z,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,CAAE2oB,WAAUuM,MAAKka,YAAW7mB,QAAOsgB,OAC3CxyD,KAAMioC,GAAQc,eACbkW,WAVT,yCAYYzlD,KAAK8zD,IAAI2L,iBAAiB,CAAE3mB,WAAUuM,IAAK,KAASA,GAAMka,YAAW7mB,QAAOsgB,QAZxF,0CAKUxT,EALV,EAKUA,GALV,kBAcSA,GAdT,kD,4DAiBA,+HAAoC1M,EAApC,EAAoCA,SAAU4mB,EAA9C,EAA8CA,YAAahwC,EAA3D,EAA2DA,MAAOiwC,EAAlE,EAAkEA,SAAUL,EAA5E,EAA4EA,SAAUzmB,EAAtF,EAAsFA,SAAtF,SAEoC74C,KAAKqwD,gBAAgB5hB,GAAQe,YAA7B,IAA4CqJ,YAAa,UAF7F,mBAEUwM,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,CAAE2oB,WAAU4mB,cAAahwC,QAAOiwC,WAAUta,MAAKia,WAAUtG,MAAKtgB,QAAOG,YAC7EryC,KAAMioC,GAAQe,cACbiW,WAVT,yCAYYzlD,KAAK8zD,IAAI8L,gBAAgB,CAC/B9mB,WACA4mB,cACAhwC,QACAiwC,WACAta,IAAK,KAASA,GACdia,WACAtG,MACAtgB,QACAG,aArBN,0CAKU2M,EALV,EAKUA,GALV,kBAwBSA,GAxBT,kD,4DA2BA,6HAAkC1M,EAAlC,EAAkCA,SAAUomB,EAA5C,EAA4CA,SAAUQ,EAAtD,EAAsDA,YAAaG,EAAnE,EAAmEA,QAAStM,EAA5E,EAA4EA,SAA5E,SAEoCvzD,KAAKqwD,gBAAgB5hB,GAAQgB,eAA7B,IAA+CoJ,SAAUqmB,GAAa,UAF1G,mBAEU7Z,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM,CACA1Y,GAAImY,GAAS,CACXxtC,OAAQ,CAAE2oB,WAAU4mB,cAAaG,UAAStM,WAAUlO,MAAK2T,MAAKtgB,SAC9DlyC,KAAMioC,GAAQgB,iBACbgW,WAVT,yCAYYzlD,KAAK8zD,IAAIgM,kBAAkB,CAAEhnB,WAAU4mB,cAAaG,UAAStM,WAAUlO,IAAK,KAASA,GAAM2T,MAAKtgB,UAZ5G,0CAKU8M,EALV,EAKUA,GALV,kBAaSA,GAbT,kD,4DAgBA,2HAAqCua,EAArC,EAAqCA,UAAWC,EAAhD,EAAgDA,OAAQxsB,EAAxD,EAAwDA,QAASysB,EAAjE,EAAiEA,IAAjE,SAEoCjgE,KAAKqwD,gBAAgB5hB,GAAQmB,iBAA7B,OAAiDiJ,SAAUmnB,GAAW,SAAtE,IAAyFxsB,aAF7H,mBAEU6R,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM3Y,GAAQ,KAAQ,QAAmB,CACnCwa,YACAC,SACAxsB,UACAysB,MACAjH,MACA3T,MACA3M,UACEjK,GAAQmB,kBAdhB,yCAeY5vC,KAAK8zD,IAAIoM,qBAAqB,KAAQ,QAAmB,CAC/DH,YACAC,SACAxsB,UACAysB,MACAjH,MACA3T,IAAK,KAASA,GACd3M,WAtBN,0CAKU8M,EALV,EAKUA,GALV,kBAyBSA,GAzBT,kD,4DA4BA,2HAAiCua,EAAjC,EAAiCA,UAAWC,EAA5C,EAA4CA,OAAQxsB,EAApD,EAAoDA,QAASysB,EAA7D,EAA6DA,IAA7D,SAEoCjgE,KAAKqwD,gBAAgB5hB,GAAQoB,aAA7B,OAA6CgJ,SAAUmnB,GAAW,SAAlE,IAAqFxsB,aAFzH,mBAEU6R,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM3Y,GAAQ,KAAQ,QAAmB,CACnCwa,YACAC,SACAxsB,UACAysB,MACAjH,MACA3T,MACA3M,UACEjK,GAAQoB,cAdhB,yCAeY7vC,KAAK8zD,IAAIqM,iBAAiB,KAAQ,QAAmB,CAC3DJ,YACAC,SACAxsB,UACAysB,MACAjH,MACA3T,IAAK,KAASA,GACd3M,WAtBN,0CAKU8M,EALV,EAKUA,GALV,kBAyBSA,GAzBT,kD,4DA4BA,2HAAkCua,EAAlC,EAAkCA,UAAWC,EAA7C,EAA6CA,OAAQI,EAArD,EAAqDA,qBAAsBC,EAA3E,EAA2EA,qBAA3E,SAEoCrgE,KAAKqwD,gBAAgB5hB,GAAQuB,cAA7B,IAA8C6I,SAAUmnB,GAAW,UAFvG,mBAEU3a,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM3Y,GAAQ,KAAQ,QAAmB,CACnCwa,YACAC,SACAI,uBACAC,uBACArH,MACA3T,MACA3M,UACEjK,GAAQuB,eAdhB,yCAeYhwC,KAAK8zD,IAAIwM,kBAAkB,KAAQ,QAAmB,CAC5DP,YACAC,SACAI,qBAAsB,KAASA,GAC/BC,qBAAsB,KAASA,GAC/BrH,MACA3T,IAAK,KAASA,GACd3M,WAtBN,0CAKU8M,EALV,EAKUA,GALV,kBAyBSA,GAzBT,kD,4DA4BA,yHAAwCua,EAAxC,EAAwCA,UAAWC,EAAnD,EAAmDA,OAAQxsB,EAA3D,EAA2DA,QAA3D,SAEoCxzC,KAAKqwD,gBAAgB5hB,GAAQ0B,oBAA7B,OAAoD0I,SAAUmnB,GAAW,SAAzE,IAA4FxsB,aAFhI,mBAEU6R,EAFV,EAEUA,IAAK2T,EAFf,EAEeA,IAAKtgB,EAFpB,EAEoBA,OAGH14C,KAAKk+D,WALtB,sBAMM3Y,GAAQ,KAAQ,QAAmB,CACnCwa,YACAC,SACAxsB,UACAwlB,MACA3T,MACA3M,UACEjK,GAAQ0B,qBAbhB,yCAcYnwC,KAAK8zD,IAAIyM,wBAAwB,KAAQ,QAAmB,CAClER,YACAC,SACAxsB,UACAwlB,MACA3T,IAAK,KAASA,GACd3M,WApBN,0CAKU8M,EALV,EAKUA,GALV,kBAuBSA,GAvBT,kD,4DA0BA,uHAA6B/M,EAA7B,EAA6BA,QAA7B,EAAsC9jB,KAAtC,EAA4C0d,UAA5C,EAAuDC,WAAvD,EAAmE8kB,QAAnE,EAA4EpS,IAA5E,IAAiFoU,gBAAjF,MAA4FlvB,GAA5F,IAA2G80B,SAEnG1rB,EAAYtzC,KAAKowD,aAAa3hB,GAAQU,eAAgB,SAF9D,SAIoCnvC,KAAKqwD,gBAAgB5hB,GAAQ2C,SAA7B,OAAyCyH,SAAUJ,GAAY,SAA/D,IAAkFnF,YAAW8lB,cAJjI,uBAIU/T,EAJV,EAIUA,IAAK2T,EAJf,EAIeA,IAAKtgB,EAJpB,EAIoBA,MAJpB,kBAMS,CACL8M,GAAImY,GAAS,CACXxtC,OAAQ,KAAQ,QAAmB,CAAEuoB,QAAOsgB,MAAK3T,MAAK/R,YAAW8lB,aACjE5yD,KAAMioC,GAAQ2C,WACbqU,UACH0R,WAAY3e,GAAgBC,EAASC,KAXzC,iD,4DAeA,yGAA8B8M,EAA9B,EAA8BA,GAAIwS,EAAlC,EAAkCA,QAAYvmD,EAA9C,SACQ0e,EAAS,CAAEq1B,GAAIiB,GAASjB,GAAKwS,WADrC,SAE+Bh4D,KAAKqwD,gBAAgB5hB,GAAQ6C,UAA7B,YACxBnhB,GAAW1e,GADa,IACPonC,SAAUmf,KAHlC,uBAEU3S,EAFV,EAEUA,IAAK3M,EAFf,EAEeA,MAFf,kBAKS6M,GAAQ,YAAKp1B,GAAW1e,GAAjB,IAAuB4zC,MAAK3M,UAASjK,GAAQ6C,WAAWkU,IALxE,iD,+BAuCegb,K,sEAAf,0GAA6BxH,EAA7B,+BAAmCtvB,GAAQ+2B,IAA3C,iCACc,IAARzH,EADN,yCACwB,GADxB,YAEMA,EAAM,GAFZ,sBAEqB,IAAI91C,MAAM,8BAF/B,WAIMu9C,EAJN,iCAK6BzgE,KAAK8zD,IAAI2B,qBALtC,uBAKY9E,EALZ,EAKYA,OALZ,mBAMaA,EAAUqI,GANvB,iCAQSA,GART,kD,4DAkBA,WAAgCoF,EAAW1lB,GAA3C,8EACMA,EADN,yCACoBA,GADpB,uBAEwC14C,KAAK8zD,IAAIyF,mBAAmB6E,GAA5B,OAA6C,iBAAO,CAAE1lB,MAAO,MAFrG,uBAEiBgoB,EAFjB,EAEUhoB,MAFV,kBAGSgoB,EAAe,GAHxB,iD,4DAaA,WAAgC3sB,EAAhC,gHAA0C8E,EAA1C,EAA0CA,SAAiBz5B,EAA3D,EAAoDs5B,MAAe94B,EAAnE,EAA8Do5C,IAAa75D,EAA3E,EAAsEkmD,IAAQL,EAA9E,EAA8EA,IAAK2b,EAAnF,EAAmFA,YAAa1b,EAAhG,EAAgGA,IAAhG,SACwBjlD,KAAKoxD,WAAWvY,GAAhB,OAAgC,SAAAlxB,GAAC,MAAK,CAAE+wB,MAAO,MADvE,cACQhK,EADR,OAIItvB,EADEsvB,EAAQyoB,WACN,EAEA/3C,GAAMsvB,EAAQgK,MAAQ,EAN9B,SAQoB8nB,GAAal/D,KAAKtB,KAAM4f,GAAI+gD,GARhD,cAQQ3H,EARR,OASQ3T,EAAMK,GAAavmD,EAAG40C,EAAQ,CAAE4R,YAAa3lD,KAAK2lD,YAAaX,MAAK70B,OAAQ,KAAQ,QAAmB,CAAEuoB,MAAOt5B,EAAG45C,QAAQ/T,QATnI,kBAUS,CAAEI,MAAK2T,MAAKtgB,MAAOt5B,IAV5B,kD,sBAoEA,SAlCoBwhD,WAAkB1I,GAAI,CACxCpyC,KADwC,YACU,QAA1Co4C,kBAA0C,aAAvBvY,mBAAuB,SAChD3lD,KAAKk+D,WAAaA,EAClBl+D,KAAK2lD,YAAcA,GAErBrC,MAAO,CACL4a,YAAY,EACZvY,aAAa,GAEfj6C,QAAS,CACPwjD,Q,6CACAC,e,6CACAC,Y,6CACAC,e,6CACAC,a,6CACAC,a,6CACAC,iB,6CACAC,e,6CACAY,gB,+CACAX,iB,6CACAC,e,6CACAC,kB,6CACAC,gB,6CACAE,mB,6CACAC,e,6CACAC,gB,6CACAC,sB,6CACAC,W,6CACA8H,Y,6CACAnI,gB,+CACAM,aAvHJ,SAAuBrc,GAAwC,iEAAJ,GAA1B1B,EAA8B,EAA9BA,UAAWC,EAAmB,EAAnBA,WAC1C,EAAqCtyC,KAAK02D,cAAlCF,EAAR,EAAQA,yBACFqK,EAAoBzuB,GAAgBokB,GAC1C,IAAKqK,EAAmB,MAAM,IAAI39C,MAAM,4CACxC,IAAM49C,EAAgBD,EAAkB9sB,GACxC,IAAK+sB,EAAe,MAAM,IAAI59C,MAAM,yBAEpC,IAAMowB,EAAY,CAChBhB,WAAYA,GAAcwuB,EAAcxuB,WAAW,GACnDD,UAAWA,GAAayuB,EAAczuB,UAAU,IAElD,GAAIyuB,EAAczuB,UAAUpyC,SAAW,KAAWqzC,EAAUjB,UAAWyuB,EAAczuB,WAAY,MAAM,IAAInvB,MAAJ,2BAAwBowB,EAAUjB,UAAlC,sDAAwFyuB,EAAczuB,UAAtG,MACvG,GAAIyuB,EAAcxuB,WAAWryC,SAAW,KAAWqzC,EAAUhB,WAAYwuB,EAAcxuB,YAAa,MAAM,IAAIpvB,MAAJ,4BAAyBowB,EAAUhB,WAAnC,sDAA0FwuB,EAAcxuB,WAAxG,MAE1G,OAAOgB,M,iEC7ZHytB,GAAU,IAAI,MAapB,SAAe5I,WAAoB,CACjCryC,KADiC,YACR,MAAjBk7C,EAAiB,EAAjBA,QAASC,EAAQ,EAARA,KAEf,GADAjhE,KAAKkhE,OAASD,EACVA,EAAJ,CACE,IAAKzlB,GAAeylB,GAAO,MAAM,IAAI/9C,MAAM,sBAC3C69C,GAAQ/6D,IAAIhG,KAAM,CAAEu7C,UAAW0lB,QAFjC,CAMA,IAAKD,GAA8B,WAAnB,GAAOA,GAAsB,MAAM,IAAI99C,MAAM,6BAC7D,IAAK89C,EAAQjkB,YAAcikB,EAAQzlB,UAAW,MAAM,IAAIr4B,MAAM,8DAC9D,GAAiC,iBAAtB89C,EAAQzlB,YAAgE,IAAtC,MAAAylB,EAAQzlB,WAAR,OAA0B,OAAe,MAAM,IAAIr4B,MAAM,yDACtG,IACG4kB,GAAOojB,SAAS8V,EAAQjkB,YACK,iBAAtBikB,EAAQjkB,YAA2BrV,EAAMs5B,EAAQjkB,WACzD,MAAM,IAAI75B,MAAM,2CAElB,IAAMi+C,EAAYr5B,GAAO1sC,KAAKu9C,GAAOqoB,EAAQzlB,UAAW,OACxD,IAAK6C,GAAetW,GAAO1sC,KAAK4lE,EAAQjkB,UAAW,OAAQokB,GAAY,MAAM,IAAIj+C,MAAM,oBAEvF69C,GAAQ/6D,IAAIhG,KAAM,CAChB+8C,UAAWjV,GAAOojB,SAAS8V,EAAQjkB,WAAaikB,EAAQjkB,UAAYjV,GAAO1sC,KAAK4lE,EAAQjkB,UAAW,OACnGxB,UAAWylB,EAAQzlB,cAGvB+H,MAAO,CAAE4d,MAAM,GACfx1D,QAAS,CACP+xC,KADO,SACDr2C,GACJ,GAAIpH,KAAKkhE,KAAM,MAAM,IAAIh+C,MAAM,gEAC/B,OAAO,aAAgBu6B,GAAKr2C,EAAM25D,GAAQx5D,IAAIvH,MAAM+8C,aAEtDppB,QALO,WAML,OAAO,aAAgBotC,GAAQx5D,IAAIvH,MAAMu7C,eCxB/C,GAAe4c,WAAoB1G,GAAW,CACtC3rC,KADsC,YACJ,gIAA1By2C,gBAA0B,MAAf,GAAe,EAAX5oC,EAAW,EAAXA,SAEvB,KAAc4oC,KAAaA,EAASt8D,OAFF,2CAGF,SAAY,KAAAs8D,GAAQ,KAARA,EAAQ,+BAAK,WAAMjzD,GAAN,kFAAkBA,EAAEqqB,UAApB,+BAA+BrqB,EAA/B,0EAAL,wDAHlB,mBAGpC,EAAKizD,UAH+B,cAI/B5oC,IAASA,EAAU,KAAY,EAAK4oC,UAAU,IACnD5jB,GAAOhlB,EAAS,MAChB,EAAKytC,gBAAkBztC,EANa,wBAQpCthB,QAAQuzC,KAAK,gCARuB,+CAWxCtC,MAAO,CACLiZ,SAAU,IAEZjM,UAAW,CACT8Q,gBAAiB,MAEnB11D,QAAS,CACDioB,QADC,WACmD,6KAAJ,GAAI,IAAzC0tC,iBAAyC,MAA7B,EAAKD,gBAAwB,oBACjD,EAAKE,gBAAgBD,GAAW1tC,WADiB,8CAGpD8pB,KAJC,SAIKr2C,GAAiD,6KAAJ,GAAI,IAAzCi6D,iBAAyC,MAA7B,EAAKD,gBAAwB,oBACpD,EAAKE,gBAAgBD,GAAW5jB,KAAKr2C,IADe,8CAW7Dm6D,UAfO,WAgBL,OAAO,KAAYvhE,KAAKu8D,WAcpBiF,WA9BC,SA8BW9yB,GAA0B,6KAAJ,GAAXorB,EAAe,EAAfA,OAAe,SACpBprB,EAAQ/a,UADY,OACpCA,EADoC,OAE1C,EAAK4oC,SAAS5oC,GAAW+a,EACrBorB,GAAQ,EAAK2H,cAAc9tC,GAHW,8CAc5C+tC,cA5CO,SA4CQ/tC,GACR3zB,KAAKu8D,SAAS5oC,WAIZ3zB,KAAKu8D,SAAS5oC,GACjB3zB,KAAKohE,kBAAoBztC,IAAS3zB,KAAKohE,gBAAkB,OAJ3D/uD,QAAQuzC,KAAR,qCAA2CjyB,EAA3C,oBAcJ8tC,cA5DO,SA4DQ9tC,GAEb,GADAglB,GAAOhlB,EAAS,OACX3zB,KAAKu8D,SAAS5oC,GAAU,MAAM,IAAIzQ,MAAJ,sBAAyByQ,EAAzB,mBACnC3zB,KAAKohE,gBAAkBztC,GAQzB2tC,gBAvEO,SAuEU5yB,GAAS,MACxB,UAAeA,IACb,IAAK,SAEH,GADAiK,GAAOjK,EAAS,OACX1uC,KAAKu8D,SAAS7tB,GAAU,MAAM,IAAIxrB,MAAJ,sBAAyBwrB,EAAzB,mBACnC,OAAO1uC,KAAKu8D,SAAS7tB,GACvB,IAAK,SACH,OAAOioB,GAAcjoB,GAAWA,EAAUizB,GAAc,CAAEX,QAAStyB,IACrE,QACE,MAAM,IAAIxrB,MAAJ,yCAA0CwrB,GAA1C,uBAA+DA,EAA/D,W,weCrFhB,WAAuBhvC,GAAvB,+FAA6B4P,EAA7B,+BAAuC,GACrC6pC,GAAgBz5C,GACVqhD,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GAFxC,KAI6BtP,KAJ7B,eAIuD+gD,EAJvD,KAKY7H,GAAcx5C,GAL1B,SAMqBM,KAAK2zB,QAAQotB,GANlC,gCAKI0d,OALJ,KAMIL,UANJ,8CAIkC7O,aAJlC,+BAIQA,EAJR,yBASSvvD,KAAKisD,KAAKsD,EAAcxO,IATjC,kD,4DAwCA,WAAuBrhD,GAAvB,iGAA6BuzC,EAA7B,+BAAwC,GAAI3jC,EAA5C,+BAAsD,CAAEsyD,gBAAgB,GACtEzoB,GAAgBz5C,GACVqhD,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GACjCkrC,GAAiBvH,GAHxB,sBAGyC,IAAI/vB,MAAM,0BAHnD,mDAMO5T,EAAQsyD,eANf,kCAMuC5hE,KAAKi9D,QAAQv9D,GANpD,oBAM2DuzC,SAN3D,6BAMsE,GANtE,qDAOO,KAAAA,GAAQ,KAARA,GAAa,SAAA9R,GAAC,OAAI,KAAY,CAAC,CAAC,KAAMA,GAAI,CAAC,MAAOkZ,GAASlZ,UAPlE,2CAKE8R,GALF,sBAQW,SAAC9X,EAAKv5B,GAAN,iCAAiB,KAAAu5B,GAAG,KAAHA,GAAW,SAAAgG,GAAC,OAAIA,EAAE9iC,MAAQuD,EAAGvD,QAA9C,CAAoDuD,MAAK,IARpE,KAS6B5B,KAT7B,iBASuD+gD,EATvD,MAUY7H,GAAcx5C,GAV1B,UAWqBM,KAAK2zB,QAAQotB,GAXlC,kCAYI9N,EAZJ,OAUIwrB,OAVJ,MAWIL,UAXJ,MAYInrB,SAZJ,mDASkCqc,aATlC,gCASQA,EATR,yBAeStvD,KAAKisD,KAAKqD,EAAcvO,IAfjC,kD,4DA0CA,WAAyBrhD,EAAMgvC,GAA/B,+FAAwCp/B,EAAxC,+BAAkD,GAChD6pC,GAAgBz5C,GACVqhD,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GAFxC,KAI+BtP,KAJ/B,eAI2D+gD,EAJ3D,KAKY7H,GAAcx5C,GAL1B,SAMqBM,KAAK2zB,QAAQotB,GANlC,+BAOiBrS,EAPjB,MAKI+vB,OALJ,KAMIL,UANJ,KAOIzG,YAPJ,8CAIoCtI,eAJpC,+BAIQA,EAJR,yBAUSrvD,KAAKisD,KAAKoD,EAAgBtO,IAVnC,kD,4DAmCA,WAAsBrhD,GAAtB,oGAA4BqhD,EAA5B,+BAAkC,GAChC5H,GAAgBz5C,GADlB,SAEkBM,KAAKi9D,QAAQv9D,GAF/B,cAEQ2nC,EAFR,yBAIS,KAAc,KAAcA,EAAG,CACpC4L,SAAU5L,EAAE4L,UAAY,GACxB6I,OAAQ,WAAF,oBAAE,0GAAO7I,EAAP,+BAAkB,GAAI3jC,EAAtB,+BAAgC,GAAhC,iCAEM,EAAKuyD,WAAWniE,EAAMuzC,EAAU,KAAQ8N,EAAKzxC,IAFnD,6DAGM,EAAKwyD,UAAUpiE,GAHrB,8GAAF,kDAAE,GAMRqiE,SAAU,WAAF,oBAAE,WAAOrzB,GAAP,2FAAgBp/B,EAAhB,+BAA0B,GAA1B,iCAEI,EAAK0yD,aAAatiE,EAAMgvC,EAAS,KAAQqS,EAAKzxC,IAFlD,6DAGI,EAAKwyD,UAAUpiE,GAHnB,8GAAF,mDAAE,GAMVuiE,OAAQ,WAAF,oBAAE,wGAAO3yD,EAAP,+BAAiB,GAAjB,kBAAwB,EAAK4yD,WAAWxiE,EAAM,KAAQqhD,EAAKzxC,KAA3D,2CAAF,kDAAE,GACR6yD,UAAW,WAAF,oBAAE,wGAAOxD,EAAP,+BAAiBp0B,GAAUj7B,EAA3B,+BAAqC,GACzCqvD,GAA8B,iBAAZA,KAAwBA,EAAUp0B,IADhD,sBACgE,IAAIrnB,MAAM,qDAD1E,+CAIG,EAAK2+C,WAAWniE,EAAM,OAAA2nC,EAAE4L,UAAF,QAAe,SAAA9R,GAAC,OAAIA,EAAEj5B,MAA5C,SAAsD,KAAQ64C,EAAKzxC,IAAnE,IAA6EqvD,aAJhF,6DAKG,EAAKmD,UAAUpiE,GALlB,8GAAF,kDAAE,OAnBf,iD,4DAqDA,WAAsBA,EAAM44C,EAAMhpC,GAAlC,qFACE6pC,GAAgBz5C,GACVqhD,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GAEhC8yD,EAAa3nB,GAAkB/6C,GACjCqhD,EAAIkY,UAAYj5D,KAAKuwD,GAAGC,SAASyI,UAAWmJ,EAAWtK,GAAG/W,EAAIkY,SALpE,sBAMU,IAAI/1C,MAAJ,iCAA8B69B,EAAIkY,QAAlC,2DAA2FmJ,IANrG,cAQErhB,EAAIkY,QAAUlY,EAAIkY,UAAYj5D,KAAKuwD,GAAGC,SAASyI,QAAUlY,EAAIkY,QAAUmJ,EARzE,KASwBpiE,KATxB,eASiD+gD,EATjD,UAUqB/gD,KAAK2zB,QAAQotB,GAVlC,gCAWczI,EAXd,KAYU15B,GAAOlf,EAAM,MAZvB,MAUI0+D,UAVJ,KAWIG,SAXJ,KAYI7+D,KAZJ,8CAS6B0vD,YAT7B,+BASQiT,EATR,iBAeuBriE,KAAKisD,KAAKoW,EAASthB,GAf1C,WAeQjgD,EAfR,OAgBOk6C,GAAct7C,GAhBrB,qBAiBsBqhD,EAAI0P,UAjB1B,kCAiB4CzwD,KAAK8hE,UAAUpiE,EAAMqhD,GAjBjE,iDAiBwE,GAjBxE,eAiBUuhB,EAjBV,uBAkBW,KAAcxhE,EAAQwhE,IAlBjC,0CAoBcxhE,GApBd,IAoBsBm4D,QAASlY,EAAIkY,WApBnC,kD,4DAiDA,WAAyBv5D,GAAzB,8GAA+B4P,EAA/B,+BAAyC,GACvC6pC,GAAgBz5C,GACVqhD,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GAChCizD,EAAQjqB,KAHhB,SAIuBt4C,KAAK2wD,SAJ5B,cAIQA,EAJR,OAKQ0N,EAAejlB,GAAe15C,EAAM6iE,GAL5C,KAO2BviE,KAP3B,eAOuD+gD,EAPvD,UAQqB/gD,KAAK2zB,QAAQotB,GARlC,gCASIsd,EATJ,MAQID,UARJ,KASIC,aATJ,8CAOgClP,eAPhC,+BAOQqT,EAPR,iBAYuBxiE,KAAKisD,KAAKuW,EAAYzhB,GAZ7C,eAYQjgD,EAZR,yBAcS,cACFA,GADE,IAEL6vD,SACA8R,MAAO,SAAAnzD,GAAO,OAAI,EAAKozD,UAAUhjE,EAAM6iE,EAArB,SAAiCjzD,GAAjC,IAA0C+xD,UAAWtgB,EAAIsgB,cAC3E/oB,KAAMiqB,EACNlE,mBAnBJ,kD,4DA4CA,WAAoB3+D,GAApB,6FAA0Bu5D,EAA1B,+BAAoCtuB,GAAUr7B,EAA9C,+BAAwD,GAAxD,kBACStP,KAAK0iE,UAAUhjE,EAAM,EAArB,SAA6B4P,GAA7B,IAAsC2pD,UAAShU,IAAK,MAD7D,iD,sBAoCA,SArBasL,WAAW,CACtB7kD,QAAS,CACPo2D,U,6CACAa,a,6CACAD,U,iDACAb,W,6CACAG,a,+CACAE,W,6CACAU,Q,8CAEFtS,UAAW,CACTC,GAAI,CACFC,SAAU,CACRoO,UAAWl0B,GACXi0B,QAASp0B,GACT0uB,QAAStuB,QCtMjB,GAvHqBskB,MAAQh/B,eAAS,CACpCvkB,QAAS,CACPm3D,0BAA2B5yC,YAC3B6yC,mBAAoB7yC,YACpB8yC,eAAgB9yC,YAChB+yC,eAAgB/yC,YAChBgzC,mBAAoBhzC,YACpBizC,4BAA6BjzC,YAC7BkzC,oBAAqBlzC,YACrBmzC,iBAAkBnzC,YAClBozC,2BAA4BpzC,gBCNhC,GAAewhC,WAAkB6R,GAAc,CACvCx9C,KADuC,YACD,0HAA9By9C,EAA8B,EAA9BA,YAAa3N,EAAiB,EAAjBA,cACpB2N,EADqC,iEAEpC,EAAKP,eAAeO,EAAa,CAAE3N,kBAFC,8CAI5ClqD,QAAS,CACDs3D,eADC,SACeO,GAA6C,6KAAJ,GAAI,IAA9B3N,qBAA8B,SAC5D2N,EAD4D,sBACzC,IAAIrgD,MAAM,0BAD+B,cAEjEqgD,EAAcA,EAAYjvD,QAAQ,MAAO,IAFwB,SAG5CuhD,GAAiB,GAAD,OAAI0N,EAAJ,QAAuB,CAC1DvQ,mBAAmB,EACnBC,uBAAuB,IALwC,UAG3D6C,EAH2D,OAOjE,EAAK0N,gBAAkB1N,EAAOhD,KAAKpuB,KAAK71B,QACxC,EAAK40D,aAAe3N,EAAOhC,IAE3B,EAAK4P,aAAe3N,GAAgB,EAAKyN,gBAAiBG,GAAuBC,KAC7EhO,EAX6D,sDAY5DG,GAAgB,EAAKyN,gBAAiBK,GAAqBD,IAZC,uBAazD,IAAI1gD,MAAM,uCAAgC,EAAKsgD,gBAArC,oCACGK,GADH,eAC4BD,KAdmB,+CAiBnEE,qBAlBO,WAmBL,IAAK9jE,KAAKyjE,aAAc,MAAM,IAAIvgD,MAAM,0BAE1C6gD,wBArBO,WAqB4C,6DAAJ,GAAI,IAAxBC,kBAAwB,MAAX,GAAW,EACjD,MAAO,CAAEC,YAAaD,IAExBf,mBAxBO,WA0BL,OADAjjE,KAAK8jE,uBACE,aAAgB9jE,KAAKwjE,kBAExBX,0BA5BC,SA4B0BtzD,EAAQ7P,GAA0B,8IAApB+R,EAAoB,+BAAb,GAAInC,EAAS,uBACjE,EAAKw0D,uBAD4D,SAEtC,EAAKL,aAAaS,eAAe,CAC1D30D,SACA40D,SAAUzkE,EACVhC,UAAW+T,EACXnC,QAAS,EAAKy0D,wBAAwBz0D,KANyB,uBAEzD80D,EAFyD,EAEzDA,SAFyD,kBAQ1DA,GAR0D,8CAU7DtB,mBAtCC,SAsCmBnuC,EAAMrlB,GAAS,8HACvC,EAAKw0D,uBADkC,SAEZ,EAAKL,aAAaY,gBAAgB,CAC3D1vC,OACArlB,QAAS,EAAKy0D,wBAAwBz0D,KAJD,uBAE/B88C,EAF+B,EAE/BA,SAF+B,kBAMhCA,GANgC,8CAQzC2W,eA9CO,SA8CSpuC,EAAMrlB,GAEpB,OADAtP,KAAK8jE,uBACE9jE,KAAKyjE,aAAaa,YAAY,CAAE3vC,OAAMrlB,QAAStP,KAAK+jE,wBAAwBz0D,MAErFi1D,gCAlDO,SAkD0BnY,EAAUgY,GAEzC,OADApkE,KAAK8jE,uBACE9jE,KAAKyjE,aAAae,uBAAuB,CAAEpY,WAAUgY,cAE9DK,kCAtDO,SAsD4Bl1D,EAAQnL,EAAI46D,EAAU1vD,GAEvD,OADAtP,KAAK8jE,uBACE9jE,KAAKyjE,aAAaiB,qBAAqB,CAC5CP,SAAU//D,EACVmL,SACA60D,SAAUpF,EACV1vD,QAAStP,KAAK+jE,wBAAwBz0D,MAG1C4zD,4BA/DO,SA+DsB3zD,EAAQnL,EAAIugE,EAAWC,EAAYt1D,GAE9D,OADAtP,KAAK8jE,uBACE9jE,KAAKyjE,aAAajX,iBAAiB,CACxC2X,SAAU//D,EACVmL,SACA,cAAeq1D,EACf,aAAcD,EACdr1D,QAAStP,KAAK+jE,wBAAwBz0D,MAGpC6zD,oBAzEC,SAyEoB/W,EAAU78C,EAAQD,GAAS,4HACpD,EAAKw0D,uBAD+C,SAElC,EAAKL,aAAaoB,iBAAiB,CACnDzY,WACA78C,SACAD,QAAS,EAAKy0D,wBAAwBz0D,KALY,cAE9CoxC,EAF8C,yBAO9B,WAAf,GAAOA,IAA0BA,GAPY,8CAStD0iB,iBAlFO,SAkFWhX,EAAU98C,GAE1B,OADAtP,KAAK8jE,uBACE9jE,KAAKyjE,aAAaqB,qBAAqB,CAAE1Y,WAAU98C,QAAStP,KAAK+jE,wBAAwBz0D,MAElG+zD,2BAtFO,SAsFqBjX,EAAU98C,GAEpC,OADAtP,KAAK8jE,uBACE9jE,KAAKyjE,aAAaR,mBAAmB,CAC1C7W,WACA98C,QAAStP,KAAK+jE,wBAAwBz0D,OAI5Cg0C,MAAO,CACLkgB,gBAAiB,QAIrB,IAAMK,GAAsB,QACtBF,GAAwB,QACxBC,GAAsB,Q,0fC/Fb,WAAoCr0D,GAApC,gJAAoH,GAAtEq6C,EAA9C,EAA8CA,IAAKmb,EAAnD,EAAmDA,gBAAnD,IAAoEf,kBAApE,MAAiF,GAAjF,MAAqFgB,sBAArF,SAA4GjkB,EAA5G,EAA4GA,IAA5G,KACP6I,EADO,qCACM5pD,KAAK+iE,eAAexzD,EAAQ,CAAEy0D,eADpC,6BACbpa,EADa,MAETmb,EAFS,kCAEgC/kE,KAAK03D,YAAYqN,EAAiB,KAAM,CAAE/H,eAAe,IAFzF,QAEQ+H,EAFR,kBAGPE,EAHO,SAIRjlE,KAAKuwD,GAAGC,UAJA,IAKX0U,iBAAiB,EACjBrb,sBAAsB,EACtBmC,YAAY,EACZgY,eAEIvgB,EAAW,CACf0hB,UAAW,KAAY,KAAM,KAAO,YAAavb,IACjDA,IAAK,KAAY,KAAM,KAAO,CAAC,cAAe,YAAaA,IAC3DsC,YAAatC,EAAIwb,qBAAuB,OAAAxb,EAAIwb,sBAAJ,QAA6B,SAAA97D,GAAC,OAAIA,EAAE4lC,UAAY5lC,EAAEwI,aAAa,GACvGvC,SACA81D,SAAU,KACVC,WAAY,CAAE3xC,QAASoxC,GACvBz1D,QAAS,KAAQ21D,EAAgBlkB,GACjCyiB,gBAAiBxjE,KAAKwjE,gBACtB+B,WATe,SASHxkB,GACV/gD,KAAKsP,QAAU,KAAQtP,KAAKsP,QAASyxC,MAKrCgkB,EAzBS,kCA0BY/kE,KAAK68D,YAAYkI,GAAjB,OAAwC,SAAAp9C,GAAC,OAAI,QA1BzD,YA0BLunB,EA1BK,SA2BOA,EAASs2B,OA3BhB,uBA2B8B,IAAItiD,MAAJ,gCAAmC6hD,EAAnC,sCA3B9B,WA4BNC,EA5BM,kCA6BqBhlE,KAAKu9D,oBAAoBwH,GA7B9C,eA6BHU,EA7BG,OA6BgErZ,SA7BhE,UA8B6BpsD,KAAKmjE,oBAAoBsC,EAAgBhiB,EAASl0C,OAAQk0C,EAASn0C,SAAnE,OAAkF,SAAAqY,GAAC,OAAI,KA9BpH,yCA+B2B,IAAIzE,MAAM,oFA/BrC,eAyCbugC,EAASiiB,QAAUA,GAAQ,CAAE5P,OAAQ91D,KAAMyjD,aAU3CA,EAASsI,OAASA,GAAO,CAAE+J,OAAQ91D,KAAMyjD,aAazCA,EAASniD,KAAOA,GAAK,CAAEw0D,OAAQ91D,KAAMyjD,aASrCA,EAASkE,aAAege,GAAY,CAAEliB,aAUtCA,EAAS/3C,QAAUigD,GAAqBlI,EAArBkI,GAnFN,kBAoFNlI,GApFM,kD,sBAuFf,IAAMkiB,GAAc,SAAC,GAAD,IAAGliB,EAAH,EAAGA,SAAH,OAAkB,SAACr/C,EAAIwjD,GACzC,OAAOD,GAAaC,EAAQ4D,GAAe/H,EAASmG,IAAKxlD,EAAI,CAAEqnD,SAAUhI,EAASyI,iBAG9E5qD,GAAO,SAAC,GAAD,IAAGw0D,EAAH,EAAGA,OAAQrS,EAAX,EAAWA,SAAX,sCAA0B,WAAOr/C,GAAP,mGAAW+rB,EAAX,+BAAoB,GAAI7gB,EAAxB,+BAAkC,GACjEyxC,EAD+B,SACpB0C,EAASn0C,SAAYA,GAChCg9C,EAAQd,GAAe/H,EAASmG,IAAKxlD,EAAI,CAAEqnD,SAAUhI,EAASyI,cAC9D38C,EAASwxC,EAAIxxC,QAAUk0C,EAASl0C,OAEjCnL,EALgC,sBAKtB,IAAI8e,MAAM,6BALY,UAMhCugC,EAAS6hB,WAAW3xC,QANY,sBAMG,IAAIzQ,MAAM,+CANb,WAQnC+kB,IAAU8Y,EAAIzW,QAAQwtB,GAAG,KACxBh6D,OAAOrB,UAAU0V,eAAe7Q,KAAKgrD,EAAO,YAAeA,EAAMsZ,QAT/B,uBAU7B,IAAI1iD,MAAJ,gCAA6B69B,EAAIzW,OAAjC,2BAAyDlmC,EAAzD,oEAV6B,WAW3B28C,EAAImkB,gBAXuB,kCAWCW,GAAYvZ,EAAOn8B,GAXpB,iDAW8BA,EAX9B,WAWrCA,EAXqC,MAYtB4wB,EAAIiL,WAZkB,kCAa3B8J,EAAOgQ,mBAAmBv2D,EAAQk0C,EAAS6hB,WAAW3xC,QAASvvB,EAAI+rB,EAAQ4wB,GAbhD,6DAc3B+U,EAAO1mB,aAAa7/B,EAAQk0C,EAAS6hB,WAAW3xC,QAASvvB,EAAI+rB,EAAQ4wB,GAd1C,+BAY/BjgD,EAZ+B,wBAgBhCA,IACAigD,EAAI0P,UAjB4B,kCAiBVjE,GAAiB1rD,EAAQwrD,EAAOvL,GAjBtB,iDAiB6B,GAjB7B,4GAA1B,uDAqBPgL,GAAS,SAAC,GAAD,IAAG+J,EAAH,EAAGA,OAAQrS,EAAX,EAAWA,SAAX,qBAA0B,0HAAO39B,EAAP,+BAAc,GAAIxW,EAAlB,+BAA4B,GAC7DyxC,EADiC,SACtB0C,EAASn0C,SAAYA,GAChCg9C,EAAQd,GAAe/H,EAASmG,IAAK,OAAQ,CAAE6B,SAAUhI,EAASyI,cAClE38C,EAASwxC,EAAIxxC,QAAUk0C,EAASl0C,OAEjCk0C,EAAS4hB,SALyB,gCAKT5hB,EAASiiB,QAAQ3kB,GALR,UAM/BA,EAAImkB,gBAN2B,kCAMHW,GAAYvZ,EAAOxmC,GANhB,iDAMwBA,EANxB,WAMvCA,EANuC,MAQnCi7B,EAAIiL,WAR+B,0CAS9B8J,EAAOgQ,mBAAmBv2D,EAAQ,KAAM,OAAQuW,EAAhD,SACFi7B,GADE,IAELqL,SAAU3I,EAAS4hB,aAXgB,yBAcmCvP,EAAOiQ,eAAetiB,EAAS4hB,SAAUtkB,EAAIxxC,QAAUk0C,EAASl0C,OAAQuW,EAAMi7B,GAdjH,wBAc7BtE,EAd6B,EAc7BA,MAAOsb,EAdsB,EActBA,YAAapkC,EAdS,EAcTA,QAASqyC,EAdA,EAcAA,UAAWllE,EAdX,EAcWA,OAAQymD,EAdnB,EAcmBA,MACxD9D,EAAS6hB,WAAa,CAAE7oB,QAAOsb,cAAapkC,UAASqyC,YAAWllE,SAAQymD,SAfnC,kBAgB9B9D,EAAS6hB,YAhBqB,6CAoBnCI,GAAU,SAAC,GAAD,IAAG5P,EAAH,EAAGA,OAAQrS,EAAX,EAAWA,SAAX,qBAA0B,4GAAOn0C,EAAP,+BAAiB,GAAjB,SACbwmD,EAAOmQ,gBAAgBxiB,EAASl0C,OAAhC,SAA6Ck0C,EAASn0C,SAAYA,IADrD,uBAChC88C,EADgC,EAChCA,SACR3I,EAAS4hB,SAAWjZ,EAFoB,kBAGjC3I,EAAS4hB,UAHwB,4C,+eCpJ1C,WAAgC7f,EAAIj2C,EAAQ7P,EAAM4P,GAAlD,4FACuBtP,KAAKisD,KAAKzG,EAAIl2C,GADrC,UACQ+qD,EADR,OAEQv5D,EAAS,CAAE6W,KAAM0iD,EAAO1iD,KAAM6tC,GAAImY,GAAS,CAAEnY,GAAI6U,EAAO9S,QAAU8S,SAAQ9S,MAAO8S,EAAO9S,QACpE,IAAtBj4C,EAAQmhD,UAHd,yCAG0C3vD,GAH1C,uBAIuBd,KAAKixD,UAAUoJ,EAAO1iD,MAJ7C,cAIQuuD,EAJR,iBAKQlmE,KAAKmmE,iBAAiB52D,EAAQ7P,EAAMwmE,GAL5C,0CAMcplE,GANd,IAMsBA,OAAQolE,KAN9B,kD,4DAqBA,WAAiC32D,EAAQ7P,EAAMoB,GAA/C,6EAC4B,OAAtBA,EAAOslE,WADb,iEAEsBpmE,KAAKkjE,4BAA4B3zD,EAAQ7P,EAAMoB,EAAOulE,YAAavlE,EAAOslE,YAFhG,aAEQ9hE,EAFR,OAGQ2e,EAAU3e,EAAM,CAAEgiE,OAAQ,SAAUxlE,EAAOslE,aAAetlE,EAAOslE,YAAY,GAC7E,IAAIljD,MAAJ,2BAA8BD,EAAU,MAAH,OAASA,EAAT,KAAsB,KAJnE,iD,4DAmBA,WAAmC1T,EAAQ7P,EAAM+R,EAAMnC,GAAvD,2FACStP,KAAK6iE,0BAA0BtzD,EAAQ7P,EAAM+R,EAAMnC,IAD5D,iD,4DAmBA,WAAmCC,EAAQnL,EAAIugE,EAAWC,EAAYt1D,GAAtE,2FACStP,KAAKkjE,4BAA4B3zD,EAAQnL,EAAIugE,EAAWC,EAAYt1D,IAD7E,iD,4DAyBA,WAAmCC,EAAQokB,EAASj0B,GAApD,oHAA0D+R,EAA1D,+BAAiE,GAAInC,EAArE,+BAA+E,GAA/E,SACyBtP,KAAK2zB,QAAQrkB,GAAb,OAA4B,kBAAM86B,GAAgBC,OAD3E,UACQ60B,EADR,OAE6B,iBAAhB5vD,EAAQi3D,IAFrB,gCAGyBvmE,KAAKs9D,YAAYhuD,EAAQi3D,KAHlD,OAGIj3D,EAAQi3D,IAHZ,OAGwD5uD,KAHxD,gCAMO3X,KAAKuwD,GAAGC,UACRlhD,GAPP,SAQc,KAAcmC,GAR5B,kCAQ0CzR,KAAKwmE,mBAAmBj3D,EAAQ7P,EAAM+R,EAAMnC,GARtF,iDAQiGmC,EARjG,0BASWnC,EAAQi3D,KATnB,uCASiCvmE,KAAKoxD,WAAW8N,EAAU,CAAEvnD,KAAMrI,EAAQi3D,MAT3E,oBASmF7tB,MATnF,UAS2F,EAT3F,2BAQIsmB,SARJ,KASItmB,MATJ,MAKQ+tB,GALR,wBAWsB,SAAT/mE,EAXb,kCAYaM,KAAKwvD,iBAAL,SACJiX,GADI,IAEP9xC,KAAMrlB,EAAQ88C,SACd3T,QAASymB,KAff,oBAgBQ1Z,GAhBR,qCAiBYxlD,KAjBZ,qBAkBSymE,GAlBT,eAmBMvH,EAnBN,UAoBwBl/D,KAAK03D,YAAY/jC,EAAS,KAAM,CAAEqpC,eAAe,IApBzE,mCAmBMkC,SAnBN,MAoBM/H,WApBN,0DAiBiB1H,eAjBjB,qDAWQjK,EAXR,eAuB4CxlD,KAAKmxD,SAAS3L,EAAI0Z,EAAU5vD,GAvBxE,wBAuBUo3D,EAvBV,EAuBUA,QAAYC,EAvBtB,mBAyBQ3mE,KAAKmmE,iBAAiB52D,EAAQ7P,EAAMgnE,GAzB5C,eA0BUN,EAA4BM,EAA5BN,WAAYC,EAAgBK,EAAhBL,YA1BtB,2BA4BOM,GA5BP,IA6BInhB,GAAImY,GAAS,CAAEnY,OACf1kD,OAAQ4lE,EACR/tB,OAAQ,kBAAM,EAAKiuB,mBAAmBr3D,EAAQ7P,EAAM2mE,EAAaD,EAAY92D,OA/BjF,kD,4DAsDA,WAA6BC,EAAQokB,EAASj0B,GAA9C,kHAAoDmnE,EAApD,+BAAqE,GAAIv3D,EAAzE,+BAAmF,GAC3EyxC,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GADxC,KAGmBtP,KAHnB,eAG+C+gD,EAH/C,SAIoB/gD,KAAK2zB,QAAQotB,GAJjC,oCAKsB/gD,KAAK03D,YAAY/jC,EAAS,KAAM,CAAEqpC,eAAe,IALvE,wBAMc,KAAc6J,GAN5B,kCAMoD7mE,KAAKwmE,mBAAmBj3D,EAAQ7P,EAAMmnE,EAAgB9lB,GAN1G,iDAMiH8lB,EANjH,+BAII3H,SAJJ,KAKI/H,WALJ,KAMI6H,SANJ,8CAGwBvP,eAHxB,+BAGQjK,EAHR,iBASgDxlD,KAAK8mE,gBAAgBthB,EAAIj2C,EAAQ7P,EAAMqhD,GATvF,wBASUppC,EATV,EASUA,KAAM4vC,EAThB,EASgBA,MAAOzmD,EATvB,EASuBA,OAAQu5D,EAT/B,EAS+BA,OAT/B,kBAUS,CACL1iD,OACA4vC,QACAzmD,SACAu5D,SACA1hB,OAAQ,kBAAM73C,EAAS,EAAK8lE,mBAAmBr3D,EAAQ7P,EAAMoB,EAAOulE,YAAavlE,EAAOslE,WAAYrlB,GAAO,MAf/G,kD,4DA0CA,WAA+BpsB,EAAMplB,GAArC,sHAA6Cw3D,EAA7C,+BAAyD,GAAIz3D,EAA7D,+BAAuE,GAC/DyxC,EADR,YACmB/gD,KAAKuwD,GAAGC,UAAalhD,GADxC,IACiDyvD,QAASh1B,MACvC,KAAcg9B,GAFjC,gCAEoD/mE,KAAKwmE,mBAAmBj3D,EAAQ,OAAQw3D,EAAWhmB,GAFvG,+CAE8GgmB,EAF9G,eAEQ/H,EAFR,eAGwBh/D,KAAK2zB,QAAQotB,GAHrC,eAGQtI,EAHR,iBAKmCz4C,KAAKwvD,iBAAiB,KAAQzO,EAAK,CAClEie,WACArqC,OACA8jB,aARJ,wBAKU+M,EALV,EAKUA,GAAI2R,EALd,EAKcA,WALd,UAWgDn3D,KAAK8mE,gBAAgBthB,EAAIj2C,EAAQ,OAAQwxC,GAXzF,wBAWUppC,EAXV,EAWUA,KAAM4vC,EAXhB,EAWgBA,MAAOzmD,EAXvB,EAWuBA,OAAQu5D,EAX/B,EAW+BA,OAX/B,kBAYS,KAAc,CACnBv5D,SACA27C,MAAOhE,EACPsf,YAAapgD,EACb4vC,QACA8S,SACA1mC,QAASwjC,EACT71D,KAAM,SAAC5B,EAAM+R,EAAMnC,GAAb,OACJ,EAAK8/B,aAAa7/B,EAAQ4nD,EAAYz3D,EAAM+R,EAA5C,SAAuDsvC,GAAQzxC,KACjE08C,WAAY,SAACtsD,EAAM+R,EAAMnC,GAAb,OACV,EAAKw2D,mBAAmBv2D,EAAQ4nD,EAAYz3D,EAAM+R,EAAlD,SAA6DsvC,GAAQzxC,KACvE02D,UAAW,IAAIgB,QAvBnB,kD,4DA4CA,WAAgCz3D,GAAhC,sGAAwCD,EAAxC,+BAAkD,GAC1CyxC,EADR,SACmB/gD,KAAKuwD,GAAGC,UAAalhD,GADxC,SAEyBtP,KAAK8iE,mBAAmBvzD,EAAQD,GAFzD,cAEQ88C,EAFR,yBAGS,KAAc,CACnB6a,WAAY,SAACvnE,EAAM+R,GAAP,OAAgB,EAAK+0D,mBAAmBj3D,EAAQ7P,EAAM+R,EAAMsvC,IACxEgL,OAAQ,SAACjmC,EAAMxW,GAAP,OAAmB,EAAKy2D,eAAe3Z,EAAU78C,EAAQuW,EAAtC,SAAiDi7B,GAAQzxC,KACpF43D,aAAc,SAACphD,EAAMxW,GAAP,OAAmB,EAAKw2D,mBAAmBv2D,EAAQ,KAAM,OAAQuW,EAA9C,YAC5Bi7B,GACAzxC,GAF4B,IAG/B88C,eAEFA,cAXJ,iD,4DAyBA,wGAAwC1Z,EAAxC,+BAA8C,GAAIqO,EAAlD,+BAAwD,GAAxD,KACS/gD,KADT,SAEI8nC,IAFJ,KAEIA,GAFJ,YAIQA,GAAO1sC,KAAK4E,KAAKo1D,aAAarU,MAJtC,gBAKYjjD,OAAOrB,UAAU0V,eAAe7Q,KAAKy/C,EAAK,aALtD,6BAKsEpI,GALtE,UAKmF34C,KAAK2zB,QAAQotB,GALhG,iFAKyG,GALzG,yDAMW,KAAArO,GAAG,KAAHA,GAAQ,SAAA/qB,GAAC,OAAIgxB,GAAOhxB,OAN/B,wFASIo5B,EATJ,uBACctD,KADd,uBAUI3nC,MAAK,SAAAyxB,GAAC,OAAIO,GAAO1sC,KAAKmsC,GAAGxiC,SAAS,WAVtC,kD,4DAkCA,+GAAgDoyD,EAAhD,EAAgDA,WAAYz3D,EAA5D,EAA4DA,KAAQqhD,EAApE,+BAA0E,GAA1E,kBACS/gD,KAAKmnE,wBAAL,oBAAiCznE,EAAO,CAACw5C,GAAcx5C,IAAS,IAAhE,CAAoEy3D,IAAapW,IAD1F,iD,4DAyBA,+GAAkDoW,EAAlD,EAAkDA,WAAY0I,EAA9D,EAA8DA,QAAW9e,EAAzE,+BAA+E,GAA/E,kBACS/gD,KAAKmnE,wBAAL,oBAAiCtH,EAAU,CAACA,GAAW,IAAvD,CAA2D1I,IAAapW,IADjF,iD,sBAiCO,IAAMqmB,GAAc7W,WAAW+S,GAAc,CAClD53D,QAAS,CACP27D,oBDvUW,SAAf,oCCwUIpB,gB,6CACAH,mB,iDACAC,e,+CACA32B,a,iDACAo3B,mB,mDACAI,mB,qDACAT,iB,iDACAW,gB,mDAEAK,wB,4CAEAG,8B,6CAEAC,gC,8CAEFjX,UAAW,CACTC,GAAI,CACFC,SAAU,CACRuO,QAASh1B,GACTqvB,SAAUlvB,GACVI,OAAQN,GACRgb,IAAK/a,QAOAu9B,GADWJ,GAAY7V,QAAQ2L,IACC3L,QAAQkW,IACrD,YCvZO,IAAMC,GAAkB,SAACC,GAAD,sCAAS,WAAOpQ,EAAUqQ,GAAjB,6EACd,WAApB,GAAOrQ,GAD2B,sBACE,IAAIr0C,MAAM,8BADZ,WAElCq0C,EAASvS,MAAO/c,IAAUsvB,EAASvS,KAAK8S,GAAG3tB,IAFT,sBAEkC,IAAIjnB,MAAJ,wDAAqDinB,GAArD,kBAA8EotB,EAASvS,MAFzH,UAGhCA,EAAMuS,EAASvS,KAAO7a,IACxBotB,EAASyH,SAJyB,oBAKI,OAApCzH,EAASyH,SAAShwD,MAAM,KAAK,GALG,sBAKgB,IAAIkU,MAAM,gDAL1B,gCAM7B,CAAE2kD,aAActQ,EAASyH,SAAUha,QANN,WAQ/BuS,EAAShoD,QAAWgoD,EAAS9lD,KARE,uBAQU,IAAIyR,MAAM,qDARpB,yBASPykD,EAAInB,mBAAmBjP,EAAShoD,OAAQq4D,EAAYrQ,EAAS9lD,MATtD,gCAS6DuzC,EAT7D,mBAS3B6iB,aAT2B,KAS6D7iB,IAT7D,mDAAT,yDAalB8iB,GAAqB,SAACH,GAAD,sCAAS,WAAOp4D,EAAQo3C,GAAf,0FACdghB,EAAI1B,gBAAgB12D,GADN,uBACjC68C,EADiC,EACjCA,SADiC,kBAGlC,CAAEA,WAAUgL,QAASz/C,GAAKgvC,KAHQ,2CAAT,yD,waCwClC,SAPiCygB,GAAY7V,QAAQ,CACnD7lD,QAAS,CACPq8D,wB,+CACAvQ,a,iDACAwQ,K,sFAYJ,WAAqBr0C,GAArB,0FAC+B3zB,KAAKoxD,WAAWz9B,GAD/C,uBACUwjC,EADV,EACUA,WADV,oBAEWA,GAFX,iD,4DAeA,WAAwCyQ,EAAYr4D,GAApD,qHAA4DkC,EAA5D,+BAAmE,GAAInC,EAAvE,+BAAiF,GACzEyxC,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GADxC,SAEwBtP,KAAK2zB,QAAQotB,GAFrC,cAEQtI,EAFR,gBAIYz4C,KAAKgoE,KAAKvvB,GAJtB,yCAIsC,IAAIv1B,MAAJ,kBAAqBu1B,EAArB,mBAJtC,yBAMsCqvB,GAAmB9nE,KAAnB8nE,CAAyBv4D,EAAQq4D,GANvE,wBAMUxQ,EANV,EAMUA,QAAShL,EANnB,EAMmBA,SANnB,UAOyBpsD,KAAKwmE,mBAAmBj3D,EAAQ,OAAQkC,GAPjE,eAOQutD,EAPR,iBASmCh/D,KAAKmwD,WAAW,KAAQpP,EAAK,CAAEtI,UAAS9jB,KAAMy3B,EAAU4S,WAAU5H,aATrG,wBASU5R,EATV,EASUA,GAAI2R,EATd,EAScA,WATd,UAWgCn3D,KAAKisD,KAAKzG,EAAIzE,GAX9C,wBAWUppC,EAXV,EAWUA,KAAM4vC,EAXhB,EAWgBA,MAXhB,kBAaS,KAAc,CACnB9K,MAAOhE,EACPsf,YAAapgD,EACb4vC,QACA0gB,aAAc9Q,KAjBlB,kD,sBAqBA,IAAM+Q,GAAsB,SAAC1iB,GAAD,OAAQD,GAAQ,CAAEE,UAAWD,EAAIxS,WAAY,IAAMvE,GAAQE,S,sCAYvF,WAA6Bw5B,EAAgB5Q,EAAUqQ,GAAvD,+GAAmEt4D,EAAnE,+BAA6E,GACtEioD,EADP,sBACuB,IAAIr0C,MAAM,wBADjC,uBAGsCwkD,GAAgB1nE,KAAhB0nE,CAAsBnQ,EAAUqQ,GAHtE,uBAGUC,EAHV,EAGUA,aAAc7iB,EAHxB,EAGwBA,IAChBjE,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GAJxC,UAK+BtP,KAAKowD,aAAa3hB,GAAQW,cALzD,wBAKUkD,EALV,EAKUA,WACF81B,EAAYF,GAAoBzhB,GAAS0hB,IANjD,mBAQOpnB,GARP,sBAUSqnB,GAVT,IAWM5iB,GAAI4iB,EAAUjhB,WAXpB,UAagBnnD,KAAK2zB,QAAQotB,GAb7B,gCAcgBzO,EAdhB,KAecu1B,EAfd,KAgBI7iB,EAhBJ,MASIQ,GATJ,KAaIyb,KAbJ,KAcI3uB,WAdJ,KAeIilB,SAfJ,KAgBIvS,IAhBJ,KAiBIC,IAAK,GAVD90B,GAPR,kCAmBwBnwB,KAAKqwD,gBAAgB5hB,GAAQ4C,OAAQlhB,GAnB7D,wBAmBUk1B,EAnBV,EAmBUA,IAnBV,EAoBoCE,GAAQ,SACnCp1B,GADkC,IAC1Bk1B,IAAK,GAAF,OAAKA,KACrB5W,GAAQ4C,OACR,CAAE4T,IAAK,IAHWojB,EApBtB,EAoBU3jB,WApBV,kBAyBSwjB,GAAoBG,GAAW7iB,IAzBxC,kD,yDChHM8iB,GAAS,SAACjlE,GAAD,OAAW,KAASA,EAAOA,IAE7BklE,GAAU,EAEVC,GAAoBF,GAAO,CAAC,aAAc,YAE1CG,GAAcH,GAAO,CAChC,SACA,cAGWI,GAAgBJ,GAAO,CAClC,iBACA,kBACA,gBACA,kBAGWK,GAAWL,GAAO,CAC7B,UACA,mBACA,OACA,UACA,gBAGWM,GAAsBN,GAAO,CACxC,UACA,cAGWO,GAAqBP,GAAO,CACvC,YACA,gBAGWQ,IAAO,IAClBC,QAAM,YACHL,GAAcM,eAAiB,+BAD5B,MAEHN,GAAcO,cAAgB,kBAF3B,IAINC,MAAI,YACDP,GAASh1C,QAAU,eADlB,MAEDg1C,GAASQ,QAAU,mBAFlB,MAGDR,GAASlrB,KAAO,oBAHf,MAIDkrB,GAAS3qB,YAAc,gBAJtB,MAKD2qB,GAASS,iBAAmB,qBAL3B,KALc,MAYjBV,GAAcW,cAAgB,oBAZb,MAajBX,GAAcY,gBAAkB,oBAbf,IAgBPC,GAAa,CACxBC,UAAW,YACXC,aAAc,eACdC,oBAAqB,sBACrBC,+BAAgC,iCAChCC,+BAAgC,iCAChCC,yBAA0B,4BAGfC,GAAS,CACpBC,gBAAiB,eAACzlE,EAAD,uDAAS,GAAT,MAAiB,CAChCqwB,KAAM,EACNvtB,KAAM9C,EACN2e,QAAS,qBAEX+mD,mBAAoB,eAAC1lE,EAAD,uDAAS,GAAT,MAAiB,CACnCqwB,KAAM,EACNvtB,KAAM9C,EACN2e,QAAS,wBAEXgnD,eAAgB,eAAC3lE,EAAD,uDAAS,GAAT,MAAiB,CAC/BqwB,KAAM,EACNvtB,KAAM9C,EACN2e,QAAS,+BAEXinD,eAAgB,eAAC5lE,EAAD,uDAAS,GAAT,MAAiB,CAC/BqwB,KAAM,EACNvtB,KAAM9C,EACN2e,QAAS,wCAEXknD,eAAgB,eAAC7lE,EAAD,uDAAS,GAAT,MAAiB,CAC/BqwB,KAAM,GACNvtB,KAAM9C,EACN2e,QAAS,sCAAF,OAAwC3e,EAAMoqC,WAEvD07B,cAAe,eAAC9lE,EAAD,uDAAS,GAAT,MAAiB,CAC9BqwB,KAAM,GACNvtB,KAAM9C,EACN2e,QAAS3e,EAAMy5C,MAEjBssB,aAAc,eAAC/lE,EAAD,uDAAS,GAAT,MAAiB,CAC7BqwB,KAAM,GACNvtB,KAAM9C,EACN2e,QAAS,wCAEXqnD,oBAAqB,eAAChmE,EAAD,uDAAS,GAAT,MAAiB,CACpCqwB,KAAM,EACNvtB,KAAM9C,EACN2e,QAAS,iCAEXsnD,mBAAoB,eAACjmE,EAAD,uDAAS,GAAT,MAAiB,CACnCqwB,KAAM,EACNvtB,KAAM9C,EACN2e,QAAS,yB,waCtGN,IAAMunD,GAAgB,WAAmB,IAAlBlV,EAAkB,wDAC9C,EAA4BhnD,OAApBm8D,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,QAEhB,QAAsB,IAAXD,GAA0BA,IAAW3sE,OAAO2sE,GAAS,OAAOA,EAEvE,QAAuB,IAAZC,GAA2BA,IAAY5sE,OAAO4sE,GAAU,OAAOA,EAC1E,IAAKpV,EAAO,MAAM,IAAIpyC,MAAM,2BAC5B,MAAO,IAGIynD,GAAa,kBAAMr8D,SAAWA,OAAOjP,QAKrCurE,GAAc,SAACC,GAC1B,IAAIC,EAAY,EAEhB,OAAO,YAA6E,IAA1E5iE,EAA0E,EAA1EA,GAAIxE,EAAsE,EAAtEA,OAAQysB,EAA8D,EAA9DA,OAAQrvB,EAAsD,EAAtDA,OAAQwD,EAA8C,EAA9CA,MAASymE,EAAqC,wDAElFA,IAA6BD,GAAa,GAC1C5iE,EAAK6iE,EAA4B7iE,GAAM,KAAQ4iE,EAC/C,IAAME,EAAU76C,EACZ,CAAEA,UACFrvB,EACE,CAAEA,UACF,CAAEwD,SAOR,OANAumE,EAAWD,YAAX,OACEK,QAAS,OACN/iE,EAAK,CAAEA,MAAO,IAFnB,IAGExE,UACGsnE,IAEE9iE,IAIEgjE,GAAa,SAAC38B,EAAQwP,GAAgC,6DAAP,GAAO,IAAzBotB,aAAyB,SAC3DvhD,EAAU2kB,EAAOwP,EAAIr6C,QAC3B,OAAKkmB,GAA8B,mBAAZA,EAIhBA,GAHLuhD,GAAS94D,QAAQq6C,IAAR,iCAAsC3O,EAAIr6C,SAC5C,gCAAM,yGAAY,GAAZ,8CAKJuf,GAAU,SAACvf,GAAD,IAASysB,EAAT,uDAAkB,GAAlB,MAA0B,CAAEzsB,SAAQysB,WAE9Ci7C,GAAkB,SAACljE,EAAIxE,GAAL,6DAAiC,GAAlBY,EAAf,EAAeA,MAAOxD,EAAtB,EAAsBA,OAAtB,WAA2CoH,KAAIxE,UAAYY,EAAQ,CAAEA,SAAU,CAAExD,YAEnGuqE,GAAsB,SAACvV,GAAD,OAAY,SAAC5tD,EAAIxE,EAAQ0D,GAAb,OAAsB0uD,EAAO8U,YAAYQ,GAAgBljE,EAAIxE,EAAQ0D,IAAO,KAE9GkkE,GAAS,aAETC,GAAkB,SAAChP,GAAD,aAAsH,IAAvG,QAAC,GAAI,YAAa,YAAlB,QAAoC,SAAA99C,GAAC,MAA4C,WAAxC,GAAQA,EAAI89C,EAAS99C,GAAK89C,MAAyBt8D,QAE7HurE,GAAmB,SAACjK,EAAWF,GAAwB,IAAbtgB,EAAa,uDAAP,GAC3D,IAAK,KAAAwgB,GAAS,KAATA,GAAe,SAAAj4D,GAAC,OAAIA,IAAM+3D,KAAY,CACzC,GAA6B,WAAzB,GAAOtgB,EAAIsgB,aAA2B1K,GAAc5V,EAAIsgB,WAAY,MAAM,IAAIn+C,MAAM,+CACxFm+C,EAAYtgB,EAAIsgB,UAElB,OAAOA,GC3CT,SAAepS,IAAf,CAAuB,CACrBnpC,KADqB,YACkE,WAA/E5d,EAA+E,EAA/EA,GAAIxI,EAA2E,EAA3EA,KAAM21D,EAAqE,EAArEA,UAAWoW,EAA0D,EAA1DA,MAAOZ,EAAmD,EAAnDA,WAAmD,OAAvCa,SAAuC,GAA5BC,EAA4B,KAAjBC,EAAiB,KACrF5rE,KAAKkI,GAAKA,EACVlI,KAAK6qE,WAAaA,EAClB7qE,KAAK0kC,KAAO,CAAEhlC,OAAM21D,YAAWoW,SAI/BzrE,KAAK6rE,UAAY,GAEjB7rE,KAAK8rE,oBAAsB,GAK3B9rE,KAAKu8D,SAAW,GAEhBv8D,KAAK4qE,YAAcA,GAAY5qE,KAAK6qE,YAcpCA,EAAW1B,SAZW,SAACprB,EAAK1lB,GAC1B,IAAK0lB,IAAQA,EAAIktB,SAA2B,QAAhBltB,EAAIktB,UAAsBltB,EAAIr6C,OACxD,MAAM,IAAIwf,MAAJ,oCAAuC66B,IAE/C4tB,EAAU5tB,EAAK1lB,MAGE,SAAC6wC,EAAM2B,GACxB,EAAKkB,YAAW,GACQ,mBAAjBH,GAA+BA,EAAaf,EAAY,OAKnEhR,oBAAqB,CACnBmS,eAAgB,CACdvhE,YAAY,EACZjB,cAAc,EACdjC,IAHc,WAIZ,OAAOvH,KAAKisE,gBACR,KAAYjsE,KAAKu8D,SAAS2P,SAAS,QACnCxyE,IAGR6nE,UAAW,CACT92D,YAAY,EACZjB,cAAc,EACdjC,IAHS,WAGF,MACL,OAAOvH,KAAKisE,gBAAL,oBACC,KAAYjsE,KAAKu8D,SAAS2P,UAD3B,GACwC,KAAYlsE,KAAKu8D,SAAS4P,aACrE,KAGR9zC,OAAQ,CACN5tB,YAAY,EACZjB,cAAc,EACdjC,IAHM,WAIJ,OAAOvH,KAAK6qE,cAIlBn/D,QAAS,CASP0gE,WATO,SASK1nC,GACV,KAAc1kC,KAAK0kC,KAAMA,IAE3BunC,cAZO,WAaL,MAAgC,WAAzB,GAAOjsE,KAAKu8D,WACkB,WAAnC,GAAOv8D,KAAKu8D,SAAS4P,YACY,WAAjC,GAAOnsE,KAAKu8D,SAAS2P,UAEzBG,aAjBO,WAkBL,OAAOrsE,KAAK8rE,oBAAoB7rE,QAAUD,KAAKisE,iBAUjDK,mBA5BO,SA4Ba34C,GAAS,MAC3B,QAASA,GAAW,OAAA3zB,KAAKuhE,WAAL,QAAoB,SAAAj4D,GAAC,OAAIA,IAAMqqB,MASrD44C,YAtCO,WAuCL,OAAOvsE,KAAK6qE,WAAW0B,eAAiBvsE,KAAK0kC,KAAKzd,SAAWsiD,GAAWC,WAU1EgD,kBAjDO,WAiDgC,6DAAJ,GAAdnL,EAAkB,EAAlBA,UACnB,OAAOA,GAAa,KAAYrhE,KAAKu8D,SAAS2P,SAAS,IASzDH,WA3DO,WA2DmC,IAA9BU,EAA8B,wDACxCzsE,KAAK0kC,KAAKzd,OAASsiD,GAAWE,aAC9BzpE,KAAK8rE,oBAAsB,GAC3B9rE,KAAKu8D,SAAW,GAChBkQ,GAAwBzsE,KAAK6qE,WAAWkB,cAO1CW,YAtEO,SAsEMnQ,GAA8C,6DAAJ,GAAI,IAAlCoQ,yBAAkC,SACzD,IAAKpB,GAAgBhP,GACnB,MAAM,IAAIr5C,MAAM,qFAElBljB,KAAKu8D,SAAWA,EACXoQ,GAEH3sE,KAAK4qE,YAAY3nD,GAAQ6lD,GAAQC,OAAOE,cAAejpE,KAAKu8D,WAAW,IAY3EqQ,mBAzFO,SAyFapmE,EAAM1G,GAAO,QAI0D,EAGzF,OANI0G,IAASqiE,GAAmBgE,WAAc,OAAA7sE,KAAK8rE,qBAAL,OAAkChsE,IAC9EE,KAAK8rE,oBAAoB9pE,KAAKlC,GAE5B0G,IAASqiE,GAAmBiE,aAAe,OAAA9sE,KAAK8rE,qBAAL,OAAkChsE,KAC/EE,KAAK8rE,oBAAsB,OAAA9rE,KAAK8rE,qBAAL,QAAgC,SAAAvkC,GAAC,OAAIA,IAAMznC,MAEjEE,KAAK8rE,qBAWdiB,QA3GO,SA2GErtE,EAAMywB,GAAQ,WACf68C,EAAQhtE,KAAK4qE,YAAY3nD,GAAQvjB,EAAMywB,IAC7C,GAAIryB,OAAOrB,UAAU0V,eAAe7Q,KAAKtB,KAAK6rE,UAAWmB,GAAQ,MAAM,IAAI9pD,MAAM,0BACjF,OAAO,IAAI,KAAJ,EAAY,SAACxM,EAASmB,GAC3B,EAAKg0D,UAAUmB,GAAS,CAAEt2D,UAASmB,cAYvCo1D,gBA3HO,WA2HiCC,GAAiB,IAE3C,EAFKhlE,EAAsC,EAAtCA,GAAI5D,EAAkC,EAAlCA,MAAOxD,EAA2B,EAA3BA,OAC5B,IAAKd,KAAK6rE,UAAU3jE,GAAK,MAAM,IAAIgb,MAAJ,iDAAoDhb,IAC/EpH,GACF,EAAAd,KAAK6rE,UAAU3jE,IAAIwO,QAAnB,WAAyD,mBAApBw2D,EACjCA,EAAgB,CAAEhlE,KAAIpH,WACtB,CAACA,KAELd,KAAK6rE,UAAU3jE,GAAI2P,OAAOvT,UAErBtE,KAAK6rE,UAAU3jE,O,kbCxM5B,IAAMwgE,IAAa,SAChBI,GAAQC,OAAOE,eAAgB,SAACxlB,GAAD,OAC9B,YAAgB,IAAbtzB,EAAa,EAAbA,OACDszB,EAAS0pB,UAAU5Q,SAAWpsC,EAC9BszB,EAAS2pB,gBAAgBj9C,OAJZ,MAMhB24C,GAAQO,eAAgB,SAAC5lB,GAAD,OACvB,SAAC1F,GACC0F,EAAS0pB,UAAUzoC,KAAK2wB,UAAYtX,EAAI5tB,OAAOklC,UAC/C5R,EAAS4pB,gBAAgBtvB,EAAI5tB,YAThB,MAWhB24C,GAAQQ,iBAAkB,SAAC7lB,GAAD,OACzB,SAAC1F,GACC0F,EAAS6pB,mBACT7pB,EAASmoB,aAAa7tB,EAAI5tB,YAdb,IAkBbo9C,IAAS,SACZzE,GAAQI,KAAKv1C,SAAU,SAAC8vB,GAAD,OACtB,SAAC1F,GAAD,OAAS0F,EAAS0pB,UAAUF,gBAAgBlvB,OAFjC,MAGZ+qB,GAAQI,KAAKC,SAAU,SAAC1lB,GAAD,OACtB,SAAC1F,GACKA,EAAIj9C,SAAQ2iD,EAAS0pB,UAAUzoC,KAAKzd,OAASsiD,GAAWC,WAC5D/lB,EAAS0pB,UAAUF,gBAAgBlvB,OAN1B,MAQZ+qB,GAAQI,KAAKE,kBAAmB,SAAC3lB,GAAD,OAC/B,SAAC1F,GACKA,EAAIj9C,SACNi9C,EAAIj9C,OAAO6yB,UAAY8vB,EAAS0pB,UAAU5Q,SAAWxe,EAAIj9C,OAAO6yB,SAChEoqB,EAAIj9C,OAAO0sE,eAAiB/pB,EAAS0pB,UAAUrB,oBAAsB/tB,EAAIj9C,OAAO0sE,eAGlF/pB,EAAS0pB,UAAUF,gBAAgBlvB,GAAK,qBAAG71C,GAAiB,CAApB,EAAOpH,eAftC,MAiBZgoE,GAAQI,KAAKzrB,MAAO,SAACgG,GAAD,OACnB,SAAC1F,GACC0F,EAAS0pB,UAAUF,gBAAgBlvB,GAAK,cAAG71C,GAAH,IAAOpH,EAAP,EAAOA,OAAP,MAAoB,CAACA,EAAO2sE,mBAAqB3sE,EAAO4sE,wBAnBvF,MAqBZ5E,GAAQI,KAAKlrB,aAAc,SAACyF,GAAD,OAC1B,SAAC1F,GACC0F,EAAS0pB,UAAUF,gBAAgBlvB,GAAK,qBAAG71C,GAAiB,CAApB,EAAOpH,OAAqB88C,kBAvB3D,IA2BT+qB,GAAW,GAEXgF,GAAgB,SAAClqB,GAAD,sCAAc,WAAO1F,GAAP,qEAC7BA,EAAI71C,GADyB,yCAEzBgjE,GAAWxC,GAAe3qB,EAAK,CAAEotB,MAAO1nB,EAAS0nB,OAAjDD,CAA0DznB,EAA1DynB,CAAoEntB,IAF3C,WAGvBjgD,OAAOrB,UAAU0V,eAAe7Q,KAAKmiD,EAAS0pB,UAAUtB,UAAW9tB,EAAI71C,IAHhD,yCAIzBgjE,GAAWqC,GAAWxvB,EAAK,CAAEotB,MAAO1nB,EAAS0nB,OAA7CD,CAAsDznB,EAAtDynB,CAAgEntB,IAJvC,gCAMzBmtB,GAAWvC,GAAU5qB,EAAK,CAAEotB,MAAO1nB,EAAS0nB,OAA5CD,CAAqDznB,EAArDynB,CAA+DntB,IANtC,2CAAd,uDAuBtB,SAAewS,WAAW,CAClBzqC,KADkB,YAC6H,gJAAvIpmB,EAAuI,EAAvIA,KAAuI,IAAjI0tE,uBAAiI,MAA/G9B,GAA+G,MAAvGM,oBAAuG,MAAxFN,GAAwF,MAAhF+B,uBAAgF,MAA9D/B,GAA8D,EAAtDT,EAAsD,EAAtDA,WAAsD,IAA1C+C,uBAA0C,aAAjBzC,aAAiB,SAC7I0C,EAAiB,CAAC,eAAgB,kBAAmB,mBAC3D,EAAKhD,WAAaA,EAClB,EAAKnrE,KAAOA,EACZ,EAAKyrE,MAAQA,GAETN,EAN+I,gCAQ3I,EAAKiD,gBAAgBjD,GARsH,OAWnJ,EAAKe,aAAeA,EACpB,EAAKwB,gBAAkBA,EACvB,EAAKC,gBAAkBA,EAEvB,KAAAQ,GAAc,KAAdA,GAAuB,SAAAxsD,GACrB,IAAKusD,GAA0C,mBAAhB,EAAKvsD,GAAuB,MAAM,IAAI6B,MAAJ,wBAA2B7B,EAA3B,6BAhBgF,+CAmBrJivC,UAAW,CAAEC,GAAI,CAAEC,SAAU,CAAEud,iBAAiB,KAChDriE,QAAS,CACP+xC,KADO,aAGP8jB,UAHO,WAGM,MACX,IAAKvhE,KAAKmtE,UAAUnB,eAAgB,MAAM,IAAI9oD,MAAM,0CACpD,cAAQljB,KAAKmtE,UAAUnB,iBAAvB,UAA0C,KAAYhsE,KAAKmtE,UAAU5Q,SAAS4P,cAU1E2B,gBAfC,SAegBjD,GAAY,mHAC7B,EAAKsC,YAAa,EAAKA,UAAUZ,cADJ,sBACyB,IAAIrpD,MAAM,uCAAyC,EAAKiqD,WADjF,cAEjC,EAAKA,UAAYa,GAAU,OACzBnD,aACAxV,UAAW,EAAKD,aAAa,CAAEE,OAAO,KACnCuV,EAAWoD,gBAHU,IAIxB/lE,IAAI+4C,WACJyqB,SAAU,CAACiC,GAAc,GAAO,EAAK/B,iBAPN,kBAS1B,EAAKsC,sBATqB,8CAmB7BZ,iBAlCC,WAkCwC,oIAAvBa,IAAuB,iCACxC,EAAKhB,WAAc,EAAKA,UAAUZ,cADM,sBACe,IAAIrpD,MAAM,mCADzB,OAE7CirD,GAAkB,EAAKhB,UAAUvC,YAAY3nD,GAAQ6lD,GAAQQ,gBAAiB,CAAEpiD,OAAQ,SAAU,GAClG,EAAKimD,UAAUpB,aACf,EAAKoB,UAAY,KAJ4B,8CAMzCx5C,QAxCC,WAwC4B,yKAAJ,GAAd0tC,EAAkB,EAAlBA,UACV,EAAK8L,WAAc,EAAKA,UAAUZ,cADN,sBAC2B,IAAIrpD,MAAM,mCADrC,UAE3BgpD,EAAU,EAAKiB,UAAUnB,eAFE,sBAGb,IAAI9oD,MAAM,0CAHG,WAI7Bm+C,GAAc,EAAK8L,UAAUb,mBAAmBjL,GAJnB,sBAIqC,IAAIn+C,MAAJ,4CAA+Cm+C,IAJpF,gCAK1BA,GAAa6K,GALa,8CAc7BkC,aAtDC,WAsDe,kHACf,EAAKjB,WAAc,EAAKA,UAAUZ,cADnB,sBACwC,IAAIrpD,MAAM,mCADlD,UAEf,EAAKiqD,UAAUnB,eAFA,sBAEsB,IAAI9oD,MAAM,0CAFhC,gCAGb,EAAKiqD,UAAUJ,QAAQjE,GAAQI,KAAKv1C,UAHvB,8CAchBy1C,iBApEC,SAoEiB5iE,EAAM1G,GAAO,kHAC9B,EAAKqtE,WAAc,EAAKA,UAAUZ,cADJ,sBACyB,IAAIrpD,MAAM,mCADnC,gCAE5B,EAAKiqD,UAAUJ,QAAQjE,GAAQI,KAAKE,iBAAkB,CAAE5iE,OAAM1G,WAFlC,8CAY/Bo3D,gBAhFC,SAgFgB1R,GAAc,oIAAVzE,EAAU,+BAAJ,GAC1B,EAAKosB,WAAc,EAAKA,UAAUZ,cADJ,sBACyB,IAAIrpD,MAAM,mCADnC,UAE9B,EAAKiqD,UAAUnB,eAFe,sBAEO,IAAI9oD,MAAM,0CAFjB,WAG/B69B,EAAIsgB,WAAc,EAAK8L,UAAUb,mBAAmBvrB,EAAIsgB,WAHzB,sBAG2C,IAAIn+C,MAAJ,4CAA+C69B,EAAIsgB,YAH9F,gCAI5B,EAAK8L,UAAUJ,QAAQjE,GAAQI,KAAKzrB,KAApC,SAA+CsD,GAA/C,IAAoDyE,KAAI6oB,cAAc,EAAMhZ,UAAW,EAAKD,mBAJhE,8CAc/BpX,YA9FC,SA8FYD,GAAe,oIAAVgD,EAAU,+BAAJ,GACvB,EAAKosB,WAAc,EAAKA,UAAUZ,cADP,sBAC4B,IAAIrpD,MAAM,mCADtC,UAE3B,EAAKiqD,UAAUnB,eAFY,sBAEU,IAAI9oD,MAAM,0CAFpB,WAG5B69B,EAAIsgB,WAAc,EAAK8L,UAAUb,mBAAmBvrB,EAAIsgB,WAH5B,sBAG8C,IAAIn+C,MAAJ,4CAA+C69B,EAAIsgB,YAHjG,gCAIzB,EAAK8L,UAAUJ,QAAQjE,GAAQI,KAAKlrB,YAApC,SAAsD+C,GAAtD,IAA2D99B,QAAS86B,MAJ3C,8CAa5BmwB,mBA3GC,WA2GqB,wIACnB,EAAKf,UAAUJ,QACpBjE,GAAQI,KAAKC,QAAS,CACpBzpE,KAAM,EAAKA,KACXmP,QAAS05D,GACTlT,UAAW,EAAKD,aAAa,CAAEE,OAAO,OALhB,8CAqBtBrJ,KAhIC,SAgIKzG,GAAkB,wIAAdl2C,EAAc,+BAAJ,GACnB,EAAK69D,WAAc,EAAKA,UAAUZ,cADX,sBACgC,IAAIrpD,MAAM,mCAD1C,UAEvB,EAAKiqD,UAAUnB,eAFQ,sBAEc,IAAI9oD,MAAM,0CAFxB,WAGxB5T,EAAQ+xD,WAAc,EAAK8L,UAAUb,mBAAmBh9D,EAAQ+xD,WAHxC,sBAG0D,IAAIn+C,MAAJ,4CAA+C5T,EAAQ+xD,YAHjH,WAItBtgB,EAAM,KAAQ,EAAKwP,GAAGC,SAAUlhD,IAC7By+D,gBALmB,kCAML,EAAK7W,gBAAgB1R,EAAI,CAAE6b,UAAWtgB,EAAIsgB,YANrC,eAMpB1yB,EANoB,yBAOnB,EAAK+hB,gBAAgB/hB,EAAQoS,IAPV,iCASrB,EAAKosB,UAAUJ,QAAQjE,GAAQI,KAAKzrB,KAAM,CAAE4jB,UAAWtgB,EAAIsgB,UAAW7b,KAAI6oB,cAAc,EAAOhZ,UAAW,EAAKD,kBAT1F,kD,8fC7LlC,WAAgCtc,GAAhC,sGACuB94C,KAAK8zD,IAAIwa,kBAAkBx1B,GADlD,cACQtE,EADR,gBAE2Cx0C,KAAK8zD,IAAIya,yBAAyBz1B,GAF7E,uBAEyB01B,EAFzB,EAEUC,cAFV,2BAIOj6B,GAJP,IAKIg6B,UACAE,YAAa,OAAA1uE,KAAK2uE,gBAAL,OAAyB3uE,KAAM84C,GAC5C81B,UAAW,OAAA5uE,KAAK6uE,mBAAL,OAA4B7uE,KAAM84C,GAC7Cg2B,eAAgB,OAAA9uE,KAAK8uE,gBAAL,OAAyB9uE,KAAM84C,GAC/Ci2B,aAAc,OAAA/uE,KAAKgvE,iBAAL,OAA0BhvE,KAAM84C,GAC9Cm2B,SAAU,OAAAjvE,KAAKkvE,gBAAL,OAAyBlvE,KAAM84C,MAV7C,iD,4DAiDA,WAA+BA,EAAU+mB,GAAzC,gGACkB7/D,KAAK8zD,IAAIqb,iCAAiCr2B,EAAU+mB,GADtE,cACQlgD,EADR,kCAGOA,GAHP,IAIIyvD,aAAc71B,GAAkB,MAAA55B,EAAE+P,OAAF,OAAc,IAAI3qB,WAClDsqE,gBAAiB91B,GAAkB,MAAA55B,EAAE4zC,UAAF,OAAiB,IAAIxuD,WACxDuqE,QAAS,OAAAtvE,KAAK8uE,gBAAL,OAAyB9uE,KAAM84C,EAAU+mB,GAClD0P,gBAAiB,OAAAvvE,KAAKwvE,sBAAL,OAA+BxvE,KAAM84C,EAAU+mB,GAChElnB,OAAQ,SAACvxC,GAAD,OAAUmyC,GAAkB,IAAAnyC,GAAI,KAAJA,EAAW,QARnD,iD,4DAyBO,WAAqC0xC,EAAU+mB,GAA/C,0IAA6F,GAA7F,IAA0D3E,gBAA1D,MAAqE,GAArE,MAAyED,gBAAzE,MAAoF,IAApF,0BACIn3D,GADJ,gFAECA,EAFD,gCAEUuuD,GAAM4I,GAFhB,uBAGwB,EAAKnH,IAAIqb,iCAAiCr2B,EAAU+mB,GAH5E,mBAGKtM,EAHL,EAGKA,WACFkc,EAAiB92B,GAAO4a,EAAU,OACrBtzD,OALhB,6CAMM,CAAEszD,WAAU5a,OAAQ,kBAAM82B,MANhC,2CACI3rE,EAAI,EADR,YACWA,EAAIo3D,GADf,0CACIp3D,GADJ,6FACyBA,IADzB,6BASC,IAAIof,MAAJ,2BAA8Bg4C,EAAW,GAAKD,EAA9C,OATD,6C,4DA4BP,WAA+BmE,EAAaC,GAA5C,iGAA4D/vD,EAA5D,+BAAsE,GAC9DyxC,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GADxC,SAE0BtP,KAAK2zB,QAAQotB,GAFvC,cAEQqd,EAFR,gBAIiCp+D,KAAK0vD,iBAAiB,KAAQ3O,EAAK,CAChEqd,YACAgB,cACAC,oBAPJ,cAIQ3P,EAJR,yCAUa1vD,KAAKisD,KAAKyD,EAAkB3O,GAVzC,8DAWa/gD,KAAK0vE,gBAAL,aAA2B,IAAAtR,GAAS,KAATA,EAAgB,KAXxD,oH,4DA+BA,WAAkCtlB,EAAUppB,GAA5C,mGAAmDpgB,EAAnD,+BAA6D,GACrDyxC,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GADxC,SAEyBtP,KAAK2zB,QAAQotB,GAFtC,cAEQlI,EAFR,gBAIiC74C,KAAK4vD,kBAAkB,KAAQ7O,EAAK,CACjEjI,WACAD,WACAnpB,WAPJ,cAIQggC,EAJR,OASQmQ,EAAUjnB,GAAcC,EAAU4N,GAASiJ,GAAkBlK,GAAG9M,MAAOI,GAT/E,kCAWa94C,KAAKisD,KAAKyD,EAAkB3O,GAXzC,8DAYa/gD,KAAKkvE,eAAep2B,EAAU+mB,GAZ3C,oH,4DA6BA,WAAgC/mB,EAAUymB,GAA1C,iGAAqDjwD,EAArD,+BAA+D,GACvDyxC,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GADxC,SAEyBtP,KAAK2zB,QAAQotB,GAFtC,cAEQme,EAFR,gBAI+Bl/D,KAAK2vD,eAAe,KAAQ5O,EAAK,CAC5DjI,WACAomB,WACAK,eAPJ,cAIQ5P,EAJR,yCAUa3vD,KAAKisD,KAAK0D,EAAgB5O,GAVvC,8DAWa/gD,KAAK0vE,gBAAgB52B,GAXlC,oH,4DA8BA,WAA+BA,EAAU+mB,EAAStM,GAAlD,iGAA4DjkD,EAA5D,+BAAsE,GAC9DyxC,EAAM,KAAQ/gD,KAAKuwD,GAAGC,SAAUlhD,GADxC,SAEyBtP,KAAK2zB,QAAQotB,GAFtC,cAEQme,EAFR,gBAIgCl/D,KAAK6vD,gBAAgB,KAAQ9O,EAAK,CAC9DjI,WACA+mB,UACAX,WACA3L,cARJ,cAIQ1D,EAJR,yCAWa7vD,KAAKisD,KAAK4D,EAAiB9O,GAXxC,8DAYa/gD,KAAK0vE,gBAAgB52B,GAZlC,oH,sBAkDA,SAvBeyX,WAAW,CACxB7kD,QAAS,CACPikE,e,+CACAb,e,iDACAE,gB,+CACAH,kB,+CACAW,qBAvJG,SAAP,sCAwJIb,eAzMJ,SAAyB71B,EAAU82B,GAAmC,oEAAJ,GAAI,IAAxB3U,gBAAwB,MAAb,IAAa,EAC9D4U,EAAgB,IAAI,MACpBC,EAAe,+BAAG,iHACE,EAAKhc,IAAIya,yBAAyBz1B,GADpC,sBAC+C21B,cAD/C,0BACgE,GADhE,mBAChBD,GADgB,sBAEZ,gBAAGtmE,EAAH,EAAGA,GAAH,OAAa2nE,EAAcvoE,IAAIY,MACzC,KAAAsmE,GAAO,KAAPA,GAAgB,gBAAGtmE,EAAH,EAAGA,GAAH,OAAY2nE,EAAcroE,IAAIU,MAC1CsmE,EAAQvuE,QAAQ2vE,EAAQpB,GAJN,4CAAH,qDAOrBsB,IACA,IAAMC,EAAa,KAAYD,EAAiB7U,GAChD,OAAO,kBAAM+U,cAAcD,KA+LzBL,gB,6CACAR,e,gDAEF5e,UAAW,CACTC,GAAI,CACFC,SAAU,CACR8O,SAAU31B,GACV41B,UAAW31B,GACX+1B,SAAU91B,GACV61B,YAAa51B,QC7OrB,GAAeymB,WAAW2H,GAAI+X,GAAQC,GAAUC,GAAM/X,GAAOgY,I,+aC5B7D,IAAM1H,GAAgB,MACnBI,GAAQQ,iBAAkB,SAAC7lB,EAAD,OAAaqS,EAAb,EAAaA,OAAb,sCACzB,WAAO/X,GAAP,kEACE+X,EAAOiW,YAAW,GAClBtoB,EAASmoB,aAAa7tB,EAAI5tB,OAAQ2lC,GAFpC,2CADyB,yDAOvByX,GAAY,GAEZ5E,IAAQ,SAGXG,GAAQI,KAAKC,SAHF,SAGYkH,EAAc5sB,EAAUqS,EAHpC,GAGiF,IAAnCp2D,EAAmC,EAAnCA,KAAM21D,EAA6B,EAA7BA,UAAWxmD,EAAkB,EAAlBA,QAAS48D,EAAS,EAATA,MAElF,OAAI58D,IAAY05D,GAAgB,CAAEjkE,MAAOwlE,GAAOQ,wBAGhDxU,EAAOsW,WAAW,CAChBnlD,OAAQsiD,GAAWI,+BACnBjqE,OACA21D,YACAoW,QACA58D,YAIKwhE,EACL,eACA,CAAE3wE,OAAM21D,YAAWxmD,YACnB,WAEE,OADAinD,EAAOsW,WAAW,CAAEnlD,OAAQsiD,GAAWC,YAChC,CAAE1oE,OAAQ2iD,EAAS6sB,oBAE5B,SAAChsE,GAEC,OADAwxD,EAAOsW,WAAW,CAAEnlD,OAAQsiD,GAAWG,sBAChC,CAAEplE,MAAOwlE,GAAOI,eAAe5lE,WA1BhC,MA8BXwkE,GAAQI,KAAKE,kBA9BF,SA8BqBiH,EAAc5sB,EAAUqS,EA9B7C,GA8BsE,IAAftvD,EAAe,EAAfA,KAAM1G,EAAS,EAATA,MAEvE,OAAKg2D,EAAOyW,cAEL8D,EACL,iBACA,CAAE7pE,OAAM1G,SAFS,cAGjB,2IAAsB,GAAby8D,EAAT,EAASA,SAAT,SAEUgU,EAAiBhU,GAAY9Y,EAAS+sB,cACvCjF,GAAgBgF,GAHzB,sBAGgD,IAAIrtD,MAAM,oCAH1D,cAIUsqD,EAAe1X,EAAO8W,mBAAmBpmE,EAAM1G,GACrDg2D,EAAO4W,YAAY6D,EAAgB,CAAE5D,mBAAmB,IAL5D,kBAMW,CACL7rE,OAAQ,CACN0sE,eACA75C,QAAS48C,KATjB,yCAaIl+D,QAAQ/N,MAAR,MAbJ,kBAcW,CAAEA,MAAOwlE,GAAOM,cAAc,CAAErsB,IAAK,KAAE96B,YAdlD,2DAiBA,SAAC3e,GAAD,MAAY,CAAEA,MAAOwlE,GAAOG,eAAe3lE,OAtBX,CAAEA,MAAOwlE,GAAOO,mBAhCxC,MAyDXvB,GAAQI,KAAKv1C,SAzDF,SAyDY08C,EAAc5sB,EAAUqS,GAE9C,OAAKA,EAAOyW,eACPzW,EAAOuW,eAELgE,EACL,gBACA,IACA,0EAAgB,GAAb9T,EAAH,EAAGA,SAAH,MAAwB,CAAEz7D,OAAQy7D,GAAY,oBAAI,KAAYzG,EAAOyG,SAAS2P,UAApC,GAAiD,KAAYpW,EAAOyG,SAAS4P,iBACvH,SAAC7nE,GAAD,MAAY,CAAEA,MAAOwlE,GAAOG,eAAe3lE,OAPX,CAAEA,MAAOwlE,GAAOO,mBA3DxC,MAqEXvB,GAAQI,KAAKzrB,MArEF,SAqES4yB,EAAc5sB,EAAUqS,EArEjC,GAqE6F,IAAlDtQ,EAAkD,EAAlDA,GAAI6b,EAA8C,EAA9CA,UAAWhM,EAAmC,EAAnCA,UAAmC,IAAxBgZ,oBAAwB,SACjG16C,EAAU0tC,GAAavL,EAAOkW,eAIpC,OAFA3W,GAAaS,EAAOsW,WAAW,CAAE/W,cAE5BS,EAAOyW,cAEPzW,EAAOwW,mBAAmB34C,GAE1B0hC,GAAaA,IAAc5R,EAAS2R,eAElCib,EACL,SACA,CAAE7qB,KAAI6oB,eAAchN,UAAW1tC,EAASwzB,SAAUwW,cAAoBnY,IAFrD,+BAGjB,WAAO+B,GAAP,wFAAcxG,EAAd,+BAAoB,GAApB,SAGI0vB,EAAQjF,GAAiB/nB,EAAS8d,YAAa5tC,EAASotB,GAH5D,sDAKI1uC,QAAQ/N,MAAR,MALJ,kBAMW,CAAEA,MAAOwlE,GAAOM,cAAc,CAAErsB,IAAK,KAAE96B,YANlD,oBAUcorD,EAVd,kCAWqC5qB,EAASyT,gBAAgB3P,GAAS/B,EAAI,CAAE6b,UAAWoP,IAXxF,0BAWYhD,kBAXZ,+CAYmChqB,EAASwI,KAAK1E,GAAS/B,EAAI,CAAE6b,UAAWoP,EAAO9yB,QAAQ,IAZ1F,0BAYY+vB,gBAZZ,kDAUM5sE,OAVN,4CAeSutE,EAfT,kCAiB+BvV,GAAkBvR,GAAS/B,EAAI/B,EAAS8R,aAAa9R,UAjBpF,aAiBYyW,EAjBZ,QAkBqBj6D,OAlBrB,0CAkBoC,CAAEqE,MAAOwlE,GAAOE,mBAAmB9P,KAlBvE,iCAoBa,CAAE51D,MAAOwlE,GAAOC,gBAAgB,KAAE9mD,WApB/C,mFAHiB,uDA4BjB,SAAC3e,GAAD,MAAY,CAAEA,MAAOwlE,GAAOG,eAAe3lE,OA9BmB,CAAEA,MAAOwlE,GAAOS,sBAFhC,CAAEjmE,MAAOwlE,GAAOK,eAAe,CAAEz7B,QAAS/a,KAFxD,CAAErvB,MAAOwlE,GAAOO,mBA1ExC,MA+GXvB,GAAQI,KAAKlrB,aA/GF,SA+GgBqyB,EAAc5sB,EAAUqS,EA/GxC,GA+GwE,IAAtB7yC,EAAsB,EAAtBA,QAASo+C,EAAa,EAAbA,UAErE,IAAKvL,EAAOyW,cAAe,MAAO,CAAEjoE,MAAOwlE,GAAOO,gBAClD,IAAM12C,EAAU0tC,GAAavL,EAAOkW,eACpC,OAAKlW,EAAOwW,mBAAmB34C,GAExB08C,EACL,gBACA,CAAEptD,UAASo+C,UAAW1tC,GAFL,cAGjB,0GAAOotB,EAAP,+BAAa,GAAb,SAEU0vB,EAAQjF,GAAiB/nB,EAAS8d,YAAa5tC,EAASotB,GAFlE,SAKyB0C,EAASzF,YAAY/6B,EAAS,CAC7Co+C,UAAWoP,EACX1Z,WAAW,IAPrB,gCAKQnZ,UALR,yBAIM98C,OAJN,gDAYIuR,QAAQ/N,MAAR,MAZJ,kBAaW,CAAEA,MAAOwlE,GAAOM,cAAc,CAAErsB,IAAK,KAAE96B,YAblD,2DAgBA,SAAC3e,GAAD,MAAY,CAAEA,MAAOwlE,GAAOG,eAAe3lE,OArBG,CAAEA,MAAOwlE,GAAOK,eAAe,CAAEz7B,QAAS/a,QAnHhF,IA6IRg6C,GAAgB,SAAClqB,EAAUv7C,GAAX,sCAAkB,WAAO61C,EAAK1lB,GAAZ,qFAChCy9B,EAASrS,EAASitB,WAAWxoE,GAC9B61C,EAAI71C,GAF6B,yCAG7BgjE,GAAWxC,GAAe3qB,EAAK,CAAEotB,MAAO1nB,EAAS0nB,OAAjDD,CAA0DznB,EAAU,CAAEqS,UAAtEoV,CAAgFntB,EAAK1lB,IAHxD,WAKlCv6B,OAAOrB,UAAU0V,eAAe7Q,KAAKw0D,EAAO+V,UAAW9tB,EAAI71C,IALzB,yCAM7BgjE,GAAWqC,GAAWxvB,EAAK,CAAEotB,MAAO1nB,EAAS0nB,OAA7CD,CAAsDznB,EAAU,CAAEqS,UAAlEoV,CAA4EntB,EAAK1lB,IANpD,UAQ5BnwB,EAAe61C,EAAf71C,GAAIxE,EAAWq6C,EAAXr6C,OACN2sE,EAAe,SAAC1wC,EAAYxP,EAAQwgD,EAAQC,GAA7B,OAAsC,kBAAM,IAAI,KAAJ,EAAY,SAAAl6D,GAC3E+sC,EAAS9jB,GACPm2B,EACA,CACE5tD,KACAxE,SACAysB,SACAwgD,OAAQ,kBAAaj6D,EAAQi6D,EAAM,WAAN,eAC7BC,KAAM,kBAAal6D,EAAQk6D,EAAI,WAAJ,gBAE7Bv4C,QAK6C,mBAD3Cw4C,EAAuB3F,GAAWvC,GAAU5qB,EAAK,CAAEotB,MAAO1nB,EAAS0nB,OAA5CD,CAAqDmF,EAAc5sB,EAAUqS,EAAQ/X,EAAI5tB,SAvBlF,kCAwBgC0gD,IAxBhC,iDAwByDA,EAxBzD,QAwB9Btd,EAxB8B,KAyBpC8X,GAAoBvV,EAApBuV,CAA4BnjE,EAAIxE,EAAQ6vD,GAzBJ,4CAAlB,yDA4CtB,SAAehD,WAAWugB,GAAiB,CACzChrD,KADyC,WACsG,0EAAJ,GAAnIpmB,EAAuI,EAAvIA,KAAMqxE,EAAiI,EAAjIA,aAAcC,EAAmH,EAAnHA,eAAgBC,EAAmG,EAAnGA,OAAQrF,EAA2F,EAA3FA,aAAcsF,EAA6E,EAA7EA,cAAeC,EAA8D,EAA9DA,cAA8D,IAA/CvD,uBAA+C,aAAtBzC,aAAsB,SAC7InrE,KAAKmrE,MAAQA,EACb,IAAM0C,EAAiB,CAAC,eAAgB,iBAAkB,SAAU,eAAgB,iBAEpF7tE,KAAK+wE,aAAeA,EACpB/wE,KAAKgxE,eAAiBA,EACtBhxE,KAAKixE,OAASA,EACdjxE,KAAK4rE,aAAeA,EACpB5rE,KAAKkxE,cAAgBA,EACrBlxE,KAAKmxE,cAAgBA,EACrBnxE,KAAK0wE,WAAa,GAElB,KAAA7C,GAAc,KAAdA,GAAuB,SAAAxsD,GACrB,IAAKusD,GAA0C,mBAAhB,EAAKvsD,GAAuB,MAAM,IAAI6B,MAAJ,wBAA2B7B,EAA3B,6BAGnErhB,KAAKN,KAAOA,EACZM,KAAKkI,IAAK+4C,WAEV,IAAMmwB,EAAiB,OAAApxE,KAAKyhE,eAAL,OAAwBzhE,MACzCqxE,EAAc,OAAArxE,KAAKwhE,YAAL,OAAqBxhE,MACnCsxE,EAAc,OAAAtxE,KAAK45D,YAAL,OAAqB55D,MAGzCA,KAAKyhE,cAAgB,SAAC9tC,GAA6C,iEAAP,GAAO,IAAlCze,iBAAkC,MAAtB,kBAAM,GAAgB,EACjEk8D,EAAez9C,GACf,mBAAc,EAAK+8C,aAAnB,QACU,SAAA5a,GAAM,OAAIA,EAAOyW,eAAiBzW,EAAOuW,gBAC/CvW,EAAOwW,mBAAmB34C,IAAYze,EAAU4gD,OAFpD,QAGW,SAAAA,GAAM,eAAIA,EAAO4W,YAAY,CACpCR,QAAS,MAAGv4C,EAAU,IACtBw4C,UAAW,SACNrW,EAAOyG,SAAS2P,SAChB,mBAAepW,EAAOyG,SAAS4P,YAA/B,QACO,0BAAE1tD,EAAF,iBAAYA,IAAMkV,MADzB,QAEO,SAACwH,EAAD,iBAAO1c,EAAP,KAAUyH,EAAV,eAAC,MAAsBiV,GAAvB,SAA6B1c,EAAIyH,MAAM,WAIzDlmB,KAAKwhE,WAAL,+BAAkB,WAAO9yB,GAAP,4IAAgE,GAA9CorB,EAAlB,EAAkBA,OAAlB,IAA0B9mD,YAA1B,MAAiC,GAAjC,MAAqCkC,iBAArC,MAAiD,kBAAM,GAAvD,WACVm8D,EAAY3iC,EAAS,CAAEorB,WADb,uBAEMprB,EAAQ/a,UAFd,OAEVA,EAFU,OAIhB,mBAAc,EAAK+8C,aAAnB,QACU,SAAA5a,GAAM,OAAIA,EAAOyW,eAAiBzW,EAAOuW,gBAAkBn3D,EAAU4gD,OAD/E,QAEW,SAAAA,GAAM,OAAIA,EAAO4W,YAAY,CACpCR,QAAS,MAAKpS,EAAS,MAAGnmC,EAAU3gB,GAAS8iD,EAAOyG,SAAS2P,SAC7DC,UAAW,SACNrS,EAAShE,EAAOyG,SAAS2P,QAAnB,MAAgCv4C,EAAU3gB,IAChD8iD,EAAOyG,SAAS4P,gBAVT,2CAAlB,kCAAAnsE,KAAA,eAcAA,KAAK45D,WAAa,SAACl6D,GAAS,QAC1B4xE,EAAY5xE,GAEZ,mBAAc,EAAKgxE,aAAnB,QACU,SAAA5a,GAAM,OAAIA,EAAOyW,kBAD3B,QAEW,SAAAzW,GAAM,OAAIA,EAAO8U,YACxB3nD,GAAQ6lD,GAAQO,cAAe,CAAEhU,UAAW,EAAKD,kBAAmB,QAI5E1pD,QAAS,CAUP6lE,gBAVO,SAUUrpE,GAA2C,6DAAJ,GAAI,IAArCukE,4BAAqC,SACpD3W,EAAS91D,KAAK0wE,WAAWxoE,GAC/B,IAAK4tD,EAAQ,MAAM,IAAI5yC,MAAJ,4BAA+Bhb,EAA/B,kBACnB4tD,EAAOiW,WAAWU,UACXzsE,KAAK0wE,WAAWxoE,IAUzBspE,aAxBO,SAwBOC,GAEZ,IAAMvpE,GAAK+4C,WAOX,OANAjhD,KAAK0wE,WAAWxoE,GAAM8lE,GAAU,CAC9B9lE,KACAw8B,KAAM,CAAEzd,OAAQsiD,GAAWK,gCAC3BiB,WAAY4G,EACZ/F,SAAU,CAACiC,GAAc3tE,KAAMkI,GAAKlI,KAAK4rE,gBAEpC1jE,GAWTwpE,gBA5CO,SA4CUC,GACfA,EAAO,IACL1G,QAAS,OACNhoD,GAAQ6lD,GAAQC,OAAOC,eAAgBhpE,KAAKswE,oBAUnDA,cAzDO,WA0DL,IAAM1uC,EAAU4oC,IAAc,GAAM5oC,QACpC,MAAO,CACL15B,GAAI05B,GAAWA,EAAQ15B,GAAK05B,EAAQ15B,GAAKlI,KAAKkI,GAC9CxI,KAAMM,KAAKN,KACX21D,UAAWr1D,KAAKo1D,eAChB/8B,OAAQ/pB,OAAOsS,SAASyX,OACxB7xB,KAAMo7B,GAAWA,EAAQ15B,GAAKugE,GAAYmJ,UAAYnJ,GAAYn6D,SAUtEkiE,YA1EO,WA0EQ,eACb,MAAO,CACLtE,QAASlsE,KAAKohE,gBAAL,MAA0BphE,KAAKohE,gBAAkB,IAAO,GACjE+K,UAAW,cAAAnsE,KAAKuhE,aAAL,QACD,SAAAj4D,GAAC,OAAIA,IAAM,EAAK83D,oBADf,QAED,SAACjmC,EAAK7xB,GAAN,UAAC,MAAiB6xB,GAAlB,SAAwB7xB,EAAI,OAAO,SCjTrD,GAAeinD,WAAWshB,GAAW3Z,GAAIgY,GAAUD,GAAQE,GAAM2B,GAAmB1Z,I,0DCrBvE9oD,GAAU,IAAI,MACd2X,GAAS,IAAI,MACblgB,GAAQ,IAAI,MACnBgrE,GAAM,IAAI,MACVC,GAAa,IAAI,MACVC,GAAgB,IAAI,MAC3BC,GAAe,IAAI,MACnBC,GAAqB,IAAI,MACzBC,GAAc,IAAI,MAClBC,GAAoB,IAAI,MACxBjjD,GAAW,IAAI,MACR2wC,GAAY,IAAI,MACvBuS,GAAe,IAAI,MACnBC,GAAgB,IAAI,MACpBC,GAAgB,IAAI,MACbC,GAAQ,IAAI,MAElB,SAAStoD,GAAMzJ,GAAkB,6BAANjP,EAAM,iCAANA,EAAM,mBACtC,EAAAwgE,GAAc1qE,IAAImZ,IAASyJ,KAA3B,QAAmC1Y,GAGrC,SAASihE,GAAYhyD,EAASiyD,GAC5B,IAAKA,EACH,MAAM,IAAIzvD,MAAM,4CAElB6uD,GAAI/rE,IAAI0a,EAASiyD,GACbA,EAAU/oD,QAAQnT,OACpBk8D,EAAU/oD,QAAQnT,MAAMiK,GAE1BkyD,GAAclyD,GAGT,SAASmyD,GAAcnyD,EAASoyD,GAEjCA,IADe7rD,GAAO1f,IAAImZ,KAE5BuG,GAAOjhB,IAAI0a,EAASoyD,GACpB3oD,GAAKzJ,EAAS,gBAAiBoyD,IAI5B,SAASC,GAAaryD,EAASsyD,GACpCjsE,GAAMf,IAAI0a,EAASsyD,GACnB7oD,GAAKzJ,EAAS,eAAgBsyD,GAGzB,SAAS/mB,GAAMvrC,EAASuC,GAC7B,MAA0B3T,GAAQ/H,IAAImZ,GAA9ByqD,WAAR,UACW94D,QAAQq6C,IAAI,iBAAkBzpC,GACzC+uD,GAAWzqE,IAAImZ,GAASurC,KAAK+F,aAAkB/uC,IAG1C,SAASgwD,GAAevyD,EAASwyD,EAAOC,GAAQ,MACrDf,GAAYpsE,IAAI0a,EAAhB,oBACK0xD,GAAY7qE,IAAImZ,IAAY,IADjC,CAEE,CAAEwyD,QAAOC,aAEXP,GAAclyD,G,SAGDkyD,G,yEAAf,WAA8BlyD,GAA9B,mFACQ0yD,EAASf,GAAkB9qE,IAAImZ,GAC/BO,EAAQmxD,GAAY7qE,IAAImZ,IAAY,IACtC0yD,GAAWnyD,EAAMhhB,OAHvB,oDAMQ8G,EAAQgrE,GAAIxqE,IAAImZ,IAEP,KADTvgB,EAAQ,IAAA8gB,GAAK,KAALA,GAAgB,SAAA2d,GAAI,OAAIA,EAAKs0C,MAAMxyD,EAAS3Z,OAP5D,wDAWEqrE,GAAYpsE,IAAI0a,EAAS,KAAAO,GAAK,KAALA,GAAa,SAACutC,EAAG1qD,GAAJ,OAAU3D,IAAU2D,MAC1DuuE,GAAkBrsE,IAAI0a,GAAS,GAZjC,UAa0B,aAAgBO,EAAM9gB,GAAOgzE,OAAOzyD,EAAS3Z,IAbvE,QAaQ4rE,EAbR,OAcEN,GAAkBrsE,IAAI0a,GAAS,GAC/BgyD,GAAWhyD,EAASiyD,GAftB,6C,+BAkBehF,G,2EAAf,WAA8BjtD,EAASuC,GAAvC,qFAC6B8uD,GAAIxqE,IAAImZ,GAA3BkJ,EADV,EACUA,QAAS7iB,EADnB,EACmBA,MADnB,KAEE2rE,GAFF,KAEahyD,EAFb,SAE4B,aAAgBkJ,EAAQlJ,EAASuC,EAASlc,IAFtE,mF,+BAKessE,G,yEAAf,WAA+B3yD,GAA/B,iFACQO,EAAQixD,GAAa3qE,IAAImZ,IAC3ByxD,GAAmB5qE,IAAImZ,IAAaO,EAAMhhB,OAFhD,6DAKkCghB,GAAzBgC,EALT,KAKqB8D,EALrB,iBAMEmrD,GAAalsE,IAAI0a,EAASqG,GAAa,IACvCorD,GAAmBnsE,IAAI0a,GAAS,GAPlC,SAQQitD,GAAcjtD,EAASuC,GAR/B,OASEkvD,GAAmBnsE,IAAI0a,GAAS,GAChC2yD,GAAe3yD,GAVjB,6C,sBAaA,SAAS4yD,GAAM5yD,GACb6yD,aAAahB,GAAchrE,IAAImZ,IAC/B6yD,aAAaf,GAAcjrE,IAAImZ,IAC/B6xD,GAAcvsE,IAAI0a,EAAS,MAAW,WACpCurC,GAAKvrC,EAAS,CACZuqD,QAAS,MACTvnE,OAAQ,kBACRysB,OAAQ,CACNgjD,OAAQ,UAGZX,GAAcxsE,IAAI0a,EAAS,MAAW,WACpCqrD,GAAWrrD,GACXyJ,GAAKzJ,EAAS,QAAS,IAAIwC,MAAM,4BA9Gf,QAFA,MAqHxB,SAASyoD,GAAWjrD,EAAStZ,GAC3B,IAAM6b,EAAU+uC,SAAc5qD,GAC9B,EAA0BkI,GAAQ/H,IAAImZ,GAA9ByqD,MAER,QAFA,UACW94D,QAAQq6C,IAAI,oBAAqBzpC,GACxCA,EAAQ/a,GAAI,CACd,IAAM4oB,EAAWwhD,GAAa/qE,IAAImZ,GAASnZ,IAAI0b,EAAQ/a,IACvD,IACE4oB,EAAS7N,GADX,QAGEqvD,GAAa/qE,IAAImZ,GAAjB,OAAiCuC,EAAQ/a,UAEtC,GAAuB,qBAAnB+a,EAAQvf,OACjBymB,GAAKzJ,EAAS,UAAWuC,EAAQkN,OAAO/oB,KAAK6b,cACxC,GAAuB,yBAAnBA,EAAQvf,OAEduf,EAAQkN,OAAOqjD,aAAezT,GAAUx4D,IAAImZ,IAElB,MAA1Bq/C,GAAUx4D,IAAImZ,IAEf4yD,GAAK5yD,OAEF,OACLwxD,GAAalsE,IAAI0a,EAAjB,oBAA+BwxD,GAAa3qE,IAAImZ,IAAY,IAA5D,CAAiEuC,KACjEowD,GAAe3yD,IAYZ,SAASpf,GAAMof,EAAShd,EAAQysB,GACrC,OAAO,IAAI,KAAJ,EAAY,SAACzZ,EAASmB,GAC3B,IAAM3P,EAAKknB,GAASppB,IAAI0a,EAAS0O,GAAS7nB,IAAImZ,GAAW,GAAGnZ,IAAImZ,GAChE4xD,GAAa/qE,IAAImZ,GAAS1a,IAAIkC,GAAI,SAAC+a,GACjC,OAAIA,EAAQniB,OAAe4V,EAAQuM,EAAQniB,QACvCmiB,EAAQ3e,MAAcuT,EAbhC,SAA+BoL,GAC7B,IACa,EADb,KAAoCA,EAAQ3e,MAAM8C,MAAQ,GAA1D,MAAkBqsE,GAAlB,aAA8B,GAA9B,GAASxwD,QACT,OAAIwwD,EACK,IAAIvwD,MAAJ,gBAAaD,EAAQ3e,MAAM2e,QAA3B,cAAuCwwD,IAEzC,IAAIvwD,MAAMD,EAAQ3e,MAAM2e,SAQMywD,CAAqBzwD,SAAtD,KAEFgpC,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,SAAQwE,KAAIioB,cAIzC,SAAS47C,GAAYrrD,GAC1BsxD,GAAWzqE,IAAImZ,GAAS7G,QACxB05D,aAAahB,GAAchrE,IAAImZ,IAC/B6yD,aAAaf,GAAcjrE,IAAImZ,IAG1B,SAAeizD,GAAtB,qC,sCAAO,WAA2BjzD,EAA3B,4FAAsCzJ,EAAtC,EAAsCA,IAAQ28D,EAA9C,SACLtkE,GAAQtJ,IAAI0a,EAASkzD,GACrB7B,GAAI/rE,IAAI0a,EAAS,CACfkJ,QAASgqD,EAAeC,cAAgBC,GAAuBC,KAEjE9B,GAAcjsE,IAAI0a,EAAS,IAAIszD,iBAC/B5kD,GAASppB,IAAI0a,EAAS,GACtB4xD,GAAatsE,IAAI0a,EAAS,IAAI,OAExBuzD,EAAQ,IAAI,KAAJ,CAAQh9D,GACtB,mBAAe28D,IAAf,QACU,kBAAEv1E,EAAF,kBAAY,QAAC,OAAQ,UAAT,OAA2BA,OADjD,QAEW,0BAAEA,EAAF,KAAOyB,EAAP,YAAkBm0E,EAAM98D,aAAanR,IAAIyhC,EAAcppC,GAAMyB,MACxEm0E,EAAM98D,aAAanR,IAAI,WAAY,YACnC6sE,GAAanyD,EAAS,cAChBuU,EAAK,IAAIi/C,gBAAaD,EAAMlvE,YAf7B,UAgBC,IAAI,KAAJ,EAAY,SAAC2R,EAASmB,GAAV,OAAqB,KAAcod,EAAI,CACvDk/C,QAASt8D,EACTu8D,OAAQ,WACN19D,IACAm8D,GAAanyD,EAAS,aAClBkzD,EAAeS,cACjB3B,GAAWhyD,EAAS,CAAEkJ,QAAS0qD,KAC/B,mBAAW,2FAAYvB,GAAZ,KAAwBryD,EAAxB,SACFpf,GAAKof,EAAS,8BAA+B,IAD3C,0BACgD6zD,UADhD,oFAIbjB,GAAK5yD,IAEP8zD,QAAS,WACP3B,GAAanyD,EAAS,gBACtB6yD,aAAahB,GAAchrE,IAAImZ,IAC/B6yD,aAAaf,GAAcjrE,IAAImZ,KAEjCkB,UAAW,gBAAGxa,EAAH,EAAGA,KAAH,OAAcukE,GAAUjrD,EAAStZ,SAlCzC,QAoCL4qE,GAAWhsE,IAAI0a,EAASuU,GApCnB,6C,sBClKP,SAASw/C,GAAa7hC,GACpB,mBAAa6G,GAAkB7G,I,SAGlB8hC,G,2EAAf,WAAgClvB,EAAImvB,GAApC,6FACoCluB,GAASjB,GAAIA,GAAvCxS,EADV,EACUA,WAAYyS,EADtB,EACsBA,UADtB,SAEuBkvB,EAAOF,GAAYhvB,EAAUf,aAFpD,UAGwB,iBADhB5jD,EAFR,iCAIqC2lD,GAAS3lD,GAA9B8zE,EAJhB,EAIYpvB,GAAczR,EAJ1B,EAI0BA,OAJ1B,kBAKW0gC,GAAYlvB,GAAQ,CACzBvS,WAAY,IAAAA,GAAU,KAAVA,EAAkB4hC,EAAS5hC,YACvCyS,UAAWmvB,EAASnvB,UAAUf,YAC7B3Q,GAAQ2Q,aARf,gCAUS5jD,GAVT,4C,sBAaA,SAAS+zE,GAAyBn0D,EAASuC,EAASlc,GAOlD,OANIA,GAASA,EAAM8Q,QACjB9Q,EAAM8Q,OAAO,KACX,IAAIqL,MAAJ,0CAA6C,KAAeD,KAC5D,CAAE6xD,UAAW7xD,KAGV,CAAE2G,QAAS0qD,IAGb,SAASP,GAAoBrzD,EAASuC,EAASlc,GACZ,MAAxC,MAAuB,kBAAnBkc,EAAQvf,OACN,QAAC,iBAAkB,oBAAnB,OAA+Cuf,EAAQkN,OAAO/oB,KAAKia,QACrEwxD,GAAanyD,EAAS,CACpBq0D,eAAgB,WAChBC,gBAAiB,cACjB/xD,EAAQkN,OAAO/oB,KAAKia,QACf,CAAEuI,QAASqrD,KAEc,0BAA9BhyD,EAAQkN,OAAO/oB,KAAKia,MACf,CAAEuI,QAASsrD,IAEc,WAA9BjyD,EAAQkN,OAAO/oB,KAAKia,OACtBoxD,OAAU/xD,EAASuC,EAAQkN,OAAO/oB,KAAK+tE,QAChC,CAAEvrD,QAASmqD,KAEb,CAAEnqD,QAASmqD,IAEG,mBAAnB9wD,EAAQvf,QACVymB,GAAKzJ,EAAS,QAAS,IAAIwC,MAAMD,EAAQuwB,QAAQvwB,UAC1C,CAAE2G,QAASwrD,UAFpB,EAMK,SAAetB,GAAtB,uC,sCAAO,WAAqCpzD,EAASuC,EAASlc,GAAvD,qEACkB,kBAAnBkc,EAAQvf,OADP,oBAE+B,WAA9Buf,EAAQkN,OAAO/oB,KAAKia,MAFrB,wBAGDoxD,OAAU/xD,EAASuC,EAAQkN,OAAO/oB,KAAK+tE,QAHtC,KAIDpC,GAJC,KAIWryD,EAJX,SAI2Bpf,GAAKof,EAAS,8BAA+B,IAJxE,0BAI6E6zD,WAJ7E,qCAKM,CAAE3qD,QAAS0qD,KALjB,iCAQEO,GAAwBn0D,EAASuC,EAASlc,IAR5C,6C,sBAWA,SAAekuE,GAAtB,uC,sCAAO,WAAwCv0D,EAASuC,EAASlc,GAA1D,+EACC3B,EAAM,CACViwE,UAAW,iBACXC,UAAW,kBACXhmE,GAAQ/H,IAAImZ,GAAS60D,MACnBtyD,EAAQvf,SAAR,wBAAoC0B,GALnC,qBAMC6d,EAAQkN,OAAO/oB,KAAKo+C,GANrB,gCAOsBl2C,GAAQ/H,IAAImZ,GAAS+8B,KAAKr4C,EAAK6d,EAAQkN,OAAO/oB,KAAKo+C,IAPzE,cAOKovB,EAPL,OAQD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,YAAF,OAAc0B,GAAO+qB,OAAQ,CAAEq1B,GAAIovB,KARxE,kBASM,CAAEhrD,QAAS4rD,KATjB,wBAWoBd,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OAAIl2C,GAAQ/H,IAAImZ,GAAS+8B,KAAKr4C,EAAKogD,MAXxG,eAWGovB,EAXH,OAYH3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,YAAF,OAAc0B,GAAO+qB,OAAQ,CAAEokD,UAAWK,KAZ7E,kBAaI,CAAEhrD,QAAS4rD,KAbf,6C,sBAiBA,SAASA,GAAmB90D,EAASuC,EAASlc,GACnD,GAAuB,yBAAnBkc,EAAQvf,OAAmC,CAC7C,GAC+B,mBAA7Buf,EAAQkN,OAAO/oB,KAAKs9B,MACU,cAA9Bp1B,GAAQ/H,IAAImZ,GAAS60D,KAErB,MAAO,CAAE3rD,QAAS6rD,IAEpB,GAC+B,oBAA7BxyD,EAAQkN,OAAO/oB,KAAKs9B,MACU,cAA9Bp1B,GAAQ/H,IAAImZ,GAAS60D,KAErB,MAAO,CAAE3rD,QAAS6rD,IAGtB,GACqB,kBAAnBxyD,EAAQvf,QACsB,mBAA9Buf,EAAQkN,OAAO/oB,KAAKia,OACU,cAA9B/R,GAAQ/H,IAAImZ,GAAS60D,KAIrB,OAFAxV,OAAcr/C,EAASuC,EAAQkN,OAAOqjD,YACtCX,GAAanyD,EAAS,UACf,CAAEkJ,QAAS4rD,IAIf,SAASC,GAAwB/0D,EAASuC,EAASlc,GACxD,GAAuB,kBAAnBkc,EAAQvf,OAA4B,CACtC,IAAMkmB,EAAU,CACdorD,gBAAiBS,GACjBC,mBAAoBD,GACpBE,eAAgBT,IAChBjyD,EAAQkN,OAAO/oB,KAAKia,OACtB,GAAIuI,EACF,MAAO,CAAEA,WAGb,GAAuB,yBAAnB3G,EAAQvf,OAKV,OAJAymB,GAAKzJ,EAAS,YAAauC,EAAQkN,OAAO/oB,KAAKo+C,GAAI,CACjD9gB,KAAMzhB,EAAQkN,OAAO/oB,KAAKs9B,KAC1Bl+B,KAAMyc,EAAQkN,OAAO/oB,KAAKZ,OAErB,CAAEojB,QAAS6rD,IAIf,SAASP,GAA0Bx0D,EAASuC,EAASlc,GAC1D,GAAuB,kBAAnBkc,EAAQvf,QAA4D,SAA9Buf,EAAQkN,OAAO/oB,KAAKia,MAE5D,OADA0+C,OAAcr/C,EAASuC,EAAQkN,OAAOqjD,YAC/B,CAAE5pD,QAASgsD,IAIf,SAASA,GAAsBl1D,EAASuC,EAASlc,GACtD,GAAuB,oBAAnBkc,EAAQvf,OAEV,OADAqvE,GAAYryD,EAASuC,EAAQkN,OAAO/oB,KAAKL,OAClC,CAAE6iB,QAAS0qD,IAIf,SAAeA,GAAtB,uC,sCAAO,WAA4B5zD,EAASuC,EAASlc,GAA9C,uEACGkc,EAAQvf,OADX,OAEE,kBAFF,OAwCE,yBAxCF,QA8CE,mBA9CF,QAiDE,oBAjDF,QAoDE,oCApDF,6BAGOuf,EAAQkN,OAAO/oB,KAAKia,MAH3B,OAIM,WAJN,MAKM,qBALN,MAMM,oBANN,OAQM,wBARN,MASM,oBATN,MAUM,uBAVN,MAWM,mBAXN,MAYM,sBAZN,MAaM,0BAbN,MAcM,SAdN,OAqBM,WArBN,OAwBM,YAxBN,MAyBM,iBAzBN,QA2BM,YA3BN,QA8BM,qBA9BN,QAiCM,SAjCN,QAoCM,aApCN,iDAOU,CAAEuI,QAASisD,KAPrB,cAmBG1rD,GAAKzJ,EAASuC,EAAQkN,OAAO/oB,KAAKia,OAnBrC,kBAoBU,CAAEuI,QAAS0qD,KApBrB,cAsBG7B,OAAU/xD,EAASuC,EAAQkN,OAAO/oB,KAAK+tE,QAtB1C,kBAuBU,CAAEvrD,QAAS0qD,KAvBrB,iCA0BU,CAAE1qD,QAAS0qD,KA1BrB,eA4BGzB,GAAanyD,EAAS,WA5BzB,kBA6BU,CAAEkJ,QAAS0qD,KA7BrB,eA+BGzB,GAAanyD,EAAS,UA/BzB,kBAgCU,CAAEkJ,QAASwrD,KAhCrB,eAkCGvC,GAAanyD,EAAS,QAlCzB,kBAmCU,CAAEkJ,QAASwrD,KAnCrB,iCAqCU,CAAExrD,QAAS0qD,KArCrB,mDAyCDnqD,GAAKzJ,EAAS,YAAauC,EAAQkN,OAAO/oB,KAAKo+C,GAAI,CACjD9gB,KAAMzhB,EAAQkN,OAAO/oB,KAAKs9B,KAC1Bl+B,KAAMyc,EAAQkN,OAAO/oB,KAAKZ,OA3C3B,kBA6CM,CAAEojB,QAAS0qD,KA7CjB,iCAgDM,CAAE1qD,QAAS0qD,KAhDjB,eAkDDvB,GAAYryD,EAASuC,EAAQkN,OAAO/oB,KAAKL,OAlDxC,kBAmDM,CAAE6iB,QAAS0qD,KAnDjB,iCAqDMuB,GAAsBn1D,EAASuC,EAASlc,IArD9C,6C,sBA4DA,SAAe+uE,GAAtB,uC,sCAAO,WAAmCp1D,EAASuC,EAASlc,GAArD,mFACkB,yBAAnBkc,EAAQvf,OADP,oBAEK+5C,EAAS12C,EAAT02C,MACJx6B,EAAQkN,OAAO/oB,KAAKo+C,GAHrB,gCAIsB/H,EAAKx6B,EAAQkN,OAAO/oB,KAAKo+C,GAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,UAJlF,cAIKnB,EAJL,OAKD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAEq1B,GAAIovB,KALxE,kBAMM,CAAEhrD,QAASosD,GAAwBjvE,UANzC,wBAQoB2tE,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OACtE/H,EAAK+H,EAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,aATvC,WAWqB,iBAHlBnB,EARH,gCAYD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAEokD,UAAWK,KAZ/E,kBAaM,CAAEhrD,QAASosD,GAAwBjvE,UAbzC,WAeqB,iBAAb6tE,EAfR,wBAgBD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAE7rB,MAAOswE,KAhB3E,kBAiBM,CAAEhrD,QAASksD,GAAoB/uE,UAjBrC,WAoBkB,mBAAnBkc,EAAQvf,OApBP,wBAqBHqD,EAAM8Q,OAAO,IAAIqL,MAAMD,EAAQ7b,KAAK6b,UArBjC,kBAsBI,CAAE2G,QAAS0qD,KAtBf,YAwBDrxD,EAAQ3e,MAxBP,0BAyBmB2e,EAAQ3e,MAAtB8C,YAzBL,MAyBY,GAzBZ,EA0BC,KAAAA,GAAI,KAAJA,GAAU,SAAAtD,GAAC,OAAe,OAAXA,EAAE6wB,QACnB5tB,EAAM8Q,OAAO,IAAIqL,MAAM,yBACd,KAAA9b,GAAI,KAAJA,GAAU,SAAAtD,GAAC,OAAe,OAAXA,EAAE6wB,QAC1B5tB,EAAM8Q,OAAO,IAAIqL,MAAM,8BAEvBnc,EAAM8Q,OAAO,IAAIqL,MAAMD,EAAQ3e,MAAM2e,UA/BpC,kBAiCI,CAAE2G,QAAS0qD,KAjCf,WAmCkB,sBAAnBrxD,EAAQvf,OAnCP,wBAoCHqD,EAAM2P,QAAQ,CACZu/D,UAAU,EACVC,UAAWjzD,EAAQkN,OAAO/oB,KAAK+uE,WAC/BC,aAAcnzD,EAAQkN,OAAO/oB,KAAKivE,YAvCjC,kBAyCI,CAAEzsD,QAAS0qD,KAzCf,WA2CkB,kBAAnBrxD,EAAQvf,OA3CP,oBA4C+B,mBAA9Buf,EAAQkN,OAAO/oB,KAAKia,MA5CrB,wBA6CDta,EAAM2P,QAAQ,CAAEu/D,UAAU,IA7CzB,kBA8CM,CAAErsD,QAAS0qD,KA9CjB,iCAiDEO,GAAwBn0D,EAASuC,EAASlc,IAjD5C,6C,sBAoDA,SAASivE,GAAwBt1D,EAASuC,EAASlc,GACxD,MAAuB,oBAAnBkc,EAAQvf,QACVqvE,GAAYryD,EAASuC,EAAQkN,OAAO/oB,KAAKL,OACzCA,EAAM2P,QAAQ,CAAEu/D,UAAU,EAAMrB,SAAU3xD,EAAQkN,OAAO/oB,KAAKL,QACvD,CAAE6iB,QAAS0qD,KAEG,sBAAnBrxD,EAAQvf,QACVqD,EAAM2P,QAAQ,CACZu/D,UAAU,EACVC,UAAWjzD,EAAQkN,OAAO/oB,KAAK+uE,WAC/BC,aAAcnzD,EAAQkN,OAAO/oB,KAAKivE,YAE7B,CAAEzsD,QAAS0qD,KAEG,kBAAnBrxD,EAAQvf,QACwB,mBAA9Buf,EAAQkN,OAAO/oB,KAAKia,OACtBta,EAAM2P,QAAQ,CAAEu/D,UAAU,IACnB,CAAErsD,QAAS0qD,KAGlBrxD,EAAQ3e,OACVyC,EAAM8Q,OAAO,IAAIqL,MAAMD,EAAQ3e,MAAM2e,UAC9B,CAAE2G,QAAS0qD,KAEbO,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAAe8uE,GAAtB,uC,sCAAO,WAAsCn1D,EAASuC,EAASlc,GAAxD,qFACWkc,EAAQvf,OAAOkL,MAAM,8BAAgC,GADhE,YACIxJ,EADJ,2BAGC6d,EAAQkN,OAAO/oB,KAAKo+C,GAHrB,iCAIsBl2C,GAAQ/H,IAAImZ,GAAS+8B,KAAKr4C,EAAK6d,EAAQkN,OAAO/oB,KAAKo+C,GAAI,CAC5EuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,UAL9B,YAIKnB,EAJL,+BAQC3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,YAAF,OAAc0B,GAAO+qB,OAAQ,CAAEq1B,GAAIovB,KAR1E,kBASQ,CAAEhrD,QAAS0qD,KATnB,gDAYsBI,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OACtEl2C,GAAQ/H,IAAImZ,GAAS+8B,KAAKr4C,EAAKogD,EAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,aAbnE,WAeuB,iBAHlBnB,EAZL,gCAgBC3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,YAAF,OAAc0B,GAAO+qB,OAAQ,CAAEokD,UAAWK,KAhBjF,kBAiBQ,CAAEhrD,QAAS0qD,KAjBnB,WAmBuB,iBAAbM,EAnBV,wBAoBC3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,YAAF,OAAc0B,GAAO+qB,OAAQ,CAAE7rB,MAAOswE,KApB7E,kBAqBQ,CAAEhrD,QAAS0sD,GAAwBvvE,UArB3C,eAyBHklD,GAAKvrC,EAAS,CACZuqD,QAAS,MACTvnE,OAAQ,sBACRysB,OAAQ,CACN/0B,KAAMuhD,KAAkBpB,UACxBg7B,GAAI55B,KAAkBpB,UACtBjR,OAAQ,KA/BT,kBAkCI,CAAE1gB,QAAS0sD,GAAwBvvE,UAlCvC,iCAoCE8tE,GAAwBn0D,EAASuC,EAASlc,IApC5C,6C,sBAuCA,SAASuvE,GAAwB51D,EAASuC,EAASlc,GACxD,OAAIkc,EAAQ3e,MACH,CAAEslB,QAAS0sD,GAAwBvvE,SAErB,sBAAnBkc,EAAQvf,OACH,CAAEkmB,QAAS0qD,IAEbO,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAAeyvE,GAAtB,uC,sCAAO,WAAmC91D,EAASuC,EAASlc,GAArD,6EACkB,gCAAnBkc,EAAQvf,OADP,qBAECuf,EAAQkN,OAAO/oB,KAAKo+C,GAFrB,gCAGsBz+C,EAAM02C,KAAKx6B,EAAQkN,OAAO/oB,KAAKo+C,IAHrD,cAGKovB,EAHL,OAID3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,yBAA0BysB,OAAQ,CAAEq1B,GAAIovB,KAJ/E,kBAKM,CAAEhrD,QAAS6sD,GAA2B1vE,UAL5C,uBAOoB2tE,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OAAIz+C,EAAM02C,KAAK+H,MAPpF,cAOGovB,EAPH,OAQH3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,yBAA0BysB,OAAQ,CAAEokD,UAAWK,KARpF,kBASI,CAAEhrD,QAAS6sD,GAA2B1vE,UAT1C,iCAWE8tE,GAAwBn0D,EAASuC,EAASlc,IAX5C,6C,sBAcA,SAAS0vE,GAA2B/1D,EAASuC,EAASlc,GAC3D,MAAuB,yBAAnBkc,EAAQvf,OAEH,CAAEkmB,QAASwrD,GAAeruE,SAE5B8tE,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAAS2vE,GAAeh2D,EAASuC,EAASlc,GAC/C,MAAuB,mBAAnBkc,EAAQvf,QACVqD,EAAM2P,QAAQ,CAAEqpD,UAAW98C,EAAQkN,OAAOqjD,WAAYoB,SAAU3xD,EAAQkN,OAAO/oB,KAAKL,QACpFglE,GAAWrrD,GACJ,CAAEkJ,QAASwrD,KAEG,mBAAnBnyD,EAAQvf,QACVqD,EAAM8Q,OAAO,IAAIqL,MAAMD,EAAQ7b,KAAK6b,UAC7B,CAAE2G,QAAS0qD,KAEbO,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAAe4vE,GAAtB,uC,sCAAO,WAAmCj2D,EAASuC,EAASlc,GAArD,+EACkB,8BAAnBkc,EAAQvf,OADP,oBAEK+5C,EAAS12C,EAAT02C,MACJx6B,EAAQkN,OAAO/oB,KAAKo+C,GAHrB,gCAIsB/H,EAAKx6B,EAAQkN,OAAO/oB,KAAKo+C,GAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,UAJlF,cAIKnB,EAJL,OAKD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,uBAAwBysB,OAAQ,CAAEq1B,GAAIovB,KAL7E,kBAMM,CAAEhrD,QAASgtD,GAA4B7vE,UAN7C,wBAQoB2tE,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OACtE/H,EAAK+H,EAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,aATvC,WAWqB,iBAHlBnB,EARH,gCAYD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,uBAAwBysB,OAAQ,CAAEokD,UAAWK,KAZpF,kBAaM,CAAEhrD,QAASgtD,GAA4B7vE,UAb7C,WAeqB,iBAAb6tE,EAfR,wBAgBD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,uBAAwBysB,OAAQ,CAAE7rB,MAAOswE,KAhBhF,kBAiBM,CAAEhrD,QAASgtD,GAA4B7vE,UAjB7C,iCAoBE8tE,GAAwBn0D,EAASuC,EAASlc,IApB5C,6C,sBAuBA,SAAS6vE,GAA4Bl2D,EAASuC,EAASlc,GAC5D,GAAuB,yBAAnBkc,EAAQvf,OAIV,OAHIqD,EAAM8vE,aACR9vE,EAAM8vE,YAAY5zD,EAAQkN,OAAO/oB,KAAKo+C,IAEjC,CAAE57B,QAASgtD,GAA4B7vE,SAER,MAAxC,GAAuB,kBAAnBkc,EAAQvf,QACN,QAAC,sBAAuB,oBAAxB,OAAoDuf,EAAQkN,OAAO/oB,KAAKia,OAAQ,CAClF,IAAMyP,EAAW,CACfgmD,oBAAqB/vE,EAAMgwE,oBAC3BC,gBAAiBjwE,EAAMkwE,kBACvBh0D,EAAQkN,OAAO/oB,KAAKia,OAItB,OAHIyP,GACFA,IAEK,CAAElH,QAASgtD,GAA4B7vE,SAGlD,MAAuB,oBAAnBkc,EAAQvf,QACVqvE,GAAYryD,EAASuC,EAAQkN,OAAO/oB,KAAKL,OACzCA,EAAM2P,QAAQ,CAAEu/D,UAAU,EAAMrB,SAAU3xD,EAAQkN,OAAO/oB,KAAKL,QACvD,CAAE6iB,QAAS0qD,KAEG,sBAAnBrxD,EAAQvf,QACVqD,EAAM2P,QAAQ,CACZu/D,UAAU,EACVC,UAAWjzD,EAAQkN,OAAO/oB,KAAK+uE,WAC/BC,aAAcnzD,EAAQkN,OAAO/oB,KAAKivE,YAE7B,CAAEzsD,QAAS0qD,KAEG,kBAAnBrxD,EAAQvf,QACwB,mBAA9Buf,EAAQkN,OAAO/oB,KAAKia,OACtBta,EAAM2P,QAAQ,CAAEu/D,UAAU,IACnB,CAAErsD,QAAS0qD,KAGfO,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAAemwE,GAAtB,uC,sCAAO,WAAkCx2D,EAASuC,EAASlc,GAApD,+EACkB,6BAAnBkc,EAAQvf,OADP,oBAEK+5C,EAAS12C,EAAT02C,MACJx6B,EAAQkN,OAAO/oB,KAAKo+C,GAHrB,gCAIsB/H,EAAKx6B,EAAQkN,OAAO/oB,KAAKo+C,GAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,UAJlF,cAIKnB,EAJL,OAKD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,sBAAuBysB,OAAQ,CAAEq1B,GAAIovB,KAL5E,kBAMM,CAAEhrD,QAASutD,GAA2BpwE,UAN5C,wBAQoB2tE,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OACtE/H,EAAK+H,EAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,aATvC,WAWqB,iBAHlBnB,EARH,gCAYD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,sBAAuBysB,OAAQ,CAAEokD,UAAWK,KAZnF,kBAaM,CAAEhrD,QAASutD,GAA2BpwE,UAb5C,WAeqB,iBAAb6tE,EAfR,wBAgBD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,sBAAuBysB,OAAQ,CAAE7rB,MAAOswE,KAhB/E,kBAiBM,CAAEhrD,QAASutD,GAA2BpwE,UAjB5C,iCAoBE8tE,GAAwBn0D,EAASuC,EAASlc,IApB5C,6C,sBAuBA,SAASowE,GAA2Bz2D,EAASuC,EAASlc,GAC3D,GAAuB,yBAAnBkc,EAAQvf,OAIV,OAHIqD,EAAM8vE,aACR9vE,EAAM8vE,YAAY5zD,EAAQkN,OAAO/oB,KAAKo+C,IAEjC,CAAE57B,QAASutD,GAA2BpwE,SAEP,MAAxC,GAAuB,kBAAnBkc,EAAQvf,QACN,QAAC,qBAAsB,mBAAvB,OAAkDuf,EAAQkN,OAAO/oB,KAAKia,OAAQ,CAChF,IAAMyP,EAAW,CACfsmD,mBAAoBrwE,EAAMswE,mBAC1BC,eAAgBvwE,EAAMwwE,iBACtBt0D,EAAQkN,OAAO/oB,KAAKia,OAItB,OAHIyP,GACFA,IAEK,CAAElH,QAASutD,GAA2BpwE,SAGjD,MAAuB,oBAAnBkc,EAAQvf,QACVqvE,GAAYryD,EAASuC,EAAQkN,OAAO/oB,KAAKL,OACzCA,EAAM2P,QAAQ,CAAEu/D,UAAU,EAAMrB,SAAU3xD,EAAQkN,OAAO/oB,KAAKL,QACvD,CAAE6iB,QAAS0qD,KAEG,sBAAnBrxD,EAAQvf,QACVqD,EAAM2P,QAAQ,CACZu/D,UAAU,EACVC,UAAWjzD,EAAQkN,OAAO/oB,KAAK+uE,WAC/BC,aAAcnzD,EAAQkN,OAAO/oB,KAAKivE,YAE7B,CAAEzsD,QAAS0qD,KAEG,kBAAnBrxD,EAAQvf,QACwB,mBAA9Buf,EAAQkN,OAAO/oB,KAAKia,OACtBta,EAAM2P,QAAQ,CAAEu/D,UAAU,IACnB,CAAErsD,QAAS0qD,KAGfO,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAAeywE,GAAtB,uC,sCAAO,WAAsC92D,EAASuC,EAASlc,GAAxD,6EACkB,yBAAnBkc,EAAQvf,OADP,qBAECuf,EAAQkN,OAAO/oB,KAAKo+C,GAFrB,gCAGsBz+C,EAAM02C,KAAKx6B,EAAQkN,OAAO/oB,KAAKo+C,IAHrD,cAGKovB,EAHL,OAID3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAEq1B,GAAIovB,KAJxE,kBAKM,CAAEhrD,QAAS6tD,GAA+B1wE,UALhD,uBAOoB2tE,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OAAIz+C,EAAM02C,KAAK+H,MAPpF,UAQqB,iBADlBovB,EAPH,gCASD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAEokD,UAAWK,KAT/E,kBAUM,CAAEhrD,QAAS6tD,GAA+B1wE,UAVhD,WAYqB,iBAAb6tE,EAZR,wBAaD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAE7rB,MAAOswE,KAb3E,kBAcM,CAAEhrD,QAAS6tD,GAA+B1wE,UAdhD,iCAiBE8tE,GAAwBn0D,EAASuC,EAASlc,IAjB5C,6C,sBAoBA,SAAS0wE,GAA+B/2D,EAASuC,EAASlc,GAC/D,GAAuB,oBAAnBkc,EAAQvf,OAA8B,CACxC,IAAQg0E,EAAUjxB,GAASxjC,EAAQkN,OAAO/oB,KAAKL,OAAOy+C,GAAGC,UAAUD,GAA3DkyB,MACFj7B,EAAQntC,GAAQ/H,IAAImZ,GAAS,CACjC20D,UAAW,cACXC,UAAW,eACXhmE,GAAQ/H,IAAImZ,GAAS60D,OAOvB,OANAxC,GAAYryD,EAASuC,EAAQkN,OAAO/oB,KAAKL,OACzCA,EAAM2P,QAAQ,CACZu/D,UAAU,EACVtiD,QAAS6oB,GAAsBC,EAAOi7B,GACtC9C,SAAU3xD,EAAQkN,OAAO/oB,KAAKL,QAEzB,CAAE6iB,QAAS0qD,IAEpB,MAAuB,sBAAnBrxD,EAAQvf,QACVqD,EAAM2P,QAAQ,CACZu/D,UAAU,EACVC,UAAWjzD,EAAQkN,OAAO/oB,KAAK+uE,WAC/BC,aAAcnzD,EAAQkN,OAAO/oB,KAAKivE,YAE7B,CAAEzsD,QAAS0qD,KAEG,kBAAnBrxD,EAAQvf,QACwB,mBAA9Buf,EAAQkN,OAAO/oB,KAAKia,OACtBta,EAAM2P,QAAQ,CAAEu/D,UAAU,IACnB,CAAErsD,QAAS0qD,KAGfO,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAAe4wE,GAAtB,uC,sCAAO,WAA6Cj3D,EAASuC,EAASlc,GAA/D,6EACkB,yBAAnBkc,EAAQvf,OADP,qBAECuf,EAAQkN,OAAO/oB,KAAKo+C,GAFrB,gCAGsBz+C,EAAM02C,KAAKx6B,EAAQkN,OAAO/oB,KAAKo+C,GAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,UAHxF,cAGKnB,EAHL,OAID3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAEq1B,GAAIovB,KAJxE,kBAKM,CAAEhrD,QAASguD,GAAgC7wE,UALjD,uBAOoB2tE,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OAAIz+C,EAAM02C,KAAK+H,EAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,aAPvH,UAQqB,iBADlBnB,EAPH,gCASD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAEokD,UAAWK,KAT/E,kBAUM,CAAEhrD,QAASguD,GAAgC7wE,UAVjD,WAYqB,iBAAb6tE,EAZR,wBAaD3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,kBAAmBysB,OAAQ,CAAE7rB,MAAOswE,KAb3E,kBAcM,CAAEhrD,QAASguD,GAAgC7wE,UAdjD,iCAiBE8tE,GAAwBn0D,EAASuC,EAASlc,IAjB5C,6C,sBAoBA,SAAe8wE,GAAtB,uC,sCAAO,WAAwDn3D,EAASuC,EAASlc,GAA1E,2EACkB,oCAAnBkc,EAAQvf,OADP,gCAEoBgxE,GAAgBzxD,EAAQkN,OAAO/oB,KAAKmtE,WAAW,SAAA/uB,GAAE,OACtEz+C,EAAM02C,KAAK+H,EAAI,CAAEuwB,QAAS9yD,EAAQkN,OAAO/oB,KAAK2uE,aAH7C,cAEGnB,EAFH,OAKH3oB,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,+BAAgCysB,OAAQ,CAAEokD,UAAWK,KAL1F,kBAMI,CAAEhrD,QAASkuD,GAAiC/wE,UANhD,gCAQE8tE,GAAwBn0D,EAASuC,EAASlc,IAR5C,4C,sBAWA,SAAS+wE,GAAiCp3D,EAASuC,EAASlc,GAYjE,OAXAsL,QAAQq6C,IAAI,0CAA2CzpC,GAChC,yBAAnBA,EAAQvf,SACNqD,EAAM8vE,aACR9vE,EAAM8vE,YAAY5zD,EAAQkN,OAAO/oB,MAEnC+iB,GAAKzJ,EAAS,YAAauC,EAAQkN,OAAO/oB,KAAKo+C,GAAI,CACjD9gB,KAAMzhB,EAAQkN,OAAO/oB,KAAKs9B,KAC1Bl+B,KAAMyc,EAAQkN,OAAO/oB,KAAKZ,OAE5BO,EAAM2P,QAAQ,CAAEu/D,UAAU,EAAMzwB,GAAIviC,EAAQkN,OAAO/oB,KAAKo+C,MAEnDqvB,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAAS6wE,GAAgCl3D,EAASuC,EAASlc,GAChE,MAAuB,oBAAnBkc,EAAQvf,QACVqvE,GAAYryD,EAASuC,EAAQkN,OAAO/oB,KAAKL,OACzCA,EAAM2P,QAAQ,CAAEu/D,UAAU,EAAMrB,SAAU3xD,EAAQkN,OAAO/oB,KAAKL,QACvD,CAAE6iB,QAAS0qD,KAEG,sBAAnBrxD,EAAQvf,QACVqD,EAAM2P,QAAQ,CACZu/D,UAAU,EACVC,UAAWjzD,EAAQkN,OAAO/oB,KAAK+uE,WAC/BC,aAAcnzD,EAAQkN,OAAO/oB,KAAKivE,YAE7B,CAAEzsD,QAAS0qD,KAEG,kBAAnBrxD,EAAQvf,QACwB,mBAA9Buf,EAAQkN,OAAO/oB,KAAKia,OACtBta,EAAM2P,QAAQ,CAAEu/D,UAAU,IACnB,CAAErsD,QAAS0qD,KAGfO,GAAwBn0D,EAASuC,EAASlc,GAG5C,SAASgxE,GAAqBC,EAAU/0D,EAASlc,GACtD,MAAuB,gCAAnBkc,EAAQvf,QACVqD,EAAM2P,UACC,CAAEkT,QAAS0qD,MAEpBvtE,EAAM8Q,OAAO,IAAIqL,MAAM,gCAChB,CAAE0G,QAASwrD,KAGb,SAASA,GAAe10D,EAASuC,EAASlc,GAC/C,OAAKA,EAC6B,YAA9Bkc,EAAQkN,OAAO/oB,KAAKia,MAA4B,CAAEuI,QAASwrD,GAAeruE,SAC7C,mBAA7Bkc,EAAQkN,OAAO/oB,KAAKs9B,MACtB39B,EAAMkxE,QAAUh1D,EAAQkN,OAAO/oB,KAAKo+C,GAC7B,CAAE57B,QAASwrD,GAAeruE,UAED,qBAA9Bkc,EAAQkN,OAAO/oB,KAAKia,OACtBta,EAAM2P,QAAQ3P,EAAMkxE,SACb,CAAEruD,QAASwrD,KAEb,CAAExrD,QAASwrD,GAAeruE,SAVd,CAAE6iB,QAASwrD,I,waCjmBhC,SAAS8C,GAAsBjyD,GAAK,MAClC,OAAO,YAAeA,IAAf,QAA2B,SAACnlB,EAAD,iBAAUzC,EAAV,KAAeikB,EAAf,eAAC,MAC9BxhB,GAD6B,SAE/BwmC,EAAcjpC,GAAOikB,MACpB,I,sCAqDN,2FACS41D,GADT,SACoC52E,GAAKtB,KAAM,8BAA+B,IAD9E,6G,4DAoHA,+FAAsBu8D,EAAtB,EAAsBA,SAAU4b,EAAhC,EAAgCA,UAAhC,SACgB72E,GAAKtB,KAAM,mBAAoB,CAAEu8D,WAAU4b,cAD3D,uCACyElY,KADzE,iD,4DAuBA,WAAyB1D,GAAzB,wFACkB,SAACphC,EAAKyD,GAAN,UAAC,MACZzD,GADW,SAEbyD,EAAK8P,QAAU9P,EAAKmyB,WAHzB,KAIM,GAJN,SAIgBzvD,GAAKtB,KAAM,wBAAyB,CAAEu8D,aAJtD,uH,4DA+ZA,mGAAqCjyB,EAArC,EAAqCA,OAAQ00B,EAA7C,EAA6CA,SAAU9vB,EAAvD,EAAuDA,SAAUoD,EAAjE,EAAiEA,WAAjE,KACS4lC,GADT,SACoC52E,GAAKtB,KAAM,iCAAkC,CAC7EsqC,SACA8tC,UAAWpZ,EACXqZ,YAAanpC,EACbopC,YAAahmC,IALjB,6G,4DA4BA,iGAAkCimC,EAAlC,EAAkCA,OAAQrpC,EAA1C,EAA0CA,SAAUwoC,EAApD,EAAoDA,MAApD,KACSQ,GADT,SAEU52E,GAAKtB,KAAM,6BAA8B,CAC7Cw4E,UAAWD,EACXF,YAAanpC,EACbwoC,UALN,6G,4DAqBA,WAAiCxoC,GAAjC,wFACuB5tC,GAAKtB,KAAM,wBAAyB,CAAEy4E,OAAQvpC,IADrE,cACQpuC,EADR,yBAESo3E,GAAqB,SACvBp3E,GADsB,IAEzBouC,SAAUgpC,GAAqBp3E,EAAOouC,cAJ1C,iD,4DA+EA,WAA0B5/B,EAASopE,GAAnC,+EACUj7B,EAASnuC,EAATmuC,KADV,KAGSk7B,GAHT,mBAIOrpE,GAJP,iBAKuBmuC,EAAK,YAAa8H,GAAQmzB,EAAUjqC,GAAQgC,kBAAkB+U,IALrF,gCAKI6uB,YALJ,mH,sBD5iBAC,GAAY79D,MAAQ,SAACiK,GACnBmyD,GAAanyD,EAAS,SComBxB,IAAMi4D,GAAUlnB,WAAkB,CAC1B3rC,KAD0B,SACpBxW,GAAS,+GACnBqkE,GAAW,EAAMrkE,GADE,8CAGrB5D,QAAS,CACPktE,GA3wBJ,SAAav3D,EAAOyP,GAClBmhD,OAAkBjyE,MAAM44E,GAAGv3D,EAAOyP,IA2wBhC+nD,IAlwBJ,SAAcx3D,EAAOyP,GACnBmhD,OAAkBjyE,MAAM84E,eAAez3D,EAAOyP,IAkwB5C7J,OAnvBJ,WACE,OAAO8xD,OAAkB/4E,OAmvBvB+G,M,4CACA2wE,MAhuBJ,WAEE,IADcsB,OAAiBh5E,MAE7B,OAAO,KAET,MAAuBymD,GAASuyB,OAAiBh5E,OAAOwlD,GAAGC,UAAnD1R,EAAR,EAAQA,OAAQyR,EAAhB,EAAgBA,GAChB,OAAQzR,GACN,KAAKtF,GAAQiB,cACX,OAAO,EACT,KAAKjB,GAAQwB,gBACb,KAAKxB,GAAQsB,gBACb,KAAKtB,GAAQqB,eACX,OAAO,KAAS0V,EAAGkyB,MAAO,IAC5B,QACE,OAAO,OAmtBTxvE,GA1sBJ,WACE,OAAO63D,GAAUx4D,IAAIvH,OA0sBnByyE,MAlsBJ,WACE,OAAOwG,OAAiBj5E,OAksBtB87C,OArqBJ,SAAiB1gD,EAAMm7E,EAAIjsC,EAAQmT,EAAM/pC,GAAU,WACjD,OAAO,IAAI,KAAJ,EAAY,SAACgD,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAMR,OALAklD,GAAKvrC,EAAS,CACZuqD,QAAS,MACTvnE,OAAQ,sBACRysB,OAAQ,CAAE/0B,OAAMm7E,KAAIjsC,SAAQt3B,KAAMU,KAE7B,CACLkW,QAAS8hD,GACT3kE,MAAO,CACL2P,UACAmB,SACA4lC,gBAspBRwiB,I,6CACAiZ,S,6CACAC,MA9kBJ,WAAkB,WAChB,OAAO,IAAI,KAAJ,EAAY,SAACziE,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAER,OADAklD,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,iBAAkBysB,OAAQ,KAC3D,CACLvG,QAAS8hD,GACT3kE,MAAO,CAAE2P,UAASmB,kBAskBxBuhE,SApjBJ,SAAmB37B,GAAM,WACvB,OAAO,IAAI,KAAJ,EAAY,SAAC/mC,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAER,OADAklD,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,oBAAqBysB,OAAQ,KAC9D,CACLvG,QAAS8hD,GACT3kE,MAAO,CACL02C,OACA/mC,UACAmB,kBAyiBR+yD,YAnGJ,SAAsB3nD,EAASo2D,GAAW,WACpC30C,EAAOzhB,EACY,WAAnB,GAAOA,KACTyhB,EAAO,KAAezhB,IAExB,IAAMq2D,EAAS,SAAC54D,GAAD,OAAaurC,GAAKvrC,EAAS,CACxCuqD,QAAS,MACTvnE,OAAQ,mBACRysB,OAAQ,CAAEuU,OAAM6xC,GAAI8C,MAEA,eAAlBr5E,KAAKinB,SASPjnB,KAAK44E,GAAG,iBARgB,SAAlBW,EAAmBtyD,GACR,eAAXA,IAGF,MAAW,kBAAMqyD,EAAO,KAAO,KAC/B,EAAKT,IAAI,gBAAiBU,OAK9BD,EAAOt5E,OA+EPw5E,SApfJ,SAAmBlvC,EAAQmT,GAAmE,oEAAJ,GAAvDo5B,EAA2D,EAA3DA,YAAaE,EAA8C,EAA9CA,oBAAqBE,EAAyB,EAAzBA,iBACnE,OAAO,IAAI,KAAJ,EAAY,SAACvgE,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAER,OADAklD,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,oBAAqBysB,OAAQ,CAAEma,YAChE,CACL1gB,QAAS8hD,GACT3kE,MAAO,CACL02C,OACA/mC,UACAmB,SACAg/D,cACAE,sBACAE,4BAseRlY,QA/aJ,SAAkBz0B,EAAQmT,GAAiE,oEAAJ,GAArDo5B,EAAyD,EAAzDA,YAAaQ,EAA4C,EAA5CA,mBAAoBE,EAAwB,EAAxBA,gBACjE,OAAO,IAAI,KAAJ,EAAY,SAAC7gE,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAER,OADAklD,GAAKvrC,EAAS,CAAEuqD,QAAS,MAAOvnE,OAAQ,mBAAoBysB,OAAQ,CAAEma,YAC/D,CACL1gB,QAAS8hD,GACT3kE,MAAO,CACL02C,OACA/mC,UACAmB,SACAg/D,cACAQ,qBACAE,2BAiaRkC,eAzXJ,WAA6Eh8B,GAAM,WAAxD9oB,EAAwD,EAAxDA,KAAMqqC,EAAkD,EAAlDA,SAAUD,EAAwC,EAAxCA,QAAS1sB,EAA+B,EAA/BA,UAAWC,EAAoB,EAApBA,WAC7D,OAAO,IAAI,KAAJ,EAAY,SAAC57B,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAYR,OAXAklD,GAAKvrC,EAAS,CACZuqD,QAAS,MACTvnE,OAAQ,+BACRysB,OAAQ,CACNwE,OACAyjD,UAAWpZ,EACXD,UACA2a,WAAYrnC,EACZimC,YAAahmC,KAGV,CACL1oB,QAAS8hD,GACT3kE,MAAO,CACL02C,OACA/mC,UACAmB,kBAoWR8hE,aAxTJ,WAAmEl8B,GAAM,WAAhDnT,EAAgD,EAAhDA,OAAQ00B,EAAwC,EAAxCA,SAAU9vB,EAA8B,EAA9BA,SAAUoD,EAAoB,EAApBA,WACnD,OAAO,IAAI,KAAJ,EAAY,SAAC57B,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAWR,OAVAklD,GAAKvrC,EAAS,CACZuqD,QAAS,MACTvnE,OAAQ,gCACRysB,OAAQ,CACNma,SACA8tC,UAAWpZ,EACXqZ,YAAanpC,EACbopC,YAAahmC,KAGV,CACL1oB,QAAS8hD,GACT3kE,MAAO,CAAE2P,UAASmB,SAAQ4lC,gBAuShCm8B,mB,6CACAC,gB,6CACAC,iB,6CACA/N,WA9wBJ,WACE,OAAOgO,GAAkB/5E,OA8wBvBg6E,mBAhJJ,WAA+B,WAC7B,OAAO,IAAI,KAAJ,EAAY,SAACtjE,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAMR,OALAklD,GAAKvrC,EAAS,CACZuqD,QAAS,MACTvnE,OAAQ,gCACRysB,OAAQ,KAEH,CACLvG,QAAS8hD,GACT3kE,MAAO,CAAE2P,UAASmB,kBAoIxBoiE,cA1QJ,WAAiHx8B,GAA4B,WAAnHnT,EAAmH,EAAnHA,OAAQ00B,EAA2G,EAA3GA,SAAU9vB,EAAiG,EAAjGA,SAAUoD,EAAuF,EAAvFA,WAAuF,IAA3E0S,WAA2E,MAArE,IAAqE,MAA5DoU,gBAA4D,MAAjD,IAAiD,OAArC1gB,MAAqC,uDAAJ,IAAhBm+B,EAAoB,EAApBA,YACvH,OAAO,IAAI,KAAJ,EAAY,SAACngE,EAASmB,GAC3Bo7D,GACE,GACA,SAACvyD,EAAS3Z,GAAV,OAAoBA,EAAM6iB,UAAY8hD,MACtC,SAAChrD,EAAS3Z,GAaR,OAZAklD,GAAKvrC,EAAS,CACZuqD,QAAS,MACTvnE,OAAQ,0BACRysB,OAAQ,CACNma,SACA8tC,UAAWpZ,EACXqZ,YAAanpC,EACbopC,YAAahmC,EACb4nC,UAAW9gB,EACXpU,SAGG,CACLp7B,QAAS8hD,GACT3kE,MAAO,CAAE2P,UAASmB,SAAQ4lC,OAAMo5B,wBAwPxChZ,QAAS,CACPsc,U,kDAIJ,YC7zBA,GAAe5pB,WAAWugB,GAAiB1Y,GAAOgiB,GAAajK,GAAMD,GAAUD,GAAQ6B,ICwBvF,GAAe7iB,IAAf,CAAuB,CACrBnpC,KADqB,YAC8C,IAA3Du0D,EAA2D,EAA3DA,eAAgBC,EAA2C,EAA3CA,cAA2C,IAA5BC,wBAA4B,SACjE,IAAKjsE,OAAQ,MAAM,IAAI4U,MAAM,+DAC7B,IAAKm3D,EAAgB,MAAM,IAAIn3D,MAAM,2BACrC,IAAKo3D,EAAe,MAAM,IAAIp3D,MAAM,0BACpCljB,KAAKu6E,iBAAmBA,EACxBv6E,KAAKq6E,eAAiBA,EACtBr6E,KAAKs6E,cAAgBA,GAEvB5uE,QAAS,CAAEwV,IA7Cb,WAAgB,WACRq5D,EAAmBv6E,KAAKu6E,iBAE9Bv6E,KAAKs6E,cAAcnR,SAAQ,SAACprB,GAC1B,EAAKs8B,eAAezP,YAAY7sB,MAGlC/9C,KAAKq6E,eAAelR,SAAQ,SAACprB,EAAK1lB,EAAQ9oB,IACnCgrE,GAAoBhrE,IAAWjB,SACpC,EAAKgsE,cAAc1P,YAAY7sB,OAoCjB9oC,KA1BlB,WACEjV,KAAKs6E,cAAcvO,aACnB/rE,KAAKq6E,eAAetO,iBCftB,IAAe97C,eAAS,CACtBvkB,QAAS,CACPy9D,QAASl5C,YACT87C,WAAY97C,YACZ26C,YAAa36C,YACbs8C,YAAat8C,e,waCuDjB,IAAMuqD,GAAY,WAAM,MAChBC,EAA8D,WAAzC,GAAOjQ,IAAc,GAAMoH,WAChD8I,EAAQpsE,QAAUA,OAAOsS,UAAY,OAAAtS,OAAOsS,SAASY,UAAhB,OAAoC,QAE/E,OADwBi5D,GAAsBC,EAClBpsE,OAGrBq8D,KAAer8D,OAAOjP,YAAS3F,GAkBxC,SAAeu1D,IAAf,CAAuB,CACrBnpC,KADqB,WAC6J,wEAAJ,GAAI,IAA1KmoD,sBAA0K,MAAzJ,GAAyJ,MAArJprE,cAAqJ,MAA5I23E,KAA4I,MAA/H7gF,YAA+H,MAAxH2U,OAAwH,EAAhH+pB,EAAgH,EAAhHA,OAAQsiD,EAAwG,EAAxGA,cAAwG,IAAzFC,wBAAyF,MAAtEpS,GAAkBqS,QAAoD,MAA3C1P,aAA2C,aAA5B2P,mBAA4B,SAChL,GAAIH,IAAkB,YAAYnS,KAAZ,OAAwCmS,GAAgB,MAAM,IAAIz3D,MAAJ,wCAA2C,KAAYslD,IAAvD,MACpF,IAAK,YAAYA,KAAZ,OAAwCoS,GAAmB,MAAM,IAAI13D,MAAJ,2CAA8C,KAAYslD,IAA1D,MACtExoE,KAAKiuE,eAAL,IAAwB/lE,IAAI+4C,YAAWgtB,GAEvC,IAAM8M,EAAQphF,EACRqhF,EAAUn4E,EAShB,GARA7C,KAAKq4B,OAASA,EACdr4B,KAAKmrE,MAAQA,EACbnrE,KAAK86E,YAAcA,EACnB96E,KAAK26E,cAAgBA,EACrB36E,KAAK46E,iBAAmBA,EACxB56E,KAAKi7E,YAAc,SAAC75D,GAAD,OAAc25D,EAAMl5D,iBAAiB,UAAWT,GAAU,IAC7EphB,KAAKk7E,cAAgB,SAAC95D,GAAD,OAAc25D,EAAMI,oBAAoB,UAAW/5D,GAAU,IAClFphB,KAAK2xE,OAAS,SAAC5zB,GAAD,OAASi9B,EAAQz5D,YAAYw8B,EAAK,EAAK1lB,QAAU,OAC1Dr4B,KAAKiuE,eAAe/lE,GAAI,MAAM,IAAIgb,MAAM,iBAE/CxX,QAAS,CAAEy9D,QA3Fb,SAAkBwC,GAChB,IAAMtzC,EAASr4B,KAAKq4B,OACduiD,EAAmB56E,KAAK46E,iBACxBzP,EAAQnrE,KAAKmrE,MACb2P,EAAc96E,KAAK86E,YACzB,GAAI96E,KAAKohB,SAAU,MAAM,IAAI8B,MAAM,yBAEnCljB,KAAKohB,SAAW,SAAC28B,EAAKxuC,GACpB,GAAKwuC,GAA2B,WAApB,GAAOA,EAAI32C,QAClB0zE,IAAeziD,GAAUA,IAAW0lB,EAAI1lB,QAE7C,GADI8yC,GAAO94D,QAAQq6C,IAAI,oBAAqB3O,GACxCA,EAAI32C,KAAKZ,KAAM,CACjB,GAAIu3C,EAAI32C,KAAKZ,OAASo0E,EAAkB,OACxCjP,EAAU5tB,EAAI32C,KAAKA,KAAM22C,EAAI1lB,OAAQ0lB,EAAIxuC,aAEzCo8D,EAAU5tB,EAAI32C,KAAM22C,EAAI1lB,OAAQ0lB,EAAIxuC,SAGxCvP,KAAKi7E,YAAYj7E,KAAKohB,WAyEFwpD,YAjDtB,SAAsB7sB,GACpB,IAAM96B,EAAUjjB,KAAK26E,cAAgB,CAAEn0E,KAAMxG,KAAK26E,cAAevzE,KAAM22C,GAAQA,EAC3E/9C,KAAKmrE,OAAO94D,QAAQq6C,IAAI,iBAAkBzpC,GAC9CjjB,KAAK2xE,OAAO1uD,IA8CqB8oD,WA/DnC,WACE,IAAK/rE,KAAKohB,SAAU,MAAM,IAAI8B,MAAM,mDACpCljB,KAAKk7E,cAAcl7E,KAAKohB,UACxBphB,KAAKohB,SAAW,MA4D6BmrD,YAvG/C,WACE,OAAOvsE,KAAKohB,YAuGXg6D,I,waCzGH,SAAensB,IAAf,CAAuB,CACrBnpC,KADqB,WACM,6DAAJ,GAAf+kD,EAAmB,EAAnBA,WACN,IAAKv8D,OAAQ,MAAM,IAAI4U,MAAM,wEAC7BljB,KAAK6qE,WAAaA,GAAcwQ,GAA+B,CAAEpN,eAAgB,CAAE/lE,GAAI,SACvFlI,KAAKs7E,QAAU,IAEjB5vE,QAAS,CAQP6vE,KARO,SAQDC,GACJ,IAAQF,EAAYt7E,KAAZs7E,QACRt7E,KAAK6qE,WAAW1B,SAAQ,WAAqB9wC,EAAQ9oB,GAAW,IAArC7L,EAAqC,EAArCA,OAAQysB,EAA6B,EAA7BA,OACjC,GAAKzsB,GAAWysB,GAAUzsB,IAAWolE,GAAQC,OAAOC,iBAAkBsS,EAAQnrD,EAAOjoB,IAArF,CAEA,IAAM6gE,EAAS,SACV54C,GADO,IAEJsrD,cAFI,WAEa,8HAEfC,EAA4B,cAAd,EAAKl1E,KACnB6xB,EAASqjD,EAAcptE,OAAO+pB,OAAS,EAAKA,OAH7B,kBAIdgjD,GAA+B,CACpCpN,eAAgB,EAChB0M,cAAee,EAAclT,GAAkBmT,gBAAajiF,EAC5DkhF,iBAAkBc,EAAclT,GAAkBqS,aAAUnhF,EAC5DmJ,OAAQ0M,EACR8oB,YATmB,gDAazBijD,EAAQvS,EAAO7gE,IAAM6gE,EACrByS,EAAW,CAAEF,UAASM,UAAW7S,QAE/B,KAAYuS,GAASr7E,QAAQu7E,EAAW,CAAEF,aAShDO,SAxCO,WAyCL77E,KAAK6qE,WAAWkB,iBCoBtB,GAAe9c,IAAf,CAAuB,CACrBnpC,KADqB,YAC+B,UAA5CmoD,sBAA4C,MAA3B,GAA2B,EAAvBttD,EAAuB,EAAvBA,KAAuB,IAAjBwqD,aAAiB,SAClD,IAAKX,KAAgB5oC,QAAS,MAAM,IAAI1e,MAAM,iDAC9CljB,KAAKmrE,MAAQA,EACbnrE,KAAKiuE,eAAiBA,EACtBjuE,KAAK2gB,KAAOA,IAAQ,EAAA6pD,KAAgB5oC,SAAQunC,QAAxB,QAAmC,CAAC8E,EAAe/lE,SAAMxO,KAE/EgS,QAAS,CAAEy9D,QAzDb,SAAkBwC,EAAWC,GAAc,WACzC,GAAI5rE,KAAKusE,cAAe,MAAM,IAAIrpD,MAAM,yBACxCljB,KAAK4pB,QAAU,SAACm0B,EAAKxuC,GACf,EAAK47D,OAAO94D,QAAQq6C,IAAI,oBAAqB3O,GACjD4tB,EAAU5tB,EAAKxuC,IAEjBvP,KAAK2gB,KAAKgrD,UAAUmQ,YAAY97E,KAAK4pB,SACrC5pB,KAAK2gB,KAAKirD,aAAakQ,aAAY,WACT,mBAAjBlQ,GAA+BA,EAAa,GAAI,GACvD,EAAKjrD,KAAKorD,iBAgDQnB,YApCtB,SAAsB7sB,GACpB,IAAK/9C,KAAK2gB,KAAM,MAAM,IAAIuC,MAAM,mDAC5BljB,KAAKmrE,OAAO94D,QAAQq6C,IAAI,iBAAkB3O,GAC9C/9C,KAAK2gB,KAAKY,YAAYw8B,IAiCWguB,WA1EnC,WACE,IACE/rE,KAAK2gB,KAAKorD,aACV,MAAOpkD,GACPtV,QAAQ0pE,QAAQ,kCAAmCp0D,KAsER4kD,YAvB/C,WACE,MAAmD,mBAArCvsE,KAAK2gB,KAAKgrD,UAAUqQ,aAA8Bh8E,KAAK2gB,KAAKgrD,UAAUqQ,eAAiBh8E,KAAK2gB,KAAKgrD,UAAUsQ,YAAYj8E,KAAK4pB,YAuBzIwxD,K","file":"aepp-sdk.browser.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@stamp/it\"), require(\"@stamp/required\"), require(\"bignumber.js\"), require(\"bs58check\"), require(\"ed2curve\"), require(\"tweetnacl\"), require(\"aes-js\"), require(\"sha.js\"), require(\"blakejs\"), require(\"buffer\"), require(\"rlp\"), require(\"swagger-client\"), require(\"cross-fetch\"), require(\"@aeternity/json-bigint\"), require(\"uuid\"), require(\"joi-browser\"), require(\"websocket\"), require(\"events\"), require(\"libsodium-wrappers-sumo\"), require(\"tweetnacl-auth\"), require(\"bip32-path\"), require(\"@aeternity/bip39\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([, , , , , , , , , , , , , , , , , , , , , ], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Ae\"] = factory(require(\"@stamp/it\"), require(\"@stamp/required\"), require(\"bignumber.js\"), require(\"bs58check\"), require(\"ed2curve\"), require(\"tweetnacl\"), require(\"aes-js\"), require(\"sha.js\"), require(\"blakejs\"), require(\"buffer\"), require(\"rlp\"), require(\"swagger-client\"), require(\"cross-fetch\"), require(\"@aeternity/json-bigint\"), require(\"uuid\"), require(\"joi-browser\"), require(\"websocket\"), require(\"events\"), require(\"libsodium-wrappers-sumo\"), require(\"tweetnacl-auth\"), require(\"bip32-path\"), require(\"@aeternity/bip39\"));\n\telse\n\t\troot[\"Ae\"] = factory(root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__7042__, __WEBPACK_EXTERNAL_MODULE__4468__, __WEBPACK_EXTERNAL_MODULE__9964__, __WEBPACK_EXTERNAL_MODULE__1426__, __WEBPACK_EXTERNAL_MODULE__7785__, __WEBPACK_EXTERNAL_MODULE__4285__, __WEBPACK_EXTERNAL_MODULE__2570__, __WEBPACK_EXTERNAL_MODULE__9457__, __WEBPACK_EXTERNAL_MODULE__2692__, __WEBPACK_EXTERNAL_MODULE__5237__, __WEBPACK_EXTERNAL_MODULE__4102__, __WEBPACK_EXTERNAL_MODULE__5992__, __WEBPACK_EXTERNAL_MODULE__7711__, __WEBPACK_EXTERNAL_MODULE__8991__, __WEBPACK_EXTERNAL_MODULE__3465__, __WEBPACK_EXTERNAL_MODULE__8454__, __WEBPACK_EXTERNAL_MODULE__9422__, __WEBPACK_EXTERNAL_MODULE__1804__, __WEBPACK_EXTERNAL_MODULE__4866__, __WEBPACK_EXTERNAL_MODULE__6532__, __WEBPACK_EXTERNAL_MODULE__9685__, __WEBPACK_EXTERNAL_MODULE__6648__) {\nreturn ","module.exports = require(\"core-js-pure/stable/array/from\");","module.exports = require(\"core-js-pure/stable/array/is-array\");","module.exports = require(\"core-js-pure/stable/instance/bind\");","module.exports = require(\"core-js-pure/stable/instance/concat\");","module.exports = require(\"core-js-pure/stable/instance/ends-with\");","module.exports = require(\"core-js-pure/stable/instance/entries\");","module.exports = require(\"core-js-pure/stable/instance/fill\");","module.exports = require(\"core-js-pure/stable/instance/filter\");","module.exports = require(\"core-js-pure/stable/instance/find-index\");","module.exports = require(\"core-js-pure/stable/instance/find\");","module.exports = require(\"core-js-pure/stable/instance/flat\");","module.exports = require(\"core-js-pure/stable/instance/for-each\");","module.exports = require(\"core-js-pure/stable/instance/includes\");","module.exports = require(\"core-js-pure/stable/instance/index-of\");","module.exports = require(\"core-js-pure/stable/instance/map\");","module.exports = require(\"core-js-pure/stable/instance/pad-start\");","module.exports = require(\"core-js-pure/stable/instance/reduce\");","module.exports = require(\"core-js-pure/stable/instance/reverse\");","module.exports = require(\"core-js-pure/stable/instance/slice\");","module.exports = require(\"core-js-pure/stable/instance/some\");","module.exports = require(\"core-js-pure/stable/instance/starts-with\");","module.exports = require(\"core-js-pure/stable/json/stringify\");","module.exports = require(\"core-js-pure/stable/map\");","module.exports = require(\"core-js-pure/stable/number/is-integer\");","module.exports = require(\"core-js-pure/stable/number/max-safe-integer\");","module.exports = require(\"core-js-pure/stable/object/assign\");","module.exports = require(\"core-js-pure/stable/object/define-properties\");","module.exports = require(\"core-js-pure/stable/object/define-property\");","module.exports = require(\"core-js-pure/stable/object/entries\");","module.exports = require(\"core-js-pure/stable/object/freeze\");","module.exports = require(\"core-js-pure/stable/object/from-entries\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptor\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptors\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-symbols\");","module.exports = require(\"core-js-pure/stable/object/keys\");","module.exports = require(\"core-js-pure/stable/object/values\");","module.exports = require(\"core-js-pure/stable/parse-int\");","module.exports = require(\"core-js-pure/stable/promise\");","module.exports = require(\"core-js-pure/stable/set-interval\");","module.exports = require(\"core-js-pure/stable/set-timeout\");","module.exports = require(\"core-js-pure/stable/set\");","module.exports = require(\"core-js-pure/stable/url\");","module.exports = require(\"core-js-pure/stable/weak-map\");","module.exports = require(\"core-js-pure/features/array/from\");","module.exports = require(\"core-js-pure/features/array/is-array\");","module.exports = require(\"core-js-pure/features/get-iterator-method\");","module.exports = require(\"core-js-pure/features/instance/index-of\");","module.exports = require(\"core-js-pure/features/instance/slice\");","module.exports = require(\"core-js-pure/features/object/define-property\");","module.exports = require(\"core-js-pure/features/object/get-own-property-symbols\");","module.exports = require(\"core-js-pure/features/object/keys\");","module.exports = require(\"core-js-pure/features/promise\");","module.exports = require(\"core-js-pure/features/symbol\");","module.exports = require(\"core-js-pure/features/symbol/iterator\");","module.exports = require(\"regenerator-runtime\");\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","require('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n","require('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n","require('../../../modules/es.array.iterator');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').entries;\n","require('../../../modules/es.array.fill');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').fill;\n","require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n","require('../../../modules/es.array.find-index');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').findIndex;\n","require('../../../modules/es.array.find');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').find;\n","require('../../../modules/es.array.flat');\nrequire('../../../modules/es.array.unscopables.flat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').flat;\n","require('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').forEach;\n","require('../../../modules/es.array.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').includes;\n","require('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n","require('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\n","require('../../../modules/es.array.reduce');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').reduce;\n","require('../../../modules/es.array.reverse');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').reverse;\n","require('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n","require('../../../modules/es.array.some');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').some;\n","require('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n","var bind = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (it instanceof Function && own === FunctionPrototype.bind) ? bind : own;\n};\n","var concat = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.concat) ? concat : own;\n};\n","var endsWith = require('../string/virtual/ends-with');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.endsWith;\n return typeof it === 'string' || it === StringPrototype\n || (it instanceof String && own === StringPrototype.endsWith) ? endsWith : own;\n};\n","var fill = require('../array/virtual/fill');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.fill;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.fill) ? fill : own;\n};\n","var filter = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.filter) ? filter : own;\n};\n","var findIndex = require('../array/virtual/find-index');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.findIndex;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.findIndex) ? findIndex : own;\n};\n","var find = require('../array/virtual/find');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.find;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.find) ? find : own;\n};\n","var flat = require('../array/virtual/flat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.flat;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.flat) ? flat : own;\n};\n","var arrayIncludes = require('../array/virtual/includes');\nvar stringIncludes = require('../string/virtual/includes');\n\nvar ArrayPrototype = Array.prototype;\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.includes;\n if (it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.includes)) return arrayIncludes;\n if (typeof it === 'string' || it === StringPrototype || (it instanceof String && own === StringPrototype.includes)) {\n return stringIncludes;\n } return own;\n};\n","var indexOf = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.indexOf;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.indexOf) ? indexOf : own;\n};\n","var map = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.map) ? map : own;\n};\n","var padStart = require('../string/virtual/pad-start');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.padStart;\n return typeof it === 'string' || it === StringPrototype\n || (it instanceof String && own === StringPrototype.padStart) ? padStart : own;\n};\n","var reduce = require('../array/virtual/reduce');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.reduce;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reduce) ? reduce : own;\n};\n","var reverse = require('../array/virtual/reverse');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.reverse;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reverse) ? reverse : own;\n};\n","var slice = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.slice) ? slice : own;\n};\n","var some = require('../array/virtual/some');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.some;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.some) ? some : own;\n};\n","var startsWith = require('../string/virtual/starts-with');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.startsWith;\n return typeof it === 'string' || it === StringPrototype\n || (it instanceof String && own === StringPrototype.startsWith) ? startsWith : own;\n};\n","require('../../modules/es.json.stringify');\nvar core = require('../../internals/path');\n\n// eslint-disable-next-line es/no-json -- safe\nif (!core.JSON) core.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n return core.JSON.stringify.apply(null, arguments);\n};\n","require('../../modules/es.map');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Map;\n","require('../../modules/es.number.is-integer');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Number.isInteger;\n","require('../../modules/es.number.max-safe-integer');\n\nmodule.exports = 0x1FFFFFFFFFFFFF;\n","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","require('../../modules/es.object.define-properties');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperties = module.exports = function defineProperties(T, D) {\n return Object.defineProperties(T, D);\n};\n\nif (Object.defineProperties.sham) defineProperties.sham = true;\n","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","require('../../modules/es.object.freeze');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.freeze;\n","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.from-entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.fromEntries;\n","require('../../modules/es.object.get-own-property-descriptor');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n","require('../../modules/es.object.get-own-property-descriptors');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertyDescriptors;\n","require('../../modules/es.symbol');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertySymbols;\n","require('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n","require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","require('../modules/es.parse-int');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseInt;\n","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","require('../../modules/es.set');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Set;\n","require('../../../modules/es.string.ends-with');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').endsWith;\n","require('../../../modules/es.string.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').includes;\n","require('../../../modules/es.string.pad-start');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').padStart;\n","require('../../../modules/es.string.starts-with');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').startsWith;\n","require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","require('../../modules/es.symbol.iterator');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","require('../../modules/es.object.to-string');\nrequire('../../modules/es.weak-map');\nrequire('../../modules/web.dom-collections.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.WeakMap;\n","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n","require('../modules/web.dom-collections.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-own-property-symbols');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n","var parent = require('../../es/promise');\nrequire('../../modules/esnext.aggregate-error');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.promise.all-settled');\nrequire('../../modules/esnext.promise.try');\nrequire('../../modules/esnext.promise.any');\n\nmodule.exports = parent;\n","var parent = require('../../es/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.pattern-match');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n","var parent = require('../../es/symbol/iterator');\n\nmodule.exports = parent;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","module.exports = function () { /* empty */ };\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `WeakMap.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // `WeakMap.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // `WeakSet.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n","'use strict';\nvar $ = require('./export');\nvar global = require('../internals/global');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar fails = require('../internals/fails');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar defineProperty = require('../internals/object-define-property').f;\nvar forEach = require('../internals/array-iteration').forEach;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var exported = {};\n var Constructor;\n\n if (!DESCRIPTORS || typeof NativeConstructor != 'function'\n || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))\n ) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else {\n Constructor = wrapper(function (target, iterable) {\n setInternalState(anInstance(target, Constructor, CONSTRUCTOR_NAME), {\n type: CONSTRUCTOR_NAME,\n collection: new NativeConstructor()\n });\n if (iterable != undefined) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in NativePrototype && !(IS_WEAK && KEY == 'clear')) {\n createNonEnumerableProperty(Constructor.prototype, KEY, function (a, b) {\n var collection = getInternalState(this).collection;\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = collection[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n }\n });\n\n IS_WEAK || defineProperty(Constructor.prototype, 'size', {\n configurable: true,\n get: function () {\n return getInternalState(this).collection.size;\n }\n });\n }\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: true }, exported);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","module.exports = typeof window == 'object';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof NativeConstructor) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return NativeConstructor.apply(this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && typeof sourceProperty == 'function') resultProperty = bind(Function.call, sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n target[key] = resultProperty;\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!has(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n path[VIRTUAL_PROTOTYPE][key] = sourceProperty;\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `Number.isInteger` method implementation\n// https://tc39.es/ecma262/#sec-number.isinteger\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = true;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","module.exports = {};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) {\n if (options && options.unsafe && target[key]) target[key] = src[key];\n else redefine(target, key, src[key], options);\n } return target;\n};\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!has(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.13.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line unicorn/no-unsafe-regex -- safe\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = String(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar iterate = require('../internals/iterate');\n\nvar $AggregateError = function AggregateError(errors, message) {\n var that = this;\n if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);\n if (setPrototypeOf) {\n // eslint-disable-next-line unicorn/error-message -- expected\n that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));\n var errorsArray = [];\n iterate(errors, errorsArray.push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\n$AggregateError.prototype = create(Error.prototype, {\n constructor: createPropertyDescriptor(5, $AggregateError),\n message: createPropertyDescriptor(5, ''),\n name: createPropertyDescriptor(5, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n AggregateError: $AggregateError\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true }, {\n bind: bind\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar re = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = string.charAt(offset - 1);\n var next = string.charAt(offset + 1);\n if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) {\n return '\\\\u' + match.charCodeAt(0).toString(16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var result = $stringify.apply(null, arguments);\n return typeof result == 'string' ? result.replace(re, fix) : result;\n }\n });\n}\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n isInteger: isInteger\n});\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n errors.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && typeof NativePromise == 'function') {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromise.prototype['finally'] !== method) {\n redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromiseConstructorPrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar $endsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar $startsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","'use strict';\nvar global = require('../internals/global');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceIternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n } return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n } return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n } return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n","// TODO: Remove from `core-js@4`\nrequire('./es.aggregate-error');\n","// TODO: Remove from `core-js@4`\nrequire('./es.promise.all-settled.js');\n","// TODO: Remove from `core-js@4`\nrequire('./es.promise.any');\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\n\n// `Promise.try` method\n// https://github.com/tc39/proposal-promise-try\n$({ target: 'Promise', stat: true }, {\n 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n var result = perform(callbackfn);\n (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n return promiseCapability.promise;\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n","require('./es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n","var parent = require('../../../es/array/virtual/entries');\n\nmodule.exports = parent;\n","var parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/ends-with');\n\nmodule.exports = parent;\n","require('../../modules/web.dom-collections.iterator');\nvar entries = require('../array/virtual/entries');\nvar classof = require('../../internals/classof');\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.entries;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.entries)\n // eslint-disable-next-line no-prototype-builtins -- safe\n || DOMIterables.hasOwnProperty(classof(it)) ? entries : own;\n};\n","var parent = require('../../es/instance/fill');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/find-index');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/find');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/flat');\n\nmodule.exports = parent;\n","require('../../modules/web.dom-collections.iterator');\nvar forEach = require('../array/virtual/for-each');\nvar classof = require('../../internals/classof');\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.forEach;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.forEach)\n // eslint-disable-next-line no-prototype-builtins -- safe\n || DOMIterables.hasOwnProperty(classof(it)) ? forEach : own;\n};\n","var parent = require('../../es/instance/includes');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/pad-start');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/reduce');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/reverse');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/some');\n\nmodule.exports = parent;\n","var parent = require('../../es/instance/starts-with');\n\nmodule.exports = parent;\n","var parent = require('../../es/json/stringify');\n\nmodule.exports = parent;\n","var parent = require('../../es/map');\n\nmodule.exports = parent;\n","var parent = require('../../es/number/is-integer');\n\nmodule.exports = parent;\n","var parent = require('../../es/number/max-safe-integer');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/define-properties');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/entries');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/freeze');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/from-entries');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-own-property-descriptors');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/get-own-property-symbols');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/values');\n\nmodule.exports = parent;\n","var parent = require('../es/parse-int');\n\nmodule.exports = parent;\n","var parent = require('../../es/promise');\n\nmodule.exports = parent;\n","require('../modules/web.timers');\nvar path = require('../internals/path');\n\nmodule.exports = path.setInterval;\n","require('../modules/web.timers');\nvar path = require('../internals/path');\n\nmodule.exports = path.setTimeout;\n","var parent = require('../../es/set');\n\nmodule.exports = parent;\n","var parent = require('../../web/url');\n\nmodule.exports = parent;\n","var parent = require('../../es/weak-map');\n\nmodule.exports = parent;\n","require('../modules/web.url');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nvar path = require('../internals/path');\n\nmodule.exports = path.URL;\n","/**\n * A function that always returns `true`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.F\n * @example\n *\n * R.T(); //=> true\n */\nvar T = function () {\n return true;\n};\n\nmodule.exports = T;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1\");\n/**\n * Returns a function that always returns the given value. Note that for\n * non-primitives the value returned is a reference to the original value.\n *\n * This function is known as `const`, `constant`, or `K` (for K combinator) in\n * other languages and libraries.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> (* -> a)\n * @param {*} val The value to wrap in a function\n * @return {Function} A Function :: * -> val.\n * @example\n *\n * const t = R.always('Tee');\n * t(); //=> 'Tee'\n */\n\n\nvar always =\n/*#__PURE__*/\n_curry1(function always(val) {\n return function () {\n return val;\n };\n});\n\nmodule.exports = always;","var _arity =\n/*#__PURE__*/\nrequire(\"./internal/_arity\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\n\n\nvar bind =\n/*#__PURE__*/\n_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\n\nmodule.exports = bind;","var _arity =\n/*#__PURE__*/\nrequire(\"./internal/_arity\");\n\nvar _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1\");\n\nvar map =\n/*#__PURE__*/\nrequire(\"./map\");\n\nvar max =\n/*#__PURE__*/\nrequire(\"./max\");\n\nvar reduce =\n/*#__PURE__*/\nrequire(\"./reduce\");\n/**\n * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.\n * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments\n * to `fn` are applied to each of the predicates in turn until one returns a\n * \"truthy\" value, at which point `fn` returns the result of applying its\n * arguments to the corresponding transformer. If none of the predicates\n * matches, `fn` returns undefined.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Logic\n * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *)\n * @param {Array} pairs A list of [predicate, transformer]\n * @return {Function}\n * @see R.ifElse, R.unless, R.when\n * @example\n *\n * const fn = R.cond([\n * [R.equals(0), R.always('water freezes at 0°C')],\n * [R.equals(100), R.always('water boils at 100°C')],\n * [R.T, temp => 'nothing special happens at ' + temp + '°C']\n * ]);\n * fn(0); //=> 'water freezes at 0°C'\n * fn(50); //=> 'nothing special happens at 50°C'\n * fn(100); //=> 'water boils at 100°C'\n */\n\n\nvar cond =\n/*#__PURE__*/\n_curry1(function cond(pairs) {\n var arity = reduce(max, 0, map(function (pair) {\n return pair[0].length;\n }, pairs));\n return _arity(arity, function () {\n var idx = 0;\n\n while (idx < pairs.length) {\n if (pairs[idx][0].apply(this, arguments)) {\n return pairs[idx][1].apply(this, arguments);\n }\n\n idx += 1;\n }\n });\n});\n\nmodule.exports = cond;","var _includes =\n/*#__PURE__*/\nrequire(\"./internal/_includes\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Works also with strings.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.includes\n * @deprecated since v0.26.0\n * @example\n *\n * R.contains(3, [1, 2, 3]); //=> true\n * R.contains(4, [1, 2, 3]); //=> false\n * R.contains({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.contains([42], [[42]]); //=> true\n * R.contains('ba', 'banana'); //=>true\n */\n\n\nvar contains =\n/*#__PURE__*/\n_curry2(_includes);\n\nmodule.exports = contains;","var _arity =\n/*#__PURE__*/\nrequire(\"./internal/_arity\");\n\nvar _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar _curryN =\n/*#__PURE__*/\nrequire(\"./internal/_curryN\");\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\n\n\nvar curryN =\n/*#__PURE__*/\n_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n\n return _arity(length, _curryN(length, [], fn));\n});\n\nmodule.exports = curryN;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Returns the second argument if it is not `null`, `undefined` or `NaN`;\n * otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {a} default The default value.\n * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`.\n * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value\n * @example\n *\n * const defaultTo42 = R.defaultTo(42);\n *\n * defaultTo42(null); //=> 42\n * defaultTo42(undefined); //=> 42\n * defaultTo42(false); //=> false\n * defaultTo42('Ramda'); //=> 'Ramda'\n * // parseInt('string') results in NaN\n * defaultTo42(parseInt('string')); //=> 42\n */\n\n\nvar defaultTo =\n/*#__PURE__*/\n_curry2(function defaultTo(d, v) {\n return v == null || v !== v ? d : v;\n});\n\nmodule.exports = defaultTo;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar _equals =\n/*#__PURE__*/\nrequire(\"./internal/_equals\");\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\n\n\nvar equals =\n/*#__PURE__*/\n_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\n\nmodule.exports = equals;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar _dispatchable =\n/*#__PURE__*/\nrequire(\"./internal/_dispatchable\");\n\nvar _filter =\n/*#__PURE__*/\nrequire(\"./internal/_filter\");\n\nvar _isObject =\n/*#__PURE__*/\nrequire(\"./internal/_isObject\");\n\nvar _reduce =\n/*#__PURE__*/\nrequire(\"./internal/_reduce\");\n\nvar _xfilter =\n/*#__PURE__*/\nrequire(\"./internal/_xfilter\");\n\nvar keys =\n/*#__PURE__*/\nrequire(\"./keys\");\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\n\n\nvar filter =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['filter'], _xfilter, function (pred, filterable) {\n return _isObject(filterable) ? _reduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n\n return acc;\n }, {}, keys(filterable)) : // else\n _filter(pred, filterable);\n}));\n\nmodule.exports = filter;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1\");\n\nvar _makeFlat =\n/*#__PURE__*/\nrequire(\"./internal/_makeFlat\");\n/**\n * Returns a new list by pulling every item out of it (and all its sub-arrays)\n * and putting them in a new array, depth-first.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b]\n * @param {Array} list The array to consider.\n * @return {Array} The flattened list.\n * @see R.unnest\n * @example\n *\n * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]);\n * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n */\n\n\nvar flatten =\n/*#__PURE__*/\n_curry1(\n/*#__PURE__*/\n_makeFlat(true));\n\nmodule.exports = flatten;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1\");\n\nvar curryN =\n/*#__PURE__*/\nrequire(\"./curryN\");\n/**\n * Returns a new function much like the supplied one, except that the first two\n * arguments' order is reversed.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z)\n * @param {Function} fn The function to invoke with its first two parameters reversed.\n * @return {*} The result of invoking `fn` with its first two parameters' order reversed.\n * @example\n *\n * const mergeThree = (a, b, c) => [].concat(a, b, c);\n *\n * mergeThree(1, 2, 3); //=> [1, 2, 3]\n *\n * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]\n * @symb R.flip(f)(a, b, c) = f(b, a, c)\n */\n\n\nvar flip =\n/*#__PURE__*/\n_curry1(function flip(fn) {\n return curryN(fn.length, function (a, b) {\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = b;\n args[1] = a;\n return fn.apply(this, args);\n });\n});\n\nmodule.exports = flip;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1\");\n/**\n * Creates a new object from a list key-value pairs. If a key appears in\n * multiple pairs, the rightmost pair is included in the object.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [[k,v]] -> {k: v}\n * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object.\n * @return {Object} The object made by pairing up `keys` and `values`.\n * @see R.toPairs, R.pair\n * @example\n *\n * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3}\n */\n\n\nvar fromPairs =\n/*#__PURE__*/\n_curry1(function fromPairs(pairs) {\n var result = {};\n var idx = 0;\n\n while (idx < pairs.length) {\n result[pairs[idx][0]] = pairs[idx][1];\n idx += 1;\n }\n\n return result;\n});\n\nmodule.exports = fromPairs;","var nth =\n/*#__PURE__*/\nrequire(\"./nth\");\n/**\n * Returns the first element of the given list or string. In some libraries\n * this function is named `first`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {Array|String} list\n * @return {*}\n * @see R.tail, R.init, R.last\n * @example\n *\n * R.head(['fi', 'fo', 'fum']); //=> 'fi'\n * R.head([]); //=> undefined\n *\n * R.head('abc'); //=> 'a'\n * R.head(''); //=> ''\n */\n\n\nvar head =\n/*#__PURE__*/\nnth(0);\nmodule.exports = head;","var _objectIs =\n/*#__PURE__*/\nrequire(\"./internal/_objectIs\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Returns true if its arguments are identical, false otherwise. Values are\n * identical if they reference the same memory. `NaN` is identical to `NaN`;\n * `0` and `-0` are not identical.\n *\n * Note this is merely a curried version of ES6 `Object.is`.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * const o = {};\n * R.identical(o, o); //=> true\n * R.identical(1, 1); //=> true\n * R.identical(1, '1'); //=> false\n * R.identical([], []); //=> false\n * R.identical(0, -0); //=> false\n * R.identical(NaN, NaN); //=> true\n */\n\n\nvar identical =\n/*#__PURE__*/\n_curry2(_objectIs);\n\nmodule.exports = identical;","function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}\n\nmodule.exports = _arity;","function _arrayFromIterator(iter) {\n var list = [];\n var next;\n\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n\n return list;\n}\n\nmodule.exports = _arrayFromIterator;","function _complement(f) {\n return function () {\n return !f.apply(this, arguments);\n };\n}\n\nmodule.exports = _complement;","var _isPlaceholder =\n/*#__PURE__*/\nrequire(\"./_isPlaceholder\");\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}\n\nmodule.exports = _curry1;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./_curry1\");\n\nvar _isPlaceholder =\n/*#__PURE__*/\nrequire(\"./_isPlaceholder\");\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}\n\nmodule.exports = _curry2;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./_curry1\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./_curry2\");\n\nvar _isPlaceholder =\n/*#__PURE__*/\nrequire(\"./_isPlaceholder\");\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}\n\nmodule.exports = _curry3;","var _arity =\n/*#__PURE__*/\nrequire(\"./_arity\");\n\nvar _isPlaceholder =\n/*#__PURE__*/\nrequire(\"./_isPlaceholder\");\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n\n combined[combinedIdx] = result;\n\n if (!_isPlaceholder(result)) {\n left -= 1;\n }\n\n combinedIdx += 1;\n }\n\n return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n };\n}\n\nmodule.exports = _curryN;","var _isArray =\n/*#__PURE__*/\nrequire(\"./_isArray\");\n\nvar _isTransformer =\n/*#__PURE__*/\nrequire(\"./_isTransformer\");\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer [xf] to return a new transformer (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} xf transducer to initialize if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\n\n\nfunction _dispatchable(methodNames, xf, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n\n var args = Array.prototype.slice.call(arguments, 0);\n var obj = args.pop();\n\n if (!_isArray(obj)) {\n var idx = 0;\n\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, args);\n }\n\n idx += 1;\n }\n\n if (_isTransformer(obj)) {\n var transducer = xf.apply(null, args);\n return transducer(obj);\n }\n }\n\n return fn.apply(this, arguments);\n };\n}\n\nmodule.exports = _dispatchable;","var _arrayFromIterator =\n/*#__PURE__*/\nrequire(\"./_arrayFromIterator\");\n\nvar _includesWith =\n/*#__PURE__*/\nrequire(\"./_includesWith\");\n\nvar _functionName =\n/*#__PURE__*/\nrequire(\"./_functionName\");\n\nvar _has =\n/*#__PURE__*/\nrequire(\"./_has\");\n\nvar _objectIs =\n/*#__PURE__*/\nrequire(\"./_objectIs\");\n\nvar keys =\n/*#__PURE__*/\nrequire(\"../keys\");\n\nvar type =\n/*#__PURE__*/\nrequire(\"../type\");\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparision of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n\n var b = _arrayFromIterator(bIterator);\n\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n } // if *a* array contains any element that is not included in *b*\n\n\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\n\nfunction _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n\n var typeA = type(a);\n\n if (typeA !== type(b)) {\n return false;\n }\n\n if (a == null || b == null) {\n return false;\n }\n\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n\n break;\n\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n\n break;\n\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n\n break;\n\n case 'Error':\n return a.name === b.name && a.message === b.message;\n\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n\n break;\n }\n\n var idx = stackA.length - 1;\n\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n\n idx -= 1;\n }\n\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n\n var keysA = keys(a);\n\n if (keysA.length !== keys(b).length) {\n return false;\n }\n\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n\n while (idx >= 0) {\n var key = keysA[idx];\n\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n\n idx -= 1;\n }\n\n return true;\n}\n\nmodule.exports = _equals;","function _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n\n idx += 1;\n }\n\n return result;\n}\n\nmodule.exports = _filter;","function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}\n\nmodule.exports = _functionName;","function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = _has;","var _indexOf =\n/*#__PURE__*/\nrequire(\"./_indexOf\");\n\nfunction _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}\n\nmodule.exports = _includes;","function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n}\n\nmodule.exports = _includesWith;","var equals =\n/*#__PURE__*/\nrequire(\"../equals\");\n\nfunction _indexOf(list, a, idx) {\n var inf, item; // Array.prototype.indexOf doesn't exist below IE9\n\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n\n while (idx < list.length) {\n item = list[idx];\n\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } // non-zero numbers can utilise Set\n\n\n return list.indexOf(a, idx);\n // all these types can utilise Set\n\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n\n }\n } // anything else not covered above, defer to R.equals\n\n\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n}\n\nmodule.exports = _indexOf;","var _has =\n/*#__PURE__*/\nrequire(\"./_has\");\n\nvar toString = Object.prototype.toString;\n\nvar _isArguments =\n/*#__PURE__*/\nfunction () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\n\nmodule.exports = _isArguments;","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nmodule.exports = Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","var _curry1 =\n/*#__PURE__*/\nrequire(\"./_curry1\");\n\nvar _isArray =\n/*#__PURE__*/\nrequire(\"./_isArray\");\n\nvar _isString =\n/*#__PURE__*/\nrequire(\"./_isString\");\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\n\n\nvar _isArrayLike =\n/*#__PURE__*/\n_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n\n if (!x) {\n return false;\n }\n\n if (typeof x !== 'object') {\n return false;\n }\n\n if (_isString(x)) {\n return false;\n }\n\n if (x.nodeType === 1) {\n return !!x.length;\n }\n\n if (x.length === 0) {\n return true;\n }\n\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n\n return false;\n});\n\nmodule.exports = _isArrayLike;","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nmodule.exports = Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};","function _isObject(x) {\n return Object.prototype.toString.call(x) === '[object Object]';\n}\n\nmodule.exports = _isObject;","function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}\n\nmodule.exports = _isPlaceholder;","function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}\n\nmodule.exports = _isString;","function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}\n\nmodule.exports = _isTransformer;","var _isArrayLike =\n/*#__PURE__*/\nrequire(\"./_isArrayLike\");\n/**\n * `_makeFlat` is a helper function that returns a one-level or fully recursive\n * function based on the flag passed in.\n *\n * @private\n */\n\n\nfunction _makeFlat(recursive) {\n return function flatt(list) {\n var value, jlen, j;\n var result = [];\n var idx = 0;\n var ilen = list.length;\n\n while (idx < ilen) {\n if (_isArrayLike(list[idx])) {\n value = recursive ? flatt(list[idx]) : list[idx];\n j = 0;\n jlen = value.length;\n\n while (j < jlen) {\n result[result.length] = value[j];\n j += 1;\n }\n } else {\n result[result.length] = list[idx];\n }\n\n idx += 1;\n }\n\n return result;\n };\n}\n\nmodule.exports = _makeFlat;","function _map(fn, functor) {\n var idx = 0;\n var len = functor.length;\n var result = Array(len);\n\n while (idx < len) {\n result[idx] = fn(functor[idx]);\n idx += 1;\n }\n\n return result;\n}\n\nmodule.exports = _map;","var _has =\n/*#__PURE__*/\nrequire(\"./_has\"); // Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\nfunction _objectAssign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n var idx = 1;\n var length = arguments.length;\n\n while (idx < length) {\n var source = arguments[idx];\n\n if (source != null) {\n for (var nextKey in source) {\n if (_has(nextKey, source)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n\n idx += 1;\n }\n\n return output;\n}\n\nmodule.exports = typeof Object.assign === 'function' ? Object.assign : _objectAssign;","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\n\nmodule.exports = typeof Object.is === 'function' ? Object.is : _objectIs;","var _isArrayLike =\n/*#__PURE__*/\nrequire(\"./_isArrayLike\");\n\nvar _xwrap =\n/*#__PURE__*/\nrequire(\"./_xwrap\");\n\nvar bind =\n/*#__PURE__*/\nrequire(\"../bind\");\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n idx += 1;\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n step = iter.next();\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\n\nfunction _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n\n if (_isArrayLike(list)) {\n return _arrayReduce(fn, acc, list);\n }\n\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}\n\nmodule.exports = _reduce;","module.exports = {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","var _curry2 =\n/*#__PURE__*/\nrequire(\"./_curry2\");\n\nvar _xfBase =\n/*#__PURE__*/\nrequire(\"./_xfBase\");\n\nvar XFilter =\n/*#__PURE__*/\nfunction () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n\n return XFilter;\n}();\n\nvar _xfilter =\n/*#__PURE__*/\n_curry2(function _xfilter(f, xf) {\n return new XFilter(f, xf);\n});\n\nmodule.exports = _xfilter;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./_curry2\");\n\nvar _xfBase =\n/*#__PURE__*/\nrequire(\"./_xfBase\");\n\nvar XMap =\n/*#__PURE__*/\nfunction () {\n function XMap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n\n XMap.prototype['@@transducer/init'] = _xfBase.init;\n XMap.prototype['@@transducer/result'] = _xfBase.result;\n\n XMap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, this.f(input));\n };\n\n return XMap;\n}();\n\nvar _xmap =\n/*#__PURE__*/\n_curry2(function _xmap(f, xf) {\n return new XMap(f, xf);\n});\n\nmodule.exports = _xmap;","var XWrap =\n/*#__PURE__*/\nfunction () {\n function XWrap(fn) {\n this.f = fn;\n }\n\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nfunction _xwrap(fn) {\n return new XWrap(fn);\n}\n\nmodule.exports = _xwrap;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1\");\n\nvar _has =\n/*#__PURE__*/\nrequire(\"./internal/_has\");\n\nvar _isArguments =\n/*#__PURE__*/\nrequire(\"./internal/_isArguments\"); // cover IE < 9 keys issues\n\n\nvar hasEnumBug = !\n/*#__PURE__*/\n{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // Safari bug\n\nvar hasArgsEnumBug =\n/*#__PURE__*/\nfunction () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n var idx = 0;\n\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n};\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\n\n\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ?\n/*#__PURE__*/\n_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) :\n/*#__PURE__*/\n_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n\n var prop, nIdx;\n var ks = [];\n\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n\n nIdx -= 1;\n }\n }\n\n return ks;\n});\nmodule.exports = keys;","var nth =\n/*#__PURE__*/\nrequire(\"./nth\");\n/**\n * Returns the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.init, R.head, R.tail\n * @example\n *\n * R.last(['fi', 'fo', 'fum']); //=> 'fum'\n * R.last([]); //=> undefined\n *\n * R.last('abc'); //=> 'c'\n * R.last(''); //=> ''\n */\n\n\nvar last =\n/*#__PURE__*/\nnth(-1);\nmodule.exports = last;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Returns `true` if the first argument is less than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.gt\n * @example\n *\n * R.lt(2, 1); //=> false\n * R.lt(2, 2); //=> false\n * R.lt(2, 3); //=> true\n * R.lt('a', 'z'); //=> true\n * R.lt('z', 'a'); //=> false\n */\n\n\nvar lt =\n/*#__PURE__*/\n_curry2(function lt(a, b) {\n return a < b;\n});\n\nmodule.exports = lt;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Returns `true` if the first argument is less than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.gte\n * @example\n *\n * R.lte(2, 1); //=> false\n * R.lte(2, 2); //=> true\n * R.lte(2, 3); //=> true\n * R.lte('a', 'z'); //=> true\n * R.lte('z', 'a'); //=> false\n */\n\n\nvar lte =\n/*#__PURE__*/\n_curry2(function lte(a, b) {\n return a <= b;\n});\n\nmodule.exports = lte;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar _dispatchable =\n/*#__PURE__*/\nrequire(\"./internal/_dispatchable\");\n\nvar _map =\n/*#__PURE__*/\nrequire(\"./internal/_map\");\n\nvar _reduce =\n/*#__PURE__*/\nrequire(\"./internal/_reduce\");\n\nvar _xmap =\n/*#__PURE__*/\nrequire(\"./internal/_xmap\");\n\nvar curryN =\n/*#__PURE__*/\nrequire(\"./curryN\");\n\nvar keys =\n/*#__PURE__*/\nrequire(\"./keys\");\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => (a -> b) -> f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex\n * @example\n *\n * const double = x => x * 2;\n *\n * R.map(double, [1, 2, 3]); //=> [2, 4, 6]\n *\n * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\n\n\nvar map =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {\n switch (Object.prototype.toString.call(functor)) {\n case '[object Function]':\n return curryN(functor.length, function () {\n return fn.call(this, functor.apply(this, arguments));\n });\n\n case '[object Object]':\n return _reduce(function (acc, key) {\n acc[key] = fn(functor[key]);\n return acc;\n }, {}, keys(functor));\n\n default:\n return _map(fn, functor);\n }\n}));\n\nmodule.exports = map;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Returns the larger of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.maxBy, R.min\n * @example\n *\n * R.max(789, 123); //=> 789\n * R.max('a', 'b'); //=> 'b'\n */\n\n\nvar max =\n/*#__PURE__*/\n_curry2(function max(a, b) {\n return b > a ? b : a;\n});\n\nmodule.exports = max;","var _objectAssign =\n/*#__PURE__*/\nrequire(\"./internal/_objectAssign\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeRight, R.mergeDeepRight, R.mergeWith, R.mergeWithKey\n * @deprecated since v0.26.0\n * @example\n *\n * R.merge({ 'name': 'fred', 'age': 10 }, { 'age': 40 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const withDefaults = R.merge({x: 0, y: 0});\n * withDefaults({y: 2}); //=> {x: 0, y: 2}\n * @symb R.merge(a, b) = {...a, ...b}\n */\n\n\nvar merge =\n/*#__PURE__*/\n_curry2(function merge(l, r) {\n return _objectAssign({}, l, r);\n});\n\nmodule.exports = merge;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar _isString =\n/*#__PURE__*/\nrequire(\"./internal/_isString\");\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> a | Undefined\n * @sig Number -> String -> String\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n * const list = ['foo', 'bar', 'baz', 'quux'];\n * R.nth(1, list); //=> 'bar'\n * R.nth(-1, list); //=> 'quux'\n * R.nth(-99, list); //=> undefined\n *\n * R.nth(2, 'abc'); //=> 'c'\n * R.nth(3, 'abc'); //=> ''\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\n\n\nvar nth =\n/*#__PURE__*/\n_curry2(function nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return _isString(list) ? list.charAt(idx) : list[idx];\n});\n\nmodule.exports = nth;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar paths =\n/*#__PURE__*/\nrequire(\"./paths\");\n/**\n * Retrieve the value at a given path.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> a | Undefined\n * @param {Array} path The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop, R.nth\n * @example\n *\n * R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n * R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1\n * R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2\n */\n\n\nvar path =\n/*#__PURE__*/\n_curry2(function path(pathAr, obj) {\n return paths([pathAr], obj)[0];\n});\n\nmodule.exports = path;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar _isInteger =\n/*#__PURE__*/\nrequire(\"./internal/_isInteger\");\n\nvar nth =\n/*#__PURE__*/\nrequire(\"./nth\");\n/**\n * Retrieves the values at given paths of an object.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Object\n * @typedefn Idx = [String | Int]\n * @sig [Idx] -> {a} -> [a | Undefined]\n * @param {Array} pathsArray The array of paths to be fetched.\n * @param {Object} obj The object to retrieve the nested properties from.\n * @return {Array} A list consisting of values at paths specified by \"pathsArray\".\n * @see R.path\n * @example\n *\n * R.paths([['a', 'b'], ['p', 0, 'q']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, 3]\n * R.paths([['a', 'b'], ['p', 'r']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, undefined]\n */\n\n\nvar paths =\n/*#__PURE__*/\n_curry2(function paths(pathsArray, obj) {\n return pathsArray.map(function (paths) {\n var val = obj;\n var idx = 0;\n var p;\n\n while (idx < paths.length) {\n if (val == null) {\n return;\n }\n\n p = paths[idx];\n val = _isInteger(p) ? nth(p, val) : val[p];\n idx += 1;\n }\n\n return val;\n });\n});\n\nmodule.exports = paths;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Returns a partial copy of an object containing only the keys specified. If\n * the key does not exist, the property is ignored.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.omit, R.props\n * @example\n *\n * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}\n * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1}\n */\n\n\nvar pick =\n/*#__PURE__*/\n_curry2(function pick(names, obj) {\n var result = {};\n var idx = 0;\n\n while (idx < names.length) {\n if (names[idx] in obj) {\n result[names[idx]] = obj[names[idx]];\n }\n\n idx += 1;\n }\n\n return result;\n});\n\nmodule.exports = pick;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar path =\n/*#__PURE__*/\nrequire(\"./path\");\n/**\n * Returns a function that when supplied an object returns the indicated\n * property of that object, if it exists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig Idx -> {s: a} -> a | Undefined\n * @param {String|Number} p The property name or array index\n * @param {Object} obj The object to query\n * @return {*} The value at `obj.p`.\n * @see R.path, R.nth\n * @example\n *\n * R.prop('x', {x: 100}); //=> 100\n * R.prop('x', {}); //=> undefined\n * R.prop(0, [100]); //=> 100\n * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4\n */\n\n\nvar prop =\n/*#__PURE__*/\n_curry2(function prop(p, obj) {\n return path([p], obj);\n});\n\nmodule.exports = prop;","var _curry3 =\n/*#__PURE__*/\nrequire(\"./internal/_curry3\");\n\nvar _reduce =\n/*#__PURE__*/\nrequire(\"./internal/_reduce\");\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\n\n\nvar reduce =\n/*#__PURE__*/\n_curry3(_reduce);\n\nmodule.exports = reduce;","var _complement =\n/*#__PURE__*/\nrequire(\"./internal/_complement\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar filter =\n/*#__PURE__*/\nrequire(\"./filter\");\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n * const isOdd = (n) => n % 2 === 1;\n *\n * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\n\n\nvar reject =\n/*#__PURE__*/\n_curry2(function reject(pred, filterable) {\n return filter(_complement(pred), filterable);\n});\n\nmodule.exports = reject;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1\");\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig (* -> {*}) -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(undefined); //=> \"Undefined\"\n */\n\n\nvar type =\n/*#__PURE__*/\n_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\n\nmodule.exports = type;","var _includesWith =\n/*#__PURE__*/\nrequire(\"./internal/_includesWith\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied predicate to\n * two list elements. Prefers the first item if two items compare equal based\n * on the predicate.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category List\n * @sig ((a, a) -> Boolean) -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * const strEq = R.eqBy(String);\n * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2]\n * R.uniqWith(strEq)([{}, {}]); //=> [{}]\n * R.uniqWith(strEq)([1, '1', 1]); //=> [1]\n * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1']\n */\n\n\nvar uniqWith =\n/*#__PURE__*/\n_curry2(function uniqWith(pred, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n var item;\n\n while (idx < len) {\n item = list[idx];\n\n if (!_includesWith(pred, item, result)) {\n result[result.length] = item;\n }\n\n idx += 1;\n }\n\n return result;\n});\n\nmodule.exports = uniqWith;","var _includes =\n/*#__PURE__*/\nrequire(\"./internal/_includes\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n\nvar flip =\n/*#__PURE__*/\nrequire(\"./flip\");\n\nvar reject =\n/*#__PURE__*/\nrequire(\"./reject\");\n/**\n * Returns a new list without values in the first argument.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @param {Array} list1 The values to be removed from `list2`.\n * @param {Array} list2 The array to remove values from.\n * @return {Array} The new array without values in `list1`.\n * @see R.transduce, R.difference, R.remove\n * @example\n *\n * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4]\n */\n\n\nvar without =\n/*#__PURE__*/\n_curry2(function (xs, list) {\n return reject(flip(_includes)(xs), list);\n});\n\nmodule.exports = without;","var _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2\");\n/**\n * Creates a new object out of a list of keys and a list of values.\n * Key/value pairing is truncated to the length of the shorter of the two lists.\n * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [String] -> [*] -> {String: *}\n * @param {Array} keys The array that will be properties on the output object.\n * @param {Array} values The list of values on the output object.\n * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`.\n * @example\n *\n * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3}\n */\n\n\nvar zipObj =\n/*#__PURE__*/\n_curry2(function zipObj(keys, values) {\n var idx = 0;\n var len = Math.min(keys.length, values.length);\n var out = {};\n\n while (idx < len) {\n out[keys[idx]] = values[idx];\n idx += 1;\n }\n\n return out;\n});\n\nmodule.exports = zipObj;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6648__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8991__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7042__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4468__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2570__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9964__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9685__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2692__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1426__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5237__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7711__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7785__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1804__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8454__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4866__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4102__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9457__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5992__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4285__;","module.exports = __WEBPACK_EXTERNAL_MODULE__6532__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3465__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9422__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Convert string from snake_case to PascalCase\n * @rtype (s: String) => String\n * @param {String} s - String to convert\n * @return {String} Converted string\n */\nexport function snakeToPascal (s: string): string {\n return s.replace(/_./g, match => match[1].toUpperCase())\n}\n\n/**\n * Convert string from PascalCase to snake_case\n * @rtype (s: String) => String\n * @param {String} s - String to convert\n * @return {String} Converted string\n */\nexport function pascalToSnake (s: string): string {\n return s.replace(/[A-Z]/g, match => `_${match.toLowerCase()}`)\n}\n\n/**\n * Check whether a string is valid hex.\n * @param {string} str String to validate.\n * @return {boolean} True if the string is valid hex, false otherwise.\n */\nexport function isHex (str: string): boolean {\n return str.length % 2 === 0 && /^[0-9a-f]+$/i.test(str)\n}\n\n/**\n * Check whether a string is valid base-64.\n * @param {string} str String to validate.\n * @return {boolean} True if the string is valid base-64, false otherwise.\n */\nexport function isBase64 (str: string): boolean {\n if (str.length % 4 > 0 || /[^0-9a-z+/=]/i.test(str)) return false\n const index = str.indexOf('=')\n return index === -1 || /={1,2}/.test(str.slice(index))\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js'\nimport { isBase64, isHex } from './string'\n\n/**\n * Bytes module\n * @module @aeternity/aepp-sdk/es/utils/bytes\n * @example import { Crypto } from '@aeternity/aepp-sdk'\n */\n\n/**\n * Convert bignumber to byte array\n * @param {BigNumber} x bignumber instance\n * @return Buffer\n */\nexport function bigNumberToByteArray (x: BigNumber): Buffer {\n if (!x.isInteger()) throw new Error(`Unexpected not integer value: ${x.toFixed()}`)\n let hexString = x.toString(16)\n if (hexString.length % 2 === 1) hexString = '0' + hexString\n return Buffer.from(hexString, 'hex')\n}\n\n/**\n * Convert string, number, or BigNumber to byte array\n * @param {null|string|number|BigNumber} val\n * @param {boolean} big enables force conversion to BigNumber\n * @return Buffer\n */\nexport function toBytes (val?: null | string | number | BigNumber, big: boolean = false): Buffer {\n // Encode a value to bytes.\n // If the value is an int it will be encoded as bytes big endian\n // Raises ValueError if the input is not an int or string\n\n if (val === undefined || val === null) return Buffer.from([])\n if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val)\n return bigNumberToByteArray(val)\n }\n if (typeof val === 'string') {\n return Buffer.from(val)\n }\n throw new Error('Byte serialization not supported')\n}\n\n/**\n * Convert a string to a Buffer. If encoding is not specified, hex-encoding\n * will be used if the input is valid hex. If the input is valid base64 but\n * not valid hex, base64 will be used. Otherwise, utf8 will be used.\n * @param {string} str String to be converted.\n * @param {string} [enc] Encoding of the input string.\n * @return {buffer} Buffer containing the input data.\n */\nexport function str2buf (str: string, enc?: BufferEncoding): Buffer {\n return Buffer.from(\n str,\n enc ?? (isHex(str) ? 'hex' : undefined) ?? (isBase64(str) ? 'base64' : undefined)\n )\n}\n","import _Array$isArray from \"@babel/runtime-corejs3/core-js/array/is-array\";\nexport default function _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import _sliceInstanceProperty from \"@babel/runtime-corejs3/core-js/instance/slice\";\nimport _Array$from from \"@babel/runtime-corejs3/core-js/array/from\";\nimport arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n var _context;\n\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","import _Symbol from \"@babel/runtime-corejs3/core-js/symbol\";\nimport _getIteratorMethod from \"@babel/runtime-corejs3/core-js/get-iterator-method\";\nexport default function _iterableToArrayLimit(arr, i) {\n var _i = arr && (typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import _Symbol from \"@babel/runtime-corejs3/core-js/symbol\";\nimport _getIteratorMethod from \"@babel/runtime-corejs3/core-js/get-iterator-method\";\nimport _Array$from from \"@babel/runtime-corejs3/core-js/array/from\";\nexport default function _iterableToArray(iter) {\n if (typeof _Symbol !== \"undefined\" && _getIteratorMethod(iter) != null || iter[\"@@iterator\"] != null) return _Array$from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import _Array$isArray from \"@babel/runtime-corejs3/core-js/array/is-array\";\nimport arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (_Array$isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\n * ISC License (ISC)\n * Copyright 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { blake2b } from 'blakejs'\nimport type { Data } from 'blakejs'\n\n/**\n * Calculate 256bits Blake2b hash of `input`\n * @rtype (input: String) => hash: String\n * @param {Data} input - Data to hash\n * @return {Buffer} Hash\n */\nexport function hash (input: Data): Buffer {\n return Buffer.from(blake2b(input, null, 32)) // 256 bits\n}\n","import _Object$defineProperty from \"@babel/runtime-corejs3/core-js/object/define-property\";\nexport default function _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","/**\n * Transaction Schema for TxBuilder\n * @module @aeternity/aepp-sdk/es/tx/builder/schema\n * @export TxSchema\n * @example import { SCHEMA } from '@aeternity/aepp-sdk'\n */\n// # RLP version number\n// # https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization\n\nimport BigNumber from 'bignumber.js'\n\nexport const VSN = 1\nexport const VSN_2 = 2\n\n// # TRANSACTION DEFAULT TTL\nexport const TX_TTL = 0\n// # ORACLE\nexport const QUERY_FEE = 30000\nexport const ORACLE_TTL = { type: 'delta', value: 500 }\nexport const QUERY_TTL = { type: 'delta', value: 10 }\nexport const RESPONSE_TTL = { type: 'delta', value: 10 }\n// # CONTRACT\nexport const DEPOSIT = 0\nexport const AMOUNT = 0\nexport const GAS = 25000\nexport const MIN_GAS_PRICE = 1e9\nexport const MAX_AUTH_FUN_GAS = 50000\nexport const DRY_RUN_ACCOUNT = { pub: 'ak_11111111111111111111111111111111273Yts', amount: '100000000000000000000000000000000000' }\n// # AENS\nexport const NAME_TTL = 180000\n// # max number of block into the future that the name is going to be available\n// # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update\n// # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry\nexport const NAME_MAX_TTL = 36000\nexport const NAME_MAX_CLIENT_TTL = 84600\nexport const CLIENT_TTL = NAME_MAX_CLIENT_TTL\nexport const NAME_FEE = 0\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67\nexport const NAME_FEE_MULTIPLIER = 1e14 // 100000000000000\nexport const NAME_FEE_BID_INCREMENT = 0.05 // # the increment is in percentage\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272\nexport const NAME_BID_TIMEOUT_BLOCKS = 480 // # ~1 day\nexport const NAME_MAX_LENGTH_FEE = 31 // # this is the max length for a domain that requires a base fee to be paid\nexport const NAME_BID_MAX_LENGTH = 12 // # this is the max length for a domain to be part of a bid\nexport const NAME_ID_KEY = {\n ak: 'account_pubkey',\n ok: 'oracle_pubkey',\n ct: 'contract_pubkey',\n ch: 'channel'\n}\n// # ref: https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290\n// # bid ranges:\nexport const NAME_BID_RANGES = {\n 31: BigNumber(3).times(NAME_FEE_MULTIPLIER),\n 30: BigNumber(5).times(NAME_FEE_MULTIPLIER),\n 29: BigNumber(8).times(NAME_FEE_MULTIPLIER),\n 28: BigNumber(13).times(NAME_FEE_MULTIPLIER),\n 27: BigNumber(21).times(NAME_FEE_MULTIPLIER),\n 26: BigNumber(34).times(NAME_FEE_MULTIPLIER),\n 25: BigNumber(55).times(NAME_FEE_MULTIPLIER),\n 24: BigNumber(89).times(NAME_FEE_MULTIPLIER),\n 23: BigNumber(144).times(NAME_FEE_MULTIPLIER),\n 22: BigNumber(233).times(NAME_FEE_MULTIPLIER),\n 21: BigNumber(377).times(NAME_FEE_MULTIPLIER),\n 20: BigNumber(610).times(NAME_FEE_MULTIPLIER),\n 19: BigNumber(987).times(NAME_FEE_MULTIPLIER),\n 18: BigNumber(1597).times(NAME_FEE_MULTIPLIER),\n 17: BigNumber(2584).times(NAME_FEE_MULTIPLIER),\n 16: BigNumber(4181).times(NAME_FEE_MULTIPLIER),\n 15: BigNumber(6765).times(NAME_FEE_MULTIPLIER),\n 14: BigNumber(10946).times(NAME_FEE_MULTIPLIER),\n 13: BigNumber(17711).times(NAME_FEE_MULTIPLIER),\n 12: BigNumber(28657).times(NAME_FEE_MULTIPLIER),\n 11: BigNumber(46368).times(NAME_FEE_MULTIPLIER),\n 10: BigNumber(75025).times(NAME_FEE_MULTIPLIER),\n 9: BigNumber(121393).times(NAME_FEE_MULTIPLIER),\n 8: BigNumber(196418).times(NAME_FEE_MULTIPLIER),\n 7: BigNumber(317811).times(NAME_FEE_MULTIPLIER),\n 6: BigNumber(514229).times(NAME_FEE_MULTIPLIER),\n 5: BigNumber(832040).times(NAME_FEE_MULTIPLIER),\n 4: BigNumber(1346269).times(NAME_FEE_MULTIPLIER),\n 3: BigNumber(2178309).times(NAME_FEE_MULTIPLIER),\n 2: BigNumber(3524578).times(NAME_FEE_MULTIPLIER),\n 1: BigNumber(5702887).times(NAME_FEE_MULTIPLIER)\n}\n\n// # ref: https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273\n// # name bid timeouts\nexport const NAME_BID_TIMEOUTS = {\n 13: BigNumber(0),\n 12: BigNumber(NAME_BID_TIMEOUT_BLOCKS), // # 480 blocks\n 8: BigNumber(31).times(NAME_BID_TIMEOUT_BLOCKS), // # 14880 blocks\n 4: BigNumber(62).times(NAME_BID_TIMEOUT_BLOCKS) // # 29760 blocks\n}\n\n// # Tag constant for ids (type uint8)\n// # see https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type\n// # <<Tag:1/unsigned-integer-unit:8, Hash:32/binary-unit:8>>\nconst ID_TAG_ACCOUNT = 1\nconst ID_TAG_NAME = 2\nconst ID_TAG_COMMITMENT = 3\nconst ID_TAG_ORACLE = 4\nconst ID_TAG_CONTRACT = 5\nconst ID_TAG_CHANNEL = 6\n\n// # OBJECT tags\n// # see https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization\nconst OBJECT_TAG_ACCOUNT = 10\nexport const OBJECT_TAG_SIGNED_TRANSACTION = 11\nconst OBJECT_TAG_SPEND_TRANSACTION = 12\nconst OBJECT_TAG_ORACLE_REGISTER_TRANSACTION = 22\nconst OBJECT_TAG_ORACLE_QUERY_TRANSACTION = 23\nconst OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION = 24\nconst OBJECT_TAG_ORACLE_EXTEND_TRANSACTION = 25\nconst OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION = 32\nconst OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION = 33\nconst OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION = 34\nconst OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION = 35\nconst OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION = 36\nconst OBJECT_TAG_CONTRACT = 40\nconst OBJECT_TAG_CONTRACT_CALL = 41\nconst OBJECT_TAG_CONTRACT_CREATE_TRANSACTION = 42\nconst OBJECT_TAG_CONTRACT_CALL_TRANSACTION = 43\nconst OBJECT_TAG_CHANNEL_CREATE_TX = 50\nconst OBJECT_TAG_CHANNEL_DEPOSIT_TX = 51\nconst OBJECT_TAG_CHANNEL_WITHRAW_TX = 52\nconst OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX = 53\nconst OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX = 54\nconst OBJECT_TAG_CHANNEL_SLASH_TX = 55\nconst OBJECT_TAG_CHANNEL_SETTLE_TX = 56\nconst OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX = 521\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_TX = 57\nconst OBJECT_TAG_CHANNEL = 58\nconst OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX = 59\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX = 570\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX = 571\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX = 572\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX = 573\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX = 574\nconst OBJECT_TAG_CHANNEL_RECONNECT_TX = 575\nconst OBJECT_TAG_PROOF_OF_INCLUSION = 60\nconst OBJECT_TAG_STATE_TREES = 62\nconst OBJECT_TAG_MERKLE_PATRICIA_TREE = 63\nconst OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE = 64\nconst OBJECT_TAG_CONTRACTS_TREE = 621\nconst OBJECT_TAG_CONTRACT_CALLS_TREE = 622\nconst OBJECT_TAG_CHANNELS_TREE = 623\nconst OBJECT_TAG_NAMESERVICE_TREE = 624\nconst OBJECT_TAG_ORACLES_TREE = 625\nconst OBJECT_TAG_ACCOUNTS_TREE = 626\nconst OBJECT_TAG_GA_ATTACH = 80\nconst OBJECT_TAG_GA_META = 81\nconst OBJECT_TAG_PAYING_FOR = 82\nconst OBJECT_TAG_SOPHIA_BYTE_CODE = 70\n\nconst TX_FIELD = (name, type, prefix) => [name, type, prefix]\nconst TX_SCHEMA_FIELD = (schema, objectId) => [schema, objectId]\n\nconst revertObject = (obj) => Object.entries(obj).reduce((acc, [key, v]) => (acc[v] = key) && acc, {})\n\n/**\n * @constant\n * @description Object with transaction types\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/schema\n * @property {String} signed\n * @property {String} spend\n * @property {String} nameClaim\n * @property {String} namePreClaim\n * @property {String} nameUpdate\n * @property {String} nameRevoke\n * @property {String} nameTransfer\n * @property {String} contractCreate\n * @property {String} contractCall\n * @property {String} oracleRegister\n * @property {String} oracleExtend\n * @property {String} oracleQuery\n * @property {String} oracleResponse\n */\nexport const TX_TYPE = {\n account: 'account',\n signed: 'signedTx',\n spend: 'spendTx',\n // AENS\n nameClaim: 'nameClaimTx',\n namePreClaim: 'namePreClaimTx',\n nameUpdate: 'nameUpdateTx',\n nameRevoke: 'nameRevokeTx',\n nameTransfer: 'nameTransfer',\n // CONTRACT\n contract: 'contract',\n contractCreate: 'contractCreateTx',\n contractCall: 'contractCallTx',\n contractCallResult: 'contractCallResult',\n // ORACLE\n oracleRegister: 'oracleRegister',\n oracleExtend: 'oracleExtend',\n oracleQuery: 'oracleQuery',\n oracleResponse: 'oracleResponse',\n // STATE CHANNEL\n channelCreate: 'channelCreate',\n channelCloseMutual: 'channelCloseMutual',\n channelCloseSolo: 'channelCloseSolo',\n channelSlash: 'channelSlash',\n channelDeposit: 'channelDeposit',\n channelWithdraw: 'channelWithdraw',\n channelSettle: 'channelSettle',\n channelOffChain: 'channelOffChain',\n channelForceProgress: 'channelForceProgress',\n channel: 'channel',\n channelSnapshotSolo: 'channelSnapshotSolo',\n channelOffChainUpdateTransfer: 'channelOffChainUpdateTransfer',\n channelOffChainUpdateDeposit: 'channelOffChainUpdateDeposit',\n channelOffChainUpdateWithdrawal: 'channelOffChainUpdateWithdrawal',\n channelOffChainCreateContract: 'channelOffChainCreateContract',\n channelOffChainCallContract: 'channelOffChainCallContract',\n channelReconnect: 'channelReconnect',\n proofOfInclusion: 'proofOfInclusion',\n stateTrees: 'stateTrees',\n merklePatriciaTree: 'merklePatriciaTree',\n merklePatriciaTreeValue: 'merklePatriciaTreeValue',\n contractsTree: 'contractsTree',\n contractCallsTree: 'contractCallsTree',\n channelsTree: 'channelsTree',\n nameserviceTree: 'nameserviceTree',\n oraclesTree: 'oraclesTree',\n accountsTree: 'accountsTree',\n // GA ACCOUNTS\n gaAttach: 'gaAttach',\n gaMeta: 'gaMeta',\n payingFor: 'payingFor',\n sophiaByteCode: 'sophiaByteCode'\n}\n\n// # see https://github.com/aeternity/protocol/blob/minerva/contracts/contract_vms.md#virtual-machines-on-the-%C3%A6ternity-blockchain\nexport const VM_VERSIONS = {\n NO_VM: 0,\n SOPHIA: 1,\n SOPHIA_IMPROVEMENTS_MINERVA: 3,\n SOPHIA_IMPROVEMENTS_FORTUNA: 4,\n FATE: 5,\n SOPHIA_IMPROVEMENTS_LIMA: 6,\n FATE_2: 7\n}\n// # see https://github.com/aeternity/protocol/blob/minerva/contracts/contract_vms.md#virtual-machines-on-the-%C3%A6ternity-blockchain\nexport const ABI_VERSIONS = {\n NO_ABI: 0,\n SOPHIA: 1,\n FATE: 3\n}\n\nexport const PROTOCOL_VERSIONS = {\n IRIS: 5\n}\n\n// First abi/vm by default\nexport const PROTOCOL_VM_ABI = {\n [PROTOCOL_VERSIONS.IRIS]: {\n [TX_TYPE.contractCreate]: {\n vmVersion: [VM_VERSIONS.FATE_2], abiVersion: [ABI_VERSIONS.FATE]\n },\n // TODO: Ensure that AEVM is still available here\n [TX_TYPE.contractCall]: {\n vmVersion: [\n VM_VERSIONS.FATE_2,\n VM_VERSIONS.FATE,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_LIMA,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_FORTUNA,\n VM_VERSIONS.SOPHIA,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_MINERVA\n ],\n abiVersion: [ABI_VERSIONS.FATE, ABI_VERSIONS.SOPHIA]\n },\n [TX_TYPE.oracleRegister]: {\n vmVersion: [], abiVersion: [ABI_VERSIONS.NO_ABI, ABI_VERSIONS.SOPHIA]\n }\n }\n}\n\nexport const OBJECT_ID_TX_TYPE = {\n [OBJECT_TAG_ACCOUNT]: TX_TYPE.account,\n [OBJECT_TAG_SIGNED_TRANSACTION]: TX_TYPE.signed,\n [OBJECT_TAG_SPEND_TRANSACTION]: TX_TYPE.spend,\n // AENS\n [OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION]: TX_TYPE.nameClaim,\n [OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION]: TX_TYPE.namePreClaim,\n [OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION]: TX_TYPE.nameUpdate,\n [OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION]: TX_TYPE.nameRevoke,\n [OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION]: TX_TYPE.nameTransfer,\n // CONTRACT\n [OBJECT_TAG_CONTRACT]: TX_TYPE.contract,\n [OBJECT_TAG_CONTRACT_CREATE_TRANSACTION]: TX_TYPE.contractCreate,\n [OBJECT_TAG_CONTRACT_CALL_TRANSACTION]: TX_TYPE.contractCall,\n [OBJECT_TAG_CONTRACT_CALL]: TX_TYPE.contractCallResult,\n // ORACLE\n [OBJECT_TAG_ORACLE_REGISTER_TRANSACTION]: TX_TYPE.oracleRegister,\n [OBJECT_TAG_ORACLE_EXTEND_TRANSACTION]: TX_TYPE.oracleExtend,\n [OBJECT_TAG_ORACLE_QUERY_TRANSACTION]: TX_TYPE.oracleQuery,\n [OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION]: TX_TYPE.oracleResponse,\n // STATE CHANNEL\n [OBJECT_TAG_CHANNEL_CREATE_TX]: TX_TYPE.channelCreate,\n [OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX]: TX_TYPE.channelCloseMutual,\n [OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX]: TX_TYPE.channelCloseSolo,\n [OBJECT_TAG_CHANNEL_SLASH_TX]: TX_TYPE.channelSlash,\n [OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX]: TX_TYPE.channelForceProgress,\n [OBJECT_TAG_CHANNEL_DEPOSIT_TX]: TX_TYPE.channelDeposit,\n [OBJECT_TAG_CHANNEL_WITHRAW_TX]: TX_TYPE.channelWithdraw,\n [OBJECT_TAG_CHANNEL_SETTLE_TX]: TX_TYPE.channelSettle,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_TX]: TX_TYPE.channelOffChain,\n [OBJECT_TAG_CHANNEL]: TX_TYPE.channel,\n [OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX]: TX_TYPE.channelSnapshotSolo,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX]: TX_TYPE.channelOffChainUpdateTransfer,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX]: TX_TYPE.channelOffChainUpdateDeposit,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX]: TX_TYPE.channelOffChainUpdateWithdrawal,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX]: TX_TYPE.channelOffChainCreateContract,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX]: TX_TYPE.channelOffChainCallContract,\n [OBJECT_TAG_CHANNEL_RECONNECT_TX]: TX_TYPE.channelReconnect,\n [OBJECT_TAG_PROOF_OF_INCLUSION]: TX_TYPE.proofOfInclusion,\n [OBJECT_TAG_STATE_TREES]: TX_TYPE.stateTrees,\n [OBJECT_TAG_MERKLE_PATRICIA_TREE]: TX_TYPE.merklePatriciaTree,\n [OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE]: TX_TYPE.merklePatriciaTreeValue,\n [OBJECT_TAG_CONTRACTS_TREE]: TX_TYPE.contractsTree,\n [OBJECT_TAG_CONTRACT_CALLS_TREE]: TX_TYPE.contractCallsTree,\n [OBJECT_TAG_CHANNELS_TREE]: TX_TYPE.channelsTree,\n [OBJECT_TAG_NAMESERVICE_TREE]: TX_TYPE.nameserviceTree,\n [OBJECT_TAG_ORACLES_TREE]: TX_TYPE.oraclesTree,\n [OBJECT_TAG_ACCOUNTS_TREE]: TX_TYPE.accountsTree,\n // GA Accounts\n [OBJECT_TAG_GA_ATTACH]: TX_TYPE.gaAttach,\n [OBJECT_TAG_GA_META]: TX_TYPE.gaMeta,\n [OBJECT_TAG_PAYING_FOR]: TX_TYPE.payingFor,\n [OBJECT_TAG_SOPHIA_BYTE_CODE]: TX_TYPE.sophiaByteCode\n}\n\nexport const FIELD_TYPES = {\n int: 'int',\n amount: 'amount',\n id: 'id',\n ids: 'ids',\n string: 'string',\n binary: 'binary',\n rlpBinary: 'rlpBinary',\n rlpBinaries: 'rlpBinaries',\n rawBinary: 'rawBinary',\n bool: 'bool',\n hex: 'hex',\n signatures: 'signatures',\n pointers: 'pointers',\n offChainUpdates: 'offChainUpdates',\n callStack: 'callStack',\n proofOfInclusion: 'proofOfInclusion',\n mptrees: 'mptrees',\n callReturnType: 'callReturnType',\n ctVersion: 'ctVersion',\n sophiaCodeTypeInfo: 'sophiaCodeTypeInfo',\n payload: 'payload',\n any: 'any',\n stateTree: 'stateTree'\n}\n\n// FEE CALCULATION\nexport const BASE_GAS = 15000\nexport const GAS_PER_BYTE = 20\nexport const DEFAULT_FEE = 20000\nexport const KEY_BLOCK_INTERVAL = 3\n\n// MAP WITH FEE CALCULATION https://github.com/aeternity/protocol/blob/master/consensus/consensus.md#gas\nexport const TX_FEE_BASE_GAS = (txType) => {\n const factor = ({\n [TX_TYPE.channelForceProgress]: 30,\n [TX_TYPE.channelOffChain]: 0,\n [TX_TYPE.channelOffChainCallContract]: 0,\n [TX_TYPE.channelOffChainCreateContract]: 0,\n [TX_TYPE.channelOffChainUpdateDeposit]: 0,\n [TX_TYPE.channelOffChainUpdateWithdrawal]: 0,\n [TX_TYPE.channelOffChainUpdateTransfer]: 0,\n [TX_TYPE.contractCreate]: 5,\n [TX_TYPE.contractCall]: 12,\n [TX_TYPE.gaAttach]: 5,\n [TX_TYPE.gaMeta]: 5,\n [TX_TYPE.payingFor]: 1 / 5\n })[txType] || 1\n return new BigNumber(factor * BASE_GAS)\n}\n\nexport const TX_FEE_OTHER_GAS = (txType, txSize, { relativeTtl, innerTxSize }) => {\n switch (txType) {\n case TX_TYPE.oracleRegister:\n case TX_TYPE.oracleExtend:\n case TX_TYPE.oracleQuery:\n case TX_TYPE.oracleResponse:\n return new BigNumber(txSize)\n .times(GAS_PER_BYTE)\n .plus(\n Math.ceil(32000 * relativeTtl / Math.floor(60 * 24 * 365 / KEY_BLOCK_INTERVAL))\n )\n case TX_TYPE.gaMeta:\n case TX_TYPE.payingFor:\n return new BigNumber(txSize).minus(innerTxSize).times(GAS_PER_BYTE)\n default:\n return new BigNumber(txSize).times(GAS_PER_BYTE)\n }\n}\n\nexport const ID_TAG = {\n account: ID_TAG_ACCOUNT,\n name: ID_TAG_NAME,\n commitment: ID_TAG_COMMITMENT,\n oracle: ID_TAG_ORACLE,\n contract: ID_TAG_CONTRACT,\n channel: ID_TAG_CHANNEL\n}\nexport const PREFIX_ID_TAG = {\n ak: ID_TAG.account,\n nm: ID_TAG.name,\n cm: ID_TAG.commitment,\n ok: ID_TAG.oracle,\n ct: ID_TAG.contract,\n ch: ID_TAG.channel\n}\nexport const ID_TAG_PREFIX = revertObject(PREFIX_ID_TAG)\nconst VALIDATION_ERROR = (msg) => msg\n\nexport const VALIDATION_MESSAGE = {\n [FIELD_TYPES.int]: ({ value, isMinusValue }) => isMinusValue ? VALIDATION_ERROR(`${value} must be >= 0`) : VALIDATION_ERROR(`${value} is not of type Number or BigNumber`),\n [FIELD_TYPES.amount]: ({ value, isMinusValue }) => isMinusValue ? VALIDATION_ERROR(`${value} must be >= 0`) : VALIDATION_ERROR(`${value} is not of type Number or BigNumber`),\n [FIELD_TYPES.id]: ({ value, prefix }) => VALIDATION_ERROR(`'${value}' prefix doesn't match expected prefix '${prefix}' or ID_TAG for prefix not found`),\n [FIELD_TYPES.binary]: ({ prefix, value }) => VALIDATION_ERROR(`'${value}' prefix doesn't match expected prefix '${prefix}'`),\n [FIELD_TYPES.string]: ({ value }) => VALIDATION_ERROR('Not a string'),\n [FIELD_TYPES.pointers]: ({ value }) => VALIDATION_ERROR('Value must be of type Array and contains only object\\'s like \\'{key: \"account_pubkey\", id: \"ak_lkamsflkalsdalksdlasdlasdlamd\"}\\''),\n [FIELD_TYPES.ctVersion]: ({ value }) => VALIDATION_ERROR('Value must be an object with \"vmVersion\" and \"abiVersion\" fields')\n}\n\nconst BASE_TX = [\n TX_FIELD('tag', FIELD_TYPES.int),\n TX_FIELD('VSN', FIELD_TYPES.int)\n]\n\nexport const CONTRACT_BYTE_CODE_LIMA = [\n ...BASE_TX,\n TX_FIELD('sourceCodeHash', FIELD_TYPES.rawBinary),\n TX_FIELD('typeInfo', FIELD_TYPES.sophiaCodeTypeInfo),\n TX_FIELD('byteCode', FIELD_TYPES.rawBinary),\n TX_FIELD('compilerVersion', FIELD_TYPES.string),\n TX_FIELD('payable', FIELD_TYPES.bool)\n]\n\nconst ACCOUNT_TX_2 = [\n ...BASE_TX,\n TX_FIELD('flags', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('balance', FIELD_TYPES.int),\n TX_FIELD('gaContract', FIELD_TYPES.id, ['ct', 'nm']),\n TX_FIELD('gaAuthFun', FIELD_TYPES.binary, 'cb')\n]\n\nconst SPEND_TX = [\n ...BASE_TX,\n TX_FIELD('senderId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('recipientId', FIELD_TYPES.id, ['ak', 'nm']),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('payload', FIELD_TYPES.payload)\n]\n\nconst SIGNED_TX = [\n ...BASE_TX,\n TX_FIELD('signatures', FIELD_TYPES.signatures),\n TX_FIELD('encodedTx', FIELD_TYPES.rlpBinary)\n]\n\nconst NAME_PRE_CLAIM_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('commitmentId', FIELD_TYPES.id, 'cm'),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_CLAIM_TX_2 = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('name', FIELD_TYPES.binary, 'nm'),\n TX_FIELD('nameSalt', FIELD_TYPES.int),\n TX_FIELD('nameFee', FIELD_TYPES.amount),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_UPDATE_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', FIELD_TYPES.id, 'nm'),\n TX_FIELD('nameTtl', FIELD_TYPES.int),\n TX_FIELD('pointers', FIELD_TYPES.pointers),\n TX_FIELD('clientTtl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_TRANSFER_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', FIELD_TYPES.id, 'nm'),\n TX_FIELD('recipientId', FIELD_TYPES.id, ['ak', 'nm']),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_REVOKE_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', FIELD_TYPES.id, 'nm'),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('owner', FIELD_TYPES.id, 'ak'),\n TX_FIELD('ctVersion', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('log', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('active', FIELD_TYPES.bool),\n TX_FIELD('referers', FIELD_TYPES.ids, 'ak'),\n TX_FIELD('deposit', FIELD_TYPES.amount)\n]\n\nconst GA_ATTACH_TX = [\n ...BASE_TX,\n TX_FIELD('ownerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('authFun', FIELD_TYPES.rawBinary),\n TX_FIELD('ctVersion', FIELD_TYPES.ctVersion),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst GA_META_TX_2 = [\n ...BASE_TX,\n TX_FIELD('gaId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('authData', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('tx', FIELD_TYPES.rlpBinary)\n]\n\nconst PAYING_FOR_TX = [\n ...BASE_TX,\n TX_FIELD('payerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('tx', FIELD_TYPES.rlpBinary)\n]\n\nconst CONTRACT_CREATE_TX = [\n ...BASE_TX,\n TX_FIELD('ownerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('ctVersion', FIELD_TYPES.ctVersion),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('deposit', FIELD_TYPES.amount),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CONTRACT_CALL_TX = [\n ...BASE_TX,\n TX_FIELD('callerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('contractId', FIELD_TYPES.id, ['ct', 'nm']),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CONTRACT_CALL_RESULT_TX = [\n ...BASE_TX,\n TX_FIELD('callerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('callerNonce', FIELD_TYPES.int),\n TX_FIELD('height', FIELD_TYPES.int),\n TX_FIELD('contractId', FIELD_TYPES.id, 'ct'),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('gasUsed', FIELD_TYPES.int),\n TX_FIELD('returnValue', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('returnType', FIELD_TYPES.callReturnType),\n // TODO: add serialization for <log> :: [ { <address> :: id, [ <topics> :: binary() ], <data> :: binary() } ]\n TX_FIELD('log', FIELD_TYPES.rawBinary)\n]\n\nconst ORACLE_REGISTER_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('queryFormat', FIELD_TYPES.string),\n TX_FIELD('responseFormat', FIELD_TYPES.string),\n TX_FIELD('queryFee', FIELD_TYPES.amount),\n TX_FIELD('oracleTtlType', FIELD_TYPES.int),\n TX_FIELD('oracleTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('abiVersion', FIELD_TYPES.int)\n]\n\nconst ORACLE_EXTEND_TX = [\n ...BASE_TX,\n TX_FIELD('oracleId', FIELD_TYPES.id, ['ok', 'nm']),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('oracleTtlType', FIELD_TYPES.int),\n TX_FIELD('oracleTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst ORACLE_QUERY_TX = [\n ...BASE_TX,\n TX_FIELD('senderId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('oracleId', FIELD_TYPES.id, ['ok', 'nm']),\n TX_FIELD('query', FIELD_TYPES.string),\n TX_FIELD('queryFee', FIELD_TYPES.amount),\n TX_FIELD('queryTtlType', FIELD_TYPES.int),\n TX_FIELD('queryTtlValue', FIELD_TYPES.int),\n TX_FIELD('responseTtlType', FIELD_TYPES.int),\n TX_FIELD('responseTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\nconst ORACLE_RESPOND_TX = [\n ...BASE_TX,\n TX_FIELD('oracleId', FIELD_TYPES.id, 'ok'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('queryId', FIELD_TYPES.binary, 'oq'),\n TX_FIELD('response', FIELD_TYPES.string),\n TX_FIELD('responseTtlType', FIELD_TYPES.int),\n TX_FIELD('responseTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CREATE_TX_2 = [\n ...BASE_TX,\n TX_FIELD('initiator', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmount', FIELD_TYPES.int),\n TX_FIELD('responder', FIELD_TYPES.id, 'ak'),\n TX_FIELD('responderAmount', FIELD_TYPES.int),\n TX_FIELD('channelReserve', FIELD_TYPES.int),\n TX_FIELD('lockPeriod', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('initiatorDelegateIds', FIELD_TYPES.string),\n TX_FIELD('responderDelegateIds', FIELD_TYPES.string),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_DEPOSIT_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_WITHDRAW_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('toId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CLOSE_MUTUAL_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmountFinal', FIELD_TYPES.int),\n TX_FIELD('responderAmountFinal', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CLOSE_SOLO_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('poi', FIELD_TYPES.binary, 'pi'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_SLASH_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('poi', FIELD_TYPES.binary, 'pi'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_SETTLE_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmountFinal', FIELD_TYPES.int),\n TX_FIELD('responderAmountFinal', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_FORCE_PROGRESS_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('update', FIELD_TYPES.binary),\n TX_FIELD('stateHash', FIELD_TYPES.binary),\n TX_FIELD('offChainTrees', FIELD_TYPES.stateTree),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_TX_2 = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st')\n]\n\nconst CHANNEL_TX_3 = [\n ...BASE_TX,\n TX_FIELD('initiator', FIELD_TYPES.id, 'ak'),\n TX_FIELD('responder', FIELD_TYPES.id, 'ak'),\n TX_FIELD('channelAmount', FIELD_TYPES.int),\n TX_FIELD('initiatorAmount', FIELD_TYPES.int),\n TX_FIELD('responderAmount', FIELD_TYPES.int),\n TX_FIELD('channelReserve', FIELD_TYPES.int),\n TX_FIELD('initiatorDelegateIds', FIELD_TYPES.ids),\n TX_FIELD('responderDelegateIds', FIELD_TYPES.ids),\n TX_FIELD('stateHash', FIELD_TYPES.hex),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('soloRound', FIELD_TYPES.int),\n TX_FIELD('lockPeriod', FIELD_TYPES.int),\n TX_FIELD('lockedUntil', FIELD_TYPES.int),\n TX_FIELD('initiatorAuth', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('responderAuth', FIELD_TYPES.binary, 'cb')\n]\n\nconst CHANNEL_SNAPSHOT_SOLO_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('owner', FIELD_TYPES.id, 'ak'),\n TX_FIELD('ctVersion', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('deposit', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CHANNEL_OFFCHAIN_CALL_CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('caller', FIELD_TYPES.id, 'ak'),\n TX_FIELD('contract', FIELD_TYPES.id, 'ct'),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('callStack', FIELD_TYPES.callStack),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('gasLimit', FIELD_TYPES.int)\n]\n\nconst CHANNEL_RECONNECT_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('role', FIELD_TYPES.string),\n TX_FIELD('pubkey', FIELD_TYPES.id, 'ak')\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('to', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst PROOF_OF_INCLUSION_TX = [\n ...BASE_TX,\n TX_FIELD('accounts', FIELD_TYPES.mptrees),\n TX_FIELD('calls', FIELD_TYPES.mptrees),\n TX_FIELD('channels', FIELD_TYPES.mptrees),\n TX_FIELD('contracts', FIELD_TYPES.mptrees),\n TX_FIELD('ns', FIELD_TYPES.mptrees),\n TX_FIELD('oracles', FIELD_TYPES.mptrees)\n]\n\nconst STATE_TREES_TX = [\n ...BASE_TX,\n TX_FIELD('contracts', FIELD_TYPES.rlpBinary),\n TX_FIELD('calls', FIELD_TYPES.rlpBinary),\n TX_FIELD('channels', FIELD_TYPES.rlpBinary),\n TX_FIELD('ns', FIELD_TYPES.rlpBinary),\n TX_FIELD('oracles', FIELD_TYPES.rlpBinary),\n TX_FIELD('accounts', FIELD_TYPES.rlpBinary)\n]\n\nconst MERKLE_PATRICIA_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('values', FIELD_TYPES.rlpBinaries)\n]\n\nconst MERKLE_PATRICIA_TREE_VALUE_TX = [\n ...BASE_TX,\n TX_FIELD('key', FIELD_TYPES.hex),\n TX_FIELD('value', FIELD_TYPES.rawBinary)\n]\n\nconst CONTRACTS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('contracts', FIELD_TYPES.rlpBinary)\n]\n\nconst CONTRACT_CALLS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('calls', FIELD_TYPES.rlpBinary)\n]\n\nconst CHANNELS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('channels', FIELD_TYPES.rlpBinary)\n]\n\nconst NAMESERVICE_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('mtree', FIELD_TYPES.rlpBinary)\n]\n\nconst ORACLES_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('otree', FIELD_TYPES.rlpBinary)\n]\n\nconst ACCOUNTS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('accounts', FIELD_TYPES.rlpBinary)\n]\n\nexport const TX_SERIALIZATION_SCHEMA = {\n [TX_TYPE.account]: {\n 2: TX_SCHEMA_FIELD(ACCOUNT_TX_2, OBJECT_TAG_ACCOUNT)\n },\n [TX_TYPE.signed]: {\n 1: TX_SCHEMA_FIELD(SIGNED_TX, OBJECT_TAG_SIGNED_TRANSACTION)\n },\n [TX_TYPE.spend]: {\n 1: TX_SCHEMA_FIELD(SPEND_TX, OBJECT_TAG_SPEND_TRANSACTION)\n },\n [TX_TYPE.namePreClaim]: {\n 1: TX_SCHEMA_FIELD(NAME_PRE_CLAIM_TX, OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION)\n },\n [TX_TYPE.nameClaim]: {\n 2: TX_SCHEMA_FIELD(NAME_CLAIM_TX_2, OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION)\n },\n [TX_TYPE.nameUpdate]: {\n 1: TX_SCHEMA_FIELD(NAME_UPDATE_TX, OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION)\n },\n [TX_TYPE.nameTransfer]: {\n 1: TX_SCHEMA_FIELD(NAME_TRANSFER_TX, OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION)\n },\n [TX_TYPE.nameRevoke]: {\n 1: TX_SCHEMA_FIELD(NAME_REVOKE_TX, OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION)\n },\n [TX_TYPE.contract]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_TX, OBJECT_TAG_CONTRACT)\n },\n [TX_TYPE.contractCreate]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CREATE_TX, OBJECT_TAG_CONTRACT_CREATE_TRANSACTION)\n },\n [TX_TYPE.contractCall]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_TX, OBJECT_TAG_CONTRACT_CALL_TRANSACTION)\n },\n [TX_TYPE.contractCallResult]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_RESULT_TX, OBJECT_TAG_CONTRACT_CALL)\n },\n [TX_TYPE.oracleRegister]: {\n 1: TX_SCHEMA_FIELD(ORACLE_REGISTER_TX, OBJECT_TAG_ORACLE_REGISTER_TRANSACTION)\n },\n [TX_TYPE.oracleExtend]: {\n 1: TX_SCHEMA_FIELD(ORACLE_EXTEND_TX, OBJECT_TAG_ORACLE_EXTEND_TRANSACTION)\n },\n [TX_TYPE.oracleQuery]: {\n 1: TX_SCHEMA_FIELD(ORACLE_QUERY_TX, OBJECT_TAG_ORACLE_QUERY_TRANSACTION)\n },\n [TX_TYPE.oracleResponse]: {\n 1: TX_SCHEMA_FIELD(ORACLE_RESPOND_TX, OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION)\n },\n [TX_TYPE.channelCreate]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_CREATE_TX_2, OBJECT_TAG_CHANNEL_CREATE_TX)\n },\n [TX_TYPE.channelCloseMutual]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_MUTUAL_TX, OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX)\n },\n [TX_TYPE.channelCloseSolo]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_SOLO_TX, OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX)\n },\n [TX_TYPE.channelSlash]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SLASH_TX, OBJECT_TAG_CHANNEL_SLASH_TX)\n },\n [TX_TYPE.channelDeposit]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_DEPOSIT_TX, OBJECT_TAG_CHANNEL_DEPOSIT_TX)\n },\n [TX_TYPE.channelWithdraw]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_WITHDRAW_TX, OBJECT_TAG_CHANNEL_WITHRAW_TX)\n },\n [TX_TYPE.channelSettle]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SETTLE_TX, OBJECT_TAG_CHANNEL_SETTLE_TX)\n },\n [TX_TYPE.channelForceProgress]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_FORCE_PROGRESS_TX, OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX)\n },\n [TX_TYPE.channelOffChain]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_TX_2, OBJECT_TAG_CHANNEL_OFFCHAIN_TX)\n },\n [TX_TYPE.channel]: {\n 3: TX_SCHEMA_FIELD(CHANNEL_TX_3, OBJECT_TAG_CHANNEL)\n },\n [TX_TYPE.channelSnapshotSolo]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SNAPSHOT_SOLO_TX, OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX)\n },\n [TX_TYPE.channelOffChainUpdateTransfer]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX)\n },\n [TX_TYPE.channelOffChainUpdateDeposit]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX)\n },\n [TX_TYPE.channelOffChainUpdateWithdrawal]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX)\n },\n [TX_TYPE.channelOffChainCreateContract]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX)\n },\n [TX_TYPE.channelOffChainCallContract]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_CALL_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX)\n },\n [TX_TYPE.channelReconnect]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_RECONNECT_TX, OBJECT_TAG_CHANNEL_RECONNECT_TX)\n },\n [TX_TYPE.proofOfInclusion]: {\n 1: TX_SCHEMA_FIELD(PROOF_OF_INCLUSION_TX, OBJECT_TAG_PROOF_OF_INCLUSION)\n },\n [TX_TYPE.stateTrees]: {\n 1: TX_SCHEMA_FIELD(STATE_TREES_TX, OBJECT_TAG_STATE_TREES)\n },\n [TX_TYPE.merklePatriciaTree]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE)\n },\n [TX_TYPE.merklePatriciaTreeValue]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_VALUE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE)\n },\n [TX_TYPE.contractsTree]: {\n 1: TX_SCHEMA_FIELD(CONTRACTS_TREE_TX, OBJECT_TAG_CONTRACTS_TREE)\n },\n [TX_TYPE.contractCallsTree]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALLS_TREE_TX, OBJECT_TAG_CONTRACT_CALLS_TREE)\n },\n [TX_TYPE.channelsTree]: {\n 1: TX_SCHEMA_FIELD(CHANNELS_TREE_TX, OBJECT_TAG_CHANNELS_TREE)\n },\n [TX_TYPE.nameserviceTree]: {\n 1: TX_SCHEMA_FIELD(NAMESERVICE_TREE_TX, OBJECT_TAG_NAMESERVICE_TREE)\n },\n [TX_TYPE.oraclesTree]: {\n 1: TX_SCHEMA_FIELD(ORACLES_TREE_TX, OBJECT_TAG_ORACLES_TREE)\n },\n [TX_TYPE.accountsTree]: {\n 1: TX_SCHEMA_FIELD(ACCOUNTS_TREE_TX, OBJECT_TAG_ACCOUNTS_TREE)\n },\n [TX_TYPE.gaAttach]: {\n 1: TX_SCHEMA_FIELD(GA_ATTACH_TX, OBJECT_TAG_GA_ATTACH)\n },\n [TX_TYPE.gaMeta]: {\n 2: TX_SCHEMA_FIELD(GA_META_TX_2, OBJECT_TAG_GA_META)\n },\n [TX_TYPE.payingFor]: {\n 1: TX_SCHEMA_FIELD(PAYING_FOR_TX, OBJECT_TAG_PAYING_FOR)\n }\n}\n\nexport const TX_DESERIALIZATION_SCHEMA = {\n [OBJECT_TAG_ACCOUNT]: {\n 2: TX_SCHEMA_FIELD(ACCOUNT_TX_2, OBJECT_TAG_ACCOUNT)\n },\n [OBJECT_TAG_SIGNED_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(SIGNED_TX, OBJECT_TAG_SIGNED_TRANSACTION)\n },\n [OBJECT_TAG_SPEND_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(SPEND_TX, OBJECT_TAG_SPEND_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_PRE_CLAIM_TX, OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION]: {\n 2: TX_SCHEMA_FIELD(NAME_CLAIM_TX_2, OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_UPDATE_TX, OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_TRANSFER_TX, OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_REVOKE_TX, OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_TX, OBJECT_TAG_CONTRACT)\n },\n [OBJECT_TAG_CONTRACT_CREATE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CREATE_TX, OBJECT_TAG_CONTRACT_CREATE_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT_CALL_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_TX, OBJECT_TAG_CONTRACT_CALL_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT_CALL]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_RESULT_TX, OBJECT_TAG_CONTRACT_CALL)\n },\n [OBJECT_TAG_ORACLE_REGISTER_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_REGISTER_TX, OBJECT_TAG_ORACLE_REGISTER_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_EXTEND_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_EXTEND_TX, OBJECT_TAG_ORACLE_EXTEND_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_QUERY_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_QUERY_TX, OBJECT_TAG_ORACLE_QUERY_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_RESPOND_TX, OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION)\n },\n [OBJECT_TAG_CHANNEL_CREATE_TX]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_CREATE_TX_2, OBJECT_TAG_CHANNEL_CREATE_TX)\n },\n [OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_MUTUAL_TX, OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX)\n },\n [OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_SOLO_TX, OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX)\n },\n [OBJECT_TAG_CHANNEL_SLASH_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SLASH_TX, OBJECT_TAG_CHANNEL_SLASH_TX)\n },\n [OBJECT_TAG_CHANNEL_DEPOSIT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_DEPOSIT_TX, OBJECT_TAG_CHANNEL_DEPOSIT_TX)\n },\n [OBJECT_TAG_CHANNEL_WITHRAW_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_WITHDRAW_TX, OBJECT_TAG_CHANNEL_WITHRAW_TX)\n },\n [OBJECT_TAG_CHANNEL_SETTLE_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SETTLE_TX, OBJECT_TAG_CHANNEL_SETTLE_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_TX]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_TX_2, OBJECT_TAG_CHANNEL_OFFCHAIN_TX)\n },\n [OBJECT_TAG_CHANNEL]: {\n 3: TX_SCHEMA_FIELD(CHANNEL_TX_3, OBJECT_TAG_CHANNEL)\n },\n [OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SNAPSHOT_SOLO_TX, OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_CALL_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX)\n },\n [OBJECT_TAG_CHANNEL_RECONNECT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_RECONNECT_TX, OBJECT_TAG_CHANNEL_RECONNECT_TX)\n },\n [OBJECT_TAG_PROOF_OF_INCLUSION]: {\n 1: TX_SCHEMA_FIELD(PROOF_OF_INCLUSION_TX, OBJECT_TAG_PROOF_OF_INCLUSION)\n },\n [OBJECT_TAG_STATE_TREES]: {\n 1: TX_SCHEMA_FIELD(STATE_TREES_TX, OBJECT_TAG_STATE_TREES)\n },\n [OBJECT_TAG_MERKLE_PATRICIA_TREE]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE)\n },\n [OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_VALUE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE)\n },\n [OBJECT_TAG_CONTRACTS_TREE]: {\n 1: TX_SCHEMA_FIELD(CONTRACTS_TREE_TX, OBJECT_TAG_CONTRACTS_TREE)\n },\n [OBJECT_TAG_CONTRACT_CALLS_TREE]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALLS_TREE_TX, OBJECT_TAG_CONTRACT_CALLS_TREE)\n },\n [OBJECT_TAG_CHANNELS_TREE]: {\n 1: TX_SCHEMA_FIELD(CHANNELS_TREE_TX, OBJECT_TAG_CHANNELS_TREE)\n },\n [OBJECT_TAG_NAMESERVICE_TREE]: {\n 1: TX_SCHEMA_FIELD(NAMESERVICE_TREE_TX, OBJECT_TAG_NAMESERVICE_TREE)\n },\n [OBJECT_TAG_ORACLES_TREE]: {\n 1: TX_SCHEMA_FIELD(ORACLES_TREE_TX, OBJECT_TAG_ORACLES_TREE)\n },\n [OBJECT_TAG_ACCOUNTS_TREE]: {\n 1: TX_SCHEMA_FIELD(ACCOUNTS_TREE_TX, OBJECT_TAG_ACCOUNTS_TREE)\n },\n [OBJECT_TAG_GA_ATTACH]: {\n 1: TX_SCHEMA_FIELD(GA_ATTACH_TX, OBJECT_TAG_GA_ATTACH)\n },\n [OBJECT_TAG_GA_META]: {\n 2: TX_SCHEMA_FIELD(GA_META_TX_2, OBJECT_TAG_GA_META)\n },\n [OBJECT_TAG_PAYING_FOR]: {\n 1: TX_SCHEMA_FIELD(PAYING_FOR_TX, OBJECT_TAG_PAYING_FOR)\n },\n [OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_FORCE_PROGRESS_TX, OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX)\n },\n [OBJECT_TAG_SOPHIA_BYTE_CODE]: {\n 3: TX_SCHEMA_FIELD(CONTRACT_BYTE_CODE_LIMA, OBJECT_TAG_SOPHIA_BYTE_CODE)\n }\n}\n","/**\n * Big Number Helpers\n * @module @aeternity/aepp-sdk/es/utils/bignumber\n * @example import { parseBigNumber, isBigNumber, ceil } from '@aeternity/aepp-sdk/es/utils/bignumber'\n */\nimport BigNumber from 'bignumber.js'\n\n/**\n * Convert number to string\n * @param {String|Number|BigNumber} number number to convert\n * @return {String}\n */\nexport const parseBigNumber = (number: string | number | BigNumber): string =>\n new BigNumber(number.toString()).toString(10)\n\n/**\n * Check if value is BigNumber, Number or number string representation\n * @param {String|Number|BigNumber} number number to convert\n * @return {Boolean}\n */\nexport const isBigNumber = (number: string | number | BigNumber): boolean =>\n !isNaN(number as number) || Number.isInteger(number) || BigNumber.isBigNumber(number)\n\n/**\n * BigNumber ceil operation\n * @param {BigNumber} bigNumber\n * @return {BigNumber}\n */\nexport const ceil = (bigNumber: BigNumber): BigNumber => bigNumber.integerValue(BigNumber.ROUND_CEIL)\n","import * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\n\nimport {\n decodeBase58Check,\n decodeBase64Check,\n encodeBase58Check, encodeBase64Check,\n hash,\n salt\n} from '../../utils/crypto'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_BID_MAX_LENGTH,\n NAME_FEE,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n NAME_ID_KEY\n} from './schema'\nimport { ceil } from '../../utils/bignumber'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nconst base64Types = ['tx', 'st', 'ss', 'pi', 'ov', 'or', 'cb', 'cs', 'ba']\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode a domain name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded domain name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return `cm_${encodeBase58Check(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])))}`\n}\n\n/**\n * Decode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} data An Base58check or Base64check encoded and prefixed string (ex tx_..., sg_..., ak_....)\n * @param {string} [requiredPrefix] Ensure that data have this prefix\n * @return {Buffer} Decoded data\n */\nexport function decode (data, requiredPrefix) {\n const [prefix, payload, extra] = data.split('_')\n if (extra) throw new Error(`Encoded string have extra parts: ${data}`)\n if (requiredPrefix && requiredPrefix !== prefix) {\n throw new Error(`Encoded string have a wrong type: ${prefix} (expected: ${requiredPrefix})`)\n }\n return (base64Types.includes(prefix) ? decodeBase64Check : decodeBase58Check)(payload)\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer|String} data An decoded data\n * @param {string} type Prefix of Transaction\n * @return {String} Encoded string Base58check or Base64check data\n */\nexport function encode (data, type) {\n return `${type}_${base64Types.includes(type)\n ? encodeBase64Check(data)\n : encodeBase58Check(data)}`\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new Error(`Id tag for prefix ${prefix} not found.`)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = buf.readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new Error(`Prefix for id-tag ${tag} not found.`)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return BigNumber(buf.toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\n/**\n * Ensure that name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new Error('Name must be a string')\n if (!name.endsWith('.chain')) throw new Error(`Name should end with .chain: ${name}`)\n}\n\n/**\n * Is name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * What kind of a hash is this? If it begins with 'ak_' it is an\n * account key, if with 'ok_' it's an oracle key.\n *\n * @param s - the hash.\n * returns the type, or throws an exception if type not found.\n */\nexport function classify (s) {\n if (!s.match(/^[a-z]{2}_.+/)) {\n throw new Error('Not a valid hash')\n }\n\n const klass = s.substr(0, 2)\n if (klass in NAME_ID_KEY) {\n return NAME_ID_KEY[klass]\n } else {\n throw new Error(`Unknown class ${klass}`)\n }\n}\n\n/**\n * Validate name pointers array\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String[]} pointers Pointers array. Allowed values is: account(ak_), oracle(ok_), contract(ct_), channel(ch_)\n * @return {Boolean}\n */\nexport function validatePointers (pointers = []) {\n return !pointers\n .find(p => !p || typeof p !== 'string' || !['ak', 'ok', 'ct', 'ch'].includes(p.split('_')[0]))\n}\n\n/**\n * Get the minimum name fee for a domain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @return {String} the minimum fee for the domain auction\n */\nexport function getMinimumNameFee (domain) {\n const nameLength = domain.replace('.chain', '').length\n return NAME_BID_RANGES[nameLength >= NAME_MAX_LENGTH_FEE ? NAME_MAX_LENGTH_FEE : nameLength]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (domain, startFee = NAME_FEE, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new Error(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new Error(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(BigNumber(startFee).eq(NAME_FEE) ? getMinimumNameFee(domain) : startFee).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (domain, claimHeight) {\n return R.cond([\n [R.lt(5), R.always(NAME_BID_TIMEOUTS[4].plus(claimHeight))],\n [R.lt(9), R.always(NAME_BID_TIMEOUTS[8].plus(claimHeight))],\n [R.lte(NAME_BID_MAX_LENGTH), R.always(NAME_BID_TIMEOUTS[12].plus(claimHeight))],\n [R.T, R.always(BigNumber(claimHeight))]\n ])(domain.replace('.chain', '').length).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Transaction abiVersion\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n return name.replace('.chain', '').length < 13\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Crypto module\n * @module @aeternity/aepp-sdk/es/utils/crypto\n * @example import { Crypto } from '@aeternity/aepp-sdk'\n */\n\nimport bs58check from 'bs58check'\nimport ed2curve from 'ed2curve'\nimport nacl from 'tweetnacl'\nimport aesjs from 'aes-js'\nimport shajs from 'sha.js'\n\nimport { str2buf, toBytes } from './bytes'\nimport { decode } from '../tx/builder/helpers'\nimport { hash } from './crypto-ts'\n\nexport * from './crypto-ts'\n\nconst Ecb = aesjs.ModeOfOperation.ecb\n\n/**\n * Generate address from secret key\n * @rtype (secret: String) => tx: Promise[String]\n * @param {String} secret - Private key\n * @return {String} Public key\n */\nexport function getAddressFromPriv (secret) {\n const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))\n const publicBuffer = Buffer.from(keys.publicKey)\n return `ak_${encodeBase58Check(publicBuffer)}`\n}\n\n/**\n * Check if address is valid\n * @rtype (input: String) => valid: Boolean\n * @param {String} address - Address\n * @param {String} prefix Transaction prefix. Default: 'ak'\n * @return {Boolean} valid\n */\nexport function isAddressValid (address, prefix = 'ak') {\n if (typeof address !== 'string') return false\n try {\n return decode(address, prefix).length === 32\n } catch (e) {\n return false\n }\n}\n\n/**\n * Parse decimal address and return base58Check encoded address with prefix 'ak'\n * @rtype (input: String) => address: String\n * @param {String} decimalAddress - Address\n * @return {String} address\n */\nexport function addressFromDecimal (decimalAddress) {\n return aeEncodeKey(toBytes(decimalAddress, true))\n}\n\n/**\n * Calculate SHA256 hash of `input`\n * @rtype (input: String) => hash: String\n * @param {String} input - Data to hash\n * @return {String} Hash\n */\nexport function sha256hash (input) {\n return shajs('sha256').update(input).digest()\n}\n\n/**\n * Generate a random salt (positive integer)\n * @rtype () => salt: Number\n * @return {Number} random salt\n */\nexport function salt () {\n return Math.floor(Math.random() * Math.floor(Number.MAX_SAFE_INTEGER))\n}\n\n/**\n * Base64check encode given `input`\n * @rtype (input: String|buffer) => Buffer\n * @param {String} input - Data to encode\n * @return {Buffer} Base64check encoded data\n */\nexport function encodeBase64Check (input) {\n const buffer = Buffer.from(input)\n const checksum = checkSumFn(input)\n const payloadWithChecksum = Buffer.concat([buffer, checksum], buffer.length + 4)\n return payloadWithChecksum.toString('base64')\n}\n\nexport function checkSumFn (payload) {\n return sha256hash(sha256hash(payload)).slice(0, 4)\n}\n\nfunction decodeRaw (buffer) {\n const payload = buffer.slice(0, -4)\n const checksum = buffer.slice(-4)\n const newChecksum = checkSumFn(payload)\n\n if (!checksum.equals(newChecksum)) return\n\n return payload\n}\n\n/**\n * Base64check decode given `str`\n * @rtype (str: String) => Buffer\n * @param {String} str - Data to decode\n * @return {Buffer} Base64check decoded data\n */\nexport function decodeBase64Check (str) {\n const buffer = Buffer.from(str, 'base64')\n const payload = decodeRaw(buffer)\n if (!payload) throw new Error('Invalid checksum')\n return Buffer.from(payload)\n}\n\n/**\n * Base58 encode given `input`\n * @rtype (input: String) => String\n * @param {String|Buffer} input - Data to encode\n * @return {String} Base58 encoded data\n */\nexport function encodeBase58Check (input) {\n return bs58check.encode(Buffer.from(input))\n}\n\n/**\n * Base58 decode given `str`\n * @rtype (str: String) => Buffer\n * @param {String} str - Data to decode\n * @return {Buffer} Base58 decoded data\n */\nexport function decodeBase58Check (str) {\n return bs58check.decode(str)\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @rtype (value: Number) => Buffer\n * @param {Number} value - Value to encode\n * @return {Buffer} - Encoded data\n */\nexport function encodeUnsigned (value) {\n const binary = Buffer.allocUnsafe(4)\n binary.writeUInt32BE(value)\n return binary.slice(binary.findIndex(i => i !== 0))\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @rtype (owner: String, nonce: Number) => String\n * @param {String} owner - Address of contract owner\n * @param {Number} nonce - Round when contract was created\n * @return {String} - Contract address\n */\nexport function encodeContractAddress (owner, nonce) {\n const publicKey = decode(owner, 'ak')\n const binary = Buffer.concat([publicKey, encodeUnsigned(nonce)])\n return `ct_${encodeBase58Check(hash(binary))}`\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @rtype (secret: Uint8Array) => KeyPair\n * @param {Uint8Array} secret - secret key\n * @return {Object} - Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret (secret) {\n return nacl.sign.keyPair.fromSecretKey(secret)\n}\n\n/**\n * Generate a random ED25519 keypair\n * @rtype (raw: Boolean) => {publicKey: String, secretKey: String} | {publicKey: Buffer, secretKey: Buffer}\n * @param {Boolean} raw - Whether to return raw (binary) keys\n * @return {Object} Key pair\n */\nexport function generateKeyPair (raw = false) {\n // <node>/apps/aens/test/aens_test_utils.erl\n const keyPair = nacl.sign.keyPair()\n\n const publicBuffer = Buffer.from(keyPair.publicKey)\n const secretBuffer = Buffer.from(keyPair.secretKey)\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer\n }\n } else {\n return {\n publicKey: `ak_${encodeBase58Check(publicBuffer)}`,\n secretKey: secretBuffer.toString('hex')\n }\n }\n}\n\n/**\n * Encrypt given data using `password`\n * @rtype (password: String, binaryData: Buffer) => Uint8Array\n * @param {String} password - Password to encrypt with\n * @param {Buffer} binaryData - Data to encrypt\n * @return {Uint8Array} Encrypted data\n */\nexport function encryptKey (password, binaryData) {\n const hashedPasswordBytes = sha256hash(password)\n const aesEcb = new Ecb(hashedPasswordBytes)\n return aesEcb.encrypt(binaryData)\n}\n\n/**\n * Decrypt given data using `password`\n * @rtype (password: String, encrypted: String) => Uint8Array\n * @param {String} password - Password to decrypt with\n * @param {String} encrypted - Data to decrypt\n * @return {Buffer} Decrypted data\n */\nexport function decryptKey (password, encrypted) {\n const encryptedBytes = Buffer.from(encrypted)\n const hashedPasswordBytes = sha256hash(password)\n const aesEcb = new Ecb(hashedPasswordBytes)\n return Buffer.from(aesEcb.decrypt(encryptedBytes))\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @rtype (data: String|Buffer, privateKey: Buffer) => Buffer\n * @param {String|Buffer} data - Data to sign\n * @param {String|Buffer} privateKey - Key to sign with\n * @return {Buffer|Uint8Array} Signature\n */\nexport function sign (data, privateKey) {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey))\n}\n\n/**\n * Verify that signature was signed by public key\n * @rtype (str: String, signature: Buffer, publicKey: Buffer) => Boolean\n * @param {String|Buffer} str - Data to verify\n * @param {Buffer} signature - Signature to verify\n * @param {Buffer} publicKey - Key to verify against\n * @return {Boolean} Valid?\n */\nexport function verify (str, signature, publicKey) {\n return nacl.sign.detached.verify(new Uint8Array(str), signature, publicKey)\n}\n\nexport function messageToHash (message) {\n const p = Buffer.from('aeternity Signed Message:\\n', 'utf8')\n const msg = Buffer.from(message, 'utf8')\n if (msg.length >= 0xFD) throw new Error('message too long')\n return hash(Buffer.concat([Buffer.from([p.length]), p, Buffer.from([msg.length]), msg]))\n}\n\nexport function signMessage (message, privateKey) {\n return sign(messageToHash(message), privateKey)\n}\n\nexport function verifyMessage (str, signature, publicKey) {\n return verify(messageToHash(str), signature, publicKey)\n}\n\n/**\n * æternity readable public keys are the base58-encoded public key, prepended\n * with 'ak_'\n * @rtype (binaryKey: Buffer) => String\n * @param {Buffer} binaryKey - Key to encode\n * @return {String} Encoded key\n */\nexport function aeEncodeKey (binaryKey) {\n const publicKeyBuffer = Buffer.from(binaryKey, 'hex')\n const pubKeyAddress = encodeBase58Check(publicKeyBuffer)\n return `ak_${pubKeyAddress}`\n}\n\n/**\n * Check key pair for validity\n *\n * Sign a message, and then verifying that signature\n * @rtype (privateKey: Buffer, publicKey: Buffer) => Boolean\n * @param {Buffer} privateKey - Private key to verify\n * @param {Buffer} publicKey - Public key to verify\n * @return {Boolean} Valid?\n */\nexport function isValidKeypair (privateKey, publicKey) {\n const message = Buffer.from('TheMessage')\n const signature = sign(message, privateKey)\n return verify(message, signature, publicKey)\n}\n\n/**\n * This function encrypts a message using base58check encoded and 'ak' prefixed\n * publicKey such that only the corresponding secretKey will\n * be able to decrypt\n * @rtype (msg: String, publicKey: String) => Object\n * @param {Buffer} msg - Data to encode\n * @param {String} publicKey - Public key\n * @return {Object}\n */\nexport function encryptData (msg, publicKey) {\n const ephemeralKeyPair = nacl.box.keyPair()\n const pubKeyUInt8Array = decode(publicKey, 'ak')\n const nonce = nacl.randomBytes(nacl.box.nonceLength)\n\n const encryptedMessage = nacl.box(\n Buffer.from(msg),\n nonce,\n ed2curve.convertPublicKey(pubKeyUInt8Array),\n ephemeralKeyPair.secretKey\n )\n\n return {\n ciphertext: Buffer.from(encryptedMessage).toString('hex'),\n ephemPubKey: Buffer.from(ephemeralKeyPair.publicKey).toString('hex'),\n nonce: Buffer.from(nonce).toString('hex'),\n version: 'x25519-xsalsa20-poly1305'\n }\n}\n\n/**\n * This function decrypt a message using secret key\n * @rtype (secretKey: String, encryptedData: Object) => Buffer|null\n * @param {String} secretKey - Secret key\n * @param {Object} encryptedData - Encrypted data\n * @return {Buffer|null}\n */\nexport function decryptData (secretKey, encryptedData) {\n const receiverSecretKeyUint8Array = ed2curve.convertSecretKey(Buffer.from(secretKey, 'hex'))\n const nonce = Buffer.from(encryptedData.nonce, 'hex')\n const ciphertext = Buffer.from(encryptedData.ciphertext, 'hex')\n const ephemPubKey = Buffer.from(encryptedData.ephemPubKey, 'hex')\n const decrypted = nacl.box.open(\n ciphertext,\n nonce,\n ephemPubKey,\n receiverSecretKeyUint8Array\n )\n return decrypted ? Buffer.from(decrypted) : decrypted\n}\n","import _Promise from \"@babel/runtime-corejs3/core-js/promise\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n _Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new _Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import nacl from 'tweetnacl'\nimport { v4 as uuid } from 'uuid'\n\nimport { encodeBase58Check } from './crypto'\nimport { str2buf } from './bytes'\n\nconst _sodium = require('libsodium-wrappers-sumo')\n\n/**\n * KeyStore module\n * @module @aeternity/aepp-sdk/es/utils/keystore\n * @example import { Keystore } from '@aeternity/aepp-sdk'\n * @example const { Keystore } = require('@aeternity/aepp-sdk')\n */\n\nconst DEFAULTS = {\n crypto: {\n secret_type: 'ed25519',\n symmetric_alg: 'xsalsa20-poly1305',\n kdf: 'argon2id',\n kdf_params: {\n memlimit_kib: 65536,\n opslimit: 3,\n parallelism: 1\n }\n }\n}\n\n// DERIVED KEY PART\nconst DERIVED_KEY_FUNCTIONS = {\n argon2id: deriveKeyUsingArgon2id\n}\n\nexport async function deriveKeyUsingArgon2id (password, salt, options) {\n const { memlimit_kib: memoryCost, opslimit: timeCost } = options.kdf_params\n // const isBrowser = !(typeof module !== 'undefined' && module.exports)\n\n return _sodium.ready.then(async () => {\n // tslint:disable-next-line:typedef\n const sodium = _sodium\n\n const result = sodium.crypto_pwhash(\n 32,\n password,\n salt,\n timeCost,\n memoryCost * 1024,\n sodium.crypto_pwhash_ALG_ARGON2ID13\n )\n return Buffer.from(result)\n })\n}\n\n// CRYPTO PART\nconst CRYPTO_FUNCTIONS = {\n 'xsalsa20-poly1305': { encrypt: encryptXsalsa20Poly1305, decrypt: decryptXsalsa20Poly1305 }\n}\n\nfunction encryptXsalsa20Poly1305 ({ plaintext, key, nonce }) {\n return nacl.secretbox(plaintext, nonce, key)\n}\n\nfunction decryptXsalsa20Poly1305 ({ ciphertext, key, nonce }) {\n const res = nacl.secretbox.open(ciphertext, nonce, key)\n if (!res) throw new Error('Invalid password or nonce')\n return res\n}\n\n/**\n * Symmetric private key encryption using secret (derived) key.\n * @param {buffer|string} plaintext Data to be encrypted.\n * @param {buffer|string} key Secret key.\n * @param {buffer|string} nonce Randomly generated nonce.\n * @param {string=} algo Encryption algorithm (default: DEFAULTS.crypto.symmetric_alg).\n * @return {buffer} Encrypted data.\n */\nfunction encrypt (plaintext, key, nonce, algo = DEFAULTS.crypto.symmetric_alg) {\n if (!CRYPTO_FUNCTIONS[algo]) throw new Error(algo + ' is not available')\n return CRYPTO_FUNCTIONS[algo].encrypt({ plaintext, nonce, key })\n}\n\n/**\n * Symmetric private key decryption using secret (derived) key.\n * @param {buffer|Uint8Array} ciphertext Data to be decrypted.\n * @param {buffer|Uint8Array} key Secret key.\n * @param {buffer|Uint8Array} nonce Nonce from key-object.\n * @param {string=} algo Encryption algorithm.\n * @return {buffer} Decrypted data.\n */\nfunction decrypt (ciphertext, key, nonce, algo) {\n if (!CRYPTO_FUNCTIONS[algo]) throw new Error(algo + ' is not available')\n return CRYPTO_FUNCTIONS[algo].decrypt({ ciphertext, nonce, key })\n}\n\n/**\n * Derive secret key from password with key derivation function.\n * @param {string} password User-supplied password.\n * @param {buffer|Uint8Array} nonce Randomly generated nonce.\n * @param {Object=} options Encryption parameters.\n * @param {string=} options.kdf Key derivation function (default: DEFAULTS.crypto.kdf).\n * @param {Object=} options.kdf_params KDF parameters (default: DEFAULTS.crypto.kdf_params).\n * @return {buffer} Secret key derived from password.\n */\nasync function deriveKey (password, nonce, options = {\n kdf_params: DEFAULTS.crypto.kdf_params,\n kdf: DEFAULTS.crypto.kdf\n}) {\n if (typeof password === 'undefined' || password === null || !nonce) {\n throw new Error('Must provide password and nonce to derive a key')\n }\n\n if (!Object.prototype.hasOwnProperty.call(DERIVED_KEY_FUNCTIONS, options.kdf)) throw new Error('Unsupported kdf type')\n\n return DERIVED_KEY_FUNCTIONS[options.kdf](password, nonce, options)\n}\n\n/**\n * Assemble key data object in secret-storage format.\n * @param {buffer} name Key name.\n * @param {buffer} derivedKey Password-derived secret key.\n * @param {buffer} privateKey Private key.\n * @param {buffer} nonce Randomly generated 24byte nonce.\n * @param {buffer} salt Randomly generated 16byte salt.\n * @param {Object=} options Encryption parameters.\n * @param {string=} options.kdf Key derivation function (default: argon2id).\n * @param {string=} options.cipher Symmetric cipher (default: constants.cipher).\n * @param {Object=} options.kdf_params KDF parameters (default: constants.<kdf>).\n * @return {Object}\n */\nfunction marshal (name, derivedKey, privateKey, nonce, salt, options = {}) {\n const opt = Object.assign({}, DEFAULTS.crypto, options)\n return Object.assign(\n { name, version: 1, public_key: getAddressFromPriv(privateKey), id: uuid() },\n {\n crypto: Object.assign(\n {\n secret_type: opt.secret_type,\n symmetric_alg: opt.symmetric_alg,\n ciphertext: Buffer.from(encrypt(Buffer.from(privateKey), derivedKey, nonce, opt.symmetric_alg)).toString('hex'),\n cipher_params: { nonce: Buffer.from(nonce).toString('hex') }\n },\n { kdf: opt.kdf, kdf_params: { ...opt.kdf_params, salt: Buffer.from(salt).toString('hex') } }\n )\n }\n )\n}\n\nexport function getAddressFromPriv (secret) {\n const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))\n const publicBuffer = Buffer.from(keys.publicKey)\n return `ak_${encodeBase58Check(publicBuffer)}`\n}\n\n/**\n * Recover plaintext private key from secret-storage key object.\n * @param {String} password Keystore object password.\n * @param {Object} keyObject Keystore object.\n * @return {Buffer} Plaintext private key.\n */\nexport async function recover (password, keyObject) {\n validateKeyObj(keyObject)\n const nonce = Uint8Array.from(str2buf(keyObject.crypto.cipher_params.nonce))\n const salt = Uint8Array.from(str2buf(keyObject.crypto.kdf_params.salt))\n const kdfParams = keyObject.crypto.kdf_params\n const kdf = keyObject.crypto.kdf\n\n const key = await decrypt(\n Uint8Array.from(str2buf(keyObject.crypto.ciphertext)),\n await deriveKey(password, salt, { kdf, kdf_params: kdfParams }),\n nonce,\n keyObject.crypto.symmetric_alg\n )\n if (!key) throw new Error('Invalid password')\n\n if (Buffer.from(key).length === 64) return Buffer.from(key).toString('hex')\n return Buffer.from(key).toString('utf-8')\n}\n\n/**\n * Export private key to keystore secret-storage format.\n * @param {String} name Key name.\n * @param {String} password User-supplied password.\n * @param {String} privateKey Private key.\n * @param {Buffer} nonce Randomly generated 24byte nonce.\n * @param {Buffer} salt Randomly generated 16byte salt.\n * @param {Object=} options Encryption parameters.\n * @param {String=} options.kdf Key derivation function (default: pbkdf2).\n * @param {String=} options.cipher Symmetric cipher (default: constants.cipher).\n * @param {Object=} options.kdfparams KDF parameters (default: constants.<kdf>).\n * @return {Object}\n */\nexport async function dump (name, password, privateKey, nonce = nacl.randomBytes(24), salt = nacl.randomBytes(16), options = {}) {\n const opt = Object.assign({}, DEFAULTS.crypto, options)\n return marshal(\n name,\n await deriveKey(password, salt, opt),\n privateKey,\n nonce,\n salt,\n opt\n )\n}\n\nexport function validateKeyObj (obj) {\n const root = ['crypto', 'id', 'version', 'public_key']\n const cryptoKeys = ['cipher_params', 'ciphertext', 'symmetric_alg', 'kdf', 'kdf_params']\n\n const missingRootKeys = root.filter(key => !Object.prototype.hasOwnProperty.call(obj, key))\n if (missingRootKeys.length) throw new Error(`Invalid key file format. Require properties: ${missingRootKeys}`)\n\n const missingCryptoKeys = cryptoKeys.filter(key => !Object.prototype.hasOwnProperty.call(obj.crypto, key))\n if (missingCryptoKeys.length) throw new Error(`Invalid key file format. Require properties: ${missingCryptoKeys}`)\n\n return true\n}\n","import _Symbol from \"@babel/runtime-corejs3/core-js/symbol\";\nimport _Symbol$iterator from \"@babel/runtime-corejs3/core-js/symbol/iterator\";\nexport default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Amount Formatter\n * @module @aeternity/aepp-sdk/es/utils/amount-formatter\n * @example import { AmountFormatter } from '@aeternity/aepp-sdk'\n */\nimport BigNumber from 'bignumber.js'\nimport { isBigNumber } from './bignumber'\n\n/**\n * AE amount formats\n */\nexport const AE_AMOUNT_FORMATS = {\n AE: 'ae',\n MILI_AE: 'miliAE',\n MICRO_AE: 'microAE',\n NANO_AE: 'nanoAE',\n PICO_AE: 'picoAE',\n FEMTO_AE: 'femtoAE',\n AETTOS: 'aettos'\n}\n\n/**\n * DENOMINATION_MAGNITUDE\n */\nexport const DENOMINATION_MAGNITUDE = {\n [AE_AMOUNT_FORMATS.AE]: 0,\n [AE_AMOUNT_FORMATS.MILI_AE]: -3,\n [AE_AMOUNT_FORMATS.MICRO_AE]: -6,\n [AE_AMOUNT_FORMATS.NANO_AE]: -9,\n [AE_AMOUNT_FORMATS.PICO_AE]: -12,\n [AE_AMOUNT_FORMATS.FEMTO_AE]: -15,\n [AE_AMOUNT_FORMATS.AETTOS]: -18\n}\n\n/**\n * Convert amount to AE\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='aettos'] denomination of amount, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const toAe = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n): string => formatAmount(value, { denomination, targetDenomination: AE_AMOUNT_FORMATS.AE })\n\n/**\n * Convert amount to aettos\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='ae'] denomination of amount, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const toAettos = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AE } = {}\n): string => formatAmount(value, { denomination })\n\n/**\n * Convert amount from one to other denomination\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='aettos'] denomination of amount, can be ['ae', 'aettos']\n * @param {String} [options.targetDenomination='aettos'] target denomination, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const formatAmount = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS, targetDenomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n): string => {\n const denominations = Object.values(AE_AMOUNT_FORMATS)\n if (!denominations.includes(denomination)) throw new Error(`Invalid denomination: ${denomination}`)\n if (!denominations.includes(targetDenomination)) throw new Error(`Invalid target denomination: ${targetDenomination}`)\n if (!isBigNumber(value)) throw new Error(`Value ${value?.toString()} is not type of number`)\n\n return new BigNumber(value)\n .shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination])\n .toFixed()\n}\n\ninterface Prefix {\n name: string\n magnitude: number\n}\n\nconst prefixes: Prefix[] = [\n { name: 'exa', magnitude: 18 },\n { name: 'giga', magnitude: 9 },\n { name: '', magnitude: 0 },\n { name: 'pico', magnitude: -12 }\n]\n\nconst getNearestPrefix = (exponent: number): Prefix => prefixes.reduce((p, n) => (\n Math.abs(n.magnitude - exponent) < Math.abs(p.magnitude - exponent) ? n : p))\n\nconst getLowerBoundPrefix = (exponent: number): Prefix => prefixes\n .find(p => p.magnitude <= exponent) ?? prefixes[prefixes.length - 1]\n\nexport default (rawValue: string | number | BigNumber): string => {\n const value: BigNumber = new BigNumber(rawValue)\n\n const exp = value.e ?? 0\n const { name, magnitude } = (exp < 0 ? getNearestPrefix : getLowerBoundPrefix)(exp)\n const v = value\n .shiftedBy(-magnitude)\n .precision(9 + Math.min(exp - magnitude, 0))\n .toFixed()\n return `${v}${name !== '' ? ' ' : ''}${name}`\n}\n","import _Object$defineProperty from \"@babel/runtime-corejs3/core-js/object/define-property\";\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { encode as rlpEncode } from 'rlp'\nimport type { Input } from 'rlp'\nimport { hash } from './crypto-ts'\n\nenum NodeType {\n Branch,\n Extension,\n Leaf\n}\n\nexport type MPTreeBinary = [Buffer, Array<[Buffer, Buffer[]]>]\n\nexport default class MPTree {\n private readonly rootHash: string\n private readonly nodes: { [key: string]: Buffer[] }\n\n private static nodeHash (node: Input): string {\n return Buffer.from(hash(rlpEncode(node))).toString('hex')\n }\n\n /**\n * Deserialize Merkle Patricia Tree\n * @rtype (binary: Array) => MPTree\n * @param {Array} binary - Binary\n * @return {MPTree} Merkle Patricia Tree\n */\n constructor (binary: MPTreeBinary) {\n this.rootHash = binary[0].toString('hex')\n this.nodes = Object.fromEntries(\n binary[1].map((node) => [node[0].toString('hex'), node[1]])\n )\n\n if (this.nodes[this.rootHash] === undefined) throw new Error('Can\\'t find a node by root hash')\n Object.entries(this.nodes).forEach(([key, node]) => {\n if (MPTree.nodeHash(node) !== key) throw new Error('Node hash is not equal to provided one')\n const { type, payload } = MPTree.parseNode(node)\n switch (type) {\n case NodeType.Branch:\n payload\n .slice(0, 16)\n .filter(n => n.length)\n .forEach((n) => {\n if (this.nodes[n.toString('hex')] === undefined) {\n throw new Error('Can\\'t find a node by hash in branch node')\n }\n })\n break\n case NodeType.Extension:\n if (this.nodes[payload[0].toString('hex')] === undefined) {\n throw new Error('Can\\'t find a node by hash in extension node')\n }\n }\n })\n }\n\n isEqual (tree: MPTree): boolean {\n return this.rootHash === tree.rootHash\n }\n\n private static parseNode (node: Buffer[]): { type: NodeType, payload: Buffer[], path: string | null } {\n switch (node.length) {\n case 17:\n return { type: NodeType.Branch, payload: node, path: null }\n case 2: {\n const path = node[0].toString('hex')\n const nibble = parseInt(path[0], 16)\n if (nibble > 3) throw new Error(`Unknown path nibble: ${nibble}`)\n const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf\n const slice = [0, 2].includes(nibble) ? 2 : 1\n return { type, payload: [node[1]], path: path.slice(slice) }\n }\n default:\n throw new Error(`Unknown node length: ${node.length}`)\n }\n }\n\n /**\n * Serialize Merkle Patricia Tree\n * @rtype () => Array\n * @return {Array} Binary\n */\n serialize (): MPTreeBinary {\n return [\n Buffer.from(this.rootHash, 'hex'),\n Object.entries(this.nodes).map(([mptHash, value]) => ([\n Buffer.from(mptHash, 'hex'),\n value\n ]))\n ]\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @rtype (key: String) => Buffer\n * @param {String} key - The key of the element to retrieve\n * @return {Buffer} Value associated to the specified key\n */\n get (key: string): Buffer | undefined {\n let searchFrom = this.rootHash\n while (true) {\n const { type, payload, path } = MPTree.parseNode(this.nodes[searchFrom])\n switch (type) {\n case NodeType.Branch:\n if (key.length === 0) return payload[16]\n searchFrom = payload[parseInt(key[0], 16)].toString('hex')\n key = key.substr(1)\n break\n case NodeType.Extension:\n if (key.substr(0, path?.length) !== path) return undefined\n searchFrom = payload[0].toString('hex')\n key = key.substr(path.length)\n break\n case NodeType.Leaf:\n if (path !== key) return undefined\n return payload[0]\n }\n }\n }\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import BigNumber from 'bignumber.js'\nimport { decode as rlpDecode, encode as rlpEncode } from 'rlp'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../utils/amount-formatter'\nimport { hash } from '../../utils/crypto'\n\nimport {\n DEFAULT_FEE,\n FIELD_TYPES,\n OBJECT_ID_TX_TYPE,\n PREFIX_ID_TAG,\n TX_DESERIALIZATION_SCHEMA,\n TX_FEE_BASE_GAS,\n TX_FEE_OTHER_GAS,\n TX_SERIALIZATION_SCHEMA,\n TX_TYPE,\n VALIDATION_MESSAGE,\n VSN\n} from './schema'\nimport {\n readInt,\n readId,\n readPointers,\n writeId,\n writeInt,\n buildPointers,\n encode,\n decode\n} from './helpers'\nimport { toBytes } from '../../utils/bytes'\nimport MPTree from '../../utils/mptree'\n\n/**\n * JavaScript-based Transaction builder\n * @module @aeternity/aepp-sdk/es/tx/builder\n * @export TxBuilder\n * @example import { TxBuilder } from '@aeternity/aepp-sdk'\n */\n\nconst ORACLE_TTL_TYPES = {\n delta: 'delta',\n block: 'block'\n}\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField (value, type, prefix) {\n if (!value) return ''\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value\n return { vmVersion: readInt(Buffer.from([vm])), abiVersion: readInt(Buffer.from([abi])) }\n }\n case FIELD_TYPES.amount:\n return readInt(value)\n case FIELD_TYPES.int:\n return readInt(value)\n case FIELD_TYPES.id:\n return readId(value)\n case FIELD_TYPES.ids:\n return value.map(readId)\n case FIELD_TYPES.bool:\n return value[0] === 1\n case FIELD_TYPES.binary:\n return encode(value, prefix)\n case FIELD_TYPES.stateTree:\n return encode(value, 'ss')\n case FIELD_TYPES.string:\n return value.toString()\n case FIELD_TYPES.payload:\n return encode(value, 'ba')\n case FIELD_TYPES.pointers:\n return readPointers(value)\n case FIELD_TYPES.rlpBinary:\n return unpackTx(value, true)\n case FIELD_TYPES.rlpBinaries:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.rawBinary:\n return value\n case FIELD_TYPES.hex:\n return value.toString('hex')\n case FIELD_TYPES.offChainUpdates:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)]\n case FIELD_TYPES.mptrees:\n return value.map(t => new MPTree(t))\n case FIELD_TYPES.callReturnType:\n switch (readInt(value)) {\n case '0': return 'ok'\n case '1': return 'error'\n case '2': return 'revert'\n default: return value\n }\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value\n .reduce(\n (acc, [funHash, fnName, argType, outType]) =>\n ({ ...acc, [fnName.toString()]: { funHash, argType, outType } }),\n {}\n )\n default:\n return value\n }\n}\n\nfunction serializeField (value, type, prefix) {\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\n return writeInt(value)\n case FIELD_TYPES.id:\n return writeId(value)\n case FIELD_TYPES.ids:\n return value.map(writeId)\n case FIELD_TYPES.bool:\n return Buffer.from([value ? 1 : 0])\n case FIELD_TYPES.binary:\n return decode(value, prefix)\n case FIELD_TYPES.stateTree:\n return decode(value, 'ss')\n case FIELD_TYPES.hex:\n return Buffer.from(value, 'hex')\n case FIELD_TYPES.signatures:\n return value.map(Buffer.from)\n case FIELD_TYPES.payload:\n return typeof value === 'string' && value.split('_')[0] === 'ba'\n ? decode(value, 'ba')\n : toBytes(value)\n case FIELD_TYPES.string:\n return toBytes(value)\n case FIELD_TYPES.pointers:\n return buildPointers(value)\n case FIELD_TYPES.rlpBinary:\n return value.rlpEncoded ?? value\n case FIELD_TYPES.mptrees:\n return value.map(t => t.serialize())\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)])\n case FIELD_TYPES.callReturnType:\n switch (value) {\n case 'ok': return writeInt(0)\n case 'error': return writeInt(1)\n case 'revert': return writeInt(2)\n default: return value\n }\n default:\n return value\n }\n}\n\nfunction validateField (value, key, type, prefix) {\n const assert = (valid, params) => valid ? {} : { [key]: VALIDATION_MESSAGE[type](params) }\n // All fields are required\n if (value === undefined || value === null) return { [key]: 'Field is required' }\n\n // Validate type of value\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int: {\n const isMinusValue = (!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).lt(0)\n return assert((!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).gte(0), { value, isMinusValue })\n }\n case FIELD_TYPES.id: {\n const prefixes = Array.isArray(prefix) ? prefix : [prefix]\n const p = prefixes.find(p => p === value.split('_')[0])\n return assert(p && PREFIX_ID_TAG[value.split('_')[0]], { value, prefix })\n }\n case FIELD_TYPES.binary:\n return assert(value.split('_')[0] === prefix, { prefix, value })\n case FIELD_TYPES.string:\n return assert(true)\n case FIELD_TYPES.ctVersion:\n return assert(typeof value === 'object' && Object.prototype.hasOwnProperty.call(value, 'abiVersion') && Object.prototype.hasOwnProperty.call(value, 'vmVersion'))\n case FIELD_TYPES.pointers:\n return assert(Array.isArray(value) && !value.find(e => e !== Object(e)), { value })\n default:\n return {}\n }\n}\n\nfunction transformParams (params, schema, { denomination } = {}) {\n params = schema\n .filter(([_, t]) => t === FIELD_TYPES.amount)\n .reduce((acc, [key]) => ({ ...params, [key]: formatAmount(params[key], { denomination }) }), params)\n const schemaKeys = schema.map(([k]) => k)\n return Object\n .entries(params)\n .reduce(\n (acc, [key, value]) => {\n if (schemaKeys.includes(key)) acc[key] = value\n if (['oracleTtl', 'queryTtl', 'responseTtl'].includes(key)) {\n acc[`${key}Type`] = value.type === ORACLE_TTL_TYPES.delta ? 0 : 1\n acc[`${key}Value`] = value.value\n }\n return acc\n },\n {}\n )\n}\n\n// INTERFACE\n\nfunction getOracleRelativeTtl (params, txType) {\n const ttlKey = {\n [TX_TYPE.oracleRegister]: 'oracleTtl',\n [TX_TYPE.oracleExtend]: 'oracleTtl',\n [TX_TYPE.oracleQuery]: 'queryTtl',\n [TX_TYPE.oracleResponse]: 'responseTtl'\n }[txType]\n\n if (params[ttlKey] || params[`${ttlKey}Value`]) {\n return params[`${ttlKey}Value`] || params[ttlKey].value\n }\n return 1\n}\n\n/**\n * Calculate min fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/index\n * @rtype (txType, { gas = 0, params }) => String\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateMinFee('spendTx', { gas, params })\n */\nexport function calculateMinFee (txType, { gas = 0, params, vsn }) {\n const multiplier = BigNumber(1e9) // 10^9 GAS_PRICE\n if (!params) return BigNumber(DEFAULT_FEE).times(multiplier).toString(10)\n\n let actualFee = buildFee(txType, { params: { ...params, fee: 0 }, multiplier, gas, vsn })\n let expected = BigNumber(0)\n\n while (!actualFee.eq(expected)) {\n actualFee = buildFee(txType, { params: { ...params, fee: actualFee }, multiplier, gas, vsn })\n expected = actualFee\n }\n return expected.toString(10)\n}\n\n/**\n * Calculate fee based on tx type and params\n * @param txType\n * @param params\n * @param gas\n * @param multiplier\n * @param vsn\n * @return {BigNumber}\n */\nfunction buildFee (txType, { params, gas = 0, multiplier, vsn }) {\n const { rlpEncoded: txWithOutFee } = buildTx({ ...params }, txType, { vsn })\n const txSize = txWithOutFee.length\n return TX_FEE_BASE_GAS(txType)\n .plus(TX_FEE_OTHER_GAS(txType, txSize, {\n relativeTtl: getOracleRelativeTtl(params, txType),\n innerTxSize: [TX_TYPE.gaMeta, TX_TYPE.payingFor].includes(txType)\n ? params.tx.tx.encodedTx.rlpEncoded.length : 0\n }))\n .times(multiplier)\n}\n\n/**\n * Calculate fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @rtype (fee, txType, gas = 0) => String\n * @param {String|Number} fee - fee\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateFee(null, 'spendTx', { gas, params })\n */\nexport function calculateFee (fee = 0, txType, { gas = 0, params, showWarning = true, vsn } = {}) {\n if (!params && showWarning) console.warn(`Can't build transaction fee, we will use DEFAULT_FEE(${DEFAULT_FEE})`)\n\n return fee || calculateMinFee(txType, { params, gas, vsn })\n}\n\n/**\n * Validate transaction params\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Array} excludeKeys Array of keys to exclude for validation\n * @return {Object} Object with validation errors\n */\nexport function validateParams (params, schema, { excludeKeys = [] }) {\n return schema\n .filter(([key]) => !excludeKeys.includes(key) && key !== 'payload')\n .reduce(\n (acc, [key, type, prefix]) => Object.assign(acc, validateField(params[key], key, type, prefix)),\n {}\n )\n}\n\n/**\n * Build binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Object} [options={}] options\n * @param {Array} [options.excludeKeys=[]] excludeKeys Array of keys to exclude for validation and build\n * @param {String} [options.denomination='aettos'] denomination Denomination of amounts (default: aettos)\n * @throws {Error} Validation error\n * @return {Array} Array with binary fields of transaction\n */\nexport function buildRawTx (params, schema, { excludeKeys = [], denomination = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key))\n\n // Transform `amount` type fields to `aettos`\n params = transformParams(params, filteredSchema, { denomination })\n // Validation\n const valid = validateParams(params, schema, { excludeKeys })\n if (Object.keys(valid).length) {\n throw new Error('Transaction build error. ' + JSON.stringify(valid))\n }\n\n return filteredSchema\n .map(([key, fieldType, prefix]) => serializeField(params[key], fieldType, prefix))\n}\n\n/**\n * Unpack binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Array} binary Array with binary transaction field's\n * @param {Array} schema Transaction schema\n * @return {Object} Object with transaction field's\n */\nexport function unpackRawTx (binary, schema) {\n return schema\n .reduce(\n (\n acc,\n [key, fieldType, prefix],\n index\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {}\n )\n}\n\n/**\n * Get transaction serialization/deserialization schema\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {{ vsn: String, objId: Number, type: String }}\n * @throws {Error} Schema not found error\n * @return {Object} Schema\n */\nconst getSchema = ({ vsn, objId, type }) => {\n const isDeserialize = !!objId\n const firstKey = isDeserialize ? objId : type\n const schema = isDeserialize ? TX_DESERIALIZATION_SCHEMA : TX_SERIALIZATION_SCHEMA\n\n if (!schema[firstKey]) {\n throw new Error(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type}`)\n }\n if (!schema[firstKey][vsn]) {\n throw new Error(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type} version ${vsn}`)\n }\n return schema[firstKey][vsn]\n}\n\n/**\n * Build transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {String} type Transaction type\n * @param {Object} [options={}] options\n * @param {Object} [options.excludeKeys] excludeKeys Array of keys to exclude for validation and build\n * @param {String} [options.prefix] Prefix of transaction\n * @throws {Error} Validation error\n * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Base64Check transaction hash with 'tx_' prefix, rlp encoded transaction and binary transaction\n */\nexport function buildTx (params, type, { excludeKeys = [], prefix = 'tx', vsn = VSN, denomination = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const [schema, tag] = getSchema({ type, vsn })\n const binary = buildRawTx({ ...params, VSN: vsn, tag }, schema, { excludeKeys, denomination: params.denomination || denomination }).filter(e => e !== undefined)\n\n const rlpEncoded = rlpEncode(binary)\n const tx = encode(rlpEncoded, prefix)\n\n return { tx, rlpEncoded, binary, txObject: unpackRawTx(binary, schema) }\n}\n\n/**\n * Unpack transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String|Buffer} encodedTx String or RLP encoded transaction array (if fromRlpBinary flag is true)\n * @param {Boolean} fromRlpBinary Unpack from RLP encoded transaction (default: false)\n * @param {String} prefix - Prefix of data\n * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Object with transaction param's, rlp encoded transaction and binary transaction\n */\nexport function unpackTx (encodedTx, fromRlpBinary = false, prefix = 'tx') {\n const rlpEncoded = fromRlpBinary ? encodedTx : decode(encodedTx, prefix)\n const binary = rlpDecode(rlpEncoded)\n\n const objId = readInt(binary[0])\n const vsn = readInt(binary[1])\n const [schema] = getSchema({ objId, vsn })\n\n return { txType: OBJECT_ID_TX_TYPE[objId], tx: unpackRawTx(binary, schema), rlpEncoded, binary }\n}\n\n/**\n * Build a transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String | Buffer} rawTx base64 or rlp encoded transaction\n * @return {String} Transaction hash\n */\nexport function buildTxHash (rawTx) {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_') ? decode(rawTx, 'tx') : rawTx\n return encode(hash(data), 'th')\n}\n\nexport default { calculateMinFee, calculateFee, unpackTx, unpackRawTx, buildTx, buildRawTx, validateParams, buildTxHash }\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import Joi from 'joi-browser'\nimport { isHex } from '../../utils/string'\nimport { toBytes } from '../../utils/bytes'\nimport { decode } from '../../tx/builder/helpers'\nimport { parseBigNumber } from '../../utils/bignumber'\nimport { isAddressValid, addressFromDecimal, hash } from '../../utils/crypto'\n\nexport const SOPHIA_TYPES = [\n 'int',\n 'string',\n 'tuple',\n 'address',\n 'bool',\n 'list',\n 'map',\n 'record',\n 'option',\n 'oracle',\n 'oracleQuery',\n 'hash',\n 'signature',\n 'bytes',\n 'variant'\n].reduce((acc, type) => ({ ...acc, [type]: type }), { ChainTtl: 'Chain.ttl' })\n\n/**\n * Transform decoded event to JS type\n * @param {Object[]} events Array of events\n * @param {Object} [options={}] Options\n * @param {Object} [options.schema=[]] SC function ACI schema\n * @return {Object}\n */\nexport function decodeEvents (events, options = { schema: [] }) {\n if (!events.length) return []\n\n return events.map(l => {\n const [eName, ...eParams] = l.topics\n const hexHash = toBytes(eName, true).toString('hex')\n const { schema } = options.schema\n .reduce(\n (acc, el) => {\n if (hash(el.name).toString('hex') === hexHash) {\n l.name = el.name\n return {\n schema: el.types,\n name: el.name\n }\n }\n return acc\n },\n { schema: [] }\n )\n const { decoded } = schema.reduce((acc, el) => {\n if (el === SOPHIA_TYPES.string) {\n return { decoded: [...acc.decoded, transformEvent(l.data, el)], params: acc.params }\n }\n const [event, ...tail] = acc.params\n return { decoded: [...acc.decoded, transformEvent(event, el)], params: tail }\n }, { decoded: [], params: eParams })\n\n return {\n ...l,\n decoded\n }\n })\n}\n\n/**\n * Transform Event based on type\n * @param {String|Number} event Event data\n * @param {String} type Event type from schema\n * @return {*}\n */\nexport function transformEvent (event, type) {\n switch (type) {\n case SOPHIA_TYPES.int:\n return parseBigNumber(event)\n case SOPHIA_TYPES.bool:\n return !!event\n case SOPHIA_TYPES.hash:\n return toBytes(event, true).toString('hex')\n case SOPHIA_TYPES.address:\n return addressFromDecimal(event).split('_')[1]\n case SOPHIA_TYPES.string:\n return decode(event).toString('utf-8')\n default:\n return toBytes(event, true)\n }\n}\n\nexport function injectVars (t, aciType) {\n const [[baseType, generic]] = Object.entries(aciType.typedef)\n const [[, varianValue]] = Object.entries(t)\n switch (baseType) {\n case SOPHIA_TYPES.variant:\n return {\n [baseType]: generic.map(el => {\n const [tag, gen] = Object.entries(el)[0]\n return {\n [tag]: gen.map(type => {\n const index = aciType.vars.map(e => e.name).indexOf(type)\n return index === -1\n ? type\n : varianValue[index]\n })\n }\n })\n }\n }\n}\n\n/**\n * Ling Type Defs\n * @param t\n * @param bindings\n * @return {Object}\n */\nexport function linkTypeDefs (t, bindings) {\n const [root, typeDef] = typeof t === 'object' ? Object.keys(t)[0].split('.') : t.split('.')\n const contractTypeDefs = bindings.find(c => c.name === root)\n const aciType = [\n ...contractTypeDefs.type_defs,\n { name: 'state', typedef: contractTypeDefs.state, vars: [] }\n ].find(({ name }) => name === typeDef)\n if (aciType.vars.length) {\n aciType.typedef = injectVars(t, aciType)\n }\n return isTypedDefOrState(aciType.typedef, bindings) ? linkTypeDefs(aciType.typedef, bindings) : aciType.typedef\n}\n\nconst isTypedDefOrState = (t, bindings) => {\n if (!['string', 'object'].includes(typeof t)) return false\n\n t = typeof t === 'object' ? Object.keys(t)[0] : t\n const [root, ...path] = t.split('.')\n // Remote Contract Address\n if (!path.length) return false\n return bindings.map(c => c.name).includes(root)\n}\n\nconst isRemoteAddress = (t) => {\n if (typeof t !== 'string') return false\n const [root, ...path] = t.split('.')\n return !path.length && !Object.values(SOPHIA_TYPES).includes(root)\n}\n\n/**\n * Parse sophia type\n * @param type\n * @param returnType\n * @return {Object}\n */\nexport function readType (type, { bindings } = {}) {\n let [t] = Array.isArray(type) ? type : [type]\n\n // If remote address\n if (isRemoteAddress(t)) return { t: SOPHIA_TYPES.address }\n // Link State and typeDef\n if (isTypedDefOrState(t, bindings)) t = linkTypeDefs(t, bindings)\n // Map, Tuple, List, Record, Bytes\n if (typeof t === 'object') {\n const [[baseType, generic]] = Object.entries(t)\n return { t: baseType, generic }\n }\n // Base types\n if (typeof t === 'string') return { t }\n}\n\n// FUNCTION ARGUMENTS TRANSFORMATION ↓↓↓\n\n/**\n * Transform JS type to Sophia-type\n * @param type\n * @param value\n * @param bindings\n * @return {string}\n */\nexport function transform (type, value, { bindings } = {}) {\n const { t, generic } = readType(type, { bindings })\n\n switch (t) {\n case SOPHIA_TYPES.ChainTtl:\n return `${value}`\n case SOPHIA_TYPES.string:\n return `\"${value}\"`\n case SOPHIA_TYPES.list:\n return `[${value.map(el => transform(generic, el, { bindings }))}]`\n case SOPHIA_TYPES.tuple:\n return `(${value.map((el, i) => transform(generic[i], el, {\n bindings\n }))})`\n case SOPHIA_TYPES.option: {\n return value === undefined ? 'None' : `Some(${transform(generic, value, {\n bindings\n })})`\n }\n case SOPHIA_TYPES.hash:\n case SOPHIA_TYPES.bytes:\n case SOPHIA_TYPES.signature:\n if (typeof value === 'string') {\n if (isHex(value)) return `#${value}`\n if (isAddressValid(value)) return `#${decode(value).toString('hex')}`\n }\n return `#${Buffer.from(value).toString('hex')}`\n case SOPHIA_TYPES.record:\n return `{${generic.reduce(\n (acc, { name, type }, i) => {\n acc += `${i !== 0 ? ',' : ''}${name} = ${transform(type, value[name], {\n bindings\n })}`\n return acc\n },\n ''\n )}}`\n case SOPHIA_TYPES.map:\n return transformMap(value, generic, { bindings })\n case SOPHIA_TYPES.variant:\n return transformVariant(value, generic, { bindings })\n }\n\n return `${value}`\n}\n\nexport function transformVariant (value, generic, { bindings }) {\n const [[variant, variantArgs]] = typeof value === 'string' ? [[value, []]] : Object.entries(value)\n const [[v, type]] = Object.entries(generic.find(o => Object.keys(o)[0].toLowerCase() === variant.toLowerCase()))\n return `${v}${!type.length\n ? ''\n : `(${variantArgs.slice(0, type.length).map((el, i) => transform(type[i], el, {\n bindings\n }))})`\n }`\n}\n\nexport function transformMap (value, generic, { bindings }) {\n if (!Array.isArray(value)) {\n if (value.entries) value = Array.from(value.entries())\n else if (value instanceof Object) value = Object.entries(value)\n }\n\n return [\n '{',\n value\n .map(([key, value]) => [\n `[${transform(generic[0], key, { bindings })}]`,\n transform(generic[1], value, { bindings })\n ].join(' = '))\n .join(),\n '}'\n ].join('')\n}\n\n// FUNCTION RETURN VALUE TRANSFORMATION ↓↓↓\n\n/**\n * Transform decoded data to JS type\n * @param aci\n * @param result\n * @param transformDecodedData\n * @return {*}\n */\nexport function transformDecodedData (aci, result, { skipTransformDecoded = false, addressPrefix = 'ak', bindings } = {}) {\n if (skipTransformDecoded) return result\n const { t, generic } = readType(aci, { bindings })\n\n switch (t) {\n case SOPHIA_TYPES.bool:\n return !!result\n case SOPHIA_TYPES.address:\n return result === 0\n ? 0\n : result\n case SOPHIA_TYPES.hash:\n case SOPHIA_TYPES.bytes:\n case SOPHIA_TYPES.signature:\n return result.split('#')[1]\n case SOPHIA_TYPES.map: {\n const [keyT, valueT] = generic\n return result\n .reduce(\n (acc, [key, val]) => {\n key = transformDecodedData(keyT, key, { bindings })\n val = transformDecodedData(valueT, val, { bindings })\n acc.push([key, val])\n return acc\n },\n []\n )\n }\n case SOPHIA_TYPES.option: {\n if (result === 'None') return undefined\n const [[variantType, [value]]] = Object.entries(result)\n return variantType === 'Some' ? transformDecodedData(generic, value, { bindings }) : undefined\n }\n case SOPHIA_TYPES.list:\n return result.map((value) => transformDecodedData(generic, value, { bindings }))\n case SOPHIA_TYPES.tuple:\n return result.map((value, i) => { return transformDecodedData(generic[i], value, { bindings }) })\n case SOPHIA_TYPES.record: {\n const genericMap = generic.reduce((acc, val) => ({ ...acc, [val.name]: { type: val.type } }), {})\n return Object.entries(result).reduce(\n (acc, [name, value]) =>\n ({\n ...acc,\n [name]: transformDecodedData(genericMap[name].type, value, { bindings })\n }),\n {}\n )\n }\n }\n return result\n}\n\n// FUNCTION ARGUMENTS VALIDATION ↓↓↓\n\n/**\n * Prepare Joi validation schema for sophia types\n * @param type\n * @param bindings\n * @return {Object} JoiSchema\n */\nexport function prepareSchema (type, { bindings } = {}) {\n const { t, generic } = readType(type, { bindings })\n\n switch (t) {\n case SOPHIA_TYPES.int:\n return Joi.number().error(getJoiErrorMsg)\n case SOPHIA_TYPES.variant:\n return Joi.alternatives().try([\n Joi.string().valid(\n ...generic.reduce((acc, el) => {\n const [[t, g]] = Object.entries(el)\n if (!g || !g.length) acc.push(t)\n return acc\n }, [])\n ),\n Joi.object(generic\n .reduce(\n (acc, el) => {\n const variant = Object.keys(el)[0]\n return { ...acc, [variant]: Joi.array() }\n },\n {})\n ).or(...generic.map(e => Object.keys(e)[0]))\n ])\n case SOPHIA_TYPES.ChainTtl:\n return Joi.string().error(getJoiErrorMsg)\n case SOPHIA_TYPES.string:\n return Joi.string().error(getJoiErrorMsg)\n case SOPHIA_TYPES.address:\n return Joi.string().regex(/^(ak_|ct_|ok_|oq_)/).error(getJoiErrorMsg)\n case SOPHIA_TYPES.bool:\n return Joi.boolean().error(getJoiErrorMsg)\n case SOPHIA_TYPES.list:\n return Joi.array().items(prepareSchema(generic, { bindings })).error(getJoiErrorMsg)\n case SOPHIA_TYPES.tuple:\n return Joi.array().ordered(generic.map(type => prepareSchema(type, { bindings }).required())).label('Tuple argument').error(getJoiErrorMsg)\n case SOPHIA_TYPES.record:\n return Joi.object(\n generic.reduce((acc, { name, type }) => ({ ...acc, [name]: prepareSchema(type, { bindings }) }), {})\n ).error(getJoiErrorMsg)\n case SOPHIA_TYPES.hash:\n return JoiBinary.binary().bufferCheck(32).error(getJoiErrorMsg)\n case SOPHIA_TYPES.bytes:\n return JoiBinary.binary().bufferCheck(generic).error(getJoiErrorMsg)\n case SOPHIA_TYPES.signature:\n return JoiBinary.binary().bufferCheck(64).error(getJoiErrorMsg)\n case SOPHIA_TYPES.option:\n return prepareSchema(generic, { bindings }).optional().error(getJoiErrorMsg)\n // @Todo Need to transform Map to Array of arrays before validating it\n // case SOPHIA_TYPES.map:\n // return Joi.array().items(Joi.array().ordered(generic.map(type => prepareSchema(type))))\n default:\n return Joi.any()\n }\n}\n\n/**\n * Parse Joi validation error message\n * @param errors\n * @return {Object} JoiError\n */\nexport function getJoiErrorMsg (errors) {\n return errors.map(err => {\n const { path, type, context } = err\n let value = Object.prototype.hasOwnProperty.call(context, 'value') ? context.value : context.label\n value = typeof value === 'object' ? JSON.stringify(value).slice(1).slice(0, -1) : value\n switch (type) {\n case 'string.base':\n return ({ ...err, message: `Value \"${value}\" at path: [${path}] not a string` })\n case 'number.base':\n return ({ ...err, message: `Value \"${value}\" at path: [${path}] not a number` })\n case 'boolean.base':\n return ({ ...err, message: `Value \"${value}\" at path: [${path}] not a boolean` })\n case 'array.base':\n return ({ ...err, message: `Value \"${value}\" at path: [${path}] not a array` })\n case 'object.base':\n return ({ ...err, message: `Value '${value}' at path: [${path}] not a object` })\n case 'object.type':\n return ({ ...err, message: `Value '${value}' at path: [${path}] not a ${context.type}` })\n case 'binary.bufferCheck':\n return ({\n ...err,\n message: `Value '${Buffer.from(value).toString('hex')}' at path: [${path}] not a ${context.size} bytes`\n })\n default:\n return err\n }\n })\n}\n\n/**\n * Custom Joi Validator for binary type\n */\nconst JoiBinary = Joi.extend((joi) => ({\n name: 'binary',\n base: joi.any(),\n pre (value, state, options) {\n if (options.convert && typeof value === 'string') {\n if (isAddressValid(value)) {\n return decode(value)\n }\n try {\n return Buffer.from(value, 'hex')\n } catch (e) { return undefined }\n }\n\n return Buffer.from(value)\n },\n rules: [\n {\n name: 'bufferCheck',\n params: {\n size: joi.number().required()\n },\n validate (params, value, state, options) {\n if (!Buffer.isBuffer(value)) {\n return this.createError('binary.base', { value }, state, options)\n }\n if (value.length !== params.size) {\n return this.createError('binary.bufferCheck', { value, size: params.size }, state, options)\n }\n\n return value\n }\n }\n ]\n}))\n\n/**\n * Validation contract function arguments\n * @param aci\n * @param params\n */\nexport function validateArguments (aci, params) {\n const validationSchema = Joi.array().ordered(\n aci.arguments\n .map(({ type }, i) => prepareSchema(type, { bindings: aci.bindings }).label(`[${params[i]}]`))\n ).sparse(true).label('Argument')\n const { error } = Joi.validate(params, validationSchema, { abortEarly: false })\n if (error) {\n throw error\n }\n}\n","import * as R from 'ramda'\nimport { unpackTx } from '../../tx/builder'\nimport { decodeEvents as unpackEvents, transform, transformDecodedData, validateArguments } from './transformation'\n\n/**\n * Get function schema from contract ACI object\n * @param {Object} aci Contract ACI object\n * @param {String} name Function name\n * @param external\n * @return {Object} function ACI\n */\nexport function getFunctionACI (aci, name, { external }) {\n if (!aci) throw new Error('ACI required')\n const fn = aci.functions.find(f => f.name === name)\n if (!fn && name !== 'init') throw new Error(`Function ${name} doesn't exist in contract`)\n\n return {\n ...fn,\n bindings: [\n {\n state: aci.state,\n type_defs: aci.type_defs,\n name: aci.name\n },\n ...external.map(R.pick(['state', 'type_defs', 'name']))\n ],\n event: aci.event ? aci.event.variant : []\n }\n}\n\n/**\n * Build contract methods base on ACI\n * @return {Object} Contract instance methods\n */\nexport const buildContractMethods = (instance) => () => ({\n ...instance.aci\n ? instance\n .aci\n .functions\n .reduce(\n (acc, { name, arguments: aciArgs, stateful }) => ({\n ...acc,\n [name]: Object.assign(\n function () {\n const { opt, args } = parseArguments(aciArgs)(arguments)\n if (name === 'init') return instance.deploy(args, opt)\n return instance.call(name, args, { callStatic: !stateful, ...opt })\n },\n {\n get () {\n const { opt, args } = parseArguments(aciArgs)(arguments)\n return instance.call(name, args, { ...opt, callStatic: true })\n },\n send () {\n const { opt, args } = parseArguments(aciArgs)(arguments)\n if (name === 'init') return instance.deploy(args, opt)\n return instance.call(name, args, { ...opt, callStatic: false })\n },\n decodeEvents (events) {\n return instance.decodeEvents(name, events)\n }\n }\n )\n }),\n {}\n )\n : {},\n ...instance.aci ? {\n init: Object.assign(\n function () {\n const { arguments: aciArgs } = getFunctionACI(instance.aci, 'init', { external: instance.externalAci })\n const { opt, args } = parseArguments(aciArgs)(arguments)\n return instance.deploy(args, opt)\n },\n {\n get () {\n const { arguments: aciArgs } = getFunctionACI(instance.aci, 'init', { external: instance.externalAci })\n const { opt, args } = parseArguments(aciArgs)(arguments)\n return instance.deploy(args, { ...opt, callStatic: true })\n },\n send () {\n const { arguments: aciArgs } = getFunctionACI(instance.aci, 'init', { external: instance.externalAci })\n const { opt, args } = parseArguments(aciArgs)(arguments)\n return instance.deploy(args, { ...opt, callStatic: false })\n }\n }\n )\n } : {}\n})\n\nexport const parseArguments = (aciArgs = []) => (args) => ({\n opt: args.length > aciArgs.length ? R.last(args) : {},\n args: Object.values(args).slice(0, aciArgs.length)\n})\n\nexport const unpackByteCode = (bytecode) => unpackTx(bytecode, false, 'cb').tx\n\n/**\n * Validated contract call arguments using contract ACI\n * @function validateCallParams\n * @rtype (aci: Object, params: Array) => Object\n * @param {Object} aci Contract ACI\n * @param {Array} params Contract call arguments\n * @return Promise{Array} Object with validation errors\n */\nexport const prepareArgsForEncode = async (aci, params) => {\n if (!aci || !aci.arguments) return params\n // Validation\n if (aci.arguments.length > params.length) {\n throw new Error(`Function \"${aci.name}\" require ${aci.arguments.length} arguments of types [${aci.arguments.map(a => JSON.stringify(a.type))}] but get [${params.map(JSON.stringify)}]`)\n }\n\n validateArguments(aci, params)\n const bindings = aci.bindings\n // Cast argument from JS to Sophia type\n return Promise.all(aci.arguments.map(async ({ type }, i) => transform(type, params[i], {\n bindings\n })))\n}\n\nexport const decodeEvents = (events, fnACI) => {\n if (!fnACI || !fnACI.event || !fnACI.event.length) return []\n\n const eventsSchema = fnACI.event.map(e => {\n const name = Object.keys(e)[0]\n return { name, types: e[name] }\n })\n return unpackEvents(events, { schema: eventsSchema })\n}\n\nexport const decodeCallResult = async (result, fnACI, opt) => {\n return {\n decodedResult: await transformDecodedData(\n fnACI.returns,\n await result.decode(),\n { ...opt, bindings: fnACI.bindings }\n ),\n decodedEvents: decodeEvents(result.result.log, fnACI)\n }\n}\n","import nacl from 'tweetnacl'\nimport { full as hmac } from 'tweetnacl-auth'\nimport { fromString } from 'bip32-path'\nimport { validateMnemonic, mnemonicToSeed, generateMnemonic as genMnemonic } from '@aeternity/bip39'\nimport { decryptKey, encodeBase58Check, encryptKey } from './crypto'\n\nconst ED25519_CURVE = Buffer.from('ed25519 seed')\nconst HARDENED_OFFSET = 0x80000000\n\nconst toHex = (buffer) => Buffer.from(buffer).toString('hex')\n\nexport function derivePathFromKey (path, key) {\n const segments = path === '' ? [] : fromString(path).toPathArray()\n segments.forEach((segment, i) => {\n if (segment < HARDENED_OFFSET) {\n throw new Error(`Segment #${i + 1} is not hardened`)\n }\n })\n\n return segments.reduce((parentKey, segment) => deriveChild(parentKey, segment), key)\n}\n\nexport function derivePathFromSeed (path, seed) {\n if (!['m', 'm/'].includes(path.slice(0, 2))) {\n throw new Error('Invalid path')\n }\n const masterKey = getMasterKeyFromSeed(seed)\n return derivePathFromKey(path.slice(2), masterKey)\n}\n\nfunction formatAccount (keys) {\n const { secretKey, publicKey } = keys\n return {\n secretKey: toHex(secretKey),\n publicKey: `ak_${encodeBase58Check(publicKey)}`\n }\n}\n\nexport function getKeyPair (secretKey) {\n return nacl.sign.keyPair.fromSeed(secretKey)\n}\n\nexport function generateMnemonic () {\n return genMnemonic()\n}\n\nexport function getMasterKeyFromSeed (seed) {\n const I = hmac(seed, ED25519_CURVE)\n const IL = I.slice(0, 32)\n const IR = I.slice(32)\n return {\n secretKey: IL,\n chainCode: IR\n }\n}\n\nexport function deriveChild ({ secretKey, chainCode }, index) {\n if (index < HARDENED_OFFSET) {\n throw new Error(`Child index #${index} is not supported`)\n }\n const indexBuffer = Buffer.allocUnsafe(4)\n indexBuffer.writeUInt32BE(index, 0)\n\n const data = Buffer.concat([Buffer.alloc(1, 0), Buffer.from(secretKey), Buffer.from(indexBuffer)])\n\n const I = hmac(data, chainCode)\n const IL = I.slice(0, 32)\n const IR = I.slice(32)\n return {\n secretKey: IL,\n chainCode: IR\n }\n}\n\nexport function generateSaveHDWallet (mnemonic, password) {\n if (!validateMnemonic(mnemonic)) {\n throw new Error('Invalid mnemonic')\n }\n const seed = mnemonicToSeed(mnemonic)\n const walletKey = derivePathFromSeed('m/44h/457h', seed)\n return {\n secretKey: toHex(encryptKey(password, walletKey.secretKey)),\n chainCode: toHex(encryptKey(password, walletKey.chainCode))\n }\n}\n\nexport function getSaveHDWalletAccounts (saveHDWallet, password, accountCount) {\n const walletKey = {\n secretKey: decryptKey(password, Buffer.from(saveHDWallet.secretKey, 'hex')),\n chainCode: decryptKey(password, Buffer.from(saveHDWallet.chainCode, 'hex'))\n }\n return (new Array(accountCount)).fill()\n .map((_, idx) =>\n formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)))\n}\n\nexport const getHdWalletAccountFromMnemonic = (mnemonic, accountIdx) => {\n const seed = mnemonicToSeed(mnemonic)\n const walletKey = derivePathFromSeed('m/44h/457h', seed)\n const derived = derivePathFromKey(`${accountIdx}h/0h/0h`, walletKey)\n const keyPair = getKeyPair(derived.secretKey)\n return {\n ...formatAccount(keyPair),\n idx: accountIdx\n }\n}\n\nexport default {\n getHdWalletAccountFromMnemonic,\n getSaveHDWalletAccounts,\n generateSaveHDWallet,\n generateMnemonic,\n deriveChild,\n getMasterKeyFromSeed\n}\n","import _Object$getOwnPropertySymbols from \"@babel/runtime-corejs3/core-js/object/get-own-property-symbols\";\nimport _indexOfInstanceProperty from \"@babel/runtime-corejs3/core-js/instance/index-of\";\nimport objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (_Object$getOwnPropertySymbols) {\n var sourceSymbolKeys = _Object$getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","import _Object$keys from \"@babel/runtime-corejs3/core-js/object/keys\";\nimport _indexOfInstanceProperty from \"@babel/runtime-corejs3/core-js/instance/index-of\";\nexport default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n\n var sourceKeys = _Object$keys(source);\n\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (_indexOfInstanceProperty(excluded).call(excluded, key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Tx module\n * @module @aeternity/aepp-sdk/es/tx\n * @export Tx\n * @example import { Tx } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Tx Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Tx is one of the three basic building blocks of an\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} client and provides methods to\n * create aeternity transactions.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Tx instance\n * @example Tx()\n */\nconst Tx = stampit(required({\n methods: {\n spendTx: required,\n namePreclaimTx: required,\n nameClaimTx: required,\n nameTransferTx: required,\n nameUpdateTx: required,\n nameRevokeTx: required,\n contractCreateTx: required,\n contractCallTx: required,\n oracleRegisterTx: required,\n oracleExtendTx: required,\n oraclePostQueryTx: required,\n oracleRespondTx: required,\n getAccountNonce: required,\n channelCloseSoloTx: required,\n channelSlashTx: required,\n channelSettleTx: required,\n channelSnapshotSoloTx: required,\n gaAttachTx: required,\n getVmVersion: required,\n prepareTxParams: required\n }\n}))\n\n/**\n * Create a `spend_tx` transaction\n * @function spendTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({sender?: String, recipientId: String, amount: Number, fee?: Number, ttl?: Number, nonce?: Number, payload?: String}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `spend_tx` transaction\n */\n\n/**\n * Create a `name_preclaim_tx` transaction\n * @function namePreclaimTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({account?: String, commitment: String, fee?: Number, ttl?: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_preclaim_tx` transaction\n */\n\n/**\n * Create a `name_claim_tx` transaction\n * @function nameClaimTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({account?: String, name: String, nameSalt: String, fee?: Number, ttl?: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_claim_tx` transaction\n */\n\n/**\n * Create a `name_transfer_tx` transaction\n * @function nameTransferTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({account?: String, nameId: String, recipientId: String, fee?: Number, ttl?: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_transfer_tx` transaction\n */\n\n/**\n * Create a `name_update_tx` transaction\n * @function nameUpdateTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({account?: String, nameId: String, pointers: Object, nameTtl: Number, clientTtl: Number, fee?: Number, ttl?: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_update_tx` transaction\n */\n\n/**\n * Create a `name_revoke_tx` transaction\n * @function nameRevokeTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({account?: String, nameId: String, fee?: Number, ttl?: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_revoke_tx` transaction\n */\n\n/**\n * Create a `contract_create_tx` transaction\n * @function contractCreateTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({owner: String, code: String, callData: String, vmVersion: Number, deposit: Number, amount: Number, gas: Number, gasPrice: Number, fee?: Number, ttl?: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `contract_create_tx` transaction\n */\n\n/**\n * Create a `contract_call_tx` transaction\n * @function contractCallTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({callerId: String, contract: String, callData: String, vmVersion: Number, amount: Number, gas: Number, gasPrice: Number, fee?: Number, ttl?: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `contract_call_tx` transaction\n */\n\n/**\n * Create a `oracle_register_tx` transaction\n * @function oracleRegisterTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({ accountId: String, queryFormat: String, responseFormat: String, queryFee: String|Number, oracleTtl: Object, vmVersion: Number = ORACLE_VM_VERSION, fee?: Number, ttl?: Number, nonce?: Number }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_register_tx` transaction\n */\n\n/**\n * Create a `oracle_extend_tx` transaction\n * @function oracleExtendTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({ oracleId: String, callerId: String, oracleTtl: Object, fee?: Number, ttl: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_extend_tx` transaction\n */\n\n/**\n * Create a `oracle_post_query_tx` transaction\n * @function oraclePostQuery\n * @instance\n * @abstract\n * @category async\n * @rtype ({ oracleId: String, responseTtl: Object, query: String, queryTtl: Object, queryFee: String|Number, senderId: String, fee?: Number, ttl: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_post_query_tx` transaction\n */\n\n/**\n * Create a `oracle_respond_tx` transaction\n * @function oracleRespondTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({ oracleId: String, callerId: String, responseTtl: Object, queryId: String, response: String, fee?: Number, ttl?: Number, nonce?: Number}) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_respond_tx` transaction\n */\n\n/**\n * Get Account Nonce\n * @function getAccountNonce\n * @instance\n * @abstract\n * @category async\n * @rtype (address) => result: Number\n * @param {String} address - Account public key\n * @return {Number} Result\n */\n\nexport default Tx\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Chain module\n * @module @aeternity/aepp-sdk/es/chain\n * @export Chain\n * @example import { Chain } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Chain Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/chain\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Chain instance\n */\nconst Chain = stampit({\n deepProps: { Ae: { defaults: { waitMined: true, verify: true } } }\n}, required({\n methods: {\n sendTransaction: required,\n height: required,\n awaitHeight: required,\n topBlock: required,\n poll: required,\n balance: required,\n getBalance: required,\n tx: required,\n getTxInfo: required,\n mempool: required,\n txDryRun: required,\n getAccount: required\n }\n}))\n\n/**\n * Submit a signed transaction for mining\n * @function sendTransaction\n * @instance\n * @abstract\n * @category async\n * @rtype (tx: String, options?: Object) => tx: Promise[Object]|txHash: Promise[String]\n * @param {String} tx - Transaction to submit\n * @param {String} [options={}] - Options to pass to the implementation\n * @param {String} [options.verify=true] - Verify transaction before broadcast.\n * @return {Object} Transaction\n */\n\n/**\n * Obtain current height of the chain\n * @function height\n * @instance\n * @abstract\n * @category async\n * @rtype () => height: Number\n * @return {Number} Current chain height\n */\n\n/**\n * Wait for the chain to reach a specific height\n * @function awaitHeight\n * @instance\n * @abstract\n * @category async\n * @rtype (height: Number, options?: Object) => height: Number\n * @param {Object} [options={}] - Options\n * @param {Number} options.interval - Interval (in ms) at which to poll the chain\n * @param {Number} options.attempts - Number of polling attempts after which to fail\n * @return {Number} Current chain height\n */\n\n/**\n * Wait for a transaction to be mined\n * @function poll\n * @instance\n * @abstract\n * @category async\n * @rtype (th: String, options?: Object) => tx: Object\n * @param {Object} [options={}] - Options\n * @param {Number} options.interval - Interval (in ms) at which to poll the chain\n * @param {Number} options.blocks - Number of blocks mined after which to fail\n * @return {Object} The transaction as it was mined\n */\n\n/**\n * Request the balance of specified account\n * @function balance\n * @instance\n * @abstract\n * @category async\n * @rtype (address: String, options?: Object) => balance: Number\n * @param {String} address - The public account address to obtain the balance for\n * @param {Object} [options={}] - Options\n * @param {Number} options.height - The chain height at which to obtain the balance for (default: top of chain)\n * @param {String} options.hash - The block hash on which to obtain the balance for (default: top of chain)\n * @return {Object} The transaction as it was mined\n */\n\n/**\n * Obtain a transaction based on its hash\n * @function tx\n * @instance\n * @abstract\n * @category async\n * @rtype (hash: String, info = false) => tx: Object\n * @param {String} hash - Transaction hash\n * @param {Boolean} info - Retrieve additional transaction date. Works only for (ContractCreate and ContractCall transaction's)\n * @return {Object} Transaction\n */\n\n/**\n * Obtain a transaction info based on its hash\n * @function getTxInfo\n * @instance\n * @abstract\n * @category async\n * @rtype (hash: String) => tx: Object\n * @param {String} hash - Transaction hash\n * @return {Object} Transaction\n */\n\n/**\n * Obtain transaction's from mempool\n * @function mempool\n * @instance\n * @abstract\n * @category async\n * @rtype () => txs: [...Object]\n * @return {Object[]} Transactions\n */\n\n/**\n * Obtain current generation\n * @function getCurrentGeneration\n * @instance\n * @abstract\n * @category async\n * @rtype () => generation: Object\n * @return {Object} Current Generation\n */\n\n/**\n * Get generation by hash or height\n * @function getGeneration\n * @instance\n * @abstract\n * @category async\n * @rtype (hashOrHeight) => generation: Object\n * @param {String|Number} hashOrHeight - Generation hash or height\n * @return {Object} Generation\n */\n\n/**\n * Wait for transaction confirmation\n * @function waitForTxConfirm\n * @instance\n * @abstract\n * @category async\n * @rtype (txHash: String, { confirm: Number | Boolean } = { confirm: 3 }) => Promise<Number>\n * @param {String} txHash - Transaction hash\n * @param {Object} [options] - options\n * @param {Number} [options.confirm=3] - Number of blocks to wait for transaction confirmation\n * @return {Promise<Number>} Current Height\n */\n\n/**\n * Get micro block transactions\n * @function getMicroBlockTransactions\n * @instance\n * @abstract\n * @category async\n * @rtype (hash) => txs: [...Object]\n * @return {Object[]} Transactions\n */\n\n/**\n * Get key block\n * @function getKeyBlock\n * @instance\n * @abstract\n * @category async\n * @rtype (hashOrHeight) => keyBlock: Object\n * @return {Object} Key Block\n */\n\n/**\n * Get micro block header\n * @function getMicroBlockHeader\n * @instance\n * @abstract\n * @category async\n * @rtype (hash) => header: Object\n * @return {Object} Micro block header\n */\n\n/**\n * Get account by account public key\n * @function getAccount\n * @instance\n * @abstract\n * @category async\n * @rtype (address, { hash, height }) => account: Object\n * @param {String} address - Account public key\n * @param {Object} [options={}] - Options\n * @param {Number} [options.height] - Get account on specific block by block height\n * @param {String} [options.hash] - Get account on specific block by block hash\n * @return {Object} Account\n */\n\n/**\n * Transaction dry-run\n * @function txDryRun\n * @instance\n * @abstract\n * @category async\n * @rtype (tx, accountAddress, options) => result: Object\n * @param {String} tx - transaction to execute\n * @param {String} accountAddress - address that will be used to execute transaction\n * @param {String|Number} [options.top] - hash of block on which to make dry-run\n * @param {Boolean} [options.txEvents] - collect and return on-chain tx events that would result from the call\n * @return {Object} Result\n */\n\nexport default Chain\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport stampit from '@stamp/it'\nimport * as R from 'ramda'\n\nfunction asyncInit (options = {}, { stamp, args, instance }) {\n return stamp.compose.deepConfiguration.AsyncInit.initializers.reduce(async (instance, init) => {\n instance = await Promise.resolve(instance)\n if (typeof init === 'function') {\n const ret = await Promise.resolve(init.call(instance, options, { stamp, args, instance }))\n return ret === undefined ? instance : ret\n }\n return instance\n }, instance)\n}\n\nconst AsyncInit = stampit({\n deepConf: { AsyncInit: { initializers: [] } },\n composers ({ stamp, composables }) {\n const conf = stamp.compose.deepConfiguration.AsyncInit\n conf.initializers = R.without([asyncInit], R.uniqWith(R.identical, R.flatten(composables.map(c => R.path(['compose', 'deepConfiguration', 'AsyncInit', 'initializers'], c) || (c.compose || c).initializers || []))))\n stamp.compose.initializers = [asyncInit]\n }\n})\n\nexport default AsyncInit\n","import JsonBig from '@aeternity/json-bigint'\nimport BigNumber from 'bignumber.js'\n\nconst jsonBig = JsonBig({ storeAsString: true })\n\nconst convertValuesToBigNumbers = value => {\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n return Object.entries(value)\n .map(([key, value]) => [key, convertValuesToBigNumbers(value)])\n .reduce((p, [k, v]) => ({ ...p, [k]: v }), {})\n }\n if (Array.isArray(value)) {\n return value.map(item => convertValuesToBigNumbers(item))\n }\n if (typeof value === 'string' && BigNumber(value).toString(10) === value) {\n const bn = BigNumber(value)\n bn.toJSON = () => bn.toString(10)\n return bn\n }\n return value\n}\n\nexport default {\n stringify: (object, ...args) => jsonBig.stringify(convertValuesToBigNumbers(object), ...args),\n parse: jsonBig.parse\n}\n","import { snakeToPascal, pascalToSnake } from './string'\n\nexport const pause = async (duration: number): Promise<undefined> =>\n await new Promise(resolve => setTimeout(resolve, duration))\n\nexport const mapObject = (\n object: object,\n fn: (value: [string, any], index: number, array: Array<[string, any]>) => Array<[string, any]>\n): object => Object.fromEntries(Object.entries(object).map(fn))\n\nexport const filterObject = (\n object: object,\n fn: (value: [string, any], index: number, array: Array<[string, any]>) => boolean\n): object => Object.fromEntries(Object.entries(object).filter(fn))\n\n/**\n * Key traversal metafunction\n * @static\n * @function\n * @rtype (fn: (s: String) => String) => (o: Object) => Object\n * @param {Function} fn - Key transformation function\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n */\nexport const traverseKeys = (fn: Function, object: any): any => {\n if (typeof object !== 'object' || object === null) return object\n if (Array.isArray(object)) return object.map(i => traverseKeys(fn, i))\n return mapObject(object, ([key, value]: [string, any]) => [\n fn(key), traverseKeys(fn, value)\n ])\n}\n\n/**\n * snake_case key traversal\n * @static\n * @rtype (o: Object) => Object\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n * @see pascalToSnake\n */\nexport const snakizeKeys = traverseKeys.bind(null, pascalToSnake)\n\n/**\n * PascalCase key traversal\n * @static\n * @rtype (o: Object) => Object\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n * @see snakeToPascal\n */\nexport const pascalizeKeys = traverseKeys.bind(null, snakeToPascal)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Generator of Swagger client module\n * @module @aeternity/aepp-sdk/es/utils/swagger\n * @export genSwaggerClient\n */\n\nimport SwaggerClient from 'swagger-client'\nimport fetch from 'cross-fetch'\nimport JsonBig from './json-big'\nimport { snakizeKeys, pascalizeKeys, mapObject, filterObject } from './other'\n\nlet warnedAboutInternalApiUsage = false\n\n/**\n * Generator of Swagger client\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/swagger\n * @rtype Object\n * @param {String} specUrl - Swagger specification URL on external node host\n * @param {Object} options\n * @param {String} [options.spec] - Override OpenAPI definition\n * @param {String} [options.internalUrl] - Node internal URL\n * @param {Boolean} [options.disableBigNumbers]\n * @param {Boolean} [options.disableCaseConversion]\n * @return {Object} Swagger client\n * @example (await genSwaggerClient('https://mainnet.aeternity.io/api')).getAccountByPubkey('ak_jupBUgZNbcC4krDLR3tAkw1iBZoBbkNeShAq4atBtpFWmz36r')\n */\nexport default async (specUrl, { spec, internalUrl, disableBigNumbers, disableCaseConversion } = {}) => {\n spec = spec || await (await fetch(specUrl)).json()\n const jsonImp = disableBigNumbers ? JSON : JsonBig\n\n if (\n [\n 'https://compiler.aepps.com',\n 'https://latest.compiler.aepps.com'\n ].includes(new URL(specUrl).origin) ||\n new URL(specUrl).origin.includes('https://')\n ) {\n spec.schemes = ['https']\n }\n\n const [external, internal] = await Promise.all([specUrl, internalUrl].map((url) => {\n if (!url) return null\n return SwaggerClient({\n url,\n spec,\n responseInterceptor: response => {\n if (!response.text) return response\n const body = jsonImp.parse(response.text)\n return Object.assign(response, {\n body: disableCaseConversion ? body : pascalizeKeys(body)\n })\n }\n })\n }))\n\n const combinedApi = [\n ...Object.values(external.apis),\n mapObject(internal?.apis.internal || {}, ([key, handler]) => [key, (...args) => {\n if (!warnedAboutInternalApiUsage) {\n console.warn(\n 'SDK\\'s wrapper of aeternity node internal API is deprecated, please use external ' +\n 'equivalent (for example, \"sdk.api.protectedDryRunTxs\" instead of \"sdk.api.dryRunTxs\") ' +\n 'or create a wrapper of internal API by yourself (using \"genSwaggerClient\")'\n )\n warnedAboutInternalApiUsage = true\n }\n return handler(...args)\n }])\n ].reduce((acc, n) => ({ ...acc, ...n }))\n\n const opSpecs = Object.values(spec.paths)\n .map(paths => Object.values(paths))\n .flat()\n .reduce((acc, n) => ({ ...acc, [n.operationId]: n }), {})\n\n const api = mapObject(combinedApi, ([opId, handler]) => [\n opId.slice(0, 1).toLowerCase() + opId.slice(1),\n async (...args) => {\n const opSpec = opSpecs[opId]\n const parameters = [\n ...opSpec.parameters,\n ...opSpec.requestBody ? [{\n required: opSpec.requestBody.required,\n schema: Object.values(opSpec.requestBody.content)[0].schema,\n name: '__requestBody'\n }] : []\n ]\n const required = parameters.filter(param => param.required).map(p => p.name)\n if (args.length < required.length) throw new Error('swagger: Not enough arguments')\n const values = required.reduce(\n (acc, req, idx) => ({ ...acc, [req]: args[idx] }),\n args[required.length] || {}\n )\n const { __requestBody, ...stringified } = mapObject(values, ([param, value]) => {\n if (typeof value !== 'object') return [param, value]\n const rootKeys = Object.keys(parameters.find(p => p.name === param).schema.properties)\n const filteredValue = filterObject(\n disableCaseConversion ? value : snakizeKeys(value),\n ([key]) => rootKeys.includes(key)\n )\n return [param, jsonImp.stringify(filteredValue)]\n })\n return (await handler(stringified, { requestBody: __requestBody })).body\n }\n ])\n\n return Object.assign(external, { api })\n}\n","export default function (version: string, geVersion: string, ltVersion: string): boolean {\n const getComponents = (v: string): number[] => v\n .split('-')[0].split('.').map(i => +i)\n\n const versionComponents = getComponents(version)\n const geComponents = getComponents(geVersion)\n const ltComponents = getComponents(ltVersion)\n\n const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1\n const componentsToNumber = (components: number[]): number => components.reverse()\n .reduce((acc, n, idx) => acc + n * Math.pow(base, idx), 0)\n\n const vNumber = componentsToNumber(versionComponents)\n const geNumber = componentsToNumber(geComponents)\n const ltNumber = componentsToNumber(ltComponents)\n return vNumber >= geNumber && vNumber < ltNumber\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Node module\n * @module @aeternity/aepp-sdk/es/node\n * @export Node\n * @example import { Node } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from './utils/async-init'\nimport genSwaggerClient from './utils/swagger'\nimport semverSatisfies from './utils/semver-satisfies'\n\n/**\n * Obtain networkId from account or node\n * @instance\n * @category async\n * @rtype () => networkId: String\n * @return {String} NetworkId\n */\nexport function getNetworkId ({ networkId, force = false } = {}) {\n if (!force && !networkId && !this.networkId && (!this.selectedNode || !this.selectedNode.networkId)) throw new Error('networkId is not provided')\n if (force && !networkId && !this.networkId && (!this.selectedNode || !this.selectedNode.networkId)) return null\n return networkId || this.networkId || this.selectedNode.networkId\n}\n\n/**\n * get consensus protocol version\n * @param {Array} protocols Array of protocols\n * @param {Number} height Height\n * @return {Number} version Protocol version\n */\nasync function getConsensusProtocolVersion (protocols = [], height) {\n if (!protocols) throw new Error('Protocols must be an array')\n if (!height) height = (await this.api.getCurrentKeyBlock()).height\n if (height < 0) throw new Error('height must be a number >= 0')\n\n return protocols\n .filter(({ effectiveAtHeight }) => height >= effectiveAtHeight)\n .reduce(\n (acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc,\n { effectiveAtHeight: -1, version: 0 }\n )\n .version\n}\n\n/**\n * {@link genSwaggerClient} based Node remote API Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node\n * @rtype Stamp\n * @param {Object} [options={}] - Options\n * @param {String} options.url - Base URL for Node\n * @param {String} options.internalUrl - Base URL for internal requests\n * @param {String} options.axiosConfig - Object with axios configuration. Example { config: {}, errorHandler: (err) => throw err }\n * @return {Object} Node client\n * @example Node({url: 'https://testnet.aeternity.io'})\n */\nconst Node = AsyncInit.compose({\n async init ({ url, internalUrl, ignoreVersion }) {\n if (!url) throw new Error('\"url\" required')\n this.url = url.replace(/\\/$/, '')\n this.internalUrl = internalUrl ? internalUrl.replace(/\\/$/, '') : this.url\n const client = await genSwaggerClient(`${this.url}/api?oas3`, { internalUrl: this.internalUrl })\n this.version = client.spec.info.version\n if (\n !semverSatisfies(this.version, NODE_GE_VERSION, NODE_LT_VERSION) &&\n !ignoreVersion\n ) {\n throw new Error(\n `Unsupported node version ${this.version}. ` +\n `Supported: >= ${NODE_GE_VERSION} < ${NODE_LT_VERSION}`\n )\n }\n this.api = client.api\n\n const { nodeRevision: revision, genesisKeyBlockHash: genesisHash, networkId, protocols } = await this.api.getStatus()\n this.consensusProtocolVersion = await this.getConsensusProtocolVersion(protocols)\n this.nodeNetworkId = networkId\n return Object.assign(this, { revision, genesisHash })\n },\n methods: {\n getNodeInfo () {\n return {\n url: this.url,\n internalUrl: this.internalUrl,\n nodeNetworkId: this.nodeNetworkId,\n version: this.version,\n consensusProtocolVersion: this.consensusProtocolVersion\n }\n },\n getConsensusProtocolVersion\n },\n props: {\n version: null,\n consensusProtocolVersion: null,\n nodeNetworkId: null\n }\n})\n\nconst NODE_GE_VERSION = '6.0.0'\nconst NODE_LT_VERSION = '7.0.0'\n\nexport default Node\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * AccountBase module\n * @module @aeternity/aepp-sdk/es/account/base\n * @export AccountBase\n * @export isAccountBase\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\nimport { messageToHash, verifyMessage as verifyMessageCrypto, hash } from '../utils/crypto'\nimport { buildTx } from '../tx/builder'\nimport { decode } from '../tx/builder/helpers'\nimport { TX_TYPE } from '../tx/builder/schema'\nimport { getNetworkId } from '../node'\n\n/**\n * Check is provided object looks like an instance of AccountBase\n * @rtype (Object) => Boolean\n * @param {Object} acc - Object to check\n * @return {Boolean}\n */\nexport const isAccountBase = (acc) => !['sign', 'address'].find(f => typeof acc[f] !== 'function')\n\n/**\n * Sign encoded transaction\n * @instance\n * @category async\n * @rtype (tx: String) => tx: Promise[String], throws: Error\n * @param {String} tx - Transaction to sign\n * @param {Object} opt - Options\n * @param {Object} [opt.innerTx] - Sign as inner transaction for PayingFor\n * @return {String} Signed transaction\n */\nasync function signTransaction (tx, opt = {}) {\n const prefixes = [this.getNetworkId(opt)]\n if (opt.innerTx) prefixes.push('inner_tx')\n const rlpBinaryTx = decode(tx, 'tx')\n const txWithNetworkId = Buffer.concat([Buffer.from(prefixes.join('-')), hash(rlpBinaryTx)])\n\n const signatures = [await this.sign(txWithNetworkId, opt)]\n return buildTx({ encodedTx: rlpBinaryTx, signatures }, TX_TYPE.signed).tx\n}\n\n/**\n * Get network Id\n * @instance\n * @function getNetworkId\n * @category async\n * @rtype () => networkId: String\n * @return {String} Network Id\n */\n\n/**\n * Sign message\n * @instance\n * @category async\n * @rtype (msg: String) => signature: Promise[String], throws: Error\n * @param {String} message - Message to sign\n * @param {Object} opt - Options\n * @return {String} Signature\n */\nasync function signMessage (message, opt = { returnHex: false }) {\n const sig = await this.sign(messageToHash(message), opt)\n return opt.returnHex ? Buffer.from(sig).toString('hex') : sig\n}\n\n/**\n * Verify message\n * @instance\n * @category async\n * @rtype (msg: String, signature: String, publicKey: String) => signature: Promise[String], throws: Error\n * @param {String} message - Message to verify\n * @param {String} signature - Signature\n * @param {Object} opt - Options\n * @return {Boolean}\n */\nasync function verifyMessage (message, signature, opt = {}) {\n return verifyMessageCrypto(\n message,\n typeof signature === 'string' ? Buffer.from(signature, 'hex') : signature,\n decode(await this.address(opt))\n )\n}\n\n/**\n * AccountBase Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Account is one of the three basic building blocks of an\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} client and provides access to a\n * signing key pair.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/account\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} options.networkId - NETWORK_ID using for signing transaction's\n * @return {Object} Account instance\n */\nexport default stampit({\n init ({ networkId }) { // NETWORK_ID using for signing transaction's\n if (!this.networkId && networkId) {\n this.networkId = networkId\n }\n },\n methods: { signTransaction, getNetworkId, signMessage, verifyMessage }\n}, required({\n methods: {\n sign: required,\n address: required\n }\n}))\n\n/**\n * Sign data blob\n * @function sign\n * @instance\n * @abstract\n * @category async\n * @rtype (data: String) => data: Promise[String]\n * @param {String} data - Data blob to sign\n * @return {String} Signed data blob\n */\n\n/**\n * Obtain account address\n * @function address\n * @instance\n * @abstract\n * @category async\n * @rtype () => address: Promise[String]\n * @return {String} Public account address\n */\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Ae module\n * @module @aeternity/aepp-sdk/es/ae\n * @export Ae\n * @example import { Ae } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport Tx from '../tx'\nimport Chain from '../chain'\nimport AccountBase from '../account/base'\nimport TxBuilder from '../tx/builder'\nimport * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\nimport { AE_AMOUNT_FORMATS } from '../utils/amount-formatter'\n\n/**\n * Sign and post a transaction to the chain\n * @instance\n * @category async\n * @rtype (tx: String, options: Object) => Promise[String]\n * @param {String} tx - Transaction\n * @param {Object} [options={}] options - Options\n * @param {Object} [options.verify=true] verify - Verify transaction before broadcast, throw error if not valid\n * @return {Object} Transaction\n */\nasync function send (tx, options = {}) {\n const opt = R.merge(this.Ae.defaults, options)\n const { contractId, authFun } = options.innerTx\n ? { contractId: false } : await this.getAccount(await this.address(opt))\n const signed = contractId\n ? await this.signUsingGA(tx, { ...opt, authFun })\n : await this.signTransaction(tx, opt)\n return opt.innerTx\n ? { hash: TxBuilder.buildTxHash(signed), rawTx: signed }\n : this.sendTransaction(signed, opt)\n}\n\nasync function signUsingGA (tx, { authData, authFun, ...options } = {}) {\n return this.createMetaTx(tx, authData, authFun, options)\n}\n\n/**\n * Send tokens to another account\n * @instance\n * @category async\n * @rtype (amount: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} amount - Amount to spend\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function spend (amount, recipientIdOrName, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.spendTx({\n ...opt,\n senderId: await this.address(opt),\n recipientId: await this.resolveName(recipientIdOrName, 'ak', opt),\n amount\n }),\n opt\n )\n}\n\n// TODO: Rename to spendFraction\n/**\n * Send a fraction of token balance to another account\n * @instance\n * @category async\n * @rtype (fraction: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} fraction - Fraction of balance to spend (between 0 and 1)\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function transferFunds (fraction, recipientIdOrName, options) {\n if (fraction < 0 || fraction > 1) {\n throw new Error(`Fraction should be a number between 0 and 1, got ${fraction}`)\n }\n const opt = { ...this.Ae.defaults, ...options }\n const recipientId = await this.resolveName(recipientIdOrName, 'ak', opt)\n const senderId = await this.address(opt)\n const balance = new BigNumber(await this.balance(senderId))\n const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP)\n const { tx: { fee } } = TxBuilder.unpackTx(\n await this.spendTx({ ...opt, senderId, recipientId, amount: desiredAmount })\n )\n // Reducing of the amount may reduce transaction fee, so this is not completely accurate\n const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount\n return this.send(await this.spendTx({ ...opt, senderId, recipientId, amount }), opt)\n}\n\n/**\n * Submit transaction of another account paying for it (fee and gas)\n * @instance\n * @category async\n * @rtype (transaction: String, options?: Object) => Promise[String]\n * @param {String} transaction - tx_<base64>-encoded transaction\n * @param {Object} [options]\n * @return {Object} Transaction\n */\nasync function payForTransaction (transaction, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.payingForTx({\n ...opt,\n payerId: await this.address(opt),\n tx: transaction\n }),\n opt\n )\n}\n\n/**\n * Remove all listeners for RPC\n * @instance\n * @return {void}\n */\nfunction destroyInstance () {\n const destroyMethods = ['destroyClient', 'destroyServer'] // Array with destroy function's\n destroyMethods.forEach(m => this[m] && typeof this[m] === 'function' && this[m]())\n}\n\n/**\n * Basic Ae Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Ae objects are the composition of three basic building blocks:\n * * {@link module:@aeternity/aepp-sdk/es/tx--Tx}\n * * {@link module:@aeternity/aepp-sdk/es/account--Account}\n * * {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * Only by providing the joint functionality of those three, most more advanced\n * operations, i.e. the ones with actual use value on the chain, become\n * available.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Ae instance\n */\nconst Ae = stampit(Tx, AccountBase, Chain, {\n methods: { send, spend, transferFunds, payForTransaction, destroyInstance, signUsingGA },\n deepProps: { Ae: { defaults: { denomination: AE_AMOUNT_FORMATS.AETTOS } } }\n})\n\nexport default Ae\n","import { verify, hash } from '../utils/crypto'\nimport { encode, decode } from './builder/helpers'\n\nimport BigNumber from 'bignumber.js'\nimport { MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE } from './builder/schema'\nimport { calculateFee, unpackTx } from './builder'\n\n/**\n * Transaction validator\n * @module @aeternity/aepp-sdk/es/tx/validator\n * @export verifyTransaction\n * @example import { verifyTransaction } from '@aeternity/aepp-sdk'\n */\n\nconst validators = [\n async ({ encodedTx, signatures }, { account, node, parentTxTypes }) => {\n if ((encodedTx ?? signatures) === undefined) return []\n if (signatures.length !== 1) return [] // TODO: Support multisignature?\n const prefix = Buffer.from([\n node.nodeNetworkId,\n ...parentTxTypes.includes(TX_TYPE.payingFor) ? ['inner_tx'] : []\n ].join('-'))\n const txWithNetworkId = Buffer.concat([prefix, encodedTx.rlpEncoded])\n const txHashWithNetworkId = Buffer.concat([prefix, hash(encodedTx.rlpEncoded)])\n const decodedPub = decode(account.id, 'ak')\n if (verify(txWithNetworkId, signatures[0], decodedPub) ||\n verify(txHashWithNetworkId, signatures[0], decodedPub)) return []\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have' +\n ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures']\n }]\n },\n async ({ encodedTx, tx }, { node, parentTxTypes, txType }) => {\n if ((encodedTx ?? tx) === undefined) return []\n return verifyTransaction(\n encode((encodedTx ?? tx).rlpEncoded, 'tx'),\n node,\n [...parentTxTypes, txType]\n )\n },\n (tx, { txType }) => {\n if (tx.fee === undefined) return []\n const minFee = calculateFee(0, txType, {\n gas: +tx.gas || 0, params: tx, showWarning: false, vsn: tx.VSN\n })\n if (new BigNumber(minFee).lte(tx.fee)) return []\n return [{\n message: `Fee ${tx.fee} is too low, minimum fee for this transaction is ${minFee}`,\n key: 'InsufficientFee',\n checkedKeys: ['fee']\n }]\n },\n ({ ttl }, { height }) => {\n if (ttl === undefined) return []\n ttl = +ttl\n if (ttl === 0 || ttl >= height) return []\n return [{\n message: `TTL ${ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl']\n }]\n },\n ({ amount, fee, nameFee, tx }, { account, parentTxTypes, txType }) => {\n if ((amount ?? fee ?? nameFee) === undefined) return []\n const cost = new BigNumber(fee).plus(nameFee || 0).plus(amount || 0)\n .plus(txType === TX_TYPE.payingFor ? tx.tx.encodedTx.tx.fee : 0)\n .minus(parentTxTypes.includes(TX_TYPE.payingFor) ? fee : 0)\n if (cost.lte(account.balance)) return []\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost.toFixed()}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee']\n }]\n },\n ({ nonce }, { account, parentTxTypes }) => {\n if (nonce === undefined || parentTxTypes.includes(TX_TYPE.gaMeta)) return []\n nonce = +nonce\n const validNonce = account.nonce + 1\n if (nonce === validNonce) return []\n return [{\n ...nonce < validNonce ? {\n message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,\n key: 'NonceAlreadyUsed'\n } : {\n message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,\n key: 'NonceHigh'\n },\n checkedKeys: ['nonce']\n }]\n },\n ({ gasPrice }) => {\n if (gasPrice === undefined) return []\n if (gasPrice >= MIN_GAS_PRICE) return []\n return [{\n message: `Gas price ${gasPrice} must be bigger then ${MIN_GAS_PRICE}`,\n key: 'MinGasPrice',\n checkedKeys: ['gasPrice']\n }]\n },\n ({ ctVersion, abiVersion }, { txType, node }) => {\n const { consensusProtocolVersion } = node.getNodeInfo()\n const protocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!protocol) throw new Error(`Unsupported protocol: ${consensusProtocolVersion}`)\n // If not contract create tx\n if (!ctVersion) ctVersion = { abiVersion }\n const txProtocol = protocol[txType]\n if (!txProtocol) return []\n if (Object.entries(ctVersion).some(([key, value]) => !txProtocol[key].includes(+value))) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(txProtocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion']\n }]\n }\n return []\n }\n]\n\nconst getSenderAddress = tx => [\n 'senderId', 'accountId', 'ownerId', 'callerId',\n 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId'\n]\n .map(key => tx[key])\n .filter(a => a)\n .map(a => a.replace(/^ok_/, 'ak_'))[0]\n\n/**\n * Transaction Validator\n * This function validates some of transaction properties,\n * to make sure it can be posted it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n * @rtype (tx: String, node) => void\n * @param {String} transaction Base64Check-encoded transaction\n * @param {Object} node Node to validate transaction against\n * @param {String[]} [parentTxTypes] Types of parent transactions\n * @return {Promise<Object[]>} Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction (transaction, node, parentTxTypes = []) {\n const { tx, txType } = unpackTx(transaction)\n\n const address = getSenderAddress(tx) ??\n (txType === TX_TYPE.signed ? getSenderAddress(tx.encodedTx.tx) : null)\n const [account, height] = await Promise.all([\n address && node.api.getAccountByPubkey(address).catch(() => ({\n id: address,\n balance: new BigNumber(0),\n nonce: 0\n })),\n node.api.getCurrentKeyBlockHeight().then(({ height }) => height)\n ])\n\n return (await Promise.all(\n validators.map(v => v(tx, { txType, node, account, height, parentTxTypes })))\n ).flat()\n}\n","/**\n * NodePool module\n * @module @aeternity/aepp-sdk/es/node-pool\n * @export NodePool\n * @example import { NodePool } from '@aeternity/aepp-sdk'\n */\nimport stampit from '@stamp/it'\nimport Joi from 'joi-browser'\nimport { getNetworkId } from '../node'\n\n/**\n * Node Pool Stamp\n * This stamp allow you to make basic manipulation(add, remove, select) on list of nodes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Array} [options.nodes] - Array with Node instances\n * @return {Object} NodePool instance\n */\nexport default stampit({\n init ({ nodes = [] } = {}) {\n this.pool = new Map()\n this.validateNodes(nodes)\n\n nodes.forEach((node, i) => {\n const { name, instance } = node\n this.addNode(name, instance, i === 0)\n })\n if (nodes.length) this.selectNode(nodes[0].name)\n },\n propertyDescriptors: {\n api: {\n enumerable: true,\n configurable: false,\n get () {\n if (!this.selectedNode || !this.selectedNode.instance) {\n throw new Error('You can\\'t use Node API. Node is not connected or not defined!')\n }\n return this.selectedNode.instance.api\n }\n }\n },\n methods: {\n /**\n * Add Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype (name: String, nodeInstance: Object, select: Boolean) => void\n * @param {String} name - Node name\n * @param {Object} node - Node instance\n * @param {Boolean} select - Select this node as current\n * @return {void}\n * @example\n * nodePool.addNode('testNode', awaitNode({ url, internalUrl }), true) // add and select new node with name 'testNode'\n */\n addNode (name, node, select = false) {\n if (this.pool.has(name)) throw new Error(`Node with name ${name} already exist`)\n\n this.validateNodes([{ name, instance: node }])\n\n this.pool.set(name, {\n name,\n instance: node,\n url: node.url,\n internalUrl: node.internalUrl,\n networkId: node.nodeNetworkId,\n version: node.version,\n consensusProtocolVersion: node.consensusProtocolVersion\n })\n if (select || !this.selectedNode) {\n this.selectNode(name)\n }\n },\n /**\n * Select Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype (name: String) => void\n * @param {String} name - Node name\n * @return {void}\n * @example\n * nodePool.selectNode('testNode')\n */\n selectNode (name) {\n if (!this.pool.has(name)) throw new Error(`Node with name ${name} not in pool`)\n\n this.selectedNode = this.pool.get(name)\n },\n /**\n * Get NetworkId of current Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => String\n * @return {String}\n * @example\n * nodePool.getNetworkId()\n */\n getNetworkId,\n /**\n * Check if you have selected node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Boolean\n * @return {Boolean}\n * @example\n * nodePool.isNodeConnected()\n */\n isNodeConnected () {\n return !!this.selectedNode.instance\n },\n /**\n * Get information about node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Object\n * @return {Object}\n * @example\n * nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }\n */\n getNodeInfo () {\n if (!this.isNodeConnected()) throw new Error('Can not get node info. Node is not connected')\n return {\n name: this.selectedNode.name,\n ...this.selectedNode.instance.getNodeInfo()\n }\n },\n /**\n * Get array of available nodes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Object[]\n * @return {Object[]}\n * @example\n * nodePool.getNodesInPool()\n */\n getNodesInPool () {\n return Array.from(this.pool.entries()).map(([name, node]) => ({\n name,\n ...node.instance.getNodeInfo()\n }))\n },\n validateNodes (nodes) {\n const { error } = Joi.array().items(\n Joi.object({\n name: Joi.string().required(),\n instance: Joi.object({\n api: Joi.object().required(),\n consensusProtocolVersion: Joi.number().required(),\n genesisHash: Joi.string().required()\n }).unknown()\n })\n ).label('node').validate(nodes)\n if (error) throw error\n }\n },\n props: {\n selectedNode: {}\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport * as R from 'ramda'\n\nimport Chain from './'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../utils/amount-formatter'\nimport verifyTransaction from '../tx/validator'\nimport NodePool from '../node-pool'\nimport { pause } from '../utils/other'\nimport { isNameValid, produceNameId, decode } from '../tx/builder/helpers'\nimport { DRY_RUN_ACCOUNT, NAME_ID_KEY } from '../tx/builder/schema'\n\n/**\n * ChainNode module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/chain}.\n * @module @aeternity/aepp-sdk/es/chain/node\n * @export ChainNode\n * @example import { ChainNode } from '@aeternity/aepp-sdk'\n */\n\nasync function sendTransaction (tx, options = {}) {\n const { waitMined, verify } = R.merge(this.Ae.defaults, options)\n if (verify) {\n const validation = await verifyTransaction(tx, this.selectedNode.instance)\n if (validation.length) {\n const message = 'Transaction verification errors: ' +\n validation.map(v => v.message).join(', ')\n throw Object.assign(new Error(message), {\n code: 'TX_VERIFICATION_ERROR',\n validation,\n transaction: tx\n })\n }\n }\n\n try {\n const { txHash } = await this.api.postTransaction({ tx })\n\n if (waitMined) {\n const txData = { ...await this.poll(txHash, options), rawTx: tx }\n // wait for transaction confirmation\n if (options.confirm) {\n return { ...txData, confirmationHeight: await this.waitForTxConfirm(txHash, options) }\n }\n return txData\n }\n return { hash: txHash, rawTx: tx }\n } catch (error) {\n throw Object.assign(error, { rawTx: tx, verifyTx: () => verifyTransaction(tx, this.selectedNode.instance) })\n }\n}\n\nasync function waitForTxConfirm (txHash, options = { confirm: 3 }) {\n options.confirm = options.confirm === true ? 3 : options.confirm\n const { blockHeight } = await this.tx(txHash)\n const height = await this.awaitHeight(blockHeight + options.confirm, options)\n const { blockHeight: newBlockHeight } = await this.tx(txHash)\n switch (newBlockHeight) {\n case -1:\n throw new Error(`Transaction ${txHash} is removed from chain`)\n case blockHeight:\n return height\n default:\n return waitForTxConfirm(txHash, options)\n }\n}\n\nasync function getAccount (address, { height, hash } = {}) {\n if (height) return this.api.getAccountByPubkeyAndHeight(address, height)\n if (hash) return this.api.getAccountByPubkeyAndHash(address, hash)\n return this.api.getAccountByPubkey(address)\n}\n\n/**\n * @function\n * @deprecated\n */\nasync function balance (address, { height, hash, format = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const { balance } = await this.getAccount(address, { hash, height })\n\n return formatAmount(balance, { targetDenomination: format }).toString()\n}\n\nasync function getBalance (address, { height, hash, format = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const { balance } = await this.getAccount(address, { hash, height }).catch(_ => ({ balance: 0 }))\n\n return formatAmount(balance, { targetDenomination: format }).toString()\n}\n\nasync function tx (hash, info = true) {\n const tx = await this.api.getTransactionByHash(hash)\n if (['ContractCreateTx', 'ContractCallTx', 'ChannelForceProgressTx'].includes(tx.tx.type) && info && tx.blockHeight !== -1) {\n try {\n return { ...tx, ...await this.getTxInfo(hash) }\n } catch (e) {}\n }\n return tx\n}\n\nasync function height () {\n try {\n if (!this._heightPromise) {\n this._heightPromise = this.api.getCurrentKeyBlockHeight()\n }\n return (await this._heightPromise).height\n } finally {\n delete this._heightPromise\n }\n}\n\nasync function awaitHeight (height, { interval = 5000, attempts = 20 } = {}) {\n let currentHeight\n for (let i = 0; i < attempts; i++) {\n if (i) await pause(interval)\n currentHeight = await this.height()\n if (currentHeight >= height) return currentHeight\n }\n throw new Error(`Giving up after ${(attempts - 1) * interval}ms, current height: ${currentHeight}, desired height: ${height}`)\n}\n\n/**\n * @deprecated\n */\nasync function topBlock () {\n return this.api.getTopHeader()\n}\n\nasync function poll (th, { blocks = 10, interval = 5000, allowUnsynced = false } = {}) {\n const max = await this.height() + blocks\n do {\n const tx = await this.tx(th).catch(_ => null)\n if (tx && (tx.blockHeight !== -1 || (allowUnsynced && tx.height))) {\n return tx\n }\n await pause(interval)\n } while (await this.height() < max)\n throw new Error(`Giving up after ${blocks} blocks mined, transaction hash: ${th}`)\n}\n\nasync function getTxInfo (hash) {\n const result = await this.api.getTransactionInfoByHash(hash)\n return result.callInfo || result\n}\n\nasync function mempool () {\n return this.api.getPendingTransactions()\n}\n\nasync function getCurrentGeneration () {\n return this.api.getCurrentGeneration()\n}\n\nasync function getGeneration (hashOrHeight) {\n if (typeof hashOrHeight === 'string') return this.api.getGenerationByHash(hashOrHeight)\n if (typeof hashOrHeight === 'number') return this.api.getGenerationByHeight(hashOrHeight)\n throw new Error('Invalid param, param must be hash or height')\n}\n\nasync function getMicroBlockTransactions (hash) {\n return (await this.api.getMicroBlockTransactionsByHash(hash)).transactions\n}\n\nasync function getKeyBlock (hashOrHeight) {\n if (typeof hashOrHeight === 'string') return this.api.getKeyBlockByHash(hashOrHeight)\n if (typeof hashOrHeight === 'number') return this.api.getKeyBlockByHeight(hashOrHeight)\n throw new Error('Invalid param, param must be hash or height')\n}\n\nasync function getMicroBlockHeader (hash) {\n return this.api.getMicroBlockHeaderByHash(hash)\n}\n\nasync function txDryRun (tx, accountAddress, options) {\n const { results: [{ result, reason, ...resultPayload }], ...other } =\n await this.api.protectedDryRunTxs({\n ...options,\n txs: [{ tx }],\n accounts: [{\n pubKey: accountAddress,\n amount: DRY_RUN_ACCOUNT.amount\n }]\n })\n\n if (result === 'ok') return { ...resultPayload, ...other }\n\n throw Object.assign(\n new Error('Dry run error, ' + reason),\n { tx, accountAddress, options }\n )\n}\n\nasync function getContractByteCode (contractId) {\n return this.api.getContractCode(contractId)\n}\n\nasync function getContract (contractId) {\n return this.api.getContract(contractId)\n}\n\nasync function getName (name) {\n return this.api.getNameEntryByName(name)\n}\n\n/**\n * Resolve AENS name and return name hash\n * @param {String} nameOrId\n * @param {String} prefix\n * @param {Object} [options]\n * @param {Boolean} [options.verify] To ensure that name exist and have a corresponding pointer\n * @param {Boolean} [options.resolveByNode] Enables pointer resolving using node // TODO: avoid that to don't trust to current api gateway\n * @return {String} Address or AENS name hash\n */\nasync function resolveName (nameOrId, prefix, { verify, resolveByNode } = {}) {\n if (!nameOrId || typeof nameOrId !== 'string') {\n throw new Error(`Name or address should be a string: ${nameOrId}`)\n }\n const prefixes = Object.keys(NAME_ID_KEY)\n if (!prefixes.includes(prefix)) {\n throw new Error(`Invalid prefix ${prefix}, should be one of [${prefixes}]`)\n }\n try {\n decode(nameOrId, prefix)\n return nameOrId\n } catch (error) {}\n if (isNameValid(nameOrId)) {\n if (verify || resolveByNode) {\n const name = await this.getName(nameOrId).catch(_ => null)\n if (!name) throw new Error(`Name not found: ${nameOrId}`)\n const pointer = name.pointers.find(({ id }) => id.split('_')[0] === prefix)\n if (!pointer) throw new Error(`Name ${nameOrId} don't have pointers for ${prefix}`)\n if (resolveByNode) return pointer.id\n }\n return produceNameId(nameOrId)\n }\n throw new Error(`Invalid name or address: ${nameOrId}`)\n}\n\n/**\n * ChainNode Stamp\n *\n * This is implementation of {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * composed with {@link module:@aeternity/aepp-sdk/es/contract/node--ContractNodeAPI} and {@link module:@aeternity/aepp-sdk/es/oracle/node--OracleNodeAPI}\n * @function\n * @alias module:@aeternity/aepp-sdk/es/chain/node\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} ChainNode instance\n * @example ChainNode({url: 'https://testnet.aeternity.io/'})\n */\nconst ChainNode = Chain.compose(NodePool, {\n methods: {\n sendTransaction,\n balance,\n getBalance,\n getAccount,\n topBlock,\n tx,\n height,\n awaitHeight,\n poll,\n getTxInfo,\n mempool,\n getCurrentGeneration,\n getGeneration,\n getMicroBlockHeader,\n getMicroBlockTransactions,\n getKeyBlock,\n txDryRun,\n getContractByteCode,\n getContract,\n getName,\n waitForTxConfirm,\n resolveName\n }\n})\n\nexport default ChainNode\n","/**\n * TxObject module\n * @module @aeternity/aepp-sdk/es/tx/tx-object\n * @export TxObject\n * @example import TxObject from '@aeternity/aepp-sdk/es/tx/tx-object'\n */\nimport stampit from '@stamp/it'\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { TX_TYPE } from './builder/schema'\nimport { encode } from './builder/helpers'\nimport { isHex } from '../utils/string'\n\n/**\n * Build transaction from object\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {String} type Transaction type\n * @param {Object} params Transaction params\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{ encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, params: Object, type: String }}\n */\nconst buildTransaction = (type, params, options = {}) => {\n if (typeof params !== 'object') throw new Error('\"params\" should be an object')\n if (typeof type !== 'string' || !Object.values(TX_TYPE).includes(type)) throw new Error(`Unknown transaction type ${type}`)\n const fee = calculateFee(params.fee, type, { gas: params.gas, params, vsn: params.vsn })\n const { rlpEncoded, binary, tx: encodedTx, txObject } = buildTx({ ...params, fee }, type, { vsn: params.vsn, ...options })\n return { rlpEncoded, binary, encodedTx, params: txObject, type }\n}\n\n/**\n * Unpack transaction from RLP encoded binary or base64c string\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} tx RLP encoded binary or base64c(rlpBinary) string\n * @throws {Error} Arguments validation error's\n * @return {{ encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object }}\n */\nconst unpackTransaction = (tx) => {\n if (!tx) throw new Error(`Invalid transaction: ${tx}`)\n if (typeof tx === 'string') {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx)\n return { encodedTx: tx, type, params, rlpEncoded, binary }\n }\n if (Buffer.isBuffer(tx)) {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx, true)\n return { encodedTx: encode(tx, 'tx'), type, params, rlpEncoded, binary }\n }\n}\n\n/**\n * Helper which build or unpack transaction base on constructor arguments\n * Need to provide one of arguments: [tx] -> unpack flow or [params, type] -> build flow\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} [tx] Transaction rlp binary or vase64c string\n * @param {Object} params Transaction params\n * @param {String} type Transaction type\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object}}\n */\nconst initTransaction = ({ tx, params, type, options = {} } = {}) => {\n if (params && type) return buildTransaction(type, params, options)\n if (tx) return unpackTransaction(tx)\n throw new Error('Invalid TxObject arguments. Please provide one of { tx: \"tx_asdasd23...\" } or { type: \"spendTx\", params: {...} }')\n}\n\n/**\n * Transaction Validator Stamp\n * This stamp give us possibility to unpack and validate some of transaction properties,\n * to make sure we can post it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Buffer|String} [options.tx] - Rlp binary or base64c transaction\n * @param {Object} [options.params] - Transaction params\n * @param {String} [options.type] - Transaction type\n * @param {Object} [options.options] - Build options\n * @return {Object} TxObject instance\n * @example TxObject({ params: {...}, type: 'spendTx' })\n */\nexport const TxObject = stampit({\n init ({ tx, params, type, options = {} } = {}) {\n this.options = options\n this.signatures = []\n Object.assign(this, initTransaction({ tx, params, type, options }))\n\n if (this.type === TX_TYPE.signed) {\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n }\n },\n statics: {\n /**\n * Create txObject from base64c RLP encoded transaction string with 'tx_' prefix\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {String} tx Transaction string (tx_23fsdgsdfg...)\n * @return {TxObject}\n */\n fromString: (tx) => TxObject({ tx }),\n /**\n * Create txObject from transaction RLP binary\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {Buffer} tx Transaction RLP binary\n * @return {TxObject}\n */\n fromRlp: (tx) => TxObject({ tx })\n },\n methods: {\n /**\n * Rebuild transaction with new params and recalculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props Transaction properties for update\n * @param options\n * @return {TxObject}\n */\n setProp (props = {}, options = {}) {\n if (typeof props !== 'object') throw new Error('Props should be an object')\n this.isSigned = false\n this.signatures = []\n Object.assign(this, buildTransaction(this.type, { ...this.params, ...props, fee: null }, { ...this.options, ...options }))\n return this\n },\n /**\n * Get signatures\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @return {Array} Array of signatures\n */\n getSignatures () {\n if (!this.isSigned) throw new Error('Signature not found, transaction is not signed')\n return this.signatures\n },\n /**\n * Add signature\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} signature Signature to add ( Can be: Buffer | Uint8Array | HexString )\n * @return {void}\n */\n addSignature (signature) {\n signature = isHex(signature) ? Buffer.from(signature, 'hex') : signature\n if (!Buffer.isBuffer(signature) && !(signature instanceof Uint8Array)) throw new Error('Invalid signature, signature must be of type Buffer or Uint8Array')\n Object.assign(this, buildTransaction(TX_TYPE.signed, { encodedTx: this.rlpEncoded, signatures: [[...this.signatures, signature]] }))\n\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n },\n /**\n * Calculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props\n * @return {String} fee\n */\n calculateMinFee (props = {}) {\n const params = { ...this.params, ...props }\n return calculateFee(0, this.type, { gas: params.gas, params, vsn: params.vsn })\n }\n }\n})\n\nexport default TxObject\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Transaction module\n * @module @aeternity/aepp-sdk/es/tx/tx\n * @export Transaction\n * @example import { Transaction } from '@aeternity/aepp-sdk'\n */\n\nimport * as R from 'ramda'\n\nimport ChainNode from '../chain/node'\nimport Tx from './'\n\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { ABI_VERSIONS, MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE, TX_TTL } from './builder/schema'\nimport { buildContractId } from './builder/helpers'\nimport { TxObject } from './tx-object'\n\nasync function spendTx ({ senderId, recipientId, amount, payload = '' }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.spend, { senderId, ...R.head(arguments), payload })\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), {\n recipientId,\n senderId,\n nonce,\n ttl,\n payload\n }),\n type: TX_TYPE.spend\n }).encodedTx\n }\n : await this.api.postSpend(R.merge(R.head(arguments), {\n amount: parseInt(amount),\n recipientId,\n senderId,\n nonce,\n ttl,\n fee: parseInt(fee),\n payload\n }))\n\n return tx\n}\n\nasync function namePreclaimTx ({ accountId, commitmentId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.namePreClaim, { senderId: accountId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee }),\n type: TX_TYPE.namePreClaim\n }).encodedTx\n }\n : await this.api.postNamePreclaim(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function nameClaimTx ({ accountId, name, nameSalt, vsn = 2 }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.nameClaim, { senderId: accountId, ...R.head(arguments), vsn })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee, vsn }),\n type: TX_TYPE.nameClaim\n }).encodedTx\n }\n : await this.api.postNameClaim(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function nameTransferTx ({ accountId, nameId, recipientId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.nameTransfer, { senderId: accountId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { recipientId, nonce, ttl, fee }),\n type: TX_TYPE.nameTransfer\n }).encodedTx\n }\n : await this.api.postNameTransfer(R.merge(R.head(arguments), { recipientId, nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function nameUpdateTx ({ accountId, nameId, nameTtl, pointers, clientTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.nameUpdate, { senderId: accountId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee }),\n type: TX_TYPE.nameUpdate\n }).encodedTx\n }\n : await this.api.postNameUpdate(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function nameRevokeTx ({ accountId, nameId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.nameRevoke, { senderId: accountId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee }),\n type: TX_TYPE.nameRevoke\n }).encodedTx\n }\n : await this.api.postNameRevoke(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee) }))\n\n return tx\n}\n\nasync function contractCreateTx ({ ownerId, code, vmVersion, abiVersion, deposit, amount, gas, gasPrice = MIN_GAS_PRICE, callData }) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, R.head(arguments))\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.contractCreate, { senderId: ownerId, ...R.head(arguments), ctVersion, gasPrice })\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee, ctVersion, gasPrice }),\n type: TX_TYPE.contractCreate\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n : this.api.postContractCreate(R.merge(R.head(arguments), { nonce, ttl, fee: parseInt(fee), gas: parseInt(gas), gasPrice, vmVersion: ctVersion.vmVersion, abiVersion: ctVersion.abiVersion }))\n}\n\nasync function contractCallTx ({ callerId, contractId, abiVersion, amount, gas, gasPrice = MIN_GAS_PRICE, callData }) {\n const ctVersion = this.getVmVersion(TX_TYPE.contractCall, R.head(arguments))\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.contractCall, { senderId: callerId, ...R.head(arguments), gasPrice, abiVersion: ctVersion.abiVersion })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee, abiVersion: ctVersion.abiVersion, gasPrice }),\n type: TX_TYPE.contractCall\n }).encodedTx\n }\n : await this.api.postContractCall(R.merge(R.head(arguments), {\n nonce,\n ttl,\n fee: parseInt(fee),\n gas: parseInt(gas),\n gasPrice,\n abiVersion: ctVersion.abiVersion\n }))\n\n return tx\n}\n\nasync function oracleRegisterTx ({ accountId, queryFormat, responseFormat, queryFee, oracleTtl, abiVersion = ABI_VERSIONS.NO_ABI }) {\n // const { abiVersion: abi } = this.getVmVersion(TX_TYPE.oracleRegister, R.head(arguments))\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.oracleRegister, { senderId: accountId, ...R.head(arguments), abiVersion })\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: {\n accountId,\n queryFee,\n abiVersion,\n fee,\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n },\n type: TX_TYPE.oracleRegister\n }).encodedTx\n }\n : await this.api.postOracleRegister({\n accountId,\n queryFee,\n abiVersion,\n fee: parseInt(fee),\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n })\n\n return tx\n}\n\nasync function oracleExtendTx ({ oracleId, callerId, oracleTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.oracleExtend, { senderId: callerId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, fee, oracleTtl, nonce, ttl },\n type: TX_TYPE.oracleExtend\n }).encodedTx\n }\n : await this.api.postOracleExtend({ oracleId, fee: parseInt(fee), oracleTtl, nonce, ttl })\n\n return tx\n}\n\nasync function oraclePostQueryTx ({ oracleId, responseTtl, query, queryTtl, queryFee, senderId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.oracleQuery, { senderId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, query, queryTtl, fee, queryFee, ttl, nonce, senderId },\n type: TX_TYPE.oracleQuery\n }).encodedTx\n }\n : await this.api.postOracleQuery({\n oracleId,\n responseTtl,\n query,\n queryTtl,\n fee: parseInt(fee),\n queryFee,\n ttl,\n nonce,\n senderId\n })\n\n return tx\n}\n\nasync function oracleRespondTx ({ oracleId, callerId, responseTtl, queryId, response }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.oracleResponse, { senderId: callerId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, queryId, response, fee, ttl, nonce },\n type: TX_TYPE.oracleResponse\n }).encodedTx\n }\n : await this.api.postOracleRespond({ oracleId, responseTtl, queryId, response, fee: parseInt(fee), ttl, nonce })\n return tx\n}\n\nasync function channelCloseSoloTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.channelCloseSolo, { senderId: fromId, ...R.head(arguments), payload })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }), TX_TYPE.channelCloseSolo)\n : await this.api.postChannelCloseSolo(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n }))\n\n return tx\n}\n\nasync function channelSlashTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.channelSlash, { senderId: fromId, ...R.head(arguments), payload })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }), TX_TYPE.channelSlash)\n : await this.api.postChannelSlash(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n }))\n\n return tx\n}\n\nasync function channelSettleTx ({ channelId, fromId, initiatorAmountFinal, responderAmountFinal }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.channelSettle, { senderId: fromId, ...R.head(arguments) })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx(R.merge(R.head(arguments), {\n channelId,\n fromId,\n initiatorAmountFinal,\n responderAmountFinal,\n ttl,\n fee,\n nonce\n }), TX_TYPE.channelSettle)\n : await this.api.postChannelSettle(R.merge(R.head(arguments), {\n channelId,\n fromId,\n initiatorAmountFinal: parseInt(initiatorAmountFinal),\n responderAmountFinal: parseInt(responderAmountFinal),\n ttl,\n fee: parseInt(fee),\n nonce\n }))\n\n return tx\n}\n\nasync function channelSnapshotSoloTx ({ channelId, fromId, payload }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.channelSnapshotSolo, { senderId: fromId, ...R.head(arguments), payload })\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n ttl,\n fee,\n nonce\n }), TX_TYPE.channelSnapshotSolo)\n : await this.api.postChannelSnapshotSolo(R.merge(R.head(arguments), {\n channelId,\n fromId,\n payload,\n ttl,\n fee: parseInt(fee),\n nonce\n }))\n\n return tx\n}\n\nasync function gaAttachTx ({ ownerId, code, vmVersion, abiVersion, authFun, gas, gasPrice = MIN_GAS_PRICE, callData }) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, R.head(arguments))\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(TX_TYPE.gaAttach, { senderId: ownerId, ...R.head(arguments), ctVersion, gasPrice })\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return {\n tx: TxObject({\n params: R.merge(R.head(arguments), { nonce, ttl, fee, ctVersion, gasPrice }),\n type: TX_TYPE.gaAttach\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n}\n\nasync function payingForTx ({ tx, payerId, ...args }) {\n const params = { tx: unpackTx(tx), payerId }\n const { fee, nonce } = await this.prepareTxParams(TX_TYPE.payingFor, {\n ...params, ...args, senderId: payerId\n })\n return buildTx({ ...params, ...args, fee, nonce }, TX_TYPE.payingFor).tx\n}\n\n/**\n * Validated vm/abi version or get default based on transaction type and NODE version\n *\n * @param {string} txType Type of transaction\n * @param {object} vmAbi Object with vm and abi version fields\n * @return {object} Object with vm/abi version ({ vmVersion: number, abiVersion: number })\n */\nfunction getVmVersion (txType, { vmVersion, abiVersion } = {}) {\n const { consensusProtocolVersion } = this.getNodeInfo()\n const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!supportedProtocol) throw new Error('Not supported consensus protocol version')\n const protocolForTX = supportedProtocol[txType]\n if (!protocolForTX) throw new Error('Not supported tx type')\n\n const ctVersion = {\n abiVersion: abiVersion || protocolForTX.abiVersion[0],\n vmVersion: vmVersion || protocolForTX.vmVersion[0]\n }\n if (protocolForTX.vmVersion.length && !R.contains(ctVersion.vmVersion, protocolForTX.vmVersion)) throw new Error(`VM VERSION ${ctVersion.vmVersion} do not support by this node. Supported: [${protocolForTX.vmVersion}]`)\n if (protocolForTX.abiVersion.length && !R.contains(ctVersion.abiVersion, protocolForTX.abiVersion)) throw new Error(`ABI VERSION ${ctVersion.abiVersion} do not support by this node. Supported: [${protocolForTX.abiVersion}]`)\n\n return ctVersion\n}\n\n/**\n * Compute the absolute ttl by adding the ttl to the current height of the chain\n *\n * @param {number} ttl\n * @param {boolean} relative ttl is absolute or relative(default: true(relative))\n * @return {number} Absolute Ttl\n */\nasync function calculateTtl (ttl = TX_TTL, relative = true) {\n if (ttl === 0) return 0\n if (ttl < 0) throw new Error('ttl must be greater than 0')\n\n if (relative) {\n const { height } = await this.api.getCurrentKeyBlock()\n return +(height) + ttl\n }\n return ttl\n}\n\n/**\n * Get the next nonce to be used for a transaction for an account\n *\n * @param {string} accountId\n * @param {number} nonce\n * @return {number} Next Nonce\n */\nasync function getAccountNonce (accountId, nonce) {\n if (nonce) return nonce\n const { nonce: accountNonce } = await this.api.getAccountByPubkey(accountId).catch(() => ({ nonce: 0 }))\n return accountNonce + 1\n}\n\n/**\n * Calculate fee, get absolute ttl (ttl + height), get account nonce\n *\n * @param {String} txType Type of transaction\n * @param {Object} params Object which contains all tx data\n * @return {Object} { ttl, nonce, fee } Object with account nonce, absolute ttl and transaction fee\n */\nasync function prepareTxParams (txType, { senderId, nonce: n, ttl: t, fee: f, gas, absoluteTtl, vsn }) {\n const account = await this.getAccount(senderId).catch(e => ({ nonce: 0 }))\n // Is GA account\n if (account.contractId) {\n n = 0\n } else {\n n = n || (account.nonce + 1)\n }\n const ttl = await calculateTtl.call(this, t, !absoluteTtl)\n const fee = calculateFee(f, txType, { showWarning: this.showWarning, gas, params: R.merge(R.last(arguments), { nonce: n, ttl }), vsn })\n return { fee, ttl, nonce: n }\n}\n\n/**\n * Transaction Stamp\n *\n * This is implementation of [Tx](api/tx.md) relays\n * the creation of transactions to {@link module:@aeternity/aepp-sdk/es/Node}.\n * This stamp provide ability to create native transaction's,\n * or transaction's using Node API.\n * As there is no built-in security between Node and client communication,\n * creating transaction using {@link module:@aeternity/aepp-sdk/es/Node} API\n * must never be used for production but can be very useful to verify other\n * implementations.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Boolean} [options.nativeMode=true] options.nativeMode - Use Native build of transaction's\n * @param {String} options.url - Node url\n * @param {String} options.internalUrl - Node internal url\n * @return {Object} Transaction instance\n * @example Transaction({url: 'https://testnet.aeternity.io/'})\n */\nconst Transaction = ChainNode.compose(Tx, {\n init ({ nativeMode = true, showWarning = false }) {\n this.nativeMode = nativeMode\n this.showWarning = showWarning\n },\n props: {\n nativeMode: true,\n showWarning: false\n },\n methods: {\n spendTx,\n namePreclaimTx,\n nameClaimTx,\n nameTransferTx,\n nameUpdateTx,\n nameRevokeTx,\n contractCreateTx,\n contractCallTx,\n prepareTxParams,\n oracleRegisterTx,\n oracleExtendTx,\n oraclePostQueryTx,\n oracleRespondTx,\n channelCloseSoloTx,\n channelSlashTx,\n channelSettleTx,\n channelSnapshotSoloTx,\n gaAttachTx,\n payingForTx,\n getAccountNonce,\n getVmVersion\n }\n})\n\nexport default Transaction\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Memory Account module\n * @module @aeternity/aepp-sdk/es/account/memory\n * @export MemoryAccount\n * @example import { MemoryAccount } from '@aeternity/aepp-sdk'\n */\n\nimport AccountBase from './base'\nimport { sign, isAddressValid, isValidKeypair } from '../utils/crypto'\nimport { isHex } from '../utils/string'\nimport { decode } from '../tx/builder/helpers'\n\nconst secrets = new WeakMap()\n\n/**\n * In-memory account stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/account/memory\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Object} options.keypair - Key pair to use\n * @param {String} options.keypair.publicKey - Public key\n * @param {String} options.keypair.secretKey - Private key\n * @return {Account}\n */\nexport default AccountBase.compose({\n init ({ keypair, gaId }) {\n this.isGa = !!gaId\n if (gaId) {\n if (!isAddressValid(gaId)) throw new Error('Invalid GA address')\n secrets.set(this, { publicKey: gaId })\n return\n }\n\n if (!keypair || typeof keypair !== 'object') throw new Error('KeyPair must be an object')\n if (!keypair.secretKey || !keypair.publicKey) throw new Error('KeyPair must must have \"secretKey\", \"publicKey\" properties')\n if (typeof keypair.publicKey !== 'string' || keypair.publicKey.indexOf('ak_') === -1) throw new Error('Public Key must be a base58c string with \"ak_\" prefix')\n if (\n !Buffer.isBuffer(keypair.secretKey) &&\n (typeof keypair.secretKey === 'string' && !isHex(keypair.secretKey))\n ) throw new Error('Secret key must be hex string or Buffer')\n\n const pubBuffer = Buffer.from(decode(keypair.publicKey, 'ak'))\n if (!isValidKeypair(Buffer.from(keypair.secretKey, 'hex'), pubBuffer)) throw new Error('Invalid Key Pair')\n\n secrets.set(this, {\n secretKey: Buffer.isBuffer(keypair.secretKey) ? keypair.secretKey : Buffer.from(keypair.secretKey, 'hex'),\n publicKey: keypair.publicKey\n })\n },\n props: { isGa: false },\n methods: {\n sign (data) {\n if (this.isGa) throw new Error('You are trying to sign data using GA account without keypair')\n return Promise.resolve(sign(data, secrets.get(this).secretKey))\n },\n address () {\n return Promise.resolve(secrets.get(this).publicKey)\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * AccountMultiple module\n * @module @aeternity/aepp-sdk/es/accounts/multiple\n * @export AccountMultiple\n */\n\nimport * as R from 'ramda'\nimport AsyncInit from '../utils/async-init'\nimport MemoryAccount from './memory'\nimport { decode } from '../tx/builder/helpers'\nimport AccountBase, { isAccountBase } from './base'\n\n/**\n * AccountMultiple stamp\n *\n * The purpose of this stamp is to wrap up implementations of\n * {@link module:@aeternity/aepp-sdk/es/account/base--AccountBase} objects and provide a\n * common interface to all of them. List are a substantial part of\n * {@link module:@aeternity/aepp-sdk/es/ae/wallet--Wallet}s.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Array} [options.accounts] - Accounts array\n * @param {String} [options.address] - Address of account to select\n * @return {Object} AccountMultiple instance\n * @example\n * const accounts = await AccountMultiple({ accounts: [ MemmoryAccount({ keypair: 'keypair_object' }) ] })\n * await accounts.addAccount(account, { select: true }) // Add account and make it selected\n * accounts.removeAccount(address) // Remove account\n * accounts.selectAccount(address) // Select account\n * accounts.addresses() // Get available accounts\n */\nexport default AccountBase.compose(AsyncInit, {\n async init ({ accounts = [], address }) {\n /* An Account maynot be required for the Node/Chain methods */\n if (Array.isArray(accounts) && accounts.length) {\n this.accounts = R.fromPairs(await Promise.all(accounts.map(async a => [await a.address(), a])))\n if (!address) address = Object.keys(this.accounts)[0]\n decode(address, 'ak')\n this.selectedAddress = address\n } else {\n console.warn('No account/accounts supplied')\n }\n },\n props: {\n accounts: {}\n },\n deepProps: {\n selectedAddress: null\n },\n methods: {\n async address ({ onAccount = this.selectedAddress } = {}) {\n return this._resolveAccount(onAccount).address()\n },\n async sign (data, { onAccount = this.selectedAddress } = {}) {\n return this._resolveAccount(onAccount).sign(data)\n },\n /**\n * Get accounts addresses\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @rtype () => String[]\n * @return {String[]}\n * @example addresses()\n */\n addresses () {\n return Object.keys(this.accounts)\n },\n /**\n * Add specific account\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @category async\n * @rtype (account: Account, { select: Boolean }) => void\n * @param {Object} account - Account instance\n * @param {Object} [options={}] - Options\n * @param {Boolean} [options.select] - Select account\n * @return {void}\n * @example addAccount(account)\n */\n async addAccount (account, { select } = {}) {\n const address = await account.address()\n this.accounts[address] = account\n if (select) this.selectAccount(address)\n },\n /**\n * Remove specific account\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @rtype (address: String) => void\n * @param {String} address - Address of account to remove\n * @return {void}\n * @example removeAccount(address)\n */\n removeAccount (address) {\n if (!this.accounts[address]) {\n console.warn(`removeAccount: Account for ${address} not available`)\n return\n }\n delete this.accounts[address]\n if (this.selectedAddress === address) this.selectedAddress = null\n },\n /**\n * Select specific account\n * @alias module:@aeternity/aepp-sdk/es/account/selector\n * @instance\n * @rtype (address: String) => void\n * @param {String} address - Address of account to select\n * @example selectAccount('ak_xxxxxxxx')\n */\n selectAccount (address) {\n decode(address, 'ak')\n if (!this.accounts[address]) throw new Error(`Account for ${address} not available`)\n this.selectedAddress = address\n },\n /**\n * Resolves an account\n * @param account can be account address (should exist in sdk instance), MemoryAccount or keypair\n * @returns {AccountBase}\n * @private\n */\n _resolveAccount (account) {\n switch (typeof account) {\n case 'string':\n decode(account, 'ak')\n if (!this.accounts[account]) throw new Error(`Account for ${account} not available`)\n return this.accounts[account]\n case 'object':\n return isAccountBase(account) ? account : MemoryAccount({ keypair: account })\n default:\n throw new Error(`Unknown account type: ${typeof account} (account: ${account})`)\n }\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aens module - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n * @module @aeternity/aepp-sdk/es/ae/aens\n * @export Aens\n * @example import { Aens } from '@aeternity/aepp-sdk'\n */\n\nimport * as R from 'ramda'\nimport { salt } from '../utils/crypto'\nimport {\n commitmentHash,\n ensureNameValid,\n getMinimumNameFee,\n classify,\n isAuctionName,\n validatePointers, encode, produceNameId\n} from '../tx/builder/helpers'\nimport Ae from './'\nimport { CLIENT_TTL, NAME_FEE, NAME_TTL } from '../tx/builder/schema'\n\n/**\n * Revoke a name\n * @instance\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @category async\n * @param {String} name Name hash\n * @param {Object} [options={}] options\n * @param {(String|Object)} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {(Number|String|BigNumber)} [options.fee] fee\n * @param {(Number|String|BigNumber)} [options.ttl] ttl\n * @param {(Number|String|BigNumber)} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensRevoke(name, { fee, ttl , nonce })\n * // or\n * await nameObject.revoke({ fee, ttl, nonce })\n */\nasync function revoke (name, options = {}) {\n ensureNameValid(name)\n const opt = R.merge(this.Ae.defaults, options)\n\n const nameRevokeTx = await this.nameRevokeTx(R.merge(opt, {\n nameId: produceNameId(name),\n accountId: await this.address(opt)\n }))\n\n return this.send(nameRevokeTx, opt)\n}\n\n/**\n * Update a name\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name AENS name\n * @param {String[]} pointers Array of name pointers. Can be oracle|account|contract|channel public key\n * @param {Object} [options={}]\n * @param {Boolean} [options.extendPointers=false] extendPointers Get the pointers from the node and merge with provided one. Pointers with the same type will be overwrited\n * @param {(String|Object)} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {(Number|String|BigNumber)} [options.fee] fee\n * @param {(Number|String|BigNumber)} [options.ttl] ttl\n * @param {(Number|String|BigNumber)} [options.nonce] nonce\n * @param {(Number|String|BigNumber)} [options.nameTtl=50000] nameTtl Name ttl represented in number of blocks (Max value is 50000 blocks)\n * @param {(Number|String|BigNumber)} [options.clientTtl=84600] clientTtl a suggestion as to how long any clients should cache this information\n * @return {Promise<Object>}\n * @throws Invalid pointer array error\n * @example\n * const name = 'test.chain'\n * const pointersArray = ['ak_asd23dasdas...,' 'ct_asdf34fasdasd...']\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensUpdate(name, pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n * // or\n * await nameObject.update(pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n */\nasync function update (name, pointers = [], options = { extendPointers: false }) {\n ensureNameValid(name)\n const opt = R.merge(this.Ae.defaults, options)\n if (!validatePointers(pointers)) throw new Error('Invalid pointers array')\n\n pointers = [\n ...options.extendPointers ? (await this.getName(name)).pointers : [],\n ...pointers.map(p => R.fromPairs([['id', p], ['key', classify(p)]]))\n ].reduce((acc, el) => [...acc.filter(p => p.key !== el.key), el], [])\n const nameUpdateTx = await this.nameUpdateTx(R.merge(opt, {\n nameId: produceNameId(name),\n accountId: await this.address(opt),\n pointers\n }))\n\n return this.send(nameUpdateTx, opt)\n}\n\n/**\n * Transfer a domain to another account\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name AENS name\n * @param {String} account Recipient account publick key\n * @param {Object} [options={}]\n * @param {(String|Object)} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {(Number|String|BigNumber)} [options.fee] fee\n * @param {(Number|String|BigNumber)} [options.ttl] ttl\n * @param {(Number|String|BigNumber)} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const recipientPub = 'ak_asd23dasdas...'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensTransfer(name, recipientPub, { ttl, fee, nonce })\n * // or\n * await nameObject.transfer(recipientPub, { ttl, fee, nonce })\n */\nasync function transfer (name, account, options = {}) {\n ensureNameValid(name)\n const opt = R.merge(this.Ae.defaults, options)\n\n const nameTransferTx = await this.nameTransferTx(R.merge(opt, {\n nameId: produceNameId(name),\n accountId: await this.address(opt),\n recipientId: account\n }))\n\n return this.send(nameTransferTx, opt)\n}\n\n/**\n * Query the AENS name info from the node\n * and return the object with info and predefined functions for manipulating name\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Object} opt Options\n * @return {Promise<Object>}\n * @example\n * const nameObject = sdkInstance.aensQuery('test.chain')\n * console.log(nameObject)\n * {\n * id, // name hash\n * pointers, // array of pointers\n * update, // Update name function\n * extendTtl, // Extend Ttl name function\n * transfer, // Transfer name function\n * revoke // Revoke name function\n * }\n */\nasync function query (name, opt = {}) {\n ensureNameValid(name)\n const o = await this.getName(name)\n\n return Object.freeze(Object.assign(o, {\n pointers: o.pointers || [],\n update: async (pointers = [], options = {}) => {\n return {\n ...(await this.aensUpdate(name, pointers, R.merge(opt, options))),\n ...(await this.aensQuery(name))\n }\n },\n transfer: async (account, options = {}) => {\n return {\n ...(await this.aensTransfer(name, account, R.merge(opt, options))),\n ...(await this.aensQuery(name))\n }\n },\n revoke: async (options = {}) => this.aensRevoke(name, R.merge(opt, options)),\n extendTtl: async (nameTtl = NAME_TTL, options = {}) => {\n if (!nameTtl || typeof nameTtl !== 'number' || nameTtl > NAME_TTL) throw new Error('Ttl must be an number and less then 180000 blocks')\n\n return {\n ...(await this.aensUpdate(name, o.pointers.map(p => p.id), { ...R.merge(opt, options), nameTtl })),\n ...(await this.aensQuery(name))\n }\n }\n }))\n}\n\n/**\n * Claim a previously preclaimed registration. This can only be done after the\n * preclaim step\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Number} salt Salt from pre-claim, or 0 if it's a bid\n * @param {Object} [options] options\n * @param {String|Object} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @param {Number|String} [options.nameFee] Name Fee (By default calculated by sdk)\n * @return {Promise<Object>} the result of the claim\n * @example\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensClaim(name, salt, { ttl, fee, nonce, nameFee })\n */\nasync function claim (name, salt, options) {\n ensureNameValid(name)\n const opt = R.merge(this.Ae.defaults, options)\n\n const minNameFee = getMinimumNameFee(name)\n if (opt.nameFee !== this.Ae.defaults.nameFee && minNameFee.gt(opt.nameFee)) {\n throw new Error(`the provided fee ${opt.nameFee} is not enough to execute the claim, required: ${minNameFee}`)\n }\n opt.nameFee = opt.nameFee !== this.Ae.defaults.nameFee ? opt.nameFee : minNameFee\n const claimTx = await this.nameClaimTx(R.merge(opt, {\n accountId: await this.address(opt),\n nameSalt: salt,\n name: encode(name, 'nm')\n }))\n\n const result = await this.send(claimTx, opt)\n if (!isAuctionName(name)) {\n const nameInter = opt.waitMined ? await this.aensQuery(name, opt) : {}\n return Object.assign(result, nameInter)\n }\n return { ...result, nameFee: opt.nameFee }\n}\n\n/**\n * Preclaim a name. Sends a hash of the name and a random salt to the node\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>}\n * @example\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensPreclaim(name, { ttl, fee, nonce })\n * {\n * ...transactionResult,\n * claim, // Claim function (options={}) => claimTransactionResult\n * salt,\n * commitmentId\n * }\n */\nasync function preclaim (name, options = {}) {\n ensureNameValid(name)\n const opt = R.merge(this.Ae.defaults, options)\n const _salt = salt()\n const height = await this.height()\n const commitmentId = commitmentHash(name, _salt)\n\n const preclaimTx = await this.namePreclaimTx(R.merge(opt, {\n accountId: await this.address(opt),\n commitmentId\n }))\n\n const result = await this.send(preclaimTx, opt)\n\n return Object.freeze({\n ...result,\n height,\n claim: options => this.aensClaim(name, _salt, { ...options, onAccount: opt.onAccount }),\n salt: _salt,\n commitmentId\n })\n}\n\n/**\n * Bid to name auction\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name Domain name\n * @param {String|Number} nameFee Name fee (bid fee)\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] onAccount Make operation on specific account from sdk(you pass publickKey) or\n * using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const bidFee = computeBidFee(name, startFee, incrementPercentage)\n *\n * await sdkInstance.aensBid(name, 213109412839123, { ttl, fee, nonce })\n */\nasync function bid (name, nameFee = NAME_FEE, options = {}) {\n return this.aensClaim(name, 0, { ...options, nameFee, vsn: 2 })\n}\n\n/**\n * Aens Stamp\n *\n * Aens provides name-system related methods atop\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Aens instance\n */\nconst Aens = Ae.compose({\n methods: {\n aensQuery: query,\n aensPreclaim: preclaim,\n aensClaim: claim,\n aensUpdate: update,\n aensTransfer: transfer,\n aensRevoke: revoke,\n aensBid: bid\n },\n deepProps: {\n Ae: {\n defaults: {\n clientTtl: CLIENT_TTL,\n nameTtl: NAME_TTL, // aec_governance:name_claim_max_expiration() => 50000\n nameFee: NAME_FEE\n }\n }\n }\n})\n\nexport default Aens\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Contract Base module\n * @module @aeternity/aepp-sdk/es/contract\n * @export Contract\n * @example import ContractBase from '@aeternity/aepp-sdk/es/contract'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Contract Stamp\n *\n * This stamp include api call's related to contract functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Contract instance\n */\nconst ContractBase = stampit(required({\n methods: {\n contractEncodeCallDataAPI: required,\n compileContractAPI: required,\n contractGetACI: required,\n setCompilerUrl: required,\n getCompilerVersion: required,\n contractDecodeCallResultAPI: required,\n validateByteCodeAPI: required,\n getFateAssembler: required,\n getBytecodeCompilerVersion: required\n }\n}))\n\n/**\n * Get contract ACI\n * @function contractGetACI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, options: Array) => aciObject: Promise[Object]\n * @param {String} source - Contract source code\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Object} - Contract aci object\n */\n\n/**\n * Encode contract data\n * @function contractEncodeCallDataAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, name: String, args: Array, options: Array) => callData: Promise[String]\n * @param {String} source - Contract source code\n * @param {String} name - Function name\n * @param {Array} args - Function argument's\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Contract encoded data\n */\n\n/**\n * Decode contract call result data\n * @function contractDecodeCallResultAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, fn: String, callValue: String, callResult: String, options: Array) => decodedResult: Promise[String]\n * @param {String} source - Contract source\n * @param {String} fn - Fn name\n * @param {String} callValue - result data (cb_das...)\n * @param {String} callResult - contract call result status('ok', 'revert', ...)\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Decoded contract call result\n */\n\n/**\n * Decode call data by source\n * @function contractDecodeCallDataBySourceAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (source: String, function: String, callData: String, options: Array) => decodedResult: Promise[String]\n * @param {String} source - contract source\n * @param {String} function - function name\n * @param {String} callData - Encoded contract call data\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {String} - Decoded contract call data\n */\n\n/**\n * Decode call data by bytecode\n * @function contractDecodeCallDataByCodeAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (code: String, callData: String) => decodedResult: Promise[String]\n * @param {String} code - contract byte code\n * @param {String} callData - Encoded contract call data\n * @return {String} - Decoded contract call data\n */\n\n/**\n * Compile contract\n * @function compileContractAPI\n * @instance\n * @abstract\n * @category async\n * @rtype (code: String, options?: Object) => compiledContract: Object\n * @param {String} code - Contract source code\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Object} Object which contain bytecode of contract\n */\n\n/**\n * Set compiler url\n * @function setCompilerUrl\n * @instance\n * @abstract\n * @category async\n * @rtype (url: String) => void\n * @param {String} url - Compiler url\n * @return {void}\n */\n\n/**\n * Get Compiler Version\n * @function getCompilerVersion\n * @instance\n * @abstract\n * @category async\n * @rtype () => String\n * @return {String} Compiler version\n */\n\nexport default ContractBase\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * ContractCompilerAPI module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/contract}.\n * @module @aeternity/aepp-sdk/es/contract/compiler\n * @export ContractCompilerAPI\n * @example import { ContractCompilerAPI } from '@aeternity/aepp-sdk'\n */\n\nimport ContractBase from './index'\nimport semverSatisfies from '../utils/semver-satisfies'\nimport AsyncInit from '../utils/async-init'\nimport genSwaggerClient from '../utils/swagger'\n\n/**\n * Contract Compiler Stamp\n *\n * This stamp include api call's related to contract compiler functionality.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/compiler\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} [options.compilerUrl] compilerUrl - Url for compiler API\n * @return {Object} Contract compiler instance\n * @example ContractCompilerAPI({ compilerUrl: 'COMPILER_URL' })\n */\nexport default AsyncInit.compose(ContractBase, {\n async init ({ compilerUrl, ignoreVersion }) {\n if (!compilerUrl) return\n await this.setCompilerUrl(compilerUrl, { ignoreVersion })\n },\n methods: {\n async setCompilerUrl (compilerUrl, { ignoreVersion = false } = {}) {\n if (!compilerUrl) throw new Error('\"compilerUrl\" required')\n compilerUrl = compilerUrl.replace(/\\/$/, '')\n const client = await genSwaggerClient(`${compilerUrl}/api`, {\n disableBigNumbers: true,\n disableCaseConversion: true\n })\n this.compilerVersion = client.spec.info.version\n this._compilerApi = client.api\n\n this._isCompiler6 = semverSatisfies(this.compilerVersion, COMPILER_6_GE_VERSION, COMPILER_LT_VERSION)\n if (ignoreVersion) return\n if (!semverSatisfies(this.compilerVersion, COMPILER_GE_VERSION, COMPILER_LT_VERSION)) {\n throw new Error(`Unsupported compiler version ${this.compilerVersion}. ` +\n `Supported: >= ${COMPILER_GE_VERSION} < ${COMPILER_LT_VERSION}`)\n }\n },\n _ensureCompilerReady () {\n if (!this._compilerApi) throw new Error('Compiler is not ready')\n },\n _prepareCompilerOptions ({ filesystem = {} } = {}) {\n return { file_system: filesystem }\n },\n getCompilerVersion () {\n this._ensureCompilerReady()\n return Promise.resolve(this.compilerVersion)\n },\n async contractEncodeCallDataAPI (source, name, args = [], options) {\n this._ensureCompilerReady()\n const { calldata } = await this._compilerApi.encodeCalldata({\n source,\n function: name,\n arguments: args,\n options: this._prepareCompilerOptions(options)\n })\n return calldata\n },\n async compileContractAPI (code, options) {\n this._ensureCompilerReady()\n const { bytecode } = await this._compilerApi.compileContract({\n code,\n options: this._prepareCompilerOptions(options)\n })\n return bytecode\n },\n contractGetACI (code, options) {\n this._ensureCompilerReady()\n return this._compilerApi.generateACI({ code, options: this._prepareCompilerOptions(options) })\n },\n contractDecodeCallDataByCodeAPI (bytecode, calldata) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCalldataBytecode({ bytecode, calldata })\n },\n contractDecodeCallDataBySourceAPI (source, fn, callData, options) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCalldataSource({\n function: fn,\n source,\n calldata: callData,\n options: this._prepareCompilerOptions(options)\n })\n },\n contractDecodeCallResultAPI (source, fn, callValue, callResult, options) {\n this._ensureCompilerReady()\n return this._compilerApi.decodeCallResult({\n function: fn,\n source,\n 'call-result': callResult,\n 'call-value': callValue,\n options: this._prepareCompilerOptions(options)\n })\n },\n async validateByteCodeAPI (bytecode, source, options) {\n this._ensureCompilerReady()\n const res = await this._compilerApi.validateByteCode({\n bytecode,\n source,\n options: this._prepareCompilerOptions(options)\n })\n return typeof res === 'object' ? true : res\n },\n getFateAssembler (bytecode, options) {\n this._ensureCompilerReady()\n return this._compilerApi.getFateAssemblerCode({ bytecode, options: this._prepareCompilerOptions(options) })\n },\n getBytecodeCompilerVersion (bytecode, options) {\n this._ensureCompilerReady()\n return this._compilerApi.getCompilerVersion({\n bytecode,\n options: this._prepareCompilerOptions(options)\n })\n }\n },\n props: {\n compilerVersion: null\n }\n})\n\nconst COMPILER_GE_VERSION = '4.1.0'\nconst COMPILER_6_GE_VERSION = '6.0.0'\nconst COMPILER_LT_VERSION = '7.0.0'\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * ContractACI module\n *\n * @module @aeternity/aepp-sdk/es/contract/aci\n * @export getContractInstance\n */\n\nimport * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\n\nimport {\n buildContractMethods,\n decodeCallResult,\n decodeEvents,\n getFunctionACI,\n prepareArgsForEncode as prepareArgs\n} from './helpers'\n\n/**\n * Generate contract ACI object with predefined js methods for contract usage - can be used for creating a reference to already deployed contracts\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @param {String} source Contract source code\n * @param {Object} [options={}] Options object\n * @param {String} [options.aci] Contract ACI\n * @param {String} [options.contractAddress] Contract address\n * @param {Object} [options.filesystem] Contact source external namespaces map\n * @param {Object} [options.forceCodeCheck=true] Don't check contract code\n * @param {Object} [options.opt] Contract options\n * @return {ContractInstance} JS Contract API\n * @example\n * const contractIns = await client.getContractInstance(sourceCode)\n * await contractIns.deploy([321]) or await contractIns.methods.init(321)\n * const callResult = await contractIns.call('setState', [123]) or await contractIns.methods.setState.send(123, options)\n * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or await contractIns.methods.setState.get(123, options)\n * Also you can call contract like: await contractIns.methods.setState(123, options)\n * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is stateful or not\n */\nexport default async function getContractInstance (source, { aci, contractAddress, filesystem = {}, forceCodeCheck = true, opt } = {}) {\n aci = aci || await this.contractGetACI(source, { filesystem })\n if (contractAddress) contractAddress = await this.resolveName(contractAddress, 'ct', { resolveByNode: true })\n const defaultOptions = {\n ...this.Ae.defaults,\n skipArgsConvert: false,\n skipTransformDecoded: false,\n callStatic: false,\n filesystem\n }\n const instance = {\n interface: R.defaultTo(null, R.prop('interface', aci)),\n aci: R.defaultTo(null, R.path(['encoded_aci', 'contract'], aci)),\n externalAci: aci.external_encoded_aci ? aci.external_encoded_aci.map(a => a.contract || a.namespace) : [],\n source,\n compiled: null,\n deployInfo: { address: contractAddress },\n options: R.merge(defaultOptions, opt),\n compilerVersion: this.compilerVersion,\n setOptions (opt) {\n this.options = R.merge(this.options, opt)\n }\n }\n\n // Check for valid contract address and contract code\n if (contractAddress) {\n const contract = await this.getContract(contractAddress).catch(e => null)\n if (!contract || !contract.active) throw new Error(`Contract with address ${contractAddress} not found on-chain or not active`)\n if (!forceCodeCheck) {\n const onChanByteCode = (await this.getContractByteCode(contractAddress)).bytecode\n const isCorrespondingBytecode = await this.validateByteCodeAPI(onChanByteCode, instance.source, instance.options).catch(e => false)\n if (!isCorrespondingBytecode) throw new Error('Contract source do not correspond to the contract bytecode deployed on the chain')\n }\n }\n\n /**\n * Compile contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype () => ContractInstance: Object\n * @return {ContractInstance} Contract ACI object with predefined js methods for contract usage\n */\n instance.compile = compile({ client: this, instance })\n /**\n * Deploy contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object = { skipArgsConvert: false }) => ContractInstance: Object\n * @param {Array} init Contract init function arguments array\n * @param {Object} [options={}] options Options object\n * @param {Boolean} [options.skipArgsConvert=false] Skip Validation and Transforming arguments before prepare call-data\n * @return {ContractInstance} Contract ACI object with predefined js methods for contract usage\n */\n instance.deploy = deploy({ client: this, instance })\n /**\n * Call contract function\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object = { skipArgsConvert: false, skipTransformDecoded: false, callStatic: false }) => CallResult: Object\n * @param {String} fn Function name\n * @param {Array} params Array of function arguments\n * @param {Object} [options={}] Array of function arguments\n * @param {Boolean} [options.skipArgsConvert=false] Skip Validation and Transforming arguments before prepare call-data\n * @param {Boolean} [options.skipTransformDecoded=false] Skip Transform decoded data to JS type\n * @param {Boolean} [options.callStatic=false] Static function call\n * @return {Object} CallResult\n */\n instance.call = call({ client: this, instance })\n /**\n * Decode Events\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (fn: String, events: Array) => DecodedEvents: Array\n * @param {String} fn Function name\n * @param {Array} events Array of encoded events(callRes.result.log)\n * @return {Object} DecodedEvents\n */\n instance.decodeEvents = eventDecode({ instance })\n\n /**\n * Generate proto function based on contract function using Contract ACI schema\n * All function can be called like:\n * 'await contract.methods.testFunction()' -> then sdk will decide to use dry-run or send tx on-chain base on if function stateful or not.\n * Also you can manually do that:\n * `await contract.methods.testFunction.get()` -> use call-static(dry-run)\n * `await contract.methods.testFunction.send()` -> send tx on-chain\n */\n instance.methods = buildContractMethods(instance)()\n return instance\n}\n\nconst eventDecode = ({ instance }) => (fn, events) => {\n return decodeEvents(events, getFunctionACI(instance.aci, fn, { external: instance.externalAci }))\n}\n\nconst call = ({ client, instance }) => async (fn, params = [], options = {}) => {\n const opt = { ...instance.options, ...options }\n const fnACI = getFunctionACI(instance.aci, fn, { external: instance.externalAci })\n const source = opt.source || instance.source\n\n if (!fn) throw new Error('Function name is required')\n if (!instance.deployInfo.address) throw new Error('You need to deploy contract before calling!')\n if (\n BigNumber(opt.amount).gt(0) &&\n (Object.prototype.hasOwnProperty.call(fnACI, 'payable') && !fnACI.payable)\n ) throw new Error(`You try to pay \"${opt.amount}\" to function \"${fn}\" which is not payable. Only payable function can accept tokens`)\n params = !opt.skipArgsConvert ? await prepareArgs(fnACI, params) : params\n const result = opt.callStatic\n ? await client.contractCallStatic(source, instance.deployInfo.address, fn, params, opt)\n : await client.contractCall(source, instance.deployInfo.address, fn, params, opt)\n return {\n ...result,\n ...opt.waitMined ? await decodeCallResult(result, fnACI, opt) : {}\n }\n}\n\nconst deploy = ({ client, instance }) => async (init = [], options = {}) => {\n const opt = { ...instance.options, ...options }\n const fnACI = getFunctionACI(instance.aci, 'init', { external: instance.externalAci })\n const source = opt.source || instance.source\n\n if (!instance.compiled) await instance.compile(opt)\n init = !opt.skipArgsConvert ? await prepareArgs(fnACI, init) : init\n\n if (opt.callStatic) {\n return client.contractCallStatic(source, null, 'init', init, {\n ...opt,\n bytecode: instance.compiled\n })\n } else {\n const { owner, transaction, address, createdAt, result, rawTx } = await client.contractDeploy(instance.compiled, opt.source || instance.source, init, opt)\n instance.deployInfo = { owner, transaction, address, createdAt, result, rawTx }\n return instance.deployInfo\n }\n}\n\nconst compile = ({ client, instance }) => async (options = {}) => {\n const { bytecode } = await client.contractCompile(instance.source, { ...instance.options, ...options })\n instance.compiled = bytecode\n return instance.compiled\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Contract module - routines to interact with the æternity contract\n *\n * High level documentation of the contracts are available at\n * https://github.com/aeternity/protocol/tree/master/contracts and\n *\n * @module @aeternity/aepp-sdk/es/ae/contract\n * @export Contract\n * @example import { Contract } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport * as R from 'ramda'\nimport ContractCompilerAPI from '../contract/compiler'\nimport ContractBase from '../contract'\nimport getContractInstance from '../contract/aci'\nimport NodePool from '../node-pool'\nimport { AMOUNT, DEPOSIT, DRY_RUN_ACCOUNT, GAS, MIN_GAS_PRICE } from '../tx/builder/schema'\nimport { decode, produceNameId } from '../tx/builder/helpers'\nimport TxObject from '../tx/tx-object'\n\nasync function _sendAndProcess (tx, source, name, options) {\n const txData = await this.send(tx, options)\n const result = { hash: txData.hash, tx: TxObject({ tx: txData.rawTx }), txData, rawTx: txData.rawTx }\n if (options.waitMined === false) return result\n const txInfo = await this.getTxInfo(txData.hash)\n await this._handleCallError(source, name, txInfo)\n return { ...result, result: txInfo }\n}\n\n/**\n * Handle contract call error\n * @function\n * @private\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source contract source code\n * @param {String} name name of called method\n * @param {Object} result call result object\n * @throws Error Decoded error\n * @return {Promise<void>}\n */\nasync function _handleCallError (source, name, result) {\n if (result.returnType === 'ok') return\n const error = await this.contractDecodeCallResultAPI(source, name, result.returnValue, result.returnType)\n const message = error[{ revert: 'abort' }[result.returnType] || result.returnType][0]\n throw new Error(`Invocation failed${message ? `: \"${message}\"` : ''}`)\n}\n\n/**\n * Encode call data for contract call\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract source code\n * @param {String} name Name of function to call\n * @param {Array} args Argument's for call\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem={}] Contract external namespaces map\n * @return {Promise<String>}\n */\nasync function contractEncodeCall (source, name, args, options) {\n return this.contractEncodeCallDataAPI(source, name, args, options)\n}\n\n/**\n * Decode contract call result data\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source - source code\n * @param {String } fn - function name\n * @param {String} callValue - result call data\n * @param {String} callResult - result status\n * @param {Object} [options={}] Options\n * @param {Object} [options.filesystem={}] Contract external namespaces map\n * @return {Promise<String>} Result object\n * @example\n * const decodedData = await client.contractDecodeData(SourceCode ,'functionName', 'cb_asdasdasd...', 'ok|revert')lt\n */\nasync function contractDecodeData (source, fn, callValue, callResult, options) {\n return this.contractDecodeCallResultAPI(source, fn, callValue, callResult, options)\n}\n\n/**\n * Static contract call(using dry-run)\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract source code\n * @param {String} address Contract address\n * @param {String} name Name of function to call\n * @param {Array|String} args Argument's or callData for call/deploy transaction\n * @param {Object} [options]\n * @param {Number|String} [options.top] Block height or hash on which you want to call contract\n * @param {String} [options.bytecode] Block hash on which you want to call contract\n * @param {Object} [options.filesystem] Contract external namespaces map\n * @return {Promise<Object>} Result object\n * @example\n * const callResult = await client.contractCallStatic(source, address, fnName, args)\n * {\n * result: TX_DATA,\n * decode: (type) => Decode call result\n * }\n */\nasync function contractCallStatic (source, address, name, args = [], options = {}) {\n const callerId = await this.address(options).catch(() => DRY_RUN_ACCOUNT.pub)\n if (typeof options.top === 'number') {\n options.top = (await this.getKeyBlock(options.top)).hash\n }\n const txOpt = {\n ...this.Ae.defaults,\n ...options,\n callData: Array.isArray(args) ? await this.contractEncodeCall(source, name, args, options) : args,\n nonce: options.top && (await this.getAccount(callerId, { hash: options.top })).nonce + 1\n }\n const tx = name === 'init'\n ? (await this.contractCreateTx({\n ...txOpt,\n code: options.bytecode,\n ownerId: callerId\n })).tx\n : await this.contractCallTx({\n ...txOpt,\n callerId,\n contractId: await this.resolveName(address, 'ct', { resolveByNode: true })\n })\n\n const { callObj, ...dryRunOther } = await this.txDryRun(tx, callerId, options)\n\n await this._handleCallError(source, name, callObj)\n const { returnType, returnValue } = callObj\n return {\n ...dryRunOther,\n tx: TxObject({ tx }),\n result: callObj,\n decode: () => this.contractDecodeData(source, name, returnValue, returnType, options)\n }\n}\n\n/**\n * Call contract function\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract source code\n * @param {String} address Contract address or AENS name\n * @param {String} name Name of function to call\n * @param {Array|String} argsOrCallData Argument's array or callData for call function\n * @param {Object} [options={}] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem={}] Contract external namespaces map* @return {Promise<Object>} Result object\n * @example\n * const callResult = await client.contractCall(source, address, fnName, args = [], options)\n * {\n * hash: TX_HASH,\n * result: TX_DATA,\n * decode: (type) => Decode call result\n * }\n */\nasync function contractCall (source, address, name, argsOrCallData = [], options = {}) {\n const opt = R.merge(this.Ae.defaults, options)\n\n const tx = await this.contractCallTx(R.merge(opt, {\n callerId: await this.address(opt),\n contractId: await this.resolveName(address, 'ct', { resolveByNode: true }),\n callData: Array.isArray(argsOrCallData) ? await this.contractEncodeCall(source, name, argsOrCallData, opt) : argsOrCallData\n }))\n\n const { hash, rawTx, result, txData } = await this._sendAndProcess(tx, source, name, opt)\n return {\n hash,\n rawTx,\n result,\n txData,\n decode: () => result ? this.contractDecodeData(source, name, result.returnValue, result.returnType, opt) : {}\n }\n}\n\n/**\n * Deploy contract to the node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} code Compiled contract\n * @param {String} source Contract source code\n * @param {Array|String} initState Arguments of contract constructor(init) function. Can be array of arguments or callData string\n * @param {Object} [options={}] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem={}] Contract external namespaces map* @return {Promise<Object>} Result object\n * @return {Promise<Object>} Result object\n * @example\n * const deployed = await client.contractDeploy(bytecode, source, init = [], options)\n * {\n * owner: OWNER_PUB_KEY,\n * transaction: TX_HASH,\n * address: CONTRACT_ADDRESS,\n * createdAt: Date,\n * result: DEPLOY_TX_DATA,\n * call: (fnName, args = [], options) => Call contract function,\n * callStatic: (fnName, args = [], options) => Static all contract function\n * }\n */\nasync function contractDeploy (code, source, initState = [], options = {}) {\n const opt = { ...this.Ae.defaults, ...options, deposit: DEPOSIT }\n const callData = Array.isArray(initState) ? await this.contractEncodeCall(source, 'init', initState, opt) : initState\n const ownerId = await this.address(opt)\n\n const { tx, contractId } = await this.contractCreateTx(R.merge(opt, {\n callData,\n code,\n ownerId\n }))\n\n const { hash, rawTx, result, txData } = await this._sendAndProcess(tx, source, 'init', opt)\n return Object.freeze({\n result,\n owner: ownerId,\n transaction: hash,\n rawTx,\n txData,\n address: contractId,\n call: (name, args, options) =>\n this.contractCall(source, contractId, name, args, { ...opt, ...options }),\n callStatic: (name, args, options) =>\n this.contractCallStatic(source, contractId, name, args, { ...opt, ...options }),\n createdAt: new Date()\n })\n}\n\n/**\n * Compile contract source code\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} source Contract sourece code\n * @param {Object} [options={}] Transaction options (fee, ttl, gas, amount, deposit)\n * @param {Object} [options.filesystem={}] Contract external namespaces map* @return {Promise<Object>} Result object\n * @return {Promise<Object>} Result object\n * @example\n * const compiled = await client.contractCompile(SOURCE_CODE)\n * {\n * bytecode: CONTRACT_BYTE_CODE,\n * deploy: (init = [], options = {}) => Deploy Contract,\n * encodeCall: (fnName, args = []) => Prepare callData\n * }\n */\nasync function contractCompile (source, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const bytecode = await this.compileContractAPI(source, options)\n return Object.freeze({\n encodeCall: (name, args) => this.contractEncodeCall(source, name, args, opt),\n deploy: (init, options) => this.contractDeploy(bytecode, source, init, { ...opt, ...options }),\n deployStatic: (init, options) => this.contractCallStatic(source, null, 'init', init, {\n ...opt,\n ...options,\n bytecode\n }),\n bytecode\n })\n}\n\n/**\n * Utility method to create a delegate signature for a contract\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String[]} ids The list of id's to prepend\n * @param {Object} [opt={}] options\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature in hex representation\n */\nasync function delegateSignatureCommon (ids = [], opt = {}) {\n return this.sign(\n Buffer.concat(\n [\n Buffer.from(this.getNetworkId(opt)),\n ...(Object.prototype.hasOwnProperty.call(opt, 'onAccount') ? [decode(await this.address(opt))] : []),\n ...ids.map(e => decode(e))\n ]\n ),\n opt\n ).then(s => Buffer.from(s).toString('hex'))\n}\n\n/**\n * Helper to generate a signature to delegate pre-claim/claim/transfer/revoke of a name to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} [name] The name\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n * @example\n * const client = await Universal({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const name = 'example.chain' // AENS name\n * const onAccount = await client.address() // Sign with a specific account\n * // Preclaim signature\n * const params = { contractId }\n * const preclaimSig = await client.createAensDelegationSignature(params, { onAccount: current })\n * // Claim, transfer and revoke signature\n * const params = { contractId, name }\n * const aensDelegationSig = await contract.createAensDelegationSignature(params, name, { onAccount: current })\n */\nasync function createAensDelegationSignature ({ contractId, name }, opt = {}) {\n return this.delegateSignatureCommon([...name ? [produceNameId(name)] : [], contractId], opt)\n}\n\n/**\n * Helper to generate a signature to delegate register/extend/respond of a Oracle to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} [queryId] Oracle Query Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n * @example\n * const client = await Universal({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const queryId = 'oq_...' // Oracle Query Id\n * const onAccount = await client.address() // Sign with a specific account\n * // Oracle register and extend signature\n * const params = { contractId }\n * const oracleDelegationSig = await contract.createOracleDelegationSignature(params, { onAccount })\n * // Oracle respond signature\n * const params = { contractId, queryId }\n * const respondSig = await contract.createOracleDelegationSignature(params, queryId)\n */\nasync function createOracleDelegationSignature ({ contractId, queryId }, opt = {}) {\n return this.delegateSignatureCommon([...queryId ? [queryId] : [], contractId], opt)\n}\n\n/**\n * Contract Stamp\n *\n * Provide contract implementation\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Contract instance\n * @example\n * import Transaction from '@aeternity/aepp-sdk/es/tx/tx\n * import MemoryAccount from '@aeternity/aepp-sdk/es/account/memory\n * import ChainNode from '@aeternity/aepp-sdk/es/chain/node\n * import ContractCompilerAPI from '@aeternity/aepp-sdk/es/contract/compiler\n * // or using bundle\n * import {\n * Transaction,\n * MemoryAccount,\n * ChainNode,\n * ContractCompilerAPI\n * } from '@aeternity/aepp-sdk\n *\n * const ContractWithAE = await Contract\n * .compose(Transaction, MemoryAccount, ChainNode) // AE implementation\n * .compose(ContractCompilerAPI) // ContractBase implementation\n * const client = await ContractWithAe({ url, internalUrl, compilerUrl, keypair, ... })\n *\n */\nexport const ContractAPI = Ae.compose(ContractBase, {\n methods: {\n getContractInstance,\n contractCompile,\n contractCallStatic,\n contractDeploy,\n contractCall,\n contractEncodeCall,\n contractDecodeData,\n _handleCallError,\n _sendAndProcess,\n // Delegation for contract\n delegateSignatureCommon,\n // AENS\n createAensDelegationSignature,\n // Oracle\n createOracleDelegationSignature\n },\n deepProps: {\n Ae: {\n defaults: {\n deposit: DEPOSIT,\n gasPrice: MIN_GAS_PRICE,\n amount: AMOUNT,\n gas: GAS\n }\n }\n }\n})\n\nexport const Contract = ContractAPI.compose(NodePool)\nexport const ContractWithCompiler = Contract.compose(ContractCompilerAPI)\nexport default ContractWithCompiler\n","import BigNumber from 'bignumber.js'\nimport { MAX_AUTH_FUN_GAS } from '../../tx/builder/schema'\nimport { hash } from '../../utils/crypto'\n\nexport const prepareGaParams = (ins) => async (authData, authFnName) => {\n if (typeof authData !== 'object') throw new Error('AuthData must be an object')\n if (authData.gas && BigNumber(authData.gas).gt(MAX_AUTH_FUN_GAS)) throw new Error(`the maximum gas value for ga authFun is ${MAX_AUTH_FUN_GAS}, got ${authData.gas}`)\n const gas = authData.gas || MAX_AUTH_FUN_GAS\n if (authData.callData) {\n if (authData.callData.split('_')[0] !== 'cb') throw new Error('Auth data must be a string with \"cb\" prefix.')\n return { authCallData: authData.callData, gas }\n } else {\n if (!authData.source || !authData.args) throw new Error('Auth data must contain source code and arguments.')\n return { authCallData: await ins.contractEncodeCall(authData.source, authFnName, authData.args), gas }\n }\n}\n\nexport const getContractAuthFan = (ins) => async (source, fnName) => {\n const { bytecode } = await ins.contractCompile(source)\n\n return { bytecode, authFun: hash(fnName) }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Generalize Account module - routines to use generalize account\n *\n * @module @aeternity/aepp-sdk/es/contract/ga\n * @export GeneralizeAccount\n * @example import { GeneralizeAccount } from '@aeternity/aepp-sdk'\n */\nimport * as R from 'ramda'\n\nimport { ContractAPI } from '../../ae/contract'\nimport { TX_TYPE } from '../../tx/builder/schema'\nimport { buildTx, unpackTx } from '../../tx/builder'\nimport { getContractAuthFan, prepareGaParams } from './helpers'\n\n/**\n * GeneralizeAccount Stamp\n *\n * Provide Generalize Account implementation\n * {@link module:@aeternity/aepp-sdk/es/contract/ga} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} GeneralizeAccount instance\n * @example\n * const authContract = ``\n * await client.createGeneralizeAccount(authFnName, authContract, [...authFnArguments]\n * // Make spend using GA\n * const callData = 'cb_...' // encoded call data for auth contract\n * await client.spend(10000, receiverPub, { authData: { callData } })\n * // or\n * await client.spend(10000, receiverPub, { authData: { source: authContract, args: [...authContractArgs] } }) // sdk will prepare callData itself\n */\nexport const GeneralizeAccount = ContractAPI.compose({\n methods: {\n createGeneralizeAccount,\n createMetaTx,\n isGA\n }\n})\nexport default GeneralizeAccount\n\n/**\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * Check if account is GA account\n * @param {String} address - Account address\n * @return {Boolean}\n */\nasync function isGA (address) {\n const { contractId } = await this.getAccount(address)\n return !!contractId\n}\n\n/**\n * Convert current account to GA account\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} authFnName - Authorization function name\n * @param {String} source - Auth contract source code\n * @param {Array} [args] - init arguments\n * @param {Object} [options] - Options\n * @return {Promise<Readonly<{result: *, owner: *, createdAt: Date, address, rawTx: *, transaction: *}>>}\n */\nasync function createGeneralizeAccount (authFnName, source, args = [], options = {}) {\n const opt = R.merge(this.Ae.defaults, options)\n const ownerId = await this.address(opt)\n\n if (await this.isGA(ownerId)) throw new Error(`Account ${ownerId} is already GA`)\n\n const { authFun, bytecode } = await getContractAuthFan(this)(source, authFnName)\n const callData = await this.contractEncodeCall(source, 'init', args)\n\n const { tx, contractId } = await this.gaAttachTx(R.merge(opt, { ownerId, code: bytecode, callData, authFun }))\n\n const { hash, rawTx } = await this.send(tx, opt)\n\n return Object.freeze({\n owner: ownerId,\n transaction: hash,\n rawTx,\n gaContractId: contractId\n })\n}\n\nconst wrapInEmptySignedTx = (tx) => buildTx({ encodedTx: tx, signatures: [] }, TX_TYPE.signed)\n\n/**\n * Create a metaTx transaction\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} rawTransaction Inner transaction\n * @param {Object} authData Object with gaMeta params\n * @param {String} authFnName - Authorization function name\n * @param {Object} options - Options\n * @return {String}\n */\nasync function createMetaTx (rawTransaction, authData, authFnName, options = {}) {\n if (!authData) throw new Error('authData is required')\n // Check if authData is callData or if it's an object prepare a callData from source and args\n const { authCallData, gas } = await prepareGaParams(this)(authData, authFnName)\n const opt = R.merge(this.Ae.defaults, options)\n const { abiVersion } = await this.getVmVersion(TX_TYPE.contractCall)\n const wrappedTx = wrapInEmptySignedTx(unpackTx(rawTransaction))\n const params = {\n ...opt,\n tx: {\n ...wrappedTx,\n tx: wrappedTx.txObject\n },\n gaId: await this.address(opt),\n abiVersion: abiVersion,\n authData: authCallData,\n gas,\n vsn: 2\n }\n const { fee } = await this.prepareTxParams(TX_TYPE.gaMeta, params)\n const { rlpEncoded: metaTxRlp } = buildTx(\n { ...params, fee: `${fee}` },\n TX_TYPE.gaMeta,\n { vsn: 2 }\n )\n return wrapInEmptySignedTx(metaTxRlp).tx\n}\n","import * as R from 'ramda'\n\nconst asEnum = (array) => R.zipObj(array, array)\n\nexport const VERSION = 1\n\nexport const MESSAGE_DIRECTION = asEnum(['to_waellet', 'to_aepp'])\n\nexport const WALLET_TYPE = asEnum([\n 'window',\n 'extension'\n])\n\nexport const NOTIFICATIONS = asEnum([\n 'readyToConnect',\n 'closeConnection',\n 'updateNetwork',\n 'updateAddress'\n])\n\nexport const REQUESTS = asEnum([\n 'connect',\n 'subscribeAddress',\n 'sign',\n 'address',\n 'signMessage'\n])\n\nexport const SUBSCRIPTION_VALUES = asEnum([\n 'current',\n 'connected'\n])\n\nexport const SUBSCRIPTION_TYPES = asEnum([\n 'subscribe',\n 'unsubscribe'\n])\n\nexport const METHODS = {\n wallet: {\n [NOTIFICATIONS.readyToConnect]: 'connection.announcePresence',\n [NOTIFICATIONS.updateAddress]: 'address.update'\n },\n aepp: {\n [REQUESTS.address]: 'address.get',\n [REQUESTS.connect]: 'connection.open',\n [REQUESTS.sign]: 'transaction.sign',\n [REQUESTS.signMessage]: 'message.sign',\n [REQUESTS.subscribeAddress]: 'address.subscribe'\n },\n [NOTIFICATIONS.updateNetwork]: 'networkId.update',\n [NOTIFICATIONS.closeConnection]: 'connection.close'\n}\n\nexport const RPC_STATUS = {\n CONNECTED: 'CONNECTED',\n DISCONNECTED: 'DISCONNECTED',\n CONNECTION_REJECTED: 'CONNECTION_REJECTED',\n WAITING_FOR_CONNECTION_APPROVE: 'WAITING_FOR_CONNECTION_APPROVE',\n WAITING_FOR_CONNECTION_REQUEST: 'WAITING_FOR_CONNECTION_REQUEST',\n WAITING_FOR_SUBSCRIPTION: 'WAITING_FOR_SUBSCRIPTION'\n}\n\nexport const ERRORS = {\n broadcastFailed: (error = {}) => ({\n code: 3,\n data: error,\n message: 'Broadcast failed'\n }),\n invalidTransaction: (error = {}) => ({\n code: 2,\n data: error,\n message: 'Invalid transaction'\n }),\n rejectedByUser: (error = {}) => ({\n code: 4,\n data: error,\n message: 'Operation rejected by user'\n }),\n connectionDeny: (error = {}) => ({\n code: 9,\n data: error,\n message: 'Wallet deny your connection request'\n }),\n permissionDeny: (error = {}) => ({\n code: 11,\n data: error,\n message: `You are not subscribed for account ${error.account}`\n }),\n internalError: (error = {}) => ({\n code: 12,\n data: error,\n message: error.msg\n }),\n notAuthorize: (error = {}) => ({\n code: 10,\n data: error,\n message: 'You are not connected to the wallet'\n }),\n unsupportedProtocol: (error = {}) => ({\n code: 5,\n data: error,\n message: 'Unsupported Protocol Version'\n }),\n unsupportedNetwork: (error = {}) => ({\n code: 8,\n data: error,\n message: 'Unsupported Network'\n })\n}\n","/**\n * Browser helper functions\n */\nimport { isAccountBase } from '../../account/base'\n\nexport const getBrowserAPI = (force = false) => {\n const { chrome, browser } = window\n // Chrome, Opera support\n if (typeof chrome !== 'undefined' && chrome === Object(chrome)) return chrome\n // Firefox support\n if (typeof browser !== 'undefined' && browser === Object(browser)) return browser\n if (!force) throw new Error('Browser is not detected')\n return {}\n}\n\nexport const isInIframe = () => window !== window.parent\n\n/**\n * RPC helper functions\n */\nexport const sendMessage = (connection) => {\n let messageId = 0\n\n return ({ id, method, params, result, error }, isNotificationOrResponse = false) => {\n // Increment id for each request\n isNotificationOrResponse || (messageId += 1)\n id = isNotificationOrResponse ? (id || null) : messageId\n const msgData = params\n ? { params }\n : result\n ? { result }\n : { error }\n connection.sendMessage({\n jsonrpc: '2.0',\n ...id ? { id } : {},\n method,\n ...msgData\n })\n return id\n }\n}\n\nexport const getHandler = (schema, msg, { debug = false } = {}) => {\n const handler = schema[msg.method]\n if (!handler || typeof handler !== 'function') {\n debug && console.log(`Unknown message method ${msg.method}`)\n return () => async () => true\n }\n return handler\n}\n\nexport const message = (method, params = {}) => ({ method, params })\n\nexport const responseMessage = (id, method, { error, result } = {}) => ({ id, method, ...(error ? { error } : { result }) })\n\nexport const sendResponseMessage = (client) => (id, method, data) => client.sendMessage(responseMessage(id, method, data), true)\n\nexport const voidFn = () => undefined\n\nexport const isValidAccounts = (accounts) => (['', 'connected', 'current'].filter(k => typeof (k ? accounts[k] : accounts) === 'object')).length === 3\n\nexport const resolveOnAccount = (addresses, onAccount, opt = {}) => {\n if (!addresses.find(a => a === onAccount)) {\n if (typeof opt.onAccount !== 'object' || !isAccountBase(opt.onAccount)) throw new Error('Provided onAccount should be an AccountBase')\n onAccount = opt.onAccount\n }\n return onAccount\n}\n","/**\n * RpcClient module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @export { RpcClient, RpcClients }\n * @example import RpcClient from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client'\n */\nimport stampit from '@stamp/it'\n\nimport { METHODS, RPC_STATUS, SUBSCRIPTION_TYPES } from '../schema'\nimport { sendMessage, message, isValidAccounts } from '../helpers'\n\n/**\n * Contain functionality for using RPC conection\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String} param.name Client name\n * @param {Object} param.connection Connection object\n * @param {Function[]} param.handlers Arrays with two function for handling messages ([ onMessage: Function, onDisconnect: Function])\n * @return {Object}\n */\nexport default stampit({\n init ({ id, name, networkId, icons, connection, handlers: [onMessage, onDisconnect] }) {\n this.id = id\n this.connection = connection\n this.info = { name, networkId, icons }\n // {\n // [msg.id]: { resolve, reject }\n // }\n this.callbacks = {}\n // ['connected', 'current']\n this.addressSubscription = []\n // {\n // connected: { [pub]: {...meta} },\n // current: { [pub]: {...meta} }\n // }\n this.accounts = {}\n\n this.sendMessage = sendMessage(this.connection)\n\n const handleMessage = (msg, origin) => {\n if (!msg || !msg.jsonrpc || msg.jsonrpc !== '2.0' || !msg.method) {\n throw new Error(`Received invalid message: ${msg}`)\n }\n onMessage(msg, origin)\n }\n\n const disconnect = (aepp, connection) => {\n this.disconnect(true)\n typeof onDisconnect === 'function' && onDisconnect(connection, this)\n }\n\n connection.connect(handleMessage, disconnect)\n },\n propertyDescriptors: {\n currentAccount: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? Object.keys(this.accounts.current)[0]\n : undefined\n }\n },\n addresses: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? [...Object.keys(this.accounts.current), ...Object.keys(this.accounts.connected)]\n : []\n }\n },\n origin: {\n enumerable: true,\n configurable: false,\n get () {\n return this.connection\n }\n }\n },\n methods: {\n /**\n * Update info\n * @function updateInfo\n * @instance\n * @rtype (info: Object) => void\n * @param {Object} info Info to update (will be merged with current info object)\n * @return {void}\n */\n updateInfo (info) {\n Object.assign(this.info, info)\n },\n isHasAccounts () {\n return typeof this.accounts === 'object' &&\n typeof this.accounts.connected === 'object' &&\n typeof this.accounts.current === 'object'\n },\n isSubscribed () {\n return this.addressSubscription.length && this.isHasAccounts()\n },\n /**\n * Check if aepp has access to account\n * @function hasAccessToAccount\n * @instance\n * @rtype (address: String) => Boolean\n * @param {String} address Account address\n * @return {Boolean} is connected\n */\n hasAccessToAccount (address) {\n return !!address && this.addresses.find(a => a === address)\n },\n /**\n * Check if is connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} is connected\n */\n isConnected () {\n return this.connection.isConnected() && this.info.status === RPC_STATUS.CONNECTED\n },\n /**\n * Get selected account\n * @function getCurrentAccount\n * @instance\n * @rtype ({ onAccount } = {}) => String\n * @param {Object} options Options\n * @return {String}\n */\n getCurrentAccount ({ onAccount } = {}) {\n return onAccount || Object.keys(this.accounts.current)[0]\n },\n /**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\n disconnect (forceConnectionClose = false) {\n this.info.status = RPC_STATUS.DISCONNECTED\n this.addressSubscription = []\n this.accounts = {}\n forceConnectionClose || this.connection.disconnect()\n },\n /**\n * Update accounts and sent `update.address` notification to AEPP\n * @param {{ current: Object, connected: Object }} accounts Object with current and connected accounts\n * @param {{ forceNotification: Boolean }} [options={ forceNotification: false }] Don not sent update notification to AEPP\n */\n setAccounts (accounts, { forceNotification = false } = {}) {\n if (!isValidAccounts(accounts)) {\n throw new Error('Invalid accounts object. Should be object like: `{ connected: {}, selected: {} }`')\n }\n this.accounts = accounts\n if (!forceNotification) {\n // Sent notification about account updates\n this.sendMessage(message(METHODS.wallet.updateAddress, this.accounts), true)\n }\n },\n /**\n * Update subscription\n * @function updateSubscription\n * @instance\n * @rtype (type: String, value: String) => void\n * @param {String} type Subscription type\n * @param {String} value Subscription value\n * @return {String[]}\n */\n updateSubscription (type, value) {\n if (type === SUBSCRIPTION_TYPES.subscribe && !this.addressSubscription.includes(value)) {\n this.addressSubscription.push(value)\n }\n if (type === SUBSCRIPTION_TYPES.unsubscribe && this.addressSubscription.includes(value)) {\n this.addressSubscription = this.addressSubscription.filter(s => s !== value)\n }\n return this.addressSubscription\n },\n /**\n * Make a request\n * @function request\n * @instance\n * @rtype (name: String, params: Object) => Promise\n * @param {String} name Method name\n * @param {Object} params Method params\n * @return {Promise} Promise which will be resolved after receiving response message\n */\n request (name, params) {\n const msgId = this.sendMessage(message(name, params))\n if (Object.prototype.hasOwnProperty.call(this.callbacks, msgId)) throw new Error('Callback Already exist')\n return new Promise((resolve, reject) => {\n this.callbacks[msgId] = { resolve, reject }\n })\n },\n /**\n * Process response message\n * @function processResponse\n * @instance\n * @rtype (msg: Object, transformResult: Function) => void\n * @param {Object} msg Message object\n * @param {Function=} transformResult Optional parser function for message\n * @return {void}\n */\n processResponse ({ id, error, result }, transformResult) {\n if (!this.callbacks[id]) throw new Error(`Can't find callback for this messageId ${id}`)\n if (result) {\n this.callbacks[id].resolve(...typeof transformResult === 'function'\n ? transformResult({ id, result })\n : [result])\n } else {\n this.callbacks[id].reject(error)\n }\n delete this.callbacks[id]\n }\n }\n})\n","/**\n * RPC handler for AEPP side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @export AeppRpc\n * @example import ContentScriptBridge from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc'\n */\nimport * as R from 'ramda'\nimport { v4 as uuid } from 'uuid'\n\nimport Ae from '../../../ae'\nimport RpcClient from './rpc-client'\nimport { getHandler, message, voidFn } from '../helpers'\nimport { METHODS, RPC_STATUS, VERSION } from '../schema'\n\nconst NOTIFICATIONS = {\n [METHODS.wallet.updateAddress]: (instance) =>\n ({ params }) => {\n instance.rpcClient.accounts = params\n instance.onAddressChange(params)\n },\n [METHODS.updateNetwork]: (instance) =>\n (msg) => {\n instance.rpcClient.info.networkId = msg.params.networkId\n instance.onNetworkChange(msg.params)\n },\n [METHODS.closeConnection]: (instance) =>\n (msg) => {\n instance.disconnectWallet()\n instance.onDisconnect(msg.params)\n }\n}\n\nconst RESPONSES = {\n [METHODS.aepp.address]: (instance) =>\n (msg) => instance.rpcClient.processResponse(msg),\n [METHODS.aepp.connect]: (instance) =>\n (msg) => {\n if (msg.result) instance.rpcClient.info.status = RPC_STATUS.CONNECTED\n instance.rpcClient.processResponse(msg)\n },\n [METHODS.aepp.subscribeAddress]: (instance) =>\n (msg) => {\n if (msg.result) {\n msg.result.address && (instance.rpcClient.accounts = msg.result.address)\n msg.result.subscription && (instance.rpcClient.addressSubscription = msg.result.subscription)\n }\n\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result])\n },\n [METHODS.aepp.sign]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result.signedTransaction || result.transactionHash])\n },\n [METHODS.aepp.signMessage]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result.signature])\n }\n}\n\nconst REQUESTS = {}\n\nconst handleMessage = (instance) => async (msg) => {\n if (!msg.id) {\n return getHandler(NOTIFICATIONS, msg, { debug: instance.debug })(instance)(msg)\n } else if (Object.prototype.hasOwnProperty.call(instance.rpcClient.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance)(msg)\n } else {\n return getHandler(REQUESTS, msg, { debug: instance.debug })(instance)(msg)\n }\n}\n\n/**\n * Contain functionality for wallet interaction and connect it to sdk\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Aepp name\n * @param {Function} onAddressChange Call-back function for update address event\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @param {Function} onNetworkChange Call-back function for update network event\n * @param {Object} connection Wallet connection object\n * @return {Object}\n */\nexport default Ae.compose({\n async init ({ name, onAddressChange = voidFn, onDisconnect = voidFn, onNetworkChange = voidFn, connection, forceValidation = false, debug = false }) {\n const eventsHandlers = ['onDisconnect', 'onAddressChange', 'onNetworkChange']\n this.connection = connection\n this.name = name\n this.debug = debug\n\n if (connection) {\n // Init RPCClient\n await this.connectToWallet(connection)\n }\n // Event callbacks\n this.onDisconnect = onDisconnect\n this.onAddressChange = onAddressChange\n this.onNetworkChange = onNetworkChange\n // validation\n eventsHandlers.forEach(event => {\n if (!forceValidation && typeof this[event] !== 'function') throw new Error(`Call-back for ${event} must be an function!`)\n })\n },\n deepProps: { Ae: { defaults: { walletBroadcast: true } } },\n methods: {\n sign () {\n },\n addresses () {\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n return [this.rpcClient.currentAccount, ...Object.keys(this.rpcClient.accounts.connected)]\n },\n /**\n * Connect to wallet\n * @function connectToWallet\n * @instance\n * @rtype (connection: Object) => void\n * @param {Object} connection Wallet connection object\n * @return {void}\n */\n async connectToWallet (connection) {\n if (this.rpcClient && this.rpcClient.isConnected()) throw new Error('You are already connected to wallet ' + this.rpcClient)\n this.rpcClient = RpcClient({\n connection,\n networkId: this.getNetworkId({ force: true }),\n ...connection.connectionInfo,\n id: uuid(),\n handlers: [handleMessage(this), this.onDisconnect]\n })\n return this.sendConnectRequest()\n },\n /**\n * Disconnect from wallet\n * @function disconnectWallet\n * @instance\n * @rtype (force: Boolean = false) => void\n * @param {Boolean} sendDisconnect=false Force sending close connection message\n * @return {void}\n */\n async disconnectWallet (sendDisconnect = true) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n sendDisconnect && this.rpcClient.sendMessage(message(METHODS.closeConnection, { reason: 'bye' }), true)\n this.rpcClient.disconnect()\n this.rpcClient = null\n },\n async address ({ onAccount } = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n const current = this.rpcClient.currentAccount\n if (!current) throw new Error('You are not subscribed for an account.')\n if (onAccount && !this.rpcClient.hasAccessToAccount(onAccount)) throw new Error(`You do not have access to account ${onAccount}`)\n return onAccount || current\n },\n /**\n * Ask address from wallet\n * @function askAddresses\n * @instance\n * @rtype () => Promise\n * @return {Promise} Address from wallet\n */\n async askAddresses () {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n return this.rpcClient.request(METHODS.aepp.address)\n },\n /**\n * Subscribe for addresses from wallet\n * @function subscribeAddress\n * @instance\n * @rtype (type: String, value: String) => Promise\n * @param {String} type Type of subscription can be one of ['current'(just for selected account updates), 'connected(all accounts)']\n * @param {String} value Subscription action('subscribe'|'unsubscribe')\n * @return {Promise} Address from wallet\n */\n async subscribeAddress (type, value) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n return this.rpcClient.request(METHODS.aepp.subscribeAddress, { type, value })\n },\n /**\n * Overwriting of `signTransaction` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signTransaction\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signTransaction (tx, opt = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) throw new Error(`You do not have access to account ${opt.onAccount}`)\n return this.rpcClient.request(METHODS.aepp.sign, { ...opt, tx, returnSigned: true, networkId: this.getNetworkId() })\n },\n /**\n * Overwriting of `signMessage` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signMessage\n * @instance\n * @rtype (msg: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signMessage (msg, opt = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) throw new Error(`You do not have access to account ${opt.onAccount}`)\n return this.rpcClient.request(METHODS.aepp.signMessage, { ...opt, message: msg })\n },\n /**\n * Send connection request to wallet\n * @function sendConnectRequest\n * @instance\n * @rtype () => Promise\n * @return {Promise} Connection response\n */\n async sendConnectRequest () {\n return this.rpcClient.request(\n METHODS.aepp.connect, {\n name: this.name,\n version: VERSION,\n networkId: this.getNetworkId({ force: true })\n }\n )\n },\n /**\n * Overwriting of `send` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * This method will sign, broadcast and wait until transaction will be accepted using rpc communication with wallet\n * @function send\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @param {String} tx\n * @param {Object} [options={}]\n * @param {Object} [options.walletBroadcast=true]\n * @return {Promise<Object>} Transaction broadcast result\n */\n async send (tx, options = {}) {\n if (!this.rpcClient || !this.rpcClient.isConnected()) throw new Error('You are not connected to Wallet')\n if (!this.rpcClient.currentAccount) throw new Error('You are not subscribed for an account.')\n if (options.onAccount && !this.rpcClient.hasAccessToAccount(options.onAccount)) throw new Error(`You do not have access to account ${options.onAccount}`)\n const opt = R.merge(this.Ae.defaults, options)\n if (!opt.walletBroadcast) {\n const signed = await this.signTransaction(tx, { onAccount: opt.onAccount })\n return this.sendTransaction(signed, opt)\n }\n return this.rpcClient.request(METHODS.aepp.sign, { onAccount: opt.onAccount, tx, returnSigned: false, networkId: this.getNetworkId() })\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Oracle module - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n * @module @aeternity/aepp-sdk/es/ae/oracle\n * @export Oracle\n * @example import { Oracle } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport * as R from 'ramda'\nimport { decodeBase64Check } from '../utils/crypto'\nimport { pause } from '../utils/other'\nimport { oracleQueryId, decode } from '../tx/builder/helpers'\nimport { unpackTx } from '../tx/builder'\nimport { ORACLE_TTL, QUERY_FEE, QUERY_TTL, RESPONSE_TTL } from '../tx/builder/schema'\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @return {Promise<Object>} Oracle object\n */\nasync function getOracleObject (oracleId) {\n const oracle = await this.api.getOracleByPubkey(oracleId)\n const { oracleQueries: queries } = await this.api.getOracleQueriesByPubkey(oracleId)\n return {\n ...oracle,\n queries,\n pollQueries: this.pollForQueries.bind(this, oracleId),\n postQuery: this.postQueryToOracle.bind(this, oracleId),\n respondToQuery: this.respondToQuery.bind(this, oracleId),\n extendOracle: this.extendOracleTtl.bind(this, oracleId),\n getQuery: this.getQueryObject.bind(this, oracleId)\n }\n}\n\n/**\n * Poll for oracle queries\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @param {String} oracleId Oracle public key\n * @param {Function} onQuery OnQuery callback\n * @param {Object} [options] Options object\n * @param {Number} [options.interval] Poll interval(default: 5000)\n * @return {Function} stopPolling - Stop polling function\n */\nfunction pollForQueries (oracleId, onQuery, { interval = 5000 } = {}) {\n const knownQueryIds = new Set()\n const checkNewQueries = async () => {\n const queries = ((await this.api.getOracleQueriesByPubkey(oracleId)).oracleQueries || [])\n .filter(({ id }) => !knownQueryIds.has(id))\n queries.forEach(({ id }) => knownQueryIds.add(id))\n if (queries.length) onQuery(queries)\n }\n\n checkNewQueries()\n const intervalId = setInterval(checkNewQueries, interval)\n return () => clearInterval(intervalId)\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle Query id\n * @return {Promise<Object>} OracleQuery object\n */\nasync function getQueryObject (oracleId, queryId) {\n const q = await this.api.getOracleQueryByPubkeyAndQueryId(oracleId, queryId)\n return {\n ...q,\n decodedQuery: decodeBase64Check(q.query.slice(3)).toString(),\n decodedResponse: decodeBase64Check(q.response.slice(3)).toString(),\n respond: this.respondToQuery.bind(this, oracleId, queryId),\n pollForResponse: this.pollForQueryResponse.bind(this, oracleId, queryId),\n decode: (data) => decodeBase64Check(data.slice(3))\n }\n}\n\n/**\n * Poll for oracle query response\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle Query id\n * @param {Object} [options] Options object\n * @param {Object} [options.attempts] Poll attempt's(default: 20)\n * @param {Object} [options.interval] Poll interval(default: 5000)\n * @return {Promise<Object>} OracleQuery object\n */\nexport async function pollForQueryResponse (oracleId, queryId, { attempts = 20, interval = 5000 } = {}) {\n for (let i = 0; i < attempts; i++) {\n if (i) await pause(interval)\n const { response } = await this.api.getOracleQueryByPubkeyAndQueryId(oracleId, queryId)\n const responseBuffer = decode(response, 'or')\n if (responseBuffer.length) {\n return { response, decode: () => responseBuffer } // TODO: Return just responseBuffer\n }\n }\n throw new Error(`Giving up after ${(attempts - 1) * interval}ms`)\n}\n\n/**\n * Register oracle\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} queryFormat Format of query\n * @param {String} responseFormat Format of query response\n * @param {Object} [options={}] Options\n * @param {String|Number} [options.queryFee] queryFee Oracle query Fee\n * @param {Object} [options.oracleTtl] oracleTtl OracleTtl object {type: 'delta|block', value: 'number'}\n * @param {Number} [options.abiVersion] abiVersion Always 0 (do not use virtual machine)\n * @param {Number|String} [options.fee] fee Transaction fee\n * @param {Number|String} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function registerOracle (queryFormat, responseFormat, options = {}) {\n const opt = R.merge(this.Ae.defaults, options) // Preset VmVersion for oracle\n const accountId = await this.address(opt)\n\n const oracleRegisterTx = await this.oracleRegisterTx(R.merge(opt, {\n accountId,\n queryFormat,\n responseFormat\n }))\n return {\n ...await this.send(oracleRegisterTx, opt),\n ...await this.getOracleObject(`ok_${accountId.slice(3)}`)\n }\n}\n\n/**\n * Post query to oracle\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} query Oracle query object\n * @param {Object} [options={}]\n * @param {String|Number} [options.queryTtl] queryTtl Oracle query time to leave\n * @param {String|Number} [options.responseTtl] queryFee Oracle query response time to leave\n * @param {String|Number} [options.queryFee] queryFee Oracle query fee\n * @param {Number} [options.fee] fee Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Query object\n */\nasync function postQueryToOracle (oracleId, query, options = {}) {\n const opt = R.merge(this.Ae.defaults, options)\n const senderId = await this.address(opt)\n\n const oracleRegisterTx = await this.oraclePostQueryTx(R.merge(opt, {\n oracleId,\n senderId,\n query\n }))\n const queryId = oracleQueryId(senderId, unpackTx(oracleRegisterTx).tx.nonce, oracleId)\n return {\n ...await this.send(oracleRegisterTx, opt),\n ...await this.getQueryObject(oracleId, queryId)\n }\n}\n\n/**\n * Extend oracle ttl\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} oracleTtl Oracle time to leave for extend\n * @param {Object} [options={}]\n * @param {Number} [options.fee] fee Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function extendOracleTtl (oracleId, oracleTtl, options = {}) {\n const opt = R.merge(this.Ae.defaults, options)\n const callerId = await this.address(opt)\n\n const oracleExtendTx = await this.oracleExtendTx(R.merge(opt, {\n oracleId,\n callerId,\n oracleTtl\n }))\n return {\n ...await this.send(oracleExtendTx, opt),\n ...await this.getOracleObject(oracleId)\n }\n}\n\n/**\n * Extend oracle ttl\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle query id\n * @param {String} response Oracle query response\n * @param {Object} [options={}]\n * @param {Number} [options.responseTtl] responseTtl Query response time to leave\n * @param {Number} [options.fee] Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function respondToQuery (oracleId, queryId, response, options = {}) {\n const opt = R.merge(this.Ae.defaults, options)\n const callerId = await this.address(opt)\n\n const oracleRespondTx = await this.oracleRespondTx(R.merge(opt, {\n oracleId,\n queryId,\n callerId,\n response\n }))\n return {\n ...await this.send(oracleRespondTx, opt),\n ...await this.getOracleObject(oracleId)\n }\n}\n\n/**\n * Oracle Stamp\n *\n * Oracle provides oracle-system related methods atop\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Oracle instance\n */\nconst Oracle = Ae.compose({\n methods: {\n registerOracle,\n respondToQuery,\n extendOracleTtl,\n postQueryToOracle,\n pollForQueryResponse,\n pollForQueries,\n getOracleObject,\n getQueryObject\n },\n deepProps: {\n Ae: {\n defaults: {\n queryFee: QUERY_FEE,\n oracleTtl: ORACLE_TTL,\n queryTtl: QUERY_TTL,\n responseTtl: RESPONSE_TTL\n }\n }\n }\n})\n\nexport default Oracle\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aepp module\n * @module @aeternity/aepp-sdk/es/ae/aepp\n * @export Aepp\n * @example import { RpcAepp } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Aens from './aens'\nimport { ContractWithCompiler as Contract } from './contract'\nimport AeppRpc from '../utils/aepp-wallet-communication/rpc/aepp-rpc'\nimport Chain from '../chain/node'\nimport Tx from '../tx/tx'\nimport Oracle from './oracle'\n\n/**\n * Aepp Stamp\n *\n * Aepp provides base functionality.\n * Expected to use this stamp with a Wallet.\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aepp\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Aepp instance\n */\nexport default Ae.compose(Tx, Oracle, Contract, Aens, Chain, AeppRpc)\n","/**\n * RPC handler for WAELLET side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @export WalletRpc\n * @example import WalletRpc from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc'\n */\nimport { v4 as uuid } from 'uuid'\nimport Ae from '../../../ae'\nimport verifyTransaction from '../../../tx/validator'\nimport AccountMultiple from '../../../account/multiple'\nimport TxObject from '../../../tx/tx-object'\nimport RpcClient from './rpc-client'\nimport { getBrowserAPI, getHandler, isValidAccounts, message, resolveOnAccount, sendResponseMessage } from '../helpers'\nimport { ERRORS, METHODS, RPC_STATUS, VERSION, WALLET_TYPE } from '../schema'\n\nconst NOTIFICATIONS = {\n [METHODS.closeConnection]: (instance, { client }) =>\n async (msg) => {\n client.disconnect(true)\n instance.onDisconnect(msg.params, client)\n }\n}\n\nconst RESPONSES = {}\n\nconst REQUESTS = {\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.aepp.connect] (callInstance, instance, client, { name, networkId, version, icons }) {\n // Check if protocol and network is compatible with wallet\n if (version !== VERSION) return { error: ERRORS.unsupportedProtocol() }\n\n // Store new AEPP and wait for connection approve\n client.updateInfo({\n status: RPC_STATUS.WAITING_FOR_CONNECTION_APPROVE,\n name,\n networkId,\n icons,\n version\n })\n\n // Call onConnection callBack to notice Wallet about new AEPP\n return callInstance(\n 'onConnection',\n { name, networkId, version },\n () => {\n client.updateInfo({ status: RPC_STATUS.CONNECTED })\n return { result: instance.getWalletInfo() }\n },\n (error) => {\n client.updateInfo({ status: RPC_STATUS.CONNECTION_REJECTED })\n return { error: ERRORS.connectionDeny(error) }\n }\n )\n },\n [METHODS.aepp.subscribeAddress] (callInstance, instance, client, { type, value }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onSubscription',\n { type, value },\n async ({ accounts } = {}) => {\n try {\n const clientAccounts = accounts || instance.getAccounts()\n if (!isValidAccounts(clientAccounts)) throw new Error('Invalid provided accounts object')\n const subscription = client.updateSubscription(type, value)\n client.setAccounts(clientAccounts, { forceNotification: true })\n return {\n result: {\n subscription,\n address: clientAccounts\n }\n }\n } catch (e) {\n console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.address] (callInstance, instance, client) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n if (!client.isSubscribed()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onAskAccounts',\n {},\n ({ accounts } = {}) => ({ result: accounts || [...Object.keys(client.accounts.current), ...Object.keys(client.accounts.connected)] }),\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.sign] (callInstance, instance, client, { tx, onAccount, networkId, returnSigned = false }) {\n const address = onAccount || client.currentAccount\n // Update client with new networkId\n networkId && client.updateInfo({ networkId })\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n // Account permission check\n if (!client.hasAccessToAccount(address)) return { error: ERRORS.permissionDeny({ account: address }) }\n // NetworkId check\n if (!networkId || networkId !== instance.getNetworkId()) return { error: ERRORS.unsupportedNetwork() }\n\n return callInstance(\n 'onSign',\n { tx, returnSigned, onAccount: address, txObject: TxObject.fromString(tx) },\n async (rawTx, opt = {}) => {\n let onAcc\n try {\n onAcc = resolveOnAccount(instance.addresses(), address, opt)\n } catch (e) {\n console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n try {\n return {\n result: returnSigned\n ? { signedTransaction: await instance.signTransaction(rawTx || tx, { onAccount: onAcc }) }\n : { transactionHash: await instance.send(rawTx || tx, { onAccount: onAcc, verify: false }) }\n }\n } catch (e) {\n if (!returnSigned) {\n // Validate transaction\n const validation = await verifyTransaction(rawTx || tx, instance.selectedNode.instance)\n if (validation.length) return { error: ERRORS.invalidTransaction(validation) }\n // Send broadcast failed error to aepp\n return { error: ERRORS.broadcastFailed(e.message) }\n }\n throw e\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.aepp.signMessage] (callInstance, instance, client, { message, onAccount }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n const address = onAccount || client.currentAccount\n if (!client.hasAccessToAccount(address)) return { error: ERRORS.permissionDeny({ account: address }) }\n\n return callInstance(\n 'onMessageSign',\n { message, onAccount: address },\n async (opt = {}) => {\n try {\n const onAcc = resolveOnAccount(instance.addresses(), address, opt)\n return {\n result: {\n signature: await instance.signMessage(message, {\n onAccount: onAcc,\n returnHex: true\n })\n }\n }\n } catch (e) {\n console.error(e)\n return { error: ERRORS.internalError({ msg: e.message }) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n }\n}\n\nconst handleMessage = (instance, id) => async (msg, origin) => {\n const client = instance.rpcClients[id]\n if (!msg.id) {\n return getHandler(NOTIFICATIONS, msg, { debug: instance.debug })(instance, { client })(msg, origin)\n }\n if (Object.prototype.hasOwnProperty.call(client.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance, { client })(msg, origin)\n } else {\n const { id, method } = msg\n const callInstance = (methodName, params, accept, deny) => () => new Promise(resolve => {\n instance[methodName](\n client,\n {\n id,\n method,\n params,\n accept: (...args) => resolve(accept(...args)),\n deny: (...args) => resolve(deny(...args))\n },\n origin\n )\n })\n // TODO make one structure for handler functions\n const errorObjectOrHandler = getHandler(REQUESTS, msg, { debug: instance.debug })(callInstance, instance, client, msg.params)\n const response = typeof errorObjectOrHandler === 'function' ? await errorObjectOrHandler() : errorObjectOrHandler\n sendResponseMessage(client)(id, method, response)\n }\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Wallet name\n * @param {Function} onConnection Call-back function for incoming AEPP connection (Second argument contain function for accept/deny request)\n * @param {Function} onSubscription Call-back function for incoming AEPP account subscription (Second argument contain function for accept/deny request)\n * @param {Function} onSign Call-back function for incoming AEPP sign request (Second argument contain function for accept/deny request)\n * @param {Function} onAskAccounts Call-back function for incoming AEPP get address request (Second argument contain function for accept/deny request)\n * @param {Function} onMessageSign Call-back function for incoming AEPP sign message request (Second argument contain function for accept/deny request)\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @return {Object}\n */\nexport default Ae.compose(AccountMultiple, {\n init ({ name, onConnection, onSubscription, onSign, onDisconnect, onAskAccounts, onMessageSign, forceValidation = false, debug = false } = {}) {\n this.debug = debug\n const eventsHandlers = ['onConnection', 'onSubscription', 'onSign', 'onDisconnect', 'onMessageSign']\n // CallBacks for events\n this.onConnection = onConnection\n this.onSubscription = onSubscription\n this.onSign = onSign\n this.onDisconnect = onDisconnect\n this.onAskAccounts = onAskAccounts\n this.onMessageSign = onMessageSign\n this.rpcClients = {}\n\n eventsHandlers.forEach(event => {\n if (!forceValidation && typeof this[event] !== 'function') throw new Error(`Call-back for ${event} must be an function!`)\n })\n //\n this.name = name\n this.id = uuid()\n\n const _selectAccount = this.selectAccount.bind(this)\n const _addAccount = this.addAccount.bind(this)\n const _selectNode = this.selectNode.bind(this)\n\n // Overwrite AE methods\n this.selectAccount = (address, { condition = () => true } = {}) => {\n _selectAccount(address)\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() &&\n client.hasAccessToAccount(address) && condition(client))\n .forEach(client => client.setAccounts({\n current: { [address]: {} },\n connected: {\n ...client.accounts.current,\n ...Object.entries(client.accounts.connected)\n .filter(([k, v]) => k !== address)\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n }\n }))\n }\n this.addAccount = async (account, { select, meta = {}, condition = () => true } = {}) => {\n await _addAccount(account, { select })\n const address = await account.address()\n // Send notification 'update.address' to all Aepp which are subscribed for connected accounts\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() && condition(client))\n .forEach(client => client.setAccounts({\n current: { ...select ? { [address]: meta } : client.accounts.current },\n connected: {\n ...select ? client.accounts.current : { [address]: meta },\n ...client.accounts.connected\n }\n }))\n }\n this.selectNode = (name) => {\n _selectNode(name)\n // Send notification 'update.network' to all Aepp which connected\n Object.values(this.rpcClients)\n .filter(client => client.isConnected())\n .forEach(client => client.sendMessage(\n message(METHODS.updateNetwork, { networkId: this.getNetworkId() }), true\n ))\n }\n },\n methods: {\n /**\n * Remove specific RpcClient by ID\n * @function removeRpcClient\n * @instance\n * @rtype (id: string) => void\n * @param {String} id Client ID\n * @param {Object} [opt = {}]\n * @return {void}\n */\n removeRpcClient (id, { forceConnectionClose = false } = {}) {\n const client = this.rpcClients[id]\n if (!client) throw new Error(`RpcClient with id ${id} do not exist`)\n client.disconnect(forceConnectionClose)\n delete this.rpcClients[id]\n },\n /**\n * Add new client by AEPP connection\n * @function addRpcClient\n * @instance\n * @rtype (clientConnection: Object) => Object\n * @param {Object} clientConnection AEPP connection object\n * @return {String} Client ID\n */\n addRpcClient (clientConnection) {\n // @TODO detect if aepp has some history based on origin????: if yes use this instance for connection\n const id = uuid()\n this.rpcClients[id] = RpcClient({\n id,\n info: { status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST },\n connection: clientConnection,\n handlers: [handleMessage(this, id), this.onDisconnect]\n })\n return id\n },\n /**\n * Share wallet info\n * Send shareWalletInfo message to notify AEPP about wallet\n * @function shareWalletInfo\n * @instance\n * @rtype (postFn: Function) => void\n * @param {Function} postFn Send message function like `(msg) => void`\n * @return {void}\n */\n shareWalletInfo (postFn) {\n postFn({\n jsonrpc: '2.0',\n ...message(METHODS.wallet.readyToConnect, this.getWalletInfo())\n })\n },\n /**\n * Get Wallet info object\n * @function getWalletInfo\n * @instance\n * @rtype () => Object\n * @return {Object} Object with wallet information(id, name, network, ...)\n */\n getWalletInfo () {\n const runtime = getBrowserAPI(true).runtime\n return {\n id: runtime && runtime.id ? runtime.id : this.id,\n name: this.name,\n networkId: this.getNetworkId(),\n origin: window.location.origin,\n type: runtime && runtime.id ? WALLET_TYPE.extension : WALLET_TYPE.window\n }\n },\n /**\n * Get Wallet accounts\n * @function getAccounts\n * @instance\n * @rtype () => Object\n * @return {Object} Object with accounts information({ connected: Object, current: Object })\n */\n getAccounts () {\n return {\n current: this.selectedAddress ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter(a => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {})\n }\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet module\n * @module @aeternity/aepp-sdk/es/ae/wallet\n * @export Wallet\n * @example import { RpcWallet } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Chain from '../chain/node'\nimport Tx from '../tx/tx'\nimport Contract from './contract'\nimport GeneralizeAccount from '../contract/ga'\nimport WalletRpc from '../utils/aepp-wallet-communication/rpc/wallet-rpc'\nimport Oracle from './oracle'\nimport Aens from './aens'\n\n/**\n * Wallet Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/wallet\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} options.url - Node instance to connect to\n * @param {Account[]} [options.accounts] - Accounts to initialize with\n * @param {String} [options.account] - Public key of account to preselect\n * @return {Object} Wallet instance\n * @example Wallet({\n url: 'https://testnet.aeternity.io/',\n accounts: [MemoryAccount({keypair})],\n address: keypair.publicKey,\n})\n */\nexport default Ae.compose(WalletRpc, Tx, Contract, Oracle, Aens, GeneralizeAccount, Chain)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket'\nimport { EventEmitter } from 'events'\nimport JsonBig from '../utils/json-big'\nimport { pascalToSnake } from '../utils/string'\nimport { awaitingConnection, awaitingReconnection, channelOpen } from './handlers'\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000\n// Close connection if pong message is not received within 5 seconds\nconst PONG_TIMEOUT_MS = 5000\n\nexport const options = new WeakMap()\nexport const status = new WeakMap()\nexport const state = new WeakMap()\nconst fsm = new WeakMap()\nconst websockets = new WeakMap()\nexport const eventEmitters = new WeakMap()\nconst messageQueue = new WeakMap()\nconst messageQueueLocked = new WeakMap()\nconst actionQueue = new WeakMap()\nconst actionQueueLocked = new WeakMap()\nconst sequence = new WeakMap()\nexport const channelId = new WeakMap()\nconst rpcCallbacks = new WeakMap()\nconst pingTimeoutId = new WeakMap()\nconst pongTimeoutId = new WeakMap()\nexport const fsmId = new WeakMap()\n\nexport function emit (channel, ...args) {\n eventEmitters.get(channel).emit(...args)\n}\n\nfunction enterState (channel, nextState) {\n if (!nextState) {\n throw new Error('State Channels FSM entered unknown state')\n }\n fsm.set(channel, nextState)\n if (nextState.handler.enter) {\n nextState.handler.enter(channel)\n }\n dequeueAction(channel)\n}\n\nexport function changeStatus (channel, newStatus) {\n const prevStatus = status.get(channel)\n if (newStatus !== prevStatus) {\n status.set(channel, newStatus)\n emit(channel, 'statusChanged', newStatus)\n }\n}\n\nexport function changeState (channel, newState) {\n state.set(channel, newState)\n emit(channel, 'stateChanged', newState)\n}\n\nexport function send (channel, message) {\n const { debug = false } = options.get(channel)\n if (debug) console.log('Send message: ', message)\n websockets.get(channel).send(JsonBig.stringify(message))\n}\n\nexport function enqueueAction (channel, guard, action) {\n actionQueue.set(channel, [\n ...actionQueue.get(channel) || [],\n { guard, action }\n ])\n dequeueAction(channel)\n}\n\nasync function dequeueAction (channel) {\n const locked = actionQueueLocked.get(channel)\n const queue = actionQueue.get(channel) || []\n if (locked || !queue.length) {\n return\n }\n const state = fsm.get(channel)\n const index = queue.findIndex(item => item.guard(channel, state))\n if (index === -1) {\n return\n }\n actionQueue.set(channel, queue.filter((_, i) => index !== i))\n actionQueueLocked.set(channel, true)\n const nextState = await Promise.resolve(queue[index].action(channel, state))\n actionQueueLocked.set(channel, false)\n enterState(channel, nextState)\n}\n\nasync function handleMessage (channel, message) {\n const { handler, state } = fsm.get(channel)\n enterState(channel, await Promise.resolve(handler(channel, message, state)))\n}\n\nasync function dequeueMessage (channel) {\n const queue = messageQueue.get(channel)\n if (messageQueueLocked.get(channel) || !queue.length) {\n return\n }\n const [message, ...remaining] = queue\n messageQueue.set(channel, remaining || [])\n messageQueueLocked.set(channel, true)\n await handleMessage(channel, message)\n messageQueueLocked.set(channel, false)\n dequeueMessage(channel)\n}\n\nfunction ping (channel) {\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n pingTimeoutId.set(channel, setTimeout(() => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.system',\n params: {\n action: 'ping'\n }\n })\n pongTimeoutId.set(channel, setTimeout(() => {\n disconnect(channel)\n emit(channel, 'error', new Error('Server pong timed out'))\n }, PONG_TIMEOUT_MS))\n }, PING_TIMEOUT_MS))\n}\n\nfunction onMessage (channel, data) {\n const message = JsonBig.parse(data)\n const { debug = false } = options.get(channel)\n if (debug) console.log('Receive message: ', message)\n if (message.id) {\n const callback = rpcCallbacks.get(channel).get(message.id)\n try {\n callback(message)\n } finally {\n rpcCallbacks.get(channel).delete(message.id)\n }\n } else if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message)\n } else if (message.method === 'channels.system.pong') {\n if (\n (message.params.channel_id === channelId.get(channel)) ||\n // Skip channelId check if channelId is not known yet\n (channelId.get(channel) == null)\n ) {\n ping(channel)\n }\n } else {\n messageQueue.set(channel, [...(messageQueue.get(channel) || []), message])\n dequeueMessage(channel)\n }\n}\n\nfunction wrapCallErrorMessage (message) {\n const [{ message: details } = {}] = message.error.data || []\n if (details) {\n return new Error(`${message.error.message}: ${details}`)\n }\n return new Error(message.error.message)\n}\n\nexport function call (channel, method, params) {\n return new Promise((resolve, reject) => {\n const id = sequence.set(channel, sequence.get(channel) + 1).get(channel)\n rpcCallbacks.get(channel).set(id, (message) => {\n if (message.result) return resolve(message.result)\n if (message.error) return reject(wrapCallErrorMessage(message))\n })\n send(channel, { jsonrpc: '2.0', method, id, params })\n })\n}\n\nexport function disconnect (channel) {\n websockets.get(channel).close()\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n}\n\nexport async function initialize (channel, { url, ...channelOptions }) {\n options.set(channel, channelOptions)\n fsm.set(channel, {\n handler: channelOptions.existingFsmId ? awaitingReconnection : awaitingConnection\n })\n eventEmitters.set(channel, new EventEmitter())\n sequence.set(channel, 0)\n rpcCallbacks.set(channel, new Map())\n\n const wsUrl = new URL(url)\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value))\n wsUrl.searchParams.set('protocol', 'json-rpc')\n changeStatus(channel, 'connecting')\n const ws = new W3CWebSocket(wsUrl.toString())\n await new Promise((resolve, reject) => Object.assign(ws, {\n onerror: reject,\n onopen: () => {\n resolve()\n changeStatus(channel, 'connected')\n if (channelOptions.reconnectTx) {\n enterState(channel, { handler: channelOpen })\n setTimeout(async () => changeState(channel,\n (await call(channel, 'channels.get.offchain_state', {})).signed_tx\n ))\n }\n ping(channel)\n },\n onclose: () => {\n changeStatus(channel, 'disconnected')\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n },\n onmessage: ({ data }) => onMessage(channel, data)\n }))\n websockets.set(channel, ws)\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { generateKeyPair, encodeContractAddress, encodeBase64Check } from '../utils/crypto'\nimport {\n options,\n changeStatus,\n changeState,\n call,\n send,\n emit,\n channelId,\n disconnect,\n fsmId\n} from './internal'\nimport { unpackTx, buildTx } from '../tx/builder'\n\nfunction encodeRlpTx (rlpBinary) {\n return `tx_${encodeBase64Check(rlpBinary)}`\n}\n\nasync function appendSignature (tx, signFn) {\n const { signatures, encodedTx } = unpackTx(tx).tx\n const result = await signFn(encodeRlpTx(encodedTx.rlpEncoded))\n if (typeof result === 'string') {\n const { tx: signedTx, txType } = unpackTx(result)\n return encodeRlpTx(buildTx({\n signatures: signatures.concat(signedTx.signatures),\n encodedTx: signedTx.encodedTx.rlpEncoded\n }, txType).rlpEncoded)\n }\n return result\n}\n\nfunction handleUnexpectedMessage (channel, message, state) {\n if (state && state.reject) {\n state.reject(Object.assign(\n new Error(`Unexpected message received:\\n\\n${JSON.stringify(message)}`),\n { wsMessage: message }\n ))\n }\n return { handler: channelOpen }\n}\n\nexport function awaitingConnection (channel, message, state) {\n if (message.method === 'channels.info') {\n if (['channel_accept', 'funding_created'].includes(message.params.data.event)) {\n changeStatus(channel, {\n channel_accept: 'accepted',\n funding_created: 'halfSigned'\n }[message.params.data.event])\n return { handler: awaitingChannelCreateTx }\n }\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation }\n }\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id)\n return { handler: awaitingConnection }\n }\n return { handler: awaitingConnection }\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new Error(message.payload.message))\n return { handler: channelClosed }\n }\n}\n\nexport async function awaitingReconnection (channel, message, state) {\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id)\n changeState(channel, (await call(channel, 'channels.get.offchain_state', {})).signed_tx)\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingChannelCreateTx (channel, message, state) {\n const tag = {\n initiator: 'initiator_sign',\n responder: 'responder_sign'\n }[options.get(channel).role]\n if (message.method === `channels.sign.${tag}`) {\n if (message.params.data.tx) {\n const signedTx = await options.get(channel).sign(tag, message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })\n return { handler: awaitingOnChainTx }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => options.get(channel).sign(tag, tx))\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })\n return { handler: awaitingOnChainTx }\n }\n}\n\nexport function awaitingOnChainTx (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (\n message.params.data.info === 'funding_signed' &&\n options.get(channel).role === 'initiator'\n ) {\n return { handler: awaitingBlockInclusion }\n }\n if (\n message.params.data.info === 'funding_created' &&\n options.get(channel).role === 'responder'\n ) {\n return { handler: awaitingBlockInclusion }\n }\n }\n if (\n message.method === 'channels.info' &&\n message.params.data.event === 'funding_signed' &&\n options.get(channel).role === 'initiator'\n ) {\n channelId.set(channel, message.params.channel_id)\n changeStatus(channel, 'signed')\n return { handler: awaitingOnChainTx }\n }\n}\n\nexport function awaitingBlockInclusion (channel, message, state) {\n if (message.method === 'channels.info') {\n const handler = {\n funding_created: awaitingBlockInclusion,\n own_funding_locked: awaitingBlockInclusion,\n funding_locked: awaitingOpenConfirmation\n }[message.params.data.event]\n if (handler) {\n return { handler }\n }\n }\n if (message.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n return { handler: awaitingBlockInclusion }\n }\n}\n\nexport function awaitingOpenConfirmation (channel, message, state) {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channelId.set(channel, message.params.channel_id)\n return { handler: awaitingInitialState }\n }\n}\n\nexport function awaitingInitialState (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n return { handler: channelOpen }\n }\n}\n\nexport async function channelOpen (channel, message, state) {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest }\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, message.params.data.event)\n return { handler: channelOpen }\n case 'fsm_up':\n fsmId.set(channel, message.params.data.fsm_id)\n return { handler: channelOpen }\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen }\n case 'closing':\n changeStatus(channel, 'closing')\n return { handler: channelOpen }\n case 'closed_confirmed':\n changeStatus(channel, 'closed')\n return { handler: channelClosed }\n case 'died':\n changeStatus(channel, 'died')\n return { handler: channelClosed }\n case 'shutdown':\n return { handler: channelOpen }\n }\n break\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n return { handler: channelOpen }\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen }\n case 'channels.update':\n changeState(channel, message.params.data.state)\n return { handler: channelOpen }\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state)\n }\n}\nchannelOpen.enter = (channel) => {\n changeStatus(channel, 'open')\n}\n\nexport async function awaitingOffChainTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingOffChainUpdate, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingOffChainUpdate, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingOffChainTx, state }\n }\n }\n if (message.method === 'channels.error') {\n state.reject(new Error(message.data.message))\n return { handler: channelOpen }\n }\n if (message.error) {\n const { data = [] } = message.error\n if (data.find(i => i.code === 1001)) {\n state.reject(new Error('Insufficient balance'))\n } else if (data.find(i => i.code === 1002)) {\n state.reject(new Error('Amount cannot be negative'))\n } else {\n state.reject(new Error(message.error.message))\n }\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingOffChainUpdate (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n if (message.error) {\n state.reject(new Error(message.error.message))\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingTxSignRequest (channel, message, state) {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) || []\n if (tag) {\n if (message.params.data.tx) {\n const signedTx = await options.get(channel).sign(tag, message.params.data.tx, {\n updates: message.params.data.updates\n })\n if (signedTx) {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })\n return { handler: channelOpen }\n }\n } else {\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n options.get(channel).sign(tag, tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })\n return { handler: channelOpen }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { error: signedTx } })\n return { handler: awaitingUpdateConflict, state }\n }\n }\n // soft-reject via competing update\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: {\n from: generateKeyPair().publicKey,\n to: generateKeyPair().publicKey,\n amount: 1\n }\n })\n return { handler: awaitingUpdateConflict, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingUpdateConflict (channel, message, state) {\n if (message.error) {\n return { handler: awaitingUpdateConflict, state }\n }\n if (message.method === 'channels.conflict') {\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingShutdownTx (channel, message, state) {\n if (message.method === 'channels.sign.shutdown_sign') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } })\n return { handler: awaitingShutdownOnChainTx, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } })\n return { handler: awaitingShutdownOnChainTx, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingShutdownOnChainTx (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingLeave (channel, message, state) {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state })\n disconnect(channel)\n return { handler: channelClosed }\n }\n if (message.method === 'channels.error') {\n state.reject(new Error(message.data.message))\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingWithdrawTx (channel, message, state) {\n if (message.method === 'channels.sign.withdraw_tx') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { error: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingWithdrawCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data.tx)\n }\n return { handler: awaitingWithdrawCompletion, state }\n }\n if (message.method === 'channels.info') {\n if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {\n const callback = {\n own_withdraw_locked: state.onOwnWithdrawLocked,\n withdraw_locked: state.onWithdrawLocked\n }[message.params.data.event]\n if (callback) {\n callback()\n }\n return { handler: awaitingWithdrawCompletion, state }\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingDepositTx (channel, message, state) {\n if (message.method === 'channels.sign.deposit_tx') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { error: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingDepositCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data.tx)\n }\n return { handler: awaitingDepositCompletion, state }\n }\n if (message.method === 'channels.info') {\n if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {\n const callback = {\n own_deposit_locked: state.onOwnDepositLocked,\n deposit_locked: state.onDepositLocked\n }[message.params.data.event]\n if (callback) {\n callback()\n }\n return { handler: awaitingDepositCompletion, state }\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingNewContractTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingNewContractCompletion (channel, message, state) {\n if (message.method === 'channels.update') {\n const { round } = unpackTx(message.params.data.state).tx.encodedTx.tx\n const owner = options.get(channel)[{\n initiator: 'initiatorId',\n responder: 'responderId'\n }[options.get(channel).role]]\n changeState(channel, message.params.data.state)\n state.resolve({\n accepted: true,\n address: encodeContractAddress(owner, round),\n signedTx: message.params.data.state\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingCallContractUpdateTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx, { updates: message.params.data.updates }))\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingCallContractForceProgressUpdate (channel, message, state) {\n if (message.method === 'channels.sign.force_progress_tx') {\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n state.sign(tx, { updates: message.params.data.updates })\n )\n send(channel, { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } })\n return { handler: awaitingForceProgressCompletion, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingForceProgressCompletion (channel, message, state) {\n console.log('From force progress await completion ->', message)\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data)\n }\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n state.resolve({ accepted: true, tx: message.params.data.tx })\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingCallContractCompletion (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingCallsPruned (channels, message, state) {\n if (message.method === 'channels.calls_pruned.reply') {\n state.resolve()\n return { handler: channelOpen }\n }\n state.reject(new Error('Unexpected message received'))\n return { handler: channelClosed }\n}\n\nexport function channelClosed (channel, message, state) {\n if (!state) return { handler: channelClosed }\n if (message.params.data.event === 'closing') return { handler: channelClosed, state }\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx\n return { handler: channelClosed, state }\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx)\n return { handler: channelClosed }\n }\n return { handler: channelClosed, state }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Channel module\n * @module @aeternity/aepp-sdk/es/channel/index\n * @export Channel\n * @example import { Channel } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from '../utils/async-init'\nimport { snakeToPascal } from '../utils/string'\nimport { buildTx, unpackTx } from '../tx/builder'\nimport { TX_TYPE } from '../tx/builder/schema'\nimport * as handlers from './handlers'\nimport {\n eventEmitters,\n status as channelStatus,\n state as channelState,\n initialize,\n enqueueAction,\n send,\n channelId,\n call,\n disconnect as channelDisconnect,\n fsmId as channelFsmId\n} from './internal'\nimport * as R from 'ramda'\n\nfunction snakeToPascalObjKeys (obj) {\n return Object.entries(obj).reduce((result, [key, val]) => ({\n ...result,\n [snakeToPascal(key)]: val\n }), {})\n}\n\n/**\n * Register event listener function\n *\n * Possible events:\n *\n * - \"error\"\n * - \"onChainTx\"\n * - \"ownWithdrawLocked\"\n * - \"withdrawLocked\"\n * - \"ownDepositLocked\"\n * - \"depositLocked\"\n *\n * @param {String} event - Event name\n * @param {Function} callback - Callback function\n */\nfunction on (event, callback) {\n eventEmitters.get(this).on(event, callback)\n}\n\n/**\n * Remove event listener function\n *\n * @param {String} event - Event name\n * @param {Function} callback - Callback function\n */\nfunction off (event, callback) {\n eventEmitters.get(this).removeListener(event, callback)\n}\n\n/**\n * Close the connection\n */\nfunction disconnect () {\n return channelDisconnect(this)\n}\n\n/**\n * Get current status\n *\n * @return {String}\n */\nfunction status () {\n return channelStatus.get(this)\n}\n\n/**\n * Get current state\n *\n * @return {Promise<Object>}\n */\nasync function state () {\n return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}))\n}\n\n/**\n * Get current round\n *\n * If round cannot be determined (for example when channel has not been opened)\n * it will return `null`.\n *\n * @return {Number}\n */\nfunction round () {\n const state = channelState.get(this)\n if (!state) {\n return null\n }\n const { txType, tx } = unpackTx(channelState.get(this)).tx.encodedTx\n switch (txType) {\n case TX_TYPE.channelCreate:\n return 1\n case TX_TYPE.channelOffChain:\n case TX_TYPE.channelWithdraw:\n case TX_TYPE.channelDeposit:\n return parseInt(tx.round, 10)\n default:\n return null\n }\n}\n\n/**\n * Get channel id\n *\n * @return {String}\n */\nfunction id () {\n return channelId.get(this)\n}\n\n/**\n * Get channel's fsm id\n *\n * @return {String}\n */\nfunction fsmId () {\n return channelFsmId.get(this)\n}\n\n/**\n * Trigger a transfer update\n *\n * The transfer update is moving tokens from one channel account to another.\n * The update is a change to be applied on top of the latest state.\n *\n * Sender and receiver are the channel parties. Both the initiator and responder\n * can take those roles. Any public key outside of the channel is considered invalid.\n *\n * @param {String} from - Sender's public address\n * @param {String} to - Receiver's public address\n * @param {Number} amount - Transaction amount\n * @param {Function} sign - Function which verifies and signs offchain transaction\n * @param {Array<String>} metadata\n * @return {Promise<Object>}\n * @example channel.update(\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * 10,\n * async (tx) => await account.signTransaction(tx)\n * ).then(({ accepted, signedTx }) =>\n * if (accepted) {\n * console.log('Update has been accepted')\n * }\n * )\n */\nfunction update (from, to, amount, sign, metadata) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: { from, to, amount, meta: metadata }\n })\n return {\n handler: handlers.awaitingOffChainTx,\n state: {\n resolve,\n reject,\n sign\n }\n }\n }\n )\n })\n}\n\n/**\n * Get proof of inclusion\n *\n * If a certain address of an account or a contract is not found\n * in the state tree - the response is an error.\n *\n * @param {Object} addresses\n * @param {Array<String>} [addresses.accounts] - List of account addresses to include in poi\n * @param {Array<String>} [addresses.contracts] - List of contract addresses to include in poi\n * @return {Promise<String>}\n * @example channel.poi({\n * accounts: [\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E'\n * ],\n * contracts: ['ct_2dCUAWYZdrWfACz3a2faJeKVTVrfDYxCQHCqAt5zM15f3u2UfA']\n * }).then(poi => console.log(poi))\n */\nasync function poi ({ accounts, contracts }) {\n return (await call(this, 'channels.get.poi', { accounts, contracts })).poi\n}\n\n/**\n * Get balances\n *\n * The accounts paramcontains a list of addresses to fetch balances of.\n * Those can be either account balances or a contract ones, encoded as an account addresses.\n *\n * If a certain account address had not being found in the state tree - it is simply\n * skipped in the response.\n *\n * @param {Array<String>} accounts - List of addresses to fetch balances from\n * @return {Promise<Object>}\n * @example channel.balances([\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E'\n * 'ct_2dCUAWYZdrWfACz3a2faJeKVTVrfDYxCQHCqAt5zM15f3u2UfA'\n * ]).then(balances =>\n * console.log(balances['ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH'])\n * )\n */\nasync function balances (accounts) {\n return R.reduce((acc, item) => ({\n ...acc,\n [item.account]: item.balance\n }), {}, await call(this, 'channels.get.balances', { accounts }))\n}\n\n/**\n * Leave channel\n *\n * It is possible to leave a channel and then later reestablish the channel\n * off-chain state and continue operation. When a leave method is called,\n * the channel fsm passes it on to the peer fsm, reports the current mutually\n * signed state and then terminates.\n *\n * The channel can be reestablished by instantiating another Channel instance\n * with two extra params: existingChannelId and offchainTx (returned from leave\n * method as channelId and signedTx respectively).\n *\n * @return {Promise<Object>}\n * @example channel.leave().then(({ channelId, signedTx }) => {\n * console.log(channelId)\n * console.log(signedTx)\n * })\n */\nfunction leave () {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.leave', params: {} })\n return {\n handler: handlers.awaitingLeave,\n state: { resolve, reject }\n }\n })\n })\n}\n\n/**\n * Trigger mutual close\n *\n * At any moment after the channel is opened, a closing procedure can be triggered.\n * This can be done by either of the parties. The process is similar to the off-chain updates.\n *\n * @param {Function} sign - Function which verifies and signs mutual close transaction\n * @return {Promise<String>}\n * @example channel.shutdown(\n * async (tx) => await account.signTransaction(tx)\n * ).then(tx => console.log('on_chain_tx', tx))\n */\nfunction shutdown (sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown', params: {} })\n return {\n handler: handlers.awaitingShutdownTx,\n state: {\n sign,\n resolve,\n reject\n }\n }\n }\n )\n })\n}\n\n/**\n * Withdraw tokens from the channel\n *\n * After the channel had been opened any of the participants can initiate a withdrawal.\n * The process closely resembles the update. The most notable difference is that the\n * transaction has been co-signed: it is channel_withdraw_tx and after the procedure\n * is finished - it is being posted on-chain.\n *\n * Any of the participants can initiate a withdrawal. The only requirements are:\n *\n * - Channel is already opened\n * - No off-chain update/deposit/withdrawal is currently being performed\n * - Channel is not being closed or in a solo closing state\n * - The withdrawal amount must be equal to or greater than zero, and cannot exceed\n * the available balance on the channel (minus the channel_reserve)\n *\n * After the other party had signed the withdraw transaction, the transaction is posted\n * on-chain and onOnChainTx callback is called with on-chain transaction as first argument.\n * After computing transaction hash it can be tracked on the chain: entering the mempool,\n * block inclusion and a number of confirmations.\n *\n * After the minimum_depth block confirmations onOwnWithdrawLocked callback is called\n * (without any arguments).\n *\n * When the other party had confirmed that the block height needed is reached\n * onWithdrawLocked callback is called (without any arguments).\n *\n * @param {Number} amount - Amount of tokens to withdraw\n * @param {Function} sign - Function which verifies and signs withdraw transaction\n * @param {Object} [callbacks]\n * @param {Function} [callbacks.onOnChainTx] - Called when withdraw transaction has been posted on chain\n * @param {Function} [callbacks.onOwnWithdrawLocked]\n * @param {Function} [callbacks.onWithdrawLocked]\n * @return {Promise<Object>}\n * @example channel.withdraw(\n * 100,\n * async (tx) => await account.signTransaction(tx),\n * { onOnChainTx: (tx) => console.log('on_chain_tx', tx) }\n * ).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Withdrawal has been accepted')\n * } else {\n * console.log('Withdrawal has been rejected')\n * }\n * })\n */\nfunction withdraw (amount, sign, { onOnChainTx, onOwnWithdrawLocked, onWithdrawLocked } = {}) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw', params: { amount } })\n return {\n handler: handlers.awaitingWithdrawTx,\n state: {\n sign,\n resolve,\n reject,\n onOnChainTx,\n onOwnWithdrawLocked,\n onWithdrawLocked\n }\n }\n }\n )\n })\n}\n\n/**\n * Deposit tokens into the channel\n *\n * After the channel had been opened any of the participants can initiate a deposit.\n * The process closely resembles the update. The most notable difference is that the\n * transaction has been co-signed: it is channel_deposit_tx and after the procedure\n * is finished - it is being posted on-chain.\n *\n * Any of the participants can initiate a deposit. The only requirements are:\n *\n * - Channel is already opened\n * - No off-chain update/deposit/withdrawal is currently being performed\n * - Channel is not being closed or in a solo closing state\n * - The deposit amount must be equal to or greater than zero, and cannot exceed\n * the available balance on the channel (minus the channel_reserve)\n *\n * After the other party had signed the deposit transaction, the transaction is posted\n * on-chain and onOnChainTx callback is called with on-chain transaction as first argument.\n * After computing transaction hash it can be tracked on the chain: entering the mempool,\n * block inclusion and a number of confirmations.\n *\n * After the minimum_depth block confirmations onOwnDepositLocked callback is called\n * (without any arguments).\n *\n * When the other party had confirmed that the block height needed is reached\n * onDepositLocked callback is called (without any arguments).\n *\n * @param {Number} amount - Amount of tokens to deposit\n * @param {Function} sign - Function which verifies and signs deposit transaction\n * @param {Object} [callbacks]\n * @param {Function} [callbacks.onOnChainTx] - Called when deposit transaction has been posted on chain\n * @param {Function} [callbacks.onOwnDepositLocked]\n * @param {Function} [callbacks.onDepositLocked]\n * @return {Promise<Object>}\n * @example channel.deposit(\n * 100,\n * async (tx) => await account.signTransaction(tx),\n * { onOnChainTx: (tx) => console.log('on_chain_tx', tx) }\n * ).then(({ accepted, state }) => {\n * if (accepted) {\n * console.log('Deposit has been accepted')\n * console.log('The new state is:', state)\n * } else {\n * console.log('Deposit has been rejected')\n * }\n * })\n */\nfunction deposit (amount, sign, { onOnChainTx, onOwnDepositLocked, onDepositLocked } = {}) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit', params: { amount } })\n return {\n handler: handlers.awaitingDepositTx,\n state: {\n sign,\n resolve,\n reject,\n onOnChainTx,\n onOwnDepositLocked,\n onDepositLocked\n }\n }\n }\n )\n })\n}\n\n/**\n * Trigger create contract update\n *\n * The create contract update is creating a contract inside the channel's internal state tree.\n * The update is a change to be applied on top of the latest state.\n *\n * That would create a contract with the poster being the owner of it. Poster commits initially\n * a deposit amount of tokens to the new contract.\n *\n * @param {Object} options\n * @param {String} options.code - Api encoded compiled AEVM byte code\n * @param {String} options.callData - Api encoded compiled AEVM call data for the code\n * @param {Number} options.deposit - Initial amount the owner of the contract commits to it\n * @param {Number} options.vmVersion - Version of the Virtual Machine\n * @param {Number} options.abiVersion - Version of the Application Binary Interface\n * @param {Function} sign - Function which verifies and signs create contract transaction\n * @return {Promise<Object>}\n * @example channel.createContract({\n * code: 'cb_HKtpipK4aCgYb17wZ...',\n * callData: 'cb_1111111111111111...',\n * deposit: 10,\n * vmVersion: 3,\n * abiVersion: 1\n * }).then(({ accepted, signedTx, address }) => {\n * if (accepted) {\n * console.log('New contract has been created')\n * console.log('Contract address:', address)\n * } else {\n * console.log('New contract has been rejected')\n * }\n * })\n */\nfunction createContract ({ code, callData, deposit, vmVersion, abiVersion }, sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new_contract',\n params: {\n code,\n call_data: callData,\n deposit,\n vm_version: vmVersion,\n abi_version: abiVersion\n }\n })\n return {\n handler: handlers.awaitingNewContractTx,\n state: {\n sign,\n resolve,\n reject\n }\n }\n }\n )\n })\n}\n\n/**\n * Trigger call a contract update\n *\n * The call contract update is calling a preexisting contract inside the channel's\n * internal state tree. The update is a change to be applied on top of the latest state.\n *\n * That would call a contract with the poster being the caller of it. Poster commits\n * an amount of tokens to the contract.\n *\n * The call would also create a call object inside the channel state tree. It contains\n * the result of the contract call.\n *\n * It is worth mentioning that the gas is not consumed, because this is an off-chain\n * contract call. It would be consumed if it were a on-chain one. This could happen\n * if a call with a similar computation amount is to be forced on-chain.\n *\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @param {Function} sign - Function which verifies and signs contract call transaction\n * @return {Promise<Object>}\n * @example channel.callContract({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1\n * }).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Contract called succesfully')\n * } else {\n * console.log('Contract call has been rejected')\n * }\n * })\n */\nfunction callContract ({ amount, callData, contract, abiVersion }, sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.call_contract',\n params: {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion\n }\n })\n return {\n handler: handlers.awaitingCallContractUpdateTx,\n state: { resolve, reject, sign }\n }\n }\n )\n })\n}\n\n/**\n * Trigger a force progress contract call\n * This call is going on-chain\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @param {Number} [options.gasPrice=1000000000] - Gas price\n * @param {Number} [options.gas=1000000] - Gas limit\n * @param {Function} sign - Function which verifies and signs contract force progress transaction\n * @param {{ onOnChainTxL: Function }} callbacks\n * @return {Promise<Object>}\n * @example channel.forceProgress({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1,\n * gasPrice: 1000005554\n * }).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Contract force progress call successful')\n * } else {\n * console.log('Contract force progress call has been rejected')\n * }\n * })\n */\nfunction forceProgress ({ amount, callData, contract, abiVersion, gas = 1000000, gasPrice = 1000000000, nonce }, sign, { onOnChainTx } = {}) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.force_progress',\n params: {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion,\n gas_price: gasPrice,\n gas\n }\n })\n return {\n handler: handlers.awaitingCallContractForceProgressUpdate,\n state: { resolve, reject, sign, onOnChainTx }\n }\n }\n )\n })\n}\n\n/**\n * Call contract using dry-run\n *\n * In order to get the result of a potential contract call, one might need to\n * dry-run a contract call. It takes the exact same arguments as a call would\n * and returns the call object.\n *\n * The call is executed in the channel's state but it does not impact the state\n * whatsoever. It uses as an environment the latest channel's state and the current\n * top of the blockchain as seen by the node.\n *\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @return {Promise<Object>}\n * @example channel.callContractStatic({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1\n * }).then(({ returnValue, gasUsed }) => {\n * console.log('Returned value:', returnValue)\n * console.log('Gas used:', gasUsed)\n * })\n */\nasync function callContractStatic ({ amount, callData, contract, abiVersion }) {\n return snakeToPascalObjKeys(await call(this, 'channels.dry_run.call_contract', {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion\n }))\n}\n\n/**\n * Get contract call result\n *\n * The combination of a caller, contract and a round of execution determines the\n * contract call. Providing an incorrect set of those results in an error response.\n *\n * @param {Object} options\n * @param {String} [options.caller] - Address of contract caller\n * @param {String} [options.contract] - Address of the contract\n * @param {Number} [options.round] - Round when contract was called\n * @return {Promise<Object>}\n * @example channel.getContractCall({\n * caller: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * round: 3\n * }).then(({ returnType, returnValue }) => {\n * if (returnType === 'ok') console.log(returnValue)\n * })\n */\nasync function getContractCall ({ caller, contract, round }) {\n return snakeToPascalObjKeys(\n await call(this, 'channels.get.contract_call', {\n caller_id: caller,\n contract_id: contract,\n round\n })\n )\n}\n\n/**\n * Get contract latest state\n *\n * @param {String} contract - Address of the contract\n * @return {Promise<Object>}\n * @example channel.getContractState(\n * 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa'\n * ).then(({ contract }) => {\n * console.log('deposit:', contract.deposit)\n * })\n */\nasync function getContractState (contract) {\n const result = await call(this, 'channels.get.contract', { pubkey: contract })\n return snakeToPascalObjKeys({\n ...result,\n contract: snakeToPascalObjKeys(result.contract)\n })\n}\n\n/**\n * Clean up all locally stored contract calls\n *\n * Contract calls are kept locally in order for the participant to be able to look them up.\n * They consume memory and in order for the participant to free it - one can prune all messages.\n * This cleans up all locally stored contract calls and those will no longer be available for\n * fetching and inspection.\n *\n * @return {Promise}\n */\nfunction cleanContractCalls () {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.clean_contract_calls',\n params: {}\n })\n return {\n handler: handlers.awaitingCallsPruned,\n state: { resolve, reject }\n }\n }\n )\n })\n}\n\n/**\n * Send generic message\n *\n * If message is an object it will be serialized into JSON string\n * before sending.\n *\n * If there is ongoing update that has not yet been finished the message\n * will be sent after that update is finalized.\n *\n * @param {String|Object} message\n * @param {String} recipient - Address of the recipient\n * @example channel.sendMessage(\n * 'hello world',\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH'\n * )\n */\nfunction sendMessage (message, recipient) {\n let info = message\n if (typeof message === 'object') {\n info = JSON.stringify(message)\n }\n const doSend = (channel) => send(channel, {\n jsonrpc: '2.0',\n method: 'channels.message',\n params: { info, to: recipient }\n })\n if (this.status() === 'connecting') {\n const onStatusChanged = (status) => {\n if (status !== 'connecting') {\n // For some reason we can't immediately send a message when connection is\n // established. Thus we wait 500ms which seems to work.\n setTimeout(() => doSend(this), 500)\n this.off('statusChanged', onStatusChanged)\n }\n }\n this.on('statusChanged', onStatusChanged)\n } else {\n doSend(this)\n }\n}\n\nasync function reconnect (options, txParams) {\n const { sign } = options\n\n return Channel({\n ...options,\n reconnectTx: await sign('reconnect', buildTx(txParams, TX_TYPE.channelReconnect).tx)\n })\n}\n\n/**\n * Channel\n *\n * @function\n * @alias module:@aeternity/aepp-sdk/es/channel/index\n * @rtype Channel\n * @param {Object} options - Channel params\n * @param {String} options.url - Channel url (for example: \"ws://localhost:3001\")\n * @param {String} options.role - Participant role (\"initiator\" or \"responder\")\n * @param {String} options.initiatorId - Initiator's public key\n * @param {String} options.responderId - Responder's public key\n * @param {Number} options.pushAmount - Initial deposit in favour of the responder by the initiator\n * @param {Number} options.initiatorAmount - Amount of tokens the initiator has committed to the channel\n * @param {Number} options.responderAmount - Amount of tokens the responder has committed to the channel\n * @param {Number} options.channelReserve - The minimum amount both peers need to maintain\n * @param {Number} [options.ttl] - Minimum block height to include the channel_create_tx\n * @param {String} options.host - Host of the responder's node\n * @param {Number} options.port - The port of the responders node\n * @param {Number} options.lockPeriod - Amount of blocks for disputing a solo close\n * @param {Number} [options.existingChannelId] - Existing channel id (required if reestablishing a channel)\n * @param {Number} [options.offchainTx] - Offchain transaction (required if reestablishing a channel)\n * @param {Number} [options.timeoutIdle] - The time waiting for a new event to be initiated (default: 600000)\n * @param {Number} [options.timeoutFundingCreate] - The time waiting for the initiator to produce the create channel transaction after the noise session had been established (default: 120000)\n * @param {Number} [options.timeoutFundingSign] - The time frame the other client has to sign an off-chain update after our client had initiated and signed it. This applies only for double signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc. (default: 120000)\n * @param {Number} [options.timeoutFundingLock] - The time frame the other client has to confirm an on-chain transaction reaching maturity (passing minimum depth) after the local node has detected this. This applies only for double signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc. (default: 360000)\n * @param {Number} [options.timeoutSign] - The time frame the client has to return a signed off-chain update or to decline it. This applies for all off-chain updates (default: 500000)\n * @param {Number} [options.timeoutAccept] - The time frame the other client has to react to an event. This applies for all off-chain updates that are not meant to land on-chain, as well as some special cases: opening a noise connection, mutual closing acknowledgement and reestablishing an existing channel (default: 120000)\n * @param {Number} [options.timeoutInitialized] - the time frame the responder has to accept an incoming noise session. Applicable only for initiator (default: timeout_accept's value)\n * @param {Number} [options.timeoutAwaitingOpen] - The time frame the initiator has to start an outgoing noise session to the responder's node. Applicable only for responder (default: timeout_idle's value)\n * @param {Number} [options.debug=false] - Log websocket communication\n * @param {Function} options.sign - Function which verifies and signs transactions\n * @return {Promise<Object>} Channel instance\n * @example Channel({\n * url: 'ws://localhost:3001',\n * role: 'initiator'\n * initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * initiatorAmount: 1e18,\n * responderAmount: 1e18,\n * pushAmount: 0,\n * channelReserve: 0,\n * ttl: 1000,\n * host: 'localhost',\n * port: 3002,\n * lockPeriod: 10,\n * async sign (tag, tx) => await account.signTransaction(tx)\n * })\n */\nconst Channel = AsyncInit.compose({\n async init (options) {\n initialize(this, options)\n },\n methods: {\n on,\n off,\n status,\n state,\n round,\n id,\n fsmId,\n update,\n poi,\n balances,\n leave,\n shutdown,\n sendMessage,\n withdraw,\n deposit,\n createContract,\n callContract,\n callContractStatic,\n getContractCall,\n getContractState,\n disconnect,\n cleanContractCalls,\n forceProgress\n },\n statics: {\n reconnect\n }\n})\n\nexport default Channel\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Universal module\n * @module @aeternity/aepp-sdk/es/ae/universal\n * @export Universal\n * @example import { Universal } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Chain from '../chain/node'\nimport Aens from './aens'\nimport Transaction from '../tx/tx'\nimport Oracle from './oracle'\nimport GeneralizeAccount from '../contract/ga'\nimport AccountMultiple from '../account/multiple'\nimport Contract from './contract'\n\n/**\n * Universal Stamp\n *\n * Universal provides Ae base functionality with Contract and Aens\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/universal\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Universal instance\n */\nexport default Ae.compose(AccountMultiple, Chain, Transaction, Aens, Contract, Oracle, GeneralizeAccount)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Content Script Bridge module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @export ContentScriptBridge\n * @example import ContentScriptBridge from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge\n */\nimport stampit from '@stamp/it'\n\n/**\n * Start message proxy\n * @function run\n * @instance\n * @return {void}\n */\nfunction run () {\n const allowCrossOrigin = this.allowCrossOrigin\n // Connect to extension using runtime\n this.extConnection.connect((msg) => {\n this.pageConnection.sendMessage(msg)\n })\n // Connect to page using window.postMessage\n this.pageConnection.connect((msg, origin, source) => {\n if (!allowCrossOrigin && source !== window) return\n this.extConnection.sendMessage(msg)\n })\n}\n\n/**\n * Stop message proxy\n * @function stop\n * @instance\n * @return {void}\n */\nfunction stop () {\n this.extConnection.disconnect()\n this.pageConnection.disconnect()\n}\n\n/**\n * ContentScriptBridge stamp\n * Provide functionality to easly redirect messages from page to extension and from extension to page through content script\n * Using Runtime(Extension) and WindowPostMessage(Web-Page) connections\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @rtype Stamp\n * @param {Object} params - Initializer object\n * @param {Object} params.pageConnection - Page connection object(@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message)\n * @param {Object} params.extConnection - Extension connection object(module: @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)\n * @return {Object}\n */\nexport default stampit({\n init ({ pageConnection, extConnection, allowCrossOrigin = false }) {\n if (!window) throw new Error('Window object not found, you can run bridge only in browser')\n if (!pageConnection) throw new Error('pageConnection required')\n if (!extConnection) throw new Error('extConnection required')\n this.allowCrossOrigin = allowCrossOrigin\n this.pageConnection = pageConnection\n this.extConnection = extConnection\n },\n methods: { run, stop }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Connection base module\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @export WalletConnection\n * @example import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'\n */\n\nimport { required } from '@stamp/required'\n\n/**\n * Basic Wallet Connection\n *\n * This stamp include interface for wallet connection functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} WalletConnection instance\n */\nexport default required({\n methods: {\n connect: required,\n disconnect: required,\n sendMessage: required,\n isConnected: required\n }\n})\n\n/**\n * Connect\n * @function connect\n * @instance\n * @abstract\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @abstract\n * @rtype () => void\n * @return {void}\n */\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @abstract\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @abstract\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser window Post Message connector module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message\n * @export BrowserWindowMessageConnection\n * @example import BrowserWindowMessageConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'\n */\nimport stampit from '@stamp/it'\nimport WalletConnection from '.'\nimport { v4 as uuid } from 'uuid'\nimport { MESSAGE_DIRECTION } from '../schema'\nimport { getBrowserAPI, isInIframe } from '../helpers'\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return this.listener\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\nfunction connect (onMessage) {\n const origin = this.origin\n const receiveDirection = this.receiveDirection\n const debug = this.debug\n const forceOrigin = this.forceOrigin\n if (this.listener) throw new Error('You already connected')\n\n this.listener = (msg, source) => {\n if (!msg || typeof msg.data !== 'object') return\n if (!forceOrigin && origin && origin !== msg.origin) return\n if (debug) console.log('Receive message: ', msg)\n if (msg.data.type) {\n if (msg.data.type !== receiveDirection) return\n onMessage(msg.data.data, msg.origin, msg.source)\n } else {\n onMessage(msg.data, msg.origin, msg.source)\n }\n }\n this.subscribeFn(this.listener)\n}\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n if (!this.listener) throw new Error('You dont have connection. Please connect before')\n this.unsubscribeFn(this.listener)\n this.listener = null\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n const message = this.sendDirection ? { type: this.sendDirection, data: msg } : msg\n if (this.debug) console.log('Send message: ', message)\n this.postFn(message)\n}\n\nconst getTarget = () => {\n const isExtensionContext = typeof getBrowserAPI(true).extension === 'object'\n const isWeb = window && window.location && window.location.protocol.startsWith('http')\n const isContentScript = isExtensionContext && isWeb\n if (isContentScript) return window\n // When we is the main page we need to decide the target by our self\n // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which Iframe to talk\n return isInIframe() ? window.parent : undefined\n}\n\n/**\n * BrowserWindowMessageConnection\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message\n * @rtype Stamp\n * @param {Object} [params={}] - Initializer object\n * @param {Object} [params.target=window.parent] - Target window for message\n * @param {Object} [params.self=window] - Host window for message\n * @param {Object} [params.origin] - Origin of receiver\n * @param {Object} [params.sendDirection] - Optional field for wrapping messages in additional structure({ type: 'to_aepp' || 'to_waellet', data }).Used for handling messages netween content script and page\n * @param {Object} [params.receiveDirection='to_aepp'] - Optional(default: 'to_aepp') field for unwrapping messages from additional structure({ type: 'to_aepp' || 'to_waellet', data }).Used for handling messages netween content script and page\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, target = getTarget(), self = window, origin, sendDirection, receiveDirection = MESSAGE_DIRECTION.to_aepp, debug = false, forceOrigin = false } = {}) {\n if (sendDirection && !Object.keys(MESSAGE_DIRECTION).includes(sendDirection)) throw new Error(`sendDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n if (!Object.keys(MESSAGE_DIRECTION).includes(receiveDirection)) throw new Error(`receiveDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n this.connectionInfo = { id: uuid(), ...connectionInfo }\n\n const selfP = self\n const targetP = target\n this.origin = origin\n this.debug = debug\n this.forceOrigin = forceOrigin\n this.sendDirection = sendDirection\n this.receiveDirection = receiveDirection\n this.subscribeFn = (listener) => selfP.addEventListener('message', listener, false)\n this.unsubscribeFn = (listener) => selfP.removeEventListener('message', listener, false)\n this.postFn = (msg) => targetP.postMessage(msg, this.origin || '*')\n if (!this.connectionInfo.id) throw new Error('ID required.')\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Detector\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector\n * @export WalletDetector\n */\nimport stampit from '@stamp/it'\nimport BrowserWindowMessageConnection from './connection/browser-window-message'\nimport { MESSAGE_DIRECTION, METHODS } from './schema'\n\n/**\n * WalletDetector stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {WalletConnection} params.connection - Connection for listening for wallets\n * @return {WalletDetector}\n */\nexport default stampit({\n init ({ connection } = {}) {\n if (!window) throw new Error('Window object not found, you can run wallet detector only in browser')\n this.connection = connection || BrowserWindowMessageConnection({ connectionInfo: { id: 'spy' } })\n this.wallets = {}\n },\n methods: {\n /**\n * Start scanning\n * @function scan\n * @instance\n * @param {Function} onDetected Call-back function which trigger on new wallet\n * @return {void}\n */\n scan (onDetected) {\n const { wallets } = this\n this.connection.connect(({ method, params }, origin, source) => {\n if (!method || !params || method !== METHODS.wallet.readyToConnect || wallets[params.id]) return\n\n const wallet = {\n ...params,\n async getConnection () {\n // if detect extension wallet or page wallet\n const isExtension = this.type === 'extension'\n const origin = isExtension ? window.origin : this.origin\n return BrowserWindowMessageConnection({\n connectionInfo: this,\n sendDirection: isExtension ? MESSAGE_DIRECTION.to_waellet : undefined,\n receiveDirection: isExtension ? MESSAGE_DIRECTION.to_aepp : undefined,\n target: source,\n origin\n })\n }\n }\n wallets[wallet.id] = wallet\n onDetected({ wallets, newWallet: wallet })\n })\n if (Object.keys(wallets).length) onDetected({ wallets })\n },\n\n /**\n * Stop scanning\n * @function stopScan\n * @instance\n * @return {void}\n */\n stopScan () {\n this.connection.disconnect()\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser runtime connector module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @export BrowserRuntimeConnection\n * @example import BrowserRuntimeConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime'\n */\nimport stampit from '@stamp/it'\n\nimport WalletConnection from '.'\nimport { getBrowserAPI } from '../helpers'\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n try {\n this.port.disconnect()\n } catch (e) {\n console.warning('From BrowserRuntimeConnection: ', e)\n }\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function, onDisconnect: Function) => void\n * @param {Function} onMessage - Message handler\n * @param {Function} onDisconnect - trigger when runtime connection in closed\n * @return {void}\n */\nfunction connect (onMessage, onDisconnect) {\n if (this.isConnected()) throw new Error('You already connected')\n this.handler = (msg, source) => {\n if (this.debug) console.log('Receive message: ', msg)\n onMessage(msg, source)\n }\n this.port.onMessage.addListener(this.handler)\n this.port.onDisconnect.addListener(() => {\n typeof onDisconnect === 'function' && onDisconnect({}, this)\n this.port.disconnect()\n })\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n if (!this.port) throw new Error('You dont have connection. Please connect before')\n if (this.debug) console.log('Send message: ', msg)\n this.port.postMessage(msg)\n}\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return typeof this.port.onMessage.hasListeners === 'function' ? this.port.onMessage.hasListeners() : this.port.onMessage.hasListener(this.handler)\n}\n\n/**\n * BrowserRuntimeConnection stamp\n * Handle browser runtime communication\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {Object} params.port - Runtime `port` object\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, port, debug = false }) {\n if (!getBrowserAPI().runtime) throw new Error('Runtime is not accessible in your environment')\n this.debug = debug\n this.connectionInfo = connectionInfo\n this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined])\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"aepp-sdk.browser.js","mappings":"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","sources":["webpack://Ae/webpack/universalModuleDefinition","webpack://Ae/external umd \"@aeternity/aepp-calldata\"","webpack://Ae/external umd \"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"","webpack://Ae/external umd \"@aeternity/blakejs\"","webpack://Ae/external umd \"@aeternity/json-bigint\"","webpack://Ae/external umd \"@aeternity/uuid\"","webpack://Ae/external umd \"@stamp/it\"","webpack://Ae/external umd \"@stamp/required\"","webpack://Ae/external umd \"aes-js\"","webpack://Ae/external umd \"bignumber.js\"","webpack://Ae/external umd \"bip32-path\"","webpack://Ae/external umd \"bs58\"","webpack://Ae/external umd \"buffer\"","webpack://Ae/external umd \"cross-fetch\"","webpack://Ae/external umd \"events\"","webpack://Ae/external umd \"rlp\"","webpack://Ae/external umd \"sha.js\"","webpack://Ae/external umd \"swagger-client\"","webpack://Ae/external umd \"tweetnacl\"","webpack://Ae/external umd \"tweetnacl-auth\"","webpack://Ae/external umd \"websocket\"","webpack://Ae/webpack/bootstrap","webpack://Ae/webpack/runtime/compat get default export","webpack://Ae/webpack/runtime/define property getters","webpack://Ae/webpack/runtime/hasOwnProperty shorthand","webpack://Ae/webpack/runtime/make namespace object","webpack://Ae/./src/utils/errors.ts","webpack://Ae/./src/utils/string.ts","webpack://Ae/./src/utils/bytes.ts","webpack://Ae/./src/utils/crypto-ts.ts","webpack://Ae/./src/tx/builder/field-types.js","webpack://Ae/./src/tx/builder/schema.js","webpack://Ae/./src/utils/bignumber.ts","webpack://Ae/./src/tx/builder/helpers.js","webpack://Ae/./src/utils/crypto.js","webpack://Ae/./src/utils/keystore.js","webpack://Ae/./src/utils/amount-formatter.ts","webpack://Ae/./src/utils/mptree.ts","webpack://Ae/./src/tx/builder/index.js","webpack://Ae/./src/utils/hd-wallet.js","webpack://Ae/./src/tx/index.js","webpack://Ae/./src/chain/index.js","webpack://Ae/./src/utils/async-init.js","webpack://Ae/./src/utils/json-big.js","webpack://Ae/./src/utils/other.ts","webpack://Ae/./src/utils/swagger.js","webpack://Ae/./src/utils/semver-satisfies.ts","webpack://Ae/./src/node.js","webpack://Ae/./src/account/base.js","webpack://Ae/./src/ae/index.js","webpack://Ae/./src/tx/validator.js","webpack://Ae/./src/node-pool/index.js","webpack://Ae/./src/chain/node.js","webpack://Ae/./src/tx/tx-object.js","webpack://Ae/./src/tx/tx.js","webpack://Ae/./src/account/memory.js","webpack://Ae/./src/account/multiple.js","webpack://Ae/./src/ae/aens.js","webpack://Ae/./src/contract/compiler.js","webpack://Ae/./src/ae/contract.js","webpack://Ae/./src/contract/aci.js","webpack://Ae/./src/contract/ga/helpers.js","webpack://Ae/./src/contract/ga/index.js","webpack://Ae/./src/utils/aepp-wallet-communication/schema.ts","webpack://Ae/./src/utils/aepp-wallet-communication/helpers.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/rpc-client.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/aepp-rpc.js","webpack://Ae/./src/ae/oracle.js","webpack://Ae/./src/ae/aepp.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/wallet-rpc.js","webpack://Ae/./src/ae/wallet.js","webpack://Ae/./src/channel/internal.js","webpack://Ae/./src/channel/handlers.js","webpack://Ae/./src/channel/index.js","webpack://Ae/./src/ae/universal.js","webpack://Ae/./src/utils/aepp-wallet-communication/content-script-bridge.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/index.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/browser-window-message.js","webpack://Ae/./src/utils/aepp-wallet-communication/wallet-detector.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/browser-runtime.js","webpack://Ae/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@stamp/it\"), require(\"@aeternity/uuid\"), require(\"@stamp/required\"), require(\"bignumber.js\"), require(\"bs58\"), require(\"tweetnacl\"), require(\"aes-js\"), require(\"sha.js\"), require(\"@aeternity/blakejs\"), require(\"buffer\"), require(\"rlp\"), require(\"swagger-client\"), require(\"cross-fetch\"), require(\"@aeternity/json-bigint\"), require(\"@aeternity/aepp-calldata\"), require(\"websocket\"), require(\"events\"), require(\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"), require(\"tweetnacl-auth\"), require(\"bip32-path\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@stamp/it\", \"@aeternity/uuid\", \"@stamp/required\", \"bignumber.js\", \"bs58\", \"tweetnacl\", \"aes-js\", \"sha.js\", \"@aeternity/blakejs\", \"buffer\", \"rlp\", \"swagger-client\", \"cross-fetch\", \"@aeternity/json-bigint\", \"@aeternity/aepp-calldata\", \"websocket\", \"events\", \"@aeternity/argon2-browser/dist/argon2-bundled.min.js\", \"tweetnacl-auth\", \"bip32-path\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Ae\"] = factory(require(\"@stamp/it\"), require(\"@aeternity/uuid\"), require(\"@stamp/required\"), require(\"bignumber.js\"), require(\"bs58\"), require(\"tweetnacl\"), require(\"aes-js\"), require(\"sha.js\"), require(\"@aeternity/blakejs\"), require(\"buffer\"), require(\"rlp\"), require(\"swagger-client\"), require(\"cross-fetch\"), require(\"@aeternity/json-bigint\"), require(\"@aeternity/aepp-calldata\"), require(\"websocket\"), require(\"events\"), require(\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"), require(\"tweetnacl-auth\"), require(\"bip32-path\"));\n\telse\n\t\troot[\"Ae\"] = factory(root[\"@stamp/it\"], root[\"@aeternity/uuid\"], root[\"@stamp/required\"], root[\"bignumber.js\"], root[\"bs58\"], root[\"tweetnacl\"], root[\"aes-js\"], root[\"sha.js\"], root[\"@aeternity/blakejs\"], root[\"buffer\"], root[\"rlp\"], root[\"swagger-client\"], root[\"cross-fetch\"], root[\"@aeternity/json-bigint\"], root[\"@aeternity/aepp-calldata\"], root[\"websocket\"], root[\"events\"], root[\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"], root[\"tweetnacl-auth\"], root[\"bip32-path\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__910__, __WEBPACK_EXTERNAL_MODULE__983__, __WEBPACK_EXTERNAL_MODULE__180__, __WEBPACK_EXTERNAL_MODULE__192__, __WEBPACK_EXTERNAL_MODULE__783__, __WEBPACK_EXTERNAL_MODULE__79__, __WEBPACK_EXTERNAL_MODULE__236__, __WEBPACK_EXTERNAL_MODULE__433__, __WEBPACK_EXTERNAL_MODULE__343__, __WEBPACK_EXTERNAL_MODULE__408__, __WEBPACK_EXTERNAL_MODULE__485__, __WEBPACK_EXTERNAL_MODULE__659__, __WEBPACK_EXTERNAL_MODULE__503__, __WEBPACK_EXTERNAL_MODULE__911__, __WEBPACK_EXTERNAL_MODULE__946__, __WEBPACK_EXTERNAL_MODULE__397__, __WEBPACK_EXTERNAL_MODULE__735__, __WEBPACK_EXTERNAL_MODULE__289__, __WEBPACK_EXTERNAL_MODULE__882__, __WEBPACK_EXTERNAL_MODULE__986__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__946__;","module.exports = __WEBPACK_EXTERNAL_MODULE__289__;","module.exports = __WEBPACK_EXTERNAL_MODULE__343__;","module.exports = __WEBPACK_EXTERNAL_MODULE__911__;","module.exports = __WEBPACK_EXTERNAL_MODULE__983__;","module.exports = __WEBPACK_EXTERNAL_MODULE__910__;","module.exports = __WEBPACK_EXTERNAL_MODULE__180__;","module.exports = __WEBPACK_EXTERNAL_MODULE__236__;","module.exports = __WEBPACK_EXTERNAL_MODULE__192__;","module.exports = __WEBPACK_EXTERNAL_MODULE__986__;","module.exports = __WEBPACK_EXTERNAL_MODULE__783__;","module.exports = __WEBPACK_EXTERNAL_MODULE__408__;","module.exports = __WEBPACK_EXTERNAL_MODULE__503__;","module.exports = __WEBPACK_EXTERNAL_MODULE__735__;","module.exports = __WEBPACK_EXTERNAL_MODULE__485__;","module.exports = __WEBPACK_EXTERNAL_MODULE__433__;","module.exports = __WEBPACK_EXTERNAL_MODULE__659__;","module.exports = __WEBPACK_EXTERNAL_MODULE__79__;","module.exports = __WEBPACK_EXTERNAL_MODULE__882__;","module.exports = __WEBPACK_EXTERNAL_MODULE__397__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Error module\n * @module @aeternity/aepp-sdk/es/utils/errors\n * @example import { BytecodeMismatchError } from '@aeternity/aepp-sdk'\n */\n\n/**\n * aepp-sdk originated error\n */\nexport abstract class BaseError extends Error {\n constructor (message: string) {\n super(message)\n this.name = 'BaseError'\n }\n}\n\nexport class AccountError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'AccountError'\n }\n}\n\nexport class AensError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'AensError'\n }\n}\n\nexport class AeppError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'AeppError'\n }\n}\n\nexport class ChannelError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'ChannelError'\n }\n}\n\nexport class CompilerError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'CompilerError'\n }\n}\n\nexport class ContractError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'ContractError'\n }\n}\n\nexport class CryptographyError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'CryptographyError'\n }\n}\n\nexport class NodeError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'NodeError'\n }\n}\n\nexport class TransactionError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'TransactionError'\n }\n}\n\nexport class WalletError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'WalletError'\n }\n}\n\n/* Common error patterns */\nexport class ArgumentError extends BaseError {\n constructor (argumentName: string, requirement: string, argumentValue: any) {\n super(`${argumentName} should be ${requirement}, got ${argumentValue} instead`)\n this.name = 'ArgumentError'\n }\n}\n\nexport class IllegalArgumentError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'IllegalArgumentError'\n }\n}\n\nexport class ArgumentCountMismatchError extends BaseError {\n constructor (functionName: string, requiredCount: number, providedCount: number) {\n super(`${functionName} expects ${requiredCount} arguments, got ${providedCount} instead`)\n this.name = 'ArgumentCountMismatchError'\n }\n}\n\nexport class InsufficientBalanceError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'InsufficientBalanceError'\n }\n}\n\nexport class InvalidDenominationError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidDenominationError'\n }\n}\n\nexport class InvalidNameError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidNameError'\n }\n}\n\nexport class MissingParamError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'MissingParamError'\n }\n}\n\nexport class NoBrowserFoundError extends BaseError {\n constructor () {\n super('Browser is not detected')\n this.name = 'NoBrowserFoundError'\n }\n}\n\nexport class NoSerializerFoundError extends BaseError {\n constructor () {\n super('Byte serialization not supported')\n this.name = 'NoSerializerFoundError'\n }\n}\n\nexport class RequestTimedOutError extends BaseError {\n constructor (requestTime: number);\n constructor (requestTime: number, currentHeight?: number, height?: number) {\n if (currentHeight !== undefined && height !== undefined) {\n super(`Giving up after ${requestTime}ms, current height: ${currentHeight}, desired height: ${height}`)\n } else {\n super(`Giving up after ${requestTime} ms`)\n }\n this.name = 'RequestTimedOutError'\n }\n}\n\nexport class TxTimedOutError extends BaseError {\n constructor (blocks: number, th: string, status?: string) {\n super([\n `Giving up after ${blocks} blocks mined`,\n `transaction hash: ${th}`,\n ...status ? [`status: ${status}`] : []\n ].join(', '))\n this.name = 'TxTimedOutError'\n }\n}\n\nexport class TypeError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'TypeError'\n }\n}\n\nexport class UnsupportedPlatformError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'UnsupportedPlatformError'\n }\n}\n\nexport class UnsupportedProtocolError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'UnsupportedProtocolError'\n }\n}\n\nexport class NotImplementedError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'NotImplementedError'\n }\n}\n\nexport class UnsupportedVersionError extends BaseError {\n constructor (dependency: string, version: string, geVersion: string, ltVersion: string) {\n super(`Unsupported ${dependency} version ${version}. Supported: >= ${geVersion} < ${ltVersion}`)\n this.name = 'UnsupportedVersionError'\n }\n}\n\nexport class InternalError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'InternalError'\n }\n}\n\n/* keypair an account related errors */\nexport class InvalidKeypairError extends AccountError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidKeypairError'\n }\n}\n\nexport class UnavailableAccountError extends AccountError {\n constructor (address: string) {\n super(`Account for ${address} not available`)\n this.name = 'UnavailableAccountError'\n }\n}\n\n/* errors originating from AENS operation */\nexport class AensPointerContextError extends AensError {\n constructor (nameOrId: string, prefix: string) {\n super(`Name ${nameOrId} don't have pointers for ${prefix}`)\n this.name = 'AensPointerContextError'\n }\n}\n\nexport class InsufficientNameFeeError extends AensError {\n constructor (nameFee: number, minNameFee: number) {\n super(`the provided fee ${nameFee} is not enough to execute the claim, required: ${minNameFee}`)\n this.name = 'InsufficientNameFeeError'\n }\n}\n\nexport class InvalidAensNameError extends AensError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidAensNameError'\n }\n}\n\n/* Aepp Errors */\nexport class DuplicateCallbackError extends AeppError {\n constructor () {\n super('Callback Already exist')\n this.name = 'DuplicateCallbackError'\n }\n}\n\nexport class InvalidRpcMessageError extends AeppError {\n constructor (message: string) {\n super(`Received invalid message: ${message}`)\n this.name = 'InvalidRpcMessageError'\n }\n}\n\nexport class MissingCallbackError extends AeppError {\n constructor (id: string) {\n super(`Can't find callback for this messageId ${id}`)\n this.name = 'MissingCallbackError'\n }\n}\n\nexport class UnAuthorizedAccountError extends AeppError {\n constructor (onAccount: string) {\n super(`You do not have access to account ${onAccount}`)\n this.name = 'UnAuthorizedAccountError'\n }\n}\n\nexport class UnknownRpcClientError extends AeppError {\n constructor (id: string) {\n super(`RpcClient with id ${id} do not exist`)\n this.name = 'UnknownRpcClientError'\n }\n}\n\nexport class UnsubscribedAccountError extends AeppError {\n constructor () {\n super('You are not subscribed for an account.')\n this.name = 'UnsubscribedAccountError'\n }\n}\n\n/* Channel originated errors */\nexport class ChannelCallError extends ChannelError {\n constructor (message: string) {\n super(message)\n this.name = 'ChannelCallError'\n }\n}\n\nexport class ChannelConnectionError extends ChannelError {\n constructor (message: string) {\n super(message)\n this.name = 'ChannelConnectionError'\n }\n}\n\nexport class ChannelPingTimedOutError extends ChannelError {\n constructor () {\n super('Server pong timed out')\n this.name = 'ChannelPingTimedOutError'\n }\n}\n\nexport class UnexpectedChannelMessageError extends ChannelError {\n constructor (message: string) {\n super(message)\n this.name = 'UnexpectedChannelMessageError'\n }\n}\n\nexport class UnknownChannelStateError extends ChannelError {\n constructor () {\n super('State Channels FSM entered unknown state')\n this.name = 'UnknownChannelStateError'\n }\n}\n\n/* compiler issued errors */\n/* errors from option validations */\nexport class InvalidAuthDataError extends CompilerError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidAuthDataError'\n }\n}\n\n/* contract invocation errors */\nexport class BytecodeMismatchError extends ContractError {\n constructor (source: string) {\n super(`Contract ${source} do not correspond to the bytecode deployed on the chain`)\n this.name = 'BytecodeMismatchError'\n }\n}\n\nexport class DuplicateContractError extends ContractError {\n constructor () {\n super('Contract already deployed')\n this.name = 'DuplicateContractError'\n }\n}\n\nexport class InactiveContractError extends ContractError {\n constructor (contractAddress: string) {\n super(`Contract with address ${contractAddress} not active`)\n this.name = 'InactiveContractError'\n }\n}\n\nexport class InvalidMethodInvocationError extends ContractError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidMethodInvocationError'\n }\n}\n\nexport class MissingContractAddressError extends ContractError {\n constructor (message: string) {\n super(message)\n this.name = 'MissingContractAddressError'\n }\n}\n\nexport class MissingContractDefError extends ContractError {\n constructor () {\n super('Either ACI or source code is required')\n this.name = 'MissingContractDefError'\n }\n}\n\nexport class MissingFunctionNameError extends ContractError {\n constructor () {\n super('Function name is required')\n this.name = 'MissingFunctionNameError'\n }\n}\n\nexport class NodeInvocationError extends ContractError {\n constructor (message?: string) {\n message = message ?? ''\n super(`Invocation failed${message === '' ? '' : `: \"${message}\"`}`)\n this.name = 'NodeInvocationError'\n }\n}\n\nexport class NoSuchContractFunctionError extends ContractError {\n constructor (name: string) {\n super(`Function ${name} doesn't exist in contract`)\n this.name = 'NoSuchContractFunctionError'\n }\n}\n\nexport class NotPayableFunctionError extends ContractError {\n constructor (amount: string, fn: string) {\n super(\n `You try to pay \"${amount}\" to function \"${fn}\" which is not payable. ` +\n 'Only payable function can accept tokens')\n this.name = 'NotPayableFunctionError'\n }\n}\n\nexport class MissingEventDefinitionError extends ContractError {\n constructor (eventNameHash: string, eventAddress: string) {\n super(\n `Can't find definition of ${eventNameHash} event emitted by ${eventAddress}` +\n ' (use omitUnknown option to ignore events like this)'\n )\n this.name = 'MissingEventDefinitionError'\n }\n}\n\nexport class AmbiguousEventDefinitionError extends ContractError {\n constructor (eventAddress: string, matchedEvents: [string, string][]) {\n super(\n `Found multiple definitions of \"${matchedEvents[0][1]}\" event emitted by ${eventAddress}` +\n ` in ${matchedEvents.map(([name]) => `\"${name}\"`).join(', ')} contracts` +\n ' (use contractAddressToName option to specify contract name corresponding to address)'\n )\n this.name = 'AmbiguousEventDefinitionError'\n }\n}\n\n/* cryptography errors */\nexport class InvalidChecksumError extends CryptographyError {\n constructor () {\n super('Invalid checksum')\n this.name = 'InvalidChecksumError'\n }\n}\n\nexport class InvalidDerivationPathError extends CryptographyError {\n constructor () {\n super('Invalid path')\n this.name = 'InvalidDerivationPathError'\n }\n}\n\nexport class InvalidKeyError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidKeyError'\n }\n}\n\nexport class InvalidPasswordError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidPasswordError'\n }\n}\n\nexport class MerkleTreeHashMismatchError extends CryptographyError {\n constructor () {\n super('Node hash is not equal to provided one')\n this.name = 'MerkleTreeHashMismatchError'\n }\n}\n\nexport class MissingNodeInTreeError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'MissingNodeInTreeError'\n }\n}\n\nexport class UnsupportedAlgorithmError extends CryptographyError {\n constructor (algo: string) {\n super(algo + ' is not available')\n this.name = 'UnsupportedAlgorithmError'\n }\n}\n\nexport class NotHardenedSegmentError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'NotHardenedSegmentError'\n }\n}\n\nexport class UnknownNodeLengthError extends CryptographyError {\n constructor (nodeLength: number) {\n super(`Unknown node length: ${nodeLength}`)\n this.name = 'UnknownNodeLengthError'\n }\n}\n\nexport class UnknownPathNibbleError extends CryptographyError {\n constructor (nibble: number) {\n super(`Unknown path nibble: ${nibble}`)\n this.name = 'UnknownPathNibbleError'\n }\n}\n\nexport class UnsupportedChildIndexError extends CryptographyError {\n constructor (index: string) {\n super(`Child index #${index} is not supported`)\n this.name = 'UnsupportedChildIndexError'\n }\n}\n\n/* Node errors */\nexport class DisconnectedError extends NodeError {\n constructor () {\n super('Can not get node info. Node is not connected')\n this.name = 'DisconnectedError'\n }\n}\n\nexport class DuplicateNodeError extends NodeError {\n constructor (name: string) {\n super(`Node with name ${name} already exist`)\n this.name = 'DuplicateNodeError'\n }\n}\n\nexport class NodeNotFoundError extends NodeError {\n constructor (message: string) {\n super(message)\n this.name = 'NodeNotFoundError'\n }\n}\n\n/* transaction related errors */\nexport class DecodeError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'DecodeError'\n }\n}\n\nexport class EncodeError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'EncodeError'\n }\n}\n\nexport class PayloadLengthError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'PayloadLengthError'\n }\n}\n\nexport class DryRunError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'DryRunError'\n }\n}\n\nexport class IllegalBidFeeError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'IllegalBidFeeError'\n }\n}\n\nexport class InvalidSignatureError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidSignatureError'\n }\n}\n\nexport class InvalidTxError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidTxError'\n }\n}\n\nexport class InvalidTxParamsError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidTxParamsError'\n }\n}\n\nexport class NoDefaultAensPointerError extends TransactionError {\n constructor (prefix: string) {\n super(`Default AENS pointer key is not defined for ${prefix} prefix`)\n this.name = 'NoDefaultAensPointerError'\n }\n}\n\nexport class PrefixMismatchError extends TransactionError {\n constructor (prefix: string, requiredPrefix: string) {\n super(`Encoded string have a wrong type: ${prefix} (expected: ${requiredPrefix})`)\n this.name = 'PrefixMismatchError'\n }\n}\n\nexport class PrefixNotFoundError extends TransactionError {\n constructor (tag: string) {\n super(`Prefix for id-tag ${tag} not found.`)\n this.name = 'PrefixNotFoundError'\n }\n}\n\nexport class SchemaNotFoundError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'SchemaNotFoundError'\n }\n}\n\nexport class TagNotFoundError extends TransactionError {\n constructor (prefix: string) {\n super(`Id tag for prefix ${prefix} not found.`)\n this.name = 'DecodeError'\n }\n}\n\nexport class TxNotInChainError extends TransactionError {\n constructor (txHash: string) {\n super(`Transaction ${txHash} is removed from chain`)\n this.name = 'TxNotInChainError'\n }\n}\n\nexport class UnknownTxError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'UnknownTxError'\n }\n}\n\nexport class UnsupportedABIversionError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'UnsupportedABIversionError'\n }\n}\n\nexport class UnsupportedVMversionError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'UnsupportedVMversionError'\n }\n}\n\n/* Wallet Errors */\nexport class AlreadyConnectedError extends WalletError {\n constructor (message: string) {\n super(message)\n this.name = 'AlreadyConnectedError'\n }\n}\n\nexport class MessageDirectionError extends WalletError {\n constructor (message: string) {\n super(message)\n this.name = 'MessageDirectionError'\n }\n}\n\nexport class NoWalletConnectedError extends WalletError {\n constructor (message: string) {\n super(message)\n this.name = 'NoWalletConnectedError'\n }\n}\n\nexport class RpcConnectionError extends WalletError {\n constructor (message: string) {\n super(message)\n this.name = 'RpcConnectionError'\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Convert string from snake_case to PascalCase\n * @rtype (s: String) => String\n * @param {String} s - String to convert\n * @return {String} Converted string\n */\nexport function snakeToPascal (s: string): string {\n return s.replace(/_./g, match => match[1].toUpperCase())\n}\n\n/**\n * Convert string from PascalCase to snake_case\n * @rtype (s: String) => String\n * @param {String} s - String to convert\n * @return {String} Converted string\n */\nexport function pascalToSnake (s: string): string {\n return s.replace(/[A-Z]/g, match => `_${match.toLowerCase()}`)\n}\n\n/**\n * Check whether a string is valid hex.\n * @param {string} str String to validate.\n * @return {boolean} True if the string is valid hex, false otherwise.\n */\nexport function isHex (str: string): boolean {\n return str.length % 2 === 0 && /^[0-9a-f]+$/i.test(str)\n}\n\n/**\n * Check whether a string is valid base-64.\n * @param {string} str String to validate.\n * @return {boolean} True if the string is valid base-64, false otherwise.\n */\nexport function isBase64 (str: string): boolean {\n if (str.length % 4 > 0 || /[^0-9a-z+/=]/i.test(str)) return false\n const index = str.indexOf('=')\n return index === -1 || /={1,2}/.test(str.slice(index))\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js'\nimport { NoSerializerFoundError, TypeError } from './errors'\nimport { isBase64, isHex } from './string'\n\n/**\n * Bytes module\n * @module @aeternity/aepp-sdk/es/utils/bytes\n * @example import { Crypto } from '@aeternity/aepp-sdk'\n */\n\n/**\n * Convert bignumber to byte array\n * @param {BigNumber} x bignumber instance\n * @return Buffer\n */\nexport function bigNumberToByteArray (x: BigNumber): Buffer {\n if (!x.isInteger()) throw new TypeError(`Unexpected not integer value: ${x.toFixed()}`)\n let hexString = x.toString(16)\n if (hexString.length % 2 === 1) hexString = '0' + hexString\n return Buffer.from(hexString, 'hex')\n}\n\n/**\n * Convert string, number, or BigNumber to byte array\n * @param {null|string|number|BigNumber} val\n * @param {boolean} big enables force conversion to BigNumber\n * @return Buffer\n */\nexport function toBytes (val?: null | string | number | BigNumber, big: boolean = false): Buffer {\n // Encode a value to bytes.\n // If the value is an int it will be encoded as bytes big endian\n // Raises ValueError if the input is not an int or string\n\n if (val === undefined || val === null) return Buffer.from([])\n if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val)\n return bigNumberToByteArray(val)\n }\n if (typeof val === 'string') {\n return Buffer.from(val)\n }\n throw new NoSerializerFoundError()\n}\n\n/**\n * Convert a string to a Buffer. If encoding is not specified, hex-encoding\n * will be used if the input is valid hex. If the input is valid base64 but\n * not valid hex, base64 will be used. Otherwise, utf8 will be used.\n * @param {string} str String to be converted.\n * @param {string} [enc] Encoding of the input string.\n * @return {buffer} Buffer containing the input data.\n */\nexport function str2buf (str: string, enc?: BufferEncoding): Buffer {\n return Buffer.from(\n str,\n enc ?? (isHex(str) ? 'hex' : undefined) ?? (isBase64(str) ? 'base64' : undefined)\n )\n}\n","/*\n * ISC License (ISC)\n * Copyright 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { blake2b } from '@aeternity/blakejs'\nimport type { Data } from 'blakejs'\n\n/**\n * Calculate 256bits Blake2b hash of `input`\n * @rtype (input: String) => hash: String\n * @param {Data} input - Data to hash\n * @return {Buffer} Hash\n */\nexport function hash (input: Data): Buffer {\n return Buffer.from(blake2b(input, undefined, 32)) // 256 bits\n}\n","import {\n writeId, readId, isNameValid, produceNameId, ensureNameValid, getMinimumNameFee, readInt, writeInt\n} from './helpers'\nimport { InsufficientNameFeeError, IllegalArgumentError } from '../../utils/errors'\n\nexport class Field {\n static serialize (value) {\n return value\n }\n\n static deserialize (value) {\n return value\n }\n}\n\nexport class Name extends Field {\n static serialize (value) {\n ensureNameValid(value)\n return Buffer.from(value)\n }\n\n static deserialize (value) {\n return value.toString()\n }\n}\n\nexport class NameId extends Field {\n static serialize (value) {\n return writeId(isNameValid(value) ? produceNameId(value) : value)\n }\n\n static deserialize (value) {\n return readId(value)\n }\n}\n\nexport class NameFee extends Field {\n static serialize (value, { name }) {\n const minNameFee = getMinimumNameFee(name)\n value ??= minNameFee\n if (minNameFee.gt(value)) {\n throw new InsufficientNameFeeError(value, minNameFee)\n }\n return writeInt(value)\n }\n\n static deserialize (value) {\n return readInt(value)\n }\n}\n\nexport class Deposit extends Field {\n static serialize (value, { name }) {\n if (+value) throw new IllegalArgumentError(`Contract deposit is not refundable, so it should be equal 0, got ${value} instead`)\n return writeInt(0)\n }\n\n static deserialize (value) {\n return readInt(value)\n }\n}\n","/**\n * Transaction Schema for TxBuilder\n * @module @aeternity/aepp-sdk/es/tx/builder/schema\n * @export TxSchema\n * @example import { SCHEMA } from '@aeternity/aepp-sdk'\n */\n// # RLP version number\n// # https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization\n\nimport BigNumber from 'bignumber.js'\nimport { Name, NameId, NameFee, Deposit } from './field-types'\n\nexport const VSN = 1\nexport const VSN_2 = 2\n\n// # TRANSACTION DEFAULT TTL\nexport const TX_TTL = 0\n// # ORACLE\nexport const QUERY_FEE = 30000\nexport const ORACLE_TTL = { type: 'delta', value: 500 }\nexport const QUERY_TTL = { type: 'delta', value: 10 }\nexport const RESPONSE_TTL = { type: 'delta', value: 10 }\n// # CONTRACT\nexport const AMOUNT = 0\nexport const GAS_MAX = 1600000 - 21000\nexport const MIN_GAS_PRICE = 1e9\nexport const MAX_AUTH_FUN_GAS = 50000\nexport const DRY_RUN_ACCOUNT = { pub: 'ak_11111111111111111111111111111111273Yts', amount: '100000000000000000000000000000000000' }\n// # AENS\nexport const NAME_TTL = 180000\n// # max number of block into the future that the name is going to be available\n// # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update\n// # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry\nexport const NAME_MAX_TTL = 36000\nexport const NAME_MAX_CLIENT_TTL = 84600\nexport const CLIENT_TTL = NAME_MAX_CLIENT_TTL\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67\nexport const NAME_FEE_MULTIPLIER = 1e14 // 100000000000000\nexport const NAME_FEE_BID_INCREMENT = 0.05 // # the increment is in percentage\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272\nexport const NAME_BID_TIMEOUT_BLOCKS = 480 // # ~1 day\n// # this is the max length for a domain that requires a base fee to be paid\nexport const NAME_MAX_LENGTH_FEE = 31\nexport const NAME_BID_MAX_LENGTH = 12 // # this is the max length for a domain to be part of a bid\nexport const POINTER_KEY_BY_PREFIX = {\n ak: 'account_pubkey',\n ok: 'oracle_pubkey',\n ct: 'contract_pubkey',\n ch: 'channel'\n}\n// # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290\n// # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times\n// # bid ranges:\nexport const NAME_BID_RANGES = {\n 31: BigNumber(3).times(NAME_FEE_MULTIPLIER),\n 30: BigNumber(5).times(NAME_FEE_MULTIPLIER),\n 29: BigNumber(8).times(NAME_FEE_MULTIPLIER),\n 28: BigNumber(13).times(NAME_FEE_MULTIPLIER),\n 27: BigNumber(21).times(NAME_FEE_MULTIPLIER),\n 26: BigNumber(34).times(NAME_FEE_MULTIPLIER),\n 25: BigNumber(55).times(NAME_FEE_MULTIPLIER),\n 24: BigNumber(89).times(NAME_FEE_MULTIPLIER),\n 23: BigNumber(144).times(NAME_FEE_MULTIPLIER),\n 22: BigNumber(233).times(NAME_FEE_MULTIPLIER),\n 21: BigNumber(377).times(NAME_FEE_MULTIPLIER),\n 20: BigNumber(610).times(NAME_FEE_MULTIPLIER),\n 19: BigNumber(987).times(NAME_FEE_MULTIPLIER),\n 18: BigNumber(1597).times(NAME_FEE_MULTIPLIER),\n 17: BigNumber(2584).times(NAME_FEE_MULTIPLIER),\n 16: BigNumber(4181).times(NAME_FEE_MULTIPLIER),\n 15: BigNumber(6765).times(NAME_FEE_MULTIPLIER),\n 14: BigNumber(10946).times(NAME_FEE_MULTIPLIER),\n 13: BigNumber(17711).times(NAME_FEE_MULTIPLIER),\n 12: BigNumber(28657).times(NAME_FEE_MULTIPLIER),\n 11: BigNumber(46368).times(NAME_FEE_MULTIPLIER),\n 10: BigNumber(75025).times(NAME_FEE_MULTIPLIER),\n 9: BigNumber(121393).times(NAME_FEE_MULTIPLIER),\n 8: BigNumber(196418).times(NAME_FEE_MULTIPLIER),\n 7: BigNumber(317811).times(NAME_FEE_MULTIPLIER),\n 6: BigNumber(514229).times(NAME_FEE_MULTIPLIER),\n 5: BigNumber(832040).times(NAME_FEE_MULTIPLIER),\n 4: BigNumber(1346269).times(NAME_FEE_MULTIPLIER),\n 3: BigNumber(2178309).times(NAME_FEE_MULTIPLIER),\n 2: BigNumber(3524578).times(NAME_FEE_MULTIPLIER),\n 1: BigNumber(5702887).times(NAME_FEE_MULTIPLIER)\n}\n\n// # ref: https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273\n// # name bid timeouts\nexport const NAME_BID_TIMEOUTS = {\n 13: BigNumber(0),\n 12: BigNumber(NAME_BID_TIMEOUT_BLOCKS), // # 480 blocks\n 8: BigNumber(31).times(NAME_BID_TIMEOUT_BLOCKS), // # 14880 blocks\n 4: BigNumber(62).times(NAME_BID_TIMEOUT_BLOCKS) // # 29760 blocks\n}\n\n// # Tag constant for ids (type uint8)\n// # see https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type\n// # <<Tag:1/unsigned-integer-unit:8, Hash:32/binary-unit:8>>\nconst ID_TAG_ACCOUNT = 1\nconst ID_TAG_NAME = 2\nconst ID_TAG_COMMITMENT = 3\nconst ID_TAG_ORACLE = 4\nconst ID_TAG_CONTRACT = 5\nconst ID_TAG_CHANNEL = 6\n\n// # OBJECT tags\n// # see https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization\nconst OBJECT_TAG_ACCOUNT = 10\nexport const OBJECT_TAG_SIGNED_TRANSACTION = 11\nconst OBJECT_TAG_SPEND_TRANSACTION = 12\nconst OBJECT_TAG_ORACLE_REGISTER_TRANSACTION = 22\nconst OBJECT_TAG_ORACLE_QUERY_TRANSACTION = 23\nconst OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION = 24\nconst OBJECT_TAG_ORACLE_EXTEND_TRANSACTION = 25\nconst OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION = 32\nconst OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION = 33\nconst OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION = 34\nconst OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION = 35\nconst OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION = 36\nconst OBJECT_TAG_CONTRACT = 40\nconst OBJECT_TAG_CONTRACT_CALL = 41\nconst OBJECT_TAG_CONTRACT_CREATE_TRANSACTION = 42\nconst OBJECT_TAG_CONTRACT_CALL_TRANSACTION = 43\nconst OBJECT_TAG_CHANNEL_CREATE_TX = 50\nconst OBJECT_TAG_CHANNEL_DEPOSIT_TX = 51\nconst OBJECT_TAG_CHANNEL_WITHRAW_TX = 52\nconst OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX = 53\nconst OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX = 54\nconst OBJECT_TAG_CHANNEL_SLASH_TX = 55\nconst OBJECT_TAG_CHANNEL_SETTLE_TX = 56\nconst OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX = 521\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_TX = 57\nconst OBJECT_TAG_CHANNEL = 58\nconst OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX = 59\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX = 570\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX = 571\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX = 572\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX = 573\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX = 574\nconst OBJECT_TAG_CHANNEL_RECONNECT_TX = 575\nconst OBJECT_TAG_PROOF_OF_INCLUSION = 60\nconst OBJECT_TAG_STATE_TREES = 62\nconst OBJECT_TAG_MERKLE_PATRICIA_TREE = 63\nconst OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE = 64\nconst OBJECT_TAG_CONTRACTS_TREE = 621\nconst OBJECT_TAG_CONTRACT_CALLS_TREE = 622\nconst OBJECT_TAG_CHANNELS_TREE = 623\nconst OBJECT_TAG_NAMESERVICE_TREE = 624\nconst OBJECT_TAG_ORACLES_TREE = 625\nconst OBJECT_TAG_ACCOUNTS_TREE = 626\nconst OBJECT_TAG_GA_ATTACH = 80\nconst OBJECT_TAG_GA_META = 81\nconst OBJECT_TAG_PAYING_FOR = 82\nconst OBJECT_TAG_SOPHIA_BYTE_CODE = 70\n\nconst TX_FIELD = (name, type, prefix) => [name, type, prefix]\nconst TX_SCHEMA_FIELD = (schema, objectId) => [schema, objectId]\n\nconst revertObject = (obj) => Object.entries(obj)\n .reduce((acc, [key, v]) => (acc[v] = key) && acc, {})\n\n/**\n * @constant\n * @description Object with transaction types\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/schema\n * @property {String} signed\n * @property {String} spend\n * @property {String} nameClaim\n * @property {String} namePreClaim\n * @property {String} nameUpdate\n * @property {String} nameRevoke\n * @property {String} nameTransfer\n * @property {String} contractCreate\n * @property {String} contractCall\n * @property {String} oracleRegister\n * @property {String} oracleExtend\n * @property {String} oracleQuery\n * @property {String} oracleResponse\n */\nexport const TX_TYPE = {\n account: 'account',\n signed: 'signedTx',\n spend: 'spendTx',\n // AENS\n nameClaim: 'nameClaimTx',\n namePreClaim: 'namePreClaimTx',\n nameUpdate: 'nameUpdateTx',\n nameRevoke: 'nameRevokeTx',\n nameTransfer: 'nameTransfer',\n // CONTRACT\n contract: 'contract',\n contractCreate: 'contractCreateTx',\n contractCall: 'contractCallTx',\n contractCallResult: 'contractCallResult',\n // ORACLE\n oracleRegister: 'oracleRegister',\n oracleExtend: 'oracleExtend',\n oracleQuery: 'oracleQuery',\n oracleResponse: 'oracleResponse',\n // STATE CHANNEL\n channelCreate: 'channelCreate',\n channelCloseMutual: 'channelCloseMutual',\n channelCloseSolo: 'channelCloseSolo',\n channelSlash: 'channelSlash',\n channelDeposit: 'channelDeposit',\n channelWithdraw: 'channelWithdraw',\n channelSettle: 'channelSettle',\n channelOffChain: 'channelOffChain',\n channelForceProgress: 'channelForceProgress',\n channel: 'channel',\n channelSnapshotSolo: 'channelSnapshotSolo',\n channelOffChainUpdateTransfer: 'channelOffChainUpdateTransfer',\n channelOffChainUpdateDeposit: 'channelOffChainUpdateDeposit',\n channelOffChainUpdateWithdrawal: 'channelOffChainUpdateWithdrawal',\n channelOffChainCreateContract: 'channelOffChainCreateContract',\n channelOffChainCallContract: 'channelOffChainCallContract',\n channelReconnect: 'channelReconnect',\n proofOfInclusion: 'proofOfInclusion',\n stateTrees: 'stateTrees',\n merklePatriciaTree: 'merklePatriciaTree',\n merklePatriciaTreeValue: 'merklePatriciaTreeValue',\n contractsTree: 'contractsTree',\n contractCallsTree: 'contractCallsTree',\n channelsTree: 'channelsTree',\n nameserviceTree: 'nameserviceTree',\n oraclesTree: 'oraclesTree',\n accountsTree: 'accountsTree',\n gaAttach: 'gaAttach',\n gaMeta: 'gaMeta',\n payingFor: 'payingFor',\n sophiaByteCode: 'sophiaByteCode'\n}\n\n// # see https://github.com/aeternity/protocol/blob/minerva/contracts/contract_vms.md#virtual-machines-on-the-%C3%A6ternity-blockchain\nexport const VM_VERSIONS = {\n NO_VM: 0,\n SOPHIA: 1,\n SOPHIA_IMPROVEMENTS_MINERVA: 3,\n SOPHIA_IMPROVEMENTS_FORTUNA: 4,\n FATE: 5,\n SOPHIA_IMPROVEMENTS_LIMA: 6,\n FATE_2: 7\n}\n// # see https://github.com/aeternity/protocol/blob/minerva/contracts/contract_vms.md#virtual-machines-on-the-%C3%A6ternity-blockchain\nexport const ABI_VERSIONS = {\n NO_ABI: 0,\n SOPHIA: 1,\n FATE: 3\n}\n\nexport const PROTOCOL_VERSIONS = {\n IRIS: 5\n}\n\n// First abi/vm by default\nexport const PROTOCOL_VM_ABI = {\n [PROTOCOL_VERSIONS.IRIS]: {\n [TX_TYPE.contractCreate]: {\n vmVersion: [VM_VERSIONS.FATE_2], abiVersion: [ABI_VERSIONS.FATE]\n },\n // TODO: Ensure that AEVM is still available here\n [TX_TYPE.contractCall]: {\n vmVersion: [\n VM_VERSIONS.FATE_2,\n VM_VERSIONS.FATE,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_LIMA,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_FORTUNA,\n VM_VERSIONS.SOPHIA,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_MINERVA\n ],\n abiVersion: [ABI_VERSIONS.FATE, ABI_VERSIONS.SOPHIA]\n },\n [TX_TYPE.oracleRegister]: {\n vmVersion: [], abiVersion: [ABI_VERSIONS.NO_ABI, ABI_VERSIONS.SOPHIA]\n }\n }\n}\n\nexport const OBJECT_ID_TX_TYPE = {\n [OBJECT_TAG_ACCOUNT]: TX_TYPE.account,\n [OBJECT_TAG_SIGNED_TRANSACTION]: TX_TYPE.signed,\n [OBJECT_TAG_SPEND_TRANSACTION]: TX_TYPE.spend,\n // AENS\n [OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION]: TX_TYPE.nameClaim,\n [OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION]: TX_TYPE.namePreClaim,\n [OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION]: TX_TYPE.nameUpdate,\n [OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION]: TX_TYPE.nameRevoke,\n [OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION]: TX_TYPE.nameTransfer,\n // CONTRACT\n [OBJECT_TAG_CONTRACT]: TX_TYPE.contract,\n [OBJECT_TAG_CONTRACT_CREATE_TRANSACTION]: TX_TYPE.contractCreate,\n [OBJECT_TAG_CONTRACT_CALL_TRANSACTION]: TX_TYPE.contractCall,\n [OBJECT_TAG_CONTRACT_CALL]: TX_TYPE.contractCallResult,\n // ORACLE\n [OBJECT_TAG_ORACLE_REGISTER_TRANSACTION]: TX_TYPE.oracleRegister,\n [OBJECT_TAG_ORACLE_EXTEND_TRANSACTION]: TX_TYPE.oracleExtend,\n [OBJECT_TAG_ORACLE_QUERY_TRANSACTION]: TX_TYPE.oracleQuery,\n [OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION]: TX_TYPE.oracleResponse,\n // STATE CHANNEL\n [OBJECT_TAG_CHANNEL_CREATE_TX]: TX_TYPE.channelCreate,\n [OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX]: TX_TYPE.channelCloseMutual,\n [OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX]: TX_TYPE.channelCloseSolo,\n [OBJECT_TAG_CHANNEL_SLASH_TX]: TX_TYPE.channelSlash,\n [OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX]: TX_TYPE.channelForceProgress,\n [OBJECT_TAG_CHANNEL_DEPOSIT_TX]: TX_TYPE.channelDeposit,\n [OBJECT_TAG_CHANNEL_WITHRAW_TX]: TX_TYPE.channelWithdraw,\n [OBJECT_TAG_CHANNEL_SETTLE_TX]: TX_TYPE.channelSettle,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_TX]: TX_TYPE.channelOffChain,\n [OBJECT_TAG_CHANNEL]: TX_TYPE.channel,\n [OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX]: TX_TYPE.channelSnapshotSolo,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX]: TX_TYPE.channelOffChainUpdateTransfer,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX]: TX_TYPE.channelOffChainUpdateDeposit,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX]: TX_TYPE.channelOffChainUpdateWithdrawal,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX]: TX_TYPE.channelOffChainCreateContract,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX]: TX_TYPE.channelOffChainCallContract,\n [OBJECT_TAG_CHANNEL_RECONNECT_TX]: TX_TYPE.channelReconnect,\n [OBJECT_TAG_PROOF_OF_INCLUSION]: TX_TYPE.proofOfInclusion,\n [OBJECT_TAG_STATE_TREES]: TX_TYPE.stateTrees,\n [OBJECT_TAG_MERKLE_PATRICIA_TREE]: TX_TYPE.merklePatriciaTree,\n [OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE]: TX_TYPE.merklePatriciaTreeValue,\n [OBJECT_TAG_CONTRACTS_TREE]: TX_TYPE.contractsTree,\n [OBJECT_TAG_CONTRACT_CALLS_TREE]: TX_TYPE.contractCallsTree,\n [OBJECT_TAG_CHANNELS_TREE]: TX_TYPE.channelsTree,\n [OBJECT_TAG_NAMESERVICE_TREE]: TX_TYPE.nameserviceTree,\n [OBJECT_TAG_ORACLES_TREE]: TX_TYPE.oraclesTree,\n [OBJECT_TAG_ACCOUNTS_TREE]: TX_TYPE.accountsTree,\n [OBJECT_TAG_GA_ATTACH]: TX_TYPE.gaAttach,\n [OBJECT_TAG_GA_META]: TX_TYPE.gaMeta,\n [OBJECT_TAG_PAYING_FOR]: TX_TYPE.payingFor,\n [OBJECT_TAG_SOPHIA_BYTE_CODE]: TX_TYPE.sophiaByteCode\n}\n\nexport const FIELD_TYPES = {\n int: 'int',\n amount: 'amount',\n id: 'id',\n ids: 'ids',\n string: 'string',\n binary: 'binary',\n rlpBinary: 'rlpBinary',\n rlpBinaries: 'rlpBinaries',\n rawBinary: 'rawBinary',\n bool: 'bool',\n hex: 'hex',\n signatures: 'signatures',\n pointers: 'pointers',\n offChainUpdates: 'offChainUpdates',\n callStack: 'callStack',\n proofOfInclusion: 'proofOfInclusion',\n mptrees: 'mptrees',\n callReturnType: 'callReturnType',\n ctVersion: 'ctVersion',\n sophiaCodeTypeInfo: 'sophiaCodeTypeInfo',\n payload: 'payload',\n any: 'any',\n stateTree: 'stateTree'\n}\n\n// FEE CALCULATION\nexport const BASE_GAS = 15000\nexport const GAS_PER_BYTE = 20\nexport const DEFAULT_FEE = 20000\nexport const KEY_BLOCK_INTERVAL = 3\n\n// MAP WITH FEE CALCULATION https://github.com/aeternity/protocol/blob/master/consensus/consensus.md#gas\nexport const TX_FEE_BASE_GAS = (txType) => {\n const factor = ({\n [TX_TYPE.channelForceProgress]: 30,\n [TX_TYPE.channelOffChain]: 0,\n [TX_TYPE.channelOffChainCallContract]: 0,\n [TX_TYPE.channelOffChainCreateContract]: 0,\n [TX_TYPE.channelOffChainUpdateDeposit]: 0,\n [TX_TYPE.channelOffChainUpdateWithdrawal]: 0,\n [TX_TYPE.channelOffChainUpdateTransfer]: 0,\n [TX_TYPE.contractCreate]: 5,\n [TX_TYPE.contractCall]: 12,\n [TX_TYPE.gaAttach]: 5,\n [TX_TYPE.gaMeta]: 5,\n [TX_TYPE.payingFor]: 1 / 5\n })[txType] || 1\n return new BigNumber(factor * BASE_GAS)\n}\n\nexport const TX_FEE_OTHER_GAS = (txType, txSize, { relativeTtl, innerTxSize }) => {\n switch (txType) {\n case TX_TYPE.oracleRegister:\n case TX_TYPE.oracleExtend:\n case TX_TYPE.oracleQuery:\n case TX_TYPE.oracleResponse:\n return new BigNumber(txSize)\n .times(GAS_PER_BYTE)\n .plus(\n Math.ceil(32000 * relativeTtl / Math.floor(60 * 24 * 365 / KEY_BLOCK_INTERVAL))\n )\n case TX_TYPE.gaMeta:\n case TX_TYPE.payingFor:\n return new BigNumber(txSize).minus(innerTxSize).times(GAS_PER_BYTE)\n default:\n return new BigNumber(txSize).times(GAS_PER_BYTE)\n }\n}\n\nexport const ID_TAG = {\n account: ID_TAG_ACCOUNT,\n name: ID_TAG_NAME,\n commitment: ID_TAG_COMMITMENT,\n oracle: ID_TAG_ORACLE,\n contract: ID_TAG_CONTRACT,\n channel: ID_TAG_CHANNEL\n}\nexport const PREFIX_ID_TAG = {\n ak: ID_TAG.account,\n nm: ID_TAG.name,\n cm: ID_TAG.commitment,\n ok: ID_TAG.oracle,\n ct: ID_TAG.contract,\n ch: ID_TAG.channel\n}\nexport const ID_TAG_PREFIX = revertObject(PREFIX_ID_TAG)\n\nconst BASE_TX = [\n TX_FIELD('tag', FIELD_TYPES.int),\n TX_FIELD('VSN', FIELD_TYPES.int)\n]\n\nexport const CONTRACT_BYTE_CODE_LIMA = [\n ...BASE_TX,\n TX_FIELD('sourceCodeHash', FIELD_TYPES.rawBinary),\n TX_FIELD('typeInfo', FIELD_TYPES.sophiaCodeTypeInfo),\n TX_FIELD('byteCode', FIELD_TYPES.rawBinary),\n TX_FIELD('compilerVersion', FIELD_TYPES.string),\n TX_FIELD('payable', FIELD_TYPES.bool)\n]\n\nconst ACCOUNT_TX_2 = [\n ...BASE_TX,\n TX_FIELD('flags', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('balance', FIELD_TYPES.int),\n TX_FIELD('gaContract', FIELD_TYPES.id, ['ct', 'nm']),\n TX_FIELD('gaAuthFun', FIELD_TYPES.binary, 'cb')\n]\n\nconst SPEND_TX = [\n ...BASE_TX,\n TX_FIELD('senderId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('recipientId', FIELD_TYPES.id, ['ak', 'nm']),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('payload', FIELD_TYPES.payload)\n]\n\nconst SIGNED_TX = [\n ...BASE_TX,\n TX_FIELD('signatures', FIELD_TYPES.signatures),\n TX_FIELD('encodedTx', FIELD_TYPES.rlpBinary)\n]\n\nconst NAME_PRE_CLAIM_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('commitmentId', FIELD_TYPES.id, 'cm'),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_CLAIM_TX_2 = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('name', Name),\n TX_FIELD('nameSalt', FIELD_TYPES.int),\n TX_FIELD('nameFee', NameFee),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_UPDATE_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', NameId),\n TX_FIELD('nameTtl', FIELD_TYPES.int),\n TX_FIELD('pointers', FIELD_TYPES.pointers),\n TX_FIELD('clientTtl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_TRANSFER_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', NameId),\n TX_FIELD('recipientId', FIELD_TYPES.id, ['ak', 'nm']),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_REVOKE_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', NameId),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('owner', FIELD_TYPES.id, 'ak'),\n TX_FIELD('ctVersion', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('log', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('active', FIELD_TYPES.bool),\n TX_FIELD('referers', FIELD_TYPES.ids, 'ak'),\n TX_FIELD('deposit', Deposit)\n]\n\nconst GA_ATTACH_TX = [\n ...BASE_TX,\n TX_FIELD('ownerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('authFun', FIELD_TYPES.rawBinary),\n TX_FIELD('ctVersion', FIELD_TYPES.ctVersion),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst GA_META_TX_2 = [\n ...BASE_TX,\n TX_FIELD('gaId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('authData', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('tx', FIELD_TYPES.rlpBinary)\n]\n\nconst PAYING_FOR_TX = [\n ...BASE_TX,\n TX_FIELD('payerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('tx', FIELD_TYPES.rlpBinary)\n]\n\nconst CONTRACT_CREATE_TX = [\n ...BASE_TX,\n TX_FIELD('ownerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('ctVersion', FIELD_TYPES.ctVersion),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('deposit', Deposit),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CONTRACT_CALL_TX = [\n ...BASE_TX,\n TX_FIELD('callerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('contractId', FIELD_TYPES.id, ['ct', 'nm']),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CONTRACT_CALL_RESULT_TX = [\n ...BASE_TX,\n TX_FIELD('callerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('callerNonce', FIELD_TYPES.int),\n TX_FIELD('height', FIELD_TYPES.int),\n TX_FIELD('contractId', FIELD_TYPES.id, 'ct'),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('gasUsed', FIELD_TYPES.int),\n TX_FIELD('returnValue', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('returnType', FIELD_TYPES.callReturnType),\n // TODO: add serialization for\n // <log> :: [ { <address> :: id, [ <topics> :: binary() ], <data> :: binary() } ]\n TX_FIELD('log', FIELD_TYPES.rawBinary)\n]\n\nconst ORACLE_REGISTER_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('queryFormat', FIELD_TYPES.string),\n TX_FIELD('responseFormat', FIELD_TYPES.string),\n TX_FIELD('queryFee', FIELD_TYPES.amount),\n TX_FIELD('oracleTtlType', FIELD_TYPES.int),\n TX_FIELD('oracleTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('abiVersion', FIELD_TYPES.int)\n]\n\nconst ORACLE_EXTEND_TX = [\n ...BASE_TX,\n TX_FIELD('oracleId', FIELD_TYPES.id, ['ok', 'nm']),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('oracleTtlType', FIELD_TYPES.int),\n TX_FIELD('oracleTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst ORACLE_QUERY_TX = [\n ...BASE_TX,\n TX_FIELD('senderId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('oracleId', FIELD_TYPES.id, ['ok', 'nm']),\n TX_FIELD('query', FIELD_TYPES.string),\n TX_FIELD('queryFee', FIELD_TYPES.amount),\n TX_FIELD('queryTtlType', FIELD_TYPES.int),\n TX_FIELD('queryTtlValue', FIELD_TYPES.int),\n TX_FIELD('responseTtlType', FIELD_TYPES.int),\n TX_FIELD('responseTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\nconst ORACLE_RESPOND_TX = [\n ...BASE_TX,\n TX_FIELD('oracleId', FIELD_TYPES.id, 'ok'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('queryId', FIELD_TYPES.binary, 'oq'),\n TX_FIELD('response', FIELD_TYPES.string),\n TX_FIELD('responseTtlType', FIELD_TYPES.int),\n TX_FIELD('responseTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CREATE_TX_2 = [\n ...BASE_TX,\n TX_FIELD('initiator', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmount', FIELD_TYPES.int),\n TX_FIELD('responder', FIELD_TYPES.id, 'ak'),\n TX_FIELD('responderAmount', FIELD_TYPES.int),\n TX_FIELD('channelReserve', FIELD_TYPES.int),\n TX_FIELD('lockPeriod', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('initiatorDelegateIds', FIELD_TYPES.string),\n TX_FIELD('responderDelegateIds', FIELD_TYPES.string),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_DEPOSIT_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_WITHDRAW_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('toId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CLOSE_MUTUAL_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmountFinal', FIELD_TYPES.int),\n TX_FIELD('responderAmountFinal', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CLOSE_SOLO_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('poi', FIELD_TYPES.binary, 'pi'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_SLASH_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('poi', FIELD_TYPES.binary, 'pi'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_SETTLE_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmountFinal', FIELD_TYPES.int),\n TX_FIELD('responderAmountFinal', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_FORCE_PROGRESS_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('update', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('offChainTrees', FIELD_TYPES.stateTree),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_TX_2 = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st')\n]\n\nconst CHANNEL_TX_3 = [\n ...BASE_TX,\n TX_FIELD('initiator', FIELD_TYPES.id, 'ak'),\n TX_FIELD('responder', FIELD_TYPES.id, 'ak'),\n TX_FIELD('channelAmount', FIELD_TYPES.int),\n TX_FIELD('initiatorAmount', FIELD_TYPES.int),\n TX_FIELD('responderAmount', FIELD_TYPES.int),\n TX_FIELD('channelReserve', FIELD_TYPES.int),\n TX_FIELD('initiatorDelegateIds', FIELD_TYPES.ids),\n TX_FIELD('responderDelegateIds', FIELD_TYPES.ids),\n TX_FIELD('stateHash', FIELD_TYPES.hex),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('soloRound', FIELD_TYPES.int),\n TX_FIELD('lockPeriod', FIELD_TYPES.int),\n TX_FIELD('lockedUntil', FIELD_TYPES.int),\n TX_FIELD('initiatorAuth', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('responderAuth', FIELD_TYPES.binary, 'cb')\n]\n\nconst CHANNEL_SNAPSHOT_SOLO_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('owner', FIELD_TYPES.id, 'ak'),\n TX_FIELD('ctVersion', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('deposit', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CHANNEL_OFFCHAIN_CALL_CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('caller', FIELD_TYPES.id, 'ak'),\n TX_FIELD('contract', FIELD_TYPES.id, 'ct'),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('callStack', FIELD_TYPES.callStack),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('gasLimit', FIELD_TYPES.int)\n]\n\nconst CHANNEL_RECONNECT_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('role', FIELD_TYPES.string),\n TX_FIELD('pubkey', FIELD_TYPES.id, 'ak')\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('to', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst PROOF_OF_INCLUSION_TX = [\n ...BASE_TX,\n TX_FIELD('accounts', FIELD_TYPES.mptrees),\n TX_FIELD('calls', FIELD_TYPES.mptrees),\n TX_FIELD('channels', FIELD_TYPES.mptrees),\n TX_FIELD('contracts', FIELD_TYPES.mptrees),\n TX_FIELD('ns', FIELD_TYPES.mptrees),\n TX_FIELD('oracles', FIELD_TYPES.mptrees)\n]\n\nconst STATE_TREES_TX = [\n ...BASE_TX,\n TX_FIELD('contracts', FIELD_TYPES.rlpBinary),\n TX_FIELD('calls', FIELD_TYPES.rlpBinary),\n TX_FIELD('channels', FIELD_TYPES.rlpBinary),\n TX_FIELD('ns', FIELD_TYPES.rlpBinary),\n TX_FIELD('oracles', FIELD_TYPES.rlpBinary),\n TX_FIELD('accounts', FIELD_TYPES.rlpBinary)\n]\n\nconst MERKLE_PATRICIA_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('values', FIELD_TYPES.rlpBinaries)\n]\n\nconst MERKLE_PATRICIA_TREE_VALUE_TX = [\n ...BASE_TX,\n TX_FIELD('key', FIELD_TYPES.hex),\n TX_FIELD('value', FIELD_TYPES.rawBinary)\n]\n\nconst CONTRACTS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('contracts', FIELD_TYPES.rlpBinary)\n]\n\nconst CONTRACT_CALLS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('calls', FIELD_TYPES.rlpBinary)\n]\n\nconst CHANNELS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('channels', FIELD_TYPES.rlpBinary)\n]\n\nconst NAMESERVICE_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('mtree', FIELD_TYPES.rlpBinary)\n]\n\nconst ORACLES_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('otree', FIELD_TYPES.rlpBinary)\n]\n\nconst ACCOUNTS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('accounts', FIELD_TYPES.rlpBinary)\n]\n\nexport const TX_SERIALIZATION_SCHEMA = {\n [TX_TYPE.account]: {\n 2: TX_SCHEMA_FIELD(ACCOUNT_TX_2, OBJECT_TAG_ACCOUNT)\n },\n [TX_TYPE.signed]: {\n 1: TX_SCHEMA_FIELD(SIGNED_TX, OBJECT_TAG_SIGNED_TRANSACTION)\n },\n [TX_TYPE.spend]: {\n 1: TX_SCHEMA_FIELD(SPEND_TX, OBJECT_TAG_SPEND_TRANSACTION)\n },\n [TX_TYPE.namePreClaim]: {\n 1: TX_SCHEMA_FIELD(NAME_PRE_CLAIM_TX, OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION)\n },\n [TX_TYPE.nameClaim]: {\n 2: TX_SCHEMA_FIELD(NAME_CLAIM_TX_2, OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION)\n },\n [TX_TYPE.nameUpdate]: {\n 1: TX_SCHEMA_FIELD(NAME_UPDATE_TX, OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION)\n },\n [TX_TYPE.nameTransfer]: {\n 1: TX_SCHEMA_FIELD(NAME_TRANSFER_TX, OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION)\n },\n [TX_TYPE.nameRevoke]: {\n 1: TX_SCHEMA_FIELD(NAME_REVOKE_TX, OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION)\n },\n [TX_TYPE.contract]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_TX, OBJECT_TAG_CONTRACT)\n },\n [TX_TYPE.contractCreate]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CREATE_TX, OBJECT_TAG_CONTRACT_CREATE_TRANSACTION)\n },\n [TX_TYPE.contractCall]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_TX, OBJECT_TAG_CONTRACT_CALL_TRANSACTION)\n },\n [TX_TYPE.contractCallResult]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_RESULT_TX, OBJECT_TAG_CONTRACT_CALL)\n },\n [TX_TYPE.oracleRegister]: {\n 1: TX_SCHEMA_FIELD(ORACLE_REGISTER_TX, OBJECT_TAG_ORACLE_REGISTER_TRANSACTION)\n },\n [TX_TYPE.oracleExtend]: {\n 1: TX_SCHEMA_FIELD(ORACLE_EXTEND_TX, OBJECT_TAG_ORACLE_EXTEND_TRANSACTION)\n },\n [TX_TYPE.oracleQuery]: {\n 1: TX_SCHEMA_FIELD(ORACLE_QUERY_TX, OBJECT_TAG_ORACLE_QUERY_TRANSACTION)\n },\n [TX_TYPE.oracleResponse]: {\n 1: TX_SCHEMA_FIELD(ORACLE_RESPOND_TX, OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION)\n },\n [TX_TYPE.channelCreate]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_CREATE_TX_2, OBJECT_TAG_CHANNEL_CREATE_TX)\n },\n [TX_TYPE.channelCloseMutual]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_MUTUAL_TX, OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX)\n },\n [TX_TYPE.channelCloseSolo]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_SOLO_TX, OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX)\n },\n [TX_TYPE.channelSlash]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SLASH_TX, OBJECT_TAG_CHANNEL_SLASH_TX)\n },\n [TX_TYPE.channelDeposit]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_DEPOSIT_TX, OBJECT_TAG_CHANNEL_DEPOSIT_TX)\n },\n [TX_TYPE.channelWithdraw]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_WITHDRAW_TX, OBJECT_TAG_CHANNEL_WITHRAW_TX)\n },\n [TX_TYPE.channelSettle]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SETTLE_TX, OBJECT_TAG_CHANNEL_SETTLE_TX)\n },\n [TX_TYPE.channelForceProgress]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_FORCE_PROGRESS_TX, OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX)\n },\n [TX_TYPE.channelOffChain]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_TX_2, OBJECT_TAG_CHANNEL_OFFCHAIN_TX)\n },\n [TX_TYPE.channel]: {\n 3: TX_SCHEMA_FIELD(CHANNEL_TX_3, OBJECT_TAG_CHANNEL)\n },\n [TX_TYPE.channelSnapshotSolo]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SNAPSHOT_SOLO_TX, OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX)\n },\n [TX_TYPE.channelOffChainUpdateTransfer]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX\n )\n },\n [TX_TYPE.channelOffChainUpdateDeposit]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX\n )\n },\n [TX_TYPE.channelOffChainUpdateWithdrawal]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX\n )\n },\n [TX_TYPE.channelOffChainCreateContract]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX\n )\n },\n [TX_TYPE.channelOffChainCallContract]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_CALL_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX\n )\n },\n [TX_TYPE.channelReconnect]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_RECONNECT_TX, OBJECT_TAG_CHANNEL_RECONNECT_TX)\n },\n [TX_TYPE.proofOfInclusion]: {\n 1: TX_SCHEMA_FIELD(PROOF_OF_INCLUSION_TX, OBJECT_TAG_PROOF_OF_INCLUSION)\n },\n [TX_TYPE.stateTrees]: {\n 1: TX_SCHEMA_FIELD(STATE_TREES_TX, OBJECT_TAG_STATE_TREES)\n },\n [TX_TYPE.merklePatriciaTree]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE)\n },\n [TX_TYPE.merklePatriciaTreeValue]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_VALUE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE)\n },\n [TX_TYPE.contractsTree]: {\n 1: TX_SCHEMA_FIELD(CONTRACTS_TREE_TX, OBJECT_TAG_CONTRACTS_TREE)\n },\n [TX_TYPE.contractCallsTree]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALLS_TREE_TX, OBJECT_TAG_CONTRACT_CALLS_TREE)\n },\n [TX_TYPE.channelsTree]: {\n 1: TX_SCHEMA_FIELD(CHANNELS_TREE_TX, OBJECT_TAG_CHANNELS_TREE)\n },\n [TX_TYPE.nameserviceTree]: {\n 1: TX_SCHEMA_FIELD(NAMESERVICE_TREE_TX, OBJECT_TAG_NAMESERVICE_TREE)\n },\n [TX_TYPE.oraclesTree]: {\n 1: TX_SCHEMA_FIELD(ORACLES_TREE_TX, OBJECT_TAG_ORACLES_TREE)\n },\n [TX_TYPE.accountsTree]: {\n 1: TX_SCHEMA_FIELD(ACCOUNTS_TREE_TX, OBJECT_TAG_ACCOUNTS_TREE)\n },\n [TX_TYPE.gaAttach]: {\n 1: TX_SCHEMA_FIELD(GA_ATTACH_TX, OBJECT_TAG_GA_ATTACH)\n },\n [TX_TYPE.gaMeta]: {\n 2: TX_SCHEMA_FIELD(GA_META_TX_2, OBJECT_TAG_GA_META)\n },\n [TX_TYPE.payingFor]: {\n 1: TX_SCHEMA_FIELD(PAYING_FOR_TX, OBJECT_TAG_PAYING_FOR)\n }\n}\n\nexport const TX_DESERIALIZATION_SCHEMA = {\n [OBJECT_TAG_ACCOUNT]: {\n 2: TX_SCHEMA_FIELD(ACCOUNT_TX_2, OBJECT_TAG_ACCOUNT)\n },\n [OBJECT_TAG_SIGNED_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(SIGNED_TX, OBJECT_TAG_SIGNED_TRANSACTION)\n },\n [OBJECT_TAG_SPEND_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(SPEND_TX, OBJECT_TAG_SPEND_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_PRE_CLAIM_TX, OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION]: {\n 2: TX_SCHEMA_FIELD(NAME_CLAIM_TX_2, OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_UPDATE_TX, OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_TRANSFER_TX, OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_REVOKE_TX, OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_TX, OBJECT_TAG_CONTRACT)\n },\n [OBJECT_TAG_CONTRACT_CREATE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CREATE_TX, OBJECT_TAG_CONTRACT_CREATE_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT_CALL_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_TX, OBJECT_TAG_CONTRACT_CALL_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT_CALL]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_RESULT_TX, OBJECT_TAG_CONTRACT_CALL)\n },\n [OBJECT_TAG_ORACLE_REGISTER_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_REGISTER_TX, OBJECT_TAG_ORACLE_REGISTER_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_EXTEND_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_EXTEND_TX, OBJECT_TAG_ORACLE_EXTEND_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_QUERY_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_QUERY_TX, OBJECT_TAG_ORACLE_QUERY_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_RESPOND_TX, OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION)\n },\n [OBJECT_TAG_CHANNEL_CREATE_TX]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_CREATE_TX_2, OBJECT_TAG_CHANNEL_CREATE_TX)\n },\n [OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_MUTUAL_TX, OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX)\n },\n [OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_SOLO_TX, OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX)\n },\n [OBJECT_TAG_CHANNEL_SLASH_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SLASH_TX, OBJECT_TAG_CHANNEL_SLASH_TX)\n },\n [OBJECT_TAG_CHANNEL_DEPOSIT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_DEPOSIT_TX, OBJECT_TAG_CHANNEL_DEPOSIT_TX)\n },\n [OBJECT_TAG_CHANNEL_WITHRAW_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_WITHDRAW_TX, OBJECT_TAG_CHANNEL_WITHRAW_TX)\n },\n [OBJECT_TAG_CHANNEL_SETTLE_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SETTLE_TX, OBJECT_TAG_CHANNEL_SETTLE_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_TX]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_TX_2, OBJECT_TAG_CHANNEL_OFFCHAIN_TX)\n },\n [OBJECT_TAG_CHANNEL]: {\n 3: TX_SCHEMA_FIELD(CHANNEL_TX_3, OBJECT_TAG_CHANNEL)\n },\n [OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SNAPSHOT_SOLO_TX, OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX\n )\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX\n )\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX\n )\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX\n )\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_CALL_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX\n )\n },\n [OBJECT_TAG_CHANNEL_RECONNECT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_RECONNECT_TX, OBJECT_TAG_CHANNEL_RECONNECT_TX)\n },\n [OBJECT_TAG_PROOF_OF_INCLUSION]: {\n 1: TX_SCHEMA_FIELD(PROOF_OF_INCLUSION_TX, OBJECT_TAG_PROOF_OF_INCLUSION)\n },\n [OBJECT_TAG_STATE_TREES]: {\n 1: TX_SCHEMA_FIELD(STATE_TREES_TX, OBJECT_TAG_STATE_TREES)\n },\n [OBJECT_TAG_MERKLE_PATRICIA_TREE]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE)\n },\n [OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_VALUE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE)\n },\n [OBJECT_TAG_CONTRACTS_TREE]: {\n 1: TX_SCHEMA_FIELD(CONTRACTS_TREE_TX, OBJECT_TAG_CONTRACTS_TREE)\n },\n [OBJECT_TAG_CONTRACT_CALLS_TREE]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALLS_TREE_TX, OBJECT_TAG_CONTRACT_CALLS_TREE)\n },\n [OBJECT_TAG_CHANNELS_TREE]: {\n 1: TX_SCHEMA_FIELD(CHANNELS_TREE_TX, OBJECT_TAG_CHANNELS_TREE)\n },\n [OBJECT_TAG_NAMESERVICE_TREE]: {\n 1: TX_SCHEMA_FIELD(NAMESERVICE_TREE_TX, OBJECT_TAG_NAMESERVICE_TREE)\n },\n [OBJECT_TAG_ORACLES_TREE]: {\n 1: TX_SCHEMA_FIELD(ORACLES_TREE_TX, OBJECT_TAG_ORACLES_TREE)\n },\n [OBJECT_TAG_ACCOUNTS_TREE]: {\n 1: TX_SCHEMA_FIELD(ACCOUNTS_TREE_TX, OBJECT_TAG_ACCOUNTS_TREE)\n },\n [OBJECT_TAG_GA_ATTACH]: {\n 1: TX_SCHEMA_FIELD(GA_ATTACH_TX, OBJECT_TAG_GA_ATTACH)\n },\n [OBJECT_TAG_GA_META]: {\n 2: TX_SCHEMA_FIELD(GA_META_TX_2, OBJECT_TAG_GA_META)\n },\n [OBJECT_TAG_PAYING_FOR]: {\n 1: TX_SCHEMA_FIELD(PAYING_FOR_TX, OBJECT_TAG_PAYING_FOR)\n },\n [OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_FORCE_PROGRESS_TX, OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX)\n },\n [OBJECT_TAG_SOPHIA_BYTE_CODE]: {\n 3: TX_SCHEMA_FIELD(CONTRACT_BYTE_CODE_LIMA, OBJECT_TAG_SOPHIA_BYTE_CODE)\n }\n}\n","/**\n * Big Number Helpers\n * @module @aeternity/aepp-sdk/es/utils/bignumber\n * @example import { isBigNumber, ceil } from '@aeternity/aepp-sdk/es/utils/bignumber'\n */\nimport BigNumber from 'bignumber.js'\n\n/**\n * Check if value is BigNumber, Number or number string representation\n * @param {String|Number|BigNumber} number number to convert\n * @return {Boolean}\n */\nexport const isBigNumber = (number: string | number | BigNumber): boolean =>\n ['number', 'object', 'string', 'bigint'].includes(typeof number) &&\n (!isNaN(number as number) || Number.isInteger(number) || BigNumber.isBigNumber(number))\n\n/**\n * BigNumber ceil operation\n * @param {BigNumber} bigNumber\n * @return {BigNumber}\n */\nexport const ceil = (bigNumber: BigNumber): BigNumber => bigNumber.integerValue(BigNumber.ROUND_CEIL)\n","import BigNumber from 'bignumber.js'\nimport bs58 from 'bs58'\nimport { hash, salt, sha256hash } from '../../utils/crypto'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n POINTER_KEY_BY_PREFIX\n} from './schema'\nimport { ceil } from '../../utils/bignumber'\nimport {\n PrefixMismatchError,\n DecodeError,\n EncodeError,\n PayloadLengthError,\n TagNotFoundError,\n PrefixNotFoundError,\n InvalidNameError,\n IllegalBidFeeError,\n NoDefaultAensPointerError,\n ArgumentError,\n InvalidChecksumError\n} from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode an AENS name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded AENS name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return encode(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm')\n}\n\n// based on https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md\nconst base64Types = ['ba', 'cb', 'or', 'ov', 'pi', 'ss', 'cs', 'ck', 'cv', 'st', 'tx']\nconst base58Types = ['ak', 'bf', 'bs', 'bx', 'ch', 'cm', 'ct', 'kh', 'mh', 'nm', 'ok', 'oq', 'pp', 'sg', 'th']\n// TODO: add all types with a fixed length\nconst typesLength = {\n ak: 32,\n ct: 32,\n ok: 32\n}\n\nfunction ensureValidLength (data, type) {\n if (!typesLength[type]) return\n if (data.length === typesLength[type]) return\n throw new PayloadLengthError(`Payload should be ${typesLength[type]} bytes, got ${data.length} instead`)\n}\n\nconst getChecksum = payload => sha256hash(sha256hash(payload)).slice(0, 4)\n\nconst addChecksum = (input) => {\n const payload = Buffer.from(input)\n return Buffer.concat([payload, getChecksum(payload)])\n}\n\nfunction getPayload (buffer) {\n const payload = buffer.slice(0, -4)\n if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError()\n return payload\n}\n\nconst base64 = {\n encode: buffer => addChecksum(buffer).toString('base64'),\n decode: string => getPayload(Buffer.from(string, 'base64'))\n}\n\nconst base58 = {\n encode: buffer => bs58.encode(addChecksum(buffer)),\n decode: string => getPayload(bs58.decode(string))\n}\n\n/**\n * Decode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} data An Base58/64check encoded and prefixed string (ex tx_..., sg_..., ak_....)\n * @param {string} [requiredPrefix] Ensure that data have this prefix\n * @return {Buffer} Decoded data\n */\nexport function decode (data, requiredPrefix) {\n if (typeof data !== 'string') throw new DecodeError(`Encoded should be a string, got ${data} instead`)\n const [prefix, encodedPayload, extra] = data.split('_')\n if (!encodedPayload) throw new DecodeError(`Encoded string missing payload: ${data}`)\n if (extra) throw new DecodeError(`Encoded string have extra parts: ${data}`)\n if (requiredPrefix && requiredPrefix !== prefix) {\n throw new PrefixMismatchError(prefix, requiredPrefix)\n }\n const decoder = (base64Types.includes(prefix) && base64.decode) ||\n (base58Types.includes(prefix) && base58.decode)\n if (!decoder) {\n throw new DecodeError(`Encoded string have unknown type: ${prefix}`)\n }\n const payload = decoder(encodedPayload)\n ensureValidLength(payload, prefix)\n return payload\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer|String} data An decoded data\n * @param {string} type Prefix of Transaction\n * @return {String} Encoded string Base58check or Base64check data\n */\nexport function encode (data, type) {\n const encoder = (base64Types.includes(type) && base64.encode) ||\n (base58Types.includes(type) && base58.encode)\n if (!encoder) {\n throw new EncodeError(`Unknown type: ${type}`)\n }\n ensureValidLength(data, type)\n return `${type}_${encoder(data)}`\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId)\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new TagNotFoundError(prefix)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = Buffer.from(buf).readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new PrefixNotFoundError(tag)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\nconst AENS_SUFFIX = '.chain'\n\n/**\n * Ensure that AENS name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new InvalidNameError('Name must be a string')\n if (!name.endsWith(AENS_SUFFIX)) throw new InvalidNameError(`Name should end with ${AENS_SUFFIX}: ${name}`)\n}\n\n/**\n * Is AENS name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * @param identifier - account/oracle/contract address, or channel\n * @returns {String} default AENS pointer key\n * @throws exception when default key not defined\n */\nexport function getDefaultPointerKey (identifier) {\n decode(identifier)\n const prefix = identifier.substr(0, 2)\n return POINTER_KEY_BY_PREFIX[prefix] ||\n (() => { throw new NoDefaultAensPointerError(prefix) })()\n}\n\n/**\n * Get the minimum AENS name fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @return {String} the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee (name) {\n ensureNameValid(name)\n const nameLength = name.length - AENS_SUFFIX.length\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (name, startFee, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(startFee ?? getMinimumNameFee(name)).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (name, claimHeight) {\n ensureNameValid(name)\n const length = name.length - AENS_SUFFIX.length\n const h = (length <= 4 && NAME_BID_TIMEOUTS[4]) ||\n (length <= 8 && NAME_BID_TIMEOUTS[8]) ||\n (length <= 12 && NAME_BID_TIMEOUTS[12]) ||\n NAME_BID_TIMEOUTS[13]\n return h.plus(claimHeight).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n ensureNameValid(name)\n return name.length < 13 + AENS_SUFFIX.length\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Crypto module\n * @module @aeternity/aepp-sdk/es/utils/crypto\n * @example import { Crypto } from '@aeternity/aepp-sdk'\n */\n\nimport nacl from 'tweetnacl'\nimport aesjs from 'aes-js'\nimport shajs from 'sha.js'\n\nimport { str2buf } from './bytes'\nimport { encode, decode } from '../tx/builder/helpers'\nimport { hash } from './crypto-ts'\nimport { NotImplementedError } from './errors'\n\nexport * from './crypto-ts'\n\nconst Ecb = aesjs.ModeOfOperation.ecb\n\n/**\n * Generate address from secret key\n * @rtype (secret: String) => tx: Promise[String]\n * @param {String} secret - Private key\n * @return {String} Public key\n */\nexport function getAddressFromPriv (secret) {\n const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))\n const publicBuffer = Buffer.from(keys.publicKey)\n return encode(publicBuffer, 'ak')\n}\n\n/**\n * Check if address is valid\n * @rtype (input: String) => valid: Boolean\n * @param {String} address - Address\n * @param {String} prefix Transaction prefix. Default: 'ak'\n * @return {Boolean} valid\n */\nexport function isAddressValid (address, prefix = 'ak') {\n try {\n decode(address, prefix)\n return true\n } catch (e) {\n return false\n }\n}\n\n/**\n * Calculate SHA256 hash of `input`\n * @rtype (input: String) => hash: String\n * @param {String} input - Data to hash\n * @return {String} Hash\n */\nexport function sha256hash (input) {\n return shajs('sha256').update(input).digest()\n}\n\n/**\n * Generate a random salt (positive integer)\n * @rtype () => salt: Number\n * @return {Number} random salt\n */\nexport function salt () {\n return Math.floor(Math.random() * Math.floor(Number.MAX_SAFE_INTEGER))\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @rtype (value: Number) => Buffer\n * @param {Number} value - Value to encode\n * @return {Buffer} - Encoded data\n */\nexport function encodeUnsigned (value) {\n const binary = Buffer.allocUnsafe(4)\n binary.writeUInt32BE(value)\n return binary.slice(binary.findIndex(i => i !== 0))\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @rtype (owner: String, nonce: Number) => String\n * @param {String} owner - Address of contract owner\n * @param {Number} nonce - Round when contract was created\n * @return {String} - Contract address\n */\nexport function encodeContractAddress (owner, nonce) {\n const publicKey = decode(owner, 'ak')\n const binary = Buffer.concat([publicKey, encodeUnsigned(nonce)])\n return encode(hash(binary), 'ct')\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @rtype (secret: Uint8Array) => KeyPair\n * @param {Uint8Array} secret - secret key\n * @return {Object} - Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret (secret) {\n return nacl.sign.keyPair.fromSecretKey(secret)\n}\n\n/**\n * Generate a random ED25519 keypair\n * @rtype (raw: Boolean) => {publicKey: String | Buffer, secretKey: String | Buffer}\n * @param {Boolean} raw - Whether to return raw (binary) keys\n * @return {Object} Key pair\n */\nexport function generateKeyPair (raw = false) {\n // <node>/apps/aens/test/aens_test_utils.erl\n const keyPair = nacl.sign.keyPair()\n\n const publicBuffer = Buffer.from(keyPair.publicKey)\n const secretBuffer = Buffer.from(keyPair.secretKey)\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer\n }\n } else {\n return {\n publicKey: encode(publicBuffer, 'ak'),\n secretKey: secretBuffer.toString('hex')\n }\n }\n}\n\n/**\n * Encrypt given data using `password`\n * @rtype (password: String, binaryData: Buffer) => Uint8Array\n * @param {String} password - Password to encrypt with\n * @param {Buffer} binaryData - Data to encrypt\n * @return {Uint8Array} Encrypted data\n */\nexport function encryptKey (password, binaryData) {\n const hashedPasswordBytes = sha256hash(password)\n const aesEcb = new Ecb(hashedPasswordBytes)\n return aesEcb.encrypt(binaryData)\n}\n\n/**\n * Decrypt given data using `password`\n * @rtype (password: String, encrypted: String) => Uint8Array\n * @param {String} password - Password to decrypt with\n * @param {String} encrypted - Data to decrypt\n * @return {Buffer} Decrypted data\n */\nexport function decryptKey (password, encrypted) {\n const encryptedBytes = Buffer.from(encrypted)\n const hashedPasswordBytes = sha256hash(password)\n const aesEcb = new Ecb(hashedPasswordBytes)\n return Buffer.from(aesEcb.decrypt(encryptedBytes))\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @rtype (data: String|Buffer, privateKey: Buffer) => Buffer\n * @param {String|Buffer} data - Data to sign\n * @param {String|Buffer} privateKey - Key to sign with\n * @return {Buffer|Uint8Array} Signature\n */\nexport function sign (data, privateKey) {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey))\n}\n\n/**\n * Verify that signature was signed by public key\n * @rtype (str: String, signature: Buffer, publicKey: Buffer) => Boolean\n * @param {String|Buffer} str - Data to verify\n * @param {Buffer} signature - Signature to verify\n * @param {Buffer} publicKey - Key to verify against\n * @return {Boolean} Valid?\n */\nexport function verify (str, signature, publicKey) {\n return nacl.sign.detached.verify(new Uint8Array(str), signature, publicKey)\n}\n\nexport function messageToHash (message) {\n const p = Buffer.from('aeternity Signed Message:\\n', 'utf8')\n const msg = Buffer.from(message, 'utf8')\n if (msg.length >= 0xFD) throw new NotImplementedError('Message too long')\n return hash(Buffer.concat([Buffer.from([p.length]), p, Buffer.from([msg.length]), msg]))\n}\n\nexport function signMessage (message, privateKey) {\n return sign(messageToHash(message), privateKey)\n}\n\nexport function verifyMessage (str, signature, publicKey) {\n return verify(messageToHash(str), signature, publicKey)\n}\n\n/**\n * Check key pair for validity\n *\n * Sign a message, and then verifying that signature\n * @rtype (privateKey: Buffer, publicKey: Buffer) => Boolean\n * @param {Buffer} privateKey - Private key to verify\n * @param {Buffer} publicKey - Public key to verify\n * @return {Boolean} Valid?\n */\nexport function isValidKeypair (privateKey, publicKey) {\n const message = Buffer.from('TheMessage')\n const signature = sign(message, privateKey)\n return verify(message, signature, publicKey)\n}\n","import nacl from 'tweetnacl'\nimport { v4 as uuid } from '@aeternity/uuid'\nimport { ArgonType, hash } from '@aeternity/argon2-browser/dist/argon2-bundled.min.js'\nimport { encode } from '../tx/builder/helpers'\nimport { str2buf } from './bytes'\nimport {\n ArgumentError, InvalidKeyError, UnsupportedAlgorithmError, InvalidPasswordError\n} from './errors'\n\n/**\n * KeyStore module\n * @module @aeternity/aepp-sdk/es/utils/keystore\n * @example import { Keystore } from '@aeternity/aepp-sdk'\n * @example const { Keystore } = require('@aeternity/aepp-sdk')\n */\n\nconst DEFAULTS = {\n crypto: {\n secret_type: 'ed25519',\n symmetric_alg: 'xsalsa20-poly1305',\n kdf: 'argon2id',\n kdf_params: {\n memlimit_kib: 65536,\n opslimit: 3,\n parallelism: 1\n }\n }\n}\n\n// DERIVED KEY PART\nconst DERIVED_KEY_FUNCTIONS = {\n argon2id: deriveKeyUsingArgon2id\n}\n\nexport async function deriveKeyUsingArgon2id (pass, salt, options) {\n const { memlimit_kib: mem, opslimit: time } = options.kdf_params\n\n const result = (await hash({\n hashLen: 32,\n pass,\n salt,\n time,\n mem,\n type: ArgonType.Argon2id\n })).hash\n return Buffer.from(result)\n}\n\n// CRYPTO PART\nconst CRYPTO_FUNCTIONS = {\n 'xsalsa20-poly1305': { encrypt: encryptXsalsa20Poly1305, decrypt: decryptXsalsa20Poly1305 }\n}\n\nfunction encryptXsalsa20Poly1305 ({ plaintext, key, nonce }) {\n return nacl.secretbox(plaintext, nonce, key)\n}\n\nfunction decryptXsalsa20Poly1305 ({ ciphertext, key, nonce }) {\n const res = nacl.secretbox.open(ciphertext, nonce, key)\n if (!res) throw new InvalidPasswordError('Invalid password or nonce')\n return res\n}\n\n/**\n * Symmetric private key encryption using secret (derived) key.\n * @param {Buffer|string} plaintext Data to be encrypted.\n * @param {Buffer|string} key Secret key.\n * @param {Buffer|string} nonce Randomly generated nonce.\n * @param {string=} algo Encryption algorithm (default: DEFAULTS.crypto.symmetric_alg).\n * @return {Buffer} Encrypted data.\n */\nfunction encrypt (plaintext, key, nonce, algo = DEFAULTS.crypto.symmetric_alg) {\n if (!CRYPTO_FUNCTIONS[algo]) throw new UnsupportedAlgorithmError(algo)\n return CRYPTO_FUNCTIONS[algo].encrypt({ plaintext, nonce, key })\n}\n\n/**\n * Symmetric private key decryption using secret (derived) key.\n * @param {Buffer|Uint8Array} ciphertext Data to be decrypted.\n * @param {Buffer|Uint8Array} key Secret key.\n * @param {Buffer|Uint8Array} nonce Nonce from key-object.\n * @param {string=} algo Encryption algorithm.\n * @return {Buffer} Decrypted data.\n */\nfunction decrypt (ciphertext, key, nonce, algo) {\n if (!CRYPTO_FUNCTIONS[algo]) throw new UnsupportedAlgorithmError(algo)\n return CRYPTO_FUNCTIONS[algo].decrypt({ ciphertext, nonce, key })\n}\n\n/**\n * Derive secret key from password with key derivation function.\n * @param {string} password User-supplied password.\n * @param {Buffer|Uint8Array} nonce Randomly generated nonce.\n * @param {Object=} options Encryption parameters.\n * @param {string=} options.kdf Key derivation function (default: DEFAULTS.crypto.kdf).\n * @param {Object=} options.kdf_params KDF parameters (default: DEFAULTS.crypto.kdf_params).\n * @return {Buffer} Secret key derived from password.\n */\nasync function deriveKey (password, nonce, options = {\n kdf_params: DEFAULTS.crypto.kdf_params,\n kdf: DEFAULTS.crypto.kdf\n}) {\n if (!nonce) throw new ArgumentError('nonce', 'provided', nonce)\n if (password == null) throw new ArgumentError('password', 'provided', password)\n\n if (!Object.prototype.hasOwnProperty.call(DERIVED_KEY_FUNCTIONS, options.kdf)) {\n throw new UnsupportedAlgorithmError(options.kdf)\n }\n\n return DERIVED_KEY_FUNCTIONS[options.kdf](password, nonce, options)\n}\n\n/**\n * Assemble key data object in secret-storage format.\n * @param {Buffer} name Key name.\n * @param {Buffer} derivedKey Password-derived secret key.\n * @param {Buffer} privateKey Private key.\n * @param {Buffer} nonce Randomly generated 24byte nonce.\n * @param {Buffer} salt Randomly generated 16byte salt.\n * @param {Object=} options Encryption parameters.\n * @param {string=} options.kdf Key derivation function (default: argon2id).\n * @param {string=} options.cipher Symmetric cipher (default: constants.cipher).\n * @param {Object=} options.kdf_params KDF parameters (default: constants.<kdf>).\n * @return {Object}\n */\nfunction marshal (name, derivedKey, privateKey, nonce, salt, options = {}) {\n const opt = Object.assign({}, DEFAULTS.crypto, options)\n return Object.assign(\n { name, version: 1, public_key: getAddressFromPriv(privateKey), id: uuid() },\n {\n crypto: Object.assign(\n {\n secret_type: opt.secret_type,\n symmetric_alg: opt.symmetric_alg,\n ciphertext: Buffer.from(encrypt(Buffer.from(privateKey), derivedKey, nonce, opt.symmetric_alg)).toString('hex'),\n cipher_params: { nonce: Buffer.from(nonce).toString('hex') }\n },\n { kdf: opt.kdf, kdf_params: { ...opt.kdf_params, salt: Buffer.from(salt).toString('hex') } }\n )\n }\n )\n}\n\nexport function getAddressFromPriv (secret) {\n const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))\n const publicBuffer = Buffer.from(keys.publicKey)\n return encode(publicBuffer, 'ak')\n}\n\n/**\n * Recover plaintext private key from secret-storage key object.\n * @param {String} password Keystore object password.\n * @param {Object} keyObject Keystore object.\n * @return {Buffer} Plaintext private key.\n */\nexport async function recover (password, keyObject) {\n validateKeyObj(keyObject)\n const nonce = Uint8Array.from(str2buf(keyObject.crypto.cipher_params.nonce))\n const salt = Uint8Array.from(str2buf(keyObject.crypto.kdf_params.salt))\n const kdfParams = keyObject.crypto.kdf_params\n const kdf = keyObject.crypto.kdf\n\n const key = await decrypt(\n Uint8Array.from(str2buf(keyObject.crypto.ciphertext)),\n await deriveKey(password, salt, { kdf, kdf_params: kdfParams }),\n nonce,\n keyObject.crypto.symmetric_alg\n )\n if (!key) throw new InvalidPasswordError('Invalid password')\n\n if (Buffer.from(key).length === 64) return Buffer.from(key).toString('hex')\n return Buffer.from(key).toString('utf-8')\n}\n\n/**\n * Export private key to keystore secret-storage format.\n * @param {String} name Key name.\n * @param {String} password User-supplied password.\n * @param {String|Buffer} privateKey Private key as hex-string or a Buffer.\n * @param {Buffer} nonce Randomly generated 24byte nonce.\n * @param {Buffer} salt Randomly generated 16byte salt.\n * @param {Object=} options Encryption parameters.\n * @param {String=} options.kdf Key derivation function (default: pbkdf2).\n * @param {String=} options.cipher Symmetric cipher (default: constants.cipher).\n * @param {Object=} options.kdfparams KDF parameters (default: constants.<kdf>).\n * @return {Object}\n */\nexport async function dump (\n name,\n password,\n privateKey,\n nonce = nacl.randomBytes(24),\n salt = nacl.randomBytes(16),\n options = {}\n) {\n const opt = Object.assign({}, DEFAULTS.crypto, options)\n return marshal(\n name,\n await deriveKey(password, salt, opt),\n typeof privateKey === 'string' ? Buffer.from(privateKey, 'hex') : privateKey,\n nonce,\n salt,\n opt\n )\n}\n\nexport function validateKeyObj (obj) {\n const root = ['crypto', 'id', 'version', 'public_key']\n const cryptoKeys = ['cipher_params', 'ciphertext', 'symmetric_alg', 'kdf', 'kdf_params']\n\n const missingRootKeys = root.filter(key => !Object.prototype.hasOwnProperty.call(obj, key))\n if (missingRootKeys.length) throw new InvalidKeyError(`Invalid key file format. Require properties: ${missingRootKeys}`)\n\n const missingCryptoKeys = cryptoKeys\n .filter(key => !Object.prototype.hasOwnProperty.call(obj.crypto, key))\n if (missingCryptoKeys.length) throw new InvalidKeyError(`Invalid key file format. Require properties: ${missingCryptoKeys}`)\n\n return true\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Amount Formatter\n * @module @aeternity/aepp-sdk/es/utils/amount-formatter\n * @example import { AmountFormatter } from '@aeternity/aepp-sdk'\n */\nimport BigNumber from 'bignumber.js'\nimport { isBigNumber } from './bignumber'\nimport { ArgumentError, InvalidDenominationError } from './errors'\n\n/**\n * AE amount formats\n */\nexport const AE_AMOUNT_FORMATS = {\n AE: 'ae',\n MILI_AE: 'miliAE',\n MICRO_AE: 'microAE',\n NANO_AE: 'nanoAE',\n PICO_AE: 'picoAE',\n FEMTO_AE: 'femtoAE',\n AETTOS: 'aettos'\n}\n\n/**\n * DENOMINATION_MAGNITUDE\n */\nexport const DENOMINATION_MAGNITUDE = {\n [AE_AMOUNT_FORMATS.AE]: 0,\n [AE_AMOUNT_FORMATS.MILI_AE]: -3,\n [AE_AMOUNT_FORMATS.MICRO_AE]: -6,\n [AE_AMOUNT_FORMATS.NANO_AE]: -9,\n [AE_AMOUNT_FORMATS.PICO_AE]: -12,\n [AE_AMOUNT_FORMATS.FEMTO_AE]: -15,\n [AE_AMOUNT_FORMATS.AETTOS]: -18\n}\n\n/**\n * Convert amount to AE\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='aettos'] denomination of amount, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const toAe = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n): string => formatAmount(value, { denomination, targetDenomination: AE_AMOUNT_FORMATS.AE })\n\n/**\n * Convert amount to aettos\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='ae'] denomination of amount, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const toAettos = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AE } = {}\n): string => formatAmount(value, { denomination })\n\n/**\n * Convert amount from one to other denomination\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='aettos'] denomination of amount, can be ['ae', 'aettos']\n * @param {String} [options.targetDenomination='aettos'] target denomination, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const formatAmount = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS, targetDenomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n): string => {\n const denominations = Object.values(AE_AMOUNT_FORMATS)\n if (!denominations.includes(denomination)) throw new InvalidDenominationError(`Invalid denomination: ${denomination}`)\n if (!denominations.includes(targetDenomination)) throw new InvalidDenominationError(`Invalid target denomination: ${targetDenomination}`)\n if (!isBigNumber(value)) throw new ArgumentError('value', `a number`, value)\n\n return new BigNumber(value)\n .shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination])\n .toFixed()\n}\n\ninterface Prefix {\n name: string\n magnitude: number\n}\n\nconst prefixes: Prefix[] = [\n { name: 'exa', magnitude: 18 },\n { name: 'giga', magnitude: 9 },\n { name: '', magnitude: 0 },\n { name: 'pico', magnitude: -12 }\n]\n\nconst getNearestPrefix = (exponent: number): Prefix => prefixes.reduce((p, n) => (\n Math.abs(n.magnitude - exponent) < Math.abs(p.magnitude - exponent) ? n : p))\n\nconst getLowerBoundPrefix = (exponent: number): Prefix => prefixes\n .find(p => p.magnitude <= exponent) ?? prefixes[prefixes.length - 1]\n\nexport default (rawValue: string | number | BigNumber): string => {\n const value: BigNumber = new BigNumber(rawValue)\n\n const exp = value.e ?? 0\n const { name, magnitude } = (exp < 0 ? getNearestPrefix : getLowerBoundPrefix)(exp)\n const v = value\n .shiftedBy(-magnitude)\n .precision(9 + Math.min(exp - magnitude, 0))\n .toFixed()\n return `${v}${name !== '' ? ' ' : ''}${name}`\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { encode as rlpEncode } from 'rlp'\nimport type { Input } from 'rlp'\nimport { hash } from './crypto-ts'\nimport {\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownPathNibbleError,\n UnknownNodeLengthError\n} from './errors'\n\nenum NodeType {\n Branch,\n Extension,\n Leaf\n}\n\nexport type MPTreeBinary = [Buffer, Array<[Buffer, Buffer[]]>]\n\nexport default class MPTree {\n private readonly rootHash: string\n private readonly nodes: { [key: string]: Buffer[] }\n\n private static nodeHash (node: Input): string {\n return Buffer.from(hash(rlpEncode(node))).toString('hex')\n }\n\n /**\n * Deserialize Merkle Patricia Tree\n * @rtype (binary: Array) => MPTree\n * @param {Array} binary - Binary\n * @return {MPTree} Merkle Patricia Tree\n */\n constructor (binary: MPTreeBinary) {\n this.rootHash = binary[0].toString('hex')\n this.nodes = Object.fromEntries(\n binary[1].map((node) => [node[0].toString('hex'), node[1]])\n )\n\n if (this.nodes[this.rootHash] === undefined) throw new MissingNodeInTreeError('Can\\'t find a node by root hash')\n Object.entries(this.nodes).forEach(([key, node]) => {\n if (MPTree.nodeHash(node) !== key) throw new MerkleTreeHashMismatchError()\n const { type, payload } = MPTree.parseNode(node)\n switch (type) {\n case NodeType.Branch:\n payload\n .slice(0, 16)\n .filter(n => n.length)\n .forEach((n) => {\n if (this.nodes[n.toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in branch node')\n }\n })\n break\n case NodeType.Extension:\n if (this.nodes[payload[0].toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in extension node')\n }\n }\n })\n }\n\n isEqual (tree: MPTree): boolean {\n return this.rootHash === tree.rootHash\n }\n\n private static parseNode (node: Buffer[]): { type: NodeType, payload: Buffer[], path: string | null } {\n switch (node.length) {\n case 17:\n return { type: NodeType.Branch, payload: node, path: null }\n case 2: {\n const path = node[0].toString('hex')\n const nibble = parseInt(path[0], 16)\n if (nibble > 3) throw new UnknownPathNibbleError(nibble)\n const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf\n const slice = [0, 2].includes(nibble) ? 2 : 1\n return { type, payload: [node[1]], path: path.slice(slice) }\n }\n default:\n throw new UnknownNodeLengthError(node.length)\n }\n }\n\n /**\n * Serialize Merkle Patricia Tree\n * @rtype () => Array\n * @return {Array} Binary\n */\n serialize (): MPTreeBinary {\n return [\n Buffer.from(this.rootHash, 'hex'),\n Object.entries(this.nodes).map(([mptHash, value]) => ([\n Buffer.from(mptHash, 'hex'),\n value\n ]))\n ]\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @rtype (key: String) => Buffer\n * @param {String} key - The key of the element to retrieve\n * @return {Buffer} Value associated to the specified key\n */\n get (key: string): Buffer | undefined {\n let searchFrom = this.rootHash\n while (true) {\n const { type, payload, path } = MPTree.parseNode(this.nodes[searchFrom])\n switch (type) {\n case NodeType.Branch:\n if (key.length === 0) return payload[16]\n searchFrom = payload[parseInt(key[0], 16)].toString('hex')\n key = key.substr(1)\n break\n case NodeType.Extension:\n if (key.substr(0, path?.length) !== path) return undefined\n searchFrom = payload[0].toString('hex')\n key = key.substr(path.length)\n break\n case NodeType.Leaf:\n if (path !== key) return undefined\n return payload[0]\n }\n }\n }\n}\n","import BigNumber from 'bignumber.js'\nimport { decode as rlpDecode, encode as rlpEncode } from 'rlp'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../utils/amount-formatter'\nimport { hash } from '../../utils/crypto'\nimport { Field } from './field-types'\n\nimport {\n DEFAULT_FEE,\n FIELD_TYPES,\n OBJECT_ID_TX_TYPE,\n TX_DESERIALIZATION_SCHEMA,\n TX_FEE_BASE_GAS,\n TX_FEE_OTHER_GAS,\n TX_SERIALIZATION_SCHEMA,\n TX_TYPE,\n VSN\n} from './schema'\nimport {\n readInt,\n readId,\n readPointers,\n writeId,\n writeInt,\n buildPointers,\n encode,\n decode\n} from './helpers'\nimport { toBytes } from '../../utils/bytes'\nimport MPTree from '../../utils/mptree'\nimport { InvalidTxParamsError, SchemaNotFoundError } from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder\n * @module @aeternity/aepp-sdk/es/tx/builder\n * @export TxBuilder\n * @example import { TxBuilder } from '@aeternity/aepp-sdk'\n */\n\nconst ORACLE_TTL_TYPES = {\n delta: 'delta',\n block: 'block'\n}\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField (value, type, prefix) {\n if (!value) return ''\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value\n return { vmVersion: readInt(Buffer.from([vm])), abiVersion: readInt(Buffer.from([abi])) }\n }\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\n return readInt(value)\n case FIELD_TYPES.id:\n return readId(value)\n case FIELD_TYPES.ids:\n return value.map(readId)\n case FIELD_TYPES.bool:\n return value[0] === 1\n case FIELD_TYPES.binary:\n return encode(value, prefix)\n case FIELD_TYPES.stateTree:\n return encode(value, 'ss')\n case FIELD_TYPES.string:\n return value.toString()\n case FIELD_TYPES.payload:\n return encode(value, 'ba')\n case FIELD_TYPES.pointers:\n return readPointers(value)\n case FIELD_TYPES.rlpBinary:\n return unpackTx(value, true)\n case FIELD_TYPES.rlpBinaries:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.rawBinary:\n return value\n case FIELD_TYPES.hex:\n return value.toString('hex')\n case FIELD_TYPES.offChainUpdates:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)]\n case FIELD_TYPES.mptrees:\n return value.map(t => new MPTree(t))\n case FIELD_TYPES.callReturnType:\n switch (readInt(value)) {\n case '0': return 'ok'\n case '1': return 'error'\n case '2': return 'revert'\n default: return value\n }\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value\n .reduce(\n (acc, [funHash, fnName, argType, outType]) =>\n ({ ...acc, [fnName.toString()]: { funHash, argType, outType } }),\n {}\n )\n default:\n if (type.prototype instanceof Field) return type.deserialize(value)\n return value\n }\n}\n\nfunction serializeField (value, type, prefix, params) {\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\n return writeInt(value)\n case FIELD_TYPES.id:\n return writeId(value)\n case FIELD_TYPES.ids:\n return value.map(writeId)\n case FIELD_TYPES.bool:\n return Buffer.from([value ? 1 : 0])\n case FIELD_TYPES.binary:\n return decode(value, prefix)\n case FIELD_TYPES.stateTree:\n return decode(value, 'ss')\n case FIELD_TYPES.hex:\n return Buffer.from(value, 'hex')\n case FIELD_TYPES.signatures:\n return value.map(Buffer.from)\n case FIELD_TYPES.payload:\n return typeof value === 'string' && value.split('_')[0] === 'ba'\n ? decode(value, 'ba')\n : toBytes(value)\n case FIELD_TYPES.string:\n return toBytes(value)\n case FIELD_TYPES.pointers:\n return buildPointers(value)\n case FIELD_TYPES.rlpBinary:\n return value.rlpEncoded ?? value\n case FIELD_TYPES.mptrees:\n return value.map(t => t.serialize())\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)])\n case FIELD_TYPES.callReturnType:\n switch (value) {\n case 'ok': return writeInt(0)\n case 'error': return writeInt(1)\n case 'revert': return writeInt(2)\n default: return value\n }\n default:\n if (type.prototype instanceof Field) return type.serialize(value, params)\n return value\n }\n}\n\nfunction validateField (value, type, prefix) {\n // All fields are required\n if (value === undefined || value === null) return 'Field is required'\n\n // Validate type of value\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int: {\n if (isNaN(value) && !BigNumber.isBigNumber(value)) {\n return `${value} is not of type Number or BigNumber`\n }\n if (new BigNumber(value).lt(0)) return `${value} must be >= 0`\n return\n }\n case FIELD_TYPES.id: {\n const prefixes = Array.isArray(prefix) ? prefix : [prefix]\n if (!prefixes.includes(value.split('_')[0])) {\n return `'${value}' prefix doesn't match expected prefix '${prefix}'`\n }\n return\n }\n case FIELD_TYPES.ctVersion:\n if (!value?.abiVersion || !value?.vmVersion) {\n return 'Value must be an object with \"vmVersion\" and \"abiVersion\" fields'\n }\n return\n case FIELD_TYPES.pointers:\n if (!Array.isArray(value)) return 'Value must be of type Array'\n if (value.some(p => !p?.key || !p?.id)) {\n return 'Value must contains only object\\'s like \\'{key: \"account_pubkey\", id: \"ak_lkamsflkalsdalksdlasdlasdlamd\"}\\''\n }\n if (value.length > 32) {\n return `Expected 32 pointers or less, got ${value.length} instead`\n }\n }\n}\n\nfunction transformParams (params, schema, { denomination } = {}) {\n params = schema\n .filter(([_, t]) => t === FIELD_TYPES.amount)\n .reduce(\n (acc, [key]) => ({ ...params, [key]: formatAmount(params[key], { denomination }) }),\n params\n )\n const schemaKeys = schema.map(([k]) => k)\n return Object\n .entries(params)\n .reduce(\n (acc, [key, value]) => {\n if (schemaKeys.includes(key)) acc[key] = value\n if (['oracleTtl', 'queryTtl', 'responseTtl'].includes(key)) {\n acc[`${key}Type`] = value.type === ORACLE_TTL_TYPES.delta ? 0 : 1\n acc[`${key}Value`] = value.value\n }\n return acc\n },\n {}\n )\n}\n\n// INTERFACE\n\nfunction getOracleRelativeTtl (params, txType) {\n const ttlKey = {\n [TX_TYPE.oracleRegister]: 'oracleTtl',\n [TX_TYPE.oracleExtend]: 'oracleTtl',\n [TX_TYPE.oracleQuery]: 'queryTtl',\n [TX_TYPE.oracleResponse]: 'responseTtl'\n }[txType]\n\n if (params[ttlKey] || params[`${ttlKey}Value`]) {\n return params[`${ttlKey}Value`] || params[ttlKey].value\n }\n return 1\n}\n\n/**\n * Calculate min fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/index\n * @rtype (txType, { gas = 0, params }) => String\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateMinFee('spendTx', { gas, params })\n */\nexport function calculateMinFee (txType, { gas = 0, params, vsn }) {\n const multiplier = BigNumber(1e9) // 10^9 GAS_PRICE\n if (!params) return BigNumber(DEFAULT_FEE).times(multiplier).toString(10)\n\n let actualFee = buildFee(txType, { params: { ...params, fee: 0 }, multiplier, gas, vsn })\n let expected = BigNumber(0)\n\n while (!actualFee.eq(expected)) {\n actualFee = buildFee(txType, { params: { ...params, fee: actualFee }, multiplier, gas, vsn })\n expected = actualFee\n }\n return expected.toString(10)\n}\n\n/**\n * Calculate fee based on tx type and params\n * @param txType\n * @param params\n * @param gas\n * @param multiplier\n * @param vsn\n * @return {BigNumber}\n */\nfunction buildFee (txType, { params, gas = 0, multiplier, vsn }) {\n const { rlpEncoded: txWithOutFee } = buildTx({ ...params }, txType, { vsn })\n const txSize = txWithOutFee.length\n return TX_FEE_BASE_GAS(txType)\n .plus(TX_FEE_OTHER_GAS(txType, txSize, {\n relativeTtl: getOracleRelativeTtl(params, txType),\n innerTxSize: [TX_TYPE.gaMeta, TX_TYPE.payingFor].includes(txType)\n ? params.tx.tx.encodedTx.rlpEncoded.length\n : 0\n }))\n .times(multiplier)\n}\n\n/**\n * Calculate fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @rtype (fee, txType, gas = 0) => String\n * @param {String|Number} fee - fee\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateFee(null, 'spendTx', { gas, params })\n */\nexport function calculateFee (fee = 0, txType, { gas = 0, params, showWarning = true, vsn } = {}) {\n if (!params && showWarning) console.warn(`Can't build transaction fee, we will use DEFAULT_FEE(${DEFAULT_FEE})`)\n\n return fee || calculateMinFee(txType, { params, gas, vsn })\n}\n\n/**\n * Validate transaction params\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Array} excludeKeys Array of keys to exclude for validation\n * @return {Object} Object with validation errors\n */\nexport function validateParams (params, schema, { excludeKeys = [] }) {\n return Object.fromEntries(\n schema\n // TODO: allow optional keys in schema\n .filter(([key]) => !excludeKeys.includes(key) &&\n !['payload', 'nameFee', 'deposit'].includes(key))\n .map(([key, type, prefix]) => [key, validateField(params[key], type, prefix)])\n .filter(([, message]) => message)\n )\n}\n\n/**\n * Build binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Object} [options={}] options\n * @param {String[]} [options.excludeKeys=[]] Array of keys to exclude for validation and build\n * @param {String} [options.denomination='aettos'] Denomination of amounts\n * @throws {Error} Validation error\n * @return {Array} Array with binary fields of transaction\n */\nexport function buildRawTx (\n params,\n schema,\n { excludeKeys = [], denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n) {\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key))\n\n // Transform `amount` type fields to `aettos`\n params = transformParams(params, filteredSchema, { denomination })\n // Validation\n const valid = validateParams(params, schema, { excludeKeys })\n if (Object.keys(valid).length) {\n throw new InvalidTxParamsError('Transaction build error. ' + JSON.stringify(valid))\n }\n\n return filteredSchema\n .map(([key, fieldType, prefix]) => serializeField(params[key], fieldType, prefix, params))\n}\n\n/**\n * Unpack binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Array} binary Array with binary transaction field's\n * @param {Array} schema Transaction schema\n * @return {Object} Object with transaction field's\n */\nexport function unpackRawTx (binary, schema) {\n return schema\n .reduce(\n (\n acc,\n [key, fieldType, prefix],\n index\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {}\n )\n}\n\n/**\n * Get transaction serialization/deserialization schema\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {{ vsn: String, objId: Number, type: String }}\n * @throws {Error} Schema not found error\n * @return {Object} Schema\n */\nconst getSchema = ({ vsn, objId, type }) => {\n const isDeserialize = !!objId\n const firstKey = isDeserialize ? objId : type\n const schema = isDeserialize ? TX_DESERIALIZATION_SCHEMA : TX_SERIALIZATION_SCHEMA\n\n if (!schema[firstKey]) {\n throw new SchemaNotFoundError(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type}`)\n }\n if (!schema[firstKey][vsn]) {\n throw new SchemaNotFoundError(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type} version ${vsn}`)\n }\n return schema[firstKey][vsn]\n}\n\n/**\n * Build transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {String} type Transaction type\n * @param {Object} [options={}] options\n * @param {String[]} [options.excludeKeys] Array of keys to exclude for validation and build\n * @param {String} [options.prefix] Prefix of transaction\n * @throws {Error} Validation error\n * @returns {Object} object\n * @returns {String} object.tx Base64Check transaction hash with 'tx_' prefix\n * @returns {Buffer} object.rlpEncoded rlp encoded transaction\n * @returns {Array<Buffer>} object.binary binary transaction\n */\nexport function buildTx (\n params,\n type,\n { excludeKeys = [], prefix = 'tx', vsn = VSN, denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n) {\n const [schema, tag] = getSchema({ type, vsn })\n const binary = buildRawTx(\n { ...params, VSN: vsn, tag },\n schema,\n { excludeKeys, denomination: params.denomination || denomination }\n ).filter(e => e !== undefined)\n\n const rlpEncoded = rlpEncode(binary)\n const tx = encode(rlpEncoded, prefix)\n\n return { tx, rlpEncoded, binary, txObject: unpackRawTx(binary, schema) }\n}\n\n/**\n * Unpack transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String|Buffer} encodedTx String or RLP encoded transaction array\n * (if fromRlpBinary flag is true)\n * @param {Boolean} fromRlpBinary Unpack from RLP encoded transaction (default: false)\n * @param {String} prefix - Prefix of data\n * @returns {Object} object\n * @returns {Object} object.tx Object with transaction param's\n * @returns {Buffer} object.rlpEncoded rlp encoded transaction\n * @returns {Array<Buffer>} object.binary binary transaction\n */\nexport function unpackTx (encodedTx, fromRlpBinary = false, prefix = 'tx') {\n const rlpEncoded = fromRlpBinary ? encodedTx : decode(encodedTx, prefix)\n const binary = rlpDecode(rlpEncoded)\n\n const objId = readInt(binary[0])\n const vsn = readInt(binary[1])\n const [schema] = getSchema({ objId, vsn })\n\n return { txType: OBJECT_ID_TX_TYPE[objId], tx: unpackRawTx(binary, schema), rlpEncoded, binary }\n}\n\n/**\n * Build a transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String | Buffer} rawTx base64 or rlp encoded transaction\n * @return {String} Transaction hash\n */\nexport function buildTxHash (rawTx) {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_') ? decode(rawTx, 'tx') : rawTx\n return encode(hash(data), 'th')\n}\n\nexport default {\n calculateMinFee,\n calculateFee,\n unpackTx,\n unpackRawTx,\n buildTx,\n buildRawTx,\n validateParams,\n buildTxHash\n}\n","import nacl from 'tweetnacl'\nimport { full as hmac } from 'tweetnacl-auth'\nimport { fromString } from 'bip32-path'\nimport { decryptKey, encryptKey } from './crypto'\nimport { encode } from '../tx/builder/helpers'\nimport {\n InvalidDerivationPathError, NotHardenedSegmentError, UnsupportedChildIndexError\n} from './errors'\n\nconst ED25519_CURVE = Buffer.from('ed25519 seed')\nconst HARDENED_OFFSET = 0x80000000\n\nconst toHex = (buffer) => Buffer.from(buffer).toString('hex')\n\nexport function derivePathFromKey (path, key) {\n const segments = path === '' ? [] : fromString(path).toPathArray()\n segments.forEach((segment, i) => {\n if (segment < HARDENED_OFFSET) {\n throw new NotHardenedSegmentError(`Segment #${i + 1} is not hardened`)\n }\n })\n\n return segments.reduce((parentKey, segment) => deriveChild(parentKey, segment), key)\n}\n\nexport function derivePathFromSeed (path, seed) {\n if (!['m', 'm/'].includes(path.slice(0, 2))) {\n throw new InvalidDerivationPathError()\n }\n const masterKey = getMasterKeyFromSeed(seed)\n return derivePathFromKey(path.slice(2), masterKey)\n}\n\nfunction formatAccount (keys) {\n const { secretKey, publicKey } = keys\n return {\n secretKey: toHex(secretKey),\n publicKey: encode(publicKey, 'ak')\n }\n}\n\nexport function getKeyPair (secretKey) {\n return nacl.sign.keyPair.fromSeed(secretKey)\n}\n\nexport function getMasterKeyFromSeed (seed) {\n const I = hmac(seed, ED25519_CURVE)\n const IL = I.slice(0, 32)\n const IR = I.slice(32)\n return {\n secretKey: IL,\n chainCode: IR\n }\n}\n\nexport function deriveChild ({ secretKey, chainCode }, index) {\n if (index < HARDENED_OFFSET) {\n throw new UnsupportedChildIndexError(index)\n }\n const indexBuffer = Buffer.allocUnsafe(4)\n indexBuffer.writeUInt32BE(index, 0)\n\n const data = Buffer.concat([Buffer.alloc(1, 0), Buffer.from(secretKey), Buffer.from(indexBuffer)])\n\n const I = hmac(data, chainCode)\n const IL = I.slice(0, 32)\n const IR = I.slice(32)\n return {\n secretKey: IL,\n chainCode: IR\n }\n}\n\nexport function generateSaveHDWalletFromSeed (seed, password) {\n const walletKey = derivePathFromSeed('m/44h/457h', seed)\n return {\n secretKey: toHex(encryptKey(password, walletKey.secretKey)),\n chainCode: toHex(encryptKey(password, walletKey.chainCode))\n }\n}\n\nexport function getSaveHDWalletAccounts (saveHDWallet, password, accountCount) {\n const walletKey = {\n secretKey: decryptKey(password, Buffer.from(saveHDWallet.secretKey, 'hex')),\n chainCode: decryptKey(password, Buffer.from(saveHDWallet.chainCode, 'hex'))\n }\n return (new Array(accountCount)).fill()\n .map((_, idx) =>\n formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)))\n}\n\nexport const getHdWalletAccountFromSeed = (seed, accountIdx) => {\n const walletKey = derivePathFromSeed('m/44h/457h', seed)\n const derived = derivePathFromKey(`${accountIdx}h/0h/0h`, walletKey)\n const keyPair = getKeyPair(derived.secretKey)\n return {\n ...formatAccount(keyPair),\n idx: accountIdx\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Tx module\n * @module @aeternity/aepp-sdk/es/tx\n * @export Tx\n * @example import { Tx } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Tx Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Tx is one of the three basic building blocks of an\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} client and provides methods to\n * create aeternity transactions.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Tx instance\n * @example Tx()\n */\nconst Tx = stampit(required({\n methods: {\n spendTx: required,\n namePreclaimTx: required,\n nameClaimTx: required,\n nameTransferTx: required,\n nameUpdateTx: required,\n nameRevokeTx: required,\n contractCreateTx: required,\n contractCallTx: required,\n oracleRegisterTx: required,\n oracleExtendTx: required,\n oraclePostQueryTx: required,\n oracleRespondTx: required,\n getAccountNonce: required,\n channelCloseSoloTx: required,\n channelSlashTx: required,\n channelSettleTx: required,\n channelSnapshotSoloTx: required,\n gaAttachTx: required,\n getVmVersion: required,\n prepareTxParams: required\n }\n}))\n\n/**\n * Create a `spend_tx` transaction\n * @function spendTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * sender?: String,\n * recipientId: String,\n * amount: Number,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number,\n * payload?: String\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `spend_tx` transaction\n */\n\n/**\n * Create a `name_preclaim_tx` transaction\n * @function namePreclaimTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String, commitment: String, fee?: Number, ttl?: Number, nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_preclaim_tx` transaction\n */\n\n/**\n * Create a `name_claim_tx` transaction\n * @function nameClaimTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String, name: String, nameSalt: String, fee?: Number, ttl?: Number, nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_claim_tx` transaction\n */\n\n/**\n * Create a `name_transfer_tx` transaction\n * @function nameTransferTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String,\n * nameId: String,\n * recipientId: String,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_transfer_tx` transaction\n */\n\n/**\n * Create a `name_update_tx` transaction\n * @function nameUpdateTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String,\n * nameId: String,\n * pointers: Object,\n * nameTtl: Number,\n * clientTtl: Number,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_update_tx` transaction\n */\n\n/**\n * Create a `name_revoke_tx` transaction\n * @function nameRevokeTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String, nameId: String, fee?: Number, ttl?: Number, nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_revoke_tx` transaction\n */\n\n/**\n * Create a `contract_create_tx` transaction\n * @function contractCreateTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * owner: String,\n * code: String,\n * callData: String,\n * vmVersion: Number,\n * deposit: Number,\n * amount: Number,\n * gas: Number,\n * gasPrice: Number,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `contract_create_tx` transaction\n */\n\n/**\n * Create a `contract_call_tx` transaction\n * @function contractCallTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * callerId: String,\n * contract: String,\n * callData: String,\n * vmVersion: Number,\n * amount: Number,\n * gas: Number,\n * gasPrice: Number,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `contract_call_tx` transaction\n */\n\n/**\n * Create a `oracle_register_tx` transaction\n * @function oracleRegisterTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * accountId: String,\n * queryFormat: String,\n * responseFormat: String,\n * queryFee: String|Number,\n * oracleTtl: Object,\n * vmVersion: Number = ORACLE_VM_VERSION,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_register_tx` transaction\n */\n\n/**\n * Create a `oracle_extend_tx` transaction\n * @function oracleExtendTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * oracleId: String,\n * callerId: String,\n * oracleTtl: Object,\n * fee?: Number,\n * ttl: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_extend_tx` transaction\n */\n\n/**\n * Create a `oracle_post_query_tx` transaction\n * @function oraclePostQuery\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * oracleId: String,\n * responseTtl: Object,\n * query: String,\n * queryTtl: Object,\n * queryFee: String|Number,\n * senderId: String,\n * fee?: Number,\n * ttl: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_post_query_tx` transaction\n */\n\n/**\n * Create a `oracle_respond_tx` transaction\n * @function oracleRespondTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * oracleId: String,\n * callerId: String,\n * responseTtl: Object,\n * queryId: String,\n * response: String,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_respond_tx` transaction\n */\n\n/**\n * Get Account Nonce\n * @function getAccountNonce\n * @instance\n * @abstract\n * @category async\n * @rtype (address) => result: Number\n * @param {String} address - Account public key\n * @return {Number} Result\n */\n\nexport default Tx\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Chain module\n * @module @aeternity/aepp-sdk/es/chain\n * @export Chain\n * @example import { Chain } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Chain Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/chain\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Chain instance\n */\nconst Chain = stampit({\n deepProps: {\n Ae: {\n defaults: {\n waitMined: true,\n verify: true,\n _expectedMineRate: 180000,\n _microBlockCycle: 3000,\n _maxPollInterval: 5000\n }\n }\n },\n methods: {\n _getPollInterval (type) {\n const base = {\n block: this.Ae.defaults._expectedMineRate,\n microblock: this.Ae.defaults._microBlockCycle\n }[type]\n if (!base) throw new Error(`Unknown poll type: ${type}`)\n return Math.min(base / 3, this.Ae.defaults._maxPollInterval)\n }\n }\n}, required({\n methods: {\n sendTransaction: required,\n height: required,\n awaitHeight: required,\n poll: required,\n balance: required,\n getBalance: required,\n tx: required,\n getTxInfo: required,\n mempool: required,\n txDryRun: required,\n getAccount: required\n }\n}))\n\n/**\n * Submit a signed transaction for mining\n * @function sendTransaction\n * @instance\n * @abstract\n * @category async\n * @rtype (tx: String, options?: Object) => tx: Promise[Object]|txHash: Promise[String]\n * @param {String} tx - Transaction to submit\n * @param {String} [options={}] - Options to pass to the implementation\n * @param {String} [options.verify=true] - Verify transaction before broadcast.\n * @return {Object} Transaction\n */\n\n/**\n * Obtain current height of the chain\n * @function height\n * @instance\n * @abstract\n * @category async\n * @rtype () => height: Number\n * @return {Number} Current chain height\n */\n\n/**\n * Wait for the chain to reach a specific height\n * @function awaitHeight\n * @instance\n * @abstract\n * @category async\n * @rtype (height: Number, options?: Object) => height: Number\n * @param {Object} [options={}] - Options\n * @param {Number} options.interval - Interval (in ms) at which to poll the chain\n * @param {Number} options.attempts - Number of polling attempts after which to fail\n * @return {Number} Current chain height\n */\n\n/**\n * Wait for a transaction to be mined\n * @function poll\n * @instance\n * @abstract\n * @category async\n * @rtype (th: String, options?: Object) => tx: Object\n * @param {Object} [options={}] - Options\n * @param {Number} options.interval - Interval (in ms) at which to poll the chain\n * @param {Number} options.blocks - Number of blocks mined after which to fail\n * @return {Object} The transaction as it was mined\n */\n\n/**\n * Request the balance of specified account\n * @function balance\n * @instance\n * @abstract\n * @category async\n * @rtype (address: String, options?: Object) => balance: Number\n * @param {String} address - The public account address to obtain the balance for\n * @param {Object} [options={}] - Options\n * @param {Number} options.height - The chain height at which to obtain the balance for (default:\n * top of chain)\n * @param {String} options.hash - The block hash on which to obtain the balance for (default: top\n * of chain)\n * @return {Object} The transaction as it was mined\n */\n\n/**\n * Obtain a transaction based on its hash\n * @function tx\n * @instance\n * @abstract\n * @category async\n * @rtype (hash: String, info = false) => tx: Object\n * @param {String} hash - Transaction hash\n * @param {Boolean} info - Retrieve additional transaction date. Works only for (ContractCreate and\n * ContractCall transaction's)\n * @return {Object} Transaction\n */\n\n/**\n * Obtain a transaction info based on its hash\n * @function getTxInfo\n * @instance\n * @abstract\n * @category async\n * @rtype (hash: String) => tx: Object\n * @param {String} hash - Transaction hash\n * @return {Object} Transaction\n */\n\n/**\n * Obtain transaction's from mempool\n * @function mempool\n * @instance\n * @abstract\n * @category async\n * @rtype () => txs: [...Object]\n * @return {Object[]} Transactions\n */\n\n/**\n * Obtain current generation\n * @function getCurrentGeneration\n * @instance\n * @abstract\n * @category async\n * @rtype () => generation: Object\n * @return {Object} Current Generation\n */\n\n/**\n * Get generation by hash or height\n * @function getGeneration\n * @instance\n * @abstract\n * @category async\n * @rtype (hashOrHeight) => generation: Object\n * @param {String|Number} hashOrHeight - Generation hash or height\n * @return {Object} Generation\n */\n\n/**\n * Wait for transaction confirmation\n * @function waitForTxConfirm\n * @instance\n * @abstract\n * @category async\n * @rtype (txHash: String, { confirm: Number | Boolean } = { confirm: 3 }) => Promise<Number>\n * @param {String} txHash - Transaction hash\n * @param {Object} [options] - options\n * @param {Number} [options.confirm=3] - Number of blocks to wait for transaction confirmation\n * @return {Promise<Number>} Current Height\n */\n\n/**\n * Get micro block transactions\n * @function getMicroBlockTransactions\n * @instance\n * @abstract\n * @category async\n * @rtype (hash) => txs: [...Object]\n * @return {Object[]} Transactions\n */\n\n/**\n * Get key block\n * @function getKeyBlock\n * @instance\n * @abstract\n * @category async\n * @rtype (hashOrHeight) => keyBlock: Object\n * @return {Object} Key Block\n */\n\n/**\n * Get micro block header\n * @function getMicroBlockHeader\n * @instance\n * @abstract\n * @category async\n * @rtype (hash) => header: Object\n * @return {Object} Micro block header\n */\n\n/**\n * Get account by account public key\n * @function getAccount\n * @instance\n * @abstract\n * @category async\n * @rtype (address, { hash, height }) => account: Object\n * @param {String} address - Account public key\n * @param {Object} [options={}] - Options\n * @param {Number} [options.height] - Get account on specific block by block height\n * @param {String} [options.hash] - Get account on specific block by block hash\n * @return {Object} Account\n */\n\n/**\n * Transaction dry-run\n * @function txDryRun\n * @instance\n * @abstract\n * @category async\n * @rtype (tx, accountAddress, options) => result: Object\n * @param {String} tx - transaction to execute\n * @param {String} accountAddress - address that will be used to execute transaction\n * @param {String|Number} [options.top] - hash of block on which to make dry-run\n * @param {Boolean} [options.txEvents] - collect and return on-chain tx events that would result\n * from the call\n * @return {Object} Result\n */\n\nexport default Chain\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport stampit from '@stamp/it'\n\nfunction asyncInit (options = {}, { stamp, args, instance }) {\n return stamp.compose.deepConfiguration.AsyncInit.initializers.reduce(async (instance, init) => {\n instance = await Promise.resolve(instance)\n if (typeof init === 'function') {\n const ret = await Promise.resolve(init.call(instance, options, { stamp, args, instance }))\n return ret === undefined ? instance : ret\n }\n return instance\n }, instance)\n}\n\nexport default stampit({\n deepConf: { AsyncInit: { initializers: [] } },\n composers ({ stamp, composables }) {\n const conf = stamp.compose.deepConfiguration.AsyncInit\n conf.initializers = composables\n .map(c =>\n c?.compose?.deepConfiguration?.AsyncInit?.initializers ||\n (c.compose || c).initializers ||\n [])\n .flat(Infinity)\n .filter((f, idx, arr) => !arr.slice(0, idx).includes(f))\n .filter(f => f !== asyncInit)\n stamp.compose.initializers = [asyncInit]\n }\n})\n","import JsonBig from '@aeternity/json-bigint'\nimport BigNumber from 'bignumber.js'\n\nconst jsonBig = JsonBig({ storeAsString: true })\n\nconst convertValuesToBigNumbers = value => {\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n return Object.entries(value)\n .map(([key, value]) => [key, convertValuesToBigNumbers(value)])\n .reduce((p, [k, v]) => ({ ...p, [k]: v }), {})\n }\n if (Array.isArray(value)) {\n return value.map(item => convertValuesToBigNumbers(item))\n }\n if (typeof value === 'string' && BigNumber(value).toString(10) === value) {\n const bn = BigNumber(value)\n bn.toJSON = () => bn.toString(10)\n return bn\n }\n return value\n}\n\nexport default {\n stringify: (object, ...args) => jsonBig.stringify(convertValuesToBigNumbers(object), ...args),\n parse: jsonBig.parse\n}\n","import { snakeToPascal, pascalToSnake } from './string'\n\nexport const pause = async (duration: number): Promise<void> =>\n await new Promise(resolve => setTimeout(resolve, duration))\n\nexport const mapObject = (\n object: object,\n fn: (value: [string, any], index: number, array: Array<[string, any]>) => Array<[string, any]>\n): object => Object.fromEntries(Object.entries(object).map(fn))\n\nexport const filterObject = (\n object: object,\n fn: (value: [string, any], index: number, array: Array<[string, any]>) => boolean\n): object => Object.fromEntries(Object.entries(object).filter(fn))\n\n/**\n * Key traversal metafunction\n * @static\n * @function\n * @rtype (fn: (s: String) => String) => (o: Object) => Object\n * @param {Function} fn - Key transformation function\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n */\nexport const traverseKeys = (fn: Function, object: any): any => {\n if (typeof object !== 'object' || object === null) return object\n if (Array.isArray(object)) return object.map(i => traverseKeys(fn, i))\n return mapObject(object, ([key, value]: [string, any]) => [\n fn(key), traverseKeys(fn, value)\n ])\n}\n\n/**\n * snake_case key traversal\n * @static\n * @rtype (o: Object) => Object\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n * @see pascalToSnake\n */\nexport const snakizeKeys = traverseKeys.bind(null, pascalToSnake)\n\n/**\n * PascalCase key traversal\n * @static\n * @rtype (o: Object) => Object\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n * @see snakeToPascal\n */\nexport const pascalizeKeys = traverseKeys.bind(null, snakeToPascal)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Generator of Swagger client module\n * @module @aeternity/aepp-sdk/es/utils/swagger\n * @export genSwaggerClient\n */\n\nimport SwaggerClient from 'swagger-client'\nimport fetch from 'cross-fetch'\nimport JsonBig from './json-big'\nimport { snakizeKeys, pascalizeKeys, mapObject, filterObject } from './other'\nimport { ArgumentCountMismatchError } from './errors'\nimport { snakeToPascal } from './string'\n\nlet warnedAboutInternalApiUsage = false\n\n/**\n * Generator of Swagger client\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/swagger\n * @rtype Object\n * @param {String} specUrl - Swagger specification URL on external node host\n * @param {Object} options\n * @param {String} [options.spec] - Override OpenAPI definition\n * @param {String} [options.internalUrl] - Node internal URL\n * @param {Boolean} [options.disableBigNumbers]\n * @param {Boolean} [options.disableCaseConversion]\n * @param {Function} [options.responseInterceptor]\n * @return {Object} Swagger client\n * @example (await genSwaggerClient('https://mainnet.aeternity.io/api')).getAccountByPubkey('ak_jupBUgZNbcC4krDLR3tAkw1iBZoBbkNeShAq4atBtpFWmz36r')\n */\nexport default async (\n specUrl,\n { spec, internalUrl, disableBigNumbers, disableCaseConversion, responseInterceptor } = {}\n) => {\n spec = spec || await (await fetch(specUrl)).json()\n const jsonImp = disableBigNumbers ? JSON : JsonBig\n\n const [external, internal] = await Promise.all([specUrl, internalUrl].map((url) => {\n if (!url) return null\n const pendingGetRequests = {}\n return SwaggerClient({\n url,\n spec,\n requestInterceptor: request => {\n if (request.method !== 'GET') return\n return {\n ...request,\n userFetch: async (url, request) => {\n const key = JSON.stringify({ ...request, url })\n pendingGetRequests[key] ??= fetch(url, request)\n try {\n return (await pendingGetRequests[key]).clone()\n } finally {\n delete pendingGetRequests[key]\n }\n }\n }\n },\n responseInterceptor: response => {\n if (response.text === '' || response.text?.size === 0) return response\n const body = jsonImp.parse(response.text)\n Object.assign(response, {\n body: disableCaseConversion ? body : pascalizeKeys(body)\n })\n return (responseInterceptor && responseInterceptor(response)) || response\n }\n })\n }))\n\n const combinedApi = Object.assign(\n {},\n ...external.apis.external ? [external.apis.external] : Object.values(external.apis),\n mapObject(internal?.apis.internal || {}, ([key, handler]) => [key, (...args) => {\n if (!warnedAboutInternalApiUsage) {\n console.warn(\n 'SDK\\'s wrapper of aeternity node internal API is deprecated, please use external ' +\n 'equivalent (for example, \"sdk.api.protectedDryRunTxs\" instead of \"sdk.api.dryRunTxs\") ' +\n 'or create a wrapper of internal API by yourself (using \"genSwaggerClient\")'\n )\n warnedAboutInternalApiUsage = true\n }\n return handler(...args)\n }])\n )\n\n const opSpecs = Object.values(spec.paths)\n .map(paths => Object.values(paths))\n .flat()\n .reduce((acc, n) => ({ ...acc, [n.operationId]: n }), {})\n\n const requestQueues = {}\n const api = mapObject(combinedApi, ([opId, handler]) => {\n const functionName = opId.slice(0, 1).toLowerCase() + snakeToPascal(opId.slice(1))\n return [\n functionName,\n async (...args) => {\n const opSpec = opSpecs[opId]\n const parameters = [\n ...opSpec.parameters,\n ...opSpec.requestBody\n ? [{\n required: opSpec.requestBody.required,\n schema: Object.values(opSpec.requestBody.content)[0].schema,\n name: '__requestBody'\n }]\n : []\n ]\n const required = parameters.filter(param => param.required).map(p => p.name)\n if (![0, 1].includes(args.length - required.length)) {\n throw new ArgumentCountMismatchError(functionName, required.length, args.length)\n }\n const values = required.reduce(\n (acc, req, idx) => ({ ...acc, [req]: args[idx] }),\n args[required.length] || {}\n )\n const { __requestBody, __queue, ...stringified } = mapObject(values, ([param, value]) => {\n if (typeof value !== 'object') return [param, value]\n const rootKeys = Object.keys(parameters.find(p => p.name === param).schema.properties)\n const filteredValue = filterObject(\n disableCaseConversion ? value : snakizeKeys(value),\n ([key]) => rootKeys.includes(key)\n )\n return [param, jsonImp.stringify(filteredValue)]\n })\n\n const request = async () => (await handler(stringified, { requestBody: __requestBody }))\n .body\n if (!__queue) return request()\n const res = (requestQueues[__queue] ?? Promise.resolve()).then(request, request)\n // TODO: remove after fixing https://github.com/aeternity/aeternity/issues/3803\n // gap to ensure that node won't reject the nonce\n requestQueues[__queue] = res.then(() => new Promise(resolve => setTimeout(resolve, 750)))\n return res\n }\n ]\n })\n\n return Object.assign(external, { api })\n}\n","export default function (version: string, geVersion: string, ltVersion: string): boolean {\n const getComponents = (v: string): number[] => v\n .split(/[-+]/)[0].split('.').map(i => +i)\n\n const versionComponents = getComponents(version)\n const geComponents = getComponents(geVersion)\n const ltComponents = getComponents(ltVersion)\n\n const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1\n const componentsToNumber = (components: number[]): number => components.reverse()\n .reduce((acc, n, idx) => acc + n * Math.pow(base, idx), 0)\n\n const vNumber = componentsToNumber(versionComponents)\n const geNumber = componentsToNumber(geComponents)\n const ltNumber = componentsToNumber(ltComponents)\n return vNumber >= geNumber && vNumber < ltNumber\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Node module\n * @module @aeternity/aepp-sdk/es/node\n * @export Node\n * @example import { Node } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from './utils/async-init'\nimport genSwaggerClient from './utils/swagger'\nimport semverSatisfies from './utils/semver-satisfies'\nimport { MissingParamError, UnsupportedVersionError } from './utils/errors'\n\n/**\n * Obtain networkId from account or node\n * @instance\n * @category async\n * @rtype () => networkId: String\n * @return {String} NetworkId\n */\nexport function getNetworkId ({ networkId, force = false } = {}) {\n const res = networkId || this.networkId || this.selectedNode?.networkId\n if (!force && !res) throw new MissingParamError('networkId is not provided')\n if (force && !res) return null\n return res\n}\n\n/**\n * {@link genSwaggerClient} based Node remote API Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node\n * @rtype Stamp\n * @param {Object} [options={}] - Options\n * @param {String} options.url - Base URL for Node\n * @param {String} options.internalUrl - Base URL for internal requests\n * @param {Object} options.axiosConfig - Object with axios configuration\n * @param {Object} options.axiosConfig.config\n * @param {Function} options.axiosConfig.errorHandler - (err) => throw err\n * @return {Object} Node client\n * @example Node({url: 'https://testnet.aeternity.io'})\n */\nconst Node = AsyncInit.compose({\n async init ({ url, internalUrl, ignoreVersion }) {\n if (!url) throw new MissingParamError('\"url\" required')\n this.url = url.replace(/\\/$/, '')\n this.internalUrl = internalUrl?.replace(/\\/$/, '')\n const client = await genSwaggerClient(`${this.url}/api?oas3`, {\n internalUrl: this.internalUrl,\n responseInterceptor: response => {\n if (response.ok) return\n return Object.assign(response, {\n statusText: `${new URL(response.url).pathname.slice(1)} error: ` + response.body.reason\n })\n }\n })\n this.version = client.spec.info.version\n if (\n !semverSatisfies(this.version, NODE_GE_VERSION, NODE_LT_VERSION) &&\n !ignoreVersion\n ) {\n throw new UnsupportedVersionError('node', this.version, NODE_GE_VERSION, NODE_LT_VERSION)\n }\n this.api = client.api\n\n const {\n nodeRevision: revision, genesisKeyBlockHash: genesisHash, networkId,\n protocols, topBlockHeight\n } = await this.api.getStatus()\n this.consensusProtocolVersion = protocols\n .filter(({ effectiveAtHeight }) => topBlockHeight >= effectiveAtHeight)\n .reduce(\n (acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc,\n { effectiveAtHeight: -1, version: 0 }\n )\n .version\n this.nodeNetworkId = networkId\n return Object.assign(this, { revision, genesisHash })\n },\n methods: {\n getNodeInfo () {\n return {\n url: this.url,\n internalUrl: this.internalUrl,\n nodeNetworkId: this.nodeNetworkId,\n version: this.version,\n consensusProtocolVersion: this.consensusProtocolVersion\n }\n }\n },\n props: {\n version: null,\n consensusProtocolVersion: null,\n nodeNetworkId: null\n }\n})\n\nconst NODE_GE_VERSION = '6.2.0'\nconst NODE_LT_VERSION = '7.0.0'\n\nexport default Node\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * AccountBase module\n * @module @aeternity/aepp-sdk/es/account/base\n * @export AccountBase\n * @export isAccountBase\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\nimport { messageToHash, verifyMessage as verifyMessageCrypto, hash } from '../utils/crypto'\nimport { buildTx } from '../tx/builder'\nimport { decode } from '../tx/builder/helpers'\nimport { TX_TYPE } from '../tx/builder/schema'\nimport { getNetworkId } from '../node'\n\n/**\n * Check is provided object looks like an instance of AccountBase\n * @rtype (Object) => Boolean\n * @param {Object} acc - Object to check\n * @return {Boolean}\n */\nexport const isAccountBase = (acc) => !['sign', 'address'].find(f => typeof acc[f] !== 'function')\n\n/**\n * Sign encoded transaction\n * @instance\n * @category async\n * @rtype (tx: String) => tx: Promise[String], throws: Error\n * @param {String} tx - Transaction to sign\n * @param {Object} opt - Options\n * @param {Object} [opt.innerTx] - Sign as inner transaction for PayingFor\n * @return {String} Signed transaction\n */\nasync function signTransaction (tx, opt = {}) {\n const prefixes = [this.getNetworkId(opt)]\n if (opt.innerTx) prefixes.push('inner_tx')\n const rlpBinaryTx = decode(tx, 'tx')\n const txWithNetworkId = Buffer.concat([Buffer.from(prefixes.join('-')), hash(rlpBinaryTx)])\n\n const signatures = [await this.sign(txWithNetworkId, opt)]\n return buildTx({ encodedTx: rlpBinaryTx, signatures }, TX_TYPE.signed).tx\n}\n\n/**\n * Get network Id\n * @instance\n * @function getNetworkId\n * @category async\n * @rtype () => networkId: String\n * @return {String} Network Id\n */\n\n/**\n * Sign message\n * @instance\n * @category async\n * @rtype (msg: String) => signature: Promise[String], throws: Error\n * @param {String} message - Message to sign\n * @param {Object} opt - Options\n * @return {String} Signature\n */\nasync function signMessage (message, opt = { returnHex: false }) {\n const sig = await this.sign(messageToHash(message), opt)\n return opt.returnHex ? Buffer.from(sig).toString('hex') : sig\n}\n\n/**\n * Verify message\n * @instance\n * @category async\n * @rtype (\n * msg: String, signature: String, publicKey: String\n * ) => signature: Promise[String], throws: Error\n * @param {String} message - Message to verify\n * @param {String} signature - Signature\n * @param {Object} opt - Options\n * @return {Boolean}\n */\nasync function verifyMessage (message, signature, opt = {}) {\n return verifyMessageCrypto(\n message,\n typeof signature === 'string' ? Buffer.from(signature, 'hex') : signature,\n decode(await this.address(opt))\n )\n}\n\n/**\n * AccountBase Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Account is one of the three basic building blocks of an\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} client and provides access to a\n * signing key pair.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/account\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} options.networkId - NETWORK_ID using for signing transaction's\n * @return {Object} Account instance\n */\nexport default stampit({\n init ({ networkId }) { // NETWORK_ID using for signing transaction's\n if (!this.networkId && networkId) {\n this.networkId = networkId\n }\n },\n methods: { signTransaction, getNetworkId, signMessage, verifyMessage }\n}, required({\n methods: {\n sign: required,\n address: required\n }\n}))\n\n/**\n * Sign data blob\n * @function sign\n * @instance\n * @abstract\n * @category async\n * @rtype (data: String) => data: Promise[String]\n * @param {String} data - Data blob to sign\n * @return {String} Signed data blob\n */\n\n/**\n * Obtain account address\n * @function address\n * @instance\n * @abstract\n * @category async\n * @rtype () => address: Promise[String]\n * @return {String} Public account address\n */\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Ae module\n * @module @aeternity/aepp-sdk/es/ae\n * @export Ae\n * @example import { Ae } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport Tx from '../tx'\nimport Chain from '../chain'\nimport AccountBase from '../account/base'\nimport TxBuilder from '../tx/builder'\nimport BigNumber from 'bignumber.js'\nimport { AE_AMOUNT_FORMATS } from '../utils/amount-formatter'\nimport { ArgumentError } from '../utils/errors'\n\n/**\n * Sign and post a transaction to the chain\n * @instance\n * @category async\n * @rtype (tx: String, options: Object) => Promise[String]\n * @param {String} tx - Transaction\n * @param {Object} [options={}] options - Options\n * @param {Object} [options.verify=true] - Verify transaction before broadcast, throw error if not\n * valid\n * @return {Object} Transaction\n */\nasync function send (tx, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const { contractId, authFun } = options.innerTx\n ? { contractId: false }\n : await this.getAccount(await this.address(opt))\n const signed = contractId\n ? await this.signUsingGA(tx, { ...opt, authFun })\n : await this.signTransaction(tx, opt)\n return opt.innerTx\n ? { hash: TxBuilder.buildTxHash(signed), rawTx: signed }\n : this.sendTransaction(signed, opt)\n}\n\nasync function signUsingGA (tx, { authData, authFun, ...options } = {}) {\n return this.createMetaTx(tx, authData, authFun, options)\n}\n\n/**\n * Send tokens to another account\n * @instance\n * @category async\n * @rtype (amount: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} amount - Amount to spend\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function spend (amount, recipientIdOrName, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.spendTx({\n ...opt,\n senderId: await this.address(opt),\n recipientId: await this.resolveName(recipientIdOrName, 'account_pubkey', opt),\n amount\n }),\n opt\n )\n}\n\n// TODO: Rename to spendFraction\n/**\n * Send a fraction of token balance to another account\n * @instance\n * @category async\n * @rtype (fraction: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} fraction - Fraction of balance to spend (between 0 and 1)\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function transferFunds (fraction, recipientIdOrName, options) {\n if (fraction < 0 || fraction > 1) {\n throw new ArgumentError('fraction', 'a number between 0 and 1', fraction)\n }\n const opt = { ...this.Ae.defaults, ...options }\n const recipientId = await this.resolveName(recipientIdOrName, 'account_pubkey', opt)\n const senderId = await this.address(opt)\n const balance = new BigNumber(await this.balance(senderId))\n const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP)\n const { tx: { fee } } = TxBuilder.unpackTx(\n await this.spendTx({ ...opt, senderId, recipientId, amount: desiredAmount })\n )\n // Reducing of the amount may reduce transaction fee, so this is not completely accurate\n const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount\n return this.send(await this.spendTx({ ...opt, senderId, recipientId, amount }), opt)\n}\n\n/**\n * Submit transaction of another account paying for it (fee and gas)\n * @instance\n * @category async\n * @rtype (transaction: String, options?: Object) => Promise[String]\n * @param {String} transaction - tx_<base64>-encoded transaction\n * @param {Object} [options]\n * @return {Object} Transaction\n */\nasync function payForTransaction (transaction, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.payingForTx({\n ...opt,\n payerId: await this.address(opt),\n tx: transaction\n }),\n opt\n )\n}\n\n/**\n * Remove all listeners for RPC\n * @instance\n * @return {void}\n */\nfunction destroyInstance () {\n const destroyMethods = ['destroyClient', 'destroyServer'] // Array with destroy function's\n destroyMethods.forEach(m => this[m] && typeof this[m] === 'function' && this[m]())\n}\n\n/**\n * Basic Ae Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Ae objects are the composition of three basic building blocks:\n * * {@link module:@aeternity/aepp-sdk/es/tx--Tx}\n * * {@link module:@aeternity/aepp-sdk/es/account--Account}\n * * {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * Only by providing the joint functionality of those three, most more advanced\n * operations, i.e. the ones with actual use value on the chain, become\n * available.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Ae instance\n */\nconst Ae = stampit(Tx, AccountBase, Chain, {\n methods: { send, spend, transferFunds, payForTransaction, destroyInstance, signUsingGA },\n deepProps: { Ae: { defaults: { denomination: AE_AMOUNT_FORMATS.AETTOS } } }\n})\n\nexport default Ae\n","import { verify, hash } from '../utils/crypto'\nimport { encode, decode } from './builder/helpers'\n\nimport BigNumber from 'bignumber.js'\nimport { MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE } from './builder/schema'\nimport { calculateFee, unpackTx } from './builder'\nimport { UnsupportedProtocolError } from '../utils/errors'\n\n/**\n * Transaction validator\n * @module @aeternity/aepp-sdk/es/tx/validator\n * @export verifyTransaction\n * @example import { verifyTransaction } from '@aeternity/aepp-sdk'\n */\n\nconst validators = [\n ({ encodedTx, signatures }, { account, node, parentTxTypes }) => {\n if ((encodedTx ?? signatures) === undefined) return []\n if (signatures.length !== 1) return [] // TODO: Support multisignature?\n const prefix = Buffer.from([\n node.nodeNetworkId,\n ...parentTxTypes.includes(TX_TYPE.payingFor) ? ['inner_tx'] : []\n ].join('-'))\n const txWithNetworkId = Buffer.concat([prefix, encodedTx.rlpEncoded])\n const txHashWithNetworkId = Buffer.concat([prefix, hash(encodedTx.rlpEncoded)])\n const decodedPub = decode(account.id, 'ak')\n if (verify(txWithNetworkId, signatures[0], decodedPub) ||\n verify(txHashWithNetworkId, signatures[0], decodedPub)) return []\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have' +\n ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures']\n }]\n },\n ({ encodedTx, tx }, { node, parentTxTypes, txType }) => {\n if ((encodedTx ?? tx) === undefined) return []\n return verifyTransaction(\n encode((encodedTx ?? tx).rlpEncoded, 'tx'),\n node,\n [...parentTxTypes, txType]\n )\n },\n (tx, { txType }) => {\n if (tx.fee === undefined) return []\n const minFee = calculateFee(0, txType, {\n gas: +tx.gas || 0, params: tx, showWarning: false, vsn: tx.VSN\n })\n if (new BigNumber(minFee).lte(tx.fee)) return []\n return [{\n message: `Fee ${tx.fee} is too low, minimum fee for this transaction is ${minFee}`,\n key: 'InsufficientFee',\n checkedKeys: ['fee']\n }]\n },\n ({ ttl }, { height }) => {\n if (ttl === undefined) return []\n ttl = +ttl\n if (ttl === 0 || ttl >= height) return []\n return [{\n message: `TTL ${ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl']\n }]\n },\n ({ amount, fee, nameFee, tx }, { account, parentTxTypes, txType }) => {\n if ((amount ?? fee ?? nameFee) === undefined) return []\n const cost = new BigNumber(fee).plus(nameFee || 0).plus(amount || 0)\n .plus(txType === TX_TYPE.payingFor ? tx.tx.encodedTx.tx.fee : 0)\n .minus(parentTxTypes.includes(TX_TYPE.payingFor) ? fee : 0)\n if (cost.lte(account.balance)) return []\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost.toFixed()}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee']\n }]\n },\n ({ nonce }, { account, parentTxTypes }) => {\n if (nonce === undefined || parentTxTypes.includes(TX_TYPE.gaMeta)) return []\n nonce = +nonce\n const validNonce = account.nonce + 1\n if (nonce === validNonce) return []\n return [{\n ...nonce < validNonce\n ? {\n message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,\n key: 'NonceAlreadyUsed'\n }\n : {\n message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,\n key: 'NonceHigh'\n },\n checkedKeys: ['nonce']\n }]\n },\n ({ gasPrice }) => {\n if (gasPrice === undefined) return []\n if (gasPrice >= MIN_GAS_PRICE) return []\n return [{\n message: `Gas price ${gasPrice} must be bigger then ${MIN_GAS_PRICE}`,\n key: 'MinGasPrice',\n checkedKeys: ['gasPrice']\n }]\n },\n ({ ctVersion, abiVersion }, { txType, node }) => {\n const { consensusProtocolVersion } = node.getNodeInfo()\n const protocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!protocol) throw new UnsupportedProtocolError(`Unsupported protocol: ${consensusProtocolVersion}`)\n // If not contract create tx\n if (!ctVersion) ctVersion = { abiVersion }\n const txProtocol = protocol[txType]\n if (!txProtocol) return []\n if (Object.entries(ctVersion).some(([key, value]) => !txProtocol[key].includes(+value))) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(txProtocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion']\n }]\n }\n return []\n },\n async ({ contractId }, { txType, node }) => {\n if (TX_TYPE.contractCall !== txType) return []\n try {\n const { active } = await node.api.getContract(contractId)\n if (active) return []\n return [{\n message: `Contract ${contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId']\n }]\n } catch (error) {\n if (!error.response?.body?.reason) throw error\n return [{\n message: error.response.body.reason,\n key: 'ContractNotFound',\n checkedKeys: ['contractId']\n }]\n }\n }\n]\n\nconst getSenderAddress = tx => [\n 'senderId', 'accountId', 'ownerId', 'callerId',\n 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId'\n]\n .map(key => tx[key])\n .filter(a => a)\n .map(a => a.replace(/^ok_/, 'ak_'))[0]\n\n/**\n * Transaction Validator\n * This function validates some of transaction properties,\n * to make sure it can be posted it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n * @rtype (tx: String, node) => void\n * @param {String} transaction Base64Check-encoded transaction\n * @param {Object} node Node to validate transaction against\n * @param {String[]} [parentTxTypes] Types of parent transactions\n * @return {Promise<Object[]>} Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction (transaction, node, parentTxTypes = []) {\n const { tx, txType } = unpackTx(transaction)\n\n const address = getSenderAddress(tx) ??\n (txType === TX_TYPE.signed ? getSenderAddress(tx.encodedTx.tx) : null)\n const [account, { height }] = await Promise.all([\n address && node.api.getAccountByPubkey(address).catch(() => ({\n id: address,\n balance: new BigNumber(0),\n nonce: 0\n })),\n node.api.getCurrentKeyBlockHeight()\n ])\n\n return (await Promise.all(\n validators.map(v => v(tx, { txType, node, account, height, parentTxTypes })))\n ).flat()\n}\n","/**\n * NodePool module\n * @module @aeternity/aepp-sdk/es/node-pool\n * @export NodePool\n * @example import { NodePool } from '@aeternity/aepp-sdk'\n */\nimport stampit from '@stamp/it'\nimport { getNetworkId } from '../node'\nimport { DisconnectedError, DuplicateNodeError, NodeNotFoundError, TypeError } from '../utils/errors'\n\n/**\n * Node Pool Stamp\n * This stamp allow you to make basic manipulation(add, remove, select) on list of nodes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Array} [options.nodes] - Array with Node instances\n * @return {Object} NodePool instance\n */\nexport default stampit({\n init ({ nodes = [] } = {}) {\n this.pool = new Map()\n this.validateNodes(nodes)\n\n nodes.forEach((node, i) => {\n const { name, instance } = node\n this.addNode(name, instance, i === 0)\n })\n if (nodes.length) this.selectNode(nodes[0].name)\n },\n propertyDescriptors: {\n api: {\n enumerable: true,\n configurable: false,\n get () {\n if (!this.selectedNode || !this.selectedNode.instance) {\n throw new NodeNotFoundError('You can\\'t use Node API. Node is not connected or not defined!')\n }\n return this.selectedNode.instance.api\n }\n }\n },\n methods: {\n /**\n * Add Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype (name: String, nodeInstance: Object, select: Boolean) => void\n * @param {String} name - Node name\n * @param {Object} node - Node instance\n * @param {Boolean} select - Select this node as current\n * @return {void}\n * @example\n * // add and select new node with name 'testNode'\n * nodePool.addNode('testNode', awaitNode({ url, internalUrl }), true)\n */\n addNode (name, node, select = false) {\n if (this.pool.has(name)) throw new DuplicateNodeError(name)\n\n this.validateNodes([{ name, instance: node }])\n\n this.pool.set(name, {\n name,\n instance: node,\n url: node.url,\n internalUrl: node.internalUrl,\n networkId: node.nodeNetworkId,\n version: node.version,\n consensusProtocolVersion: node.consensusProtocolVersion\n })\n if (select || !this.selectedNode) {\n this.selectNode(name)\n }\n },\n /**\n * Select Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype (name: String) => void\n * @param {String} name - Node name\n * @return {void}\n * @example\n * nodePool.selectNode('testNode')\n */\n selectNode (name) {\n if (!this.pool.has(name)) throw new NodeNotFoundError(`Node with name ${name} not in pool`)\n\n this.selectedNode = this.pool.get(name)\n },\n /**\n * Get NetworkId of current Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => String\n * @return {String}\n * @example\n * nodePool.getNetworkId()\n */\n getNetworkId,\n /**\n * Check if you have selected node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Boolean\n * @return {Boolean}\n * @example\n * nodePool.isNodeConnected()\n */\n isNodeConnected () {\n return !!this.selectedNode.instance\n },\n /**\n * Get information about node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Object\n * @return {Object}\n * @example\n * nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }\n */\n getNodeInfo () {\n if (!this.isNodeConnected()) throw new DisconnectedError()\n return {\n name: this.selectedNode.name,\n ...this.selectedNode.instance.getNodeInfo()\n }\n },\n /**\n * Get array of available nodes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Object[]\n * @return {Object[]}\n * @example\n * nodePool.getNodesInPool()\n */\n getNodesInPool () {\n return Array.from(this.pool.entries()).map(([name, node]) => ({\n name,\n ...node.instance.getNodeInfo()\n }))\n },\n validateNodes (nodes) {\n // TODO: validate it on TypeScript level instead\n // (to speedup development, save runtime resources)\n if (!Array.isArray(nodes)) throw new TypeError('\"nodes\" should be an array')\n const notObject = nodes.map(n => typeof n).find(t => t !== 'object')\n if (notObject) throw new TypeError(`Each node should be an object, got ${notObject} instead`)\n const wrongFields = nodes.find(n => typeof n.name !== 'string' || typeof n.instance !== 'object')\n if (notObject) {\n throw new TypeError(\n 'Each node should have name (string), instance (object) ' +\n `fields, got ${JSON.stringify(wrongFields)} instead`\n )\n }\n const wrongInstanceFields = nodes\n .map(n => n.instance)\n .find(i => typeof i.api !== 'object' || typeof i.genesisHash !== 'string' ||\n typeof i.consensusProtocolVersion !== 'number')\n if (wrongInstanceFields) {\n throw new TypeError(\n 'Each node instance should have api (object), consensusProtocolVersion (number), ' +\n `genesisHash (string) fields, got ${JSON.stringify(wrongInstanceFields)} instead`\n )\n }\n }\n },\n props: {\n selectedNode: {}\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport Chain from './'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../utils/amount-formatter'\nimport verifyTransaction from '../tx/validator'\nimport NodePool from '../node-pool'\nimport { pause } from '../utils/other'\nimport { isNameValid, produceNameId, decode } from '../tx/builder/helpers'\nimport { DRY_RUN_ACCOUNT } from '../tx/builder/schema'\nimport {\n AensPointerContextError,\n DryRunError,\n InvalidAensNameError,\n InvalidTxError,\n RequestTimedOutError,\n TxTimedOutError,\n TxNotInChainError,\n ArgumentError\n} from '../utils/errors'\n\n/**\n * ChainNode module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/chain}.\n * @module @aeternity/aepp-sdk/es/chain/node\n * @export ChainNode\n * @example import { ChainNode } from '@aeternity/aepp-sdk'\n */\n\nasync function sendTransaction (tx, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n if (opt.verify) {\n const validation = await verifyTransaction(tx, this.selectedNode.instance)\n if (validation.length) {\n const message = 'Transaction verification errors: ' +\n validation.map(v => v.message).join(', ')\n throw Object.assign(new InvalidTxError(message), {\n code: 'TX_VERIFICATION_ERROR',\n validation,\n transaction: tx\n })\n }\n }\n\n try {\n const { txHash } = await this.api.postTransaction({ tx }, {\n __queue: `tx-${await this.address?.(options).catch(() => '')}`\n })\n\n if (opt.waitMined) {\n const txData = { ...await this.poll(txHash, options), rawTx: tx }\n // wait for transaction confirmation\n if (options.confirm) {\n return { ...txData, confirmationHeight: await this.waitForTxConfirm(txHash, options) }\n }\n return txData\n }\n return { hash: txHash, rawTx: tx }\n } catch (error) {\n throw Object.assign(error, {\n rawTx: tx,\n verifyTx: () => verifyTransaction(tx, this.selectedNode.instance)\n })\n }\n}\n\nasync function waitForTxConfirm (txHash, options = { confirm: 3 }) {\n options.confirm = options.confirm === true ? 3 : options.confirm\n const { blockHeight } = await this.api.getTransactionByHash(txHash)\n const height = await this.awaitHeight(blockHeight + options.confirm, options)\n const { blockHeight: newBlockHeight } = await this.api.getTransactionByHash(txHash)\n switch (newBlockHeight) {\n case -1:\n throw new TxNotInChainError(txHash)\n case blockHeight:\n return height\n default:\n return waitForTxConfirm(txHash, options)\n }\n}\n\nasync function getAccount (address, { height, hash } = {}) {\n if (height) return this.api.getAccountByPubkeyAndHeight(address, height)\n if (hash) return this.api.getAccountByPubkeyAndHash(address, hash)\n return this.api.getAccountByPubkey(address)\n}\n\n/**\n * @function\n * @deprecated\n */\nasync function balance (address, { height, hash, format = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const { balance } = await this.getAccount(address, { hash, height })\n\n return formatAmount(balance, { targetDenomination: format }).toString()\n}\n\nasync function getBalance (address, { height, hash, format = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const { balance } = await this.getAccount(address, { hash, height }).catch(_ => ({ balance: 0 }))\n\n return formatAmount(balance, { targetDenomination: format }).toString()\n}\n\n/**\n * @deprecated use `sdk.api.getTransactionByHash/getTransactionInfoByHash` instead\n */\nasync function tx (hash, info = true) {\n const tx = await this.api.getTransactionByHash(hash)\n if (['ContractCreateTx', 'ContractCallTx', 'ChannelForceProgressTx'].includes(tx.tx.type) && info && tx.blockHeight !== -1) {\n try {\n return { ...tx, ...await this.getTxInfo(hash) }\n } catch (e) {}\n }\n return tx\n}\n\nasync function height () {\n return (await this.api.getCurrentKeyBlockHeight()).height\n}\n\nasync function awaitHeight (\n height,\n { interval = this._getPollInterval('block'), attempts = 20 } = {}\n) {\n let currentHeight\n for (let i = 0; i < attempts; i++) {\n if (i) await pause(interval)\n currentHeight = await this.height()\n if (currentHeight >= height) return currentHeight\n }\n throw new RequestTimedOutError((attempts - 1) * interval, currentHeight, height)\n}\n\nasync function poll (th, { blocks = 10, interval = this._getPollInterval('microblock') } = {}) {\n const max = await this.height() + blocks\n do {\n const tx = await this.api.getTransactionByHash(th)\n if (tx.blockHeight !== -1) return tx\n await pause(interval)\n } while (await this.height() < max)\n const status = this.api.getCheckTxInPool && (await this.api.getCheckTxInPool(th)).status\n throw new TxTimedOutError(blocks, th, status)\n}\n\n/**\n * @deprecated use `sdk.api.getTransactionInfoByHash` instead\n */\nasync function getTxInfo (hash) {\n const result = await this.api.getTransactionInfoByHash(hash)\n return result.callInfo || result\n}\n\nasync function mempool () {\n return this.api.getPendingTransactions()\n}\n\nasync function getCurrentGeneration () {\n return this.api.getCurrentGeneration()\n}\n\nasync function getGeneration (hashOrHeight) {\n if (typeof hashOrHeight === 'string') return this.api.getGenerationByHash(hashOrHeight)\n if (typeof hashOrHeight === 'number') return this.api.getGenerationByHeight(hashOrHeight)\n throw new ArgumentError('hashOrHeight', 'a string or number', hashOrHeight)\n}\n\nasync function getMicroBlockTransactions (hash) {\n return (await this.api.getMicroBlockTransactionsByHash(hash)).transactions\n}\n\nasync function getKeyBlock (hashOrHeight) {\n if (typeof hashOrHeight === 'string') return this.api.getKeyBlockByHash(hashOrHeight)\n if (typeof hashOrHeight === 'number') return this.api.getKeyBlockByHeight(hashOrHeight)\n throw new ArgumentError('hashOrHeight', 'a string or number', hashOrHeight)\n}\n\nasync function getMicroBlockHeader (hash) {\n return this.api.getMicroBlockHeaderByHash(hash)\n}\n\nasync function txDryRunHandler (key) {\n const rs = this._txDryRun[key]\n delete this._txDryRun[key]\n\n let dryRunRes\n try {\n dryRunRes = await this.api.protectedDryRunTxs({\n top: rs[0].top,\n txEvents: rs[0].txEvents,\n txs: rs.map(req => ({ tx: req.tx })),\n accounts: Array.from(new Set(rs.map(req => req.accountAddress)))\n .map(pubKey => ({ pubKey, amount: DRY_RUN_ACCOUNT.amount }))\n })\n } catch (error) {\n rs.forEach(({ reject }) => reject(error))\n return\n }\n\n const { results, txEvents } = dryRunRes\n results.forEach(({ result, reason, ...resultPayload }, idx) => {\n const { resolve, reject, tx, options, accountAddress } = rs[idx]\n if (result === 'ok') return resolve({ ...resultPayload, txEvents })\n reject(Object.assign(\n new DryRunError(reason), { tx, accountAddress, options }\n ))\n })\n}\n\nasync function txDryRun (tx, accountAddress, { top, txEvents, combine }) {\n const key = combine ? [top, txEvents].join() : 'immediate'\n this._txDryRun ??= {}\n this._txDryRun[key] ??= []\n return new Promise((resolve, reject) => {\n this._txDryRun[key].push({ tx, accountAddress, top, txEvents, resolve, reject })\n if (!combine) {\n txDryRunHandler.call(this, key)\n return\n }\n this._txDryRun[key].timeout ??= setTimeout(txDryRunHandler.bind(this, key))\n })\n}\n\nasync function getContractByteCode (contractId) {\n return this.api.getContractCode(contractId)\n}\n\nasync function getContract (contractId) {\n return this.api.getContract(contractId)\n}\n\nasync function getName (name) {\n return this.api.getNameEntryByName(name)\n}\n\n/**\n * Resolve AENS name and return name hash\n * @param {String} nameOrId\n * @param {String} key in AENS pointers record\n * @param {Object} [options]\n * @param {Boolean} [options.verify] To ensure that name exist and have a corresponding pointer\n * // TODO: avoid that to don't trust to current api gateway\n * @param {Boolean} [options.resolveByNode] Enables pointer resolving using node\n * @return {String} Address or AENS name hash\n */\nasync function resolveName (nameOrId, key, { verify, resolveByNode } = {}) {\n if (!nameOrId || typeof nameOrId !== 'string') {\n throw new InvalidAensNameError(`Name or address should be a string: ${nameOrId}`)\n }\n try {\n decode(nameOrId)\n return nameOrId\n } catch (error) {}\n if (isNameValid(nameOrId)) {\n if (verify || resolveByNode) {\n const name = await this.api.getNameEntryByName(nameOrId)\n const pointer = name.pointers.find(pointer => pointer.key === key)\n if (!pointer) {\n throw new AensPointerContextError(`Name ${nameOrId} don't have pointers for ${key}`)\n }\n if (resolveByNode) return pointer.id\n }\n return produceNameId(nameOrId)\n }\n throw new InvalidAensNameError(`Invalid name or address: ${nameOrId}`)\n}\n\n/**\n * ChainNode Stamp\n *\n * This is implementation of {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * composed with {@link module:@aeternity/aepp-sdk/es/contract/node--ContractNodeAPI} and\n * {@link module:@aeternity/aepp-sdk/es/oracle/node--OracleNodeAPI}\n * @function\n * @alias module:@aeternity/aepp-sdk/es/chain/node\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} ChainNode instance\n * @example ChainNode({url: 'https://testnet.aeternity.io/'})\n */\nconst ChainNode = Chain.compose(NodePool, {\n methods: {\n sendTransaction,\n balance,\n getBalance,\n getAccount,\n tx,\n height,\n awaitHeight,\n poll,\n getTxInfo,\n mempool,\n getCurrentGeneration,\n getGeneration,\n getMicroBlockHeader,\n getMicroBlockTransactions,\n getKeyBlock,\n txDryRun,\n getContractByteCode,\n getContract,\n getName,\n waitForTxConfirm,\n resolveName\n }\n})\n\nexport default ChainNode\n","/**\n * TxObject module\n * @module @aeternity/aepp-sdk/es/tx/tx-object\n * @export TxObject\n * @example import TxObject from '@aeternity/aepp-sdk/es/tx/tx-object'\n */\nimport stampit from '@stamp/it'\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { TX_TYPE } from './builder/schema'\nimport { encode } from './builder/helpers'\nimport { isHex } from '../utils/string'\nimport { InvalidTxError, TypeError, UnknownTxError, InvalidSignatureError } from '../utils/errors'\n\n/**\n * Build transaction from object\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {String} type Transaction type\n * @param {Object} params Transaction params\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{\n * encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, params: Object, type: String\n * }}\n */\nconst buildTransaction = (type, params, options = {}) => {\n if (typeof params !== 'object') throw new TypeError('tx \"params\" should be an object')\n if (typeof type !== 'string' || !Object.values(TX_TYPE).includes(type)) throw new UnknownTxError(`Unknown transaction type ${type}`)\n const fee = calculateFee(params.fee, type, { gas: params.gas, params, vsn: params.vsn })\n const { rlpEncoded, binary, tx: encodedTx, txObject } = buildTx(\n { ...params, fee }, type, { vsn: params.vsn, ...options }\n )\n return { rlpEncoded, binary, encodedTx, params: txObject, type }\n}\n\n/**\n * Unpack transaction from RLP encoded binary or base64c string\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Uint8Array|String} tx RLP encoded binary or base64c(rlpBinary) string\n * @throws {Error} Arguments validation error's\n * @return {{\n * encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object\n * }}\n */\nconst unpackTransaction = (tx) => {\n if (!tx) throw new InvalidTxError(`Invalid transaction: ${tx}`)\n if (typeof tx === 'string') {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx)\n return { encodedTx: tx, type, params, rlpEncoded, binary }\n }\n if (tx instanceof Uint8Array) {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx, true)\n return { encodedTx: encode(tx, 'tx'), type, params, rlpEncoded, binary }\n }\n throw new InvalidTxError(`\"tx\" should be a string or Uint8Array, got ${tx} instead`)\n}\n\n/**\n * Helper which build or unpack transaction base on constructor arguments\n * Need to provide one of arguments: [tx] -> unpack flow or [params, type] -> build flow\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} [tx] Transaction rlp binary or vase64c string\n * @param {Object} params Transaction params\n * @param {String} type Transaction type\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{\n * encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object\n * }}\n */\nconst initTransaction = ({ tx, params, type, options = {} } = {}) => {\n if (params && type) return buildTransaction(type, params, options)\n if (tx) return unpackTransaction(tx)\n throw new InvalidTxError('Invalid TxObject arguments. Please provide one of { tx: \"tx_asdasd23...\" } or { type: \"spendTx\", params: {...} }')\n}\n\n/**\n * Transaction Validator Stamp\n * This stamp give us possibility to unpack and validate some of transaction properties,\n * to make sure we can post it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Buffer|String} [options.tx] - Rlp binary or base64c transaction\n * @param {Object} [options.params] - Transaction params\n * @param {String} [options.type] - Transaction type\n * @param {Object} [options.options] - Build options\n * @return {Object} TxObject instance\n * @example TxObject({ params: {...}, type: 'spendTx' })\n */\nexport const TxObject = stampit({\n init ({ tx, params, type, options = {} } = {}) {\n this.options = options\n this.signatures = []\n Object.assign(this, initTransaction({ tx, params, type, options }))\n\n if (this.type === TX_TYPE.signed) {\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n }\n },\n statics: {\n /**\n * Create txObject from base64c RLP encoded transaction string with 'tx_' prefix\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {String} tx Transaction string (tx_23fsdgsdfg...)\n * @return {TxObject}\n */\n fromString: (tx) => TxObject({ tx }),\n /**\n * Create txObject from transaction RLP binary\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {Buffer} tx Transaction RLP binary\n * @return {TxObject}\n */\n fromRlp: (tx) => TxObject({ tx })\n },\n methods: {\n /**\n * Rebuild transaction with new params and recalculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props Transaction properties for update\n * @param options\n * @return {TxObject}\n */\n setProp (props = {}, options = {}) {\n if (typeof props !== 'object') throw new TypeError('Props should be an object')\n this.isSigned = false\n this.signatures = []\n Object.assign(\n this,\n buildTransaction(\n this.type, { ...this.params, ...props, fee: null }, { ...this.options, ...options }\n )\n )\n return this\n },\n /**\n * Get signatures\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @return {Array} Array of signatures\n */\n getSignatures () {\n return this.signatures\n },\n /**\n * Add signature\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} signature Signature to add ( Can be: Buffer | Uint8Array | HexString )\n * @return {void}\n */\n addSignature (signature) {\n signature = isHex(signature) ? Buffer.from(signature, 'hex') : signature\n if (!Buffer.isBuffer(signature) && !(signature instanceof Uint8Array)) throw new InvalidSignatureError('Invalid signature, signature must be of type Buffer or Uint8Array')\n Object.assign(\n this,\n buildTransaction(\n TX_TYPE.signed,\n { encodedTx: this.rlpEncoded, signatures: [[...this.signatures, signature]] }\n )\n )\n\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n },\n /**\n * Calculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props\n * @return {String} fee\n */\n calculateMinFee (props = {}) {\n const params = { ...this.params, ...props }\n return calculateFee(0, this.type, { gas: params.gas, params, vsn: params.vsn })\n }\n }\n})\n\nexport default TxObject\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Transaction module\n * @module @aeternity/aepp-sdk/es/tx/tx\n * @export Transaction\n * @example import { Transaction } from '@aeternity/aepp-sdk'\n */\n\nimport ChainNode from '../chain/node'\nimport Tx from './'\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { ABI_VERSIONS, MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE, TX_TTL } from './builder/schema'\nimport { buildContractId, encode } from './builder/helpers'\nimport { TxObject } from './tx-object'\nimport {\n ArgumentError,\n UnsupportedABIversionError,\n UnsupportedVMversionError,\n UnsupportedProtocolError,\n UnknownTxError\n} from '../utils/errors'\n\nasync function spendTx ({ senderId, recipientId, amount, payload = '' }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.spend, { senderId, ...arguments[0], payload }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: {\n ...arguments[0],\n recipientId,\n senderId,\n nonce,\n ttl,\n payload\n },\n type: TX_TYPE.spend\n }).encodedTx\n }\n : await this.api.postSpend({\n ...arguments[0],\n amount: parseInt(amount),\n recipientId,\n senderId,\n nonce,\n ttl,\n fee: parseInt(fee),\n payload\n })\n\n return tx\n}\n\nasync function namePreclaimTx ({ accountId, commitmentId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.namePreClaim, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.namePreClaim\n }).encodedTx\n }\n : await this.api.postNamePreclaim({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function nameClaimTx ({ accountId, name, nameSalt, vsn = 2 }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameClaim, { senderId: accountId, ...arguments[0], vsn }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, vsn },\n type: TX_TYPE.nameClaim\n }).encodedTx\n }\n : await this.api.postNameClaim({\n ...arguments[0], nonce, ttl, fee: parseInt(fee), name: encode(name, 'nm')\n })\n\n return tx\n}\n\nasync function nameTransferTx ({ accountId, nameId, recipientId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameTransfer, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], recipientId, nonce, ttl, fee },\n type: TX_TYPE.nameTransfer\n }).encodedTx\n }\n : await this.api.postNameTransfer({\n ...arguments[0], recipientId, nonce, ttl, fee: parseInt(fee)\n })\n\n return tx\n}\n\nasync function nameUpdateTx ({ accountId, nameId, nameTtl, pointers, clientTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameUpdate, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.nameUpdate\n }).encodedTx\n }\n : await this.api.postNameUpdate({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function nameRevokeTx ({ accountId, nameId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameRevoke, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.nameRevoke\n }).encodedTx\n }\n : await this.api.postNameRevoke({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function contractCreateTx ({\n ownerId, code, vmVersion, abiVersion, amount, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.contractCreate, { senderId: ownerId, ...arguments[0], ctVersion, gasPrice }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, ctVersion, gasPrice },\n type: TX_TYPE.contractCreate\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n : this.api.postContractCreate({\n ...arguments[0],\n nonce,\n ttl,\n fee: parseInt(fee),\n gas: parseInt(gas),\n gasPrice,\n vmVersion: ctVersion.vmVersion,\n abiVersion: ctVersion.abiVersion\n })\n}\n\nasync function contractCallTx ({\n callerId, contractId, abiVersion, amount, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n const ctVersion = this.getVmVersion(TX_TYPE.contractCall, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.contractCall,\n { senderId: callerId, ...arguments[0], gasPrice, abiVersion: ctVersion.abiVersion }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, abiVersion: ctVersion.abiVersion, gasPrice },\n type: TX_TYPE.contractCall\n }).encodedTx\n }\n : await this.api.postContractCall({\n ...arguments[0],\n nonce,\n ttl,\n fee: parseInt(fee),\n gas: parseInt(gas),\n gasPrice,\n abiVersion: ctVersion.abiVersion\n })\n\n return tx\n}\n\nasync function oracleRegisterTx ({\n accountId, queryFormat, responseFormat, queryFee, oracleTtl, abiVersion = ABI_VERSIONS.NO_ABI\n}) {\n // const { abiVersion: abi } = this.getVmVersion(TX_TYPE.oracleRegister, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleRegister, { senderId: accountId, ...arguments[0], abiVersion }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: {\n accountId,\n queryFee,\n abiVersion,\n fee,\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n },\n type: TX_TYPE.oracleRegister\n }).encodedTx\n }\n : await this.api.postOracleRegister({\n accountId,\n queryFee,\n abiVersion,\n fee: parseInt(fee),\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n })\n\n return tx\n}\n\nasync function oracleExtendTx ({ oracleId, callerId, oracleTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleExtend, { senderId: callerId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, fee, oracleTtl, nonce, ttl },\n type: TX_TYPE.oracleExtend\n }).encodedTx\n }\n : await this.api.postOracleExtend({ oracleId, fee: parseInt(fee), oracleTtl, nonce, ttl })\n\n return tx\n}\n\nasync function oraclePostQueryTx ({ oracleId, responseTtl, query, queryTtl, queryFee, senderId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleQuery, { senderId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, query, queryTtl, fee, queryFee, ttl, nonce, senderId },\n type: TX_TYPE.oracleQuery\n }).encodedTx\n }\n : await this.api.postOracleQuery({\n oracleId,\n responseTtl,\n query,\n queryTtl,\n fee: parseInt(fee),\n queryFee,\n ttl,\n nonce,\n senderId\n })\n\n return tx\n}\n\nasync function oracleRespondTx ({ oracleId, callerId, responseTtl, queryId, response }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleResponse, { senderId: callerId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, queryId, response, fee, ttl, nonce },\n type: TX_TYPE.oracleResponse\n }).encodedTx\n }\n : await this.api.postOracleRespond({\n oracleId, responseTtl, queryId, response, fee: parseInt(fee), ttl, nonce\n })\n return tx\n}\n\nasync function channelCloseSoloTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelCloseSolo, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelCloseSolo)\n : await this.api.postChannelCloseSolo({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSlashTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSlash, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSlash)\n : await this.api.postChannelSlash({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSettleTx ({ channelId, fromId, initiatorAmountFinal, responderAmountFinal }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSettle, { senderId: fromId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n initiatorAmountFinal,\n responderAmountFinal,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSettle)\n : await this.api.postChannelSettle({\n ...arguments[0],\n channelId,\n fromId,\n initiatorAmountFinal: parseInt(initiatorAmountFinal),\n responderAmountFinal: parseInt(responderAmountFinal),\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSnapshotSoloTx ({ channelId, fromId, payload }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSnapshotSolo, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSnapshotSolo)\n : await this.api.postChannelSnapshotSolo({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function gaAttachTx ({\n ownerId, code, vmVersion, abiVersion, authFun, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.gaAttach, { senderId: ownerId, ...arguments[0], ctVersion, gasPrice }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, ctVersion, gasPrice },\n type: TX_TYPE.gaAttach\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n}\n\nasync function payingForTx ({ tx, payerId, ...args }) {\n const params = { tx: unpackTx(tx), payerId }\n const { fee, nonce } = await this.prepareTxParams(TX_TYPE.payingFor, {\n ...params, ...args, senderId: payerId\n })\n return buildTx({ ...params, ...args, fee, nonce }, TX_TYPE.payingFor).tx\n}\n\n/**\n * Validated vm/abi version or get default based on transaction type and NODE version\n *\n * @param {string} txType Type of transaction\n * @param {object} vmAbi Object with vm and abi version fields\n * @return {object} Object with vm/abi version ({ vmVersion: number, abiVersion: number })\n */\nfunction getVmVersion (txType, { vmVersion, abiVersion } = {}) {\n const { consensusProtocolVersion } = this.getNodeInfo()\n const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!supportedProtocol) throw new UnsupportedProtocolError('Not supported consensus protocol version')\n const protocolForTX = supportedProtocol[txType]\n if (!protocolForTX) throw new UnknownTxError('Not supported tx type')\n\n abiVersion = abiVersion || protocolForTX.abiVersion[0]\n vmVersion = vmVersion || protocolForTX.vmVersion[0]\n if (!protocolForTX.vmVersion.includes(vmVersion)) {\n throw new UnsupportedVMversionError(`VM VERSION ${vmVersion} do not support by this node. Supported: [${protocolForTX.vmVersion}]`)\n }\n if (!protocolForTX.abiVersion.includes(abiVersion)) {\n throw new UnsupportedABIversionError(`ABI VERSION ${abiVersion} do not support by this node. Supported: [${protocolForTX.abiVersion}]`)\n }\n\n return { vmVersion, abiVersion }\n}\n\n/**\n * Compute the absolute ttl by adding the ttl to the current height of the chain\n *\n * @param {number} ttl\n * @param {boolean} relative ttl is absolute or relative(default: true(relative))\n * @return {number} Absolute Ttl\n */\nasync function calculateTtl (ttl = TX_TTL, relative = true) {\n if (ttl === 0) return 0\n if (ttl < 0) throw new ArgumentError('ttl', 'greater or equal to 0', ttl)\n\n if (relative) {\n const { height } = await this.api.getCurrentKeyBlock()\n return +(height) + ttl\n }\n return ttl\n}\n\n/**\n * Get the next nonce to be used for a transaction for an account\n *\n * @param {string} accountId\n * @param {number} nonce\n * @return {number} Next Nonce\n */\nasync function getAccountNonce (accountId, nonce) {\n if (nonce) return nonce\n const { nonce: accountNonce } = await this.api.getAccountByPubkey(accountId)\n .catch(() => ({ nonce: 0 }))\n return accountNonce + 1\n}\n\n/**\n * Calculate fee, get absolute ttl (ttl + height), get account nonce\n *\n * @param {String} txType Type of transaction\n * @param {Object} params Object which contains all tx data\n * @return {Object} { ttl, nonce, fee } Object with account nonce, absolute ttl and transaction fee\n */\nasync function prepareTxParams (\n txType,\n { senderId, nonce: n, ttl: t, fee: f, gas, absoluteTtl, vsn, strategy }\n) {\n n = n || (\n await this.api.getAccountNextNonce(senderId, { strategy }).catch(e => ({ nextNonce: 1 }))\n ).nextNonce\n const ttl = await calculateTtl.call(this, t, !absoluteTtl)\n const fee = calculateFee(\n f,\n txType,\n { showWarning: this.showWarning, gas, params: { ...arguments[1], nonce: n, ttl }, vsn }\n )\n return { fee, ttl, nonce: n }\n}\n\n/**\n * Transaction Stamp\n *\n * This is implementation of [Tx](api/tx.md) relays\n * the creation of transactions to {@link module:@aeternity/aepp-sdk/es/Node}.\n * This stamp provide ability to create native transaction's,\n * or transaction's using Node API.\n * As there is no built-in security between Node and client communication,\n * creating transaction using {@link module:@aeternity/aepp-sdk/es/Node} API\n * must never be used for production but can be very useful to verify other\n * implementations.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Boolean} [options.nativeMode=true] options.nativeMode - Use Native build of transaction's\n * @param {String} options.url - Node url\n * @param {String} options.internalUrl - Node internal url\n * @return {Object} Transaction instance\n * @example Transaction({url: 'https://testnet.aeternity.io/'})\n */\nconst Transaction = ChainNode.compose(Tx, {\n init ({ nativeMode = true, showWarning = false }) {\n this.nativeMode = nativeMode\n this.showWarning = showWarning\n },\n props: {\n nativeMode: true,\n showWarning: false\n },\n methods: {\n spendTx,\n namePreclaimTx,\n nameClaimTx,\n nameTransferTx,\n nameUpdateTx,\n nameRevokeTx,\n contractCreateTx,\n contractCallTx,\n prepareTxParams,\n oracleRegisterTx,\n oracleExtendTx,\n oraclePostQueryTx,\n oracleRespondTx,\n channelCloseSoloTx,\n channelSlashTx,\n channelSettleTx,\n channelSnapshotSoloTx,\n gaAttachTx,\n payingForTx,\n getAccountNonce,\n getVmVersion\n }\n})\n\nexport default Transaction\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Memory Account module\n * @module @aeternity/aepp-sdk/es/account/memory\n * @export MemoryAccount\n * @example import { MemoryAccount } from '@aeternity/aepp-sdk'\n */\n\nimport AccountBase from './base'\nimport { sign, isValidKeypair } from '../utils/crypto'\nimport { isHex } from '../utils/string'\nimport { decode } from '../tx/builder/helpers'\nimport { InvalidKeypairError } from '../utils/errors'\n\nconst secrets = new WeakMap()\n\n/**\n * In-memory account stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/account/memory\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Object} options.keypair - Key pair to use\n * @param {String} options.keypair.publicKey - Public key\n * @param {String} options.keypair.secretKey - Private key\n * @return {Account}\n */\nexport default AccountBase.compose({\n init ({ keypair, gaId }) {\n this.isGa = !!gaId\n if (gaId) {\n decode(gaId)\n secrets.set(this, { publicKey: gaId })\n return\n }\n\n if (!keypair || typeof keypair !== 'object') throw new InvalidKeypairError('KeyPair must be an object')\n if (!keypair.secretKey || !keypair.publicKey) {\n throw new InvalidKeypairError('KeyPair must must have \"secretKey\", \"publicKey\" properties')\n }\n if (typeof keypair.publicKey !== 'string' || keypair.publicKey.indexOf('ak_') === -1) {\n throw new InvalidKeypairError('Public Key must be a base58c string with \"ak_\" prefix')\n }\n if (\n !Buffer.isBuffer(keypair.secretKey) &&\n (typeof keypair.secretKey === 'string' && !isHex(keypair.secretKey))\n ) throw new InvalidKeypairError('Secret key must be hex string or Buffer')\n\n const pubBuffer = Buffer.from(decode(keypair.publicKey, 'ak'))\n if (!isValidKeypair(Buffer.from(keypair.secretKey, 'hex'), pubBuffer)) throw new InvalidKeypairError('Invalid Key Pair')\n\n secrets.set(this, {\n secretKey: Buffer.isBuffer(keypair.secretKey) ? keypair.secretKey : Buffer.from(keypair.secretKey, 'hex'),\n publicKey: keypair.publicKey\n })\n },\n props: { isGa: false },\n methods: {\n sign (data) {\n if (this.isGa) throw new InvalidKeypairError('You are trying to sign data using generalized account without keypair')\n return Promise.resolve(sign(data, secrets.get(this).secretKey))\n },\n address () {\n return Promise.resolve(secrets.get(this).publicKey)\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * AccountMultiple module\n * @module @aeternity/aepp-sdk/es/accounts/multiple\n * @export AccountMultiple\n */\n\nimport AsyncInit from '../utils/async-init'\nimport MemoryAccount from './memory'\nimport { decode } from '../tx/builder/helpers'\nimport AccountBase, { isAccountBase } from './base'\nimport {\n UnavailableAccountError,\n TypeError\n} from '../utils/errors'\n\n/**\n * AccountMultiple stamp\n *\n * The purpose of this stamp is to wrap up implementations of\n * {@link module:@aeternity/aepp-sdk/es/account/base--AccountBase} objects and provide a\n * common interface to all of them. List are a substantial part of\n * {@link module:@aeternity/aepp-sdk/es/ae/wallet--Wallet}s.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Array} [options.accounts] - Accounts array\n * @param {String} [options.address] - Address of account to select\n * @return {Object} AccountMultiple instance\n * @example\n * const accounts = await AccountMultiple({\n * accounts: [MemoryAccount({ keypair: 'keypair_object' })]\n * })\n * await accounts.addAccount(account, { select: true }) // Add account and make it selected\n * accounts.removeAccount(address) // Remove account\n * accounts.selectAccount(address) // Select account\n * accounts.addresses() // Get available accounts\n */\nexport default AccountBase.compose(AsyncInit, {\n async init ({ accounts = [], address }) {\n this.accounts = Object.fromEntries(await Promise.all(\n accounts.map(async a => [await a.address(), a])\n ))\n address = address || Object.keys(this.accounts)[0]\n if (address) this.selectAccount(address)\n },\n props: {\n accounts: {}\n },\n deepProps: {\n selectedAddress: null\n },\n methods: {\n async address ({ onAccount = this.selectedAddress } = {}) {\n return this._resolveAccount(onAccount).address()\n },\n async sign (data, { onAccount = this.selectedAddress } = {}) {\n return this._resolveAccount(onAccount).sign(data)\n },\n /**\n * Get accounts addresses\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @rtype () => String[]\n * @return {String[]}\n * @example addresses()\n */\n addresses () {\n return Object.keys(this.accounts)\n },\n /**\n * Add specific account\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @category async\n * @rtype (account: Account, { select: Boolean }) => void\n * @param {Object} account - Account instance\n * @param {Object} [options={}] - Options\n * @param {Boolean} [options.select] - Select account\n * @return {void}\n * @example addAccount(account)\n */\n async addAccount (account, { select } = {}) {\n const address = await account.address()\n this.accounts[address] = account\n if (select) this.selectAccount(address)\n },\n /**\n * Remove specific account\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @rtype (address: String) => void\n * @param {String} address - Address of account to remove\n * @return {void}\n * @example removeAccount(address)\n */\n removeAccount (address) {\n if (!this.accounts[address]) {\n console.warn(`removeAccount: Account for ${address} not available`)\n return\n }\n delete this.accounts[address]\n if (this.selectedAddress === address) this.selectedAddress = null\n },\n /**\n * Select specific account\n * @alias module:@aeternity/aepp-sdk/es/account/selector\n * @instance\n * @rtype (address: String) => void\n * @param {String} address - Address of account to select\n * @example selectAccount('ak_xxxxxxxx')\n */\n selectAccount (address) {\n decode(address, 'ak')\n if (!this.accounts[address]) throw new UnavailableAccountError(address)\n this.selectedAddress = address\n },\n /**\n * Resolves an account\n * @param account account address (should exist in sdk instance), MemoryAccount or keypair\n * @returns {AccountBase}\n * @private\n */\n _resolveAccount (account) {\n if (account === null) {\n throw new TypeError(\n 'Account should be an address (ak-prefixed string), ' +\n 'keypair, or instance of account base, got null instead')\n } else {\n switch (typeof account) {\n case 'string':\n decode(account, 'ak')\n if (!this.accounts[account]) throw new UnavailableAccountError(account)\n return this.accounts[account]\n case 'object':\n return isAccountBase(account) ? account : MemoryAccount({ keypair: account })\n default:\n throw new TypeError(\n 'Account should be an address (ak-prefixed string), ' +\n `keypair, or instance of account base, got ${account} instead`)\n }\n }\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aens module - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n * @module @aeternity/aepp-sdk/es/ae/aens\n * @export Aens\n * @example import { Aens } from '@aeternity/aepp-sdk'\n */\n\nimport { salt } from '../utils/crypto'\nimport { commitmentHash, ensureNameValid, isAuctionName } from '../tx/builder/helpers'\nimport Ae from './'\nimport { CLIENT_TTL, NAME_TTL } from '../tx/builder/schema'\nimport { ArgumentError } from '../utils/errors'\n\n/**\n * Revoke a name\n * @instance\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @category async\n * @param {String} name Name hash\n * @param {Object} [options={}] options\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensRevoke(name, { fee, ttl , nonce })\n * // or\n * await nameObject.revoke({ fee, ttl, nonce })\n */\nasync function revoke (name, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const nameRevokeTx = await this.nameRevokeTx({\n ...opt,\n nameId: name,\n accountId: await this.address(opt)\n })\n\n return this.send(nameRevokeTx, opt)\n}\n\n/**\n * Update a name\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name AENS name\n * @param {Object.<string, string>} pointers Map of pointer keys to corresponding addresses\n * @param {Object} [options={}]\n * @param {Boolean} [options.extendPointers] Get the pointers from the node and merge with provided\n * ones. Pointers with the same type will be overwritten\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you\n * pass publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @param {Number|String|BigNumber} [options.nameTtl=50000] Name ttl represented in number of\n * blocks (Max value is 50000 blocks)\n * @param {Number|String|BigNumber} [options.clientTtl=84600] a suggestion as to how long any\n * clients should cache this information\n * @return {Promise<Object>}\n * @throws Invalid pointer array error\n * @example\n * const name = 'test.chain'\n * const pointersArray = ['ak_asd23dasdas...,' 'ct_asdf34fasdasd...']\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensUpdate(name, pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n * // or\n * await nameObject.update(pointers, { nameTtl, ttl, fee, nonce, clientTtl })\n */\nasync function update (name, pointers = {}, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n const allPointers = {\n ...options.extendPointers && Object.fromEntries(\n (await this.getName(name)).pointers.map(({ key, id }) => [key, id])\n ),\n ...pointers\n }\n\n const nameUpdateTx = await this.nameUpdateTx({\n ...opt,\n nameId: name,\n accountId: await this.address(opt),\n pointers: Object.entries(allPointers).map(([key, id]) => ({ key, id }))\n })\n\n return this.send(nameUpdateTx, opt)\n}\n\n/**\n * Transfer a domain to another account\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name AENS name\n * @param {String} account Recipient account publick key\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const recipientPub = 'ak_asd23dasdas...'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensTransfer(name, recipientPub, { ttl, fee, nonce })\n * // or\n * await nameObject.transfer(recipientPub, { ttl, fee, nonce })\n */\nasync function transfer (name, account, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const nameTransferTx = await this.nameTransferTx({\n ...opt,\n nameId: name,\n accountId: await this.address(opt),\n recipientId: account\n })\n\n return this.send(nameTransferTx, opt)\n}\n\n/**\n * Query the AENS name info from the node\n * and return the object with info and predefined functions for manipulating name\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Object} opt Options\n * @return {Promise<Object>}\n * @example\n * const nameObject = sdkInstance.aensQuery('test.chain')\n * console.log(nameObject)\n * {\n * id, // name hash\n * pointers, // array of pointers\n * update, // Update name function\n * extendTtl, // Extend Ttl name function\n * transfer, // Transfer name function\n * revoke // Revoke name function\n * }\n */\nasync function query (name, opt = {}) {\n ensureNameValid(name)\n const o = await this.getName(name)\n\n return Object.freeze(Object.assign(o, {\n pointers: o.pointers || [],\n update: async (pointers, options = {}) => {\n return {\n ...(await this.aensUpdate(name, pointers, { ...opt, ...options })),\n ...(await this.aensQuery(name))\n }\n },\n transfer: async (account, options = {}) => {\n return {\n ...(await this.aensTransfer(name, account, { ...opt, ...options })),\n ...(await this.aensQuery(name))\n }\n },\n revoke: async (options = {}) => this.aensRevoke(name, { ...opt, ...options }),\n extendTtl: async (nameTtl = NAME_TTL, options = {}) => {\n if (typeof nameTtl !== 'number' || nameTtl > NAME_TTL || nameTtl <= 0) {\n throw new ArgumentError('nameTtl', `a number between 1 and ${NAME_TTL} blocks`, nameTtl)\n }\n\n return {\n ...await this.aensUpdate(name, {}, { ...opt, ...options, nameTtl, extendPointers: true }),\n ...await this.aensQuery(name)\n }\n }\n }))\n}\n\n/**\n * Claim a previously preclaimed registration. This can only be done after the\n * preclaim step\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Number} salt Salt from pre-claim, or 0 if it's a bid\n * @param {Object} [options] options\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @param {Number|String} [options.nameFee] Name Fee (By default calculated by sdk)\n * @return {Promise<Object>} the result of the claim\n * @example\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensClaim(name, salt, { ttl, fee, nonce, nameFee })\n */\nasync function claim (name, salt, options) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const claimTx = await this.nameClaimTx({\n ...opt,\n accountId: await this.address(opt),\n nameSalt: salt,\n name\n })\n\n const result = await this.send(claimTx, opt)\n if (!isAuctionName(name)) {\n const nameInter = opt.waitMined ? await this.aensQuery(name, opt) : {}\n return Object.assign(result, nameInter)\n }\n return { ...result, nameFee: opt.nameFee }\n}\n\n/**\n * Preclaim a name. Sends a hash of the name and a random salt to the node\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>}\n * @example\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensPreclaim(name, { ttl, fee, nonce })\n * {\n * ...transactionResult,\n * claim, // Claim function (options={}) => claimTransactionResult\n * salt,\n * commitmentId\n * }\n */\nasync function preclaim (name, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n const _salt = salt()\n const height = await this.height()\n const commitmentId = commitmentHash(name, _salt)\n\n const preclaimTx = await this.namePreclaimTx({\n ...opt,\n accountId: await this.address(opt),\n commitmentId\n })\n\n const result = await this.send(preclaimTx, opt)\n\n return Object.freeze({\n ...result,\n height,\n claim: options => this.aensClaim(name, _salt, { ...options, onAccount: opt.onAccount }),\n salt: _salt,\n commitmentId\n })\n}\n\n/**\n * Bid to name auction\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name Domain name\n * @param {String|Number} nameFee Name fee (bid fee)\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const bidFee = computeBidFee(name, startFee, incrementPercentage)\n *\n * await sdkInstance.aensBid(name, 213109412839123, { ttl, fee, nonce })\n */\nasync function bid (name, nameFee, options = {}) {\n return this.aensClaim(name, 0, { ...options, nameFee, vsn: 2 })\n}\n\n/**\n * Aens Stamp\n *\n * Aens provides name-system related methods atop\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Aens instance\n */\nconst Aens = Ae.compose({\n methods: {\n aensQuery: query,\n aensPreclaim: preclaim,\n aensClaim: claim,\n aensUpdate: update,\n aensTransfer: transfer,\n aensRevoke: revoke,\n aensBid: bid\n },\n deepProps: {\n Ae: {\n defaults: {\n clientTtl: CLIENT_TTL,\n nameTtl: NAME_TTL // aec_governance:name_claim_max_expiration() => 50000\n }\n }\n }\n})\n\nexport default Aens\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * ContractCompilerHttp module\n *\n * @module @aeternity/aepp-sdk/es/contract/compiler\n * @export ContractCompilerHttp\n * @example import { ContractCompilerHttp } from '@aeternity/aepp-sdk'\n */\n\nimport semverSatisfies from '../utils/semver-satisfies'\nimport AsyncInit from '../utils/async-init'\nimport genSwaggerClient from '../utils/swagger'\nimport { MissingParamError, UnsupportedVersionError } from '../utils/errors'\nimport { mapObject } from '../utils/other'\n\n/**\n * Contract Compiler Stamp\n *\n * This stamp include api call's related to contract compiler functionality.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/compiler\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} [options.compilerUrl] compilerUrl - Url for compiler API\n * @return {Object} Contract compiler instance\n * @example ContractCompilerHttp({ compilerUrl: 'COMPILER_URL' })\n */\nexport default AsyncInit.compose({\n async init ({ compilerUrl, ignoreVersion }) {\n if (!compilerUrl) return\n await this.setCompilerUrl(compilerUrl, { ignoreVersion })\n },\n methods: {\n async setCompilerUrl (compilerUrl, { ignoreVersion = false } = {}) {\n if (!compilerUrl) throw new MissingParamError('compilerUrl required')\n compilerUrl = compilerUrl.replace(/\\/$/, '')\n const client = await genSwaggerClient(`${compilerUrl}/api`, {\n disableBigNumbers: true,\n disableCaseConversion: true,\n responseInterceptor: response => {\n if (response.ok) return\n let message = `${new URL(response.url).pathname.slice(1)} error`\n if (response.body.reason) {\n message += ': ' + response.body.reason +\n (response.body.parameter ? ` in ${response.body.parameter}` : '') +\n // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78\n (response.body.info ? ` (${JSON.stringify(response.body.info)})` : '')\n }\n if (Array.isArray(response.body)) {\n message += ':\\n' + response.body\n .map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context ? `(${e.context})` : ''}`)\n .map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80\n .join('\\n')\n }\n response.statusText = message\n return response\n }\n })\n this.compilerVersion = client.spec.info.version\n this.compilerApi = mapObject(\n client.api,\n ([key, fn]) => [\n key,\n ({ options: { filesystem, ...options } = {}, ...args } = {}) => fn({\n ...args, options: { ...options, file_system: filesystem }\n })\n ]\n )\n\n if (ignoreVersion) return\n if (!semverSatisfies(this.compilerVersion, COMPILER_GE_VERSION, COMPILER_LT_VERSION)) {\n throw new UnsupportedVersionError(\n 'compiler', this.compilerVersion, COMPILER_GE_VERSION, COMPILER_LT_VERSION\n )\n }\n }\n },\n props: {\n compilerVersion: null\n }\n})\n\nconst COMPILER_GE_VERSION = '6.1.0'\nconst COMPILER_LT_VERSION = '7.0.0'\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Contract module - routines to interact with the æternity contract\n *\n * High level documentation of the contracts are available at\n * https://github.com/aeternity/protocol/tree/master/contracts and\n *\n * @module @aeternity/aepp-sdk/es/ae/contract\n * @export Contract\n * @example import { Contract } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport ContractCompilerHttp from '../contract/compiler'\nimport getContractInstance from '../contract/aci'\nimport { AMOUNT, MIN_GAS_PRICE } from '../tx/builder/schema'\nimport { decode, produceNameId } from '../tx/builder/helpers'\n\n/**\n * Utility method to create a delegate signature for a contract\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String[]} ids The list of id's to prepend\n * @param {Object} [opt={}] options\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature in hex representation\n */\nasync function delegateSignatureCommon (ids = [], opt = {}) {\n const signature = await this.sign(\n Buffer.concat([\n Buffer.from(this.getNetworkId(opt)),\n ...ids.map(e => decode(e))\n ]),\n opt\n )\n return Buffer.from(signature).toString('hex')\n}\n\n/**\n * Helper to generate a signature to delegate pre-claim/claim/transfer/revoke of a name to\n * a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} [name] The name\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n * @example\n * const aeSdk = await Universal({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const name = 'example.chain' // AENS name\n * const onAccount = await aeSdk.address() // Sign with a specific account\n * // Preclaim signature\n * const params = { contractId }\n * const preclaimSig = await aeSdk.createAensDelegationSignature(params, { onAccount: current })\n * // Claim, transfer and revoke signature\n * const params = { contractId, name }\n * const aensDelegationSig = await contract.createAensDelegationSignature(\n * params, name, { onAccount: current }\n * )\n */\nasync function createAensDelegationSignature ({ contractId, name }, opt = {}) {\n return this.delegateSignatureCommon(\n [await this.address(opt), ...name ? [produceNameId(name)] : [], contractId],\n opt\n )\n}\n\n/**\n * Helper to generate a signature to delegate register/extend/respond of a Oracle to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} [queryId] Oracle Query Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n * @example\n * const aeSdk = await Universal({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const queryId = 'oq_...' // Oracle Query Id\n * const onAccount = await aeSdk.address() // Sign with a specific account\n * // Oracle register and extend signature\n * const params = { contractId }\n * const oracleDelegationSig = await contract.createOracleDelegationSignature(params, { onAccount })\n * // Oracle respond signature\n * const params = { contractId, queryId }\n * const respondSig = await contract.createOracleDelegationSignature(params, queryId)\n */\nasync function createOracleDelegationSignature ({ contractId, queryId }, opt = {}) {\n return this.delegateSignatureCommon([...queryId ? [queryId] : [], contractId], opt)\n}\n\n/**\n * Contract Stamp\n *\n * Provide contract implementation\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Contract instance\n * @example\n * import { Transaction, MemoryAccount, ChainNode } from '@aeternity/aepp-sdk\n *\n * const ContractWithAE = await Contract\n * .compose(Transaction, MemoryAccount, ChainNode) // AE implementation\n * const client = await ContractWithAe({ url, internalUrl, compilerUrl, keypair, ... })\n *\n */\nexport default Ae.compose(ContractCompilerHttp, {\n methods: {\n getContractInstance,\n // Delegation for contract\n delegateSignatureCommon,\n // AENS\n createAensDelegationSignature,\n // Oracle\n createOracleDelegationSignature\n },\n deepProps: {\n Ae: {\n defaults: {\n gasPrice: MIN_GAS_PRICE,\n amount: AMOUNT\n }\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * ContractACI module\n *\n * @module @aeternity/aepp-sdk/es/contract/aci\n * @export getContractInstance\n */\n\nimport { Encoder as Calldata } from '@aeternity/aepp-calldata'\nimport { DRY_RUN_ACCOUNT, GAS_MAX } from '../tx/builder/schema'\nimport TxObject from '../tx/tx-object'\nimport { decode } from '../tx/builder/helpers'\nimport {\n MissingContractDefError,\n MissingContractAddressError,\n InactiveContractError,\n BytecodeMismatchError,\n InternalError,\n DuplicateContractError,\n MissingFunctionNameError,\n InvalidMethodInvocationError,\n NotPayableFunctionError,\n TypeError,\n NodeInvocationError,\n IllegalArgumentError,\n NoSuchContractFunctionError,\n MissingEventDefinitionError,\n AmbiguousEventDefinitionError\n} from '../utils/errors'\nimport { hash } from '../utils/crypto-ts'\n\n/**\n * Generate contract ACI object with predefined js methods for contract usage - can be used for\n * creating a reference to already deployed contracts\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @param {Object} [options={}] Options object\n * @param {String} [options.source] Contract source code\n * @param {String} [options.bytecode] Contract bytecode\n * @param {Object} [options.aci] Contract ACI\n * @param {String} [options.contractAddress] Contract address\n * @param {Object} [options.filesystem] Contact source external namespaces map\n * @param {Boolean} [options.validateBytecode] Compare source code with on-chain version\n * @return {ContractInstance} JS Contract API\n * @example\n * const contractIns = await aeSdk.getContractInstance({ source })\n * await contractIns.deploy([321]) or await contractIns.methods.init(321)\n * const callResult = await contractIns.call('setState', [123]) or\n * await contractIns.methods.setState.send(123, options)\n * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or\n * await contractIns.methods.setState.get(123, options)\n * Also you can call contract like: await contractIns.methods.setState(123, options)\n * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is\n * stateful or not\n */\nexport default async function getContractInstance ({\n source,\n bytecode,\n aci: _aci,\n contractAddress,\n filesystem = {},\n validateBytecode,\n ...otherOptions\n} = {}) {\n if (!_aci && source) {\n _aci = await this.compilerApi.generateACI({ code: source, options: { filesystem } })\n }\n if (!_aci) throw new MissingContractDefError()\n contractAddress = contractAddress && await this.resolveName(\n contractAddress, 'contract_pubkey', { resolveByNode: true }\n )\n if (!contractAddress && !source && !bytecode) {\n throw new MissingContractAddressError('Can\\'t create instance by ACI without address')\n }\n\n if (contractAddress) {\n const contract = await this.getContract(contractAddress)\n if (!contract.active) throw new InactiveContractError(contractAddress)\n }\n\n const instance = {\n _aci,\n _name: _aci.encoded_aci.contract.name,\n calldata: new Calldata([_aci.encoded_aci, ..._aci.external_encoded_aci]),\n source,\n bytecode,\n deployInfo: { address: contractAddress },\n options: {\n ...this.Ae.defaults,\n callStatic: false,\n filesystem,\n ...otherOptions\n },\n compilerVersion: this.compilerVersion\n }\n\n if (validateBytecode) {\n if (!contractAddress) throw new MissingContractAddressError('Can\\'t validate bytecode without contract address')\n const onChanBytecode = (await this.getContractByteCode(contractAddress)).bytecode\n const isValid = source\n ? await this.compilerApi.validateByteCode(\n { bytecode: onChanBytecode, source, options: instance.options }\n ).then((res) => Object.entries(res).length === 0, () => false)\n : bytecode === onChanBytecode\n if (!isValid) throw new BytecodeMismatchError(source ? 'source' : 'bytecode')\n }\n\n /**\n * Compile contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype () => ContractInstance: Object\n * @return {String} bytecode bytecode\n */\n instance.compile = async (options = {}) => {\n if (instance.bytecode) throw new IllegalArgumentError('Contract already compiled')\n if (!instance.source) throw new IllegalArgumentError('Can\\'t compile without source code')\n const { bytecode } = await this.compilerApi.compileContract({\n code: instance.source, options: { ...instance.options, ...options }\n })\n instance.bytecode = bytecode\n return instance.bytecode\n }\n\n const sendAndProcess = async (tx, options) => {\n const txData = await this.send(tx, options)\n const result = {\n hash: txData.hash, tx: TxObject({ tx: txData.rawTx }), txData, rawTx: txData.rawTx\n }\n if (options.waitMined === false) return result\n const { callInfo } = await this.api.getTransactionInfoByHash(txData.hash)\n Object.assign(result.txData, callInfo) // TODO: don't duplicate data in result\n await handleCallError(callInfo)\n return { ...result, result: callInfo }\n }\n\n const handleCallError = ({ returnType, returnValue }) => {\n let message\n // TODO: ensure that it works correctly https://github.com/aeternity/aepp-calldata-js/issues/88\n switch (returnType) {\n case 'ok': return\n case 'revert':\n message = instance.calldata.decodeFateString(returnValue)\n break\n case 'error':\n message = decode(returnValue).toString()\n break\n default: throw new InternalError(`Unknown returnType: ${returnType}`)\n }\n throw new NodeInvocationError(message)\n }\n\n instance._estimateGas = async (name, params, options) => {\n const { result: { gasUsed } } =\n await instance.call(name, params, { ...options, callStatic: true })\n // taken from https://github.com/aeternity/aepp-sdk-js/issues/1286#issuecomment-977814771\n return Math.floor(gasUsed * 1.25)\n }\n\n /**\n * Deploy contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object) => ContractInstance: Object\n * @param {Array} params Contract init function arguments array\n * @param {Object} [options] options\n * @return {Object} deploy info\n */\n instance.deploy = async (params = [], options) => {\n const opt = { ...instance.options, ...options }\n if (!instance.bytecode) await instance.compile(opt)\n if (opt.callStatic) return instance.call('init', params, opt)\n if (instance.deployInfo.address) throw new DuplicateContractError()\n\n const ownerId = await this.address(opt)\n const { tx, contractId } = await this.contractCreateTx({\n ...opt,\n gas: opt.gas ?? await instance._estimateGas('init', params, opt),\n callData: instance.calldata.encode(instance._name, 'init', params),\n code: instance.bytecode,\n ownerId\n })\n const { hash, rawTx, result, txData } = await sendAndProcess(tx, opt)\n instance.deployInfo = Object.freeze({\n result,\n owner: ownerId,\n transaction: hash,\n rawTx,\n txData,\n address: contractId\n })\n return instance.deployInfo\n }\n\n /**\n * Get function schema from contract ACI object\n * @param {String} name Function name\n * @return {Object} function ACI\n */\n function getFunctionACI (name) {\n const fn = instance._aci.encoded_aci.contract.functions.find(f => f.name === name)\n if (fn) return fn\n if (name === 'init') return { payable: false }\n throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`)\n }\n\n /**\n * Call contract function\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object = { callStatic: false }) => CallResult: Object\n * @param {String} fn Function name\n * @param {Array} params Array of function arguments\n * @param {Object} [options={}] Array of function arguments\n * @param {Boolean} [options.callStatic=false] Static function call\n * @return {Object} CallResult\n */\n instance.call = async (fn, params = [], options = {}) => {\n const opt = { ...instance.options, ...options }\n const fnACI = getFunctionACI(fn)\n const contractId = instance.deployInfo.address\n\n if (!fn) throw new MissingFunctionNameError()\n if (fn === 'init' && !opt.callStatic) throw new InvalidMethodInvocationError('\"init\" can be called only via dryRun')\n if (!contractId && fn !== 'init') throw new InvalidMethodInvocationError('You need to deploy contract before calling!')\n if (opt.amount > 0 && fnACI.payable === false) throw new NotPayableFunctionError(`You try to pay \"${opt.amount}\" to function \"${fn}\" which is not payable. Only payable function can accept coins`)\n\n const callerId = await this.address(opt).catch(error => {\n if (opt.callStatic) return DRY_RUN_ACCOUNT.pub\n else throw error\n })\n const callData = instance.calldata.encode(instance._name, fn, params)\n\n let res\n if (opt.callStatic) {\n if (typeof opt.top === 'number') {\n opt.top = (await this.getKeyBlock(opt.top)).hash\n }\n const txOpt = {\n ...opt,\n gas: opt.gas ?? GAS_MAX,\n callData,\n nonce: opt.nonce ??\n (opt.top && (await this.getAccount(callerId, { hash: opt.top })).nonce + 1)\n }\n const tx = fn === 'init'\n ? (await this.contractCreateTx({ ...txOpt, code: instance.bytecode, ownerId: callerId })).tx\n : await this.contractCallTx({ ...txOpt, callerId, contractId })\n\n const { callObj, ...dryRunOther } = await this.txDryRun(tx, callerId, opt)\n await handleCallError(callObj)\n res = { ...dryRunOther, tx: TxObject({ tx }), result: callObj }\n } else {\n const tx = await this.contractCallTx({\n ...opt,\n gas: opt.gas ?? await instance._estimateGas(fn, params, opt),\n callerId,\n contractId,\n callData\n })\n res = await sendAndProcess(tx, opt)\n }\n if (opt.waitMined || opt.callStatic) {\n res.decodedResult = fnACI.returns && fnACI.returns !== 'unit' && fn !== 'init' &&\n instance.calldata.decode(instance._name, fn, res.result.returnValue)\n res.decodedEvents = instance.decodeEvents(res.result.log, opt)\n }\n return res\n }\n\n /**\n * @param {String} address Contract address that emitted event\n * @param {BigInt} nameHash Hash of emitted event name\n * @param {Object} [options]\n * @param {Object} [options.contractAddressToName] Map of contract addresses to their names\n * @return {String} Contract name\n * @throws {MissingEventDefinitionError}\n * @throws {AmbiguousEventDefinitionError}\n */\n function getContractNameByEvent (address, nameHash, { contractAddressToName }) {\n const addressToName = { ...instance.options.contractAddressToName, ...contractAddressToName }\n if (addressToName[address]) return addressToName[address]\n\n const matchedEvents = [\n instance._aci.encoded_aci,\n ...instance._aci.external_encoded_aci\n ]\n .filter(({ contract }) => contract?.event)\n .map(({ contract }) => [contract.name, contract.event.variant])\n .map(([name, events]) => events.map(event => [name, Object.keys(event)[0]]))\n .flat()\n .filter(([, eventName]) => BigInt('0x' + hash(eventName).toString('hex')) === nameHash)\n switch (matchedEvents.length) {\n case 0: throw new MissingEventDefinitionError(nameHash, address)\n case 1: return matchedEvents[0][0]\n default: throw new AmbiguousEventDefinitionError(address, matchedEvents)\n }\n }\n\n /**\n * Decode Events\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (events: Array) => DecodedEvents: Array\n * @param {Array} events Array of encoded events (callRes.result.log)\n * @param {Object} [options]\n * @param {Boolean} [options.omitUnknown] Omit events that can't be decoded in case ACI is not\n * complete\n * @return {Object} DecodedEvents\n */\n instance.decodeEvents = (events, { omitUnknown, ...opt } = {}) => events\n .map(event => {\n const topics = event.topics.map(t => BigInt(t))\n let contractName\n try {\n contractName = getContractNameByEvent(event.address, topics[0], opt)\n } catch (error) {\n if (omitUnknown && error instanceof MissingEventDefinitionError) return null\n throw error\n }\n const decoded = instance.calldata.decodeEvent(contractName, event.data, topics)\n const [name, args] = Object.entries(decoded)[0]\n return {\n name,\n args,\n contract: {\n name: contractName,\n address: event.address\n }\n }\n })\n .filter(e => e)\n\n /**\n * Generate proto function based on contract function using Contract ACI schema\n * All function can be called like:\n * 'await contract.methods.testFunction()' -> then sdk will decide to use dry-run or send tx\n * on-chain base on if function stateful or not.\n * Also you can manually do that:\n * `await contract.methods.testFunction.get()` -> use call-static(dry-run)\n * `await contract.methods.testFunction.send()` -> send tx on-chain\n */\n instance.methods = Object.fromEntries(instance._aci.encoded_aci.contract.functions\n .map(({ name, arguments: aciArgs, stateful }) => {\n const genHandler = callStatic => (...args) => {\n const options = args.length === aciArgs.length + 1 ? args.pop() : {}\n if (typeof options !== 'object') throw new TypeError(`Options should be an object: ${options}`)\n if (name === 'init') return instance.deploy(args, { callStatic, ...options })\n return instance.call(name, args, { callStatic, ...options })\n }\n return [\n name,\n Object.assign(\n genHandler(name === 'init' ? false : !stateful),\n {\n get: genHandler(true),\n send: genHandler(false)\n }\n )\n ]\n })\n )\n\n return instance\n}\n","import BigNumber from 'bignumber.js'\nimport { MAX_AUTH_FUN_GAS } from '../../tx/builder/schema'\nimport { InvalidAuthDataError } from '../../utils/errors'\n\nexport const prepareGaParams = (ins) => async (authData, authFnName) => {\n if (typeof authData !== 'object') throw new InvalidAuthDataError('AuthData must be an object')\n if (authData.gas && BigNumber(authData.gas).gt(MAX_AUTH_FUN_GAS)) { throw new InvalidAuthDataError(`the maximum gas value for ga authFun is ${MAX_AUTH_FUN_GAS}, got ${authData.gas}`) }\n const gas = authData.gas || MAX_AUTH_FUN_GAS\n if (authData.callData) {\n if (authData.callData.split('_')[0] !== 'cb') throw new InvalidAuthDataError('Auth data must be a string with \"cb\" prefix.')\n return { authCallData: authData.callData, gas }\n }\n if (!authData.source || !authData.args) throw new InvalidAuthDataError('Auth data must contain source code and arguments.')\n const contract = await ins.getContractInstance({ source: authData.source })\n return {\n authCallData: contract.calldata.encode(contract._name, authFnName, authData.args),\n gas\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Generalized Account module - routines to use generalized account\n *\n * @module @aeternity/aepp-sdk/es/contract/ga\n * @export GeneralizedAccount\n * @example import { GeneralizedAccount } from '@aeternity/aepp-sdk'\n */\nimport Contract from '../../ae/contract'\nimport { TX_TYPE } from '../../tx/builder/schema'\nimport { buildTx, unpackTx } from '../../tx/builder'\nimport { prepareGaParams } from './helpers'\nimport { hash } from '../../utils/crypto'\nimport { IllegalArgumentError, MissingParamError } from '../../utils/errors'\n\n/**\n * GeneralizedAccount Stamp\n *\n * Provide Generalized Account implementation\n * {@link module:@aeternity/aepp-sdk/es/contract/ga} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} GeneralizedAccount instance\n * @example\n * const authContract = ``\n * await aeSdk.createGeneralizedAccount(authFnName, authContract, [...authFnArguments]\n * // Make spend using GA\n * const callData = 'cb_...' // encoded call data for auth contract\n * await aeSdk.spend(10000, receiverPub, { authData: { callData } })\n * // or\n * await aeSdk.spend(10000, receiverPub, {\n * authData: { source: authContract, args: [...authContractArgs] }\n * }) // sdk will prepare callData itself\n */\nexport const GeneralizedAccount = Contract.compose({\n methods: {\n createGeneralizedAccount,\n createMetaTx,\n isGA\n }\n})\nexport default GeneralizedAccount\n\n/**\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * Check if account is GA\n * @param {String} address - Account address\n * @return {Boolean}\n */\nasync function isGA (address) {\n const { contractId } = await this.getAccount(address)\n return !!contractId\n}\n\n/**\n * Convert current account to GA\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} authFnName - Authorization function name\n * @param {String} source - Auth contract source code\n * @param {Array} [args] - init arguments\n * @param {Object} [options] - Options\n * @return {Promise<Readonly<{\n * result: *, owner: *, address, rawTx: *, transaction: *\n * }>>}\n */\nasync function createGeneralizedAccount (authFnName, source, args = [], options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const ownerId = await this.address(opt)\n if (await this.isGA(ownerId)) throw new IllegalArgumentError(`Account ${ownerId} is already GA`)\n\n const contract = await this.getContractInstance({ source })\n await contract.compile()\n const { tx, contractId } = await this.gaAttachTx({\n ...opt,\n gas: opt.gas ?? await contract._estimateGas('init', args, opt),\n ownerId,\n code: contract.bytecode,\n callData: contract.calldata.encode(contract._name, 'init', args),\n authFun: hash(authFnName)\n })\n\n const { hash: transaction, rawTx } = await this.send(tx, opt)\n\n return Object.freeze({\n owner: ownerId,\n transaction,\n rawTx,\n gaContractId: contractId\n })\n}\n\nconst wrapInEmptySignedTx = (tx) => buildTx({ encodedTx: tx, signatures: [] }, TX_TYPE.signed)\n\n/**\n * Create a metaTx transaction\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} rawTransaction Inner transaction\n * @param {Object} authData Object with gaMeta params\n * @param {String} authFnName - Authorization function name\n * @param {Object} options - Options\n * @return {String}\n */\nasync function createMetaTx (rawTransaction, authData, authFnName, options = {}) {\n if (!authData) throw new MissingParamError('authData is required')\n // Check if authData is callData or if it's an object prepare a callData from source and args\n const { authCallData, gas } = await prepareGaParams(this)(authData, authFnName)\n const opt = { ...this.Ae.defaults, ...options }\n const { abiVersion } = await this.getVmVersion(TX_TYPE.contractCall)\n const wrappedTx = wrapInEmptySignedTx(unpackTx(rawTransaction))\n const params = {\n ...opt,\n tx: {\n ...wrappedTx,\n tx: wrappedTx.txObject\n },\n gaId: await this.address(opt),\n abiVersion,\n authData: authCallData,\n gas,\n vsn: 2\n }\n const { fee } = await this.prepareTxParams(TX_TYPE.gaMeta, params)\n const { rlpEncoded: metaTxRlp } = buildTx(\n { ...params, fee: `${fee}` },\n TX_TYPE.gaMeta,\n { vsn: 2 }\n )\n return wrapInEmptySignedTx(metaTxRlp).tx\n}\n","export const VERSION = 1\n\nexport const enum MESSAGE_DIRECTION {\n to_waellet = 'to_waellet',\n to_aepp = 'to_aepp'\n}\n\nexport const enum WALLET_TYPE {\n window = 'window',\n extension = 'extension'\n}\n\nexport const enum SUBSCRIPTION_TYPES {\n subscribe = 'subscribe',\n unsubscribe = 'unsubscribe'\n}\n\nexport const enum METHODS {\n readyToConnect = 'connection.announcePresence',\n updateAddress = 'address.update',\n address = 'address.get',\n connect = 'connection.open',\n sign = 'transaction.sign',\n signMessage = 'message.sign',\n subscribeAddress = 'address.subscribe',\n updateNetwork = 'networkId.update',\n closeConnection = 'connection.close'\n}\n\nexport const enum RPC_STATUS {\n CONNECTED = 'CONNECTED',\n NODE_BINDED = 'NODE_BINDED',\n DISCONNECTED = 'DISCONNECTED',\n CONNECTION_REJECTED = 'CONNECTION_REJECTED',\n WAITING_FOR_CONNECTION_APPROVE = 'WAITING_FOR_CONNECTION_APPROVE',\n WAITING_FOR_CONNECTION_REQUEST = 'WAITING_FOR_CONNECTION_REQUEST'\n}\n\nexport const ERRORS = {\n broadcastFailed: (error = {}) => ({\n code: 3,\n data: error,\n message: 'Broadcast failed'\n }),\n invalidTransaction: (error = {}) => ({\n code: 2,\n data: error,\n message: 'Invalid transaction'\n }),\n rejectedByUser: (error = {}) => ({\n code: 4,\n data: error,\n message: 'Operation rejected by user'\n }),\n connectionDeny: (error = {}) => ({\n code: 9,\n data: error,\n message: 'Wallet deny your connection request'\n }),\n permissionDeny: (address: string) => ({\n code: 11,\n message: `You are not subscribed for account ${address}`\n }),\n internalError: (message: string) => ({\n code: 12,\n message\n }),\n notAuthorize: () => ({\n code: 10,\n message: 'You are not connected to the wallet'\n }),\n unsupportedProtocol: () => ({\n code: 5,\n message: 'Unsupported Protocol Version'\n }),\n unsupportedNetwork: () => ({\n code: 8,\n message: 'Unsupported Network'\n })\n}\n","/**\n * Browser helper functions\n */\nimport { NoBrowserFoundError } from '../errors'\n\nexport const getBrowserAPI = (force = false) => {\n const { chrome, browser } = window\n // Chrome, Opera support\n if (typeof chrome !== 'undefined' && chrome === Object(chrome)) return chrome\n // Firefox support\n if (typeof browser !== 'undefined' && browser === Object(browser)) return browser\n if (!force) throw new NoBrowserFoundError()\n return {}\n}\n\nexport const isInIframe = () => window !== window.parent\n\n/**\n * RPC helper functions\n */\nexport const sendMessage = (connection) => {\n let messageId = 0\n\n return ({ id, method, params, result, error }, isNotificationOrResponse = false) => {\n // Increment id for each request\n isNotificationOrResponse || (messageId += 1)\n id = isNotificationOrResponse ? (id || null) : messageId\n const msgData = params\n ? { params }\n : result\n ? { result }\n : { error }\n connection.sendMessage({\n jsonrpc: '2.0',\n ...id ? { id } : {},\n method,\n ...msgData\n })\n return id\n }\n}\n\nexport const getHandler = (schema, msg, { debug = false } = {}) => {\n const handler = schema[msg.method]\n if (!handler || typeof handler !== 'function') {\n debug && console.log(`Unknown message method ${msg.method}`)\n return () => async () => true\n }\n return handler\n}\n\nexport const message = (method, params = {}) => ({ method, params })\n\nexport const responseMessage = (id, method, { error, result } = {}) =>\n ({ id, method, ...(error ? { error } : { result }) })\n\nexport const sendResponseMessage = (client) => (id, method, data) =>\n client.sendMessage(responseMessage(id, method, data), true)\n\nexport const isValidAccounts = (accounts) => (['', 'connected', 'current'].filter(k => typeof (k ? accounts[k] : accounts) === 'object')).length === 3\n","/**\n * RpcClient module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @export { RpcClient, RpcClients }\n * @example\n * import RpcClient from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client'\n */\nimport stampit from '@stamp/it'\n\nimport { METHODS, RPC_STATUS, SUBSCRIPTION_TYPES } from '../schema'\nimport { sendMessage, message, isValidAccounts } from '../helpers'\nimport {\n InvalidRpcMessageError,\n TypeError,\n DuplicateCallbackError,\n MissingCallbackError\n} from '../../errors'\n\n/**\n * Contain functionality for using RPC conection\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String} param.name Client name\n * @param {Object} param.connection Connection object\n * @param {Function[]} param.handlers Array with two function for message handling\n * @param {Function} param.handlers[0] Message handler\n * @param {Function} param.handlers[1] Disconnect callback\n * @return {Object}\n */\nexport default stampit({\n init ({ id, name, networkId, icons, connection, handlers: [onMessage, onDisconnect] }) {\n this.id = id\n this.connection = connection\n this.info = { name, networkId, icons }\n // {\n // [msg.id]: { resolve, reject }\n // }\n this.callbacks = {}\n // ['connected', 'current']\n this.addressSubscription = []\n // {\n // connected: { [pub]: {...meta} },\n // current: { [pub]: {...meta} }\n // }\n this.accounts = {}\n\n this.sendMessage = sendMessage(this.connection)\n\n const handleMessage = (msg, origin) => {\n if (!msg || !msg.jsonrpc || msg.jsonrpc !== '2.0' || !msg.method) {\n throw new InvalidRpcMessageError(msg)\n }\n onMessage(msg, origin)\n }\n\n const disconnect = (aepp, connection) => {\n this.disconnect(true)\n typeof onDisconnect === 'function' && onDisconnect(connection, this)\n }\n\n connection.connect(handleMessage, disconnect)\n },\n propertyDescriptors: {\n currentAccount: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? Object.keys(this.accounts.current)[0]\n : undefined\n }\n },\n addresses: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? [...Object.keys(this.accounts.current), ...Object.keys(this.accounts.connected)]\n : []\n }\n },\n origin: {\n enumerable: true,\n configurable: false,\n get () {\n return this.connection\n }\n }\n },\n methods: {\n /**\n * Update info\n * @function updateInfo\n * @instance\n * @rtype (info: Object) => void\n * @param {Object} info Info to update (will be merged with current info object)\n * @return {void}\n */\n updateInfo (info) {\n Object.assign(this.info, info)\n },\n isHasAccounts () {\n return typeof this.accounts === 'object' &&\n typeof this.accounts.connected === 'object' &&\n typeof this.accounts.current === 'object'\n },\n isSubscribed () {\n return this.addressSubscription.length && this.isHasAccounts()\n },\n /**\n * Check if aepp has access to account\n * @function hasAccessToAccount\n * @instance\n * @rtype (address: String) => Boolean\n * @param {String} address Account address\n * @return {Boolean} is connected\n */\n hasAccessToAccount (address) {\n return !!address && this.addresses.find(a => a === address)\n },\n /**\n * Check if is connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} is connected\n */\n isConnected () {\n return this.connection.isConnected() &&\n (this.info.status === RPC_STATUS.CONNECTED || this.info.status === RPC_STATUS.NODE_BINDED)\n },\n /**\n * Get selected account\n * @function getCurrentAccount\n * @instance\n * @rtype ({ onAccount } = {}) => String\n * @param {Object} options Options\n * @return {String}\n */\n getCurrentAccount ({ onAccount } = {}) {\n return onAccount || Object.keys(this.accounts.current)[0]\n },\n /**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\n disconnect (forceConnectionClose = false) {\n this.info.status = RPC_STATUS.DISCONNECTED\n this.addressSubscription = []\n this.accounts = {}\n forceConnectionClose || this.connection.disconnect()\n },\n /**\n * Update accounts and sent `update.address` notification to AEPP\n * @param {{ current: Object, connected: Object }} accounts Current and connected accounts\n * @param {Object} [options]\n * @param {Boolean} [options.forceNotification] Don't sent update notification to AEPP\n */\n setAccounts (accounts, { forceNotification } = {}) {\n if (!isValidAccounts(accounts)) {\n throw new TypeError('Invalid accounts object. Should be object like: `{ connected: {}, selected: {} }`')\n }\n this.accounts = accounts\n if (!forceNotification) {\n // Sent notification about account updates\n this.sendMessage(message(METHODS.updateAddress, this.accounts), true)\n }\n },\n /**\n * Update subscription\n * @function updateSubscription\n * @instance\n * @rtype (type: String, value: String) => void\n * @param {String} type Subscription type\n * @param {String} value Subscription value\n * @return {String[]}\n */\n updateSubscription (type, value) {\n if (type === SUBSCRIPTION_TYPES.subscribe && !this.addressSubscription.includes(value)) {\n this.addressSubscription.push(value)\n }\n if (type === SUBSCRIPTION_TYPES.unsubscribe && this.addressSubscription.includes(value)) {\n this.addressSubscription = this.addressSubscription.filter(s => s !== value)\n }\n return this.addressSubscription\n },\n /**\n * Make a request\n * @function request\n * @instance\n * @rtype (name: String, params: Object) => Promise\n * @param {String} name Method name\n * @param {Object} params Method params\n * @return {Promise} Promise which will be resolved after receiving response message\n */\n request (name, params) {\n const msgId = this.sendMessage(message(name, params))\n if (Object.prototype.hasOwnProperty.call(this.callbacks, msgId)) {\n throw new DuplicateCallbackError()\n }\n return new Promise((resolve, reject) => {\n this.callbacks[msgId] = { resolve, reject }\n })\n },\n /**\n * Process response message\n * @function processResponse\n * @instance\n * @rtype (msg: Object, transformResult: Function) => void\n * @param {Object} msg Message object\n * @param {Function=} transformResult Optional parser function for message\n * @return {void}\n */\n processResponse ({ id, error, result }, transformResult) {\n if (!this.callbacks[id]) throw new MissingCallbackError(id)\n if (result) {\n this.callbacks[id].resolve(...typeof transformResult === 'function'\n ? transformResult({ id, result })\n : [result])\n } else {\n this.callbacks[id].reject(error)\n }\n delete this.callbacks[id]\n }\n }\n})\n","/**\n * RPC handler for AEPP side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @export AeppRpc\n * @example\n * import ContentScriptBridge\n * from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc'\n */\nimport { v4 as uuid } from '@aeternity/uuid'\nimport Ae from '../../../ae'\nimport RpcClient from './rpc-client'\nimport { getHandler, message } from '../helpers'\nimport { METHODS, RPC_STATUS, VERSION } from '../schema'\nimport {\n AlreadyConnectedError,\n NoWalletConnectedError,\n UnsubscribedAccountError,\n UnAuthorizedAccountError,\n ArgumentError,\n RpcConnectionError\n} from '../../errors'\nimport { Node } from '../../../index'\n\nconst NOTIFICATIONS = {\n [METHODS.updateAddress]: (instance) =>\n ({ params }) => {\n instance.rpcClient.accounts = params\n instance.onAddressChange(params)\n },\n [METHODS.updateNetwork]: (instance) =>\n async ({ params }) => {\n const { networkId, node } = params\n instance.rpcClient.info.networkId = networkId\n node && instance.addNode(node.name, await Node(node), true)\n instance.onNetworkChange(params)\n },\n [METHODS.closeConnection]: (instance) =>\n (msg) => {\n instance.disconnectWallet()\n instance.onDisconnect(msg.params)\n }\n}\n\nconst RESPONSES = {\n [METHODS.address]: (instance) =>\n (msg) => instance.rpcClient.processResponse(msg),\n [METHODS.connect]: (instance) =>\n (msg) => {\n if (msg.result) instance.rpcClient.info.status = RPC_STATUS.CONNECTED\n instance.rpcClient.processResponse(msg)\n },\n [METHODS.subscribeAddress]: (instance) =>\n (msg) => {\n if (msg.result) {\n if (msg.result.address) {\n instance.rpcClient.accounts = msg.result.address\n }\n if (msg.result.subscription) {\n instance.rpcClient.addressSubscription = msg.result.subscription\n }\n }\n\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result])\n },\n [METHODS.sign]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(\n msg, ({ id, result }) => [result.signedTransaction || result.transactionHash]\n )\n },\n [METHODS.signMessage]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result.signature])\n }\n}\n\nconst REQUESTS = {}\n\nconst handleMessage = (instance) => async (msg) => {\n if (!msg.id) {\n return getHandler(NOTIFICATIONS, msg, { debug: instance.debug })(instance)(msg)\n } else if (Object.prototype.hasOwnProperty.call(instance.rpcClient.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance)(msg)\n } else {\n return getHandler(REQUESTS, msg, { debug: instance.debug })(instance)(msg)\n }\n}\n\n/**\n * Contain functionality for wallet interaction and connect it to sdk\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Aepp name\n * @param {Function} onAddressChange Call-back function for update address event\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @param {Function} onNetworkChange Call-back function for update network event\n * @param {Object} connection Wallet connection object\n * @return {Object}\n */\nexport default Ae.compose({\n async init ({\n name,\n connection,\n debug = false,\n ...other\n }) {\n ['onAddressChange', 'onDisconnect', 'onNetworkChange'].forEach(event => {\n const handler = other[event] ?? (() => {})\n if (typeof handler !== 'function') throw new ArgumentError(event, 'a function', handler)\n this[event] = handler\n })\n\n this.connection = connection\n this.name = name\n this.debug = debug\n\n if (connection) {\n // Init RPCClient\n await this.connectToWallet(connection)\n }\n },\n deepProps: { Ae: { defaults: { walletBroadcast: true } } },\n methods: {\n sign () {\n },\n addresses () {\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n return [this.rpcClient.currentAccount, ...Object.keys(this.rpcClient.accounts.connected)]\n },\n /**\n * Connect to wallet\n * @function connectToWallet\n * @instance\n * @rtype (connection: Object) => void\n * @param {Object} connection Wallet connection object\n * @param {Object} [options={}]\n * @param {Boolean} [options.connectNode=true] - Request wallet to bind node\n * @param {String} [options.name=wallet-node] - Node name\n * @param {Boolean} [options.select=false] - Select this node as current\n * @return {Object}\n */\n async connectToWallet (connection, { connectNode = false, name = 'wallet-node', select = false } = {}) {\n if (this.rpcClient && this.rpcClient.isConnected()) throw new AlreadyConnectedError('You are already connected to wallet ' + this.rpcClient)\n this.rpcClient = RpcClient({\n connection,\n networkId: this.getNetworkId({ force: true }),\n ...connection.connectionInfo,\n id: uuid(),\n handlers: [handleMessage(this), this.onDisconnect]\n })\n const walletInfo = await this.sendConnectRequest(connectNode)\n if (connectNode && !Object.prototype.hasOwnProperty.call(walletInfo, 'node')) {\n throw new RpcConnectionError('Missing URLs of the Node')\n }\n connectNode && this.addNode(name, await Node(walletInfo.node), select)\n return walletInfo\n },\n /**\n * Disconnect from wallet\n * @function disconnectWallet\n * @instance\n * @rtype (force: Boolean = false) => void\n * @param {Boolean} sendDisconnect=false Force sending close connection message\n * @return {void}\n */\n async disconnectWallet (sendDisconnect = true) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n sendDisconnect && this.rpcClient.sendMessage(message(METHODS.closeConnection, { reason: 'bye' }), true)\n this.rpcClient.disconnect()\n this.rpcClient = null\n },\n async address ({ onAccount } = {}) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n const current = this.rpcClient.currentAccount\n if (!current) throw new UnsubscribedAccountError()\n if (onAccount && !this.rpcClient.hasAccessToAccount(onAccount)) {\n throw new UnAuthorizedAccountError(onAccount)\n }\n return onAccount || current\n },\n /**\n * Ask address from wallet\n * @function askAddresses\n * @instance\n * @rtype () => Promise\n * @return {Promise} Address from wallet\n */\n async askAddresses () {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n return this.rpcClient.request(METHODS.address)\n },\n /**\n * Subscribe for addresses from wallet\n * @function subscribeAddress\n * @instance\n * @rtype (type: String, value: String) => Promise\n * @param {String} type Should be one of 'current' (the selected account), 'connected' (all)\n * @param {String} value Subscription action('subscribe'|'unsubscribe')\n * @return {Promise} Address from wallet\n */\n async subscribeAddress (type, value) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n return this.rpcClient.request(METHODS.subscribeAddress, { type, value })\n },\n /**\n * Overwriting of `signTransaction` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signTransaction\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signTransaction (tx, opt = {}) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) {\n throw new UnAuthorizedAccountError(opt.onAccount)\n }\n return this.rpcClient.request(\n METHODS.sign,\n { ...opt, tx, returnSigned: true, networkId: this.getNetworkId() }\n )\n },\n /**\n * Overwriting of `signMessage` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signMessage\n * @instance\n * @rtype (msg: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signMessage (msg, opt = {}) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) {\n throw new UnAuthorizedAccountError(opt.onAccount)\n }\n return this.rpcClient.request(METHODS.signMessage, { ...opt, message: msg })\n },\n /**\n * Send connection request to wallet\n * @function sendConnectRequest\n * @instance\n * @param {Boolean} connectNode - Request wallet to bind node\n * @rtype () => Promise\n * @return {Promise} Connection response\n */\n async sendConnectRequest (connectNode) {\n return this.rpcClient.request(\n METHODS.connect, {\n name: this.name,\n version: VERSION,\n networkId: this.getNetworkId({ force: true }),\n connectNode\n }\n )\n },\n /**\n * Overwriting of `send` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * This method will sign, broadcast and wait until transaction will be accepted using rpc\n * communication with wallet\n * @function send\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @param {String} tx\n * @param {Object} [options={}]\n * @param {Object} [options.walletBroadcast=true]\n * @return {Promise<Object>} Transaction broadcast result\n */\n async send (tx, options = {}) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n if (options.onAccount && !this.rpcClient.hasAccessToAccount(options.onAccount)) {\n throw new UnAuthorizedAccountError(options.onAccount)\n }\n const opt = { ...this.Ae.defaults, ...options }\n if (!opt.walletBroadcast) {\n const signed = await this.signTransaction(tx, { onAccount: opt.onAccount })\n return this.sendTransaction(signed, opt)\n }\n return this.rpcClient.request(\n METHODS.sign,\n { onAccount: opt.onAccount, tx, returnSigned: false, networkId: this.getNetworkId() }\n )\n },\n isConnected () { return (this.rpcClient && this.rpcClient.isConnected()) },\n isSubscribedAccount () { return typeof this.rpcClient.currentAccount !== 'undefined' }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Oracle module - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n * @module @aeternity/aepp-sdk/es/ae/oracle\n * @export Oracle\n * @example import { Oracle } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport { pause } from '../utils/other'\nimport { oracleQueryId, decode } from '../tx/builder/helpers'\nimport { unpackTx } from '../tx/builder'\nimport { ORACLE_TTL, QUERY_FEE, QUERY_TTL, RESPONSE_TTL } from '../tx/builder/schema'\nimport { RequestTimedOutError } from '../utils/errors'\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @return {Promise<Object>} Oracle object\n */\nasync function getOracleObject (oracleId) {\n const oracle = await this.api.getOracleByPubkey(oracleId)\n const { oracleQueries: queries } = await this.api.getOracleQueriesByPubkey(oracleId)\n return {\n ...oracle,\n queries,\n pollQueries: this.pollForQueries.bind(this, oracleId),\n postQuery: this.postQueryToOracle.bind(this, oracleId),\n respondToQuery: this.respondToQuery.bind(this, oracleId),\n extendOracle: this.extendOracleTtl.bind(this, oracleId),\n getQuery: this.getQueryObject.bind(this, oracleId)\n }\n}\n\n/**\n * Poll for oracle queries\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @param {String} oracleId Oracle public key\n * @param {Function} onQuery OnQuery callback\n * @param {Object} [options] Options object\n * @param {Number} [options.interval] Poll interval(default: 5000)\n * @return {Function} stopPolling - Stop polling function\n */\nfunction pollForQueries (\n oracleId,\n onQuery,\n { interval = this._getPollInterval('microblock') } = {}\n) {\n const knownQueryIds = new Set()\n const checkNewQueries = async () => {\n const queries = ((await this.api.getOracleQueriesByPubkey(oracleId)).oracleQueries || [])\n .filter(({ id }) => !knownQueryIds.has(id))\n queries.forEach(({ id }) => knownQueryIds.add(id))\n if (queries.length) onQuery(queries)\n }\n\n let stopped\n (async () => {\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error)\n await pause(interval)\n }\n })()\n return () => { stopped = true }\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle Query id\n * @return {Promise<Object>} OracleQuery object\n */\nasync function getQueryObject (oracleId, queryId) {\n const q = await this.api.getOracleQueryByPubkeyAndQueryId(oracleId, queryId)\n return {\n ...q,\n decodedQuery: decode(q.query).toString(),\n decodedResponse: decode(q.response).toString(),\n respond: this.respondToQuery.bind(this, oracleId, queryId),\n pollForResponse: this.pollForQueryResponse.bind(this, oracleId, queryId),\n /**\n * @deprecated use TxBuilderHelper.decode instead\n * @param data\n * @returns {Buffer}\n */\n decode: (data) => decode(data)\n }\n}\n\n/**\n * Poll for oracle query response\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle Query id\n * @param {Object} [options] Options object\n * @param {Object} [options.attempts] Poll attempt's(default: 20)\n * @param {Object} [options.interval] Poll interval(default: 5000)\n * @return {Promise<Object>} OracleQuery object\n */\nexport async function pollForQueryResponse (\n oracleId,\n queryId,\n { attempts = 20, interval = this._getPollInterval('microblock') } = {}\n) {\n for (let i = 0; i < attempts; i++) {\n if (i) await pause(interval)\n const { response } = await this.api.getOracleQueryByPubkeyAndQueryId(oracleId, queryId)\n const responseBuffer = decode(response, 'or')\n if (responseBuffer.length) {\n return String(responseBuffer)\n }\n }\n throw new RequestTimedOutError((attempts - 1) * interval)\n}\n\n/**\n * Register oracle\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} queryFormat Format of query\n * @param {String} responseFormat Format of query response\n * @param {Object} [options={}] Options\n * @param {String|Number} [options.queryFee] Oracle query Fee\n * @param {Object} [options.oracleTtl] OracleTtl object {type: 'delta|block', value: 'number'}\n * @param {Number} [options.abiVersion] Always 0 (do not use virtual machine)\n * @param {Number|String} [options.fee] Transaction fee\n * @param {Number|String} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function registerOracle (queryFormat, responseFormat, options = {}) {\n const opt = { ...this.Ae.defaults, ...options } // Preset VmVersion for oracle\n const accountId = await this.address(opt)\n\n const oracleRegisterTx = await this.oracleRegisterTx({\n ...opt,\n accountId,\n queryFormat,\n responseFormat\n })\n return {\n ...await this.send(oracleRegisterTx, opt),\n ...await this.getOracleObject(`ok_${accountId.slice(3)}`)\n }\n}\n\n/**\n * Post query to oracle\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} query Oracle query object\n * @param {Object} [options={}]\n * @param {String|Number} [options.queryTtl] queryTtl Oracle query time to leave\n * @param {String|Number} [options.responseTtl] queryFee Oracle query response time to leave\n * @param {String|Number} [options.queryFee] queryFee Oracle query fee\n * @param {Number} [options.fee] fee Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Query object\n */\nasync function postQueryToOracle (oracleId, query, options = {}) {\n const queryFee = options.queryFee || (await this.api.getOracleByPubkey(oracleId)).queryFee\n const opt = { ...this.Ae.defaults, queryFee, ...options }\n const senderId = await this.address(opt)\n\n const oracleRegisterTx = await this.oraclePostQueryTx({\n ...opt,\n oracleId,\n senderId,\n query\n })\n const queryId = oracleQueryId(senderId, unpackTx(oracleRegisterTx).tx.nonce, oracleId)\n return {\n ...await this.send(oracleRegisterTx, opt),\n ...await this.getQueryObject(oracleId, queryId)\n }\n}\n\n/**\n * Extend oracle ttl\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} oracleTtl Oracle time to leave for extend\n * @param {Object} [options={}]\n * @param {Number} [options.fee] fee Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function extendOracleTtl (oracleId, oracleTtl, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const callerId = await this.address(opt)\n\n const oracleExtendTx = await this.oracleExtendTx({\n ...opt,\n oracleId,\n callerId,\n oracleTtl\n })\n return {\n ...await this.send(oracleExtendTx, opt),\n ...await this.getOracleObject(oracleId)\n }\n}\n\n/**\n * Extend oracle ttl\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle query id\n * @param {String} response Oracle query response\n * @param {Object} [options={}]\n * @param {Number} [options.responseTtl] responseTtl Query response time to leave\n * @param {Number} [options.fee] Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function respondToQuery (oracleId, queryId, response, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const callerId = await this.address(opt)\n\n const oracleRespondTx = await this.oracleRespondTx({\n ...opt,\n oracleId,\n queryId,\n callerId,\n response\n })\n return {\n ...await this.send(oracleRespondTx, opt),\n ...await this.getOracleObject(oracleId)\n }\n}\n\n/**\n * Oracle Stamp\n *\n * Oracle provides oracle-system related methods atop\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Oracle instance\n */\nconst Oracle = Ae.compose({\n methods: {\n registerOracle,\n respondToQuery,\n extendOracleTtl,\n postQueryToOracle,\n pollForQueryResponse,\n pollForQueries,\n getOracleObject,\n getQueryObject\n },\n deepProps: {\n Ae: {\n defaults: {\n queryFee: QUERY_FEE,\n oracleTtl: ORACLE_TTL,\n queryTtl: QUERY_TTL,\n responseTtl: RESPONSE_TTL\n }\n }\n }\n})\n\nexport default Oracle\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aepp module\n * @module @aeternity/aepp-sdk/es/ae/aepp\n * @export Aepp\n * @example import { RpcAepp } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Aens from './aens'\nimport Contract from './contract'\nimport AeppRpc from '../utils/aepp-wallet-communication/rpc/aepp-rpc'\nimport Chain from '../chain/node'\nimport Tx from '../tx/tx'\nimport Oracle from './oracle'\n\n/**\n * Aepp Stamp\n *\n * Aepp provides base functionality.\n * Expected to use this stamp with a Wallet.\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aepp\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Aepp instance\n */\nexport default Ae.compose(Tx, Oracle, Contract, Aens, Chain, AeppRpc)\n","/**\n * RPC handler for WAELLET side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @export WalletRpc\n * @example\n * import WalletRpc from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc'\n */\nimport { v4 as uuid } from '@aeternity/uuid'\nimport Ae from '../../../ae'\nimport verifyTransaction from '../../../tx/validator'\nimport AccountMultiple from '../../../account/multiple'\nimport TxObject from '../../../tx/tx-object'\nimport RpcClient from './rpc-client'\nimport { getBrowserAPI, getHandler, isValidAccounts, message, sendResponseMessage } from '../helpers'\nimport { ERRORS, METHODS, RPC_STATUS, VERSION, WALLET_TYPE } from '../schema'\nimport { ArgumentError, TypeError, UnknownRpcClientError } from '../../errors'\nimport { isAccountBase } from '../../../account/base'\n\nconst resolveOnAccount = (addresses, onAccount, opt = {}) => {\n if (!addresses.find(a => a === onAccount)) {\n if (typeof opt.onAccount !== 'object' || !isAccountBase(opt.onAccount)) throw new TypeError('Provided onAccount should be an AccountBase')\n onAccount = opt.onAccount\n }\n return onAccount\n}\n\nconst NOTIFICATIONS = {\n [METHODS.closeConnection]: (instance, { client }) =>\n async (msg) => {\n client.disconnect(true)\n instance.onDisconnect(msg.params, client)\n }\n}\n\nconst RESPONSES = {}\n\nconst REQUESTS = {\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.connect] (\n callInstance,\n instance,\n client,\n { name, networkId, version, icons, connectNode }) {\n // Check if protocol and network is compatible with wallet\n if (version !== VERSION) return { error: ERRORS.unsupportedProtocol() }\n // Store new AEPP and wait for connection approve\n client.updateInfo({\n status: RPC_STATUS.WAITING_FOR_CONNECTION_APPROVE,\n name,\n networkId,\n icons,\n version,\n origin: window.location.origin,\n connectNode\n })\n\n // Call onConnection callBack to notice Wallet about new AEPP\n return callInstance(\n 'onConnection',\n { name, networkId, version },\n ({ shareNode } = {}) => {\n client.updateInfo({ status: shareNode ? RPC_STATUS.NODE_BINDED : RPC_STATUS.CONNECTED })\n return {\n result: {\n ...instance.getWalletInfo(),\n ...(shareNode && { node: instance.selectedNode })\n }\n }\n },\n (error) => {\n client.updateInfo({ status: RPC_STATUS.CONNECTION_REJECTED })\n return { error: ERRORS.connectionDeny(error) }\n }\n )\n },\n [METHODS.subscribeAddress] (callInstance, instance, client, { type, value }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onSubscription',\n { type, value },\n async ({ accounts } = {}) => {\n try {\n const clientAccounts = accounts || instance.getAccounts()\n if (!isValidAccounts(clientAccounts)) {\n throw new TypeError('Invalid provided accounts object')\n }\n const subscription = client.updateSubscription(type, value)\n client.setAccounts(clientAccounts, { forceNotification: true })\n return {\n result: {\n subscription,\n address: clientAccounts\n }\n }\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError(e.message) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.address] (callInstance, instance, client) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n if (!client.isSubscribed()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onAskAccounts',\n {},\n ({ accounts } = {}) => ({\n result: accounts ||\n [...Object.keys(client.accounts.current), ...Object.keys(client.accounts.connected)]\n }),\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.sign] (callInstance, instance, client, options) {\n const { tx, onAccount, networkId, returnSigned = false } = options\n const address = onAccount || client.currentAccount\n // Update client with new networkId\n networkId && client.updateInfo({ networkId })\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n // Account permission check\n if (!client.hasAccessToAccount(address)) {\n return { error: ERRORS.permissionDeny(address) }\n }\n // NetworkId check\n if (!networkId || networkId !== instance.getNetworkId()) {\n return { error: ERRORS.unsupportedNetwork() }\n }\n\n return callInstance(\n 'onSign',\n { tx, returnSigned, onAccount: address, txObject: TxObject.fromString(tx) },\n async (rawTx, opt = {}) => {\n let onAcc\n try {\n onAcc = resolveOnAccount(instance.addresses(), address, opt)\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError(e.message) }\n }\n try {\n const t = rawTx || tx\n const result = returnSigned\n ? { signedTransaction: await instance.signTransaction(t, { onAccount: onAcc }) }\n : { transactionHash: await instance.send(t, { onAccount: onAcc, verify: false }) }\n return { result }\n } catch (e) {\n if (!returnSigned) {\n // Validate transaction\n const validation = await verifyTransaction(rawTx || tx, instance.selectedNode.instance)\n if (validation.length) return { error: ERRORS.invalidTransaction(validation) }\n // Send broadcast failed error to aepp\n return { error: ERRORS.broadcastFailed(e.message) }\n }\n throw e\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.signMessage] (callInstance, instance, client, { message, onAccount }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n const address = onAccount || client.currentAccount\n if (!client.hasAccessToAccount(address)) {\n return { error: ERRORS.permissionDeny(address) }\n }\n\n return callInstance(\n 'onMessageSign',\n { message, onAccount: address },\n async (opt = {}) => {\n try {\n const onAcc = resolveOnAccount(instance.addresses(), address, opt)\n return {\n result: {\n signature: await instance.signMessage(message, {\n onAccount: onAcc,\n returnHex: true\n })\n }\n }\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError(e.message) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n }\n}\n\nconst handleMessage = (instance, id) => async (msg, origin) => {\n const client = instance.rpcClients[id]\n if (!msg.id) {\n return getHandler(\n NOTIFICATIONS, msg, { debug: instance.debug }\n )(instance, { client })(msg, origin)\n }\n if (Object.prototype.hasOwnProperty.call(client.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance, { client })(msg, origin)\n } else {\n const { id, method } = msg\n const callInstance = (methodName, params, accept, deny) => () => new Promise(resolve => {\n instance[methodName](\n client,\n {\n id,\n method,\n params,\n accept: (...args) => resolve(accept(...args)),\n deny: (...args) => resolve(deny(...args))\n },\n origin\n )\n })\n // TODO make one structure for handler functions\n const errorObjectOrHandler = getHandler(REQUESTS, msg, { debug: instance.debug })(\n callInstance, instance, client, msg.params\n )\n const response = typeof errorObjectOrHandler === 'function' ? await errorObjectOrHandler() : errorObjectOrHandler\n sendResponseMessage(client)(id, method, response)\n }\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Wallet name\n * @param {Function} onConnection Call-back function for incoming AEPP connection\n * @param {Function} onSubscription Call-back function for incoming AEPP account subscription\n * @param {Function} onSign Call-back function for incoming AEPP sign request\n * @param {Function} onAskAccounts Call-back function for incoming AEPP get address request\n * @param {Function} onMessageSign Call-back function for incoming AEPP sign message request\n * Second argument of incoming call-backs contain function for accept/deny request\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @return {Object}\n */\nexport default Ae.compose(AccountMultiple, {\n init ({\n name,\n debug = false,\n ...other\n } = {}) {\n [\n 'onConnection', 'onSubscription', 'onSign', 'onDisconnect', 'onAskAccounts', 'onMessageSign'\n ].forEach(event => {\n const handler = other[event]\n if (typeof handler !== 'function') throw new ArgumentError(event, 'a function', handler)\n this[event] = handler\n })\n\n this.debug = debug\n this.rpcClients = {}\n this.name = name\n this.id = uuid()\n\n const _selectAccount = this.selectAccount.bind(this)\n const _addAccount = this.addAccount.bind(this)\n const _selectNode = this.selectNode.bind(this)\n\n // Overwrite AE methods\n this.selectAccount = (address, { condition = () => true } = {}) => {\n _selectAccount(address)\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() &&\n client.hasAccessToAccount(address) && condition(client))\n .forEach(client => client.setAccounts({\n current: { [address]: {} },\n connected: {\n ...client.accounts.current,\n ...Object.entries(client.accounts.connected)\n .filter(([k, v]) => k !== address)\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n }\n }))\n }\n this.addAccount = async (account, { select, meta = {}, condition = () => true } = {}) => {\n await _addAccount(account, { select })\n const address = await account.address()\n // Send notification 'update.address' to all Aepp which are subscribed for connected accounts\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() && condition(client))\n .forEach(client => client.setAccounts({\n current: { ...select ? { [address]: meta } : client.accounts.current },\n connected: {\n ...select ? client.accounts.current : { [address]: meta },\n ...client.accounts.connected\n }\n }))\n }\n this.selectNode = (name) => {\n _selectNode(name)\n // Send notification 'update.network' to all Aepp which connected\n Object.values(this.rpcClients)\n .filter(client => client.isConnected())\n .forEach(client => {\n client.sendMessage(\n message(METHODS.updateNetwork, {\n networkId: this.getNetworkId(),\n ...(client.info.status === RPC_STATUS.NODE_BINDED && { node: this.selectedNode })\n }), true)\n })\n }\n },\n methods: {\n /**\n * Remove specific RpcClient by ID\n * @function removeRpcClient\n * @instance\n * @rtype (id: string) => void\n * @param {String} id Client ID\n * @param {Object} [opt = {}]\n * @return {void}\n */\n removeRpcClient (id, { forceConnectionClose = false } = {}) {\n const client = this.rpcClients[id]\n if (!client) throw new UnknownRpcClientError(id)\n client.disconnect(forceConnectionClose)\n delete this.rpcClients[id]\n },\n /**\n * Add new client by AEPP connection\n * @function addRpcClient\n * @instance\n * @rtype (clientConnection: Object) => Object\n * @param {Object} clientConnection AEPP connection object\n * @return {String} Client ID\n */\n addRpcClient (clientConnection) {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid()\n this.rpcClients[id] = RpcClient({\n id,\n info: { status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST },\n connection: clientConnection,\n handlers: [handleMessage(this, id), this.onDisconnect]\n })\n return id\n },\n /**\n * Share wallet info\n * Send shareWalletInfo message to notify AEPP about wallet\n * @function shareWalletInfo\n * @instance\n * @rtype (postFn: Function) => void\n * @param {Function} postFn Send message function like `(msg) => void`\n * @return {void}\n */\n shareWalletInfo (postFn) {\n postFn({\n jsonrpc: '2.0',\n ...message(METHODS.readyToConnect, this.getWalletInfo())\n })\n },\n /**\n * Get Wallet info object\n * @function getWalletInfo\n * @instance\n * @rtype () => Object\n * @return {Object} Object with wallet information(id, name, network, ...)\n */\n getWalletInfo () {\n const runtime = getBrowserAPI(true).runtime\n return {\n id: runtime && runtime.id ? runtime.id : this.id,\n name: this.name,\n networkId: this.getNetworkId(),\n origin: window.location.origin,\n type: runtime && runtime.id ? WALLET_TYPE.extension : WALLET_TYPE.window\n }\n },\n /**\n * Get Wallet accounts\n * @function getAccounts\n * @instance\n * @rtype () => Object\n * @return {Object} Object with accounts information({ connected: Object, current: Object })\n */\n getAccounts () {\n return {\n current: this.selectedAddress ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter(a => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {})\n }\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet module\n * @module @aeternity/aepp-sdk/es/ae/wallet\n * @export Wallet\n * @example import { RpcWallet } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Chain from '../chain/node'\nimport Tx from '../tx/tx'\nimport Contract from './contract'\nimport GeneralizedAccount from '../contract/ga'\nimport WalletRpc from '../utils/aepp-wallet-communication/rpc/wallet-rpc'\nimport Oracle from './oracle'\nimport Aens from './aens'\n\n/**\n * Wallet Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/wallet\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} options.url - Node instance to connect to\n * @param {Account[]} [options.accounts] - Accounts to initialize with\n * @param {String} [options.account] - Public key of account to preselect\n * @return {Object} Wallet instance\n * @example Wallet({\n url: 'https://testnet.aeternity.io/',\n accounts: [MemoryAccount({keypair})],\n address: keypair.publicKey,\n})\n */\nexport default Ae.compose(WalletRpc, Tx, Contract, Oracle, Aens, GeneralizedAccount, Chain)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket'\nimport { EventEmitter } from 'events'\nimport JsonBig from '../utils/json-big'\nimport { pascalToSnake } from '../utils/string'\nimport { awaitingConnection, awaitingReconnection, channelOpen } from './handlers'\nimport { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from '../utils/errors'\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000\n// Close connection if pong message is not received within 5 seconds\nconst PONG_TIMEOUT_MS = 5000\n\nexport const options = new WeakMap()\nexport const status = new WeakMap()\nexport const state = new WeakMap()\nconst fsm = new WeakMap()\nconst websockets = new WeakMap()\nexport const eventEmitters = new WeakMap()\nconst messageQueue = new WeakMap()\nconst messageQueueLocked = new WeakMap()\nconst actionQueue = new WeakMap()\nconst actionQueueLocked = new WeakMap()\nconst sequence = new WeakMap()\nexport const channelId = new WeakMap()\nconst rpcCallbacks = new WeakMap()\nconst pingTimeoutId = new WeakMap()\nconst pongTimeoutId = new WeakMap()\nexport const fsmId = new WeakMap()\n\nexport function emit (channel, ...args) {\n eventEmitters.get(channel).emit(...args)\n}\n\nfunction enterState (channel, nextState) {\n if (!nextState) {\n throw new UnknownChannelStateError()\n }\n fsm.set(channel, nextState)\n if (nextState.handler.enter) {\n nextState.handler.enter(channel)\n }\n dequeueAction(channel)\n}\n\nexport function changeStatus (channel, newStatus) {\n const prevStatus = status.get(channel)\n if (newStatus !== prevStatus) {\n status.set(channel, newStatus)\n emit(channel, 'statusChanged', newStatus)\n }\n}\n\nexport function changeState (channel, newState) {\n state.set(channel, newState)\n emit(channel, 'stateChanged', newState)\n}\n\nexport function send (channel, message) {\n const { debug = false } = options.get(channel)\n if (debug) console.log('Send message: ', message)\n websockets.get(channel).send(JsonBig.stringify(message))\n}\n\nexport function enqueueAction (channel, guard, action) {\n actionQueue.set(channel, [\n ...actionQueue.get(channel) || [],\n { guard, action }\n ])\n dequeueAction(channel)\n}\n\nasync function dequeueAction (channel) {\n const locked = actionQueueLocked.get(channel)\n const queue = actionQueue.get(channel) || []\n if (locked || !queue.length) {\n return\n }\n const state = fsm.get(channel)\n const index = queue.findIndex(item => item.guard(channel, state))\n if (index === -1) {\n return\n }\n actionQueue.set(channel, queue.filter((_, i) => index !== i))\n actionQueueLocked.set(channel, true)\n const nextState = await Promise.resolve(queue[index].action(channel, state))\n actionQueueLocked.set(channel, false)\n enterState(channel, nextState)\n}\n\nasync function handleMessage (channel, message) {\n const { handler, state } = fsm.get(channel)\n enterState(channel, await Promise.resolve(handler(channel, message, state)))\n}\n\nasync function dequeueMessage (channel) {\n if (messageQueueLocked.get(channel)) return\n const messages = messageQueue.get(channel)\n if (!messages.length) return\n messageQueueLocked.set(channel, true)\n while (messages.length) {\n const message = messages.shift()\n try {\n await handleMessage(channel, message)\n } catch (error) {\n console.error('Error handling incoming message:')\n console.error(message)\n console.error(error)\n }\n }\n messageQueueLocked.set(channel, false)\n}\n\nfunction ping (channel) {\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n pingTimeoutId.set(channel, setTimeout(() => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.system',\n params: {\n action: 'ping'\n }\n })\n pongTimeoutId.set(channel, setTimeout(() => {\n disconnect(channel)\n emit(channel, 'error', new ChannelPingTimedOutError())\n }, PONG_TIMEOUT_MS))\n }, PING_TIMEOUT_MS))\n}\n\nfunction onMessage (channel, data) {\n const message = JsonBig.parse(data)\n const { debug = false } = options.get(channel)\n if (debug) console.log('Receive message: ', message)\n if (message.id) {\n const callback = rpcCallbacks.get(channel).get(message.id)\n try {\n callback(message)\n } finally {\n rpcCallbacks.get(channel).delete(message.id)\n }\n return\n }\n if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message)\n return\n }\n if (message.method === 'channels.system.pong') {\n if (\n (message.params.channel_id === channelId.get(channel)) ||\n // Skip channelId check if channelId is not known yet\n (channelId.get(channel) == null)\n ) {\n ping(channel)\n }\n return\n }\n messageQueue.get(channel).push(message)\n dequeueMessage(channel)\n}\n\nexport function call (channel, method, params) {\n return new Promise((resolve, reject) => {\n const id = sequence.set(channel, sequence.get(channel) + 1).get(channel)\n rpcCallbacks.get(channel).set(id, (message) => {\n if (message.result) return resolve(message.result)\n if (message.error) {\n const [{ message: details } = {}] = message.error.data || []\n return reject(new ChannelCallError(message.error.message + (details ? `: ${details}` : '')))\n }\n })\n send(channel, { jsonrpc: '2.0', method, id, params })\n })\n}\n\nexport function disconnect (channel) {\n websockets.get(channel).close()\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n}\n\nexport async function initialize (channel, { url, ...channelOptions }) {\n options.set(channel, channelOptions)\n fsm.set(channel, {\n handler: channelOptions.existingFsmId ? awaitingReconnection : awaitingConnection\n })\n eventEmitters.set(channel, new EventEmitter())\n sequence.set(channel, 0)\n rpcCallbacks.set(channel, new Map())\n messageQueue.set(channel, [])\n\n const wsUrl = new URL(url)\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value))\n wsUrl.searchParams.set('protocol', 'json-rpc')\n changeStatus(channel, 'connecting')\n const ws = new W3CWebSocket(wsUrl.toString())\n await new Promise((resolve, reject) => Object.assign(ws, {\n onerror: reject,\n onopen: () => {\n resolve()\n changeStatus(channel, 'connected')\n if (channelOptions.reconnectTx) {\n enterState(channel, { handler: channelOpen })\n setTimeout(async () => changeState(channel,\n (await call(channel, 'channels.get.offchain_state', {})).signed_tx\n ))\n }\n ping(channel)\n },\n onclose: () => {\n changeStatus(channel, 'disconnected')\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n },\n onmessage: ({ data }) => onMessage(channel, data)\n }))\n websockets.set(channel, ws)\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { generateKeyPair, encodeContractAddress } from '../utils/crypto'\nimport {\n options,\n changeStatus,\n changeState,\n call,\n send,\n emit,\n channelId,\n disconnect,\n fsmId\n} from './internal'\nimport { unpackTx, buildTx } from '../tx/builder'\nimport { encode } from '../tx/builder/helpers'\nimport {\n IllegalArgumentError,\n InsufficientBalanceError,\n ChannelConnectionError,\n UnexpectedChannelMessageError\n} from '../utils/errors'\n\nasync function appendSignature (tx, signFn) {\n const { signatures, encodedTx } = unpackTx(tx).tx\n const result = await signFn(encode(encodedTx.rlpEncoded, 'tx'))\n if (typeof result === 'string') {\n const { tx: signedTx, txType } = unpackTx(result)\n return buildTx({\n signatures: signatures.concat(signedTx.signatures),\n encodedTx: signedTx.encodedTx.rlpEncoded\n }, txType).tx\n }\n return result\n}\n\nfunction handleUnexpectedMessage (channel, message, state) {\n if (state && state.reject) {\n state.reject(Object.assign(\n new UnexpectedChannelMessageError(`Unexpected message received:\\n\\n${JSON.stringify(message)}`),\n { wsMessage: message }\n ))\n }\n return { handler: channelOpen }\n}\n\nexport function awaitingConnection (channel, message, state) {\n if (message.method === 'channels.info') {\n if (['channel_accept', 'funding_created'].includes(message.params.data.event)) {\n changeStatus(channel, {\n channel_accept: 'accepted',\n funding_created: 'halfSigned'\n }[message.params.data.event])\n return { handler: awaitingChannelCreateTx }\n }\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation }\n }\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id)\n return { handler: awaitingConnection }\n }\n return { handler: awaitingConnection }\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new ChannelConnectionError(message.payload.message))\n return { handler: channelClosed }\n }\n}\n\nexport async function awaitingReconnection (channel, message, state) {\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id)\n changeState(channel, (await call(channel, 'channels.get.offchain_state', {})).signed_tx)\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingChannelCreateTx (channel, message, state) {\n const tag = {\n initiator: 'initiator_sign',\n responder: 'responder_sign'\n }[options.get(channel).role]\n if (message.method === `channels.sign.${tag}`) {\n if (message.params.data.tx) {\n const signedTx = await options.get(channel).sign(tag, message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })\n return { handler: awaitingOnChainTx }\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx, tx => options.get(channel).sign(tag, tx)\n )\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })\n return { handler: awaitingOnChainTx }\n }\n}\n\nexport function awaitingOnChainTx (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (\n message.params.data.info === 'funding_signed' &&\n options.get(channel).role === 'initiator'\n ) {\n return { handler: awaitingBlockInclusion }\n }\n if (\n message.params.data.info === 'funding_created' &&\n options.get(channel).role === 'responder'\n ) {\n return { handler: awaitingBlockInclusion }\n }\n }\n if (\n message.method === 'channels.info' &&\n message.params.data.event === 'funding_signed' &&\n options.get(channel).role === 'initiator'\n ) {\n channelId.set(channel, message.params.channel_id)\n changeStatus(channel, 'signed')\n return { handler: awaitingOnChainTx }\n }\n}\n\nexport function awaitingBlockInclusion (channel, message, state) {\n if (message.method === 'channels.info') {\n const handler = {\n funding_created: awaitingBlockInclusion,\n own_funding_locked: awaitingBlockInclusion,\n funding_locked: awaitingOpenConfirmation\n }[message.params.data.event]\n if (handler) {\n return { handler }\n }\n }\n if (message.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n return { handler: awaitingBlockInclusion }\n }\n}\n\nexport function awaitingOpenConfirmation (channel, message, state) {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channelId.set(channel, message.params.channel_id)\n return { handler: awaitingInitialState }\n }\n}\n\nexport function awaitingInitialState (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n return { handler: channelOpen }\n }\n}\n\nexport async function channelOpen (channel, message, state) {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest }\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, message.params.data.event)\n return { handler: channelOpen }\n case 'fsm_up':\n fsmId.set(channel, message.params.data.fsm_id)\n return { handler: channelOpen }\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen }\n case 'closing':\n changeStatus(channel, 'closing')\n return { handler: channelOpen }\n case 'closed_confirmed':\n changeStatus(channel, 'closed')\n return { handler: channelClosed }\n case 'died':\n changeStatus(channel, 'died')\n return { handler: channelClosed }\n case 'shutdown':\n return { handler: channelOpen }\n }\n break\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n return { handler: channelOpen }\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen }\n case 'channels.update':\n changeState(channel, message.params.data.state)\n return { handler: channelOpen }\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state)\n }\n}\nchannelOpen.enter = (channel) => {\n changeStatus(channel, 'open')\n}\n\nexport async function awaitingOffChainTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingOffChainUpdate, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingOffChainUpdate, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingOffChainTx, state }\n }\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message))\n return { handler: channelOpen }\n }\n if (message.error) {\n const { data = [] } = message.error\n if (data.find(i => i.code === 1001)) {\n state.reject(new InsufficientBalanceError('Insufficient balance'))\n } else if (data.find(i => i.code === 1002)) {\n state.reject(new IllegalArgumentError('Amount cannot be negative'))\n } else {\n state.reject(new ChannelConnectionError(message.error.message))\n }\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingOffChainUpdate (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n if (message.error) {\n state.reject(new ChannelConnectionError(message.error.message))\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingTxSignRequest (channel, message, state) {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) || []\n if (tag) {\n if (message.params.data.tx) {\n const signedTx = await options.get(channel).sign(tag, message.params.data.tx, {\n updates: message.params.data.updates\n })\n if (signedTx) {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })\n return { handler: channelOpen }\n }\n } else {\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n options.get(channel).sign(tag, tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })\n return { handler: channelOpen }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { error: signedTx } })\n return { handler: awaitingUpdateConflict, state }\n }\n }\n // soft-reject via competing update\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: {\n from: generateKeyPair().publicKey,\n to: generateKeyPair().publicKey,\n amount: 1\n }\n })\n return { handler: awaitingUpdateConflict, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingUpdateConflict (channel, message, state) {\n if (message.error) {\n return { handler: awaitingUpdateConflict, state }\n }\n if (message.method === 'channels.conflict') {\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingShutdownTx (channel, message, state) {\n if (message.method === 'channels.sign.shutdown_sign') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } })\n return { handler: awaitingShutdownOnChainTx, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } })\n return { handler: awaitingShutdownOnChainTx, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingShutdownOnChainTx (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingLeave (channel, message, state) {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state })\n disconnect(channel)\n return { handler: channelClosed }\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message))\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingWithdrawTx (channel, message, state) {\n if (message.method === 'channels.sign.withdraw_tx') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { error: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingWithdrawCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data.tx)\n }\n return { handler: awaitingWithdrawCompletion, state }\n }\n if (message.method === 'channels.info') {\n if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {\n const callback = {\n own_withdraw_locked: state.onOwnWithdrawLocked,\n withdraw_locked: state.onWithdrawLocked\n }[message.params.data.event]\n if (callback) {\n callback()\n }\n return { handler: awaitingWithdrawCompletion, state }\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingDepositTx (channel, message, state) {\n if (message.method === 'channels.sign.deposit_tx') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { error: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingDepositCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data.tx)\n }\n return { handler: awaitingDepositCompletion, state }\n }\n if (message.method === 'channels.info') {\n if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {\n const callback = {\n own_deposit_locked: state.onOwnDepositLocked,\n deposit_locked: state.onDepositLocked\n }[message.params.data.event]\n if (callback) {\n callback()\n }\n return { handler: awaitingDepositCompletion, state }\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingNewContractTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingNewContractCompletion (channel, message, state) {\n if (message.method === 'channels.update') {\n const { round } = unpackTx(message.params.data.state).tx.encodedTx.tx\n const owner = options.get(channel)[{\n initiator: 'initiatorId',\n responder: 'responderId'\n }[options.get(channel).role]]\n changeState(channel, message.params.data.state)\n state.resolve({\n accepted: true,\n address: encodeContractAddress(owner, round),\n signedTx: message.params.data.state\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingCallContractUpdateTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(\n message.params.data.tx, { updates: message.params.data.updates }\n )\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n tx => state.sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingCallContractForceProgressUpdate (channel, message, state) {\n if (message.method === 'channels.sign.force_progress_tx') {\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n state.sign(tx, { updates: message.params.data.updates })\n )\n send(channel, { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } })\n return { handler: awaitingForceProgressCompletion, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingForceProgressCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data)\n }\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n state.resolve({ accepted: true, tx: message.params.data.tx })\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingCallContractCompletion (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingCallsPruned (channels, message, state) {\n if (message.method === 'channels.calls_pruned.reply') {\n state.resolve()\n return { handler: channelOpen }\n }\n state.reject(new UnexpectedChannelMessageError('Unexpected message received'))\n return { handler: channelClosed }\n}\n\nexport function channelClosed (channel, message, state) {\n if (!state) return { handler: channelClosed }\n if (message.params.data.event === 'closing') return { handler: channelClosed, state }\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx\n return { handler: channelClosed, state }\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx)\n return { handler: channelClosed }\n }\n return { handler: channelClosed, state }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Channel module\n * @module @aeternity/aepp-sdk/es/channel/index\n * @export Channel\n * @example import { Channel } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from '../utils/async-init'\nimport { snakeToPascal } from '../utils/string'\nimport { buildTx, unpackTx } from '../tx/builder'\nimport { TX_TYPE } from '../tx/builder/schema'\nimport * as handlers from './handlers'\nimport {\n eventEmitters,\n status as channelStatus,\n state as channelState,\n initialize,\n enqueueAction,\n send,\n channelId,\n call,\n disconnect as channelDisconnect,\n fsmId as channelFsmId\n} from './internal'\n\nfunction snakeToPascalObjKeys (obj) {\n return Object.entries(obj).reduce((result, [key, val]) => ({\n ...result,\n [snakeToPascal(key)]: val\n }), {})\n}\n\n/**\n * Register event listener function\n *\n * Possible events:\n *\n * - \"error\"\n * - \"onChainTx\"\n * - \"ownWithdrawLocked\"\n * - \"withdrawLocked\"\n * - \"ownDepositLocked\"\n * - \"depositLocked\"\n *\n * @param {String} event - Event name\n * @param {Function} callback - Callback function\n */\nfunction on (event, callback) {\n eventEmitters.get(this).on(event, callback)\n}\n\n/**\n * Remove event listener function\n *\n * @param {String} event - Event name\n * @param {Function} callback - Callback function\n */\nfunction off (event, callback) {\n eventEmitters.get(this).removeListener(event, callback)\n}\n\n/**\n * Close the connection\n */\nfunction disconnect () {\n return channelDisconnect(this)\n}\n\n/**\n * Get current status\n *\n * @return {String}\n */\nfunction status () {\n return channelStatus.get(this)\n}\n\n/**\n * Get current state\n *\n * @return {Promise<Object>}\n */\nasync function state () {\n return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}))\n}\n\n/**\n * Get current round\n *\n * If round cannot be determined (for example when channel has not been opened)\n * it will return `null`.\n *\n * @return {Number}\n */\nfunction round () {\n const state = channelState.get(this)\n if (!state) {\n return null\n }\n const { txType, tx } = unpackTx(channelState.get(this)).tx.encodedTx\n switch (txType) {\n case TX_TYPE.channelCreate:\n return 1\n case TX_TYPE.channelOffChain:\n case TX_TYPE.channelWithdraw:\n case TX_TYPE.channelDeposit:\n return parseInt(tx.round, 10)\n default:\n return null\n }\n}\n\n/**\n * Get channel id\n *\n * @return {String}\n */\nfunction id () {\n return channelId.get(this)\n}\n\n/**\n * Get channel's fsm id\n *\n * @return {String}\n */\nfunction fsmId () {\n return channelFsmId.get(this)\n}\n\n/**\n * Trigger a transfer update\n *\n * The transfer update is moving tokens from one channel account to another.\n * The update is a change to be applied on top of the latest state.\n *\n * Sender and receiver are the channel parties. Both the initiator and responder\n * can take those roles. Any public key outside of the channel is considered invalid.\n *\n * @param {String} from - Sender's public address\n * @param {String} to - Receiver's public address\n * @param {Number} amount - Transaction amount\n * @param {Function} sign - Function which verifies and signs offchain transaction\n * @param {Array<String>} metadata\n * @return {Promise<Object>}\n * @example channel.update(\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * 10,\n * async (tx) => await account.signTransaction(tx)\n * ).then(({ accepted, signedTx }) =>\n * if (accepted) {\n * console.log('Update has been accepted')\n * }\n * )\n */\nfunction update (from, to, amount, sign, metadata) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: { from, to, amount, meta: metadata }\n })\n return {\n handler: handlers.awaitingOffChainTx,\n state: {\n resolve,\n reject,\n sign\n }\n }\n }\n )\n })\n}\n\n/**\n * Get proof of inclusion\n *\n * If a certain address of an account or a contract is not found\n * in the state tree - the response is an error.\n *\n * @param {Object} addresses\n * @param {Array<String>} [addresses.accounts] - List of account addresses to include in poi\n * @param {Array<String>} [addresses.contracts] - List of contract addresses to include in poi\n * @return {Promise<String>}\n * @example channel.poi({\n * accounts: [\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E'\n * ],\n * contracts: ['ct_2dCUAWYZdrWfACz3a2faJeKVTVrfDYxCQHCqAt5zM15f3u2UfA']\n * }).then(poi => console.log(poi))\n */\nasync function poi ({ accounts, contracts }) {\n return (await call(this, 'channels.get.poi', { accounts, contracts })).poi\n}\n\n/**\n * Get balances\n *\n * The accounts paramcontains a list of addresses to fetch balances of.\n * Those can be either account balances or a contract ones, encoded as an account addresses.\n *\n * If a certain account address had not being found in the state tree - it is simply\n * skipped in the response.\n *\n * @param {Array<String>} accounts - List of addresses to fetch balances from\n * @return {Promise<Object>}\n * @example channel.balances([\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E'\n * 'ct_2dCUAWYZdrWfACz3a2faJeKVTVrfDYxCQHCqAt5zM15f3u2UfA'\n * ]).then(balances =>\n * console.log(balances['ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH'])\n * )\n */\nasync function balances (accounts) {\n return Object.fromEntries(\n (await call(this, 'channels.get.balances', { accounts }))\n .map(item => [item.account, item.balance])\n )\n}\n\n/**\n * Leave channel\n *\n * It is possible to leave a channel and then later reestablish the channel\n * off-chain state and continue operation. When a leave method is called,\n * the channel fsm passes it on to the peer fsm, reports the current mutually\n * signed state and then terminates.\n *\n * The channel can be reestablished by instantiating another Channel instance\n * with two extra params: existingChannelId and offchainTx (returned from leave\n * method as channelId and signedTx respectively).\n *\n * @return {Promise<Object>}\n * @example channel.leave().then(({ channelId, signedTx }) => {\n * console.log(channelId)\n * console.log(signedTx)\n * })\n */\nfunction leave () {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.leave', params: {} })\n return {\n handler: handlers.awaitingLeave,\n state: { resolve, reject }\n }\n })\n })\n}\n\n/**\n * Trigger mutual close\n *\n * At any moment after the channel is opened, a closing procedure can be triggered.\n * This can be done by either of the parties. The process is similar to the off-chain updates.\n *\n * @param {Function} sign - Function which verifies and signs mutual close transaction\n * @return {Promise<String>}\n * @example channel.shutdown(\n * async (tx) => await account.signTransaction(tx)\n * ).then(tx => console.log('on_chain_tx', tx))\n */\nfunction shutdown (sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown', params: {} })\n return {\n handler: handlers.awaitingShutdownTx,\n state: {\n sign,\n resolve,\n reject\n }\n }\n }\n )\n })\n}\n\n/**\n * Withdraw tokens from the channel\n *\n * After the channel had been opened any of the participants can initiate a withdrawal.\n * The process closely resembles the update. The most notable difference is that the\n * transaction has been co-signed: it is channel_withdraw_tx and after the procedure\n * is finished - it is being posted on-chain.\n *\n * Any of the participants can initiate a withdrawal. The only requirements are:\n *\n * - Channel is already opened\n * - No off-chain update/deposit/withdrawal is currently being performed\n * - Channel is not being closed or in a solo closing state\n * - The withdrawal amount must be equal to or greater than zero, and cannot exceed\n * the available balance on the channel (minus the channel_reserve)\n *\n * After the other party had signed the withdraw transaction, the transaction is posted\n * on-chain and onOnChainTx callback is called with on-chain transaction as first argument.\n * After computing transaction hash it can be tracked on the chain: entering the mempool,\n * block inclusion and a number of confirmations.\n *\n * After the minimum_depth block confirmations onOwnWithdrawLocked callback is called\n * (without any arguments).\n *\n * When the other party had confirmed that the block height needed is reached\n * onWithdrawLocked callback is called (without any arguments).\n *\n * @param {Number} amount - Amount of tokens to withdraw\n * @param {Function} sign - Function which verifies and signs withdraw transaction\n * @param {Object} [callbacks]\n * @param {Function} [callbacks.onOnChainTx] - Called when withdraw transaction has been posted\n * on chain\n * @param {Function} [callbacks.onOwnWithdrawLocked]\n * @param {Function} [callbacks.onWithdrawLocked]\n * @return {Promise<Object>}\n * @example channel.withdraw(\n * 100,\n * async (tx) => await account.signTransaction(tx),\n * { onOnChainTx: (tx) => console.log('on_chain_tx', tx) }\n * ).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Withdrawal has been accepted')\n * } else {\n * console.log('Withdrawal has been rejected')\n * }\n * })\n */\nfunction withdraw (amount, sign, { onOnChainTx, onOwnWithdrawLocked, onWithdrawLocked } = {}) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw', params: { amount } })\n return {\n handler: handlers.awaitingWithdrawTx,\n state: {\n sign,\n resolve,\n reject,\n onOnChainTx,\n onOwnWithdrawLocked,\n onWithdrawLocked\n }\n }\n }\n )\n })\n}\n\n/**\n * Deposit tokens into the channel\n *\n * After the channel had been opened any of the participants can initiate a deposit.\n * The process closely resembles the update. The most notable difference is that the\n * transaction has been co-signed: it is channel_deposit_tx and after the procedure\n * is finished - it is being posted on-chain.\n *\n * Any of the participants can initiate a deposit. The only requirements are:\n *\n * - Channel is already opened\n * - No off-chain update/deposit/withdrawal is currently being performed\n * - Channel is not being closed or in a solo closing state\n * - The deposit amount must be equal to or greater than zero, and cannot exceed\n * the available balance on the channel (minus the channel_reserve)\n *\n * After the other party had signed the deposit transaction, the transaction is posted\n * on-chain and onOnChainTx callback is called with on-chain transaction as first argument.\n * After computing transaction hash it can be tracked on the chain: entering the mempool,\n * block inclusion and a number of confirmations.\n *\n * After the minimum_depth block confirmations onOwnDepositLocked callback is called\n * (without any arguments).\n *\n * When the other party had confirmed that the block height needed is reached\n * onDepositLocked callback is called (without any arguments).\n *\n * @param {Number} amount - Amount of tokens to deposit\n * @param {Function} sign - Function which verifies and signs deposit transaction\n * @param {Object} [callbacks]\n * @param {Function} [callbacks.onOnChainTx] - Called when deposit transaction has been posted\n * on chain\n * @param {Function} [callbacks.onOwnDepositLocked]\n * @param {Function} [callbacks.onDepositLocked]\n * @return {Promise<Object>}\n * @example channel.deposit(\n * 100,\n * async (tx) => await account.signTransaction(tx),\n * { onOnChainTx: (tx) => console.log('on_chain_tx', tx) }\n * ).then(({ accepted, state }) => {\n * if (accepted) {\n * console.log('Deposit has been accepted')\n * console.log('The new state is:', state)\n * } else {\n * console.log('Deposit has been rejected')\n * }\n * })\n */\nfunction deposit (amount, sign, { onOnChainTx, onOwnDepositLocked, onDepositLocked } = {}) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit', params: { amount } })\n return {\n handler: handlers.awaitingDepositTx,\n state: {\n sign,\n resolve,\n reject,\n onOnChainTx,\n onOwnDepositLocked,\n onDepositLocked\n }\n }\n }\n )\n })\n}\n\n/**\n * Trigger create contract update\n *\n * The create contract update is creating a contract inside the channel's internal state tree.\n * The update is a change to be applied on top of the latest state.\n *\n * That would create a contract with the poster being the owner of it. Poster commits initially\n * a deposit amount of tokens to the new contract.\n *\n * @param {Object} options\n * @param {String} options.code - Api encoded compiled AEVM byte code\n * @param {String} options.callData - Api encoded compiled AEVM call data for the code\n * @param {Number} options.deposit - Initial amount the owner of the contract commits to it\n * @param {Number} options.vmVersion - Version of the Virtual Machine\n * @param {Number} options.abiVersion - Version of the Application Binary Interface\n * @param {Function} sign - Function which verifies and signs create contract transaction\n * @return {Promise<Object>}\n * @example channel.createContract({\n * code: 'cb_HKtpipK4aCgYb17wZ...',\n * callData: 'cb_1111111111111111...',\n * deposit: 10,\n * vmVersion: 3,\n * abiVersion: 1\n * }).then(({ accepted, signedTx, address }) => {\n * if (accepted) {\n * console.log('New contract has been created')\n * console.log('Contract address:', address)\n * } else {\n * console.log('New contract has been rejected')\n * }\n * })\n */\nfunction createContract ({ code, callData, deposit, vmVersion, abiVersion }, sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new_contract',\n params: {\n code,\n call_data: callData,\n deposit,\n vm_version: vmVersion,\n abi_version: abiVersion\n }\n })\n return {\n handler: handlers.awaitingNewContractTx,\n state: {\n sign,\n resolve,\n reject\n }\n }\n }\n )\n })\n}\n\n/**\n * Trigger call a contract update\n *\n * The call contract update is calling a preexisting contract inside the channel's\n * internal state tree. The update is a change to be applied on top of the latest state.\n *\n * That would call a contract with the poster being the caller of it. Poster commits\n * an amount of tokens to the contract.\n *\n * The call would also create a call object inside the channel state tree. It contains\n * the result of the contract call.\n *\n * It is worth mentioning that the gas is not consumed, because this is an off-chain\n * contract call. It would be consumed if it were a on-chain one. This could happen\n * if a call with a similar computation amount is to be forced on-chain.\n *\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @param {Function} sign - Function which verifies and signs contract call transaction\n * @return {Promise<Object>}\n * @example channel.callContract({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1\n * }).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Contract called succesfully')\n * } else {\n * console.log('Contract call has been rejected')\n * }\n * })\n */\nfunction callContract ({ amount, callData, contract, abiVersion }, sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.call_contract',\n params: {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion\n }\n })\n return {\n handler: handlers.awaitingCallContractUpdateTx,\n state: { resolve, reject, sign }\n }\n }\n )\n })\n}\n\n/**\n * Trigger a force progress contract call\n * This call is going on-chain\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @param {Number} [options.gasPrice=1000000000] - Gas price\n * @param {Number} [options.gas=1000000] - Gas limit\n * @param {Function} sign - Function which verifies and signs contract force progress transaction\n * @param {{ onOnChainTxL: Function }} callbacks\n * @return {Promise<Object>}\n * @example channel.forceProgress({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1,\n * gasPrice: 1000005554\n * }).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Contract force progress call successful')\n * } else {\n * console.log('Contract force progress call has been rejected')\n * }\n * })\n */\nfunction forceProgress (\n { amount, callData, contract, abiVersion, gas = 1000000, gasPrice = 1000000000, nonce },\n sign,\n { onOnChainTx } = {}\n) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.force_progress',\n params: {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion,\n gas_price: gasPrice,\n gas\n }\n })\n return {\n handler: handlers.awaitingCallContractForceProgressUpdate,\n state: { resolve, reject, sign, onOnChainTx }\n }\n }\n )\n })\n}\n\n/**\n * Call contract using dry-run\n *\n * In order to get the result of a potential contract call, one might need to\n * dry-run a contract call. It takes the exact same arguments as a call would\n * and returns the call object.\n *\n * The call is executed in the channel's state but it does not impact the state\n * whatsoever. It uses as an environment the latest channel's state and the current\n * top of the blockchain as seen by the node.\n *\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @return {Promise<Object>}\n * @example channel.callContractStatic({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1\n * }).then(({ returnValue, gasUsed }) => {\n * console.log('Returned value:', returnValue)\n * console.log('Gas used:', gasUsed)\n * })\n */\nasync function callContractStatic ({ amount, callData, contract, abiVersion }) {\n return snakeToPascalObjKeys(await call(this, 'channels.dry_run.call_contract', {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion\n }))\n}\n\n/**\n * Get contract call result\n *\n * The combination of a caller, contract and a round of execution determines the\n * contract call. Providing an incorrect set of those results in an error response.\n *\n * @param {Object} options\n * @param {String} [options.caller] - Address of contract caller\n * @param {String} [options.contract] - Address of the contract\n * @param {Number} [options.round] - Round when contract was called\n * @return {Promise<Object>}\n * @example channel.getContractCall({\n * caller: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * round: 3\n * }).then(({ returnType, returnValue }) => {\n * if (returnType === 'ok') console.log(returnValue)\n * })\n */\nasync function getContractCall ({ caller, contract, round }) {\n return snakeToPascalObjKeys(\n await call(this, 'channels.get.contract_call', {\n caller_id: caller,\n contract_id: contract,\n round\n })\n )\n}\n\n/**\n * Get contract latest state\n *\n * @param {String} contract - Address of the contract\n * @return {Promise<Object>}\n * @example channel.getContractState(\n * 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa'\n * ).then(({ contract }) => {\n * console.log('deposit:', contract.deposit)\n * })\n */\nasync function getContractState (contract) {\n const result = await call(this, 'channels.get.contract', { pubkey: contract })\n return snakeToPascalObjKeys({\n ...result,\n contract: snakeToPascalObjKeys(result.contract)\n })\n}\n\n/**\n * Clean up all locally stored contract calls\n *\n * Contract calls are kept locally in order for the participant to be able to look them up.\n * They consume memory and in order for the participant to free it - one can prune all messages.\n * This cleans up all locally stored contract calls and those will no longer be available for\n * fetching and inspection.\n *\n * @return {Promise}\n */\nfunction cleanContractCalls () {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.clean_contract_calls',\n params: {}\n })\n return {\n handler: handlers.awaitingCallsPruned,\n state: { resolve, reject }\n }\n }\n )\n })\n}\n\n/**\n * Send generic message\n *\n * If message is an object it will be serialized into JSON string\n * before sending.\n *\n * If there is ongoing update that has not yet been finished the message\n * will be sent after that update is finalized.\n *\n * @param {String|Object} message\n * @param {String} recipient - Address of the recipient\n * @example channel.sendMessage(\n * 'hello world',\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH'\n * )\n */\nfunction sendMessage (message, recipient) {\n let info = message\n if (typeof message === 'object') {\n info = JSON.stringify(message)\n }\n const doSend = (channel) => send(channel, {\n jsonrpc: '2.0',\n method: 'channels.message',\n params: { info, to: recipient }\n })\n if (this.status() === 'connecting') {\n const onStatusChanged = (status) => {\n if (status !== 'connecting') {\n // For some reason we can't immediately send a message when connection is\n // established. Thus we wait 500ms which seems to work.\n setTimeout(() => doSend(this), 500)\n this.off('statusChanged', onStatusChanged)\n }\n }\n this.on('statusChanged', onStatusChanged)\n } else {\n doSend(this)\n }\n}\n\nasync function reconnect (options, txParams) {\n const { sign } = options\n\n return Channel({\n ...options,\n reconnectTx: await sign('reconnect', buildTx(txParams, TX_TYPE.channelReconnect).tx)\n })\n}\n\n/**\n * Channel\n *\n * @function\n * @alias module:@aeternity/aepp-sdk/es/channel/index\n * @rtype Channel\n * @param {Object} options - Channel params\n * @param {String} options.url - Channel url (for example: \"ws://localhost:3001\")\n * @param {String} options.role - Participant role (\"initiator\" or \"responder\")\n * @param {String} options.initiatorId - Initiator's public key\n * @param {String} options.responderId - Responder's public key\n * @param {Number} options.pushAmount - Initial deposit in favour of the responder by the initiator\n * @param {Number} options.initiatorAmount - Amount of tokens the initiator has committed to\n * the channel\n * @param {Number} options.responderAmount - Amount of tokens the responder has committed to\n * the channel\n * @param {Number} options.channelReserve - The minimum amount both peers need to maintain\n * @param {Number} [options.ttl] - Minimum block height to include the channel_create_tx\n * @param {String} options.host - Host of the responder's node\n * @param {Number} options.port - The port of the responders node\n * @param {Number} options.lockPeriod - Amount of blocks for disputing a solo close\n * @param {Number} [options.existingChannelId] - Existing channel id (required if reestablishing a\n * channel)\n * @param {Number} [options.offchainTx] - Offchain transaction (required if reestablishing\n * a channel)\n * @param {Number} [options.timeoutIdle] - The time waiting for a new event to be initiated\n * (default: 600000)\n * @param {Number} [options.timeoutFundingCreate] - The time waiting for the initiator to produce\n * the create channel transaction after the noise session had been established (default: 120000)\n * @param {Number} [options.timeoutFundingSign] - The time frame the other client has to sign an\n * off-chain update after our client had initiated and signed it. This applies only for double\n * signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.\n * (default: 120000)\n * @param {Number} [options.timeoutFundingLock] - The time frame the other client has to confirm an\n * on-chain transaction reaching maturity (passing minimum depth) after the local node has detected\n * this. This applies only for double signed on-chain intended updates: channel create transaction,\n * deposit, withdrawal and etc. (default: 360000)\n * @param {Number} [options.timeoutSign] - The time frame the client has to return a signed\n * off-chain update or to decline it. This applies for all off-chain updates (default: 500000)\n * @param {Number} [options.timeoutAccept] - The time frame the other client has to react to an\n * event. This applies for all off-chain updates that are not meant to land on-chain, as well as\n * some special cases: opening a noise connection, mutual closing acknowledgement and\n * reestablishing an existing channel (default: 120000)\n * @param {Number} [options.timeoutInitialized] - the time frame the responder has to accept an\n * incoming noise session. Applicable only for initiator (default: timeout_accept's value)\n * @param {Number} [options.timeoutAwaitingOpen] - The time frame the initiator has to start an\n * outgoing noise session to the responder's node. Applicable only for responder (default:\n * timeout_idle's value)\n * @param {Number} [options.debug=false] - Log websocket communication\n * @param {Function} options.sign - Function which verifies and signs transactions\n * @return {Promise<Object>} Channel instance\n * @example Channel({\n * url: 'ws://localhost:3001',\n * role: 'initiator'\n * initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * initiatorAmount: 1e18,\n * responderAmount: 1e18,\n * pushAmount: 0,\n * channelReserve: 0,\n * ttl: 1000,\n * host: 'localhost',\n * port: 3002,\n * lockPeriod: 10,\n * async sign (tag, tx) => await account.signTransaction(tx)\n * })\n */\nconst Channel = AsyncInit.compose({\n async init (options) {\n initialize(this, options)\n },\n methods: {\n on,\n off,\n status,\n state,\n round,\n id,\n fsmId,\n update,\n poi,\n balances,\n leave,\n shutdown,\n sendMessage,\n withdraw,\n deposit,\n createContract,\n callContract,\n callContractStatic,\n getContractCall,\n getContractState,\n disconnect,\n cleanContractCalls,\n forceProgress\n },\n statics: {\n reconnect\n }\n})\n\nexport default Channel\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Universal module\n * @module @aeternity/aepp-sdk/es/ae/universal\n * @export Universal\n * @example import { Universal } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Chain from '../chain/node'\nimport Aens from './aens'\nimport Transaction from '../tx/tx'\nimport Oracle from './oracle'\nimport GeneralizedAccount from '../contract/ga'\nimport AccountMultiple from '../account/multiple'\nimport Contract from './contract'\n\n/**\n * Universal Stamp\n *\n * Universal provides Ae base functionality with Contract and Aens\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/universal\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Universal instance\n */\nexport default Ae.compose(\n AccountMultiple, Chain, Transaction, Aens, Contract, Oracle, GeneralizedAccount\n)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Content Script Bridge module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @export ContentScriptBridge\n * @example\n * import ContentScriptBridge\n * from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge\n */\nimport stampit from '@stamp/it'\nimport { UnsupportedPlatformError, MissingParamError } from '../errors'\n\n/**\n * Start message proxy\n * @function run\n * @instance\n * @return {void}\n */\nfunction run () {\n const allowCrossOrigin = this.allowCrossOrigin\n // Connect to extension using runtime\n this.extConnection.connect((msg) => {\n this.pageConnection.sendMessage(msg)\n })\n // Connect to page using window.postMessage\n this.pageConnection.connect((msg, origin, source) => {\n if (!allowCrossOrigin && source !== window) return\n this.extConnection.sendMessage(msg)\n })\n}\n\n/**\n * Stop message proxy\n * @function stop\n * @instance\n * @return {void}\n */\nfunction stop () {\n this.extConnection.disconnect()\n this.pageConnection.disconnect()\n}\n\n/**\n * ContentScriptBridge stamp\n * Provide functionality to easly redirect messages from page to extension and from extension to\n * page through content script\n * Using Runtime(Extension) and WindowPostMessage(Web-Page) connections\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @rtype Stamp\n * @param {Object} params - Initializer object\n * @param {Object} params.pageConnection - Page connection object\n * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/\n * browser-window-message)\n * @param {Object} params.extConnection - Extension connection object\n * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)\n * @return {Object}\n */\nexport default stampit({\n init ({ pageConnection, extConnection, allowCrossOrigin = false }) {\n if (!window) throw new UnsupportedPlatformError('Window object not found, you can run bridge only in browser')\n if (!pageConnection) throw new MissingParamError('pageConnection required')\n if (!extConnection) throw new MissingParamError('extConnection required')\n this.allowCrossOrigin = allowCrossOrigin\n this.pageConnection = pageConnection\n this.extConnection = extConnection\n },\n methods: { run, stop }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Connection base module\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @export WalletConnection\n * @example\n * import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'\n */\n\nimport { required } from '@stamp/required'\n\n/**\n * Basic Wallet Connection\n *\n * This stamp include interface for wallet connection functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} WalletConnection instance\n */\nexport default required({\n methods: {\n connect: required,\n disconnect: required,\n sendMessage: required,\n isConnected: required\n }\n})\n\n/**\n * Connect\n * @function connect\n * @instance\n * @abstract\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @abstract\n * @rtype () => void\n * @return {void}\n */\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @abstract\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @abstract\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser window Post Message connector module\n *\n * This is the complement to\n * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message\n * @export BrowserWindowMessageConnection\n * @example\n * import BrowserWindowMessageConnection\n * from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'\n */\nimport stampit from '@stamp/it'\nimport WalletConnection from '.'\nimport { v4 as uuid } from '@aeternity/uuid'\nimport { MESSAGE_DIRECTION } from '../schema'\nimport { getBrowserAPI, isInIframe } from '../helpers'\nimport {\n AlreadyConnectedError,\n NoWalletConnectedError,\n MessageDirectionError\n} from '../../errors'\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return this.listener\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\nfunction connect (onMessage) {\n const origin = this.origin\n const receiveDirection = this.receiveDirection\n const debug = this.debug\n const forceOrigin = this.forceOrigin\n if (this.listener) throw new AlreadyConnectedError('You already connected')\n\n this.listener = (msg, source) => {\n if (!msg || typeof msg.data !== 'object') return\n if (!forceOrigin && origin && origin !== msg.origin) return\n if (debug) console.log('Receive message: ', msg)\n if (msg.data.type) {\n if (msg.data.type !== receiveDirection) return\n onMessage(msg.data.data, msg.origin, msg.source)\n } else {\n onMessage(msg.data, msg.origin, msg.source)\n }\n }\n this.subscribeFn(this.listener)\n}\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n if (!this.listener) throw new NoWalletConnectedError('You dont have connection. Please connect before')\n this.unsubscribeFn(this.listener)\n this.listener = null\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n const message = this.sendDirection ? { type: this.sendDirection, data: msg } : msg\n if (this.debug) console.log('Send message: ', message)\n this.postFn(message)\n}\n\nconst getTarget = () => {\n const isExtensionContext = typeof getBrowserAPI(true).extension === 'object'\n const isWeb = window && window.location && window.location.protocol.startsWith('http')\n const isContentScript = isExtensionContext && isWeb\n if (isContentScript) return window\n // When we is the main page we need to decide the target by our self\n // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which\n // Iframe to talk\n return isInIframe() ? window.parent : undefined\n}\n\n/**\n * BrowserWindowMessageConnection\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication\\\n * /connection/browser-window-message\n * @rtype Stamp\n * @param {Object} [params={}] - Initializer object\n * @param {Object} [params.target=window.parent] - Target window for message\n * @param {Object} [params.self=window] - Host window for message\n * @param {Object} [params.origin] - Origin of receiver\n * @param {String} [params.sendDirection] Wrapping messages into additional struct\n * ({ type: 'to_aepp' || 'to_waellet', data })\n * Used for handling messages between content script and page\n * @param {String} [params.receiveDirection='to_aepp'] Unwrapping messages from additional struct\n * ({ type: 'to_aepp' || 'to_waellet', data })\n * Used for handling messages between content script and page\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({\n connectionInfo = {},\n target = getTarget(),\n self = window,\n origin,\n sendDirection,\n receiveDirection = MESSAGE_DIRECTION.to_aepp,\n debug = false,\n forceOrigin = false\n } = {}) {\n if (sendDirection && !Object.keys(MESSAGE_DIRECTION).includes(sendDirection)) throw new MessageDirectionError(`sendDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n if (!Object.keys(MESSAGE_DIRECTION).includes(receiveDirection)) throw new MessageDirectionError(`receiveDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n this.connectionInfo = { id: uuid(), ...connectionInfo }\n\n const selfP = self\n const targetP = target\n this.origin = origin\n this.debug = debug\n this.forceOrigin = forceOrigin\n this.sendDirection = sendDirection\n this.receiveDirection = receiveDirection\n this.subscribeFn = (listener) => selfP.addEventListener('message', listener, false)\n this.unsubscribeFn = (listener) => selfP.removeEventListener('message', listener, false)\n this.postFn = (msg) => targetP.postMessage(msg, this.origin || '*')\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Detector\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector\n * @export WalletDetector\n */\nimport stampit from '@stamp/it'\nimport BrowserWindowMessageConnection from './connection/browser-window-message'\nimport { MESSAGE_DIRECTION, METHODS } from './schema'\nimport { UnsupportedPlatformError } from '../errors'\n\n/**\n * WalletDetector stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {WalletConnection} params.connection - Connection for listening for wallets\n * @return {WalletDetector}\n */\nexport default stampit({\n init ({ connection } = {}) {\n if (!window) throw new UnsupportedPlatformError('Window object not found, you can run wallet detector only in browser')\n this.connection = connection || BrowserWindowMessageConnection({ connectionInfo: { id: 'spy' } })\n this.wallets = {}\n },\n methods: {\n /**\n * Start scanning\n * @function scan\n * @instance\n * @param {Function} onDetected Call-back function which trigger on new wallet\n * @return {void}\n */\n scan (onDetected) {\n const { wallets } = this\n this.connection.connect(({ method, params }, origin, source) => {\n if (\n !method || !params ||\n method !== METHODS.readyToConnect || wallets[params.id]\n ) return\n\n const wallet = {\n ...params,\n async getConnection () {\n // if detect extension wallet or page wallet\n const isExtension = this.type === 'extension'\n const origin = isExtension ? window.origin : this.origin\n return BrowserWindowMessageConnection({\n connectionInfo: this,\n sendDirection: isExtension ? MESSAGE_DIRECTION.to_waellet : undefined,\n receiveDirection: isExtension ? MESSAGE_DIRECTION.to_aepp : undefined,\n target: source,\n origin\n })\n }\n }\n wallets[wallet.id] = wallet\n onDetected({ wallets, newWallet: wallet })\n })\n if (Object.keys(wallets).length) onDetected({ wallets })\n },\n\n /**\n * Stop scanning\n * @function stopScan\n * @instance\n * @return {void}\n */\n stopScan () {\n this.connection.disconnect()\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser runtime connector module\n *\n * This is the complement to\n * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @export BrowserRuntimeConnection\n * @example import { BrowserRuntimeConnection } from '@aeternity/aepp-sdk'\n */\nimport stampit from '@stamp/it'\n\nimport WalletConnection from '.'\nimport { getBrowserAPI } from '../helpers'\nimport {\n RpcConnectionError,\n AlreadyConnectedError,\n NoWalletConnectedError\n} from '../../errors'\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n try {\n this.port.disconnect()\n } catch (e) {\n console.warning('From BrowserRuntimeConnection: ', e)\n }\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function, onDisconnect: Function) => void\n * @param {Function} onMessage - Message handler\n * @param {Function} onDisconnect - trigger when runtime connection in closed\n * @return {void}\n */\nfunction connect (onMessage, onDisconnect) {\n if (this.isConnected()) throw new AlreadyConnectedError('You already connected')\n this.handler = (msg, source) => {\n if (this.debug) console.log('Receive message: ', msg)\n onMessage(msg, source)\n }\n this.port.onMessage.addListener(this.handler)\n this.port.onDisconnect.addListener(() => {\n typeof onDisconnect === 'function' && onDisconnect({}, this)\n this.port.disconnect()\n })\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n if (!this.port) throw new NoWalletConnectedError('You dont have connection. Please connect before')\n if (this.debug) console.log('Send message: ', msg)\n this.port.postMessage(msg)\n}\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return typeof this.port.onMessage.hasListeners === 'function' ? this.port.onMessage.hasListeners() : this.port.onMessage.hasListener(this.handler)\n}\n\n/**\n * BrowserRuntimeConnection stamp\n * Handle browser runtime communication\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {Object} params.port - Runtime `port` object\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, port, debug = false }) {\n if (!getBrowserAPI().runtime) throw new RpcConnectionError('Runtime is not accessible in your environment')\n this.debug = debug\n this.connectionInfo = connectionInfo\n this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined])\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport * as Crypto from './utils/crypto'\nimport * as Keystore from './utils/keystore'\nimport * as Bytes from './utils/bytes'\nimport * as TxBuilder from './tx/builder'\nimport * as TxBuilderHelper from './tx/builder/helpers'\nimport * as SCHEMA from './tx/builder/schema'\nimport * as AmountFormatter from './utils/amount-formatter'\nimport * as HdWallet from './utils/hd-wallet'\n\nimport Ae from './ae'\nimport Chain from './chain'\nimport ChainNode from './chain/node'\nimport Node from './node'\nimport NodePool from './node-pool'\nimport Tx from './tx'\nimport Transaction from './tx/tx'\nimport verifyTransaction from './tx/validator'\nimport AccountBase from './account/base'\nimport AccountMultiple from './account/multiple'\nimport MemoryAccount from './account/memory'\nimport Aens from './ae/aens'\nimport Contract from './ae/contract'\nimport GeneralizedAccount from './contract/ga'\nimport ContractCompilerHttp from './contract/compiler'\nimport RpcAepp from './ae/aepp'\nimport RpcWallet from './ae/wallet'\nimport Oracle from './ae/oracle'\nimport genSwaggerClient from './utils/swagger'\nimport Channel from './channel'\nimport Universal from './ae/universal'\n\nexport { default as ContentScriptBridge } from './utils/aepp-wallet-communication/content-script-bridge'\nexport * as AeppWalletHelpers from './utils/aepp-wallet-communication/helpers'\nexport * as AeppWalletSchema from './utils/aepp-wallet-communication/schema'\nexport { default as WalletDetector } from './utils/aepp-wallet-communication/wallet-detector'\nexport { default as BrowserRuntimeConnection } from './utils/aepp-wallet-communication/connection/browser-runtime'\nexport { default as BrowserWindowMessageConnection } from './utils/aepp-wallet-communication/connection/browser-window-message'\nexport * from './utils/errors'\n\nexport const getDefaultPointerKey = TxBuilderHelper.getDefaultPointerKey\n\nexport {\n AmountFormatter,\n AccountBase,\n AccountMultiple,\n Ae,\n Aens,\n Bytes,\n Contract,\n ContractCompilerHttp,\n ChainNode,\n RpcAepp,\n RpcWallet,\n Channel,\n Crypto,\n Keystore,\n Chain,\n GeneralizedAccount,\n HdWallet,\n MemoryAccount,\n Node,\n NodePool,\n Oracle,\n genSwaggerClient,\n Transaction,\n verifyTransaction,\n Tx,\n TxBuilder,\n TxBuilderHelper,\n Universal,\n SCHEMA\n}\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__910__","__WEBPACK_EXTERNAL_MODULE__983__","__WEBPACK_EXTERNAL_MODULE__180__","__WEBPACK_EXTERNAL_MODULE__192__","__WEBPACK_EXTERNAL_MODULE__783__","__WEBPACK_EXTERNAL_MODULE__79__","__WEBPACK_EXTERNAL_MODULE__236__","__WEBPACK_EXTERNAL_MODULE__433__","__WEBPACK_EXTERNAL_MODULE__343__","__WEBPACK_EXTERNAL_MODULE__408__","__WEBPACK_EXTERNAL_MODULE__485__","__WEBPACK_EXTERNAL_MODULE__659__","__WEBPACK_EXTERNAL_MODULE__503__","__WEBPACK_EXTERNAL_MODULE__911__","__WEBPACK_EXTERNAL_MODULE__946__","__WEBPACK_EXTERNAL_MODULE__397__","__WEBPACK_EXTERNAL_MODULE__735__","__WEBPACK_EXTERNAL_MODULE__289__","__WEBPACK_EXTERNAL_MODULE__882__","__WEBPACK_EXTERNAL_MODULE__986__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","BaseError","Error","constructor","message","super","this","name","AccountError","AensError","AeppError","ChannelError","CompilerError","ContractError","CryptographyError","NodeError","TransactionError","WalletError","ArgumentError","argumentName","requirement","argumentValue","IllegalArgumentError","ArgumentCountMismatchError","functionName","requiredCount","providedCount","InsufficientBalanceError","InvalidDenominationError","InvalidNameError","MissingParamError","NoBrowserFoundError","NoSerializerFoundError","RequestTimedOutError","requestTime","currentHeight","height","TxTimedOutError","blocks","th","status","join","TypeError","UnsupportedPlatformError","UnsupportedProtocolError","NotImplementedError","UnsupportedVersionError","dependency","version","geVersion","ltVersion","InternalError","InvalidKeypairError","UnavailableAccountError","address","AensPointerContextError","nameOrId","prefix","InsufficientNameFeeError","nameFee","minNameFee","InvalidAensNameError","DuplicateCallbackError","InvalidRpcMessageError","MissingCallbackError","id","UnAuthorizedAccountError","onAccount","UnknownRpcClientError","UnsubscribedAccountError","ChannelCallError","ChannelConnectionError","ChannelPingTimedOutError","UnexpectedChannelMessageError","UnknownChannelStateError","InvalidAuthDataError","BytecodeMismatchError","source","DuplicateContractError","InactiveContractError","contractAddress","InvalidMethodInvocationError","MissingContractAddressError","MissingContractDefError","MissingFunctionNameError","NodeInvocationError","NoSuchContractFunctionError","NotPayableFunctionError","amount","fn","MissingEventDefinitionError","eventNameHash","eventAddress","AmbiguousEventDefinitionError","matchedEvents","map","InvalidChecksumError","InvalidDerivationPathError","InvalidKeyError","InvalidPasswordError","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnsupportedAlgorithmError","algo","NotHardenedSegmentError","UnknownNodeLengthError","nodeLength","UnknownPathNibbleError","nibble","UnsupportedChildIndexError","index","DisconnectedError","DuplicateNodeError","NodeNotFoundError","DecodeError","EncodeError","PayloadLengthError","DryRunError","IllegalBidFeeError","InvalidSignatureError","InvalidTxError","InvalidTxParamsError","NoDefaultAensPointerError","PrefixMismatchError","requiredPrefix","PrefixNotFoundError","tag","SchemaNotFoundError","TagNotFoundError","TxNotInChainError","txHash","UnknownTxError","UnsupportedABIversionError","UnsupportedVMversionError","AlreadyConnectedError","MessageDirectionError","NoWalletConnectedError","RpcConnectionError","snakeToPascal","s","replace","match","toUpperCase","pascalToSnake","toLowerCase","isHex","str","length","test","bigNumberToByteArray","x","isInteger","toFixed","hexString","toString","Buffer","from","toBytes","val","big","Number","BigNumber","str2buf","enc","indexOf","slice","isBase64","hash","input","blake2b","Field","NameId","writeId","isNameValid","produceNameId","readId","Deposit","writeInt","readInt","VSN","VSN_2","TX_TTL","QUERY_FEE","ORACLE_TTL","type","QUERY_TTL","RESPONSE_TTL","AMOUNT","GAS_MAX","MIN_GAS_PRICE","MAX_AUTH_FUN_GAS","DRY_RUN_ACCOUNT","pub","NAME_TTL","NAME_MAX_TTL","NAME_MAX_CLIENT_TTL","CLIENT_TTL","NAME_FEE_MULTIPLIER","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","NAME_BID_MAX_LENGTH","POINTER_KEY_BY_PREFIX","ak","ok","ct","ch","NAME_BID_RANGES","times","NAME_BID_TIMEOUTS","OBJECT_TAG_SIGNED_TRANSACTION","OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX","OBJECT_TAG_CHANNEL_RECONNECT_TX","OBJECT_TAG_CONTRACTS_TREE","OBJECT_TAG_CONTRACT_CALLS_TREE","OBJECT_TAG_CHANNELS_TREE","OBJECT_TAG_NAMESERVICE_TREE","OBJECT_TAG_ORACLES_TREE","OBJECT_TAG_ACCOUNTS_TREE","TX_FIELD","TX_SCHEMA_FIELD","schema","objectId","TX_TYPE","account","signed","spend","nameClaim","namePreClaim","nameUpdate","nameRevoke","nameTransfer","contract","contractCreate","contractCall","contractCallResult","oracleRegister","oracleExtend","oracleQuery","oracleResponse","channelCreate","channelCloseMutual","channelCloseSolo","channelSlash","channelDeposit","channelWithdraw","channelSettle","channelOffChain","channelForceProgress","channel","channelSnapshotSolo","channelOffChainUpdateTransfer","channelOffChainUpdateDeposit","channelOffChainUpdateWithdrawal","channelOffChainCreateContract","channelOffChainCallContract","channelReconnect","proofOfInclusion","stateTrees","merklePatriciaTree","merklePatriciaTreeValue","contractsTree","contractCallsTree","channelsTree","nameserviceTree","oraclesTree","accountsTree","gaAttach","gaMeta","payingFor","sophiaByteCode","VM_VERSIONS","NO_VM","SOPHIA","SOPHIA_IMPROVEMENTS_MINERVA","SOPHIA_IMPROVEMENTS_FORTUNA","FATE","SOPHIA_IMPROVEMENTS_LIMA","FATE_2","ABI_VERSIONS","NO_ABI","PROTOCOL_VERSIONS","IRIS","PROTOCOL_VM_ABI","vmVersion","abiVersion","OBJECT_ID_TX_TYPE","FIELD_TYPES","int","ids","string","binary","rlpBinary","rlpBinaries","rawBinary","bool","hex","signatures","pointers","offChainUpdates","callStack","mptrees","callReturnType","ctVersion","sophiaCodeTypeInfo","payload","any","stateTree","BASE_GAS","GAS_PER_BYTE","DEFAULT_FEE","KEY_BLOCK_INTERVAL","TX_FEE_BASE_GAS","txType","factor","TX_FEE_OTHER_GAS","txSize","relativeTtl","innerTxSize","plus","Math","ceil","floor","minus","ID_TAG","commitment","oracle","PREFIX_ID_TAG","nm","cm","ID_TAG_PREFIX","entries","reduce","acc","v","BASE_TX","CONTRACT_BYTE_CODE_LIMA","ACCOUNT_TX_2","SPEND_TX","SIGNED_TX","NAME_PRE_CLAIM_TX","NAME_CLAIM_TX_2","ensureNameValid","getMinimumNameFee","gt","NAME_UPDATE_TX","NAME_TRANSFER_TX","NAME_REVOKE_TX","CONTRACT_TX","GA_ATTACH_TX","GA_META_TX_2","PAYING_FOR_TX","CONTRACT_CREATE_TX","CONTRACT_CALL_TX","CONTRACT_CALL_RESULT_TX","ORACLE_REGISTER_TX","ORACLE_EXTEND_TX","ORACLE_QUERY_TX","ORACLE_RESPOND_TX","CHANNEL_CREATE_TX_2","CHANNEL_DEPOSIT_TX","CHANNEL_WITHDRAW_TX","CHANNEL_CLOSE_MUTUAL_TX","CHANNEL_CLOSE_SOLO_TX","CHANNEL_SLASH_TX","CHANNEL_SETTLE_TX","CHANNEL_FORCE_PROGRESS_TX","CHANNEL_OFFCHAIN_TX_2","CHANNEL_TX_3","CHANNEL_SNAPSHOT_SOLO_TX","CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX","CHANNEL_OFFCHAIN_CALL_CONTRACT_TX","CHANNEL_RECONNECT_TX","CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX","CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX","CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX","PROOF_OF_INCLUSION_TX","STATE_TREES_TX","MERKLE_PATRICIA_TREE_TX","MERKLE_PATRICIA_TREE_VALUE_TX","CONTRACTS_TREE_TX","CONTRACT_CALLS_TREE_TX","CHANNELS_TREE_TX","NAMESERVICE_TREE_TX","ORACLES_TREE_TX","ACCOUNTS_TREE_TX","TX_SERIALIZATION_SCHEMA","TX_DESERIALIZATION_SCHEMA","isBigNumber","number","includes","isNaN","bigNumber","integerValue","createSalt","salt","buildContractId","ownerId","nonce","encode","decode","oracleQueryId","senderId","oracleId","nonceBE","concat","alloc","_int32","formatSalt","padStart","commitmentHash","base64Types","base58Types","typesLength","ensureValidLength","data","getChecksum","sha256hash","addChecksum","getPayload","buffer","equals","base64","base58","bs58","encodedPayload","extra","split","decoder","encoder","hashId","idTag","buf","readUIntBE","buildPointers","p","readPointers","assign","AENS_SUFFIX","endsWith","error","getDefaultPointerKey","identifier","substr","nameLength","min","computeBidFee","startFee","increment","computeAuctionEndBlock","claimHeight","isAuctionName","Ecb","aesjs","getAddressFromPriv","secret","keys","nacl","publicKey","isAddressValid","e","shajs","update","digest","random","MAX_SAFE_INTEGER","encodeUnsigned","allocUnsafe","writeUInt32BE","findIndex","i","encodeContractAddress","owner","generateKeyPairFromSecret","generateKeyPair","raw","keyPair","publicBuffer","secretBuffer","secretKey","encryptKey","password","binaryData","hashedPasswordBytes","encrypt","decryptKey","encrypted","encryptedBytes","aesEcb","decrypt","sign","privateKey","verify","signature","Uint8Array","messageToHash","msg","signMessage","verifyMessage","isValidKeypair","DEFAULTS","crypto","secret_type","symmetric_alg","kdf","kdf_params","memlimit_kib","opslimit","parallelism","DERIVED_KEY_FUNCTIONS","argon2id","deriveKeyUsingArgon2id","async","pass","options","mem","time","result","hashLen","ArgonType","CRYPTO_FUNCTIONS","plaintext","ciphertext","res","deriveKey","marshal","derivedKey","opt","public_key","uuid","cipher_params","recover","keyObject","validateKeyObj","kdfParams","dump","missingRootKeys","filter","missingCryptoKeys","AE_AMOUNT_FORMATS","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","DENOMINATION_MAGNITUDE","toAe","denomination","formatAmount","targetDenomination","toAettos","denominations","values","shiftedBy","prefixes","magnitude","getNearestPrefix","exponent","abs","getLowerBoundPrefix","find","NodeType","rawValue","exp","precision","MPTree","node","rlpEncode","rootHash","nodes","fromEntries","forEach","nodeHash","parseNode","Branch","Extension","isEqual","tree","path","parseInt","Leaf","serialize","mptHash","searchFrom","ORACLE_TTL_TYPES","deserializeField","vm","abi","unpackTx","t","funHash","fnName","argType","outType","deserialize","serializeField","params","rlpEncoded","validateField","lt","Array","isArray","some","transformParams","_","schemaKeys","k","getOracleRelativeTtl","ttlKey","calculateMinFee","gas","vsn","multiplier","actualFee","buildFee","fee","expected","eq","txWithOutFee","buildTx","tx","encodedTx","calculateFee","showWarning","console","warn","validateParams","excludeKeys","buildRawTx","filteredSchema","valid","JSON","stringify","fieldType","unpackRawTx","getSchema","objId","isDeserialize","firstKey","txObject","fromRlpBinary","rlpDecode","buildTxHash","rawTx","startsWith","ED25519_CURVE","HARDENED_OFFSET","toHex","derivePathFromKey","segments","fromString","toPathArray","segment","parentKey","deriveChild","derivePathFromSeed","seed","masterKey","getMasterKeyFromSeed","formatAccount","getKeyPair","I","hmac","chainCode","indexBuffer","generateSaveHDWalletFromSeed","walletKey","getSaveHDWalletAccounts","saveHDWallet","accountCount","fill","idx","getHdWalletAccountFromSeed","accountIdx","stampit","required","methods","spendTx","namePreclaimTx","nameClaimTx","nameTransferTx","nameUpdateTx","nameRevokeTx","contractCreateTx","contractCallTx","oracleRegisterTx","oracleExtendTx","oraclePostQueryTx","oracleRespondTx","getAccountNonce","channelCloseSoloTx","channelSlashTx","channelSettleTx","channelSnapshotSoloTx","gaAttachTx","getVmVersion","prepareTxParams","Chain","deepProps","Ae","defaults","waitMined","_expectedMineRate","_microBlockCycle","_maxPollInterval","_getPollInterval","base","block","microblock","sendTransaction","awaitHeight","poll","balance","getBalance","getTxInfo","mempool","txDryRun","getAccount","asyncInit","stamp","args","instance","compose","deepConfiguration","AsyncInit","initializers","init","Promise","resolve","ret","deepConf","composers","composables","c","flat","Infinity","f","arr","jsonBig","JsonBig","storeAsString","convertValuesToBigNumbers","item","bn","toJSON","object","parse","pause","setTimeout","duration","mapObject","filterObject","traverseKeys","snakizeKeys","bind","pascalizeKeys","warnedAboutInternalApiUsage","specUrl","spec","internalUrl","disableBigNumbers","disableCaseConversion","responseInterceptor","fetch","json","jsonImp","external","internal","all","url","pendingGetRequests","SwaggerClient","requestInterceptor","request","method","userFetch","clone","response","text","size","body","combinedApi","apis","handler","opSpecs","paths","operationId","requestQueues","api","opId","opSpec","parameters","requestBody","content","param","req","__requestBody","__queue","stringified","rootKeys","properties","filteredValue","then","getComponents","versionComponents","geComponents","ltComponents","max","componentsToNumber","components","reverse","pow","vNumber","geNumber","ltNumber","getNetworkId","networkId","force","selectedNode","Node","ignoreVersion","client","genSwaggerClient","statusText","URL","pathname","reason","info","semverSatisfies","NODE_GE_VERSION","NODE_LT_VERSION","nodeRevision","revision","genesisKeyBlockHash","genesisHash","protocols","topBlockHeight","getStatus","consensusProtocolVersion","effectiveAtHeight","nodeNetworkId","getNodeInfo","props","isAccountBase","signTransaction","innerTx","push","rlpBinaryTx","txWithNetworkId","returnHex","sig","verifyMessageCrypto","Tx","AccountBase","send","contractId","authFun","signUsingGA","TxBuilder","recipientIdOrName","recipientId","resolveName","transferFunds","fraction","desiredAmount","payForTransaction","transaction","payingForTx","payerId","destroyInstance","m","authData","createMetaTx","validators","parentTxTypes","txHashWithNetworkId","decodedPub","checkedKeys","verifyTransaction","minFee","lte","ttl","cost","validNonce","gasPrice","protocol","txProtocol","active","getContract","getSenderAddress","getAccountByPubkey","catch","getCurrentKeyBlockHeight","pool","Map","validateNodes","addNode","selectNode","propertyDescriptors","configurable","select","has","set","isNodeConnected","getNodesInPool","notObject","wrongFields","wrongInstanceFields","txDryRunHandler","rs","_txDryRun","dryRunRes","protectedDryRunTxs","top","txEvents","txs","accounts","Set","accountAddress","pubKey","reject","results","resultPayload","ChainNode","NodePool","validation","code","postTransaction","txData","confirm","confirmationHeight","waitForTxConfirm","verifyTx","format","getAccountByPubkeyAndHeight","getAccountByPubkeyAndHash","getTransactionByHash","blockHeight","interval","attempts","getCheckTxInPool","getTransactionInfoByHash","callInfo","getPendingTransactions","getCurrentGeneration","getGeneration","hashOrHeight","getGenerationByHash","getGenerationByHeight","getMicroBlockHeader","getMicroBlockHeaderByHash","getMicroBlockTransactions","getMicroBlockTransactionsByHash","transactions","getKeyBlock","getKeyBlockByHash","getKeyBlockByHeight","combine","timeout","getContractByteCode","getContractCode","getName","getNameEntryByName","newBlockHeight","resolveByNode","pointer","buildTransaction","unpackTransaction","TxObject","initTransaction","isSigned","statics","fromRlp","setProp","getSignatures","addSignature","isBuffer","calculateTtl","relative","getCurrentKeyBlock","Transaction","nativeMode","arguments","postSpend","accountId","commitmentId","postNamePreclaim","nameSalt","postNameClaim","nameId","postNameTransfer","nameTtl","clientTtl","postNameUpdate","postNameRevoke","callData","postContractCreate","callerId","postContractCall","absoluteTtl","strategy","getAccountNextNonce","nextNonce","queryFormat","responseFormat","queryFee","oracleTtl","postOracleRegister","postOracleExtend","responseTtl","query","queryTtl","postOracleQuery","queryId","postOracleRespond","channelId","fromId","poi","postChannelCloseSolo","postChannelSlash","initiatorAmountFinal","responderAmountFinal","postChannelSettle","postChannelSnapshotSolo","accountNonce","supportedProtocol","protocolForTX","secrets","WeakMap","keypair","gaId","isGa","pubBuffer","selectAccount","selectedAddress","_resolveAccount","addresses","removeAccount","MemoryAccount","Aens","aensQuery","freeze","aensUpdate","transfer","aensTransfer","revoke","aensRevoke","extendTtl","extendPointers","aensPreclaim","_salt","preclaimTx","claim","aensClaim","claimTx","nameInter","allPointers","aensBid","compilerUrl","setCompilerUrl","parameter","pos","line","col","context","trim","compilerVersion","compilerApi","filesystem","file_system","COMPILER_GE_VERSION","COMPILER_LT_VERSION","ContractCompilerHttp","getContractInstance","bytecode","aci","_aci","validateBytecode","otherOptions","generateACI","_name","encoded_aci","calldata","Calldata","external_encoded_aci","deployInfo","callStatic","onChanBytecode","validateByteCode","compile","compileContract","sendAndProcess","handleCallError","returnType","returnValue","decodeFateString","getFunctionACI","functions","payable","getContractNameByEvent","nameHash","contractAddressToName","addressToName","event","variant","events","eventName","BigInt","_estimateGas","gasUsed","deploy","fnACI","txOpt","callObj","dryRunOther","decodedResult","returns","decodedEvents","decodeEvents","log","omitUnknown","topics","contractName","decoded","decodeEvent","aciArgs","stateful","genHandler","pop","delegateSignatureCommon","createAensDelegationSignature","createOracleDelegationSignature","prepareGaParams","ins","authFnName","authCallData","GeneralizedAccount","Contract","createGeneralizedAccount","isGA","gaContractId","rawTransaction","wrappedTx","wrapInEmptySignedTx","metaTxRlp","VERSION","MESSAGE_DIRECTION","WALLET_TYPE","SUBSCRIPTION_TYPES","METHODS","RPC_STATUS","ERRORS","broadcastFailed","invalidTransaction","rejectedByUser","connectionDeny","permissionDeny","internalError","notAuthorize","unsupportedProtocol","unsupportedNetwork","getBrowserAPI","chrome","browser","window","isInIframe","parent","sendMessage","connection","messageId","isNotificationOrResponse","msgData","jsonrpc","getHandler","debug","responseMessage","sendResponseMessage","isValidAccounts","icons","handlers","onMessage","onDisconnect","callbacks","addressSubscription","connect","origin","aepp","disconnect","currentAccount","isHasAccounts","current","connected","updateInfo","isSubscribed","hasAccessToAccount","isConnected","CONNECTED","NODE_BINDED","getCurrentAccount","forceConnectionClose","DISCONNECTED","setAccounts","forceNotification","updateAddress","updateSubscription","subscribe","unsubscribe","msgId","processResponse","transformResult","NOTIFICATIONS","rpcClient","onAddressChange","updateNetwork","onNetworkChange","closeConnection","disconnectWallet","RESPONSES","subscribeAddress","subscription","signedTransaction","transactionHash","REQUESTS","other","connectToWallet","walletBroadcast","isSubscribedAccount","connectNode","RpcClient","connectionInfo","walletInfo","sendConnectRequest","sendDisconnect","returnSigned","Oracle","registerOracle","getOracleObject","respondToQuery","extendOracleTtl","postQueryToOracle","getOracleByPubkey","getQueryObject","pollForQueryResponse","getOracleQueryByPubkeyAndQueryId","responseBuffer","String","pollForQueries","onQuery","knownQueryIds","checkNewQueries","queries","getOracleQueriesByPubkey","oracleQueries","add","stopped","pollQueries","postQuery","extendOracle","getQuery","q","decodedQuery","decodedResponse","respond","pollForResponse","AeppRpc","resolveOnAccount","callInstance","WAITING_FOR_CONNECTION_APPROVE","location","shareNode","getWalletInfo","CONNECTION_REJECTED","clientAccounts","getAccounts","onAcc","handleMessage","rpcClients","methodName","accept","deny","errorObjectOrHandler","AccountMultiple","_selectAccount","_addAccount","addAccount","_selectNode","condition","meta","removeRpcClient","addRpcClient","clientConnection","WAITING_FOR_CONNECTION_REQUEST","shareWalletInfo","postFn","readyToConnect","runtime","extension","WalletRpc","state","fsm","websockets","eventEmitters","messageQueue","messageQueueLocked","actionQueue","actionQueueLocked","sequence","rpcCallbacks","pingTimeoutId","pongTimeoutId","fsmId","emit","enterState","nextState","enter","dequeueAction","changeStatus","newStatus","changeState","newState","enqueueAction","guard","action","locked","queue","ping","clearTimeout","details","close","initialize","channelOptions","existingFsmId","awaitingReconnection","awaitingConnection","EventEmitter","wsUrl","searchParams","ws","W3CWebSocket","onerror","onopen","reconnectTx","channelOpen","signed_tx","onclose","onmessage","callback","delete","messages","shift","dequeueMessage","channel_id","appendSignature","signFn","signedTx","handleUnexpectedMessage","wsMessage","channel_accept","funding_created","awaitingChannelCreateTx","awaitingOpenConfirmation","fsm_id","channelClosed","initiator","responder","role","awaitingOnChainTx","awaitingBlockInclusion","own_funding_locked","funding_locked","awaitingInitialState","awaitingTxSignRequest","awaitingOffChainTx","updates","awaitingOffChainUpdate","accepted","errorCode","error_code","errorMessage","error_msg","awaitingUpdateConflict","to","awaitingShutdownTx","awaitingShutdownOnChainTx","awaitingLeave","awaitingWithdrawTx","awaitingWithdrawCompletion","onOnChainTx","own_withdraw_locked","onOwnWithdrawLocked","withdraw_locked","onWithdrawLocked","awaitingDepositTx","awaitingDepositCompletion","own_deposit_locked","onOwnDepositLocked","deposit_locked","onDepositLocked","awaitingNewContractTx","awaitingNewContractCompletion","round","awaitingCallContractUpdateTx","awaitingCallContractCompletion","awaitingCallContractForceProgressUpdate","awaitingForceProgressCompletion","awaitingCallsPruned","channels","closeTx","snakeToPascalObjKeys","Channel","on","off","removeListener","channelStatus","channelState","channelFsmId","metadata","contracts","balances","leave","shutdown","recipient","doSend","onStatusChanged","withdraw","deposit","createContract","call_data","vm_version","abi_version","callContract","contract_id","callContractStatic","getContractCall","caller","caller_id","getContractState","pubkey","channelDisconnect","cleanContractCalls","forceProgress","gas_price","reconnect","txParams","pageConnection","extConnection","allowCrossOrigin","run","stop","getTarget","isExtensionContext","isWeb","target","sendDirection","receiveDirection","to_aepp","forceOrigin","selfP","targetP","subscribeFn","listener","addEventListener","unsubscribeFn","removeEventListener","postMessage","WalletConnection","BrowserWindowMessageConnection","wallets","scan","onDetected","wallet","isExtension","to_waellet","newWallet","stopScan","port","addListener","warning","hasListeners","hasListener","TxBuilderHelper"],"sourceRoot":""}
|