@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/channel/handlers.js"],"names":["generateKeyPair","encodeContractAddress","options","changeStatus","changeState","call","send","emit","channelId","disconnect","fsmId","unpackTx","buildTx","encode","IllegalArgumentError","InsufficientBalanceError","ChannelConnectionError","UnexpectedChannelMessageError","appendSignature","tx","signFn","signatures","encodedTx","result","rlpEncoded","signedTx","txType","concat","handleUnexpectedMessage","channel","message","state","reject","Object","assign","JSON","stringify","wsMessage","handler","channelOpen","awaitingConnection","method","includes","params","data","event","channel_accept","funding_created","awaitingChannelCreateTx","awaitingOpenConfirmation","set","fsm_id","payload","channelClosed","awaitingReconnection","signed_tx","tag","initiator","responder","get","role","sign","jsonrpc","awaitingOnChainTx","info","awaitingBlockInclusion","channel_id","own_funding_locked","funding_locked","type","awaitingInitialState","awaitingTxSignRequest","enter","awaitingOffChainTx","updates","awaitingOffChainUpdate","error","find","i","code","resolve","accepted","errorCode","error_code","errorMessage","error_msg","match","awaitingUpdateConflict","from","publicKey","to","amount","awaitingShutdownTx","awaitingShutdownOnChainTx","awaitingLeave","awaitingWithdrawTx","awaitingWithdrawCompletion","onOnChainTx","callback","own_withdraw_locked","onOwnWithdrawLocked","withdraw_locked","onWithdrawLocked","awaitingDepositTx","awaitingDepositCompletion","own_deposit_locked","onOwnDepositLocked","deposit_locked","onDepositLocked","awaitingNewContractTx","awaitingNewContractCompletion","round","owner","address","awaitingCallContractUpdateTx","awaitingCallContractCompletion","awaitingCallContractForceProgressUpdate","awaitingForceProgressCompletion","awaitingCallsPruned","channels","closeTx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;SAESA,e,EAAiBC,qB;SAExBC,O,EACAC,Y,EACAC,W,EACAC,I,EACAC,I,EACAC,I,EACAC,S,EACAC,U,EACAC,K;SAEOC,Q,EAAUC,O;SACVC,M;SAEPC,oB,EACAC,wB,EACAC,sB,EACAC,6B;;AAGF,eAAeC,eAAf,CAAgCC,EAAhC,EAAoCC,MAApC,EAA4C;AAC1C,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA;AAAd,MAA4BX,QAAQ,CAACQ,EAAD,CAAR,CAAaA,EAA/C;AACA,QAAMI,MAAM,GAAG,MAAMH,MAAM,CAACP,MAAM,CAACS,SAAS,CAACE,UAAX,EAAuB,IAAvB,CAAP,CAA3B;;AACA,MAAI,OAAOD,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,UAAM;AAAEJ,MAAAA,EAAE,EAAEM,QAAN;AAAgBC,MAAAA;AAAhB,QAA2Bf,QAAQ,CAACY,MAAD,CAAzC;AACA,WAAOX,OAAO,CAAC;AACbS,MAAAA,UAAU,EAAEA,UAAU,CAACM,MAAX,CAAkBF,QAAQ,CAACJ,UAA3B,CADC;AAEbC,MAAAA,SAAS,EAAEG,QAAQ,CAACH,SAAT,CAAmBE;AAFjB,KAAD,EAGXE,MAHW,CAAP,CAGIP,EAHX;AAID;;AACD,SAAOI,MAAP;AACD;;AAED,SAASK,uBAAT,CAAkCC,OAAlC,EAA2CC,OAA3C,EAAoDC,KAApD,EAA2D;AACzD,MAAIA,KAAK,IAAIA,KAAK,CAACC,MAAnB,EAA2B;AACzBD,IAAAA,KAAK,CAACC,MAAN,CAAaC,MAAM,CAACC,MAAP,CACX,IAAIjB,6BAAJ,CAAmC,mCAAkCkB,IAAI,CAACC,SAAL,CAAeN,OAAf,CAAwB,EAA7F,CADW,EAEX;AAAEO,MAAAA,SAAS,EAAEP;AAAb,KAFW,CAAb;AAID;;AACD,SAAO;AAAEQ,IAAAA,OAAO,EAAEC;AAAX,GAAP;AACD;;AAED,OAAO,SAASC,kBAAT,CAA6BX,OAA7B,EAAsCC,OAAtC,EAA+CC,KAA/C,EAAsD;AAC3D,MAAID,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAI,CAAC,gBAAD,EAAmB,iBAAnB,EAAsCC,QAAtC,CAA+CZ,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAAnE,CAAJ,EAA+E;AAC7E1C,MAAAA,YAAY,CAAC0B,OAAD,EAAU;AACpBiB,QAAAA,cAAc,EAAE,UADI;AAEpBC,QAAAA,eAAe,EAAE;AAFG,QAGpBjB,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAHA,CAAV,CAAZ;AAIA,aAAO;AAAEP,QAAAA,OAAO,EAAEU;AAAX,OAAP;AACD;;AACD,QAAIlB,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,uBAAlC,EAA2D;AACzD,aAAO;AAAEP,QAAAA,OAAO,EAAEW;AAAX,OAAP;AACD;;AACD,QAAInB,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,QAAlC,EAA4C;AAC1CnC,MAAAA,KAAK,CAACwC,GAAN,CAAUrB,OAAV,EAAmBC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBO,MAAvC;AACA,aAAO;AAAEb,QAAAA,OAAO,EAAEE;AAAX,OAAP;AACD;;AACD,WAAO;AAAEF,MAAAA,OAAO,EAAEE;AAAX,KAAP;AACD;;AACD,MAAIV,OAAO,CAACW,MAAR,KAAmB,gBAAvB,EAAyC;AACvClC,IAAAA,IAAI,CAACsB,OAAD,EAAU,OAAV,EAAmB,IAAIb,sBAAJ,CAA2Bc,OAAO,CAACsB,OAAR,CAAgBtB,OAA3C,CAAnB,CAAJ;AACA,WAAO;AAAEQ,MAAAA,OAAO,EAAEe;AAAX,KAAP;AACD;AACF;AAED,OAAO,eAAeC,oBAAf,CAAqCzB,OAArC,EAA8CC,OAA9C,EAAuDC,KAAvD,EAA8D;AACnE,MAAID,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,QAAlC,EAA4C;AAC1CnC,MAAAA,KAAK,CAACwC,GAAN,CAAUrB,OAAV,EAAmBC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBO,MAAvC;AACA/C,MAAAA,WAAW,CAACyB,OAAD,EAAU,CAAC,MAAMxB,IAAI,CAACwB,OAAD,EAAU,6BAAV,EAAyC,EAAzC,CAAX,EAAyD0B,SAAnE,CAAX;AACA,aAAO;AAAEjB,QAAAA,OAAO,EAAEC;AAAX,OAAP;AACD;AACF;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,eAAeiB,uBAAf,CAAwCnB,OAAxC,EAAiDC,OAAjD,EAA0DC,KAA1D,EAAiE;AACtE,QAAMyB,GAAG,GAAG;AACVC,IAAAA,SAAS,EAAE,gBADD;AAEVC,IAAAA,SAAS,EAAE;AAFD,IAGVxD,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqB+B,IAHX,CAAZ;;AAIA,MAAI9B,OAAO,CAACW,MAAR,KAAoB,iBAAgBe,GAAI,EAA5C,EAA+C;AAC7C,QAAI1B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAxB,EAA4B;AAC1B,YAAMM,QAAQ,GAAG,MAAMvB,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqBgC,IAArB,CAA0BL,GAA1B,EAA+B1B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAnD,CAAvB;AACAb,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAG,YAAWe,GAAI,EAA1C;AAA6Cb,QAAAA,MAAM,EAAE;AAAExB,UAAAA,EAAE,EAAEM;AAAN;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEyB;AAAX,OAAP;AACD;;AACD,UAAMtC,QAAQ,GAAG,MAAMP,eAAe,CACpCY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SADgB,EACLpC,EAAE,IAAIjB,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqBgC,IAArB,CAA0BL,GAA1B,EAA+BrC,EAA/B,CADD,CAAtC;AAGAb,IAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,MAAAA,OAAO,EAAE,KAAX;AAAkBrB,MAAAA,MAAM,EAAG,YAAWe,GAAI,EAA1C;AAA6Cb,MAAAA,MAAM,EAAE;AAAEY,QAAAA,SAAS,EAAE9B;AAAb;AAArD,KAAV,CAAJ;AACA,WAAO;AAAEa,MAAAA,OAAO,EAAEyB;AAAX,KAAP;AACD;AACF;AAED,OAAO,SAASA,iBAAT,CAA4BlC,OAA5B,EAAqCC,OAArC,EAA8CC,KAA9C,EAAqD;AAC1D,MAAID,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7C,QACEX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBoB,IAApB,KAA6B,gBAA7B,IACA9D,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqB+B,IAArB,KAA8B,WAFhC,EAGE;AACA,aAAO;AAAEtB,QAAAA,OAAO,EAAE2B;AAAX,OAAP;AACD;;AACD,QACEnC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBoB,IAApB,KAA6B,iBAA7B,IACA9D,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqB+B,IAArB,KAA8B,WAFhC,EAGE;AACA,aAAO;AAAEtB,QAAAA,OAAO,EAAE2B;AAAX,OAAP;AACD;AACF;;AACD,MACEnC,OAAO,CAACW,MAAR,KAAmB,eAAnB,IACAX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,gBAD9B,IAEA3C,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqB+B,IAArB,KAA8B,WAHhC,EAIE;AACApD,IAAAA,SAAS,CAAC0C,GAAV,CAAcrB,OAAd,EAAuBC,OAAO,CAACa,MAAR,CAAeuB,UAAtC;AACA/D,IAAAA,YAAY,CAAC0B,OAAD,EAAU,QAAV,CAAZ;AACA,WAAO;AAAES,MAAAA,OAAO,EAAEyB;AAAX,KAAP;AACD;AACF;AAED,OAAO,SAASE,sBAAT,CAAiCpC,OAAjC,EAA0CC,OAA1C,EAAmDC,KAAnD,EAA0D;AAC/D,MAAID,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,UAAMH,OAAO,GAAG;AACdS,MAAAA,eAAe,EAAEkB,sBADH;AAEdE,MAAAA,kBAAkB,EAAEF,sBAFN;AAGdG,MAAAA,cAAc,EAAEnB;AAHF,MAIdnB,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAJN,CAAhB;;AAKA,QAAIP,OAAJ,EAAa;AACX,aAAO;AAAEA,QAAAA;AAAF,OAAP;AACD;AACF;;AACD,MAAIR,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7ClC,IAAAA,IAAI,CAACsB,OAAD,EAAU,WAAV,EAAuBC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAA3C,EAA+C;AACjD6C,MAAAA,IAAI,EAAElC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBoB,IADuB;AAEjDK,MAAAA,IAAI,EAAEvC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByB;AAFuB,KAA/C,CAAJ;AAIA,WAAO;AAAE/B,MAAAA,OAAO,EAAE2B;AAAX,KAAP;AACD;AACF;AAED,OAAO,SAAShB,wBAAT,CAAmCpB,OAAnC,EAA4CC,OAA5C,EAAqDC,KAArD,EAA4D;AACjE,MAAID,OAAO,CAACW,MAAR,KAAmB,eAAnB,IAAsCX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,MAAxE,EAAgF;AAC9ErC,IAAAA,SAAS,CAAC0C,GAAV,CAAcrB,OAAd,EAAuBC,OAAO,CAACa,MAAR,CAAeuB,UAAtC;AACA,WAAO;AAAE5B,MAAAA,OAAO,EAAEgC;AAAX,KAAP;AACD;AACF;AAED,OAAO,SAASA,oBAAT,CAA+BzC,OAA/B,EAAwCC,OAAxC,EAAiDC,KAAjD,EAAwD;AAC7D,MAAID,OAAO,CAACW,MAAR,KAAmB,iBAAvB,EAA0C;AACxCrC,IAAAA,WAAW,CAACyB,OAAD,EAAUC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb,KAA9B,CAAX;AACA,WAAO;AAAEO,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;AACF;AAED,OAAO,eAAeA,WAAf,CAA4BV,OAA5B,EAAqCC,OAArC,EAA8CC,KAA9C,EAAqD;AAC1D,UAAQD,OAAO,CAACW,MAAhB;AACE,SAAK,eAAL;AACE,cAAQX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAA5B;AACE,aAAK,QAAL;AACA,aAAK,kBAAL;AACA,aAAK,iBAAL;AACE,iBAAO;AAAEP,YAAAA,OAAO,EAAEiC;AAAX,WAAP;;AACF,aAAK,qBAAL;AACA,aAAK,iBAAL;AACA,aAAK,oBAAL;AACA,aAAK,gBAAL;AACA,aAAK,mBAAL;AACA,aAAK,uBAAL;AACA,aAAK,MAAL;AACE;AACA;AACA;AACA;AACAhE,UAAAA,IAAI,CAACsB,OAAD,EAAUC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAA9B,CAAJ;AACA,iBAAO;AAAEP,YAAAA,OAAO,EAAEC;AAAX,WAAP;;AACF,aAAK,QAAL;AACE7B,UAAAA,KAAK,CAACwC,GAAN,CAAUrB,OAAV,EAAmBC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBO,MAAvC;AACA,iBAAO;AAAEb,YAAAA,OAAO,EAAEC;AAAX,WAAP;;AACF,aAAK,SAAL;AACA,aAAK,cAAL;AACE,iBAAO;AAAED,YAAAA,OAAO,EAAEC;AAAX,WAAP;;AACF,aAAK,SAAL;AACEpC,UAAAA,YAAY,CAAC0B,OAAD,EAAU,SAAV,CAAZ;AACA,iBAAO;AAAES,YAAAA,OAAO,EAAEC;AAAX,WAAP;;AACF,aAAK,kBAAL;AACEpC,UAAAA,YAAY,CAAC0B,OAAD,EAAU,QAAV,CAAZ;AACA,iBAAO;AAAES,YAAAA,OAAO,EAAEe;AAAX,WAAP;;AACF,aAAK,MAAL;AACElD,UAAAA,YAAY,CAAC0B,OAAD,EAAU,MAAV,CAAZ;AACA,iBAAO;AAAES,YAAAA,OAAO,EAAEe;AAAX,WAAP;;AACF,aAAK,UAAL;AACE,iBAAO;AAAEf,YAAAA,OAAO,EAAEC;AAAX,WAAP;AAlCJ;;AAoCA;;AACF,SAAK,sBAAL;AACEhC,MAAAA,IAAI,CAACsB,OAAD,EAAU,WAAV,EAAuBC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAA3C,EAA+C;AACjD6C,QAAAA,IAAI,EAAElC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBoB,IADuB;AAEjDK,QAAAA,IAAI,EAAEvC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByB;AAFuB,OAA/C,CAAJ;AAIA,aAAO;AAAE/B,QAAAA,OAAO,EAAEC;AAAX,OAAP;;AACF,SAAK,gBAAL;AACE;AACA,aAAO;AAAED,QAAAA,OAAO,EAAEC;AAAX,OAAP;;AACF,SAAK,iBAAL;AACEnC,MAAAA,WAAW,CAACyB,OAAD,EAAUC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb,KAA9B,CAAX;AACA,aAAO;AAAEO,QAAAA,OAAO,EAAEC;AAAX,OAAP;;AACF,SAAK,iCAAL;AACE,aAAOgC,qBAAqB,CAAC1C,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA5B;AApDJ;AAsDD;;AACDQ,WAAW,CAACiC,KAAZ,GAAqB3C,OAAD,IAAa;AAC/B1B,EAAAA,YAAY,CAAC0B,OAAD,EAAU,MAAV,CAAZ;AACD,CAFD;;AAIA,OAAO,eAAe4C,kBAAf,CAAmC5C,OAAnC,EAA4CC,OAA5C,EAAqDC,KAArD,EAA4D;AACjE,MAAID,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7C,UAAM;AAAEoB,MAAAA;AAAF,QAAW9B,KAAjB;;AACA,QAAID,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAxB,EAA4B;AAC1B,YAAMM,QAAQ,GAAG,MAAMoC,IAAI,CAAC/B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAArB,EAAyB;AAAEuD,QAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,OAAzB,CAA3B;AACApE,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAExB,UAAAA,EAAE,EAAEM;AAAN;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEqC,sBAAX;AAAmC5C,QAAAA;AAAnC,OAAP;AACD;;AACD,UAAMN,QAAQ,GAAG,MAAMP,eAAe,CAACY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SAArB,EAAgCpC,EAAE,IACtE0C,IAAI,CAAC1C,EAAD,EAAK;AAAEuD,MAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,KAAL,CADgC,CAAtC;;AAGA,QAAI,OAAOjD,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAEY,UAAAA,SAAS,EAAE9B;AAAb;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEqC,sBAAX;AAAmC5C,QAAAA;AAAnC,OAAP;AACD;;AACD,QAAI,OAAON,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAEiC,UAAAA,KAAK,EAAEnD;AAAT;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEmC,kBAAX;AAA+B1C,QAAAA;AAA/B,OAAP;AACD;AACF;;AACD,MAAID,OAAO,CAACW,MAAR,KAAmB,gBAAvB,EAAyC;AACvCV,IAAAA,KAAK,CAACC,MAAN,CAAa,IAAIhB,sBAAJ,CAA2Bc,OAAO,CAACc,IAAR,CAAad,OAAxC,CAAb;AACA,WAAO;AAAEQ,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAAC8C,KAAZ,EAAmB;AACjB,UAAM;AAAEhC,MAAAA,IAAI,GAAG;AAAT,QAAgBd,OAAO,CAAC8C,KAA9B;;AACA,QAAIhC,IAAI,CAACiC,IAAL,CAAUC,CAAC,IAAIA,CAAC,CAACC,IAAF,KAAW,IAA1B,CAAJ,EAAqC;AACnChD,MAAAA,KAAK,CAACC,MAAN,CAAa,IAAIjB,wBAAJ,CAA6B,sBAA7B,CAAb;AACD,KAFD,MAEO,IAAI6B,IAAI,CAACiC,IAAL,CAAUC,CAAC,IAAIA,CAAC,CAACC,IAAF,KAAW,IAA1B,CAAJ,EAAqC;AAC1ChD,MAAAA,KAAK,CAACC,MAAN,CAAa,IAAIlB,oBAAJ,CAAyB,2BAAzB,CAAb;AACD,KAFM,MAEA;AACLiB,MAAAA,KAAK,CAACC,MAAN,CAAa,IAAIhB,sBAAJ,CAA2Bc,OAAO,CAAC8C,KAAR,CAAc9C,OAAzC,CAAb;AACD;;AACD,WAAO;AAAEQ,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,mBAAvB,EAA4C;AAC1CV,IAAAA,KAAK,CAACiD,OAAN,CAAc;AACZC,MAAAA,QAAQ,EAAE,KADE;AAEZC,MAAAA,SAAS,EAAEpD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBuC,UAFnB;AAGZC,MAAAA,YAAY,EAAEtD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByC;AAHtB,KAAd;AAKA,WAAO;AAAE/C,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,gBAAlC,EAAoD;AAClDd,MAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAd;AACA,aAAO;AAAE3C,QAAAA,OAAO,EAAEC;AAAX,OAAP;AACD;AACF;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAAS4C,sBAAT,CAAiC9C,OAAjC,EAA0CC,OAA1C,EAAmDC,KAAnD,EAA0D;AAC/D,MAAID,OAAO,CAACW,MAAR,KAAmB,iBAAvB,EAA0C;AACxCrC,IAAAA,WAAW,CAACyB,OAAD,EAAUC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb,KAA9B,CAAX;AACAA,IAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,MAAAA,QAAQ,EAAE,IAAZ;AAAkBxD,MAAAA,QAAQ,EAAEK,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb;AAAhD,KAAd;AACA,WAAO;AAAEO,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,mBAAvB,EAA4C;AAC1CV,IAAAA,KAAK,CAACiD,OAAN,CAAc;AACZC,MAAAA,QAAQ,EAAE,KADE;AAEZC,MAAAA,SAAS,EAAEpD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBuC,UAFnB;AAGZC,MAAAA,YAAY,EAAEtD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByC;AAHtB,KAAd;AAKA,WAAO;AAAE/C,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,gBAAlC,EAAoD;AAClDd,MAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAd;AACA,aAAO;AAAE3C,QAAAA,OAAO,EAAEC;AAAX,OAAP;AACD;AACF;;AACD,MAAIT,OAAO,CAAC8C,KAAZ,EAAmB;AACjB7C,IAAAA,KAAK,CAACC,MAAN,CAAa,IAAIhB,sBAAJ,CAA2Bc,OAAO,CAAC8C,KAAR,CAAc9C,OAAzC,CAAb;AACA,WAAO;AAAEQ,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,eAAewC,qBAAf,CAAsC1C,OAAtC,EAA+CC,OAA/C,EAAwDC,KAAxD,EAA+D;AACpE,QAAM,GAAGyB,GAAH,IAAU1B,OAAO,CAACW,MAAR,CAAe6C,KAAf,CAAqB,2BAArB,KAAqD,EAArE;;AACA,MAAI9B,GAAJ,EAAS;AACP,QAAI1B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAxB,EAA4B;AAC1B,YAAMM,QAAQ,GAAG,MAAMvB,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqBgC,IAArB,CAA0BL,GAA1B,EAA+B1B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAnD,EAAuD;AAC5EuD,QAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAD+C,OAAvD,CAAvB;;AAGA,UAAIjD,QAAJ,EAAc;AACZnB,QAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,UAAAA,OAAO,EAAE,KAAX;AAAkBrB,UAAAA,MAAM,EAAG,YAAWe,GAAI,EAA1C;AAA6Cb,UAAAA,MAAM,EAAE;AAAExB,YAAAA,EAAE,EAAEM;AAAN;AAArD,SAAV,CAAJ;AACA,eAAO;AAAEa,UAAAA,OAAO,EAAEC;AAAX,SAAP;AACD;AACF,KARD,MAQO;AACL,YAAMd,QAAQ,GAAG,MAAMP,eAAe,CAACY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SAArB,EAAgCpC,EAAE,IACtEjB,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqBgC,IAArB,CAA0BL,GAA1B,EAA+BrC,EAA/B,EAAmC;AAAEuD,QAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,OAAnC,CADoC,CAAtC;;AAGA,UAAI,OAAOjD,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,QAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,UAAAA,OAAO,EAAE,KAAX;AAAkBrB,UAAAA,MAAM,EAAG,YAAWe,GAAI,EAA1C;AAA6Cb,UAAAA,MAAM,EAAE;AAAEY,YAAAA,SAAS,EAAE9B;AAAb;AAArD,SAAV,CAAJ;AACA,eAAO;AAAEa,UAAAA,OAAO,EAAEC;AAAX,SAAP;AACD;;AACD,UAAI,OAAOd,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,QAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,UAAAA,OAAO,EAAE,KAAX;AAAkBrB,UAAAA,MAAM,EAAG,YAAWe,GAAI,EAA1C;AAA6Cb,UAAAA,MAAM,EAAE;AAAEiC,YAAAA,KAAK,EAAEnD;AAAT;AAArD,SAAV,CAAJ;AACA,eAAO;AAAEa,UAAAA,OAAO,EAAEiD,sBAAX;AAAmCxD,UAAAA;AAAnC,SAAP;AACD;AACF,KArBM,CAsBP;;;AACAzB,IAAAA,IAAI,CAACuB,OAAD,EAAU;AACZiC,MAAAA,OAAO,EAAE,KADG;AAEZrB,MAAAA,MAAM,EAAE,qBAFI;AAGZE,MAAAA,MAAM,EAAE;AACN6C,QAAAA,IAAI,EAAExF,eAAe,GAAGyF,SADlB;AAENC,QAAAA,EAAE,EAAE1F,eAAe,GAAGyF,SAFhB;AAGNE,QAAAA,MAAM,EAAE;AAHF;AAHI,KAAV,CAAJ;AASA,WAAO;AAAErD,MAAAA,OAAO,EAAEiD,sBAAX;AAAmCxD,MAAAA;AAAnC,KAAP;AACD;;AACD,SAAOH,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAASwD,sBAAT,CAAiC1D,OAAjC,EAA0CC,OAA1C,EAAmDC,KAAnD,EAA0D;AAC/D,MAAID,OAAO,CAAC8C,KAAZ,EAAmB;AACjB,WAAO;AAAEtC,MAAAA,OAAO,EAAEiD,sBAAX;AAAmCxD,MAAAA;AAAnC,KAAP;AACD;;AACD,MAAID,OAAO,CAACW,MAAR,KAAmB,mBAAvB,EAA4C;AAC1C,WAAO;AAAEH,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,eAAe6D,kBAAf,CAAmC/D,OAAnC,EAA4CC,OAA5C,EAAqDC,KAArD,EAA4D;AACjE,MAAID,OAAO,CAACW,MAAR,KAAmB,6BAAvB,EAAsD;AACpD,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAxB,EAA4B;AAC1B,YAAMM,QAAQ,GAAG,MAAMM,KAAK,CAAC8B,IAAN,CAAW/B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAA/B,CAAvB;AACAb,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,wBAA1B;AAAoDE,QAAAA,MAAM,EAAE;AAAExB,UAAAA,EAAE,EAAEM;AAAN;AAA5D,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEuD,yBAAX;AAAsC9D,QAAAA;AAAtC,OAAP;AACD;;AACD,UAAMN,QAAQ,GAAG,MAAMP,eAAe,CAACY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SAArB,EAAgCpC,EAAE,IAAIY,KAAK,CAAC8B,IAAN,CAAW1C,EAAX,CAAtC,CAAtC;AACAb,IAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,MAAAA,OAAO,EAAE,KAAX;AAAkBrB,MAAAA,MAAM,EAAE,wBAA1B;AAAoDE,MAAAA,MAAM,EAAE;AAAEY,QAAAA,SAAS,EAAE9B;AAAb;AAA5D,KAAV,CAAJ;AACA,WAAO;AAAEa,MAAAA,OAAO,EAAEuD,yBAAX;AAAsC9D,MAAAA;AAAtC,KAAP;AACD;;AACD,SAAOH,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAAS8D,yBAAT,CAAoChE,OAApC,EAA6CC,OAA7C,EAAsDC,KAAtD,EAA6D;AAClE,MAAID,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7C;AACA,WAAO;AAAEH,MAAAA,OAAO,EAAEe,aAAX;AAA0BtB,MAAAA;AAA1B,KAAP;AACD;;AACD,SAAOH,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAAS+D,aAAT,CAAwBjE,OAAxB,EAAiCC,OAAjC,EAA0CC,KAA1C,EAAiD;AACtD,MAAID,OAAO,CAACW,MAAR,KAAmB,gBAAvB,EAAyC;AACvCV,IAAAA,KAAK,CAACiD,OAAN,CAAc;AAAExE,MAAAA,SAAS,EAAEsB,OAAO,CAACa,MAAR,CAAeuB,UAA5B;AAAwCzC,MAAAA,QAAQ,EAAEK,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb;AAAtE,KAAd;AACAtB,IAAAA,UAAU,CAACoB,OAAD,CAAV;AACA,WAAO;AAAES,MAAAA,OAAO,EAAEe;AAAX,KAAP;AACD;;AACD,MAAIvB,OAAO,CAACW,MAAR,KAAmB,gBAAvB,EAAyC;AACvCV,IAAAA,KAAK,CAACC,MAAN,CAAa,IAAIhB,sBAAJ,CAA2Bc,OAAO,CAACc,IAAR,CAAad,OAAxC,CAAb;AACA,WAAO;AAAEQ,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,eAAegE,kBAAf,CAAmClE,OAAnC,EAA4CC,OAA5C,EAAqDC,KAArD,EAA4D;AACjE,MAAID,OAAO,CAACW,MAAR,KAAmB,2BAAvB,EAAoD;AAClD,UAAM;AAAEoB,MAAAA;AAAF,QAAW9B,KAAjB;;AACA,QAAID,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAxB,EAA4B;AAC1B,YAAMM,QAAQ,GAAG,MAAMoC,IAAI,CAAC/B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAArB,EAAyB;AAAEuD,QAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,OAAzB,CAA3B;AACApE,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,sBAA1B;AAAkDE,QAAAA,MAAM,EAAE;AAAExB,UAAAA,EAAE,EAAEM;AAAN;AAA1D,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAE0D,0BAAX;AAAuCjE,QAAAA;AAAvC,OAAP;AACD;;AACD,UAAMN,QAAQ,GAAG,MAAMP,eAAe,CAACY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SAArB,EAAgCpC,EAAE,IACtE0C,IAAI,CAAC1C,EAAD,EAAK;AAAEuD,MAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,KAAL,CADgC,CAAtC;;AAGA,QAAI,OAAOjD,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,sBAA1B;AAAkDE,QAAAA,MAAM,EAAE;AAAEY,UAAAA,SAAS,EAAE9B;AAAb;AAA1D,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAE0D,0BAAX;AAAuCjE,QAAAA;AAAvC,OAAP;AACD;;AACD,QAAI,OAAON,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,sBAA1B;AAAkDE,QAAAA,MAAM,EAAE;AAAEiC,UAAAA,KAAK,EAAEnD;AAAT;AAA1D,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAE0D,0BAAX;AAAuCjE,QAAAA;AAAvC,OAAP;AACD;AACF;;AACD,SAAOH,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAASiE,0BAAT,CAAqCnE,OAArC,EAA8CC,OAA9C,EAAuDC,KAAvD,EAA8D;AACnE,MAAID,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7C,QAAIV,KAAK,CAACkE,WAAV,EAAuB;AACrBlE,MAAAA,KAAK,CAACkE,WAAN,CAAkBnE,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAtC;AACD;;AACD,WAAO;AAAEmB,MAAAA,OAAO,EAAE0D,0BAAX;AAAuCjE,MAAAA;AAAvC,KAAP;AACD;;AACD,MAAID,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAI,CAAC,qBAAD,EAAwB,iBAAxB,EAA2CC,QAA3C,CAAoDZ,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAAxE,CAAJ,EAAoF;AAClF,YAAMqD,QAAQ,GAAG;AACfC,QAAAA,mBAAmB,EAAEpE,KAAK,CAACqE,mBADZ;AAEfC,QAAAA,eAAe,EAAEtE,KAAK,CAACuE;AAFR,QAGfxE,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAHL,CAAjB;;AAIA,UAAIqD,QAAJ,EAAc;AACZA,QAAAA,QAAQ;AACT;;AACD,aAAO;AAAE5D,QAAAA,OAAO,EAAE0D,0BAAX;AAAuCjE,QAAAA;AAAvC,OAAP;AACD;AACF;;AACD,MAAID,OAAO,CAACW,MAAR,KAAmB,iBAAvB,EAA0C;AACxCrC,IAAAA,WAAW,CAACyB,OAAD,EAAUC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb,KAA9B,CAAX;AACAA,IAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,MAAAA,QAAQ,EAAE,IAAZ;AAAkBxD,MAAAA,QAAQ,EAAEK,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb;AAAhD,KAAd;AACA,WAAO;AAAEO,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,mBAAvB,EAA4C;AAC1CV,IAAAA,KAAK,CAACiD,OAAN,CAAc;AACZC,MAAAA,QAAQ,EAAE,KADE;AAEZC,MAAAA,SAAS,EAAEpD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBuC,UAFnB;AAGZC,MAAAA,YAAY,EAAEtD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByC;AAHtB,KAAd;AAKA,WAAO;AAAE/C,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,gBAAlC,EAAoD;AAClDd,MAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAd;AACA,aAAO;AAAE3C,QAAAA,OAAO,EAAEC;AAAX,OAAP;AACD;AACF;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,eAAewE,iBAAf,CAAkC1E,OAAlC,EAA2CC,OAA3C,EAAoDC,KAApD,EAA2D;AAChE,MAAID,OAAO,CAACW,MAAR,KAAmB,0BAAvB,EAAmD;AACjD,UAAM;AAAEoB,MAAAA;AAAF,QAAW9B,KAAjB;;AACA,QAAID,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAxB,EAA4B;AAC1B,YAAMM,QAAQ,GAAG,MAAMoC,IAAI,CAAC/B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAArB,EAAyB;AAAEuD,QAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,OAAzB,CAA3B;AACApE,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,qBAA1B;AAAiDE,QAAAA,MAAM,EAAE;AAAExB,UAAAA,EAAE,EAAEM;AAAN;AAAzD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEkE,yBAAX;AAAsCzE,QAAAA;AAAtC,OAAP;AACD;;AACD,UAAMN,QAAQ,GAAG,MAAMP,eAAe,CAACY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SAArB,EAAgCpC,EAAE,IACtE0C,IAAI,CAAC1C,EAAD,EAAK;AAAEuD,MAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,KAAL,CADgC,CAAtC;;AAGA,QAAI,OAAOjD,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,qBAA1B;AAAiDE,QAAAA,MAAM,EAAE;AAAEY,UAAAA,SAAS,EAAE9B;AAAb;AAAzD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEkE,yBAAX;AAAsCzE,QAAAA;AAAtC,OAAP;AACD;;AACD,QAAI,OAAON,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,qBAA1B;AAAiDE,QAAAA,MAAM,EAAE;AAAEiC,UAAAA,KAAK,EAAEnD;AAAT;AAAzD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEkE,yBAAX;AAAsCzE,QAAAA;AAAtC,OAAP;AACD;AACF;;AACD,SAAOH,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAASyE,yBAAT,CAAoC3E,OAApC,EAA6CC,OAA7C,EAAsDC,KAAtD,EAA6D;AAClE,MAAID,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7C,QAAIV,KAAK,CAACkE,WAAV,EAAuB;AACrBlE,MAAAA,KAAK,CAACkE,WAAN,CAAkBnE,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAtC;AACD;;AACD,WAAO;AAAEmB,MAAAA,OAAO,EAAEkE,yBAAX;AAAsCzE,MAAAA;AAAtC,KAAP;AACD;;AACD,MAAID,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAI,CAAC,oBAAD,EAAuB,gBAAvB,EAAyCC,QAAzC,CAAkDZ,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAAtE,CAAJ,EAAkF;AAChF,YAAMqD,QAAQ,GAAG;AACfO,QAAAA,kBAAkB,EAAE1E,KAAK,CAAC2E,kBADX;AAEfC,QAAAA,cAAc,EAAE5E,KAAK,CAAC6E;AAFP,QAGf9E,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAHL,CAAjB;;AAIA,UAAIqD,QAAJ,EAAc;AACZA,QAAAA,QAAQ;AACT;;AACD,aAAO;AAAE5D,QAAAA,OAAO,EAAEkE,yBAAX;AAAsCzE,QAAAA;AAAtC,OAAP;AACD;AACF;;AACD,MAAID,OAAO,CAACW,MAAR,KAAmB,iBAAvB,EAA0C;AACxCrC,IAAAA,WAAW,CAACyB,OAAD,EAAUC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb,KAA9B,CAAX;AACAA,IAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,MAAAA,QAAQ,EAAE,IAAZ;AAAkBxD,MAAAA,QAAQ,EAAEK,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb;AAAhD,KAAd;AACA,WAAO;AAAEO,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,mBAAvB,EAA4C;AAC1CV,IAAAA,KAAK,CAACiD,OAAN,CAAc;AACZC,MAAAA,QAAQ,EAAE,KADE;AAEZC,MAAAA,SAAS,EAAEpD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBuC,UAFnB;AAGZC,MAAAA,YAAY,EAAEtD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByC;AAHtB,KAAd;AAKA,WAAO;AAAE/C,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,gBAAlC,EAAoD;AAClDd,MAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAd;AACA,aAAO;AAAE3C,QAAAA,OAAO,EAAEC;AAAX,OAAP;AACD;AACF;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,eAAe8E,qBAAf,CAAsChF,OAAtC,EAA+CC,OAA/C,EAAwDC,KAAxD,EAA+D;AACpE,MAAID,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7C,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAxB,EAA4B;AAC1B,YAAMM,QAAQ,GAAG,MAAMM,KAAK,CAAC8B,IAAN,CAAW/B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAA/B,CAAvB;AACAb,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAExB,UAAAA,EAAE,EAAEM;AAAN;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEwE,6BAAX;AAA0C/E,QAAAA;AAA1C,OAAP;AACD;;AACD,UAAMN,QAAQ,GAAG,MAAMP,eAAe,CAACY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SAArB,EAAgCpC,EAAE,IAAIY,KAAK,CAAC8B,IAAN,CAAW1C,EAAX,CAAtC,CAAtC;;AACA,QAAI,OAAOM,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAEY,UAAAA,SAAS,EAAE9B;AAAb;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEwE,6BAAX;AAA0C/E,QAAAA;AAA1C,OAAP;AACD;;AACD,QAAI,OAAON,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAEiC,UAAAA,KAAK,EAAEnD;AAAT;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAEwE,6BAAX;AAA0C/E,QAAAA;AAA1C,OAAP;AACD;AACF;;AACD,SAAOH,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAAS+E,6BAAT,CAAwCjF,OAAxC,EAAiDC,OAAjD,EAA0DC,KAA1D,EAAiE;AACtE,MAAID,OAAO,CAACW,MAAR,KAAmB,iBAAvB,EAA0C;AACxC,UAAM;AAAEsE,MAAAA;AAAF,QAAYpG,QAAQ,CAACmB,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb,KAArB,CAAR,CAAoCZ,EAApC,CAAuCG,SAAvC,CAAiDH,EAAnE;AACA,UAAM6F,KAAK,GAAG9G,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqB;AACjC4B,MAAAA,SAAS,EAAE,aADsB;AAEjCC,MAAAA,SAAS,EAAE;AAFsB,MAGjCxD,OAAO,CAACyD,GAAR,CAAY9B,OAAZ,EAAqB+B,IAHY,CAArB,CAAd;AAIAxD,IAAAA,WAAW,CAACyB,OAAD,EAAUC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb,KAA9B,CAAX;AACAA,IAAAA,KAAK,CAACiD,OAAN,CAAc;AACZC,MAAAA,QAAQ,EAAE,IADE;AAEZgC,MAAAA,OAAO,EAAEhH,qBAAqB,CAAC+G,KAAD,EAAQD,KAAR,CAFlB;AAGZtF,MAAAA,QAAQ,EAAEK,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb;AAHlB,KAAd;AAKA,WAAO;AAAEO,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,mBAAvB,EAA4C;AAC1CV,IAAAA,KAAK,CAACiD,OAAN,CAAc;AACZC,MAAAA,QAAQ,EAAE,KADE;AAEZC,MAAAA,SAAS,EAAEpD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBuC,UAFnB;AAGZC,MAAAA,YAAY,EAAEtD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByC;AAHtB,KAAd;AAKA,WAAO;AAAE/C,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,gBAAlC,EAAoD;AAClDd,MAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAd;AACA,aAAO;AAAE3C,QAAAA,OAAO,EAAEC;AAAX,OAAP;AACD;AACF;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,eAAemF,4BAAf,CAA6CrF,OAA7C,EAAsDC,OAAtD,EAA+DC,KAA/D,EAAsE;AAC3E,MAAID,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7C,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAAxB,EAA4B;AAC1B,YAAMM,QAAQ,GAAG,MAAMM,KAAK,CAAC8B,IAAN,CACrB/B,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EADC,EACG;AAAEuD,QAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,OADH,CAAvB;AAGApE,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAExB,UAAAA,EAAE,EAAEM;AAAN;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAE6E,8BAAX;AAA2CpF,QAAAA;AAA3C,OAAP;AACD;;AACD,UAAMN,QAAQ,GAAG,MAAMP,eAAe,CACpCY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SADgB,EAEpCpC,EAAE,IAAIY,KAAK,CAAC8B,IAAN,CAAW1C,EAAX,EAAe;AAAEuD,MAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,KAAf,CAF8B,CAAtC;;AAIA,QAAI,OAAOjD,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAEY,UAAAA,SAAS,EAAE9B;AAAb;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAE6E,8BAAX;AAA2CpF,QAAAA;AAA3C,OAAP;AACD;;AACD,QAAI,OAAON,QAAP,KAAoB,QAAxB,EAAkC;AAChCnB,MAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,QAAAA,OAAO,EAAE,KAAX;AAAkBrB,QAAAA,MAAM,EAAE,iBAA1B;AAA6CE,QAAAA,MAAM,EAAE;AAAEiC,UAAAA,KAAK,EAAEnD;AAAT;AAArD,OAAV,CAAJ;AACA,aAAO;AAAEa,QAAAA,OAAO,EAAE6E,8BAAX;AAA2CpF,QAAAA;AAA3C,OAAP;AACD;AACF;;AACD,SAAOH,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,eAAeqF,uCAAf,CAAwDvF,OAAxD,EAAiEC,OAAjE,EAA0EC,KAA1E,EAAiF;AACtF,MAAID,OAAO,CAACW,MAAR,KAAmB,iCAAvB,EAA0D;AACxD,UAAMhB,QAAQ,GAAG,MAAMP,eAAe,CAACY,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBW,SAArB,EAAgCpC,EAAE,IACtEY,KAAK,CAAC8B,IAAN,CAAW1C,EAAX,EAAe;AAAEuD,MAAAA,OAAO,EAAE5C,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoB8B;AAA/B,KAAf,CADoC,CAAtC;AAGApE,IAAAA,IAAI,CAACuB,OAAD,EAAU;AAAEiC,MAAAA,OAAO,EAAE,KAAX;AAAkBrB,MAAAA,MAAM,EAAE,8BAA1B;AAA0DE,MAAAA,MAAM,EAAE;AAAEY,QAAAA,SAAS,EAAE9B;AAAb;AAAlE,KAAV,CAAJ;AACA,WAAO;AAAEa,MAAAA,OAAO,EAAE+E,+BAAX;AAA4CtF,MAAAA;AAA5C,KAAP;AACD;;AACD,SAAOH,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAASsF,+BAAT,CAA0CxF,OAA1C,EAAmDC,OAAnD,EAA4DC,KAA5D,EAAmE;AACxE,MAAID,OAAO,CAACW,MAAR,KAAmB,sBAAvB,EAA+C;AAC7C,QAAIV,KAAK,CAACkE,WAAV,EAAuB;AACrBlE,MAAAA,KAAK,CAACkE,WAAN,CAAkBnE,OAAO,CAACa,MAAR,CAAeC,IAAjC;AACD;;AACDrC,IAAAA,IAAI,CAACsB,OAAD,EAAU,WAAV,EAAuBC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAA3C,EAA+C;AACjD6C,MAAAA,IAAI,EAAElC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBoB,IADuB;AAEjDK,MAAAA,IAAI,EAAEvC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByB;AAFuB,KAA/C,CAAJ;AAIAtC,IAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,MAAAA,QAAQ,EAAE,IAAZ;AAAkB9D,MAAAA,EAAE,EAAEW,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB;AAA1C,KAAd;AACD;;AACD,SAAOS,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAASoF,8BAAT,CAAyCtF,OAAzC,EAAkDC,OAAlD,EAA2DC,KAA3D,EAAkE;AACvE,MAAID,OAAO,CAACW,MAAR,KAAmB,iBAAvB,EAA0C;AACxCrC,IAAAA,WAAW,CAACyB,OAAD,EAAUC,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb,KAA9B,CAAX;AACAA,IAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,MAAAA,QAAQ,EAAE,IAAZ;AAAkBxD,MAAAA,QAAQ,EAAEK,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBb;AAAhD,KAAd;AACA,WAAO;AAAEO,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,mBAAvB,EAA4C;AAC1CV,IAAAA,KAAK,CAACiD,OAAN,CAAc;AACZC,MAAAA,QAAQ,EAAE,KADE;AAEZC,MAAAA,SAAS,EAAEpD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBuC,UAFnB;AAGZC,MAAAA,YAAY,EAAEtD,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoByC;AAHtB,KAAd;AAKA,WAAO;AAAE/C,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACD,MAAIT,OAAO,CAACW,MAAR,KAAmB,eAAvB,EAAwC;AACtC,QAAIX,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,gBAAlC,EAAoD;AAClDd,MAAAA,KAAK,CAACiD,OAAN,CAAc;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAd;AACA,aAAO;AAAE3C,QAAAA,OAAO,EAAEC;AAAX,OAAP;AACD;AACF;;AACD,SAAOX,uBAAuB,CAACC,OAAD,EAAUC,OAAV,EAAmBC,KAAnB,CAA9B;AACD;AAED,OAAO,SAASuF,mBAAT,CAA8BC,QAA9B,EAAwCzF,OAAxC,EAAiDC,KAAjD,EAAwD;AAC7D,MAAID,OAAO,CAACW,MAAR,KAAmB,6BAAvB,EAAsD;AACpDV,IAAAA,KAAK,CAACiD,OAAN;AACA,WAAO;AAAE1C,MAAAA,OAAO,EAAEC;AAAX,KAAP;AACD;;AACDR,EAAAA,KAAK,CAACC,MAAN,CAAa,IAAIf,6BAAJ,CAAkC,6BAAlC,CAAb;AACA,SAAO;AAAEqB,IAAAA,OAAO,EAAEe;AAAX,GAAP;AACD;AAED,OAAO,SAASA,aAAT,CAAwBxB,OAAxB,EAAiCC,OAAjC,EAA0CC,KAA1C,EAAiD;AACtD,MAAI,CAACA,KAAL,EAAY,OAAO;AAAEO,IAAAA,OAAO,EAAEe;AAAX,GAAP;AACZ,MAAIvB,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,SAAlC,EAA6C,OAAO;AAAEP,IAAAA,OAAO,EAAEe,aAAX;AAA0BtB,IAAAA;AAA1B,GAAP;;AAC7C,MAAID,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBoB,IAApB,KAA6B,gBAAjC,EAAmD;AACjDjC,IAAAA,KAAK,CAACyF,OAAN,GAAgB1F,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBzB,EAApC;AACA,WAAO;AAAEmB,MAAAA,OAAO,EAAEe,aAAX;AAA0BtB,MAAAA;AAA1B,KAAP;AACD;;AACD,MAAID,OAAO,CAACa,MAAR,CAAeC,IAAf,CAAoBC,KAApB,KAA8B,kBAAlC,EAAsD;AACpDd,IAAAA,KAAK,CAACiD,OAAN,CAAcjD,KAAK,CAACyF,OAApB;AACA,WAAO;AAAElF,MAAAA,OAAO,EAAEe;AAAX,KAAP;AACD;;AACD,SAAO;AAAEf,IAAAA,OAAO,EAAEe,aAAX;AAA0BtB,IAAAA;AAA1B,GAAP;AACD","sourcesContent":["/*\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"],"file":"handlers.mjs"}
|