From a1b8fabd99c153552b9edf075ce1fc7e4facfe58 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Fri, 28 Jul 2017 10:25:34 +0200 Subject: [PATCH] Ui 2 packages (#6169) * Ensure all internal dapps have package.json * Update compilation rules # Conflicts: # js/src/redux/providers/balancesActions.js # js/src/ui/Form/TypedInput/typedInput.js * Remove SignerIcon * Cleanup providers * Enable request of new token from app * Queue when no token (yet) * Add location & token request * Cleanup send logic * Request token * Request comms token * Remove yarn.lock (not updated) * Update version to 1.99.99 (publish prepare) * Move jsonrpc to seperate repo * Update jsonrpc references * Update repo info * Update repo info * Additional debugging * Update repo references * Move ABI to js-abi repo * Move webWorker to shared * Fix package reference * Worker location * Move js-ui & js-shared components * Update file references * Update package repo locations * Remove debugging info * Cleanup debug * Split api into own repo * Update api local references * Update app loading * Update dependencies * Allow serving of /parity-utils * Error when EthereumProvider has not been attached * Use inject.js * Correct appId retrieval --- js/.gitignore | 1 + js/package-lock.json | 14 +- js/package.json | 10 +- js/packages/abi/README.md | 32 - js/packages/abi/abi.js | 20 - js/packages/abi/decoder/bytesTaken.js | 30 - js/packages/abi/decoder/bytesTaken.spec.js | 29 - js/packages/abi/decoder/decodeResult.js | 30 - js/packages/abi/decoder/decodeResult.spec.js | 29 - js/packages/abi/decoder/decoder.js | 156 - js/packages/abi/decoder/decoder.spec.js | 319 - js/packages/abi/decoder/index.js | 17 - js/packages/abi/encoder/encoder.js | 75 - js/packages/abi/encoder/encoder.spec.js | 291 - js/packages/abi/encoder/index.js | 17 - js/packages/abi/encoder/mediate.js | 142 - js/packages/abi/encoder/mediate.spec.js | 105 - js/packages/abi/index.js | 17 - js/packages/abi/package.json | 30 - js/packages/abi/spec/constructor.js | 36 - js/packages/abi/spec/constructor.spec.js | 52 - js/packages/abi/spec/event/decodedLog.js | 30 - js/packages/abi/spec/event/decodedLog.spec.js | 28 - js/packages/abi/spec/event/decodedLogParam.js | 45 - .../abi/spec/event/decodedLogParam.spec.js | 42 - js/packages/abi/spec/event/event.js | 114 - js/packages/abi/spec/event/event.spec.js | 111 - js/packages/abi/spec/event/eventParam.js | 41 - js/packages/abi/spec/event/eventParam.spec.js | 44 - js/packages/abi/spec/event/index.js | 17 - js/packages/abi/spec/function.js | 88 - js/packages/abi/spec/function.spec.js | 101 - js/packages/abi/spec/index.js | 17 - js/packages/abi/spec/interface.js | 77 - js/packages/abi/spec/interface.spec.js | 126 - js/packages/abi/spec/param.js | 42 - js/packages/abi/spec/param.spec.js | 47 - js/packages/abi/spec/paramType/format.js | 80 - js/packages/abi/spec/paramType/format.spec.js | 228 - js/packages/abi/spec/paramType/index.js | 17 - js/packages/abi/spec/paramType/paramType.js | 52 - .../abi/spec/paramType/paramType.spec.js | 87 - js/packages/abi/spec/paramType/types.js | 19 - js/packages/abi/token/index.js | 17 - js/packages/abi/token/token.js | 42 - js/packages/abi/token/token.spec.js | 75 - js/packages/abi/util/address.js | 66 - js/packages/abi/util/address.spec.js | 100 - js/packages/abi/util/pad.js | 77 - js/packages/abi/util/pad.spec.js | 124 - js/packages/abi/util/signature.js | 49 - js/packages/abi/util/signature.spec.js | 111 - js/packages/abi/util/slice.js | 31 - js/packages/abi/util/slice.spec.js | 44 - js/packages/abi/util/sliceAs.js | 47 - js/packages/abi/util/sliceAs.spec.js | 55 - js/packages/abi/util/types.js | 27 - js/packages/abi/util/types.spec.js | 62 - js/packages/api/README.md | 83 - js/packages/api/api.js | 206 - js/packages/api/api.spec.js | 47 - js/packages/api/contract/contract.js | 561 -- js/packages/api/contract/contract.spec.js | 598 -- js/packages/api/contract/index.js | 17 - js/packages/api/format/input.js | 242 - js/packages/api/format/input.spec.js | 341 - js/packages/api/format/output.js | 415 - js/packages/api/format/output.spec.js | 502 - js/packages/api/index.js | 17 - js/packages/api/library.js | 34 - js/packages/api/local/accounts/account.js | 112 - js/packages/api/local/accounts/accounts.js | 223 - js/packages/api/local/accounts/index.js | 21 - js/packages/api/local/ethkey/ethkey.js | 147 - js/packages/api/local/ethkey/ethkey.wasm.js | 1 - js/packages/api/local/ethkey/index.js | 47 - js/packages/api/local/ethkey/index.spec.js | 58 - js/packages/api/local/ethkey/worker.js | 138 - js/packages/api/local/ethkey/workerPool.js | 105 - js/packages/api/local/index.js | 17 - .../api/local/localAccountsMiddleware.js | 284 - .../api/local/localAccountsMiddleware.spec.js | 157 - js/packages/api/local/transactions.js | 147 - js/packages/api/local/transactions.spec.js | 85 - js/packages/api/package.json | 41 - js/packages/api/provider/http.js | 26 - js/packages/api/provider/index.js | 28 - js/packages/api/provider/postMessage.js | 102 - js/packages/api/provider/promise.js | 38 - js/packages/api/provider/ws.js | 26 - js/packages/api/pubsub/eth/eth.js | 227 - js/packages/api/pubsub/eth/index.js | 16 - js/packages/api/pubsub/index.js | 16 - js/packages/api/pubsub/net/index.js | 16 - js/packages/api/pubsub/net/net.js | 42 - js/packages/api/pubsub/parity/index.js | 16 - js/packages/api/pubsub/parity/parity.js | 355 - js/packages/api/pubsub/pubsub.js | 50 - js/packages/api/pubsub/pubsub.spec.js | 613 -- js/packages/api/pubsub/pubsubBase.js | 37 - js/packages/api/rpc/db/db.js | 43 - js/packages/api/rpc/db/db.spec.js | 38 - js/packages/api/rpc/db/index.js | 17 - js/packages/api/rpc/eth/eth.e2e.js | 170 - js/packages/api/rpc/eth/eth.js | 321 - js/packages/api/rpc/eth/eth.spec.js | 474 - js/packages/api/rpc/eth/index.js | 17 - js/packages/api/rpc/index.js | 26 - js/packages/api/rpc/net/index.js | 17 - js/packages/api/rpc/net/net.e2e.js | 46 - js/packages/api/rpc/net/net.js | 39 - js/packages/api/rpc/net/net.spec.js | 36 - js/packages/api/rpc/parity/index.js | 17 - js/packages/api/rpc/parity/parity.e2e.js | 79 - js/packages/api/rpc/parity/parity.js | 568 -- js/packages/api/rpc/parity/parity.spec.js | 146 - js/packages/api/rpc/personal/index.js | 17 - js/packages/api/rpc/personal/personal.e2e.js | 53 - js/packages/api/rpc/personal/personal.js | 46 - js/packages/api/rpc/personal/personal.spec.js | 75 - js/packages/api/rpc/shell/index.js | 17 - js/packages/api/rpc/shell/shell.js | 46 - js/packages/api/rpc/shh/index.js | 17 - js/packages/api/rpc/shh/shh.js | 91 - js/packages/api/rpc/signer/index.js | 17 - js/packages/api/rpc/signer/signer.js | 65 - js/packages/api/rpc/trace/index.js | 17 - js/packages/api/rpc/trace/trace.e2e.js | 45 - js/packages/api/rpc/trace/trace.js | 66 - js/packages/api/rpc/trace/trace.spec.js | 44 - js/packages/api/rpc/web3/index.js | 17 - js/packages/api/rpc/web3/web3.e2e.js | 44 - js/packages/api/rpc/web3/web3.js | 33 - js/packages/api/rpc/web3/web3.spec.js | 38 - js/packages/api/subscriptions/eth.js | 58 - js/packages/api/subscriptions/eth.spec.js | 101 - js/packages/api/subscriptions/index.js | 19 - js/packages/api/subscriptions/logging.js | 44 - js/packages/api/subscriptions/logging.spec.js | 49 - js/packages/api/subscriptions/manager.js | 137 - js/packages/api/subscriptions/manager.spec.js | 134 - js/packages/api/subscriptions/personal.js | 130 - .../api/subscriptions/personal.spec.js | 156 - js/packages/api/subscriptions/signer.js | 91 - js/packages/api/transport/error.js | 61 - js/packages/api/transport/http/http.e2e.js | 29 - js/packages/api/transport/http/http.js | 103 - js/packages/api/transport/http/http.spec.js | 142 - js/packages/api/transport/http/index.js | 17 - js/packages/api/transport/index.js | 28 - js/packages/api/transport/jsonRpcBase.js | 145 - js/packages/api/transport/jsonRpcBase.spec.js | 88 - js/packages/api/transport/middleware.js | 44 - js/packages/api/transport/middleware.spec.js | 62 - js/packages/api/transport/ws/index.js | 17 - js/packages/api/transport/ws/ws.e2e.js | 29 - js/packages/api/transport/ws/ws.js | 397 - js/packages/api/transport/ws/ws.spec.js | 116 - js/packages/api/util/decode.js | 95 - js/packages/api/util/decode.spec.js | 105 - js/packages/api/util/encode.js | 69 - js/packages/api/util/encode.spec.js | 90 - js/packages/api/util/format.js | 103 - js/packages/api/util/format.spec.js | 93 - js/packages/api/util/identity.js | 30 - js/packages/api/util/index.js | 51 - js/packages/api/util/sha3.js | 36 - js/packages/api/util/sha3.spec.js | 46 - js/packages/api/util/types.js | 60 - js/packages/api/util/types.spec.js | 118 - js/packages/api/util/wei.js | 37 - js/packages/api/util/wei.spec.js | 57 - js/packages/dapp-account/api.js | 4 + js/packages/dapp-account/package.json | 4 +- js/packages/dapp-accounts/api.js | 4 + js/packages/dapp-accounts/package.json | 6 +- js/packages/dapp-address/api.js | 4 + js/packages/dapp-address/package.json | 6 +- js/packages/dapp-addresses/api.js | 4 + js/packages/dapp-addresses/package.json | 6 +- js/packages/dapp-chaindeploy/package.json | 20 + js/packages/dapp-chaindeploy/parity.js | 5 + js/packages/dapp-console/package.json | 31 + js/packages/dapp-console/parity.js | 5 + js/packages/dapp-contract/api.js | 4 + js/packages/dapp-contract/package.json | 8 +- js/packages/dapp-contracts/api.js | 4 + js/packages/dapp-contracts/package.json | 6 +- js/packages/dapp-dappAccounts/api.js | 4 + js/packages/dapp-dappAccounts/package.json | 6 +- js/packages/dapp-dappMethods/api.js | 4 + js/packages/dapp-dappMethods/package.json | 6 +- js/packages/dapp-dappVisible/api.js | 4 + js/packages/dapp-dappVisible/package.json | 6 +- js/packages/dapp-dappreg/package.json | 20 + js/packages/dapp-dappreg/parity.js | 5 + js/packages/dapp-develop/api.js | 4 + js/packages/dapp-develop/package.json | 4 +- js/packages/dapp-githubhint/package.json | 20 + js/packages/dapp-githubhint/parity.js | 5 + js/packages/dapp-home/api.js | 4 + js/packages/dapp-home/package.json | 6 +- js/packages/dapp-localtx/package.json | 20 + js/packages/dapp-localtx/parity.js | 5 + js/packages/dapp-playground/api.js | 4 + js/packages/dapp-playground/package.json | 6 +- js/packages/dapp-registry/package.json | 20 + js/packages/dapp-registry/parity.js | 5 + js/packages/dapp-settings/api.js | 4 + js/packages/dapp-settings/package.json | 6 +- js/packages/dapp-signaturereg/package.json | 20 + js/packages/dapp-signaturereg/parity.js | 5 + js/packages/dapp-signer/api.js | 4 + js/packages/dapp-signer/package.json | 6 +- js/packages/dapp-status/api.js | 4 + js/packages/dapp-status/package.json | 6 +- js/packages/dapp-tokendeploy/package.json | 20 + js/packages/dapp-tokendeploy/parity.js | 5 + js/packages/dapp-tokenreg/package.json | 20 + js/packages/dapp-tokenreg/parity.js | 5 + js/packages/dapp-vaults/api.js | 4 + js/packages/dapp-vaults/package.json | 6 +- js/packages/dapp-wallet/api.js | 4 + js/packages/dapp-wallet/package.json | 6 +- js/packages/dapp-web/api.js | 5 + js/packages/dapp-web/package.json | 6 +- js/packages/dapps/index.ejs | 1 + js/packages/dapps/package.json | 4 +- js/packages/etherscan/package.json | 4 +- js/packages/jsonrpc/.gitignore | 1 - js/packages/jsonrpc/README.md | 21 - js/packages/jsonrpc/helpers.js | 92 - js/packages/jsonrpc/index.js | 37 - js/packages/jsonrpc/index.spec.js | 49 - js/packages/jsonrpc/interfaces/db.js | 107 - js/packages/jsonrpc/interfaces/eth.js | 1319 --- js/packages/jsonrpc/interfaces/net.js | 51 - js/packages/jsonrpc/interfaces/parity.js | 2059 ---- js/packages/jsonrpc/interfaces/personal.js | 101 - js/packages/jsonrpc/interfaces/shh.js | 179 - js/packages/jsonrpc/interfaces/signer.js | 237 - js/packages/jsonrpc/interfaces/trace.js | 376 - js/packages/jsonrpc/interfaces/web3.js | 46 - js/packages/jsonrpc/library.js | 19 - js/packages/jsonrpc/package.json | 28 - js/packages/jsonrpc/types.js | 200 - js/packages/ledger/package.json | 4 +- js/packages/shapeshift/package.json | 4 +- js/packages/shared/README.md | 1 - .../shared/assets/fonts/Roboto/LICENSE.txt | 202 - .../shared/assets/fonts/Roboto/font.css | 56 - .../assets/fonts/Roboto/ttf/Roboto-Black.ttf | Bin 163488 -> 0 bytes .../fonts/Roboto/ttf/Roboto-BlackItalic.ttf | Bin 165444 -> 0 bytes .../assets/fonts/Roboto/ttf/Roboto-Bold.ttf | Bin 162464 -> 0 bytes .../fonts/Roboto/ttf/Roboto-BoldItalic.ttf | Bin 163644 -> 0 bytes .../assets/fonts/Roboto/ttf/Roboto-Italic.ttf | Bin 161484 -> 0 bytes .../assets/fonts/Roboto/ttf/Roboto-Light.ttf | Bin 162420 -> 0 bytes .../fonts/Roboto/ttf/Roboto-LightItalic.ttf | Bin 166492 -> 0 bytes .../assets/fonts/Roboto/ttf/Roboto-Medium.ttf | Bin 162588 -> 0 bytes .../fonts/Roboto/ttf/Roboto-MediumItalic.ttf | Bin 165636 -> 0 bytes .../fonts/Roboto/ttf/Roboto-Regular.ttf | Bin 162876 -> 0 bytes .../assets/fonts/Roboto/ttf/Roboto-Thin.ttf | Bin 163132 -> 0 bytes .../fonts/Roboto/ttf/Roboto-ThinItalic.ttf | Bin 168276 -> 0 bytes ...6m6pUHB-5mXQQnYX0hVgzZQUfRDuZrPvH3D8.woff2 | Bin 788 -> 0 bytes ...6luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2 | Bin 10824 -> 0 bytes ...OxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2 | Bin 6832 -> 0 bytes ...tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2 | Bin 10324 -> 0 bytes ...Sg9YCurV6PUkTOYX0hVgzZQUfRDuZrPvH3D8.woff2 | Bin 5176 -> 0 bytes ...4gIq26G5XYbHsFIX0hVgzZQUfRDuZrPvH3D8.woff2 | Bin 3036 -> 0 bytes ...ShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2 | Bin 8040 -> 0 bytes .../assets/fonts/RobotoMono/LICENSE.txt | 202 - .../shared/assets/fonts/RobotoMono/font.css | 56 - .../fonts/RobotoMono/ttf/RobotoMono-Bold.ttf | Bin 114752 -> 0 bytes .../RobotoMono/ttf/RobotoMono-BoldItalic.ttf | Bin 122808 -> 0 bytes .../RobotoMono/ttf/RobotoMono-Italic.ttf | Bin 120832 -> 0 bytes .../fonts/RobotoMono/ttf/RobotoMono-Light.ttf | Bin 118976 -> 0 bytes .../RobotoMono/ttf/RobotoMono-LightItalic.ttf | Bin 127568 -> 0 bytes .../RobotoMono/ttf/RobotoMono-Medium.ttf | Bin 114696 -> 0 bytes .../ttf/RobotoMono-MediumItalic.ttf | Bin 123640 -> 0 bytes .../RobotoMono/ttf/RobotoMono-Regular.ttf | Bin 114624 -> 0 bytes .../fonts/RobotoMono/ttf/RobotoMono-Thin.ttf | Bin 118132 -> 0 bytes .../RobotoMono/ttf/RobotoMono-ThinItalic.ttf | Bin 121456 -> 0 bytes ...C58uwPiY8_59Fz-pRBTtN4E2_qSPBnw6AgMc.woff2 | Bin 3516 -> 0 bytes ...C58uwPiY8_59Fz0ExlR2MysFCBK8OirNw2kM.woff2 | Bin 12108 -> 0 bytes ...C58uwPiY8_59Fz2MSHb9EAJwuSzGfuRChQzQ.woff2 | Bin 5264 -> 0 bytes ...C58uwPiY8_59Fz2dsm03krrxlabhmVQFB99s.woff2 | Bin 6712 -> 0 bytes ...C58uwPiY8_59Fz9Dnm4qiMZlH5rhYv_7LI2Y.woff2 | Bin 8136 -> 0 bytes ...C58uwPiY8_59Fz9TIkQYohD4BpHvJ3NvbHoA.woff2 | Bin 11032 -> 0 bytes ...C58uwPiY8_59FzyJ0caWjaSBdV-xZbEgst_k.woff2 | Bin 740 -> 0 bytes .../assets/images/certifications/unknown.svg | 4 - .../images/contracts/ethereum-black-64x64.png | Bin 771 -> 0 bytes .../images/contracts/ethereum-black.png | Bin 147077 -> 0 bytes .../images/contracts/ethereum-white.png | Bin 22208 -> 0 bytes .../assets/images/contracts/unknown-64x64.png | Bin 2248 -> 0 bytes .../assets/images/contracts/unknown.png | Bin 34230 -> 0 bytes .../shared/assets/images/dapps/blocks-350.jpg | Bin 235011 -> 0 bytes .../shared/assets/images/dapps/close.svg | 12 - .../shared/assets/images/dapps/plus.svg | 12 - .../shared/assets/images/dapps/signature.png | Bin 2655 -> 0 bytes .../images/parity-logo-black-no-text.ico | Bin 674 -> 0 bytes .../images/parity-logo-black-no-text.png | Bin 4386 -> 0 bytes .../images/parity-logo-black-no-text.svg | 65 - .../assets/images/parity-logo-black.svg | 107 - .../images/parity-logo-white-no-text.svg | 66 - .../assets/images/parity-logo-white.svg | 100 - .../shared/assets/images/paritybar.png | Bin 1971 -> 0 bytes .../shared/assets/images/shapeshift-btn.png | Bin 22406 -> 0 bytes .../shared/assets/images/shapeshift-logo.png | Bin 15127 -> 0 bytes js/packages/shared/config/dappsBuiltin.json | 97 - js/packages/shared/config/dappsViews.json | 200 - js/packages/shared/config/defaultViews.js | 30 - js/packages/shared/config/index.js | 40 - .../shared/contracts/abi/badgereg.json | 1 - .../shared/contracts/abi/basiccoin.json | 1 - .../contracts/abi/basiccoinmanager.json | 1 - .../shared/contracts/abi/certifier.json | 1 - js/packages/shared/contracts/abi/dappreg.json | 1 - js/packages/shared/contracts/abi/eip20.json | 163 - .../contracts/abi/email-verification.json | 1 - js/packages/shared/contracts/abi/gavcoin.json | 1 - .../shared/contracts/abi/githubhint.json | 81 - js/packages/shared/contracts/abi/index.js | 31 - .../shared/contracts/abi/old-wallet.json | 466 - js/packages/shared/contracts/abi/owned.json | 1 - .../shared/contracts/abi/registry.json | 1 - .../shared/contracts/abi/registry2.json | 1 - .../shared/contracts/abi/signaturereg.json | 128 - .../contracts/abi/sms-verification.json | 1 - .../shared/contracts/abi/tokenreg.json | 1 - js/packages/shared/contracts/abi/wallet.json | 476 - js/packages/shared/contracts/badgereg.js | 128 - js/packages/shared/contracts/code/index.js | 21 - js/packages/shared/contracts/code/wallet.js | 32 - js/packages/shared/contracts/contracts.js | 79 - js/packages/shared/contracts/dappreg.js | 68 - js/packages/shared/contracts/githubhint.js | 46 - .../shared/contracts/githubhint.spec.js | 66 - js/packages/shared/contracts/index.js | 17 - js/packages/shared/contracts/registry.js | 165 - js/packages/shared/contracts/registry.spec.js | 86 - js/packages/shared/contracts/signaturereg.js | 34 - .../contracts/snippets/enhanced-wallet.sol | 464 - .../snippets/human-standard-token.sol | 60 - .../contracts/snippets/standard-token.sol | 55 - .../shared/contracts/snippets/token.sol | 47 - .../shared/contracts/snippets/wallet.sol | 403 - js/packages/shared/contracts/tokenreg.js | 44 - js/packages/shared/contracts/verification.js | 88 - js/packages/shared/environment/empty.js | 0 js/packages/shared/environment/index.js | 22 - .../integration-tests/fake-backend.js | 85 - .../environment/integration-tests/index.js | 17 - .../shared/environment/perf-debug/index.js | 17 - .../environment/perf-debug/why-update.js | 20 - js/packages/shared/environment/tests/index.js | 17 - .../shared/environment/tests/test-utils.js | 49 - js/packages/shared/mobx/hardwareStore.js | 165 - js/packages/shared/mobx/hardwareStore.spec.js | 253 - js/packages/shared/mobx/historyStore.js | 62 - js/packages/shared/mobx/historyStore.spec.js | 71 - js/packages/shared/package.json | 30 - js/packages/shared/redux/actions.js | 29 - js/packages/shared/redux/index.js | 23 - js/packages/shared/redux/middleware.js | 49 - .../shared/redux/providers/apiActions.js | 22 - .../shared/redux/providers/apiReducer.js | 27 - .../shared/redux/providers/balances.js | 348 - .../shared/redux/providers/balancesActions.js | 279 - .../shared/redux/providers/balancesReducer.js | 27 - .../redux/providers/certifications/actions.js | 31 - .../providers/certifications/middleware.js | 247 - .../redux/providers/certifications/reducer.js | 45 - .../shared/redux/providers/chainMiddleware.js | 60 - .../redux/providers/chainMiddleware.spec.js | 117 - js/packages/shared/redux/providers/index.js | 32 - .../shared/redux/providers/personal.js | 72 - .../shared/redux/providers/personalActions.js | 188 - .../shared/redux/providers/personalReducer.js | 61 - .../redux/providers/registry/actions.js | 28 - .../redux/providers/registry/middleware.js | 164 - .../redux/providers/registry/reducer.js | 35 - .../shared/redux/providers/requestsActions.js | 180 - .../redux/providers/requestsActions.spec.js | 111 - .../shared/redux/providers/requestsReducer.js | 43 - .../redux/providers/settings/actions.js | 29 - .../redux/providers/settings/middleware.js | 128 - .../redux/providers/settings/reducers.js | 40 - js/packages/shared/redux/providers/signer.js | 39 - .../shared/redux/providers/signerActions.js | 41 - .../redux/providers/signerMiddleware.js | 212 - .../redux/providers/signerMiddleware.spec.js | 221 - .../shared/redux/providers/signerReducer.js | 111 - .../shared/redux/providers/snackbarActions.js | 34 - .../shared/redux/providers/snackbarReducer.js | 44 - js/packages/shared/redux/providers/status.js | 292 - .../shared/redux/providers/statusActions.js | 29 - .../shared/redux/providers/statusReducer.js | 77 - .../shared/redux/providers/tokensActions.js | 91 - .../shared/redux/providers/tokensReducer.js | 34 - .../shared/redux/providers/walletActions.js | 520 - .../shared/redux/providers/walletReducer.js | 89 - js/packages/shared/redux/providers/worker.js | 92 - .../shared/redux/providers/workerActions.js | 29 - .../shared/redux/providers/workerReducer.js | 36 - .../shared/redux/providers/workerWrapper.js | 23 - js/packages/shared/redux/reducers.js | 50 - js/packages/shared/redux/store.js | 58 - js/packages/shared/redux/util.js | 21 - js/packages/shared/util/abi.js | 149 - js/packages/shared/util/constants.js | 32 - js/packages/shared/util/dapps.js | 202 - js/packages/shared/util/messages.js | 44 - js/packages/shared/util/notifications.js | 57 - js/packages/shared/util/proptypes.js | 38 - js/packages/shared/util/signer.js | 108 - js/packages/shared/util/solidity.js | 86 - .../shared/util/subscribe-to-events.js | 101 - .../shared/util/subscribe-to-events.spec.js | 137 - .../shared/util/subscribe-to-events.test.js | 53 - js/packages/shared/util/testnet.js | 24 - js/packages/shared/util/tokens.js | 134 - js/packages/shared/util/tx.js | 284 - js/packages/shared/util/validation.js | 232 - js/packages/shared/util/validation.spec.js | 333 - js/packages/shared/util/wallets.js | 405 - js/packages/ui/AccountCard/accountCard.css | 136 - .../ui/AccountCard/accountCard.example.js | 108 - js/packages/ui/AccountCard/accountCard.js | 220 - .../ui/AccountCard/accountCard.spec.js | 160 - js/packages/ui/AccountCard/index.js | 17 - js/packages/ui/Actionbar/Export/export.js | 61 - js/packages/ui/Actionbar/Export/index.js | 17 - js/packages/ui/Actionbar/Import/import.css | 21 - js/packages/ui/Actionbar/Import/import.js | 251 - js/packages/ui/Actionbar/Import/index.js | 17 - js/packages/ui/Actionbar/Search/index.js | 17 - js/packages/ui/Actionbar/Search/search.css | 42 - js/packages/ui/Actionbar/Search/search.js | 166 - js/packages/ui/Actionbar/Sort/index.js | 17 - js/packages/ui/Actionbar/Sort/sort.js | 124 - js/packages/ui/Actionbar/Sort/sortStore.js | 74 - js/packages/ui/Actionbar/actionbar.css | 40 - js/packages/ui/Actionbar/actionbar.js | 50 - js/packages/ui/Actionbar/actionbar.spec.js | 41 - js/packages/ui/Actionbar/index.js | 22 - js/packages/ui/Badge/badge.css | 36 - js/packages/ui/Badge/badge.js | 34 - js/packages/ui/Badge/badge.spec.js | 38 - js/packages/ui/Badge/index.js | 17 - js/packages/ui/Balance/balance.css | 80 - js/packages/ui/Balance/balance.js | 148 - js/packages/ui/Balance/balance.spec.js | 105 - js/packages/ui/Balance/index.js | 17 - js/packages/ui/BlockNumber/blockNumber.css | 21 - js/packages/ui/BlockNumber/blockNumber.js | 110 - js/packages/ui/BlockNumber/index.js | 17 - js/packages/ui/BlockNumber/store.js | 79 - .../ui/BlockTimestamp/blockTimestamp.css | 20 - .../ui/BlockTimestamp/blockTimestamp.js | 52 - js/packages/ui/BlockTimestamp/index.js | 17 - js/packages/ui/Button/button.css | 20 - js/packages/ui/Button/button.js | 62 - js/packages/ui/Button/button.spec.js | 42 - js/packages/ui/Button/index.js | 17 - .../ui/Certifications/certifications.css | 58 - .../ui/Certifications/certifications.js | 111 - js/packages/ui/Certifications/index.js | 17 - .../ui/ClientVersion/clientVersion.css | 20 - js/packages/ui/ClientVersion/clientVersion.js | 52 - js/packages/ui/ClientVersion/index.js | 17 - js/packages/ui/ClientVersion/store.js | 50 - .../ui/ConfirmDialog/confirmDialog.css | 20 - js/packages/ui/ConfirmDialog/confirmDialog.js | 94 - .../ui/ConfirmDialog/confirmDialog.spec.js | 131 - js/packages/ui/ConfirmDialog/index.js | 17 - .../ui/Container/Title/Actions/actions.js | 36 - .../ui/Container/Title/Actions/index.js | 17 - .../ui/Container/Title/Byline/byline.js | 45 - .../ui/Container/Title/Byline/index.js | 17 - .../Title/Description/description.js | 45 - .../ui/Container/Title/Description/index.js | 17 - js/packages/ui/Container/Title/index.js | 17 - js/packages/ui/Container/Title/title.css | 62 - js/packages/ui/Container/Title/title.js | 49 - js/packages/ui/Container/Title/title.spec.js | 46 - js/packages/ui/Container/container.css | 96 - js/packages/ui/Container/container.js | 146 - js/packages/ui/Container/container.spec.js | 38 - js/packages/ui/Container/index.js | 20 - .../ui/ContextProvider/contextProvider.js | 58 - js/packages/ui/ContextProvider/index.js | 1 - .../ui/CopyToClipboard/copyToClipboard.css | 34 - .../ui/CopyToClipboard/copyToClipboard.js | 122 - js/packages/ui/CopyToClipboard/index.js | 17 - .../CurrencySymbol/currencySymbol.example.js | 49 - .../ui/CurrencySymbol/currencySymbol.js | 58 - js/packages/ui/CurrencySymbol/index.js | 17 - js/packages/ui/DappCard/dappCard.css | 58 - js/packages/ui/DappCard/dappCard.js | 98 - js/packages/ui/DappCard/index.js | 17 - js/packages/ui/DappIcon/dappIcon.css | 33 - js/packages/ui/DappIcon/dappIcon.js | 54 - js/packages/ui/DappIcon/dappIcon.spec.js | 70 - js/packages/ui/DappIcon/index.js | 17 - js/packages/ui/DappLink/dappLink.css | 23 - js/packages/ui/DappLink/dappLink.js | 51 - js/packages/ui/DappLink/index.js | 17 - js/packages/ui/Editor/editor.js | 102 - js/packages/ui/Editor/index.js | 17 - js/packages/ui/Editor/mode-solidity.js | 1000 -- js/packages/ui/Errors/actions.js | 28 - js/packages/ui/Errors/errors.css | 26 - js/packages/ui/Errors/errors.js | 112 - js/packages/ui/Errors/index.js | 25 - js/packages/ui/Errors/middleware.js | 46 - js/packages/ui/Errors/reducers.js | 45 - js/packages/ui/Features/constants.js | 21 - js/packages/ui/Features/defaults.js | 84 - js/packages/ui/Features/defaults.spec.js | 67 - js/packages/ui/Features/features.css | 20 - js/packages/ui/Features/features.js | 70 - js/packages/ui/Features/features.spec.js | 85 - js/packages/ui/Features/index.js | 25 - js/packages/ui/Features/store.js | 73 - js/packages/ui/Features/store.spec.js | 96 - .../ui/Form/AddressSelect/addressSelect.css | 159 - .../ui/Form/AddressSelect/addressSelect.js | 639 -- .../Form/AddressSelect/addressSelectStore.js | 314 - js/packages/ui/Form/AddressSelect/index.js | 17 - js/packages/ui/Form/Checkbox/checkbox.js | 45 - js/packages/ui/Form/Checkbox/index.js | 17 - .../ui/Form/DappUrlInput/dappUrlInput.js | 62 - .../ui/Form/DappUrlInput/dappUrlInput.spec.js | 70 - js/packages/ui/Form/DappUrlInput/index.js | 17 - js/packages/ui/Form/Dropdown/dropdown.css | 21 - js/packages/ui/Form/Dropdown/dropdown.js | 77 - js/packages/ui/Form/Dropdown/index.js | 18 - js/packages/ui/Form/FileSelect/fileSelect.css | 52 - js/packages/ui/Form/FileSelect/fileSelect.js | 70 - .../ui/Form/FileSelect/fileSelect.spec.js | 118 - js/packages/ui/Form/FileSelect/index.js | 17 - js/packages/ui/Form/Input/index.js | 17 - js/packages/ui/Form/Input/input.css | 29 - js/packages/ui/Form/Input/input.js | 281 - js/packages/ui/Form/InputAddress/index.js | 17 - .../ui/Form/InputAddress/inputAddress.css | 68 - .../ui/Form/InputAddress/inputAddress.js | 196 - .../ui/Form/InputAddressSelect/index.js | 17 - .../InputAddressSelect/inputAddressSelect.js | 72 - js/packages/ui/Form/InputChip/Chip/chip.css | 49 - js/packages/ui/Form/InputChip/Chip/chip.js | 50 - js/packages/ui/Form/InputChip/Chip/index.js | 17 - js/packages/ui/Form/InputChip/index.js | 17 - js/packages/ui/Form/InputChip/inputChip.js | 150 - js/packages/ui/Form/InputDateTime/index.js | 17 - .../ui/Form/InputDateTime/inputDateTime.css | 19 - .../ui/Form/InputDateTime/inputDateTime.js | 61 - js/packages/ui/Form/Label/index.js | 17 - js/packages/ui/Form/Label/label.css | 26 - js/packages/ui/Form/Label/label.js | 45 - js/packages/ui/Form/LabelWrapper/index.js | 17 - .../ui/Form/LabelWrapper/labelWrapper.js | 41 - js/packages/ui/Form/PasswordStrength/index.js | 17 - .../PasswordStrength/passwordStrength.css | 24 - .../Form/PasswordStrength/passwordStrength.js | 123 - .../PasswordStrength/passwordStrength.spec.js | 62 - js/packages/ui/Form/RadioButtons/index.js | 17 - .../ui/Form/RadioButtons/radioButtons.css | 34 - .../ui/Form/RadioButtons/radioButtons.js | 77 - js/packages/ui/Form/Slider/index.js | 17 - js/packages/ui/Form/Slider/slider.css | 20 - js/packages/ui/Form/Slider/slider.js | 45 - js/packages/ui/Form/Tab/index.js | 17 - js/packages/ui/Form/Tab/tab.js | 42 - js/packages/ui/Form/Toggle/index.js | 17 - js/packages/ui/Form/Toggle/toggle.js | 43 - js/packages/ui/Form/TypedInput/index.js | 17 - js/packages/ui/Form/TypedInput/typedInput.css | 57 - js/packages/ui/Form/TypedInput/typedInput.js | 445 - .../ui/Form/TypedInput/typedInput.spec.js | 50 - .../Form/VaultSelect/VaultSelector/index.js | 17 - .../VaultSelector/vaultSelector.js | 101 - .../VaultSelector/vaultSelector.spec.js | 171 - js/packages/ui/Form/VaultSelect/index.js | 17 - .../ui/Form/VaultSelect/vaultSelect.js | 110 - .../ui/Form/VaultSelect/vaultSelect.spec.js | 90 - js/packages/ui/Form/form.css | 33 - js/packages/ui/Form/form.js | 41 - js/packages/ui/Form/index.js | 34 - .../ui/GasPriceEditor/gasPriceEditor.css | 89 - .../ui/GasPriceEditor/gasPriceEditor.js | 237 - .../ui/GasPriceEditor/gasPriceEditor.spec.js | 84 - js/packages/ui/GasPriceEditor/index.js | 17 - js/packages/ui/GasPriceEditor/store.js | 255 - js/packages/ui/GasPriceEditor/store.spec.js | 324 - .../GasPriceSelector/CustomBar/customBar.js | 78 - .../ui/GasPriceSelector/CustomBar/index.js | 17 - .../CustomCursor/customCursor.js | 75 - .../ui/GasPriceSelector/CustomCursor/index.js | 17 - .../CustomShape/customShape.js | 53 - .../ui/GasPriceSelector/CustomShape/index.js | 17 - .../CustomTooltip/customTooltip.js | 68 - .../GasPriceSelector/CustomTooltip/index.js | 17 - .../ui/GasPriceSelector/gasPriceSelector.css | 34 - .../ui/GasPriceSelector/gasPriceSelector.js | 371 - js/packages/ui/GasPriceSelector/index.js | 17 - js/packages/ui/GasPriceSelector/util.js | 35 - js/packages/ui/IconCache/iconCache.js | 54 - js/packages/ui/IconCache/index.js | 17 - js/packages/ui/Icons/index.js | 85 - js/packages/ui/Icons/index.spec.js | 28 - js/packages/ui/IdentityIcon/identityIcon.css | 58 - js/packages/ui/IdentityIcon/identityIcon.js | 148 - .../ui/IdentityIcon/identityIcon.spec.js | 99 - js/packages/ui/IdentityIcon/index.js | 17 - js/packages/ui/IdentityName/identityName.js | 89 - .../ui/IdentityName/identityName.spec.js | 83 - js/packages/ui/IdentityName/index.js | 17 - js/packages/ui/LanguageSelector/index.js | 17 - .../ui/LanguageSelector/languageSelector.js | 69 - .../LanguageSelector/langugeSelector.spec.js | 64 - js/packages/ui/List/Item/index.js | 17 - js/packages/ui/List/Item/item.css | 31 - js/packages/ui/List/Item/item.js | 61 - js/packages/ui/List/index.js | 17 - js/packages/ui/List/list.css | 19 - js/packages/ui/List/list.js | 60 - js/packages/ui/Loading/index.js | 17 - js/packages/ui/Loading/loading.css | 23 - js/packages/ui/Loading/loading.js | 34 - js/packages/ui/MethodDecoding/index.js | 17 - .../ui/MethodDecoding/methodDecoding.css | 106 - .../ui/MethodDecoding/methodDecoding.js | 678 -- .../ui/MethodDecoding/methodDecodingStore.js | 367 - js/packages/ui/Modal/Busy/busy.css | 27 - js/packages/ui/Modal/Busy/busy.js | 42 - js/packages/ui/Modal/Busy/index.js | 17 - js/packages/ui/Modal/Completed/completed.css | 24 - js/packages/ui/Modal/Completed/completed.js | 32 - js/packages/ui/Modal/Completed/index.js | 17 - js/packages/ui/Modal/index.js | 23 - js/packages/ui/ModalBox/index.js | 17 - js/packages/ui/ModalBox/modalBox.css | 56 - js/packages/ui/ModalBox/modalBox.js | 54 - js/packages/ui/ModalBox/modalBox.spec.js | 62 - js/packages/ui/NetChain/index.js | 17 - js/packages/ui/NetChain/netChain.css | 34 - js/packages/ui/NetChain/netChain.js | 47 - js/packages/ui/NetChain/store.js | 67 - js/packages/ui/NetPeers/index.js | 17 - js/packages/ui/NetPeers/netPeers.css | 20 - js/packages/ui/NetPeers/netPeers.js | 54 - js/packages/ui/NetPeers/store.js | 52 - js/packages/ui/Page/index.js | 17 - js/packages/ui/Page/page.css | 31 - js/packages/ui/Page/page.js | 54 - js/packages/ui/Page/page.spec.js | 79 - js/packages/ui/ParityBackground/index.js | 17 - .../ui/ParityBackground/parityBackground.js | 128 - js/packages/ui/Popup/index.js | 17 - js/packages/ui/Popup/popup.js | 40 - js/packages/ui/Portal/index.js | 17 - js/packages/ui/Portal/portal.css | 139 - js/packages/ui/Portal/portal.example.js | 113 - js/packages/ui/Portal/portal.js | 204 - js/packages/ui/Portal/portal.spec.js | 64 - js/packages/ui/Progress/index.js | 17 - js/packages/ui/Progress/progress.js | 45 - js/packages/ui/QrCode/index.js | 17 - js/packages/ui/QrCode/qrCode.css | 32 - js/packages/ui/QrCode/qrCode.example.js | 61 - js/packages/ui/QrCode/qrCode.js | 88 - js/packages/ui/QrCode/qrCode.spec.js | 108 - js/packages/ui/QrCode/qrSize.js | 79 - js/packages/ui/QrScan/index.js | 17 - js/packages/ui/QrScan/qrScan.css | 25 - js/packages/ui/QrScan/qrScan.js | 51 - js/packages/ui/QrScan/qrScan.spec.js | 69 - js/packages/ui/REDAME.md | 1 - js/packages/ui/ScrollableText/index.js | 17 - .../ui/ScrollableText/scrollableText.css | 34 - .../ui/ScrollableText/scrollableText.js | 35 - js/packages/ui/SectionList/Overlay/index.js | 17 - .../ui/SectionList/Overlay/overlay.css | 32 - js/packages/ui/SectionList/Overlay/overlay.js | 37 - js/packages/ui/SectionList/array.js | 26 - js/packages/ui/SectionList/array.spec.js | 29 - js/packages/ui/SectionList/index.js | 17 - js/packages/ui/SectionList/sectionList.css | 62 - .../ui/SectionList/sectionList.example.js | 95 - js/packages/ui/SectionList/sectionList.js | 100 - .../ui/SectionList/sectionList.spec.js | 99 - js/packages/ui/SelectionList/index.js | 17 - .../ui/SelectionList/selectionList.css | 91 - js/packages/ui/SelectionList/selectionList.js | 112 - .../ui/SelectionList/selectionList.spec.js | 100 - js/packages/ui/ShortenedHash/index.js | 17 - .../ui/ShortenedHash/shortenedHash.css | 21 - js/packages/ui/ShortenedHash/shortenedHash.js | 39 - js/packages/ui/SignerIcon/index.js | 17 - js/packages/ui/SignerIcon/signerIcon.js | 57 - js/packages/ui/Snackbar/index.js | 17 - js/packages/ui/Snackbar/snackbar.css | 37 - js/packages/ui/Snackbar/snackbar.js | 93 - js/packages/ui/StackEventListener/index.js | 17 - .../StackEventListener/stackEventListener.js | 57 - js/packages/ui/StatusIndicator/index.js | 17 - .../ui/StatusIndicator/statusIndicator.css | 93 - .../ui/StatusIndicator/statusIndicator.js | 99 - js/packages/ui/StatusIndicator/store.js | 106 - js/packages/ui/Steps/Step/index.js | 17 - js/packages/ui/Steps/Step/step.js | 42 - js/packages/ui/Steps/index.js | 17 - js/packages/ui/Steps/steps.js | 52 - js/packages/ui/Steps/steps.spec.js | 42 - js/packages/ui/Tabs/Tab/index.js | 17 - js/packages/ui/Tabs/Tab/tab.js | 42 - js/packages/ui/Tabs/index.js | 17 - js/packages/ui/Tabs/tabs.js | 53 - js/packages/ui/Tags/index.js | 17 - js/packages/ui/Tags/tags.css | 61 - js/packages/ui/Tags/tags.js | 100 - js/packages/ui/Theme/index.js | 17 - js/packages/ui/Theme/theme.js | 74 - js/packages/ui/Theme/theme.spec.js | 55 - js/packages/ui/Title/Waiting/index.js | 17 - js/packages/ui/Title/Waiting/waiting.js | 41 - js/packages/ui/Title/Waiting/waiting.spec.js | 42 - js/packages/ui/Title/index.js | 17 - js/packages/ui/Title/title.css | 31 - js/packages/ui/Title/title.js | 79 - js/packages/ui/Title/title.spec.js | 47 - js/packages/ui/TokenImage/index.js | 17 - js/packages/ui/TokenImage/tokenImage.js | 54 - js/packages/ui/TxHash/index.js | 17 - js/packages/ui/TxHash/txHash.css | 37 - js/packages/ui/TxHash/txHash.js | 264 - js/packages/ui/TxHash/txHash.spec.js | 151 - js/packages/ui/TxList/TxRow/index.js | 17 - js/packages/ui/TxList/TxRow/txRow.js | 430 - js/packages/ui/TxList/TxRow/txRow.spec.js | 130 - js/packages/ui/TxList/index.js | 17 - js/packages/ui/TxList/store.js | 176 - js/packages/ui/TxList/store.spec.js | 89 - js/packages/ui/TxList/txList.css | 99 - js/packages/ui/TxList/txList.js | 99 - js/packages/ui/TxList/txList.spec.js | 55 - js/packages/ui/VaultCard/Accounts/accounts.js | 65 - .../ui/VaultCard/Accounts/accounts.spec.js | 98 - js/packages/ui/VaultCard/Accounts/index.js | 17 - js/packages/ui/VaultCard/Buttons/buttons.js | 53 - js/packages/ui/VaultCard/Buttons/index.js | 17 - js/packages/ui/VaultCard/Layout/index.js | 17 - js/packages/ui/VaultCard/Layout/layout.css | 45 - js/packages/ui/VaultCard/Layout/layout.js | 69 - .../ui/VaultCard/Layout/layout.spec.js | 90 - js/packages/ui/VaultCard/index.js | 17 - js/packages/ui/VaultCard/vaultCard.css | 62 - js/packages/ui/VaultCard/vaultCard.js | 64 - js/packages/ui/VaultCard/vaultCard.spec.js | 63 - js/packages/ui/VaultTag/index.js | 17 - js/packages/ui/VaultTag/vaultTag.css | 48 - js/packages/ui/VaultTag/vaultTag.js | 42 - js/packages/ui/Warning/index.js | 17 - js/packages/ui/Warning/warning.css | 26 - js/packages/ui/Warning/warning.js | 37 - js/packages/ui/_colors.css | 18 - js/packages/ui/index.js | 74 - js/packages/ui/package.json | 53 - js/src/DappRequests/store.js | 48 +- js/src/index.js | 27 +- js/src/inject.js | 73 +- js/src/parity.js | 33 - js/src/web3.js | 36 - js/src/webWorker.js | 109 - js/webpack/app.js | 15 +- js/webpack/libraries.js | 11 +- js/webpack/npm.js | 5 + js/webpack/rules/parity.js | 2 +- js/webpack/shared.js | 4 +- js/webpack/test.js | 5 + js/yarn.lock | 8698 ----------------- 782 files changed, 530 insertions(+), 64912 deletions(-) delete mode 100644 js/packages/abi/README.md delete mode 100644 js/packages/abi/abi.js delete mode 100644 js/packages/abi/decoder/bytesTaken.js delete mode 100644 js/packages/abi/decoder/bytesTaken.spec.js delete mode 100644 js/packages/abi/decoder/decodeResult.js delete mode 100644 js/packages/abi/decoder/decodeResult.spec.js delete mode 100644 js/packages/abi/decoder/decoder.js delete mode 100644 js/packages/abi/decoder/decoder.spec.js delete mode 100644 js/packages/abi/decoder/index.js delete mode 100644 js/packages/abi/encoder/encoder.js delete mode 100644 js/packages/abi/encoder/encoder.spec.js delete mode 100644 js/packages/abi/encoder/index.js delete mode 100644 js/packages/abi/encoder/mediate.js delete mode 100644 js/packages/abi/encoder/mediate.spec.js delete mode 100644 js/packages/abi/index.js delete mode 100644 js/packages/abi/package.json delete mode 100644 js/packages/abi/spec/constructor.js delete mode 100644 js/packages/abi/spec/constructor.spec.js delete mode 100644 js/packages/abi/spec/event/decodedLog.js delete mode 100644 js/packages/abi/spec/event/decodedLog.spec.js delete mode 100644 js/packages/abi/spec/event/decodedLogParam.js delete mode 100644 js/packages/abi/spec/event/decodedLogParam.spec.js delete mode 100644 js/packages/abi/spec/event/event.js delete mode 100644 js/packages/abi/spec/event/event.spec.js delete mode 100644 js/packages/abi/spec/event/eventParam.js delete mode 100644 js/packages/abi/spec/event/eventParam.spec.js delete mode 100644 js/packages/abi/spec/event/index.js delete mode 100644 js/packages/abi/spec/function.js delete mode 100644 js/packages/abi/spec/function.spec.js delete mode 100644 js/packages/abi/spec/index.js delete mode 100644 js/packages/abi/spec/interface.js delete mode 100644 js/packages/abi/spec/interface.spec.js delete mode 100644 js/packages/abi/spec/param.js delete mode 100644 js/packages/abi/spec/param.spec.js delete mode 100644 js/packages/abi/spec/paramType/format.js delete mode 100644 js/packages/abi/spec/paramType/format.spec.js delete mode 100644 js/packages/abi/spec/paramType/index.js delete mode 100644 js/packages/abi/spec/paramType/paramType.js delete mode 100644 js/packages/abi/spec/paramType/paramType.spec.js delete mode 100644 js/packages/abi/spec/paramType/types.js delete mode 100644 js/packages/abi/token/index.js delete mode 100644 js/packages/abi/token/token.js delete mode 100644 js/packages/abi/token/token.spec.js delete mode 100644 js/packages/abi/util/address.js delete mode 100644 js/packages/abi/util/address.spec.js delete mode 100644 js/packages/abi/util/pad.js delete mode 100644 js/packages/abi/util/pad.spec.js delete mode 100644 js/packages/abi/util/signature.js delete mode 100644 js/packages/abi/util/signature.spec.js delete mode 100644 js/packages/abi/util/slice.js delete mode 100644 js/packages/abi/util/slice.spec.js delete mode 100644 js/packages/abi/util/sliceAs.js delete mode 100644 js/packages/abi/util/sliceAs.spec.js delete mode 100644 js/packages/abi/util/types.js delete mode 100644 js/packages/abi/util/types.spec.js delete mode 100644 js/packages/api/README.md delete mode 100644 js/packages/api/api.js delete mode 100644 js/packages/api/api.spec.js delete mode 100644 js/packages/api/contract/contract.js delete mode 100644 js/packages/api/contract/contract.spec.js delete mode 100644 js/packages/api/contract/index.js delete mode 100644 js/packages/api/format/input.js delete mode 100644 js/packages/api/format/input.spec.js delete mode 100644 js/packages/api/format/output.js delete mode 100644 js/packages/api/format/output.spec.js delete mode 100644 js/packages/api/index.js delete mode 100644 js/packages/api/library.js delete mode 100644 js/packages/api/local/accounts/account.js delete mode 100644 js/packages/api/local/accounts/accounts.js delete mode 100644 js/packages/api/local/accounts/index.js delete mode 100644 js/packages/api/local/ethkey/ethkey.js delete mode 100644 js/packages/api/local/ethkey/ethkey.wasm.js delete mode 100644 js/packages/api/local/ethkey/index.js delete mode 100644 js/packages/api/local/ethkey/index.spec.js delete mode 100644 js/packages/api/local/ethkey/worker.js delete mode 100644 js/packages/api/local/ethkey/workerPool.js delete mode 100644 js/packages/api/local/index.js delete mode 100644 js/packages/api/local/localAccountsMiddleware.js delete mode 100644 js/packages/api/local/localAccountsMiddleware.spec.js delete mode 100644 js/packages/api/local/transactions.js delete mode 100644 js/packages/api/local/transactions.spec.js delete mode 100644 js/packages/api/package.json delete mode 100644 js/packages/api/provider/http.js delete mode 100644 js/packages/api/provider/index.js delete mode 100644 js/packages/api/provider/postMessage.js delete mode 100644 js/packages/api/provider/promise.js delete mode 100644 js/packages/api/provider/ws.js delete mode 100644 js/packages/api/pubsub/eth/eth.js delete mode 100644 js/packages/api/pubsub/eth/index.js delete mode 100644 js/packages/api/pubsub/index.js delete mode 100644 js/packages/api/pubsub/net/index.js delete mode 100644 js/packages/api/pubsub/net/net.js delete mode 100644 js/packages/api/pubsub/parity/index.js delete mode 100644 js/packages/api/pubsub/parity/parity.js delete mode 100644 js/packages/api/pubsub/pubsub.js delete mode 100644 js/packages/api/pubsub/pubsub.spec.js delete mode 100644 js/packages/api/pubsub/pubsubBase.js delete mode 100644 js/packages/api/rpc/db/db.js delete mode 100644 js/packages/api/rpc/db/db.spec.js delete mode 100644 js/packages/api/rpc/db/index.js delete mode 100644 js/packages/api/rpc/eth/eth.e2e.js delete mode 100644 js/packages/api/rpc/eth/eth.js delete mode 100644 js/packages/api/rpc/eth/eth.spec.js delete mode 100644 js/packages/api/rpc/eth/index.js delete mode 100644 js/packages/api/rpc/index.js delete mode 100644 js/packages/api/rpc/net/index.js delete mode 100644 js/packages/api/rpc/net/net.e2e.js delete mode 100644 js/packages/api/rpc/net/net.js delete mode 100644 js/packages/api/rpc/net/net.spec.js delete mode 100644 js/packages/api/rpc/parity/index.js delete mode 100644 js/packages/api/rpc/parity/parity.e2e.js delete mode 100644 js/packages/api/rpc/parity/parity.js delete mode 100644 js/packages/api/rpc/parity/parity.spec.js delete mode 100644 js/packages/api/rpc/personal/index.js delete mode 100644 js/packages/api/rpc/personal/personal.e2e.js delete mode 100644 js/packages/api/rpc/personal/personal.js delete mode 100644 js/packages/api/rpc/personal/personal.spec.js delete mode 100644 js/packages/api/rpc/shell/index.js delete mode 100644 js/packages/api/rpc/shell/shell.js delete mode 100644 js/packages/api/rpc/shh/index.js delete mode 100644 js/packages/api/rpc/shh/shh.js delete mode 100644 js/packages/api/rpc/signer/index.js delete mode 100644 js/packages/api/rpc/signer/signer.js delete mode 100644 js/packages/api/rpc/trace/index.js delete mode 100644 js/packages/api/rpc/trace/trace.e2e.js delete mode 100644 js/packages/api/rpc/trace/trace.js delete mode 100644 js/packages/api/rpc/trace/trace.spec.js delete mode 100644 js/packages/api/rpc/web3/index.js delete mode 100644 js/packages/api/rpc/web3/web3.e2e.js delete mode 100644 js/packages/api/rpc/web3/web3.js delete mode 100644 js/packages/api/rpc/web3/web3.spec.js delete mode 100644 js/packages/api/subscriptions/eth.js delete mode 100644 js/packages/api/subscriptions/eth.spec.js delete mode 100644 js/packages/api/subscriptions/index.js delete mode 100644 js/packages/api/subscriptions/logging.js delete mode 100644 js/packages/api/subscriptions/logging.spec.js delete mode 100644 js/packages/api/subscriptions/manager.js delete mode 100644 js/packages/api/subscriptions/manager.spec.js delete mode 100644 js/packages/api/subscriptions/personal.js delete mode 100644 js/packages/api/subscriptions/personal.spec.js delete mode 100644 js/packages/api/subscriptions/signer.js delete mode 100644 js/packages/api/transport/error.js delete mode 100644 js/packages/api/transport/http/http.e2e.js delete mode 100644 js/packages/api/transport/http/http.js delete mode 100644 js/packages/api/transport/http/http.spec.js delete mode 100644 js/packages/api/transport/http/index.js delete mode 100644 js/packages/api/transport/index.js delete mode 100644 js/packages/api/transport/jsonRpcBase.js delete mode 100644 js/packages/api/transport/jsonRpcBase.spec.js delete mode 100644 js/packages/api/transport/middleware.js delete mode 100644 js/packages/api/transport/middleware.spec.js delete mode 100644 js/packages/api/transport/ws/index.js delete mode 100644 js/packages/api/transport/ws/ws.e2e.js delete mode 100644 js/packages/api/transport/ws/ws.js delete mode 100644 js/packages/api/transport/ws/ws.spec.js delete mode 100644 js/packages/api/util/decode.js delete mode 100644 js/packages/api/util/decode.spec.js delete mode 100644 js/packages/api/util/encode.js delete mode 100644 js/packages/api/util/encode.spec.js delete mode 100644 js/packages/api/util/format.js delete mode 100644 js/packages/api/util/format.spec.js delete mode 100644 js/packages/api/util/identity.js delete mode 100644 js/packages/api/util/index.js delete mode 100644 js/packages/api/util/sha3.js delete mode 100644 js/packages/api/util/sha3.spec.js delete mode 100644 js/packages/api/util/types.js delete mode 100644 js/packages/api/util/types.spec.js delete mode 100644 js/packages/api/util/wei.js delete mode 100644 js/packages/api/util/wei.spec.js create mode 100644 js/packages/dapp-chaindeploy/package.json create mode 100644 js/packages/dapp-console/package.json create mode 100644 js/packages/dapp-dappreg/package.json create mode 100644 js/packages/dapp-githubhint/package.json create mode 100644 js/packages/dapp-localtx/package.json create mode 100644 js/packages/dapp-registry/package.json create mode 100644 js/packages/dapp-signaturereg/package.json create mode 100644 js/packages/dapp-tokendeploy/package.json create mode 100644 js/packages/dapp-tokenreg/package.json delete mode 100644 js/packages/jsonrpc/.gitignore delete mode 100644 js/packages/jsonrpc/README.md delete mode 100644 js/packages/jsonrpc/helpers.js delete mode 100644 js/packages/jsonrpc/index.js delete mode 100644 js/packages/jsonrpc/index.spec.js delete mode 100644 js/packages/jsonrpc/interfaces/db.js delete mode 100644 js/packages/jsonrpc/interfaces/eth.js delete mode 100644 js/packages/jsonrpc/interfaces/net.js delete mode 100644 js/packages/jsonrpc/interfaces/parity.js delete mode 100644 js/packages/jsonrpc/interfaces/personal.js delete mode 100644 js/packages/jsonrpc/interfaces/shh.js delete mode 100644 js/packages/jsonrpc/interfaces/signer.js delete mode 100644 js/packages/jsonrpc/interfaces/trace.js delete mode 100644 js/packages/jsonrpc/interfaces/web3.js delete mode 100644 js/packages/jsonrpc/library.js delete mode 100644 js/packages/jsonrpc/package.json delete mode 100644 js/packages/jsonrpc/types.js delete mode 100644 js/packages/shared/README.md delete mode 100755 js/packages/shared/assets/fonts/Roboto/LICENSE.txt delete mode 100644 js/packages/shared/assets/fonts/Roboto/font.css delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Black.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-BlackItalic.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Bold.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-BoldItalic.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Italic.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Light.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-LightItalic.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Medium.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-MediumItalic.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Regular.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Thin.ttf delete mode 100755 js/packages/shared/assets/fonts/Roboto/ttf/Roboto-ThinItalic.ttf delete mode 100644 js/packages/shared/assets/fonts/Roboto/v15/-L14Jk06m6pUHB-5mXQQnYX0hVgzZQUfRDuZrPvH3D8.woff2 delete mode 100644 js/packages/shared/assets/fonts/Roboto/v15/0eC6fl06luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2 delete mode 100644 js/packages/shared/assets/fonts/Roboto/v15/Fl4y0QdOxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2 delete mode 100644 js/packages/shared/assets/fonts/Roboto/v15/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2 delete mode 100644 js/packages/shared/assets/fonts/Roboto/v15/I3S1wsgSg9YCurV6PUkTOYX0hVgzZQUfRDuZrPvH3D8.woff2 delete mode 100644 js/packages/shared/assets/fonts/Roboto/v15/NYDWBdD4gIq26G5XYbHsFIX0hVgzZQUfRDuZrPvH3D8.woff2 delete mode 100644 js/packages/shared/assets/fonts/Roboto/v15/Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2 delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/LICENSE.txt delete mode 100644 js/packages/shared/assets/fonts/RobotoMono/font.css delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Bold.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-BoldItalic.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Italic.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Light.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-LightItalic.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Medium.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-MediumItalic.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Regular.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Thin.ttf delete mode 100755 js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-ThinItalic.ttf delete mode 100644 js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz-pRBTtN4E2_qSPBnw6AgMc.woff2 delete mode 100644 js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz0ExlR2MysFCBK8OirNw2kM.woff2 delete mode 100644 js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz2MSHb9EAJwuSzGfuRChQzQ.woff2 delete mode 100644 js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz2dsm03krrxlabhmVQFB99s.woff2 delete mode 100644 js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz9Dnm4qiMZlH5rhYv_7LI2Y.woff2 delete mode 100644 js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz9TIkQYohD4BpHvJ3NvbHoA.woff2 delete mode 100644 js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59FzyJ0caWjaSBdV-xZbEgst_k.woff2 delete mode 100644 js/packages/shared/assets/images/certifications/unknown.svg delete mode 100644 js/packages/shared/assets/images/contracts/ethereum-black-64x64.png delete mode 100644 js/packages/shared/assets/images/contracts/ethereum-black.png delete mode 100644 js/packages/shared/assets/images/contracts/ethereum-white.png delete mode 100644 js/packages/shared/assets/images/contracts/unknown-64x64.png delete mode 100644 js/packages/shared/assets/images/contracts/unknown.png delete mode 100644 js/packages/shared/assets/images/dapps/blocks-350.jpg delete mode 100644 js/packages/shared/assets/images/dapps/close.svg delete mode 100644 js/packages/shared/assets/images/dapps/plus.svg delete mode 100644 js/packages/shared/assets/images/dapps/signature.png delete mode 100644 js/packages/shared/assets/images/parity-logo-black-no-text.ico delete mode 100644 js/packages/shared/assets/images/parity-logo-black-no-text.png delete mode 100644 js/packages/shared/assets/images/parity-logo-black-no-text.svg delete mode 100644 js/packages/shared/assets/images/parity-logo-black.svg delete mode 100644 js/packages/shared/assets/images/parity-logo-white-no-text.svg delete mode 100644 js/packages/shared/assets/images/parity-logo-white.svg delete mode 100644 js/packages/shared/assets/images/paritybar.png delete mode 100644 js/packages/shared/assets/images/shapeshift-btn.png delete mode 100644 js/packages/shared/assets/images/shapeshift-logo.png delete mode 100644 js/packages/shared/config/dappsBuiltin.json delete mode 100644 js/packages/shared/config/dappsViews.json delete mode 100644 js/packages/shared/config/defaultViews.js delete mode 100644 js/packages/shared/config/index.js delete mode 100644 js/packages/shared/contracts/abi/badgereg.json delete mode 100644 js/packages/shared/contracts/abi/basiccoin.json delete mode 100644 js/packages/shared/contracts/abi/basiccoinmanager.json delete mode 100644 js/packages/shared/contracts/abi/certifier.json delete mode 100644 js/packages/shared/contracts/abi/dappreg.json delete mode 100644 js/packages/shared/contracts/abi/eip20.json delete mode 100644 js/packages/shared/contracts/abi/email-verification.json delete mode 100644 js/packages/shared/contracts/abi/gavcoin.json delete mode 100644 js/packages/shared/contracts/abi/githubhint.json delete mode 100644 js/packages/shared/contracts/abi/index.js delete mode 100644 js/packages/shared/contracts/abi/old-wallet.json delete mode 100644 js/packages/shared/contracts/abi/owned.json delete mode 100644 js/packages/shared/contracts/abi/registry.json delete mode 100644 js/packages/shared/contracts/abi/registry2.json delete mode 100644 js/packages/shared/contracts/abi/signaturereg.json delete mode 100644 js/packages/shared/contracts/abi/sms-verification.json delete mode 100644 js/packages/shared/contracts/abi/tokenreg.json delete mode 100644 js/packages/shared/contracts/abi/wallet.json delete mode 100644 js/packages/shared/contracts/badgereg.js delete mode 100644 js/packages/shared/contracts/code/index.js delete mode 100644 js/packages/shared/contracts/code/wallet.js delete mode 100644 js/packages/shared/contracts/contracts.js delete mode 100644 js/packages/shared/contracts/dappreg.js delete mode 100644 js/packages/shared/contracts/githubhint.js delete mode 100644 js/packages/shared/contracts/githubhint.spec.js delete mode 100644 js/packages/shared/contracts/index.js delete mode 100644 js/packages/shared/contracts/registry.js delete mode 100644 js/packages/shared/contracts/registry.spec.js delete mode 100644 js/packages/shared/contracts/signaturereg.js delete mode 100644 js/packages/shared/contracts/snippets/enhanced-wallet.sol delete mode 100644 js/packages/shared/contracts/snippets/human-standard-token.sol delete mode 100644 js/packages/shared/contracts/snippets/standard-token.sol delete mode 100644 js/packages/shared/contracts/snippets/token.sol delete mode 100644 js/packages/shared/contracts/snippets/wallet.sol delete mode 100644 js/packages/shared/contracts/tokenreg.js delete mode 100644 js/packages/shared/contracts/verification.js delete mode 100644 js/packages/shared/environment/empty.js delete mode 100644 js/packages/shared/environment/index.js delete mode 100644 js/packages/shared/environment/integration-tests/fake-backend.js delete mode 100644 js/packages/shared/environment/integration-tests/index.js delete mode 100644 js/packages/shared/environment/perf-debug/index.js delete mode 100644 js/packages/shared/environment/perf-debug/why-update.js delete mode 100644 js/packages/shared/environment/tests/index.js delete mode 100644 js/packages/shared/environment/tests/test-utils.js delete mode 100644 js/packages/shared/mobx/hardwareStore.js delete mode 100644 js/packages/shared/mobx/hardwareStore.spec.js delete mode 100644 js/packages/shared/mobx/historyStore.js delete mode 100644 js/packages/shared/mobx/historyStore.spec.js delete mode 100644 js/packages/shared/package.json delete mode 100644 js/packages/shared/redux/actions.js delete mode 100644 js/packages/shared/redux/index.js delete mode 100644 js/packages/shared/redux/middleware.js delete mode 100644 js/packages/shared/redux/providers/apiActions.js delete mode 100644 js/packages/shared/redux/providers/apiReducer.js delete mode 100644 js/packages/shared/redux/providers/balances.js delete mode 100644 js/packages/shared/redux/providers/balancesActions.js delete mode 100644 js/packages/shared/redux/providers/balancesReducer.js delete mode 100644 js/packages/shared/redux/providers/certifications/actions.js delete mode 100644 js/packages/shared/redux/providers/certifications/middleware.js delete mode 100644 js/packages/shared/redux/providers/certifications/reducer.js delete mode 100644 js/packages/shared/redux/providers/chainMiddleware.js delete mode 100644 js/packages/shared/redux/providers/chainMiddleware.spec.js delete mode 100644 js/packages/shared/redux/providers/index.js delete mode 100644 js/packages/shared/redux/providers/personal.js delete mode 100644 js/packages/shared/redux/providers/personalActions.js delete mode 100644 js/packages/shared/redux/providers/personalReducer.js delete mode 100644 js/packages/shared/redux/providers/registry/actions.js delete mode 100644 js/packages/shared/redux/providers/registry/middleware.js delete mode 100644 js/packages/shared/redux/providers/registry/reducer.js delete mode 100644 js/packages/shared/redux/providers/requestsActions.js delete mode 100644 js/packages/shared/redux/providers/requestsActions.spec.js delete mode 100644 js/packages/shared/redux/providers/requestsReducer.js delete mode 100644 js/packages/shared/redux/providers/settings/actions.js delete mode 100644 js/packages/shared/redux/providers/settings/middleware.js delete mode 100644 js/packages/shared/redux/providers/settings/reducers.js delete mode 100644 js/packages/shared/redux/providers/signer.js delete mode 100644 js/packages/shared/redux/providers/signerActions.js delete mode 100644 js/packages/shared/redux/providers/signerMiddleware.js delete mode 100644 js/packages/shared/redux/providers/signerMiddleware.spec.js delete mode 100644 js/packages/shared/redux/providers/signerReducer.js delete mode 100644 js/packages/shared/redux/providers/snackbarActions.js delete mode 100644 js/packages/shared/redux/providers/snackbarReducer.js delete mode 100644 js/packages/shared/redux/providers/status.js delete mode 100644 js/packages/shared/redux/providers/statusActions.js delete mode 100644 js/packages/shared/redux/providers/statusReducer.js delete mode 100644 js/packages/shared/redux/providers/tokensActions.js delete mode 100644 js/packages/shared/redux/providers/tokensReducer.js delete mode 100644 js/packages/shared/redux/providers/walletActions.js delete mode 100644 js/packages/shared/redux/providers/walletReducer.js delete mode 100644 js/packages/shared/redux/providers/worker.js delete mode 100644 js/packages/shared/redux/providers/workerActions.js delete mode 100644 js/packages/shared/redux/providers/workerReducer.js delete mode 100644 js/packages/shared/redux/providers/workerWrapper.js delete mode 100644 js/packages/shared/redux/reducers.js delete mode 100644 js/packages/shared/redux/store.js delete mode 100644 js/packages/shared/redux/util.js delete mode 100644 js/packages/shared/util/abi.js delete mode 100644 js/packages/shared/util/constants.js delete mode 100644 js/packages/shared/util/dapps.js delete mode 100644 js/packages/shared/util/messages.js delete mode 100644 js/packages/shared/util/notifications.js delete mode 100644 js/packages/shared/util/proptypes.js delete mode 100644 js/packages/shared/util/signer.js delete mode 100644 js/packages/shared/util/solidity.js delete mode 100644 js/packages/shared/util/subscribe-to-events.js delete mode 100644 js/packages/shared/util/subscribe-to-events.spec.js delete mode 100644 js/packages/shared/util/subscribe-to-events.test.js delete mode 100644 js/packages/shared/util/testnet.js delete mode 100644 js/packages/shared/util/tokens.js delete mode 100644 js/packages/shared/util/tx.js delete mode 100644 js/packages/shared/util/validation.js delete mode 100644 js/packages/shared/util/validation.spec.js delete mode 100644 js/packages/shared/util/wallets.js delete mode 100644 js/packages/ui/AccountCard/accountCard.css delete mode 100644 js/packages/ui/AccountCard/accountCard.example.js delete mode 100644 js/packages/ui/AccountCard/accountCard.js delete mode 100644 js/packages/ui/AccountCard/accountCard.spec.js delete mode 100644 js/packages/ui/AccountCard/index.js delete mode 100644 js/packages/ui/Actionbar/Export/export.js delete mode 100644 js/packages/ui/Actionbar/Export/index.js delete mode 100644 js/packages/ui/Actionbar/Import/import.css delete mode 100644 js/packages/ui/Actionbar/Import/import.js delete mode 100644 js/packages/ui/Actionbar/Import/index.js delete mode 100644 js/packages/ui/Actionbar/Search/index.js delete mode 100644 js/packages/ui/Actionbar/Search/search.css delete mode 100644 js/packages/ui/Actionbar/Search/search.js delete mode 100644 js/packages/ui/Actionbar/Sort/index.js delete mode 100644 js/packages/ui/Actionbar/Sort/sort.js delete mode 100644 js/packages/ui/Actionbar/Sort/sortStore.js delete mode 100644 js/packages/ui/Actionbar/actionbar.css delete mode 100644 js/packages/ui/Actionbar/actionbar.js delete mode 100644 js/packages/ui/Actionbar/actionbar.spec.js delete mode 100644 js/packages/ui/Actionbar/index.js delete mode 100644 js/packages/ui/Badge/badge.css delete mode 100644 js/packages/ui/Badge/badge.js delete mode 100644 js/packages/ui/Badge/badge.spec.js delete mode 100644 js/packages/ui/Badge/index.js delete mode 100644 js/packages/ui/Balance/balance.css delete mode 100644 js/packages/ui/Balance/balance.js delete mode 100644 js/packages/ui/Balance/balance.spec.js delete mode 100644 js/packages/ui/Balance/index.js delete mode 100644 js/packages/ui/BlockNumber/blockNumber.css delete mode 100644 js/packages/ui/BlockNumber/blockNumber.js delete mode 100644 js/packages/ui/BlockNumber/index.js delete mode 100644 js/packages/ui/BlockNumber/store.js delete mode 100644 js/packages/ui/BlockTimestamp/blockTimestamp.css delete mode 100644 js/packages/ui/BlockTimestamp/blockTimestamp.js delete mode 100644 js/packages/ui/BlockTimestamp/index.js delete mode 100644 js/packages/ui/Button/button.css delete mode 100644 js/packages/ui/Button/button.js delete mode 100644 js/packages/ui/Button/button.spec.js delete mode 100644 js/packages/ui/Button/index.js delete mode 100644 js/packages/ui/Certifications/certifications.css delete mode 100644 js/packages/ui/Certifications/certifications.js delete mode 100644 js/packages/ui/Certifications/index.js delete mode 100644 js/packages/ui/ClientVersion/clientVersion.css delete mode 100644 js/packages/ui/ClientVersion/clientVersion.js delete mode 100644 js/packages/ui/ClientVersion/index.js delete mode 100644 js/packages/ui/ClientVersion/store.js delete mode 100644 js/packages/ui/ConfirmDialog/confirmDialog.css delete mode 100644 js/packages/ui/ConfirmDialog/confirmDialog.js delete mode 100644 js/packages/ui/ConfirmDialog/confirmDialog.spec.js delete mode 100644 js/packages/ui/ConfirmDialog/index.js delete mode 100644 js/packages/ui/Container/Title/Actions/actions.js delete mode 100644 js/packages/ui/Container/Title/Actions/index.js delete mode 100644 js/packages/ui/Container/Title/Byline/byline.js delete mode 100644 js/packages/ui/Container/Title/Byline/index.js delete mode 100644 js/packages/ui/Container/Title/Description/description.js delete mode 100644 js/packages/ui/Container/Title/Description/index.js delete mode 100644 js/packages/ui/Container/Title/index.js delete mode 100644 js/packages/ui/Container/Title/title.css delete mode 100644 js/packages/ui/Container/Title/title.js delete mode 100644 js/packages/ui/Container/Title/title.spec.js delete mode 100644 js/packages/ui/Container/container.css delete mode 100644 js/packages/ui/Container/container.js delete mode 100644 js/packages/ui/Container/container.spec.js delete mode 100644 js/packages/ui/Container/index.js delete mode 100644 js/packages/ui/ContextProvider/contextProvider.js delete mode 100644 js/packages/ui/ContextProvider/index.js delete mode 100644 js/packages/ui/CopyToClipboard/copyToClipboard.css delete mode 100644 js/packages/ui/CopyToClipboard/copyToClipboard.js delete mode 100644 js/packages/ui/CopyToClipboard/index.js delete mode 100644 js/packages/ui/CurrencySymbol/currencySymbol.example.js delete mode 100644 js/packages/ui/CurrencySymbol/currencySymbol.js delete mode 100644 js/packages/ui/CurrencySymbol/index.js delete mode 100644 js/packages/ui/DappCard/dappCard.css delete mode 100644 js/packages/ui/DappCard/dappCard.js delete mode 100644 js/packages/ui/DappCard/index.js delete mode 100644 js/packages/ui/DappIcon/dappIcon.css delete mode 100644 js/packages/ui/DappIcon/dappIcon.js delete mode 100644 js/packages/ui/DappIcon/dappIcon.spec.js delete mode 100644 js/packages/ui/DappIcon/index.js delete mode 100644 js/packages/ui/DappLink/dappLink.css delete mode 100644 js/packages/ui/DappLink/dappLink.js delete mode 100644 js/packages/ui/DappLink/index.js delete mode 100644 js/packages/ui/Editor/editor.js delete mode 100644 js/packages/ui/Editor/index.js delete mode 100644 js/packages/ui/Editor/mode-solidity.js delete mode 100644 js/packages/ui/Errors/actions.js delete mode 100644 js/packages/ui/Errors/errors.css delete mode 100644 js/packages/ui/Errors/errors.js delete mode 100644 js/packages/ui/Errors/index.js delete mode 100644 js/packages/ui/Errors/middleware.js delete mode 100644 js/packages/ui/Errors/reducers.js delete mode 100644 js/packages/ui/Features/constants.js delete mode 100644 js/packages/ui/Features/defaults.js delete mode 100644 js/packages/ui/Features/defaults.spec.js delete mode 100644 js/packages/ui/Features/features.css delete mode 100644 js/packages/ui/Features/features.js delete mode 100644 js/packages/ui/Features/features.spec.js delete mode 100644 js/packages/ui/Features/index.js delete mode 100644 js/packages/ui/Features/store.js delete mode 100644 js/packages/ui/Features/store.spec.js delete mode 100644 js/packages/ui/Form/AddressSelect/addressSelect.css delete mode 100644 js/packages/ui/Form/AddressSelect/addressSelect.js delete mode 100644 js/packages/ui/Form/AddressSelect/addressSelectStore.js delete mode 100644 js/packages/ui/Form/AddressSelect/index.js delete mode 100644 js/packages/ui/Form/Checkbox/checkbox.js delete mode 100644 js/packages/ui/Form/Checkbox/index.js delete mode 100644 js/packages/ui/Form/DappUrlInput/dappUrlInput.js delete mode 100644 js/packages/ui/Form/DappUrlInput/dappUrlInput.spec.js delete mode 100644 js/packages/ui/Form/DappUrlInput/index.js delete mode 100644 js/packages/ui/Form/Dropdown/dropdown.css delete mode 100644 js/packages/ui/Form/Dropdown/dropdown.js delete mode 100644 js/packages/ui/Form/Dropdown/index.js delete mode 100644 js/packages/ui/Form/FileSelect/fileSelect.css delete mode 100644 js/packages/ui/Form/FileSelect/fileSelect.js delete mode 100644 js/packages/ui/Form/FileSelect/fileSelect.spec.js delete mode 100644 js/packages/ui/Form/FileSelect/index.js delete mode 100644 js/packages/ui/Form/Input/index.js delete mode 100644 js/packages/ui/Form/Input/input.css delete mode 100644 js/packages/ui/Form/Input/input.js delete mode 100644 js/packages/ui/Form/InputAddress/index.js delete mode 100644 js/packages/ui/Form/InputAddress/inputAddress.css delete mode 100644 js/packages/ui/Form/InputAddress/inputAddress.js delete mode 100644 js/packages/ui/Form/InputAddressSelect/index.js delete mode 100644 js/packages/ui/Form/InputAddressSelect/inputAddressSelect.js delete mode 100644 js/packages/ui/Form/InputChip/Chip/chip.css delete mode 100644 js/packages/ui/Form/InputChip/Chip/chip.js delete mode 100644 js/packages/ui/Form/InputChip/Chip/index.js delete mode 100644 js/packages/ui/Form/InputChip/index.js delete mode 100644 js/packages/ui/Form/InputChip/inputChip.js delete mode 100644 js/packages/ui/Form/InputDateTime/index.js delete mode 100644 js/packages/ui/Form/InputDateTime/inputDateTime.css delete mode 100644 js/packages/ui/Form/InputDateTime/inputDateTime.js delete mode 100644 js/packages/ui/Form/Label/index.js delete mode 100644 js/packages/ui/Form/Label/label.css delete mode 100644 js/packages/ui/Form/Label/label.js delete mode 100644 js/packages/ui/Form/LabelWrapper/index.js delete mode 100644 js/packages/ui/Form/LabelWrapper/labelWrapper.js delete mode 100644 js/packages/ui/Form/PasswordStrength/index.js delete mode 100644 js/packages/ui/Form/PasswordStrength/passwordStrength.css delete mode 100644 js/packages/ui/Form/PasswordStrength/passwordStrength.js delete mode 100644 js/packages/ui/Form/PasswordStrength/passwordStrength.spec.js delete mode 100644 js/packages/ui/Form/RadioButtons/index.js delete mode 100644 js/packages/ui/Form/RadioButtons/radioButtons.css delete mode 100644 js/packages/ui/Form/RadioButtons/radioButtons.js delete mode 100644 js/packages/ui/Form/Slider/index.js delete mode 100644 js/packages/ui/Form/Slider/slider.css delete mode 100644 js/packages/ui/Form/Slider/slider.js delete mode 100644 js/packages/ui/Form/Tab/index.js delete mode 100644 js/packages/ui/Form/Tab/tab.js delete mode 100644 js/packages/ui/Form/Toggle/index.js delete mode 100644 js/packages/ui/Form/Toggle/toggle.js delete mode 100644 js/packages/ui/Form/TypedInput/index.js delete mode 100644 js/packages/ui/Form/TypedInput/typedInput.css delete mode 100644 js/packages/ui/Form/TypedInput/typedInput.js delete mode 100644 js/packages/ui/Form/TypedInput/typedInput.spec.js delete mode 100644 js/packages/ui/Form/VaultSelect/VaultSelector/index.js delete mode 100644 js/packages/ui/Form/VaultSelect/VaultSelector/vaultSelector.js delete mode 100644 js/packages/ui/Form/VaultSelect/VaultSelector/vaultSelector.spec.js delete mode 100644 js/packages/ui/Form/VaultSelect/index.js delete mode 100644 js/packages/ui/Form/VaultSelect/vaultSelect.js delete mode 100644 js/packages/ui/Form/VaultSelect/vaultSelect.spec.js delete mode 100644 js/packages/ui/Form/form.css delete mode 100644 js/packages/ui/Form/form.js delete mode 100644 js/packages/ui/Form/index.js delete mode 100644 js/packages/ui/GasPriceEditor/gasPriceEditor.css delete mode 100644 js/packages/ui/GasPriceEditor/gasPriceEditor.js delete mode 100644 js/packages/ui/GasPriceEditor/gasPriceEditor.spec.js delete mode 100644 js/packages/ui/GasPriceEditor/index.js delete mode 100644 js/packages/ui/GasPriceEditor/store.js delete mode 100644 js/packages/ui/GasPriceEditor/store.spec.js delete mode 100644 js/packages/ui/GasPriceSelector/CustomBar/customBar.js delete mode 100644 js/packages/ui/GasPriceSelector/CustomBar/index.js delete mode 100644 js/packages/ui/GasPriceSelector/CustomCursor/customCursor.js delete mode 100644 js/packages/ui/GasPriceSelector/CustomCursor/index.js delete mode 100644 js/packages/ui/GasPriceSelector/CustomShape/customShape.js delete mode 100644 js/packages/ui/GasPriceSelector/CustomShape/index.js delete mode 100644 js/packages/ui/GasPriceSelector/CustomTooltip/customTooltip.js delete mode 100644 js/packages/ui/GasPriceSelector/CustomTooltip/index.js delete mode 100644 js/packages/ui/GasPriceSelector/gasPriceSelector.css delete mode 100644 js/packages/ui/GasPriceSelector/gasPriceSelector.js delete mode 100644 js/packages/ui/GasPriceSelector/index.js delete mode 100644 js/packages/ui/GasPriceSelector/util.js delete mode 100644 js/packages/ui/IconCache/iconCache.js delete mode 100644 js/packages/ui/IconCache/index.js delete mode 100644 js/packages/ui/Icons/index.js delete mode 100644 js/packages/ui/Icons/index.spec.js delete mode 100644 js/packages/ui/IdentityIcon/identityIcon.css delete mode 100644 js/packages/ui/IdentityIcon/identityIcon.js delete mode 100644 js/packages/ui/IdentityIcon/identityIcon.spec.js delete mode 100644 js/packages/ui/IdentityIcon/index.js delete mode 100644 js/packages/ui/IdentityName/identityName.js delete mode 100644 js/packages/ui/IdentityName/identityName.spec.js delete mode 100644 js/packages/ui/IdentityName/index.js delete mode 100644 js/packages/ui/LanguageSelector/index.js delete mode 100644 js/packages/ui/LanguageSelector/languageSelector.js delete mode 100644 js/packages/ui/LanguageSelector/langugeSelector.spec.js delete mode 100644 js/packages/ui/List/Item/index.js delete mode 100644 js/packages/ui/List/Item/item.css delete mode 100644 js/packages/ui/List/Item/item.js delete mode 100644 js/packages/ui/List/index.js delete mode 100644 js/packages/ui/List/list.css delete mode 100644 js/packages/ui/List/list.js delete mode 100644 js/packages/ui/Loading/index.js delete mode 100644 js/packages/ui/Loading/loading.css delete mode 100644 js/packages/ui/Loading/loading.js delete mode 100644 js/packages/ui/MethodDecoding/index.js delete mode 100644 js/packages/ui/MethodDecoding/methodDecoding.css delete mode 100644 js/packages/ui/MethodDecoding/methodDecoding.js delete mode 100644 js/packages/ui/MethodDecoding/methodDecodingStore.js delete mode 100644 js/packages/ui/Modal/Busy/busy.css delete mode 100644 js/packages/ui/Modal/Busy/busy.js delete mode 100644 js/packages/ui/Modal/Busy/index.js delete mode 100644 js/packages/ui/Modal/Completed/completed.css delete mode 100644 js/packages/ui/Modal/Completed/completed.js delete mode 100644 js/packages/ui/Modal/Completed/index.js delete mode 100644 js/packages/ui/Modal/index.js delete mode 100644 js/packages/ui/ModalBox/index.js delete mode 100644 js/packages/ui/ModalBox/modalBox.css delete mode 100644 js/packages/ui/ModalBox/modalBox.js delete mode 100644 js/packages/ui/ModalBox/modalBox.spec.js delete mode 100644 js/packages/ui/NetChain/index.js delete mode 100644 js/packages/ui/NetChain/netChain.css delete mode 100644 js/packages/ui/NetChain/netChain.js delete mode 100644 js/packages/ui/NetChain/store.js delete mode 100644 js/packages/ui/NetPeers/index.js delete mode 100644 js/packages/ui/NetPeers/netPeers.css delete mode 100644 js/packages/ui/NetPeers/netPeers.js delete mode 100644 js/packages/ui/NetPeers/store.js delete mode 100644 js/packages/ui/Page/index.js delete mode 100644 js/packages/ui/Page/page.css delete mode 100644 js/packages/ui/Page/page.js delete mode 100644 js/packages/ui/Page/page.spec.js delete mode 100644 js/packages/ui/ParityBackground/index.js delete mode 100644 js/packages/ui/ParityBackground/parityBackground.js delete mode 100644 js/packages/ui/Popup/index.js delete mode 100644 js/packages/ui/Popup/popup.js delete mode 100644 js/packages/ui/Portal/index.js delete mode 100644 js/packages/ui/Portal/portal.css delete mode 100644 js/packages/ui/Portal/portal.example.js delete mode 100644 js/packages/ui/Portal/portal.js delete mode 100644 js/packages/ui/Portal/portal.spec.js delete mode 100644 js/packages/ui/Progress/index.js delete mode 100644 js/packages/ui/Progress/progress.js delete mode 100644 js/packages/ui/QrCode/index.js delete mode 100644 js/packages/ui/QrCode/qrCode.css delete mode 100644 js/packages/ui/QrCode/qrCode.example.js delete mode 100644 js/packages/ui/QrCode/qrCode.js delete mode 100644 js/packages/ui/QrCode/qrCode.spec.js delete mode 100644 js/packages/ui/QrCode/qrSize.js delete mode 100644 js/packages/ui/QrScan/index.js delete mode 100644 js/packages/ui/QrScan/qrScan.css delete mode 100644 js/packages/ui/QrScan/qrScan.js delete mode 100644 js/packages/ui/QrScan/qrScan.spec.js delete mode 100644 js/packages/ui/REDAME.md delete mode 100644 js/packages/ui/ScrollableText/index.js delete mode 100644 js/packages/ui/ScrollableText/scrollableText.css delete mode 100644 js/packages/ui/ScrollableText/scrollableText.js delete mode 100644 js/packages/ui/SectionList/Overlay/index.js delete mode 100644 js/packages/ui/SectionList/Overlay/overlay.css delete mode 100644 js/packages/ui/SectionList/Overlay/overlay.js delete mode 100644 js/packages/ui/SectionList/array.js delete mode 100644 js/packages/ui/SectionList/array.spec.js delete mode 100644 js/packages/ui/SectionList/index.js delete mode 100644 js/packages/ui/SectionList/sectionList.css delete mode 100644 js/packages/ui/SectionList/sectionList.example.js delete mode 100644 js/packages/ui/SectionList/sectionList.js delete mode 100644 js/packages/ui/SectionList/sectionList.spec.js delete mode 100644 js/packages/ui/SelectionList/index.js delete mode 100644 js/packages/ui/SelectionList/selectionList.css delete mode 100644 js/packages/ui/SelectionList/selectionList.js delete mode 100644 js/packages/ui/SelectionList/selectionList.spec.js delete mode 100644 js/packages/ui/ShortenedHash/index.js delete mode 100644 js/packages/ui/ShortenedHash/shortenedHash.css delete mode 100644 js/packages/ui/ShortenedHash/shortenedHash.js delete mode 100644 js/packages/ui/SignerIcon/index.js delete mode 100644 js/packages/ui/SignerIcon/signerIcon.js delete mode 100644 js/packages/ui/Snackbar/index.js delete mode 100644 js/packages/ui/Snackbar/snackbar.css delete mode 100644 js/packages/ui/Snackbar/snackbar.js delete mode 100644 js/packages/ui/StackEventListener/index.js delete mode 100644 js/packages/ui/StackEventListener/stackEventListener.js delete mode 100644 js/packages/ui/StatusIndicator/index.js delete mode 100644 js/packages/ui/StatusIndicator/statusIndicator.css delete mode 100644 js/packages/ui/StatusIndicator/statusIndicator.js delete mode 100644 js/packages/ui/StatusIndicator/store.js delete mode 100644 js/packages/ui/Steps/Step/index.js delete mode 100644 js/packages/ui/Steps/Step/step.js delete mode 100644 js/packages/ui/Steps/index.js delete mode 100644 js/packages/ui/Steps/steps.js delete mode 100644 js/packages/ui/Steps/steps.spec.js delete mode 100644 js/packages/ui/Tabs/Tab/index.js delete mode 100644 js/packages/ui/Tabs/Tab/tab.js delete mode 100644 js/packages/ui/Tabs/index.js delete mode 100644 js/packages/ui/Tabs/tabs.js delete mode 100644 js/packages/ui/Tags/index.js delete mode 100644 js/packages/ui/Tags/tags.css delete mode 100644 js/packages/ui/Tags/tags.js delete mode 100644 js/packages/ui/Theme/index.js delete mode 100644 js/packages/ui/Theme/theme.js delete mode 100644 js/packages/ui/Theme/theme.spec.js delete mode 100644 js/packages/ui/Title/Waiting/index.js delete mode 100644 js/packages/ui/Title/Waiting/waiting.js delete mode 100644 js/packages/ui/Title/Waiting/waiting.spec.js delete mode 100644 js/packages/ui/Title/index.js delete mode 100644 js/packages/ui/Title/title.css delete mode 100644 js/packages/ui/Title/title.js delete mode 100644 js/packages/ui/Title/title.spec.js delete mode 100644 js/packages/ui/TokenImage/index.js delete mode 100644 js/packages/ui/TokenImage/tokenImage.js delete mode 100644 js/packages/ui/TxHash/index.js delete mode 100644 js/packages/ui/TxHash/txHash.css delete mode 100644 js/packages/ui/TxHash/txHash.js delete mode 100644 js/packages/ui/TxHash/txHash.spec.js delete mode 100644 js/packages/ui/TxList/TxRow/index.js delete mode 100644 js/packages/ui/TxList/TxRow/txRow.js delete mode 100644 js/packages/ui/TxList/TxRow/txRow.spec.js delete mode 100644 js/packages/ui/TxList/index.js delete mode 100644 js/packages/ui/TxList/store.js delete mode 100644 js/packages/ui/TxList/store.spec.js delete mode 100644 js/packages/ui/TxList/txList.css delete mode 100644 js/packages/ui/TxList/txList.js delete mode 100644 js/packages/ui/TxList/txList.spec.js delete mode 100644 js/packages/ui/VaultCard/Accounts/accounts.js delete mode 100644 js/packages/ui/VaultCard/Accounts/accounts.spec.js delete mode 100644 js/packages/ui/VaultCard/Accounts/index.js delete mode 100644 js/packages/ui/VaultCard/Buttons/buttons.js delete mode 100644 js/packages/ui/VaultCard/Buttons/index.js delete mode 100644 js/packages/ui/VaultCard/Layout/index.js delete mode 100644 js/packages/ui/VaultCard/Layout/layout.css delete mode 100644 js/packages/ui/VaultCard/Layout/layout.js delete mode 100644 js/packages/ui/VaultCard/Layout/layout.spec.js delete mode 100644 js/packages/ui/VaultCard/index.js delete mode 100644 js/packages/ui/VaultCard/vaultCard.css delete mode 100644 js/packages/ui/VaultCard/vaultCard.js delete mode 100644 js/packages/ui/VaultCard/vaultCard.spec.js delete mode 100644 js/packages/ui/VaultTag/index.js delete mode 100644 js/packages/ui/VaultTag/vaultTag.css delete mode 100644 js/packages/ui/VaultTag/vaultTag.js delete mode 100644 js/packages/ui/Warning/index.js delete mode 100644 js/packages/ui/Warning/warning.css delete mode 100644 js/packages/ui/Warning/warning.js delete mode 100644 js/packages/ui/_colors.css delete mode 100644 js/packages/ui/index.js delete mode 100644 js/packages/ui/package.json delete mode 100644 js/src/parity.js delete mode 100644 js/src/web3.js delete mode 100644 js/src/webWorker.js delete mode 100644 js/yarn.lock diff --git a/js/.gitignore b/js/.gitignore index 555c4b4bb..68a506270 100644 --- a/js/.gitignore +++ b/js/.gitignore @@ -1,3 +1,4 @@ +yarn.lock node_modules npm-debug.log build diff --git a/js/package-lock.json b/js/package-lock.json index 0b7037081..398968adb 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -5,17 +5,17 @@ "requires": true, "dependencies": { "@parity/abi": { - "version": "file:packages/abi", + "version": "github:paritytech/js-abi#a1021ca5b7550e1e24e4767a22ef3f0d95ead19a", "requires": { "bignumber.js": "3.0.1", "js-sha3": "0.5.5" } }, "@parity/api": { - "version": "file:packages/api", + "version": "github:paritytech/js-api#418ee49849a5361ad3c416b224fd9bb6dbabc1d1", "requires": { - "@parity/abi": "file:packages/abi", - "@parity/jsonrpc": "file:packages/jsonrpc", + "@parity/abi": "github:paritytech/js-abi#a1021ca5b7550e1e24e4767a22ef3f0d95ead19a", + "@parity/jsonrpc": "github:paritytech/js-jsonrpc#ac545573880212a27cf4cc6bb32a37fdab6dc26d", "bignumber.js": "3.0.1", "blockies": "0.0.2", "es6-error": "4.0.0", @@ -73,7 +73,7 @@ } }, "@parity/jsonrpc": { - "version": "file:packages/jsonrpc" + "version": "github:paritytech/js-jsonrpc#ac545573880212a27cf4cc6bb32a37fdab6dc26d" }, "@parity/ledger": { "version": "file:packages/ledger" @@ -102,7 +102,7 @@ } }, "@parity/shared": { - "version": "file:packages/shared", + "version": "github:paritytech/js-shared#a83c71946d30d5b3bf976860a676add29c48ee24", "requires": { "mobx": "2.6.4", "mobx-react": "4.0.3", @@ -117,7 +117,7 @@ } }, "@parity/ui": { - "version": "file:packages/ui", + "version": "github:paritytech/js-ui#164c08e1aec4a009dcd559764a746b1cc06c4b22", "requires": { "bignumber.js": "3.0.1", "brace": "0.9.0", diff --git a/js/package.json b/js/package.json index c6546f200..7500963b3 100644 --- a/js/package.json +++ b/js/package.json @@ -160,17 +160,13 @@ "yargs": "6.6.0" }, "dependencies": { - "@parity/abi": "file:packages/abi", - "@parity/api": "file:packages/api", - "@parity/dapp-account": "file:packages/dapp-account", - "@parity/dapp-develop": "file:packages/dapp-develop", + "@parity/api": "paritytech/js-api#418ee49849a5361ad3c416b224fd9bb6dbabc1d1", "@parity/dapps": "file:packages/dapps", "@parity/etherscan": "file:packages/etherscan", - "@parity/jsonrpc": "file:packages/jsonrpc", "@parity/ledger": "file:packages/ledger", "@parity/shapeshift": "file:packages/shapeshift", - "@parity/shared": "file:packages/shared", - "@parity/ui": "file:packages/ui", + "@parity/shared": "paritytech/js-shared#a83c71946d30d5b3bf976860a676add29c48ee24", + "@parity/ui": "paritytech/js-ui#164c08e1aec4a009dcd559764a746b1cc06c4b22", "@parity/wordlist": "1.0.1", "es6-error": "4.0.0", "es6-promise": "4.0.5", diff --git a/js/packages/abi/README.md b/js/packages/abi/README.md deleted file mode 100644 index 20bc094de..000000000 --- a/js/packages/abi/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# ethabi-js - -A very early, very POC-type port of [https://github.com/paritytech/ethabi](https://github.com/paritytech/ethabi) to JavaScript - -[![Build Status](https://travis-ci.org/jacogr/ethabi-js.svg?branch=master)](https://travis-ci.org/jacogr/ethabi-js) -[![Coverage Status](https://coveralls.io/repos/github/jacogr/ethabi-js/badge.svg?branch=master)](https://coveralls.io/github/jacogr/ethabi-js?branch=master) -[![Dependency Status](https://david-dm.org/jacogr/ethabi-js.svg)](https://david-dm.org/jacogr/ethabi-js) -[![devDependency Status](https://david-dm.org/jacogr/ethabi-js/dev-status.svg)](https://david-dm.org/jacogr/ethabi-js#info=devDependencies) - -## contributing - -Clone the repo and install dependencies via `npm install`. Tests can be executed via - -- `npm run testOnce` (100% covered unit tests) - -## installation - -Install the package with `npm install --save ethabi-js` from the [npm registry ethabi-js](https://www.npmjs.com/package/ethabi-js) - - -## implementation -### approach - -- this version tries to stay as close to the original Rust version in intent, function names & purpose -- it is a basic port of the Rust version, relying on effectively the same test-suite (expanded where deemed appropriate) -- it is meant as a library to be used in other projects, i.e. [ethapi-js](https://www.npmjs.com/package/ethapi-js) - -### differences to original Rust version - -- internally the library operates on string binary representations as opposed to Vector bytes, lengths are therefore 64 bytes as opposed to 32 bytes -- function names are adapted from the Rust standard snake_case to the JavaScript standard camelCase -- due to the initial library focus, the cli component (as implemented by the original) is not supported nor mplemented diff --git a/js/packages/abi/abi.js b/js/packages/abi/abi.js deleted file mode 100644 index 892f531fa..000000000 --- a/js/packages/abi/abi.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Interface from './spec/interface'; - -export default class Abi extends Interface { -} diff --git a/js/packages/abi/decoder/bytesTaken.js b/js/packages/abi/decoder/bytesTaken.js deleted file mode 100644 index dbf766f4b..000000000 --- a/js/packages/abi/decoder/bytesTaken.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class BytesTaken { - constructor (bytes, newOffset) { - this._bytes = bytes; - this._newOffset = newOffset; - } - - get bytes () { - return this._bytes; - } - - get newOffset () { - return this._newOffset; - } -} diff --git a/js/packages/abi/decoder/bytesTaken.spec.js b/js/packages/abi/decoder/bytesTaken.spec.js deleted file mode 100644 index 9329657e4..000000000 --- a/js/packages/abi/decoder/bytesTaken.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BytesTaken from './bytesTaken'; - -describe('abi/decoder/BytesTaken', () => { - describe('constructor', () => { - it('sets the bytes of the object', () => { - expect((new BytesTaken(1, 2)).bytes).to.equal(1); - }); - - it('sets the newOffset of the object', () => { - expect((new BytesTaken(3, 4)).newOffset).to.equal(4); - }); - }); -}); diff --git a/js/packages/abi/decoder/decodeResult.js b/js/packages/abi/decoder/decodeResult.js deleted file mode 100644 index 5e41da4b6..000000000 --- a/js/packages/abi/decoder/decodeResult.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class DecodeResult { - constructor (token, newOffset) { - this._token = token; - this._newOffset = newOffset; - } - - get token () { - return this._token; - } - - get newOffset () { - return this._newOffset; - } -} diff --git a/js/packages/abi/decoder/decodeResult.spec.js b/js/packages/abi/decoder/decodeResult.spec.js deleted file mode 100644 index 0c4c81c5c..000000000 --- a/js/packages/abi/decoder/decodeResult.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import DecodeResult from './decodeResult'; - -describe('abi/decoder/DecodeResult', () => { - describe('constructor', () => { - it('sets the token of the object', () => { - expect((new DecodeResult('token', 2)).token).to.equal('token'); - }); - - it('sets the newOffset of the object', () => { - expect((new DecodeResult('baz', 4)).newOffset).to.equal(4); - }); - }); -}); diff --git a/js/packages/abi/decoder/decoder.js b/js/packages/abi/decoder/decoder.js deleted file mode 100644 index 6922c91e8..000000000 --- a/js/packages/abi/decoder/decoder.js +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import utf8 from 'utf8'; - -import Token from '../token/token'; -import BytesTaken from './bytesTaken'; -import DecodeResult from './decodeResult'; -import ParamType from '../spec/paramType/paramType'; -import { sliceData } from '../util/slice'; -import { asAddress, asBool, asI32, asU32 } from '../util/sliceAs'; -import { isArray, isInstanceOf } from '../util/types'; - -const NULL = '0000000000000000000000000000000000000000000000000000000000000000'; - -export default class Decoder { - static decode (params, data) { - if (!isArray(params)) { - throw new Error('Parameters should be array of ParamType'); - } - - const slices = sliceData(data); - let offset = 0; - - return params.map((param) => { - const result = Decoder.decodeParam(param, slices, offset); - - offset = result.newOffset; - return result.token; - }); - } - - static peek (slices, position) { - if (!slices || !slices[position]) { - return NULL; - } - - return slices[position]; - } - - static takeBytes (slices, position, length) { - const slicesLength = Math.floor((length + 31) / 32); - let bytesStr = ''; - - for (let idx = 0; idx < slicesLength; idx++) { - bytesStr = `${bytesStr}${Decoder.peek(slices, position + idx)}`; - } - - const bytes = (bytesStr.substr(0, length * 2).match(/.{1,2}/g) || []).map((code) => parseInt(code, 16)); - - return new BytesTaken(bytes, position + slicesLength); - } - - static decodeParam (param, slices, offset) { - if (!isInstanceOf(param, ParamType)) { - throw new Error('param should be instanceof ParamType'); - } - - const tokens = []; - let taken; - let lengthOffset; - let length; - let newOffset; - - switch (param.type) { - case 'address': - return new DecodeResult(new Token(param.type, asAddress(Decoder.peek(slices, offset))), offset + 1); - - case 'bool': - return new DecodeResult(new Token(param.type, asBool(Decoder.peek(slices, offset))), offset + 1); - - case 'int': - return new DecodeResult(new Token(param.type, asI32(Decoder.peek(slices, offset))), offset + 1); - - case 'uint': - return new DecodeResult(new Token(param.type, asU32(Decoder.peek(slices, offset))), offset + 1); - - case 'fixedBytes': - taken = Decoder.takeBytes(slices, offset, param.length); - - return new DecodeResult(new Token(param.type, taken.bytes), taken.newOffset); - - case 'bytes': - lengthOffset = asU32(Decoder.peek(slices, offset)).div(32).toNumber(); - length = asU32(Decoder.peek(slices, lengthOffset)).toNumber(); - taken = Decoder.takeBytes(slices, lengthOffset + 1, length); - - return new DecodeResult(new Token(param.type, taken.bytes), offset + 1); - - case 'string': - if (param.indexed) { - taken = Decoder.takeBytes(slices, offset, 32); - - return new DecodeResult(new Token('fixedBytes', taken.bytes), offset + 1); - } - - lengthOffset = asU32(Decoder.peek(slices, offset)).div(32).toNumber(); - length = asU32(Decoder.peek(slices, lengthOffset)).toNumber(); - taken = Decoder.takeBytes(slices, lengthOffset + 1, length); - - const str = taken.bytes.map((code) => String.fromCharCode(code)).join(''); - - let decoded; - - try { - decoded = utf8.decode(str); - } catch (error) { - decoded = str; - } - - return new DecodeResult(new Token(param.type, decoded), offset + 1); - - case 'array': - lengthOffset = asU32(Decoder.peek(slices, offset)).div(32).toNumber(); - length = asU32(Decoder.peek(slices, lengthOffset)).toNumber(); - newOffset = lengthOffset + 1; - - for (let idx = 0; idx < length; idx++) { - const result = Decoder.decodeParam(param.subtype, slices, newOffset); - - newOffset = result.newOffset; - tokens.push(result.token); - } - - return new DecodeResult(new Token(param.type, tokens), offset + 1); - - case 'fixedArray': - newOffset = offset; - - for (let idx = 0; idx < param.length; idx++) { - const result = Decoder.decodeParam(param.subtype, slices, newOffset); - - newOffset = result.newOffset; - tokens.push(result.token); - } - - return new DecodeResult(new Token(param.type, tokens), newOffset); - - default: - throw new Error(`Invalid param type ${param.type} in decodeParam`); - } - } -} diff --git a/js/packages/abi/decoder/decoder.spec.js b/js/packages/abi/decoder/decoder.spec.js deleted file mode 100644 index 5065be3a7..000000000 --- a/js/packages/abi/decoder/decoder.spec.js +++ /dev/null @@ -1,319 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import Decoder from './decoder'; -import ParamType from '../spec/paramType'; -import Token from '../token'; -import { padU32 } from '../util/pad'; - -describe('abi/decoder/Decoder', () => { - const stringToBytes = function (str) { - return str.match(/.{1,2}/g).map((code) => parseInt(code, 16)); - }; - - const address1 = '0000000000000000000000001111111111111111111111111111111111111111'; - const address2 = '0000000000000000000000002222222222222222222222222222222222222222'; - const address3 = '0000000000000000000000003333333333333333333333333333333333333333'; - const address4 = '0000000000000000000000004444444444444444444444444444444444444444'; - const bool1 = '0000000000000000000000000000000000000000000000000000000000000001'; - const bytes1 = '1234000000000000000000000000000000000000000000000000000000000000'; - const bytes2 = '1000000000000000000000000000000000000000000000000000000000000000'; - const bytes3 = '10000000000000000000000000000000000000000000000000000000000002'; - const bytes4 = '0010000000000000000000000000000000000000000000000000000000000002'; - const int1 = '0111111111111111111111111111111111111111111111111111111111111111'; - const intn = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85'; - const string1 = '6761766f66796f726b0000000000000000000000000000000000000000000000'; - const string2 = '4665726ee16e64657a0000000000000000000000000000000000000000000000'; - const tokenAddress1 = new Token('address', `0x${address1.slice(-40)}`); - const tokenAddress2 = new Token('address', `0x${address2.slice(-40)}`); - const tokenAddress3 = new Token('address', `0x${address3.slice(-40)}`); - const tokenAddress4 = new Token('address', `0x${address4.slice(-40)}`); - const tokenBool1 = new Token('bool', true); - const tokenFixedBytes1 = new Token('fixedBytes', [0x12, 0x34]); - const tokenBytes1 = new Token('bytes', [0x12, 0x34]); - const tokenBytes2 = new Token('bytes', stringToBytes(bytes2).concat(stringToBytes(bytes2))); - const tokenBytes3 = new Token('bytes', stringToBytes(bytes3)); - const tokenBytes4 = new Token('bytes', stringToBytes(bytes4)); - const tokenInt1 = new Token('int', new BigNumber(int1, 16)); - const tokenIntn = new Token('int', new BigNumber(-123)); - const tokenUint1 = new Token('uint', new BigNumber(int1, 16)); - const tokenUintn = new Token('uint', new BigNumber(intn, 16)); - const tokenString1 = new Token('string', 'gavofyork'); - const tokenString2 = new Token('string', 'Fernández'); - const slices = [ address1, address2, address3, address4 ]; - - describe('peek', () => { - it('returns the slice at the correct position', () => { - expect(Decoder.peek(slices, 1)).to.equal(slices[1]); - }); - - it('returns empty on invalid slices', () => { - expect(Decoder.peek(null, 4)).to.equal('0000000000000000000000000000000000000000000000000000000000000000'); - }); - }); - - describe('takeBytes', () => { - it('returns a single slice', () => { - expect(Decoder.takeBytes(slices, 0, 32).bytes).to.deep.equal(stringToBytes(slices[0])); - }); - - it('returns a single partial slice', () => { - expect(Decoder.takeBytes(slices, 0, 20).bytes).to.deep.equal(stringToBytes(slices[0].substr(0, 40))); - }); - - it('returns multiple slices', () => { - expect(Decoder.takeBytes(slices, 0, 64).bytes).to.deep.equal(stringToBytes(`${slices[0]}${slices[1]}`)); - }); - - it('returns a single offset slice', () => { - expect(Decoder.takeBytes(slices, 1, 32).bytes).to.deep.equal(stringToBytes(slices[1])); - }); - - it('returns multiple offset slices', () => { - expect(Decoder.takeBytes(slices, 1, 64).bytes).to.deep.equal(stringToBytes(`${slices[1]}${slices[2]}`)); - }); - - it('returns the requires length from slices', () => { - expect( - Decoder.takeBytes(slices, 1, 75).bytes - ).to.deep.equal(stringToBytes(`${slices[1]}${slices[2]}${slices[3]}`.substr(0, 150))); - }); - }); - - describe('decodeParam', () => { - it('throws an error on non ParamType param', () => { - expect(() => Decoder.decodeParam({})).to.throw(/ParamType/); - }); - - it('throws an error on invalid param type', () => { - const pt = new ParamType('address'); - - pt._type = 'noMatch'; - - expect(() => Decoder.decodeParam(pt)).to.throw(/noMatch/); - }); - - it('decodes an address', () => { - expect( - Decoder.decodeParam(new ParamType('address'), [address1], 0).token - ).to.deep.equal(tokenAddress1); - }); - - it('decodes a bool', () => { - expect( - Decoder.decodeParam(new ParamType('bool'), [bool1], 0).token - ).to.deep.equal(tokenBool1); - }); - - it('decodes an int', () => { - expect( - Decoder.decodeParam(new ParamType('int'), [int1], 0).token - ).to.deep.equal(tokenInt1); - }); - - it('decodes a negative int', () => { - expect( - Decoder.decodeParam(new ParamType('int'), [intn], 0).token - ).to.deep.equal(tokenIntn); - }); - - it('decodes an uint', () => { - expect( - Decoder.decodeParam(new ParamType('uint'), [int1], 0).token - ).to.deep.equal(tokenUint1); - }); - - it('decodes an uint (negative as int)', () => { - expect( - Decoder.decodeParam(new ParamType('uint'), [intn], 0).token - ).to.deep.equal(tokenUintn); - }); - - it('decodes fixedBytes', () => { - expect( - Decoder.decodeParam(new ParamType('fixedBytes', null, 2), [bytes1], 0).token - ).to.deep.equal(tokenFixedBytes1); - }); - - it('decodes bytes', () => { - expect( - Decoder.decodeParam(new ParamType('bytes'), [padU32(0x20), padU32(2), bytes1], 0).token - ).to.deep.equal(tokenBytes1); - }); - - it('decodes string', () => { - expect( - Decoder.decodeParam(new ParamType('string'), [padU32(0x20), padU32(9), string1], 0).token - ).to.deep.equal(tokenString1); - }); - - it('decodes utf8-invalid string', () => { - expect( - Decoder.decodeParam(new ParamType('string'), [padU32(0x20), padU32(9), string2], 0).token - ).to.deep.equal(tokenString2); - }); - - it('decodes string (indexed)', () => { - expect( - Decoder.decodeParam(new ParamType('string', null, 0, true), [bytes1], 0) - ).to.deep.equal(Decoder.decodeParam(new ParamType('fixedBytes', null, 32, true), [bytes1], 0)); - }); - }); - - describe('decode', () => { - it('throws an error on invalid params', () => { - expect(() => Decoder.decode(null, '123')).to.throw(/array/); - }); - - describe('address', () => { - it('decodes an address', () => { - expect( - Decoder.decode( - [new ParamType('address')], - `${address1}` - ) - ).to.deep.equal([tokenAddress1]); - }); - - it('decodes 2 addresses', () => { - expect( - Decoder.decode( - [new ParamType('address'), new ParamType('address')], - `${address1}${address2}` - ) - ).to.deep.equal([tokenAddress1, tokenAddress2]); - }); - - it('decodes a fixedArray of addresses', () => { - expect( - Decoder.decode( - [new ParamType('fixedArray', new ParamType('address'), 2)], - `${address1}${address2}` - ) - ).to.deep.equal([new Token('fixedArray', [tokenAddress1, tokenAddress2])]); - }); - - it('decodes a dynamic array of addresses', () => { - expect( - Decoder.decode( - [new ParamType('array', new ParamType('address'))], - `${padU32(0x20)}${padU32(2)}${address1}${address2}` - ) - ).to.deep.equal([new Token('array', [tokenAddress1, tokenAddress2])]); - }); - - it('decodes a dynamic array of fixed arrays', () => { - expect( - Decoder.decode( - [new ParamType('array', new ParamType('fixedArray', new ParamType('address'), 2))], - `${padU32(0x20)}${padU32(2)}${address1}${address2}${address3}${address4}` - ) - ).to.deep.equal([ - new Token('array', [ - new Token('fixedArray', [tokenAddress1, tokenAddress2]), - new Token('fixedArray', [tokenAddress3, tokenAddress4]) - ]) - ]); - }); - }); - - describe('int', () => { - it('decodes an int', () => { - expect( - Decoder.decode( - [new ParamType('int')], - `${int1}` - ) - ).to.deep.equal([tokenInt1]); - }); - }); - - describe('uint', () => { - it('decodes an uint', () => { - expect( - Decoder.decode( - [new ParamType('uint')], - `${int1}` - ) - ).to.deep.equal([tokenUint1]); - }); - }); - - describe('fixedBytes', () => { - it('decodes fixedBytes', () => { - expect( - Decoder.decode( - [new ParamType('fixedBytes', null, 2)], - `${bytes1}` - ) - ).to.deep.equal([tokenFixedBytes1]); - }); - }); - - describe('bytes', () => { - it('decodes bytes', () => { - expect( - Decoder.decode( - [new ParamType('bytes')], - `${padU32(0x20)}${padU32(2)}${bytes1}` - ) - ).to.deep.equal([tokenBytes1]); - }); - - it('decodes bytes sequence', () => { - expect( - Decoder.decode( - [new ParamType('bytes')], - `${padU32(0x20)}${padU32(0x40)}${bytes2}${bytes2}` - ) - ).to.deep.equal([tokenBytes2]); - }); - - it('decodes bytes seuence (2)', () => { - expect( - Decoder.decode( - [new ParamType('bytes'), new ParamType('bytes')], - `${padU32(0x40)}${padU32(0x80)}${padU32(0x1f)}${bytes3}00${padU32(0x20)}${bytes4}` - ) - ).to.deep.equal([tokenBytes3, tokenBytes4]); - }); - }); - - describe('bool', () => { - it('decodes a single bool', () => { - expect( - Decoder.decode( - [new ParamType('bool')], - bool1 - ) - ).to.deep.equal([tokenBool1]); - }); - }); - - describe('string', () => { - it('decodes a string', () => { - expect( - Decoder.decode( - [new ParamType('string')], - `${padU32(0x20)}${padU32(9)}${string1}` - ) - ).to.deep.equal([tokenString1]); - }); - }); - }); -}); diff --git a/js/packages/abi/decoder/index.js b/js/packages/abi/decoder/index.js deleted file mode 100644 index 2ead31504..000000000 --- a/js/packages/abi/decoder/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './decoder'; diff --git a/js/packages/abi/encoder/encoder.js b/js/packages/abi/encoder/encoder.js deleted file mode 100644 index fa1aa0453..000000000 --- a/js/packages/abi/encoder/encoder.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { padAddress, padBool, padBytes, padFixedBytes, padU32, padString } from '../util/pad'; -import Mediate from './mediate'; -import Token from '../token/token'; -import { isArray, isInstanceOf } from '../util/types'; - -export default class Encoder { - static encode (tokens) { - if (!isArray(tokens)) { - throw new Error('tokens should be array of Token'); - } - - const mediates = tokens.map((token, index) => Encoder.encodeToken(token, index)); - const inits = mediates - .map((mediate, idx) => mediate.init(Mediate.offsetFor(mediates, idx))) - .join(''); - const closings = mediates - .map((mediate, idx) => mediate.closing(Mediate.offsetFor(mediates, idx))) - .join(''); - - return `${inits}${closings}`; - } - - static encodeToken (token, index = 0) { - if (!isInstanceOf(token, Token)) { - throw new Error('token should be instanceof Token'); - } - - try { - switch (token.type) { - case 'address': - return new Mediate('raw', padAddress(token.value)); - - case 'int': - case 'uint': - return new Mediate('raw', padU32(token.value)); - - case 'bool': - return new Mediate('raw', padBool(token.value)); - - case 'fixedBytes': - return new Mediate('raw', padFixedBytes(token.value)); - - case 'bytes': - return new Mediate('prefixed', padBytes(token.value)); - - case 'string': - return new Mediate('prefixed', padString(token.value)); - - case 'fixedArray': - case 'array': - return new Mediate(token.type, token.value.map((token) => Encoder.encodeToken(token))); - } - } catch (e) { - throw new Error(`Cannot encode token #${index} [${token.type}: ${token.value}]. ${e.message}`); - } - - throw new Error(`Invalid token type ${token.type} in encodeToken`); - } -} diff --git a/js/packages/abi/encoder/encoder.spec.js b/js/packages/abi/encoder/encoder.spec.js deleted file mode 100644 index 9a4a24361..000000000 --- a/js/packages/abi/encoder/encoder.spec.js +++ /dev/null @@ -1,291 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Encoder from './encoder'; -import Token from '../token'; -import { padAddress, padFixedBytes, padU32 } from '../util/pad'; - -describe('abi/encoder/Encoder', () => { - describe('encodeToken', () => { - it('requires token as Token', () => { - expect(() => Encoder.encodeToken()).to.throw(/Token/); - }); - - it('encodes address tokens in Mediate(raw)', () => { - const mediate = Encoder.encodeToken(new Token('address', '123')); - - expect(mediate.type).to.equal('raw'); - expect(mediate.value).to.be.ok; - }); - - it('encodes bool tokens in Mediate(raw)', () => { - const mediatet = Encoder.encodeToken(new Token('bool', true)); - const mediatef = Encoder.encodeToken(new Token('bool', false)); - - expect(mediatet.type).to.equal('raw'); - expect(mediatet.value).to.be.ok; - - expect(mediatef.type).to.equal('raw'); - expect(mediatef.value).to.be.ok; - }); - - it('encodes int tokens in Mediate(raw)', () => { - const mediate = Encoder.encodeToken(new Token('int', '123')); - - expect(mediate.type).to.equal('raw'); - expect(mediate.value).to.be.ok; - }); - - it('encodes uint tokens in Mediate(raw)', () => { - const mediate = Encoder.encodeToken(new Token('uint', '123')); - - expect(mediate.type).to.equal('raw'); - expect(mediate.value).to.be.ok; - }); - - it('encodes fixedBytes tokens in Mediate(raw)', () => { - const mediate = Encoder.encodeToken(new Token('fixedBytes', '123')); - - expect(mediate.type).to.equal('raw'); - expect(mediate.value).to.be.ok; - }); - - it('encodes bytes tokens in Mediate(prefixed)', () => { - const mediate = Encoder.encodeToken(new Token('bytes', '123')); - - expect(mediate.type).to.equal('prefixed'); - expect(mediate.value).to.be.ok; - }); - - it('encodes string tokens in Mediate(prefixed)', () => { - const mediate = Encoder.encodeToken(new Token('string', '123')); - - expect(mediate.type).to.equal('prefixed'); - expect(mediate.value).to.be.ok; - }); - - it('encodes fixedArray tokens in Mediate(fixedArray)', () => { - const mediate = Encoder.encodeToken(new Token('fixedArray', [new Token('uint', '123')])); - - expect(mediate.type).to.equal('fixedArray'); - expect(mediate.value).to.be.ok; - }); - - it('encodes array tokens in Mediate(array)', () => { - const mediate = Encoder.encodeToken(new Token('array', [new Token('uint', '123')])); - - expect(mediate.type).to.equal('array'); - expect(mediate.value).to.be.ok; - }); - - it('throws an Error on invalid tokens', () => { - const token = new Token('address'); - - token._type = 'noMatch'; - - expect(() => Encoder.encodeToken(token)).to.throw(/noMatch/); - }); - }); - - describe('encode', () => { - it('requires tokens array', () => { - expect(() => Encoder.encode()).to.throw(/array/); - }); - - describe('addresses', () => { - const address1 = '1111111111111111111111111111111111111111'; - const address2 = '2222222222222222222222222222222222222222'; - const address3 = '3333333333333333333333333333333333333333'; - const address4 = '4444444444444444444444444444444444444444'; - const encAddress1 = padAddress(address1); - const encAddress2 = padAddress(address2); - const encAddress3 = padAddress(address3); - const encAddress4 = padAddress(address4); - const tokenAddress1 = new Token('address', address1); - const tokenAddress2 = new Token('address', address2); - const tokenAddress3 = new Token('address', address3); - const tokenAddress4 = new Token('address', address4); - - it('encodes an address', () => { - const token = tokenAddress1; - - expect(Encoder.encode([token])).to.equal(encAddress1); - }); - - it('encodes an array of addresses', () => { - const expected = `${padU32(0x20)}${padU32(2)}${encAddress1}${encAddress2}`; - const token = new Token('array', [tokenAddress1, tokenAddress2]); - - expect(Encoder.encode([token])).to.equal(expected); - }); - - it('encodes an fixedArray of addresses', () => { - const expected = `${encAddress1}${encAddress2}`; - const token = new Token('fixedArray', [tokenAddress1, tokenAddress2]); - - expect(Encoder.encode([token])).to.equal(expected); - }); - - it('encodes two addresses', () => { - const expected = `${encAddress1}${encAddress2}`; - const tokens = [tokenAddress1, tokenAddress2]; - - expect(Encoder.encode(tokens)).to.equal(expected); - }); - - it('encodes fixed array of dynamic array addresses', () => { - const tokens1 = new Token('array', [tokenAddress1, tokenAddress2]); - const tokens2 = new Token('array', [tokenAddress3, tokenAddress4]); - const fixed = new Token('fixedArray', [tokens1, tokens2]); - const expected = `${padU32(0x40)}${padU32(0xa0)}${padU32(2)}${encAddress1}${encAddress2}${padU32(2)}${encAddress3}${encAddress4}`; - - expect(Encoder.encode([fixed])).to.equal(expected); - }); - - it('encodes dynamic array of fixed array addresses', () => { - const tokens1 = new Token('fixedArray', [tokenAddress1, tokenAddress2]); - const tokens2 = new Token('fixedArray', [tokenAddress3, tokenAddress4]); - const dynamic = new Token('array', [tokens1, tokens2]); - const expected = `${padU32(0x20)}${padU32(2)}${encAddress1}${encAddress2}${encAddress3}${encAddress4}`; - - expect(Encoder.encode([dynamic])).to.equal(expected); - }); - - it('encodes dynamic array of dynamic array addresses', () => { - const tokens1 = new Token('array', [tokenAddress1]); - const tokens2 = new Token('array', [tokenAddress2]); - const dynamic = new Token('array', [tokens1, tokens2]); - const expected = `${padU32(0x20)}${padU32(2)}${padU32(0x80)}${padU32(0xc0)}${padU32(1)}${encAddress1}${padU32(1)}${encAddress2}`; - - expect(Encoder.encode([dynamic])).to.equal(expected); - }); - - it('encodes dynamic array of dynamic array addresses (2)', () => { - const tokens1 = new Token('array', [tokenAddress1, tokenAddress2]); - const tokens2 = new Token('array', [tokenAddress3, tokenAddress4]); - const dynamic = new Token('array', [tokens1, tokens2]); - const expected = `${padU32(0x20)}${padU32(2)}${padU32(0x80)}${padU32(0xe0)}${padU32(2)}${encAddress1}${encAddress2}${padU32(2)}${encAddress3}${encAddress4}`; - - expect(Encoder.encode([dynamic])).to.equal(expected); - }); - - it('encodes fixed array of fixed array addresses', () => { - const tokens1 = new Token('fixedArray', [tokenAddress1, tokenAddress2]); - const tokens2 = new Token('fixedArray', [tokenAddress3, tokenAddress4]); - const dynamic = new Token('fixedArray', [tokens1, tokens2]); - const expected = `${encAddress1}${encAddress2}${encAddress3}${encAddress4}`; - - expect(Encoder.encode([dynamic])).to.equal(expected); - }); - }); - - describe('bytes', () => { - const bytes1 = '0x1234'; - const bytes2 = '0x10000000000000000000000000000000000000000000000000000000000002'; - const bytes3 = '0x1000000000000000000000000000000000000000000000000000000000000000'; - - it('encodes fixed bytes', () => { - const token = new Token('fixedBytes', bytes1); - - expect(Encoder.encode([token])).to.equal(padFixedBytes(bytes1)); - }); - - it('encodes bytes', () => { - const token = new Token('bytes', bytes1); - - expect(Encoder.encode([token])).to.equal(`${padU32(0x20)}${padU32(2)}${padFixedBytes(bytes1)}`); - }); - - it('encodes bytes (short of boundary)', () => { - const token = new Token('bytes', bytes2); - - expect(Encoder.encode([token])).to.equal(`${padU32(0x20)}${padU32(0x1f)}${padFixedBytes(bytes2)}`); - }); - - it('encodes bytes (two blocks)', () => { - const input = `${bytes3}${bytes3.slice(-64)}`; - const token = new Token('bytes', input); - - expect(Encoder.encode([token])).to.equal(`${padU32(0x20)}${padU32(0x40)}${padFixedBytes(input)}`); - }); - - it('encodes two consecutive bytes', () => { - const in1 = '0x10000000000000000000000000000000000000000000000000000000000002'; - const in2 = '0x0010000000000000000000000000000000000000000000000000000000000002'; - const tokens = [new Token('bytes', in1), new Token('bytes', in2)]; - - expect(Encoder.encode(tokens)).to.equal(`${padU32(0x40)}${padU32(0x80)}${padU32(0x1f)}${padFixedBytes(in1)}${padU32(0x20)}${padFixedBytes(in2)}`); - }); - }); - - describe('string', () => { - it('encodes a string', () => { - const string = 'gavofyork'; - const stringEnc = padFixedBytes('0x6761766f66796f726b'); - const token = new Token('string', string); - - expect(Encoder.encode([token])).to.equal(`${padU32(0x20)}${padU32(string.length.toString(16))}${stringEnc}`); - }); - }); - - describe('uint', () => { - it('encodes a uint', () => { - const token = new Token('uint', 4); - - expect(Encoder.encode([token])).to.equal(padU32(4)); - }); - }); - - describe('int', () => { - it('encodes a int', () => { - const token = new Token('int', 4); - - expect(Encoder.encode([token])).to.equal(padU32(4)); - }); - }); - - describe('bool', () => { - it('encodes a bool (true)', () => { - const token = new Token('bool', true); - - expect(Encoder.encode([token])).to.equal(padU32(1)); - }); - - it('encodes a bool (false)', () => { - const token = new Token('bool', false); - - expect(Encoder.encode([token])).to.equal(padU32(0)); - }); - }); - - describe('comprehensive test', () => { - it('encodes a complex sequence', () => { - const bytes = '0x131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'; - const tokens = [new Token('int', 5), new Token('bytes', bytes), new Token('int', 3), new Token('bytes', bytes)]; - - expect(Encoder.encode(tokens)).to.equal(`${padU32(5)}${padU32(0x80)}${padU32(3)}${padU32(0xe0)}${padU32(0x40)}${bytes.substr(2)}${padU32(0x40)}${bytes.substr(2)}`); - }); - - it('encodes a complex sequence (nested)', () => { - const array = [new Token('int', 5), new Token('int', 6), new Token('int', 7)]; - const tokens = [new Token('int', 1), new Token('string', 'gavofyork'), new Token('int', 2), new Token('int', 3), new Token('int', 4), new Token('array', array)]; - const stringEnc = padFixedBytes('0x6761766f66796f726b'); - - expect(Encoder.encode(tokens)).to.equal(`${padU32(1)}${padU32(0xc0)}${padU32(2)}${padU32(3)}${padU32(4)}${padU32(0x100)}${padU32(9)}${stringEnc}${padU32(3)}${padU32(5)}${padU32(6)}${padU32(7)}`); - }); - }); - }); -}); diff --git a/js/packages/abi/encoder/index.js b/js/packages/abi/encoder/index.js deleted file mode 100644 index 5ac3c0a6b..000000000 --- a/js/packages/abi/encoder/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './encoder'; diff --git a/js/packages/abi/encoder/mediate.js b/js/packages/abi/encoder/mediate.js deleted file mode 100644 index 90cc28881..000000000 --- a/js/packages/abi/encoder/mediate.js +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const TYPES = ['raw', 'prefixed', 'fixedArray', 'array']; - -import { padU32 } from '../util/pad'; - -export default class Mediate { - constructor (type, value) { - Mediate.validateType(type); - - this._type = type; - this._value = value; - } - - initLength () { - switch (this._type) { - case 'raw': - return this._value.length / 2; - - case 'array': - case 'prefixed': - return 32; - - case 'fixedArray': - return this._value - .reduce((total, mediate) => { - return total + mediate.initLength(); - }, 0); - } - } - - closingLength () { - switch (this._type) { - case 'raw': - return 0; - - case 'prefixed': - return this._value.length / 2; - - case 'array': - return this._value - .reduce((total, mediate) => { - return total + mediate.initLength(); - }, 32); - - case 'fixedArray': - return this._value - .reduce((total, mediate) => { - return total + mediate.initLength() + mediate.closingLength(); - }, 0); - } - } - - init (suffixOffset) { - switch (this._type) { - case 'raw': - return this._value; - - case 'fixedArray': - return this._value - .map((mediate, idx) => mediate.init(Mediate.offsetFor(this._value, idx)).toString(16)) - .join(''); - - case 'prefixed': - case 'array': - return padU32(suffixOffset); - } - } - - closing (offset) { - switch (this._type) { - case 'raw': - return ''; - - case 'prefixed': - return this._value; - - case 'fixedArray': - return this._value - .map((mediate, idx) => mediate.closing(Mediate.offsetFor(this._value, idx)).toString(16)) - .join(''); - - case 'array': - const prefix = padU32(this._value.length); - const inits = this._value - .map((mediate, idx) => mediate.init(offset + Mediate.offsetFor(this._value, idx) + 32).toString(16)) - .join(''); - const closings = this._value - .map((mediate, idx) => mediate.closing(offset + Mediate.offsetFor(this._value, idx)).toString(16)) - .join(''); - - return `${prefix}${inits}${closings}`; - } - } - - get type () { - return this._type; - } - - get value () { - return this._value; - } - - static offsetFor (mediates, position) { - if (position < 0 || position >= mediates.length) { - throw new Error(`Invalid position ${position} specified for Mediate.offsetFor`); - } - - const initLength = mediates - .reduce((total, mediate) => { - return total + mediate.initLength(); - }, 0); - - return mediates - .slice(0, position) - .reduce((total, mediate) => { - return total + mediate.closingLength(); - }, initLength); - } - - static validateType (type) { - if (TYPES.filter((_type) => type === _type).length) { - return true; - } - - throw new Error(`Invalid type ${type} received for Mediate.validateType`); - } -} diff --git a/js/packages/abi/encoder/mediate.spec.js b/js/packages/abi/encoder/mediate.spec.js deleted file mode 100644 index ab89909b1..000000000 --- a/js/packages/abi/encoder/mediate.spec.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Mediate from './mediate'; - -describe('abi/encoder/Mediate', () => { - const LONG15 = '1234567890abcdef000000000000000000000000000000000000000000000000'; - const DOUBLE15 = `${LONG15}${LONG15}`; - const ARRAY = [new Mediate('raw', DOUBLE15), new Mediate('raw', LONG15)]; - - describe('validateType', () => { - it('validates raw', () => { - expect(Mediate.validateType('raw')).to.be.true; - }); - - it('validates prefixed', () => { - expect(Mediate.validateType('prefixed')).to.be.true; - }); - - it('validates fixedArray', () => { - expect(Mediate.validateType('fixedArray')).to.be.true; - }); - - it('validates array', () => { - expect(Mediate.validateType('array')).to.be.true; - }); - - it('throws an error on invalid types', () => { - expect(() => Mediate.validateType('noMatch')).to.throw(/noMatch/); - }); - }); - - describe('offsetFor', () => { - it('thows an error when offset < 0', () => { - expect(() => Mediate.offsetFor([1], -1)).to.throw(/Invalid position/); - }); - - it('throws an error when offset >= length', () => { - expect(() => Mediate.offsetFor([1], 1)).to.throw(/Invalid position/); - }); - }); - - describe('constructor', () => { - it('throws an error on invalid types', () => { - expect(() => new Mediate('noMatch', '1')).to.throw(/noMatch/); - }); - - it('sets the type of the object', () => { - expect((new Mediate('raw', '1')).type).to.equal('raw'); - }); - - it('sets the value of the object', () => { - expect((new Mediate('raw', '1')).value).to.equal('1'); - }); - }); - - describe('initLength', () => { - it('returns correct variable byte length for raw', () => { - expect(new Mediate('raw', DOUBLE15).initLength()).to.equal(64); - }); - - it('returns correct fixed byte length for array', () => { - expect(new Mediate('array', [1, 2, 3, 4]).initLength()).to.equal(32); - }); - - it('returns correct fixed byte length for prefixed', () => { - expect(new Mediate('prefixed', 0).initLength()).to.equal(32); - }); - - it('returns correct variable byte length for fixedArray', () => { - expect(new Mediate('fixedArray', ARRAY).initLength()).to.equal(96); - }); - }); - - describe('closingLength', () => { - it('returns 0 byte length for raw', () => { - expect(new Mediate('raw', DOUBLE15).closingLength()).to.equal(0); - }); - - it('returns prefix + size for prefixed', () => { - expect(new Mediate('prefixed', DOUBLE15).closingLength()).to.equal(64); - }); - - it('returns prefix + size for array', () => { - expect(new Mediate('array', ARRAY).closingLength()).to.equal(128); - }); - - it('returns total length for fixedArray', () => { - expect(new Mediate('fixedArray', ARRAY).closingLength()).to.equal(96); - }); - }); -}); diff --git a/js/packages/abi/index.js b/js/packages/abi/index.js deleted file mode 100644 index 703ed1c78..000000000 --- a/js/packages/abi/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './abi'; diff --git a/js/packages/abi/package.json b/js/packages/abi/package.json deleted file mode 100644 index 946d15e57..000000000 --- a/js/packages/abi/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@parity/abi", - "description": "The Parity ABI library", - "version": "0.0.0", - "main": "index.js", - "author": "Parity Team ", - "maintainers": [ - "Jaco Greeff", - "Nicolas Gotchac" - ], - "contributors": [], - "license": "GPL-3.0", - "repository": { - "type": "git", - "url": "git+https://github.com/paritytech/parity.git" - }, - "keywords": [ - "Ethereum", - "ABI", - "Parity" - ], - "scripts": { - }, - "devDependencies": { - }, - "dependencies": { - "bignumber.js": "3.0.1", - "js-sha3": "0.5.5" - } -} diff --git a/js/packages/abi/spec/constructor.js b/js/packages/abi/spec/constructor.js deleted file mode 100644 index e9b23b593..000000000 --- a/js/packages/abi/spec/constructor.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Encoder from '../encoder/encoder'; -import Param from './param'; - -export default class Constructor { - constructor (abi) { - this._inputs = Param.toParams(abi.inputs || []); - } - - get inputs () { - return this._inputs; - } - - inputParamTypes () { - return this._inputs.map((input) => input.kind); - } - - encodeCall (tokens) { - return Encoder.encode(tokens); - } -} diff --git a/js/packages/abi/spec/constructor.spec.js b/js/packages/abi/spec/constructor.spec.js deleted file mode 100644 index 7c7414bdc..000000000 --- a/js/packages/abi/spec/constructor.spec.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Constructor from './constructor'; -import Param from './param'; -import Token from '../token'; - -describe('abi/spec/Constructor', () => { - const inputsArr = [{ name: 'boolin', type: 'bool' }, { name: 'stringin', type: 'string' }]; - const bool = new Param('boolin', 'bool'); - const string = new Param('stringin', 'string'); - - const inputs = [bool, string]; - const cr = new Constructor({ inputs: inputsArr }); - - describe('constructor', () => { - it('stores the inputs as received', () => { - expect(cr.inputs).to.deep.equal(inputs); - }); - - it('matches empty inputs with []', () => { - expect(new Constructor({}).inputs).to.deep.equal([]); - }); - }); - - describe('inputParamTypes', () => { - it('retrieves the input types as received', () => { - expect(cr.inputParamTypes()).to.deep.equal([bool.kind, string.kind]); - }); - }); - - describe('encodeCall', () => { - it('encodes correctly', () => { - const result = cr.encodeCall([new Token('bool', true), new Token('string', 'jacogr')]); - - expect(result).to.equal('0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000066a61636f67720000000000000000000000000000000000000000000000000000'); - }); - }); -}); diff --git a/js/packages/abi/spec/event/decodedLog.js b/js/packages/abi/spec/event/decodedLog.js deleted file mode 100644 index e398c5a1b..000000000 --- a/js/packages/abi/spec/event/decodedLog.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class DecodedLog { - constructor (params, address) { - this._params = params; - this._address = address; - } - - get address () { - return this._address; - } - - get params () { - return this._params; - } -} diff --git a/js/packages/abi/spec/event/decodedLog.spec.js b/js/packages/abi/spec/event/decodedLog.spec.js deleted file mode 100644 index f448af011..000000000 --- a/js/packages/abi/spec/event/decodedLog.spec.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import DecodedLog from './decodedLog'; - -const log = new DecodedLog('someParams', 'someAddress'); - -describe('abi/spec/event/DecodedLog', () => { - describe('constructor', () => { - it('sets internal state', () => { - expect(log.params).to.equal('someParams'); - expect(log.address).to.equal('someAddress'); - }); - }); -}); diff --git a/js/packages/abi/spec/event/decodedLogParam.js b/js/packages/abi/spec/event/decodedLogParam.js deleted file mode 100644 index 422fbaac8..000000000 --- a/js/packages/abi/spec/event/decodedLogParam.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import ParamType from '../paramType/paramType'; -import Token from '../../token/token'; -import { isInstanceOf } from '../../util/types'; - -export default class DecodedLogParam { - constructor (name, kind, token) { - if (!isInstanceOf(kind, ParamType)) { - throw new Error('kind not instanceof ParamType'); - } else if (!isInstanceOf(token, Token)) { - throw new Error('token not instanceof Token'); - } - - this._name = name; - this._kind = kind; - this._token = token; - } - - get name () { - return this._name; - } - - get kind () { - return this._kind; - } - - get token () { - return this._token; - } -} diff --git a/js/packages/abi/spec/event/decodedLogParam.spec.js b/js/packages/abi/spec/event/decodedLogParam.spec.js deleted file mode 100644 index 6a7f52044..000000000 --- a/js/packages/abi/spec/event/decodedLogParam.spec.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import DecodedLogParam from './decodedLogParam'; -import ParamType from '../paramType'; -import Token from '../../token'; - -describe('abi/spec/event/DecodedLogParam', () => { - describe('constructor', () => { - const pt = new ParamType('bool'); - const tk = new Token('bool'); - - it('disallows kind not instanceof ParamType', () => { - expect(() => new DecodedLogParam('test', 'param')).to.throw(/ParamType/); - }); - - it('disallows token not instanceof Token', () => { - expect(() => new DecodedLogParam('test', pt, 'token')).to.throw(/Token/); - }); - - it('stores all parameters received', () => { - const log = new DecodedLogParam('test', pt, tk); - - expect(log.name).to.equal('test'); - expect(log.kind).to.equal(pt); - expect(log.token).to.equal(tk); - }); - }); -}); diff --git a/js/packages/abi/spec/event/event.js b/js/packages/abi/spec/event/event.js deleted file mode 100644 index 604f58cb1..000000000 --- a/js/packages/abi/spec/event/event.js +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Decoder from '../../decoder/decoder'; -import DecodedLog from './decodedLog'; -import DecodedLogParam from './decodedLogParam'; -import EventParam from './eventParam'; -import { asAddress } from '../../util/sliceAs'; -import { eventSignature } from '../../util/signature'; - -export default class Event { - constructor (abi) { - this._inputs = EventParam.toEventParams(abi.inputs || []); - this._anonymous = !!abi.anonymous; - - const { id, name, signature } = eventSignature(abi.name, this.inputParamTypes()); - - this._id = id; - this._name = name; - this._signature = signature; - } - - get name () { - return this._name; - } - - get id () { - return this._id; - } - - get inputs () { - return this._inputs; - } - - get anonymous () { - return this._anonymous; - } - - get signature () { - return this._signature; - } - - inputParamTypes () { - return this._inputs.map((input) => input.kind); - } - - inputParamNames () { - return this._inputs.map((input) => input.name); - } - - indexedParams (indexed) { - return this._inputs.filter((input) => input.indexed === indexed); - } - - decodeLog (topics, data) { - const topicParams = this.indexedParams(true); - const dataParams = this.indexedParams(false); - - let address; - let toSkip; - - if (!this.anonymous) { - address = asAddress(topics[0]); - toSkip = 1; - } else { - toSkip = 0; - } - - const topicTypes = topicParams.map((param) => param.kind); - const flatTopics = topics - .filter((topic, idx) => idx >= toSkip) - .map((topic) => { - return (topic.substr(0, 2) === '0x') - ? topic.substr(2) - : topic; - }).join(''); - const topicTokens = Decoder.decode(topicTypes, flatTopics); - - if (topicTokens.length !== (topics.length - toSkip)) { - throw new Error('Invalid topic data'); - } - - const dataTypes = dataParams.map((param) => param.kind); - const dataTokens = Decoder.decode(dataTypes, data); - - const namedTokens = {}; - - topicParams.forEach((param, idx) => { - namedTokens[param.name || idx] = topicTokens[idx]; - }); - dataParams.forEach((param, idx) => { - namedTokens[param.name || idx] = dataTokens[idx]; - }); - - const inputParamTypes = this.inputParamTypes(); - const decodedParams = this.inputParamNames() - .map((name, idx) => new DecodedLogParam(name, inputParamTypes[idx], namedTokens[name || idx])); - - return new DecodedLog(decodedParams, address); - } -} diff --git a/js/packages/abi/spec/event/event.spec.js b/js/packages/abi/spec/event/event.spec.js deleted file mode 100644 index bf47980fc..000000000 --- a/js/packages/abi/spec/event/event.spec.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import Event from './event'; -import EventParam from './eventParam'; -import DecodedLogParam from './decodedLogParam'; -import ParamType from '../paramType'; -import Token from '../../token'; - -describe('abi/spec/event/Event', () => { - const inputArr = [{ name: 'a', type: 'bool' }, { name: 'b', type: 'uint', indexed: true }]; - const inputs = [new EventParam('a', 'bool', false), new EventParam('b', 'uint', true)]; - const event = new Event({ name: 'test', inputs: inputArr, anonymous: true }); - - describe('constructor', () => { - it('stores the parameters as received', () => { - expect(event.name).to.equal('test'); - expect(event.inputs).to.deep.equal(inputs); - expect(event.anonymous).to.be.true; - }); - - it('matches empty inputs with []', () => { - expect(new Event({ name: 'test' }).inputs).to.deep.equal([]); - }); - - it('sets the event signature', () => { - expect(new Event({ name: 'baz' }).signature) - .to.equal('a7916fac4f538170f7cd12c148552e2cba9fcd72329a2dd5b07a6fa906488ddf'); - }); - }); - - describe('inputParamTypes', () => { - it('returns all the types', () => { - expect(event.inputParamTypes()).to.deep.equal([new ParamType('bool'), new ParamType('uint', null, 256, true)]); - }); - }); - - describe('inputParamNames', () => { - it('returns all the names', () => { - expect(event.inputParamNames()).to.deep.equal(['a', 'b']); - }); - }); - - describe('indexedParams', () => { - it('returns all indexed parameters (indexed)', () => { - expect(event.indexedParams(true)).to.deep.equal([inputs[1]]); - }); - - it('returns all indexed parameters (non-indexed)', () => { - expect(event.indexedParams(false)).to.deep.equal([inputs[0]]); - }); - }); - - describe('decodeLog', () => { - it('decodes an event', () => { - const event = new Event({ - name: 'foo', - inputs: [ - { name: 'a', type: 'int' }, - { name: 'b', type: 'int', indexed: true }, - { name: 'c', type: 'address' }, - { name: 'd', type: 'address', indexed: true } - ] - }); - const decoded = event.decodeLog([ - '0000000000000000000000004444444444444444444444444444444444444444', - '0000000000000000000000000000000000000000000000000000000000000002', - '0000000000000000000000001111111111111111111111111111111111111111' ], - '00000000000000000000000000000000000000000000000000000000000000030000000000000000000000002222222222222222222222222222222222222222'); - - expect(decoded.address).to.equal('0x4444444444444444444444444444444444444444'); - expect(decoded.params).to.deep.equal([ - new DecodedLogParam('a', new ParamType('int', null, 256), new Token('int', new BigNumber(3))), - new DecodedLogParam('b', new ParamType('int', null, 256, true), new Token('int', new BigNumber(2))), - new DecodedLogParam('c', new ParamType('address'), new Token('address', '0x2222222222222222222222222222222222222222')), - new DecodedLogParam('d', new ParamType('address', null, 0, true), new Token('address', '0x1111111111111111111111111111111111111111')) - ]); - }); - - it('decodes an anonymous event', () => { - const event = new Event({ name: 'foo', inputs: [{ name: 'a', type: 'int' }], anonymous: true }); - const decoded = event.decodeLog([], '0000000000000000000000000000000000000000000000000000000000000003'); - - expect(decoded.address).to.not.be.ok; - expect(decoded.params).to.deep.equal([ - new DecodedLogParam('a', new ParamType('int', null, 256), new Token('int', new BigNumber(3))) - ]); - }); - - it('throws on invalid topics', () => { - const event = new Event({ name: 'foo', inputs: [{ name: 'a', type: 'int' }], anonymous: true }); - - expect(() => event.decodeLog(['0000000000000000000000004444444444444444444444444444444444444444'], '0000000000000000000000000000000000000000000000000000000000000003')).to.throw(/Invalid/); - }); - }); -}); diff --git a/js/packages/abi/spec/event/eventParam.js b/js/packages/abi/spec/event/eventParam.js deleted file mode 100644 index b49b77814..000000000 --- a/js/packages/abi/spec/event/eventParam.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { toParamType } from '../paramType/format'; - -export default class EventParam { - constructor (name, type, indexed = false) { - this._name = name; - this._indexed = indexed; - this._kind = toParamType(type, indexed); - } - - get name () { - return this._name; - } - - get kind () { - return this._kind; - } - - get indexed () { - return this._indexed; - } - - static toEventParams (params) { - return params.map((param) => new EventParam(param.name, param.type, param.indexed)); - } -} diff --git a/js/packages/abi/spec/event/eventParam.spec.js b/js/packages/abi/spec/event/eventParam.spec.js deleted file mode 100644 index e35ebcebc..000000000 --- a/js/packages/abi/spec/event/eventParam.spec.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import EventParam from './eventParam'; - -describe('abi/spec/event/EventParam', () => { - describe('constructor', () => { - it('sets the properties', () => { - const param = new EventParam('foo', 'uint', true); - - expect(param.name).to.equal('foo'); - expect(param.kind.type).to.equal('uint'); - expect(param.indexed).to.be.true; - }); - - it('uses defaults for indexed', () => { - expect(new EventParam('foo', 'uint').indexed).to.be.false; - }); - }); - - describe('toEventParams', () => { - it('maps an array of params', () => { - const params = EventParam.toEventParams([{ name: 'foo', type: 'uint' }]); - - expect(params.length).to.equal(1); - expect(params[0].indexed).to.be.false; - expect(params[0].name).to.equal('foo'); - expect(params[0].kind.type).to.equal('uint'); - }); - }); -}); diff --git a/js/packages/abi/spec/event/index.js b/js/packages/abi/spec/event/index.js deleted file mode 100644 index 25441954b..000000000 --- a/js/packages/abi/spec/event/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './event'; diff --git a/js/packages/abi/spec/function.js b/js/packages/abi/spec/function.js deleted file mode 100644 index 6010f4e59..000000000 --- a/js/packages/abi/spec/function.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Decoder from '../decoder/decoder'; -import Encoder from '../encoder/encoder'; -import Param from './param'; -import { methodSignature } from '../util/signature'; - -export default class Func { - constructor (abi) { - this._abi = abi; - this._constant = !!abi.constant; - this._payable = abi.payable; - this._inputs = Param.toParams(abi.inputs || []); - this._outputs = Param.toParams(abi.outputs || []); - - const { id, name, signature } = methodSignature(abi.name, this.inputParamTypes()); - - this._id = id; - this._name = name; - this._signature = signature; - } - - get abi () { - return this._abi; - } - - get constant () { - return this._constant; - } - - get name () { - return this._name; - } - - get id () { - return this._id; - } - - get payable () { - return this._payable; - } - - get inputs () { - return this._inputs; - } - - get outputs () { - return this._outputs; - } - - get signature () { - return this._signature; - } - - inputParamTypes () { - return this._inputs.map((input) => input.kind); - } - - outputParamTypes () { - return this._outputs.map((output) => output.kind); - } - - encodeCall (tokens) { - return `${this._signature}${Encoder.encode(tokens)}`; - } - - decodeInput (data) { - return Decoder.decode(this.inputParamTypes(), data); - } - - decodeOutput (data) { - return Decoder.decode(this.outputParamTypes(), data); - } -} diff --git a/js/packages/abi/spec/function.spec.js b/js/packages/abi/spec/function.spec.js deleted file mode 100644 index 436ca7365..000000000 --- a/js/packages/abi/spec/function.spec.js +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Func from './function'; -import Param from './param'; -import Token from '../token'; - -describe('abi/spec/Function', () => { - const inputsArr = [{ name: 'boolin', type: 'bool' }, { name: 'stringin', type: 'string' }]; - const outputsArr = [{ name: 'output', type: 'uint' }]; - - const uint = new Param('output', 'uint'); - const bool = new Param('boolin', 'bool'); - const string = new Param('stringin', 'string'); - const inputs = [bool, string]; - const outputs = [uint]; - - const func = new Func({ - name: 'test', - inputs: inputsArr, - outputs: outputsArr - }); - - describe('constructor', () => { - it('returns signature correctly if name already contains it', () => { - const func = new Func({ - name: 'test(bool,string)', - inputs: inputsArr, - outputs: outputsArr - }); - - expect(func.name).to.equal('test'); - expect(func.id).to.equal('test(bool,string)'); - expect(func.signature).to.equal('02356205'); - }); - - it('stores the parameters as received', () => { - expect(func.name).to.equal('test'); - expect(func.constant).to.be.false; - expect(func.inputs).to.deep.equal(inputs); - expect(func.outputs).to.deep.equal(outputs); - }); - - it('matches empty inputs with []', () => { - expect(new Func({ name: 'test', outputs: outputsArr }).inputs).to.deep.equal([]); - }); - - it('matches empty outputs with []', () => { - expect(new Func({ name: 'test', inputs: inputsArr }).outputs).to.deep.equal([]); - }); - - it('sets the method signature', () => { - expect(new Func({ name: 'baz' }).signature).to.equal('a7916fac'); - }); - - it('allows constant functions', () => { - expect(new Func({ name: 'baz', constant: true }).constant).to.be.true; - }); - }); - - describe('inputParamTypes', () => { - it('retrieves the input types as received', () => { - expect(func.inputParamTypes()).to.deep.equal([bool.kind, string.kind]); - }); - }); - - describe('outputParamTypes', () => { - it('retrieves the output types as received', () => { - expect(func.outputParamTypes()).to.deep.equal([uint.kind]); - }); - }); - - describe('encodeCall', () => { - it('encodes the call correctly', () => { - const result = func.encodeCall([new Token('bool', true), new Token('string', 'jacogr')]); - - expect(result).to.equal('023562050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000066a61636f67720000000000000000000000000000000000000000000000000000'); - }); - }); - - describe('decodeOutput', () => { - it('decodes the result correctly', () => { - const result = func.decodeOutput('1111111111111111111111111111111111111111111111111111111111111111'); - - expect(result[0].value.toString(16)).to.equal('1111111111111111111111111111111111111111111111111111111111111111'); - }); - }); -}); diff --git a/js/packages/abi/spec/index.js b/js/packages/abi/spec/index.js deleted file mode 100644 index 87852d488..000000000 --- a/js/packages/abi/spec/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './interface'; diff --git a/js/packages/abi/spec/interface.js b/js/packages/abi/spec/interface.js deleted file mode 100644 index b24569525..000000000 --- a/js/packages/abi/spec/interface.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Constructor from './constructor'; -import Event from './event/event'; -import Func from './function'; -import Token from '../token'; - -export default class Interface { - constructor (abi) { - this._interface = Interface.parseABI(abi); - } - - get interface () { - return this._interface; - } - - get constructors () { - return this._interface.filter((item) => item instanceof Constructor); - } - - get events () { - return this._interface.filter((item) => item instanceof Event); - } - - get functions () { - return this._interface.filter((item) => item instanceof Func); - } - - encodeTokens (paramTypes, values) { - return Interface.encodeTokens(paramTypes, values); - } - - static encodeTokens (paramTypes, values) { - const createToken = function (paramType, value) { - if (paramType.subtype) { - return new Token(paramType.type, value.map((entry) => createToken(paramType.subtype, entry))); - } - - return new Token(paramType.type, value); - }; - - return paramTypes.map((paramType, idx) => createToken(paramType, values[idx])); - } - - static parseABI (abi) { - return abi.map((item) => { - switch (item.type) { - case 'constructor': - return new Constructor(item); - - case 'event': - return new Event(item); - - case 'function': - case 'fallback': - return new Func(item); - - default: - throw new Error(`Unknown ABI type ${item.type}`); - } - }); - } -} diff --git a/js/packages/abi/spec/interface.spec.js b/js/packages/abi/spec/interface.spec.js deleted file mode 100644 index ebaa323ed..000000000 --- a/js/packages/abi/spec/interface.spec.js +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Interface from './interface'; -import ParamType from './paramType'; -import Token from '../token'; - -describe('abi/spec/Interface', () => { - const construct = { - type: 'constructor', - inputs: [] - }; - const event = { - type: 'event', - name: 'Event2', - anonymous: false, - inputs: [{ name: 'a', type: 'uint256', indexed: true }, { name: 'b', type: 'bytes32', indexed: false }] - }; - const func = { - type: 'function', - name: 'foo', - inputs: [{ name: 'a', type: 'uint256' }], - outputs: [] - }; - - describe('parseABI', () => { - it('throws on invalid types', () => { - expect(() => Interface.parseABI([{ type: 'noMatch' }])).to.throw(/noMatch/); - }); - - it('creates constructors', () => { - expect(Interface.parseABI([ construct ])).to.deep.equal([{ _inputs: [] }]); - }); - - it('creates events', () => { - expect(Interface.parseABI([ event ])[0].name).to.equal('Event2'); - }); - - it('creates functions', () => { - expect(Interface.parseABI([ func ])[0].name).to.equal('foo'); - }); - - it('parse complex interfaces', () => { - expect(Interface.parseABI([ construct, event, func ]).length).to.equal(3); - }); - }); - - describe('constructor', () => { - const int = new Interface([ construct, event, func ]); - - it('contains the full interface', () => { - expect(int.interface.length).to.equal(3); - }); - - it('contains the constructors', () => { - expect(int.constructors.length).to.equal(1); - }); - - it('contains the events', () => { - expect(int.events.length).to.equal(1); - }); - - it('contains the functions', () => { - expect(int.functions.length).to.equal(1); - }); - }); - - describe('encodeTokens', () => { - const int = new Interface([ construct, event, func ]); - - it('encodes simple types', () => { - expect( - int.encodeTokens( - [new ParamType('bool'), new ParamType('string'), new ParamType('int'), new ParamType('uint')], - [true, 'gavofyork', -123, 123] - ) - ).to.deep.equal([ - new Token('bool', true), new Token('string', 'gavofyork'), new Token('int', -123), new Token('uint', 123) - ]); - }); - - it('encodes array', () => { - expect( - int.encodeTokens( - [new ParamType('array', new ParamType('bool'))], - [[true, false, true]] - ) - ).to.deep.equal([ - new Token('array', [ - new Token('bool', true), new Token('bool', false), new Token('bool', true) - ]) - ]); - }); - - it('encodes simple with array of array', () => { - expect( - int.encodeTokens( - [ - new ParamType('bool'), - new ParamType('fixedArray', new ParamType('array', new ParamType('uint')), 2) - ], - [true, [[0, 1], [2, 3]]] - ) - ).to.deep.equal([ - new Token('bool', true), - new Token('fixedArray', [ - new Token('array', [new Token('uint', 0), new Token('uint', 1)]), - new Token('array', [new Token('uint', 2), new Token('uint', 3)]) - ]) - ]); - }); - }); -}); diff --git a/js/packages/abi/spec/param.js b/js/packages/abi/spec/param.js deleted file mode 100644 index e02b99100..000000000 --- a/js/packages/abi/spec/param.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { toParamType } from './paramType/format'; - -export default class Param { - constructor (name, type) { - this._name = name; - this._kind = toParamType(type); - } - - get name () { - return this._name; - } - - get kind () { - return this._kind; - } - - static toParams (params) { - return params.map((param) => { - if (param instanceof Param) { - return param; - } - - return new Param(param.name, param.type); - }); - } -} diff --git a/js/packages/abi/spec/param.spec.js b/js/packages/abi/spec/param.spec.js deleted file mode 100644 index 0ecdb0319..000000000 --- a/js/packages/abi/spec/param.spec.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Param from './param'; - -describe('abi/spec/Param', () => { - describe('constructor', () => { - const param = new Param('foo', 'uint'); - - it('sets the properties', () => { - expect(param.name).to.equal('foo'); - expect(param.kind.type).to.equal('uint'); - }); - }); - - describe('toParams', () => { - it('maps an array of params', () => { - const params = Param.toParams([{ name: 'foo', type: 'uint' }]); - - expect(params.length).to.equal(1); - expect(params[0].name).to.equal('foo'); - expect(params[0].kind.type).to.equal('uint'); - }); - - it('converts only if needed', () => { - const _params = Param.toParams([{ name: 'foo', type: 'uint' }]); - const params = Param.toParams(_params); - - expect(params.length).to.equal(1); - expect(params[0].name).to.equal('foo'); - expect(params[0].kind.type).to.equal('uint'); - }); - }); -}); diff --git a/js/packages/abi/spec/paramType/format.js b/js/packages/abi/spec/paramType/format.js deleted file mode 100644 index 5aafd5e30..000000000 --- a/js/packages/abi/spec/paramType/format.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import ParamType from './paramType'; - -export function toParamType (type, indexed) { - if (type[type.length - 1] === ']') { - const last = type.lastIndexOf('['); - const length = type.substr(last + 1, type.length - last - 2); - const subtype = toParamType(type.substr(0, last)); - - if (length.length === 0) { - return new ParamType('array', subtype, 0, indexed); - } - - return new ParamType('fixedArray', subtype, parseInt(length, 10), indexed); - } - - switch (type) { - case 'address': - case 'bool': - case 'bytes': - case 'string': - return new ParamType(type, null, 0, indexed); - - case 'int': - case 'uint': - return new ParamType(type, null, 256, indexed); - - default: - if (type.indexOf('uint') === 0) { - return new ParamType('uint', null, parseInt(type.substr(4), 10), indexed); - } else if (type.indexOf('int') === 0) { - return new ParamType('int', null, parseInt(type.substr(3), 10), indexed); - } else if (type.indexOf('bytes') === 0) { - return new ParamType('fixedBytes', null, parseInt(type.substr(5), 10), indexed); - } - - throw new Error(`Cannot convert ${type} to valid ParamType`); - } -} - -export function fromParamType (paramType) { - switch (paramType.type) { - case 'address': - case 'bool': - case 'bytes': - case 'string': - return paramType.type; - - case 'int': - case 'uint': - return `${paramType.type}${paramType.length}`; - - case 'fixedBytes': - return `bytes${paramType.length}`; - - case 'fixedArray': - return `${fromParamType(paramType.subtype)}[${paramType.length}]`; - - case 'array': - return `${fromParamType(paramType.subtype)}[]`; - - default: - throw new Error(`Cannot convert from ParamType ${paramType.type}`); - } -} diff --git a/js/packages/abi/spec/paramType/format.spec.js b/js/packages/abi/spec/paramType/format.spec.js deleted file mode 100644 index cb0004733..000000000 --- a/js/packages/abi/spec/paramType/format.spec.js +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import ParamType from './paramType'; -import { fromParamType, toParamType } from './format'; - -describe('abi/spec/paramType/format', () => { - describe('fromParamType', () => { - it('errors on invalid types', () => { - expect(() => fromParamType({ type: 'noMatch' })).to.throw(/noMatch/); - }); - - describe('simple types', () => { - it('converts address to address', () => { - const pt = new ParamType('address'); - - expect(fromParamType(pt)).to.equal('address'); - }); - - it('converts bool to bool', () => { - const pt = new ParamType('bool'); - - expect(fromParamType(pt)).to.equal('bool'); - }); - - it('converts bytes to bytes', () => { - const pt = new ParamType('bytes'); - - expect(fromParamType(pt)).to.equal('bytes'); - }); - - it('converts string to string', () => { - const pt = new ParamType('string'); - - expect(fromParamType(pt)).to.equal('string'); - }); - }); - - describe('length types', () => { - it('converts int32 to int32', () => { - const pt = new ParamType('int', null, 32); - - expect(fromParamType(pt)).to.equal('int32'); - }); - - it('converts uint64 to int64', () => { - const pt = new ParamType('uint', null, 64); - - expect(fromParamType(pt)).to.equal('uint64'); - }); - - it('converts fixedBytes8 to bytes8', () => { - const pt = new ParamType('fixedBytes', null, 8); - - expect(fromParamType(pt)).to.equal('bytes8'); - }); - }); - - describe('arrays', () => { - it('converts string[2] to string[2]', () => { - const pt = new ParamType('fixedArray', new ParamType('string'), 2); - - expect(fromParamType(pt)).to.equal('string[2]'); - }); - - it('converts bool[] to bool[]', () => { - const pt = new ParamType('array', new ParamType('bool')); - - expect(fromParamType(pt)).to.equal('bool[]'); - }); - - it('converts bool[][2] to bool[][2]', () => { - const pt = new ParamType('fixedArray', new ParamType('array', new ParamType('bool')), 2); - - expect(fromParamType(pt)).to.equal('bool[][2]'); - }); - - it('converts bool[2][] to bool[2][]', () => { - const pt = new ParamType('array', new ParamType('fixedArray', new ParamType('bool'), 2)); - - expect(fromParamType(pt)).to.equal('bool[2][]'); - }); - }); - }); - - describe('toParamType', () => { - it('errors on invalid types', () => { - expect(() => toParamType('noMatch')).to.throw(/noMatch/); - }); - - describe('simple mapping', () => { - it('converts address to address', () => { - const pt = toParamType('address'); - - expect(pt.type).to.equal('address'); - }); - - it('converts bool to bool', () => { - const pt = toParamType('bool'); - - expect(pt.type).to.equal('bool'); - }); - - it('converts bytes to bytes', () => { - const pt = toParamType('bytes'); - - expect(pt.type).to.equal('bytes'); - }); - - it('converts string to string', () => { - const pt = toParamType('string'); - - expect(pt.type).to.equal('string'); - }); - }); - - describe('number', () => { - it('converts int to int256', () => { - const pt = toParamType('int'); - - expect(pt.type).to.equal('int'); - expect(pt.length).to.equal(256); - }); - - it('converts uint to uint256', () => { - const pt = toParamType('uint'); - - expect(pt.type).to.equal('uint'); - expect(pt.length).to.equal(256); - }); - }); - - describe('sized types', () => { - it('converts int32 to int32', () => { - const pt = toParamType('int32'); - - expect(pt.type).to.equal('int'); - expect(pt.length).to.equal(32); - }); - - it('converts uint16 to uint16', () => { - const pt = toParamType('uint32'); - - expect(pt.type).to.equal('uint'); - expect(pt.length).to.equal(32); - }); - - it('converts bytes8 to fixedBytes8', () => { - const pt = toParamType('bytes8'); - - expect(pt.type).to.equal('fixedBytes'); - expect(pt.length).to.equal(8); - }); - }); - - describe('arrays', () => { - describe('fixed arrays', () => { - it('creates fixed array', () => { - const pt = toParamType('bytes[8]'); - - expect(pt.type).to.equal('fixedArray'); - expect(pt.subtype.type).to.equal('bytes'); - expect(pt.length).to.equal(8); - }); - - it('creates fixed arrays of fixed arrays', () => { - const pt = toParamType('bytes[45][3]'); - - expect(pt.type).to.equal('fixedArray'); - expect(pt.length).to.equal(3); - expect(pt.subtype.type).to.equal('fixedArray'); - expect(pt.subtype.length).to.equal(45); - expect(pt.subtype.subtype.type).to.equal('bytes'); - }); - }); - - describe('dynamic arrays', () => { - it('creates a dynamic array', () => { - const pt = toParamType('bytes[]'); - - expect(pt.type).to.equal('array'); - expect(pt.subtype.type).to.equal('bytes'); - }); - - it('creates a dynamic array of dynamic arrays', () => { - const pt = toParamType('bool[][]'); - - expect(pt.type).to.equal('array'); - expect(pt.subtype.type).to.equal('array'); - expect(pt.subtype.subtype.type).to.equal('bool'); - }); - }); - - describe('mixed arrays', () => { - it('creates a fixed dynamic array', () => { - const pt = toParamType('bool[][3]'); - - expect(pt.type).to.equal('fixedArray'); - expect(pt.length).to.equal(3); - expect(pt.subtype.type).to.equal('array'); - expect(pt.subtype.subtype.type).to.equal('bool'); - }); - - it('creates a dynamic fixed array', () => { - const pt = toParamType('bool[3][]'); - - expect(pt.type).to.equal('array'); - expect(pt.subtype.type).to.equal('fixedArray'); - expect(pt.subtype.length).to.equal(3); - expect(pt.subtype.subtype.type).to.equal('bool'); - }); - }); - }); - }); -}); diff --git a/js/packages/abi/spec/paramType/index.js b/js/packages/abi/spec/paramType/index.js deleted file mode 100644 index 123e198e8..000000000 --- a/js/packages/abi/spec/paramType/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './paramType'; diff --git a/js/packages/abi/spec/paramType/paramType.js b/js/packages/abi/spec/paramType/paramType.js deleted file mode 100644 index b65465d94..000000000 --- a/js/packages/abi/spec/paramType/paramType.js +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import TYPES from './types'; - -export default class ParamType { - constructor (type, subtype = null, length = 0, indexed = false) { - ParamType.validateType(type); - - this._type = type; - this._subtype = subtype; - this._length = length; - this._indexed = indexed; - } - - get type () { - return this._type; - } - - get subtype () { - return this._subtype; - } - - get length () { - return this._length; - } - - get indexed () { - return this._indexed; - } - - static validateType (type) { - if (TYPES.filter((_type) => type === _type).length) { - return true; - } - - throw new Error(`Invalid type ${type} received for ParamType`); - } -} diff --git a/js/packages/abi/spec/paramType/paramType.spec.js b/js/packages/abi/spec/paramType/paramType.spec.js deleted file mode 100644 index dc7114721..000000000 --- a/js/packages/abi/spec/paramType/paramType.spec.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import ParamType from './paramType'; - -describe('abi/spec/paramType/ParamType', () => { - describe('validateType', () => { - it('validates address', () => { - expect(ParamType.validateType('address')).to.be.true; - }); - - it('validates fixedArray', () => { - expect(ParamType.validateType('fixedArray')).to.be.true; - }); - - it('validates array', () => { - expect(ParamType.validateType('array')).to.be.true; - }); - - it('validates fixedBytes', () => { - expect(ParamType.validateType('fixedBytes')).to.be.true; - }); - - it('validates bytes', () => { - expect(ParamType.validateType('bytes')).to.be.true; - }); - - it('validates bool', () => { - expect(ParamType.validateType('bool')).to.be.true; - }); - - it('validates int', () => { - expect(ParamType.validateType('int')).to.be.true; - }); - - it('validates uint', () => { - expect(ParamType.validateType('uint')).to.be.true; - }); - - it('validates string', () => { - expect(ParamType.validateType('string')).to.be.true; - }); - - it('throws an error on invalid types', () => { - expect(() => ParamType.validateType('noMatch')).to.throw(/noMatch/); - }); - }); - - describe('constructor', () => { - it('throws an error on invalid types', () => { - expect(() => new ParamType('noMatch')).to.throw(/noMatch/); - }); - - it('sets the type of the object', () => { - expect((new ParamType('bool', null, 1)).type).to.equal('bool'); - }); - - it('sets the subtype of the object', () => { - expect((new ParamType('array', 'bool', 1)).subtype).to.equal('bool'); - }); - - it('sets the length of the object', () => { - expect((new ParamType('array', 'bool', 1)).length).to.equal(1); - }); - - it('sets the index of the object', () => { - expect((new ParamType('array', 'bool', 1, true)).indexed).to.be.true; - }); - - it('sets default values where none supplied', () => { - expect(Object.values(new ParamType('string'))).to.deep.equal(['string', null, 0, false]); - }); - }); -}); diff --git a/js/packages/abi/spec/paramType/types.js b/js/packages/abi/spec/paramType/types.js deleted file mode 100644 index e9749c588..000000000 --- a/js/packages/abi/spec/paramType/types.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const TYPES = ['address', 'bytes', 'int', 'uint', 'bool', 'string', 'array', 'fixedBytes', 'fixedArray']; - -export default TYPES; diff --git a/js/packages/abi/token/index.js b/js/packages/abi/token/index.js deleted file mode 100644 index 6a636c3c8..000000000 --- a/js/packages/abi/token/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './token'; diff --git a/js/packages/abi/token/token.js b/js/packages/abi/token/token.js deleted file mode 100644 index 7242248ab..000000000 --- a/js/packages/abi/token/token.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import TYPES from '../spec/paramType/types'; - -export default class Token { - constructor (type, value) { - Token.validateType(type); - - this._type = type; - this._value = value; - } - - get type () { - return this._type; - } - - get value () { - return this._value; - } - - static validateType (type) { - if (TYPES.filter((_type) => type === _type).length) { - return true; - } - - throw new Error(`Invalid type ${type} received for Token`); - } -} diff --git a/js/packages/abi/token/token.spec.js b/js/packages/abi/token/token.spec.js deleted file mode 100644 index cf5fc51bf..000000000 --- a/js/packages/abi/token/token.spec.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Token from './token'; - -describe('abi/token/token', () => { - describe('validateType', () => { - it('validates address', () => { - expect(Token.validateType('address')).to.be.true; - }); - - it('validates fixedArray', () => { - expect(Token.validateType('fixedArray')).to.be.true; - }); - - it('validates array', () => { - expect(Token.validateType('array')).to.be.true; - }); - - it('validates fixedBytes', () => { - expect(Token.validateType('fixedBytes')).to.be.true; - }); - - it('validates bytes', () => { - expect(Token.validateType('bytes')).to.be.true; - }); - - it('validates bool', () => { - expect(Token.validateType('bool')).to.be.true; - }); - - it('validates int', () => { - expect(Token.validateType('int')).to.be.true; - }); - - it('validates uint', () => { - expect(Token.validateType('uint')).to.be.true; - }); - - it('validates string', () => { - expect(Token.validateType('string')).to.be.true; - }); - - it('throws an error on invalid types', () => { - expect(() => Token.validateType('noMatch')).to.throw(/noMatch/); - }); - }); - - describe('constructor', () => { - it('throws an error on invalid types', () => { - expect(() => new Token('noMatch', '1')).to.throw(/noMatch/); - }); - - it('sets the type of the object', () => { - expect((new Token('bool', '1')).type).to.equal('bool'); - }); - - it('sets the value of the object', () => { - expect((new Token('bool', '1')).value).to.equal('1'); - }); - }); -}); diff --git a/js/packages/abi/util/address.js b/js/packages/abi/util/address.js deleted file mode 100644 index c0153ee5d..000000000 --- a/js/packages/abi/util/address.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { keccak_256 } from 'js-sha3'; // eslint-disable-line camelcase - -export function isChecksumValid (_address) { - const address = _address.replace('0x', ''); - const hash = keccak_256(address.toLowerCase()); - - for (let n = 0; n < 40; n++) { - const char = address[n]; - const isLower = char !== char.toUpperCase(); - const isUpper = char !== char.toLowerCase(); - const hashval = parseInt(hash[n], 16); - - if ((hashval > 7 && isLower) || (hashval <= 7 && isUpper)) { - return false; - } - } - - return true; -} - -export function isAddress (address) { - if (address && address.length === 42) { - if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) { - return false; - } else if (/^(0x)?[0-9a-f]{40}$/.test(address) || /^(0x)?[0-9A-F]{40}$/.test(address)) { - return true; - } - - return isChecksumValid(address); - } - - return false; -} - -export function toChecksumAddress (_address) { - const address = (_address || '').toLowerCase(); - - if (!isAddress(address)) { - return ''; - } - - const hash = keccak_256(address.slice(-40)); - let result = '0x'; - - for (let n = 0; n < 40; n++) { - result = `${result}${parseInt(hash[n], 16) > 7 ? address[n + 2].toUpperCase() : address[n + 2]}`; - } - - return result; -} diff --git a/js/packages/abi/util/address.spec.js b/js/packages/abi/util/address.spec.js deleted file mode 100644 index 324ba163d..000000000 --- a/js/packages/abi/util/address.spec.js +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isChecksumValid, isAddress, toChecksumAddress } from './address'; - -describe('abi/util/address', () => { - const value = '63Cf90D3f0410092FC0fca41846f596223979195'; - const address = `0x${value}`; - const lowercase = `0x${value.toLowerCase()}`; - const uppercase = `0x${value.toUpperCase()}`; - const invalid = '0x' + value.split('').map((char) => { - if (char >= 'a' && char <= 'f') { - return char.toUpperCase(); - } else if (char >= 'A' && char <= 'F') { - return char.toLowerCase(); - } - - return char; - }).join(''); - const invalidhex = '0x01234567890123456789012345678901234567gh'; - - describe('isChecksumValid', () => { - it('returns false when fully lowercase', () => { - expect(isChecksumValid(lowercase)).to.be.false; - }); - - it('returns false when fully uppercase', () => { - expect(isChecksumValid(uppercase)).to.be.false; - }); - - it('returns false on a mixed-case address', () => { - expect(isChecksumValid(invalid)).to.be.false; - }); - - it('returns true on a checksummed address', () => { - expect(isChecksumValid(address)).to.be.true; - }); - }); - - describe('isAddress', () => { - it('returns true when fully lowercase', () => { - expect(isAddress(lowercase)).to.be.true; - }); - - it('returns true when fully uppercase', () => { - expect(isAddress(uppercase)).to.be.true; - }); - - it('returns true when checksummed', () => { - expect(isAddress(address)).to.be.true; - }); - - it('returns false when invalid checksum', () => { - expect(isAddress(invalid)).to.be.false; - }); - - it('returns false on valid length, non-hex', () => { - expect(isAddress(invalidhex)).to.be.false; - }); - }); - - describe('toChecksumAddress', () => { - it('returns empty when no address specified', () => { - expect(toChecksumAddress()).to.equal(''); - }); - - it('returns empty on invalid address structure', () => { - expect(toChecksumAddress('0xnotaddress')).to.equal(''); - }); - - it('returns formatted address on checksum input', () => { - expect(toChecksumAddress(address)).to.equal(address); - }); - - it('returns formatted address on lowercase input', () => { - expect(toChecksumAddress(lowercase)).to.equal(address); - }); - - it('returns formatted address on uppercase input', () => { - expect(toChecksumAddress(uppercase)).to.equal(address); - }); - - it('returns formatted address on mixed input', () => { - expect(toChecksumAddress(invalid)).to.equal(address); - }); - }); -}); diff --git a/js/packages/abi/util/pad.js b/js/packages/abi/util/pad.js deleted file mode 100644 index 476a27445..000000000 --- a/js/packages/abi/util/pad.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import utf8 from 'utf8'; - -import { isArray } from './types'; - -const ZERO_64 = '0000000000000000000000000000000000000000000000000000000000000000'; - -export function padAddress (_input) { - const input = _input.substr(0, 2) === '0x' ? _input.substr(2) : _input; - - return `${ZERO_64}${input}`.slice(-64); -} - -export function padBool (input) { - return `${ZERO_64}${input ? '1' : '0'}`.slice(-64); -} - -export function padU32 (input) { - let bn = new BigNumber(input); - - if (bn.lessThan(0)) { - bn = new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16) - .plus(bn).plus(1); - } - - return `${ZERO_64}${bn.toString(16)}`.slice(-64); -} - -function stringToBytes (input) { - if (isArray(input)) { - return input; - } else if (input.substr(0, 2) === '0x') { - const matches = input.substr(2).toLowerCase().match(/.{1,2}/g) || []; - - return matches.map((value) => parseInt(value, 16)); - } else { - return input.split('').map((char) => char.charCodeAt(0)); - } -} - -export function padBytes (_input) { - const input = stringToBytes(_input); - - return `${padU32(input.length)}${padFixedBytes(input)}`; -} - -export function padFixedBytes (_input) { - const input = stringToBytes(_input); - const sinput = input.map((code) => `0${code.toString(16)}`.slice(-2)).join(''); - const max = Math.floor((sinput.length + 63) / 64) * 64; - - return `${sinput}${ZERO_64}`.substr(0, max); -} - -export function padString (input) { - const array = utf8.encode(input) - .split('') - .map((char) => char.charCodeAt(0)); - - return padBytes(array); -} diff --git a/js/packages/abi/util/pad.spec.js b/js/packages/abi/util/pad.spec.js deleted file mode 100644 index 74463b438..000000000 --- a/js/packages/abi/util/pad.spec.js +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import { padAddress, padBool, padBytes, padFixedBytes, padString, padU32 } from './pad'; - -describe('abi/util/pad', () => { - const SHORT15 = '1234567890abcdef'; - const BYTES15 = [0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef]; - const LONG15 = `${SHORT15}000000000000000000000000000000000000000000000000`; - const PAD123 = '0000000000000000000000000000000000000000000000000000000000000123'; - - describe('padAddress', () => { - it('pads to 64 characters', () => { - expect(padAddress('123')).to.equal(PAD123); - }); - - it('strips leading 0x when passed in', () => { - expect(padFixedBytes(`0x${PAD123}`)).to.equal(PAD123); - }); - }); - - describe('padBool', () => { - const TRUE = '0000000000000000000000000000000000000000000000000000000000000001'; - const FALSE = '0000000000000000000000000000000000000000000000000000000000000000'; - - it('pads true to 64 characters', () => { - expect(padBool(true)).to.equal(TRUE); - }); - - it('pads false to 64 characters', () => { - expect(padBool(false)).to.equal(FALSE); - }); - }); - - describe('padU32', () => { - it('left pads length < 64 bytes to 64 bytes', () => { - expect(padU32(1)).to.equal('0000000000000000000000000000000000000000000000000000000000000001'); - }); - - it('pads hex representation', () => { - expect(padU32(0x123)).to.equal(PAD123); - }); - - it('pads decimal representation', () => { - expect(padU32(291)).to.equal(PAD123); - }); - - it('pads string representation', () => { - expect(padU32('0x123')).to.equal(PAD123); - }); - - it('pads BigNumber representation', () => { - expect(padU32(new BigNumber(0x123))).to.equal(PAD123); - }); - - it('converts negative numbers to 2s complement', () => { - expect(padU32(-123)).to.equal('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85'); - }); - }); - - describe('padFixedBytes', () => { - it('right pads length < 64 bytes to 64 bytes (string)', () => { - expect(padFixedBytes(`0x${SHORT15}`)).to.equal(LONG15); - }); - - it('right pads length < 64 bytes to 64 bytes (array)', () => { - expect(padFixedBytes(BYTES15)).to.equal(LONG15); - }); - - it('right pads length > 64 bytes (64 byte multiples)', () => { - expect(padFixedBytes(`0x${LONG15}${SHORT15}`)).to.equal(`${LONG15}${LONG15}`); - }); - - it('strips leading 0x when passed in', () => { - expect(padFixedBytes(`0x${SHORT15}`)).to.equal(LONG15); - }); - }); - - describe('padBytes', () => { - it('right pads length < 64, adding the length (string)', () => { - const result = padBytes(`0x${SHORT15}`); - - expect(result.length).to.equal(128); - expect(result).to.equal(`${padU32(8)}${LONG15}`); - }); - - it('right pads length < 64, adding the length (array)', () => { - const result = padBytes(BYTES15); - - expect(result.length).to.equal(128); - expect(result).to.equal(`${padU32(8)}${LONG15}`); - }); - - it('right pads length > 64, adding the length', () => { - const result = padBytes(`0x${LONG15}${SHORT15}`); - - expect(result.length).to.equal(192); - expect(result).to.equal(`${padU32(0x28)}${LONG15}${LONG15}`); - }); - }); - - describe('padString', () => { - it('correctly converts & pads strings', () => { - const result = padString('gavofyork'); - - expect(result.length).to.equal(128); - expect(result).to.equal(padBytes('0x6761766f66796f726b')); - }); - }); -}); diff --git a/js/packages/abi/util/signature.js b/js/packages/abi/util/signature.js deleted file mode 100644 index 86ed6f265..000000000 --- a/js/packages/abi/util/signature.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { keccak_256 } from 'js-sha3'; // eslint-disable-line camelcase -import { fromParamType } from '../spec/paramType/format'; - -export function eventSignature (eventName, params) { - const { strName, name } = parseName(eventName); - const types = (params || []).map(fromParamType).join(','); - const id = `${strName}(${types})`; - const signature = strName ? keccak_256(id) : ''; - - return { id, name, signature }; -} - -export function methodSignature (methodName, params) { - const { id, name, signature } = eventSignature(methodName, params); - - return { id, name, signature: signature.substr(0, 8) }; -} - -function parseName (name) { - const strName = `${name || ''}`; - const idx = strName.indexOf('('); - - if (idx === -1) { - return { strName, name }; - } - - const trimmedName = strName.slice(0, idx); - - return { - strName: trimmedName, - name: trimmedName - }; -} diff --git a/js/packages/abi/util/signature.spec.js b/js/packages/abi/util/signature.spec.js deleted file mode 100644 index 118ebf4e5..000000000 --- a/js/packages/abi/util/signature.spec.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { eventSignature, methodSignature } from './signature'; - -describe('abi/util/signature', () => { - describe('eventSignature', () => { - it('encodes signature baz() correctly', () => { - expect(eventSignature('baz', [])).to.deep.equal({ - id: 'baz()', - name: 'baz', - signature: 'a7916fac4f538170f7cd12c148552e2cba9fcd72329a2dd5b07a6fa906488ddf' - }); - }); - - it('encodes signature baz(uint32) correctly', () => { - expect(eventSignature('baz', [{ type: 'uint', length: 32 }])).to.deep.equal({ - id: 'baz(uint32)', - name: 'baz', - signature: '7d68785e8fc871be024b75964bd86d093511d4bc2dc7cf7bea32c48a0efaecb1' - }); - }); - - it('encodes signature baz(uint32, bool) correctly', () => { - expect(eventSignature('baz', [{ type: 'uint', length: 32 }, { type: 'bool' }])).to.deep.equal({ - id: 'baz(uint32,bool)', - name: 'baz', - signature: 'cdcd77c0992ec5bbfc459984220f8c45084cc24d9b6efed1fae540db8de801d2' - }); - }); - - it('encodes no-name signature correctly as ()', () => { - expect(eventSignature(undefined, [])).to.deep.equal({ - id: '()', - name: undefined, - signature: '' - }); - }); - - it('encodes no-params signature correctly as ()', () => { - expect(eventSignature(undefined, undefined)).to.deep.equal({ - id: '()', - name: undefined, - signature: '' - }); - }); - }); - - describe('methodSignature', () => { - it('encodes signature baz() correctly', () => { - expect(methodSignature('baz', [])).to.deep.equal({ - id: 'baz()', - name: 'baz', - signature: 'a7916fac' - }); - }); - - it('encodes signature baz(uint32) correctly', () => { - expect(methodSignature('baz', [{ type: 'uint', length: 32 }])).to.deep.equal({ - id: 'baz(uint32)', - name: 'baz', - signature: '7d68785e' - }); - }); - - it('encodes signature baz(uint32, bool) correctly', () => { - expect(methodSignature('baz', [{ type: 'uint', length: 32 }, { type: 'bool' }])).to.deep.equal({ - id: 'baz(uint32,bool)', - name: 'baz', - signature: 'cdcd77c0' - }); - }); - - it('encodes signature in name correctly', () => { - expect(methodSignature('baz(uint32,bool)', [{ type: 'uint', length: 32 }, { type: 'bool' }])).to.deep.equal({ - id: 'baz(uint32,bool)', - name: 'baz', - signature: 'cdcd77c0' - }); - }); - - it('encodes no-name signature correctly as ()', () => { - expect(methodSignature(undefined, [])).to.deep.equal({ - id: '()', - name: undefined, - signature: '' - }); - }); - - it('encodes no-params signature correctly as ()', () => { - expect(methodSignature(undefined, undefined)).to.deep.equal({ - id: '()', - name: undefined, - signature: '' - }); - }); - }); -}); diff --git a/js/packages/abi/util/slice.js b/js/packages/abi/util/slice.js deleted file mode 100644 index daab54f1c..000000000 --- a/js/packages/abi/util/slice.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { padAddress } from './pad'; - -export function sliceData (_data) { - if (!_data || !_data.length) { - return []; - } - - let data = (_data.substr(0, 2) === '0x') ? _data.substr(2) : _data; - - if (!data.length) { - data = padAddress(''); - } - - return data.match(/.{1,64}/g); -} diff --git a/js/packages/abi/util/slice.spec.js b/js/packages/abi/util/slice.spec.js deleted file mode 100644 index 1b754ccbb..000000000 --- a/js/packages/abi/util/slice.spec.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { sliceData } from './slice'; - -describe('abi/util/slice', () => { - describe('sliceData', () => { - const slice1 = '131a3afc00d1b1e3461b955e53fc866dcf303b3eb9f4c16f89e388930f48134b'; - const slice2 = '2124768576358735263578356373526387638357635873563586353756358763'; - - it('returns an empty array when length === 0', () => { - expect(sliceData('')).to.deep.equal([]); - }); - - it('returns an array with the slices otherwise', () => { - const sliced = sliceData(`${slice1}${slice2}`); - - expect(sliced.length).to.equal(2); - expect(sliced[0]).to.equal(slice1); - expect(sliced[1]).to.equal(slice2); - }); - - it('removes leading 0x when passed in', () => { - const sliced = sliceData(`0x${slice1}${slice2}`); - - expect(sliced.length).to.equal(2); - expect(sliced[0]).to.equal(slice1); - expect(sliced[1]).to.equal(slice2); - }); - }); -}); diff --git a/js/packages/abi/util/sliceAs.js b/js/packages/abi/util/sliceAs.js deleted file mode 100644 index e177897a1..000000000 --- a/js/packages/abi/util/sliceAs.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import { toChecksumAddress } from './address'; - -export function asU32 (slice) { - // TODO: validation - - return new BigNumber(slice, 16); -} - -export function asI32 (slice) { - if (new BigNumber(slice.substr(0, 1), 16).toString(2)[0] === '1') { - return new BigNumber(slice, 16) - .minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)) - .minus(1); - } - - return new BigNumber(slice, 16); -} - -export function asAddress (slice) { - // TODO: address validation? - - return toChecksumAddress(`0x${slice.slice(-40)}`); -} - -export function asBool (slice) { - // TODO: everything else should be 0 - - return new BigNumber(slice[63]).eq(1); -} diff --git a/js/packages/abi/util/sliceAs.spec.js b/js/packages/abi/util/sliceAs.spec.js deleted file mode 100644 index c29e34554..000000000 --- a/js/packages/abi/util/sliceAs.spec.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { asAddress, asBool, asI32, asU32 } from './sliceAs'; - -describe('abi/util/sliceAs', () => { - const MAX_INT = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'; - - describe('asAddress', () => { - it('correctly returns the last 0x40 characters', () => { - const address = '1111111111222222222233333333334444444444'; - - expect(asAddress(`000000000000000000000000${address}`)).to.equal(`0x${address}`); - }); - }); - - describe('asBool', () => { - it('correctly returns true', () => { - expect(asBool('0000000000000000000000000000000000000000000000000000000000000001')).to.be.true; - }); - - it('correctly returns false', () => { - expect(asBool('0000000000000000000000000000000000000000000000000000000000000000')).to.be.false; - }); - }); - - describe('asI32', () => { - it('correctly decodes positive numbers', () => { - expect(asI32('000000000000000000000000000000000000000000000000000000000000007b').toString()).to.equal('123'); - }); - - it('correctly decodes negative numbers', () => { - expect(asI32('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85').toString()).to.equal('-123'); - }); - }); - - describe('asU32', () => { - it('returns a maxium U32', () => { - expect(asU32(MAX_INT).toString(16)).to.equal(MAX_INT); - }); - }); -}); diff --git a/js/packages/abi/util/types.js b/js/packages/abi/util/types.js deleted file mode 100644 index dd408f371..000000000 --- a/js/packages/abi/util/types.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export function isArray (test) { - return Object.prototype.toString.call(test) === '[object Array]'; -} - -export function isString (test) { - return Object.prototype.toString.call(test) === '[object String]'; -} - -export function isInstanceOf (test, clazz) { - return test instanceof clazz; -} diff --git a/js/packages/abi/util/types.spec.js b/js/packages/abi/util/types.spec.js deleted file mode 100644 index 177662ae2..000000000 --- a/js/packages/abi/util/types.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isArray, isString, isInstanceOf } from './types'; -import Token from '../token'; - -describe('abi/util/types', () => { - describe('isArray', () => { - it('correctly identifies empty arrays as Array', () => { - expect(isArray([])).to.be.true; - }); - - it('correctly identifies non-empty arrays as Array', () => { - expect(isArray([1, 2, 3])).to.be.true; - }); - - it('correctly identifies strings as non-Array', () => { - expect(isArray('not an array')).to.be.false; - }); - - it('correctly identifies objects as non-Array', () => { - expect(isArray({})).to.be.false; - }); - }); - - describe('isString', () => { - it('correctly identifies empty string as string', () => { - expect(isString('')).to.be.true; - }); - - it('correctly identifies string as string', () => { - expect(isString('123')).to.be.true; - }); - }); - - describe('isInstanceOf', () => { - it('correctly identifies build-in instanceof', () => { - expect(isInstanceOf(new String('123'), String)).to.be.true; // eslint-disable-line no-new-wrappers - }); - - it('correctly identifies own instanceof', () => { - expect(isInstanceOf(new Token('int', 123), Token)).to.be.true; - }); - - it('correctly reports false for own', () => { - expect(isInstanceOf({ type: 'int' }, Token)).to.be.false; - }); - }); -}); diff --git a/js/packages/api/README.md b/js/packages/api/README.md deleted file mode 100644 index 9ba3b6382..000000000 --- a/js/packages/api/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# @parity/parity.js - -Parity.js is a thin, fast, Promise-based wrapper around the Ethereum APIs. - -[https://github.com/paritytech/parity/tree/master/js/src/api](https://github.com/paritytech/parity/tree/master/js/src/api) - -## installation - -Install the package with `npm install --save @parity/parity.js` - -## usage - -### initialisation - -```javascript -// import the actual Api class -import { Api } from '@parity/parity.js'; - -// do the setup -const provider = new Api.Provider.Http('http://localhost:8545'); -const api = new Api(provider); -``` - -### making calls - -perform a call - -```javascript -api.eth - .coinbase() - .then((coinbase) => { - console.log(`The coinbase is ${coinbase}`); - }); -``` - -multiple promises - -```javascript -Promise - .all([ - api.eth.coinbase(), - api.net.listening() - ]) - .then(([coinbase, listening]) => { - // do stuff here - }); -``` - -chaining promises - -```javascript -api.eth - .newFilter({...}) - .then((filterId) => api.eth.getFilterChanges(filterId)) - .then((changes) => { - console.log(changes); - }); -``` - -### contracts - -attach contract - -```javascript -const abi = [{ name: 'callMe', inputs: [{ type: 'bool', ...}, { type: 'string', ...}]}, ...abi...]; -const address = '0x123456...9abc'; -const contract = new api.newContract(abi, address); -``` - -find & call a function - -```javascript -contract.instance - .callMe - .call({ gas: 21000 }, [true, 'someString']) // or estimateGas or postTransaction - .then((result) => { - console.log(`the result was ${result}`); - }); -``` - -## apis - -APIs implement the calls as exposed in the [Ethcore JSON Ethereum RPC](https://github.com/paritytech/ethereum-rpc-json/) definitions. Mapping follows the naming conventions of the originals, i.e. `eth_call` becomes `eth.call`, `personal_accounts` becomes `personal.accounts`, etc. diff --git a/js/packages/api/api.js b/js/packages/api/api.js deleted file mode 100644 index af03ca0e2..000000000 --- a/js/packages/api/api.js +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import EventEmitter from 'eventemitter3'; - -import Contract from './contract'; -import { PromiseProvider, Http as HttpProvider, PostMessage as PostMessageProvider, Ws as WsProvider, WsSecure as WsSecureProvider } from './provider'; -import { Http as HttpTransport, Ws as WsTransport, WsSecure as WsSecureTransport } from './transport'; - -import { Db, Eth, Parity, Net, Personal, Shell, Shh, Signer, Trace, Web3 } from './rpc'; -import Subscriptions from './subscriptions'; -import Pubsub from './pubsub'; -import util from './util'; -import { isFunction } from './util/types'; - -import LocalAccountsMiddleware from '~/packages/api/local'; - -export default class Api extends EventEmitter { - constructor (provider, allowSubscriptions = true) { - super(); - - if (!provider || !isFunction(provider.send)) { - console.log(provider); - console.warn(new Error('deprecated: Api needs provider with send() function, old-style Transport found instead')); - } - // does use new provider interface (not promiseProvider) - if (provider && isFunction(provider.subscribe)) { - this._pubsub = new Pubsub(provider); - } - - this._provider = new PromiseProvider(provider); - - this._db = new Db(this._provider); - this._eth = new Eth(this._provider); - this._net = new Net(this._provider); - this._parity = new Parity(this._provider); - this._personal = new Personal(this._provider); - this._shell = new Shell(this._provider); - this._shh = new Shh(this._provider); - this._signer = new Signer(this._provider); - this._trace = new Trace(this._provider); - this._web3 = new Web3(this._provider); - - if (allowSubscriptions) { - this._subscriptions = new Subscriptions(this); - } - // Doing a request here in test env would cause an error - if (LocalAccountsMiddleware && process.env.NODE_ENV !== 'test') { - const middleware = this.parity - .nodeKind() - .then((nodeKind) => { - if (nodeKind.availability === 'public') { - return LocalAccountsMiddleware; - } - - return null; - }) - .catch(() => null); - - provider.addMiddleware(middleware); - } - } - - get isConnected () { - const isConnected = this.provider.isConnected; - - return isConnected || typeof isConnected === 'undefined'; - } - - get pubsub () { - if (!this._pubsub) { - throw Error('Pubsub is only available with a subscribing-supported transport injected!'); - } - - return this._pubsub; - } - - get db () { - return this._db; - } - - get eth () { - return this._eth; - } - - get parity () { - return this._parity; - } - - get net () { - return this._net; - } - - get personal () { - return this._personal; - } - - get provider () { - return this._provider.provider; - } - - get shell () { - return this._shell; - } - - get shh () { - return this._shh; - } - - get signer () { - return this._signer; - } - - get trace () { - return this._trace; - } - - get transport () { - return this.provider; - } - - get web3 () { - return this._web3; - } - - get util () { - return util; - } - - newContract (abi, address) { - return new Contract(this, abi).at(address); - } - - subscribe (subscriptionName, callback) { - if (!this._subscriptions) { - return Promise.resolve(1); - } - - return this._subscriptions.subscribe(subscriptionName, callback); - } - - unsubscribe (subscriptionId) { - if (!this._subscriptions) { - return Promise.resolve(true); - } - - return this._subscriptions.unsubscribe(subscriptionId); - } - - pollMethod (method, input, validate) { - const [_group, endpoint] = method.split('_'); - const group = `_${_group}`; - - return new Promise((resolve, reject) => { - const timeout = () => { - this[group][endpoint](input) - .then((result) => { - if (validate ? validate(result) : result) { - resolve(result); - } else { - setTimeout(timeout, 500); - } - }) - .catch((error) => { - // Don't print if the request is rejected: that's ok - if (error.type !== 'REQUEST_REJECTED') { - console.error('pollMethod', error); - } - - reject(error); - }); - }; - - timeout(); - }); - } - - static util = util - - static Provider = { - Http: HttpProvider, - PostMessage: PostMessageProvider, - Ws: WsProvider, - WsSecure: WsSecureProvider - } - - // NOTE: kept for backwards compatibility - static Transport = { - Http: HttpTransport, - Ws: WsTransport, - WsSecure: WsSecureTransport - } -} diff --git a/js/packages/api/api.spec.js b/js/packages/api/api.spec.js deleted file mode 100644 index 713c2e9ed..000000000 --- a/js/packages/api/api.spec.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import ethereumRpc from '@parity/jsonrpc'; - -import { TEST_HTTP_URL, endpointTest } from '../../test/mockRpc'; - -import util from './util'; -import Api from './api'; - -describe('api/Api', () => { - describe('interface', () => { - const api = new Api(new Api.Provider.Http(TEST_HTTP_URL, -1)); - const ignored = [ - 'eth_subscribe', 'eth_unsubscribe', - 'parity_subscribe', 'parity_unsubscribe', - 'signer_subscribePending', 'signer_unsubscribePending' - ]; - - Object.keys(ethereumRpc).sort().forEach((endpoint) => { - describe(endpoint, () => { - Object.keys(ethereumRpc[endpoint]).sort() - .filter(method => ignored.indexOf(method) !== -1) - .forEach((method) => { - endpointTest(api, endpoint, method); - }); - }); - }); - }); - - it('exposes util as static property', () => { - expect(Api.util).to.equal(util); - }); -}); diff --git a/js/packages/api/contract/contract.js b/js/packages/api/contract/contract.js deleted file mode 100644 index 17b79ccfe..000000000 --- a/js/packages/api/contract/contract.js +++ /dev/null @@ -1,561 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Abi from '@parity/abi'; - -let nextSubscriptionId = 0; - -export default class Contract { - constructor (api, abi) { - if (!api) { - throw new Error('API instance needs to be provided to Contract'); - } - - if (!abi) { - throw new Error('ABI needs to be provided to Contract instance'); - } - - this._api = api; - this._abi = new Abi(abi); - - this._subscriptions = {}; - this._constructors = this._abi.constructors.map(this._bindFunction); - this._functions = this._abi.functions.map(this._bindFunction); - this._events = this._abi.events.map(this._bindEvent); - - this._instance = {}; - - this._events.forEach((evt) => { - this._instance[evt.name] = evt; - this._instance[evt.signature] = evt; - }); - - this._functions.forEach((fn) => { - this._instance[fn.name] = fn; - this._instance[fn.signature] = fn; - }); - - this._subscribedToPendings = false; - this._pendingsSubscriptionId = null; - - this._subscribedToBlock = false; - this._blockSubscriptionId = null; - - if (api && api.patch && api.patch.contract) { - api.patch.contract(this); - } - } - - get address () { - return this._address; - } - - get constructors () { - return this._constructors; - } - - get events () { - return this._events; - } - - get functions () { - return this._functions; - } - - get receipt () { - return this._receipt; - } - - get instance () { - this._instance.address = this._address; - return this._instance; - } - - get api () { - return this._api; - } - - get abi () { - return this._abi; - } - - at (address) { - this._address = address; - return this; - } - - deployEstimateGas (options, values) { - const _options = this._encodeOptions(this.constructors[0], options, values); - - return this._api.eth - .estimateGas(_options) - .then((gasEst) => { - return [gasEst, gasEst.mul(1.2)]; - }); - } - - deploy (options, values, statecb = () => {}, skipGasEstimate = false) { - let gasEstPromise; - - if (skipGasEstimate) { - gasEstPromise = Promise.resolve(null); - } else { - statecb(null, { state: 'estimateGas' }); - - gasEstPromise = this.deployEstimateGas(options, values) - .then(([gasEst, gas]) => gas); - } - - return gasEstPromise - .then((_gas) => { - if (_gas) { - options.gas = _gas.toFixed(0); - } - - const gas = _gas || options.gas; - - statecb(null, { state: 'postTransaction', gas }); - - const encodedOptions = this._encodeOptions(this.constructors[0], options, values); - - return this._api.parity - .postTransaction(encodedOptions) - .then((requestId) => { - statecb(null, { state: 'checkRequest', requestId }); - return this._pollCheckRequest(requestId); - }) - .then((txhash) => { - statecb(null, { state: 'getTransactionReceipt', txhash }); - return this._pollTransactionReceipt(txhash, gas); - }) - .then((receipt) => { - if (receipt.gasUsed.eq(gas)) { - throw new Error(`Contract not deployed, gasUsed == ${gas.toFixed(0)}`); - } - - statecb(null, { state: 'hasReceipt', receipt }); - this._receipt = receipt; - this._address = receipt.contractAddress; - return this._address; - }) - .then((address) => { - statecb(null, { state: 'getCode' }); - return this._api.eth.getCode(this._address); - }) - .then((code) => { - if (code === '0x') { - throw new Error('Contract not deployed, getCode returned 0x'); - } - - statecb(null, { state: 'completed' }); - return this._address; - }); - }); - } - - parseEventLogs (logs) { - return logs - .map((log) => { - const signature = log.topics[0].substr(2); - const event = this.events.find((evt) => evt.signature === signature); - - if (!event) { - console.warn(`Unable to find event matching signature ${signature}`); - return null; - } - - try { - const decoded = event.decodeLog(log.topics, log.data); - - log.params = {}; - log.event = event.name; - - decoded.params.forEach((param, index) => { - const { type, value } = param.token; - const key = param.name || index; - - log.params[key] = { type, value }; - }); - - return log; - } catch (error) { - console.warn('Error decoding log', log); - console.warn(error); - - return null; - } - }) - .filter((log) => log); - } - - parseTransactionEvents (receipt) { - receipt.logs = this.parseEventLogs(receipt.logs); - - return receipt; - } - - _pollCheckRequest = (requestId) => { - return this._api.pollMethod('parity_checkRequest', requestId); - } - - _pollTransactionReceipt = (txhash, gas) => { - return this.api.pollMethod('eth_getTransactionReceipt', txhash, (receipt) => { - if (!receipt || !receipt.blockNumber || receipt.blockNumber.eq(0)) { - return false; - } - - return true; - }); - } - - getCallData = (func, options, values) => { - let data = options.data; - - const tokens = func ? Abi.encodeTokens(func.inputParamTypes(), values) : null; - const call = tokens ? func.encodeCall(tokens) : null; - - if (data && data.substr(0, 2) === '0x') { - data = data.substr(2); - } - - return `0x${data || ''}${call || ''}`; - } - - _encodeOptions (func, options, values) { - const data = this.getCallData(func, options, values); - - return { - ...options, - data - }; - } - - _addOptionsTo (options = {}) { - return { - to: this._address, - ...options - }; - } - - _bindFunction = (func) => { - func.contract = this; - - func.call = (_options = {}, values = []) => { - const rawTokens = !!_options.rawTokens; - const options = { - ..._options - }; - - delete options.rawTokens; - - let callParams; - - try { - callParams = this._encodeOptions(func, this._addOptionsTo(options), values); - } catch (error) { - return Promise.reject(error); - } - - return this._api.eth - .call(callParams) - .then((encoded) => func.decodeOutput(encoded)) - .then((tokens) => { - if (rawTokens) { - return tokens; - } - - return tokens.map((token) => token.value); - }) - .then((returns) => returns.length === 1 ? returns[0] : returns) - .catch((error) => { - console.warn(`${func.name}.call`, values, error); - throw error; - }); - }; - - if (!func.constant) { - func.postTransaction = (options, values = []) => { - let _options; - - try { - _options = this._encodeOptions(func, this._addOptionsTo(options), values); - } catch (error) { - return Promise.reject(error); - } - - return this._api.parity - .postTransaction(_options) - .catch((error) => { - console.warn(`${func.name}.postTransaction`, values, error); - throw error; - }); - }; - - func.estimateGas = (options, values = []) => { - const _options = this._encodeOptions(func, this._addOptionsTo(options), values); - - return this._api.eth - .estimateGas(_options) - .catch((error) => { - console.warn(`${func.name}.estimateGas`, values, error); - throw error; - }); - }; - } - - return func; - } - - _bindEvent = (event) => { - event.subscribe = (options = {}, callback, autoRemove) => { - return this._subscribe(event, options, callback, autoRemove); - }; - - event.unsubscribe = (subscriptionId) => { - return this.unsubscribe(subscriptionId); - }; - - event.getAllLogs = (options = {}) => { - return this.getAllLogs(event); - }; - - return event; - } - - getAllLogs (event, _options) { - // Options as first parameter - if (!_options && event && event.topics) { - return this.getAllLogs(null, event); - } - - const options = this._getFilterOptions(event, _options); - - options.fromBlock = 0; - options.toBlock = 'latest'; - - return this._api.eth - .getLogs(options) - .then((logs) => this.parseEventLogs(logs)); - } - - _findEvent (eventName = null) { - const event = eventName - ? this._events.find((evt) => evt.name === eventName) - : null; - - if (eventName && !event) { - const events = this._events.map((evt) => evt.name).join(', '); - - throw new Error(`${eventName} is not a valid eventName, subscribe using one of ${events} (or null to include all)`); - } - - return event; - } - - _getFilterOptions (event = null, _options = {}) { - const optionTopics = _options.topics || []; - const signature = event && event.signature || null; - - // If event provided, remove the potential event signature - // as the first element of the topics - const topics = signature - ? [ signature ].concat(optionTopics.filter((t, idx) => idx > 0 || t !== signature)) - : optionTopics; - - const options = Object.assign({}, _options, { - address: this._address, - topics - }); - - return options; - } - - _createEthFilter (event = null, _options) { - const options = this._getFilterOptions(event, _options); - - return this._api.eth.newFilter(options); - } - - subscribe (eventName = null, options = {}, callback, autoRemove) { - try { - const event = this._findEvent(eventName); - - return this._subscribe(event, options, callback, autoRemove); - } catch (e) { - return Promise.reject(e); - } - } - - _sendData (subscriptionId, error, logs) { - const { autoRemove, callback } = this._subscriptions[subscriptionId]; - let result = true; - - try { - result = callback(error, logs); - } catch (error) { - console.warn('_sendData', subscriptionId, error); - } - - if (autoRemove && result && typeof result === 'boolean') { - this.unsubscribe(subscriptionId); - } - } - - _subscribe (event = null, _options, callback, autoRemove = false) { - const subscriptionId = nextSubscriptionId++; - const { skipInitFetch } = _options; - - delete _options['skipInitFetch']; - - return this - ._createEthFilter(event, _options) - .then((filterId) => { - this._subscriptions[subscriptionId] = { - options: _options, - autoRemove, - callback, - filterId, - id: subscriptionId - }; - - if (skipInitFetch) { - this._subscribeToChanges(); - return subscriptionId; - } - - return this._api.eth - .getFilterLogs(filterId) - .then((logs) => { - this._sendData(subscriptionId, null, this.parseEventLogs(logs)); - this._subscribeToChanges(); - return subscriptionId; - }); - }) - .catch((error) => { - console.warn('subscribe', event, _options, error); - throw error; - }); - } - - unsubscribe (subscriptionId) { - return this._api.eth - .uninstallFilter(this._subscriptions[subscriptionId].filterId) - .catch((error) => { - console.error('unsubscribe', error); - }) - .then(() => { - delete this._subscriptions[subscriptionId]; - this._unsubscribeFromChanges(); - }); - } - - _subscribeToChanges = () => { - const subscriptions = Object.values(this._subscriptions); - - const pendingSubscriptions = subscriptions - .filter((s) => s.options.toBlock && s.options.toBlock === 'pending'); - - const otherSubscriptions = subscriptions - .filter((s) => !(s.options.toBlock && s.options.toBlock === 'pending')); - - if (pendingSubscriptions.length > 0 && !this._subscribedToPendings) { - this._subscribedToPendings = true; - this._subscribeToPendings(); - } - - if (otherSubscriptions.length > 0 && !this._subscribedToBlock) { - this._subscribedToBlock = true; - this._subscribeToBlock(); - } - } - - _unsubscribeFromChanges = () => { - const subscriptions = Object.values(this._subscriptions); - - const pendingSubscriptions = subscriptions - .filter((s) => s.options.toBlock && s.options.toBlock === 'pending'); - - const otherSubscriptions = subscriptions - .filter((s) => !(s.options.toBlock && s.options.toBlock === 'pending')); - - if (pendingSubscriptions.length === 0 && this._subscribedToPendings) { - this._subscribedToPendings = false; - clearTimeout(this._pendingsSubscriptionId); - } - - if (otherSubscriptions.length === 0 && this._subscribedToBlock) { - this._subscribedToBlock = false; - this._api.unsubscribe(this._blockSubscriptionId); - } - } - - _subscribeToBlock = () => { - this._api - .subscribe('eth_blockNumber', (error) => { - if (error) { - console.error('::_subscribeToBlock', error, error && error.stack); - } - - const subscriptions = Object.values(this._subscriptions) - .filter((s) => !(s.options.toBlock && s.options.toBlock === 'pending')); - - this._sendSubscriptionChanges(subscriptions); - }) - .then((blockSubId) => { - this._blockSubscriptionId = blockSubId; - }) - .catch((e) => { - console.error('::_subscribeToBlock', e, e && e.stack); - }); - } - - _subscribeToPendings = () => { - const subscriptions = Object.values(this._subscriptions) - .filter((s) => s.options.toBlock && s.options.toBlock === 'pending'); - - const timeout = () => setTimeout(() => this._subscribeToPendings(), 1000); - - this._sendSubscriptionChanges(subscriptions) - .then(() => { - this._pendingsSubscriptionId = timeout(); - }); - } - - _sendSubscriptionChanges = (subscriptions) => { - return Promise - .all( - subscriptions.map((subscription) => { - return this._api.eth.getFilterChanges(subscription.filterId); - }) - ) - .then((logsArray) => { - logsArray.forEach((logs, index) => { - if (!logs || !logs.length) { - return; - } - - try { - this._sendData(subscriptions[index].id, null, this.parseEventLogs(logs)); - } catch (error) { - console.error('_sendSubscriptionChanges', error); - } - }); - }) - .catch((error) => { - console.error('_sendSubscriptionChanges', error); - }); - } -} diff --git a/js/packages/api/contract/contract.spec.js b/js/packages/api/contract/contract.spec.js deleted file mode 100644 index e2679f69b..000000000 --- a/js/packages/api/contract/contract.spec.js +++ /dev/null @@ -1,598 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import sinon from 'sinon'; - -import Abi from '@parity/abi'; - -import { TEST_HTTP_URL, mockHttp } from '../../../test/mockRpc'; - -import { sha3 } from '../util/sha3'; - -import Api from '../api'; -import Contract from './contract'; -import { isInstanceOf, isFunction } from '../util/types'; - -const provider = new Api.Provider.Http(TEST_HTTP_URL, -1); -const eth = new Api(provider); - -describe('api/contract/Contract', () => { - const ADDR = '0x0123456789'; - - const ABI = [ - { - type: 'function', name: 'test', - inputs: [{ name: 'boolin', type: 'bool' }, { name: 'stringin', type: 'string' }], - outputs: [{ type: 'uint' }] - }, - { - type: 'function', name: 'test2', - outputs: [{ type: 'uint' }, { type: 'uint' }] - }, - { - type: 'constructor', - inputs: [{ name: 'boolin', type: 'bool' }, { name: 'stringin', type: 'string' }] - }, - { type: 'event', name: 'baz' }, - { type: 'event', name: 'foo' } - ]; - - const ABI_NO_PARAMS = [ - { - type: 'function', name: 'test', - inputs: [{ name: 'boolin', type: 'bool' }, { name: 'stringin', type: 'string' }], - outputs: [{ type: 'uint' }] - }, - { - type: 'function', name: 'test2', - outputs: [{ type: 'uint' }, { type: 'uint' }] - }, - { - type: 'constructor' - }, - { type: 'event', name: 'baz' }, - { type: 'event', name: 'foo' } - ]; - - const VALUES = [ true, 'jacogr' ]; - const CALLDATA = ` - 0000000000000000000000000000000000000000000000000000000000000001 - 0000000000000000000000000000000000000000000000000000000000000040 - 0000000000000000000000000000000000000000000000000000000000000006 - 6a61636f67720000000000000000000000000000000000000000000000000000 - `.replace(/\s/g, ''); - const SIGNATURE = '02356205'; - - const ENCODED = `0x${SIGNATURE}${CALLDATA}`; - - const RETURN1 = '0000000000000000000000000000000000000000000000000000000000123456'; - const RETURN2 = '0000000000000000000000000000000000000000000000000000000000456789'; - let scope; - - describe('constructor', () => { - it('needs an EthAbi instance', () => { - expect(() => new Contract()).to.throw(/API instance needs to be provided to Contract/); - }); - - it('needs an ABI', () => { - expect(() => new Contract(eth)).to.throw(/ABI needs to be provided to Contract instance/); - }); - - describe('internal setup', () => { - const contract = new Contract(eth, ABI); - - it('sets EthApi & parsed interface', () => { - expect(contract.address).to.not.be.ok; - expect(contract.api).to.deep.equal(eth); - expect(isInstanceOf(contract.abi, Abi)).to.be.ok; - }); - - it('attaches functions', () => { - expect(contract.functions.length).to.equal(2); - expect(contract.functions[0].name).to.equal('test'); - }); - - it('attaches constructors', () => { - expect(contract.constructors.length).to.equal(1); - }); - - it('attaches events', () => { - expect(contract.events.length).to.equal(2); - expect(contract.events[0].name).to.equal('baz'); - }); - }); - }); - - describe('at', () => { - it('sets returns the functions, events & sets the address', () => { - const contract = new Contract(eth, [ - { - constant: true, - inputs: [{ - name: '_who', - type: 'address' - }], - name: 'balanceOf', - outputs: [{ - name: '', - type: 'uint256' - }], - type: 'function' - }, - { - anonymous: false, - inputs: [{ - indexed: false, - name: 'amount', - type: 'uint256' - }], - name: 'Drained', - type: 'event' - } - ]); - - contract.at('6789'); - - expect(Object.keys(contract.instance)).to.deep.equal([ - 'Drained', - /^(?:0x)(.+)$/.exec(sha3('Drained(uint256)'))[1], - 'balanceOf', - /^(?:0x)(.+)$/.exec(sha3('balanceOf(address)'))[1].substr(0, 8), - 'address' - ]); - expect(contract.address).to.equal('6789'); - }); - }); - - describe('parseTransactionEvents', () => { - it('parses a transaction log into the data', () => { - const contract = new Contract(eth, [ - { - anonymous: false, name: 'Message', type: 'event', - inputs: [ - { indexed: true, name: 'postId', type: 'uint256' }, - { indexed: false, name: 'parentId', type: 'uint256' }, - { indexed: false, name: 'sender', type: 'address' }, - { indexed: false, name: 'at', type: 'uint256' }, - { indexed: false, name: 'messageId', type: 'uint256' }, - { indexed: false, name: 'message', type: 'string' } - ] - } - ]); - const decoded = contract.parseTransactionEvents({ - blockHash: '0xa9280530a3b47bee2fc80f2862fd56502ae075350571d724d6442ea4c597347b', - blockNumber: '0x4fcd', - cumulativeGasUsed: '0xb57f', - gasUsed: '0xb57f', - logs: [{ - address: '0x22bff18ec62281850546a664bb63a5c06ac5f76c', - blockHash: '0xa9280530a3b47bee2fc80f2862fd56502ae075350571d724d6442ea4c597347b', - blockNumber: '0x4fcd', - data: '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063cf90d3f0410092fc0fca41846f5962239791950000000000000000000000000000000000000000000000000000000056e6c85f0000000000000000000000000000000000000000000000000001000000004fcd00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000d706f7374286d6573736167652900000000000000000000000000000000000000', - logIndex: '0x0', - topics: [ - '0x954ba6c157daf8a26539574ffa64203c044691aa57251af95f4b48d85ec00dd5', - '0x0000000000000000000000000000000000000000000000000001000000004fe0' - ], - transactionHash: '0xca16f537d761d13e4e80953b754e2b15541f267d6cad9381f750af1bae1e4917', - transactionIndex: '0x0' - }], - to: '0x22bff18ec62281850546a664bb63a5c06ac5f76c', - transactionHash: '0xca16f537d761d13e4e80953b754e2b15541f267d6cad9381f750af1bae1e4917', - transactionIndex: '0x0' - }); - const log = decoded.logs[0]; - - expect(log.event).to.equal('Message'); - expect(log.address).to.equal('0x22bff18ec62281850546a664bb63a5c06ac5f76c'); - expect(log.params).to.deep.equal({ - at: { type: 'uint', value: new BigNumber('1457965151') }, - message: { type: 'string', value: 'post(message)' }, - messageId: { type: 'uint', value: new BigNumber('281474976731085') }, - parentId: { type: 'uint', value: new BigNumber(0) }, - postId: { type: 'uint', value: new BigNumber('281474976731104') }, - sender: { type: 'address', value: '0x63Cf90D3f0410092FC0fca41846f596223979195' } - }); - }); - }); - - describe('_pollTransactionReceipt', () => { - const contract = new Contract(eth, ABI); - const ADDRESS = '0xD337e80eEdBdf86eDBba021797d7e4e00Bb78351'; - const BLOCKNUMBER = '555000'; - const RECEIPT = { contractAddress: ADDRESS.toLowerCase(), blockNumber: BLOCKNUMBER }; - const EXPECT = { contractAddress: ADDRESS, blockNumber: new BigNumber(BLOCKNUMBER) }; - - let scope; - let receipt; - - describe('success', () => { - before(() => { - scope = mockHttp([ - { method: 'eth_getTransactionReceipt', reply: { result: null } }, - { method: 'eth_getTransactionReceipt', reply: { result: null } }, - { method: 'eth_getTransactionReceipt', reply: { result: RECEIPT } } - ]); - - return contract - ._pollTransactionReceipt('0x123') - .then((_receipt) => { - receipt = _receipt; - }); - }); - - it('sends multiple getTransactionReceipt calls', () => { - expect(scope.isDone()).to.be.true; - }); - - it('passes the txhash through', () => { - expect(scope.body.eth_getTransactionReceipt.params[0]).to.equal('0x123'); - }); - - it('receives the final receipt', () => { - expect(receipt).to.deep.equal(EXPECT); - }); - }); - - describe('error', () => { - before(() => { - scope = mockHttp([{ method: 'eth_getTransactionReceipt', reply: { error: { code: -1, message: 'failure' } } }]); - }); - - it('returns the errors', () => { - return contract - ._pollTransactionReceipt('0x123') - .catch((error) => { - expect(error.message).to.match(/failure/); - }); - }); - }); - }); - - describe('deploy without parameters', () => { - const contract = new Contract(eth, ABI_NO_PARAMS); - const CODE = '0x123'; - const ADDRESS = '0xD337e80eEdBdf86eDBba021797d7e4e00Bb78351'; - const RECEIPT_DONE = { contractAddress: ADDRESS.toLowerCase(), gasUsed: 50, blockNumber: 2500 }; - - let scope; - - describe('success', () => { - before(() => { - scope = mockHttp([ - { method: 'eth_estimateGas', reply: { result: 1000 } }, - { method: 'parity_postTransaction', reply: { result: '0x678' } }, - { method: 'parity_checkRequest', reply: { result: '0x890' } }, - { method: 'eth_getTransactionReceipt', reply: { result: RECEIPT_DONE } }, - { method: 'eth_getCode', reply: { result: CODE } } - ]); - - return contract.deploy({ data: CODE }, []); - }); - - it('passes the options through to postTransaction (incl. gas calculation)', () => { - expect(scope.body.parity_postTransaction.params[0].data).to.equal(CODE); - }); - }); - }); - - describe('deploy', () => { - const contract = new Contract(eth, ABI); - const ADDRESS = '0xD337e80eEdBdf86eDBba021797d7e4e00Bb78351'; - const RECEIPT_PEND = { contractAddress: ADDRESS.toLowerCase(), gasUsed: 50, blockNumber: 0 }; - const RECEIPT_DONE = { contractAddress: ADDRESS.toLowerCase(), gasUsed: 50, blockNumber: 2500 }; - const RECEIPT_EXCP = { contractAddress: ADDRESS.toLowerCase(), gasUsed: 1200, blockNumber: 2500 }; - - let scope; - - describe('success', () => { - before(() => { - scope = mockHttp([ - { method: 'eth_estimateGas', reply: { result: 1000 } }, - { method: 'parity_postTransaction', reply: { result: '0x678' } }, - { method: 'parity_checkRequest', reply: { result: null } }, - { method: 'parity_checkRequest', reply: { result: '0x890' } }, - { method: 'eth_getTransactionReceipt', reply: { result: null } }, - { method: 'eth_getTransactionReceipt', reply: { result: RECEIPT_PEND } }, - { method: 'eth_getTransactionReceipt', reply: { result: RECEIPT_DONE } }, - { method: 'eth_getCode', reply: { result: '0x456' } } - ]); - - return contract.deploy({ data: '0x123' }, VALUES); - }); - - it('calls estimateGas, postTransaction, checkRequest, getTransactionReceipt & getCode in order', () => { - expect(scope.isDone()).to.be.true; - }); - - it('passes the options through to postTransaction (incl. gas calculation)', () => { - expect(scope.body.parity_postTransaction.params).to.deep.equal([ - { data: `0x123${CALLDATA}`, gas: '0x4b0' } - ]); - }); - - it('sets the address of the contract', () => { - expect(contract.address).to.equal(ADDRESS); - }); - }); - - describe('error', () => { - it('fails when gasUsed == gas', () => { - mockHttp([ - { method: 'eth_estimateGas', reply: { result: 1000 } }, - { method: 'parity_postTransaction', reply: { result: '0x678' } }, - { method: 'parity_checkRequest', reply: { result: '0x789' } }, - { method: 'eth_getTransactionReceipt', reply: { result: RECEIPT_EXCP } } - ]); - - return contract - .deploy({ data: '0x123' }, VALUES) - .catch((error) => { - expect(error.message).to.match(/not deployed, gasUsed/); - }); - }); - - it('fails when no code was deployed', () => { - mockHttp([ - { method: 'eth_estimateGas', reply: { result: 1000 } }, - { method: 'parity_postTransaction', reply: { result: '0x678' } }, - { method: 'parity_checkRequest', reply: { result: '0x789' } }, - { method: 'eth_getTransactionReceipt', reply: { result: RECEIPT_DONE } }, - { method: 'eth_getCode', reply: { result: '0x' } } - ]); - - return contract - .deploy({ data: '0x123' }, VALUES) - .catch((error) => { - expect(error.message).to.match(/not deployed, getCode/); - }); - }); - }); - }); - - describe('bindings', () => { - let contract; - let cons; - let func; - - beforeEach(() => { - contract = new Contract(eth, ABI); - contract.at(ADDR); - cons = contract.constructors[0]; - func = contract.functions.find((fn) => fn.name === 'test'); - }); - - describe('_addOptionsTo', () => { - it('works on no object specified', () => { - expect(contract._addOptionsTo()).to.deep.equal({ to: ADDR }); - }); - - it('uses the contract address when none specified', () => { - expect(contract._addOptionsTo({ from: 'me' })).to.deep.equal({ to: ADDR, from: 'me' }); - }); - - it('overrides the contract address when specified', () => { - expect(contract._addOptionsTo({ to: 'you', from: 'me' })).to.deep.equal({ to: 'you', from: 'me' }); - }); - }); - - describe('attachments', () => { - it('attaches .call, .postTransaction & .estimateGas to constructors', () => { - expect(isFunction(cons.call)).to.be.true; - expect(isFunction(cons.postTransaction)).to.be.true; - expect(isFunction(cons.estimateGas)).to.be.true; - }); - - it('attaches .call, .postTransaction & .estimateGas to functions', () => { - expect(isFunction(func.call)).to.be.true; - expect(isFunction(func.postTransaction)).to.be.true; - expect(isFunction(func.estimateGas)).to.be.true; - }); - - it('attaches .call only to constant functions', () => { - func = (new Contract(eth, [{ type: 'function', name: 'test', constant: true }])).functions[0]; - - expect(isFunction(func.call)).to.be.true; - expect(isFunction(func.postTransaction)).to.be.false; - expect(isFunction(func.estimateGas)).to.be.false; - }); - }); - - describe('postTransaction', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'parity_postTransaction', reply: { result: ['hashId'] } }]); - }); - - it('encodes options and mades an parity_postTransaction call', () => { - return func - .postTransaction({ someExtras: 'foo' }, VALUES) - .then(() => { - expect(scope.isDone()).to.be.true; - expect(scope.body.parity_postTransaction.params[0]).to.deep.equal({ - someExtras: 'foo', - to: ADDR, - data: ENCODED - }); - }); - }); - }); - - describe('estimateGas', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_estimateGas', reply: { result: ['0x123'] } }]); - }); - - it('encodes options and mades an eth_estimateGas call', () => { - return func - .estimateGas({ someExtras: 'foo' }, VALUES) - .then((amount) => { - expect(scope.isDone()).to.be.true; - expect(amount.toString(16)).to.equal('123'); - expect(scope.body.eth_estimateGas.params).to.deep.equal([{ - someExtras: 'foo', - to: ADDR, - data: ENCODED - }]); - }); - }); - }); - - describe('call', () => { - it('encodes options and mades an eth_call call', () => { - scope = mockHttp([{ method: 'eth_call', reply: { result: RETURN1 } }]); - - return func - .call({ someExtras: 'foo' }, VALUES) - .then((result) => { - expect(scope.isDone()).to.be.true; - expect(scope.body.eth_call.params).to.deep.equal([{ - someExtras: 'foo', - to: ADDR, - data: ENCODED - }, 'latest']); - expect(result.toString(16)).to.equal('123456'); - }); - }); - - it('encodes options and mades an eth_call call (multiple returns)', () => { - scope = mockHttp([{ method: 'eth_call', reply: { result: `${RETURN1}${RETURN2}` } }]); - - return contract.functions[1] - .call({}, []) - .then((result) => { - expect(scope.isDone()).to.be.true; - expect(result.length).to.equal(2); - expect(result[0].toString(16)).to.equal('123456'); - expect(result[1].toString(16)).to.equal('456789'); - }); - }); - }); - }); - - describe('subscribe', () => { - const abi = [ - { - anonymous: false, name: 'Message', type: 'event', - inputs: [ - { indexed: true, name: 'postId', type: 'uint256' }, - { indexed: false, name: 'parentId', type: 'uint256' }, - { indexed: false, name: 'sender', type: 'address' }, - { indexed: false, name: 'at', type: 'uint256' }, - { indexed: false, name: 'messageId', type: 'uint256' }, - { indexed: false, name: 'message', type: 'string' } - ] - } - ]; - - const logs = [{ - address: '0x22bff18ec62281850546a664bb63a5c06ac5f76c', - blockHash: '0xa9280530a3b47bee2fc80f2862fd56502ae075350571d724d6442ea4c597347b', - blockNumber: '0x4fcd', - data: '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063cf90d3f0410092fc0fca41846f5962239791950000000000000000000000000000000000000000000000000000000056e6c85f0000000000000000000000000000000000000000000000000001000000004fcd00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000d706f7374286d6573736167652900000000000000000000000000000000000000', - logIndex: '0x0', - topics: [ - '0x954ba6c157daf8a26539574ffa64203c044691aa57251af95f4b48d85ec00dd5', - '0x0000000000000000000000000000000000000000000000000001000000004fe0' - ], - transactionHash: '0xca16f537d761d13e4e80953b754e2b15541f267d6cad9381f750af1bae1e4917', - transactionIndex: '0x0' - }]; - - const parsed = [{ - address: '0x22bfF18ec62281850546a664bb63a5C06AC5F76C', - blockHash: '0xa9280530a3b47bee2fc80f2862fd56502ae075350571d724d6442ea4c597347b', - blockNumber: new BigNumber(20429), - data: '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063cf90d3f0410092fc0fca41846f5962239791950000000000000000000000000000000000000000000000000000000056e6c85f0000000000000000000000000000000000000000000000000001000000004fcd00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000d706f7374286d6573736167652900000000000000000000000000000000000000', - event: 'Message', - logIndex: new BigNumber(0), - params: { - at: { type: 'uint', value: new BigNumber(1457965151) }, - message: { type: 'string', value: 'post(message)' }, - messageId: { type: 'uint', value: new BigNumber(281474976731085) }, - parentId: { type: 'uint', value: new BigNumber(0) }, - postId: { type: 'uint', value: new BigNumber(281474976731104) }, - sender: { type: 'address', value: '0x63Cf90D3f0410092FC0fca41846f596223979195' } - }, - topics: [ - '0x954ba6c157daf8a26539574ffa64203c044691aa57251af95f4b48d85ec00dd5', - '0x0000000000000000000000000000000000000000000000000001000000004fe0' - ], - transactionHash: '0xca16f537d761d13e4e80953b754e2b15541f267d6cad9381f750af1bae1e4917', - transactionIndex: new BigNumber(0) - }]; - - let contract; - - beforeEach(() => { - contract = new Contract(eth, abi); - contract.at(ADDR); - }); - - describe('invalid events', () => { - it('fails to subscribe to an invalid names', () => { - return contract - .subscribe('invalid') - .catch((error) => { - expect(error.message).to.match(/invalid is not a valid eventName/); - }); - }); - }); - - describe('valid events', () => { - let cbb; - let cbe; - - beforeEach(() => { - scope = mockHttp([ - { method: 'eth_newFilter', reply: { result: '0x123' } }, - { method: 'eth_getFilterLogs', reply: { result: logs } }, - { method: 'eth_getFilterChanges', reply: { result: logs } }, - { method: 'eth_newFilter', reply: { result: '0x123' } }, - { method: 'eth_getFilterLogs', reply: { result: logs } } - ]); - cbb = sinon.stub(); - cbe = sinon.stub(); - - return contract.subscribe('Message', { toBlock: 'pending' }, cbb); - }); - - it('sets the subscriptionId returned', () => { - return contract - .subscribe('Message', { toBlock: 'pending' }, cbe) - .then((subscriptionId) => { - expect(subscriptionId).to.equal(1); - }); - }); - - it('creates a new filter and retrieves the logs on it', () => { - return contract - .subscribe('Message', { toBlock: 'pending' }, cbe) - .then((subscriptionId) => { - expect(scope.isDone()).to.be.true; - }); - }); - - it('returns the logs to the callback', () => { - return contract - .subscribe('Message', { toBlock: 'pending' }, cbe) - .then((subscriptionId) => { - expect(cbe).to.have.been.calledWith(null, parsed); - }); - }); - }); - }); -}); diff --git a/js/packages/api/contract/index.js b/js/packages/api/contract/index.js deleted file mode 100644 index 74c58e942..000000000 --- a/js/packages/api/contract/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './contract'; diff --git a/js/packages/api/format/input.js b/js/packages/api/format/input.js deleted file mode 100644 index 0ccd10604..000000000 --- a/js/packages/api/format/input.js +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import { isArray, isHex, isInstanceOf, isString } from '../util/types'; -import { padLeft, toHex } from '../util/format'; - -export function inAddress (address) { - // TODO: address validation if we have upper-lower addresses - return inHex(address); -} - -export function inAddresses (addresses) { - return (addresses || []).map(inAddress); -} - -export function inBlockNumber (blockNumber) { - if (isString(blockNumber)) { - switch (blockNumber) { - case 'earliest': - case 'latest': - case 'pending': - return blockNumber; - } - } - - return inNumber16(blockNumber); -} - -export function inData (data) { - if (data && data.length && !isHex(data)) { - data = data.split('').map((chr) => { - return `0${chr.charCodeAt(0).toString(16)}`.slice(-2); - }).join(''); - } - - return inHex(data); -} - -export function inHash (hash) { - return inHex(hash); -} - -export function inTopics (_topics) { - let topics = (_topics || []) - .filter((topic) => topic === null || topic) - .map((topic) => { - if (topic === null) { - return null; - } - - if (Array.isArray(topic)) { - return inTopics(topic); - } - - return padLeft(topic, 32); - }); - - return topics; -} - -export function inFilter (options) { - if (options) { - Object.keys(options).forEach((key) => { - switch (key) { - case 'address': - if (isArray(options[key])) { - options[key] = options[key].map(inAddress); - } else { - options[key] = inAddress(options[key]); - } - break; - - case 'fromBlock': - case 'toBlock': - options[key] = inBlockNumber(options[key]); - break; - - case 'limit': - options[key] = inNumber10(options[key]); - break; - - case 'topics': - options[key] = inTopics(options[key]); - } - }); - } - - return options; -} - -export function inHex (str) { - return toHex(str); -} - -export function inNumber10 (number) { - if (isInstanceOf(number, BigNumber)) { - return number.toNumber(); - } - - return (new BigNumber(number || 0)).toNumber(); -} - -export function inNumber16 (number) { - const bn = isInstanceOf(number, BigNumber) - ? number - : (new BigNumber(number || 0)); - - if (!bn.isInteger()) { - throw new Error(`[format/input::inNumber16] the given number is not an integer: ${bn.toFormat()}`); - } - - return inHex(bn.toString(16)); -} - -export function inOptionsCondition (condition) { - if (condition) { - if (condition.block) { - condition.block = condition.block ? inNumber10(condition.block) : null; - } else if (condition.time) { - condition.time = inNumber10(Math.floor(condition.time.getTime() / 1000)); - } - } - - return condition; -} - -export function inOptions (_options = {}) { - const options = { ..._options }; - - Object.keys(options).forEach((key) => { - switch (key) { - case 'to': - // Don't encode the `to` option if it's empty - // (eg. contract deployments) - if (options[key]) { - options.to = inAddress(options[key]); - } - break; - - case 'from': - options[key] = inAddress(options[key]); - break; - - case 'condition': - options[key] = inOptionsCondition(options[key]); - break; - - case 'gas': - case 'gasPrice': - options[key] = inNumber16((new BigNumber(options[key])).round()); - break; - - case 'value': - case 'nonce': - options[key] = inNumber16(options[key]); - break; - - case 'data': - options[key] = inData(options[key]); - break; - } - }); - - return options; -} - -export function inTraceFilter (filterObject) { - if (filterObject) { - Object.keys(filterObject).forEach((key) => { - switch (key) { - case 'fromAddress': - case 'toAddress': - filterObject[key] = [].concat(filterObject[key]) - .map(address => inAddress(address)); - break; - - case 'toBlock': - case 'fromBlock': - filterObject[key] = inBlockNumber(filterObject[key]); - break; - } - }); - } - - return filterObject; -} - -export function inTraceType (whatTrace) { - if (isString(whatTrace)) { - return [whatTrace]; - } - - return whatTrace; -} - -function inDeriveType (derive) { - return derive && derive.type === 'hard' ? 'hard' : 'soft'; -} - -export function inDeriveHash (derive) { - const hash = derive && derive.hash ? derive.hash : derive; - const type = inDeriveType(derive); - - return { - hash: inHex(hash), - type - }; -} - -export function inDeriveIndex (derive) { - if (!derive) { - return []; - } - - if (!isArray(derive)) { - derive = [derive]; - } - - return derive.map(item => { - const index = inNumber10(item && item.index ? item.index : item); - - return { - index, - type: inDeriveType(item) - }; - }); -} diff --git a/js/packages/api/format/input.spec.js b/js/packages/api/format/input.spec.js deleted file mode 100644 index eb74b7bd6..000000000 --- a/js/packages/api/format/input.spec.js +++ /dev/null @@ -1,341 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import { - inAddress, inBlockNumber, inData, inFilter, inHex, - inNumber10, inNumber16, inOptions, inTraceType, - inDeriveHash, inDeriveIndex -} from './input'; -import { isAddress } from '../../../test/types'; - -describe('api/format/input', () => { - const address = '0x63cf90d3f0410092fc0fca41846f596223979195'; - - describe('inAddress', () => { - const address = '63cf90d3f0410092fc0fca41846f596223979195'; - - it('adds the leading 0x as required', () => { - expect(inAddress(address)).to.equal(`0x${address}`); - }); - - it('returns verified addresses as-is', () => { - expect(inAddress(`0x${address}`)).to.equal(`0x${address}`); - }); - - it('returns lowercase equivalents', () => { - expect(inAddress(address.toUpperCase())).to.equal(`0x${address}`); - }); - - it('returns 0x on null addresses', () => { - expect(inAddress()).to.equal('0x'); - }); - }); - - describe('inBlockNumber()', () => { - it('returns earliest as-is', () => { - expect(inBlockNumber('earliest')).to.equal('earliest'); - }); - - it('returns latest as-is', () => { - expect(inBlockNumber('latest')).to.equal('latest'); - }); - - it('returns pending as-is', () => { - expect(inBlockNumber('pending')).to.equal('pending'); - }); - - it('formats existing BigNumber into hex', () => { - expect(inBlockNumber(new BigNumber(0x123456))).to.equal('0x123456'); - }); - - it('formats hex strings into hex', () => { - expect(inBlockNumber('0x123456')).to.equal('0x123456'); - }); - - it('formats numbers into hex', () => { - expect(inBlockNumber(0x123456)).to.equal('0x123456'); - }); - }); - - describe('inData', () => { - it('formats to hex', () => { - expect(inData('123456')).to.equal('0x123456'); - }); - - it('converts a string to a hex representation', () => { - expect(inData('jaco')).to.equal('0x6a61636f'); - }); - }); - - describe('inHex', () => { - it('leaves leading 0x as-is', () => { - expect(inHex('0x123456')).to.equal('0x123456'); - }); - - it('adds a leading 0x', () => { - expect(inHex('123456')).to.equal('0x123456'); - }); - - it('returns uppercase as lowercase (leading 0x)', () => { - expect(inHex('0xABCDEF')).to.equal('0xabcdef'); - }); - - it('returns uppercase as lowercase (no leading 0x)', () => { - expect(inHex('ABCDEF')).to.equal('0xabcdef'); - }); - - it('handles empty & null', () => { - expect(inHex()).to.equal('0x'); - expect(inHex('')).to.equal('0x'); - }); - }); - - describe('inFilter', () => { - ['address'].forEach((input) => { - it(`formats ${input} address as address`, () => { - const block = {}; - - block[input] = address; - const formatted = inFilter(block)[input]; - - expect(isAddress(formatted)).to.be.true; - expect(formatted).to.equal(address); - }); - }); - - ['fromBlock', 'toBlock'].forEach((input) => { - it(`formats ${input} number as blockNumber`, () => { - const block = {}; - - block[input] = 0x123; - const formatted = inFilter(block)[input]; - - expect(formatted).to.equal('0x123'); - }); - }); - - it('ignores and passes through unknown keys', () => { - expect(inFilter({ someRandom: 'someRandom' })).to.deep.equal({ someRandom: 'someRandom' }); - }); - - it('formats an filter options object with relevant entries converted', () => { - expect( - inFilter({ - address: address, - fromBlock: 'latest', - toBlock: 0x101, - extraData: 'someExtraStuffInHere', - limit: 0x32 - }) - ).to.deep.equal({ - address: address, - fromBlock: 'latest', - toBlock: '0x101', - extraData: 'someExtraStuffInHere', - limit: 50 - }); - }); - }); - - describe('inNumber10()', () => { - it('formats existing BigNumber into number', () => { - expect(inNumber10(new BigNumber(123))).to.equal(123); - }); - - it('formats hex strings into decimal', () => { - expect(inNumber10('0x0a')).to.equal(10); - }); - - it('formats numbers into number', () => { - expect(inNumber10(123)).to.equal(123); - }); - - it('formats undefined into 0', () => { - expect(inNumber10()).to.equal(0); - }); - }); - - describe('inNumber16()', () => { - it('formats existing BigNumber into hex', () => { - expect(inNumber16(new BigNumber(0x123456))).to.equal('0x123456'); - }); - - it('formats hex strings into hex', () => { - expect(inNumber16('0x123456')).to.equal('0x123456'); - }); - - it('formats numbers into hex', () => { - expect(inNumber16(0x123456)).to.equal('0x123456'); - }); - - it('formats undefined into 0', () => { - expect(inNumber16()).to.equal('0x0'); - }); - }); - - describe('inOptions', () => { - ['data'].forEach((input) => { - it(`converts ${input} to hex data`, () => { - const block = {}; - - block[input] = '1234'; - const formatted = inData(block[input]); - - expect(formatted).to.equal('0x1234'); - }); - }); - - ['from', 'to'].forEach((input) => { - it(`formats ${input} address as address`, () => { - const block = {}; - - block[input] = address; - const formatted = inOptions(block)[input]; - - expect(isAddress(formatted)).to.be.true; - expect(formatted).to.equal(address); - }); - }); - - it('does not encode an empty `to` value', () => { - const options = { to: '' }; - const formatted = inOptions(options); - - expect(formatted.to).to.equal(''); - }); - - ['gas', 'gasPrice', 'value', 'nonce'].forEach((input) => { - it(`formats ${input} number as hexnumber`, () => { - const block = {}; - - block[input] = 0x123; - const formatted = inOptions(block)[input]; - - expect(formatted).to.equal('0x123'); - }); - }); - - it('passes condition as null when specified as such', () => { - expect(inOptions({ condition: null })).to.deep.equal({ condition: null }); - }); - - it('ignores and passes through unknown keys', () => { - expect(inOptions({ someRandom: 'someRandom' })).to.deep.equal({ someRandom: 'someRandom' }); - }); - - it('formats an options object with relevant entries converted', () => { - expect( - inOptions({ - from: address, - to: address, - gas: new BigNumber('0x100'), - gasPrice: 0x101, - value: 258, - nonce: '0x104', - data: '0123456789', - extraData: 'someExtraStuffInHere' - }) - ).to.deep.equal({ - from: address, - to: address, - gas: '0x100', - gasPrice: '0x101', - value: '0x102', - nonce: '0x104', - data: '0x0123456789', - extraData: 'someExtraStuffInHere' - }); - }); - }); - - describe('inTraceType', () => { - it('returns array of types as is', () => { - const types = ['vmTrace', 'trace', 'stateDiff']; - - expect(inTraceType(types)).to.deep.equal(types); - }); - - it('formats single string type into array', () => { - const type = 'vmTrace'; - - expect(inTraceType(type)).to.deep.equal([type]); - }); - }); - - describe('inDeriveHash', () => { - it('returns derive hash', () => { - expect(inDeriveHash(1)).to.deep.equal({ - hash: '0x1', - type: 'soft' - }); - - expect(inDeriveHash(null)).to.deep.equal({ - hash: '0x', - type: 'soft' - }); - - expect(inDeriveHash({ - hash: 5 - })).to.deep.equal({ - hash: '0x5', - type: 'soft' - }); - - expect(inDeriveHash({ - hash: 5, - type: 'hard' - })).to.deep.equal({ - hash: '0x5', - type: 'hard' - }); - }); - }); - - describe('inDeriveIndex', () => { - it('returns derive hash', () => { - expect(inDeriveIndex(null)).to.deep.equal([]); - expect(inDeriveIndex([])).to.deep.equal([]); - - expect(inDeriveIndex([1])).to.deep.equal([{ - index: 1, - type: 'soft' - }]); - - expect(inDeriveIndex({ - index: 1 - })).to.deep.equal([{ - index: 1, - type: 'soft' - }]); - - expect(inDeriveIndex([{ - index: 1, - type: 'hard' - }, 5])).to.deep.equal([ - { - index: 1, - type: 'hard' - }, - { - index: 5, - type: 'soft' - } - ]); - }); - }); -}); diff --git a/js/packages/api/format/output.js b/js/packages/api/format/output.js deleted file mode 100644 index a712da5fe..000000000 --- a/js/packages/api/format/output.js +++ /dev/null @@ -1,415 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import { toChecksumAddress } from '@parity/abi/util/address'; - -import { isString } from '../util/types'; - -export function outAccountInfo (infos) { - return Object - .keys(infos) - .reduce((ret, _address) => { - const info = infos[_address]; - const address = outAddress(_address); - - ret[address] = { - name: info.name - }; - - if (info.meta) { - ret[address].uuid = info.uuid; - ret[address].meta = JSON.parse(info.meta); - } - - return ret; - }, {}); -} - -export function outAddress (address) { - return toChecksumAddress(address); -} - -export function outAddresses (addresses) { - return (addresses || []).map(outAddress); -} - -export function outBlock (block) { - if (block) { - Object.keys(block).forEach((key) => { - switch (key) { - case 'author': - case 'miner': - block[key] = outAddress(block[key]); - break; - - case 'difficulty': - case 'gasLimit': - case 'gasUsed': - case 'nonce': - case 'number': - case 'totalDifficulty': - block[key] = outNumber(block[key]); - break; - - case 'timestamp': - block[key] = outDate(block[key]); - break; - } - }); - } - - return block; -} - -export function outChainStatus (status) { - if (status) { - Object.keys(status).forEach((key) => { - switch (key) { - case 'blockGap': - status[key] = status[key] - ? status[key].map(outNumber) - : status[key]; - break; - } - }); - } - - return status; -} - -export function outDate (date) { - if (typeof date.toISOString === 'function') { - return date; - } - - try { - if (typeof date === 'string' && (new Date(date)).toISOString() === date) { - return new Date(date); - } - } catch (error) {} - - return new Date(outNumber(date).toNumber() * 1000); -} - -export function outHistogram (histogram) { - if (histogram) { - Object.keys(histogram).forEach((key) => { - switch (key) { - case 'bucketBounds': - case 'counts': - histogram[key] = histogram[key].map(outNumber); - break; - } - }); - } - - return histogram; -} - -export function outLog (log) { - Object.keys(log).forEach((key) => { - switch (key) { - case 'blockNumber': - case 'logIndex': - case 'transactionIndex': - log[key] = outNumber(log[key]); - break; - - case 'address': - log[key] = outAddress(log[key]); - break; - } - }); - - return log; -} - -export function outHwAccountInfo (infos) { - return Object - .keys(infos) - .reduce((ret, _address) => { - const address = outAddress(_address); - - ret[address] = infos[_address]; - - return ret; - }, {}); -} - -export function outNodeKind (info) { - return info; -} - -export function outNumber (number) { - return new BigNumber(number || 0); -} - -export function outPeer (peer) { - const protocols = Object.keys(peer.protocols) - .reduce((obj, key) => { - if (peer.protocols[key]) { - obj[key] = { - ...peer.protocols[key], - difficulty: outNumber(peer.protocols[key].difficulty) - }; - } - - return obj; - }, {}); - - return { - ...peer, - protocols - }; -} - -export function outPeers (peers) { - return { - active: outNumber(peers.active), - connected: outNumber(peers.connected), - max: outNumber(peers.max), - peers: peers.peers.map((peer) => outPeer(peer)) - }; -} - -export function outReceipt (receipt) { - if (receipt) { - Object.keys(receipt).forEach((key) => { - switch (key) { - case 'blockNumber': - case 'cumulativeGasUsed': - case 'gasUsed': - case 'transactionIndex': - receipt[key] = outNumber(receipt[key]); - break; - - case 'contractAddress': - receipt[key] = outAddress(receipt[key]); - break; - } - }); - } - - return receipt; -} - -export function outRecentDapps (recentDapps) { - if (recentDapps) { - Object.keys(recentDapps).forEach((url) => { - recentDapps[url] = outDate(recentDapps[url]); - }); - } - - return recentDapps; -} - -export function outSignerRequest (request) { - if (request) { - Object.keys(request).forEach((key) => { - switch (key) { - case 'id': - request[key] = outNumber(request[key]); - break; - - case 'payload': - request[key].decrypt = outSigningPayload(request[key].decrypt); - request[key].sign = outSigningPayload(request[key].sign); - request[key].signTransaction = outTransaction(request[key].signTransaction); - request[key].sendTransaction = outTransaction(request[key].sendTransaction); - break; - - case 'origin': - const type = Object.keys(request[key])[0]; - const details = request[key][type]; - - request[key] = { type, details }; - break; - } - }); - } - - return request; -} - -export function outSyncing (syncing) { - if (syncing && syncing !== 'false') { - Object.keys(syncing).forEach((key) => { - switch (key) { - case 'currentBlock': - case 'highestBlock': - case 'startingBlock': - case 'warpChunksAmount': - case 'warpChunksProcessed': - syncing[key] = outNumber(syncing[key]); - break; - - case 'blockGap': - syncing[key] = syncing[key] ? syncing[key].map(outNumber) : syncing[key]; - break; - } - }); - } - - return syncing; -} - -export function outTransactionCondition (condition) { - if (condition) { - if (condition.block) { - condition.block = outNumber(condition.block); - } else if (condition.time) { - condition.time = outDate(condition.time); - } - } - - return condition; -} - -export function outTransaction (tx) { - if (tx) { - Object.keys(tx).forEach((key) => { - switch (key) { - case 'blockNumber': - case 'gasPrice': - case 'gas': - case 'nonce': - case 'transactionIndex': - case 'value': - tx[key] = outNumber(tx[key]); - break; - - case 'condition': - tx[key] = outTransactionCondition(tx[key]); - break; - - case 'creates': - case 'from': - case 'to': - tx[key] = outAddress(tx[key]); - break; - } - }); - } - - return tx; -} - -export function outSigningPayload (payload) { - if (payload) { - Object.keys(payload).forEach((key) => { - switch (key) { - case 'address': - payload[key] = outAddress(payload[key]); - break; - } - }); - } - - return payload; -} - -export function outTrace (trace) { - if (trace) { - if (trace.action) { - Object.keys(trace.action).forEach(key => { - switch (key) { - case 'gas': - case 'value': - case 'balance': - trace.action[key] = outNumber(trace.action[key]); - break; - - case 'from': - case 'to': - case 'address': - case 'refundAddress': - trace.action[key] = outAddress(trace.action[key]); - break; - } - }); - } - - if (trace.result) { - Object.keys(trace.result).forEach(key => { - switch (key) { - case 'gasUsed': - trace.result[key] = outNumber(trace.result[key]); - break; - - case 'address': - trace.action[key] = outAddress(trace.action[key]); - break; - } - }); - } - - if (trace.traceAddress) { - trace.traceAddress.forEach((address, index) => { - trace.traceAddress[index] = outNumber(address); - }); - } - - Object.keys(trace).forEach((key) => { - switch (key) { - case 'subtraces': - case 'transactionPosition': - case 'blockNumber': - trace[key] = outNumber(trace[key]); - break; - } - }); - } - - return trace; -} - -export function outTraces (traces) { - if (traces) { - return traces.map(outTrace); - } - - return traces; -} - -export function outTraceReplay (trace) { - if (trace) { - Object.keys(trace).forEach((key) => { - switch (key) { - case 'trace': - trace[key] = outTraces(trace[key]); - break; - } - }); - } - - return trace; -} - -export function outVaultMeta (meta) { - if (isString(meta)) { - try { - const obj = JSON.parse(meta); - - return obj; - } catch (error) { - return {}; - } - } - - return meta || {}; -} diff --git a/js/packages/api/format/output.spec.js b/js/packages/api/format/output.spec.js deleted file mode 100644 index 6ffefaedc..000000000 --- a/js/packages/api/format/output.spec.js +++ /dev/null @@ -1,502 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import { outBlock, outAccountInfo, outAddress, outChainStatus, outDate, outHistogram, outHwAccountInfo, outNodeKind, outNumber, outPeer, outPeers, outReceipt, outRecentDapps, outSyncing, outTransaction, outTrace, outVaultMeta } from './output'; -import { isAddress, isBigNumber, isInstanceOf } from '../../../test/types'; - -describe('api/format/output', () => { - const address = '0x63cf90d3f0410092fc0fca41846f596223979195'; - const checksum = '0x63Cf90D3f0410092FC0fca41846f596223979195'; - - describe('outAccountInfo', () => { - it('returns meta objects parsed', () => { - expect(outAccountInfo( - { '0x63cf90d3f0410092fc0fca41846f596223979195': { - name: 'name', uuid: 'uuid', meta: '{"name":"456"}' } - } - )).to.deep.equal({ - '0x63Cf90D3f0410092FC0fca41846f596223979195': { - name: 'name', uuid: 'uuid', meta: { name: '456' } - } - }); - }); - - it('returns objects without meta & uuid as required', () => { - expect(outAccountInfo( - { '0x63cf90d3f0410092fc0fca41846f596223979195': { name: 'name' } } - )).to.deep.equal({ - '0x63Cf90D3f0410092FC0fca41846f596223979195': { name: 'name' } - }); - }); - }); - - describe('outAddress', () => { - it('retuns the address as checksummed', () => { - expect(outAddress(address)).to.equal(checksum); - }); - - it('retuns the checksum as checksummed', () => { - expect(outAddress(checksum)).to.equal(checksum); - }); - }); - - describe('outBlock', () => { - ['author', 'miner'].forEach((input) => { - it(`formats ${input} address as address`, () => { - const block = {}; - - block[input] = address; - const formatted = outBlock(block)[input]; - - expect(isAddress(formatted)).to.be.true; - expect(formatted).to.equal(checksum); - }); - }); - - ['difficulty', 'gasLimit', 'gasUsed', 'number', 'nonce', 'totalDifficulty'].forEach((input) => { - it(`formats ${input} number as hexnumber`, () => { - const block = {}; - - block[input] = 0x123; - const formatted = outBlock(block)[input]; - - expect(isInstanceOf(formatted, BigNumber)).to.be.true; - expect(formatted.toString(16)).to.equal('123'); - }); - }); - - ['timestamp'].forEach((input) => { - it(`formats ${input} number as Date`, () => { - const block = {}; - - block[input] = 0x57513668; - const formatted = outBlock(block)[input]; - - expect(isInstanceOf(formatted, Date)).to.be.true; - expect(formatted.getTime()).to.equal(1464940136000); - }); - }); - - it('ignores and passes through unknown keys', () => { - expect(outBlock({ someRandom: 'someRandom' })).to.deep.equal({ someRandom: 'someRandom' }); - }); - - it('formats a block with all the info converted', () => { - expect( - outBlock({ - author: address, - miner: address, - difficulty: '0x100', - gasLimit: '0x101', - gasUsed: '0x102', - number: '0x103', - nonce: '0x104', - totalDifficulty: '0x105', - timestamp: '0x57513668', - extraData: 'someExtraStuffInHere' - }) - ).to.deep.equal({ - author: checksum, - miner: checksum, - difficulty: new BigNumber('0x100'), - gasLimit: new BigNumber('0x101'), - gasUsed: new BigNumber('0x102'), - number: new BigNumber('0x103'), - nonce: new BigNumber('0x104'), - totalDifficulty: new BigNumber('0x105'), - timestamp: new Date('2016-06-03T07:48:56.000Z'), - extraData: 'someExtraStuffInHere' - }); - }); - }); - - describe('outChainStatus', () => { - it('formats blockGap values', () => { - const status = { - blockGap: [0x1234, '0x5678'] - }; - - expect(outChainStatus(status)).to.deep.equal({ - blockGap: [new BigNumber(0x1234), new BigNumber(0x5678)] - }); - }); - - it('handles null blockGap values', () => { - const status = { - blockGap: null - }; - - expect(outChainStatus(status)).to.deep.equal(status); - }); - }); - - describe('outDate', () => { - it('converts a second date in unix timestamp', () => { - expect(outDate(0x57513668)).to.deep.equal(new Date('2016-06-03T07:48:56.000Z')); - }); - }); - - describe('outHistogram', () => { - ['bucketBounds', 'counts'].forEach((type) => { - it(`formats ${type} as number arrays`, () => { - expect( - outHistogram({ [type]: [0x123, 0x456, 0x789] }) - ).to.deep.equal({ - [type]: [new BigNumber(0x123), new BigNumber(0x456), new BigNumber(0x789)] - }); - }); - }); - }); - - describe('outHwAccountInfo', () => { - it('returns objects with formatted addresses', () => { - expect(outHwAccountInfo( - { '0x63cf90d3f0410092fc0fca41846f596223979195': { manufacturer: 'mfg', name: 'type' } } - )).to.deep.equal({ - '0x63Cf90D3f0410092FC0fca41846f596223979195': { manufacturer: 'mfg', name: 'type' } - }); - }); - }); - - describe('outNodeKind', () => { - it('formats the input as received', () => { - const kind = { availability: 'personal', capability: 'full' }; - - expect(outNodeKind(kind)).to.deep.equal(kind); - }); - }); - - describe('outNumber', () => { - it('returns a BigNumber equalling the value', () => { - const bn = outNumber('0x123456'); - - expect(isBigNumber(bn)).to.be.true; - expect(bn.eq(0x123456)).to.be.true; - }); - - it('assumes 0 when ivalid input', () => { - expect(outNumber().eq(0)).to.be.true; - }); - }); - - describe('outPeer', () => { - it('converts all internal numbers to BigNumbers', () => { - expect(outPeer({ - caps: ['par/1'], - id: '0x01', - name: 'Parity', - network: { - localAddress: '10.0.0.1', - remoteAddress: '10.0.0.1' - }, - protocols: { - par: { - difficulty: '0x0f', - head: '0x02', - version: 63 - } - } - })).to.deep.equal({ - caps: ['par/1'], - id: '0x01', - name: 'Parity', - network: { - localAddress: '10.0.0.1', - remoteAddress: '10.0.0.1' - }, - protocols: { - par: { - difficulty: new BigNumber(15), - head: '0x02', - version: 63 - } - } - }); - }); - - it('does not output null protocols', () => { - expect(outPeer({ - caps: ['par/1'], - id: '0x01', - name: 'Parity', - network: { - localAddress: '10.0.0.1', - remoteAddress: '10.0.0.1' - }, - protocols: { - les: null - } - })).to.deep.equal({ - caps: ['par/1'], - id: '0x01', - name: 'Parity', - network: { - localAddress: '10.0.0.1', - remoteAddress: '10.0.0.1' - }, - protocols: {} - }); - }); - }); - - describe('outPeers', () => { - it('converts all internal numbers to BigNumbers', () => { - expect(outPeers({ - active: 789, - connected: '456', - max: 0x7b, - peers: [ - { - caps: ['par/1'], - id: '0x01', - name: 'Parity', - network: { - localAddress: '10.0.0.1', - remoteAddress: '10.0.0.1' - }, - protocols: { - par: { - difficulty: '0x0f', - head: '0x02', - version: 63 - }, - les: null - } - } - ] - })).to.deep.equal({ - active: new BigNumber(789), - connected: new BigNumber(456), - max: new BigNumber(123), - peers: [ - { - caps: ['par/1'], - id: '0x01', - name: 'Parity', - network: { - localAddress: '10.0.0.1', - remoteAddress: '10.0.0.1' - }, - protocols: { - par: { - difficulty: new BigNumber(15), - head: '0x02', - version: 63 - } - } - } - ] - }); - }); - }); - - describe('outReceipt', () => { - ['contractAddress'].forEach((input) => { - it(`formats ${input} address as address`, () => { - const block = {}; - - block[input] = address; - const formatted = outReceipt(block)[input]; - - expect(isAddress(formatted)).to.be.true; - expect(formatted).to.equal(checksum); - }); - }); - - ['blockNumber', 'cumulativeGasUsed', 'cumulativeGasUsed', 'gasUsed', 'transactionIndex'].forEach((input) => { - it(`formats ${input} number as hexnumber`, () => { - const block = {}; - - block[input] = 0x123; - const formatted = outReceipt(block)[input]; - - expect(isInstanceOf(formatted, BigNumber)).to.be.true; - expect(formatted.toString(16)).to.equal('123'); - }); - }); - - it('ignores and passes through unknown keys', () => { - expect(outReceipt({ someRandom: 'someRandom' })).to.deep.equal({ someRandom: 'someRandom' }); - }); - - it('formats a receipt with all the info converted', () => { - expect( - outReceipt({ - contractAddress: address, - blockNumber: '0x100', - cumulativeGasUsed: '0x101', - gasUsed: '0x102', - transactionIndex: '0x103', - extraData: 'someExtraStuffInHere' - }) - ).to.deep.equal({ - contractAddress: checksum, - blockNumber: new BigNumber('0x100'), - cumulativeGasUsed: new BigNumber('0x101'), - gasUsed: new BigNumber('0x102'), - transactionIndex: new BigNumber('0x103'), - extraData: 'someExtraStuffInHere' - }); - }); - }); - - describe('outRecentDapps', () => { - it('formats the URLs with timestamps', () => { - expect(outRecentDapps({ testing: 0x57513668 })).to.deep.equal({ - testing: new Date('2016-06-03T07:48:56.000Z') - }); - }); - }); - - describe('outSyncing', () => { - ['currentBlock', 'highestBlock', 'startingBlock', 'warpChunksAmount', 'warpChunksProcessed'].forEach((input) => { - it(`formats ${input} numbers as a number`, () => { - expect(outSyncing({ [input]: '0x123' })).to.deep.equal({ - [input]: new BigNumber('0x123') - }); - }); - }); - - it('formats blockGap properly', () => { - expect(outSyncing({ blockGap: [0x123, 0x456] })).to.deep.equal({ - blockGap: [new BigNumber(0x123), new BigNumber(0x456)] - }); - }); - }); - - describe('outTransaction', () => { - ['from', 'to'].forEach((input) => { - it(`formats ${input} address as address`, () => { - const block = {}; - - block[input] = address; - const formatted = outTransaction(block)[input]; - - expect(isAddress(formatted)).to.be.true; - expect(formatted).to.equal(checksum); - }); - }); - - ['blockNumber', 'gasPrice', 'gas', 'nonce', 'transactionIndex', 'value'].forEach((input) => { - it(`formats ${input} number as hexnumber`, () => { - const block = {}; - - block[input] = 0x123; - const formatted = outTransaction(block)[input]; - - expect(isInstanceOf(formatted, BigNumber)).to.be.true; - expect(formatted.toString(16)).to.equal('123'); - }); - }); - - it('passes condition as null when null', () => { - expect(outTransaction({ condition: null })).to.deep.equal({ condition: null }); - }); - - it('ignores and passes through unknown keys', () => { - expect(outTransaction({ someRandom: 'someRandom' })).to.deep.equal({ someRandom: 'someRandom' }); - }); - - it('formats a transaction with all the info converted', () => { - expect( - outTransaction({ - from: address, - to: address, - blockNumber: '0x100', - gasPrice: '0x101', - gas: '0x102', - nonce: '0x103', - transactionIndex: '0x104', - value: '0x105', - extraData: 'someExtraStuffInHere' - }) - ).to.deep.equal({ - from: checksum, - to: checksum, - blockNumber: new BigNumber('0x100'), - gasPrice: new BigNumber('0x101'), - gas: new BigNumber('0x102'), - nonce: new BigNumber('0x103'), - transactionIndex: new BigNumber('0x104'), - value: new BigNumber('0x105'), - extraData: 'someExtraStuffInHere' - }); - }); - }); - - describe('outTrace', () => { - it('ignores and passes through unknown keys', () => { - expect(outTrace({ someRandom: 'someRandom' })).to.deep.equal({ someRandom: 'someRandom' }); - }); - - it('formats a trace with all the info converted', () => { - const formatted = outTrace({ - type: 'call', - action: { - from: address, - to: address, - value: '0x06', - gas: '0x07', - input: '0x1234', - callType: 'call' - }, - result: { - gasUsed: '0x08', - output: '0x5678' - }, - traceAddress: [ '0x2' ], - subtraces: 3, - transactionPosition: '0xb', - transactionHash: '0x000000000000000000000000000000000000000000000000000000000000000c', - blockNumber: '0x0d', - blockHash: '0x000000000000000000000000000000000000000000000000000000000000000e' - }); - - expect(isBigNumber(formatted.action.gas)).to.be.true; - expect(formatted.action.gas.toNumber()).to.equal(7); - expect(isBigNumber(formatted.action.value)).to.be.true; - expect(formatted.action.value.toNumber()).to.equal(6); - - expect(formatted.action.from).to.equal(checksum); - expect(formatted.action.to).to.equal(checksum); - - expect(isBigNumber(formatted.blockNumber)).to.be.true; - expect(formatted.blockNumber.toNumber()).to.equal(13); - expect(isBigNumber(formatted.transactionPosition)).to.be.true; - expect(formatted.transactionPosition.toNumber()).to.equal(11); - }); - }); - - describe('outVaultMeta', () => { - it('returns an exmpt object on null', () => { - expect(outVaultMeta(null)).to.deep.equal({}); - }); - - it('returns the original value if not string', () => { - expect(outVaultMeta({ test: 123 })).to.deep.equal({ test: 123 }); - }); - - it('returns an object from JSON string', () => { - expect(outVaultMeta('{"test":123}')).to.deep.equal({ test: 123 }); - }); - - it('returns an empty object on invalid JSON', () => { - expect(outVaultMeta('{"test"}')).to.deep.equal({}); - }); - }); -}); diff --git a/js/packages/api/index.js b/js/packages/api/index.js deleted file mode 100644 index 978d98fec..000000000 --- a/js/packages/api/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './api'; diff --git a/js/packages/api/library.js b/js/packages/api/library.js deleted file mode 100644 index 96086b563..000000000 --- a/js/packages/api/library.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import es6Promise from 'es6-promise'; -es6Promise.polyfill(); - -const isNode = typeof global !== 'undefined' && typeof global !== 'undefined'; -const isBrowser = typeof self !== 'undefined' && typeof self.window !== 'undefined'; - -if (isBrowser) { - require('whatwg-fetch'); -} - -if (isNode) { - global.fetch = require('node-fetch'); -} - -import Abi from '../abi'; -import Api from './'; - -export { Api, Abi }; diff --git a/js/packages/api/local/accounts/account.js b/js/packages/api/local/accounts/account.js deleted file mode 100644 index 0bb069c8b..000000000 --- a/js/packages/api/local/accounts/account.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createKeyObject, decryptPrivateKey } from '../ethkey'; - -export default class Account { - constructor (persist, data = {}) { - const { - keyObject = null, - meta = {}, - name = '' - } = data; - - this._persist = persist; - this._keyObject = keyObject; - this._name = name; - this._meta = meta; - } - - isValidPassword (password) { - return decryptPrivateKey(this._keyObject, password) - .then((privateKey) => { - if (!privateKey) { - return false; - } - - return true; - }); - } - - export () { - const exported = Object.assign({}, this._keyObject); - - exported.meta = JSON.stringify(this._meta); - exported.name = this._name; - - return exported; - } - - get address () { - return `0x${this._keyObject.address.toLowerCase()}`; - } - - get name () { - return this._name; - } - - set name (name) { - this._name = name; - - this._persist(); - } - - get meta () { - return JSON.stringify(this._meta); - } - - set meta (meta) { - this._meta = JSON.parse(meta); - - this._persist(); - } - - get uuid () { - if (!this._keyObject) { - return null; - } - - return this._keyObject.id; - } - - decryptPrivateKey (password) { - return decryptPrivateKey(this._keyObject, password); - } - - changePassword (key, password) { - return createKeyObject(key, password).then((keyObject) => { - this._keyObject = keyObject; - - this._persist(); - }); - } - - static fromPrivateKey (persist, key, password) { - return createKeyObject(key, password).then((keyObject) => { - const account = new Account(persist, { keyObject }); - - return account; - }); - } - - toJSON () { - return { - keyObject: this._keyObject, - name: this._name, - meta: this._meta - }; - } -} diff --git a/js/packages/api/local/accounts/accounts.js b/js/packages/api/local/accounts/accounts.js deleted file mode 100644 index 823ab3624..000000000 --- a/js/packages/api/local/accounts/accounts.js +++ /dev/null @@ -1,223 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Account from './account'; -import localStore from 'store'; -import { debounce } from 'lodash'; -import { decryptPrivateKey } from '../ethkey'; - -const NULL_ADDRESS = '0x0000000000000000000000000000000000000000'; -const LS_STORE_KEY = '_parity::localAccounts'; - -export default class Accounts { - persist = debounce(() => { - this._lastState = JSON.stringify(this); - - localStore.set(LS_STORE_KEY, this); - }, 100); - - constructor (data = localStore.get(LS_STORE_KEY) || {}) { - this._lastState = JSON.stringify(data); - - window.addEventListener('storage', ({ key, newValue }) => { - if (key !== LS_STORE_KEY) { - return; - } - - if (newValue !== this._lastState) { - console.log('Data changed in a second tab, syncing state'); - - this.restore(JSON.parse(newValue)); - } - }); - - this.restore(data); - } - - restore (data) { - const { - last = NULL_ADDRESS, - dappsDefault = NULL_ADDRESS, - store = {} - } = data; - - this._last = last; - this._dappsDefaultAddress = dappsDefault; - this._store = {}; - - if (Array.isArray(store)) { - // Recover older version that stored accounts as an array - store.forEach((data) => { - const account = new Account(this.persist, data); - - this._store[account.address] = account; - }); - } else { - Object.keys(store).forEach((key) => { - this._store[key] = new Account(this.persist, store[key]); - }); - } - } - - _addAccount = (account) => { - const { address } = account; - - if (address in this._store && this._store[address].uuid) { - throw new Error(`Account ${address} already exists!`); - } - - this._store[address] = account; - this.lastAddress = address; - - this.persist(); - - return account.address; - } - - create (secret, password) { - const privateKey = Buffer.from(secret.slice(2), 'hex'); - - return Account - .fromPrivateKey(this.persist, privateKey, password) - .then(this._addAccount); - } - - restoreFromWallet (wallet, password) { - return decryptPrivateKey(wallet, password) - .then((privateKey) => { - if (!privateKey) { - throw new Error('Invalid password'); - } - - return Account.fromPrivateKey(this.persist, privateKey, password); - }) - .then(this._addAccount); - } - - set lastAddress (value) { - this._last = value.toLowerCase(); - } - - get lastAddress () { - return this._last; - } - - get dappsDefaultAddress () { - if (this._dappsDefaultAddress === NULL_ADDRESS) { - return this._last; - } - - if (this._dappsDefaultAddress in this._store) { - return this._dappsDefaultAddress; - } - - return NULL_ADDRESS; - } - - set dappsDefaultAddress (value) { - this._dappsDefaultAddress = value.toLowerCase(); - - this.persist(); - } - - get (address) { - address = address.toLowerCase(); - - const account = this._store[address]; - - if (!account) { - throw new Error(`Account not found: ${address}`); - } - - this.lastAddress = address; - - return account; - } - - getLazyCreate (address) { - address = address.toLowerCase(); - - this.lastAddress = address; - - if (!(address in this._store)) { - this._store[address] = new Account(this.persist); - } - - return this._store[address]; - } - - remove (address, password) { - address = address.toLowerCase(); - - const account = this.get(address); - - if (!account) { - return false; - } - - return account - .isValidPassword(password) - .then((isValid) => { - if (!isValid) { - return false; - } - - if (address === this.lastAddress) { - this.lastAddress = NULL_ADDRESS; - } - - this.removeUnsafe(address); - - return true; - }); - } - - removeUnsafe (address) { - address = address.toLowerCase(); - - delete this._store[address]; - - this.persist(); - } - - allAddresses () { - return Object.keys(this._store); - } - - accountAddresses () { - return Object - .keys(this._store) - .filter((address) => this._store[address].uuid); - } - - map (mapper) { - const result = {}; - - Object.keys(this._store).forEach((key) => { - result[key] = mapper(this._store[key]); - }); - - return result; - } - - toJSON () { - return { - last: this._last, - dappsDefault: this._dappsDefaultAddress, - store: this._store - }; - } -} diff --git a/js/packages/api/local/accounts/index.js b/js/packages/api/local/accounts/index.js deleted file mode 100644 index 800cf95f6..000000000 --- a/js/packages/api/local/accounts/index.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Accounts from './accounts'; - -const accounts = new Accounts(); - -export default accounts; diff --git a/js/packages/api/local/ethkey/ethkey.js b/js/packages/api/local/ethkey/ethkey.js deleted file mode 100644 index f8395b007..000000000 --- a/js/packages/api/local/ethkey/ethkey.js +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -/* global WebAssembly */ - -import wasmBuffer from './ethkey.wasm.js'; - -const NOOP = () => {}; - -// WASM memory setup -const WASM_PAGE_SIZE = 65536; -const STATIC_BASE = 1024; -const STATICTOP = STATIC_BASE + WASM_PAGE_SIZE * 2; -const STACK_BASE = align(STATICTOP + 16); -const STACKTOP = STACK_BASE; -const TOTAL_STACK = 5 * 1024 * 1024; -const TOTAL_MEMORY = 16777216; -const STACK_MAX = STACK_BASE + TOTAL_STACK; -const DYNAMIC_BASE = STACK_MAX + 64; -const DYNAMICTOP_PTR = STACK_MAX; - -function mockWebAssembly () { - function throwWasmError () { - throw new Error('Missing WebAssembly support'); - } - - // Simple mock replacement - return { - Memory: class { buffer = new ArrayBuffer(2048) }, - Table: class {}, - Module: class {}, - Instance: class { - exports = { - '_input_ptr': () => 0, - '_secret_ptr': () => 0, - '_public_ptr': () => 0, - '_address_ptr': () => 0, - '_ecpointg': NOOP, - '_brain': throwWasmError, - '_verify_secret': throwWasmError - } - } - }; -} - -const { Memory, Table, Module, Instance } = typeof WebAssembly !== 'undefined' ? WebAssembly : mockWebAssembly(); - -const wasmMemory = new Memory({ - initial: TOTAL_MEMORY / WASM_PAGE_SIZE, - maximum: TOTAL_MEMORY / WASM_PAGE_SIZE -}); - -const wasmTable = new Table({ - initial: 8, - maximum: 8, - element: 'anyfunc' -}); - -// TypedArray views into the memory -const wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); -const wasmMemoryU32 = new Uint32Array(wasmMemory.buffer); - -// Keep DYNAMIC_BASE in memory -wasmMemoryU32[DYNAMICTOP_PTR >> 2] = align(DYNAMIC_BASE); - -function align (mem) { - const ALIGN_SIZE = 16; - - return (Math.ceil(mem / ALIGN_SIZE) * ALIGN_SIZE) | 0; -} - -export function slice (ptr, len) { - return wasmMemoryU8.subarray(ptr, ptr + len); -} - -// Required by emscripten -function abort (what) { - throw new Error(what || 'WASM abort'); -} - -// Required by emscripten -function abortOnCannotGrowMemory () { - abort(`Cannot enlarge memory arrays.`); -} - -// Required by emscripten -function enlargeMemory () { - abortOnCannotGrowMemory(); -} - -// Required by emscripten -function getTotalMemory () { - return TOTAL_MEMORY; -} - -// Required by emscripten - used to perform memcpy on large data -function memcpy (dest, src, len) { - wasmMemoryU8.set(wasmMemoryU8.subarray(src, src + len), dest); - - return dest; -} - -// Synchronously compile WASM from the buffer -const module = new Module(wasmBuffer); - -// Instantiated WASM module -const instance = new Instance(module, { - global: {}, - env: { - DYNAMICTOP_PTR, - STACKTOP, - STACK_MAX, - abort, - enlargeMemory, - getTotalMemory, - abortOnCannotGrowMemory, - ___lock: NOOP, - ___syscall6: () => 0, - ___setErrNo: (no) => no, - _abort: abort, - ___syscall140: () => 0, - _emscripten_memcpy_big: memcpy, - ___syscall54: () => 0, - ___unlock: NOOP, - _llvm_trap: abort, - ___syscall146: () => 0, - 'memory': wasmMemory, - 'table': wasmTable, - tableBase: 0, - memoryBase: STATIC_BASE - } -}); - -export const extern = instance.exports; diff --git a/js/packages/api/local/ethkey/ethkey.wasm.js b/js/packages/api/local/ethkey/ethkey.wasm.js deleted file mode 100644 index d426f0e0c..000000000 --- a/js/packages/api/local/ethkey/ethkey.wasm.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = new Buffer('AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gAn9/AX9gAX8AYAABf2AAAGACf38AYAR/f39/AGADf39/AGAGf39/f39/AX8CyQELA2VudghTVEFDS1RPUAN/AANlbnYFYWJvcnQAAwNlbnYLX19fc3lzY2FsbDYAAgNlbnYNX19fc3lzY2FsbDE0MAACA2VudhZfZW1zY3JpcHRlbl9tZW1jcHlfYmlnAAADZW52DF9fX3N5c2NhbGw1NAACA2VudgpfbGx2bV90cmFwAAUDZW52DV9fX3N5c2NhbGwxNDYAAgNlbnYGbWVtb3J5AgGAAoACA2VudgV0YWJsZQFwAQgIA2Vudgl0YWJsZUJhc2UDfwADOjkEBAQEBAQDBwMICAgIAwYGBgIIAwMDBgMDCAYGBgMCBwYIAgICBgkDBgEAAAEEBAQAAQAAAQABAAIGBgF/ASMACwdfBw5fdmVyaWZ5X3NlY3JldAAMC19wdWJsaWNfcHRyAAoLX3NlY3JldF9wdHIACQpfaW5wdXRfcHRyAAgJX2VjcG9pbnRnAAcGX2JyYWluAA0MX2FkZHJlc3NfcHRyAAsJDgEAIwELCD0wPjEyNz8rCpClAzlJAQJ/An8jAiEAIwJB0JgBaiQCQagZKAIAQQFGBEAgACQCQawZDwsgACIBEB9BqBlBATYCAEGsGSABQdCYARA8GiAAJAJBrBkLCwYAQbi2AQsGAEG4vgELBgBB2L4BCwYAQZi/AQsKAEG4vgFBIBAlC74HAQt/AkAjAiEIIwJBoJwBaiQCIABBgAhLBEAgAEGACBAnCyAIQaACaiEFQagZKAIAQQFHBEAgBRAfQagZQQE2AgBBrBkgBUHQmAEQPBoLIAghCSAIQcgAaiIEEBQgCEH4mwFqIgFCADcAACABQgA3AAggAUIANwAQIAFCADcAGCAEQbi2ASAAEBAgBSAEQdgBEDwaIAUgAUEgEBIgCEHwmgFqIgMgASkAADcAACADIAEpAAg3AAggAyABKQAQNwAQIAMgASkAGDcAGCAIQZCbAWoiBkEBaiEHIAhB2JsBaiICQQxqIQpBACEAA0AgBBAUIAFCADcAACABQgA3AAggAUIANwAQIAFCADcAGCAEIANBIBAQIAUgBEHYARA8GiAFIAFBIBASIAIgASkAADcAACACIAEpAAg3AAggAiABKQAQNwAQIAIgASkAGDcAGCADIAIpAAA3AAAgAyACKQAINwAIIAMgAikAEDcAECADIAIpABg3ABggAEEBaiELIABBgYABRwRAIAshAAwBCwsgCUEBaiEAA0ACQCAJQawZIANBIBAmIAksAABBAUYEQCAGIAApAAA3AAAgBiAAKQAINwAIIAYgACkAEDcAECAGIAApABg3ABggBiAAKQAgNwAgIAYgACkAKDcAKCAGIAApADA3ADAgBiAAKQA4NwA4IAYgACwAQDoAQCAEEBQgAUIANwAAIAFCADcACCABQgA3ABAgAUIANwAYIAQgB0HAABAQIAUgBEHYARA8GiAFIAFBIBASIAIgASkAADcAACACIAEpAAg3AAggAiABKQAQNwAQIAIgASkAGDcAGEGYvwEgCikAADcAAEGgvwEgCikACDcAAEGovwEgCigAEDYAAEGYvwEsAABFDQELIAQQFCABQgA3AAAgAUIANwAIIAFCADcAECABQgA3ABggBCADQSAQECAFIARB2AEQPBogBSABQSAQEiACIAEpAAA3AAAgAiABKQAINwAIIAIgASkAEDcAECACIAEpABg3ABggAyACKQAANwAAIAMgAikACDcACCADIAIpABA3ABAgAyACKQAYNwAYDAELC0HYvgEgBykAADcAAEHgvgEgBykACDcAAEHovgEgBykAEDcAAEHwvgEgBykAGDcAAEH4vgEgBykAIDcAAEGAvwEgBykAKDcAAEGIvwEgBykAMDcAAEGQvwEgBykAODcAAEG4vgEgAykAADcAAEHAvgEgAykACDcAAEHIvgEgAykAEDcAAEHQvgEgAykAGDcAACAIJAILCwQAEAUL1wsCGX8tfgJAIAApAwAhJCAAQShqIgIpAwAhJSAAQdAAaiIDKQMAITAgAEH4AGoiBCkDACE+IABBoAFqIgUpAwAhJiAAQQhqIgYpAwAhMSAAQTBqIgcpAwAhMiAAQdgAaiIIKQMAIScgAEGAAWoiCSkDACEgIABBqAFqIgopAwAhPyAAQRBqIgspAwAhMyAAQThqIgwpAwAhHSAAQeAAaiINKQMAISEgAEGIAWoiDikDACE0IABBsAFqIg8pAwAhHiAAQRhqIhApAwAhNSAAQcAAaiIRKQMAISggAEHoAGoiEikDACE2IABBkAFqIhMpAwAhGyAAQbgBaiIUKQMAISIgAEEgaiIV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0AkpAwA3AxAgAUHYCSkDADcDGCABQeAJKQMANwMgIAFB6AkpAwA3AyggAUHwCSkDADcDMCABQfgJKQMANwM4IAFBgAopAwA3A0AgASADEBYgACABKQIANwIAIAAgASkCCDcCCCAAIAEpAhA3AhAgACABKQIYNwIYIAAgASkCIDcCICAAIAEpAig3AiggACABKQIwNwIwIAAgASkCODcCOCAAIAEpAkA3AkAgByQCDwsACwsgAxAbIAAgAykCADcCACAAIAMpAgg3AgggACADKQIQNwIQIAAgAykCGDcCGCAAIAMpAiA3AiAgACADKQIoNwIoIAAgAykCMDcCMCAAIAMpAjg3AjggACADKQJANwJAIAckAgsLzx8BD38CQCMCIQwjAkGABWokAiAAQZABaiIELAAABEAgDCQCDwsgDCELIAxBuARqIgIgAEHIAGoiCikCADcCACACIAopAgg3AgggAiAKKQIQNwIQIAIgCikCGDcCGCACIAopAiA3AiAgAiAKKQIoNwIoIAIgCikCMDcCMCACIAopAjg3AjggAiAKKQJANwJAIAIgChAVIAxB8ANqIgEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgNBCEYEQEEIIQcCQAJAAkADQCAHQX9qIQMgB0UNBSADQRBPDQEgAUEEaiADQQJ0aigCACIHIANBAnRBxAlqKAIAIgVHDQIgAyEHDAALAAtBvAsgA0EQECgMAQsgByAFTw0CQQghDQsFIANBCE8NASADIQ0LDAELIAFBwAkQFiABKAIAIQ0LIAEoAgQhDiALIAFBCGoiAykCADcCACALIAMpAgg3AgggCyADKQIQNwIQIAsgAykCGDcCGCALIAMpAiA3AiAgCyADKQIoNwIoIAsgAykCMDcCMCALIAMpAjg3AjggDUEBRiAORXEEQCAEQQE6AAAgDCQCDwsgDEGoA2ohCCAMQeACaiEEIAxBmAJqIQUgDEGIAWohBiACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAAQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgDEHAAGoiCSABKQMANwMAIAkgASkDCDcDCCAJIAEpAxA3AxAgCSABKQMYNwMYIAkgASkDIDcDICAJIAEpAyg3AyggCSABKQMwNwMwIAkgASkDODcDOCAJIAEpA0A3A0AgAiAJKQMANwMAIAIgCSkDCDcDCCACIAkpAxA3AxAgAiAJKQMYNwMYIAIgCSkDIDcDICACIAkpAyg3AyggAiAJKQMwNwMwIAIgCSkDODcDOCACIAkpA0A3A0AgAiAJEBUgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0ACQAJAIAEoAgAiA0EIRgRAQQghBwJAAkACQANAIAdBf2ohAyAHRQ0FIANBEE8NASABQQRqIANBAnRqKAIAIgcgA0ECdEHECWooAgAiD0cNAiADIQcMAAsAC0G8CyADQRAQKAwBCyAHIA9PDQILBSADQQhPDQELDAELIAFBwAkQFgsgBCABKQMANwMAIAQgASkDCDcDCCAEIAEpAxA3AxAgBCABKQMYNwMYIAQgASkDIDcDICAEIAEpAyg3AyggBCABKQMwNwMwIAQgASkDODcDOCAEIAEpA0A3A0AgAiAEKQMANwMAIAIgBCkDCDcDCCACIAQpAxA3AxAgAiAEKQMYNwMYIAIgBCkDIDcDICACIAQpAyg3AyggAiAEKQMwNwMwIAIgBCkDODcDOCACIAQpA0A3A0AgAiAJEBUgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0ACQAJAIAEoAgAiA0EIRgRAQQghBwJAAkACQANAIAdBf2ohAyAHRQ0FIANBEE8NASABQQRqIANBAnRqKAIAIgcgA0ECdEHECWooAgAiCUcNAiADIQcMAAsAC0G8CyADQRAQKAwBCyAHIAlPDQILBSADQQhPDQELDAELIAFBwAkQFgsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiANNgIAIAIgDjYCBCACQQhqIgMgCykDADcDACADIAspAwg3AwggAyALKQMQNwMQIAMgCykDGDcDGCADIAspAyA3AyAgAyALKQMoNwMoIAMgCykDMDcDMCADIAspAzg3AzggCCACEB0gAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAIEBcgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgARAbIAYgASkDADcDACAGIAEpAwg3AwggBiABKQMQNwMQIAYgASkDGDcDGCAGIAEpAyA3AyAgBiABKQMoNwMoIAYgASkDMDcDMCAGIAEpAzg3AzggBiABKQNANwNAIAIgBikDADcDACACIAYpAwg3AwggAiAGKQMQNwMQIAIgBikDGDcDGCACIAYpAyA3AyAgAiAGKQMoNwMoIAIgBikDMDcDMCACIAYpAzg3AzggAiAGKQNANwNAIAIgBhAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyAEIAEpAwA3AwAgBCABKQMINwMIIAQgASkDEDcDECAEIAEpAxg3AxggBCABKQMgNwMgIAQgASkDKDcDKCAEIAEpAzA3AzAgBCABKQM4NwM4IAQgASkDQDcDQCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAAQFSABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQAJAAkAgASgCACIDQQhGBEBBCCEHAkACQAJAA0AgB0F/aiEDIAdFDQUgA0EQTw0BIAFBBGogA0ECdGooAgAiByADQQJ0QcQJaigCACILRw0CIAMhBwwACwALQbwLIANBEBAoDAELIAcgC08NAgsFIANBCE8NAQsMAQsgAUHACRAWCyAIIAEpAwA3AwAgCCABKQMINwMIIAggASkDEDcDECAIIAEpAxg3AxggCCABKQMgNwMgIAggASkDKDcDKCAIIAEpAzA3AzAgCCABKQM4NwM4IAggASkDQDcDQCACIAQpAwA3AwAgAiAEKQMINwMIIAIgBCkDEDcDECACIAQpAxg3AxggAiAEKQMgNwMgIAIgBCkDKDcDKCACIAQpAzA3AzAgAiAEKQM4NwM4IAIgBCkDQDcDQCACIAgQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAMQdABaiIDIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAMQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAIIAEpAwA3AwAgCCABKQMINwMIIAggASkDEDcDECAIIAEpAxg3AxggCCABKQMgNwMgIAggASkDKDcDKCAIIAEpAzA3AzAgCCABKQM4NwM4IAggASkDQDcDQCACIAYpAwA3AwAgAiAGKQMINwMIIAIgBikDEDcDECACIAYpAxg3AxggAiAGKQMgNwMgIAIgBikDKDcDKCACIAYpAzA3AzAgAiAGKQM4NwM4IAIgBikDQDcDQCACIAgQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBCABKQMANwMAIAQgASkDCDcDCCAEIAEpAxA3AxAgBCABKQMYNwMYIAQgASkDIDcDICAEIAEpAyg3AyggBCABKQMwNwMwIAQgASkDODcDOCAEIAEpA0A3A0AgAiAEKQMANwMAIAIgBCkDCDcDCCACIAQpAxA3AxAgAiAEKQMYNwMYIAIgBCkDIDcDICACIAQpAyg3AyggAiAEKQMwNwMwIAIgBCkDODcDOCACIAQpA0A3A0AgAiAKEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgCiAFKQIANwIAIAogBSkCCDcCCCAKIAUpAhA3AhAgCiAFKQIYNwIYIAogBSkCIDcCICAKIAUpAig3AiggCiAFKQIwNwIwIAogBSkCODcCOCAKIAUpAkA3AkAgACADKQIANwIAIAAgAykCCDcCCCAAIAMpAhA3AhAgACADKQIYNwIYIAAgAykCIDcCICAAIAMpAig3AiggACADKQIwNwIwIAAgAykCODcCOCAAIAMpAkA3AkAgDCQCCwvCFgETfwJAIwIhCSMCQfC1AmokAiAJQZC0AmohAyAJQcizAmohBSAJQbiyAmohByAJQey1AmohCyAJIgRBCDYCACAEQZiv4LcBNgIEIARB24LKzwU2AgggBEHZ0bjuAjYCDCAEQdv57xQ2AhAgBEGHlpz0fDYCFCAEQZXFga0FNgIYIARBrPfyTjYCHCAEQf7M+c0HNgIgIARBJGoiBkIANwIAIAZCADcCCCAGQgA3AhAgBkIANwIYIAZBADoAICAEQQg2AkggBEHMAGoiD0G4qcNYNgIAIARBj6Gf4nk2AlAgBEGZqJW0ejYCVCAEQcjo3mg2AlggBEGokcTwADYCXCAEQfz3k+0FNgJgIARB5YiPtQI2AmQgBEH3tOvBBDYCaCAEQewAaiIGQgA3AgAgBkIANwIIIAZCADcCECAGQgA3AhggBkEAOgAgIARBkAFqIhBBADoAACAJQdi0AmoiASAEQZQBEDwaIAlB6JkBaiICIARBlAEQPBogAkGUAWogAUGUARA8GiACQagCaiABQZQBEDwaIAJBvANqIAFBlAEQPBogAkHQBGogAUGUARA8GiACQeQFaiABQZQBEDwaIAJB+AZqIAFBlAEQPBogAkGMCGogAUGUARA8GiACQaAJaiABQZQBEDwaIAJBtApqIAFBlAEQPBogAkHIC2ogAUGUARA8GiACQdwMaiABQZQBEDwaIAJB8A1qIAFBlAEQPBogAkGED2ogAUGUARA8GiACQZgQaiABQZQBEDwaIAJBrBFqIAFBlAEQPBogAkHAEmogAUGUARA8GiACQdQTaiABQZQBEDwaIAJB6BRqIAFBlAEQPBogAkH8FWogAUGUARA8GiACQZAXaiABQZQBEDwaIAJBpBhqIAFBlAEQPBogAkG4GWogAUGUARA8GiACQcwaaiABQZQBEDwaIAJB4BtqIAFBlAEQPBogAkH0HGogAUGUARA8GiACQYgeaiABQZQBEDwaIAJBnB9qIAFBlAEQPBogAkGwIGogAUGUARA8GiACQcQhaiABQZQBEDwaIAJB2CJqIAFBlAEQPBogAkHsI2ogAUGUARA8GiACQYAlaiABQZQBEDwaIAJBlCZqIAFBlAEQPBogAkGoJ2ogAUGUARA8GiACQbwoaiABQZQBEDwaIAJB0ClqIAFBlAEQPBogAkHkKmogAUGUARA8GiACQfgraiABQZQBEDwaIAJBjC1qIAFBlAEQPBogAkGgLmogAUGUARA8GiACQbQvaiABQZQBEDwaIAJByDBqIAFBlAEQPBogAkHcMWogAUGUARA8GiACQfAyaiABQZQBEDwaIAJBhDRqIAFBlAEQPBogAkGYNWogAUGUARA8GiACQaw2aiABQZQBEDwaIAJBwDdqIAFBlAEQPBogAkHUOGogAUGUARA8GiACQeg5aiABQZQBEDwaIAJB/DpqIAFBlAEQPBogAkGQPGogAUGUARA8GiACQaQ9aiABQZQBEDwaIAJBuD5qIAFBlAEQPBogAkHMP2ogAUGUARA8GiACQeDAAGogAUGUARA8GiACQfTBAGogAUGUARA8GiACQYjDAGogAUGUARA8GiACQZzEAGogAUGUARA8GiACQbDFAGogAUGUARA8GiACQcTGAGogAUGUARA8GiACQdjHAGogAUGUARA8GiACQezIAGogAUGUARA8GiACQYDKAGogAUGUARA8GiACQZTLAGogAUGUARA8GiAQLAAABH8gByAEQZABEDwaIAsgBEGRAWoiBi4AADsAACALIAYsAAI6AAJBAQUgBSAEKQMANwMAIAUgBCkDCDcDCCAFIAQpAxA3AxAgBSAEKQMYNwMYIAUgBCkDIDcDICAFIAQpAyg3AyggBSAEKQMwNwMwIAUgBCkDODcDOCAFIAQpA0A3A0AgBEHIAGoiBigCAEEBRiAPKAIARXEEQCADQdgMKQIANwIAIANB4AwpAgA3AgggA0HoDCkCADcCECADQfAMKQIANwIYIANB+AwpAgA3AiAgA0GADSkCADcCKCADQYgNKQIANwIwIANBkA0pAgA3AjggA0GYDSkCADcCQAUgAUHACSkDADcDACABQcgJKQMANwMIIAFB0AkpAwA3AxAgAUHYCSkDADcDGCABQeAJKQMANwMgIAFB6AkpAwA3AyggAUHwCSkDADcDMCABQfgJKQMANwM4IAFBgAopAwA3A0AgASAGEBYgAyABKQMANwMAIAMgASkDCDcDCCADIAEpAxA3AxAgAyABKQMYNwMYIAMgASkDIDcDICADIAEpAyg3AyggAyABKQMwNwMwIAMgASkDODcDOCADIAEpA0A3A0ALIAcgBSkDADcDACAHIAUpAwg3AwggByAFKQMQNwMQIAcgBSkDGDcDGCAHIAUpAyA3AyAgByAFKQMoNwMoIAcgBSkDMDcDMCAHIAUpAzg3AzggByAFKQNANwNAIAdByABqIgYgAykDADcDACAGIAMpAwg3AwggBiADKQMQNwMQIAYgAykDGDcDGCAGIAMpAyA3AyAgBiADKQMoNwMoIAYgAykDMDcDMCAGIAMpAzg3AzggBiADKQNANwNAQQALIQwgCUGYAWohDSAJQZDmAWoiCkGozABqIQggCiEG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QCACIA4QFyAMQbgIaiIDIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDCIGIAMpAwA3AwAgBiADKQMINwMIIAYgAykDEDcDECAGIAMpAxg3AxggBiADKQMgNwMgIAYgAykDKDcDKCAGIAMpAzA3AzAgBiADKQM4NwM4IAYgAykDQDcDQCACIABBkAFqIgkpAgA3AgAgAiAJKQIINwIIIAIgCSkCEDcCECACIAkpAhg3AhggAiAJKQIgNwIgIAIgCSkCKDcCKCACIAkpAjA3AjAgAiAJKQI4NwI4IAIgCSkCQDcCQCACIAkQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDEHIAGoiBSADKQMANwMAIAUgAykDCDcDCCAFIAMpAxA3AxAgBSADKQMYNwMYIAUgAykDIDcDICAFIAMpAyg3AyggBSADKQMwNwMwIAUgAykDODcDOCAFIAMpA0A3A0AgAiAAKQIANwIAIAIgACkCCDcCCCACIAApAhA3AhAgAiAAKQIYNwIYIAIgACkCIDcCICACIAApAig3AiggAiAAKQIwNwIwIAIgACkCODcCOCACIAApAkA3AkAgAiAGEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAxBkAFqIgcgAykDADcDACAHIAMpAwg3AwggByADKQMQNwMQIAcgAykDGDcDGCAHIAMpAyA3AyAgByADKQMoNwMoIAcgAykDMDcDMCAHIAMpAzg3AzggByADKQNANwNAIAIgASkCADcCACACIAEpAgg3AgggAiABKQIQNwIQIAIgASkCGDcCGCACIAEpAiA3AiAgAiABKQIoNwIoIAIgASkCMDcCMCACIAEpAjg3AjggAiABKQJANwJAIAIgBRAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAMQdgBaiIIIAMpAwA3AwAgCCADKQMINwMIIAggAykDEDcDECAIIAMpAxg3AxggCCADKQMgNwMgIAggAykDKDcDKCAIIAMpAzA3AzAgCCADKQM4NwM4IAggAykDQDcDQCACIABByABqIg0pAgA3AgAgAiANKQIINwIIIAIgDSkCEDcCECACIA0pAhg3AhggAiANKQIgNwIgIAIgDSkCKDcCKCACIA0pAjA3AjAgAiANKQI4NwI4IAIgDSkCQDcCQCACIAYQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDEHwB2oiBCADKQMANwMAIAQgAykDCDcDCCAEIAMpAxA3AxAgBCADKQMYNwMYIAQgAykDIDcDICAEIAMpAyg3AyggBCADKQMwNwMwIAQgAykDODcDOCAEIAMpA0A3A0AgAiAEKQMANwMAIAIgBCkDCDcDCCACIAQpAxA3AxAgAiAEKQMYNwMYIAIgBCkDIDcDICACIAQpAyg3AyggAiAEKQMwNwMwIAIgBCkDODcDOCACIAQpA0A3A0AgAiAOEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAxBoAJqIgogAykDADcDACAKIAMpAwg3AwggCiADKQMQNwMQIAogAykDGDcDGCAKIAMpAyA3AyAgCiADKQMoNwMoIAogAykDMDcDMCAKIAMpAzg3AzggCiADKQNANwNAIAIgAUHIAGoiASkCADcCACACIAEpAgg3AgggAiABKQIQNwIQIAIgASkCGDcCGCACIAEpAiA3AiAgAiABKQIoNwIoIAIgASkCMDcCMCACIAEpAjg3AjggAiABKQJANwJAIAIgBRAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAEIAMpAwA3AwAgBCADKQMINwMIIAQgAykDEDcDECAEIAMpAxg3AxggBCADKQMgNwMgIAQgAykDKDcDKCAEIAMpAzA3AzAgBCADKQM4NwM4IAQgAykDQDcDQCACIAQpAwA3AwAgAiAEKQMINwMIIAIgBCkDEDcDECACIAQpAxg3AxggAiAEKQMgNwMgIAIgBCkDKDcDKCACIAQpAzA3AzAgAiAEKQM4NwM4IAIgBCkDQDcDQCACIAkQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDEHoAmoiASADKQMANwMAIAEgAykDCDcDCCABIAMpAxA3AxAgASADKQMYNwMYIAEgAykDIDcDICABIAMpAyg3AyggASADKQMwNwMwIAEgAykDODcDOCABIAMpA0A3A0AgAiAHKQMANwMAIAIgBykDCDcDCCACIAcpAxA3AxAgAiAHKQMYNwMYIAIgBykDIDcDICACIAcpAyg3AyggAiAHKQMwNwMwIAIgBykDODcDOCACIAcpA0A3A0AgAiAIEBYgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAywARARAIANBwAkQFQsgDEGwA2oiCyADKQMANwMAIAsgAykDCDcDCCALIAMpAxA3AxAgCyADKQMYNwMYIAsgAykDIDcDICALIAMpAyg3AyggCyADKQMwNwMwIAsgAykDODcDOCALIAMpA0A3A0AgAiAKKQMANwMAIAIgCikDCDcDCCACIAopAxA3AxAgAiAKKQMYNwMYIAIgCikDIDcDICACIAopAyg3AyggAiAKKQMwNwMwIAIgCikDODcDOCACIAopA0A3A0AgAiABEBYgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAywARARAIANBwAkQFQsgDEH4A2oiCCADKQMANwMAIAggAykDCDcDCCAIIAMpAxA3AxAgCCADKQMYNwMYIAggAykDIDcDICAIIAMpAyg3AyggCCADKQMwNwMwIAggAykDODcDOCAIIAMpA0A3A0AgCygCAEEBRgRAIAsoAgRFBEACQAJAIAgoAgBBAUcNACAIKAIEDQAgABAkDAELIAJBiAopAwA3AwAgAkGQCikDADcDCCACQZgKKQMANwMQIAJBoAopAwA3AxggAkGoCikDADcDICACQbAKKQMANwMoIAJBuAopAwA3AzAgAkHACikDADcDOCACQcgKKQMANwNAIAJByABqIgFBiAopAwA3AwAgAUGQCikDADcDCCABQZgKKQMANwMQIAFBoAopAwA3AxggAUGoCikDADcDICABQbAKKQMANwMoIAFBuAopAwA3AzAgAUHACikDADcDOCABQcgKKQMANwNAIAJBkAFqIgFB2AwpAgA3AgAgAUHgDCkCADcCCCABQegMKQIANwIQIAFB8AwpAgA3AhggAUH4DCkCADcCICABQYANKQIANwIoIAFBiA0pAgA3AjAgAUGQDSkCADcCOCABQZgNKQIANwJAIAAgAkHYARA8GgsgDCQCDwsLIAxBqAdqIQUgAiALKQMANwMAIAIgCykDCDcDCCACIAspAxA3AxAgAiALKQMYNwMYIAIgCykDIDcDICACIAspAyg3AyggAiALKQMwNwMwIAIgCykDODcDOCACIAspA0A3A0AgAiALEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAxBwARqIgEgAykDADcDACABIAMpAwg3AwggASADKQMQNwMQIAEgAykDGDcDGCABIAMpAyA3AyAgASADKQMoNwMoIAEgAykDMDcDMCABIAMpAzg3AzggASADKQNANwNAIAIgBykDADcDACACIAcpAwg3AwggAiAHKQMQNwMQIAIgBykDGDcDGCACIAcpAyA3AyAgAiAHKQMoNwMoIAIgBykDMDcDMCACIAcpAzg3AzggAiAHKQNANwNAIAIgARAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAMQYgFaiIHIAMpAwA3AwAgByADKQMINwMIIAcgAykDEDcDECAHIAMpAxg3AxggByADKQMgNwMgIAcgAykDKDcDKCAHIAMpAzA3AzAgByADKQM4NwM4IAcgAykDQDcDQCACIAEpAwA3AwAgAiABKQMINwMIIAIgASkDEDcDECACIAEpAxg3AxggAiABKQMgNwMgIAIgASkDKDcDKCACIAEpAzA3AzAgAiABKQM4NwM4IAIgASkDQDcDQCACIAsQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgDEHQBWoiDyADKQMANwMAIA8gAykDCDcDCCAPIAMpAxA3AxAgDyADKQMYNwMYIA8gAykDIDcDICAPIAMpAyg3AyggDyADKQMwNwMwIA8gAykDODcDOCAPIAMpA0A3A0AgAiAIKQMANwMAIAIgCCkDCDcDCCACIAgpAxA3AxAgAiAIKQMYNwMYIAIgCCkDIDcDICACIAgpAyg3AyggAiAIKQMwNwMwIAIgCCkDODcDOCACIAgpA0A3A0AgAiAIEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAQgAykDADcDACAEIAMpAwg3AwggBCADKQMQNwMQIAQgAykDGDcDGCAEIAMpAyA3AyAgBCADKQMoNwMoIAQgAykDMDcDMCAEIAMpAzg3AzggBCADKQNANwNAIAIgBCkDADcDACACIAQpAwg3AwggAiAEKQMQNwMQIAIgBCkDGDcDGCACIAQpAyA3AyAgAiAEKQMoNwMoIAIgBCkDMDcDMCACIAQpAzg3AzggAiAEKQNANwNAIAIgDxAVIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAAkACQCADKAIAIgFBCEYEQEEIIQYCQAJAAkADQCAGQX9qIQEgBkUNBSABQRBPDQEgA0EEaiABQQJ0aigCACIGIAFBAnRBxAlqKAIAIhBHDQIgASEGDAALAAtBvAsgAUEQECgMAQsgBiAQTw0CCwUgAUEITw0BCwwBCyADQcAJEBYLIAUgAykDADcDACAFIAMpAwg3AwggBSADKQMQNwMQIAUgAykDGDcDGCAFIAMpAyA3AyAgBSADKQMoNwMoIAUgAykDMDcDMCAFIAMpAzg3AzggBSADKQNANwNAIAIgBSkDADcDACACIAUpAwg3AwggAiAFKQMQNwMQIAIgBSkDGDcDGCACIAUpAyA3AyAgAiAFKQMoNwMoIAIgBSkDMDcDMCACIAUpAzg3AzggAiAFKQNANwNAIAIgBxAWIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMsAEQEQCADQcAJEBULIAxB4AZqIgEgAykDADcDACABIAMpAwg3AwggASADKQMQNwMQIAEgAykDGDcDGCABIAMpAyA3AyAgASADKQMoNwMoIAEgAykDMDcDMCABIAMpAzg3AzggASADKQNANwNAIAIgASkDADcDACACIAEpAwg3AwggAiABKQMQNwMQIAIgASkDGDcDGCACIAEpAyA3AyAgAiABKQMoNwMoIAIgASkDMDcDMCACIAEpAzg3AzggAiABKQNANwNAIAIgBxAWIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMsAEQEQCADQcAJEBULIAxBmAZqIgYgAykDADcDACAGIAMpAwg3AwggBiADKQMQNwMQIAYgAykDGDcDGCAGIAMpAyA3AyAgBiADKQMoNwMoIAYgAykDMDcDMCAGIAMpAzg3AzggBiADKQNANwNAIAAgBikCADcCACAAIAYpAgg3AgggACAGKQIQNwIQIAAgBikCGDcCGCAAIAYpAiA3AiAgACAGKQIoNwIoIAAgBikCMDcCMCAAIAYpAjg3AjggACAGKQJANwJAIAIgBykDADcDACACIAcpAwg3AwggAiAHKQMQNwMQIAIgBykDGDcDGCACIAcpAyA3AyAgAiAHKQMoNwMoIAIgBykDMDcDMCACIAcpAzg3AzggAiAHKQNANwNAIAIgABAWIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMsAEQEQCADQcAJEBULIAUgAykDADcDACAFIAMpAwg3AwggBSADKQMQNwMQIAUgAykDGDcDGCAFIAMpAyA3AyAgBSADKQMoNwMoIAUgAykDMDcDMCAFIAMpAzg3AzggBSADKQNANwNAIAIgCCkDADcDACACIAgpAwg3AwggAiAIKQMQNwMQIAIgCCkDGDcDGCACIAgpAyA3AyAgAiAIKQMoNwMoIAIgCCkDMDcDMCACIAgpAzg3AzggAiAIKQNANwNAIAIgBRAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyABIAMpAwA3AwAgASADKQMINwMIIAEgAykDEDcDECABIAMpAxg3AxggASADKQMgNwMgIAEgAykDKDcDKCABIAMpAzA3AzAgASADKQM4NwM4IAEgAykDQDcDQCACIAopAwA3AwAgAiAKKQMINwMIIAIgCikDEDcDECACIAopAxg3AxggAiAKKQMgNwMgIAIgCikDKDcDKCACIAopAzA3AzAgAiAKKQM4NwM4IAIgCikDQDcDQCACIA8QFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgBCADKQMANwMAIAQgAykDCDcDCCAEIAMpAxA3AxAgBCADKQMYNwMYIAQgAykDIDcDICAEIAMpAyg3AyggBCADKQMwNwMwIAQgAykDODcDOCAEIAMpA0A3A0AgAiABKQMANwMAIAIgASkDCDcDCCACIAEpAxA3AxAgAiABKQMYNwMYIAIgASkDIDcDICACIAEpAyg3AyggAiABKQMwNwMwIAIgASkDODcDOCACIAEpA0A3A0AgAiAEEBYgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAywARARAIANBwAkQFQsgBiADKQMANwMAIAYgAykDCDcDCCAGIAMpAxA3AxAgBiADKQMYNwMYIAYgAykDIDcDICAGIAMpAyg3AyggBiADKQMwNwMwIAYgAykDODcDOCAGIAMpA0A3A0AgDSAGKQIANwIAIA0gBikCCDcCCCANIAYpAhA3AhAgDSAGKQIYNwIYIA0gBikCIDcCICANIAYpAig3AiggDSAGKQIwNwIwIA0gBikCODcCOCANIAYpAkA3AkAgAiAJKQIANwIAIAIgCSkCCDcCCCACIAkpAhA3AhAgAiAJKQIYNwIYIAIgCSkCIDcCICACIAkpAig3AiggAiAJKQIwNwIwIAIgCSkCODcCOCACIAkpAkA3AkAgAiAOEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAQgAykDADcDACAEIAMpAwg3AwggBCADKQMQNwMQIAQgAykDGDcDGCAEIAMpAyA3AyAgBCADKQMoNwMoIAQgAykDMDcDMCAEIAMpAzg3AzggBCADKQNANwNAIAIgBCkDADcDACACIAQpAwg3AwggAiAEKQMQNwMQIAIgBCkDGDcDGCACIAQpAyA3AyAgAiAEKQMoNwMoIAIgBCkDMDcDMCACIAQpAzg3AzggAiAEKQNANwNAIAIgCxAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAFIAMpAwA3AwAgBSADKQMINwMIIAUgAykDEDcDECAFIAMpAxg3AxggBSADKQMgNwMgIAUgAykDKDcDKCAFIAMpAzA3AzAgBSADKQM4NwM4IAUgAykDQDcDQCAJIAUpAgA3AgAgCSAFKQIINwIIIAkgBSkCEDcCECAJIAUpAhg3AhggCSAFKQIgNwIgIAkgBSkCKDcCKCAJIAUpAjA3AjAgCSAFKQI4NwI4IAkgBSkCQDcCQCAMJAILC94KAQt/AkAjAiEJIwJBgAVqJAIgCUG4BGohAiAJQfADaiEDIAlBqANqIQQgCUHgAmohBSAJQZgCaiEIIAlB0AFqIQcgCUHAAGoiCiABQZABEDwaIAEoApABIQsgASgClAEhDCAJIgYgAUGYAWoiASkCADcCACAGIAEpAgg3AgggBiABKQIQNwIQIAYgASkCGDcCGCAGIAEpAiA3AiAgBiABKQIoNwIoIAYgASkCMDcCMCAGIAEpAjg3AjggC0EBRiAMRXEEQCAAQYgOQZQBEDwaIAkkAgUgAiALNgIAIAIgDDYCBCACQQhqIgEgBikDADcDACABIAYpAwg3AwggASAGKQMQNwMQIAEgBikDGDcDGCABIAYpAyA3AyAgASAGKQMoNwMoIAEgBikDMDcDMCABIAYpAzg3AzggByACEB0gAiAHKQMANwMAIAIgBykDCDcDCCACIAcpAxA3AxAgAiAHKQMYNwMYIAIgBykDIDcDICACIAcpAyg3AyggAiAHKQMwNwMwIAIgBykDODcDOCACIAcpA0A3A0AgAiAHEBcgAyACKQMANwMAIAMgAikDCDcDCCADIAIpAxA3AxAgAyACKQMYNwMYIAMgAikDIDcDICADIAIpAyg3AyggAyACKQMwNwMwIAMgAikDODcDOCADIAIpA0A3A0AgAxAbIAggAykDADcDACAIIAMpAwg3AwggCCADKQMQNwMQIAggAykDGDcDGCAIIAMpAyA3AyAgCCADKQMoNwMoIAggAykDMDcDMCAIIAMpAzg3AzggCCADKQNANwNAIAIgCikDADcDACACIAopAwg3AwggAiAKKQMQNwMQIAIgCikDGDcDGCACIAopAyA3AyAgAiAKKQMoNwMoIAIgCikDMDcDMCACIAopAzg3AzggAiAKKQNANwNAIAIgCBAXIAMgAikDADcDACADIAIpAwg3AwggAyACKQMQNwMQIAMgAikDGDcDGCADIAIpAyA3AyAgAyACKQMoNwMoIAMgAikDMDcDMCADIAIpAzg3AzggAyACKQNANwNAIAMQGyAFIAMpAwA3AwAgBSADKQMINwMIIAUgAykDEDcDECAFIAMpAxg3AxggBSADKQMgNwMgIAUgAykDKDcDKCAFIAMpAzA3AzAgBSADKQM4NwM4IAUgAykDQDcDQCACIApByABqIgEpAwA3AwAgAiABKQMINwMIIAIgASkDEDcDECACIAEpAxg3AxggAiABKQMgNwMgIAIgASkDKDcDKCACIAEpAzA3AzAgAiABKQM4NwM4IAIgASkDQDcDQCACIAgQFyADIAIpAwA3AwAgAyACKQMINwMIIAMgAikDEDcDECADIAIpAxg3AxggAyACKQMgNwMgIAMgAikDKDcDKCADIAIpAzA3AzAgAyACKQM4NwM4IAMgAikDQDcDQCADEBsgBCADKQMANwMAIAQgAykDCDcDCCAEIAMpAxA3AxAgBCADKQMYNwMYIAQgAykDIDcDICAEIAMpAyg3AyggBCADKQMwNwMwIAQgAykDODcDOCAEIAMpA0A3A0AgBCAHEBcgBBAbIAAgBSkCADcCACAAIAUpAgg3AgggACAFKQIQNwIQIAAgBSkCGDcCGCAAIAUpAiA3AiAgACAFKQIoNwIoIAAgBSkCMDcCMCAAIAUpAjg3AjggACAFKQJANwJAIABByABqIgEgBCkCADcCACABIAQpAgg3AgggASAEKQIQNwIQIAEgBCkCGDcCGCABIAQpAiA3AiAgASAEKQIoNwIoIAEgBCkCMDcCMCABIAQpAjg3AjggASAEKQJANwJAIABBADoAkAEgCSQCCwsLhC0BDX8CQCMCIQwjAkHQCWokAiAMQbgIaiEDIAxB4AZqIQIgACgCkAFBAUYEQCAAKAKUAUUEQCABLACQASEHIAMgAUGQARA8GiAHQQFxBEAgAkGICikDADcDACACQZAKKQMANwMIIAJBmAopAwA3AxAgAkGgCikDADcDGCACQagKKQMANwMgIAJBsAopAwA3AyggAkG4CikDADcDMCACQcAKKQMANwM4IAJByAopAwA3A0AgAkHIAGoiAUGICikDADcDACABQZAKKQMANwMIIAFBmAopAwA3AxAgAUGgCikDADcDGCABQagKKQMANwMgIAFBsAopAwA3AyggAUG4CikDADcDMCABQcAKKQMANwM4IAFByAopAwA3A0AgAkGQAWoiAUHYDCkCADcCACABQeAMKQIANwIIIAFB6AwpAgA3AhAgAUHwDCkCADcCGCABQfgMKQIANwIgIAFBgA0pAgA3AiggAUGIDSkCADcCMCABQZANKQIANwI4IAFBmA0pAgA3AkAFIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAJByABqIgEgA0HIAGoiBykDADcDACABIAcpAwg3AwggASAHKQMQNwMQIAEgBykDGDcDGCABIAcpAyA3AyAgASAHKQMoNwMoIAEgBykDMDcDMCABIAcpAzg3AzggASAHKQNANwNAIAJBkAFqIgFBiAopAwA3AwAgAUGQCikDADcDCCABQZgKKQMANwMQIAFBoAopAwA3AxggAUGoCikDADcDICABQbAKKQMANwMoIAFBuAopAwA3AzAgAUHACikDADcDOCABQcgKKQMANwNACyAAIAJB2AEQPBogDCQCDwsLIAEsAJABBEAgDCQCDwsgAyAAQZABaiIKKQIANwIAIAMgCikCCDcCCCADIAopAhA3AhAgAyAKKQIYNwIYIAMgCikCIDcCICADIAopAig3AiggAyAKKQIwNwIwIAMgCikCODcCOCADIAopAkA3AkAgAyAKEBcgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAhAbIAwiByACKQMANwMAIAcgAikDCDcDCCAHIAIpAxA3AxAgByACKQMYNwMYIAcgAikDIDcDICAHIAIpAyg3AyggByACKQMwNwMwIAcgAikDODcDOCAHIAIpA0A3A0AgAyABKQIANwIAIAMgASkCCDcCCCADIAEpAhA3AhAgAyABKQIYNwIYIAMgASkCIDcCICADIAEpAig3AiggAyABKQIwNwIwIAMgASkCODcCOCADIAEpAkA3AkAgAyAHEBcgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAhAbIAxByABqIgQgAikDADcDACAEIAIpAwg3AwggBCACKQMQNwMQIAQgAikDGDcDGCAEIAIpAyA3AyAgBCACKQMoNwMoIAQgAikDMDcDMCAEIAIpAzg3AzggBCACKQNANwNAIAMgAUHIAGoiASkCADcCACADIAEpAgg3AgggAyABKQIQNwIQIAMgASkCGDcCGCADIAEpAiA3AiAgAyABKQIoNwIoIAMgASkCMDcCMCADIAEpAjg3AjggAyABKQJANwJAIAMgBxAXIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIQGyAMQZABaiIBIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABIAoQFyABEBsgAyAAKQIANwIAIAMgACkCCDcCCCADIAApAhA3AhAgAyAAKQIYNwIYIAMgACkCIDcCICADIAApAig3AiggAyAAKQIwNwIwIAMgACkCODcCOCADIAApAkA3AkAgAyAEEBYgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAiwARARAIAJBwAkQFQsgDEHYAWoiCSACKQMANwMAIAkgAikDCDcDCCAJIAIpAxA3AxAgCSACKQMYNwMYIAkgAikDIDcDICAJIAIpAyg3AyggCSACKQMwNwMwIAkgAikDODcDOCAJIAIpA0A3A0AgAyAAQcgAaiIEKQIANwIAIAMgBCkCCDcCCCADIAQpAhA3AhAgAyAEKQIYNwIYIAMgBCkCIDcCICADIAQpAig3AiggAyAEKQIwNwIwIAMgBCkCODcCOCADIAQpAkA3AkAgAyABEBYgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAiwARARAIAJBwAkQFQsgDEGgAmoiBSACKQMANwMAIAUgAikDCDcDCCAFIAIpAxA3AxAgBSACKQMYNwMYIAUgAikDIDcDICAFIAIpAyg3AyggBSACKQMwNwMwIAUgAikDODcDOCAFIAIpA0A3A0AgCSgCAEEBRgRAIAkoAgRFBEACQAJAIAUoAgBBAUcNACAFKAIEDQAgABAkDAELIABBiAopAgA3AgAgAEGQCikCADcCCCAAQZgKKQIANwIQIABBoAopAgA3AhggAEGoCikCADcCICAAQbAKKQIANwIoIABBuAopAgA3AjAgAEHACikCADcCOCAAQcgKKQIANwJAIARBiAopAgA3AgAgBEGQCikCADcCCCAEQZgKKQIANwIQIARBoAopAgA3AhggBEGoCikCADcCICAEQbAKKQIANwIoIARBuAopAgA3AjAgBEHACikCADcCOCAEQcgKKQIANwJAIApB2AwpAgA3AgAgCkHgDCkCADcCCCAKQegMKQIANwIQIApB8AwpAgA3AhggCkH4DCkCADcCICAKQYANKQIANwIoIApBiA0pAgA3AjAgCkGQDSkCADcCOCAKQZgNKQIANwJACyAMJAIPCwsgDEHQBWohBiADIAkpAwA3AwAgAyAJKQMINwMIIAMgCSkDEDcDECADIAkpAxg3AxggAyAJKQMgNwMgIAMgCSkDKDcDKCADIAkpAzA3AzAgAyAJKQM4NwM4IAMgCSkDQDcDQCADIAkQFyACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACEBsgDEHoAmoiASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgAyAAKQIANwIAIAMgACkCCDcCCCADIAApAhA3AhAgAyAAKQIYNwIYIAMgACkCIDcCICADIAApAig3AiggAyAAKQIwNwIwIAMgACkCODcCOCADIAApAkA3AkAgAyABEBcgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAhAbIAxBsANqIgsgAikDADcDACALIAIpAwg3AwggCyACKQMQNwMQIAsgAikDGDcDGCALIAIpAyA3AyAgCyACKQMoNwMoIAsgAikDMDcDMCALIAIpAzg3AzggCyACKQNANwNAIAMgASkDADcDACADIAEpAwg3AwggAyABKQMQNwMQIAMgASkDGDcDGCADIAEpAyA3AyAgAyABKQMoNwMoIAMgASkDMDcDMCADIAEpAzg3AzggAyABKQNANwNAIAMgCRAXIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIQGyAMQfgDaiINIAIpAwA3AwAgDSACKQMINwMIIA0gAikDEDcDECANIAIpAxg3AxggDSACKQMgNwMgIA0gAikDKDcDKCANIAIpAzA3AzAgDSACKQM4NwM4IA0gAikDQDcDQCADIAUpAwA3AwAgAyAFKQMINwMIIAMgBSkDEDcDECADIAUpAxg3AxggAyAFKQMgNwMgIAMgBSkDKDcDKCADIAUpAzA3AzAgAyAFKQM4NwM4IAMgBSkDQDcDQCADIAUQFyACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACEBsgDEGYBmoiCCACKQMANwMAIAggAikDCDcDCCAIIAIpAxA3AxAgCCACKQMYNwMYIAggAikDIDcDICAIIAIpAyg3AyggCCACKQMwNwMwIAggAikDODcDOCAIIAIpA0A3A0AgAyAIKQMANwMAIAMgCCkDCDcDCCADIAgpAxA3AxAgAyAIKQMYNwMYIAMgCCkDIDcDICADIAgpAyg3AyggAyAIKQMwNwMwIAMgCCkDODcDOCADIAgpA0A3A0AgAyANEBUgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0ACQAJAIAIoAgAiAUEIRgRAQQghBwJAAkACQANAIAdBf2ohASAHRQ0FIAFBEE8NASACQQRqIAFBAnRqKAIAIgcgAUECdEHECWooAgAiDkcNAiABIQcMAAsAC0G8CyABQRAQKAwBCyAHIA5PDQILBSABQQhPDQELDAELIAJBwAkQFgsgBiACKQMANwMAIAYgAikDCDcDCCAGIAIpAxA3AxAgBiACKQMYNwMYIAYgAikDIDcDICAGIAIpAyg3AyggBiACKQMwNwMwIAYgAikDODcDOCAGIAIpA0A3A0AgAyAGKQMANwMAIAMgBikDCDcDCCADIAYpAxA3AxAgAyAGKQMYNwMYIAMgBikDIDcDICADIAYpAyg3AyggAyAGKQMwNwMwIAMgBikDODcDOCADIAYpA0A3A0AgAyALEBYgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAiALEBYgAkHEAGoiASwAAARAA0AgAkHACRAVIAEsAAANAAsLIAxBiAVqIgEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAAgASkCADcCACAAIAEpAgg3AgggACABKQIQNwIQIAAgASkCGDcCGCAAIAEpAiA3AiAgACABKQIoNwIoIAAgASkCMDcCMCAAIAEpAjg3AjggACABKQJANwJAIAMgCykDADcDACADIAspAwg3AwggAyALKQMQNwMQIAMgCykDGDcDGCADIAspAyA3AyAgAyALKQMoNwMoIAMgCykDMDcDMCADIAspAzg3AzggAyALKQNANwNAIAMgABAWIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIsAEQEQCACQcAJEBULIAYgAikDADcDACAGIAIpAwg3AwggBiACKQMQNwMQIAYgAikDGDcDGCAGIAIpAyA3AyAgBiACKQMoNwMoIAYgAikDMDcDMCAGIAIpAzg3AzggBiACKQNANwNAIAMgBSkDADcDACADIAUpAwg3AwggAyAFKQMQNwMQIAMgBSkDGDcDGCADIAUpAyA3AyAgAyAFKQMoNwMoIAMgBSkDMDcDMCADIAUpAzg3AzggAyAFKQNANwNAIAMgBhAXIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIQGyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCADIAQpAgA3AgAgAyAEKQIINwIIIAMgBCkCEDcCECADIAQpAhg3AhggAyAEKQIgNwIgIAMgBCkCKDcCKCADIAQpAjA3AjAgAyAEKQI4NwI4IAMgBCkCQDcCQCADIA0QFyACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACEBsgCCACKQMANwMAIAggAikDCDcDCCAIIAIpAxA3AxAgCCACKQMYNwMYIAggAikDIDcDICAIIAIpAyg3AyggCCACKQMwNwMwIAggAikDODcDOCAIIAIpA0A3A0AgAyABKQMANwMAIAMgASkDCDcDCCADIAEpAxA3AxAgAyABKQMYNwMYIAMgASkDIDcDICADIAEpAyg3AyggAyABKQMwNwMwIAMgASkDODcDOCADIAEpA0A3A0AgAyAIEBYgAiADKQMANwMAIAIgAykDCDcDCCACIAMpAxA3AxAgAiADKQMYNwMYIAIgAykDIDcDICACIAMpAyg3AyggAiADKQMwNwMwIAIgAykDODcDOCACIAMpA0A3A0AgAiwARARAIAJBwAkQFQsgDEHABGoiACACKQMANwMAIAAgAikDCDcDCCAAIAIpAxA3AxAgACACKQMYNwMYIAAgAikDIDcDICAAIAIpAyg3AyggACACKQMwNwMwIAAgAikDODcDOCAAIAIpA0A3A0AgBCAAKQIANwIAIAQgACkCCDcCCCAEIAApAhA3AhAgBCAAKQIYNwIYIAQgACkCIDcCICAEIAApAig3AiggBCAAKQIwNwIwIAQgACkCODcCOCAEIAApAkA3AkAgCiAJEBcgChAbIAwkAgsLklcBE38CQCMCIREjAkHwB2okAiAAKAKQAUEBRiIIBEAgACgClAFFBEAgESQCDwsLIBFBqAdqIQIgEUHgBmohASARQZgGaiEDIBFB0AVqIQUgEUGIBWohBiARQcAEaiEOIBFB+ANqIQcgEUGwA2ohCyARQegCaiENIBFBoAJqIQQgEUHYAWohCSARQZABaiEKIBFByABqIRAgESEPIABBkAFqIRICfwJAIAhFDQAgACgClAFBAUcNACACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAAQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgCSABKQMANwMAIAkgASkDCDcDCCAJIAEpAxA3AxAgCSABKQMYNwMYIAkgASkDIDcDICAJIAEpAyg3AyggCSABKQMwNwMwIAkgASkDODcDOCAJIAEpA0A3A0AgAiAAQcgAaiIMKQIANwIAIAIgDCkCCDcCCCACIAwpAhA3AhAgAiAMKQIYNwIYIAIgDCkCIDcCICACIAwpAig3AiggAiAMKQIwNwIwIAIgDCkCODcCOCACIAwpAkA3AkAgAiAMEBcgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgARAbIAQgASkDADcDACAEIAEpAwg3AwggBCABKQMQNwMQIAQgASkDGDcDGCAEIAEpAyA3AyAgBCABKQMoNwMoIAQgASkDMDcDMCAEIAEpAzg3AzggBCABKQNANwNAIAIgBCkDADcDACACIAQpAwg3AwggAiAEKQMQNwMQIAIgBCkDGDcDGCACIAQpAyA3AyAgAiAEKQMoNwMoIAIgBCkDMDcDMCACIAQpAzg3AzggAiAEKQNANwNAIAIgBBAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyANIAEpAwA3AwAgDSABKQMINwMIIA0gASkDEDcDECANIAEpAxg3AxggDSABKQMgNwMgIA0gASkDKDcDKCANIAEpAzA3AzAgDSABKQM4NwM4IA0gASkDQDcDQCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAQQFSABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQAJAAkAgASgCACIEQQhGBEBBCCEIAkACQAJAA0AgCEF/aiEEIAhFDQUgBEEQTw0BIAFBBGogBEECdGooAgAiCCAEQQJ0QcQJaigCACITRw0CIAQhCAwACwALQbwLIARBEBAoDAELIAggE08NAgsFIARBCE8NAQsMAQsgAUHACRAWCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACIAMQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAJEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgBiABKQMANwMAIAYgASkDCDcDCCAGIAEpAxA3AxAgBiABKQMYNwMYIAYgASkDIDcDICAGIAEpAyg3AyggBiABKQMwNwMwIAYgASkDODcDOCAGIAEpA0A3A0AgAiAGKQMANwMAIAIgBikDCDcDCCACIAYpAxA3AxAgAiAGKQMYNwMYIAIgBikDIDcDICACIAYpAyg3AyggAiAGKQMwNwMwIAIgBikDODcDOCACIAYpA0A3A0AgAiANEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgCyABKQMANwMAIAsgASkDCDcDCCALIAEpAxA3AxAgCyABKQMYNwMYIAsgASkDIDcDICALIAEpAyg3AyggCyABKQMwNwMwIAsgASkDODcDOCALIAEpA0A3A0AgCxAaIAIgCSkDADcDACACIAkpAwg3AwggAiAJKQMQNwMQIAIgCSkDGDcDGCACIAkpAyA3AyAgAiAJKQMoNwMoIAIgCSkDMDcDMCACIAkpAzg3AzggAiAJKQNANwNAIAIgCRAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIhNHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCATTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAMgASkDADcDACADIAEpAwg3AwggAyABKQMQNwMQIAMgASkDGDcDGCADIAEpAyA3AyAgAyABKQMoNwMoIAMgASkDMDcDMCADIAEpAzg3AzggAyABKQNANwNAIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIgCRAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIglHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCAJTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAcgASkDADcDACAHIAEpAwg3AwggByABKQMQNwMQIAcgASkDGDcDGCAHIAEpAyA3AyAgByABKQMoNwMoIAcgASkDMDcDMCAHIAEpAzg3AzggByABKQNANwNAIAIgBykDADcDACACIAcpAwg3AwggAiAHKQMQNwMQIAIgBykDGDcDGCACIAcpAyA3AyAgAiAHKQMoNwMoIAIgBykDMDcDMCACIAcpAzg3AzggAiAHKQNANwNAIAIgBxAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACIAsQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAFIAEpAwA3AwAgBSABKQMINwMIIAUgASkDEDcDECAFIAEpAxg3AxggBSABKQMgNwMgIAUgASkDKDcDKCAFIAEpAzA3AzAgBSABKQM4NwM4IAUgASkDQDcDQCACIAUpAwA3AwAgAiAFKQMINwMIIAIgBSkDEDcDECACIAUpAxg3AxggAiAFKQMgNwMgIAIgBSkDKDcDKCACIAUpAzA3AzAgAiAFKQM4NwM4IAIgBSkDQDcDQCACIAsQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAOIAEpAwA3AwAgDiABKQMINwMIIA4gASkDEDcDECAOIAEpAxg3AxggDiABKQMgNwMgIA4gASkDKDcDKCAOIAEpAzA3AzAgDiABKQM4NwM4IA4gASkDQDcDQCAGIA0pAwA3AwAgBiANKQMINwMIIAYgDSkDEDcDECAGIA0pAxg3AxggBiANKQMgNwMgIAYgDSkDKDcDKCAGIA0pAzA3AzAgBiANKQM4NwM4IAYgDSkDQDcDQCAGEBogBhAaIAYQGiAPIA4pAwA3AwAgDyAOKQMINwMIIA8gDikDEDcDECAPIA4pAxg3AxggDyAOKQMgNwMgIA8gDikDKDcDKCAPIA4pAzA3AzAgDyAOKQM4NwM4IA8gDikDQDcDQCACIAspAwA3AwAgAiALKQMINwMIIAIgCykDEDcDECACIAspAxg3AxggAiALKQMgNwMgIAIgCykDKDcDKCACIAspAzA3AzAgAiALKQM4NwM4IAIgCykDQDcDQCACIA4QFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAcpAwA3AwAgAiAHKQMINwMIIAIgBykDEDcDECACIAcpAxg3AxggAiAHKQMgNwMgIAIgBykDKDcDKCACIAcpAzA3AzAgAiAHKQM4NwM4IAIgBykDQDcDQCACIAMQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAGEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgECABKQMANwMAIBAgASkDCDcDCCAQIAEpAxA3AxAgECABKQMYNwMYIBAgASkDIDcDICAQIAEpAyg3AyggECABKQMwNwMwIBAgASkDODcDOCAQIAEpA0A3A0AgAiAMKQIANwIAIAIgDCkCCDcCCCACIAwpAhA3AhAgAiAMKQIYNwIYIAIgDCkCIDcCICACIAwpAig3AiggAiAMKQIwNwIwIAIgDCkCODcCOCACIAwpAkA3AkAgAiAMEBUgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0ACQAJAIAEoAgAiBEEIRgRAQQghCAJAAkACQANAIAhBf2ohBCAIRQ0FIARBEE8NASABQQRqIARBAnRqKAIAIgggBEECdEHECWooAgAiAkcNAiAEIQgMAAsAC0G8CyAEQRAQKAwBCyAIIAJPDQILBSAEQQhPDQELDAELIAFBwAkQFgsgCiABKQMANwMAIAogASkDCDcDCCAKIAEpAxA3AxAgCiABKQMYNwMYIAogASkDIDcDICAKIAEpAyg3AyggCiABKQMwNwMwIAogASkDODcDOCAKIAEpA0A3A0AgDAwBCyACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAAQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgCSABKQMANwMAIAkgASkDCDcDCCAJIAEpAxA3AxAgCSABKQMYNwMYIAkgASkDIDcDICAJIAEpAyg3AyggCSABKQMwNwMwIAkgASkDODcDOCAJIAEpA0A3A0AgAiAAQcgAaiIMKQIANwIAIAIgDCkCCDcCCCACIAwpAhA3AhAgAiAMKQIYNwIYIAIgDCkCIDcCICACIAwpAig3AiggAiAMKQIwNwIwIAIgDCkCODcCOCACIAwpAkA3AkAgAiAMEBcgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgARAbIAQgASkDADcDACAEIAEpAwg3AwggBCABKQMQNwMQIAQgASkDGDcDGCAEIAEpAyA3AyAgBCABKQMoNwMoIAQgASkDMDcDMCAEIAEpAzg3AzggBCABKQNANwNAIAIgBCkDADcDACACIAQpAwg3AwggAiAEKQMQNwMQIAIgBCkDGDcDGCACIAQpAyA3AyAgAiAEKQMoNwMoIAIgBCkDMDcDMCACIAQpAzg3AzggAiAEKQNANwNAIAIgBBAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyANIAEpAwA3AwAgDSABKQMINwMIIA0gASkDEDcDECANIAEpAxg3AxggDSABKQMgNwMgIA0gASkDKDcDKCANIAEpAzA3AzAgDSABKQM4NwM4IA0gASkDQDcDQCACIAApAgA3AgAgAiAAKQIINwIIIAIgACkCEDcCECACIAApAhg3AhggAiAAKQIgNwIgIAIgACkCKDcCKCACIAApAjA3AjAgAiAAKQI4NwI4IAIgACkCQDcCQCACIAQQFSABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQAJAAkAgASgCACIEQQhGBEBBCCEIAkACQAJAA0AgCEF/aiEEIAhFDQUgBEEQTw0BIAFBBGogBEECdGooAgAiCCAEQQJ0QcQJaigCACITRw0CIAQhCAwACwALQbwLIARBEBAoDAELIAggE08NAgsFIARBCE8NAQsMAQsgAUHACRAWCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACIAMQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAJEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgBiABKQMANwMAIAYgASkDCDcDCCAGIAEpAxA3AxAgBiABKQMYNwMYIAYgASkDIDcDICAGIAEpAyg3AyggBiABKQMwNwMwIAYgASkDODcDOCAGIAEpA0A3A0AgAiAGKQMANwMAIAIgBikDCDcDCCACIAYpAxA3AxAgAiAGKQMYNwMYIAIgBikDIDcDICACIAYpAyg3AyggAiAGKQMwNwMwIAIgBikDODcDOCACIAYpA0A3A0AgAiANEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgCyABKQMANwMAIAsgASkDCDcDCCALIAEpAxA3AxAgCyABKQMYNwMYIAsgASkDIDcDICALIAEpAyg3AyggCyABKQMwNwMwIAsgASkDODcDOCALIAEpA0A3A0AgCxAaIAIgCSkDADcDACACIAkpAwg3AwggAiAJKQMQNwMQIAIgCSkDGDcDGCACIAkpAyA3AyAgAiAJKQMoNwMoIAIgCSkDMDcDMCACIAkpAzg3AzggAiAJKQNANwNAIAIgCRAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIhNHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCATTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAMgASkDADcDACADIAEpAwg3AwggAyABKQMQNwMQIAMgASkDGDcDGCADIAEpAyA3AyAgAyABKQMoNwMoIAMgASkDMDcDMCADIAEpAzg3AzggAyABKQNANwNAIAIgAykDADcDACACIAMpAwg3AwggAiADKQMQNwMQIAIgAykDGDcDGCACIAMpAyA3AyAgAiADKQMoNwMoIAIgAykDMDcDMCACIAMpAzg3AzggAiADKQNANwNAIAIgCRAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIglHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCAJTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAcgASkDADcDACAHIAEpAwg3AwggByABKQMQNwMQIAcgASkDGDcDGCAHIAEpAyA3AyAgByABKQMoNwMoIAcgASkDMDcDMCAHIAEpAzg3AzggByABKQNANwNAIAIgBykDADcDACACIAcpAwg3AwggAiAHKQMQNwMQIAIgBykDGDcDGCACIAcpAyA3AyAgAiAHKQMoNwMoIAIgBykDMDcDMCACIAcpAzg3AzggAiAHKQNANwNAIAIgBxAXIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAIAEQGyAOIAEpAwA3AwAgDiABKQMINwMIIA4gASkDEDcDECAOIAEpAxg3AxggDiABKQMgNwMgIA4gASkDKDcDKCAOIAEpAzA3AzAgDiABKQM4NwM4IA4gASkDQDcDQCAGIA0pAwA3AwAgBiANKQMINwMIIAYgDSkDEDcDECAGIA0pAxg3AxggBiANKQMgNwMgIAYgDSkDKDcDKCAGIA0pAzA3AzAgBiANKQM4NwM4IAYgDSkDQDcDQCAGEBogBhAaIAYQGiACIA4pAwA3AwAgAiAOKQMINwMIIAIgDikDEDcDECACIA4pAxg3AxggAiAOKQMgNwMgIAIgDikDKDcDKCACIA4pAzA3AzAgAiAOKQM4NwM4IAIgDikDQDcDQCACIAsQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAMpAwA3AwAgAiADKQMINwMIIAIgAykDEDcDECACIAMpAxg3AxggAiADKQMgNwMgIAIgAykDKDcDKCACIAMpAzA3AzAgAiADKQM4NwM4IAIgAykDQDcDQCACIAsQFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyAPIAEpAwA3AwAgDyABKQMINwMIIA8gASkDEDcDECAPIAEpAxg3AxggDyABKQMgNwMgIA8gASkDKDcDKCAPIAEpAzA3AzAgDyABKQM4NwM4IA8gASkDQDcDQCACIAspAwA3AwAgAiALKQMINwMIIAIgCykDEDcDECACIAspAxg3AxggAiALKQMgNwMgIAIgCykDKDcDKCACIAspAzA3AzAgAiALKQM4NwM4IAIgCykDQDcDQCACIA8QFiABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABLABEBEAgAUHACRAVCyADIAEpAwA3AwAgAyABKQMINwMIIAMgASkDEDcDECADIAEpAxg3AxggAyABKQMgNwMgIAMgASkDKDcDKCADIAEpAzA3AzAgAyABKQM4NwM4IAMgASkDQDcDQCACIAcpAwA3AwAgAiAHKQMINwMIIAIgBykDEDcDECACIAcpAxg3AxggAiAHKQMgNwMgIAIgBykDKDcDKCACIAcpAzA3AzAgAiAHKQM4NwM4IAIgBykDQDcDQCACIAMQFyABIAIpAwA3AwAgASACKQMINwMIIAEgAikDEDcDECABIAIpAxg3AxggASACKQMgNwMgIAEgAikDKDcDKCABIAIpAzA3AzAgASACKQM4NwM4IAEgAikDQDcDQCABEBsgBSABKQMANwMAIAUgASkDCDcDCCAFIAEpAxA3AxAgBSABKQMYNwMYIAUgASkDIDcDICAFIAEpAyg3AyggBSABKQMwNwMwIAUgASkDODcDOCAFIAEpA0A3A0AgAiAFKQMANwMAIAIgBSkDCDcDCCACIAUpAxA3AxAgAiAFKQMYNwMYIAIgBSkDIDcDICACIAUpAyg3AyggAiAFKQMwNwMwIAIgBSkDODcDOCACIAUpA0A3A0AgAiAGEBYgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgASwARARAIAFBwAkQFQsgECABKQMANwMAIBAgASkDCDcDCCAQIAEpAxA3AxAgECABKQMYNwMYIBAgASkDIDcDICAQIAEpAyg3AyggECABKQMwNwMwIBAgASkDODcDOCAQIAEpA0A3A0AgAiAMKQIANwIAIAIgDCkCCDcCCCACIAwpAhA3AhAgAiAMKQIYNwIYIAIgDCkCIDcCICACIAwpAig3AiggAiAMKQIwNwIwIAIgDCkCODcCOCACIAwpAkA3AkAgAiASEBcgASACKQMANwMAIAEgAikDCDcDCCABIAIpAxA3AxAgASACKQMYNwMYIAEgAikDIDcDICABIAIpAyg3AyggASACKQMwNwMwIAEgAikDODcDOCABIAIpA0A3A0AgARAbIAogASkDADcDACAKIAEpAwg3AwggCiABKQMQNwMQIAogASkDGDcDGCAKIAEpAyA3AyAgCiABKQMoNwMoIAogASkDMDcDMCAKIAEpAzg3AzggCiABKQNANwNAIAIgCikDADcDACACIAopAwg3AwggAiAKKQMQNwMQIAIgCikDGDcDGCACIAopAyA3AyAgAiAKKQMoNwMoIAIgCikDMDcDMCACIAopAzg3AzggAiAKKQNANwNAIAIgChAVIAEgAikDADcDACABIAIpAwg3AwggASACKQMQNwMQIAEgAikDGDcDGCABIAIpAyA3AyAgASACKQMoNwMoIAEgAikDMDcDMCABIAIpAzg3AzggASACKQNANwNAAkACQCABKAIAIgRBCEYEQEEIIQgCQAJAAkADQCAIQX9qIQQgCEUNBSAEQRBPDQEgAUEEaiAEQQJ0aigCACIIIARBAnRBxAlqKAIAIgJHDQIgBCEIDAALAAtBvAsgBEEQECgMAQsgCCACTw0CCwUgBEEITw0BCwwBCyABQcAJEBYLIAogASkDADcDACAKIAEpAwg3AwggCiABKQMQNwMQIAogASkDGDcDGCAKIAEpAyA3AyAgCiABKQMoNwMoIAogASkDMDcDMCAKIAEpAzg3AzggCiABKQNANwNAIAwLIQQgACAPKQIANwIAIAAgDykCCDcCCCAAIA8pAhA3AhAgACAPKQIYNwIYIAAgDykCIDcCICAAIA8pAig3AiggACAPKQIwNwIwIAAgDykCODcCOCAAIA8pAkA3AkAgBCAQKQIANwIAIAQgECkCCDcCCCAEIBApAhA3AhAgBCAQKQIYNwIYIAQgECkCIDcCICAEIBApAig3AiggBCAQKQIwNwIwIAQgECkCODcCOCAEIBApAkA3AkAgEiAKKQIANwIAIBIgCikCCDcCCCASIAopAhA3AhAgEiAKKQIYNwIYIBIgCikCIDcCICASIAopAig3AiggEiAKKQIwNwIwIBIgCikCODcCOCASIAopAkA3AkAgESQCCwukBAEQfwJ/IwIhAyMCQZABaiQCIAFBIEcEQCADJAJBAA8LIAAoAhwQOyEBIAAoAhgiAhA7IQQgACgCFCIFEDshByAAKAIQIggQOyEJIAAoAgwiChA7IQsgACgCCCIMEDshDSAAKAIEIg4QOyEPIAAoAgAiEBA7IREgA0HIAGoiAEEAOgBEIABBCDYCACAAIAE2AgQgACAENgIIIAAgBzYCDCAAIAk2AhAgACALNgIUIAAgDTYCGCAAIA82AhwgACARNgIgIABBJGoiAUIANwIAIAFCADcCCCABQgA3AhAgAUIANwIYIAAgEAR/QQgFIA4Ef0EHBSAMBH9BBgUgCgR/QQUFIAgEf0EEBSAFBH9BAwUgAgR/QQIFQQELCwsLCwsLIgE2AgAgAyICIAApAwA3AwAgAiAAKQMINwMIIAIgACkDEDcDECACIAApAxg3AxggAiAAKQMgNwMgIAIgACkDKDcDKCACIAApAzA3AzAgAiAAKQM4NwM4IAIgACkDQDcDQAJAAkACQCACKAIAIgRBCEYEQEEIIQECQAJAAkADQCABQX9qIQAgAUUNBiAAQRBPDQEgAkEEaiAAQQJ0aigCACIBIABBAnRB7ApqKAIAIgVHDQIgACEBDAALAAtBvAsgAEEQECgMAQsgASAFSQ0CDAMLBSAEQQhJDQEMAgsMAgsgBEEBRyACKAIEQQBHckUNAEEBIQYMAQtBACEGCyADJAIgBgsLvQYBD38CQCMCIQgjAkHgAWokAiADQSBJBEBBICADECcLIAghBSACKAIcEDshCSACKAIYEDshCiACKAIUEDshCyACKAIQEDshDCACKAIMEDshDSACKAIIEDshDiACKAIEEDshDyACKAIAEDshBiAIQcgAaiIEQQA6AEQgBCADQQJ2IgI2AgAgBCAJNgIEIAQgCjYCCCAEIAs2AgwgBCAMNgIQIAQgDTYCFCAEIA42AhggBCAPNgIcIAQgBjYCICAEQSRqIgNCADcCACADQgA3AgggA0IANwIQIANCADcCGAJAAkADQAJAIAJBf2oiA0EQTw0CIARBBGogA0ECdGooAgAEQCACIQcMAQsgA0EBSwRAIAMhAgwCBSADIQcLCwsMAQtBsAsgA0EQECgLIAQgBzYCACAFIAQpAwA3AwAgBSAEKQMINwMIIAUgBCkDEDcDECAFIAQpAxg3AxggBSAEKQMgNwMgIAUgBCkDKDcDKCAFIAQpAzA3AzAgBSAEKQM4NwM4IAUgBCkDQDcDQAJAAkAgBSgCACIGQQhGBEBBCCECAkACQAJAA0AgAkF/aiEDIAJFDQYgA0EQTw0BIAVBBGogA0ECdGooAgAiByADQQJ0QewKaigCACICRw0CIAMhAgwACwALQbwLIANBEBAoDAELIAcgAkkNAgsFIAZBCEkNAQsMAQsgBkEBRgRAIAUoAgRFDQELIAQgASAFECAgBCgCBBA7IRAgBCgCCBA7IREgBCgCDBA7IRIgBCgCEBA7IQkgBCgCFBA7IQogBCgCGBA7IQsgBCgCHBA7IQwgBCgCIBA7IQ0gBCgCTBA7IQ4gBCgCUBA7IQ8gBCgCVBA7IQYgBCgCWBA7IQUgBCgCXBA7IQcgBCgCYBA7IQMgBCgCZBA7IQIgBCgCaBA7IQEgAEEBOgAAIABBBDoAASAAIA02AAIgACAMNgAGIAAgCzYACiAAIAo2AA4gACAJNgASIAAgEjYAFiAAIBE2ABogACAQNgAeIAAgATYAIiAAIAI2ACYgACADNgAqIAAgBzYALiAAIAU2ADIgACAGNgA2IAAgDzYAOiAAIA42AD4gCCQCDwsgAEEAOgAAIAgkAgsLdgECfwJAIwIhAiMCQTBqJAIgAkEoaiIDIAA2AgAgAkEsaiIAIAE2AgAgAkEYaiIBIAM2AgAgAUEBNgIEIAEgADYCCCABQQE2AgwgAkGsDzYCACACQQI2AgQgAkEANgIIIAIgATYCECACQQI2AhQgAkG8DxAsCwt1AQJ/AkAjAiEDIwJBMGokAiADQShqIgQgATYCACADQSxqIgEgAjYCACADQRhqIgIgATYCACACQQE2AgQgAiAENgIIIAJBATYCDCADQZwPNgIAIANBAjYCBCADQQA2AgggAyACNgIQIANBAjYCFCADIAAQLAsLDwAgAQR/IAAgAXAFQQALCw8AIAEEfyAAIAFuBUEACwvNAgEHfwJ/IwIhBSMCQTBqJAIgBSEEIAAoAgAiAEGPzgBLBEBBJyEGA0AgAEGQzgAQKSECIABBkM4AECohAyACQeQAECpBAXQhByACQeQAEClBAXQhCCAEIAZBfGoiAmogB0GQF2ouAAA7AAAgBCAGQX5qaiAIQZAXai4AADsAACAAQf/B1y9LBEAgAiEGIAMhAAwBBSADIQALCwVBJyECCyAAQeMASgRAIABB5AAQKUEBdCEDIABB5AAQKiEAIAQgAkF+aiICaiADQZAXai4AADsAAAsgAEEKSAR/IAQgAkF/aiIDaiAAQf8BcUEwajoAACABQQFBrL8BQQAgBCADIgBqQScgAGsQLSEAIAUkAiAABSAEIAJBfmoiA2ogAEEBdEGQF2ouAAA7AAAgAUEBQay/AUEAIAQgAyIAakEnIABrEC0hACAFJAIgAAsLC3QBBH8CQCMCIQIjAkEwaiQCIAEoAgAhAyABKAIEIQQgASgCCCEFIAIiASAAKQIANwIAIAEgACkCCDcCCCABIAApAhA3AhAgAkEYaiIAIAEpAgA3AgAgACABKQIINwIIIAAgASkCEDcCECAAIAMgBCAFEA4LC/cRAQ1/An8jAiEMIwJBEGokAiAAKAIAIQgCQAJAIAEEQCAIQQFxBEBBKyEGDAIFQQAhDkEAIQYgBSEHCwVBLSEGDAELDAELQQEhDiAFQQFqIQcLIAhBBHEEfyACIANqIQsgAwRAIAIhAUEAIQkDQCABLAAAQcABcUGAAUYgCWohCSABQQFqIgEgC0cNAAsFQQAhCQsgByADaiAJayEHQQEFQQALIREgDEEEaiEBIAAoAghFBEAgDkEBRgRAIAAoAhghDSAAKAIcIQogAUEANgIAIAZBgAFJBEAgASAGOgAAQQEhBwUgBkGAEEkEf0FAIQhBASELQQIhByABBSAGQYCABEkEfyABQWA6AABBgH8hCEECIQtBAyEHIAFBAWoFIAFBcDoAACABQYB/OgABQYB/IQhBAyELQQQhByABQQJqCwsiCSAIOgAAIAEgC2ogBkE/cUGAf3I6AAALIA0gASAHIAooAgxBA3FBAmoRAABB/wFxBEAgDCQCQQEPCwsgAEEYaiEBIBEEQCABKAIAIAIgAyAAQRxqIgAoAgAoAgxBA3FBAmoRAABB/wFxBEAgDCQCQQEPCwUgAEEcaiEACyABKAIAIAQgBSAAKAIAKAIMQQNxQQJqEQAAIQAgDCQCIAAPCyAAKAIMIgogB00EQCAOQQFGBEAgACgCGCENIAAoAhwhCiABQQA2AgAgBkGAAUkEQCABIAY6AABBASEHBSAGQYAQSQR/QUAhCEEBIQtBAiEHIAEFIAZBgIAESQR/IAFBYDoAAEGAfyEIQQIhC0EDIQcgAUEBagUgAUFwOgAAIAFBgH86AAFBgH8hCEEDIQtBBCEHIAFBAmoLCyIJIAg6AAAgASALaiAGQT9xQYB/cjoAAAsgDSABIAcgCigCDEEDcUECahEAAEH/AXEEQCAMJAJBAQ8LCyAAQRhqIQEgEQRAIAEoAgAgAiADIABBHGoiACgCACgCDEEDcUECahEAAEH/AXEEQCAMJAJBAQ8LBSAAQRxqIQALIAEoAgAgBCAFIAAoAgAoAgxBA3FBAmoRAAAhACAMJAIgAA8LIAwhCSAIQQhxRQRAIAogB2shBwJAAkACQAJAIAAsADAiCEEDRgR/QQEFIAgLQQNxDgMAAgECCyAHIQhBACEHDAILIAdBAWpBAXYhCCAHQQF2IQcMAQtBACEICyAJQQA2AgAgACgCBCIKQYABSQR/IAkgCjoAAEEBBSAKQYAQSQR/IApBBnZBH3FBQHIhD0EBIRBBAiENIAkFIApBgIAESQR/IAkgCkEMdkEPcUFgcjoAACAKQQZ2QT9xQYB/ciEPQQIhEEEDIQ0gCUEBagUgCSAKQRJ2Qf8BcUFwcjoAACAJIApBDHZBP3FBgH9yOgABIApBBnZBP3FBgH9yIQ9BAyEQQQQhDSAJQQJqCwsiCyAPOgAAIAkgEGogCkE/cUGAf3I6AAAgDQshCyAAQRhqIQ0gAEEcaiEKQQAhAAJAAkADQCAAIAdJBEAgAEEBaiEAIA0oAgAgCSALIAooAgAoAgxBA3FBAmoRAABB/wFxDQIMAQsLDAELIAwkAkEBDwsCQAJAIA5BAUcNACANKAIAIRAgCigCACESIAFBADYCACAGQYABSQRAIAEgBjoAAEEBIQcFIAZBgBBJBH9BQCEOQQEhD0ECIQcgAQUgBkGAgARJBH8gAUFgOgAAQYB/IQ5BAiEPQQMhByABQQFqBSABQXA6AAAgAUGAfzoAAUGAfyEOQQMhD0EEIQcgAUECagsLIgAgDjoAACABIA9qIAZBP3FBgH9yOgAACyAQIAEgByASKAIMQQNxQQJqEQAAQf8BcUUNAAwBCyARBEAgDSgCACACIAMgCigCACgCDEEDcUECahEAAEH/AXENAQsgDSgCACAEIAUgCigCACgCDEEDcUECahEAAEH/AXFFBEBBACEAAkACQANAIAAgCE8NASAAQQFqIQAgDSgCACAJIAsgCigCACgCDEEDcUECahEAAEH/AXFFDQAMAgsACyAMJAJBAA8LIAwkAkEBDwsLIAwkAkEBDwsgAEEEaiIPQTA2AgAgAEEwaiIQQQE6AAAgDkEBRgRAIAAoAhghDiAAKAIcIRIgAUEANgIAIAZBgAFJBEAgASAGOgAAQQEhCAUgBkGAEEkEf0FAIQtBASENQQIhCCABBSAGQYCABEkEfyABQWA6AABBgH8hC0ECIQ1BAyEIIAFBAWoFIAFBcDoAACABQYB/OgABQYB/IQtBAyENQQQhCCABQQJqCwsiCSALOgAAIAEgDWogBkE/cUGAf3I6AAALIA4gASAIIBIoAgxBA3FBAmoRAABB/wFxBEAgDCQCQQEPCwsgEQRAIAAoAhggAiADIAAoAhwoAgxBA3FBAmoRAABB/wFxBEAgDCQCQQEPCwsgCiAHayECAkACQAJAAkAgECwAACIDQQNGBH9BAQUgAwtBA3EOAwACAQILIAIhA0EAIQIMAgsgAkEBakEBdiEDIAJBAXYhAgwBC0EAIQMLIAFBADYCACAPKAIAIgZBgAFJBH8gASAGOgAAQQEFIAZBgBBJBH8gBkEGdkEfcUFAciEIQQEhC0ECIQcgAQUgBkGAgARJBH8gASAGQQx2QQ9xQWByOgAAIAZBBnZBP3FBgH9yIQhBAiELQQMhByABQQFqBSABIAZBEnZB/wFxQXByOgAAIAEgBkEMdkE/cUGAf3I6AAEgBkEGdkE/cUGAf3IhCEEDIQtBBCEHIAFBAmoLCyIJIAg6AAAgASALaiAGQT9xQYB/cjoAACAHCyEJIABBGGohByAAQRxqIQZBACEAAkACQANAIAAgAkkEQCAAQQFqIQAgBygCACABIAkgBigCACgCDEEDcUECahEAAEH/AXENAgwBCwsMAQsgDCQCQQEPCyAHKAIAIAQgBSAGKAIAKAIMQQNxQQJqEQAAQf8BcQRAIAwkAkEBDwVBACEACwJAAkADQCAAIANPDQEgAEEBaiEAIAcoAgAgASAJIAYoAgAoAgxBA3FBAmoRAABB/wFxRQ0ADAILAAsgDCQCQQAPCyAMJAJBAQsLiwEBBn8CQCMCIQEjAkEwaiQCIAAoAgQhAyAAKAIIIQQgACgCDCEFIAAoAhAhBiABQRhqIgIgACgCADYCACACIAM2AgQgASIAIAI2AgAgAEEBNgIEIABBADYCCCAAQfyxATYCECAAQQA2AhQgAUEgaiIBIAQ2AgAgASAFNgIEIAEgBjYCCCAAIAEQLAsLdgECfwJAIwIhAiMCQTBqJAIgAkEoaiIDIAA2AgAgAkEsaiIAIAE2AgAgAkEYaiIBIAM2AgAgAUEBNgIEIAEgADYCCCABQQE2AgwgAkHIDzYCACACQQI2AgQgAkEANgIIIAIgATYCECACQQI2AhQgAkHYDxAsCwswAQJ/An8jAiEBIwJBEGokAiABIgIgACgCPBA4NgIAQQYgAhABEDMhACABJAIgAAsLawEDfwJ/IwIhBCMCQSBqJAIgBCEDIARBEGohBSAAQQM2AiQgACgCAEHAAHFFBEAgAyAAKAI8NgIAIANBk6gBNgIEIAMgBTYCCEE2IAMQBARAIABBfzoASwsLIAAgASACEDchACAEJAIgAAsLZQECfwJ/IwIhBCMCQSBqJAIgBCIDIAAoAjw2AgAgA0EANgIEIAMgATYCCCADIARBFGoiADYCDCADIAI2AhBBjAEgAxACEDNBAEgEfyAAQX82AgBBfwUgACgCAAshACAEJAIgAAsLGgAgAEGAYEsEfxA0QQAgAGs2AgBBfwUgAAsLCAAQNUHAAGoLBAAQNgsFAEHgEAv9AgELfwJ/IwIhBSMCQTBqJAIgBUEQaiEGIAVBIGoiAyAAQRxqIgkoAgAiBDYCACADIABBFGoiCigCACAEayIENgIEIAMgATYCCCADIAI2AgwgBSIBIABBPGoiDCgCADYCACABIAM2AgQgAUECNgIIAkACQCAEIAJqIgRBkgEgARAGEDMiAUYNAEECIQcDQCABQQBOBEAgBCABayEEIANBCGohCCABIAMoAgQiDUsiCwRAIAghAwsgC0EfdEEfdSAHaiEHIAMgAygCACABIAsEfyANBUEAC2siAWo2AgAgA0EEaiIIIAgoAgAgAWs2AgAgBiAMKAIANgIAIAYgAzYCBCAGIAc2AgggBEGSASAGEAYQMyIBRg0CDAELCyAAQQA2AhAgCUEANgIAIApBADYCACAAIAAoAgBBIHI2AgAgB0ECRgR/QQAFIAIgAygCBGsLIQIMAQsgACAAKAIsIgEgACgCMGo2AhAgCSABNgIAIAogATYCAAsgBSQCIAILCwQAIAALUAECfwJ/IAIEfwNAIAAsAAAiAyABLAAAIgRGBEAgAEEBaiEAIAFBAWohAUEAIAJBf2oiAkUNAxoMAQsLIANB/wFxIARB/wFxawVBAAsLIgALnQIBBH8CfyAAIAJqIQQgAUH/AXEhASACQcMATgRAA0AgAEEDcQRAIAAgAToAACAAQQFqIQAMAQsLIARBfHEiBUHAAGshBiABIAFBCHRyIAFBEHRyIAFBGHRyIQMDQCAAIAZMBEAgACADNgIAIAAgAzYCBCAAIAM2AgggACADNgIMIAAgAzYCECAAIAM2AhQgACADNgIYIAAgAzYCHCAAIAM2AiAgACADNgIkIAAgAzYCKCAAIAM2AiwgACADNgIwIAAgAzYCNCAAIAM2AjggACADNgI8IABBwABqIQAMAQsLA0AgACAFSARAIAAgAzYCACAAQQRqIQAMAQsLCwNAIAAgBEgEQCAAIAE6AAAgAEEBaiEADAELCyAEIAJrCwsrACAAQf8BcUEYdCAAQQh1Qf8BcUEQdHIgAEEQdUH/AXFBCHRyIABBGHZyC8kDAQN/An8gAkGAwABOBEAgACABIAIQAw8LIAAhBCAAIAJqIQMgAEEDcSABQQNxRgRAA0AgAEEDcQRAIAJFBEAgBA8LIAAgASwAADoAACAAQQFqIQAgAUEBaiEBIAJBAWshAgwBCwsgA0F8cSICQcAAayEFA0AgACAFTARAIAAgASgCADYCACAAIAEoAgQ2AgQgACABKAIINgIIIAAgASgCDDYCDCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCAAIAEoAhw2AhwgACABKAIgNgIgIAAgASgCJDYCJCAAIAEoAig2AiggACABKAIsNgIsIAAgASgCMDYCMCAAIAEoAjQ2AjQgACABKAI4NgI4IAAgASgCPDYCPCAAQcAAaiEAIAFBwABqIQEMAQsLA0AgACACSARAIAAgASgCADYCACAAQQRqIQAgAUEEaiEBDAELCwUgA0EEayECA0AgACACSARAIAAgASwAADoAACAAIAEsAAE6AAEgACABLAACOgACIAAgASwAAzoAAyAAQQRqIQAgAUEEaiEBDAELCwsDQCAAIANIBEAgACABLAAAOgAAIABBAWohACABQQFqIQEMAQsLIAQLCwsAAn9BABAAQQALCwsAAn9BARAAQQALCwsAAn9BAhAAQQALCwu9DA0AQYAIC+QBAQAAAAAAAACCgAAAAAAAAIqAAAAAAACAAIAAgAAAAICLgAAAAAAAAAEAAIAAAAAAgYAAgAAAAIAJgAAAAAAAgIoAAAAAAAAAiAAAAAAAAAAJgACAAAAAAAoAAIAAAAAAi4AAgAAAAACLAAAAAAAAgImAAAAAAACAA4AAAAAAAIACgAAAAAAAgIAAAAAAAACACoAAAAAAAAAKAACAAAAAgIGAAIAAAACAgIAAAAAAAIABAACAAAAAAAiAAIAAAACACAAAAC/8///+////////////////////////////////////AEGICgsFAQAAAAEAQdAKCzyxCQAAIgAAAPYCAABYCQAAWQAAADwBAAAIAAAAQUE20Ixe0r87oEiv5tyuuv7///////////////////8AQbALC6kBMwoAACIAAADwAgAA0wkAAGAAAAA9AAAA0wkAAGAAAACBAAAA0wkAAGAAAACLAAAA0wkAAGAAAACTAAAA0wkAAGAAAACbAAAA0wkAAGAAAADvAAAA0wkAAGAAAAD3AAAA0wkAAGAAAAC6AAAA0wkAAGAAAABeAQAA0wkAAGAAAAAxAQAA0wkAAGAAAAAyAQAA0wkAAGAAAAA4AQAA0wkAAGAAAAA9AQAAAQBBoA0LadMJAABgAAAAbgMAAFUKAABcAAAAEAAAADMKAAAiAAAA9gIAANMJAABgAAAAHgQAABQLAAAoAAAAsQoAAGMAAABCAAAAsQoAAGMAAAA9AAAAsQoAAGMAAABQAAAAsQoAAGMAAABSAAAAAQBB0A4LAQEAQZgPC00BAAAAXgsAACAAAAB+CwAAEgAAAFgMAAAGAAAAXgwAACIAAAA8CwAAIgAAAKACAACADAAAFgAAAJYMAAANAAAAPAsAACIAAACmAgAABQBB8A8LAQEAQYgQCw4BAAAAAgAAALRfAAAABABBoBALAQEAQa8QCwUK/////wBBnBILAiRZAEHUEgvPBuQHAAAvaG9tZS9tYWNpZWovLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdGlueS1rZWNjYWstMS4yLjEvc3JjL2xpYi5ycy9jaGVja291dC9zcmMvbGliY29yZS9zbGljZS9tb2QucnMvaG9tZS9tYWNpZWovLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdGlueS1zZWNwMjU2azEtMC4xLjAvc3JjL2JpZ19udW0ucnMvY2hlY2tvdXQvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzL2hvbWUvbWFjaWVqLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rpbnktc2VjcDI1NmsxLTAuMS4wL3NyYy9uYWYucnMvaG9tZS9tYWNpZWovLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdGlueS1zZWNwMjU2azEtMC4xLjAvc3JjL2VjX3BvaW50X2cucnNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlL2NoZWNrb3V0L3NyYy9saWJjb3JlL3NsaWNlL21vZC5yc2luZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggc2xpY2UgaW5kZXggc3RhcnRzIGF0ICBidXQgZW5kcyBhdCA=', 'base64'); diff --git a/js/packages/api/local/ethkey/index.js b/js/packages/api/local/ethkey/index.js deleted file mode 100644 index 07ca34ba1..000000000 --- a/js/packages/api/local/ethkey/index.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import workerPool from './workerPool'; - -export function createKeyObject (key, password) { - return workerPool.action('createKeyObject', { key, password }) - .then((obj) => JSON.parse(obj)); -} - -export function decryptPrivateKey (keyObject, password) { - return workerPool - .action('decryptPrivateKey', { keyObject, password }) - .then((privateKey) => { - if (privateKey) { - return Buffer.from(privateKey); - } - - return null; - }); -} - -export function phraseToAddress (phrase) { - return phraseToWallet(phrase) - .then((wallet) => wallet.address); -} - -export function phraseToWallet (phrase) { - return workerPool.action('phraseToWallet', phrase); -} - -export function verifySecret (secret) { - return workerPool.action('verifySecret', secret); -} diff --git a/js/packages/api/local/ethkey/index.spec.js b/js/packages/api/local/ethkey/index.spec.js deleted file mode 100644 index ce4cc29df..000000000 --- a/js/packages/api/local/ethkey/index.spec.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { randomPhrase } from '@parity/wordlist'; -import { phraseToAddress, phraseToWallet } from './'; - -// TODO: Skipping until Node.js 8.0 comes out and we can test WebAssembly -describe.skip('api/local/ethkey', () => { - describe('phraseToAddress', function () { - this.timeout(30000); - - it('generates a valid address', () => { - const phrase = randomPhrase(12); - - return phraseToAddress(phrase).then((address) => { - expect(address.length).to.be.equal(42); - expect(address.slice(0, 4)).to.be.equal('0x00'); - }); - }); - - it('generates valid address for empty phrase', () => { - return phraseToAddress('').then((address) => { - expect(address).to.be.equal('0x00a329c0648769a73afac7f9381e08fb43dbea72'); - }); - }); - }); - - describe('phraseToWallet', function () { - this.timeout(30000); - - it('generates a valid wallet object', () => { - const phrase = randomPhrase(12); - - return phraseToWallet(phrase).then((wallet) => { - expect(wallet.address.length).to.be.equal(42); - expect(wallet.secret.length).to.be.equal(66); - expect(wallet.public.length).to.be.equal(130); - - expect(wallet.address.slice(0, 4)).to.be.equal('0x00'); - expect(wallet.secret.slice(0, 2)).to.be.equal('0x'); - expect(wallet.public.slice(0, 2)).to.be.equal('0x'); - }); - }); - }); -}); diff --git a/js/packages/api/local/ethkey/worker.js b/js/packages/api/local/ethkey/worker.js deleted file mode 100644 index 3b88d4381..000000000 --- a/js/packages/api/local/ethkey/worker.js +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { bytesToHex } from '../../util/format'; -import { extern, slice } from './ethkey.js'; - -const isWorker = typeof self !== 'undefined'; - -// Stay compatible between environments -if (!isWorker) { - const scope = typeof global === 'undefined' ? window : global; - - scope.self = scope; -} - -// keythereum should never be used outside of the browser -let keythereum = require('keythereum'); - -if (isWorker) { - keythereum = self.keythereum; -} - -function route ({ action, payload }) { - if (action in actions) { - return actions[action](payload); - } - - return null; -} - -const input = slice(extern._input_ptr(), 1024); -const secret = slice(extern._secret_ptr(), 32); -const publicKey = slice(extern._public_ptr(), 64); -const address = slice(extern._address_ptr(), 20); - -extern._ecpointg(); - -const actions = { - phraseToWallet (phrase) { - const phraseUtf8 = Buffer.from(phrase, 'utf8'); - - if (phraseUtf8.length > input.length) { - throw new Error('Phrase is too long!'); - } - - input.set(phraseUtf8); - - extern._brain(phraseUtf8.length); - - const wallet = { - secret: bytesToHex(secret), - public: bytesToHex(publicKey), - address: bytesToHex(address) - }; - - return wallet; - }, - - verifySecret (key) { - const keyBuf = Buffer.from(key.slice(2), 'hex'); - - secret.set(keyBuf); - - return extern._verify_secret(); - }, - - createKeyObject ({ key, password }) { - key = Buffer.from(key); - password = Buffer.from(password); - - const iv = keythereum.crypto.randomBytes(16); - const salt = keythereum.crypto.randomBytes(32); - const keyObject = keythereum.dump(password, key, salt, iv); - - return JSON.stringify(keyObject); - }, - - decryptPrivateKey ({ keyObject, password }) { - password = Buffer.from(password); - - try { - const key = keythereum.recover(password, keyObject); - - // Convert to array to safely send from the worker - return Array.from(key); - } catch (e) { - return null; - } - } -}; - -self.onmessage = function ({ data }) { - try { - const result = route(data); - - postMessage([null, result]); - } catch (err) { - console.error(err); - postMessage([err.toString(), null]); - } -}; - -// Emulate a web worker in Node.js -class KeyWorker { - postMessage (data) { - // Force async - setTimeout(() => { - try { - const result = route(data); - - this.onmessage({ data: [null, result] }); - } catch (err) { - this.onmessage({ data: [err, null] }); - } - }, 0); - } - - onmessage (event) { - // no-op to be overriden - } -} - -if (exports != null) { - exports.KeyWorker = KeyWorker; -} diff --git a/js/packages/api/local/ethkey/workerPool.js b/js/packages/api/local/ethkey/workerPool.js deleted file mode 100644 index d7db73b41..000000000 --- a/js/packages/api/local/ethkey/workerPool.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -// Allow a web worker in the browser, with a fallback for Node.js -const hasWebWorkers = typeof Worker !== 'undefined'; -const KeyWorker = hasWebWorkers ? require('worker-loader!./worker') - : require('./worker').KeyWorker; - -class WorkerContainer { - busy = false; - _worker = new KeyWorker(); - - action (action, payload) { - if (this.busy) { - throw new Error('Cannot issue an action on a busy worker!'); - } - - this.busy = true; - - return new Promise((resolve, reject) => { - this._worker.postMessage({ action, payload }); - this._worker.onmessage = ({ data }) => { - const [err, result] = data; - - this.busy = false; - - if (err) { - // `err` ought to be a String - reject(new Error(err)); - } else { - resolve(result); - } - }; - }); - } -} - -class WorkerPool { - pool = [ - new WorkerContainer(), - new WorkerContainer() - ]; - - queue = []; - - _getContainer () { - return this.pool.find((container) => !container.busy); - } - - action (action, payload) { - let container = this.pool.find((container) => !container.busy); - - let promise; - - // const start = Date.now(); - - if (container) { - promise = container.action(action, payload); - } else { - promise = new Promise((resolve, reject) => { - this.queue.push([action, payload, resolve]); - }); - } - - return promise - .catch((err) => { - this.processQueue(); - - throw err; - }) - .then((result) => { - this.processQueue(); - - // console.log('Work done in ', Date.now() - start); - - return result; - }); - } - - processQueue () { - let container = this._getContainer(); - - while (container && this.queue.length > 0) { - const [action, payload, resolve] = this.queue.shift(); - - resolve(container.action(action, payload)); - container = this._getContainer(); - } - } -} - -export default new WorkerPool(); diff --git a/js/packages/api/local/index.js b/js/packages/api/local/index.js deleted file mode 100644 index 190a38ea4..000000000 --- a/js/packages/api/local/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default null; diff --git a/js/packages/api/local/localAccountsMiddleware.js b/js/packages/api/local/localAccountsMiddleware.js deleted file mode 100644 index c8e767f89..000000000 --- a/js/packages/api/local/localAccountsMiddleware.js +++ /dev/null @@ -1,284 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import EthereumTx from 'ethereumjs-tx'; -import accounts from './accounts'; -import transactions from './transactions'; -import { Middleware } from '../transport'; -import { inNumber16 } from '../format/input'; -import { phraseToWallet, phraseToAddress, verifySecret } from './ethkey'; -import { randomPhrase } from '@parity/wordlist'; - -export default class LocalAccountsMiddleware extends Middleware { - constructor (transport) { - super(transport); - - const register = this.register.bind(this); - - register('eth_accounts', () => { - return accounts.accountAddresses(); - }); - - register('eth_coinbase', () => { - return accounts.lastAddress; - }); - - register('parity_accountsInfo', () => { - return accounts.map(({ name }) => { - return { name }; - }); - }); - - register('parity_allAccountsInfo', () => { - return accounts.map(({ name, meta, uuid }) => { - return { name, meta, uuid }; - }); - }); - - register('parity_changePassword', ([address, oldPassword, newPassword]) => { - const account = accounts.get(address); - - return account - .decryptPrivateKey(oldPassword) - .then((privateKey) => { - if (!privateKey) { - return false; - } - - account.changePassword(privateKey, newPassword); - - return true; - }); - }); - - register('parity_checkRequest', ([id]) => { - return transactions.hash(id) || Promise.resolve(null); - }); - - register('parity_dappsList', () => { - return []; - }); - - register('parity_defaultAccount', () => { - return accounts.dappsDefaultAddress; - }); - - register('parity_exportAccount', ([address, password]) => { - const account = accounts.get(address); - - if (!password) { - password = ''; - } - - return account.isValidPassword(password) - .then((isValid) => { - if (!isValid) { - throw new Error('Invalid password'); - } - - return account.export(); - }); - }); - - register('parity_generateSecretPhrase', () => { - return randomPhrase(12); - }); - - register('parity_getNewDappsAddresses', () => { - return accounts.accountAddresses(); - }); - - register('parity_getNewDappsDefaultAddress', () => { - return accounts.dappsDefaultAddress; - }); - - register('parity_hardwareAccountsInfo', () => { - return {}; - }); - - register('parity_newAccountFromPhrase', ([phrase, password]) => { - return phraseToWallet(phrase) - .then((wallet) => { - return accounts.create(wallet.secret, password); - }); - }); - - register('parity_newAccountFromSecret', ([secret, password]) => { - return verifySecret(secret) - .then((isValid) => { - if (!isValid) { - throw new Error('Invalid secret key'); - } - - return accounts.create(secret, password); - }); - }); - - register('parity_newAccountFromWallet', ([json, password]) => { - if (!password) { - password = ''; - } - - return accounts.restoreFromWallet(JSON.parse(json), password); - }); - - register('parity_setAccountMeta', ([address, meta]) => { - accounts.getLazyCreate(address).meta = meta; - - return true; - }); - - register('parity_setAccountName', ([address, name]) => { - accounts.getLazyCreate(address).name = name; - - return true; - }); - - register('parity_setNewDappsDefaultAddress', ([address]) => { - accounts.dappsDefaultAddress = address; - - return true; - }); - - register('parity_postTransaction', ([tx]) => { - if (!tx.from) { - tx.from = accounts.lastAddress; - } - - tx.nonce = null; - tx.condition = null; - - return transactions.add(tx); - }); - - register('parity_phraseToAddress', ([phrase]) => { - return phraseToAddress(phrase); - }); - - register('parity_useLocalAccounts', () => { - return true; - }); - - register('parity_listGethAccounts', () => { - return []; - }); - - register('parity_listOpenedVaults', () => { - return []; - }); - - register('parity_listRecentDapps', () => { - return {}; - }); - - register('parity_listVaults', () => { - return []; - }); - - register('parity_wsUrl', () => { - // This is a hack, will be replaced by a `hostname` setting on the node itself - return `${window.location.hostname}:8546`; - }); - - register('parity_dappsUrl', () => { - // This is a hack, will be replaced by a `hostname` setting on the node itself - return `${window.location.hostname}:8545`; - }); - - register('parity_hashContent', () => { - throw new Error('Functionality unavailable on a public wallet.'); - }); - - register('parity_killAccount', ([address, password]) => { - return accounts.remove(address, password); - }); - - register('parity_testPassword', ([address, password]) => { - const account = accounts.get(address); - - return account.isValidPassword(password); - }); - - register('parity_upgradeReady', () => { - return false; - }); - - register('signer_confirmRequest', ([id, modify, password]) => { - const { - gasPrice, - gas: gasLimit, - from, - to, - value, - data - } = Object.assign(transactions.get(id), modify); - - transactions.lock(id); - - const account = accounts.get(from); - - return Promise.all([ - this.rpcRequest('parity_nextNonce', [from]), - account.decryptPrivateKey(password) - ]) - .catch((err) => { - transactions.unlock(id); - - // transaction got unlocked, can propagate rejection further - throw err; - }) - .then(([nonce, privateKey]) => { - if (!privateKey) { - transactions.unlock(id); - - throw new Error('Invalid password'); - } - - const tx = new EthereumTx({ - nonce, - to, - data, - gasLimit: inNumber16(gasLimit), - gasPrice: inNumber16(gasPrice), - value: inNumber16(value) - }); - - tx.sign(privateKey); - - const serializedTx = `0x${tx.serialize().toString('hex')}`; - - return this.rpcRequest('eth_sendRawTransaction', [serializedTx]); - }) - .then((hash) => { - transactions.confirm(id, hash); - - return {}; - }); - }); - - register('signer_generateAuthorizationToken', () => { - return ''; - }); - - register('signer_rejectRequest', ([id]) => { - return transactions.reject(id); - }); - - register('signer_requestsToConfirm', () => { - return transactions.requestsToConfirm(); - }); - } -} diff --git a/js/packages/api/local/localAccountsMiddleware.spec.js b/js/packages/api/local/localAccountsMiddleware.spec.js deleted file mode 100644 index 9b065bf22..000000000 --- a/js/packages/api/local/localAccountsMiddleware.spec.js +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import LocalAccountsMiddleware from './localAccountsMiddleware'; -import JsonRpcBase from '../transport/jsonRpcBase'; - -const RPC_RESPONSE = Symbol('RPC response'); -const ADDRESS = '0x00a329c0648769a73afac7f9381e08fb43dbea72'; -const SECRET = '0x4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7'; -const PASSWORD = 'password'; - -const FOO_PHRASE = 'foobar'; -const FOO_PASSWORD = 'foopass'; -const FOO_ADDRESS = '0x007ef7ac1058e5955e366ab9d6b6c4ebcc937e7e'; - -class MockedTransport extends JsonRpcBase { - _execute (method, params) { - return RPC_RESPONSE; - } -} - -// Skip till all CI runs on Node 8+ -describe.skip('api/local/LocalAccountsMiddleware', function () { - this.timeout(30000); - - let transport; - - beforeEach(() => { - transport = new MockedTransport(); - transport.addMiddleware(LocalAccountsMiddleware); - - // Same as `parity_newAccountFromPhrase` with empty phrase - return transport - .execute('parity_newAccountFromSecret', [SECRET, PASSWORD]) - .catch((_err) => { - // Ignore the error - all instances of LocalAccountsMiddleware - // share account storage - }); - }); - - it('registers all necessary methods', () => { - return Promise - .all([ - 'eth_accounts', - 'eth_coinbase', - 'parity_accountsInfo', - 'parity_allAccountsInfo', - 'parity_changePassword', - 'parity_checkRequest', - 'parity_defaultAccount', - 'parity_generateSecretPhrase', - 'parity_getNewDappsAddresses', - 'parity_hardwareAccountsInfo', - 'parity_newAccountFromPhrase', - 'parity_newAccountFromSecret', - 'parity_setAccountMeta', - 'parity_setAccountName', - 'parity_postTransaction', - 'parity_phraseToAddress', - 'parity_useLocalAccounts', - 'parity_listGethAccounts', - 'parity_listOpenedVaults', - 'parity_listRecentDapps', - 'parity_listVaults', - 'parity_killAccount', - 'parity_testPassword', - 'signer_confirmRequest', - 'signer_rejectRequest', - 'signer_requestsToConfirm' - ].map((method) => { - return transport - .execute(method) - .then((result) => { - expect(result).not.to.be.equal(RPC_RESPONSE); - }) - // Some errors are expected here since we are calling methods - // without parameters. - .catch((_) => {}); - })); - }); - - it('allows non-registered methods through', () => { - return transport - .execute('eth_getBalance', ['0x407d73d8a49eeb85d32cf465507dd71d507100c1']) - .then((result) => { - expect(result).to.be.equal(RPC_RESPONSE); - }); - }); - - it('can handle `eth_accounts`', () => { - return transport - .execute('eth_accounts') - .then((accounts) => { - expect(accounts.length).to.be.equal(1); - expect(accounts[0]).to.be.equal(ADDRESS); - }); - }); - - it('can handle `parity_defaultAccount`', () => { - return transport - .execute('parity_defaultAccount') - .then((address) => { - expect(address).to.be.equal(ADDRESS); - }); - }); - - it('can handle `parity_phraseToAddress`', () => { - return transport - .execute('parity_phraseToAddress', ['']) - .then((address) => { - expect(address).to.be.equal(ADDRESS); - - return transport.execute('parity_phraseToAddress', [FOO_PHRASE]); - }) - .then((address) => { - expect(address).to.be.equal(FOO_ADDRESS); - }); - }); - - it('can create and kill an account', () => { - return transport - .execute('parity_newAccountFromPhrase', [FOO_PHRASE, FOO_PASSWORD]) - .then((address) => { - expect(address).to.be.equal(FOO_ADDRESS); - - return transport.execute('eth_accounts'); - }) - .then((accounts) => { - expect(accounts.length).to.be.equal(2); - expect(accounts.includes(FOO_ADDRESS)).to.be.true; - - return transport.execute('parity_killAccount', [FOO_ADDRESS, FOO_PASSWORD]); - }) - .then((result) => { - expect(result).to.be.true; - - return transport.execute('eth_accounts'); - }) - .then((accounts) => { - expect(accounts.length).to.be.equal(1); - expect(accounts.includes(FOO_ADDRESS)).to.be.false; - }); - }); -}); diff --git a/js/packages/api/local/transactions.js b/js/packages/api/local/transactions.js deleted file mode 100644 index 421e73012..000000000 --- a/js/packages/api/local/transactions.js +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { toHex } from '../util/format'; -import { TransportError } from '../transport'; - -const AWAITING = Symbol('awaiting'); -const LOCKED = Symbol('locked'); -const CONFIRMED = Symbol('confirmed'); -const REJECTED = Symbol('rejected'); - -class Transactions { - constructor () { - this.reset(); - } - - // should only really be needed in the constructor and tests - reset () { - this._id = 1; - this._states = {}; - } - - nextId () { - return toHex(this._id++); - } - - add (tx) { - const id = this.nextId(); - - this._states[id] = { - status: AWAITING, - transaction: tx - }; - - return id; - } - - get (id) { - const state = this._states[id]; - - if (!state || state.status !== AWAITING) { - return null; - } - - return state.transaction; - } - - lock (id) { - const state = this._states[id]; - - if (!state || state.status !== AWAITING) { - throw new Error('Trying to lock an invalid transaction'); - } - - state.status = LOCKED; - } - - unlock (id) { - const state = this._states[id]; - - if (!state || state.status !== LOCKED) { - throw new Error('Trying to unlock an invalid transaction'); - } - - state.status = AWAITING; - } - - hash (id) { - const state = this._states[id]; - - if (!state) { - return null; - } - - switch (state.status) { - case REJECTED: - throw TransportError.requestRejected(); - case CONFIRMED: - return state.hash; - default: - return null; - } - } - - confirm (id, hash) { - const state = this._states[id]; - const status = state ? state.status : null; - - switch (status) { - case AWAITING: break; - case LOCKED: break; - default: throw new Error('Trying to confirm an invalid transaction'); - } - - state.hash = hash; - state.status = CONFIRMED; - } - - reject (id) { - const state = this._states[id]; - - if (!state) { - return false; - } - - state.status = REJECTED; - - return true; - } - - requestsToConfirm () { - const result = []; - - Object.keys(this._states).forEach((id) => { - const state = this._states[id]; - - if (state.status === AWAITING) { - result.push({ - id, - origin: { - signer: '0x0' - }, - payload: { - sendTransaction: state.transaction - } - }); - } - }); - - return result; - } -} - -export default new Transactions(); diff --git a/js/packages/api/local/transactions.spec.js b/js/packages/api/local/transactions.spec.js deleted file mode 100644 index 65f2d8ddc..000000000 --- a/js/packages/api/local/transactions.spec.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import transactions from './transactions'; -import { TransportError } from '../transport/error'; - -const DUMMY_TX = 'dummy'; - -describe('api/local/transactions', () => { - beforeEach(() => { - transactions.reset(); - }); - - it('can store transactions', () => { - const id1 = transactions.add(DUMMY_TX); - const id2 = transactions.add(DUMMY_TX); - const requests = transactions.requestsToConfirm(); - - expect(id1).to.be.equal('0x1'); - expect(id2).to.be.equal('0x2'); - expect(requests.length).to.be.equal(2); - expect(requests[0].id).to.be.equal(id1); - expect(requests[1].id).to.be.equal(id2); - expect(requests[0].payload.sendTransaction).to.be.equal(DUMMY_TX); - expect(requests[1].payload.sendTransaction).to.be.equal(DUMMY_TX); - }); - - it('can confirm transactions', () => { - const id1 = transactions.add(DUMMY_TX); - const id2 = transactions.add(DUMMY_TX); - - const hash1 = '0x1111111111111111111111111111111111111111'; - const hash2 = '0x2222222222222222222222222222222222222222'; - - transactions.confirm(id1, hash1); - transactions.confirm(id2, hash2); - - const requests = transactions.requestsToConfirm(); - - expect(requests.length).to.be.equal(0); - expect(transactions.hash(id1)).to.be.equal(hash1); - expect(transactions.hash(id2)).to.be.equal(hash2); - }); - - it('can reject transactions', () => { - const id = transactions.add(DUMMY_TX); - - transactions.reject(id); - - const requests = transactions.requestsToConfirm(); - - expect(requests.length).to.be.equal(0); - expect(() => transactions.hash(id)).to.throw(TransportError); - }); - - it('can lock and confirm transactions', () => { - const id = transactions.add(DUMMY_TX); - const hash = '0x1111111111111111111111111111111111111111'; - - transactions.lock(id); - - const requests = transactions.requestsToConfirm(); - - expect(requests.length).to.be.equal(0); - expect(transactions.get(id)).to.be.null; - expect(transactions.hash(id)).to.be.null; - - transactions.confirm(id, hash); - - expect(transactions.hash(id)).to.be.equal(hash); - }); -}); diff --git a/js/packages/api/package.json b/js/packages/api/package.json deleted file mode 100644 index 9efc70e16..000000000 --- a/js/packages/api/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@parity/api", - "description": "The Parity Promise-based API library for interfacing with Ethereum over RPC", - "version": "0.0.0", - "main": "index.js", - "author": "Parity Team ", - "maintainers": [ - "Jaco Greeff", - "Nicolas Gotchac" - ], - "contributors": [], - "license": "GPL-3.0", - "repository": { - "type": "git", - "url": "git+https://github.com/paritytech/parity.git" - }, - "keywords": [ - "Ethereum", - "API", - "RPC", - "Parity", - "Promise" - ], - "scripts": { - }, - "devDependencies": { - }, - "dependencies": { - "@parity/abi": "file:../abi", - "@parity/jsonrpc": "file:../jsonrpc", - "bignumber.js": "3.0.1", - "blockies": "0.0.2", - "es6-error": "4.0.0", - "ethereumjs-tx": "1.2.5", - "eventemitter3": "2.0.2", - "js-sha3": "0.5.5", - "keythereum": "0.4.6", - "node-fetch": "1.6.3", - "secp256k1": "3.2.5" - } -} diff --git a/js/packages/api/provider/http.js b/js/packages/api/provider/http.js deleted file mode 100644 index b59f4bf8a..000000000 --- a/js/packages/api/provider/http.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Http as Transport } from '../transport'; - -export default class Http extends Transport { - send = (method, params, callback) => { - this - ._execute(method, params) - .then((result) => callback(null, result)) - .catch((error) => callback(error)); - } -} diff --git a/js/packages/api/provider/index.js b/js/packages/api/provider/index.js deleted file mode 100644 index 67a2af856..000000000 --- a/js/packages/api/provider/index.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Ws from './ws'; - -export Http from './http'; -export PostMessage from './postMessage'; -export PromiseProvider from './promise'; - -const WsSecure = Ws; - -export { - Ws, - WsSecure -}; diff --git a/js/packages/api/provider/postMessage.js b/js/packages/api/provider/postMessage.js deleted file mode 100644 index 56f37e991..000000000 --- a/js/packages/api/provider/postMessage.js +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class PostMessage { - id = 0; - _messages = {}; - - constructor (token, destination) { - this._token = token; - this._destination = destination; - - window.addEventListener('message', this.receiveMessage, false); - } - - addMiddleware () { - } - - _send (data) { - this._destination.postMessage(data, '*'); - } - - send = (method, params, callback) => { - const id = ++this.id; - - this._messages[id] = { callback }; - this._send({ - id, - from: this._token, - method, - params, - token: this._token - }); - } - - subscribe = (api, callback, params) => { - // console.log('paritySubscribe', JSON.stringify(params), api, callback); - return new Promise((resolve, reject) => { - const id = ++this.id; - - this._messages[id] = { callback, resolve, reject, subscription: true, initial: true }; - this._send({ - id, - from: this._token, - api, - params, - token: this._token - }); - }); - } - - unsubscribe = (subId) => { - return new Promise((resolve, reject) => { - const id = ++this.id; - - this._messages[id] = { callback: (e, v) => e ? reject(e) : resolve(v) }; - this._send({ - id, - from: this._token, - subId, - token: this._token - }); - }); - } - - unsubscribeAll () { - return this.unsubscribe('*'); - } - - receiveMessage = ({ data: { id, error, from, token, result }, origin, source }) => { - if (from !== 'shell' || token !== this._token) { - return; - } - - if (error) { - console.error(from, error); - } - - if (this._messages[id].subscription) { - // console.log('subscription', result, 'initial?', this._messages[id].initial); - this._messages[id].initial - ? this._messages[id].resolve(result) - : this._messages[id].callback(error && new Error(error), result); - this._messages[id].initial = false; - } else { - this._messages[id].callback(error && new Error(error), result); - this._messages[id] = null; - } - } -} diff --git a/js/packages/api/provider/promise.js b/js/packages/api/provider/promise.js deleted file mode 100644 index 35da3d8c6..000000000 --- a/js/packages/api/provider/promise.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class PromiseProvider { - constructor (provider) { - this.provider = provider; - } - - send = (method, ...params) => { - if (!this.provider.send) { - // old-style transport interface for backwards compatibility - return this.provider.execute(method, params); - } - - return new Promise((resolve, reject) => { - this.provider.send(method, params, (error, result) => { - if (error) { - reject(error); - } else { - resolve(result); - } - }); - }); - } -} diff --git a/js/packages/api/provider/ws.js b/js/packages/api/provider/ws.js deleted file mode 100644 index 2a399d309..000000000 --- a/js/packages/api/provider/ws.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Ws as Transport } from '../transport'; - -export default class Ws extends Transport { - send = (method, params, callback) => { - this - ._execute(method, params) - .then((result) => callback(null, result)) - .catch((error) => callback(error)); - } -} diff --git a/js/packages/api/pubsub/eth/eth.js b/js/packages/api/pubsub/eth/eth.js deleted file mode 100644 index 72b0a1ebf..000000000 --- a/js/packages/api/pubsub/eth/eth.js +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . -import PubsubBase from '../pubsubBase'; - -import { inAddress, inBlockNumber, inHex, inNumber16, inOptions, inFilter } from '../../format/input'; -import { outAddress, outBlock, outNumber, outTransaction, outSyncing, outReceipt, outLog } from '../../format/output'; - -export default class Eth extends PubsubBase { - constructor (provider) { - super(provider); - this._api = 'parity'; - } - - newHeads (callback) { - return this.addListener('eth', 'newHeads', callback); - } - - logs (callback) { - throw Error('not supported yet'); - } - - // eth API - protocolVersion (callback) { - return this.addListener(this._api, 'eth_protocolVersion', callback); - } - - syncing (callback) { - return this.addListener(this._api, 'eth_syncing', (error, data) => { - error - ? callback(error) - : callback(null, outSyncing(data)); - }); - } - - hashrate (callback) { - return this.addListener(this._api, 'eth_hashrate', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - coinbase (callback) { - return this.addListener(this._api, 'eth_coinbase', (error, data) => { - error - ? callback(error) - : callback(null, outAddress(data)); - }); - } - - mining (callback) { - return this.addListener(this._api, 'eth_mining', callback); - } - - gasPrice (callback) { - return this.addListener(this._api, 'eth_gasPrice', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - accounts (callback) { - return this.addListener(this._api, 'eth_accounts', (error, accounts) => { - error - ? callback(error) - : callback(null, (accounts || []).map(outAddress)); - }); - } - - blockNumber (callback) { - return this.addListener(this._api, 'eth_blockNumber', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - getBalance (callback, address, blockNumber = 'latest') { - return this.addListener(this._api, 'eth_getBalance', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }, [inAddress(address), inBlockNumber(blockNumber)]); - } - - getStorageAt (callback, address, index = 0, blockNumber = 'latest') { - return this.addListener(this._api, 'eth_getStorageAt', callback, [inAddress(address), inNumber16(index), inBlockNumber(blockNumber)]); - } - - getBlockByHash (callback, hash, full = false) { - return this.addListener(this._api, 'eth_getBlockByHash', (error, data) => { - error - ? callback(error) - : callback(null, outBlock(data)); - }, [inHex(hash), full]); - } - - getBlockByNumber (callback, blockNumber = 'latest', full = false) { - return this.addListener(this._api, 'eth_getBlockByNumber', (error, data) => { - error - ? callback(error) - : callback(null, outBlock(data)); - }, [inBlockNumber(blockNumber), full]); - } - - getTransactionCount (callback, address, blockNumber = 'latest') { - return this.addListener(this._api, 'eth_getTransactionCount', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }, [inAddress(address), inBlockNumber(blockNumber)]); - } - - getBlockTransactionCountByHash (callback, hash) { - return this.addListener(this._api, 'eth_getBlockTransactionCountByHash', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }, [inHex(hash)]); - } - - getBlockTransactionCountByNumber (callback, blockNumber = 'latest') { - return this.addListener(this._api, 'eth_getBlockTransactionCountByNumber', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }, [inBlockNumber(blockNumber)]); - } - - getUncleCountByBlockHash (callback, hash) { - return this.addListener(this._api, 'eth_getUncleCountByBlockHash', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }, [inHex(hash)]); - } - - getUncleCountByBlockNumber (callback, blockNumber = 'latest') { - return this.addListener(this._api, 'eth_getUncleCountByBlockNumber', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }, [inBlockNumber(blockNumber)]); - } - - getCode (callback, address, blockNumber = 'latest') { - return this.addListener(this._api, 'eth_getCode', callback, [inAddress(address), inBlockNumber(blockNumber)]); - } - - call (callback, options, blockNumber = 'latest') { - return this.addListener(this._api, 'eth_call', callback, [inOptions(options), inBlockNumber(blockNumber)]); - } - - estimateGas (callback, options) { - return this.addListener(this._api, 'eth_estimateGas', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }, [inOptions(options)]); - } - - getTransactionByHash (callback, hash) { - return this.addListener(this._api, 'eth_getTransactionByHash', (error, data) => { - error - ? callback(error) - : callback(null, outTransaction(data)); - }, [inHex(hash)]); - } - - getTransactionByBlockHashAndIndex (callback, hash, index = 0) { - return this.addListener(this._api, 'eth_getTransactionByBlockHashAndIndex', (error, data) => { - error - ? callback(error) - : callback(null, outTransaction(data)); - }, [inHex(hash), inNumber16(index)]); - } - - getTransactionByBlockNumberAndIndex (callback, blockNumber = 'latest', index = 0) { - return this.addListener(this._api, 'eth_getTransactionByBlockNumberAndIndex', (error, data) => { - error - ? callback(error) - : callback(null, outTransaction(data)); - }, [inBlockNumber(blockNumber), inNumber16(index)]); - } - - getTransactionReceipt (callback, txhash) { - return this.addListener(this._api, 'eth_getTransactionReceipt', (error, data) => { - error - ? callback(error) - : callback(null, outReceipt(data)); - }, [inHex(txhash)]); - } - - getUncleByBlockHashAndIndex (callback, hash, index = 0) { - return this.addListener(this._api, 'eth_getUncleByBlockHashAndIndex', callback, [inHex(hash), inNumber16(index)]); - } - - getUncleByBlockNumberAndIndex (callback, blockNumber = 'latest', index = 0) { - return this.addListener(this._api, 'eth_getUncleByBlockNumberAndIndex', callback, [inBlockNumber(blockNumber), inNumber16(index)]); - } - - getLogs (callback, options) { - return this.addListener(this._api, 'eth_getLogs', (error, logs) => { - error - ? callback(error) - : callback(null, (logs) => logs.map(outLog)); - }, [inFilter(options)]); - } - - getWork (callback) { - return this.addListener(this._api, 'eth_getWork', callback); - } -} diff --git a/js/packages/api/pubsub/eth/index.js b/js/packages/api/pubsub/eth/index.js deleted file mode 100644 index 3b8d1994c..000000000 --- a/js/packages/api/pubsub/eth/index.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . -export default from './eth'; diff --git a/js/packages/api/pubsub/index.js b/js/packages/api/pubsub/index.js deleted file mode 100644 index bf342e1de..000000000 --- a/js/packages/api/pubsub/index.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . -export default from './pubsub'; diff --git a/js/packages/api/pubsub/net/index.js b/js/packages/api/pubsub/net/index.js deleted file mode 100644 index 6d13847c5..000000000 --- a/js/packages/api/pubsub/net/index.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . -export default from './net'; diff --git a/js/packages/api/pubsub/net/net.js b/js/packages/api/pubsub/net/net.js deleted file mode 100644 index 43d38cc1b..000000000 --- a/js/packages/api/pubsub/net/net.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . -import PubsubBase from '../pubsubBase'; - -import { outNumber } from '../../format/output'; - -export default class Net extends PubsubBase { - constructor (provider) { - super(provider); - this._api = 'parity'; - } - - // net API - version (callback) { - return this.addListener(this._api, 'net_version', callback); - } - - peerCount (callback) { - return this.addListener(this._api, 'net_peerCount', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - listening (callback) { - return this.addListener(this._api, 'net_listening', callback); - } -} diff --git a/js/packages/api/pubsub/parity/index.js b/js/packages/api/pubsub/parity/index.js deleted file mode 100644 index 33ce7aa7f..000000000 --- a/js/packages/api/pubsub/parity/index.js +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . -export default from './parity'; diff --git a/js/packages/api/pubsub/parity/parity.js b/js/packages/api/pubsub/parity/parity.js deleted file mode 100644 index cad46a758..000000000 --- a/js/packages/api/pubsub/parity/parity.js +++ /dev/null @@ -1,355 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import PubsubBase from '../pubsubBase'; -import { inAddress, inBlockNumber, inData, inHex, inDeriveHash, inDeriveIndex } from '../../format/input'; -import { outAccountInfo, outAddress, outBlock, outChainStatus, outHistogram, outHwAccountInfo, outNodeKind, outNumber, outPeers, outTransaction, outAddresses, outRecentDapps, outVaultMeta } from '../../format/output'; - -export default class Parity extends PubsubBase { - constructor (provider) { - super(provider); - this._api = 'parity'; - } - - // parity API - accountsInfo (callback) { - return this.addListener(this._api, 'parity_accountsInfo', (error, data) => { - error - ? callback(error) - : callback(null, outAccountInfo(data)); - }); - } - - hardwareAccountsInfo (callback) { - return this.addListener(this._api, 'parity_hardwareAccountsInfo', (error, data) => { - error - ? callback(error) - : callback(null, outHwAccountInfo(data)); - }); - } - - defaultAccount (callback) { - return this.addListener(this._api, 'parity_defaultAccount', (error, data) => { - error - ? callback(error) - : callback(null, outAddress(data)); - }); - } - - transactionsLimit (callback) { - return this.addListener(this._api, 'parity_transactionsLimit', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - extraData (callback) { - return this.addListener(this._api, 'parity_extraData', callback); - } - - gasFloorTarget (callback) { - return this.addListener(this._api, 'parity_gasFloorTarget', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - gasCeilTarget (callback) { - return this.addListener(this._api, 'parity_gasCeilTarget', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - minGasPrice (callback) { - return this.addListener(this._api, 'parity_minGasPrice', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - devLogs (callback) { - return this.addListener(this._api, 'parity_devLogs', callback); - } - - devLogsLevels (callback) { - return this.addListener(this._api, 'parity_devLogsLevels', callback); - } - - netChain (callback) { - return this.addListener(this._api, 'parity_netChain', callback); - } - - netPeers (callback) { - return this.addListener(this._api, 'parity_netPeers', (error, data) => { - error - ? callback(error) - : callback(null, outPeers(data)); - }); - } - - netPort (callback) { - return this.addListener(this._api, 'parity_netPort', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - rpcSettings (callback) { - return this.addListener(this._api, 'parity_rpcSettings', callback); - } - - nodeName (callback) { - return this.addListener(this._api, 'parity_nodeName', callback); - } - - defaultExtraData (callback) { - return this.addListener(this._api, 'parity_defaultExtraData', callback); - } - - gasPriceHistogram (callback) { - return this.addListener(this._api, 'parity_gasPriceHistogram', (error, data) => { - error - ? callback(error) - : callback(null, outHistogram(data)); - }); - } - - unsignedTransactionsCount (callback) { - return this.addListener(this._api, 'parity_unsignedTransactionsCount', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }); - } - - registryAddress (callback) { - return this.addListener(this._api, 'parity_registryAddress', (error, data) => { - error - ? callback(error) - : callback(null, outAddress(data)); - }); - } - - listAccounts (callback, count, offset = null, blockNumber = 'latest') { - return this.addListener(this._api, 'parity_listAccounts', (error, data) => { - error - ? callback(error) - : callback(null, (data) => (data || []).map(outAddress)); - }, [count, inAddress(offset), inBlockNumber(blockNumber)]); - } - - listStorageKeys (callback, address, count, hash = null, blockNumber = 'latest') { - return this.addListener(this._api, 'parity_listStorageKeys', callback, [inAddress(address), count, inHex(hash), inBlockNumber(blockNumber)]); - } - - pendingTransactions (callback) { - return this.addListener(this._api, 'parity_pendingTransactions', (error, data) => { - error - ? callback(error) - : callback(null, outTransaction(data)); - }); - } - - futureTransactions (callback) { - return this.addListener(this._api, 'parity_futureTransactions', (error, data) => { - error - ? callback(error) - : callback(null, outTransaction(data)); - }); - } - - pendingTransactionsStats (callback) { - return this.addListener(this._api, 'parity_pendingTransactionsStats', callback); - } - - localTransactions (callback) { - return this.addListener(this._api, 'parity_localTransactions', (error, transactions) => { - error - ? callback(error) - : callback(null, transactions => { - Object.values(transactions) - .filter(tx => tx.transaction) - .map(tx => { - tx.transaction = outTransaction(tx.transaction); - }); - return transactions; - }); - }); - } - - dappsUrl (callback) { - return this.addListener(this._api, 'parity_dappsUrl', callback); - } - - wsUrl (callback) { - return this.addListener(this._api, 'parity_wsUrl', callback); - } - - nextNonce (callback, account) { - return this.addListener(this._api, 'parity_nextNonce', (error, data) => { - error - ? callback(error) - : callback(null, outNumber(data)); - }, [inAddress(account)]); - } - - mode (callback) { - return this.addListener(this._api, 'parity_mode', callback); - } - - chain (callback) { - return this.addListener(this._api, 'parity_chain', callback); - } - - enode (callback) { - return this.addListener(this._api, 'parity_enode', callback); - } - - consensusCapability (callback) { - return this.addListener(this._api, 'parity_consensusCapability', callback); - } - - versionInfo (callback) { - return this.addListener(this._api, 'parity_versionInfo', callback); - } - - releasesInfo (callback) { - return this.addListener(this._api, 'parity_releasesInfo', callback); - } - - chainStatus (callback) { - return this.addListener(this._api, 'parity_chainStatus', (error, data) => { - error - ? callback(error) - : callback(null, outChainStatus(data)); - }); - } - - nodeKind (callback) { - return this.addListener(this._api, 'parity_nodeKind', (error, data) => { - error - ? callback(error) - : callback(null, outNodeKind(data)); - }); - } - - getBlockHeaderByNumber (callback, blockNumber = 'latest') { - return this.addListener(this._api, 'parity_getBlockHeaderByNumber', (error, data) => { - error - ? callback(error) - : callback(null, outBlock(data)); - }, [inBlockNumber(blockNumber)]); - } - - cidV0 (callback, data) { - return this.addListener(this._api, 'parity_cidV0', callback, [inData(data)]); - } - - // parity accounts API (only secure API or configured to be exposed) - allAccountsInfo (callback) { - return this._addListener(this._api, 'parity_allAccountsInfo', (error, data) => { - error - ? callback(error) - : callback(null, outAccountInfo(data)); - }); - } - - getDappAddresses (callback, dappId) { - return this._addListener(this._api, 'parity_getDappAddresses', (error, data) => { - error - ? callback(error) - : callback(null, outAddresses(data)); - }, [dappId]); - } - - getDappDefaultAddress (callback, dappId) { - return this._addListener(this._api, 'parity_getDappDefaultAddress', (error, data) => { - error - ? callback(error) - : callback(null, outAddress(data)); - }, [dappId]); - } - - getNewDappsAddresses (callback) { - return this._addListener(this._api, 'parity_getDappDefaultAddress', (error, addresses) => { - error - ? callback(error) - : callback(null, addresses ? addresses.map(outAddress) : null); - }); - } - - getNewDappsDefaultAddress (callback) { - return this._addListener(this._api, 'parity_getNewDappsDefaultAddress', (error, data) => { - error - ? callback(error) - : callback(null, outAddress(data)); - }); - } - - listRecentDapps (callback) { - return this._addListener(this._api, 'parity_listRecentDapps', (error, data) => { - error - ? callback(error) - : callback(null, outRecentDapps(data)); - }); - } - - listGethAccounts (callback) { - return this._addListener(this._api, 'parity_listGethAccounts', (error, data) => { - error - ? callback(error) - : callback(null, outAddresses(data)); - }); - } - - listVaults (callback) { - return this._addListener(this._api, 'parity_listVaults', callback); - } - - listOpenedVaults (callback) { - return this._addListener(this._api, 'parity_listOpenedVaults', callback); - } - - getVaultMeta (callback, vaultName) { - return this._addListener(this._api, 'parity_getVaultMeta', (error, data) => { - error - ? callback(error) - : callback(null, outVaultMeta(data)); - }, [vaultName]); - } - - deriveAddressHash (callback, address, password, hash, shouldSave) { - return this._addListener(this._api, 'parity_deriveAddressHash', (error, data) => { - error - ? callback(error) - : callback(null, outAddress(data)); - }, [inAddress(address), password, inDeriveHash(hash), !!shouldSave]); - } - - deriveAddressIndex (callback, address, password, index, shouldSave) { - return this._addListener(this._api, 'parity_deriveAddressIndex', (error, data) => { - error - ? callback(error) - : callback(null, outAddress(data)); - }, [inAddress(address), password, inDeriveIndex(index), !!shouldSave]); - } -} diff --git a/js/packages/api/pubsub/pubsub.js b/js/packages/api/pubsub/pubsub.js deleted file mode 100644 index deb64a332..000000000 --- a/js/packages/api/pubsub/pubsub.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Eth from './eth'; -import Parity from './parity'; -import Net from './net'; - -import { isFunction } from '../util/types'; - -export default class Pubsub { - constructor (provider) { - if (!provider || !isFunction(provider.subscribe)) { - throw new Error('Pubsub API needs transport with subscribe() function defined. (WebSocket)'); - } - - this._eth = new Eth(provider); - this._net = new Net(provider); - this._parity = new Parity(provider); - } - - get net () { - return this._net; - } - - get eth () { - return this._eth; - } - - get parity () { - return this._parity; - } - - unsubscribe (subscriptionIds) { - // subscriptions are namespace independent. Thus we can simply removeListener from any. - return this._parity.removeListener(subscriptionIds); - } -} diff --git a/js/packages/api/pubsub/pubsub.spec.js b/js/packages/api/pubsub/pubsub.spec.js deleted file mode 100644 index fdbd2ddfe..000000000 --- a/js/packages/api/pubsub/pubsub.spec.js +++ /dev/null @@ -1,613 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import { TEST_WS_URL, mockWs } from '../../../test/mockRpc'; -import { isBigNumber } from '../../../test/types'; - -import { WsSecure } from '../provider'; -import Pubsub from './pubsub'; - -describe('api/pubsub/Pubsub', () => { - let scope; - let instance; - const address = '0x63Cf90D3f0410092FC0fca41846f596223979195'; - - describe('accountsInfo', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: { - '0x63cf90d3f0410092fc0fca41846f596223979195': { - name: 'name', uuid: 'uuid', meta: '{"data":"data"}' - } - }, - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('retrieves the available account info', (done) => { - instance.parity.accountsInfo((error, result) => { - expect(error).to.be.null; - expect(result).to.deep.equal({ - '0x63Cf90D3f0410092FC0fca41846f596223979195': { - name: 'name', uuid: 'uuid', meta: { - data: 'data' - } - } - }); - done(); - }); - }); - }); - - describe('Unsubscribe', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2 }, - { method: 'parity_unsubscribe', reply: true }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('Promise gets resolved on success.', (done) => { - instance.parity.accountsInfo().then(s => { - instance.parity.unsubscribe(s).then(b => { - expect(b).to.be.true; - }); - }); - done(); - }); - }); - - describe('chainStatus', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: { - 'blockGap': [0x123, 0x456] - }, - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('retrieves the chain status', (done) => { - instance.parity.chainStatus((error, result) => { - expect(error).to.be.null; - expect(result).to.deep.equal({ - 'blockGap': [new BigNumber(0x123), new BigNumber(0x456)] - }); - done(); - }); - }); - }); - - describe('gasFloorTarget', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: '0x123456', - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns the gasfloor, formatted', (done) => { - instance.parity.gasFloorTarget((error, result) => { - expect(error).to.be.null; - expect(isBigNumber(result)).to.be.true; - expect(result.eq(0x123456)).to.be.true; - done(); - }); - }); - }); - - describe('transactionsLimit', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: 1024, - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns the tx limit, formatted', (done) => { - instance.parity.transactionsLimit((error, result) => { - expect(error).to.be.null; - expect(isBigNumber(result)).to.be.true; - expect(result.eq(1024)).to.be.true; - done(); - }); - }); - }); - - describe('minGasPrice', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: '0x123456', - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns the min gasprice, formatted', (done) => { - instance.parity.minGasPrice((error, result) => { - expect(error).to.be.null; - expect(isBigNumber(result)).to.be.true; - expect(result.eq(0x123456)).to.be.true; - done(); - }); - }); - }); - - describe('netPeers', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: { active: 123, connected: 456, max: 789, peers: [] }, - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns the peer structure, formatted', (done) => { - instance.parity.netPeers((error, peers) => { - expect(error).to.be.null; - expect(peers.active.eq(123)).to.be.true; - expect(peers.connected.eq(456)).to.be.true; - expect(peers.max.eq(789)).to.be.true; - done(); - }); - }); - }); - - describe('netPort', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: 33030, - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns the connected port, formatted', (done) => { - instance.parity.netPort((error, count) => { - expect(error).to.be.null; - expect(isBigNumber(count)).to.be.true; - expect(count.eq(33030)).to.be.true; - done(); - }); - }); - }); - -// Eth API - describe('accounts', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: [address.toLowerCase()], - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns a list of accounts, formatted', (done) => { - instance.eth.accounts((error, accounts) => { - expect(error).to.be.null; - expect(accounts).to.deep.equal([address]); - done(); - }); - }); - }); - - describe('newHeads', () => { - beforeEach(() => { - scope = mockWs([{ method: 'eth_subscribe', reply: 2, subscription: { - method: 'eth_subscription', - params: { - result: '0x123456', - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns newHeads for eth_subscribe', (done) => { - instance.eth.newHeads((error, blockNumber) => { - expect(error).to.be.null; - expect(blockNumber).to.equal('0x123456'); - done(); - }); - }); - }); - - describe('blockNumber', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: '0x123456', - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns the current blockNumber, formatted', (done) => { - instance.eth.blockNumber((error, blockNumber) => { - expect(error).to.be.null; - expect(isBigNumber(blockNumber)).to.be.true; - expect(blockNumber.toString(16)).to.equal('123456'); - done(); - }); - }); - }); - - describe('call', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: [], - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('formats the input options & blockNumber', (done) => { - instance.eth.call((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_call', [{ data: '0x12345678' }, 'earliest']]); - done(); - }, { data: '12345678' }, 'earliest'); - }); - - it('provides a latest blockNumber when not specified', (done) => { - instance.eth.call((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_call', [{ data: '0x12345678' }, 'latest']]); - done(); - }, { data: '12345678' }); - }); - }); - - describe('coinbase', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: address.toLowerCase(), - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns the coinbase, formatted', (done) => { - instance.eth.coinbase((error, account) => { - expect(error).to.be.null; - expect(account).to.deep.equal(address); - done(); - }); - }); - }); - - describe('estimateGas', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: '0x123', - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('converts the options correctly', (done) => { - instance.eth.estimateGas((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_estimateGas', [{ gas: '0x5208' }]]); - done(); - }, { gas: 21000 }); - }); - - it('returns the gas used, formatted', (done) => { - instance.eth.estimateGas((error, gas) => { - expect(error).to.be.null; - expect(isBigNumber(gas)).to.be.true; - expect(gas.toString(16)).to.deep.equal('123'); - done(); - }); - }); - }); - - describe('gasPrice', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: '0x123', - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns the gas price, formatted', (done) => { - instance.eth.gasPrice((error, price) => { - expect(error).to.be.null; - expect(isBigNumber(price)).to.be.true; - expect(price.toString(16)).to.deep.equal('123'); - done(); - }); - }); - }); - - describe('getBalance', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: '0x123', - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('passes in the address (default blockNumber)', (done) => { - instance.eth.getBalance((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getBalance', [address.toLowerCase(), 'latest']]); - done(); - }, address); - }); - - it('passes in the address & blockNumber', (done) => { - instance.eth.getBalance((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getBalance', [address.toLowerCase(), '0x456']]); - done(); - }, address, 0x456); - }); - - it('returns the balance', (done) => { - instance.eth.getBalance((error, balance) => { - expect(error).to.be.null; - expect(isBigNumber(balance)).to.be.true; - expect(balance.toString(16)).to.deep.equal('123'); - done(); - }, address); - }); - }); - - describe('getBlockByHash', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: { miner: address.toLowerCase() }, - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('formats the input hash as a hash, default full', (done) => { - instance.eth.getBlockByHash((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getBlockByHash', ['0x1234', false]]); - done(); - }, '1234'); - }); - - it('formats the input hash as a hash, full true', (done) => { - instance.eth.getBlockByHash((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getBlockByHash', ['0x1234', true]]); - done(); - }, '1234', true); - }); - - it('formats the output into block', (done) => { - instance.eth.getBlockByHash((error, block) => { - expect(error).to.be.null; - expect(block.miner).to.equal(address); - done(); - }, '1234'); - }); - }); - - describe('getBlockByNumber', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: { miner: address.toLowerCase() }, - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('assumes blockNumber latest & full false', (done) => { - instance.eth.getBlockByNumber((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getBlockByNumber', ['latest', false]]); - done(); - }); - }); - - it('uses input blockNumber & full false', (done) => { - instance.eth.getBlockByNumber((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getBlockByNumber', ['0x1234', false]]); - done(); - }, '0x1234'); - }); - - it('formats the input blockNumber, full true', (done) => { - instance.eth.getBlockByNumber((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getBlockByNumber', ['0x1234', true]]); - done(); - }, 0x1234, true); - }); - - it('formats the output into block', (done) => { - instance.eth.getBlockByNumber((error, block) => { - expect(error).to.be.null; - expect(block.miner).to.equal(address); - done(); - }, 0x1234); - }); - }); - - describe('getTransactionCount', () => { - beforeEach(() => { - scope = mockWs([{ method: 'parity_subscribe', reply: 2, subscription: { - method: 'parity_subscription', - params: { - result: '0x123', - subscription: 2 - } - } }]); - instance = new Pubsub(new WsSecure(TEST_WS_URL)); - }); - - afterEach(() => { - scope.stop(); - }); - - it('passes in the address (default blockNumber)', (done) => { - instance.eth.getTransactionCount((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getTransactionCount', [address.toLowerCase(), 'latest']]); - done(); - }, address); - }); - - it('passes in the address & blockNumber', (done) => { - instance.eth.getTransactionCount((error) => { - expect(error).to.be.null; - expect(scope.body.parity_subscribe.params).to.deep.equal(['eth_getTransactionCount', [address.toLowerCase(), '0x456']]); - done(); - }, address, 0x456); - }); - - it('returns the count, formatted', (done) => { - instance.eth.getTransactionCount((error, count) => { - expect(error).to.be.null; - expect(isBigNumber(count)).to.be.true; - expect(count.toString(16)).to.equal('123'); - done(); - }, address, 0x456); - }); - }); -}); diff --git a/js/packages/api/pubsub/pubsubBase.js b/js/packages/api/pubsub/pubsubBase.js deleted file mode 100644 index e2a43e4c0..000000000 --- a/js/packages/api/pubsub/pubsubBase.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class PubsubBase { - // Provider for websocket pubsub transport - constructor (provider) { - this._provider = provider; - } - - addListener (module, eventName, handler, eventParams) { - return eventParams - ? this._provider.subscribe(module, handler, [eventName, eventParams]) - : this._provider.subscribe(module, handler, [eventName, []]); - // this._transport.subscribe(module, handler, eventName); After Patch from tomac is merged to master! => eth_subscribe does not support empty array as params - } - - removeListener (subscriptionIds) { - return this._provider.unsubscribe(subscriptionIds); - } - - unsubscribe (subscriptionIds) { - return this.removeListener(subscriptionIds); - } -} diff --git a/js/packages/api/rpc/db/db.js b/js/packages/api/rpc/db/db.js deleted file mode 100644 index 50e951244..000000000 --- a/js/packages/api/rpc/db/db.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { inHex } from '../../format/input'; - -export default class Db { - constructor (transport) { - this._transport = transport; - } - - getHex (dbName, keyName) { - return this._transport - .send('db_getHex', dbName, keyName); - } - - getString (dbName, keyName) { - return this._transport - .send('db_getString', dbName, keyName); - } - - putHex (dbName, keyName, hexData) { - return this._transport - .send('db_putHex', dbName, keyName, inHex(hexData)); - } - - putString (dbName, keyName, stringData) { - return this._transport - .send('db_putString', dbName, keyName, stringData); - } -} diff --git a/js/packages/api/rpc/db/db.spec.js b/js/packages/api/rpc/db/db.spec.js deleted file mode 100644 index 160827d57..000000000 --- a/js/packages/api/rpc/db/db.spec.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { TEST_HTTP_URL, mockHttp } from '../../../../test/mockRpc'; - -import { Http, PromiseProvider } from '../../provider'; -import Db from './db'; - -const instance = new Db(new PromiseProvider(new Http(TEST_HTTP_URL, -1))); - -describe('api/rpc/Db', () => { - let scope; - - describe('putHex', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'db_putHex', reply: { result: [] } }]); - }); - - it('formats the inputs correctly', () => { - return instance.putHex('db', 'key', '1234').then(() => { - expect(scope.body.db_putHex.params).to.deep.equal(['db', 'key', '0x1234']); - }); - }); - }); -}); diff --git a/js/packages/api/rpc/db/index.js b/js/packages/api/rpc/db/index.js deleted file mode 100644 index 0dc25441b..000000000 --- a/js/packages/api/rpc/db/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './db'; diff --git a/js/packages/api/rpc/eth/eth.e2e.js b/js/packages/api/rpc/eth/eth.e2e.js deleted file mode 100644 index 1c8d95a0b..000000000 --- a/js/packages/api/rpc/eth/eth.e2e.js +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createHttpApi } from '../../../../test/e2e/ethapi'; -import { isAddress } from '../../../../test/types'; - -describe('ethapi.eth', () => { - const ethapi = createHttpApi(); - const address = '0x63cf90d3f0410092fc0fca41846f596223979195'; - - let latestBlockNumber; - let latestBlockHash; - - describe('accounts', () => { - it('returns the available accounts', () => { - return ethapi.eth.accounts().then((accounts) => { - accounts.forEach((account) => { - expect(isAddress(account)).to.be.true; - }); - }); - }); - }); - - describe('blockNumber', () => { - it('returns the current blockNumber', () => { - return ethapi.eth.blockNumber().then((blockNumber) => { - latestBlockNumber = blockNumber; - expect(blockNumber.gt(0xabcde)).to.be.true; - }); - }); - }); - - describe('coinbase', () => { - it('returns the coinbase', () => { - return ethapi.eth.coinbase().then((coinbase) => { - expect(isAddress(coinbase)).to.be.true; - }); - }); - }); - - describe('gasPrice', () => { - it('returns the current gasPrice', () => { - return ethapi.eth.gasPrice().then((gasPrice) => { - expect(gasPrice.gt(0)).to.be.true; - }); - }); - }); - - describe('getBalance', () => { - it('returns the balance for latest block', () => { - return ethapi.eth.getBalance(address).then((balance) => { - expect(balance.gt(0)).to.be.true; - }); - }); - - it('returns the balance for a very early block', () => { - const atBlock = '0x65432'; - const atValue = '18e07120a6e164fee1b'; - - return ethapi.eth - .getBalance(address, atBlock) - .then((balance) => { - expect(balance.toString(16)).to.equal(atValue); - }) - .catch((error) => { - // Parity doesn't support pruned-before-block balance lookups - expect(error.message).to.match(/not supported/); - }); - }); - - it('returns the balance for a recent/out-of-pruning-range block', () => { - return ethapi.eth - .getBalance(address, latestBlockNumber.minus(1000)) - .then((balance) => { - expect(balance.gt(0)).to.be.true; - }); - }); - }); - - describe('getBlockByNumber', () => { - it('returns the latest block', () => { - return ethapi.eth.getBlockByNumber().then((block) => { - expect(block).to.be.ok; - }); - }); - - it('returns a block by blockNumber', () => { - return ethapi.eth.getBlockByNumber(latestBlockNumber).then((block) => { - latestBlockHash = block.hash; - expect(block).to.be.ok; - }); - }); - - it('returns a block by blockNumber (full)', () => { - return ethapi.eth.getBlockByNumber(latestBlockNumber, true).then((block) => { - expect(block).to.be.ok; - }); - }); - }); - - describe('getBlockByHash', () => { - it('returns the specified block', () => { - return ethapi.eth.getBlockByHash(latestBlockHash).then((block) => { - expect(block).to.be.ok; - expect(block.hash).to.equal(latestBlockHash); - }); - }); - - it('returns the specified block (full)', () => { - return ethapi.eth.getBlockByHash(latestBlockHash, true).then((block) => { - expect(block).to.be.ok; - expect(block.hash).to.equal(latestBlockHash); - }); - }); - }); - - describe('getBlockTransactionCountByHash', () => { - it('returns the transactions of the specified hash', () => { - return ethapi.eth.getBlockTransactionCountByHash(latestBlockHash).then((count) => { - expect(count).to.be.ok; - expect(count.gte(0)).to.be.true; - }); - }); - }); - - describe('getBlockTransactionCountByNumber', () => { - it('returns the transactions of latest', () => { - return ethapi.eth.getBlockTransactionCountByNumber().then((count) => { - expect(count).to.be.ok; - expect(count.gte(0)).to.be.true; - }); - }); - - it('returns the transactions of a specified number', () => { - return ethapi.eth.getBlockTransactionCountByNumber(latestBlockNumber).then((count) => { - expect(count).to.be.ok; - expect(count.gte(0)).to.be.true; - }); - }); - }); - - describe('getTransactionCount', () => { - it('returns the count for an address', () => { - return ethapi.eth.getTransactionCount(address).then((count) => { - expect(count).to.be.ok; - expect(count.gte(0x1000c2)).to.be.ok; - }); - }); - - it('returns the count for an address at specified blockNumber', () => { - return ethapi.eth.getTransactionCount(address, latestBlockNumber).then((count) => { - expect(count).to.be.ok; - expect(count.gte(0x1000c2)).to.be.ok; - }); - }); - }); -}); diff --git a/js/packages/api/rpc/eth/eth.js b/js/packages/api/rpc/eth/eth.js deleted file mode 100644 index 2163bef0b..000000000 --- a/js/packages/api/rpc/eth/eth.js +++ /dev/null @@ -1,321 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { inAddress, inBlockNumber, inData, inFilter, inHash, inHex, inNumber16, inOptions } from '../../format/input'; -import { outAddress, outBlock, outLog, outNumber, outReceipt, outSyncing, outTransaction } from '../../format/output'; - -export default class Eth { - constructor (provider) { - this._provider = provider; - } - - accounts () { - return this._provider - .send('eth_accounts') - .then((accounts) => (accounts || []).map(outAddress)); - } - - blockNumber () { - return this._provider - .send('eth_blockNumber') - .then(outNumber); - } - - call (options, blockNumber = 'latest') { - return this._provider - .send('eth_call', inOptions(options), inBlockNumber(blockNumber)); - } - - coinbase () { - return this._provider - .send('eth_coinbase') - .then(outAddress); - } - - compileLLL (code) { - return this._provider - .send('eth_compileLLL', inData(code)); - } - - compileSerpent (code) { - return this._provider - .send('eth_compileSerpent', inData(code)); - } - - compileSolidity (code) { - return this._provider - .send('eth_compileSolidity', inData(code)); - } - - estimateGas (options) { - return this._provider - .send('eth_estimateGas', inOptions(options)) - .then(outNumber); - } - - fetchQueuedTransactions () { - return this._provider - .send('eth_fetchQueuedTransactions'); - } - - flush () { - return this._provider - .send('eth_flush'); - } - - gasPrice () { - return this._provider - .send('eth_gasPrice') - .then(outNumber); - } - - getBalance (address, blockNumber = 'latest') { - return this._provider - .send('eth_getBalance', inAddress(address), inBlockNumber(blockNumber)) - .then(outNumber); - } - - getBlockByHash (hash, full = false) { - return this._provider - .send('eth_getBlockByHash', inHex(hash), full) - .then(outBlock); - } - - getBlockByNumber (blockNumber = 'latest', full = false) { - return this._provider - .send('eth_getBlockByNumber', inBlockNumber(blockNumber), full) - .then(outBlock); - } - - getBlockTransactionCountByHash (hash) { - return this._provider - .send('eth_getBlockTransactionCountByHash', inHex(hash)) - .then(outNumber); - } - - getBlockTransactionCountByNumber (blockNumber = 'latest') { - return this._provider - .send('eth_getBlockTransactionCountByNumber', inBlockNumber(blockNumber)) - .then(outNumber); - } - - getCode (address, blockNumber = 'latest') { - return this._provider - .send('eth_getCode', inAddress(address), inBlockNumber(blockNumber)); - } - - getCompilers () { - return this._provider - .send('eth_getCompilers'); - } - - getFilterChanges (filterId) { - return this._provider - .send('eth_getFilterChanges', inNumber16(filterId)) - .then((logs) => logs.map(outLog)); - } - - getFilterChangesEx (filterId) { - return this._provider - .send('eth_getFilterChangesEx', inNumber16(filterId)); - } - - getFilterLogs (filterId) { - return this._provider - .send('eth_getFilterLogs', inNumber16(filterId)) - .then((logs) => logs.map(outLog)); - } - - getFilterLogsEx (filterId) { - return this._provider - .send('eth_getFilterLogsEx', inNumber16(filterId)); - } - - getLogs (options) { - return this._provider - .send('eth_getLogs', inFilter(options)) - .then((logs) => logs.map(outLog)); - } - - getLogsEx (options) { - return this._provider - .send('eth_getLogsEx', inFilter(options)); - } - - getStorageAt (address, index = 0, blockNumber = 'latest') { - return this._provider - .send('eth_getStorageAt', inAddress(address), inNumber16(index), inBlockNumber(blockNumber)); - } - - getTransactionByBlockHashAndIndex (hash, index = 0) { - return this._provider - .send('eth_getTransactionByBlockHashAndIndex', inHex(hash), inNumber16(index)) - .then(outTransaction); - } - - getTransactionByBlockNumberAndIndex (blockNumber = 'latest', index = 0) { - return this._provider - .send('eth_getTransactionByBlockNumberAndIndex', inBlockNumber(blockNumber), inNumber16(index)) - .then(outTransaction); - } - - getTransactionByHash (hash) { - return this._provider - .send('eth_getTransactionByHash', inHex(hash)) - .then(outTransaction); - } - - getTransactionCount (address, blockNumber = 'latest') { - return this._provider - .send('eth_getTransactionCount', inAddress(address), inBlockNumber(blockNumber)) - .then(outNumber); - } - - getTransactionReceipt (txhash) { - return this._provider - .send('eth_getTransactionReceipt', inHex(txhash)) - .then(outReceipt); - } - - getUncleByBlockHashAndIndex (hash, index = 0) { - return this._provider - .send('eth_getUncleByBlockHashAndIndex', inHex(hash), inNumber16(index)); - } - - getUncleByBlockNumberAndIndex (blockNumber = 'latest', index = 0) { - return this._provider - .send('eth_getUncleByBlockNumberAndIndex', inBlockNumber(blockNumber), inNumber16(index)); - } - - getUncleCountByBlockHash (hash) { - return this._provider - .send('eth_getUncleCountByBlockHash', inHex(hash)) - .then(outNumber); - } - - getUncleCountByBlockNumber (blockNumber = 'latest') { - return this._provider - .send('eth_getUncleCountByBlockNumber', inBlockNumber(blockNumber)) - .then(outNumber); - } - - getWork () { - return this._provider - .send('eth_getWork'); - } - - hashrate () { - return this._provider - .send('eth_hashrate') - .then(outNumber); - } - - inspectTransaction () { - return this._provider - .send('eth_inspectTransaction'); - } - - mining () { - return this._provider - .send('eth_mining'); - } - - newBlockFilter () { - return this._provider - .send('eth_newBlockFilter'); - } - - newFilter (options) { - return this._provider - .send('eth_newFilter', inFilter(options)); - } - - newFilterEx (options) { - return this._provider - .send('eth_newFilterEx', inFilter(options)); - } - - newPendingTransactionFilter () { - return this._provider - .send('eth_newPendingTransactionFilter'); - } - - notePassword () { - return this._provider - .send('eth_notePassword'); - } - - pendingTransactions () { - return this._provider - .send('eth_pendingTransactions'); - } - - protocolVersion () { - return this._provider - .send('eth_protocolVersion'); - } - - register () { - return this._provider - .send('eth_register'); - } - - sendRawTransaction (data) { - return this._provider - .send('eth_sendRawTransaction', inData(data)); - } - - sendTransaction (options) { - return this._provider - .send('eth_sendTransaction', inOptions(options)); - } - - sign (address, hash) { - return this._provider - .send('eth_sign', inAddress(address), inHash(hash)); - } - - signTransaction (options) { - return this._provider - .send('eth_signTransaction', inOptions(options)); - } - - submitHashrate (hashrate, clientId) { - return this._provider - .send('eth_submitHashrate', inNumber16(hashrate), clientId); - } - - submitWork (nonce, powHash, mixDigest) { - return this._provider - .send('eth_submitWork', inNumber16(nonce), powHash, mixDigest); - } - - syncing () { - return this._provider - .send('eth_syncing') - .then(outSyncing); - } - - uninstallFilter (filterId) { - return this._provider - .send('eth_uninstallFilter', inHex(filterId)); - } - - unregister () { - return this._provider - .send('eth_unregister'); - } -} diff --git a/js/packages/api/rpc/eth/eth.spec.js b/js/packages/api/rpc/eth/eth.spec.js deleted file mode 100644 index ac295e836..000000000 --- a/js/packages/api/rpc/eth/eth.spec.js +++ /dev/null @@ -1,474 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { TEST_HTTP_URL, mockHttp } from '../../../../test/mockRpc'; -import { isBigNumber } from '../../../../test/types'; - -import { Http, PromiseProvider } from '../../provider'; -import Eth from './eth'; - -const instance = new Eth(new PromiseProvider(new Http(TEST_HTTP_URL, -1))); - -describe('rpc/Eth', () => { - const address = '0x63Cf90D3f0410092FC0fca41846f596223979195'; - let scope; - - describe('accounts', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_accounts', reply: { result: [address.toLowerCase()] } }]); - }); - - it('returns a list of accounts, formatted', () => { - return instance.accounts().then((accounts) => { - expect(accounts).to.deep.equal([address]); - }); - }); - }); - - describe('blockNumber', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_blockNumber', reply: { result: '0x123456' } }]); - }); - - it('returns the current blockNumber, formatted', () => { - return instance.blockNumber().then((blockNumber) => { - expect(isBigNumber(blockNumber)).to.be.true; - expect(blockNumber.toString(16)).to.equal('123456'); - }); - }); - }); - - describe('call', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_call', reply: { result: [] } }]); - }); - - it('formats the input options & blockNumber', () => { - return instance.call({ data: '12345678' }, 'earliest').then(() => { - expect(scope.body.eth_call.params).to.deep.equal([{ data: '0x12345678' }, 'earliest']); - }); - }); - - it('provides a latest blockNumber when not specified', () => { - return instance.call({ data: '12345678' }).then(() => { - expect(scope.body.eth_call.params).to.deep.equal([{ data: '0x12345678' }, 'latest']); - }); - }); - }); - - describe('coinbase', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_coinbase', reply: { result: address.toLowerCase() } }]); - }); - - it('returns the coinbase, formatted', () => { - return instance.coinbase().then((account) => { - expect(account).to.deep.equal(address); - }); - }); - }); - - ['LLL', 'Serpent', 'Solidity'].forEach((type) => { - const method = `compile${type}`; - - describe(method, () => { - beforeEach(() => { - scope = mockHttp([{ method: `eth_${method}`, reply: { result: '0x123' } }]); - }); - - it('formats the input as data, returns the output', () => { - return instance[method]('0xabcdef').then((result) => { - expect(scope.body[`eth_${method}`].params).to.deep.equal(['0xabcdef']); - expect(result).to.equal('0x123'); - }); - }); - }); - }); - - describe('estimateGas', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_estimateGas', reply: { result: '0x123' } }]); - }); - - it('converts the options correctly', () => { - return instance.estimateGas({ gas: 21000 }).then(() => { - expect(scope.body.eth_estimateGas.params).to.deep.equal([{ gas: '0x5208' }]); - }); - }); - - it('returns the gas used', () => { - return instance.estimateGas({}).then((gas) => { - expect(isBigNumber(gas)).to.be.true; - expect(gas.toString(16)).to.deep.equal('123'); - }); - }); - }); - - describe('gasPrice', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_gasPrice', reply: { result: '0x123' } }]); - }); - - it('returns the fomratted price', () => { - return instance.gasPrice().then((price) => { - expect(isBigNumber(price)).to.be.true; - expect(price.toString(16)).to.deep.equal('123'); - }); - }); - }); - - describe('getBalance', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getBalance', reply: { result: '0x123' } }]); - }); - - it('passes in the address (default blockNumber)', () => { - return instance.getBalance(address).then(() => { - expect(scope.body.eth_getBalance.params).to.deep.equal([address.toLowerCase(), 'latest']); - }); - }); - - it('passes in the address & blockNumber', () => { - return instance.getBalance(address, 0x456).then(() => { - expect(scope.body.eth_getBalance.params).to.deep.equal([address.toLowerCase(), '0x456']); - }); - }); - - it('returns the balance', () => { - return instance.getBalance(address, 0x123).then((balance) => { - expect(isBigNumber(balance)).to.be.true; - expect(balance.toString(16)).to.deep.equal('123'); - }); - }); - }); - - describe('getBlockByHash', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getBlockByHash', reply: { result: { miner: address.toLowerCase() } } }]); - }); - - it('formats the input hash as a hash, default full', () => { - return instance.getBlockByHash('1234').then(() => { - expect(scope.body.eth_getBlockByHash.params).to.deep.equal(['0x1234', false]); - }); - }); - - it('formats the input hash as a hash, full true', () => { - return instance.getBlockByHash('1234', true).then(() => { - expect(scope.body.eth_getBlockByHash.params).to.deep.equal(['0x1234', true]); - }); - }); - - it('formats the output into block', () => { - return instance.getBlockByHash('1234').then((block) => { - expect(block.miner).to.equal(address); - }); - }); - }); - - describe('getBlockByNumber', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getBlockByNumber', reply: { result: { miner: address.toLowerCase() } } }]); - }); - - it('assumes blockNumber latest & full false', () => { - return instance.getBlockByNumber().then(() => { - expect(scope.body.eth_getBlockByNumber.params).to.deep.equal(['latest', false]); - }); - }); - - it('uses input blockNumber & full false', () => { - return instance.getBlockByNumber('0x1234').then(() => { - expect(scope.body.eth_getBlockByNumber.params).to.deep.equal(['0x1234', false]); - }); - }); - - it('formats the input blockNumber, full true', () => { - return instance.getBlockByNumber(0x1234, true).then(() => { - expect(scope.body.eth_getBlockByNumber.params).to.deep.equal(['0x1234', true]); - }); - }); - - it('formats the output into block', () => { - return instance.getBlockByNumber(0x1234).then((block) => { - expect(block.miner).to.equal(address); - }); - }); - }); - - describe('getBlockTransactionCountByHash', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getBlockTransactionCountByHash', reply: { result: '0x123' } }]); - }); - - it('formats input hash properly', () => { - return instance.getBlockTransactionCountByHash('abcdef').then(() => { - expect(scope.body.eth_getBlockTransactionCountByHash.params).to.deep.equal(['0xabcdef']); - }); - }); - - it('formats the output number', () => { - return instance.getBlockTransactionCountByHash('0x1234').then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.toString(16)).to.equal('123'); - }); - }); - }); - - describe('getBlockTransactionCountByNumber', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getBlockTransactionCountByNumber', reply: { result: '0x123' } }]); - }); - - it('specified blockNumber latest when none specified', () => { - return instance.getBlockTransactionCountByNumber().then(() => { - expect(scope.body.eth_getBlockTransactionCountByNumber.params).to.deep.equal(['latest']); - }); - }); - - it('formats input blockNumber properly', () => { - return instance.getBlockTransactionCountByNumber(0xabcdef).then(() => { - expect(scope.body.eth_getBlockTransactionCountByNumber.params).to.deep.equal(['0xabcdef']); - }); - }); - - it('formats the output number', () => { - return instance.getBlockTransactionCountByNumber('0x1234').then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.toString(16)).to.equal('123'); - }); - }); - }); - - describe('getCode', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getCode', reply: { result: '0x1234567890' } }]); - }); - - it('passes in the address (default blockNumber)', () => { - return instance.getCode(address).then(() => { - expect(scope.body.eth_getCode.params).to.deep.equal([address.toLowerCase(), 'latest']); - }); - }); - - it('passes in the address & blockNumber', () => { - return instance.getCode(address, 0x456).then(() => { - expect(scope.body.eth_getCode.params).to.deep.equal([address.toLowerCase(), '0x456']); - }); - }); - - it('returns the code', () => { - return instance.getCode(address, 0x123).then((code) => { - expect(code).to.equal('0x1234567890'); - }); - }); - }); - - describe('getStorageAt', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getStorageAt', reply: { result: '0x1234567890' } }]); - }); - - it('passes in the address (default index& blockNumber)', () => { - return instance.getStorageAt(address).then(() => { - expect(scope.body.eth_getStorageAt.params).to.deep.equal([address.toLowerCase(), '0x0', 'latest']); - }); - }); - - it('passes in the address, index & blockNumber', () => { - return instance.getStorageAt(address, 15, 0x456).then(() => { - expect(scope.body.eth_getStorageAt.params).to.deep.equal([address.toLowerCase(), '0xf', '0x456']); - }); - }); - - it('returns the storage', () => { - return instance.getStorageAt(address, 0x123).then((storage) => { - expect(storage).to.equal('0x1234567890'); - }); - }); - }); - - describe('getTransactionByBlockHashAndIndex', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getTransactionByBlockHashAndIndex', reply: { result: { to: address.toLowerCase() } } }]); - }); - - it('passes in the hash (default index)', () => { - return instance.getTransactionByBlockHashAndIndex('12345').then(() => { - expect(scope.body.eth_getTransactionByBlockHashAndIndex.params).to.deep.equal(['0x12345', '0x0']); - }); - }); - - it('passes in the hash & specified index', () => { - return instance.getTransactionByBlockHashAndIndex('6789', 0x456).then(() => { - expect(scope.body.eth_getTransactionByBlockHashAndIndex.params).to.deep.equal(['0x6789', '0x456']); - }); - }); - - it('returns the formatted transaction', () => { - return instance.getTransactionByBlockHashAndIndex('6789', 0x123).then((tx) => { - expect(tx).to.deep.equal({ to: address }); - }); - }); - }); - - describe('getTransactionByBlockNumberAndIndex', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getTransactionByBlockNumberAndIndex', reply: { result: { to: address.toLowerCase() } } }]); - }); - - it('passes in the default parameters', () => { - return instance.getTransactionByBlockNumberAndIndex().then(() => { - expect(scope.body.eth_getTransactionByBlockNumberAndIndex.params).to.deep.equal(['latest', '0x0']); - }); - }); - - it('passes in the blockNumber & specified index', () => { - return instance.getTransactionByBlockNumberAndIndex('0x6789', 0x456).then(() => { - expect(scope.body.eth_getTransactionByBlockNumberAndIndex.params).to.deep.equal(['0x6789', '0x456']); - }); - }); - - it('returns the formatted transaction', () => { - return instance.getTransactionByBlockNumberAndIndex('0x6789', 0x123).then((tx) => { - expect(tx).to.deep.equal({ to: address }); - }); - }); - }); - - describe('getTransactionByHash', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getTransactionByHash', reply: { result: { to: address.toLowerCase() } } }]); - }); - - it('passes in the hash', () => { - return instance.getTransactionByHash('12345').then(() => { - expect(scope.body.eth_getTransactionByHash.params).to.deep.equal(['0x12345']); - }); - }); - - it('returns the formatted transaction', () => { - return instance.getTransactionByHash('6789').then((tx) => { - expect(tx).to.deep.equal({ to: address }); - }); - }); - }); - - describe('getTransactionCount', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getTransactionCount', reply: { result: '0x123' } }]); - }); - - it('passes in the address (default blockNumber)', () => { - return instance.getTransactionCount(address).then(() => { - expect(scope.body.eth_getTransactionCount.params).to.deep.equal([address.toLowerCase(), 'latest']); - }); - }); - - it('passes in the address & blockNumber', () => { - return instance.getTransactionCount(address, 0x456).then(() => { - expect(scope.body.eth_getTransactionCount.params).to.deep.equal([address.toLowerCase(), '0x456']); - }); - }); - - it('returns the count, formatted', () => { - return instance.getTransactionCount(address, 0x123).then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.toString(16)).to.equal('123'); - }); - }); - }); - - describe('getUncleByBlockHashAndIndex', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getUncleByBlockHashAndIndex', reply: { result: [] } }]); - }); - - it('passes in the hash (default index)', () => { - return instance.getUncleByBlockHashAndIndex('12345').then(() => { - expect(scope.body.eth_getUncleByBlockHashAndIndex.params).to.deep.equal(['0x12345', '0x0']); - }); - }); - - it('passes in the hash & specified index', () => { - return instance.getUncleByBlockHashAndIndex('6789', 0x456).then(() => { - expect(scope.body.eth_getUncleByBlockHashAndIndex.params).to.deep.equal(['0x6789', '0x456']); - }); - }); - }); - - describe('getUncleByBlockNumberAndIndex', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getUncleByBlockNumberAndIndex', reply: { result: [] } }]); - }); - - it('passes in the default parameters', () => { - return instance.getUncleByBlockNumberAndIndex().then(() => { - expect(scope.body.eth_getUncleByBlockNumberAndIndex.params).to.deep.equal(['latest', '0x0']); - }); - }); - - it('passes in the blockNumber & specified index', () => { - return instance.getUncleByBlockNumberAndIndex('0x6789', 0x456).then(() => { - expect(scope.body.eth_getUncleByBlockNumberAndIndex.params).to.deep.equal(['0x6789', '0x456']); - }); - }); - }); - - describe('getUncleCountByBlockHash', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getUncleCountByBlockHash', reply: { result: '0x123' } }]); - }); - - it('passes in the hash', () => { - return instance.getUncleCountByBlockHash('12345').then(() => { - expect(scope.body.eth_getUncleCountByBlockHash.params).to.deep.equal(['0x12345']); - }); - }); - - it('formats the output number', () => { - return instance.getUncleCountByBlockHash('0x1234').then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.toString(16)).to.equal('123'); - }); - }); - }); - - describe('getUncleCountByBlockNumber', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'eth_getUncleCountByBlockNumber', reply: { result: '0x123' } }]); - }); - - it('passes in the default parameters', () => { - return instance.getUncleCountByBlockNumber().then(() => { - expect(scope.body.eth_getUncleCountByBlockNumber.params).to.deep.equal(['latest']); - }); - }); - - it('passes in the blockNumber', () => { - return instance.getUncleCountByBlockNumber('0x6789').then(() => { - expect(scope.body.eth_getUncleCountByBlockNumber.params).to.deep.equal(['0x6789']); - }); - }); - - it('formats the output number', () => { - return instance.getUncleCountByBlockNumber('0x1234').then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.toString(16)).to.equal('123'); - }); - }); - }); -}); diff --git a/js/packages/api/rpc/eth/index.js b/js/packages/api/rpc/eth/index.js deleted file mode 100644 index 25a7b3cb4..000000000 --- a/js/packages/api/rpc/eth/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './eth'; diff --git a/js/packages/api/rpc/index.js b/js/packages/api/rpc/index.js deleted file mode 100644 index 8589437f8..000000000 --- a/js/packages/api/rpc/index.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export Db from './db'; -export Eth from './eth'; -export Parity from './parity'; -export Net from './net'; -export Personal from './personal'; -export Shell from './shell'; -export Shh from './shh'; -export Signer from './signer'; -export Trace from './trace'; -export Web3 from './web3'; diff --git a/js/packages/api/rpc/net/index.js b/js/packages/api/rpc/net/index.js deleted file mode 100644 index 457eeed79..000000000 --- a/js/packages/api/rpc/net/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './net'; diff --git a/js/packages/api/rpc/net/net.e2e.js b/js/packages/api/rpc/net/net.e2e.js deleted file mode 100644 index c477e2605..000000000 --- a/js/packages/api/rpc/net/net.e2e.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createHttpApi } from '../../../../test/e2e/ethapi'; -import { isBoolean } from '../../../../test/types'; - -describe('ethapi.net', () => { - const ethapi = createHttpApi(); - - describe('listening', () => { - it('returns the listening status', () => { - return ethapi.net.listening().then((status) => { - expect(isBoolean(status)).to.be.true; - }); - }); - }); - - describe('peerCount', () => { - it('returns the peer count', () => { - return ethapi.net.peerCount().then((count) => { - expect(count.gte(0)).to.be.true; - }); - }); - }); - - describe('version', () => { - it('returns the version', () => { - return ethapi.net.version().then((version) => { - expect(version).to.be.ok; - }); - }); - }); -}); diff --git a/js/packages/api/rpc/net/net.js b/js/packages/api/rpc/net/net.js deleted file mode 100644 index e9a050f14..000000000 --- a/js/packages/api/rpc/net/net.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { outNumber } from '../../format/output'; - -export default class Net { - constructor (provider) { - this._provider = provider; - } - - listening () { - return this._provider - .send('net_listening'); - } - - peerCount () { - return this._provider - .send('net_peerCount') - .then(outNumber); - } - - version () { - return this._provider - .send('net_version'); - } -} diff --git a/js/packages/api/rpc/net/net.spec.js b/js/packages/api/rpc/net/net.spec.js deleted file mode 100644 index ec7900eec..000000000 --- a/js/packages/api/rpc/net/net.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { TEST_HTTP_URL, mockHttp } from '../../../../test/mockRpc'; -import { isBigNumber } from '../../../../test/types'; - -import { Http, PromiseProvider } from '../../provider'; -import Net from './net'; - -const instance = new Net(new PromiseProvider(new Http(TEST_HTTP_URL, -1))); - -describe('api/rpc/Net', () => { - describe('peerCount', () => { - it('returns the connected peers, formatted', () => { - mockHttp([{ method: 'net_peerCount', reply: { result: '0x123456' } }]); - - return instance.peerCount().then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.eq(0x123456)).to.be.true; - }); - }); - }); -}); diff --git a/js/packages/api/rpc/parity/index.js b/js/packages/api/rpc/parity/index.js deleted file mode 100644 index 7fe520c60..000000000 --- a/js/packages/api/rpc/parity/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './parity'; diff --git a/js/packages/api/rpc/parity/parity.e2e.js b/js/packages/api/rpc/parity/parity.e2e.js deleted file mode 100644 index 8820d570a..000000000 --- a/js/packages/api/rpc/parity/parity.e2e.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createHttpApi } from '../../../../test/e2e/ethapi'; - -describe('ethapi.parity', () => { - const ethapi = createHttpApi(); - - describe('chainStatus', () => { - it('returns and translates the status', () => { - return ethapi.parity.chainStatus().then((value) => { - expect(value).to.be.ok; - }); - }); - }); - - describe('gasFloorTarget', () => { - it('returns and translates the target', () => { - return ethapi.parity.gasFloorTarget().then((value) => { - expect(value.gt(0)).to.be.true; - }); - }); - }); - - describe('gasPriceHistogram', () => { - it('returns and translates the target', () => { - return ethapi.parity.gasPriceHistogram().then((result) => { - expect(Object.keys(result)).to.deep.equal(['bucketBounds', 'counts']); - expect(result.bucketBounds.length > 0).to.be.true; - expect(result.counts.length > 0).to.be.true; - }); - }); - }); - - describe('netChain', () => { - it('returns and the chain', () => { - return ethapi.parity.netChain().then((value) => { - expect(value).to.equal('morden'); - }); - }); - }); - - describe('netPort', () => { - it('returns and translates the port', () => { - return ethapi.parity.netPort().then((value) => { - expect(value.gt(0)).to.be.true; - }); - }); - }); - - describe('transactionsLimit', () => { - it('returns and translates the limit', () => { - return ethapi.parity.transactionsLimit().then((value) => { - expect(value.gt(0)).to.be.true; - }); - }); - }); - - describe('rpcSettings', () => { - it('returns and translates the settings', () => { - return ethapi.parity.rpcSettings().then((value) => { - expect(value).to.be.ok; - }); - }); - }); -}); diff --git a/js/packages/api/rpc/parity/parity.js b/js/packages/api/rpc/parity/parity.js deleted file mode 100644 index 40f67f3d0..000000000 --- a/js/packages/api/rpc/parity/parity.js +++ /dev/null @@ -1,568 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { inAddress, inAddresses, inBlockNumber, inData, inDeriveHash, inDeriveIndex, inHex, inNumber16, inOptions } from '../../format/input'; -import { outAccountInfo, outAddress, outAddresses, outBlock, outChainStatus, outHistogram, outHwAccountInfo, outNodeKind, outNumber, outPeers, outRecentDapps, outTransaction, outVaultMeta } from '../../format/output'; - -export default class Parity { - constructor (provider) { - this._provider = provider; - } - - acceptNonReservedPeers () { - return this._provider - .send('parity_acceptNonReservedPeers'); - } - - accountsInfo () { - return this._provider - .send('parity_accountsInfo') - .then(outAccountInfo); - } - - allAccountsInfo () { - return this._provider - .send('parity_allAccountsInfo') - .then(outAccountInfo); - } - - addReservedPeer (enode) { - return this._provider - .send('parity_addReservedPeer', enode); - } - - chainStatus () { - return this._provider - .send('parity_chainStatus') - .then(outChainStatus); - } - - changePassword (account, password, newPassword) { - return this._provider - .send('parity_changePassword', inAddress(account), password, newPassword); - } - - changeVault (account, vaultName) { - return this._provider - .send('parity_changeVault', inAddress(account), vaultName); - } - - changeVaultPassword (vaultName, password) { - return this._provider - .send('parity_changeVaultPassword', vaultName, password); - } - - checkRequest (requestId) { - return this._provider - .send('parity_checkRequest', inNumber16(requestId)); - } - - cidV0 (data) { - return this._provider - .send('parity_cidV0', inData(data)); - } - - closeVault (vaultName) { - return this._provider - .send('parity_closeVault', vaultName); - } - - composeTransaction (options) { - return this._provider - .send('parity_composeTransaction', inOptions(options)); - } - - consensusCapability () { - return this._provider - .send('parity_consensusCapability'); - } - - dappsList () { - return this._provider - .send('parity_dappsList'); - } - - dappsUrl () { - return this._provider - .send('parity_dappsUrl'); - } - - decryptMessage (address, data) { - return this._provider - .send('parity_decryptMessage', inAddress(address), inHex(data)); - } - - defaultAccount () { - return this._provider - .send('parity_defaultAccount') - .then(outAddress); - } - - defaultExtraData () { - return this._provider - .send('parity_defaultExtraData'); - } - - devLogs () { - return this._provider - .send('parity_devLogs'); - } - - devLogsLevels () { - return this._provider - .send('parity_devLogsLevels'); - } - - deriveAddressHash (address, password, hash, shouldSave) { - return this._provider - .send('parity_deriveAddressHash', inAddress(address), password, inDeriveHash(hash), !!shouldSave) - .then(outAddress); - } - - deriveAddressIndex (address, password, index, shouldSave) { - return this._provider - .send('parity_deriveAddressIndex', inAddress(address), password, inDeriveIndex(index), !!shouldSave) - .then(outAddress); - } - - dropNonReservedPeers () { - return this._provider - .send('parity_dropNonReservedPeers'); - } - - enode () { - return this._provider - .send('parity_enode'); - } - - encryptMessage (pubkey, data) { - return this._provider - .send('parity_encryptMessage', inHex(pubkey), inHex(data)); - } - - executeUpgrade () { - return this._provider - .send('parity_executeUpgrade'); - } - - exportAccount (address, password) { - return this._provider - .send('parity_exportAccount', inAddress(address), password); - } - - extraData () { - return this._provider - .send('parity_extraData'); - } - - futureTransactions () { - return this._provider - .send('parity_futureTransactions'); - } - - gasCeilTarget () { - return this._provider - .send('parity_gasCeilTarget') - .then(outNumber); - } - - gasFloorTarget () { - return this._provider - .send('parity_gasFloorTarget') - .then(outNumber); - } - - gasPriceHistogram () { - return this._provider - .send('parity_gasPriceHistogram') - .then(outHistogram); - } - - generateSecretPhrase () { - return this._provider - .send('parity_generateSecretPhrase'); - } - - getBlockHeaderByNumber (blockNumber = 'latest') { - return this._provider - .send('parity_getBlockHeaderByNumber', inBlockNumber(blockNumber)) - .then(outBlock); - } - - getDappAddresses (dappId) { - return this._provider - .send('parity_getDappAddresses', dappId) - .then(outAddresses); - } - - getDappDefaultAddress (dappId) { - return this._provider - .send('parity_getDappDefaultAddress', dappId) - .then(outAddress); - } - - getNewDappsAddresses () { - return this._provider - .send('parity_getNewDappsAddresses') - .then((addresses) => addresses ? addresses.map(outAddress) : null); - } - - getNewDappsDefaultAddress () { - return this._provider - .send('parity_getNewDappsDefaultAddress') - .then(outAddress); - } - - getVaultMeta (vaultName) { - return this._provider - .send('parity_getVaultMeta', vaultName) - .then(outVaultMeta); - } - - hardwareAccountsInfo () { - return this._provider - .send('parity_hardwareAccountsInfo') - .then(outHwAccountInfo); - } - - hashContent (url) { - return this._provider - .send('parity_hashContent', url); - } - - importGethAccounts (accounts) { - return this._provider - .send('parity_importGethAccounts', inAddresses(accounts)) - .then(outAddresses); - } - - killAccount (account, password) { - return this._provider - .send('parity_killAccount', inAddress(account), password); - } - - listAccounts (count, offset = null, blockNumber = 'latest') { - return this._provider - .send('parity_listAccounts', count, inAddress(offset), inBlockNumber(blockNumber)) - .then((accounts) => (accounts || []).map(outAddress)); - } - - listOpenedVaults () { - return this._provider - .send('parity_listOpenedVaults'); - } - - listVaults () { - return this._provider - .send('parity_listVaults'); - } - - listRecentDapps () { - return this._provider - .send('parity_listRecentDapps') - .then(outRecentDapps); - } - - listStorageKeys (address, count, hash = null, blockNumber = 'latest') { - return this._provider - .send('parity_listStorageKeys', inAddress(address), count, inHex(hash), inBlockNumber(blockNumber)); - } - - removeAddress (address) { - return this._provider - .send('parity_removeAddress', inAddress(address)); - } - - listGethAccounts () { - return this._provider - .send('parity_listGethAccounts') - .then(outAddresses); - } - - localTransactions () { - return this._provider - .send('parity_localTransactions') - .then(transactions => { - Object.values(transactions) - .filter(tx => tx.transaction) - .map(tx => { - tx.transaction = outTransaction(tx.transaction); - }); - return transactions; - }); - } - - minGasPrice () { - return this._provider - .send('parity_minGasPrice') - .then(outNumber); - } - - mode () { - return this._provider - .send('parity_mode'); - } - - // DEPRECATED - use chain instead. - netChain () { - return this._provider - .send('parity_chain'); - } - - nodeKind () { - return this._provider - .send('parity_nodeKind') - .then(outNodeKind); - } - - chain () { - return this._provider - .send('parity_chain'); - } - - netPeers () { - return this._provider - .send('parity_netPeers') - .then(outPeers); - } - - netMaxPeers () { - return this._provider - .send('parity_netMaxPeers') - .then(outNumber); - } - - netPort () { - return this._provider - .send('parity_netPort') - .then(outNumber); - } - - newAccountFromPhrase (phrase, password) { - return this._provider - .send('parity_newAccountFromPhrase', phrase, password) - .then(outAddress); - } - - newAccountFromSecret (secret, password) { - return this._provider - .send('parity_newAccountFromSecret', inHex(secret), password) - .then(outAddress); - } - - newAccountFromWallet (json, password) { - return this._provider - .send('parity_newAccountFromWallet', json, password) - .then(outAddress); - } - - newVault (vaultName, password) { - return this._provider - .send('parity_newVault', vaultName, password); - } - - nextNonce (account) { - return this._provider - .send('parity_nextNonce', inAddress(account)) - .then(outNumber); - } - - nodeName () { - return this._provider - .send('parity_nodeName'); - } - - openVault (vaultName, password) { - return this._provider - .send('parity_openVault', vaultName, password); - } - - pendingTransactions () { - return this._provider - .send('parity_pendingTransactions') - .then(data => data.map(outTransaction)); - } - - pendingTransactionsStats () { - return this._provider - .send('parity_pendingTransactionsStats'); - } - - phraseToAddress (phrase) { - return this._provider - .send('parity_phraseToAddress', phrase) - .then(outAddress); - } - - postSign (address, hash) { - return this._provider - .send('parity_postSign', inAddress(address), inHex(hash)); - } - - postTransaction (options = {}) { - return this._provider - .send('parity_postTransaction', inOptions(options)); - } - - registryAddress () { - return this._provider - .send('parity_registryAddress') - .then(outAddress); - } - - releasesInfo () { - return this._provider - .send('parity_releasesInfo'); - } - - removeReservedPeer (enode) { - return this._provider - .send('parity_removeReservedPeer', enode); - } - - removeTransaction (hash) { - return this._provider - .send('parity_removeTransaction', inHex(hash)) - .then(outTransaction); - } - - rpcSettings () { - return this._provider - .send('parity_rpcSettings'); - } - - setAccountName (address, name) { - return this._provider - .send('parity_setAccountName', inAddress(address), name); - } - - setAccountMeta (address, meta) { - return this._provider - .send('parity_setAccountMeta', inAddress(address), JSON.stringify(meta)); - } - - setAuthor (address) { - return this._provider - .send('parity_setAuthor', inAddress(address)); - } - - setDappAddresses (dappId, addresses) { - return this._provider - .send('parity_setDappAddresses', dappId, inAddresses(addresses)); - } - - setDappDefaultAddress (dappId, address) { - return this._provider - .send('parity_setDappDefaultAddress', dappId, address ? inAddress(address) : null); - } - - setEngineSigner (address, password) { - return this._provider - .send('parity_setEngineSigner', inAddress(address), password); - } - - setExtraData (data) { - return this._provider - .send('parity_setExtraData', inData(data)); - } - - setGasCeilTarget (quantity) { - return this._provider - .send('parity_setGasCeilTarget', inNumber16(quantity)); - } - - setGasFloorTarget (quantity) { - return this._provider - .send('parity_setGasFloorTarget', inNumber16(quantity)); - } - - setMaxTransactionGas (quantity) { - return this._provider - .send('parity_setMaxTransactionGas', inNumber16(quantity)); - } - - setMinGasPrice (quantity) { - return this._provider - .send('parity_setMinGasPrice', inNumber16(quantity)); - } - - setMode (mode) { - return this._provider - .send('parity_setMode', mode); - } - - setChain (specName) { - return this._provider - .send('parity_setChain', specName); - } - - setNewDappsAddresses (addresses) { - return this._provider - .send('parity_setNewDappsAddresses', addresses ? inAddresses(addresses) : null); - } - - setNewDappsDefaultAddress (address) { - return this._provider - .send('parity_setNewDappsDefaultAddress', inAddress(address)); - } - - setTransactionsLimit (quantity) { - return this._provider - .send('parity_setTransactionsLimit', inNumber16(quantity)); - } - - setVaultMeta (vaultName, meta) { - return this._provider - .send('parity_setVaultMeta', vaultName, JSON.stringify(meta)); - } - - signMessage (address, password, messageHash) { - return this._provider - .send('parity_signMessage', inAddress(address), password, inHex(messageHash)); - } - - testPassword (account, password) { - return this._provider - .send('parity_testPassword', inAddress(account), password); - } - - transactionsLimit () { - return this._provider - .send('parity_transactionsLimit') - .then(outNumber); - } - - unsignedTransactionsCount () { - return this._provider - .send('parity_unsignedTransactionsCount') - .then(outNumber); - } - - upgradeReady () { - return this._provider - .send('parity_upgradeReady'); - } - - versionInfo () { - return this._provider - .send('parity_versionInfo'); - } - - wsUrl () { - return this._provider - .send('parity_wsUrl'); - } -} diff --git a/js/packages/api/rpc/parity/parity.spec.js b/js/packages/api/rpc/parity/parity.spec.js deleted file mode 100644 index 69147c242..000000000 --- a/js/packages/api/rpc/parity/parity.spec.js +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import { TEST_HTTP_URL, mockHttp } from '../../../../test/mockRpc'; -import { isBigNumber } from '../../../../test/types'; - -import { Http, PromiseProvider } from '../../provider'; -import Parity from './parity'; - -const instance = new Parity(new PromiseProvider(new Http(TEST_HTTP_URL, -1))); - -describe('api/rpc/parity', () => { - describe('accountsInfo', () => { - it('retrieves the available account info', () => { - mockHttp([{ method: 'parity_accountsInfo', reply: { - result: { - '0x63cf90d3f0410092fc0fca41846f596223979195': { - name: 'name', uuid: 'uuid', meta: '{"data":"data"}' - } - } - } }]); - - return instance.accountsInfo().then((result) => { - expect(result).to.deep.equal({ - '0x63Cf90D3f0410092FC0fca41846f596223979195': { - name: 'name', uuid: 'uuid', meta: { - data: 'data' - } - } - }); - }); - }); - }); - - describe('chainStatus', () => { - it('retrieves the chain status', () => { - mockHttp([{ method: 'parity_chainStatus', reply: { - result: { - 'blockGap': [0x123, 0x456] - } - } }]); - - return instance.chainStatus().then((result) => { - expect(result).to.deep.equal({ - 'blockGap': [new BigNumber(0x123), new BigNumber(0x456)] - }); - }); - }); - }); - - describe('gasFloorTarget', () => { - it('returns the gasfloor, formatted', () => { - mockHttp([{ method: 'parity_gasFloorTarget', reply: { result: '0x123456' } }]); - - return instance.gasFloorTarget().then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.eq(0x123456)).to.be.true; - }); - }); - }); - - describe('importGethAccounts', () => { - const ACCOUNTS = ['0x63cf90d3f0410092fc0fca41846f596223979195']; - let scope; - - beforeEach(() => { - scope = mockHttp([{ method: 'parity_importGethAccounts', reply: { result: ACCOUNTS } }]); - }); - - it('passes the addresses through', () => { - return instance.importGethAccounts(ACCOUNTS).then((result) => { - expect(scope.body['parity_importGethAccounts'].params).to.deep.equal([ACCOUNTS]); - }); - }); - }); - - describe('minGasPrice', () => { - it('returns the min gasprice, formatted', () => { - mockHttp([{ method: 'parity_minGasPrice', reply: { result: '0x123456' } }]); - - return instance.minGasPrice().then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.eq(0x123456)).to.be.true; - }); - }); - }); - - describe('netMaxPeers', () => { - it('returns the max peers, formatted', () => { - mockHttp([{ method: 'parity_netMaxPeers', reply: { result: 25 } }]); - - return instance.netMaxPeers().then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.eq(25)).to.be.true; - }); - }); - }); - - describe('netPeers', () => { - it('returns the peer structure, formatted', () => { - mockHttp([{ method: 'parity_netPeers', reply: { result: { active: 123, connected: 456, max: 789, peers: [] } } }]); - - return instance.netPeers().then((peers) => { - expect(peers.active.eq(123)).to.be.true; - expect(peers.connected.eq(456)).to.be.true; - expect(peers.max.eq(789)).to.be.true; - }); - }); - }); - - describe('netPort', () => { - it('returns the connected port, formatted', () => { - mockHttp([{ method: 'parity_netPort', reply: { result: 33030 } }]); - - return instance.netPort().then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.eq(33030)).to.be.true; - }); - }); - }); - - describe('transactionsLimit', () => { - it('returns the tx limit, formatted', () => { - mockHttp([{ method: 'parity_transactionsLimit', reply: { result: 1024 } }]); - - return instance.transactionsLimit().then((count) => { - expect(isBigNumber(count)).to.be.true; - expect(count.eq(1024)).to.be.true; - }); - }); - }); -}); diff --git a/js/packages/api/rpc/personal/index.js b/js/packages/api/rpc/personal/index.js deleted file mode 100644 index ec9993442..000000000 --- a/js/packages/api/rpc/personal/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './personal'; diff --git a/js/packages/api/rpc/personal/personal.e2e.js b/js/packages/api/rpc/personal/personal.e2e.js deleted file mode 100644 index d83e9b811..000000000 --- a/js/packages/api/rpc/personal/personal.e2e.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createHttpApi } from '../../../../test/e2e/ethapi'; -import { isAddress, isBoolean } from '../../../../test/types'; - -describe.skip('ethapi.personal', () => { - const ethapi = createHttpApi(); - const password = 'P@55word'; - let address; - - describe('newAccount', () => { - it('creates a new account', () => { - return ethapi.personal.newAccount(password).then((_address) => { - address = _address; - expect(isAddress(address)).to.be.ok; - }); - }); - }); - - describe('listAccounts', () => { - it('has the newly-created account', () => { - return ethapi.personal.listAccounts(password).then((accounts) => { - expect(accounts.filter((_address) => _address === address)).to.deep.equal([address]); - accounts.forEach((account) => { - expect(isAddress(account)).to.be.true; - }); - }); - }); - }); - - describe('unlockAccount', () => { - it('unlocks the newly-created account', () => { - return ethapi.personal.unlockAccount(address, password).then((result) => { - expect(isBoolean(result)).to.be.true; - expect(result).to.be.true; - }); - }); - }); -}); diff --git a/js/packages/api/rpc/personal/personal.js b/js/packages/api/rpc/personal/personal.js deleted file mode 100644 index ecdbb7ae8..000000000 --- a/js/packages/api/rpc/personal/personal.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { inAddress, inNumber10, inOptions } from '../../format/input'; -import { outAddress } from '../../format/output'; - -export default class Personal { - constructor (provider) { - this._provider = provider; - } - - listAccounts () { - return this._provider - .send('personal_listAccounts') - .then((accounts) => (accounts || []).map(outAddress)); - } - - newAccount (password) { - return this._provider - .send('personal_newAccount', password) - .then(outAddress); - } - - sendTransaction (options, password) { - return this._provider - .send('personal_sendTransaction', inOptions(options), password); - } - - unlockAccount (account, password, duration = 1) { - return this._provider - .send('personal_unlockAccount', inAddress(account), password, inNumber10(duration)); - } -} diff --git a/js/packages/api/rpc/personal/personal.spec.js b/js/packages/api/rpc/personal/personal.spec.js deleted file mode 100644 index 59288886c..000000000 --- a/js/packages/api/rpc/personal/personal.spec.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { TEST_HTTP_URL, mockHttp } from '../../../../test/mockRpc'; - -import { Http, PromiseProvider } from '../../provider'; -import Personal from './personal'; - -const instance = new Personal(new PromiseProvider(new Http(TEST_HTTP_URL, -1))); - -describe('rpc/Personal', () => { - const account = '0x63cf90d3f0410092fc0fca41846f596223979195'; - const checksum = '0x63Cf90D3f0410092FC0fca41846f596223979195'; - let scope; - - describe('listAccounts', () => { - it('retrieves a list of available accounts', () => { - scope = mockHttp([{ method: 'personal_listAccounts', reply: { result: [account] } }]); - - return instance.listAccounts().then((result) => { - expect(result).to.deep.equal([checksum]); - }); - }); - - it('returns an empty list when none available', () => { - scope = mockHttp([{ method: 'personal_listAccounts', reply: { result: null } }]); - - return instance.listAccounts().then((result) => { - expect(result).to.deep.equal([]); - }); - }); - }); - - describe('newAccount', () => { - it('passes the password, returning the address', () => { - scope = mockHttp([{ method: 'personal_newAccount', reply: { result: account } }]); - - return instance.newAccount('password').then((result) => { - expect(scope.body.personal_newAccount.params).to.deep.equal(['password']); - expect(result).to.equal(checksum); - }); - }); - }); - - describe('unlockAccount', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'personal_unlockAccount', reply: { result: [] } }]); - }); - - it('passes account, password & duration', () => { - return instance.unlockAccount(account, 'password', 0xf).then(() => { - expect(scope.body.personal_unlockAccount.params).to.deep.equal([account, 'password', 15]); - }); - }); - - it('provides a default duration when not specified', () => { - return instance.unlockAccount(account, 'password').then(() => { - expect(scope.body.personal_unlockAccount.params).to.deep.equal([account, 'password', 1]); - }); - }); - }); -}); diff --git a/js/packages/api/rpc/shell/index.js b/js/packages/api/rpc/shell/index.js deleted file mode 100644 index e832a2118..000000000 --- a/js/packages/api/rpc/shell/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './shell'; diff --git a/js/packages/api/rpc/shell/shell.js b/js/packages/api/rpc/shell/shell.js deleted file mode 100644 index 6069a88bf..000000000 --- a/js/packages/api/rpc/shell/shell.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class Shell { - constructor (provider) { - this._provider = provider; - } - - getApps (retrieveAll = false) { - return this._provider - .send('shell_getApps', retrieveAll); - } - - getFilteredMethods () { - return this._provider - .send('shell_getFilteredMethods'); - } - - getMethodPermissions () { - return this._provider - .send('shell_getMethodPermissions'); - } - - setMethodPermissions (permissions) { - return this._provider - .send('shell_setMethodPermissions', permissions); - } - - setAppVisibility (appId, state) { - return this._provider - .send('shell_setAppVisibility', appId, state); - } -} diff --git a/js/packages/api/rpc/shh/index.js b/js/packages/api/rpc/shh/index.js deleted file mode 100644 index 1094fe437..000000000 --- a/js/packages/api/rpc/shh/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './shh'; diff --git a/js/packages/api/rpc/shh/shh.js b/js/packages/api/rpc/shh/shh.js deleted file mode 100644 index c58754abf..000000000 --- a/js/packages/api/rpc/shh/shh.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class Shh { - constructor (transport) { - this._transport = transport; - } - - info () { - return this._transport - .execute('shh_info'); - } - - newKeyPair () { - return this._transport - .execute('shh_newKeyPair'); - } - - addPrivateKey (privKey) { - return this._transport - .execute('shh_addPrivateKey', privKey); - } - - newSymKey () { - return this._transport - .execute('shh_newSymKey'); - } - - getPublicKey (identity) { - return this._transport - .execute('shh_getPublicKey', identity); - } - - getPrivateKey (identity) { - return this._transport - .execute('shh_getPrivateKey', identity); - } - - getSymKey (identity) { - return this._transport - .execute('shh_getSymKey', identity); - } - - deleteKey (identity) { - return this._transport - .execute('shh_deleteKey', identity); - } - - post (messageObj) { - return this._transport - .execute('shh_post', messageObj); - } - - newMessageFilter (filterObj) { - return this._transport - .execute('shh_newMessageFilter', filterObj); - } - - getFilterMessages (filterId) { - return this._transport - .execute('shh_getFilterMessages', filterId); - } - - deleteMessageFilter (filterId) { - return this._transport - .execute('shh_deleteMessageFilter', filterId); - } - - subscribe (filterObj, callback) { - return this._transport - .subscribe('shh', callback, filterObj); - } - - unsubscribe (subscriptionId) { - return this._transport - .unsubscribe(subscriptionId); - } -} diff --git a/js/packages/api/rpc/signer/index.js b/js/packages/api/rpc/signer/index.js deleted file mode 100644 index cc1e4dc1c..000000000 --- a/js/packages/api/rpc/signer/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './signer'; diff --git a/js/packages/api/rpc/signer/signer.js b/js/packages/api/rpc/signer/signer.js deleted file mode 100644 index 0540c15ae..000000000 --- a/js/packages/api/rpc/signer/signer.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { inData, inNumber16, inOptions } from '../../format/input'; -import { outSignerRequest } from '../../format/output'; - -export default class Signer { - constructor (provider) { - this._provider = provider; - } - - confirmRequest (requestId, options, password) { - return this._provider - .send('signer_confirmRequest', inNumber16(requestId), inOptions(options), password); - } - - confirmRequestRaw (requestId, data) { - return this._provider - .send('signer_confirmRequestRaw', inNumber16(requestId), inData(data)); - } - - confirmRequestWithToken (requestId, options, password) { - return this._provider - .send('signer_confirmRequestWithToken', inNumber16(requestId), inOptions(options), password); - } - - generateAuthorizationToken () { - return this._provider - .send('signer_generateAuthorizationToken'); - } - - generateWebProxyAccessToken (domain) { - return this._provider - .execute('signer_generateWebProxyAccessToken', domain); - } - - rejectRequest (requestId) { - return this._provider - .send('signer_rejectRequest', inNumber16(requestId)); - } - - requestsToConfirm () { - return this._provider - .send('signer_requestsToConfirm') - .then((requests) => (requests || []).map(outSignerRequest)); - } - - signerEnabled () { - return this._provider - .send('signer_signerEnabled'); - } -} diff --git a/js/packages/api/rpc/trace/index.js b/js/packages/api/rpc/trace/index.js deleted file mode 100644 index 8d02aed45..000000000 --- a/js/packages/api/rpc/trace/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './trace'; diff --git a/js/packages/api/rpc/trace/trace.e2e.js b/js/packages/api/rpc/trace/trace.e2e.js deleted file mode 100644 index ffbef0ed6..000000000 --- a/js/packages/api/rpc/trace/trace.e2e.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createHttpApi } from '../../../../test/e2e/ethapi'; - -describe('ethapi.trace', () => { - const ethapi = createHttpApi(); - - describe('block', () => { - it('returns the latest block traces', () => { - return ethapi.trace.block().then((traces) => { - expect(traces).to.be.ok; - }); - }); - - it('returns traces for a specified block', () => { - return ethapi.trace.block('0x65432').then((traces) => { - expect(traces).to.be.ok; - }); - }); - }); - - describe('replayTransaction', () => { - it('returns traces for a specific transaction', () => { - return ethapi.eth.getBlockByNumber().then((latestBlock) => { - return ethapi.trace.replayTransaction(latestBlock.transactions[0]).then((traces) => { - expect(traces).to.be.ok; - }); - }); - }); - }); -}); diff --git a/js/packages/api/rpc/trace/trace.js b/js/packages/api/rpc/trace/trace.js deleted file mode 100644 index f9c4d2757..000000000 --- a/js/packages/api/rpc/trace/trace.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { inBlockNumber, inData, inHex, inNumber16, inOptions, inTraceFilter, inTraceType } from '../../format/input'; -import { outTraces, outTraceReplay } from '../../format/output'; - -export default class Trace { - constructor (provider) { - this._provider = provider; - } - - block (blockNumber = 'latest') { - return this._provider - .send('trace_block', inBlockNumber(blockNumber)) - .then(outTraces); - } - - call (options, whatTrace = ['trace'], blockNumber = 'latest') { - return this._provider - .send('trace_call', inOptions(options), inTraceType(whatTrace), inBlockNumber(blockNumber)) - .then(outTraceReplay); - } - - filter (filterObj) { - return this._provider - .send('trace_filter', inTraceFilter(filterObj)) - .then(outTraces); - } - - get (txHash, position) { - return this._provider - .send('trace_get', inHex(txHash), inNumber16(position)) - .then(outTraces); - } - - rawTransaction (data, whatTrace = ['trace']) { - return this._provider - .send('trace_rawTransaction', inData(data), inTraceType(whatTrace)) - .then(outTraceReplay); - } - - replayTransaction (txHash, whatTrace = ['trace']) { - return this._provider - .send('trace_replayTransaction', txHash, inTraceType(whatTrace)) - .then(outTraceReplay); - } - - transaction (txHash) { - return this._provider - .send('trace_transaction', inHex(txHash)) - .then(outTraces); - } -} diff --git a/js/packages/api/rpc/trace/trace.spec.js b/js/packages/api/rpc/trace/trace.spec.js deleted file mode 100644 index db14e3ae4..000000000 --- a/js/packages/api/rpc/trace/trace.spec.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { TEST_HTTP_URL, mockHttp } from '../../../../test/mockRpc'; - -import { Http, PromiseProvider } from '../../provider'; -import Trace from './trace'; - -const instance = new Trace(new PromiseProvider(new Http(TEST_HTTP_URL, -1))); - -describe('api/rpc/Trace', () => { - let scope; - - describe('block', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'trace_block', reply: { result: [] } }]); - }); - - it('assumes latest blockNumber when not specified', () => { - return instance.block().then(() => { - expect(scope.body.trace_block.params).to.deep.equal(['latest']); - }); - }); - - it('passed specified blockNumber', () => { - return instance.block(0x123).then(() => { - expect(scope.body.trace_block.params).to.deep.equal(['0x123']); - }); - }); - }); -}); diff --git a/js/packages/api/rpc/web3/index.js b/js/packages/api/rpc/web3/index.js deleted file mode 100644 index c2590ec11..000000000 --- a/js/packages/api/rpc/web3/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './web3'; diff --git a/js/packages/api/rpc/web3/web3.e2e.js b/js/packages/api/rpc/web3/web3.e2e.js deleted file mode 100644 index 2c8243a4f..000000000 --- a/js/packages/api/rpc/web3/web3.e2e.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createHttpApi } from '../../../../test/e2e/ethapi'; -import { isHexNumber } from '../../../../test/types'; - -describe('ethapi.web3', () => { - const ethapi = createHttpApi(); - - describe('clientVersion', () => { - it('returns the client version', () => { - return ethapi.web3.clientVersion().then((version) => { - const [client] = version.split('/'); - - expect(client === 'Parity' || client === 'Geth').to.be.ok; - }); - }); - }); - - describe('sha3', () => { - it('returns a keccak256 sha', () => { - const sha = '0xa7916fac4f538170f7cd12c148552e2cba9fcd72329a2dd5b07a6fa906488ddf'; - const hexStr = 'baz()'.split('').map((char) => char.charCodeAt(0).toString(16)).join(''); - - return ethapi.web3.sha3(`0x${hexStr}`).then((hash) => { - expect(isHexNumber(hash)).to.be.true; - expect(hash).to.equal(sha); - }); - }); - }); -}); diff --git a/js/packages/api/rpc/web3/web3.js b/js/packages/api/rpc/web3/web3.js deleted file mode 100644 index 21e986c97..000000000 --- a/js/packages/api/rpc/web3/web3.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { inHex } from '../../format/input'; - -export default class Web3 { - constructor (provider) { - this._provider = provider; - } - - clientVersion () { - return this._provider - .send('web3_clientVersion'); - } - - sha3 (hexStr) { - return this._provider - .send('web3_sha3', inHex(hexStr)); - } -} diff --git a/js/packages/api/rpc/web3/web3.spec.js b/js/packages/api/rpc/web3/web3.spec.js deleted file mode 100644 index 65f774f38..000000000 --- a/js/packages/api/rpc/web3/web3.spec.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { TEST_HTTP_URL, mockHttp } from '../../../../test/mockRpc'; - -import { Http, PromiseProvider } from '../../provider'; -import Web3 from './web3'; - -const instance = new Web3(new PromiseProvider(new Http(TEST_HTTP_URL, -1))); - -describe('api/rpc/Web3', () => { - let scope; - - describe('sha3', () => { - beforeEach(() => { - scope = mockHttp([{ method: 'web3_sha3', reply: { result: [] } }]); - }); - - it('formats the inputs correctly', () => { - return instance.sha3('1234').then(() => { - expect(scope.body.web3_sha3.params).to.deep.equal(['0x1234']); - }); - }); - }); -}); diff --git a/js/packages/api/subscriptions/eth.js b/js/packages/api/subscriptions/eth.js deleted file mode 100644 index 3c564c34f..000000000 --- a/js/packages/api/subscriptions/eth.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -export default class Eth { - constructor (updateSubscriptions, api) { - this._api = api; - this._updateSubscriptions = updateSubscriptions; - this._started = false; - - this._lastBlock = new BigNumber(-1); - this._pollTimerId = null; - } - - get isStarted () { - return this._started; - } - - start () { - this._started = true; - - return this._blockNumber(); - } - - _blockNumber = () => { - const nextTimeout = (timeout = 1000) => { - this._pollTimerId = setTimeout(() => { - this._blockNumber(); - }, timeout); - }; - - return this._api.eth - .blockNumber() - .then((blockNumber) => { - if (!blockNumber.eq(this._lastBlock)) { - this._lastBlock = blockNumber; - this._updateSubscriptions('eth_blockNumber', null, blockNumber); - } - - nextTimeout(); - }) - .catch(() => nextTimeout()); - } -} diff --git a/js/packages/api/subscriptions/eth.spec.js b/js/packages/api/subscriptions/eth.spec.js deleted file mode 100644 index 3f5ee81d6..000000000 --- a/js/packages/api/subscriptions/eth.spec.js +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import sinon from 'sinon'; - -import Eth from './eth'; - -const START_BLOCK = 5000; - -function stubApi (blockNumber) { - const _calls = { - blockNumber: [] - }; - - return { - _calls, - transport: { - isConnected: true - }, - eth: { - blockNumber: () => { - const stub = sinon.stub().resolves(new BigNumber(blockNumber || START_BLOCK))(); - - _calls.blockNumber.push(stub); - return stub; - } - } - }; -} - -describe('api/subscriptions/eth', () => { - let api; - let eth; - let cb; - - beforeEach(() => { - api = stubApi(); - cb = sinon.stub(); - eth = new Eth(cb, api); - }); - - describe('constructor', () => { - it('starts the instance in a stopped state', () => { - expect(eth.isStarted).to.be.false; - }); - }); - - describe('start', () => { - describe('blockNumber available', () => { - beforeEach(() => { - return eth.start(); - }); - - it('sets the started status', () => { - expect(eth.isStarted).to.be.true; - }); - - it('calls eth_blockNumber', () => { - expect(api._calls.blockNumber.length).to.be.ok; - }); - - it('updates subscribers', () => { - expect(cb).to.have.been.calledWith('eth_blockNumber', null, new BigNumber(START_BLOCK)); - }); - }); - - describe('blockNumber not available', () => { - beforeEach(() => { - api = stubApi(-1); - eth = new Eth(cb, api); - return eth.start(); - }); - - it('sets the started status', () => { - expect(eth.isStarted).to.be.true; - }); - - it('calls eth_blockNumber', () => { - expect(api._calls.blockNumber.length).to.be.ok; - }); - - it('does not update subscribers', () => { - expect(cb).not.to.been.called; - }); - }); - }); -}); diff --git a/js/packages/api/subscriptions/index.js b/js/packages/api/subscriptions/index.js deleted file mode 100644 index 07856faef..000000000 --- a/js/packages/api/subscriptions/index.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export Logging from './logging'; - -export default from './manager'; diff --git a/js/packages/api/subscriptions/logging.js b/js/packages/api/subscriptions/logging.js deleted file mode 100644 index 545742dff..000000000 --- a/js/packages/api/subscriptions/logging.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -let instance = null; - -export default class Logging { - constructor (updateSubscriptions) { - this._updateSubscriptions = updateSubscriptions; - - instance = this; - } - - get isStarted () { - return true; - } - - start () { - } - - static send (method, params, json) { - if (!instance) { - return; - } - - return instance._updateSubscriptions('logging', null, { - method, - params, - json - }); - } -} diff --git a/js/packages/api/subscriptions/logging.spec.js b/js/packages/api/subscriptions/logging.spec.js deleted file mode 100644 index f155696b7..000000000 --- a/js/packages/api/subscriptions/logging.spec.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import Logging from './logging'; - -describe('api/subscriptions/logging', () => { - let cb; - let logging; - - beforeEach(() => { - cb = sinon.stub(); - logging = new Logging(cb); - }); - - describe('constructor', () => { - it('starts the instance in a started state', () => { - expect(logging.isStarted).to.be.true; - }); - }); - - describe('send', () => { - const method = 'method'; - const params = 'params'; - const json = 'json'; - - beforeEach(() => { - Logging.send(method, params, json); - }); - - it('calls the subscription update', () => { - expect(cb).to.have.been.calledWith('logging', null, { method, params, json }); - }); - }); -}); diff --git a/js/packages/api/subscriptions/manager.js b/js/packages/api/subscriptions/manager.js deleted file mode 100644 index 6ca2f4015..000000000 --- a/js/packages/api/subscriptions/manager.js +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isError } from '../util/types'; - -import Eth from './eth'; -import Logging from './logging'; -import Personal from './personal'; -import Signer from './signer'; - -const events = { - 'logging': { module: 'logging' }, - 'eth_blockNumber': { module: 'eth' }, - 'parity_accountsInfo': { module: 'personal' }, - 'parity_allAccountsInfo': { module: 'personal' }, - 'parity_defaultAccount': { module: 'personal' }, - 'parity_postTransaction': { module: 'signer' }, - 'eth_accounts': { module: 'personal' }, - 'signer_requestsToConfirm': { module: 'signer' } -}; - -export default class Manager { - constructor (api) { - this._api = api; - - this.subscriptions = []; - this.values = {}; - - Object.keys(events).forEach((subscriptionName) => { - this.values[subscriptionName] = { - error: null, - data: null - }; - }); - - this._logging = new Logging(this._updateSubscriptions); - this._eth = new Eth(this._updateSubscriptions, api); - this._personal = new Personal(this._updateSubscriptions, api, this); - this._signer = new Signer(this._updateSubscriptions, api, this); - } - - _validateType (subscriptionName) { - const subscription = events[subscriptionName]; - - if (!subscription) { - return new Error(`${subscriptionName} is not a valid interface, subscribe using one of ${Object.keys(events).join(', ')}`); - } - - return subscription; - } - - subscribe (subscriptionName, callback, autoRemove = false) { - return new Promise((resolve, reject) => { - const subscription = this._validateType(subscriptionName); - - if (isError(subscription)) { - reject(subscription); - return; - } - - const subscriptionId = this.subscriptions.length; - const { error, data } = this.values[subscriptionName]; - const engine = this[`_${subscription.module}`]; - - this.subscriptions[subscriptionId] = { - name: subscriptionName, - id: subscriptionId, - autoRemove, - callback - }; - - if (!engine.isStarted) { - engine.start(); - } else if (error !== null || data !== null) { - this._sendData(subscriptionId, error, data); - } - - resolve(subscriptionId); - }); - } - - unsubscribe (subscriptionId) { - return new Promise((resolve, reject) => { - if (!this.subscriptions[subscriptionId]) { - reject(new Error(`Cannot find subscription ${subscriptionId}`)); - return; - } - - delete this.subscriptions[subscriptionId]; - resolve(); - }); - } - - _sendData (subscriptionId, error, data) { - const { autoRemove, callback } = this.subscriptions[subscriptionId]; - let result = true; - - try { - result = callback(error, data); - } catch (error) { - console.error(`Unable to update callback for subscriptionId ${subscriptionId}`, error); - } - - if (autoRemove && result && typeof result === 'boolean') { - this.unsubscribe(subscriptionId); - } - } - - _updateSubscriptions = (subscriptionName, error, data) => { - const subscriptions = this.subscriptions - .filter(subscription => subscription.name === subscriptionName); - - this.values[subscriptionName] = { error, data }; - - subscriptions - .forEach((subscription) => { - this._sendData(subscription.id, error, data); - }); - } -} - -export { - events -}; diff --git a/js/packages/api/subscriptions/manager.spec.js b/js/packages/api/subscriptions/manager.spec.js deleted file mode 100644 index df708a36d..000000000 --- a/js/packages/api/subscriptions/manager.spec.js +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import Manager, { events } from './manager'; - -function newStub () { - const start = () => manager._updateSubscriptions(manager.__test, null, 'test'); - - const manager = new Manager({ - transport: { - isConnected: true - } - }); - - manager._eth = { - isStarted: false, - start - }; - - manager._personal = { - isStarted: false, - start - }; - - manager._signer = { - isStarted: false, - start - }; - - return manager; -} - -describe('api/subscriptions/manager', () => { - let manager; - - beforeEach(() => { - manager = newStub(); - }); - - describe('constructor', () => { - it('sets up the subscription types & defaults', () => { - expect(manager.subscriptions).to.be.an.array; - expect(Object.keys(manager.values)).to.deep.equal(Object.keys(events)); - }); - }); - - describe('subscriptions', () => { - Object - .keys(events) - .filter((eventName) => eventName.indexOf('_') !== -1) - .forEach((eventName) => { - const { module } = events[eventName]; - let engine; - let cb; - let subscriptionId; - - describe(eventName, () => { - beforeEach(() => { - engine = manager[`_${module}`]; - manager.__test = eventName; - cb = sinon.stub(); - sinon.spy(engine, 'start'); - - return manager - .subscribe(eventName, cb) - .then((_subscriptionId) => { - subscriptionId = _subscriptionId; - }); - }); - - it(`puts the ${module} engine in a started state`, () => { - expect(engine.start).to.have.been.called; - }); - - it('returns a subscriptionId', () => { - expect(subscriptionId).to.be.a.number; - }); - - it('calls the subscription callback with updated values', () => { - expect(cb).to.have.been.calledWith(null, 'test'); - }); - }); - }); - }); - - describe('unsubscriptions', () => { - Object - .keys(events) - .filter((eventName) => eventName.indexOf('_') !== -1) - .forEach((eventName) => { - const { module } = events[eventName]; - let engine; - let cb; - - describe(eventName, () => { - beforeEach(() => { - engine = manager[`_${module}`]; - manager.__test = eventName; - cb = sinon.stub(); - sinon.spy(engine, 'start'); - - return manager - .subscribe(eventName, cb) - .then((_subscriptionId) => { - manager.unsubscribe(_subscriptionId); - }) - .then(() => { - manager._updateSubscriptions(manager.__test, null, 'test2'); - }); - }); - - it('does not call the callback after unsubscription', () => { - expect(cb).to.have.been.calledWith(null, 'test'); - expect(cb).to.not.have.been.calledWith(null, 'test2'); - }); - }); - }); - }); -}); diff --git a/js/packages/api/subscriptions/personal.js b/js/packages/api/subscriptions/personal.js deleted file mode 100644 index 76aeebc40..000000000 --- a/js/packages/api/subscriptions/personal.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class Personal { - constructor (updateSubscriptions, api, subscriber) { - this._subscriber = subscriber; - this._api = api; - this._updateSubscriptions = updateSubscriptions; - this._started = false; - - this._lastDefaultAccount = '0x0'; - this._pollTimerId = null; - } - - get isStarted () { - return this._started; - } - - start () { - this._started = true; - - return Promise.all([ - this._defaultAccount(), - this._listAccounts(), - this._accountsInfo(), - this._loggingSubscribe() - ]); - } - - // FIXME: Because of the different API instances, the "wait for valid changes" approach - // doesn't work. Since the defaultAccount is critical to operation, we poll in exactly - // same way we do in ../eth (ala eth_blockNumber) and update. This should be moved - // to pub-sub as it becomes available - _defaultAccount = (timerDisabled = false) => { - const nextTimeout = (timeout = 1000) => { - if (!timerDisabled) { - this._pollTimerId = setTimeout(() => { - this._defaultAccount(); - }, timeout); - } - }; - - return this._api.parity - .defaultAccount() - .then((defaultAccount) => { - if (this._lastDefaultAccount !== defaultAccount) { - this._lastDefaultAccount = defaultAccount; - this._updateSubscriptions('parity_defaultAccount', null, defaultAccount); - } - - nextTimeout(); - }) - .catch(() => nextTimeout()); - } - - _listAccounts = () => { - return this._api.eth - .accounts() - .then((accounts) => { - this._updateSubscriptions('eth_accounts', null, accounts); - }); - } - - _accountsInfo = () => { - return this._api.parity - .accountsInfo() - .then((info) => { - this._updateSubscriptions('parity_accountsInfo', null, info); - - return this._api.parity - .allAccountsInfo() - .catch(() => { - // NOTE: This fails on non-secure APIs, swallow error - return {}; - }) - .then((allInfo) => { - this._updateSubscriptions('parity_allAccountsInfo', null, allInfo); - }); - }); - } - - _loggingSubscribe () { - return this._subscriber.subscribe('logging', (error, data) => { - if (error || !data) { - return; - } - - switch (data.method) { - case 'parity_closeVault': - case 'parity_openVault': - case 'parity_killAccount': - case 'parity_importGethAccounts': - case 'parity_newAccountFromPhrase': - case 'parity_newAccountFromWallet': - case 'personal_newAccount': - this._defaultAccount(true); - this._listAccounts(); - this._accountsInfo(); - return; - - case 'parity_removeAddress': - case 'parity_setAccountName': - case 'parity_setAccountMeta': - this._accountsInfo(); - return; - - case 'parity_setDappAddresses': - case 'parity_setDappDefaultAddress': - case 'parity_setNewDappsAddresses': - case 'parity_setNewDappsDefaultAddress': - this._defaultAccount(true); - this._listAccounts(); - return; - } - }); - } -} diff --git a/js/packages/api/subscriptions/personal.spec.js b/js/packages/api/subscriptions/personal.spec.js deleted file mode 100644 index ac046d250..000000000 --- a/js/packages/api/subscriptions/personal.spec.js +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import Personal from './personal'; - -const TEST_DEFAULT = '0xfa64203C044691aA57251aF95f4b48d85eC00Dd5'; -const TEST_INFO = { - [TEST_DEFAULT]: { - name: 'test' - } -}; -const TEST_LIST = [TEST_DEFAULT]; - -function stubApi (accounts, info) { - const _calls = { - accountsInfo: [], - allAccountsInfo: [], - listAccounts: [], - defaultAccount: [] - }; - - return { - _calls, - transport: { - isConnected: true - }, - parity: { - accountsInfo: () => { - const stub = sinon.stub().resolves(info || TEST_INFO)(); - - _calls.accountsInfo.push(stub); - return stub; - }, - allAccountsInfo: () => { - const stub = sinon.stub().resolves(info || TEST_INFO)(); - - _calls.allAccountsInfo.push(stub); - return stub; - }, - defaultAccount: () => { - const stub = sinon.stub().resolves(Object.keys(info || TEST_INFO)[0])(); - - _calls.defaultAccount.push(stub); - return stub; - } - }, - eth: { - accounts: () => { - const stub = sinon.stub().resolves(accounts || TEST_LIST)(); - - _calls.listAccounts.push(stub); - return stub; - } - } - }; -} - -function stubLogging () { - return { - subscribe: sinon.stub() - }; -} - -describe('api/subscriptions/personal', () => { - let api; - let cb; - let logging; - let personal; - - beforeEach(() => { - api = stubApi(); - cb = sinon.stub(); - logging = stubLogging(); - personal = new Personal(cb, api, logging); - }); - - describe('constructor', () => { - it('starts the instance in a stopped state', () => { - expect(personal.isStarted).to.be.false; - }); - }); - - describe('start', () => { - describe('info available', () => { - beforeEach(() => { - return personal.start(); - }); - - it('sets the started status', () => { - expect(personal.isStarted).to.be.true; - }); - - it('calls parity_accountsInfo', () => { - expect(api._calls.accountsInfo.length).to.be.ok; - }); - - it('calls parity_allAccountsInfo', () => { - expect(api._calls.allAccountsInfo.length).to.be.ok; - }); - - it('calls eth_accounts', () => { - expect(api._calls.listAccounts.length).to.be.ok; - }); - - it('updates subscribers', () => { - expect(cb).to.have.been.calledWith('parity_defaultAccount', null, TEST_DEFAULT); - expect(cb).to.have.been.calledWith('eth_accounts', null, TEST_LIST); - expect(cb).to.have.been.calledWith('parity_accountsInfo', null, TEST_INFO); - expect(cb).to.have.been.calledWith('parity_allAccountsInfo', null, TEST_INFO); - }); - }); - - describe('info not available', () => { - beforeEach(() => { - api = stubApi([], {}); - personal = new Personal(cb, api, logging); - return personal.start(); - }); - - it('sets the started status', () => { - expect(personal.isStarted).to.be.true; - }); - - it('calls parity_defaultAccount', () => { - expect(api._calls.defaultAccount.length).to.be.ok; - }); - - it('calls personal_accountsInfo', () => { - expect(api._calls.accountsInfo.length).to.be.ok; - }); - - it('calls personal_allAccountsInfo', () => { - expect(api._calls.allAccountsInfo.length).to.be.ok; - }); - - it('calls personal_listAccounts', () => { - expect(api._calls.listAccounts.length).to.be.ok; - }); - }); - }); -}); diff --git a/js/packages/api/subscriptions/signer.js b/js/packages/api/subscriptions/signer.js deleted file mode 100644 index 2215ed7f3..000000000 --- a/js/packages/api/subscriptions/signer.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { outTransaction } from '../format/output'; - -export default class Signer { - constructor (updateSubscriptions, api, subscriber) { - this._subscriber = subscriber; - this._api = api; - this._updateSubscriptions = updateSubscriptions; - this._started = false; - } - - get isStarted () { - return this._started; - } - - start () { - this._started = true; - - return Promise.all([ - this._listRequests(true), - this._loggingSubscribe() - ]); - } - - _listRequests = (doTimeout) => { - const nextTimeout = (timeout = 1000) => { - if (doTimeout) { - setTimeout(() => { - this._listRequests(true); - }, timeout); - } - }; - - if (!this._api.transport.isConnected) { - nextTimeout(500); - return; - } - - return this._api.signer - .requestsToConfirm() - .then((requests) => { - this._updateSubscriptions('signer_requestsToConfirm', null, requests); - nextTimeout(); - }) - .catch(() => nextTimeout()); - } - - _postTransaction (data) { - const request = { - transaction: outTransaction(data.params[0]), - requestId: data.json.result.result - }; - - this._updateSubscriptions('parity_postTransaction', null, request); - } - - _loggingSubscribe () { - return this._subscriber.subscribe('logging', (error, data) => { - if (error || !data) { - return; - } - - switch (data.method) { - case 'eth_sendTransaction': - case 'eth_sendRawTransaction': - this._listRequests(false); - return; - - case 'parity_postTransaction': - this._postTransaction(data); - this._listRequests(false); - return; - } - }); - } -} diff --git a/js/packages/api/transport/error.js b/js/packages/api/transport/error.js deleted file mode 100644 index 9049705fa..000000000 --- a/js/packages/api/transport/error.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import ExtendableError from 'es6-error'; - -export const ERROR_CODES = { - UNSUPPORTED_REQUEST: -32000, - NO_WORK: -32001, - NO_AUTHOR: -32002, - NO_NEW_WORK: -32003, - NO_WORK_REQUIRED: -32004, - NOT_ENOUGH_DATA: -32006, - UNKNOWN_ERROR: -32009, - TRANSACTION_ERROR: -32010, - EXECUTION_ERROR: -32015, - EXCEPTION_ERROR: -32016, - ACCOUNT_LOCKED: -32020, - PASSWORD_INVALID: -32021, - ACCOUNT_ERROR: -32023, - SIGNER_DISABLED: -32030, - DAPPS_DISABLED: -32031, - NETWORK_DISABLED: -32035, - REQUEST_REJECTED: -32040, - REQUEST_REJECTED_LIMIT: -32041, - REQUEST_NOT_FOUND: -32042, - COMPILATION_ERROR: -32050, - ENCRYPTION_ERROR: -32055, - FETCH_ERROR: -32060, - INVALID_PARAMS: -32602 -}; - -export default class TransportError extends ExtendableError { - static requestRejected (method = null) { - return new TransportError(method, ERROR_CODES.REQUEST_REJECTED, 'Request has been rejected.'); - } - - constructor (method, code, message) { - const m = `${method}: ${code}: ${message}`; - - super(m); - - this.code = code; - this.type = Object.keys(ERROR_CODES).find((k) => ERROR_CODES[k] === code) || ''; - - this.method = method; - this.text = message; - } -} diff --git a/js/packages/api/transport/http/http.e2e.js b/js/packages/api/transport/http/http.e2e.js deleted file mode 100644 index af2fb1fbb..000000000 --- a/js/packages/api/transport/http/http.e2e.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Http from './http'; - -const http = new Http('http://localhost:8545'); - -describe('transport/Http', () => { - it('connects and makes a call to web3_clientVersion', () => { - return http.execute('web3_clientVersion').then((version) => { - const [client] = version.split('/'); - - expect(client === 'Geth' || client === 'Parity').to.be.ok; - }); - }); -}); diff --git a/js/packages/api/transport/http/http.js b/js/packages/api/transport/http/http.js deleted file mode 100644 index 66ef2dec7..000000000 --- a/js/packages/api/transport/http/http.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Logging } from '../../subscriptions'; -import JsonRpcBase from '../jsonRpcBase'; -import TransportError from '../error'; - -/* global fetch */ -export default class Http extends JsonRpcBase { - constructor (url, connectTimeout = 1000) { - super(); - - this._connected = true; - this._url = url; - this._connectTimeout = connectTimeout; - - this._pollConnection(); - } - - _encodeOptions (method, params) { - const json = this.encode(method, params); - - this.log(json); - - return { - method: 'POST', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Content-Length': json.length - }, - body: json - }; - } - - _execute (method, params) { - const request = this._encodeOptions(method, params); - - return fetch(this._url, request) - .catch((error) => { - this._setDisconnected(); - throw error; - }) - .then((response) => { - this._setConnected(); - - if (response.status !== 200) { - this._setDisconnected(); - this.error(JSON.stringify({ status: response.status, statusText: response.statusText })); - console.error(`${method}(${JSON.stringify(params)}): ${response.status}: ${response.statusText}`); - - throw new Error(`${response.status}: ${response.statusText}`); - } - - return response.json(); - }) - .then((response) => { - Logging.send(method, params, { request, response }); - - if (response.error) { - this.error(JSON.stringify(response)); - console.error(`${method}(${JSON.stringify(params)}): ${response.error.code}: ${response.error.message}`); - - const error = new TransportError(method, response.error.code, response.error.message); - - throw error; - } - - this.log(JSON.stringify(response)); - return response.result; - }); - } - - _pollConnection = () => { - if (this._connectTimeout <= 0) { - return; - } - - const nextTimeout = () => setTimeout(this._pollConnection, this._connectTimeout); - - this - .execute('net_listening') - .then(() => nextTimeout()) - .catch(() => nextTimeout()); - } - - set url (url) { - this._url = url; - } -} diff --git a/js/packages/api/transport/http/http.spec.js b/js/packages/api/transport/http/http.spec.js deleted file mode 100644 index 6ebb52372..000000000 --- a/js/packages/api/transport/http/http.spec.js +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { TEST_HTTP_URL, mockHttp } from '../../../../test/mockRpc'; -import Http from './http'; - -const transport = new Http(TEST_HTTP_URL, -1); - -describe('api/transport/Http', () => { - describe('instance', () => { - it('encodes the options correctly', () => { - const opt = transport._encodeOptions('someMethod', ['param']); - const enc = { - method: 'POST', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Content-Length': 65 - }, - body: `{"jsonrpc":"2.0","method":"someMethod","params":["param"],"id":${transport._id - 1}}` - }; - - expect(opt).to.deep.equal(enc); - }); - }); - - describe('transport emitter', () => { - it('emits close event', (done) => { - transport.once('close', () => { - done(); - }); - - transport.execute('eth_call'); - }); - - it('emits open event', (done) => { - mockHttp([{ method: 'eth_call', reply: { result: '' } }]); - - transport.once('open', () => { - done(); - }); - - transport.execute('eth_call'); - }); - }); - - describe('transport', () => { - const RESULT = ['this is some result']; - - let scope; - let result; - - beforeEach(() => { - scope = mockHttp([{ method: 'eth_call', reply: { result: RESULT } }]); - - return transport - .execute('eth_call', [1, 2, 3, 'test']) - .then((_result) => { - result = _result; - }); - }); - - it('makes POST', () => { - expect(scope.isDone()).to.be.true; - }); - - it('sets jsonrpc', () => { - expect(scope.body.eth_call.jsonrpc).to.equal('2.0'); - }); - - it('sets the method', () => { - expect(scope.body.eth_call.method).to.equal('eth_call'); - }); - - it('passes the params', () => { - expect(scope.body.eth_call.params).to.deep.equal([1, 2, 3, 'test']); - }); - - it('increments the id', () => { - expect(scope.body.eth_call.id).not.to.equal(0); - }); - - it('passes the actual result back', () => { - expect(result).to.deep.equal(RESULT); - }); - }); - - describe('HTTP errors', () => { - let scope; - let error; - - beforeEach(() => { - scope = mockHttp([{ method: 'eth_call', reply: {}, code: 500 }]); - - return transport - .execute('eth_call') - .catch((_error) => { - error = _error; - }); - }); - - it('returns HTTP errors as throws', () => { - expect(scope.isDone()).to.be.true; - expect(error.message).to.match(/Internal Server Error/); - }); - }); - - describe('RPC errors', () => { - const ERROR = { code: -1, message: 'ERROR: RPC failure' }; - - let scope; - let error; - - beforeEach(() => { - scope = mockHttp([{ method: 'eth_call', reply: { error: ERROR } }]); - - return transport - .execute('eth_call') - .catch((_error) => { - error = _error; - }); - }); - - it('returns RPC errors as throws', () => { - expect(scope.isDone()).to.be.true; - expect(error.message).to.match(/RPC failure/); - }); - }); -}); diff --git a/js/packages/api/transport/http/index.js b/js/packages/api/transport/http/index.js deleted file mode 100644 index dfd172165..000000000 --- a/js/packages/api/transport/http/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './http'; diff --git a/js/packages/api/transport/index.js b/js/packages/api/transport/index.js deleted file mode 100644 index 896cf5c5f..000000000 --- a/js/packages/api/transport/index.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Ws from './ws'; - -export Http from './http'; -export TransportError from './error'; -export Middleware from './middleware'; - -const WsSecure = Ws; - -export { - Ws, - WsSecure -}; diff --git a/js/packages/api/transport/jsonRpcBase.js b/js/packages/api/transport/jsonRpcBase.js deleted file mode 100644 index 93f63e37a..000000000 --- a/js/packages/api/transport/jsonRpcBase.js +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import EventEmitter from 'eventemitter3'; -import { Logging } from '../subscriptions'; - -export default class JsonRpcBase extends EventEmitter { - constructor () { - super(); - - this._id = 1; - this._debug = false; - this._connected = false; - this._middlewareList = Promise.resolve([]); - } - - encode (method, params) { - const json = JSON.stringify({ - jsonrpc: '2.0', - method: method, - params: params, - id: this._id++ - }); - - return json; - } - - addMiddleware (Middleware) { - this._middlewareList = Promise - .all([ - Middleware, - this._middlewareList - ]) - .then(([Middleware, middlewareList]) => { - // Do nothing if `handlerPromise` resolves to a null-y value. - if (Middleware == null) { - return middlewareList; - } - - // don't mutate the original array - return middlewareList.concat([new Middleware(this)]); - }); - } - - _wrapSuccessResult (result) { - return { - id: this._id, - jsonrpc: '2.0', - result - }; - } - - _wrapErrorResult (error) { - return { - id: this._id, - jsonrpc: '2.0', - error: { - code: error.code, - message: error.text - } - }; - } - - execute (method, params) { - return this._middlewareList.then((middlewareList) => { - for (const middleware of middlewareList) { - const res = middleware.handle(method, params); - - if (res != null) { - return Promise - .resolve(res) - .then((res) => { - const result = this._wrapSuccessResult(res); - const json = this.encode(method, params); - - Logging.send(method, params, { json, result }); - - return res; - }); - } - } - - return this._execute(method, params); - }); - } - - _execute () { - throw new Error('Missing implementation of JsonRpcBase#_execute'); - } - - _setConnected () { - if (!this._connected) { - this._connected = true; - this.emit('open'); - } - } - - _setDisconnected () { - if (this._connected) { - this._connected = false; - this.emit('close'); - } - } - - get id () { - return this._id; - } - - get isDebug () { - return this._debug; - } - - get isConnected () { - return this._connected; - } - - setDebug (flag) { - this._debug = flag; - } - - error (error) { - if (this.isDebug) { - console.error(error); - } - } - - log (log) { - if (this.isDebug) { - console.log(log); - } - } -} diff --git a/js/packages/api/transport/jsonRpcBase.spec.js b/js/packages/api/transport/jsonRpcBase.spec.js deleted file mode 100644 index 6c3b95564..000000000 --- a/js/packages/api/transport/jsonRpcBase.spec.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import JsonRpcBase from './jsonRpcBase'; - -const base = new JsonRpcBase(); - -describe('api/transport/JsonRpcBase', () => { - describe('encode', () => { - it('encodes the body correctly, incrementing id', () => { - const id = base.id; - const bdy = base.encode('someMethod', ['param1', 'param2']); - const enc = `{"jsonrpc":"2.0","method":"someMethod","params":["param1","param2"],"id":${id}}`; - - expect(bdy).to.equal(enc); - expect(base.id - id).to.equal(1); - }); - }); - - describe('setDebug', () => { - it('starts with disabled flag', () => { - expect(base.isDebug).to.be.false; - }); - - it('true flag switches on', () => { - base.setDebug(true); - expect(base.isDebug).to.be.true; - }); - - it('false flag switches off', () => { - base.setDebug(true); - expect(base.isDebug).to.be.true; - base.setDebug(false); - expect(base.isDebug).to.be.false; - }); - - describe('logging', () => { - beforeEach(() => { - sinon.spy(console, 'log'); - sinon.spy(console, 'error'); - }); - - afterEach(() => { - console.log.restore(); - console.error.restore(); - }); - - it('does not log errors with flag off', () => { - base.setDebug(false); - base.log('error'); - expect(console.log).to.not.be.called; - }); - - it('does not log errors with flag off', () => { - base.setDebug(false); - base.error('error'); - expect(console.error).to.not.be.called; - }); - - it('does log errors with flag on', () => { - base.setDebug(true); - base.log('error'); - expect(console.log).to.be.called; - }); - - it('does log errors with flag on', () => { - base.setDebug(true); - base.error('error'); - expect(console.error).to.be.called; - }); - }); - }); -}); diff --git a/js/packages/api/transport/middleware.js b/js/packages/api/transport/middleware.js deleted file mode 100644 index ef029b1cb..000000000 --- a/js/packages/api/transport/middleware.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class Middleware { - constructor (transport) { - this._transport = transport; - this._handlers = {}; - } - - register (method, handler) { - if (method in this._handlers) { - throw new Error(`${method} is already defined in the middleware!`); - } - - this._handlers[method] = handler; - } - - handle (method, params) { - const handler = this._handlers[method]; - - if (handler != null) { - return handler(params); - } - - return null; - } - - rpcRequest (method, params) { - return this._transport._execute(method, params); - } -} diff --git a/js/packages/api/transport/middleware.spec.js b/js/packages/api/transport/middleware.spec.js deleted file mode 100644 index e8400089b..000000000 --- a/js/packages/api/transport/middleware.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Middleware from './middleware'; -import JsonRpcBase from './jsonRpcBase'; - -const MOCKED = 'mocked!'; - -class MockTransport extends JsonRpcBase { - _execute () { - return Promise.resolve(MOCKED); - } -} - -class MockMiddleware extends Middleware { - constructor (transport) { - super(transport); - - this.register('mock_rpc', ([num]) => num); - this.register('mock_null', () => null); - } -} - -describe('api/transport/Middleware', () => { - let transport; - - beforeEach(() => { - transport = new MockTransport(); - transport.addMiddleware(MockMiddleware); - }); - - it('Routes requests to middleware', () => { - return transport.execute('mock_rpc', [100]).then((num) => { - expect(num).to.be.equal(100); - }); - }); - - it('Passes non-mocked requests through', () => { - return transport.execute('not_moced', [200]).then((result) => { - expect(result).to.be.equal(MOCKED); - }); - }); - - it('Passes mocked requests through, if middleware returns null', () => { - return transport.execute('mock_null', [300]).then((result) => { - expect(result).to.be.equal(MOCKED); - }); - }); -}); diff --git a/js/packages/api/transport/ws/index.js b/js/packages/api/transport/ws/index.js deleted file mode 100644 index 7ab0be131..000000000 --- a/js/packages/api/transport/ws/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './ws'; diff --git a/js/packages/api/transport/ws/ws.e2e.js b/js/packages/api/transport/ws/ws.e2e.js deleted file mode 100644 index 92e06d915..000000000 --- a/js/packages/api/transport/ws/ws.e2e.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Ws from './ws'; - -const ws = new Ws('ws://localhost:8546/'); - -describe('transport/WsSecure', () => { - it('connects and makes a call to web3_clientVersion', () => { - return ws.execute('web3_clientVersion').then((version) => { - const [client] = version.split('/'); - - expect(client === 'Geth' || client === 'Parity').to.be.ok; - }); - }); -}); diff --git a/js/packages/api/transport/ws/ws.js b/js/packages/api/transport/ws/ws.js deleted file mode 100644 index b93adc54f..000000000 --- a/js/packages/api/transport/ws/ws.js +++ /dev/null @@ -1,397 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { keccak_256 } from 'js-sha3'; // eslint-disable-line camelcase - -import { Logging } from '../../subscriptions'; -import JsonRpcBase from '../jsonRpcBase'; -import TransportError from '../error'; - -/* global WebSocket */ -export default class Ws extends JsonRpcBase { - // token is optional (secure API) - constructor (url, token = null, autoconnect = true) { - super(); - - this._url = url; - this._token = token; - this._messages = {}; - this._subscriptions = { 'eth_subscription': [], 'parity_subscription': [] }; - this._sessionHash = null; - - this._connecting = false; - this._connected = false; - this._lastError = null; - this._autoConnect = autoconnect; - this._retries = 0; - this._reconnectTimeoutId = null; - - this._connectPromise = null; - this._connectPromiseFunctions = {}; - - if (autoconnect) { - this.connect(); - } - } - - updateToken (token, connect = true) { - this._token = token; - // this._autoConnect = true; - - if (connect) { - this.connect(); - } - } - - connect () { - if (this._connected) { - return Promise.resolve(); - } - - if (this._connecting) { - return this._connectPromise || Promise.resolve(); - } - - if (this._reconnectTimeoutId) { - window.clearTimeout(this._reconnectTimeoutId); - this._reconnectTimeoutId = null; - } - - if (this._ws) { - this._ws.onerror = null; - this._ws.onopen = null; - this._ws.onclose = null; - this._ws.onmessage = null; - this._ws.close(); - this._ws = null; - this._sessionHash = null; - } - this._connecting = true; - this._connected = false; - this._lastError = null; - - // rpc secure API - if (this._token) { - const time = parseInt(new Date().getTime() / 1000, 10); - const sha3 = keccak_256(`${this._token}:${time}`); - const hash = `${sha3}_${time}`; - - this._sessionHash = sha3; - this._ws = new WebSocket(this._url, hash); - // non-secure API - } else { - this._ws = new WebSocket(this._url); - } - - this._ws.onerror = this._onError; - this._ws.onopen = this._onOpen; - this._ws.onclose = this._onClose; - this._ws.onmessage = this._onMessage; - - // Get counts in dev mode only - if (process.env.NODE_ENV === 'development') { - this._count = 0; - this._lastCount = { - timestamp: Date.now(), - count: 0 - }; - - window.setInterval(() => { - const n = this._count - this._lastCount.count; - const t = (Date.now() - this._lastCount.timestamp) / 1000; - const s = Math.round(1000 * n / t) / 1000; - - if (this._debug) { - console.log('::parityWS', `speed: ${s} req/s`, `count: ${this._count}`, `(+${n})`); - } - - this._lastCount = { - timestamp: Date.now(), - count: this._count - }; - }, 5000); - - window._parityWS = this; - } - - this._connectPromise = new Promise((resolve, reject) => { - this._connectPromiseFunctions = { resolve, reject }; - }); - - return this._connectPromise; - } - - _onOpen = (event) => { - this._setConnected(); - this._connecting = false; - this._retries = 0; - - Object.keys(this._messages) - .filter((id) => this._messages[id].queued) - .forEach(this._send); - - this._connectPromiseFunctions.resolve(); - - this._connectPromise = null; - this._connectPromiseFunctions = {}; - } - - _onClose = (event) => { - this._setDisconnected(); - this._connecting = false; - - event.timestamp = Date.now(); - this._lastError = event; - - if (this._autoConnect) { - const timeout = this.retryTimeout; - - const time = timeout < 1000 - ? Math.round(timeout) + 'ms' - : (Math.round(timeout / 10) / 100) + 's'; - - console.log('ws:onClose', `trying again in ${time}...`); - - this._reconnectTimeoutId = setTimeout(() => { - this.connect(); - }, timeout); - - return; - } - - if (this._connectPromise) { - this._connectPromiseFunctions.reject(event); - - this._connectPromise = null; - this._connectPromiseFunctions = {}; - } - - console.log('ws:onClose'); - } - - _onError = (event) => { - // Only print error if the WS is connected - // ie. don't print if error == closed - window.setTimeout(() => { - if (this._connected) { - console.error('ws:onError'); - - event.timestamp = Date.now(); - this._lastError = event; - - if (this._connectPromise) { - this._connectPromiseFunctions.reject(event); - - this._connectPromise = null; - this._connectPromiseFunctions = {}; - } - } - }, 50); - } - - _extract = (result) => { - const { result: res, id, method, params } = result; - const msg = this._messages[id]; - - // initial pubsub ACK - if (id && msg.subscription) { - // save subscription to map subId -> messageId - this._subscriptions[msg.subscription][res] = id; - // resolve promise with messageId because subId's can collide (eth/parity) - msg.resolve(id); - // save subId for unsubscribing later - msg.subId = res; - return msg; - } - - // normal message - if (id) { - return msg; - } - - // pubsub format - if (method.includes('subscription')) { - const messageId = this._messages[this._subscriptions[method][params.subscription]]; - - if (messageId) { - return messageId; - } else { - throw Error(`Received Subscription which is already unsubscribed ${JSON.stringify(result)}`); - } - } - - throw Error(`Unknown message format: No ID or subscription ${JSON.stringify(result)}`); - } - - _onMessage = (event) => { - try { - const result = JSON.parse(event.data); - const { method, params, json, resolve, reject, callback, subscription } = this._extract(result); - - Logging.send(method, params, { json, result }); - - result.error = (result.params && result.params.error) || result.error; - if (result.error) { - this.error(event.data); - - // Don't print error if request rejected or not is not yet up... - if (!/(rejected|not yet up)/.test(result.error.message)) { - console.error(`${method}(${JSON.stringify(params)}): ${result.error.code}: ${result.error.message}`); - } - - const error = new TransportError(method, result.error.code, result.error.message); - - if (result.id) { - reject(error); - } else { - callback(error); - } - - delete this._messages[result.id]; - return; - } - - // if not initial subscription message resolve & delete - if (result.id && !subscription) { - resolve(result.result); - delete this._messages[result.id]; - } else if (result.params) { - callback(null, result.params.result); - } - } catch (e) { - console.error('ws::_onMessage', event.data, e); - } - } - - _send = (id) => { - const message = this._messages[id]; - - if (this._connected) { - if (process.env.NODE_ENV === 'development') { - this._count++; - } - - return this._ws.send(message.json); - } - - message.queued = !this._connected; - message.timestamp = Date.now(); - } - - _execute (method, params) { - return new Promise((resolve, reject) => { - const id = this.id; - const json = this.encode(method, params); - - this._messages[id] = { id, method, params, json, resolve, reject }; - this._send(id); - }); - } - - _methodsFromApi (api) { - const method = `${api}_subscribe`; - const uMethod = `${api}_unsubscribe`; - const subscription = `${api}_subscription`; - - return { method, uMethod, subscription }; - } - - subscribe (api, callback, params) { - return new Promise((resolve, reject) => { - const id = this.id; - const { method, uMethod, subscription } = this._methodsFromApi(api); - const json = this.encode(method, params); - - this._messages[id] = { id, method, uMethod, params, json, resolve, reject, callback, subscription }; - - this._send(id); - }); - } - - unsubscribeAll () { - return new Promise((resolve, reject) => { - var unsubscribed = 0; - let keys = Object.keys(this._messages); - - keys.forEach(i => this._messages[i].subscription ? this.unsubscribe(this._messages[i].subId).then(_ => unsubscribed++, reject) : null); - resolve(unsubscribed); - }); - } - - unsubscribe (messageId) { - return new Promise((resolve, reject) => { - const id = this.id; - const { subId, uMethod, subscription } = this._messages[messageId]; - const params = [subId]; - const json = this.encode(uMethod, params); - const uResolve = (v) => { - delete this._messages[messageId]; - delete this._subscriptions[subscription][subId]; - resolve(v); - }; - - this._messages[id] = { id, method: uMethod, params, json, resolve: uResolve, reject }; - this._send(id); - }); - } - - set url (url) { - this._url = url; - } - - get token () { - return this._token; - } - - get sessionHash () { - return this._sessionHash; - } - - get isAutoConnect () { - return this._autoConnect; - } - - get isConnecting () { - return this._connecting; - } - - get lastError () { - return this._lastError; - } - - /** - * Exponential Timeout for Retries - * - * @see http://dthain.blogspot.de/2009/02/exponential-backoff-in-distributed.html - */ - get retryTimeout () { - // R between 1 and 2 - const R = Math.random() + 1; - // Initial timeout (100ms) - const T = 100; - // Exponential Factor - const F = 2; - // Max timeout (4s) - const M = 4000; - // Current number of retries - const N = this._retries; - - // Increase retries number - this._retries++; - - return Math.min(R * T * Math.pow(F, N), M); - } -} diff --git a/js/packages/api/transport/ws/ws.spec.js b/js/packages/api/transport/ws/ws.spec.js deleted file mode 100644 index 603c16c58..000000000 --- a/js/packages/api/transport/ws/ws.spec.js +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { TEST_WS_URL, mockWs } from '../../../../test/mockRpc'; -import Ws from './ws'; - -describe('api/transport/ws', () => { - let transport; - let scope; - - describe('transport emitter', () => { - const connect = () => { - const scope = mockWs(); - const transport = new Ws(TEST_WS_URL); - - return { transport, scope }; - }; - - it('emits open event', (done) => { - const { transport, scope } = connect(); - - transport.once('open', () => { - done(); - }); - - scope.stop(); - }); - - it('emits close event', (done) => { - const { transport, scope } = connect(); - - transport.once('open', () => { - scope.server.close(); - }); - - transport.once('close', () => { - done(); - }); - }); - }); - - describe('transport', () => { - let result; - - beforeEach(() => { - scope = mockWs([{ method: 'test_anyCall', reply: 'TestResult' }]); - transport = new Ws(TEST_WS_URL); - - return transport - .execute('test_anyCall', [1, 2, 3]) - .then((_result) => { - result = _result; - }); - }); - - afterEach(() => { - scope.stop(); - }); - - it('makes call', () => { - expect(scope.isDone()).to.be.true; - }); - - it('sets jsonrpc', () => { - expect(scope.body.test_anyCall.jsonrpc).to.equal('2.0'); - }); - - it('sets the method', () => { - expect(scope.body.test_anyCall.method).to.equal('test_anyCall'); - }); - - it('passes the params', () => { - expect(scope.body.test_anyCall.params).to.deep.equal([1, 2, 3]); - }); - - it('increments the id', () => { - expect(scope.body.test_anyCall.id).not.to.equal(0); - }); - - it('passes the actual result back', () => { - expect(result).to.equal('TestResult'); - }); - }); - - describe('errors', () => { - beforeEach(() => { - scope = mockWs([{ method: 'test_anyCall', reply: { error: { code: 1, message: 'TestError' } } }]); - transport = new Ws(TEST_WS_URL); - }); - - afterEach(() => { - scope.stop(); - }); - - it('returns RPC errors when encountered', () => { - return transport - .execute('test_anyCall') - .catch((error) => { - expect(error).to.match(/TestError/); - }); - }); - }); -}); diff --git a/js/packages/api/util/decode.js b/js/packages/api/util/decode.js deleted file mode 100644 index 995118a72..000000000 --- a/js/packages/api/util/decode.js +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isHex } from './types'; - -import Func from '@parity/abi/spec/function'; -import { fromParamType, toParamType } from '@parity/abi/spec/paramType/format'; - -export function decodeCallData (data) { - if (!isHex(data)) { - throw new Error('Input to decodeCallData should be a hex value'); - } - - if (data.substr(0, 2) === '0x') { - return decodeCallData(data.slice(2)); - } - - if (data.length < 8) { - throw new Error('Input to decodeCallData should be method signature + data'); - } - - const signature = data.substr(0, 8); - const paramdata = data.substr(8); - - return { - signature: `0x${signature}`, - paramdata: `0x${paramdata}` - }; -} - -export function decodeMethodInput (methodAbi, paramdata) { - if (!methodAbi) { - throw new Error('decodeMethodInput should receive valid method-specific ABI'); - } - - if (paramdata && paramdata.length) { - if (!isHex(paramdata)) { - throw new Error('Input to decodeMethodInput should be a hex value'); - } - - if (paramdata.substr(0, 2) === '0x') { - return decodeMethodInput(methodAbi, paramdata.slice(2)); - } - } - - return new Func(methodAbi).decodeInput(paramdata).map((decoded) => decoded.value); -} - -// takes a method in form name(...,types) and returns the inferred abi definition -export function methodToAbi (method) { - const length = method.length; - const typesStart = method.indexOf('('); - const typesEnd = method.indexOf(')'); - - if (typesStart === -1) { - throw new Error(`Missing start ( in call to decodeMethod with ${method}`); - } else if (typesEnd === -1) { - throw new Error(`Missing end ) in call to decodeMethod with ${method}`); - } else if (typesEnd < typesStart) { - throw new Error(`End ) is before start ( in call to decodeMethod with ${method}`); - } else if (typesEnd !== length - 1) { - throw new Error(`Extra characters after end ) in call to decodeMethod with ${method}`); - } - - const name = method.substr(0, typesStart); - const types = method.substr(typesStart + 1, length - (typesStart + 1) - 1).split(','); - const inputs = types.filter((_type) => _type.length).map((_type) => { - const type = fromParamType(toParamType(_type)); - - return { type }; - }); - - return { type: 'function', name, inputs }; -} - -export function abiDecode (inputTypes, data) { - return decodeMethodInput({ - inputs: inputTypes.map((type) => { - return { type }; - }) - }, data); -} diff --git a/js/packages/api/util/decode.spec.js b/js/packages/api/util/decode.spec.js deleted file mode 100644 index 006c6a863..000000000 --- a/js/packages/api/util/decode.spec.js +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import { abiDecode, decodeCallData, decodeMethodInput, methodToAbi } from './decode'; - -describe('api/util/decode', () => { - const METH = '0x70a08231'; - const ENCO = '0x70a082310000000000000000000000005A5eFF38DA95b0D58b6C616f2699168B480953C9'; - const DATA = '0x0000000000000000000000005A5eFF38DA95b0D58b6C616f2699168B480953C9'; - - describe('decodeCallData', () => { - it('throws on non-hex inputs', () => { - expect(() => decodeCallData('invalid')).to.throw(/should be a hex value/); - }); - - it('throws when invalid signature length', () => { - expect(() => decodeCallData(METH.slice(-6))).to.throw(/should be method signature/); - }); - - it('splits valid inputs properly', () => { - expect(decodeCallData(ENCO)).to.deep.equal({ - signature: METH, - paramdata: DATA - }); - }); - }); - - describe('decodeMethodInput', () => { - it('expects a valid ABI', () => { - expect(() => decodeMethodInput(null, null)).to.throw(/should receive valid method/); - }); - - it('expect valid hex parameter data', () => { - expect(() => decodeMethodInput({}, 'invalid')).to.throw(/should be a hex value/); - }); - - it('correctly decodes valid inputs', () => { - expect( - decodeMethodInput({ - type: 'function', - inputs: [ - { type: 'uint' } - ] - }, DATA) - ).to.deep.equal( - [ new BigNumber('0x5a5eff38da95b0d58b6c616f2699168b480953c9') ] - ); - }); - }); - - describe('methodToAbi', () => { - it('throws when no start ( specified', () => { - expect(() => methodToAbi('invalid,uint,bool)')).to.throw(/Missing start \(/); - }); - - it('throws when no end ) specified', () => { - expect(() => methodToAbi('invalid(uint,bool')).to.throw(/Missing end \)/); - }); - - it('throws when end ) is not in the last position', () => { - expect(() => methodToAbi('invalid(uint,bool)2')).to.throw(/Extra characters after end \)/); - }); - - it('throws when start ( is after end )', () => { - expect(() => methodToAbi('invalid)uint,bool(')).to.throw(/End \) is before start \(/); - }); - - it('throws when invalid types are present', () => { - expect(() => methodToAbi('method(invalidType,bool,uint)')).to.throw(/Cannot convert invalidType/); - }); - - it('returns a valid methodabi for a valid method', () => { - expect(methodToAbi('valid(uint,bool)')).to.deep.equals({ - type: 'function', - name: 'valid', - inputs: [ - { type: 'uint256' }, - { type: 'bool' } - ] - }); - }); - }); - - describe('abiDecode', () => { - it('correctly decodes valid inputs', () => { - expect(abiDecode(['uint'], DATA)).to.deep.equal( - [ new BigNumber('0x5a5eff38da95b0d58b6c616f2699168b480953c9') ] - ); - }); - }); -}); diff --git a/js/packages/api/util/encode.js b/js/packages/api/util/encode.js deleted file mode 100644 index e936faa38..000000000 --- a/js/packages/api/util/encode.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Abi from '@parity/abi'; -import Func from '@parity/abi/spec/function'; - -import { abiDecode } from './decode'; -import { cleanupValue } from './format'; -import { sha3 } from './sha3'; - -export function encodeMethodCallAbi (methodAbi = {}, values = []) { - const func = new Func(methodAbi); - const tokens = Abi.encodeTokens(func.inputParamTypes(), values); - const call = func.encodeCall(tokens); - - return `0x${call}`; -} - -export function abiEncode (methodName, inputTypes, data) { - const result = encodeMethodCallAbi({ - name: methodName || '', - type: 'function', - inputs: inputTypes.map((type) => { - return { type }; - }) - }, data); - - return result; -} - -export function abiUnencode (abi, data) { - const callsig = data.substr(2, 8); - const op = abi.find((field) => { - return field.type === 'function' && - abiSignature(field.name, field.inputs.map((input) => input.type)).substr(2, 8) === callsig; - }); - - if (!op) { - console.warn(`Unknown function ID: ${callsig}`); - return null; - } - - let argsByIndex = abiDecode(op.inputs.map((field) => field.type), '0x' + data.substr(10)) - .map((value, index) => cleanupValue(value, op.inputs[index].type)); - const argsByName = op.inputs.reduce((result, field, index) => { - result[field.name] = argsByIndex[index]; - - return result; - }, {}); - - return [op.name, argsByName, argsByIndex]; -} - -export function abiSignature (name, inputs) { - return sha3(`${name}(${inputs.join()})`); -} diff --git a/js/packages/api/util/encode.spec.js b/js/packages/api/util/encode.spec.js deleted file mode 100644 index 7847f06ec..000000000 --- a/js/packages/api/util/encode.spec.js +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { abiEncode, abiUnencode, abiSignature, encodeMethodCallAbi } from './encode'; - -const ABI = { - type: 'function', - name: 'valid', - inputs: [ - { type: 'uint256' }, - { type: 'bool' } - ] -}; - -const RESULT = [ - 'f87fa141', - '0000000000000000000000000000000000000000000000000000000000000123', - '0000000000000000000000000000000000000000000000000000000000000001' -].join(''); -const VARIABLE = [ - '5a6fbce0', - 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470', - '0000000000000000000000000000000000000000000000000000000000000040', - '000000000000000000000000000000000000000000000000000000000000000f', - '687474703a2f2f666f6f2e6261722f0000000000000000000000000000000000' -].join(''); - -describe('api/util/encode', () => { - describe('encodeMethodCallAbi', () => { - it('encodes calls with the correct result', () => { - expect(encodeMethodCallAbi(ABI, [0x123, true])).to.equal(`0x${RESULT}`); - }); - }); - - describe('abiEncode', () => { - it('encodes calls with the correct result', () => { - expect(abiEncode('valid', ['uint256', 'bool'], [0x123, true])).to.equal(`0x${RESULT}`); - }); - - it('encodes variable values', () => { - expect( - abiEncode( - 'hintUrl', ['bytes32', 'string'], ['0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470', 'http://foo.bar/'] - ) - ).to.equal(`0x${VARIABLE}`); - }); - - it('encodes only the data with null name', () => { - expect( - abiEncode(null, ['uint256', 'bool'], [0x123, true]) - ).to.equal(`0x${RESULT.substr(8)}`); - }); - }); - - describe('abiUnencode', () => { - it('decodes data correctly from abi', () => { - expect( - abiUnencode([{ - name: 'test', - type: 'function', - inputs: [ - { type: 'uint', name: 'arga' } - ] - }], '0x1acb6f7700000000000000000000000000000038') - ).to.deep.equal(['test', { arga: 56 }, [56]]); - }); - }); - - // Same example as in abi/util/signature.spec.js - describe('abiSignature', () => { - it('encodes baz(uint32,bool) correctly', () => { - expect( - abiSignature('baz', ['uint32', 'bool']) - ).to.equal('0xcdcd77c0992ec5bbfc459984220f8c45084cc24d9b6efed1fae540db8de801d2'); - }); - }); -}); diff --git a/js/packages/api/util/format.js b/js/packages/api/util/format.js deleted file mode 100644 index 61fc9d32c..000000000 --- a/js/packages/api/util/format.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { range } from 'lodash'; - -export function bytesToHex (bytes) { - return '0x' + Buffer.from(bytes).toString('hex'); -} - -export function cleanupValue (value, type) { - // TODO: make work with arbitrary depth arrays - if (value instanceof Array && type.match(/bytes[0-9]+/)) { - // figure out if it's an ASCII string hiding in there: - let ascii = ''; - - for (let index = 0, ended = false; index < value.length && ascii !== null; ++index) { - const val = value[index]; - - if (val === 0) { - ended = true; - } else { - ascii += String.fromCharCode(val); - } - - if ((ended && val !== 0) || (!ended && (val < 32 || val >= 128))) { - ascii = null; - } - } - - value = ascii === null - ? bytesToHex(value) - : ascii; - } - - if (type.substr(0, 4) === 'uint' && +type.substr(4) <= 48) { - value = +value; - } - - return value; -} - -export function hexToBytes (hex) { - const raw = toHex(hex).slice(2); - const bytes = []; - - for (let i = 0; i < raw.length; i += 2) { - bytes.push(parseInt(raw.substr(i, 2), 16)); - } - - return bytes; -} - -export function hexToAscii (hex) { - const bytes = hexToBytes(hex); - const str = bytes.map((byte) => String.fromCharCode(byte)).join(''); - - return str; -} - -export function bytesToAscii (bytes) { - return bytes.map((b) => String.fromCharCode(b % 512)).join(''); -} - -export function asciiToHex (string) { - return '0x' + string.split('').map((s) => s.charCodeAt(0).toString(16)).join(''); -} - -export function padRight (input, length) { - const value = toHex(input).substr(2, length * 2); - - return '0x' + value + range(length * 2 - value.length).map(() => '0').join(''); -} - -export function padLeft (input, length) { - const value = toHex(input).substr(2, length * 2); - - return '0x' + range(length * 2 - value.length).map(() => '0').join('') + value; -} - -export function toHex (str) { - if (str && str.toString) { - str = str.toString(16); - } - - if (str && str.substr(0, 2) === '0x') { - return str.toLowerCase(); - } - - return `0x${(str || '').toLowerCase()}`; -} diff --git a/js/packages/api/util/format.spec.js b/js/packages/api/util/format.spec.js deleted file mode 100644 index c37205569..000000000 --- a/js/packages/api/util/format.spec.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { bytesToHex, cleanupValue, hexToBytes, hexToAscii, bytesToAscii, asciiToHex } from './format'; - -describe('api/util/format', () => { - describe('bytesToHex', () => { - it('correctly converts an empty array', () => { - expect(bytesToHex([])).to.equal('0x'); - }); - - it('correctly converts a non-empty array', () => { - expect(bytesToHex([0, 15, 16])).to.equal('0x000f10'); - }); - }); - - describe('cleanupValue', () => { - it('returns unknown values as the original', () => { - expect(cleanupValue('original', 'unknown')).to.equal('original'); - }); - - it('returns ascii arrays as ascii', () => { - expect(cleanupValue([97, 115, 99, 105, 105, 0], 'bytes32')).to.equal('ascii'); - }); - - it('returns non-ascii arrays as hex strings', () => { - expect(cleanupValue([97, 200, 0, 0], 'bytes4')).to.equal('0x61c80000'); - }); - - it('returns uint (>48) as the original', () => { - expect(cleanupValue('original', 'uint49')).to.equal('original'); - }); - - it('returns uint (<=48) as the number value', () => { - expect(cleanupValue('12345', 'uint48')).to.equal(12345); - }); - }); - - describe('hexToBytes', () => { - it('correctly converts an empty string', () => { - expect(hexToBytes('')).to.deep.equal([]); - expect(hexToBytes('0x')).to.deep.equal([]); - }); - - it('correctly converts a non-empty string', () => { - expect(hexToBytes('0x000f10')).to.deep.equal([0, 15, 16]); - }); - }); - - describe('asciiToHex', () => { - it('correctly converts an empty string', () => { - expect(asciiToHex('')).to.equal('0x'); - }); - - it('correctly converts a non-empty string', () => { - expect(asciiToHex('abc')).to.equal('0x616263'); - }); - }); - - describe('hexToAscii', () => { - it('correctly converts an empty string', () => { - expect(hexToAscii('')).to.equal(''); - expect(hexToAscii('0x')).to.equal(''); - }); - - it('correctly converts a non-empty string', () => { - expect(hexToAscii('0x616263')).to.equal('abc'); - }); - }); - - describe('bytesToAscii', () => { - it('correctly converts an empty string', () => { - expect(bytesToAscii([])).to.equal(''); - }); - - it('correctly converts a non-empty string', () => { - expect(bytesToAscii([97, 98, 99])).to.equal('abc'); - }); - }); -}); diff --git a/js/packages/api/util/identity.js b/js/packages/api/util/identity.js deleted file mode 100644 index 4df7ab9bb..000000000 --- a/js/packages/api/util/identity.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import blockies from 'blockies'; - -// jsdom doesn't have all the browser features, blockies fail -const TEST_ENV = process.env.NODE_ENV === 'test'; - -export function createIdentityImg (address, scale = 8) { - return TEST_ENV - ? 'test-createIdentityImg' - : blockies({ - seed: (address || '').toLowerCase(), - size: 8, - scale - }).toDataURL(); -} diff --git a/js/packages/api/util/index.js b/js/packages/api/util/index.js deleted file mode 100644 index d174c3431..000000000 --- a/js/packages/api/util/index.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isAddress as isAddressValid, toChecksumAddress } from '@parity/abi/util/address'; - -import { abiDecode, decodeCallData, decodeMethodInput, methodToAbi } from './decode'; -import { abiEncode, abiUnencode, abiSignature, encodeMethodCallAbi } from './encode'; -import { bytesToHex, hexToAscii, asciiToHex, cleanupValue } from './format'; -import { fromWei, toWei } from './wei'; -import { sha3 } from './sha3'; -import { isArray, isFunction, isHex, isInstanceOf, isString } from './types'; -import { createIdentityImg } from './identity'; - -export default { - abiDecode, - abiEncode, - abiUnencode, - abiSignature, - cleanupValue, - isAddressValid, - isArray, - isFunction, - isHex, - isInstanceOf, - isString, - bytesToHex, - hexToAscii, - asciiToHex, - createIdentityImg, - decodeCallData, - decodeMethodInput, - encodeMethodCallAbi, - methodToAbi, - fromWei, - toChecksumAddress, - toWei, - sha3 -}; diff --git a/js/packages/api/util/sha3.js b/js/packages/api/util/sha3.js deleted file mode 100644 index 3ca49cc8e..000000000 --- a/js/packages/api/util/sha3.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { keccak_256 } from 'js-sha3'; // eslint-disable-line - -import { hexToBytes } from './format'; -import { isHex } from './types'; - -export function sha3 (value, options) { - const forceHex = options && options.encoding === 'hex'; - - if (forceHex || (!options && isHex(value))) { - const bytes = hexToBytes(value); - - return sha3(bytes); - } - - const hash = keccak_256(value); - - return `0x${hash}`; -} - -sha3.text = (val) => sha3(val, { encoding: 'raw' }); diff --git a/js/packages/api/util/sha3.spec.js b/js/packages/api/util/sha3.spec.js deleted file mode 100644 index a5c93d940..000000000 --- a/js/packages/api/util/sha3.spec.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { sha3 } from './sha3'; - -describe('api/util/sha3', () => { - describe('sha3', () => { - it('constructs a correct sha3 value', () => { - expect(sha3('jacogr')).to.equal('0x2f4ff4b5a87abbd2edfed699db48a97744e028c7f7ce36444d40d29d792aa4dc'); - }); - - it('constructs a correct sha3 encoded as hex', () => { - const key = '000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298' + '0000000000000000000000000000000000000000000000000000000000000001'; - - expect(sha3(key, { encoding: 'hex' })).to.equal('0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9'); - expect(sha3(`0x${key}`, { encoding: 'hex' })).to.equal('0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9'); - }); - - it('constructs a correct sha3 from Uint8Array', () => { - expect(sha3('01020304', { encoding: 'hex' })).to.equal('0xa6885b3731702da62e8e4a8f584ac46a7f6822f4e2ba50fba902f67b1588d23b'); - expect(sha3(Uint8Array.from([1, 2, 3, 4]))).to.equal('0xa6885b3731702da62e8e4a8f584ac46a7f6822f4e2ba50fba902f67b1588d23b'); - }); - - it('should interpret as bytes by default', () => { - expect(sha3('0x01020304')).to.equal('0xa6885b3731702da62e8e4a8f584ac46a7f6822f4e2ba50fba902f67b1588d23b'); - }); - - it('should force text if option is passed', () => { - expect(sha3('0x01020304', { encoding: 'raw' })).to.equal('0x16bff43de576d28857dcba65a56fc17c5e93c09bd6a709268eff8e62025ae869'); - expect(sha3.text('0x01020304')).to.equal('0x16bff43de576d28857dcba65a56fc17c5e93c09bd6a709268eff8e62025ae869'); - }); - }); -}); diff --git a/js/packages/api/util/types.js b/js/packages/api/util/types.js deleted file mode 100644 index f4278cb51..000000000 --- a/js/packages/api/util/types.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const HEXDIGITS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; - -export function isArray (test) { - return Object.prototype.toString.call(test) === '[object Array]'; -} - -export function isError (test) { - return Object.prototype.toString.call(test) === '[object Error]'; -} - -export function isFunction (test) { - return Object.prototype.toString.call(test) === '[object Function]'; -} - -export function isHex (_test) { - if (!isString(_test)) { - return false; - } - - if (_test.substr(0, 2) === '0x') { - return isHex(_test.slice(2)); - } - - const test = _test.toLowerCase(); - let hex = true; - - for (let idx = 0; hex && idx < test.length; idx++) { - hex = HEXDIGITS.includes(test[idx]); - } - - return hex; -} - -export function isObject (test) { - return Object.prototype.toString.call(test) === '[object Object]'; -} - -export function isString (test) { - return Object.prototype.toString.call(test) === '[object String]'; -} - -export function isInstanceOf (test, clazz) { - return test instanceof clazz; -} diff --git a/js/packages/api/util/types.spec.js b/js/packages/api/util/types.spec.js deleted file mode 100644 index c8672f888..000000000 --- a/js/packages/api/util/types.spec.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import { isArray, isError, isFunction, isHex, isInstanceOf, isObject, isString } from './types'; -import Eth from '../rpc/eth'; - -describe('api/util/types', () => { - describe('isArray', () => { - it('correctly identifies null as false', () => { - expect(isArray(null)).to.be.false; - }); - - it('correctly identifies empty array as true', () => { - expect(isArray([])).to.be.true; - }); - - it('correctly identifies array as true', () => { - expect(isArray([1, 2, 3])).to.be.true; - }); - }); - - describe('isError', () => { - it('correctly identifies null as false', () => { - expect(isError(null)).to.be.false; - }); - - it('correctly identifies Error as true', () => { - expect(isError(new Error('an error'))).to.be.true; - }); - }); - - describe('isFunction', () => { - it('correctly identifies null as false', () => { - expect(isFunction(null)).to.be.false; - }); - - it('correctly identifies function as true', () => { - expect(isFunction(sinon.stub())).to.be.true; - }); - }); - - describe('isHex', () => { - it('correctly identifies hex by leading 0x', () => { - expect(isHex('0x123')).to.be.true; - }); - - it('correctly identifies hex without leading 0x', () => { - expect(isHex('123')).to.be.true; - }); - - it('correctly identifies non-hex values', () => { - expect(isHex('123j')).to.be.false; - }); - - it('correctly indentifies non-string values', () => { - expect(isHex(false)).to.be.false; - expect(isHex()).to.be.false; - expect(isHex([1, 2, 3])).to.be.false; - }); - }); - - describe('isInstanceOf', () => { - it('correctly identifies build-in instanceof', () => { - expect(isInstanceOf(new String('123'), String)).to.be.true; // eslint-disable-line no-new-wrappers - }); - - it('correctly identifies own instanceof', () => { - expect(isInstanceOf(new Eth({}), Eth)).to.be.true; - }); - - it('correctly reports false for own', () => { - expect(isInstanceOf({}, Eth)).to.be.false; - }); - }); - - describe('isObject', () => { - it('correctly identifies empty object as object', () => { - expect(isObject({})).to.be.true; - }); - - it('correctly identifies non-empty object as object', () => { - expect(isObject({ data: '123' })).to.be.true; - }); - - it('correctly identifies Arrays as non-objects', () => { - expect(isObject([1, 2, 3])).to.be.false; - }); - - it('correctly identifies Strings as non-objects', () => { - expect(isObject('123')).to.be.false; - }); - }); - - describe('isString', () => { - it('correctly identifies empty string as string', () => { - expect(isString('')).to.be.true; - }); - - it('correctly identifies string as string', () => { - expect(isString('123')).to.be.true; - }); - }); -}); diff --git a/js/packages/api/util/wei.js b/js/packages/api/util/wei.js deleted file mode 100644 index d17df6958..000000000 --- a/js/packages/api/util/wei.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -const UNITS = ['wei', 'ada', 'babbage', 'shannon', 'szabo', 'finney', 'ether', 'kether', 'mether', 'gether', 'tether']; - -export function _getUnitMultiplier (unit) { - const position = UNITS.indexOf(unit.toLowerCase()); - - if (position === -1) { - throw new Error(`Unknown unit ${unit} passed to wei formatter`); - } - - return 10 ** (position * 3); -} - -export function fromWei (value, unit = 'ether') { - return new BigNumber(value).div(_getUnitMultiplier(unit)); -} - -export function toWei (value, unit = 'ether') { - return new BigNumber(value).mul(_getUnitMultiplier(unit)); -} diff --git a/js/packages/api/util/wei.spec.js b/js/packages/api/util/wei.spec.js deleted file mode 100644 index 4476a4db6..000000000 --- a/js/packages/api/util/wei.spec.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { _getUnitMultiplier, fromWei, toWei } from './wei'; - -describe('api/util/wei', () => { - describe('_getUnitMultiplier', () => { - it('returns 10^0 for wei', () => { - expect(_getUnitMultiplier('wei')).to.equal(10 ** 0); - }); - - it('returns 10^15 for finney', () => { - expect(_getUnitMultiplier('finney')).to.equal(10 ** 15); - }); - - it('returns 10^18 for ether', () => { - expect(_getUnitMultiplier('ether')).to.equal(10 ** 18); - }); - - it('throws an error on invalid units', () => { - expect(() => _getUnitMultiplier('invalid')).to.throw(/passed to wei formatter/); - }); - }); - - describe('fromWei', () => { - it('formats into ether when nothing specified', () => { - expect(fromWei('1230000000000000000').toString()).to.equal('1.23'); - }); - - it('formats into finney when specified', () => { - expect(fromWei('1230000000000000000', 'finney').toString()).to.equal('1230'); - }); - }); - - describe('toWei', () => { - it('formats from ether when nothing specified', () => { - expect(toWei(1.23).toString()).to.equal('1230000000000000000'); - }); - - it('formats from finney when specified', () => { - expect(toWei(1230, 'finney').toString()).to.equal('1230000000000000000'); - }); - }); -}); diff --git a/js/packages/dapp-account/api.js b/js/packages/dapp-account/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-account/api.js +++ b/js/packages/dapp-account/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-account/package.json b/js/packages/dapp-account/package.json index eb2e34439..e0b100be9 100644 --- a/js/packages/dapp-account/package.json +++ b/js/packages/dapp-account/package.json @@ -1,7 +1,7 @@ { "name": "@parity/dapp-account", "description": "Parity default account view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-account.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-accounts/api.js b/js/packages/dapp-accounts/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-accounts/api.js +++ b/js/packages/dapp-accounts/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-accounts/package.json b/js/packages/dapp-accounts/package.json index 4e697c965..fe2ffb29b 100644 --- a/js/packages/dapp-accounts/package.json +++ b/js/packages/dapp-accounts/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-addresses", + "name": "@parity/dapp-accounts", "description": "Parity default accounts list view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-accounts.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-address/api.js b/js/packages/dapp-address/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-address/api.js +++ b/js/packages/dapp-address/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-address/package.json b/js/packages/dapp-address/package.json index 48677fcd2..1a46f5070 100644 --- a/js/packages/dapp-address/package.json +++ b/js/packages/dapp-address/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-address", + "name": "@parity/dapp-address", "description": "Parity default address view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-address.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-addresses/api.js b/js/packages/dapp-addresses/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-addresses/api.js +++ b/js/packages/dapp-addresses/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-addresses/package.json b/js/packages/dapp-addresses/package.json index 022919800..0d4e799a0 100644 --- a/js/packages/dapp-addresses/package.json +++ b/js/packages/dapp-addresses/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-addresses", + "name": "@parity/dapp-addresses", "description": "Parity default addressbook view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-addresses.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-chaindeploy/package.json b/js/packages/dapp-chaindeploy/package.json new file mode 100644 index 000000000..223ce5939 --- /dev/null +++ b/js/packages/dapp-chaindeploy/package.json @@ -0,0 +1,20 @@ +{ + "name": "@parity/dapp-chaindeploy", + "description": "Parity chain deployment", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-chaindeploy.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-chaindeploy/parity.js b/js/packages/dapp-chaindeploy/parity.js index bde730ba0..742386288 100644 --- a/js/packages/dapp-chaindeploy/parity.js +++ b/js/packages/dapp-chaindeploy/parity.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); export { diff --git a/js/packages/dapp-console/package.json b/js/packages/dapp-console/package.json new file mode 100644 index 000000000..dcb669505 --- /dev/null +++ b/js/packages/dapp-console/package.json @@ -0,0 +1,31 @@ +{ + "name": "@parity/dapp-console", + "description": "Parity console dapp", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-console.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + "base32.js": "0.1.0", + "bytes": "2.4.0", + "format-number": "2.0.1", + "phoneformat.js": "1.0.3", + "react-codemirror": "^0.3.0", + "react-element-to-jsx-string": "6.0.0", + "react-inspector": "paritytech/react-inspector", + "react-markdown": "2.4.4", + "material-ui": "0.16.5", + "validator": "6.2.0", + "rlp": "2.0.0" + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-console/parity.js b/js/packages/dapp-console/parity.js index 048db9a1e..315ebeacf 100644 --- a/js/packages/dapp-console/parity.js +++ b/js/packages/dapp-console/parity.js @@ -18,6 +18,11 @@ import Web3 from 'web3'; import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); let web3; diff --git a/js/packages/dapp-contract/api.js b/js/packages/dapp-contract/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-contract/api.js +++ b/js/packages/dapp-contract/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-contract/package.json b/js/packages/dapp-contract/package.json index 48677fcd2..40cd68764 100644 --- a/js/packages/dapp-contract/package.json +++ b/js/packages/dapp-contract/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-address", - "description": "Parity default address view", - "version": "0.0.0", + "name": "@parity/dapp-contract", + "description": "Parity default contract view", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-contract.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-contracts/api.js b/js/packages/dapp-contracts/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-contracts/api.js +++ b/js/packages/dapp-contracts/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-contracts/package.json b/js/packages/dapp-contracts/package.json index 315b72360..cd0f93c8f 100644 --- a/js/packages/dapp-contracts/package.json +++ b/js/packages/dapp-contracts/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-contracts", + "name": "@parity/dapp-contracts", "description": "Parity contracts views", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-contracts.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-dappAccounts/api.js b/js/packages/dapp-dappAccounts/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-dappAccounts/api.js +++ b/js/packages/dapp-dappAccounts/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-dappAccounts/package.json b/js/packages/dapp-dappAccounts/package.json index 72c5b44ab..901d04a79 100644 --- a/js/packages/dapp-dappAccounts/package.json +++ b/js/packages/dapp-dappAccounts/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-dapp-accounts", + "name": "@parity/dapp-dappaccounts", "description": "Parity default accounts selection", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-dappaccounts.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-dappMethods/api.js b/js/packages/dapp-dappMethods/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-dappMethods/api.js +++ b/js/packages/dapp-dappMethods/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-dappMethods/package.json b/js/packages/dapp-dappMethods/package.json index 7116205b8..168b4bb3a 100644 --- a/js/packages/dapp-dappMethods/package.json +++ b/js/packages/dapp-dappMethods/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-dapp-methods", + "name": "@parity/dapp-dappmethods", "description": "Parity default dapp method selection", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-dappmethods.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-dappVisible/api.js b/js/packages/dapp-dappVisible/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-dappVisible/api.js +++ b/js/packages/dapp-dappVisible/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-dappVisible/package.json b/js/packages/dapp-dappVisible/package.json index b0856ba34..2ebfdf0b5 100644 --- a/js/packages/dapp-dappVisible/package.json +++ b/js/packages/dapp-dappVisible/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-dapp-visible", + "name": "@parity/dapp-dappvisible", "description": "Parity default dapp visibility selection", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-dappvisible.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-dappreg/package.json b/js/packages/dapp-dappreg/package.json new file mode 100644 index 000000000..0ec2083f8 --- /dev/null +++ b/js/packages/dapp-dappreg/package.json @@ -0,0 +1,20 @@ +{ + "name": "@parity/dapp-dappreg", + "description": "Parity dapps", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-dappreg.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-dappreg/parity.js b/js/packages/dapp-dappreg/parity.js index f6fd7c424..07aa818eb 100644 --- a/js/packages/dapp-dappreg/parity.js +++ b/js/packages/dapp-dappreg/parity.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); function trackRequest (signerRequestId, statusCallback) { diff --git a/js/packages/dapp-develop/api.js b/js/packages/dapp-develop/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-develop/api.js +++ b/js/packages/dapp-develop/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-develop/package.json b/js/packages/dapp-develop/package.json index 0384be014..196a0d444 100644 --- a/js/packages/dapp-develop/package.json +++ b/js/packages/dapp-develop/package.json @@ -1,7 +1,7 @@ { "name": "@parity/dapp-develop", "description": "Parity contract development interface", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-develop.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-githubhint/package.json b/js/packages/dapp-githubhint/package.json new file mode 100644 index 000000000..60bab49b1 --- /dev/null +++ b/js/packages/dapp-githubhint/package.json @@ -0,0 +1,20 @@ +{ + "name": "@parity/dapp-githubhint", + "description": "Parity dapps", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-githubhint.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-githubhint/parity.js b/js/packages/dapp-githubhint/parity.js index bde730ba0..742386288 100644 --- a/js/packages/dapp-githubhint/parity.js +++ b/js/packages/dapp-githubhint/parity.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); export { diff --git a/js/packages/dapp-home/api.js b/js/packages/dapp-home/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-home/api.js +++ b/js/packages/dapp-home/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-home/package.json b/js/packages/dapp-home/package.json index 0b2b8cf17..64bd80bd9 100644 --- a/js/packages/dapp-home/package.json +++ b/js/packages/dapp-home/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-home", + "name": "@parity/dapp-home", "description": "Parity default Home view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-home.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-localtx/package.json b/js/packages/dapp-localtx/package.json new file mode 100644 index 000000000..92270c39b --- /dev/null +++ b/js/packages/dapp-localtx/package.json @@ -0,0 +1,20 @@ +{ + "name": "@parity/dapp-localtx", + "description": "Parity local transaction queue", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-localtx.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-localtx/parity.js b/js/packages/dapp-localtx/parity.js index bde730ba0..742386288 100644 --- a/js/packages/dapp-localtx/parity.js +++ b/js/packages/dapp-localtx/parity.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); export { diff --git a/js/packages/dapp-playground/api.js b/js/packages/dapp-playground/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-playground/api.js +++ b/js/packages/dapp-playground/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-playground/package.json b/js/packages/dapp-playground/package.json index f6c2301a8..a8bf1a4a9 100644 --- a/js/packages/dapp-playground/package.json +++ b/js/packages/dapp-playground/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-playground", + "name": "@parity/dapp-playground", "description": "Parity component playground", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-playground.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-registry/package.json b/js/packages/dapp-registry/package.json new file mode 100644 index 000000000..2d31d710c --- /dev/null +++ b/js/packages/dapp-registry/package.json @@ -0,0 +1,20 @@ +{ + "name": "@parity/dapp-registry", + "description": "Parity registry dapp", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-registry.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-registry/parity.js b/js/packages/dapp-registry/parity.js index 11150b4ce..a45a16c1e 100644 --- a/js/packages/dapp-registry/parity.js +++ b/js/packages/dapp-registry/parity.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); const { bytesToHex, sha3, toWei, fromWei } = api.util; diff --git a/js/packages/dapp-settings/api.js b/js/packages/dapp-settings/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-settings/api.js +++ b/js/packages/dapp-settings/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-settings/package.json b/js/packages/dapp-settings/package.json index 1454e6fa6..79019f9df 100644 --- a/js/packages/dapp-settings/package.json +++ b/js/packages/dapp-settings/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-settings", + "name": "@parity/dapp-settings", "description": "Parity settings view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-settings.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-signaturereg/package.json b/js/packages/dapp-signaturereg/package.json new file mode 100644 index 000000000..1e952cd8a --- /dev/null +++ b/js/packages/dapp-signaturereg/package.json @@ -0,0 +1,20 @@ +{ + "name": "@parity/dapp-signaturereg", + "description": "Parity dapps", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-signaturereg.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-signaturereg/parity.js b/js/packages/dapp-signaturereg/parity.js index bde730ba0..742386288 100644 --- a/js/packages/dapp-signaturereg/parity.js +++ b/js/packages/dapp-signaturereg/parity.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); export { diff --git a/js/packages/dapp-signer/api.js b/js/packages/dapp-signer/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-signer/api.js +++ b/js/packages/dapp-signer/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-signer/package.json b/js/packages/dapp-signer/package.json index c53578410..a538b3935 100644 --- a/js/packages/dapp-signer/package.json +++ b/js/packages/dapp-signer/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-signer", + "name": "@parity/dapp-signer", "description": "Parity signer views, embedded and requests", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-signer.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-status/api.js b/js/packages/dapp-status/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-status/api.js +++ b/js/packages/dapp-status/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-status/package.json b/js/packages/dapp-status/package.json index 395da4be6..43f43ef63 100644 --- a/js/packages/dapp-status/package.json +++ b/js/packages/dapp-status/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-status", + "name": "@parity/dapp-status", "description": "Parity default Status view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-status.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-tokendeploy/package.json b/js/packages/dapp-tokendeploy/package.json new file mode 100644 index 000000000..73edf113b --- /dev/null +++ b/js/packages/dapp-tokendeploy/package.json @@ -0,0 +1,20 @@ +{ + "name": "@parity/dapp-tokendeploy", + "description": "Parity basic token deployment", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-tokendeploy.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-tokendeploy/parity.js b/js/packages/dapp-tokendeploy/parity.js index bde730ba0..742386288 100644 --- a/js/packages/dapp-tokendeploy/parity.js +++ b/js/packages/dapp-tokendeploy/parity.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); export { diff --git a/js/packages/dapp-tokenreg/package.json b/js/packages/dapp-tokenreg/package.json new file mode 100644 index 000000000..3c1147910 --- /dev/null +++ b/js/packages/dapp-tokenreg/package.json @@ -0,0 +1,20 @@ +{ + "name": "@parity/dapp-tokenreg", + "description": "Parity Token Registration", + "version": "1.99.99", + "main": "index.js", + "author": "Parity Team ", + "maintainers": [], + "contributors": [], + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/paritytech/dapp-tokenreg.git" + }, + "keywords": [], + "scripts": {}, + "devDependencies": {}, + "dependencies": { + }, + "peerDependencies": {} +} diff --git a/js/packages/dapp-tokenreg/parity.js b/js/packages/dapp-tokenreg/parity.js index bde730ba0..742386288 100644 --- a/js/packages/dapp-tokenreg/parity.js +++ b/js/packages/dapp-tokenreg/parity.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); export { diff --git a/js/packages/dapp-vaults/api.js b/js/packages/dapp-vaults/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-vaults/api.js +++ b/js/packages/dapp-vaults/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-vaults/package.json b/js/packages/dapp-vaults/package.json index 4a6932706..a81b7428a 100644 --- a/js/packages/dapp-vaults/package.json +++ b/js/packages/dapp-vaults/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-vaults", + "name": "@parity/dapp-vaults", "description": "Parity default Vaults view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-vaults.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-wallet/api.js b/js/packages/dapp-wallet/api.js index 6ad6cd0fe..b2e52cca0 100644 --- a/js/packages/dapp-wallet/api.js +++ b/js/packages/dapp-wallet/api.js @@ -18,4 +18,8 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + export default new Api(ethereumProvider); diff --git a/js/packages/dapp-wallet/package.json b/js/packages/dapp-wallet/package.json index 8eb7c9dbe..f5508d50e 100644 --- a/js/packages/dapp-wallet/package.json +++ b/js/packages/dapp-wallet/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-wallet", + "name": "@parity/dapp-wallet", "description": "Parity default wallet view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-wallet.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapp-web/api.js b/js/packages/dapp-web/api.js index bde730ba0..742386288 100644 --- a/js/packages/dapp-web/api.js +++ b/js/packages/dapp-web/api.js @@ -17,6 +17,11 @@ import Api from '@parity/api'; const ethereumProvider = window.ethereum || window.parent.ethereum; + +if (!ethereumProvider) { + throw new Error('Unable to locate EthereumProvider, object not attached'); +} + const api = new Api(ethereumProvider); export { diff --git a/js/packages/dapp-web/package.json b/js/packages/dapp-web/package.json index 3d9625860..ed211a512 100644 --- a/js/packages/dapp-web/package.json +++ b/js/packages/dapp-web/package.json @@ -1,7 +1,7 @@ { - "name": "@parity/view-web", + "name": "@parity/dapp-web", "description": "Parity web application view", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapp-web.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/dapps/index.ejs b/js/packages/dapps/index.ejs index 120f8be97..c0ef5a8a5 100644 --- a/js/packages/dapps/index.ejs +++ b/js/packages/dapps/index.ejs @@ -27,6 +27,7 @@
Loading
+ diff --git a/js/packages/dapps/package.json b/js/packages/dapps/package.json index 01a835322..40f92ac57 100644 --- a/js/packages/dapps/package.json +++ b/js/packages/dapps/package.json @@ -1,7 +1,7 @@ { "name": "@parity/dapps", "description": "Parity dapps", - "version": "0.0.0", + "version": "1.99.99", "main": "index.js", "author": "Parity Team ", "maintainers": [], @@ -9,7 +9,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/dapps.git" }, "keywords": [], "scripts": {}, diff --git a/js/packages/etherscan/package.json b/js/packages/etherscan/package.json index 1aed97171..014587a05 100644 --- a/js/packages/etherscan/package.json +++ b/js/packages/etherscan/package.json @@ -1,7 +1,7 @@ { "name": "@parity/etherscan", "description": "The Parity Promise-based library for interfacing with Etherscan over HTTP", - "version": "0.0.0", + "version": "1.99.99", "main": "library.js", "author": "Parity Team ", "maintainers": [ @@ -11,7 +11,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/js-etherscan.git" }, "keywords": [ "Ethereum", diff --git a/js/packages/jsonrpc/.gitignore b/js/packages/jsonrpc/.gitignore deleted file mode 100644 index d8f8d4692..000000000 --- a/js/packages/jsonrpc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -docs diff --git a/js/packages/jsonrpc/README.md b/js/packages/jsonrpc/README.md deleted file mode 100644 index 6a871c68c..000000000 --- a/js/packages/jsonrpc/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# jsonrpc - -JSON file of all ethereum's rpc methods supported by parity - -## interfaces - -[interfaces.md](release/interfaces.md) contains the auto-generated list of interfaces exposed, along with their relevant documentation - -## contributing - -0. Clone the repo -0. Branch -0. Add the missing interfaces only into `src/interfaces/*.js` -0. Parameters (array) & Returns take objects of type - - `{ type: [Array|Boolean|Object|String|...], desc: 'some description', example: 100|'0xff'|{ ... } }` - - Types are built-in JS types or those defined in `src/types.js` (e.g. `BlockNumber`, `Quantity`, etc.) - - If a formatter is required, add it as `format: 'string-type'` -0. Run the lint & tests, `npm run lint && npm run test` -0. Generate via `npm run build` which outputs `index.js` & `index.json`. -0. (optional) Generate docs via `npm run build:markdown` which outputs `md` files to `./docs`. -0. Check-in and make a PR. diff --git a/js/packages/jsonrpc/helpers.js b/js/packages/jsonrpc/helpers.js deleted file mode 100644 index b462c8a08..000000000 --- a/js/packages/jsonrpc/helpers.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -// A dummy placeholder object that will stringify literally to anything -// in the example source. -// -// { { -// foo: new Dummy('{ ... }') -------> "foo": { ... } -// } { -// -export class Dummy { - constructor (value) { - this.value = value; - } - - toString () { - return this.value; - } - - toJSON () { - return `##${this.value}##`; - } - - static fixJSON (json) { - return json.replace(/"##([^#]+)##"/g, '$1'); - } - - static isDummy (obj) { - return obj instanceof Dummy; - } - - static stringifyJSON (any) { - return Dummy.fixJSON(JSON.stringify(any)); - } -} - -// Enrich the API spec by additional markdown-formatted preamble -export function withPreamble (preamble, spec) { - Object.defineProperty(spec, '_preamble', { - value: preamble.trim(), - enumerable: false - }); - - return spec; -} - -// Enrich any example value with a comment to print in the docs -export function withComment (example, comment) { - const constructor = example == null ? null : example.constructor; - - if (constructor === Object || constructor === Array) { - Object.defineProperty(example, '_comment', { - value: comment, - enumerable: false - }); - - return example; - } - - // Convert primitives - return new PrimitiveWithComment(example, comment); -} - -// Turn a decimal number into a hexadecimal string with comment to it's original value -export function fromDecimal (decimal) { - return withComment(`0x${decimal.toString(16)}`, decimal.toString()); -} - -// Internal helper -class PrimitiveWithComment { - constructor (primitive, comment) { - this._value = primitive; - this._comment = comment; - } - - toJSON () { - return this._value; - } -} diff --git a/js/packages/jsonrpc/index.js b/js/packages/jsonrpc/index.js deleted file mode 100644 index ce7561788..000000000 --- a/js/packages/jsonrpc/index.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import db from './interfaces/db'; -import eth from './interfaces/eth'; -import net from './interfaces/net'; -import parity from './interfaces/parity'; -import personal from './interfaces/personal'; -import shh from './interfaces/shh'; -import signer from './interfaces/signer'; -import trace from './interfaces/trace'; -import web3 from './interfaces/web3'; - -export default { - db, - eth, - parity, - net, - personal, - shh, - signer, - trace, - web3 -}; diff --git a/js/packages/jsonrpc/index.spec.js b/js/packages/jsonrpc/index.spec.js deleted file mode 100644 index af4afb9c9..000000000 --- a/js/packages/jsonrpc/index.spec.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import interfaces from './'; -import * as customTypes from './types'; - -const allowedTypes = [Array, Boolean, Object, String].concat(Object.values(customTypes)); - -function verifyType (obj) { - if (typeof obj !== 'string') { - expect(obj).to.satisfy(() => allowedTypes.includes(obj.type)); - } -} - -describe('jsonrpc/interfaces', () => { - Object.keys(interfaces).forEach((group) => { - describe(group, () => { - Object.keys(interfaces[group]).forEach((name) => { - const method = interfaces[group][name]; - - describe(name, () => { - it('has the correct interface', () => { - expect(method.desc).to.be.a('string'); - expect(method.params).to.be.an('array'); - expect(method.returns).to.satisfy((returns) => { - return typeof returns === 'string' || typeof returns === 'object'; - }); - - method.params.forEach(verifyType); - verifyType(method.returns); - }); - }); - }); - }); - }); -}); diff --git a/js/packages/jsonrpc/interfaces/db.js b/js/packages/jsonrpc/interfaces/db.js deleted file mode 100644 index f81746fad..000000000 --- a/js/packages/jsonrpc/interfaces/db.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Data } from '../types'; - -export default { - getHex: { - nodoc: 'Not present in Rust code', - desc: 'Returns binary data from the local database.', - params: [ - { - type: String, - desc: 'Database name' - }, - { - type: String, - desc: 'Key name' - } - ], - returns: { - type: Data, - desc: 'The previously stored data' - }, - deprecated: true - }, - - getString: { - nodoc: 'Not present in Rust code', - desc: 'Returns string from the local database.', - params: [ - { - type: String, - desc: 'Database name' - }, - { - type: String, - desc: 'Key name' - } - ], - returns: { - type: String, - desc: 'The previously stored string' - }, - deprecated: true - }, - - putHex: { - nodoc: 'Not present in Rust code', - desc: 'Stores binary data in the local database.', - params: [ - { - type: String, - desc: 'Database name' - }, - { - type: String, - desc: 'Key name' - }, - { - type: Data, - desc: 'The data to store' - } - ], - returns: { - type: Boolean, - desc: '`true` if the value was stored, otherwise `false`' - }, - deprecated: true - }, - - putString: { - nodoc: 'Not present in Rust code', - desc: 'Stores a string in the local database.', - params: [ - { - type: String, - desc: 'Database name' - }, - { - type: String, - desc: 'Key name' - }, - { - type: String, - desc: 'The string to store' - } - ], - returns: { - type: Boolean, - desc: '`true` if the value was stored, otherwise `false`' - }, - deprecated: true - } -}; diff --git a/js/packages/jsonrpc/interfaces/eth.js b/js/packages/jsonrpc/interfaces/eth.js deleted file mode 100644 index d54c57325..000000000 --- a/js/packages/jsonrpc/interfaces/eth.js +++ /dev/null @@ -1,1319 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Address, BlockNumber, Data, Hash, Quantity, CallRequest, TransactionRequest } from '../types'; -import { withPreamble, fromDecimal, withComment, Dummy } from '../helpers'; - -const SUBDOC_PUBSUB = 'pubsub'; - -export default withPreamble(` - -## The default block parameter - -The following methods have an optional extra \`defaultBlock\` parameter: - -- [eth_estimateGas](#eth_estimategas) -- [eth_getBalance](#eth_getbalance) -- [eth_getCode](#eth_getcode) -- [eth_getTransactionCount](#eth_gettransactioncount) -- [eth_getStorageAt](#eth_getstorageat) -- [eth_call](#eth_call) - -When requests are made that act on the state of Ethereum, the last parameter determines the height of the block. - -The following options are possible for the \`defaultBlock\` parameter: - -- \`Quantity\`/\`Integer\` - an integer block number; -- \`String "earliest"\` - for the earliest/genesis block; -- \`String "latest"\` - for the latest mined block; -- \`String "pending"\` - for the pending state/transactions. - -`, { - accounts: { - desc: 'Returns a list of addresses owned by client.', - params: [], - returns: { - type: Array, - desc: '20 Bytes - addresses owned by the client.', - example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1'] - } - }, - - blockNumber: { - desc: 'Returns the number of most recent block.', - params: [], - returns: { - type: Quantity, - desc: 'integer of the current block number the client is on.', - example: fromDecimal(1207) - } - }, - - call: { - desc: 'Executes a new message call immediately without creating a transaction on the block chain.', - params: [ - { - type: CallRequest, - desc: 'The transaction call object.', - format: 'inputCallFormatter', - example: { - from: '0x407d73d8a49eeb85d32cf465507dd71d507100c1', - to: '0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b', - value: fromDecimal(100000) - } - }, - { - type: BlockNumber, - desc: 'Integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).', - format: 'inputDefaultBlockNumberFormatter', - optional: true - } - ], - returns: { - type: Data, - desc: 'the return value of executed contract.', - example: '0x' - } - }, - - coinbase: { - desc: 'Returns the client coinbase address.', - params: [], - returns: { - type: Address, - desc: 'The current coinbase address.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - }, - - estimateGas: { - desc: 'Makes a call or transaction, which won\'t be added to the blockchain and returns the used gas, which can be used for estimating the used gas.', - params: [ - { - type: CallRequest, - desc: 'Same as [eth_call](#eth_call) parameters, except that all properties are optional.', - format: 'inputCallFormatter', - example: new Dummy('{ ... }') - }, - { - type: BlockNumber, - desc: 'Integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).', - format: 'inputDefaultBlockNumberFormatter', - optional: true - } - ], - returns: { - type: Quantity, - desc: 'The amount of gas used.', - format: 'utils.toDecimal', - example: fromDecimal(21000) - } - }, - - fetchQueuedTransactions: { - nodoc: 'Not present in Rust code', - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - flush: { - nodoc: 'Not present in Rust code', - desc: '?', - params: [], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - gasPrice: { - desc: 'Returns the current price per gas in wei.', - params: [], - returns: { - type: Quantity, - desc: 'integer of the current gas price in wei.', - example: fromDecimal(10000000000000) - } - }, - - getBalance: { - desc: 'Returns the balance of the account of given address.', - params: [ - { - type: Address, - desc: '20 Bytes - address to check for balance.', - format: 'inputAddressFormatter', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: BlockNumber, - desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).', - format: 'inputDefaultBlockNumberFormatter', - optional: true - } - ], - returns: { - type: Quantity, - desc: 'integer of the current balance in wei.', - format: 'outputBigNumberFormatter', - example: '0x0234c8a3397aab58' - } - }, - - getBlockByHash: { - desc: 'Returns information about a block by hash.', - params: [ - { - type: Hash, - desc: 'Hash of a block.', - example: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331' - }, - { - type: Boolean, - desc: 'If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.', - example: true - } - ], - returns: { - type: Object, - desc: 'A block object, or `null` when no block was found.', - details: { - number: { - type: Quantity, - desc: 'The block number. `null` when its pending block' - }, - hash: { - type: Hash, - desc: '32 Bytes - hash of the block. `null` when its pending block' - }, - parentHash: { - type: Hash, - desc: '32 Bytes - hash of the parent block' - }, - nonce: { - type: Data, - desc: '8 Bytes - hash of the generated proof-of-work. `null` when its pending block' - }, - sha3Uncles: { - type: Data, - desc: '32 Bytes - SHA3 of the uncles data in the block' - }, - logsBloom: { - type: Data, - desc: '256 Bytes - the bloom filter for the logs of the block. `null` when its pending block' - }, - transactionsRoot: { - type: Data, - desc: '32 Bytes - the root of the transaction trie of the block' - }, - stateRoot: { - type: Data, - desc: '32 Bytes - the root of the final state trie of the block' - }, - receiptsRoot: { - type: Data, desc: '32 Bytes - the root of the receipts trie of the block' - }, - miner: { - type: Address, - desc: '20 Bytes - the address of the beneficiary to whom the mining rewards were given' - }, - difficulty: { - type: Quantity, - desc: 'integer of the difficulty for this block' - }, - totalDifficulty: { - type: Quantity, - desc: 'integer of the total difficulty of the chain until this block' - }, - extraData: { - type: Data, - desc: 'the \'extra data\' field of this block' - }, - size: { - type: Quantity, - desc: 'integer the size of this block in bytes' - }, - gasLimit: { - type: Quantity, - desc: 'the maximum gas allowed in this block' - }, - gasUsed: { - type: Quantity, - desc: 'the total used gas by all transactions in this block' - }, - timestamp: { - type: Quantity, - desc: 'the unix timestamp for when the block was collated' - }, - transactions: { - type: Array, - desc: 'Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter' - }, - uncles: { - type: Array, - desc: 'Array of uncle hashes' - } - }, - example: { - number: fromDecimal(436), - hash: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331', - parentHash: '0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5', - sealFields: ['0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2', '0x0000000000000042'], - sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', - logsBloom: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331', - transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421', - stateRoot: '0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff', - miner: '0x4e65fda2159562a496f9f3522f89122a3088497a', - difficulty: fromDecimal(163591), - totalDifficulty: fromDecimal(163591), - extraData: '0x0000000000000000000000000000000000000000000000000000000000000000', - size: fromDecimal(163591), - gasLimit: fromDecimal(653145), - minGasPrice: fromDecimal(653145), - gasUsed: fromDecimal(653145), - timestamp: fromDecimal(1424182926), - transactions: [new Dummy('{ ... }, { ... }, ...')], - uncles: ['0x1606e5...', '0xd5145a9...'] - } - } - }, - - getBlockByNumber: { - desc: 'Returns information about a block by block number.', - params: [ - { - type: BlockNumber, - desc: 'integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).', - example: fromDecimal(436) - }, - { - type: Boolean, - desc: 'If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.', - example: true - } - ], - returns: 'See [eth_getBlockByHash](#eth_getblockbyhash)' - }, - - getBlockTransactionCountByHash: { - desc: 'Returns the number of transactions in a block from a block matching the given block hash.', - params: [ - { - type: Hash, - desc: '32 Bytes - hash of a block.', - example: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238' - } - ], - returns: { - type: Quantity, - desc: 'integer of the number of transactions in this block.', - example: fromDecimal(11) - } - }, - - getBlockTransactionCountByNumber: { - desc: 'Returns the number of transactions in a block from a block matching the given block number.', - params: [ - { - type: BlockNumber, - desc: 'integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).', - example: fromDecimal(232) - } - ], - returns: { - type: Quantity, - desc: 'integer of the number of transactions in this block.', - example: fromDecimal(10) - } - }, - - getCode: { - desc: 'Returns code at a given address.', - params: [ - { - type: Address, - desc: '20 Bytes - address.', - format: 'inputAddressFormatter', - example: '0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b' - }, - { - type: BlockNumber, - desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).', - format: 'inputDefaultBlockNumberFormatter', - example: fromDecimal(2) - } - ], - returns: { - type: Data, - desc: 'the code from the given address.', - example: '0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056' - } - }, - - getFilterChanges: { - desc: 'Polling method for a filter, which returns an array of logs which occurred since last poll.', - params: [ - { - type: Quantity, - desc: 'The filter id.', - example: fromDecimal(22) - } - ], - returns: { - type: Array, - desc: 'Array of log objects, or an empty array if nothing has changed since last poll.', - example: [ - { - logIndex: fromDecimal(1), - blockNumber: fromDecimal(436), - blockHash: '0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d', - transactionHash: '0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf', - transactionIndex: fromDecimal(0), - address: '0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d', - data: '0x0000000000000000000000000000000000000000000000000000000000000000', - topics: ['0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5'] - }, - new Dummy('...') - ] - } - }, - - getFilterChangesEx: { - nodoc: 'Not present in Rust code', // https://github.com/ethereum/wiki/wiki/Proposal:-Reversion-Notification - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - getFilterLogs: { - desc: 'Returns an array of all logs matching filter with given id.', - params: [ - { - type: Quantity, - desc: 'The filter id.', - example: fromDecimal(22) - } - ], - returns: 'See [eth_getFilterChanges](#eth_getfilterchanges)' - }, - - getFilterLogsEx: { - nodoc: 'Not present in Rust code', // https://github.com/ethereum/wiki/wiki/Proposal:-Reversion-Notification - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - getLogs: { - desc: 'Returns an array of all logs matching a given filter object.', - params: [ - { - type: Object, - desc: 'The filter object, see [eth_newFilter parameters](#eth_newfilter).', - example: { - topics: ['0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b'] - } - } - ], - returns: 'See [eth_getFilterChanges](#eth_getfilterchanges)' - }, - - getLogsEx: { - nodoc: 'Not present in Rust code', // https://github.com/ethereum/wiki/wiki/Proposal:-Reversion-Notification - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - getStorageAt: { - desc: 'Returns the value from a storage position at a given address.', - params: [ - { - type: Address, - desc: '20 Bytes - address of the storage.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: Quantity, - desc: 'integer of the position in the storage.', - format: 'utils.toHex', - example: fromDecimal(0) - }, - { - type: BlockNumber, - desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).', - format: 'inputDefaultBlockNumberFormatter', - example: fromDecimal(2), - optional: true - } - ], - returns: { - type: Data, - desc: 'the value at this storage position.', - example: '0x0000000000000000000000000000000000000000000000000000000000000003' - } - }, - - getTransactionByHash: { - desc: 'Returns the information about a transaction requested by transaction hash.', - params: [ - { - type: Hash, - desc: '32 Bytes - hash of a transaction.', - example: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238' - } - ], - returns: { - type: Object, - desc: 'A transaction object, or `null` when no transaction was found:', - format: 'outputTransactionFormatter', - details: { - hash: { - type: Hash, - desc: '32 Bytes - hash of the transaction.' - }, - nonce: { - type: Quantity, - desc: 'the number of transactions made by the sender prior to this one.' - }, - blockHash: { - type: Hash, - desc: '32 Bytes - hash of the block where this transaction was in. `null` when its pending.' - }, - blockNumber: { - type: BlockNumber, - desc: 'block number where this transaction was in. `null` when its pending.' - }, - transactionIndex: { - type: Quantity, - desc: 'integer of the transactions index position in the block. `null` when its pending.' - }, - from: { - type: Address, - desc: '20 Bytes - address of the sender.' - }, - to: { - type: Address, - desc: '20 Bytes - address of the receiver. `null` when its a contract creation transaction.' - }, - value: { - type: Quantity, - desc: 'value transferred in Wei.' - }, - gasPrice: { - type: Quantity, - desc: 'gas price provided by the sender in Wei.' - }, - gas: { - type: Quantity, - desc: 'gas provided by the sender.' - }, - input: { - type: Data, - desc: 'the data send along with the transaction.' - }, - v: { - type: Quantity, - desc: 'the standardised V field of the signature.' - }, - standard_v: { - type: Quantity, - desc: 'the standardised V field of the signature (0 or 1).' - }, - r: { - type: Quantity, - desc: 'the R field of the signature.' - }, - raw: { - type: Data, - desc: 'raw transaction data' - }, - publicKey: { - type: Hash, - desc: 'public key of the signer.' - }, - networkId: { - type: Quantity, - desc: 'the network id of the transaction, if any.' - }, - creates: { - type: Hash, - desc: 'creates contract hash' - }, - condition: { - type: Object, - optional: true, - desc: 'conditional submission, Block number in `block` or timestamp in `time` or `null`. (parity-feature)' - } - }, - example: { - hash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b', - nonce: fromDecimal(0), - blockHash: '0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b', - blockNumber: fromDecimal(5599), - transactionIndex: fromDecimal(1), - from: '0x407d73d8a49eeb85d32cf465507dd71d507100c1', - to: '0x853f43d8a49eeb85d32cf465507dd71d507100c1', - value: fromDecimal(520464), - gas: fromDecimal(520464), - gasPrice: '0x09184e72a000', - input: '0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360' - } - } - }, - - getTransactionByBlockHashAndIndex: { - desc: 'Returns information about a transaction by block hash and transaction index position.', - params: [ - { - type: Hash, - desc: 'hash of a block.', - example: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331' - }, - { - type: Quantity, - desc: 'integer of the transaction index position.', - example: fromDecimal(0) - } - ], - returns: 'See [eth_getBlockByHash](#eth_gettransactionbyhash)' - }, - - getTransactionByBlockNumberAndIndex: { - desc: 'Returns information about a transaction by block number and transaction index position.', - params: [ - { - type: BlockNumber, - desc: 'a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).', - example: fromDecimal(668) - }, - { - type: Quantity, - desc: 'The transaction index position.', - example: fromDecimal(0) - } - ], - returns: 'See [eth_getBlockByHash](#eth_gettransactionbyhash)' - }, - - getTransactionCount: { - desc: 'Returns the number of transactions *sent* from an address.', - params: [ - { - type: Address, - desc: '20 Bytes - address.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: BlockNumber, - desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).', - format: 'inputDefaultBlockNumberFormatter', - optional: true - } - ], - returns: { - type: Quantity, - desc: 'integer of the number of transactions send from this address.', - format: 'utils.toDecimal', - example: fromDecimal(1) - } - }, - - getTransactionReceipt: { - desc: 'Returns the receipt of a transaction by transaction hash.\n\n**Note** That the receipt is available even for pending transactions.', - params: [ - { - type: Hash, - desc: 'hash of a transaction.', - example: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238' - } - ], - returns: { - type: Object, - desc: 'A transaction receipt object, or `null` when no receipt was found:', - format: 'outputTransactionReceiptFormatter', - details: { - transactionHash: { - type: Hash, - desc: '32 Bytes - hash of the transaction.' - }, - transactionIndex: { - type: Quantity, - desc: 'integer of the transactions index position in the block.' - }, - blockHash: { - type: Hash, - desc: '32 Bytes - hash of the block where this transaction was in.' - }, - blockNumber: { - type: BlockNumber, - desc: 'block number where this transaction was in.' - }, - cumulativeGasUsed: { - type: Quantity, - desc: 'The total amount of gas used when this transaction was executed in the block.' - }, - gasUsed: { - type: Quantity, - desc: 'The amount of gas used by this specific transaction alone.' - }, - contractAddress: { - type: Address, - desc: '20 Bytes - The contract address created, if the transaction was a contract creation, otherwise `null`.' - }, - logs: { - type: Array, - desc: 'Array of log objects, which this transaction generated.' - } - }, - example: { - transactionHash: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238', - transactionIndex: fromDecimal(1), - blockNumber: fromDecimal(11), - blockHash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b', - cumulativeGasUsed: fromDecimal(13244), - gasUsed: fromDecimal(1244), - contractAddress: withComment('0xb60e8dd61c5d32be8058bb8eb970870f07233155', 'or null, if none was created'), - logs: withComment([new Dummy('{ ... }, { ... }, ...]')], 'logs as returned by eth_getFilterLogs, etc.') - } - } - }, - - getUncleByBlockHashAndIndex: { - desc: 'Returns information about a uncle of a block by hash and uncle index position.\n\n**Note:** An uncle doesn\'t contain individual transactions.', - params: [ - { - type: Hash, - desc: 'Hash of a block.', - example: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b' - }, - { - type: Quantity, - desc: 'The uncle\'s index position.', - example: fromDecimal(0) - } - ], - returns: 'See [eth_getBlockByHash](#eth_getblockbyhash)' - }, - - getUncleByBlockNumberAndIndex: { - desc: 'Returns information about a uncle of a block by number and uncle index position.\n\n**Note:** An uncle doesn\'t contain individual transactions.', - params: [ - { - type: BlockNumber, - desc: 'a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).', - example: fromDecimal(668) - }, - { - type: Quantity, - desc: 'The uncle\'s index position.', - example: fromDecimal(0) - } - ], - returns: 'See [eth_getBlockByHash](#eth_getblockbyhash)' - }, - - getUncleCountByBlockHash: { - desc: 'Returns the number of uncles in a block from a block matching the given block hash.', - params: [ - { - type: Hash, - desc: '32 Bytes - hash of a block.', - example: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238' - } - ], - returns: { - type: Quantity, - desc: 'integer of the number of uncles in this block.', - example: fromDecimal(0) - } - }, - - getUncleCountByBlockNumber: { - desc: 'Returns the number of uncles in a block from a block matching the given block number.', - params: [ - { - type: BlockNumber, - desc: 'integer of a block number, or the string \'latest\', \'earliest\' or \'pending\', see the [default block parameter](#the-default-block-parameter).', - example: fromDecimal(232) - } - ], - returns: { - type: Quantity, - desc: 'integer of the number of uncles in this block.', - example: fromDecimal(1) - } - }, - - getWork: { - desc: 'Returns the hash of the current block, the seedHash, and the boundary condition to be met ("target").', - params: [], - returns: { - type: Array, - desc: 'Array with the following properties:\n - `Data`, 32 Bytes - current block header pow-hash.\n - `Data`, 32 Bytes - the seed hash used for the DAG.\n - `Data`, 32 Bytes - the boundary condition ("target"), 2^256 / difficulty.\n - `Quantity`, the current block number.', - example: [ - '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', - '0x5EED00000000000000000000000000005EED0000000000000000000000000000', - '0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000', - fromDecimal(1) - ] - } - }, - - hashrate: { - desc: 'Returns the number of hashes per second that the node is mining with.', - params: [], - returns: { - type: Quantity, - desc: 'number of hashes per second.', - example: fromDecimal(906) - } - }, - - inspectTransaction: { - nodoc: 'Not present in Rust code', - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - mining: { - desc: 'Returns `true` if client is actively mining new blocks.', - params: [], - returns: { - type: Boolean, - desc: '`true` of the client is mining, otherwise `false`.', - example: true - } - }, - - newBlockFilter: { - desc: 'Creates a filter in the node, to notify when a new block arrives.\nTo check if the state has changed, call [eth_getFilterChanges](#eth_getfilterchanges).', - params: [], - returns: { - type: Quantity, - desc: 'A filter id.', - example: fromDecimal(1) - } - }, - - newFilter: { - desc: `Creates a filter object, based on filter options, to notify when the state changes (logs). - To check if the state has changed, call [eth_getFilterChanges](#eth_getfilterchanges). - - ##### A note on specifying topic filters: - Topics are order-dependent. A transaction with a log with topics [A, B] will be matched by the following topic filters: - * \`[]\` "anything" - * \`[A]\` "A in first position (and anything after)" - * \`[null, B]\` "anything in first position AND B in second position (and anything after)" - * \`[A, B]\` "A in first position AND B in second position (and anything after)" - * \`[[A, B], [A, B]]\` "(A OR B) in first position AND (A OR B) in second position (and anything after)"`.replace(/^[^\S\n]+/gm, ''), - params: [{ - type: Object, - desc: 'The filter options:', - details: { - fromBlock: { - type: BlockNumber, - desc: 'Integer block number, or `\'latest\'` for the last mined block or `\'pending\'`, `\'earliest\'` for not yet mined transactions.', - optional: true, - default: 'latest' - }, - toBlock: { - type: BlockNumber, - desc: 'Integer block number, or `\'latest\'` for the last mined block or `\'pending\'`, `\'earliest\'` for not yet mined transactions.', - optional: true, - default: 'latest' - }, - address: { - type: Address, - desc: '20 Bytes - Contract address or a list of addresses from which logs should originate.', - optional: true - }, - topics: { - type: Array, - desc: 'Array of 32 Bytes `Data` topics. Topics are order-dependent. It\'s possible to pass in `null` to match any topic, or a subarray of multiple topics of which one should be matching.', - optional: true - }, - limit: { - type: Quantity, - desc: 'The maximum number of entries to retrieve (latest first).', - optional: true - } - }, - example: { - fromBlock: fromDecimal(1), - toBlock: fromDecimal(2), - address: '0x8888f1f195afa192cfee860698584c030f4c9db1', - topics: withComment([ - withComment('0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b', 'This topic in first position'), - withComment(null, 'Any topic in second position'), - withComment(['0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b', '0x000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc'], 'Either topic of the two in third position') - ], '... and anything after') - } - }], - returns: { - type: Quantity, - desc: 'The filter id.', - example: fromDecimal(1) - } - }, - - newFilterEx: { - nodoc: 'Not present in Rust code', // https://github.com/ethereum/wiki/wiki/Proposal:-Reversion-Notification - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - newPendingTransactionFilter: { - desc: 'Creates a filter in the node, to notify when new pending transactions arrive.\n\nTo check if the state has changed, call [eth_getFilterChanges](#eth_getfilterchanges).', - params: [], - returns: { - type: Quantity, - desc: 'A filter id.', - example: fromDecimal(1) - } - }, - - notePassword: { - nodoc: 'Not present in Rust code', - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - pendingTransactions: { - nodoc: 'Not present in Rust code', - desc: '?', - params: [], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - protocolVersion: { - desc: 'Returns the current ethereum protocol version.', - params: [], - returns: { - type: String, - desc: 'The current ethereum protocol version.', - example: fromDecimal(99) - } - }, - - register: { - nodoc: 'Not present in Rust code', - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - sendRawTransaction: { - desc: 'Creates new message call transaction or a contract creation for signed transactions.\n\n**Note:** `eth_submitTransaction` is an alias of this method.', - params: [ - { - type: Data, - desc: 'The signed transaction data.', - example: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675' - } - ], - returns: { - type: Hash, - desc: '32 Bytes - the transaction hash, or the zero hash if the transaction is not yet available\n\nUse [eth_getTransactionReceipt](#eth_gettransactionreceipt) to get the contract address, after the transaction was mined, when you created a contract.', - example: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331' - } - }, - - sendTransaction: { - desc: 'Creates new message call transaction or a contract creation, if the data field contains code.', - params: [ - { - type: TransactionRequest, - desc: 'The transaction object.', - format: 'inputTransactionFormatter', - example: { - from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', - to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567', - gas: fromDecimal(30400), - gasPrice: fromDecimal(10000000000000), - value: fromDecimal(2441406250), - data: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675' - } - } - ], - returns: { - type: Hash, - desc: '32 Bytes - the transaction hash, or the zero hash if the transaction is not yet available.\n\nUse [eth_getTransactionReceipt](#eth_gettransactionreceipt) to get the contract address, after the transaction was mined, when you created a contract.', - example: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331' - } - }, - - sign: { - desc: 'The sign method calculates an Ethereum specific signature with: `sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))`.', - params: [ - { - type: Address, - desc: '20 Bytes - address.', - format: 'inputAddressFormatter', - example: '0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826' - }, - { - type: Data, - desc: 'Data which hash to sign.', - example: withComment('0x5363686f6f6c627573', 'Schoolbus') - } - ], - returns: { - type: Data, - desc: 'Signed data.', - example: '0xb1092cb5b23c2aa55e5b5787729c6be812509376de99a52bea2b41e5a5f8601c5641e74d01e4493c17bf1ef8b179c49362b2c721222128d58422a539310c6ecd1b' - } - }, - - signTransaction: { - desc: 'Signs transactions without dispatching it to the network. It can be later submitted using [eth_sendRawTransaction](#eth_sendrawtransaction).', - params: [ - { - type: TransactionRequest, - desc: 'Transaction object, see [eth_sendTransaction](#eth_sendTransaction).', - format: 'inputCallFormatter', - example: new Dummy('{ ... }') - } - ], - returns: { - type: Object, - desc: 'Signed transaction and it\'s details:', - details: { - raw: { - type: Data, - desc: 'The signed, RLP encoded transaction.' - }, - tx: { - type: Object, - desc: 'Transaction object:', - details: { - hash: { - type: Hash, - desc: '32 Bytes - hash of the transaction.' - }, - nonce: { - type: Quantity, - desc: 'the number of transactions made by the sender prior to this one.' - }, - blockHash: { - type: Hash, - desc: '32 Bytes - hash of the block where this transaction was in. `null` when its pending.' - }, - blockNumber: { - type: BlockNumber, - desc: 'block number where this transaction was in. `null` when its pending.' - }, - transactionIndex: { - type: Quantity, - desc: 'integer of the transactions index position in the block. `null` when its pending.' - }, - from: { - type: Address, - desc: '20 Bytes - address of the sender.' - }, - to: { - type: Address, - desc: '20 Bytes - address of the receiver. `null` when its a contract creation transaction.' - }, - value: { - type: Quantity, - desc: 'value transferred in Wei.' - }, - gasPrice: { - type: Quantity, - desc: 'gas price provided by the sender in Wei.' - }, - gas: { - type: Quantity, - desc: 'gas provided by the sender.' - }, - input: { - type: Data, - desc: 'the data send along with the transaction.' - }, - v: { - type: Quantity, - desc: 'the standardised V field of the signature.' - }, - standard_v: { - type: Quantity, - desc: 'the standardised V field of the signature (0 or 1).' - }, - r: { - type: Quantity, - desc: 'the R field of the signature.' - }, - raw: { - type: Data, - desc: 'raw transaction data' - }, - publicKey: { - type: Hash, - desc: 'public key of the signer.' - }, - networkId: { - type: Quantity, - desc: 'the network id of the transaction, if any.' - }, - creates: { - type: Hash, - desc: 'creates contract hash' - }, - condition: { - type: Object, - optional: true, - desc: 'conditional submission, Block number in `block` or timestamp in `time` or `null`. (parity-feature)' - } - } - } - }, - example: { - raw: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675', - tx: { - hash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b', - nonce: fromDecimal(0), - blockHash: '0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b', - blockNumber: fromDecimal(5599), - transactionIndex: fromDecimal(1), - from: '0x407d73d8a49eeb85d32cf465507dd71d507100c1', - to: '0x853f43d8a49eeb85d32cf465507dd71d507100c1', - value: fromDecimal(520464), - gas: fromDecimal(520464), - gasPrice: '0x09184e72a000', - input: '0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360' - } - } - } - }, - - submitWork: { - desc: 'Used for submitting a proof-of-work solution.', - params: [ - { - type: Data, - desc: '8 Bytes - The nonce found (64 bits).', - example: '0x0000000000000001' - }, - { - type: Data, - desc: '32 Bytes - The header\'s pow-hash (256 bits)', - example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' - }, - { - type: Data, - desc: '32 Bytes - The mix digest (256 bits).', - example: '0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000' - } - ], - returns: { - type: Boolean, - desc: '`true` if the provided solution is valid, otherwise `false`.', - example: true - } - }, - - submitHashrate: { - desc: 'Used for submitting mining hashrate.', - params: [ - { - type: Data, - desc: 'a hexadecimal string representation (32 bytes) of the hash rate.', - example: '0x0000000000000000000000000000000000000000000000000000000000500000' - }, - { - type: Data, - desc: 'A random hexadecimal(32 bytes) ID identifying the client.', - example: '0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c' - } - ], - returns: { - type: Boolean, - desc: '`true` if submitting went through succesfully and `false` otherwise.', - example: true - } - }, - - syncing: { - desc: 'Returns an object with data about the sync status or `false`.', - params: [], - returns: { - type: Object, - desc: 'An object with sync status data or `FALSE`, when not syncing.', - format: 'outputSyncingFormatter', - details: { - startingBlock: { - type: Quantity, - desc: 'The block at which the import started (will only be reset, after the sync reached this head)' - }, - currentBlock: { - type: Quantity, - desc: 'The current block, same as eth_blockNumber' - }, - highestBlock: { - type: Quantity, - desc: 'The estimated highest block' - }, - blockGap: { - type: Array, - desc: 'Array of "first", "last", such that [first, last) are all missing from the chain' - }, - warpChunksAmount: { - type: Quantity, - desc: 'Total amount of snapshot chunks' - }, - warpChunksProcessed: { - type: Quantity, - desc: 'Total amount of snapshot chunks processed' - } - }, - example: withComment({ - startingBlock: fromDecimal(900), - currentBlock: fromDecimal(902), - highestBlock: fromDecimal(1108) - }, 'Or `false` when not syncing') - } - }, - - uninstallFilter: { - desc: 'Uninstalls a filter with given id. Should always be called when watch is no longer needed.\nAdditonally Filters timeout when they aren\'t requested with [eth_getFilterChanges](#eth_getfilterchanges) for a period of time.', - params: [ - { - type: Quantity, - desc: 'The filter id.', - example: fromDecimal(11) - } - ], - returns: { - type: Boolean, - desc: '`true` if the filter was successfully uninstalled, otherwise `false`.', - example: true - } - }, - - unregister: { - nodoc: 'Not present in Rust code', - desc: '?', - params: [ - '?' - ], - returns: { - type: Boolean, - desc: 'whether the call was successful' - } - }, - - // Pub-Sub - subscribe: { - subdoc: SUBDOC_PUBSUB, - desc: ` -Starts a subscription (on WebSockets / IPC / TCP transports) to a particular event. For every event that -matches the subscription a JSON-RPC notification with event details and subscription ID will be sent to a client. - -An example notification received by subscribing to \`newHeads\` event: -\`\`\` -{"jsonrpc":"2.0","method":"eth_subscription","params":{"subscription":"0x416d77337e24399d","result":{"difficulty":"0xd9263f42a87",<...>, -"uncles":[]}}} -\`\`\` - -You can unsubscribe using \`eth_unsubscribe\` RPC method. Subscriptions are also tied to a transport -connection, disconnecting causes all subscriptions to be canceled. - `, - params: [ - { - type: String, - desc: 'Subscription type: one of `newHeads`, `logs`', - example: 'newHeads' - }, - { - type: Object, - desc: ` -Subscription type-specific parameters. It must be left empty for -\`newHeads\` and must contain filter object for \`logs\`. - `, - example: { - fromBlock: 'latest', - toBlock: 'latest' - } - } - ], - returns: { - type: String, - desc: 'Assigned subscription ID', - example: '0x416d77337e24399d' - } - }, - unsubscribe: { - subdoc: SUBDOC_PUBSUB, - desc: 'Unsubscribes from a subscription.', - params: [{ - type: String, - desc: 'Subscription ID', - example: '0x416d77337e24399d' - }], - returns: { - type: Boolean, - desc: 'whether the call was successful', - example: true - } - } -}); diff --git a/js/packages/jsonrpc/interfaces/net.js b/js/packages/jsonrpc/interfaces/net.js deleted file mode 100644 index b09b9b151..000000000 --- a/js/packages/jsonrpc/interfaces/net.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Quantity } from '../types'; -import { fromDecimal } from '../helpers'; - -export default { - listening: { - desc: 'Returns `true` if client is actively listening for network connections.', - params: [], - returns: { - type: Boolean, - desc: '`true` when listening, otherwise `false`.', - example: true - } - }, - - peerCount: { - desc: 'Returns number of peers currenly connected to the client.', - params: [], - returns: { - type: Quantity, - desc: 'Integer of the number of connected peers', - format: 'utils.toDecimal', - example: fromDecimal(2) - } - }, - - version: { - desc: 'Returns the current network protocol version.', - params: [], - returns: { - type: String, - desc: 'The current network protocol version', - example: '8995' - } - } -}; diff --git a/js/packages/jsonrpc/interfaces/parity.js b/js/packages/jsonrpc/interfaces/parity.js deleted file mode 100644 index d1ade602b..000000000 --- a/js/packages/jsonrpc/interfaces/parity.js +++ /dev/null @@ -1,2059 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Address, Data, Hash, Quantity, BlockNumber, TransactionRequest, TransactionResponse } from '../types'; -import { fromDecimal, withComment, Dummy } from '../helpers'; - -const SECTION_ACCOUNTS = 'Accounts (read-only) and Signatures'; -const SECTION_DEV = 'Development'; -const SECTION_MINING = 'Block Authoring (aka "mining")'; -const SECTION_NET = 'Network Information'; -const SECTION_NODE = 'Node Settings'; -const SECTION_VAULT = 'Account Vaults'; - -const SUBDOC_SET = 'set'; -const SUBDOC_ACCOUNTS = 'accounts'; -const SUBDOC_PUBSUB = 'pubsub'; - -export default { - accountsInfo: { - section: SECTION_ACCOUNTS, - desc: 'Provides metadata for accounts.', - params: [], - returns: { - type: Object, - desc: 'Maps account address to metadata.', - details: { - name: { - type: String, - desc: 'Account name' - } - }, - example: { - '0x0024d0c7ab4c52f723f3aaf0872b9ea4406846a4': { - name: 'Foo' - }, - '0x004385d8be6140e6f889833f68b51e17b6eacb29': { - name: 'Bar' - }, - '0x009047ed78fa2be48b62aaf095b64094c934dab0': { - name: 'Baz' - } - } - } - }, - - chainStatus: { - section: SECTION_NET, - desc: 'Returns the information on warp sync blocks', - params: [], - returns: { - type: Object, - desc: 'The status object', - details: { - blockGap: { - type: Array, - desc: 'Describes the gap in the blockchain, if there is one: (first, last)', - optional: true - } - } - } - }, - - changeVault: { - section: SECTION_VAULT, - desc: 'Changes the current valut for the account', - params: [ - { - type: Address, - desc: 'Account address', - example: '0x63Cf90D3f0410092FC0fca41846f596223979195' - }, - { - type: String, - desc: 'Vault name', - example: 'StrongVault' - } - ], - returns: { - type: Boolean, - desc: 'True on success', - example: true - } - }, - - changeVaultPassword: { - section: SECTION_VAULT, - desc: 'Changes the password for any given vault', - params: [ - { - type: String, - desc: 'Vault name', - example: 'StrongVault' - }, - { - type: String, - desc: 'New Password', - example: 'p@55w0rd' - } - ], - returns: { - type: Boolean, - desc: 'True on success', - example: true - } - }, - - closeVault: { - section: SECTION_VAULT, - desc: 'Closes a vault with the given name', - params: [ - { - type: String, - desc: 'Vault name', - example: 'StrongVault' - } - ], - returns: { - type: Boolean, - desc: 'True on success', - example: true - } - }, - - consensusCapability: { - desc: 'Returns information on current consensus capability.', - params: [], - returns: { - type: Object, - desc: 'or `String` - Either `"capable"`, `{"capableUntil":N}`, `{"incapableSince":N}` or `"unknown"` (`N` is a block number).', - example: 'capable' - } - }, - - dappsList: { - subdoc: SUBDOC_SET, - desc: 'Returns a list of available local dapps.', - params: [], - returns: { - type: Array, - desc: 'The list of dapps', - example: [ - { - author: 'Parity Technologies Ltd', - description: 'A skeleton dapp', - iconUrl: 'title.png', - id: 'skeleton', - name: 'Skeleton', - version: '0.1' - } - ] - } - }, - - dappsUrl: { - section: SECTION_NODE, - desc: 'Returns the hostname and the port of dapps/rpc server, error if not enabled.', - params: [], - returns: { - type: String, - desc: 'The hostname and port number', - example: 'localhost:8545' - } - }, - - defaultAccount: { - section: SECTION_ACCOUNTS, - desc: 'Returns the defaultAccount that is to be used with transactions', - params: [], - returns: { - type: Address, - desc: 'The account address', - example: '0x63Cf90D3f0410092FC0fca41846f596223979195' - } - }, - - defaultExtraData: { - section: SECTION_MINING, - desc: 'Returns the default extra data', - params: [], - returns: { - type: Data, - desc: 'Extra data', - example: '0xd5830106008650617269747986312e31342e30826c69' - } - }, - - devLogs: { - section: SECTION_DEV, - desc: 'Returns latest stdout logs of your node.', - params: [], - returns: { - type: Array, - desc: 'Development logs', - example: [ - '2017-01-20 18:14:19 Updated conversion rate to Ξ1 = US$10.63 (11199212000 wei/gas)', - '2017-01-20 18:14:19 Configured for DevelopmentChain using InstantSeal engine', - '2017-01-20 18:14:19 Operating mode: active', - '2017-01-20 18:14:19 State DB configuration: fast', - '2017-01-20 18:14:19 Starting Parity/v1.7.0-unstable-2ae8b4c-20170120/x86_64-linux-gnu/rustc1.14.0' - ] - } - }, - - devLogsLevels: { - section: SECTION_DEV, - desc: 'Returns current logging level settings. Logging level can be set with `--logging` and be one of: `""` (default), `"info"`, `"debug"`, `"warn"`, `"error"`, `"trace"`.', - params: [], - returns: { - type: String, - decs: 'Current log level.', - example: 'debug' - } - }, - - enode: { - section: SECTION_NODE, - desc: 'Returns the node enode URI.', - params: [], - returns: { - type: String, - desc: 'Enode URI', - example: 'enode://050929adcfe47dbe0b002cb7ef2bf91ca74f77c4e0f68730e39e717f1ce38908542369ae017148bee4e0d968340885e2ad5adea4acd19c95055080a4b625df6a@172.17.0.1:30303' - } - }, - - extraData: { - section: SECTION_MINING, - desc: 'Returns currently set extra data.', - params: [], - returns: { - type: Data, - desc: 'Extra data.', - example: '0xd5830106008650617269747986312e31342e30826c69' - } - }, - - gasFloorTarget: { - section: SECTION_MINING, - desc: 'Returns current target for gas floor.', - params: [], - returns: { - type: Quantity, - desc: 'Gas floor target.', - format: 'outputBigNumberFormatter', - example: fromDecimal(4700000) - } - }, - - gasCeilTarget: { - section: SECTION_MINING, - desc: 'Returns current target for gas ceiling.', - params: [], - returns: { - type: Quantity, - desc: 'Gas ceiling target.', - format: 'outputBigNumberFormatter', - example: fromDecimal(6283184) - } - }, - - gasPriceHistogram: { - section: SECTION_NET, - desc: 'Returns a snapshot of the historic gas prices.', - params: [], - returns: { - type: Object, - desc: 'Historic values', - details: { - bucketBounds: { - type: Array, - desc: 'Array of bound values.' - }, - count: { - type: Array, - desc: 'Array of counts.' - } - }, - example: { - bucketBounds: ['0x4a817c800', '0x525433d01', '0x5a26eb202', '0x61f9a2703', '0x69cc59c04', '0x719f11105', '0x7971c8606', '0x81447fb07', '0x891737008', '0x90e9ee509', '0x98bca5a0a'], - counts: [487, 9, 7, 1, 8, 0, 0, 0, 0, 14] - } - } - }, - - generateSecretPhrase: { - section: SECTION_ACCOUNTS, - desc: 'Creates a secret phrase that can be associated with an account.', - params: [], - returns: { - type: String, - desc: 'The secret phrase.', - example: 'boasting breeches reshape reputably exit handrail stony jargon moneywise unhinge handed ruby' - } - }, - - getVaultMeta: { - section: SECTION_VAULT, - desc: 'Returns the metadata for a specific vault', - params: [ - { - type: String, - desc: 'Vault name', - example: 'StrongVault' - } - ], - returns: { - type: String, - desc: 'The associated JSON metadata for this vault', - example: '{"passwordHint":"something"}' - } - }, - - hardwareAccountsInfo: { - section: SECTION_ACCOUNTS, - desc: 'Provides metadata for attached hardware wallets', - params: [], - returns: { - type: Object, - desc: 'Maps account address to metadata.', - details: { - manufacturer: { - type: String, - desc: 'Manufacturer' - }, - name: { - type: String, - desc: 'Account name' - } - }, - example: { - '0x0024d0c7ab4c52f723f3aaf0872b9ea4406846a4': { - manufacturer: 'Ledger', - name: 'Nano S' - } - } - } - }, - - listOpenedVaults: { - desc: 'Returns a list of all opened vaults', - params: [], - returns: { - type: Array, - desc: 'Names of all opened vaults', - example: "['Personal']" - } - }, - - listVaults: { - desc: 'Returns a list of all available vaults', - params: [], - returns: { - type: Array, - desc: 'Names of all available vaults', - example: "['Personal','Work']" - } - }, - - localTransactions: { - desc: 'Returns an object of current and past local transactions.', - params: [], - returns: { - type: Object, - desc: 'Mapping of transaction hashes to status objects status object.', - example: { - '0x09e64eb1ae32bb9ac415ce4ddb3dbad860af72d9377bb5f073c9628ab413c532': { - status: 'mined', - transaction: { - from: '0x00a329c0648769a73afac7f9381e08fb43dbea72', - to: '0x00a289b43e1e4825dbedf2a78ba60a640634dc40', - value: '0xfffff', - blockHash: null, - blockNumber: null, - creates: null, - gas: '0xe57e0', - gasPrice: '0x2d20cff33', - hash: '0x09e64eb1ae32bb9ac415ce4ddb3dbad860af72d9377bb5f073c9628ab413c532', - input: '0x', - condition: { - block: 1 - }, - networkId: null, - nonce: '0x0', - publicKey: '0x3fa8c08c65a83f6b4ea3e04e1cc70cbe3cd391499e3e05ab7dedf28aff9afc538200ff93e3f2b2cb5029f03c7ebee820d63a4c5a9541c83acebe293f54cacf0e', - raw: '0xf868808502d20cff33830e57e09400a289b43e1e4825dbedf2a78ba60a640634dc40830fffff801ca034c333b0b91cd832a3414d628e3fea29a00055cebf5ba59f7038c188404c0cf3a0524fd9b35be170439b5ffe89694ae0cfc553cb49d1d8b643239e353351531532', - standardV: '0x1', - v: '0x1c', - r: '0x34c333b0b91cd832a3414d628e3fea29a00055cebf5ba59f7038c188404c0cf3', - s: '0x524fd9b35be170439b5ffe89694ae0cfc553cb49d1d8b643239e353351531532', - transactionIndex: null - } - }, - '0x...': new Dummy('{ ... }') - } - } - }, - - minGasPrice: { - section: SECTION_MINING, - desc: 'Returns currently set minimal gas price', - params: [], - returns: { - type: Quantity, - desc: 'Minimal Gas Price', - format: 'outputBigNumberFormatter', - example: fromDecimal(11262783488) - } - }, - - mode: { - section: SECTION_NODE, - desc: 'Get the mode. Results one of: `"active"`, `"passive"`, `"dark"`, `"offline"`.', - params: [], - returns: { - type: String, - desc: 'The mode.', - example: 'active' - } - }, - - nodeKind: { - section: SECTION_NODE, - desc: 'Returns the node type availability and capability', - params: [], - returns: { - type: Object, - desc: 'Availability and Capability.', - details: { - availability: { - type: String, - desc: 'Availability, either `personal` or `public`.' - }, - capability: { - type: String, - desc: 'Capability, either `full` or `light`.' - } - }, - example: { - availability: 'personal', - capability: 'light' - } - } - }, - - netChain: { - section: SECTION_NET, - desc: 'Returns the name of the connected chain. DEPRECATED use `parity_chain` instead.', - params: [], - returns: { - type: String, - desc: 'chain name.', - example: 'homestead' - } - }, - - chain: { - section: SECTION_NET, - desc: 'Returns the name of the connected chain. ', - params: [], - returns: { - type: String, - desc: 'chain name, one of: "foundation", "kovan", &c. of a filename.', - example: 'homestead' - } - }, - - netPeers: { - section: SECTION_NET, - desc: 'Returns number of peers.', - params: [], - returns: { - type: Object, - desc: 'Number of peers', - details: { - active: { - type: Quantity, - desc: 'Number of active peers.' - }, - connected: { - type: Quantity, - desc: 'Number of connected peers.' - }, - max: { - type: Quantity, - desc: 'Maximum number of connected peers.' - }, - peers: { - type: Array, - desc: 'List of all peers with details.' - } - }, - example: { - active: 0, - connected: 25, - max: 25, - peers: [new Dummy('{ ... }, { ... }, { ... }, ...')] - } - } - }, - - netPort: { - section: SECTION_NET, - desc: 'Returns network port the node is listening on.', - params: [], - returns: { - type: Quantity, - desc: 'Port number', - example: 30303 - } - }, - - newVault: { - section: SECTION_VAULT, - desc: 'Creates a new vault with the given name & password', - params: [ - { - type: String, - desc: 'Vault name', - example: 'StrongVault' - }, - { - type: String, - desc: 'Password', - example: 'p@55w0rd' - } - ], - returns: { - type: Boolean, - desc: 'True on success', - example: true - } - }, - - nextNonce: { - section: SECTION_NET, - desc: 'Returns next available nonce for transaction from given account. Includes pending block and transaction queue.', - params: [ - { - type: Address, - desc: 'Account', - example: '0x00A289B43e1e4825DbEDF2a78ba60a640634DC40' - } - ], - returns: { - type: Quantity, - desc: 'Next valid nonce', - example: fromDecimal(12) - } - }, - - nodeName: { - section: SECTION_NODE, - desc: 'Returns node name, set when starting parity with `--identity NAME`.', - params: [], - returns: { - type: String, - desc: 'Node name.', - example: 'Doge' - } - }, - - openVault: { - section: SECTION_VAULT, - desc: 'Opens a vault with the given name & password', - params: [ - { - type: String, - desc: 'Vault name', - example: 'StrongVault' - }, - { - type: String, - desc: 'Password', - example: 'p@55w0rd' - } - ], - returns: { - type: Boolean, - desc: 'True on success', - example: true - } - }, - - pendingTransactions: { - section: SECTION_NET, - desc: 'Returns a list of transactions currently in the queue.', - params: [], - returns: { - type: Array, - desc: 'Transactions ordered by priority', - details: TransactionResponse.details, - example: [ - { - blockHash: null, - blockNumber: null, - creates: null, - from: '0xee3ea02840129123d5397f91be0391283a25bc7d', - gas: '0x23b58', - gasPrice: '0xba43b7400', - hash: '0x160b3c30ab1cf5871083f97ee1cee3901cfba3b0a2258eb337dd20a7e816b36e', - input: '0x095ea7b3000000000000000000000000bf4ed7b27f1d666546e30d74d50d173d20bca75400000000000000000000000000002643c948210b4bd99244ccd64d5555555555', - condition: { - block: 1 - }, - networkId: 1, - nonce: '0x5', - publicKey: '0x96157302dade55a1178581333e57d60ffe6fdf5a99607890456a578b4e6b60e335037d61ed58aa4180f9fd747dc50d44a7924aa026acbfb988b5062b629d6c36', - r: '0x92e8beb19af2bad0511d516a86e77fa73004c0811b2173657a55797bdf8558e1', - raw: '0xf8aa05850ba43b740083023b5894bb9bc244d798123fde783fcc1c72d3bb8c18941380b844095ea7b3000000000000000000000000bf4ed7b27f1d666546e30d74d50d173d20bca75400000000000000000000000000002643c948210b4bd99244ccd64d555555555526a092e8beb19af2bad0511d516a86e77fa73004c0811b2173657a55797bdf8558e1a062b4d4d125bbcb9c162453bc36ca156537543bb4414d59d1805d37fb63b351b8', - s: '0x62b4d4d125bbcb9c162453bc36ca156537543bb4414d59d1805d37fb63b351b8', - standardV: '0x1', - to: '0xbb9bc244d798123fde783fcc1c72d3bb8c189413', - transactionIndex: null, - v: '0x26', - value: '0x0' - }, - new Dummy('{ ... }'), - new Dummy('{ ... }') - ] - } - }, - - pendingTransactionsStats: { - section: SECTION_NET, - desc: 'Returns propagation stats for transactions in the queue.', - params: [], - returns: { - type: Object, - desc: 'mapping of transaction hashes to stats.', - example: { - '0xdff37270050bcfba242116c745885ce2656094b2d3a0f855649b4a0ee9b5d15a': { - firstSeen: 3032066, - propagatedTo: { - '0x605e04a43b1156966b3a3b66b980c87b7f18522f7f712035f84576016be909a2798a438b2b17b1a8c58db314d88539a77419ca4be36148c086900fba487c9d39': 1, - '0xbab827781c852ecf52e7c8bf89b806756329f8cbf8d3d011e744a0bc5e3a0b0e1095257af854f3a8415ebe71af11b0c537f8ba797b25972f519e75339d6d1864': 1 - } - } - } - } - }, - - removeTransaction: { - section: SECTION_NET, - desc: 'Removes transaction from local transaction pool. Scheduled transactions and not-propagated transactions are safe to remove, removal of other transactions may have no effect though.', - params: [{ - type: Hash, - desc: 'Hash of transaction to remove.', - example: '0x2547ea3382099c7c76d33dd468063b32d41016aacb02cbd51ebc14ff5d2b6a43' - }], - returns: { - type: Object, - desc: 'Removed transaction or `null`.', - details: TransactionResponse.details, - example: [ - { - blockHash: null, - blockNumber: null, - creates: null, - from: '0xee3ea02840129123d5397f91be0391283a25bc7d', - gas: '0x23b58', - gasPrice: '0xba43b7400', - hash: '0x160b3c30ab1cf5871083f97ee1cee3901cfba3b0a2258eb337dd20a7e816b36e', - input: '0x095ea7b3000000000000000000000000bf4ed7b27f1d666546e30d74d50d173d20bca75400000000000000000000000000002643c948210b4bd99244ccd64d5555555555', - condition: { - block: 1 - }, - networkId: 1, - nonce: '0x5', - publicKey: '0x96157302dade55a1178581333e57d60ffe6fdf5a99607890456a578b4e6b60e335037d61ed58aa4180f9fd747dc50d44a7924aa026acbfb988b5062b629d6c36', - r: '0x92e8beb19af2bad0511d516a86e77fa73004c0811b2173657a55797bdf8558e1', - raw: '0xf8aa05850ba43b740083023b5894bb9bc244d798123fde783fcc1c72d3bb8c18941380b844095ea7b3000000000000000000000000bf4ed7b27f1d666546e30d74d50d173d20bca75400000000000000000000000000002643c948210b4bd99244ccd64d555555555526a092e8beb19af2bad0511d516a86e77fa73004c0811b2173657a55797bdf8558e1a062b4d4d125bbcb9c162453bc36ca156537543bb4414d59d1805d37fb63b351b8', - s: '0x62b4d4d125bbcb9c162453bc36ca156537543bb4414d59d1805d37fb63b351b8', - standardV: '0x1', - to: '0xbb9bc244d798123fde783fcc1c72d3bb8c189413', - transactionIndex: null, - v: '0x26', - value: '0x0' - }, - new Dummy('{ ... }'), - new Dummy('{ ... }') - ] - } - }, - - phraseToAddress: { - section: SECTION_ACCOUNTS, - desc: 'Converts a secret phrase into the corresponding address.', - params: [ - { - type: String, - desc: 'The phrase', - example: 'stylus outing overhand dime radial seducing harmless uselessly evasive tastiness eradicate imperfect' - } - ], - returns: { - type: Address, - desc: 'Corresponding address', - example: '0x004385d8be6140e6f889833f68b51e17b6eacb29' - } - }, - - releasesInfo: { - desc: 'returns a ReleasesInfo object describing the current status of releases', - params: [], - returns: { - type: Object, - desc: 'Information on current releases, `null` if not available.', - details: { - fork: { - type: Quantity, - desc: 'Block number representing the last known fork for this chain, which may be in the future.' - }, - minor: { - type: Object, - desc: 'Information about latest minor update to current version, `null` if this is the latest minor version.' - }, - track: { - type: Object, - desc: 'Information about the latest release in this track.' - } - }, - example: null - } - }, - - registryAddress: { - section: SECTION_NET, - desc: 'The address for the global registry.', - params: [], - returns: { - type: Address, - desc: 'The registry address.', - example: '0x3bb2bb5c6c9c9b7f4ef430b47dc7e026310042ea' - } - }, - - rpcSettings: { - section: SECTION_NET, - desc: 'Provides current JSON-RPC API settings.', - params: [], - returns: { - type: Object, - desc: 'JSON-RPC settings.', - details: { - enabled: { - type: Boolean, - desc: '`true` if JSON-RPC is enabled (default).' - }, - interface: { - type: String, - desc: 'Interface on which JSON-RPC is running.' - }, - port: { - type: Quantity, - desc: 'Port on which JSON-RPC is running.' - } - }, - example: { - enabled: true, - interface: 'local', - port: 8545 - } - } - }, - - setVaultMeta: { - section: SECTION_VAULT, - desc: 'Sets the metadata for a specific vault', - params: [ - { - type: String, - desc: 'Vault name', - example: 'StrongVault' - }, - { - type: String, - desc: 'The metadata as a JSON string', - example: '{"passwordHint":"something"}' - } - ], - returns: { - type: Boolean, - desc: 'The boolean call result, true on success', - example: true - } - }, - - transactionsLimit: { - section: SECTION_MINING, - desc: 'Changes limit for transactions in queue.', - params: [], - returns: { - type: Quantity, - desc: 'Current max number of transactions in queue.', - format: 'outputBigNumberFormatter', - example: 1024 - } - }, - - unsignedTransactionsCount: { - section: SECTION_NET, - desc: 'Returns number of unsigned transactions when running with Trusted Signer. Error otherwise', - params: [], - returns: { - type: Quantity, - desc: 'Number of unsigned transactions', - example: 0 - } - }, - - versionInfo: { - desc: 'Provides information about running version of Parity.', - params: [], - returns: { - type: Object, - desc: 'Information on current version.', - details: { - hash: { - type: Hash, - desc: '20 Byte hash of the current build.' - }, - track: { - type: String, - desc: 'Track on which it was released, one of: `"stable"`, `"beta"`, `"nightly"`, `"testing"`, `"null"` (unknown or self-built).' - }, - version: { - type: Object, - desc: 'Version number composed of `major`, `minor` and `patch` integers.' - } - }, - example: { - hash: '0x2ae8b4ca278dd7b896090366615fef81cbbbc0e0', - track: 'null', - version: { - major: 1, - minor: 6, - patch: 0 - } - } - } - }, - - listAccounts: { - desc: 'Returns all addresses if Fat DB is enabled (`--fat-db`), `null` otherwise.', - section: SECTION_ACCOUNTS, - params: [ - { - type: Quantity, - desc: 'Integer number of addresses to display in a batch.', - example: 5 - }, - { - type: Address, - desc: '20 Bytes - Offset address from which the batch should start in order, or `null`.', - example: null - }, - { - type: BlockNumber, - desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`.', - format: 'inputDefaultBlockNumberFormatter', - optional: true - } - ], - returns: { - type: Array, - desc: 'Requested number of `Address`es or `null` if Fat DB is not enabled.', - example: [ - '0x7205b1bb42edce6e0ced37d1fd0a9d684f5a860f', - '0x98a2559a814c300b274325c92df1682ae0d344e3', - '0x2d7a7d0adf9c5f9073fefbdc18188bd23c68b633', - '0xd4bb3284201db8b03c06d8a3057dd32538e3dfda', - '0xa6396904b08aa31300ca54278b8e066ecc38e4a0' - ] - } - }, - - listStorageKeys: { - desc: 'Returns all storage keys of the given address (first parameter) if Fat DB is enabled (`--fat-db`), `null` otherwise.', - params: [ - { - type: Address, - desc: '20 Bytes - Account for which to retrieve the storage keys.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: Quantity, - desc: 'Integer number of addresses to display in a batch.', - example: 5 - }, - { - type: Hash, - desc: '32 Bytes - Offset storage key from which the batch should start in order, or `null`.', - example: null - }, - { - type: BlockNumber, - desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`.', - format: 'inputDefaultBlockNumberFormatter', - optional: true - } - ], - returns: { - type: Array, - desc: 'Requested number of 32 byte long storage keys for the given account or `null` if Fat DB is not enabled.', - example: [ - '0xaab1a2940583e213f1d57a3ed358d5f5406177c8ff3c94516bfef3ea62d00c22', - '0xba8469eca5641b186e86cbc5343dfa5352df04feb4564cd3cf784f213aaa0319', - '0x769d107ba778d90205d7a159e820c41c20bf0783927b426c602561e74b7060e5', - '0x0289865bcaa58f7f5bf875495ac7af81e3630eb88a3a0358407c7051a850624a', - '0x32e0536502b9163b0a1ce6e3aabd95fa4a2bf602bbde1b9118015648a7a51178' - ] - } - }, - - encryptMessage: { - desc: 'Encrypt some data with a public key under ECIES.', - params: [ - { - type: Hash, - desc: 'Public EC key generated with `secp256k1` curve, truncated to the last 64 bytes.', - example: '0xD219959D466D666060284733A80DDF025529FEAA8337169540B3267B8763652A13D878C40830DD0952639A65986DBEC611CF2171A03CFDC37F5A40537068AA4F' - }, - { - type: Data, - desc: 'The message to encrypt.', - example: withComment('0x68656c6c6f20776f726c64', '"hello world"') - } - ], - returns: { - type: Data, - desc: 'Encrypted message.', - example: '0x0491debeec5e874a453f84114c084c810708ebcb553b02f1b8c05511fa4d1a25fa38eb49a32c815e2b39b7bcd56d66648bf401067f15413dae683084ca7b01e21df89be9ec4bc6c762a657dbd3ba1540f557e366681b53629bb2c02e1443b5c0adc6b68f3442c879456d6a21ec9ed07847fa3c3ecb73ec7ee9f8e32d' - } - }, - - futureTransactions: { - desc: 'Returns all future transactions from transaction queue.', - params: [], - returns: { - type: Array, - desc: 'Transaction list.', - details: TransactionResponse.details, - example: [ - { - hash: '0x80de421cd2e7e46824a91c343ca42b2ff339409eef09e2d9d73882462f8fce31', - nonce: '0x1', - blockHash: null, - blockNumber: null, - transactionIndex: null, - from: '0xe53e478c072265e2d9a99a4301346700c5fbb406', - to: '0xf5d405530dabfbd0c1cab7a5812f008aa5559adf', - value: '0x2efc004ac03a4996', - gasPrice: '0x4a817c800', - gas: '0x5208', - input: '0x', - creates: null, - raw: '0xf86c018504a817c80082520894f5d405530dabfbd0c1cab7a5812f008aa5559adf882efc004ac03a49968025a0b40c6967a7e8bbdfd99a25fd306b9ef23b80e719514aeb7ddd19e2303d6fc139a06bf770ab08119e67dc29817e1412a0e3086f43da308c314db1b3bca9fb6d32bd', - publicKey: '0xeba33fd74f06236e17475bc5b6d1bac718eac048350d77d3fc8fbcbd85782a57c821255623c4fd1ebc9d555d07df453b2579ee557b7203fc256ca3b3401e4027', - networkId: 1, - standardV: '0x0', - v: '0x25', - r: '0xb40c6967a7e8bbdfd99a25fd306b9ef23b80e719514aeb7ddd19e2303d6fc139', - s: '0x6bf770ab08119e67dc29817e1412a0e3086f43da308c314db1b3bca9fb6d32bd', - condition: { - block: 1 - } - }, - new Dummy('{ ... }, { ... }, ...') - ] - } - }, - - /* - * `parity_accounts` module methods - * ================================ - */ - allAccountsInfo: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'returns a map of accounts as an object.', - params: [], - returns: { - type: Array, - desc: 'Account metadata.', - details: { - name: { - type: String, - desc: 'Account name.' - }, - meta: { - type: String, - desc: 'Encoded JSON string the defines additional account metadata.' - }, - uuid: { - type: String, - desc: 'The account Uuid, or `null` if not available/unknown/not applicable.' - } - }, - example: { - '0x00a289b43e1e4825dbedf2a78ba60a640634dc40': { - meta: '{}', - name: 'Foobar', - uuid: '0b9e70e6-235b-682d-a15c-2a98c71b3945' - } - } - } - }, - - newAccountFromPhrase: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Creates a new account from a recovery phrase.', - params: [ - { - type: String, - desc: 'Recovery phrase.', - example: 'stylus outing overhand dime radial seducing harmless uselessly evasive tastiness eradicate imperfect' - }, - { - type: String, - desc: 'Password.', - example: 'hunter2' - } - ], - returns: { - type: Address, - desc: 'The created address.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - }, - - newAccountFromSecret: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Creates a new account from a private ethstore secret key.', - params: [ - { - type: Data, - desc: 'Secret, 32-byte hex', - example: '0x1db2c0cf57505d0f4a3d589414f0a0025ca97421d2cd596a9486bc7e2cd2bf8b' - }, - { - type: String, - desc: 'Password', - example: 'hunter2' - } - ], - returns: { - type: Address, - desc: 'The created address.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - }, - - newAccountFromWallet: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Creates a new account from a JSON import', - params: [ - { - type: String, - desc: 'Wallet JSON encoded to a string.', - example: '{"id": "9c62e86b-3cf9...", ...}' - }, - { - type: String, - desc: 'Password.', - example: 'hunter2' - } - ], - returns: { - type: Address, - desc: 'The created address', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - }, - - setAccountName: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Sets a name for the account', - params: [ - { - type: Address, - desc: 'Address', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Name', - example: 'Foobar' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - setAccountMeta: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Sets metadata for the account', - params: [ - { - type: Address, - desc: 'Address', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Metadata (JSON encoded)', - example: '{"foo":"bar"}' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - testPassword: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Checks if a given password can unlock a given account, without actually unlocking it.', - params: [ - { - type: Address, - desc: 'Account to test.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Password to test.', - example: 'hunter2' - } - ], - returns: { - type: Boolean, - desc: '`true` if the account and password are valid.', - example: true - } - }, - - changePassword: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Change the password for a given account.', - params: [ - { - type: Address, - desc: 'Address of the account.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Old password.', - example: 'hunter2' - }, - { - type: String, - desc: 'New password.', - example: 'bazqux5' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - killAccount: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Deletes an account.', - params: [ - { - type: Address, - desc: 'The account to remove.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Account password.', - example: 'hunter2' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - removeAddress: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Removes an address from the addressbook.', - params: [ - { - type: Address, - desc: 'The address to remove.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - ], - returns: { - type: Boolean, - desc: '`true`if the call was successful.', - example: true - } - }, - - setDappAddresses: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Sets the available addresses for a dapp. When provided with non-empty list changes the default account as well.', - params: [ - { - type: String, - desc: 'Dapp Id.', - example: 'web' - }, - { - type: Array, - desc: 'Array of available accounts available to the dapp or `null` for default list.', - example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1'] - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - getDappAddresses: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Returns the list of accounts available to a specific dapp.', - params: [ - { - type: String, - desc: 'Dapp Id.', - example: 'web' - } - ], - returns: { - type: Array, - desc: 'The list of available accounts.', - example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1'] - } - }, - - setDappDefaultAddress: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Changes dapp default address. Does not affect other accounts exposed for this dapp, but default account will always be retured as the first one.', - params: [ - { - type: String, - desc: 'Dapp Id.', - example: 'web' - }, - { - type: Address, - desc: 'Default Address.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful', - example: true - } - }, - - getDappDefaultAddress: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Returns a default account available to a specific dapp.', - params: [ - { - type: String, - desc: 'Dapp Id.', - example: 'web' - } - ], - returns: { - type: Address, - desc: 'Default Address', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - }, - - setNewDappsAddresses: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Sets the list of accounts available to new dapps.', - params: [ - { - type: Array, - desc: 'List of accounts available by default or `null` for all accounts.', - example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1'] - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful', - example: true - } - }, - - getNewDappsAddresses: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Returns the list of accounts available to a new dapps.', - params: [], - returns: { - type: Array, - desc: 'The list of available accounts, can be `null`.', - example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1'] - } - }, - - setNewDappsDefaultAddress: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Changes global default address. This setting may be overriden for a specific dapp.', - params: [ - { - type: Address, - desc: 'Default Address.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful', - example: true - } - }, - - getNewDappsDefaultAddress: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Returns a default account available to dapps.', - params: [], - returns: { - type: Address, - desc: 'Default Address', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - }, - - listRecentDapps: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Returns a list of the most recent active dapps.', - params: [], - returns: { - type: Array, - desc: 'Array of Dapp Ids.', - example: ['web'] - } - }, - - importGethAccounts: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Imports a list of accounts from Geth.', - params: [ - { - type: Array, - desc: 'List of the Geth addresses to import.', - example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1'] - } - ], - returns: { - type: Array, - desc: 'Array of the imported addresses.', - example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1'] - } - }, - - listGethAccounts: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Returns a list of the accounts available from Geth.', - params: [], - returns: { - type: Array, - desc: '20 Bytes addresses owned by the client.', - example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1'] - } - }, - - deriveAddressHash: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Derive new address from given account address using specific hash.', - params: [ - { - type: Address, - desc: 'Account address to derive from.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Password to the account.', - example: 'hunter2' - }, - { - type: Object, - desc: 'Derivation hash and type (`soft` or `hard`). E.g. `{ hash: "0x123..123", type: "hard" }`.', - example: { - hash: '0x2547ea3382099c7c76d33dd468063b32d41016aacb02cbd51ebc14ff5d2b6a43', - type: 'hard' - } - }, - { - type: Boolean, - desc: 'Flag indicating if the account should be saved.', - example: false - } - ], - returns: { - type: Address, - desc: '20 Bytes new derived address.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - }, - - deriveAddressIndex: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Derive new address from given account address using hierarchical derivation (sequence of 32-bit integer indices).', - params: [ - { - type: Address, - desc: 'Account address to export.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Password to the account.', - example: 'hunter2' - }, - { - type: Array, - desc: 'Hierarchical derivation sequence of index and type (`soft` or `hard`). E.g. `[{index:1,type:"hard"},{index:2,type:"soft"}]`.', - example: [ - { index: 1, type: 'hard' }, - { index: 2, type: 'soft' } - ] - }, - { - type: Boolean, - desc: 'Flag indicating if the account should be saved.', - example: false - } - ], - returns: { - type: Address, - desc: '20 Bytes new derived address.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - }, - - exportAccount: { - subdoc: SUBDOC_ACCOUNTS, - desc: 'Returns a standard wallet file for given account if password matches.', - params: [ - { - type: Address, - desc: 'Account address to export.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Password to the account.', - example: 'hunter2' - } - ], - returns: { - type: Object, - desc: 'Standard wallet JSON.', - example: { - 'address': '0042e5d2a662eeaca8a7e828c174f98f35d8925b', - 'crypto': { - 'cipher': 'aes-128-ctr', - 'cipherparams': { 'iv': 'a1c6ff99070f8032ca1c4e8add006373' }, - 'ciphertext': 'df27e3db64aa18d984b6439443f73660643c2d119a6f0fa2fa9a6456fc802d75', - 'kdf': 'pbkdf2', - 'kdfparams': { 'c': 10240, 'dklen': 32, 'prf': 'hmac-sha256', 'salt': 'ddc325335cda5567a1719313e73b4842511f3e4a837c9658eeb78e51ebe8c815' }, - 'mac': '3dc888ae79cbb226ff9c455669f6cf2d79be72120f2298f6cb0d444fddc0aa3d' - }, - 'id': '6a186c80-7797-cff2-bc2e-7c1d6a6cc76e', - 'meta': '{"passwordHint":"parity-export-test","timestamp":1490017814987}', - 'name': 'parity-export-test', - 'version': 3 - } - } - }, - - /* - * `parity_set` module methods - * =========================== - */ - setMinGasPrice: { - subdoc: SUBDOC_SET, - desc: 'Changes minimal gas price for transaction to be accepted to the queue.', - params: [ - { - type: Quantity, - desc: 'Minimal gas price', - format: 'utils.toHex', - example: fromDecimal(1000) - } - ], - returns: { - type: Boolean, - desc: 'whether the call was successful', - example: true - } - }, - - setGasFloorTarget: { - subdoc: SUBDOC_SET, - desc: 'Sets a new gas floor target for mined blocks..', - params: [ - { - type: Quantity, - desc: '(default: `0x0`) Gas floor target.', - format: 'utils.toHex', - example: fromDecimal(1000) - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - setGasCeilTarget: { - subdoc: SUBDOC_SET, - desc: 'Sets new gas ceiling target for mined blocks.', - params: [ - { - type: Quantity, - desc: '(default: `0x0`) Gas ceiling target.', - format: 'utils.toHex', - example: fromDecimal(10000000000) - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - setExtraData: { - subdoc: SUBDOC_SET, - desc: 'Changes extra data for newly mined blocks', - params: [ - { - type: Data, - desc: 'Extra Data', - format: 'utils.toHex', - example: '0x' - } - ], - returns: { - type: Boolean, - desc: 'whether the call was successful', - example: true - } - }, - - setAuthor: { - subdoc: SUBDOC_SET, - desc: 'Changes author (coinbase) for mined blocks.', - params: [ - { - type: Address, - desc: '20 Bytes - Address', - format: 'inputAddressFormatter', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - setMaxTransactionGas: { - subdoc: SUBDOC_SET, - desc: 'Sets the maximum amount of gas a single transaction may consume.', - params: [ - { - type: Quantity, - desc: 'Gas amount', - format: 'utils.toHex', - example: fromDecimal(100000) - } - ], - returns: { - type: Boolean, - desc: '`true` if the call was successful.', - example: true - } - }, - - setTransactionsLimit: { - subdoc: SUBDOC_SET, - desc: 'Changes limit for transactions in queue.', - params: [ - { - type: Quantity, - desc: 'New Limit', - format: 'utils.toHex', - example: fromDecimal(1000) - } - ], - returns: { - type: Boolean, - desc: 'whether the call was successful', - example: true - } - }, - - addReservedPeer: { - subdoc: SUBDOC_SET, - desc: 'Add a reserved peer.', - params: [ - { - type: String, - desc: 'Enode address', - example: 'enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@22.99.55.44:7770' - } - ], - returns: { - type: Boolean, - desc: '`true` if successful.', - example: true - } - }, - - removeReservedPeer: { - subdoc: SUBDOC_SET, - desc: 'Remove a reserved peer.', - params: [ - { - type: String, - desc: 'Encode address', - example: 'enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@22.99.55.44:7770' - } - ], - returns: { - type: Boolean, - desc: '`true` if successful.', - example: true - } - }, - - dropNonReservedPeers: { - subdoc: SUBDOC_SET, - desc: 'Set Parity to drop all non-reserved peers. To restore default behavior call [parity_acceptNonReservedPeers](#parity_acceptnonreservedpeers).', - params: [], - returns: { - type: Boolean, - desc: '`true` if successful.', - example: true - } - }, - - acceptNonReservedPeers: { - subdoc: SUBDOC_SET, - desc: 'Set Parity to accept non-reserved peers (default behavior).', - params: [], - returns: { - type: Boolean, - desc: '`true` if successful.', - example: true - } - }, - - hashContent: { - subdoc: SUBDOC_SET, - desc: 'Creates a hash of a file at a given URL.', - params: [ - { - type: String, - desc: 'The url of the content.', - example: 'https://raw.githubusercontent.com/paritytech/parity/master/README.md' - } - ], - returns: { - type: Hash, - desc: 'The SHA-3 hash of the content.', - example: '0x2547ea3382099c7c76d33dd468063b32d41016aacb02cbd51ebc14ff5d2b6a43' - } - }, - - setChain: { - subdoc: SUBDOC_SET, - desc: 'Sets the network spec file Parity is using.', - params: [ - { - type: String, - desc: 'Chain spec name, one of: "foundation", "ropsten", "morden", "kovan", "olympic", "classic", "dev", "expanse" or a filename.', - example: 'foundation' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call succeeded.', - example: true - } - }, - - setMode: { - subdoc: SUBDOC_SET, - desc: 'Changes the operating mode of Parity.', - params: [ - { - type: String, - desc: 'The mode to set, one of:\n * `"active"` - Parity continuously syncs the chain.\n * `"passive"` - Parity syncs initially, then sleeps and wakes regularly to resync.\n * `"dark"` - Parity syncs only when the RPC is active.\n * `"offline"` - Parity doesn\'t sync.\n', - example: 'passive' - } - ], - returns: { - type: Boolean, - desc: '`true` if the call succeeded.', - example: true - } - }, - - setEngineSigner: { - subdoc: SUBDOC_SET, - desc: 'Sets an authority account for signing consensus messages. For more information check the [[Proof of Authority Chains]] page.', - params: [ - { - type: Address, - desc: 'Identifier of a valid authority account.', - example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1' - }, - { - type: String, - desc: 'Passphrase to unlock the account.', - example: 'hunter2' - } - ], - returns: { - type: Boolean, - desc: 'True if the call succeeded', - example: true - } - }, - - upgradeReady: { - subdoc: SUBDOC_SET, - desc: 'Returns a ReleaseInfo object describing the release which is available for upgrade or `null` if none is available.', - params: [], - returns: { - type: Object, - desc: 'Details or `null` if no new release is available.', - details: { - version: { - type: Object, - desc: 'Information on the version.' - }, - is_critical: { - type: Boolean, - desc: 'Does this release contain critical security updates?' - }, - fork: { - type: Quantity, - desc: 'The latest fork that this release can handle.' - }, - binary: { - type: Data, - desc: 'Keccak-256 checksum of the release parity binary, if known.', - optional: true - } - }, - example: null - } - }, - - executeUpgrade: { - subdoc: SUBDOC_SET, - desc: 'Attempts to upgrade Parity to the version specified in [parity_upgradeReady](#parity_upgradeready).', - params: [], - returns: { - type: Boolean, - desc: 'returns `true` if the upgrade to the new release was successfully executed, `false` if not.', - example: true - } - }, - - /* - * `parity_signing` trait methods (rolled into `parity` module) - * ============================================================ - */ - postSign: { - section: SECTION_ACCOUNTS, - desc: 'Request an arbitrary transaction to be signed by an account.', - params: [ - { - type: Address, - desc: 'Account address.', - example: '0xb60e8dd61c5d32be8058bb8eb970870f07233155' - }, - { - type: Hash, - desc: 'Transaction hash.', - example: '0x8cda01991ae267a539135736132f1f987e76868ce0269b7537d3aab37b7b185e' - } - ], - returns: { - type: Quantity, - desc: 'The id of the request to the signer. If the account was already unlocked, returns `Hash` of the transaction instead.', - example: '0x1' - } - }, - - postTransaction: { - section: SECTION_ACCOUNTS, - desc: 'Posts a transaction to the signer without waiting for the signer response.', - params: [ - { - type: TransactionRequest, - desc: 'see [`eth_sendTransaction`](JSONRPC-eth-module#eth_sendtransaction).', - format: 'inputCallFormatter', - example: { - from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', - to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567', - gas: fromDecimal(30400), - gasPrice: fromDecimal(10000000000000), - value: fromDecimal(2441406250), - data: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675', - condition: { - block: 354221, - time: new Date() - } - } - } - ], - returns: { - type: Quantity, - desc: 'The id of the request to the signer. If the account was already unlocked, returns `Hash` of the transaction instead.', - format: 'utils.toDecimal', - example: '0x1' - } - }, - - checkRequest: { - section: SECTION_ACCOUNTS, - desc: 'Get the the transaction hash of the request previously posted to [`parity_postTransaction`](#parity_posttransaction) or [`parity_postSign`](#parity_postsign). Will return a JSON-RPC error if the request was rejected.', - params: [ - { - type: Quantity, - desc: 'The id of the request sent to the signer.', - example: '0x1' - } - ], - returns: { - type: Hash, - desc: '32 Bytes - the transaction hash or `null` if the request hasn\'t been signed yet.', - example: '0xde8dfd9642f7eeef12402f2a560dbf40921b4f0bda01fb84709b9d71f6c181be' - } - }, - - decryptMessage: { - desc: 'Decrypt a message encrypted with a ECIES public key.', - params: [ - { - type: Address, - desc: 'Account which can decrypt the message.', - example: '0x00a329c0648769a73afac7f9381e08fb43dbea72' - }, - { - type: Data, - desc: 'Encrypted message.', - example: '0x0405afee7fa2ab3e48c27b00d543389270cb7267fc191ca1311f297255a83cbe8d77a4ba135b51560700a582924fa86d2b19029fcb50d2b68d60a7df1ba81df317a19c8def117f2b9cf8c2618be0e3f146a5272fb9e5528719d2d7a1bd91fa620901cffa756305c79c093e7af30fa3c1587029421351c34a7c1e5a2b' - } - ], - returns: { - type: Data, - desc: 'Decrypted message.', - example: withComment('0x68656c6c6f20776f726c64', 'hello world') - } - }, - - signMessage: { - desc: 'Sign the hashed message bytes with the given account.', - params: [ - { - type: Address, - desc: 'Account which signs the message.', - example: '0xc171033d5cbff7175f29dfd3a63dda3d6f8f385e' - }, - { - type: String, - desc: 'Passphrase to unlock the account.', - example: 'password1' - }, - { - type: Data, - desc: 'Hashed message.', - example: '0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a' - } - ], - returns: { - type: Data, - desc: 'Message signature.', - example: '0x1d9e33a8cf8bfc089a172bca01da462f9e359c6cb1b0f29398bc884e4d18df4f78588aee4fb5cc067ca62d2abab995e0bba29527be6ac98105b0320020a2efaf00' - } - }, - - wsUrl: { - section: SECTION_NODE, - desc: 'Returns the hostname and the port of WebSockets/Signer server, error if not enabled.', - params: [], - returns: { - type: String, - desc: 'The hostname and port number', - example: 'localhost:8546' - } - }, - - composeTransaction: { - desc: 'Given partial transaction request produces transaction with all fields filled in. Such transaction can be then signed externally.', - params: [ - { - type: TransactionRequest, - desc: 'see [`eth_sendTransaction`](JSONRPC-eth-module#eth_sendtransaction).', - format: 'inputCallFormatter', - example: { - from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', - to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567', - value: fromDecimal(2441406250) - } - } - ], - returns: { - type: Object, - desc: 'Transaction object (same as the parameter) with missing optional fields filled in by defaults.', - example: { - condition: null, - data: '0x', - from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', - gas: '0xe57e0', - gasPrice: '0x4a817c800', - nonce: '0x0', - to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567', - value: '0x9184e72a' - } - } - }, - - getBlockHeaderByNumber: { - desc: 'Get block header. Same as [`eth_getBlockByNumber`](JSONRPC-eth-module#eth_getblockbynumber) but without uncles and transactions.', - params: [ - { - type: BlockNumber, - desc: 'integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).', - example: fromDecimal(436) - } - ], - returns: { - type: Object, - desc: 'Block header', - example: { - author: '0xbb7b8287f3f0a933474a79eae42cbca977791171', - difficulty: '0x4ea3f27bc', - extraData: '0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32', - gasLimit: '0x1388', - gasUsed: '0x0', - hash: '0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae', - logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', - miner: '0xbb7b8287f3f0a933474a79eae42cbca977791171', - mixHash: '0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843', - nonce: '0x689056015818adbe', - number: '0x1b4', - parentHash: '0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54', - receiptsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421', - sealFields: ['0xa04fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843', '0x88689056015818adbe'], - sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', - size: '0x21b', - stateRoot: '0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d', - timestamp: '0x55ba467c', - transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421' - } - } - }, - - cidV0: { - desc: 'Compute a v0 IPFS Content ID from protobuf encoded bytes.', - params: [ - { - type: Data, - desc: 'to encode.', - example: '0x666f6f626172' - } - ], - returns: { - type: String, - desc: 'Base58 encoded CID', - example: 'QmSbFjqjd6nFwNHqsBCC7SK8GShGcayLUEtysJjNGhZAnC' - } - }, - - // Pub-Sub - subscribe: { - subdoc: SUBDOC_PUBSUB, - desc: ` -Starts a subscription (on WebSockets / IPC / TCP transports) to results of calling some other RPC method. -For every change in returned value of that RPC call a JSON-RPC notification with result and subscription ID will be sent to a client. - -An example notification received by subscribing to \`eth_accounts\` RPC method: -\`\`\` -{"jsonrpc":"2.0","method":"parity_subscription","params":{"subscription":"0x416d77337e24399d","result":["0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826"]}} -\`\`\` - -You can unsubscribe using \`parity_unsubscribe\` RPC method. Subscriptions are also tied to a transport -connection, disconnecting causes all subscriptions to be canceled. - `, - params: [ - { - type: String, - desc: 'RPC method name', - example: 'eth_getBalance' - }, - { - type: Array, - desc: 'Parameters passed to RPC method. (Optional, defaults to no parameters)', - example: ['0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826', 'latest'] - } - ], - returns: { - type: String, - desc: 'Assigned subscription ID', - example: '0x416d77337e24399d' - } - }, - unsubscribe: { - subdoc: SUBDOC_PUBSUB, - desc: 'Unsubscribes from a subscription.', - params: [{ - type: String, - desc: 'Subscription ID', - example: '0x416d77337e24399d' - }], - returns: { - type: Boolean, - desc: 'whether the call was successful', - example: true - } - } - -}; diff --git a/js/packages/jsonrpc/interfaces/personal.js b/js/packages/jsonrpc/interfaces/personal.js deleted file mode 100644 index 6a885a3d0..000000000 --- a/js/packages/jsonrpc/interfaces/personal.js +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Address, Data, Quantity, TransactionRequest } from '../types'; - -export default { - listAccounts: { - desc: 'Lists all stored accounts.', - params: [], - returns: { - type: Array, - desc: 'A list of 20 byte account identifiers.', - example: [ - '0x7bf87721a96849d168de02fd6ea5986a3a147383', - '0xca807a90fd64deed760fb98bf0869b475c469348' - ] - } - }, - - newAccount: { - desc: 'Creates new account.\n\n**Note:** it becomes the new current unlocked account. There can only be one unlocked account at a time.', - params: [ - { - type: String, - desc: 'Password for the new account.', - example: 'hunter2' - } - ], - returns: { - type: Address, - desc: '20 Bytes - The identifier of the new account.', - example: '0x8f0227d45853a50eefd48dd4fec25d5b3fd2295e' - } - }, - - sendTransaction: { - desc: 'Sends transaction and signs it in a single call. The account does not need to be unlocked to make this call, and will not be left unlocked after.', - params: [ - { - type: TransactionRequest, - desc: 'The transaction object', - example: { - from: '0x407d73d8a49eeb85d32cf465507dd71d507100c1', - to: '0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b', - data: '0x41cd5add4fd13aedd64521e363ea279923575ff39718065d38bd46f0e6632e8e', - value: '0x186a0' - } - }, - { - type: String, - desc: 'Passphrase to unlock the `from` account.', - example: 'hunter2' - } - ], - returns: { - type: Data, - desc: '32 Bytes - the transaction hash, or the zero hash if the transaction is not yet available', - example: '0x62e05075829655752e146a129a044ad72e95ce33e48ff48118b697e15e7b41e4' - } - }, - - unlockAccount: { - desc: 'Unlocks specified account for use.\n\nIf permanent unlocking is disabled (the default) then the duration argument will be ignored, and the account will be unlocked for a single signing. With permanent locking enabled, the duration sets the number of seconds to hold the account open for. It will default to 300 seconds. Passing 0 unlocks the account indefinitely.\n\nThere can only be one unlocked account at a time.', - params: [ - { - type: Address, - desc: '20 Bytes - The address of the account to unlock.', - example: '0x8f0227d45853a50eefd48dd4fec25d5b3fd2295e' - }, - { - type: String, - desc: 'Passphrase to unlock the account.', - example: 'hunter2' - }, - { - type: Quantity, - default: 300, - desc: 'Integer or `null` - Duration in seconds how long the account should remain unlocked for.', - example: null - } - ], - returns: { - type: Boolean, - desc: 'whether the call was successful', - example: true - } - } -}; diff --git a/js/packages/jsonrpc/interfaces/shh.js b/js/packages/jsonrpc/interfaces/shh.js deleted file mode 100644 index 801c965d0..000000000 --- a/js/packages/jsonrpc/interfaces/shh.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Data, Quantity } from '../types'; - -export default { - version: { - nodoc: 'Not present in Rust code', - desc: 'Returns the current whisper protocol version.', - params: [], - returns: { - type: String, - desc: 'The current whisper protocol version' - } - }, - - post: { - nodoc: 'Not present in Rust code', - desc: 'Sends a whisper message.', - params: [ - { - type: Object, desc: 'The whisper post object:', format: 'inputPostFormatter', - details: { - from: { - type: Data, desc: '60 Bytes - The identity of the sender', - optional: true - }, - to: { - type: Data, desc: '60 Bytes - The identity of the receiver. When present whisper will encrypt the message so that only the receiver can decrypt it', - optional: true - }, - topics: { - type: Array, desc: 'Array of `Data` topics, for the receiver to identify messages' - }, - payload: { - type: Data, desc: 'The payload of the message' - }, - priority: { - type: Quantity, desc: 'The integer of the priority in a rang from ... (?)' - }, - ttl: { - type: Quantity, desc: 'Integer of the time to live in seconds.' - } - } - } - ], - returns: { - type: Boolean, - desc: '`true` if the message was send, otherwise `false`' - } - }, - - newIdentity: { - nodoc: 'Not present in Rust code', - desc: 'Creates new whisper identity in the client.', - params: [], - returns: { - type: Data, - desc: '60 Bytes - the address of the new identiy' - } - }, - - hasIdentity: { - nodoc: 'Not present in Rust code', - desc: 'Checks if the client hold the private keys for a given identity.', - params: [ - { - type: Data, - desc: '60 Bytes - The identity address to check' - } - ], - returns: { - type: Boolean, - desc: '`true` if the client holds the privatekey for that identity, otherwise `false`' - } - }, - - newGroup: { - nodoc: 'Not present in Rust code', - desc: '(?)', - params: [], - returns: { - type: Data, desc: '60 Bytes - the address of the new group. (?)' - } - }, - - addToGroup: { - nodoc: 'Not present in Rust code', - desc: '(?)', - params: [ - { - type: Data, - desc: '60 Bytes - The identity address to add to a group (?)' - } - ], - returns: { - type: Boolean, - desc: '`true` if the identity was successfully added to the group, otherwise `false` (?)' - } - }, - - newFilter: { - nodoc: 'Not present in Rust code', - desc: 'Creates filter to notify, when client receives whisper message matching the filter options.', - params: [ - { - type: Object, desc: 'The filter options:', - details: { - to: { - type: Data, desc: '60 Bytes - Identity of the receiver. *When present it will try to decrypt any incoming message if the client holds the private key to this identity.*', - optional: true - }, - topics: { - type: Array, desc: 'Array of `Data` topics which the incoming message\'s topics should match. You can use the following combinations' - } - } - } - ], - returns: { - type: Quantity, - desc: 'The newly created filter' - } - }, - - uninstallFilter: { - nodoc: 'Not present in Rust code', - desc: 'Uninstalls a filter with given id. Should always be called when watch is no longer needed.\nAdditonally Filters timeout when they aren\'t requested with [shh_getFilterChanges](#shh_getfilterchanges) for a period of time.', - params: [ - { - type: Quantity, - desc: 'The filter id' - } - ], - returns: { - type: Boolean, - desc: '`true` if the filter was successfully uninstalled, otherwise `false`' - } - }, - - getFilterChanges: { - nodoc: 'Not present in Rust code', - desc: 'Polling method for whisper filters. Returns new messages since the last call of this method.\n**Note** calling the [shh_getMessages](#shh_getmessages) method, will reset the buffer for this method, so that you won\'t receive duplicate messages.', - params: [ - { - type: Quantity, - desc: 'The filter id' - } - ], - returns: { - type: Array, - desc: 'Array of messages received since last poll' - } - }, - - getMessages: { - nodoc: 'Not present in Rust code', - desc: 'Get all messages matching a filter. Unlike `shh_getFilterChanges` this returns all messages.', - params: [ - { - type: Quantity, - desc: 'The filter id' - } - ], - returns: 'See [shh_getFilterChanges](#shh_getfilterchanges)' - } -}; diff --git a/js/packages/jsonrpc/interfaces/signer.js b/js/packages/jsonrpc/interfaces/signer.js deleted file mode 100644 index c3bd9bd04..000000000 --- a/js/packages/jsonrpc/interfaces/signer.js +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Quantity, Data } from '../types'; -import { fromDecimal, Dummy } from '../helpers'; - -export default { - generateAuthorizationToken: { - desc: 'Generates a new authorization token.', - params: [], - returns: { - type: String, - desc: 'The new authorization token.', - example: 'bNGY-iIPB-j7zK-RSYZ' - } - }, - - generateWebProxyAccessToken: { - desc: 'Generates a new web proxy access token.', - params: [{ - type: String, - desc: 'Domain for which the token is valid. Only requests to this domain will be allowed.', - example: 'https://parity.io' - }], - returns: { - type: String, - desc: 'The new web proxy access token.', - example: 'MOWm0tEJjwthDiTU' - } - }, - - requestsToConfirm: { - desc: 'Returns a list of the transactions awaiting authorization.', - params: [], - returns: { - // TODO: Types of the fields of transaction objects? Link to a transaction object in another page? - type: Array, - desc: 'A list of the outstanding transactions.', - example: new Dummy('[ ... ]') - } - }, - - confirmRequest: { - desc: 'Confirm a request in the signer queue', - params: [ - { - type: Quantity, - desc: 'The request id.', - example: fromDecimal(1) - }, - { - type: Object, - desc: 'Modify the transaction before confirmation.', - details: { - gasPrice: { - type: Quantity, - desc: 'Modify the gas price provided by the sender in Wei.', - optional: true - }, - gas: { - type: Quantity, - desc: 'Gas provided by the sender in Wei.', - optional: true - }, - condition: { - type: Object, - desc: 'Condition for scheduled transaction. Can be either an integer block number `{ block: 1 }` or UTC timestamp (in seconds) `{ timestamp: 1491290692 }`.', - optional: true - } - }, - example: {} - }, - { - type: String, - desc: 'The account password', - example: 'hunter2' - } - ], - returns: { - type: Object, - desc: 'The status of the confirmation, depending on the request type.', - example: {} - } - }, - - confirmRequestRaw: { - desc: 'Confirm a request in the signer queue providing signed request.', - params: [ - { - type: Quantity, - desc: 'Integer - The request id', - example: fromDecimal(1) - }, - { - type: Data, - desc: 'Signed request (RLP encoded transaction)', - example: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675' - } - ], - returns: { - type: Object, - desc: 'The status of the confirmation, depending on the request type.', - example: {} - } - }, - - confirmRequestWithToken: { - desc: 'Confirm specific request with rolling token.', - params: [ - { - type: Quantity, - desc: 'The request id.', - example: fromDecimal(1) - }, - { - type: Object, - desc: 'Modify the transaction before confirmation.', - details: { - gasPrice: { - type: Quantity, - desc: 'Modify the gas price provided by the sender in Wei.', - optional: true - }, - gas: { - type: Quantity, - desc: 'Gas provided by the sender in Wei.', - optional: true - }, - condition: { - type: Object, - desc: 'Conditional submission of the transaction. Can be either an integer block number `{ block: 1 }` or UTC timestamp (in seconds) `{ time: 1491290692 }` or `null`.', - optional: true - } - }, - example: {} - }, - { - type: String, - desc: 'Password (initially) or a token returned by the previous call.', - example: 'hunter2' - } - ], - returns: { - type: Object, - desc: 'Status.', - details: { - result: { - type: Object, - desc: 'The status of the confirmation, depending on the request type.' - }, - token: { - type: String, - desc: 'Token used to authenticate the next request.' - } - }, - example: { - result: new Dummy('{ ... }'), - token: 'cAF2w5LE7XUZ3v3N' - } - } - }, - - rejectRequest: { - desc: 'Rejects a request in the signer queue', - params: [ - { - type: Quantity, - desc: 'Integer - The request id', - example: fromDecimal(1) - } - ], - returns: { - type: Boolean, - desc: 'The status of the rejection', - example: true - } - }, - - signerEnabled: { - nodoc: 'Not present in Rust code', - desc: 'Returns whether signer is enabled/disabled.', - params: [], - returns: { - type: Boolean, - desc: '`true` when enabled, `false` when disabled.', - example: true - } - }, - - // Pub-Sub - subscribePending: { - desc: ` -Starts a subscription for transactions in the confirmation queue. -Each event contains all transactions currently in the queue. - -An example notification received by subscribing to this event: -\`\`\` -{"jsonrpc":"2.0","method":"signer_pending","params":{"subscription":"0x416d77337e24399d","result":[]}} -\`\`\` - -You can unsubscribe using \`signer_unsubscribePending\` RPC method. Subscriptions are also tied to a transport -connection, disconnecting causes all subscriptions to be canceled. - `, - params: [], - returns: { - type: String, - desc: 'Assigned subscription ID', - example: '0x416d77337e24399d' - } - }, - unsubscribePending: { - desc: 'Unsubscribes from pending transactions subscription.', - params: [{ - type: String, - desc: 'Subscription ID', - example: '0x416d77337e24399d' - }], - returns: { - type: Boolean, - desc: 'whether the call was successful', - example: true - } - } -}; diff --git a/js/packages/jsonrpc/interfaces/trace.js b/js/packages/jsonrpc/interfaces/trace.js deleted file mode 100644 index 9e35da629..000000000 --- a/js/packages/jsonrpc/interfaces/trace.js +++ /dev/null @@ -1,376 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Address, BlockNumber, Data, Hash, CallRequest } from '../types'; -import { withPreamble, Dummy, fromDecimal } from '../helpers'; - -const SECTION_FILTERING = 'Transaction-Trace Filtering'; -const SECTION_ADHOC = 'Ad-hoc Tracing'; - -export default withPreamble(` - -The trace module is for getting a deeper insight into transaction processing. -It includes two sets of calls; the transaction trace filtering API and the ad-hoc tracing API. - -**Note:** In order to use these API Parity must be fully synced with flags \`$ parity --tracing on\`. - -## The Ad-hoc Tracing API - -The ad-hoc tracing API allows you to perform a number of different diagnostics on calls or transactions, -either historical ones from the chain or hypothetical ones not yet mined. The diagnostics include: - -- \`trace\` **Transaction trace**. An equivalent trace to that in the previous section. -- \`vmTrace\` **Virtual Machine execution trace**. Provides a full trace of the VM's state throughout the execution of the transaction, including for any subcalls. -- \`stateDiff\` **State difference**. Provides information detailing all altered portions of the Ethereum state made due to the execution of the transaction. - -There are three means of providing a transaction to execute; either providing the same information as when making -a call using \`eth_call\` (see \`trace_call\`), through providing raw, signed, transaction data as when using -\`eth_sendRawTransaction\` (see \`trace_rawTransaction\`) or simply a transaction hash for a previously mined -transaction (see \`trace_replayTransaction\`). In the latter case, your node must be in archive mode or the -transaction should be within the most recent 1000 blocks. - -## The Transaction-Trace Filtering API - -These APIs allow you to get a full *externality* trace on any transaction executed throughout the Parity chain. -Unlike the log filtering API, you are able to search and filter based only upon address information. -Information returned includes the execution of all \`CREATE\`s, \`SUICIDE\`s and all variants of \`CALL\` together -with input data, output data, gas usage, amount transferred and the success status of each individual action. - -### \`traceAddress\` field - -The \`traceAddress\` field of all returned traces, gives the exact location in the call trace [index in root, -index in first \`CALL\`, index in second \`CALL\`, ...]. - -i.e. if the trace is: -\`\`\` -A - CALLs B - CALLs G - CALLs C - CALLs G -\`\`\` -then it should look something like: - -\`[ {A: []}, {B: [0]}, {G: [0, 0]}, {C: [1]}, {G: [1, 0]} ]\` - -`, { - block: { - section: SECTION_FILTERING, - desc: 'Returns traces created at given block.', - params: [ - { - type: BlockNumber, - desc: 'Integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`.', - example: fromDecimal(3068185) - } - ], - returns: { - type: Array, - desc: 'Block traces.', - example: [ - { - action: { - callType: 'call', - from: '0xaa7b131dc60b80d3cf5e59b5a21a666aa039c951', - gas: '0x0', - input: '0x', - to: '0xd40aba8166a212d6892125f079c33e6f5ca19814', - value: '0x4768d7effc3fbe' - }, - blockHash: '0x7eb25504e4c202cf3d62fd585d3e238f592c780cca82dacb2ed3cb5b38883add', - blockNumber: 3068185, - result: { - gasUsed: '0x0', - output: '0x' - }, - subtraces: 0, - traceAddress: [], - transactionHash: '0x07da28d752aba3b9dd7060005e554719c6205c8a3aea358599fc9b245c52f1f6', - transactionPosition: 0, - type: 'call' - }, - new Dummy('...') - ] - } - }, - - filter: { - section: SECTION_FILTERING, - desc: 'Returns traces matching given filter', - params: [ - { - type: Object, - desc: 'The filter object', - details: { - fromBlock: { - type: BlockNumber, - desc: 'From this block.', - optional: true - }, - toBlock: { - type: BlockNumber, - desc: 'To this block.', - optional: true - }, - fromAddress: { - type: Array, - desc: 'Sent from these addresses.', - optional: true - }, - toAddress: { - type: Address, - desc: 'Sent to these addresses.', - optional: true - } - }, - example: { - fromBlock: fromDecimal(3068100), - toBlock: fromDecimal(3068200), - toAddress: ['0x8bbB73BCB5d553B5A556358d27625323Fd781D37'] - } - } - ], - returns: { - type: Array, - desc: 'Traces matching given filter', - example: [ - { - action: { - callType: 'call', - from: '0x32be343b94f860124dc4fee278fdcbd38c102d88', - gas: '0x4c40d', - input: '0x', - to: '0x8bbb73bcb5d553b5a556358d27625323fd781d37', - value: '0x3f0650ec47fd240000' - }, - blockHash: '0x86df301bcdd8248d982dbf039f09faf792684e1aeee99d5b58b77d620008b80f', - blockNumber: 3068183, - result: { - gasUsed: '0x0', - output: '0x' - }, - subtraces: 0, - traceAddress: [], - transactionHash: '0x3321a7708b1083130bd78da0d62ead9f6683033231617c9d268e2c7e3fa6c104', - transactionPosition: 3, - type: 'call' - }, - new Dummy('...') - ] - } - }, - - get: { - section: SECTION_FILTERING, - desc: 'Returns trace at given position.', - params: [ - { - type: Hash, - desc: 'Transaction hash.', - example: '0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3' - }, - { - type: Array, - desc: 'Index positions of the traces.', - example: ['0x0'] - } - ], - returns: { - type: Object, - desc: 'Trace object', - example: { - action: { - callType: 'call', - from: '0x1c39ba39e4735cb65978d4db400ddd70a72dc750', - gas: '0x13e99', - input: '0x16c72721', - to: '0x2bd2326c993dfaef84f696526064ff22eba5b362', - value: '0x0' - }, - blockHash: '0x7eb25504e4c202cf3d62fd585d3e238f592c780cca82dacb2ed3cb5b38883add', - blockNumber: 3068185, - result: { - gasUsed: '0x183', - output: '0x0000000000000000000000000000000000000000000000000000000000000001' - }, - subtraces: 0, - traceAddress: [0], - transactionHash: '0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3', - transactionPosition: 2, - type: 'call' - } - } - }, - - transaction: { - section: SECTION_FILTERING, - desc: 'Returns all traces of given transaction', - params: [ - { - type: Hash, - desc: 'Transaction hash', - example: '0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3' - } - ], - returns: { - type: Array, - desc: 'Traces of given transaction', - example: [ - { - action: { - callType: 'call', - from: '0x1c39ba39e4735cb65978d4db400ddd70a72dc750', - gas: '0x13e99', - input: '0x16c72721', - to: '0x2bd2326c993dfaef84f696526064ff22eba5b362', - value: '0x0' - }, - blockHash: '0x7eb25504e4c202cf3d62fd585d3e238f592c780cca82dacb2ed3cb5b38883add', - blockNumber: 3068185, - result: { - gasUsed: '0x183', - output: '0x0000000000000000000000000000000000000000000000000000000000000001' - }, - subtraces: 0, - traceAddress: [0], - transactionHash: '0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3', - transactionPosition: 2, - type: 'call' - }, - new Dummy('...') - ] - } - }, - - call: { - section: SECTION_ADHOC, - desc: 'Executes the given call and returns a number of possible traces for it.', - params: [ - { - type: CallRequest, - desc: 'Call options, same as `eth_call`.', - example: new Dummy('{ ... }') - }, - { - type: Array, - desc: 'Type of trace, one or more of: `"vmTrace"`, `"trace"`, `"stateDiff"`.', - example: ['trace'] - }, - { - type: BlockNumber, - optional: true, - desc: 'Integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`.' - } - ], - returns: { - type: Array, - desc: 'Block traces', - example: { - output: '0x', - stateDiff: null, - trace: [ - { - action: new Dummy('{ ... }'), - result: { - gasUsed: '0x0', - output: '0x' - }, - subtraces: 0, - traceAddress: [], - type: 'call' - } - ], - vmTrace: null - } - } - }, - - rawTransaction: { - section: SECTION_ADHOC, - desc: 'Traces a call to `eth_sendRawTransaction` without making the call, returning the traces', - params: [ - { - type: Data, - desc: 'Raw transaction data.', - example: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675' - }, - { - type: Array, - desc: 'Type of trace, one or more of: `"vmTrace"`, `"trace"`, `"stateDiff"`.', - example: ['trace'] - } - ], - returns: { - type: Object, - desc: 'Block traces.', - example: { - output: '0x', - stateDiff: null, - trace: [ - { - action: new Dummy('{ ... }'), - result: { - gasUsed: '0x0', - output: '0x' - }, - subtraces: 0, - traceAddress: [], - type: 'call' - } - ], - vmTrace: null - } - } - }, - - replayTransaction: { - section: SECTION_ADHOC, - desc: 'Replays a transaction, returning the traces.', - params: [ - { - type: Hash, - desc: 'Transaction hash.', - example: '0x02d4a872e096445e80d05276ee756cefef7f3b376bcec14246469c0cd97dad8f' - }, - { - type: Array, - desc: 'Type of trace, one or more of: `"vmTrace"`, `"trace"`, `"stateDiff"`.', - example: ['trace'] - } - ], - returns: { - type: Object, - desc: 'Block traces.', - example: { - output: '0x', - stateDiff: null, - trace: [ - { - action: new Dummy('{ ... }'), - result: { - gasUsed: '0x0', - output: '0x' - }, - subtraces: 0, - traceAddress: [], - type: 'call' - } - ], - vmTrace: null - } - } - } -}); diff --git a/js/packages/jsonrpc/interfaces/web3.js b/js/packages/jsonrpc/interfaces/web3.js deleted file mode 100644 index 2e3572650..000000000 --- a/js/packages/jsonrpc/interfaces/web3.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Data } from '../types'; -import { withComment } from '../helpers'; - -export default { - clientVersion: { - desc: 'Returns the current client version.', - params: [], - returns: { - type: String, - desc: 'The current client version', - example: 'Parity//v1.5.0-unstable-9db3f38-20170103/x86_64-linux-gnu/rustc1.14.0' - } - }, - - sha3: { - desc: 'Returns Keccak-256 (**not** the standardized SHA3-256) of the given data.', - params: [ - { - type: String, - desc: 'The data to convert into a SHA3 hash.', - example: withComment('0x68656c6c6f20776f726c64', '"hello world"') - } - ], - returns: { - type: Data, - desc: 'The Keccak-256 hash of the given string.', - example: '0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad' - } - } -}; diff --git a/js/packages/jsonrpc/library.js b/js/packages/jsonrpc/library.js deleted file mode 100644 index 6b8abd7f2..000000000 --- a/js/packages/jsonrpc/library.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import JsonRpc from './'; - -export default JsonRpc; diff --git a/js/packages/jsonrpc/package.json b/js/packages/jsonrpc/package.json deleted file mode 100644 index 1bdc7596a..000000000 --- a/js/packages/jsonrpc/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@parity/jsonrpc", - "description": "JSON and JS interface defintions for RPC", - "version": "0.0.0", - "main": "index.js", - "author": "Parity Team ", - "maintainers": [ - "Jaco Greeff", - "Maciej Hirsz" - ], - "contributors": [], - "license": "GPL-3.0", - "repository": { - "type": "git", - "url": "git+https://github.com/paritytech/parity.git" - }, - "keywords": [ - "Ethereum", - "RPC", - "Parity" - ], - "scripts": { - }, - "devDependencies": { - }, - "dependencies": { - } -} diff --git a/js/packages/jsonrpc/types.js b/js/packages/jsonrpc/types.js deleted file mode 100644 index 52e79019e..000000000 --- a/js/packages/jsonrpc/types.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export class Address {} - -export class Data {} - -export class Hash {} - -export class Integer {} - -export class Quantity {} - -export class BlockNumber { - static print = '`Quantity` | `Tag`'; -} - -export class CallRequest { - static print = '`Object`'; - - static details = { - from: { - type: Address, - desc: '20 Bytes - The address the transaction is send from.', - optional: true - }, - to: { - type: Address, - desc: '(optional when creating new contract) 20 Bytes - The address the transaction is directed to.' - }, - gas: { - type: Quantity, - desc: 'Integer of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions.', - optional: true - }, - gasPrice: { - type: Quantity, - desc: 'Integer of the gas price used for each paid gas.', - optional: true - }, - value: { - type: Quantity, - desc: 'Integer of the value sent with this transaction.', - optional: true - }, - data: { - type: Data, - desc: '4 byte hash of the method signature followed by encoded parameters. For details see [Ethereum Contract ABI](https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI).', - optional: true - } - } -} - -export class TransactionRequest { - static print = '`Object`'; - - static details = { - from: { - type: Address, - desc: '20 Bytes - The address the transaction is send from.' - }, - to: { - type: Address, - desc: '20 Bytes - The address the transaction is directed to.', - optional: true - }, - gas: { - type: Quantity, - desc: 'Integer of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions.', - optional: true - }, - gasPrice: { - type: Quantity, - desc: 'Integer of the gas price used for each paid gas.', - optional: true - }, - value: { - type: Quantity, - desc: 'Integer of the value sent with this transaction.', - optional: true - }, - data: { - type: Data, - desc: '4 byte hash of the method signature followed by encoded parameters. For details see [Ethereum Contract ABI](https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI).', - optional: true - }, - nonce: { - type: Quantity, - desc: 'Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.', - optional: true - }, - condition: { - type: Object, - desc: 'Conditional submission of the transaction. Can be either an integer block number `{ block: 1 }` or UTC timestamp (in seconds) `{ time: 1491290692 }` or `null`.', - optional: true - } - } -} - -export class TransactionResponse { - static print = '`Object`'; - - static details = { - hash: { - type: Hash, - desc: '32 Bytes - hash of the transaction.' - }, - nonce: { - type: Quantity, - desc: 'The number of transactions made by the sender prior to this one.' - }, - blockHash: { - type: Hash, - desc: '32 Bytes - hash of the block where this transaction was in. `null` when its pending.' - }, - blockNumber: { - type: BlockNumber, - desc: 'Block number where this transaction was in. `null` when its pending.' - }, - transactionIndex: { - type: Quantity, - desc: 'Integer of the transactions index position in the block. `null` when its pending.' - }, - from: { - type: Address, - desc: '20 Bytes - address of the sender.' - }, - to: { - type: Address, - desc: '20 Bytes - address of the receiver. `null` when its a contract creation transaction.' - }, - value: { - type: Quantity, - desc: 'Value transferred in Wei.' - }, - gasPrice: { - type: Quantity, - desc: 'Gas price provided by the sender in Wei.' - }, - gas: { - type: Quantity, - desc: 'Gas provided by the sender.' - }, - input: { - type: Data, - desc: 'The data send along with the transaction.' - }, - creates: { - type: Address, - optional: true, - desc: 'Address of a created contract or `null`.' - }, - raw: { - type: Data, - desc: 'Raw transaction data.' - }, - publicKey: { - type: Data, - desc: 'Public key of the signer.' - }, - networkId: { - type: Quantity, - desc: 'The network id of the transaction, if any.' - }, - standardV: { - type: Quantity, - desc: 'The standardized V field of the signature (0 or 1).' - }, - v: { - type: Quantity, - desc: 'The V field of the signature.' - }, - r: { - type: Quantity, - desc: 'The R field of the signature.' - }, - s: { - type: Quantity, - desc: 'The S field of the signature.' - }, - condition: { - type: Object, - optional: true, - desc: 'Conditional submission, Block number in `block` or timestamp in `time` or `null`.' - } - } -} diff --git a/js/packages/ledger/package.json b/js/packages/ledger/package.json index d556b76bd..8c27b8307 100644 --- a/js/packages/ledger/package.json +++ b/js/packages/ledger/package.json @@ -1,7 +1,7 @@ { "name": "@parity/ledger", "description": "JS interface for Ledger Nano hardware", - "version": "0.0.0", + "version": "1.99.99", "main": "library.js", "author": "Parity Team ", "maintainers": [ @@ -11,7 +11,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/js-ledger.git" }, "keywords": [ ], diff --git a/js/packages/shapeshift/package.json b/js/packages/shapeshift/package.json index 1aa2d38f3..b2abf2d52 100644 --- a/js/packages/shapeshift/package.json +++ b/js/packages/shapeshift/package.json @@ -1,7 +1,7 @@ { "name": "@parity/shapeshift", "description": "The Parity Promise-based library for interfacing with ShapeShift over HTTP", - "version": "0.0.0", + "version": "1.99.99", "main": "library.js", "author": "Parity Team ", "maintainers": [ @@ -11,7 +11,7 @@ "license": "GPL-3.0", "repository": { "type": "git", - "url": "git+https://github.com/paritytech/parity.git" + "url": "git+https://github.com/paritytech/js-shapeshift.git" }, "keywords": [ "Ethereum", diff --git a/js/packages/shared/README.md b/js/packages/shared/README.md deleted file mode 100644 index 97bec5614..000000000 --- a/js/packages/shared/README.md +++ /dev/null @@ -1 +0,0 @@ -# Parity shared non-ui components diff --git a/js/packages/shared/assets/fonts/Roboto/LICENSE.txt b/js/packages/shared/assets/fonts/Roboto/LICENSE.txt deleted file mode 100755 index 75b52484e..000000000 --- a/js/packages/shared/assets/fonts/Roboto/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/js/packages/shared/assets/fonts/Roboto/font.css b/js/packages/shared/assets/fonts/Roboto/font.css deleted file mode 100644 index 75226e621..000000000 --- a/js/packages/shared/assets/fonts/Roboto/font.css +++ /dev/null @@ -1,56 +0,0 @@ -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(./v15/0eC6fl06luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); - unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(./v15/Fl4y0QdOxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(./v15/-L14Jk06m6pUHB-5mXQQnYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(./v15/I3S1wsgSg9YCurV6PUkTOYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(./v15/NYDWBdD4gIq26G5XYbHsFIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); - unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(./v15/Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); - unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(./v15/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; -} diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Black.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Black.ttf deleted file mode 100755 index fbde625d403cc1fe3be06e15ae90c448c013eee5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163488 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%0Da2vjx1R*A2K(2Xs$lp|U%Rpv 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

}`N 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 RlaLSiI;{f(T?y`Heg+E#ii`jN diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-BlackItalic.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-BlackItalic.ttf deleted file mode 100755 index 60f7782a2e4aba9bbc96d7634799eaa05512c927..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165444 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 diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-BoldItalic.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-BoldItalic.ttf deleted file mode 100755 index 3c9a7a37361b6ae0571b33f09b6b55367e188cfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163644 zcmb?^2Ut@{*YLD^LqZFLCMYBzpn}pAY-{gWP;6Mi-W7ZA6?^Zl?%LN9qpKn|>|I2~ zF6t^Gc6ZlG?)}f)kO2Gc`+wj6Jb!R9cW#+E=gjFdHzJG>a)mF3^bPCPZ*Z&9txAa4 zFGGmbYZ%uez5|JlK*aGbLJ8v=#=4q;9x%9jQc8q#2^b&XQ=c1{GH+Zd;n#-@?K#Bz+2ySW`5%V%F2rd?5c+#k=isi+)&E95 zFbsUod~m72>x>7@=X`HwzODY%ZWy9S&F@t{@SJLZRh$Mu1sn!srNBC!cja3zl(9k17R{-7`I0XfNvlJ49g2^m2hV4Kl*+f)L zIEzezKk~(~Xf!#Ex|4JAD!KsmU=2_O{9aC>4yXf(Mdio`c`)4H7D^5j45b7V7btb1 zw1kojB?`(kQVo?QI{9a6My1&}xaNQiGzU!=^O2WOS6;;=9r?36Xps(&V>qfWwcG>n?% zJ@mbN5$bHR2I!2CA6X;+BDkVBQcZrqrl451RsJsYh5jy~SS-uWS)Tly?m!u$9(AVU zQ5wxd)mck4Nol`D->D;d#wsCa@(#6xl1SF0BkYEpMehKe6VWQ-E8m3kFJP{Z(LDLH zunwIPJ|UCX0?ns6a+a!%yqJ|mC4}zCft^NP>^<@pS0W9-Qjv{9F|0rGVaf6_VIwL{ z%E6p&0NQpzKBO-yDNI5-xQ8Q3d8mxA7{#-5s5+@C z3oHx=^klP5w)$)1dwZ z$~>|S*J80KhvUXNBTwO=yje&>Z3V5oi4Bqe6lNn&s2_GlVjzy~a5e({#0DXE z+5~v&gFH$6O+LUxR<}yh>$axyt!Qy^-kC+P2^oKU|qw0=Yi+xZnm}__O3(^WN0N!%)MtEkW zswoN*s{`*}MOa8fRINp2RCl32QJzmf0Y4|9EH8sS%)(JkmW?XH-2Msk?1nT_11L3+=6f?Ji~0EMHI%*}TM5XOf(`?n;0e5hgizqW zg8<)9v`|=yx~cXkx&YY)!91J-Yt#U>5gbr;&@1zVuD~NL(GJ!fjTT0sS3(|&V7uk# zf*bTP8lIa4eF8sl{$(>!Ae$}cu>Gh4Z2`LG1uCa<1DJQBdSWoz4tRBB%Rxsbp)smi z@@;Xwd`FcIG)n3p5-Zq0wj^EhigU4C=&Y zK|i<9I?!Da!UYt8pP>ZRc=Q_?0XjNK{s?_=UC@g*LY=vu5j!GR@gUOMjX>_InJ8R5 z5A#0}H4yFr4g66xwiWpZZRC5xG&xT=h7Qqe;MG?^uMg-W`xA{9eNh_l%t&z?@b2$u zAIQs3LO>e1Y*G<5N&L*xWF<9xOCLU4>-Om92n2`@#Mn06h{1{M{EZ zg(kJ+$uPG!fTw42zJ@Xs%5*66pp1g@D~p#OGB4omUeM=!;GILL3b#c{0eeQu$x{@& z2K>Q&AnwlyQ9w&5Y%=oZJ_OkzXK}yezZURSKqpyzm4cdppHj5gd=&1d6fN98DN+>w zg!>@>t#H2te3GJt!(ULe3NBWEg!?2#3-}`3AF&q27Xg2Sz_6ECl#MgspSo}Huo{X z&r^KO|68r_5cq;c>l>&tpLaeN|J$1Tu-uR2Ji_Nr;T7;@xj)H$+M+f0>$o4M_;uWe z>nu-I3fEs;AO5!j`a{u=Tt^lZt{)4E9j|S=k?Y5zh3mzlh3mzl<8b|3v{-dGe_M696-KVZt%d9IqJ`7NT8iROcpRzddyZ3q zzUMlh7e#I^%j1PSc{152PZ7q-_l2r*Ik24{$Tsk~3t}2Y4q%=HYa9bS`_K4=^N2F9 z5UX%LSB|;=3O+0MPYCx_!5>xpa4y^2*N6Cm#};rcRJq2_!##?x%4HJ#WX_|C9PvIu zW)yqFWd{6F8+`mexS#u~3S0mumj&)qE3p;V0~|gcM{)hcWuE(;d^{fefUYQrZ}#wO ziqFd9ARaSuIp%Q__^kXMD=+`Ew(__Da1*juesmDVdC+Y0xuuG09Gp;0{8d9 zN4NT&cAZeDx(&!Q_}>hCW~&}kXbOHQrw8}XxlhfHt^HbSs|@jR_!x?B2r&$gW312F z`UaYDT5#GawN;l`ePL@2zCHK9Io%Z*{zuJY0>y8KSU~aDf!2I(fo>I)_<{TT|4m>2 ze>!i)_kXAZ{@Znh&lJ54{!a;z1uHH7Uu$a&`9IbF)T0G4r#1HcZ?%=z{-d4+Hf@%i ztH=oOE0}BbjvfWS zXQ*{vEcOh19xEN0WL9!0kOvXCjpw{)tvQ@LX0+N{YpvK_`Mym?tz$z@M$rux+j-q) zD+_EP&&_cCWv#9Hz-rHgUD7VahETZ*&>)i3mn$-(yo?Q%B=9*mDc8VvQ|t!U#|5^6 z`|^q(&vifd;kj<-dK>(8#fHJLV&AxL4R*k4TdX#P`^C1t;U1-b@SBxBVGPCYao?Kv z&21X*pT`2+zvkEbq4In@#SiBGHutl+ul~=uC@0^Chz~;)_*`ud0U;rT3W6wNN|`_? zg@*M*2@?cnC&Gu{K?PAz8cNF!z6m3YSss9ILIh&RpQZ4}LP*YA40(n&`su&O&sHK3cB6ffm&|77vf$?D& zc!H?`Vi**T1$dN?$0#MdQvepJ)tthdCj0}$f*YVSm?Fl(w0!sx5V+vOr$(U{oP}Ez z1Qg8p+*zp3F|v|^j|?4H{=wa9xJ!9X0gpq)fwz2=+WR8;G4?}fT#ebd|BkhGEaQgmCFTE zRR9zW0Fnq~0@34t0>gj`0WRRk!o-1;*eizuRof{za!!RyY9LS{+29DI5dJuGv*H(u zwThtu4NmQ1-4wgK=oJe&ErW8A=huL76mS4;%dHk_0|bh^LI0N1d>lC9@LNt4oK_I! z7dRvweog_7w`F#r8&c2_P>2&snGZO!On?O$P7ioSur6D072*c#C7}19X5s*-^U!2i z_2>sj1UaIKXd|q?>_#WhIdmQ6p!Z0^&e#P9;$R$(<8fEq8&AZO@It%Uc{pkCr?>E0@dV9T#-d*pj_tyvO!}U@6s`~2sdivq|N&3zD zo%&t+eflH%V+O&XGk6&M4MBzqhA#fZU-WnOclG!7_w^6)Z{(lo-!t&iJM#JT4<^a7 zS%!>Y0j_$$braya2c1OcQ3iU6J|G!uu`3S3WpD&;jT3R70$exZy@2a?;#Gj_Il%QU z;0j8u0N3e&>jJuz{z~`JBlHrz0k|R-#KKtv7RS1?A#5z0&91Y%>>2wEljq`#d~5hl z_TA|F$@ee773sBlo!(Qg*9QWwk@_k&Tz}PX)&B;#rs|It!?j}pt}aDz?E$!Az!d|o z`G70TwES6qjyKDv@G3bSOx|25Goeg{G8xK5C?lbamfdAhX3`fa4Jod7XI<^ms|W$nP+#;dp1hIsZFC`KeI$LD>prBRmaRSLq`hH%92i zo)?2&_`PWUeE*B4FFHN#__Q5DPg_5Yf7E7Jntb;k^n+ zbC3!@+`c~tykKPymnl*>rx*F)et3A1X0b!ujW^*APOlA?OZXrh!{Q#S*dfvgN_!~J zpnL+;EEaoQX^^k~c@FN*wUmFm_CK8?v7{+!Mw*irBo0j>4M|7RiF77iNLP}Gro#GD z66r>|lOCienvQ0WUZgkaL;8|_q(7R8W|5I(6d6s%kg;SOnvLd=@niy-NG6fVD1|g& z4bWV`Y9853jAS1%k^STVnooWw2gxCFn52>;Bn{R^7odgY7&%T(kdq{xoFb=THFYsL zL(YLx-TVpu5ha3+N)cgf7!z=nA?D8fXl12@B zDJY9hMR({lIvw4mGtfPBA3dNm=_FVen?+~SIiSbpf^^SEkI-X~@rCFWXwBE?4PAuZ zqIc*$T@0GzBl?8?q)X6WpaYhnzv*)HnXaHFx)Ni$3KP1TuAyt`I!rOc0$oq{(+ya} zDs0C((F62%?14S87cM~$(nFvv4}-of!;(NtcEn|IIUIsRae3C6b-@*I7;DSgfsRRI zjaXyQ$`Pz9OT>{liZx-exFW8Eqj3zbjH}S2^cZW(n$hF*1nbNCvF5A=u8OOHK5B`p zXfu5x4^c1d*>#*Le53Y;rfzIl|TCsT6ll8*&=~a3KH28Iz0h%on zH^2>9Yu1Loq`9~eZcJa%Jl3BLz)k3DHjuudZ*gDT4>bHBJc%{LGmI!S)~JqazYpUD z35T&f!#KUvJ~i#yrMwY`>h<;e)-&S7@z(@ldv}zxapij}KH13h2 zZ=mm!)WgUEl^QPeOi2jS8&Q1wzVO|;y}?*3!N+#kGa;dBc_ZW9z!PwHN&-B$Xur>Z>iML?_JG`a zaNZ%rh(cfu%$|gxLpY+0pNA8&3pqq;RSwm=@*`?H#}<$3R5gH~6GkS+MwjA8VxXUw zi#DOE5Xm%*N6%($$Lg72aO6ww-DVF?u3V#j9U1L z)8gT#$^2`G7LPDFd%?NEUU&p52eP>tNvJtW#1Y`hoCPT#5BdW99VrpHk+nbqgR-9F z#^%HNsu9)?y^uTJ3hSyT`7RLU(-K+#QqVzM4etYO%dNdXZBD1q-#`-nV0O$8Ec#CN zLl`HV63dD!#j~pBs$;6Fsz)lxF37H--7a+}^?Hqqrmtqd=Cgg6{R;cL_J28)br|fh z%;C9XX~&6<=bVC^CON%v_Hu6ToZ|dI8>nrsU8+sh-q3z^@pGx-67O=`HPUsCYmTn9 z?pHTIw;pcm-Cny_aBtv#+C%Hn#p9%BY0n;>nO+93eqL+6UYCd}F|5R%5`TL;c*l7! z_CDj|=QGRaeaUtuN0;&_)vA>2JI;5O?-su#ztMh2{POj2`U?gh!$8A2!!g50|I+@$ z{U`gc@ju{yEg(E#dBBa*4NGqdbPIeD)IMlyuwU@J;16XS%5*HVtxRs&nq@baD_8DL zh(pNukjJ4dLXVd(Reo~$0~JbDXi;Hwg_#w8uW&caDXezb%&@euZ{a1vD~Hz(A056k z{BrnkHMAV~-u@!GuimNmuS`|Gj`gu&nm;*66m1|W_ ztD>tiuF9>dVO5i>9;jBb+W2aps}HY!_NQ7u{aQm)V{(n}HQUr&QS)Q1*jnkeE7cxa zJGHjC&eS?b>xy+7)?HrrW4(^`eygvoKeztF22C2IHTa`p^@h6|1vE-*^jo7p8`o?+ zz47mj|7eojWM`8Pu@SLjV{bRD(R5+c{ANR&U20yx`MwrqTKpVG;_Ad5XsK_xpjF9M z+gp8(Zy5i3>oTo3w$ZlP(zZm~w03drPPPwjKd}Ao1h0hY9a?sD>$tX)Pp9FX&UO0M z*`sq@=iZ$scInvVde@)2u1R!DY>=3ocs0ob~)cawd@_knI`O>#f-*f#+^$YD+uivVE-}^5dKn4sS@N8i7f$4)H z2CW(_4(>nr?2wW}h7HL{F7aRg49R7aqmqA09+A8}`9Sj3n7A?L#s-XCF|P8sb>qXv zFB<=0f@VVL2{k6PpKx}_>A-&*?E|?VR7|{FTxnWoOEV zxfSOQn0s@c-@Iz`2G9F_-u?OI=l7j|dV#}&0SnR>mR=aQFlAxdB8Nq77tL98X0dkh zPm5C)OH1l5*|pSlX|1JamqjdVzHIUG2Fs7H2wE|C#gUbGWuujcSNX5nuTenk#F=*DhQ8bzRcB$Ll+-Kd}DGh9(;}{~Yl1`kxCJYV=WKqqrN)+JTYa_$Z=JIB#y0)7-rMeMufBcNc4^19 zouNC={}%h(;a%!oBX>>Q^>BCG?({w3dk*gP*gIkGbz^zsBID70&iiWYTfXnfzQ0U% zCT~*(Q!P_FQ-9Mn)93x8_Gcfcd7$Be76;lL=yssrfiv)T<@YMT?>OjqF#h1tgEtSp zIGBIP>5$=2#Y43YH9ge*(AYzZ4{bh_cIfJ%=ZEqS>kgMYT>EhQ!-EgcI=tcV?}x7( zet!5zs%vW5)S9VnQU|0?N}Zd!GIe+AnbiBKZ;p^7UPr=?)HxD=q~DP#M^+x$edNTE ztRrvJXqtOkXj+Z5HfjCSrlze*Gaub~H2vt^qwkLi$4VZHI@aV^;;~W3W*ysb?7*?h z$DSVhdffT=m=g{s0!~yp5qF~3i3ul`p4f8Y=!pv_vQKjU>7~*urpKnYOYfdOI(>Hfvhi_=T1F3_3G5$ryWlFpRRH`?sV_d6Hd=Lz5Mj1)4NZfIeq_h&goC5 zr8Al{hBM{Q)H~DRO!ApoXEvPq{mj)fFV2|Hx}P0>Hv8=7bB^aqpR0PV*|{F)#+_So zZpXQk=d#YdJi-mT|RvI+T|CQ^RMWx_+F`aCH6|YD+8~Lxw7EOnk)OR9J_MsO5Rm` zwZzr%tJSZzy4v^Zq^onUZo0br>glW3ufDkYUJtk) zcD>s5hS%e-cfH>K`l#zmuCKZN%k`btP1lcHKXv`m^~~${uRpt))phWm}s8+C7VyfO4f_KlY}?>rIV*Ev=E}^UGq+{#%{-KOA~P%Vac0iVS~nZrjJw(U=ER#bZ!WmG z_2!~0*4)~9>+r3Ux9;3}ckBCY@ph@(6>m4W zopihJ?d02YZg0B1`*!N>v$t>DesufQ?T@#=W#KHZtgx(@tmaugvc_jE&03rFYu1sh zjI7+O4|h~|{O-iuX>q65oe6iA-udm$sXO=Ye7y7RF1}mhZus3sce~yld3WC3&3Du8 z-n{$z9=+#%FZy1qdtL7JyEpXS#Cs|CR^0pLUh2J!d%5@I`=0kJ+;4Ed^ZgO`=iT3S zKmGo_`yU?IJ@9)F^Pu^IUJoWbSoOg4;P`_}51u~w`q24d;KQFDwthI^;k1WqADSLs zdieBV{v(e^>H?EoPU>u9)2_ORMvlnM?&pwfzmHqY!d*bsX@=4<-U7z%asCU|vg-^CV zIrik%lf0*Wo=$zb;OUyDTc4Vq9)Ei2Y1Y$cPv1TL{!D!4`poxPxo6SO>O5=yti!Wz z&(8l5`p2L@_CD7>AMkwE^Ix9td4A;ix#yYBA3x7~5&dH7i-$QCbE@aW<#fpDmeVh1 zXwKN2sW~Y*n{p24T+hkLkzRVdtnjkI%PucRzFhEf>&xRWvtGW-6?0v4eRIp@M(5Va zZJyg9w^#1a-08V1a(~I)lY1ohTyAFWU)_H7^wrx}-|~b!m%LJWW%DZK)y`|2*D^05FDb8YUUJ@;yeWBe@)qZ< z&fAo?BQHJgZr=OX;%leZ90n6;cd^i$!{mTo%41%_;CX4vqiKF_;?gDTx#TioKYOa znDyHmNtn+*;#DI-X&`7IhZ+ecMv#kZ6%(Y(c%`ybc1mT`JTy62PB>al5UtVaVR(eW z;9{UI7*b@^0Fjr0mN8c+XQHKd(h=Fss0nFrxa;#*f)QsJaaec+4$v8JP;^YRho^_A@(;qv zuNUC*=3LUgUac;Kw6EVF0iU2Bzu&CWk&yVhbvh}j3N(g3AU7aU!GIz`CZ@3mT#Za? zw97z78fGFI%1@9mqbkEl`Dqx52I!&${)H!W-_-6L4(PtI?OCChG=c=K;a?n+lF;Qj zz{Cgnp>-xdy@7Y*2SkE?ImsOW69+5Fwb0O78_Hw=j>>J`aK)P=T*`q!595uc!n{mK zWka527)xo5qVjE@VYCl3*%e;2=ffG{+cm>zr!~4McX?zOk=E#?oblz@1OO%hF;Pm1 zqER|1ssN<`hPnXKegA?Z3-0@VNqX$}W6|M-2NoV#c*FO7w=Ca3=O1z3-|YZiBlW^- zcHxqH@J1<-mp#(+T~aU700R*)swS6ZJzy6|In=>|x*Bj&Td_4j!=P}RLCr~|)*2l$ z;M?Si3z5{CJnd{PgVyMqVKit>Wo&l<7STaL!9g+6(J?VmDi04;V03U0RhdR)!F{diL&dGzUO235F~DA3bN^58wf3)11+NP>ri$2G zNJwZi8qaLdt5f-ur@J1wWj)k?IDy|#(z8{qZfye>ecF@dcK(9*k2848SVFpU2{Xwr zg?g~-(Ghv0GAJ5Vg-o(BCd^nRtWdP9mXb;Ry{-&NeO@A7C3( z2_FsT9v`jA*TxklgL2XoqTFKCXiX8eYvB<(AP#U$4Z;Zn90KhqqVhBZa{>l>#K4AS z;2)jn>ERgzS|unTNGz+l-mOeUmEF+eLzW&DHTQ-dZSC@2w`aSQ8FS#o@pt%CyRlhb z{haOFCNruk*J`|4tP)Y96P|KtLCp>mlZO4CL|NLrV+&)YoY5&#&Y^Fu`!n)Xpfzw4 zZHoc%J!yY0&q^&LW4lDwAsx8njHdVS21Pe{ny?@Of)<@56zHS^RfK1>|GnLHp|doe z1jAF^r7F}DmD2PkU*l-;CJzUz^(T@n}HSe~q zA`*Mj6!#=igEvV(%*W5HlX`AkIT{C_d)BoLz$CAdqDf~l4s3_kq}IA9z1snIL+>;g z0TEq;V>~=uRfM3*;kaFgQbagWbL5VeL_8oplAp(jCKIw8Gf?itK5Q|3OS1a$9ZR70%}^8%y;V+7Drfu4d+MJXh9q=#*=U&zTg z9OW$?-n41ry&xlT)dq^6vEs9nVfl?xu1!NnUv$u!4hZrCR1w~(|+m&>x zTelNrH_MTBb?S5`t!Ki9Z!8a%r_nx&wbemS78PZ61;Qgd18`Kc$J9G}f>@qgw6^j~ z)zOIz?HX~4FfPXCLdcXJVH?PG%zBF9q49Ckgj5I5Uho}gQV$n z(fGx&YZR-?MqvHZW7pxRT%`2Jka?G4BDKPz%Q2N4-PqU1O`3p%Q4UuW*q2AKO{9;~ zE$K1~KCemp8eCR6;wHEUEURExvqN;Hupd000+R+vo;30!}$FcY-_ zYl1xxaFRPUIw2-7hWsMsoRl_%lEgsPy8o9EWp@7%B#Ib+Dqe1)FYy4Eg2!Xaf;`?&Ih_HgSrRlw-H#&-s_1Icon{ zBxR8fnfS%>BMIXvNg0A?KOTqK!$a4e%#r>g0AC5vtgS$^2BT3H2pxd}j#dhkfJO<0 zc}h5Puu#~6Y*^+bolUS>mV96mT8K#Ufx&1JKLra*LyeAFlgb7-pWa|w%j621VWE=} zT9e*(5_s4%l50?~Lqc?En0L^u@a06fr7~D-5tyl9ymeOZx%Qe?n@2cGIci+$%C!&n zPCvSJ6jjT;BpP2@y-fY}A!= z*;s(a7j?J5f?)!%bvCU2EsSYmHXuwYC(I!O7olX~NkLVT1Eh0O@oP?6lSkn-UzHP_ z1TCO5s0=hZD$y5gepibB2}-GT%r{7?XBY>#+FEf^ipzVC>F1H0v?N z(V=tKejP{#dGb*@TUq*YZ&A*8iU*$_ozRoeRg;HKCnOGN+Y+!TFPuakV6~fD@KIR) zKkxxIDb#8v(Me$wG0apb7aW6POamK%Xtbv96 zRTH+4{I#jQ!_s#t3$J$3+K1tbxQ(>8@$eu=0h3m-O~zK$sN;o`@3E`2Y8)ezAJ1I) zb{b`?v1WY-JQ|-c2a~4NI+U-}Whkb-b|p0L$R#@&_+}f-l!ziNm=)6;%CrI37zJ%n zl>z&a6vAU*3((wbp1GuSkvuau3ZyTY`~$OddEDEH0=jhsnRJKuBg><~mi~3X2|6p~ z?4V)CxiZ9#n{ZmfBvJr6LwyzQBBXDe(bR{ z%f5B1j?*0N<6C!{(nZ~%ev3i&>beb^4`G#VkFK_-_n9}0JURSn{D`CDPxhkhUjEs( zLkSt%z3pHEE3S`PB@r^P0~b{wG(pqg&6hf$M@xX;9A}}2J&?fON)LBvxN~}VyK^}l zZ}f&hsEC}p7v+D5c})Jr5C-0liFS?QUNBf4h-D2B@_0m35AcF3ag!u+t|C9i%^SVF zrGt}ke&@jlvYeR8K0>N1ZFcu?J}ZqH-N{8DO&c{DR?SY;k~ADj@WiLnHeptyEMb3L zZP=i#G)-#tiSEPxY|@x=l@f;&-1lIIxJ1}@P!??VS9t3!2)Tk@9l(76UMvlJJ~LtWo(PhrSYCw}-GKc_26zlGr2>UT zPKsL+RfYWTW$BEHq{l_+Z#?h~9wWUTh=dHIz#$6M!E&yS>^8p(qt0dX zlPi*8m$6z}`dV6oO9MpHchF1 z1$9Txz!xxX4VdWy18TK4U~r1125PGl()4ZZHN6{l(@HNKvHhiEw;UY~PVVF;?IIm4 z`GN*@JL2P0_pc1-+CPbsE-lINY{oKn?_Axl%{1wJ-A;tGsavxPX$6>gN!7#y!dz4t ze1L%#Osq!50x?f0SfX>n3K9&aYK3t+gy#^XM`Rcy!c5+Ur{SS88OAbUrhvk8z}U5I zE$&Sz;R>*}!r2hBczU?i7}ZYtz1xQ{G&Z-fnRBodJvR zbMC_~sCY-QQ-|5+>h?XO2bGxQ7c_Bupu3Q=h>{cQ*5U>S38_%se56ueLBNquqBeb= zLg`{DM_QV8bHO=E8f<7wmVMv+6u-eUFH%9;BHi90nTGAg9X3+hryhQ6PlRXp5s_CF zdX2WDhL7;uM0Jbhe%3PC#Ka8y*n_@8lNvP9h7S)Z$eI2YW_? zK@SdgH{)|=$-(JkyF`_fbWdJe|K)%sPEO4_emFmPzEg?JyMhtpE2)oq`ED6Mbh{iIvVarUp~(UI-@Bno8MPKw8+f%3X~h zS4H0<&%lZbn{frpnT{QH*(JT%xF~C!ovQY>VZUTN!)izA;h^Cw(hYhh3`m-}$s6aa zd^Lg6Ngvmb!-H_i_~DF6A3x%h$xL{1=SH9D6R0p}GDseumj^H}4lpkT{{6qs3MZwb z4My&?7SdiJtS_Vi6tkcMvbyTHg9P;aW$EiB&UPAAsFWn#jovZ#(%-IxPM-#Zq?6t) zZ`ZMsbW)nYj^$UxutP3Hzs1NvGjf>D0!;Q+k4WLjf6~xo&v-!3Gj@gS33{TaO%sbM zI1A6Jz~uyw&Oo!wnf1t`a`~}lx?aaVMoD8o3dTRBE!=zIQ0xLI)Tq|~MPf{9 zqWHYUgoHy;7!q5?Ef_V!oY_ZuV5VzA%=7BNkn!f-e8ky);Mw;cF1eyF`=#9}E< z3aXuQ`|V2|INrXH?($WR9JD4~;nYxV5vRro8LpzN6=>ru2qTzhAXjs+(-_z)CWc$8 z&CR8o$Cf{vs@AkTi`}+A$HZ02u^-Ss^|rHS!sO+BBc#v4B=m6i{uEF7w004mfddy) z_AM8W9nM5)uXOUaqlCr&cx0iUuvnSJrWS09&0?{{lvVT~i>`kJ3;XpFPyht#bO{6)eDD2ZCjR6JNIV!B%K@HkVz zE6MPzNwjKb6{ip7u@yFuS|=MQBpR|DAH);QbMYw2MCzNQfk3H=+wpyKzx*5vEc6<{ zB3Q95284CoBGMKf5eTvbs|GztzjFD>FbN+)ek?tS&)~=jCHxEhicNxbx)m~8eRidx za6iWlBQ9blm8H@s6%bs4N z|4e58xW}5BqogTT_!O$Ef$CUUv9N$yEI=tnbt|tZkl93$2%JStDy8CVggMzUaON`U zxzv9Lr@9Ybu>+Te^g|_JfGB#E`|2IQN>l<#|KDVS3WHLvbqm8+@Leo6qBMkfo*uAa z8!J(%MVwt@NSDQrrfBRtUBSAIOCL^DYZ5O>A2GJm3>$Iij+18S==In1Zgkq0jhpds z>^+at8Q(S-rFqha+0?VE=`e`1QOewRf~he4$cDvI2pXWC20ZKnji}JU%9qx7&Sa03 z>}qkn3|gshJpv{V=p;lU_(_X^V6ehqECTVe4xC)l8|>twmD2KG|21-*Z&Fw34Z&s^ z42JamW|j=UG%_}0Ji`D_f|M_m2O4^SZ(krZ#cZuIm%u(eEcUhuDvvgc2FZb*D((Ox zFt(5^DllS{M{ia-M$_Y$F343P?n{3;tD`3#%A2<2;bgU-ajAP%HEfuTl#X4`t^cZq z*HTJ<8HdB9gIy_|{&i!!cEhB3q($n!V&qILpeK6`^yD5<>wgh?tGp>3r(~SCEI3)r zjZ@Jar%3}O1B(Dwr;u5I#yq_uL^2f-bnXVMI606cA~W7~=7fIs2@B5Pu3eQbNQ>?d zU+L`Bq1$)jZU&g}^UKn$5$1hbYDdVJK1qXs;2_ohpcOMA!VI?BvvoNtcW+swLQN z^-au(^iW9Z)nl2HZp-whI9R7%YF@SWQ_X4&2ReP}pMqzMs@ZG>R*gN{pRhl#bRR@W z*Z6_8A_JC4U#Fz?pmcn4-&y!A{4xoK-Ns0$26LgZu9+6IRkoP`ccQ4PQIP3|6qZ5I zN^zOegG{MS2%F4~{iw^1{R#cHhSjY4(67$gZ!xoHReeQ0R*lxEQ&vbt#3OFd;b2ab zNJFT<*!Xy*=#V-(Y+#nKYi0Tnj4Sys#FCP4uL_?v5#0$8Y`_F;4KZ}9R+ zi1`ocUNcA=+-r+{OX1ny@HVFY9!D?bL&EY$K7%*$u)G(j&;=m0NAdrH{=ZI%0*wkd zTE#gU-p}M}UbIxO_|IEvk?Vd7Pymv}(r&};aH9DYt{@#fA#IY@kpSrdu0@aHzs!1b zIL?3(FSK{GF}OjGQGW&)m6&Gm8d^i zkRK-@VxSAS#LACh6bz%Nt-1AL9b5Uj2vb8EUy1o3lOfoI*Q6GBh7_#5pn`O5V2nY9 z$C5MUeq1up-sad47HIgBd^|z($)9O_)Th#Jaz@+$(&Ud|L4apni;7LrbRQtYSIQxd zB%4ycrUXbGaSgmhIPvXjw(2A2t~K&B@(M7ZAVYi;0bevxY%x#=va|5u8gK-vOK$|@ zx0^8b7#O>gGB)IB;C>utBt>!IaZFLyocF+&?hoND(kZE9z}&BM#SLGbvqkAP4#HSWehLj=h6$?_a|Z(nir~Vc53Kq7eR+>JUEO?>{VY`_cg$ruU6N&A%69}) z$k8c?Sb2XRf@SNwJ`VvS0h9@OnV(XIj(Em@S?&tEL?*%tCIu_O6YI_xcQz_1E0Z(9 zoq>MAG>}ZZnT-S3C5)rsN9T~EoD2JjVl(L|HRb8F)5SWv43Re&|kO`=Z}LWpKjR&Cz|T9(n&D-C~Ujy054^m6k4k+&f zac0jVn$QZLBAC{Ob)SkNrHbd^1l;3n&$E3+C~ovDwq65rTiV88d@UbV%ROWGi?3WO z#eld*$0)igI7o1VRzV_Htm2F9FYj&>i0Qsk(xn$euGE>=Wx=3zCAA}$ZaAW*xKxYS zVF|56h7VYwQxV@E@JbXL(-;4EeK((x&MkM1Vr<-y+9Mfxnfg;emt+brI$i3*=z-<% z(ju1gA*193vf_%WA){-N-2zrzmFztThk~os`{4GgSfT+a56k`rU4iNWWrX)l+PZ0_ zZm5(qOrVMyWGCuwSu$0^haBf%!4__e+Gh6>_8EAKF=xFG>X7p6 zVlR*)e>BblwK8c|Ko!@*+9-yC9$W#vmB|#pz}m2`otrS#bLkSj6wd}!LGkorF=egd z?C8nAR92?+w;cuXQ~0dsv?D#HdoE00zS4mVlU@vCSd~0Ho=yaQg~K8J+s=}5(pa@| zOBiV%yMxhlX(h}p$o@cmUpn5?97gs9>ifZhhMB<6bATMdmLKK}n7g8a%;JB?T-i%v z#m{CtG35pmcB2;2aeUeoEQ&~$4ySufO3Bd5fsW-^TBpIf`=FVFSBBm>7t4Y3`bELfnmKKw()|ca77d->j7fU{U|bM z;q@dZPw9Nl{A=Buym94fq;2!5%LLY@#l)4YIa&B)wIoUDjLiSO5vmwlo}&BUakgbk4D^kj51_cj2BhJXY2HVSYkHuuHMoYmD(a8R5Oju4pS z!Xyc|+C}$Pf$I_Di4D3Ut_L7uH4dcY_Jj)gQoi)OXYz_d*P|Uc9&K6$kL;J?rUBPu z`f&U`2+O0u_c%MUX7$kR`J>F0P4Mel_*4?3yVv%%$S!pN58V+pFfk{->}p{a#lBhR zpqSL!oG4hoEKG-+;1?_4Vc=b`#9Y>Z^ih$XB)4kd%Jvh0Rk7N;*NSqLX^4i6Fjohy zJbkqjjIWko(d#gNY1GLwaIvvUf`%vwLSrH&xkqVou;cq=_>KstLI(k?QsEvolfI-9 zHkO241GZZLDxTMYXn<=7*iY;a#=_IKA0=4ufTRu?sh!kOI;Ms&_3)u*M9L-e>Ll4a z&n}a)qy;QrJsNx91E9-(Y2Fh@#Fh3;c)B{BkmDQhTvDfUoI!19GqHW|HLWSRyoszO zwYXlaEJK7X)C1oq)`FWGpyOsGsx^^jbkp*E?{46=*#I`eUT|RX!cArTCie`ZJ70`f z_H!!>B`RR^pcrMhH>nwRAn-sZv1GKifm>|5xw9QQuMS*YL8vEvzGZ$E6-}`Cs01N9 z7n5qYu!cid4fc|?0A=B7wKa;QS)nUtUR(ff7d{P$C>xZD`2n!kz~~IlSfB-%f;17& z7eORF+O%$?>j>;Uicw9^X>DiWl1HU)LuOI(@Ble#u5BpQ1AcUv$Un|;h+rcls{j!F zYmUeYn8JS6hBa(8A!Q#e5Qpc8K=3cY%i`hYzok#9*cW!d-u`h8`o(A%WFg+c(Z6Ph zteqC)z+!S>9Zr#BYtUvw_S`s`1WTn+Dhnh5RLOkeD0&NHTtceyCQdr@CJx)V;7V6; z3NijTN4A(dva05GWCyn=dw>F=0AKO^kQK0EO46nZc`Reo=I~ol92U`1{WCwLEC^5_ z4@`~2ANVI}^aJVHjQ3JHUUdVs{Wo0O{KTAtTS%LL%29kSViz@D^H#Vt{{e45+Xe82=i)Pg2!9tKOl}VF~WRDYa_s!=>>$ zvf)R-!kO+53F|wIg>ZUggA?)>j9)x!WF6AVqeUao|83T27?#TBuQZU3QeasctA9;i zogfQI9{kh?M#0i5@|Rc}tP^BzU@xt6m`S7TNP%30No^BSle?O4R0s6HDnc~HeL?W$ zT?0Ku*w_Z!BAtooi4SgQ*37jeIKvZkslNJZI3aAiLGOR8el4{hQ;m>TRT@2J*VS^R zlkKnDW#!=deYVzq{~|pxYHhbSReq_&q4ASG;d??s-swMf_Ua(Xb9onb+9iDwj|0Vi zk(QCcVl{|p0Ct}+?l8OiD7!)3!%QB9unQjU3hXL?I65XM2;wO4Wcf=6o)Ap|0z~M- z0X^AB0d#n+O-l=~I8w?dN?LQa_WPXlE)g35%uUf7qCalG5)v@X{<`ModFkf?0CgN5 z&i2!qup;OXQjMU?USWm>(+*7A|CLJmF<}~{LY;o)v@S!#m}>HXrWx%q=BnTje@F+)I4F7YqH<-`V27QWQ399u&nh(^t6)+Y<{nGQv~>D+NMM!802847TZ6OmM*~Jt~8W=v}mJ z$mEb8KSE-|qn+G0lwINDjkOm}++j_@s6=4 z$MGIY`gMH%hI^D|`GqhHe%agy@{CnXB(yy6HbkpNeTKq(Tt(WHg}yLT0^~1aYgsH< zuqrqP(uOghs-i&>VmwuRn~tXnEAJlx7Rr7sNR?bUn08^>>alC8xOp!gwrt?OeW|l| zj@wbg&1=Ts<@ukT>#gcLG;_Wy)P08CPU$;^v9Z%POi0~$XXE;*3x_i@blJ~yk8HiX ze&sYWbkO;cjE%lEX3#m<8#5+@a~0SrzFWWpES6$yJir2bSkv&u)-!Bt)5yVt>s@E1 z0-Xh`H%4990cV|`j&$Zb1Yv4iZTroPuo>D}d07dz-Z>SX)^Pa)BkBp0qwG%MYfAhN za=X*;2;5R~duoubxZ`L)=}Lt3AVNy@!}ZQ1 ziA+8bq5OfsP^B}&KVC}%!L;mjFU@zlbEO1MCC@Q)hAABr1KQKNV#tGzK#*8J!f#@| zRD;`fwYQt~bzP2(7%ssE^&L3f$!%TI^P_6b=|qhK7BlPK{}WiAcI(u8uCoX3k{Z>< zJfwq**Y*}uySlk=!moPGt}uA>h+T=`I-Tj*scF4#Rs0&9Ubb&w@-JJjITQBud`H;L z9p7j~Qs=6PO=G%_i763Mx$~gvJQmDgH)$&TzY_MqPp}RG+gO~{kT;~%YN0`Xfjm|R zlczG2H%=g-5~v(|x`|>?CTUuwax2oTa;12DhcvBRsSRm5q?OPr8r}hG99;>%8^-YC z234YCS!13(=nTJjng?3O8{QYJ4!_@|OnNv>S-6#xt3aa)cPwd@a6U&A_?7xm*i@$p zufk7g!VVyfRs$!Tl(#ocT8#~82%5cYEt5A@-Wsa{$v4|cV>rCgU~2(mi;9mL16Bnl zD;O-c6Mtn4oRUD%6{^y(%Z-4pWkdzJQN9N3suE#`WpGew!fI;{u3omq(O!3b?c$AO zmE+HyCzOI8KWb8Yho8BQNAEwDZ^8kWN_g~svg#M<_L+q)DcRV5;UQddvAg^EwWl7W zN-q|XHY;{8_F(g%!*>YVx|Hl=WZ}26K8-t4)scxmOHX$awgs2j`!g=Jjj^55?aixj ziL61Cot3tvACpXdr!jUO{(lF8(#U?=1Srd`{AdeZmDqxd0u6Grkg{NhEvCF}QY#f- zet<~B$@Z$DNvr0UYw0vvZ*4hkRc#Y(2W>y?SZ#_{4O#=XdDw2{5~MFm&0uipf+|Hv z!xBpjP))JcKv%xL5*P{U9s~wfSNhY0A$`Y@)b0Ho7;Qe+Lvb5+N%lNL#9fhEJ=%M}!C;+Fd5@UqkqZM-PuCSF$U0@${HCXAGZlR}Q1g(5(%SUwg$ zr>Cb1oKO(lpx|In#Y_bU5B)bDT;S2?$;$OOxR6!xyh_VvV65w)x>#^CG){d!K177CA=)0hy4}^W7C*Vyv{-TbJ(O|0hM4dEO^&#g3%{H#Xp3(K> zBXGPuc$8t58B(G#K0~0rz(rTvp66`qZfkL3Mss<$2!Da*4hrxWpOYPf`^+U|%iz8X z7K;_bqgt!Q$grq(Y}<(62-(VB zLI33)L>|W%ZcsG|PJGFpV+dP66^4WtvjJOj9@h+#PF49@MM?|8^`pOZ$UhuN8__)< zrDb@)N8Ijv{%g+ZEg`w^w{QY9dBJ*0v7JUr3Q7w~z{7^ViFhbG!(hFaGaPI|vMao% zQBIn4$nuI2kR5Xt3V^(60nMC=Kz5n8c;gmb9qdY%PV%~9w{P;a)kN6bd@7D3Ygb^W z7Bxzj8$u?oCS=Oslo2tl35PS0%%d3okC)Q_`lgza?B#GGuYxz#On&e_nkfw7&IcSI z@B)to=%y-!RE;b*YE1z)F)_IYD5&{(1#r}0mDtzz08lte5rZPQsH{v7>{(#G18|p? z(T&wYh0<{)GgMoq&R$RH+NxDCIk9NU&*ZeKYsDsN?Vv7f2#E;w53G*+jU{wM_mQ>T zI#wS%jgpzkxK(6G9RHuzj=<{pMg6dYL|;ujvn}?fk#EC;5MI&rr@|H~{a&4W(1x;D2qq1b%-OWG$yc zJnf3wnjCao@moZxSn9G^9!Lpitm)Tcc}y$c7l{&JNUr=LO$odWi(39X2aEseEvlx^ zXg>>kAN^|AZ+z#b?I86EX=?M5_>GheAo)Me)$dHgr3S)%&NhS-e>^tC_tfIbi@AEuKOIJEm zI%rF2OIx5op<$M?Hx$a=d+)uMi0mO7WP>1xhR9Gs+^D#UD4-}Vmf%8A8O`nYKljO# zq4>V<_xnkj)F!#(?DIe8WPQtOyLbRo#Muj|UwK%FPv687*jGwd$-^)=j*v&J;~jLf z2ck69oW2E>BMss7^(3e7C>4lwX^hvXZfB+EMGk9@h(svKA=KWGC2QyhICnlx8<3PG zzH%~&MXFlO4g!phGFwPYXJpu~MCCVl<7mLx@ZbTd*?|QiUGpc-(++Ay^(~l($4uAw zHogKjv)NPtWQP|q<)@fD4DVC)>fr%T(JM5cg^FH7-tYT*IX1p5J~^r4fr*4&e2pJg zW}Nw9UTsU~jEm`fU%K`t796Ex#xaQG7Q;d`5yQx7sO1ZC1&cyLiz!pis%Q?NO}B8c?1TW37#AxweE;T zRKzL)Eq)OZXH2YKMGTu22Mj}sj+H?3(&GRLc|sM)e)7cuow_uc8y;ArY4d@REG|U+ z{o$*Zf`SgL>0)Eu-Pur?6J0pN*|PSCF$J9v(df!w|3>8>9oe;EdizDpj<`lq6M7(z z8hAa+C{SM*WQDud*l^e6ZVU#LFN|2EGh8Ck9O1q|d52%=gEL5C)~Hs(n@T34^3jnI zZaf=mwJDY>-B2o&Kyj}5V9Dl6qWjlkpYpeIHOqA>huzE)sWo}GN9$NtOCaZ8(i}gF zZ9j`C48370f{)4qxs;%;2FKTuEf)fVWiAn3P?nf9whbz~TIkbZR(#u@qm1PJuw1y(!DSCILR@>WOLVrN`J1+3E%XLY1tO(++m zPzB0cBH*alC{UpwU58>Y3P*xq7*a?vc@ezN)>-2|d~0b&K)Lr=_Oa(?4?KHfS_Lgj z%oRae0B?{xc>B53NWR?lVQ#mzA9al8&7NlWZnD~SF0eueR|{veYd6KkisB`7fhlOw zf& zsz0;Biu1Vdgf{Tz$4IphCKm-ssn9BsRNF(QN(Rr#IdY4c!-BR5vF)c^aozP!n=|A0 zgoh65uQ^aP$^Lk6Me$fBzQ?Oz(S}VO(RUnSF->vEf6O!|0uS5PSt*CyPalzCq}+{C zRezdCn8BNGbifhF_N-cB67*WdQ0PLWP>E$T>@jw|ZXQN@zC!E96|ow~izTv{FJ3qs zq$KxgeW*dar%4g@&{V!98I$4*a^jChk@i1mV-3#LT1Q|%kmsARRdS?gzOyQR!0q; z7bs8aLHp6+rqLzX^1J}2JRqFNEzN*HHOH`Y9qFVFygT~ftr7b>X((|0eSe6igbr>t zB1GH>V6kUD8nE%`8=uCObeB|N#3@X!18FQ#J8&C0pC~d_C zl@+ZWwD(0`FC`HnnuhfwcD}4?!^csr+lAeu=5SuA{F{@{7oKKHrzSNU@Mq08lPaX* zhPbH)@PX~k+0eh)pu{jec8SnjMfc6ft_}u0dIHK}Wo0G~eou-gs8801w}AucW`Mi& z3_dCfVr;s^04+jVuyl!-($$JxIoh>Jw7I-^<;VFS4hs%h^yQNIqs(2-=kMyUWz@Ip z-l!*jj2~2g-1^YquAK+3NwR4%Tg5xh8sdg{R#RqwyI|eVv$@)8`RtkVx;M_cQgiOO z`L5i|EWT_0=p~A>XX_l$q1`kK`SP#vEEEzMs3X7LDB$%Y!EQ_J2n8d_Bm+S9NQCiA zo5xNg-w+kR(0bBTQ@l^rawTOeDmPs_d5@-OkO?|8O7RWQ7YS^D*N~N#0vnn=>X|<`_Uu0Bg$)w|c|g>b`y0D<8v4S9 zsR0TLSIe+L$>ry6LHjd{*ikNV)Vc)J9PMV>QqGcAvkQyfs#CNZbsj8XJ>Wj?)~-+^ zmnQ`CAC#)qUB3h{zHet6((bRp4@iKw5{?SkK~6O(nPdWTFbUYH8=z_=N+jD$vNOB@ zkG4055Dhwmpx;$0KtV&qM2$7HA=hjW&rV6mveuE~8M4Vux zF3|ld(WMtb$|ov-(v*~xvPQ{gWTwfCjLjPjN7Nk6)-;)&_i2=3Gg3G}q=8c-aKAGWb&GsEUlygubJXHtG@rjqw7>G zsK&i;^X5&L6D^&|YB90j;Hml73mO92kjXj%jzR04VsZFuy;k%zo&}rw>bv(NTEEn` zkrDA%%4ROHyJplpn}0JyYWFomI{P&ID8t+l4B0aU4GyTVkNrNgsknBE#kXj|y0htk zmL-a3*(xz!ts{oBjjo$66aX;9D^1F;(oX29ug=dN@?_Lmu&k#AkR3Myn7lVMaXG0rpw|qSvw$9_sRC{=!bMFO&mX?C?a{UtcF(?j*|s$1X`)JdUL)Pu6$ji^My8 zR+=N7KY?{6fGOsIAA*eT1v1rc2we}sGuzjLGSUbL;QqiRC=2^~3tfr5hA0FWOkG zrxPMhf|w9SuaDV)=$#)7%>uy*Qto&_=%QtHMM)mT`&pcMeEXEEyuKX zVYgN=BENnSHEFCGNA8FJFnEwcYTiPBXM~KU0aWV?RfI+3BOCoTNEVIP;wOf-SkjUG zMO&>Do6Y05$g*K-`eWpWA1vKdW@iaZq+5(FcGifM0QDL$2WudbmsBIC2JAbO-5U))5u@`K zUpk}YpF86drRRlGymT*LgODqGUm^8S&GU-1sa+C<>?!2MuV<7`&ya>-iiM!mc?4=8 zJ3Ad1cLFcAja#_u{zzxd-DeiQ+%deYYq_Ow?XYro1z+T>={zqG(Nc%8wggR(ZRon^bl7m8E-z&rvN!r|aeOw#_!FeEGwT zg9nV`%JZ9}8{Y{~c5VeAdw0V|6>3W)SRmwHC7|F#Ox3}YUX-2WVMEM#2+EI#3FV%b zXRB_rNP|rYd@uIuEA>WJv8T7_9r~fV>DWiyb|sh5WK#CTeN>e5dqbmq=OkV^6Ylh z@go|9k{2}+W(|7q^f>l#SX`X4HZ(YD``n|Sl^yr(h?kkQQR}#fN@7w8Q|7r=L zkK!+~nrC*iPR&M7Q`ANe8==^9=c?W3=8Cgo4hyiLylzn4E`1?+N?V8)N)Mc5Ia5EK zK4sp^IKpy>v6M4Jj*R_~$U)};lh;UwyXM6vA@V@5azGeh>LD@ahh0d8#39fUg2e#Y z$w~ux4d6mcE`Q^L9Yt!x+uXa&A|x*&j^3ZEa?bz5hh69NbRYuZZNN znIqTO$!UwH2+jYdt34nM7AzSJ=`L>;hSZ-|J3vcY+!v>y*e~5g!E`Vah5sV8cG)8) zM7|pJ&HKa4iZ%3G zd$js`kPwsAEm(bjXQa>SWvIirAV2Hhu$lcM0JZ=LtFWPmlb1Mw%=OB5Yz5?pzEjZK zfT?24B@{X|!!$k5iiF}M88@QU4o{szOdDsnAs?JS*4dog8 z-X=TYdMJMd&@oVQCE%0)!qXVwy!$xA_1@12JJ{Uv)bIO@{D?DDFS-ha0qbYlK#h4# z8!{ZqdQ>A8hF}rG2{Rf!~_jCy1YoC(~23~#vP?0^u(y5ZMVXU@fz<&!P_do9`D zu-U~jYrBbUuz0m5YCFF8&f3J?;=vk}@C9AmGh(*XQ4LBKny;5jFJG%6?*Ep0Q8{Nu z-h|?zXp$MGB5-3yLsl~yvzqXe8nnU}KEf^cWJk4o>Icdy z?LK^-42kmtvK%mPZk* zo~Wd3^__)1yUyfK^yxBVtff+RPK!Wum5Mp7we%h{CwJ^Jb6ioydJU^(*KGpc*n`^T zY*T&2?z45lB(;lSd>h(@6p7|>b)h;a%V3M44r4%d)UdPc%G1i2t0(40HSE@B!f$GP zi$Y*FqIYJF>;C*`oXgkhcglJAOwoi5Mzy89%Hv@HNdY+l3PDHUi&61zfb~eIJ9vX% z9*H!bhw9sfh)6A81wvfHN2-@Y6wj`lx6JLIkUJzdu}#@$El>7~%NbiOp>3@8*OblS zwIi6)x6Gtxcvw9vo)M33RX+%| zla^`0|Fp;o<&TD+kra_#KYSm`g zC@nEDC0EnRCMM_o+Ad#_Cyd59h7GJ}10{tiLw+6@5*? zuZXF+OR+6Vnz(o2GOM6|$XE>yo^+vp8&lZb?|1*D4wP}1a(j*mB#n~*D!i3A^@uXZ z7`S*t{jT&1-fc1MEeQe#GS^Agh zYWNe_TOm5n!w^9pRE>_ZSX?KSoIXK;U8-1Fx1E9NAB)u>d!Csu33g6SZfxQuyVa|u z7m!V%JGRsQJ)#O**NV}mP`}XQ#P&I6B0%biNH?zHepUT`kwZe%LaZt^{lY49%inLX zH1#SgBmP231S?rC7Q4=t?g5Vik%E4Tfj&&G$uOhN=Ort7uY&x39FGlq|5i|l-scSq zd0P|1yt$kFQy|9`LOD{801`g#+`ptiI$9-_y~BboA2l}=`|+38)$?jQ^F=%hgH8ro zIt1iNcjL%>UW5vj|?Q<`AmM)XM0^v_T93HCT)bU|xK z`bV~9@5z8vFDdG*U1-|C;yudPj&x+rvDbo0(U;l-I@?qmS+m4$5rvq zMYMRCUu0Fk6CbPAN59j#;!I2L;wP{+PXfCX7h0hX&XLf*_OxroMHF%IU0D zwlX`rWZ|7VN~fQcrdXb&QSE80(L%Njt?z%&Sv%m>`l1B&q%%l%gZSz**T+P)>Kub= zS?M=8g%|M+!A3=l-w7B2BA<9E2`9e|LEnH*m~3FeWdf$`{!# zAU^m-k-+cl!+g;?i|>kT&~gWG40Rxhg6CM?G{G5}DigwylpO}T+mom81M?fkyE7tE z-UL;9OQ~ehn-K%SqU&iSk9^V=Kqf@^y2F^$fmI`+gaj<2DR#=XMF8}i0$@BWG&9oC zN!htgP@tD|+u^eKxDE9r60siSr@)3i`==K7wJ zRqDR|0W0sV+sCxE>OoiZ^z~u9ckm(0KAUS#nMrTsPDi47F2}CRB2y6?M-w9StMwyo zzsRUeUm9HPvB_;R&F`?${(UR!P_FNdcwmotXtWKqmWJpe8RELzLX9AlLHBYCSw{PG zaaxqN5trM1@^gUJmZh~rw4zIgjc9^1r50wGelDsBmv}Q)OlON@Sn78L>{C&-cCEg1 zZAu=|D2neex%@rcV0UMLyg_|GeyjGYzn3U?V%20XkKhgwOY_M|K+(b4NT&7(sAR~C z(2MfnPQZ1gaS4Qu*A}@G|)?qp-W) zwUJSQmBoz<*&_PyT$YSo*Z$OEeod^NpMR?6{d?@a*9NmfR%TVeE^%#tGqL{@4MUN+ zsXB7%^?`gT2OTlp8L#Kj;;qPl>3fuOKMe28&vlX)XvijMuhNEnI{$>k%TRWr{6U2? zsoulDs1UyaGP=JEOO}j$vr$6p&cHD^Suk^{UoLX<^=AZeo~A}BHR^Yq7}aET;gBtz zWFwEo@6FlOHdk0R##RsSR8(=;l9m;KS*wwsl*^g=jg9k;9eT9qZ1Cwx`6#Vre2${7 zTj)AnKklrm3}j~qsp=*)zu=``i4p3PxbFyfCqtb<6*EZ_AtIN7Ga&~NQp!*7dEgNl zutP`RJB461U>*I=TTELH|#(mpMp*%!_L2d z`}?5KA9@W$m)So*dU{q5aqX`JR&n^iF~Natns%8RzNp2tSzE0Eg$>6i0<3lJg-@ns zJEwnmPvvbzRc*(a`>r*7V!w7Ug(mlNDRmCbZO~j{=ZVUPi@s_j_~-C4Dfs5$TB(B! z3h+Z3dYpBWh14&}NZG^?Hrpqx5v%UH(n4G-+>6{qH~zz;w*<~u4F}C-qVG#vb4Acx z71ID`utahoq~b_*)0~tOMu5qs*NNSrW(%ut#|hsgZo3 z=#wSgqSp{(It(RqAq`P8l%5`muv?5YYl-jx!pYO_oE*M2W@f*(1A@YPXRs}4O2qcR z)?WA}GUEJB)~IzF@6>kqTAM{v6K0QjI@+Rsx#bw=mA|ddYvmN=L>?2oyF8NV4Uijj?l;4GwLbClKLOY;ik1VG*a~K^)3o*=GkcRYZecFSo0t;GyD+zxowtY<(HG(F z5Yxt0Qf+5m4hJ7a*ny=~J0^+n{c%B+8}B?6pe>!gvO<&KGSySNimS1~+h4jbLNhhT zOCs>dOU=5Mtw>S+{Zj~+V!^NY|( zV(|`D`SSFm!)m7rNkcWYU&(!NuVNYo%IXGuXasV7>8A0{3K6K?haODDZ5mpYCbaA=w%EA7tTCM;;oRJ>p`-db$h|DY53FZblP029qgOUqSXs`qI z2{UMGf?zLY0?q8NSBo)VCc8RI{^nI0HItgW?fTPVdQhmg>SV)Ev4JfQ2wAqNW!WgT zXqY2EVH7vkF`{7HNJ{7)^xtWskZRlQG@k1UqcGIP_h^iQ6ElL#?7 z(fZwm$GGq&q;cqa7h{V#gQA}7;T#m@$JL2!)@#Y~koiy{(Nv8eK-KuqJ&kx4<}j81 zs{Cv&0}H2vGt97Xbj@G{j^(i$mrVgd*M)ZRs$5by9B>0$M2CxtdP2k@exfv?|3hk(wsgan1Ni6R{=Js`3-RL&@ zh5O)Rdts!WZ-riZ5ZS9ZPFk80L)$+D0h;;;4M+J@)T)ip|Q*Igni3lY_UwLG(AkJ9@aH_j&xU0@;+GwSLL z)3bpNM8_{&81T*}N{kbB)(6>egq7>N3R=4-Q*Ec- zJoU0gd-j>`*|Td^ZM31=u@2KKv?xfc5YpK7UND-=)RET7P4&21*JQ;FxVugH^-wSX zeZUdn(81c#F6(9Ds@>7!xn`rYTFh=m&GWByvO#=e~Pb>uzs{9<~NqXT<3D~`b~gEu_3x|&rw|2yaMOk zx%9T03px)s)+}k-IAjk^!wUBzA1IdSN7i876vYw+I+lhwJSos{kl5dY*Q-#!OvhfU zR)lpHr!$pfN=Mhd^hSyj@f|wtzP629q-Jc69AdCqAH3$C9_lA~J@7k!Hj?lk#S#q) zj8M|i*hNpMkQ}}~TGcu%JfJDbOsP{QX!E08r(Ta92YEc8UfFRlu-dco3uf~J7w?MG zyHxeJcc_d2;7L(l+pe}nWGojtmBD=Og4=bFnL9b!E(fAx2xLgUa5`?v1k zp=DcMREkd#eo#m5OEho4L<-ahS#GGM;`7k5UZpS#H%ccoN0k zUdnL>q)6QfKhmcRp_6V zShWGms%2rLm)p}r%T!^kPH4=qKb(V}Noamx$nz)018e&C*)v~Sf=byUu_L$60R<8A z6UP?JQl>ufiRk>j%Eu2FJDjVx&%MkVZXg;g1SdR?NgheC@B8c9m2%F|v7S&~1x;G+ z75uPAtk@Z({~noiA9jWDhS{qaL<-^P=RL#7(#1@gyXu6RQNXq*LlPAzxL_0=knmKu zPYq2M7e1SRreA0V3&{xW-LvBaTf~cR2M0}fdHjy&qACw`J=D~Y(YdNxuX276FNp7Q zLkP1n=kkI-+24Z~ab@P@-c?!1i6y6ps_N}yrKXraGSjBoS!8Ap&YKp1UMC`2Qd=vA zZPdVNGHfHztY7fiQ;KE^kw_wy^0PkP3*dpcMh}bzoCWfPct}Ui3ESZVA2r-Qq*13D zDbYG8aMnH`8jrR;Ur%6mW8))wHKM}Az#%%W#*r4T)jcJ)3Efa z`DMt;C|HOCoq?HIAR5Z(m3LdlG8$)am&cx?W(-~fz=nuiF*&W4VrQ91W0Z!M&zwoY z()~)KeIRYgCDCON<=Jc4Er`Npq~U_3+LhU2qEhpk$&A;ZcXI03-Ek`~?th6-o|bOz zAUY@|pDzosbSjz(cd9||2D8A(>@!e$%-J90`dy9Je{KF5FkHwZvT>SZP zjb>T))Wx#})%Pe!+e(k?$~E(H=~2X#Vg`o%*b%&Qtrn`UiCrn2jXtyJ(gW=ppE7j71XYP~E!DfCcSD{a5u8P`eHMf}GK8Ql zKLDVS6`;7kPs=&%#RnOM1$$$2STKU5s7IiPn;it^8JmMnC}1CXP3kK&IcLYy7pDhU z>hGDd_p|R=5GLo0o%qDby6jZ8=z<3RqlYcn8;@y_x8(SoXC|=WtU{M*R8sH(u?hXNMZ}18G#U3FvWau0!GZnU9o{XF-HvPV|I$wN`G@w-+DK)vSez`VF=GM%ZCzNAzi@uopY((hb0m_@qA|8GCrTATa%{51y$DD{eJm|Blb1*kG zNtEY&$%H=h(Bp}+QI@~4*9gSI7dTmhL?9v+80F?VnTs$s?gx7FqfO&ToQ%s_B;-{! z{TUL9KpuOYX(Cad`-d#`vL}%!RGoebsq_^8P_LwKo_)e=j9_V9-@L^la0Ew7UDt-W zJ|0e!57PL>4i~5G4G$gBM`^`}hyccf>yu03F7NKbyh2xusEjR-8ZcE>EG>a7T!cMG zo6rv9pWcVDSL0sgC3{>EKkvh-M#)qFfEhmfgA-!79}=T)l3@cMUVBT_%OBV49y7+B`_5>(eijWHIFgO(iPyyWD9%Oc714mbH62i?a91Cl#{$JBjq*l8rWT&!0;!;l z75j;D0|PFXZy1_B2^xnn)t3%g9<#>M&hr}QS-MN~&lg|jix%j&-%x%1VWHT>BqlNf zIUCG2Le3`I)YBOzPY&dbkJ3e#AI8^k>FK_`4jU?wC9)NHbDtwatio$ANI4}-)FdO| z`t<@e^$FL~YOnvstYNr&QR=#iET~IscVW{0@Q^`+ad6ie`|G1G#Y5aT69w#vu|3Cv z!b=y3EgF)VsF#T{b#q2UQ+FTaWE?@XYTa=2Tey*ZBX3eg{@6E0K=!9af=sY0FVxyi zw<(dfyhuuPm6_F3jF+{TkcgccQ>4l-<^3dI4 zh*-eeh%Z?0&o^Rh(~u|FW;WaPBdaKO@(!*S>7SCwpJuLOytVw-&P8|%%;LSR9@Wmk zCM$yO$bOve@K~GB9X{S@wr@q7Gb$^aZWgwuZ`_NV08(`5S}((@7PH>$gY=5;pj|tk zJ9bHMnPGi!1N|WGX%Q zm_F@L9NVji&3bJZ=fjUpEuNNhXylXcjN)wMsd+^Mpn7@^9iXt=w9g<&ou_c8fkvN5 zKjxJlf^nyQ*XXfI^_G0jKsnDratUzzBqY_Y=+P*?+J{*l=O7CKUwl}o94%>sI)m0k zO{ekAtMScNV^W|LXU3O#7?o7E=bPb@dSh`g!~8PIj0A=PFsz}WwACfZ@w@qwsW7H`ZuNX#6H$j0 zv)N)cMX`+pP76dPat1v8VFUU@z|**be^08wV3*yYwNs3&xnt@#nBpJsWSGBMMxr5aJt{0}ellAsqd3wFqi?rwcm2@AZ>$kndAqiV-t6{v{s9wPtCpplL@O#hhu3u*^!rSSRf=dsF03pQtDa zXncS*MZy+Z0?L#cmPpcXF@AY+KXx@Z=pSeWc_@-oh+8nwEbly91pRuREjW)v{)4Az zni&+Vu4M7ORK2uYt{{x&M+N!B~??rfgH*bjrpM&tBeNiz*2;1ti6n zwff%%0FLW12Eg4~|Ep(Qx1s;%O(6YG z2r`oyb3TC=pjyUpPHU`mmY~`=l_>%%`WO}K*C)^uTO^t=6e&h4$V?Fsbcite>;=}Y zx4Amb+`ALccv6zu?0X+u=9-ITJZYFRN@Y2=P}%bsd&X6Wop7R5b&GpXZJi;q&W-R` z>~VWBmXG|gTrrSzUZ4go-s>^`$8x{^&!s+YjiBRHx_d8T0q2V(r zoYag@tLB)0ScT;9A$h2wi=tbj(|j=*F^991j@Ba0__#^0kI1SZ?Ah$NSs6EK{zKnVZ0FM#W(Jxo)Ds&~Z2d<7yS8YaYB}9zKD*m>s&>d|JRl!uZT~@ zK}}_0GAfZ$`jaIMdAn%%wj+J^BHaUnEBy>ILtjhFTQUU+t+D77Nc;0qswnjJaecua zzOFA?p@x&W1uHAUq|qk-1%OlA-4?$;H%Jo8xJ`B0bY@xm&Fsfd1=LtG7VLTrTrvw# zztNhq=>C6?2IQraKws}_N5Jb*ewCcYhNT#y=qw;WVS2+rRM30jUvU0pEwEqi8#Q^- zdZZi^+6y7@Zi~z?oB8gZKVZ)BQTFWf;Z|1n5jVM9m&$$cWrvq1Zs8%WyL`gJ-!J@$ zu0sIH!>{|8vuWUf`iSKXHQNw>%``RF8Cb?g41j`{=%Wpyk2ldX-;x;6zMriqBgatG zfGcGndja>`ZkM_l>ECoC;((AHKQQNb*I=7C`~B)q`h=rsvMQ_ipw+yHYv!Y0&T}?e zJAT3H5Uq2&q01u7YMA2U^KPtsBrdD!8pbzAt4WAI?5z=&(2cD*lo`8j^|IUi`$L`k zE6T>DjdBk`Vj(f8Qg$p9&l1t4a~2}YdPKz!_2HqdaWQ1X#{h{iE@oZ~kO<%57e@-Ee}4^sqFO5TX(ZJzhc_xf!f>5 zJg`bl*|Sc80k#}F^vA#&!99-=ig1wEErD#(EsTMp?OLST`Nv9Oi31-3A8)QWsVIz z#)_j&^L^Bhu|6qKj2C`M63^L?E;0;bDQXPG1l8*6;rZ z$35xj<>lEBV+Z5nkw8VrUq$KlAAo8xu_-3do?pLTnD{ZUD8_D_TvinKHZGz>QrMetbKt)38fU!yGm`T(HU z{bJWN=*+e^5bycTfRVhq?$74*X^IG#hpbjS9r}(@#yJmJZz{-tG*a@0!au zyM|&lI^EFh2+y1X$R>8?mwtyXHP?!( zEyc4fWrvG4tY>TB|8}B#NgdISLCAV2*dOuzKYqF6KM>!_261(r*iAB8dD@WC3{gvy zS`mA-7?^s$y?WRJAL=Kv;KUe`A8vE0aIC|Pi=&y!38iDn3rfeE0m1OFp+jG3ITjnoGWG?SkSa5i|biXuyHRp2WH+m+^A(I zalKQ$hKu)xac&OC{GIQNRxM^`39k2A*xxoYvunCpVWC-1oG7F4r!0!tH-T4?w5rR3tUu>nv_9>%Er6uiZXLJg8N23t8tEl@29`U6)uxeB%(@ zbUwb3e0$Z$xA&7qen<#|xSb(-+!2-9UPD8S89=F;if+*PU}KQKMk<^ zmup!$ItlrB>fxkQ?z6yoxM!u9#Or3VO~NR~6#SU;|L;ZohfgoFuq0*VKi!pQ7vvHW z*0IEOEPmZ*lf?bn4`1_Hjea{=2Zu#(Qa{Ht-IM3KCl5W~=gAwV;yDOK_vB?Qn6Co~ zr^Y864&bCWyCca)>S8q&%k^Y(Ch}(X9iLna3=%(oCBoNYI)t_6v91$Cf?GC*Kzf_8 zj}9F<4=MgGM&RE+LZf zfA!;GQ^v>?V$^!%yZY^k|{FwjtOX6>F1t@FN&M$tX33^m*}To<2cvqP!_~ z%5D3&^#9Ce=gM#esSFDumE10q@6717K&Gpi9a!3)l{>Za!+usC^YYq(Q{TQ*W?LKC z5sEeKP&n%8NQ>p*=+ziix%Kil8ebtcMLWfB`B}gd0MRXAOSne%9j7RVH+Dn!6vrma z58$Q8L1&eKoeM?$tHWcYpkaj~AchXL62XIk7vDzyhJhD8;TeFsM21jHc+lkt5^}e{hAfuq@7D9z9s` zKn{~Hqj~2DBi2D1bx+;U(G~26HlxE?P~iNFGcJ4^o4|6vKlTO2C}k38Ud zV%@PyzkV5pl#{$@FqxC-F&x|+ib#B*6<{}?dxZ7o1yc~{z}wyhm+4VMsS5CBl(>?q zT3wW9sKGnV-VO{De|!ghbh}C3ZQwn zYPXa~#z(METyKfnOljX_G78ervIkmi|@ z$-+H&3jNvtj;HWSAZ(kg1kcu`!Qj@y8EiF!luW3%{o|kXja%D@eXVt+6@fjE4UXQ- zH?iH~AYnaU@{I}OD3eDRLk zBzts5Y-U6#`2J3%*DZ4p%`b22=Zy8KWRzC15pwm5G5ggx$^-w`8Cy&Q;q#Hy0ISo| zs25IphSWb~PJ=cG?dEwJ8EKjGT$1?m%IH0nHh%u;jhF*0{eZ@mR*m}1jy}LLfcsTi zH-4)UP&Fmxe-MAEyi*$tu3*;l%C{xSS=lW+Day>*%6BEn*;#mQVO;r&_E=DQ-8>xI zO~xLzl=4{GV-%5J*h{)=2B-M#(IW=UHn~S{y2X*G?~$tYWCJtoOM;l?4kZlJ9%&vv zGD$pq_r1cUCuh7+7>d#3BQ#6jPGhVi=^3wEXH_P_nV;FOw;Sy$)2MseEEr9(P{2-$d`T?slZJvQ z_Xb)WXkq8ww6m=K1^}eX)Aia&Tlr!E-SFBpLJLyxUbm}0+}4ftzIT&p!Q$&Nlja@I zXNNMykbp9y#y`0$4hWWm;`XlnzYHtu7%dTGN-xH$u?Cu1+`h$@&QrBRpR!xs*X>lb zCG+^E8>mV>$g*BwE^00bdJY7N;RNi*bkiDGkF+xq2kF>&l4TdJ^bCh(UfwLDZnTBX6U@!Xl zJUyj3i+ktj1uh<}E1HqbnqeH7rl_qNwjUXe+~$G{GZvf~5WK9NxOS2y@EPp(ZyJ>Q z%NAwaTy`QWt5qSxXlFkDTVGPYqN_^E|Ogh3h~5w=(zmi z*Ph5jh#b026BoVygafhbP-7T(Dh9qFHzvI=ASpTyYyM}e)}M$s`LC?%J#j@WV2K56 zkLXSRWV(MM0|bVbZbYc)JXRTGvihyfxTF8e+VnOISQ|P_7|j^5wlLqd;e6%VY#A9A zzNt&)Q+fF-#ChJ5l|Lu$imPWc)Y@o?a~D0H#2sk~f2jO85@=u!YBHJM!s$iAT7vCM zXCxP8oSrN#GG07ZCd&7C(9!e(26hpnd?ctl8fvsCEaj9PamVdTtRV?1Tbg!jML9%aHd;y=J14K zrC~(dBWB2u+oS7ZvwmhpEcv|nxpMoQQ}%-8;@rmPF{B-yJ==!yc)0pcEp3R4ig)LZk^%m!=m}@5+#&vsFE5NPB zLjO&0meuti`r#A0GDbHD{S>*MLFl(-&y~kmi9jj)@2zbGf#TO_&w-$|?+heC&`k$gr00!!8j3gS3_mFZT75?>CG96KHZqt#m?`qQsG)X+~{?$>qxvdG$eEJ%QLU(jE5 zy${sDB)*KHa`oZIL=Yo~y9r|CC~;6JBtpPRq0_dd4=9073f_P_?dlgR@}7dUYgF(3 zqB}TPRqmFOe%K{2)F?lRM|%$W`{ZKs+WmHm?7ZJ@>FQzk5y6ArF@_+6CnekJi5tzN zQ`3QuepL+-8@Fr$QCv+lGi7QbsG{|xagoXFjpzS>D*7x$?`8FMB%C2K#a_%;P~5Y zctB(E;K=qvvWDtNR=C_@bxL0Zbpc-57&FdYZ?9X(j-VO}~L??^}P#v}KQMpc08d)s+nCIpVKl2t#h zqhVE&s^ADSDpjE)%p|*sqPiIvvJ2L6cl}6BrPFgC9s)plh#cVPqGgjsHn-2Hpm2xy zJ?)pTf7C1=b?U(tarb8O%JA@s-KIRLYOm~xdk|+kcQ~2#Jn%rg;uMd5f`V+(V36fJ z)1F?szgNnn7F(TK|K9eURZoqZw`SoK%TdHE0;KPR zU@I{Q9^>44MY2oRGC{pQVv#%7T%NCEjn+K%PJP!li!zy27B|Q9L1txQl(O*e9eWwNkuF!1 zCm!r{h~?t<#rL)MuJqV+P`Mc>`m*k;57PcJfa9rw2y-|zNI6qC-7b)-z@Pym2|^Bo zH`MBkmL+Pl9MOavh{nYNPURE+0rMny$bpKhX>0_>cn~*`4NOtyw7hgB#;%!TYDYZt z_l66%VtM$Ke(PRe^--TNp3`MPHFhAN=)>oGitYiOdGao%u241c$uBXBZ?vAIsVnYp zWIdD#3)q;st_kKlY}71x1=NdeJf`c0A@jw2u+7rYHEu_`gvJZQRC6-3ELTJN(;MI- zQy!B9!M2tR6x-44;08RM<+uCbsVWI&d*lf&&Y?FUTh_TZFFv)8xtKEf(GkrdarMJt zi5H=VkesndhM@dj<5Z<6HePra5iDU_D9Z6$L^K*l%Akt$6-l(ilpz7{ zrA1U8LKFDlvoM63nrmjDWfp<6AmuDE5jJ$mj;xV^-wjC`hYe!KQ%AE=DdMXi z`-^8pGiB|!^@gz_eZ}6b-M&YQ!a?2H2)H)X$9ADwS3L?Vwt~@-*)KZep;k1+1g-*@ zOyre8n%;;x`S9LG^<>jT>5gq=9uQ}=DNw1&f-S+7MHel|9JxL6a_zRpcziR;PwRXr#jioBM%0Ct3;PVR z2L>nvtdB6kKD{wlXKH{Ppo_#g;&)Z$HtQEV>gPDB7dxuwIBFF;YUMZ^dZti1s#~4S zd|x?Q7du+#INB9E+L3YtIL|M5h10T-UHh027MTH&mW(P2HPFG~0T5J9u>l~2<3)05 z#*#BVt!#>TzpM%QAt+6a5KZt_m$HZT>I z9y43(O_(&+UcDfYKfx`tM%AA%eqsaHi><;Uo(&G$t~mqdez#QEu8X^7-mckJM8qO4 zv7c@*vwCmAOc9e+sdYC+n>UYj7rU}4NM>O%?90m88-m!qrHogsQlS>6qh*X7&sloq zG$vMcY}kkOnbre0gZh2#o^}byh63=>X8mUTg61BY!#U$-Kyv}8RSuD@m>>sztVdjs z7v$$mj+V1P)1+-(NnVq^81tlb1*uya&br5Q5R#6mygvfJvOAru+Ugd9la_wQK?^-g_|3-_@z$9@MyY`Ik=ID6YIN9xNk&l z8(i|i$=h?sYrJifO)8uD`MeJ<{-)ki@4whMdA2!_v30we@6gQmK5o#k9qieqN@O1k zA8uSil?qI(H!cBuUsU>|Wv(Rwwrv(VCrg{&uSUfP?NOk@5-1y9LACmDJt8}>WDz3= z`y}BB@jTK@6!8IvWac=siXB-fKk*)L7WFnmNeYhEkMJKGwN0ZAh=4^|<|2A~>FZH@ zD{nbhd^7fO(c30(R(`f*RIJi7TI{wtZF(RVt;jmHd(LcT*3bSUkZV!CxbftZbLWy2 zl+j%62zqg3`b`Hi6pD0ej29^gilrDYe9nn%51#`<5j_s2A|^%UxKAX#7>1$GiO7SX z5MRcB#&(TkkTKpzXZo(mSaNE{i|zFwuhzfIDBmD&$v3e|a)dZ(a{z7Ydh%`6ZC*@CvN_XZ@sf<5e|TvT8fS8*VpgeT#0qRd*jal zaXFyRuvv!^s;TCly*~v4uW#IQ4_3nxh-WQP*L?pDTRB}(-h4rPSa05XRl$lIh_z|} zvWu~(y0Vs~_68tgAHT)8A7jOk@4m1OEY+JMl}m+k^2-_$cVneRfQ;_i9+|-MzCBi~ ziocZ>jRr2UnFAH=$@j%tHYlByD`ugrt{F{VdiGbeo$E7;at>RNHbYMhSS+t<`OvMA zo|b+_Q~=)z`vWb1QRzkhBJK2=S1BoS-8{`IKI$k~a7icEFDJ$4rClDfd<^m2aoQ}Y$csLH<0g(jz-{Lx9JDd$f<_j5G z@*MW-DE2kh=Zex|O8+)TA=ZyhD(Eg804<0hrRV)5c~NqM3?1ZbsOQ&Jt0^QJp@uTj zAp}$HDEsKOYOV=UQwQ(aiQra(Y|s_B`jXTJ+cXT6}3=OUb+tNsdw*RSUaZww+xv?KR%cVsE36nQ z8~D16JdB+t16Y5aZb5St_wUo`_y5at`CiZ8_`cWmoMlu`;1EV=?YbngXUwB}beX_M zYVA5DMwmzT>^@4x^UjH4x_M-eu4Cv$r$kqdc{II6|33v5`9i*5thC@gqd8u5POOOc zcNBcE+U2`N#y#J zWQAgsOMF^#gNZ|RST)i!dUmb7%&tvx zhU?MAaH|LFB`qIA*vhb)@xr5L&@RX~#}*R0OJ|^t{oM3~J^(NR9?S3b3 zg6*5lDZqNfCp-|NJPEc3BGE{&JvgyrN68#-dJTJnuUH0=#ZW{}+d4z_y}=qVCSn*Y zC$G@JN;_j@muZAneUl^q0NpV}z_jYMLNHJmNUZ>y~7%x5vThN?08Y5Q$ zAsqpCTmuY@2u|jVs9}Ahrw;x-K0Fak8y-au+t4Z?aN^Ko!$5@8#9k~~DIUCltk`Sj zE6UtIrj44Yx}F15&}oP($}U6_P=V$Qm0cS=L1n*IK%QtiS^@d4JJQYRK4uIp(~?V^ zVMfOyS;<7#qVyB(GUNXOM+DzII{Z?Cb>z6ZML0>SFnUEixUk*T@cn+r#>}>GK}8-| z8|p8$V_0UCsh3U$eoze=PB8?L=i2DNJvq*>GBVnOqB(EDBT|Zb^aU*pDZE#;S|CqR zGGNrpqf~MsoO79WOjwbA+OQ=rXK!ZPq2f!Fjt*^Gd0)*GD%5p#DS61-^Xpe#2m`rZ zVq84pg|uSAnm&-H>7MuH$CvW%{g~89;(MYr$ax?{gQDwik*D?v4*`!Vy&V`P5MFYG zC&Q8YEE}drZlwA^%za<%>7G+zeYsZ6^bwb>%dgMO`WB}5uKcmJf_b-x)ibwTukhxs0+*G}bpR;gGR`&BG}uQV_#LJ3 z!jBS+RT4HV5K0K=O640~0{-VpW%!mv2~n(frRh^qkF!q9&E#8~cSA|eG?e6oqhSk1 zhAQoE%bB4#T{i_-^qHZ(^_9x?7-Z^4vyacqGyOb)!h<*9Jw!s1MKNpurxjuA*Ee7y*w;t7@X|1?nDfzVZIK>dtAfL4v2PfBNy!fBiHVfd+ zSZ4u4H2D8#iOX1z)_ic5c-gl`hA(E$TO|&?NQTZ2;X}(othOvV=0&+XsJX#neo0+F zoUoLzl-*;o68Vh7gJb0luF~Q8Kp2t5^?JlO%EyURI$14!!oOtdPLQl;(1OzN-*WYk zXZiwU>kV@e5Wz9%q#h=x%$qQ}$Ey>J!}bd^8JI-*XT~nQ*i7FVc&HE`KUbgY`){!e zeW;Y?moi&;@U3HmFC~Oeo-w=))eh|;J*F(>JA~`~M~x>DhDfgbN zddDYavF5)e^j}skH7GD_?X(uFQ{ppN;Hk}T#%MgyR_UXTg(4(r+3K`3Rk7DvlW7gA z+fLnBN!yKQ8k*G4heQO7kM<&`_W0)9V0-<^#UNp{0A^ zYz_?4Kwt~tes2+#`_K^OKF0$&Ax=x3^v0s4bJkv)U@a5R z0zQg=A~h}`{Dp+TGC>h>pKR(pzoo{t$hZTY>WTi=remWc)dm9-5-ruLt8BGvL(#YB zIC&@T!*z|1M73_)s%Y8SpA@D0!TvR?uYGsDg-x43viq`)E$1ob3*heMVwZUexH}9T zi4}L|1};7+Z9h5bm*h17$|P-kB)5tf0BJ*?l%)dzh9F8YLUg-@qpaIupHS!4XEViH z2YD`fgM9Yp4DoCIM^~X`Zk1$HZxGoqg_*jbiVI*Ny^6@aFu%luhdW`I`3Pr308nk= z&7C6qKyeE*O%)?;g5|ia3z91=`-@EO$b4fYm3Jkq+dfg;M|qc0c z(hA9)#dUYvPs~8y6mfZY>#r$ z+0$V4P<>^zUylGoy2*5u@xp*>IKxb2-Oob0EEeXBj~$PEjx0qp)&*#(*;p<#N8_GJ zd&=+L7XjZIV^41PK8VM43EB8e?4@T>m9{mbs611|AE8Xp+J3?rzJN2NDmlfc zN=~|ZhU79CVN7tkMA zh_Ce)b7+6#8V31Lt@M_56q)8!WEuuJ6D!NKc%s#j?(5b4b6w7gdcj`B9AD`P>aR$U zClaIHgb;al6@1pKrB{F;zzy5b+!#Y}+!6rYQb~BmP)py)bhAEjSZRM;+?rM{aLy9} zZz=6EPqXNK%Re5Y@}ROMZ<(!SLZ6;|D3+lyY#%Fkq-wdZoh*M; z)^QetFzB4$HWwA`qoTGhH#-?BfQ&LI}emGZA)k&l$>Fj_QNU?(J=@h)G#aUK=JH&&pV~fPQ z=P2kT0Axbsmkz>Lpkgr_))u_;kQ!NgqWjmJm%Hq>SkrA#D=HdM|PnlQ$Mnb2V zmDxhHleI=E^S@h|{NYYkcSzQiA2hz?&vi40&g16UyLt^#X7O>8<11E}LNpkO&QEBa z13pIeIHvfKxRaXQxMx2P(Ssz6vdTiBC>ow;gae(XFq!Uyf$fF3fT`U+A-pX;3IQoY zR<_dU)H}9B@w|8#bEy?lL1PDrd%80-q!W9K%~4Qca`p%DyEtXO5%}kX3B#wT%mrYn z>jXzl6Z{$RiAvsKG*wl)S1vt4ydN+7P>? z8Cp@O11aP7U+H}PM5SMlN9q7Ss@?sB!co=zVl2chC)j}8$1w}vw6;PvsiXt|;V%IB@ z+4-Ke&zvb--v9f3|KE4LNoIyjW|!61v(^fJjUA^#cd{CrRQ#m1!c^~AL`(ZQVs$hh z(3x>A8Rv61ZgCr;SH6aTKYU_^h#Yz_mn7XhvW`eer9?hjc%%6n#KF%=m7uJ*?&)?9EK+ z=)80qHx-9SK81k)%YZTTG1)9$eldg<=1W0v!@%>>%a7J(QhrTm63W9FrI`dXEl`S_ z$8(hJmBfGzI|Kc0-m}ZFjlp3$x)Q1zN@03d^1l<8v?7(p2roy0{DDKP82xgT`uZ5c4|OF9$``eo%I z$PWnz-J&e+PQ6~Wb>EM&*>8TKnc-0F-^m#q4FhO;`m#`)8u zht5F*O60+X`6SjEjodG8iO9>x+%pUoS7!=W?-mbkldJ;pjR)t0A#1Lc*|EyJd{Pu> z3J-t}vJU!6d95|yjP}m2;n6HIl3TTr7)?2uI_>h3 z)!zW9`Rl_%_2-`^^yCAd6bHpK{5RUek`V(J&>oti7O9V!c2LbU*J05oT_JvLbQ+g| zX`^PxCkAVjw8(wCk-KJDuHkk5jxha|ICmX~$L^uZjU2buG>~buceJYkL=Dk;eftQZ zLR@ELW-xpKMnTpA->EDC?4 z`ru*9A}x%q7}ed(gO9L~d5SubH-6Z!R`t4yA1XCXg9r1$gD`r&ge!f!zpn7FPSj&P zi&e$(e8;5sRkcqe(qRWGZfo!3wzFh!Rt$fY8We5u#n`)ms0?sVd)Q; z65zLc@Az>x^mU!MT4fQ;9<2H=7r(r`d7mF!c-F@MW}iG8#@XMDT{%1LP`%_mQ=0X_ zV4}F+gNvV4AdlaI>-_5n5Sbe?YL|Rb*y#z$x}_;pb{DsTQNENJxc7ScB)hKkMMj zn!mN1_&a^qUc0Sfq4+iJ`lYY^w4NijTPsp(*lcf&8eQC;x8K@f;V0wRtSN1K`tfT_ zn}8TRyT{nRwe2R=%tO}OG#xdLu~J%f!yXYPGe&UuaIcJ-&}AYl<>k;K^6v>*IYRaR zn+S(^@@Amp0vEQ}=PL6M072rrz>-nOVE|@M&$>EeQ&7-=67g;t(|%+u(0|FY!QBFb zzD=zB@wV$RmKs-b2rVg+w}myH@cV3ysA5c`Tp3~Rv(XH}nE zHG2Utvb48l%3rv@N~r45_vR`^m3uRc5{bw*_U5tDAG^1B-#8rhMskU+O79*_WLn_f znhaoMPEWnjb5x+UNlWoTGP9rk!C&h)pjDpjDmJ#hQ*Qi~P{z#G;Pq_o1*SA>Sf{zh zP@DG3rjE1nG8Pu|lft>L)55l$c~Wjc2e11>63r8##cWG24ey8vO4dzZ2q12P%MC3dd(K-RaPUZqBNrd4^~L^? zNzKH+7sjNe&f1n8wm{kVDpQNct_V`VfziRLZ|!li20wm_$O|Vp6foWNDGzkZj*$s-E? z;1&~%T#?Vr5vfs(yELSX+@-r+5i;1GfQ}4AT7nyjNLX(k*f54TXPx;tR6< z$sxdP{f4+}E^aH)^rU`GK0sn=>l+N`?%M6PK|!V%J*`Q@-%OEuGs+)L<`6S*_+GXs zj7}fx#Z~2jjkxYB-}}D!d9k{+tk7!BhO}aF)9AiBjD?TNtRb3h<{#T%c{h^1$VE4} z1-;o`r@Sg<{i2dLaaDca6R%=u!52qyQ?)DZsHHLj(!$~A#c$FPFz(1OaL9`Btnv{b zU!T`U;ZB(Tz@DQV({3R(?urqE=13Z9G~$PM+h6fiWaWf&ta9mvb)Bbed+u6%mcM`C z{GlT^hX->dh{c2itq?aOmEA0HKMTN+hK)?^@l7+%KYO|Si6=(SSNQCaojY~w$`8IT zzTZMLms@cgm5v=zi__E*olJc&^vm+8v6Iq~uEfJbXxAjOy%<^SiC92^ML|Vlv1T*1 zEs-;9XgdV1#f?Pq*p8jJg#}psCw#j2>xYqQ*pBk`d&V^EJ8#UkNY!k%4*rY{nl+RS z*?e)hVrIFwa<)8N#(3eKhWzllguL2)M$wuV1Ls-@K8Xez!fYVaAk%!pukK2k$3G3;5Uwx70IxR;r_N5XJvz0-y?}tqjM- z+k$1F1Bz8)I;lRdr64~YMjOz-1?YnAYAS+X09OC_ntj2xCDX?52?2OxgSfwEuXCzj z5X~3&Fud$6U?k6DEx6GDzV=y0h7DkL1d@lhYm!tF@)~ z8{c9s-0+h#+V81YoA{|)S$#l6(2lArn;cVIx481MPVnq{ zv4?y=zk%8CsAzr6^EJGSdQ2%YHD?>{n%aI)M87kPcR{}p`Pw4W(4q8NMKckt1Of7q ziKxV7@h>x*n&6qMX4tSfii?9#du7XuyR;z%6Ilu<(Dq&#+_J)QSYqc zsQ8HGn{MLWz%f#HKK(u6fML*k>MrUZlX@qrlK808s>!EU(&xRW{Kme-=lRn+P)&%~ zghtm!v}OT)6|fKE0z%Rjv}hR+Z8mLdx29#Aw(s@dg3~^!Mk|Z3(+oBW{p~Gm6zd{y zYOC^#G8TU^gN??)W3m|QhZE-&rD)Ci46|Tu!NB>@>fodzMM2qJg#3*)0*xrw+Thv# z@mY70GM`;OJTB`_T!whPj?WulF{|~ zXh4G%S9Y?8Na&bNFI3#IgusTNe&LzOO*cWut*1>iPQnGo^qKEv1bIu9GC*uy;tG8~ zB+>@HC2F2ZlL6>N$bcJxb_(^>^gPQ6DXoionvl{Wnp*E@;rSQ1rtRI&a8mjC_9#2P zs7wO~CZh{fUFLoTxwcGZXSytx>1q_q_&oFdH-0ObMe~3Cuh&y zW_DfZ%Uz zTwYYS73VFBIy7p^d7FkE=vj-#9qPB>ynPYB*RVP2d5YRMz|(dO=q7uaX7O>#R@_vG z3G&3jEo6@3PH{khw-&HGR%`eED~z?i$jZ@4f-Q_>i^%RZ%|!jt7X5vM8rLhZ75#lE z2US?jD@+`}$m;J>wuo6#Vg}p6P%BXJscEcoLCXT|_!I5Qk1D`9_oH(eOM4*79LhKH z-?f(!A^gHL5#uO;fG3u7o1TFXM6~|Ce7Vw1I|(_3UPbg9l0ywm?vqZC>6#FiXD9^_ zJ)uCMJ4ugC+X-B40r_}sMj|ZnErRAn6eI1oNZ-;0}qm~Yi_-N`ZgSrvl(0e9e1ZaCwV9$rd zwiM(QP?spZCrUbODrh-~A*A7Bg*m1(pPTdWVNTm>4MO}5#BT~-AHOQt&O$Gox}u6Z z+VU2IgE6HxUfd5syN=5&WlBf&w_kZ^myR{qjxjqHefX!UetVj|r1BBHSM3;s;~=D{ zc|7E99IWp&NSafQXnochHG!c?HyW_L=sUSFtTfq zf`dKAJ%@wDy4mv#xC6*yoUJC$mP@(J=y>c8jcNxTA3#}2c7EGS{%C%LL-H6StXa8>y1}J(i;s3 zVsr6+SF3S&7MX5q7)*nH_)+#KAXuPx3c}O4MokAOG(?%HJn&RLiO)>)5Jz9s5JnY7 zwCReW<$XIpCq_)^B|dku85jP;hgD;7xkn#1?J|00Xi$fKla-;)@2l3wTm*fjIj=8v z0E}G@c(8V9FWh7Cw>Zc7jM2SEYYY-2vf{2^1DsC=Iv$fQ>#mN*PctewO%{xRlGK-p zm}XVreXcvI*OZ+Cs!LkHcib?(XUgxWJj3IvE_#%q7UPh8`~)9Q%t!{y6F1O|4*x)j zxirkRW5HUI#`_Ybf-Ef_vV`+&^*jT(3KWWEfU(g7A|0)kb4zo}N^^73&xk4-B2k=3 zb5;OGph{9KK1$MWLK*63aUWz^cnB5UD3z1~5N3hi8#hlU)PgirQ)>lj=>?f->X$5d zA*;M#f$RQpj#!_6iNCg?`Xy&a)|pRg z+fAJ4Z;nzMvWa5(&V@Uji}`f=!b5t6O>_=lxNxDkcIi@C*;aKC=$JYJ?t`Zo2#MfA zH%gW_NLQYn@x-SiirX*qVCfucsI1w9jSBdhr#qA**eX%D!K9B=1=L8sW4e+O2MDnS z*9-@Q=C#T^Hl#{TaWl`X_)ilns73dUSuC~-tg!K+6VYBi2E*&sx;8Ohe86f~PVQ%B zG-3fQ=RXp$oOKw)cRBmNc@27~Ii|Liq5>tItQ*opK6Z_<4M)074%(2 zL_ciCbSaqdU0(R{;1mK?KnUPz7!u){RfP)in{6W@ICuqzir7DGbg+ zCb}0$f!|G>_4f;yGN8-ofQ4hX+#eNnIPUqV=i@fFVqO0kytIDzZsMl_tX-UVBZ@WW z>Jzm)_hLNxFHpj>e{A3zXKrNB&&ata{*eLz&F5_6Ovrn9ZRQa0TMQ&s8Zsq!_4Dwl zbvMd4XzL!g8W1cb&x&G9)(~s5wYs&)+QHi2I?g)Ry2`rKT51jG>+th1iS&Pp0+Y4s zT9MX4>#vQ|%xJ9Z`33MsMs87D^^Bs74jKJ3#%0XSSe3Ceqcr18Mp?$U8NX%(_ALrD zWrSoTXXw9U9)FCUBKYRzYgnb0O3Fp%k>*#t^CvJ;;A#qP0S6=@o^;*&{ThP(OQ-{O~ zR@o*(BG^x&0ozuom-vM>7Lx=1>_mkqO6X3dsj?HG>`jYzs+CgJo%rVu(wnmD=1ff$ zoq47TM~9(u&7?jn?_jbc)GHd}V~ZFXl*|RM?p=81iFFZuVbq%<$GU}ivIJ(xCMh}r zfcJN+6i1-MzT+e^DIWl{+QRJEJn}l|R!r%F6t(sxyXDjFOX__28tcHsJ7PiHmoE(v zQC->o&@JN5AZ43+m-Q-U=h(IvQk@l{yxDHfH!9~RYy5ZGSzN_kbr^P*V4AJdm6W@N zcy@baVVJT2LkJB8y^{Cf64VKKZ4T<*B0bwEDxo6sgTn@#CTrD9BtkX4ErQ{2l z?}uN=y3lja#b}j3tc3cHes(^h!FLTt;fqBdEBdZzRMEGMMJSp?-phtHc@?*KUdGhA zddU<+G`f8yk~W5Dl%mJTdN}MsQrftiWqHs^*c`SH6-JQU6eKmMekk0m;4zK)Nl|+4 zJF7AOSTu|Bx6~_|AZ|{&UOQ3TO0UhTU9X06nts*A^~%v44y)e%!G`2y27S^mZa>+K6rC+8rNIYY7YP#YtE~SaD($43+6Ldc3 z+;mocp9Nu#+DWIlAH-@q?>)6WG^k{Nxc}B$Z~f8s5B>%d;*&3gleJ}qeA?K7Gr?x6 z=~ZNdn_?DLtelxx&-9dung!I=&3Y675~~~ z#UZhvpbb}>HQAZk`D9^r#q2cW~l zj3ks{pd$2=>}8Y^g0R4BA#j)B)1%PI4xmTA4yNXlR)5wnS}U3!+NV$J#Onu^?()~d zLSA?O*FHb#j$qF(*~YJa)6_SgE7&fs4joo)kslATMn{E09IyTDr zJ#&bT?C>b;U?%j>WYl`nB(nDU4tzp~ZpjwQW#%Xr4yoo2RUu0g?s*30k8(eQ&>{{7 zC`lrJA(j<#sT71DQo=Jblowul=jpQHfdNOE>6ry*2KcMautq&s9k}++k{z|Ue}3hu zeI}}CPtBfP!y-4R>dJps)ey&rspdIKWo4$g$C7K+rMSxLi0p0CHUWWk#nhTF!q1t^ z3dL$+*A&#mnL>PTrFsp#XG+EI=33gT_}$M<&+v8fJ=H^}#(r6;4$+3b0b0ppVIIfAv_*Y@CdzcOv)E983!c0=zO;(3qEu!3R`0Mh5) z^);)I!E)}MtB}*sjSiEZzeAYG*V~2s@PaBLp6IbcNiW(-JOcKLP#{V;0lFbsf_cdh znXXI}0kwI*ZNqJ|rVLvZ|J;^!WhJV4r}(vW#f5%BJapB~U87cqTDa1w?eI165s?Gb zKxM+7&orghC+$?WU3`98+z|t=sp{fipNm@m)13Rt_9e}7yP*NZ;g=>CHpQkfkwJl3 zTMAD$(>=e(%`7lF84O&Jn-%{5~61#o6j&)I`|uNs6f% zBGd1KlM@gTXo!i&^3S?MC91S6bn6!_sZdK>-+j{LlYyM_JTJ&@d1g)woC!rt)FK$AbKyp6r%c%z}K)O-1?oznqBJ`OlhVSF29{<>{p#3vICc+@*(u7GtLh6&53N!7>WAwi zw=up_Rd+AlC7-Vy)_0`BPfSl}ytY5rjxTTCttQgUjGvv8P_(oU$AN=B!qDfdHhOnQ znHoBns|wC-TpIX4dGJVwc&9m_jyz^IvivxL)Jy=Aqjc2^kCPftv8It%4?od4xn}aB zgcDIWUadVgry!$cufW{b%XrxBV0DlB-YXX|aPI4X4$Z;Yxu&1hLPbDRWKmBY7_nSt zEMc)Dhl!vZ%yry)pxgVvYmP9_Gsu1ziFPAog$Ib}0mzi%`4u!z&G0-+p>8__K+MZe zI6;3(`)*eM|wOlps~2$-_Wf^_^x&06dh;Bb}W&R^G09e%6| z%UC5wR_4}qQ-__XBCf1qTUp)DS}o&0@w5D=Pg^gR4=De7)s&_Du5LFCGbQ7{SBp$_ zH$(DnsA%iF3~qFcgB>oVH10$BS6z+YOGQ@M^LvY3zo$cZIYr@=`yeb0asE0EKiMOI zEHz^$?|%pC3438SkzEYCkA7flc{D+eF^rZ7{_VcV`t4_4MckUsVgSI2a@ON_*mI(# z7|C8G-PX+;`;}La*t_;u5}`Kc&`%1hC+@B-cx&ZTMAE z#?ljzn2EBorML!}ZY1*oU(B?t&CXjp+wA1a*^8nJg9>C7XDUWA8wOxrE*6%+cd7P`LEtXX~Pe@LruP4!RUz6^SVztfu2PY%gs zQddi^j5UqY*DGU7#(Jd$H@MRWo$H2M5EC2dT=HYRg20gSUZ@?Y6@)fmJ4J%5uvsHb zKrtgix5&UZv`mW)+cMVpr?ZeNop%&BTsnEs+;IP|GCthEClT-{P8oW+)}?PaPmB7k zIxp!~?Q;2MxUryh>`1*1q;a%qv_tj6v`ACW*n|55+_J~ms#`kKzqs*Wkj-A23p&xy z!_)BLDO1Fx0MeHqo(AY;enB2uxuhruyEW`PH8}9&^s)`&#)hrwTLWVMd?)lJRv;?G zO)WK`TX8WKkNuz`;{(MK_pcQx3wARCeLs)w= zkldeHyX@@Pc*TT13nTr%O#f(uxVb?b+@Ri)o$~4Ix}L(6;>hm;Slib9Dt(H+HtF`C zb9s-x)tEe7FY2f^Ft?Q}%sRFS%$_UUsR^4kAD9&q8myN6(Eo1KnT?^6f-Z;oh{CqR2xFioNZq-xr70Zg^lY>u!zTFzfgx)~3QF zZr<(kM89c40UxJ->^e6(u#qpF=REwofDWyDvi6sUb>&+8zg8{P*1erhj^!|+!A+>% zNe3OKo7OpkGcw)hCA~@Gh-7@sAS|B(=StXnCF5V*+(ZZN=Cex3QhJ!_Q4^ZHQ>Z0m z**!)2q?2GT$?-IpOiC^cl%~uIL73oZ$eocK2%57id78=5*OHKrlu)bgi&q5p-JHHT zyJ5eL@$Z3%B(>dh?71+h?omnx<>hld8FXMRuYdV!{GNxC=&-t-y2O3*6wS#qZ#vqWE3Kmn!`gITyfmoChV=D;{>_{98f8%<#VvJNlR>uNS-J1- z(zM@BR-Jr$6tZP}ce`N$p^Lg=_#3u!vTd($&GzH5pmU#v1<>K%tJ=hsX?yJ;kG#x! zb?nC%EUA00-HN6K?UMtl@0zjlgq10M_Kjd$d10N-sZl+@+59$-npS7=Uao#z+S3$O zu}@6!Yl3h{05Ut-raGoZrlz=u4ydK06J@0>LP`gemG&(w?O9gZw#?DS^X}edr6pyh zgUYBqXzP&DVhT<;I(a?|HuO}_vuPovPnVTG6;isWtaN5b=`&@eb3#g&mX*#8DP3Mx zx*()<1!*<2yHshoEi=&oW^@@60gDrLHH0&0nd^n_@-_Q=d2J`M}*QyQt9}KQD zuF{(kYDL7EN@MCgc%>$*7I`X3`!bT{)*O@g@J`~0apA$m@E=%6q;qs63yyS-iDW^M z7ax6rb?Y)K#9Ej-p!|bzRmVk)tupTLxT<3hjtDmPbCAt^a_L zXX@j;V)@)}A}r8&SlX4~-xNDSLqO$fJib}&N)9EJ60X5pDNVd4Ti79C7@vsO(+!(6 zB}8|J9Dyd8Va5cOq(u2B2`Nvsm#l@m!rWb{j8H`eP)lS4Buk_{EfQ^$BGc##xIl#G z%A2aeiIrOS*}s0(PJWTs%c)zZZ|~d-7cR6>Rj#V$PUSVqYbYQ6RB+v)Xg9xP9qhqJL8AEx2G)1VNwWg1X4yy zi?Tyqo#@uee{fF7Rt~Aohl=_RzXyw}IvP#&MlE_QZ2Osxh^%a4Ygk;#E{jVBQw_20 zV{yr}qk-Nt(9#agB4G~5K6;9R9pUhr^z1!V$8X;9W`JsDajMd#{iL2%T%9kZ*-uWnSB3=sFRb4HN`OxNzp}3$+N|zx;eoX01p4UI>Ic1B* z3e;*WB1Hd(-RbBU=p>X*Bj$iU0O5gD{O^c~C3J$4pS*&t8Oh+B_}4nP1okCS}oSKZ*`CPEcP8~LWej+OaCwTjZ?A6h!x^B z79)%kBs<$-#-pp<8rGkgo@YnYknFtzQskhFqsQktZm~KC4=b4+{ry{24xGQ}X@9Kw z>8II^VUra9+^S|iQSIDna4gLi@KbLpN6a&^Vk^y!z>4*2k!*-NF(;XG&4uP-GwwuH zD1qX0j}9(hqg%vE0rf_B4Hsq$wkBC~t#oY~;y-8zOe+Pxt3Ww&YR18zS;OsO=?cdu z>K$dyY<9DRu>ee4;HDqcAGIgU^W|z<%hgEQ(8U4%Dw1Tmra}b2uo|;Q?OS3XEux{+ zVh|*b#tLOi7p%q~S$P)}7@tq0A1s8*P2)*B{&;i7fuEJ(e~Uj)XdnNe%$~*Addv{h zIpjPzWHcmG$p4u`fVF{Gl2qu$r(}8KLM)O+*1iB1S=gd`fOzGV-t)DiW9BHztWjW+ z2DM*5!N}|QOl`&U%xE=(&jSY-(H>L~=miA3)^v!9{W>z$9Mxg*@a2oY!wM_luBh?q za=gcCRE|qA?$e8wTvPJMWK4uy5r5SMDD#RFI;`?VJ?%}{F9bID_oD4oaTPdz>jUu% zI!(v5zJ6U@{%|65u*D{&;y?KGIDC3AqP+>Ge!9k%O4|5*!)bQdWqs>Ri09~I)$K)g zB;rHd-VU0T+HrZ5koBOl;4XUw9jezz0~QcS12CrU-6$5jBy|0|{{^=1t+5OIwBb)S z>&z{`T-{dX*s=J?XU}YX%^tD#jJlj@O*`)BJHLv3e$TxxE9|C|nP*P$e}`$aCZY2W zGv!qLqz+K`Ktj37x}^VV?8C?uP{`h+?Lp^WND#VtR8~V3$R6HyAaydx8;@f8`Kr?ESfbntKXexuUoVOFDz{T zx}x?PfSabXPQqE+5X*M0@UbUN#}?p8D&R;xaU6Mw)CLD7MV4^Io-6@vIJ)s0Z;lI8 z!(I^gcSKI_#gghpYC&(~%+!@)YqgzXHCOgHn=zI-s^qL6^gFEuBXzJA^uusdmT^{+ z0Ex_Os?4z306Mm@30|~D;loFwZSEE06yYdXK!6flR##N3!qcxN_aFcsS%Ocl2hl0lN7fga9mLHGO6AJVKXTYt z?7XOl&-)WJQmf);b)dQn_BLcA?OWnejC~t4;z&{?9wjN)5h5#O30UGuZ4l9TIyF#9 zZK9WRpH3u1G$iXAqd-KGiXzD&D*zfLMftaha30$9<)Bb=vofY$UH=7S0$JCttACQ$sw|Gq6qIWM) zV>dqJZ?LiFkfj(gQEF`_4i>m0{|^3W*K`Jf`(xGpG0y`!+v`p#@~4LY@$;UzRV{MqKtDmt*W!G`aRxIuptV@ARksl}{>&Ci_rO2*fu=nY&kPMp7@F)nr zkbIx~RpWiqk&smBwJgXuvl-`&c|~Lh@&hb>evI?@YaggA)_+b>mq2xSx%2fKD*xbB zwngE6dm88VDn2K`)b=q{C*zF9hZ>1|xg0ls(7e1~+e&z0=* z?{Ncnz)kvJLeEt?z5WgsOu)Ct9HP%n7a+M;W0vQ<6!>X&e^m!oo0{Xk-t%? zA+OaqZlAL^2t}^Q&6`}B2@Z?=K{UkZ)ETJqF8X4foQscUVXWCa77GV5L0#^QM}-pd zi0ETB8k`>j-gh00gqawh?EWxdu)X4#kiMR&M6SwZ7iXi75r9iNcbg-1G)+De8?Ouu zR>Sr&zwPU<3<^R)+TlKGpRP~sv->N3`cK;*X$w);F?DCPy)0yns;(8~JJQkU`2@c= ze6p&&zPEG6ObpaIvu~(NV>HBBS&p-k4b3DM}sZ{4+7#f`5WuMM1P3+&M9Dw`wbk@EQJ#lx5HVTyaRHeCr( z3J<&@TOEs2q&ZKnQrEYb7+qcrg zy{~^=yzcVg5H$=^aNBdA4Ga>uHLmvUI^%%d#?^k^W*ms(wZ)m;n^#>@`8uZUthSE@ z<5<^Kn0E8p^@dGVwUhgX)Ezlp)!us1b)q?vN9=?%BMtC)ehbz$4mweLD)4d4vJ*9z z@kVGs4~7(bq6CSn4Muom3X?%w95D}ir3Ibw`S-u_GcTC$K=+3mhr3P*v^8t}5nCh1 zkX>_Z>+A!yM9pCS6zkNcs1+w`##V7(4OVyJoLlJY^r2RxiGYL0N#qlVHpH!i98vzV zFDbBrsqPoC!u(2zPXN9Gzk+(hQ=nNTdyMoI&3i*kknar@zvnswwHaT{diRdF!@9R< zJvJbeMd#nM`iVb3yZ{_UjM{H->(Q*JU&pZi*M{u`Y~b8p)~XF_QnyoQ`+ys}PICT< zgZJ$E1a{FK8fpU0+d{KJ{>#pA3s=yG7vZYp-b-ae*etPTx45}mY{*uASN4?mRrcJ& z->m_h{Y?DbVB_!loQ@&ayv-;?c!TNh0`E`Tg}8viCe)i%0h`B6ouKn=& zN^>AG0x$ibsz1KY|8&|;n*AETk3C zZVDBfQEUUSr5i=r$1IW+)vv1*Kb#0Ez$YvKWe( zhbX_NM3LrPjWc)_D|Fk9J`3=%IE+h>tC6Q8SHq+}G3!4RlU$TPipGsaVM$mTM*3A@ zeyoS6#e&4yb>e4nfPMZKtBrAGQ=Bh5&#_rz0q@Og(5V3vrf$ZX-1p+MCZBsT)&y#! zW$4EMzGdk=mNjHeoZmMUH``){XC=Oq-7kNDYQ>}cDkLAP_z0g;girBDHp8#2auIH=g-;1}gFnd)^B{<&)`B^j55_0QAsl^OGAz(opnsOL zc(o0kRF*GVWrN7J@ixQkv1;*fdw}}V>gTtVs_K!|n|B^z|EV!RQMQ!D3{cFNk;Bjl z)WlKPGk_HiQ?x8aGUXl*Kw!U$Ns%)+Jw;w<0Y@Z2ca-K1VL8Im zS?7M!;3}fAije?m@!}YN@{uoHev=>CJ&m@IHGrhu?rNwXgupwGpB=w!>{-Q z-{yebt*|6pc?lq6r*0-<{=`HC$n~nTM4Sm(avLzYHp$z8@|VDAfDoXI0`3B7C^U&m z>Yvm#;k|fqB#7;~D0*$I62_XceLHqM$G+jBrt(D$PP_sqz7}}Yc+&`d9g@wAbr{uk z1o-lhm&2mh+F5dst+MR2z>A6XoU#@xN2-Jd${V1NqSs+t^dK!kpfN(FAfF-?`UyvY zd5C~AELEOjKP8A$b!s&mJD;m37CyBHO(?5Y&TrypsZyg(9X6k>-OZN8az20ZoE@Am z8p3wx5(;n|Z1_I+$eAsh$gd-Pp^|10Gw-~ezv<^J+{>mY6X?!49|!)9>x&AH1r`Kjpha_8e_ zbtQx3sN!&W|W%M<1NRwYBYY_9Ii|oG^<_xfg@(~ z$)a_o%$zEfa&p<&rr8-O8C9jl{X2gKQimwU)muth0LD2OCB6bGi>N>RA=Jlc)zNusE+h7epbSg>|}>2HLe26ktrHYugJaEvnqC z`ItE>C}-XpiyB&C`XM&(!&kx%K|VHBUxsq?6jT3TB5#ui&%R-ySU`;h(Eal(i;9mfo7lbpv`hpM&fBXT+o z9e=w3H=F~!W;3JCBMab#EF%Fau{4x(%pyz}CZc>SkBzV(uo@sOmD z$c75%+ZGMq`=p{ao!ajCl7jk^yNx|#pKzcLSHd4&sqsXe#%&6_m>GYqaeLmad1TXe zyhl@TK+TF9m@(ZMvVi7lMeB35qDjZ-V!;R6BzeQQ0k;ey3&m3mz==^DK{jcgL3w!G zIN}5E;vrd!0jCLb8E}wx;3UFPEgeOXCY+n@ukxQ3ez^5bt7^7ZX6l*2>#`eGd>HnJ zn7{%T_IozcPi1P`rW2Oh4xP8~FJ3P!Z1xw6)A*oXFF4Dbf3wZ0yH#b^yvEtJN+xmb z+Ii9u_KFJiZ)DJ^6KfZJi_)?;s$&f6O4?oSUB&1jfEe!(fWvB%m4Ao?__*KXsY=B_ zW(0`DqG5}fa8_MTYdYI82<@)9`PScoek*nj>=hJg%je>o0$Vf-UHtXelb;I;>d{C1 z4IAoR)Zu^g&V+qMS&o@IM&>7?1La$_XZ!uZMhxhKCY59>+5vW0i2Vc@v1VyN7`u@X zALEJ7g}I|`dYBE#4{u-GD*YKEc9`BCpzG6VCW_3a^1W=m;Ldl9bDD~CvYI->c%lIGV=i9?Sd8QHp#5d*2G^s0&Cy2#u0G?rxK#4ixq_;$@Il6oYTi|@? zyol8VRD`R6+C=2=T=@#0K%vop*r6mySqgZ$O;)aW>Hr+kehD~H>RpjsMjbFR-2xT& zg~$ldbztf|aD;Dg#7wC>v{CZJM}AHh<$;zTU#qq)cl{x8mv?U|LnPr1?^yk=pRB&E z`oYr_BN@_?VkDh{23%izGWg4H;$C0r3X*h;9r*nkNAUMIqTk8h|vRNkTrb)1Wd(R06%jVT%HC8TCz`YDw%m z-Dn3>P=NB~{Cv_C>9XAos?G}0LTemEjbmWY4fe)YUr+*F6Hx0~58 zc8#qcq~5*5l2*6i`&qj${!!IyXISkyn(}vJ>PL9&C{fvXfO*^=A+^!)JOlUv z!5b1c>y7hc_$N{!6A@b0&Bs#67+ZBq zI)o8Dp)V{;#=VsD&YyQ7kgZgskQe?IuRsG!RmCGk)#q#eBfs0f z`8$dN>3tFTr9e7U`u1ORD3HB-&soS-9TN(h`BR86Mkh`2`wcUgQiL5ZMjy3!67f>QAf%+o{i zjx30f4RWXfdRG!aW3C}%TIvrJAAP1zoXmY!o@|=~Xd}8_ORl4X1*Glib4%H4Ph&Y5 z+epd8kcB-F{L@TW%EH3=rOzNy!Yun7fq_CuriCO5KSH^1gNh>N^|2rjg|Q9 zzVwmmLU$hU4{>9+s4uCs+(o6V0!%p_u@Y_Lyh7Nve zy&4(z`N-jr|=wulL9?A;KE`EM)3H>~15@*N$04QLd?_ zL{UDnMH<7kg3cYEePP92YP_LK_`OZ(EuCP19IAU4093R z3nnaztI6VPR}-J#uOn{Nx%^R5brx64&$e*}%EA8=y>B0@Dc%-BT#Z6&k}%9){~d|m z^F7OQ`5K}}#F*4s>JC`+u1=7$mdRLVD%>dQli+2w(iNe%jYp8Vv|MTkfp${#;C?!s zahFvNqZSPxx~@2&s>{+v?VMLzHnZ`dceag~{Ot8{ zHZ|ejv)Q87&plY+facu>p?CE!Zx#LeBk%X#RQs;-dYN3A`|XlS;?FJWkJyK)JElWb z#eGC$?u+K7<9wuwPgf3ig$0DBNAQz^(-1S`vRx5iR|sW#wdnwBcyf}u5QWx~3L7|( z0$CrBfjeS*#IbDU)of9kGx@1^f3O9LU;d8jKP4dMz0S{+h?~fr++s)rYaBd)S49PaxWe3L;3_dol> zY#cGNr3Lmuxfma`4K*a9xU?_W=E5%$Y;&duYn?65N4)WI=A&qvZ{A~Xm@PuEyMJ2D zr{G0ZyjAhQ{0(k~I!a7;XtIMk>B~5mzLbNI41zQECUw=%99~Rp{XO)y=}R}G}0NsJeh&@lr|=w!qU=D0QxZ7%*<-TG&c)ADsL@ZEGlix5M z;aGK6#Bj};e2E}#z$$srN#s6zh9BUxy-tRxR^K@ij`B?Kl;IEv?3j_sma-$AS$yMt zpZ;yLiEB56wOADE024mA?i=mvcMY|*>&OqY>$KxfUV7~t9dY8^O?ywN-nTJ=*D~KI z`7zSe%VCkzVji<+_XQJ;yXQMUo*yL+2vHgjs?C@EAQ!RvM|f}2v`@c^tR-&b2ex~% zlQ-kt{!qNiS`8h-m3YZ_75@?YrCzoH`>#lAfudmY{C!mOV=V^xYlac#WflM{NtOYY zMkh{Re~7IO#LWg`0nj45*}2_d`~9pZ(t3TA=Rq+KD$3PJP)s0DuC8tt@{A1jaMJ~N zz+>n+xO7q}YUdG7z9c|rWdX5Uf_P>+uA3rmnVE`m%XumBgKJ;Jgl+m`rKo&CX)A0) zhI8e_saneO2N`?!;8Vx?A<(zHytmS|^Eb8tm3R z0oz9nx|N-mn1y18g9LW~SZE!F3*aYARPXC0CdHY_CV4nL4GULz^byPa--iX=h z^_-3CiJOA}dD$~vT+eNAyU%S0J5t`qd4aVPM|o{k!`zB;aT9tDNj&outU1!O!-0Mh zZoA7TUF~C3`!J+rRVYFaK^RXAvPIfo4@HE4JLiV13ITVX2_XnqND&?%3kgXMK?L0E z2-Gr1xIUc_<>bKl0(38{$0?427J*2;qP|%VUf{=nhP4s5+I1B_is#q?2dh67O}S!= z+W-L6L(IA$PO#TROZws?;5VUF**o;*e8+j1w2HOjzT!kJc{*m%&P4MgSnugTe(6%Sz9yn-9|H??(` zWVO34fuwP5FqAYwjVC^r>~{6_>@kvsbiKq!xE?7%mHjN}g1EcDSt@?Nz@itB|G|H9 z!Vhsq=-#LL6h1!y642^pf%~wAk2&u1`39@Iux*JXWfD@6D&B8r;RV}?B zZbFULi7R^eLG6g7k+Tv);5@@UgVtOmzW>vFUkN<;N(uWEw7CEsd>mL$Fe((~r#=?P z~fG}@~ap^zp*uPEWany$9+r{X+ejZZ)$@?&q-yUr0;jp=;9RIIcSX%W4 z5C4ysLyCr44|rb@Elayb*Hr)CRgbL8>$2qHkPm2D@ldOR)zJ*Rehxo<1|CA3hCSya zOx%{NFYLr>(W`Hyx$0%Gfv0>hf-uOT?vQbV(uTH1;ULtt78WPYekO8uiRZHUyv84v zeJ6PDiG#bHs>?Q<_(5fGE2J4J_VNL3n{-r|I7yvEU{#m_zcpoWj2pmQfw$B|>SQ6U zjTm|75eBN!XA5o-=qIr$*YXdx}TNXa+RVu=E{QV5<3Kre?gO7d?toOuW zo!`J>pL%@=SryWP6whO^O*?X0EHn8b;zjY-MAJBEDnFN|lDSpmirtVquewFlh(X=b zw^j7bMBkGAn4CK5<*Fh9>+z}`A>oA1b0o$Q^I-=OQIt>83S1*WG*o#&t~R_)8RWqm`HWO3@33xE2tRsDJ*kGz=Ooq}?P+t3h_-(DK%=~;I6LoN>mDtZnBdZ7jwyp3} zXaBj3FrQaH!M>4PQ3oL+MEo-Vk#Je4Vxzh;{SbV_iy`c!N{}*<;t&|{fqj>T=6cD0 z2eZoJ2q*>5L@m^3Fp2`@(Qu|ThQzAfPV*WYuqQWKF<|g>b_FQumWMHr&(^%@>oqrZ zoxnr;I}W_fP?EDn3{ip_x8RH=Gu{b$0wqjpKX6K*se=QJDY1md$ZA7dLOjcaCd9MJ z6Z}S80eNtky*|-3P@OdQsAV}~{ds)T`Htdd$9I#@_fo26JAbM99{X72vX5Wo+CANl z6-UjJv62|mMu(rPlPrxZfdl2ED}20apV+<|t>X?X7^bY7-|bd1`cPox73RTSEYb{B%b`c9BIF0gImTM1(x8fUY5(EoqpuH@7OQhdJ-9nMu6ze4U)< zD>v*UZeCR^dzQdd+Hc`*6rgE8!RA?*&s9o z(s;sJ8o)VNZ)0~+> z6XNqtXsLqiB#9Uq=QPRr=w^$Z8W+mmrs(Wid~^4~?I*-fPluTkSfk%##;=XmBDNoh z$j`E2R&2nzc}F?~`^TT!GP-1(UxtB?;8!26-~HN*yb+Ykv^>f zC*J-QxM$;|fMW5Iy$2m*x5pi#Ih-%aMcB?5>S3q68C-=U~k&hu4Iy%GVN zzP>g%@A(?@&;WpK3$tALH0;JH*!BCH3`;H-(J<^~4phy=>fr79co{xku%TY%@}(Lf zaif}K4j-6dkDW?A2b6p}O=NM$+s?B1PE&i{yd6~_Zq`Mht?jCTNKG#n15@~|GQh=q zP?#;j`Ioeyf77n2GWC_xQl>1L&ths- zd7>pOJ5weqU)QRKVBaKRu9Do}V-MQn!GQw3NuLg-LZD+6`) z1qw{obOMt`@#zQ4Cx`hbiQRu-H*rcZcC*-#H|$)@n1eY2uqgk4;p!o_LhNZT9*T3Q zk*)IJCEAHnfSr_ASC-6WF|~7w&^Ux5M)%Zc&`pd{pD9JVLCBKC$!tKZ)=Q=%q7@S$ zZ6BbYJY$EEkdgKTB1@jzgk+GQdx{2u)Qw0GwuMO0MxkXZol=Ek<{BguF6EuN$uM5B z`=p5Ct{c;pUHslfaXaexyj|yPjK8^$&Fr|OEoYZ0>zIprl*#ZPDC?MDU{rjpYeW0P z9P?U^BSOIk?T(EVPfGqMk!-n3XYmTQ)Gpx2d#Sy+aGG9D!=9MBYXQ0Rh@Ti*Wu zuP9BHo~`|SP>{&KFo1ol4Y+xFxJc0k@ccFZDW0gQtUV*5jKxrgCiJ&N*#x3TIo0DUuars3B54ZjFfdU9wA;r zQ4^MX{4n57A0cahJc;G9LOeh~62IwzjXN;Yg?=Bob_2!X*kQp-xI9nLrxZ{Qn0`QY z;xD7a2A89Hpr>NWkScWHd%PO8I7%u}w@M6KkT?%F-X$Ni8SDVP6xdy$7fIFZKWt*6 z*k|)+gA&Ek%v=}vB{d^_ZOS@J$e!e7m482V{CyR9w1T=5bNEH&0MAKQ4k)>qgn|jo zNz@LgVfFFq&v#Vyqt{sXR$SRgR2^UOv+@9y>8Yl*Cd#>{>W6B`KSyvXjxZ!OITazy zR7z+%0=$kP0LOsrCwSE3dD5>XmX#*v9y^?PIuT&sq{Q6B!bCdQMErVanO8q~#}34U zOOe_2)GRwnV(}7$elmnUOM&M_141CaTvMUQ1+`lw8dSn#lyvd3y5or@%7lSu{^C0m zmjykWu%tPQdw1xZDkTHDKUJ0WPZZk&0pOanPF3P=C#n3(i|jz#gKvMtdCH9>)~%az zuq{yCsCKnn0Bsrl(a}qUtN>{l8RV5kAX?)|2A*UXPtx#2wnV4*q~J*k2?GEtpi*tF z#;`@`ghUe|tMek>fnyYiSHE;hPq`14d{Yl%9{tkOpc@^TDTKJC8e3R{5E76QbS?#t zw#+A^0_vK0ExuyLPqW3OMp7sq2$W>l`LIxfZDA z$LM{xB^*UVE|BYRsBQ#9k^fkAj=ECa0mu~bC8k}-<{pj;nyo+$KKS@!)a3(=>>1{P zclpopU+KTYAMXOsp&`rvIB3C6^y4lvwWJ#<&P@KT_%T}CvVWC+CF=W(FZ;6}&ffI* z7dJk?6UE|hU+no*psi(_`wJH?EK^!2WjqU`ot}4mthNAz5$VRZjXI#g1N5AN>9V=N zZH7V54R)ydIpF#eaTGvp5LHN-Yrqo?q=$#b$iOhm>JNv_T?FDKbU_oIHkl-J5nj%K zJA?3hzKl>+YB#N0rz%rN zuH(@M#e=zu`s`C?lk@YZRQ}DG#)Y~01IKW6lqedc>egIN#ckCBjB`ACF56|sR=-?n z5kI;e?`#fGDIU!YvL&^QARdenO!dWzBU2E}jsSU`K#{ z_5mb--JQ857aNN;+%S3eZu8x&lDb1*3F++q7gEgIpu&7;Y`_j4ODiBA%*;sFgG5Ge zt?-qfF4)+2IC7bP{brl9bMxr{l_hJOcWg7MSEs5IMsAGa$$Oap(~3HgXa8%Ou~y~Z zpKef8wRXSpiaMH|8K5dJ(OlI1P~bhZqo`wvJWEto2~^e+$bPC6Z{o10q+-R?K-%PD zIB8lL+jQ^Da|>i!`OILF{W|o(7j!q(of7RxgAiB4=dQdwB#4La5)~U(Tp1D^vYYYE znxggYFm`J!{p>hytJdUU<1iLCFL~If}Jc zypHLn)v$KrkTH*N$bYei^r4N7NM12Iq#2&-{{^oAgo5fRomX5n-7a29$A!(^)*A^_ zOocRsOxd~pO`BvErgmyGse6~4$-_7Em|fy8+}LQq@be8rUo2Yci`p#1OP@$0vpl8xRZRgUk~t;&Qkn|RV5W?QJJ3nsCD zGnjKSsFM1-Rjoy2Ie=Y3N6(|!Az73`YFGGo$)=&YF!0%w+h>W>{iV3vW2fUjii7N4 z83)sIl^z&gr|38G9A#2CLTjf7NSN944=JZ>8#e1`iOb@C%IY4>gA2YFKsSz@Y*H!il|{~_*8;B6|u$N&B8 zz0bM0gKHi$WUNdPjS7j9Bt#(Ax%vW=FiZeD!xgua(I9e>aBW`iY@i=y^KcJixI=}H7i?d*_- zrLn!enapZ3c%paJu~+tRHhr?k$*om+$a+4BBwUU~f0p>6(bW}fuv z^|x6Ob#n3R>Rwg<1H5c3EK^pi)YGd~YLL4y^&Cs-Xw>j6 zQzxu~QU#Upm}yW{w#4K;*+D(h)|Ml-82ykRKxB)szqvUcjm5W z^4{&MRE?&!GAhsI)HbzX`rNgrt#rOvsO%+2&rk<)9>4jqmu;y%*CFx8ka#6z-YvVF zmO1?crlWe6qkY_QJTjd%X>t}kCU-AMUwERe$Nmr;b)qC}U@tht+o7^K>4o^S6*Grz zQ4ME4U+`RJ=8ZAuH`V5e3Ewyo>+uI4SUI7ZHR+#O@2g>|))dQn?4KDQIj=Z{ldU^H zSY}6^7o3CdGf#h}lJ$(&ah}N|@LrAnrElmu7Zb1>_LIr4B#b$WzH#yfoK0$^G>bOE zCnYf*wPYe$Q=C^68;9}AcIwgS(7GyxUZg- zqU3zypwXZwa)Z93fYIR~>S z41|-ni5V^>A}_o4HRz`VWi06UBtp80^h}n?>i0@|l^3%m660{$HEK!D(p&xRO|ip~M>=#k^Gr#7 zumIlr_~;c4&043AsaWBnORu=AqLW|YukX(M;g@o0JI3uYD}SS&Z+6Ylv%8z-(0=B; z?fhWDt6#r2aE`2mrx#~8iG0s&^0wL5zs)8OVhHKgC#JSbchl0DPAgT_zP3~^b1nk}QrVZ%SPZ`%Q=2ATz1k0`&sjg*_ zl=@-fX|pq{>-BC;$oxF)q@7|7sqaj9eqMUoXHH($hwCnT{H<4hsnW>VcvEdj{e0}a zT=$PR=lt=AWewjt(47DD{t9Xu5!ZSr&#rDy)~n_FBvrq_7Q!BxgkO3HL;4^|b2vz4 z=sgj$%jvB-yxcJ7nMkQ*-T)hP($SRdLn55Seb>xW-ehKB`_h?JtO~06(L<{D&2@M0 zaW<%y%d8bguQkn+niJDbV)b-NWC7rd6WfFB$v)=zMMP#+Xl8(Z~nT z+pOtjdL<2DHrPiaUx2+e`ORSiR7dczteEqf8&HgGi>&O61 zc+{LO2|7z2OGwGkyH~IZBa$NXva>5?=mAGOQ&OYLM2n=ht9DJnB(Bf{s~u!~o2~k^ zvDw<`H%+;Aoz?Wz(q%XHe(bAdRWlgIp1xwm@Ug1vij0*0J#M{JJz!-VaMrdlP3QNY zUjOq6%f9R9VfJtHE+4E+_M=tAzIo&tC*ymX7$nzp{m{Y__7i^QxJ{M&m)g!ov!t}o zDb^Ni%in+6xw5Z~M4AVqbM2Y5d?y=^dUF2v5zW8_>9+FX`@6WJ~F2=jf#`{m2em zbye@f{l6M$zI;mQFHO~kQ}lj=N3R+91mq-`(@bAF-N6|DzCbmmG=C!yR@Qh zu1{4H4n1@8J-R*Z>3nWqO@6K>Z4$e?R82}HNHr!Co2akZk*Yd&ju>4eK}OL{5?TS=Z-T@k8yMj(YyLneHE`NV1W&A&V?PsEQ8$_y2S4K5xuDL%l1CP!aE`nig? zH72t*bYmOUluj zg7W=j{ryAEaDCrY?x`2Ew^hK;l);i#%Pp{ukfU#4bjmh$uihYmstvi!v<01W5hraX zx=)xuVg`?-S@a$nj2WCs#GwbJsOr@jd6i)WHrZC6oO^DU!Kqcg9NI9a&4n*Fo#5&nCjafJDApQrH#zO^`wpOoZuX+JA2GWKbhx> zuN=t1W$&2zl(dqbJ0s-#D=7~)E73?n)0#G({>Au={n%U|HyNT*@6ank;1E0tp!8m6=}w{1K9!MA6< zQe})2zcXT0xNA)RC!BcRrwu=;sp{1E#a`+>YuektDeZ55(5&G|%f9ibV=rCw};B1xMp0ZtI@aPYd0%GlMS>|`V+(lQyT%qm8vND>w5X*)6>NsolL zv%dZKA?KHe)-}vM-MR8Kd*W$M@6#8W`%0^r`xdEMhYmRf)aZ?Fk@?MH#`tL1MbO2#%p8&RJlUaHZCA5_X+1Z7y{L3hY?VCvis&*-F2W z?nV1&+Jr|8Gk=6lj@p?I+aa@C)k_CF{X|;R?;Czo>(wT&wo>G1nk=l7YgSzo zo?$cZ`Q3|N|4~(Ne*ckNq|0!Ty*#CZ*;H0fb8=Z%b+PKeDqJmGZ7w3|G&#e}$KIWU zJy!h*c6ohHWO@?L@{}_}iqnmKC!km{3H!&CGeYb+3<{p%Q>>PRvxZ%k0v<=O7@z~Q z>lnq!sv1K?62bW;nG#~XrCw7nod_$Ek+RmqV#dgJ^?*vp?+tKTv3t!5o^ui;{fv9m zr_gliH5&G^l(Tt$iZ7o^>g+&1I=UA5_+>v1dn^k@kH^mN%H?C96Vje;e0l=x%re-S zA@&F(1~yV)#I#yW?>Pg%&1sG=(fqdb_;pt&XzI!${6>75U|Y8)VUIQL1si=bO(>d# z(>X=B^e9euN1uRVxg_k%Q-n(odxZNk*wsCI3g4d|BXO$ZZsZ%8qV?Za^E*eKjQ)N5 z(@D8x`3`hmt(QVn$Z(rpIio8?AD__-T3DO*p16zi`{zI zb5z9y-ytWB%3zBHd)OoBTy-#fsf5_4#Io9ZQt3yA?jl{zv;A_mOYjo6Pg zHRngjHw^;^_{`bAzjji;!6zV<`k+A@J{pO%C@R-JPK>{dzGMpXH< zqsH{s$5U>Tgj+r0hPZPsbdTerbrNnyLXJiHPP3`_Wy5#vlM zYAr1?SZ9S;cJJt`9+r3|W2w6dX`be^vI^~fJn!y%r7qelwPDsuH7$utkXzK~IxZ}m zwkBzj0=pL6njvnAF;Jy(W*maYzTWWh1+Su#4q2xo#^^$QlrylN{ z%R_q&am(7( z4hN6}@8n^NMG0-nbzxYpkaCS=%9>XXcf>84S6aBbv8?)@mR7RRtE1-i8qMoig^325 z*B(ZAt?W^BHMXWG*imD|nVKS5j9Q#?SiV%a2J~g_LKi(-Ph=q#VQp;wz3u{tPM4ye%wONLhO!dN0$QLH2T@ z;u^&FH+Ze9o`NZ!UgF|lpi18aTlVQ2ooZn`D?6I#l`+_y$(*(t`gAG+{=`U0cI|31 z&_!CehGe-J`=}9RH@o&{oGD3FnlZAg_8k>kj;|1Hds4fqov#`)X3nXO{j#%!Y+*%J zjl;RG?PJ%uxOaP7RhxOr=&PR_rm8zXMzS~$yS`bE+(EiC$okFh&3xu_sZE;2<}x8i zv?wJB7M|*xHhj}Y=HSRTCn`xBDGBpUvnyAXc{SO!^(CuzYc|D8%9vzvVp3xcByGJg zt#RGP%z~o7eR`NN=iBV|VPE_NWpCC#%6N(_yQmT5S4ed;=*4_dgp|^Ryh}60MbK_t zT1Gf;Mecp=*)O6gs?PpLGon_cW7{r+)16%@s^Slyt*g{GVpdU3<$DJ;8v4dXwW8%Z zmXX}hrp-8<>yyV8EHOJbtk=4|GB4_^UjN3lH@sc?cc<>BSNXvn^@XwrHEh%20_n>S zAX=)Maz6Hi$H(i9RllqAgPIbKfdroaG_h-4uV`yD_DP9)r6CG^1NJPnD+!Ofv zR>XHDQDrnWm`+O;`7L{wy`MZ11{p-f_OfUp)OaP-MjMOOnL(+J>veeTuy`b|9Uk2v z^hja*p3LX6l+#1XGmXOuK10fW?~L8|i8HiE@+i+77)l_d97M!kPe~$TkLOuxhU#$~ z&%R&wDU05Oa*8oa*$KUcw6&JW0aU}=EyLT@4R%7-{xI-$+K~oMLF-)HTU}eHFX)9Q za;cKONF=P8kC>gBaDvS1(tYlvG^;mwl+x%}-^cif%$~P4mgaRer<^*yOcj5)G{4mP z__WeHJ2EG5oOADifAk5WR9IeNs z)sXA#X5Ls_GiGBn%WWpJF`6;Cu70!D%~*whZ8OqSNk_yoVwcDoXE&;(cj{o5n=&Jv zl4336=_NC+=SGoOZm4G{B<5&X3wpfNa74M#`Cs-)PNr4ywSzCL|G9Q%=`HrCYhSx- zO|N^}s7KkLs6wv~Zf{rh!k$4}aKmNwRqYkcXQ*-%LnaFzx%yn&yoU)NbDR zoX+?#&#I(ec~&*U$T@+%>ND2C7JFqwQQxYlvF(nx*T5%T$4)w@vJG8Rc2pG$oKCAB zdPgmMu`l1c-4f=H4A36zQn2x0bXR>Z6UL@NKgFXgITercOy(dTPucfL9%Ws}Jjydi zA5Xc3?~y#p;u}56v(#pMBQYwYmcG~W=}FBJdQ!7$Cu&y6YtWmy&aoq>Mt<-p((`yr zO>thOkKvW~vw({FTwQ3qbzF&qz7|@FJg;*EEj(FrCViOq2*&{ZOon?DU)e0>erWgf zCEs67kWy4`ofSlal9?Ewvq)YZVUGJ~!UO73h;~wZxo}i~l^!XEq8H!KanEs!kK;DL z7TT9<@9NPW?cSB39p)&KdnJ*`%#ikI_tXUKu%{7V3+;~Dzk0N1x*sMa5z-DgpZ}dfuU00spi;@{W?vB5!*ijXV)QcMnCFW5AcM4aTKW2Z zDiPP}9*Ahi?=Q&cidh^ffI~)Cq^7y`+<2fJUDG7823Z z@j5=a+<#t9Kgag0wL0U_MpGYaj7snl4o?I_RAv^6iyb?tc1u}!aM2Nikl?hbiz0(@!L%|rHd!ymg2Mu&9^FMPb9BLK|@m``{S zK)EmiNPaW5__osRq7i=AmaM+!AC1gXHA>&%xzxZZS_)nsZLC=_<4(CtVMjLLTH>V>DvCSYy zsC)EUV_xrg^aWw;6!xTp{=An@l-`_2c_zD$gt@Jdau92Jl%+T4QJ#5ESgw$A&_@@_ zFQv2(DbH1pLiyPIVAGhMfPl7z_D^B|KgF19e2)fv{E&Kspognl(Y@L_I{5mYp5Q#} zht~2X$OdiJTUyHfJ#1q^!aB4SOMMOV(pbS>EkS5&D`=;!V+M66&F)Q^prY%@w!k{< zz1liFUS=5Yoq(4hQWjo5(AFWmU>#qDQVcl>V#x$@rA? zAtQwno#nJn#y9RUzSR<#f=@eFTMG2i=L}n5r*(#Gs*Ph0sJem=iaO@(?jR#)T zqb$<$D39(QQr2aWIu&HtJf6kVc$8WPwvl*{rgo<=CA7&DEB5|$k1*vfF7G9{$_ zmU@hFvJ+(V8ztukC4=ozf6FK#gYDyo)XC4uW3(^xc%Q4ThxcRY*N$aXPte~Q zN?d%|8n{1}KG`}wol6=0oEIY(5vw$mvts;n$jfvGgB|K+__QJGkt#PN5hN34%7wiq zc5y4a?8b`fY)w*ni@7u`0Vd%kD<`T%E}B#0ix-C_`Z=dO|MLx%W~(N%Q=(Nrm@uQp zoJiKuPVfD3PM1DG=jM`b#&}y^aS- zT4RCJRgzB+J#P@<-ATRPuf5|S58EhC*lQRM1~~|CL`ghvM<4rB?8)~@VP?f2QS$P= znl@pCcwPb~A2+POK`rwr%h;AjSw>X#xH8${%AUOuUvoZGMCn%LeEt5h>Wjqt!@f-r zS+OIt?L{aBemDW&zLaGrX}gy8`$C&`_S8^rA>{z~d9*z;r3;ktGt$nQyHuBe>(DO; zey;+3i@UT&Ci&PmQ4f5b=PYSiiHY@s&}p%sXWYU!Y;ZzBUPatQwWT4kl3s^9MBTGotl<+F0+f<0%JP z5XwEGbwk`ae0B^Djl>wD^M=yKwbfV!hyY5NL+k^f;*jB9&J8Fz=9%@kcE(JH}U6!MdUaUFwDAO-K z0p+0Q3T3lYbM0Y|aJz!->oDXaoLQlz_OZ5)A2i={jOWOo`gKFca!E4QJMiD8`Cj3b z()cdHi}v7x9b}R9*|tg8W7VA}zz%vs9=2Gu&_*LShcXE%2U$4}SFGB@oiiciIm8Vz z&Kg%s#N&B{@oYjOAvR;t9Xw6yGdwldYyC35cLJ`1R_a*nvFhpswr)#AB0=B7!gq|d$=R+3iTLrO}x{@<9ayO`kLlCPjfw1wM+1!+dttWX#d13bcy7^ zhj=GOCvOVn7uNG+-_#~r-N%)( z$#Khz*DqrqUp73;R*#EUV)v5kwM6ks(tfECiE``cTFM>t%{^?bz-t$EZLY6zX}jQJ#)=R(w1L`5xYe`` zc>ZnlIiU@N{w>+JvgisPJlvVsqHh5qZqVY0-?XAqI>D9F)k~Bv#MU)}4B;Qxi-oz^{IjQKq5bXjF}Ii++< z6Gj_%l@=yj&%*=lXZHN$w_4|E9eA>uaoO>*3cSY|?tXiy_U%hOs~H*M>L^C!5coU~ zS9Bn_QV-`P>@ma+yq(am=y`@Tu8ysbh`&w<-Ayz`#UY`>BjEF z`*h|^G~?$Iv0>X@q~9m`HS)Pej$|@Kde-^cgDlf;99ut>UKo4%?Y7Xc&et@+J(h+| zKU@h7$rZP??hkUsfv=DrwfD9J1-x`==@q^`eyq9hTKKVQQlczj3mjz^-Y{ zBWCoZ5PPn10Bk?L39*~Svb?;6w&2rr=~rt_j#bqY)Wfze^of+7bJ(E{w${S-u=JdB!dLmEL#ASa}E(QhO}q1%ls5^qf6&|4!W*fq4J2{!FUw~%s(8{_~}$pLcq zI^0R_L*is+iecG8qo?N1qcP)}<7otap#hX|j4q+{R>W2h>8#rTy!IGPgXdDh?jem( zyFm_ZfOB>-4ftrw4q2{u`nmQ1Uc@qIXsGot5(@I~UUVb%-@_f)niP!M`g-r>%7c5 zw`aiVRyMN~G+IGsDQPJg=_T1*_n7n&DVTcDRR2XRK3FYl%2kP+Qirkc^-3#q zD*Uv(Q!ltMNGSEaFmv?BcO;I8M=$h|qt&&It<&;j&T>M2VOtQ?-QhZtlt@M*Nh~ta zHwiTpSc1mYF{+0P3|bj{eH`H-2pp_PUBfhY2?r3Le_8N*7n zU?FzUTl26bN)l}BH&KtmmMVx)roqSZXlL>PO>{l_z$MoNe-p^zoD%I~FpJ;@sb3#B z=MkZ}?nIs+iC)0-7XI^2uETTk8s-Pl3whqsf8JU5TemPyb4j!_&)Ze?=#WDK|5WI# z*3Ub7_@#UF^Aeud(9b{j@w4>v-`ykDkm$GY>9u+vx|!}?T1g!mg*yt>k(sGkbu#@~ zn%-yW+?R-o!*C4RK4ciT?N z7O}_SZo8qz_M+VnjM4KD}6sufBzx(E%ZI#pt%;3I`Y{eE)*}X*J1sl76TJ|Vg?b6`gAqZYofbXMmxo{%y8j#} zyqwCHMUTWqmK)82GjDX8B^c5pN;*?ij?3fBn4~4nvSK-D ztt`ihHVJ2|(#~+Ca^or;WCE(qeqpS=V>F|_Xd8=t3 zS~F~vXtDNA= zdY#|&ePVV4o=MC3brq~T3tG47%t^Uf&%D{Hab~Kj30>$YMI;?W_PV9eZ#=Ot)tc4c zYme>CL(})#w{nt(5qVs{?HB)TofB`0XMK$%!b=8{Roe!*9mBkca2EIJ=Ozy zGht=b4-!+XBj^&2QR-Ukd66K~h&-(M^R1dj3eiU|{d@6hGc`9Q9yhAr3AhPj zC~w7tj3y%qN;>oM&=-dzXhB3ik08ifkLQj1b!8u)aBMD^?-XR_4Pr6I{R}93<9=P4 zkrvVpXLI;@e1A-_1K1wzvF1Xr&NDg})cIp6j#YmrDC+oEBoknJ+@^;VN3ca~I5Hjj zV)_IANVcY~*N%Anj!;NaRt>=cSpEt|FA5PpJ8J26Wedqr2HMKS69oB(va45E4>dBB zKq%dycQoGGtY#pusCXOf;2!H2bG^Qg>icHom~PUu_9F0=VnpCUY?t|VR^!M%?q1g% z&2ZZ@-;Oa5*8BvtpS6lj4w=Bi-WJ$Mbf+HWB-RrTYc5WdLfe>>BKS4-9pyZ8-f)GF z{d_|1VYK7tw^*xkx2#nG8(#~bZ>wQOl=7rI6J_NG&+$s~ocw(z&&6K<^EJ1gCq5f0 zzxeVWlJLZ#{DT#Tx*luJy?Xp#t(^0`qRgcAykb{lexlxlUNNA2D>5;)&;CqH^bF_Z z$VYZZv`62aQq95o??|aaKc=SUb3R)_HZlBK9JWuDf^lcgfTk)7aE|Ix^NYm0lh z48GWQ0>6cGak+VTT|M6nX0&^Z&={jtkwQ$R#P&utwpN6_iGyIzO<+Fy3hqu4rvRoA$eo zINs2lac`H8Y@(dpOF4V1GQSpE4%a{XwvY+7XA2|D{@8*q#n2YQ9)xcV(%pACD9t~*C7@0S_led&Y-LW5Wp(s)sy&jP zU+#IN(PVeS)jP*|B+tvtgBS5KjM(-2E9jquGcN)kX1_yZl~sLgpp8o{7er$Fk1w z-rk7agbPy0G#YV_I;%Y{2=Mhdrg)cx{Z@73)*)Rs$D@8uNIjHXg1YW|XpL{x)JGdz z5*knP?cOdLUW6s>p%-C|t`^P&JT3sf4scY-ZvY zMnN=V($kor;bd_7lBIG4G4c=Z(_QzRsbD z)X8%-^Rz_EWS_6|27h`|zcsYiFv?C~(~d?rrDPgSja?DLXlAsupYz|c?F4UW7_Ldj zOGZ0H^7vgT+&42O+ui-&-J9?lVTLFCo%@l~UFWNs8t3u56!npnBbMua=ybQ+(y}!* z27AxVb=sm?1`;M2WFKcD72TPALLpCiD% zxM^CMxaobny2MTXYU3}U-$a*ZUZhcCK5DoUBFK#BK4Ekc*q%q9XAh?q`q{9s?P=kU zDbub+Tc*4e&{m6B?^z|#d`LSZ#*XblyB4`UdYw-_sus1}7GQ_8@tEFz7e41NhSWc0 zj&98WKWsIjE@#HTrN{fVA@xsN{T5({)LRF2U#K&uY;8#W6WXry06&?!j01So?VMmY z1{GDGoVqE%PNv>YWBa@(s4p~jt8xK;GIg218uI>X$os<6HU!wo)V()7#E)sqXP!q@ z)hdu`GVk7ALE3%}q*x*K?EZfR*vY(myK{INE+=h=M|}YahIRpdGW8_h4@7?rsV}(3 z39yr?2fS+yxALf?VZBGdu^LW#i#NK6h7)@Qpkek3_*V_L_B6~Y+NrXNmN%Uueg+#_ zphx%GI8U(uX&;``C(_TyY5(O#lV5rGP@iWPC0aEdn~BB z3EGjt+EWSNc&gf=rwX}l9LqY@vrCWfS3>Ha8lR{-$5F2s`oTterxx*49`#S_gq|vy zy1#pl@ZK+FeMtQiV*xWSkL4Zez8@61EY_aNqy9;a&{HK-Z=TG1g8D)uTcw_ex<51D z>nn?=@~AJY8G5Q@>V6hqTbEt~dJ0w~o{HV9v`u1VfgObM4@Nh%?djRUyhA)yUC)lO zz~DFGyMp;L(wi$x5xZ>ZS(-IBVLM^2!uGA6-m^I)dNe=fzA_=_ImxS*Smh-{zKQD7S6+VOTBXsv9YdG54wL-AG{b_ z+GsDvo)Yo~aC)((cI`O`5Z65Dp`5yI8&j~F* zq|Uxkey&ZZzpC44kNPLZ?};`#nYte-3iZv}@;&OGbO1`5yI!XNH!aOueyJue1&5HX7>M^8ZmCwB=(9Wvp0q8~7=0A=>hJhgkl( zp5YAl7>~ACy~p=F z`+IqV61Jnf*ad3?*ddXWj1G9aWJN+iJT z>pU1;6E!``+9Lka7I7XHG1h*~qoJQ?YR$jq%!`n@=XpopB0getSVp1h+8wo}(7zV^ zNC)>tvi?vj9O0?9rC>ksfV{#6l|! z*H;B|cf8z%L}Ef4sWb`ekH!@{(Kg5qC$h^;ji|vXn9Yp4!aZoUfe4z60_u1mm_J<-rry=Hdh6_JiN$-~QDU{%$*xZ9_1_>I3D07GlQQGt9L}t_#byXx?~GkT z@0`kpv`R1R^N!H5f1kGDXy!e$yn|JuHJ|+9-dC<^S={hIZB?hnt4Gf&XH|G~+*Ow~ z8++4}_ILkuyz3cGRrzlG1?RSW`{=!vJ$B!sNt2E~*Yk`lD>7Dncx%L(D>;Ee=OtZs zy~B^uOl?zNndhL33ypE^I8G7DZp{&V*>B2679YCLQ^R>(k9s$iQE$n}+r)!tt{S_@ z&(v1I_?&>m`S>K@z_-AEM&lpy@vqa*r$9e>y>6C?#=*ZB{N@_}h=;EV ztdBzG1FP-xTU+6ywmXQ z2C7+uU!0}AHs1A4rSuzy+nr}9_4}I5&fj+DMW20E`nl6dJ#zb?+wFfTi5|R{HshF* z$cR1LC}vkO^I6EExKPrhL(r1PaI!UJwqgfBVrIaJ|IRBfY>|ZIo z)A{Aj*Bibz!kTev>EoStn=hA+FkfC|4m;#b!AZIwFn*7H9>YW60{{0sumSXydwMzX zUUM4G?q%kj;#}5buUh7utClTNU+wu(W**UgOhXD)gMF*@Ox8e~VRAu4qQ~I_kF13y z7F(sVK0&?;i|E#6rzgAOY%^8PrWX^a5IW-QsNRiR8>x4~d9dBK-VJ=!m(A|wfY$M) zE7U+|fpheuo1I_2UeR!QebuD?61&H*X7|!grI}{m(huw&i$3}Y8B(VV`(E0Ts};OkjQ zO^wsVuNj$a(sQNRYA1HVZ0UBWmWWcME5jfHDNiJYG-9H z=Sc94SAW)U#6PP20`-dO?WkK#4mB}MbCLPGDjj1!TUuUh=@M@w8osVf;wvzua6nH? zO!vTo+Mt=#C&B3xbmY*jL`^6c@W@Q1MzRM!M#HDDW*%6Ta{_6CMz);P+0MG){w2=N$BLbARIlL;Z_85k?)go1be4}&>zp>KkMp5gw@7{Le62b= zmq~1)XZ7lFX=e3e(?k;X`?}7YN^w{d?ly3Glp=;>-N_^h|+ELDVk?$`gXK}B-uchxFaSzyC zBFkCFbdtUw!FbV-$V%?3Ruz12x3}}D&!-7*^xuy%O6~iMu=@C`ZTubEWKPbdJ~q)^ zfE~`s33}v`X-wWPs;jz1g|n8zES*2@toLY2+INXFYi6B*w%=3rM?@OIiO!cB^X+M> zeUN7i8=JIX-(_z!C$b;>i!|rVbb-2`^$auSEn``yC+9Jnf={Lqxy z%b`=q(aRnSeR7O~Z~c&RLUudP_zRwR~HUek9O z#WUZIYy;oRFwQsExg`NV8eiy#_Fe_!Pw*e+ zh!_|3*S(-yc32Yn9eny76ZAv**9>-tl9N!ZW}1F~pZ*mI`e9}vk#+X+7DE4QpZ+5W z`e8PQSPE1WLPp1^yoUT_*$j8XItk*XaIuH5u?PPpb zQ2nY`P_<%ZRT4fsF4fV`p+Pf~{Q{wXzkY9`&b8KZ7^_}a$IfE5 z(A~FsME-IgXFayZ+`UL*)?+nidGZc<&|hJkkDXgiR`L#cJRfDq*=+DxW-mEkZtfOx z+DW_Eg*k2T%ftomN9Ox-o*KPTj}wV~NOmIIE0^<>&re(bxvg{NrN|*^e>nIV6Uw22 z&P}mSMEkW_iTsiFR8qhEwG#S-;g=(Spe<$>YwWqK{Y%byO6>|(V2jR^b|d4RugW{! zTx5{68yRK2Q1fy!wvd;!`_}vR7upueI}axBrUjkLwM|WNo=fgS^ZZ?Z53482>|yo3 zwOiA9ULx-l$vK^)xu3%xGhxmt%&z#eLuLMe-AYzn83Vy4yHevwP|`5F65u|M^%2v1 zl(m&@(Ipy;1Y|9TrlFr-qMy%mrlz#l_~-gs`dmN16FU1f{viK(19|RlI{IE)guZ7z zJKuYeLoReW>H7`3oPTh?P~U%}H4kyURyitbm7y=+%Ua^7`aZai{G#udYka+%1uM0q zvRc;1@2J0DslOkQdjIi?KPk{y*1@!J6O27SLR6P6E7VP;v1c-?I$YbR^E=5a#_90OE*bFtuU2Hq z3ihZ%626v`t?Dm+|A}4?kNv{iOylFk+jKus-sboCM6Ss;q~)A!gD0}7CHn2f;oFmK zOz&U8emzmy>jKFiV{I?W-_))X3<>{O9AXh$`hP&}+S8CQ&e#?;sWPmwp zJCXjSe<0bfMkgnZolVi_<4Jd{Y18(R@DM%I{=8;|D=vQKBxh&zwe53d$MMVgY3!bt zl!=6g#7W8Uz~*@(VebG=suX{}w-fL4@(b0i2I`_ctM_L*h31!I zUaeW#uJGp2hpMV6b2rs?+N$kmsKzVns+y{6)c$q3`XVLr?)*o4ePP)HuRq@38C{(Q zk# zpXiMCL)vkA71I97j065M=$*dBiY;ZA=kFna_qSqY$`Jo=ljwSc|F>l{HYWOi+ev>% z7&VyVKaY|jT<8CtVstVN`hS-<(o|dj?^L6zI^X|0jn=b||984ESdI7p&M^9M{_lnC z(m$GAJjbwx;U?o|#(o;G6L1@{OsDf#cfP%y=Obxx8qgyfMYf|Ae|6@`NUnXtU)`zi zhO=&HIJEBO^9C^c@av(#T|gILBu|CTUF6(H^4no$FdF;|PJd1FPVjGs1L3a~9C|#q z=X$PwCiiEQq1Q5`_wR4K1&$lQO#^ru!}SKL(UDrck-ks`nizaeJ|!yTtu(hleSo{ z!I~Ds9RZgo`llFGDJOjiys82r%||k^^d{_UsGv54&wKc984vMau_wYKd`{xOVwbxo z`Fz@ViO*M9d7zl3FdNKwjQ9D>;=eLJHx~2x75|m7l>dq~`QP%nod1e7*Q@wk!|GvW zz4NINHObeyXr)QwlMd~6xFH@KCdAYir&%UZJpI52@d|s`t=JPH3rk0wm z-ZMX16b=Mi;;&!fsQU;{6wOv}Vym?>ropXJR|J}a4( z_^fW$O}o6qyjE_`+~Kjd?P#e1!R)-8OFwnpoE&CTTfeW z^EuC&$LIUj$9#Umh@rB+w2-Z})LO&mT5A)ZzgT=N_?S_~S;v1uU-*$vvGb^cTYZP6z-0tq zeKCJ+qXsmgSJljDPQL3@a)B+VL9M7&;+@)(LpsA~Pp0Qgc3C)^`gtz1(>qc(hEo@( zV&MynY+}fT#wW(7#v&>C&F!Kg;xcRX8sL8qUoTWb5eAb*|PBmXN zUpA+iubFR{Gt8OhTjm_|ZS!4op83A{p}D~P*!+Y{{^#Zw<`VO3^BePfbGf;~TxG5? z*P83hJo86$lexu=ncK`A=1$Hqj+=$%9<#{YZStYP^|uCCS7FnG ztijeb))4Dj>pJUtYnXL|HQc(TqQ)vKO|pRxLg)u=hC z2U8D5C#SubIy0?a=C%8|hQi$E5z5x+Y^%X1~-2 z(krC3N$(PUE1H$DCu2`~&$KqFBcqGc$7kfHk56k8U0ShT+KZXn(q4=%XD-UdXe_!j zeSEYqV^2y(O5>DMQzoT!P3e&`k?Z7?uTl!jRnBZ%?yPb{GA5OqEN@KfA)n>mDz_=) zaCx(QTKVeb&&ZfizDGuW`J2l>kk+RBit_Oac7=&)Z7Q5v;fx9c`Rm2>o~eJzyDQeq zm{4&?#T^+Fq+H(r3U60fQ(?Jn zr;qXeXZB04Q09M^bp2l>5&j~8lVm7%E(8{zGSp4ke_}^`GjU#52WXVJP&aH)9bPFJ@(!!NkW!^OoJ<2AW2V- zBFpsgA}=X*M!r~>T+zqjiuHUs_RHKx{dy8l9K~;@@?Z89uEMh>_(=;t*`CblS@^;# z#0lNlxAGFB2fGsVZQf_hH7A-+81wPX zPZ&d7>n@LuN$9T3wL%(Y*!%NRImgA}4H-5lde`u`0V=pjP z;~@a|JoO>3(4 zf~se|WKB~ItQppus}uQx{v?tbBEewcFaGdJ_v(SAFc7c1?93ducRN z6YSP@YxNZC%G#=@StoghnoPFwBJ~XI%f;#iiJH`l5;dupBx+JG+x_eTYMR7O>J59a zeT|xKUu$2h-n56=!_-WPqtq;kqd05sJ^MX1Tk48SY;E*+<7%a|J%ydsg!cGcbBT~{>EFrSLeCEs>|FTRWE*hxm%zH zxHs_TmBeJb+;8|r4!_6)a}Aig)CKN#u-AgQ2h15@uGN^|g1H>bTrihvnjU5jn1x`z z3FdMnwF}Be*nhp0x0ZwN`tDwSu^qa*H3wI@J2X}ttaV^*KG)o<+R?ogeedl9rQgXZP#Hn6v=tI<@%sKe(j_W<7< z+~w=PenrFi#Lk|c_w(ywWN;W69DqtOzbJ;!BXCm6({kve9dH#k$Zsg?5qF>QkCw`Q zzS#$F`}lSr+n&`yieCatDftSntFXn&*i1TBy3zOn{jbKZirf`o7O@Xln(Aews@}kV zVn@N-OW>=7puIY8kMs5zZ!gijiQImJx6i;3t6I#roB8%Pba}*`sDD?^{e_ao__jOW z?uUaE)tho&6`l}G)SC%bvF7n}n;*`=Qx)HqP)$$oi{Uwc!HL0HyeZ2L?1 z5d0lT;%^CW6WX6a>1Teoh&a0k7IGD>^&q1X-Yb)S)F9rl$X$&G%7;!mboN1KFLa8; zU+}I>EP(n1?p1ihhn%1BG1IV_AF$iX=%kP8L5*IF2Fqhh74ej5c+kCg%M6~bhT?80 z7C^B8isH=%Q7;8oylN$IcZz2PcOkf&!QBk*W^gydaXN4AjJ02n6gy$Z$zE_HdP{i0 z%JB0c5k+NVkJNYO81Bcek5ab{d{dNqUk5L7n!8oCq`sZb{h2^Vxa;I@p$tpd186%L zg-Yaq8!_`pYT6*Y(5py%5mNfhU5_8Ggcn}ndxT}!;VO7ohy6W7{T>dr$Ef2sLUAh| z<{*A#0d;*9@_P@PTtV56P&Pa;RJF5nm$)++%J**0bR4!V@u*uZsv{qjT)5cN7~+fzJ_<`c6SY0r+%XC z%9LX_y#EX@Kf}ic_}B;^%iyDcyi___sWjfbQNO#a#qUPqbB*O!|CYZTJ%r>Jw)KX4YK%&IzEU9 zVUfEG&R7TT{>+;{=dG*=ce9a89&cFzWznukGapK8ptJ@GtD#Vg77Nj0JoF#s&_^}e zx@t%*pI=G5kxxzgjhg1QqbD zC#gM)Xf?m!`>%*WzUJ58pz&|w2C8va&e zWvj8ULs-}$JbE!T@*zCPLgo{FN=^L^>YKPH9>F8*;Me=WlIXFz&YVT*W%V}Rwl3{UaXYb+r49YMs>Vg`HukpMYg`Om0$d981+E0Hro01@-Zj7r+)o2u@|o;j8%NM9-3k`ztaYpK$_c0)!#X3L!d3=E@yM4l#2JMo&YV58s+R) zV}QGXan648Qn!=Y6SxfM1zZmF2Ce{Zbhnu|0XGA;03(1~fsw#%?p|{ga62#>xC0mm zj0f%k?gj1xCb)ad`+*052Z4!hq4^N-F!UdR&ZAr(<2s4!<6NKQH%|l40M7x>1IWdE z33vr~6?h$(4!jA>0%ijX+&1PiuE@z;32Z^5F<=|;EARac*aZ{-yMetxF?$j8aXVQ9 zff0=Mk8<}|l*Jmu^RfJWH-C@g`heTUf?w+ywEmpC&6>jVslbcCOW?wnHG}Khz=z;{ z1Wq>37IFU>*CoK${QW)OE#tf8Tz}xYn&&ydT3{2f1&9GVz}*St1ADpO4}LNDC0q}1 zJ;?PC*TY8kGl9 zfpnlEPzk64R0D{LZS2aXk6~k5b|at(&QI1OkCv<6NG+A+7LJ#Z#)HgGP`5x4;8 z%xqSf(RvZk6C18ijoogXLkoB=kyJ-_E46n!wRgL!iN|Wo^&EG*Io#b!Ev9D=Yy*m1 z^0PcEakp9nfE$5ZfM?w8)|;H@Hw%~z%;njqZoc)EyVWM%u)6?Vfu8Pm8+>v*XVLFE zhc>Mvo^3sU|3phu6Q9$T>pAXP-n@=CujS2adGlJ{x{kN5>pI@Lj<>GmP3w5m zKHjvBH?8AM>v+>T-n5oCts{yWhMX7zzvnZU7blJAj=)J`e{Afj#biEN{Qv z7U1*-eBDs(0b3YfshF8(wXu4zKE$;DWOu|BDMQO2P5m})UB=59D>DABI6m{M$`@DJ zR<)%1keU-~b*TMDoj!Hb>Q1d&a?*$O8rRFKceFvTlP912VWaOGpWJw6<5i81Hpysm z7H?=l#B(_@>>$pWdxQLym;3*kY}NO~KlpV#G@4A5elj4h17DX;f2;atWbCtm=9!g{~53ZSPkR= zYk@7mUMxEWC=a9p?07M5&7?brGd5qSQr{ zx``OFK!`(^CvC|w6 z+ymST+y^WJegIawJMqdp@y0vxx;ycdJMoe`@k%@KN;~mNJMl_8@k%@KN;~mNJMlz2 z#opXUjmn$=J_;BE+zpK5nbgH1>S7Ufv52}@L|rVRE*4Q2i>Ql5)Wss|Vi9$*h`Lxr zT`Zz57Eu?AsEbAPexhVOQh|ZQE!P0jx2y$>B(A;7Vtf=99RMT1-JcyVZf6Bzp*|Ckc#y)uo?J;Qoxf9Pc}T+@MND1GzOXi@MWJ0 zz?0nyXal@QnWWTlN*$-vaY`Mh)Nx83r_^yu9jDZBN*$-vaY`Mh)Nx83r_^yu9jDZB zN*$-vaY`Mh)Nx83r_^yu9jDZBN*$-vaY`Mh)Nx83r_^yu9jDZBN*$-vaY`Mh)Nx83 zr_^yu9jDZBN*$-vaY`Mh)Nx83r_^yu9jDZBN*$-vaY`Mh)Nx83r_^yu9jDZBN*$-v zaY`Mh)Nw{;o6shn=jPEeZ6F%VCmPH*Hq#eKbMuMX@`>8=iQ4js+VY9o@`>8=iQ4jM zu{IE0rHMRt=9%3n|$k8{+`RsHfeir`@Qh-KeMCC}j?%%%PMylro1>=1|HUN|{3m zb0}dBCCs5@Ig~1glH^c=95~N`^Bg$Nf#V!F&Vl0`IL?9N95~K_;~Y57f#V!F&Vl0` zc9QMx#_+;1yl@OJ95b$<-_r-^OCP5n*DHB;HF3j0_g8BDuXyMf9y(^c#gnpVNc?|A<&*@ zXLIe!^%4O7@cJ>lehjZ4!|TWJ`Z2tI46h$E?{>ezuWrPzZp5!{H17rO111nR-48qf zJP1s5f5kifN-Ghgm59+w#AqdAv=T8|i5RU!j8-B>D-olWh|x;KXeDB_5;0ndnE4g& zq0HvDz<0nh-thyl68IJRzX7{|0$?|=7btdrrFDr}Bi(O^y0==R-Hmw0Ux~W6;^#LK zb#JBRiCNF{{Z#H>;QAu>FM$Iu)->*?12edP8~A{~vw8k8*G1fa#@|bTulaj5*BoFi z@FU-E1U5l)3->XuJHXiqC5zGaY^3ek zNZYfKwr3-4&qmswjkG-*Y2{+Haxq%D812wTTDlk!@m3<@twh9I?X!V%0b*Su;;nf2 zU-9t2;^BX_(W`waa3wGlxB<8kySRh)W()1j7A&*`3oXGyOR&%qEV2ZPEXE>ZSY!-~ zEWsj6u*hO8vIL8aVT~nNV+qz+jMbH3VI^2r49hCPvP!V360E5NYbwE-N@&Bj(1vZH z4ckH+wuLrq3l>&_g_U4oC0JMq7FL2K6=O-oSW+>TRE#CXu%sB4RDvayU`ZudQVEt+ zf+dw;NhMfP36@lXC6!=FC0J4kmQ;czm0&H!SW7Y1QjE0}V=cv4OEK0G!&*wPlwzzT zhLsd!A;nlo306^pRm8B0609MHHN=CWmytEdcgC&zm+a0zfJa3$~pFb!A?`~Z*(Mq34Fs{lZ~@XSK#~PWu>dI+Ai)A8SbzizkYE8)D?n-m zNUZ>=6(F?&q*j2`3Xoa>QY%1e1xT#`sTCl#0DA=Dt-TZ;_*N%RU%+*3%Sr;tWZA&s6w8a)M()bTw9`ucdwJ$TDKc*{L_OY#*) zs`(J`KkP-|4fo&;_uvi5HyEi%wGeN&#~Q=mcXO2<##FA-%Xo=r($kp1^=;rCBaI$M z8a<9Qq+iIaxKuRY^*X-h@8q7xCTK|SBgSILI#!k|P+%=!X328m`2sc(udwYrNQDyv|{~ z&SAX7VW=H~+99Y(qC() z&Yq&vjole{&QlC!Tlt z4J<_i^NE@Ah-dPMXY$N%f$xAV?sT*<9c@fU8}re`d^9m1P0S~TEC03Dp1P#nb`tyMlSN3(&+2G_ed#97GfEqKRBIk&7mBwOudex*nXLfX(1+rROU) zy_e_MHJZpp6S-(27fs}%iCi?1izaf>L@t`hMH9JbVi}s4fhKa%#0)f%izaf>!UD9g z04*#)3k%S~0<`chTF6BUxo9C5E##twT(mF)EzCd*Gtk1jXyIM7@Ge?-7cCq_3-6+Z zT(nSx7G|J@gJ>ZaE#&GtF^%hVU@my?xC_w40yMDzP2{49Tr{x^O}vXH#0N>85Il>Be`fK_y4qa-f>nGS>Nxjs(YCk zCJ#(t05OZAAc!I^D=J1zfEdw7#l`TTju=;66N+NScyU!sNOIIw*L8!#6$$2ma7QsP zmtg{n^qmm~F>&ATIrmONp51-s{p0=T?f#tVy47{Nt52P(bNW>Euc(nHsS)YJ+S|i; z(ofbtEkVtEOwD{u&3sI)%w-1guw)fA5T^#>)IglxMS7M5JxhXi5vL}qsEI1LABXdC zI3I`eaX24`^Km#Ihx2hbABXdCI3K6iNx=CkI3I`eRd7BI=i_iVZf?S|x*4h>&h_DR z98SmKbQPSgg40#>JPEiOw^KOYldOWHaX1>Mr%52&aX1>Mw@J{qCg5ZoPR8kB67(*@ zxj3AQ)1xHlO%n7Z3FJ6V?~$PANYHB};8q-N#o<;JG8>00akvtPD{*{~yt^Zx4Qcso zfIBg`BX43c8T$mtx3b1DuM%p%@&B!J!x&iov0JI8+aZ>XF3;WU&ERY(N$p z(z4h9*J8+G0N3i%vM6scF=VkB&c)zd3|VY|YcaSML;f0&zlOB@HK*mT87{`)Vhs5U zkiP)=3y?onN+K;Kf6d5W1M=5^{58PQ7#xkk(fYLfHPb6J(knE=;aFP!n&ET|PRHPM z4EbyD?qCjMKAx6FS%(QvOCz3^Mrxpj8mOUnSnW;a_X7|X3bVuW@w_xLLp+}vsPUE) z|BU!b;$Lx;UZR=f7Dn(azFGXC%u3Ani#e8(){A3rs4vtH8cfjRHXBOaSZGaCQyvCwhQ@z4p-i4ge>Plq?B5pPZ--ke6fIgNO88mYn6<`&N5^E1<+ zJ4m||x*NI|dK_Zp#ykZ*11*M@LinGle>|jgdTRd9__k+ES>R-(NsqLZW5s$@eYk8=wGc zg1&<`L7Sm1(2vm1&{mLiJjg%}f~O9iI(UkgsnP8O?E>uv!ArbMjd+kyGwp9vT2pVN zhBr~8&D3VIXj^Kb32rvS&1SgS3^$wLW)mE2f^$u@8L?-YXfGS#TC>_Rv-$lx=~W!X zP7xbrHRt0{EhP3xN*gxu6iqxu6Hn2M%x^-*H>I^5@5ab=9wnEaq@Hgaa*^eF88eMIQ5z$2{aQ&m0e(0G$Yp zfqqBNa0|ytonsaB z7HNz5y%hSG_-gXUp;}06g?eOZ9qHdf8^{wtP0)AHCTKIX1^N;C8QSXQAxC-0Q66%X zhg^ttCzhR9b@U=$uG$r2kQuQp#&JBEG|G#73W`~lBcQUX)1Y|Sv*NSPf<^)EBP8`7&Ggb zok(fdQrcRixsDRoBF%M3a~&mL=QZl8S#- ze5-4b=sHTfmeQ`H9&3^4I!Y|#kZY0VI;6RdlCDFV*CEa8kmfq1xz29j4QnL6(?g+A z(6Px{B)SfXu0x{h+y$KHy55eId<`X+Qm>)ZYbo^_O1+j+uT7VFJ*8$I03$5JA@K~a zVl;)36H2^>61J9Z4W*M(iKln%HlJ)>4wSlw>{QH^T@=@ILk_ z$CY|FW*jj3{yW~m7|rHx>$%%{__GoIY=l1>;m<~RBQ1SBJlP0OHuB6HdFG8g^G5Ep zo@d<1tobomK4YPipb5MQL^y0^OcKwO4Z!f^F4;P1S-;)q+jcf<4uOJ=Nk4=N@~(vjCn2@GO8|0sIQ!6{E7ychE*? z6ZAc_g?H2+IQ|GFnFr~hq0lJkXhxu~f~p{{1HS_J6~M0meg*I=fL8&$3gA@$uL5`! zz@va3Xajr-;86gN0yl;?|8dZG;*5O5qW~TS%+?80=I+W9nVr`{Z_q+-&_Zt@&)q`n zZlQIz@Xf`xe$R2dL5lCQ)!!+;&Q?EXtBtjBeXNLE3`Y*(O)@`-}o%O`|!Typy_g$ozw((qxd7E_#>nE zBcn1d3wNU(JaAEblTmz=QNCg6?!CjYnR#lPd3QFDWyT-lxM?q36fay9Uu6_uWfWg! z6klbO@%kLRa5;G4a`3_dk>=$v!>Gyd4$TasCT18lF~g{d8AeUaFlwTPqWChS_%fsT zGNbr1qh@>K#H}8>sr=_Q=yr&?YSdbkT8mO^Q8NR25PBGT6q*VB5qbie1w9Qt3w0QC zPJ8R3)ZCi1w{DF^0;s_#HMoWvjHW$y(GDKF96WY8c3Xq`y848f00GSAoi2#`hkcj}92&n6Tx(=x8fVvK->wvlrsOx~b4yfyZx(=x8 zfVvK->wvlrXq5qV8BmV_Eis_30$O4~Jq6TFK-~n?O+YJ@9<7#E81R(2w8Q}32Jkk3 zw*kBj;B5eJ19%(I+5-3&z`p?AN$*z+S8Cx(E*kT6TF#l$il8k#RT)xu6Ld3_Kmw*f zNGZL4l-?idffhnF&>Cnh#0(*N{V2VDlwLo|9RltUwE0P!xWgvyAU@J2+UZ8xr_4_1 zLo$LP&t^yV>o z^BBE(jNUw^9^e|vRs#nXp>=D}vNdSg8lG$s+O@`=0F6m5;;9yK{Tk*yZNURpj~5GX zA*svtZq?kan!8nVw`%TI&E2ZGTQzs9=5E#8tr|bVk<7(E3OX7Z4UJ1yAdM04lw>Iq z89^c=NMr{Mv%k^k{Ce}BlJ!c z=#L8YM+N$$0{u~ebViWQ2+|orIwNKV#66MD2+|orIwMGD1nG<*oe`unf^S%@L$If;2~v<_OXpL7F4<6cy-|3iL_^dZhxrQh{EnK(ACF z=@BG7f}}_2DJqcmh-bRpDYMkF&MK(FO6|iJmf2oGa&>Z3l39*PEUM%u$%~SAu=5QS zUoRAr<3HGV|77F6!ow<0Z^+#LycM+PlT28}9(KJR`98tpz7lR{!*h||@Hw+FKik7= z+P3i&|4gn+PHRi}ml3(=f3_tz@E+B1>wy)y&4#_!X-h6nzMs54IVkxe&zDa*nWILA zeBQ%&qhnUQ$4q**ty`0G;Qeb`dFxJ|n%sl*X~_qY*~v-CbC~nqjo;%X^t#D^ybyEa zz2p%6=l;p@)YpG+?VJ2G`CpQf+VBK#cVqr|+qS(t$!C*w$Naj)7 z$^5INlzjXuIh~MP&UHFTsK{VyOa57o$^MKb$#EhC8k=qf@EH#;9ywO~Xx(_blC6Wp zra5$8TaGmnOD;@)i^LTspQ0Y5WfjoE(*FZ3C5Iek59rGb=Ih%G6|d9x+9 z^=i$tJb54~FG))4hUckm`*k~MJN0iOyjlDQTkE|#=5BA-B7^N)Yu@%0iFK5N&iOm% z``5n&b@<rLQn`f0bx-0A1`^Q0t9GRl?tuDHXN>NQDS0zIdB zKI(9~Q*`Tp+{3s2jc?=Fl9lvjvp6>BuMRaKTCVe^noIkPR65_1ZFlR`&Wv{r?|5M{ zrZ5ij(G7+gD&%YJUBM@C%=X@ouWtnDpit~}uMDJvqti$SeLO)r=&MKvJMkWPy0w2#gW9|%HB43wEK*aw3V^EIdkf@rWmhz4=+ z4rOmGCdXPm3g$4-=c>P zXD}9m4vuJOE z8q$*%^)fctE9_R=RhhP{5^YyKwO#F??aFAo%2n(oL)-eArqqM<@k)VGEX6-l=9hV8w6wj*Gr%9fSLS=u z>N2#|WooO-)K-_FXd-?5OPGz;S20EU_)}4pD=tA9DW=_C<&~JL&2?TWt@mcH z%uF>?$#a{zjqrAJJK-H*kT^5lOy^&MMB>a{<}TubN8-#qhVQr(m4sCZ%zeZKo5a!! zJU~evG!Jr@hs;C7A2tsYf5bdO{895L@ra2KpJ`?if6P2a{Er}-6w`M+NBL))*_7>h z&`pf?BS!lXqy31{e#B@$lCAwnruHLQ+K*&uKa!>WNEZFbn_QvFRB^S1hHvIg)I^ED zW!@sb$h=K_u~|%+mzX8+VX0Y49DgJ6cg#D)-vu9~RC}Uc+7tECo~W1hL}BfT!rBvs zwI|Bfo+w*;qHOJnvb875)}AO^d!l@LB1V!-0>4-p$XJXhfsWPe6&U7ldA$`krNC@5 zn}`c~N`cu-&(#~`tZ`mQ(6c-Pe%8sJ1w)H(kipP816->Kb^>S5v}bw+f~Q5Ev+dbl zrai}=OMIf8NdEKed3eo!XPLKRC)r8-_k0~IyTD#Ro(uUtGf(@(673U9wNEV5KCzTO z@%LQ+T6)HAg2_ex8|)3trURLayWGrJTOsINf<w+PxYypx$l87OKCj5$PY+v65Bq>uY9F)@dOht!_94C!d>GGQnSI1Q;+5M+ zEs|p+HsWQ_3qMKvEWRhrm%f+~JQ%{+b~aD(ynUXtbMPScpy?EtRst`*iXn`ZL8tK=OFNviVh(B#(u+- zu4d%1(AL-*?h<@%L*`El1vA+-|Eo;O%J|82r&Ju=Ph%oHJUdVNG-T3AR3uG}jHpSd^jKCTb(zOFCv9o!DY`?-F^cXT@v-^uMnd}p^a@m(Akjc!-B zEAidjZp3$YyAvPi1`>kM<7JDEBpm5RGLCu(Ue+>qDBlz3xx<)WS>{IZU2&c}oOzaI zqCve((V&zH{2nii29=T76Tm(!M~|N5b#vq0crSzRqGfdU6n6^gf{9pyW}V>e0IuAb z>wxaVbwKwa6qLj~(XZ$ogNI&hMzI)W7ya53eOG|45-r;k%W+qZqGiL3Htj_y znzgs;(J)_O4<+RQcD}4+&sJ@kq1v>YYSTQ`rbXz|5$IsirhFgGUXB($nlGqFvlpud z%~TEQRD))+=FWK1Phl@*O#d`=v)H5|)utt?O+%_pQ%Ig+Fbp4{BoDF|gW>roar}J5 zA7js9{Qplph3MKacI>Of1)-~0^=?S@Zl<@)dxwdd2-SGYON}f(E z+#+TTd_{_A;sURRJy-Q^rs~}ik8w(Dj%M|kf9Gu?E_QA)-$;H>d<(nve&Bn_Ox4Pn z;CUszOvV2!MmNjs85#j8-TZE#Jqo&4pk}}vw^8BGbC}*HEV)3xD)PbZA$F|D$NBN^j7nHC}f3$xr>0_9Y zW55v|PtKG5lS#SIzX;1fFvPm6*6*oWzq@Mvo~reGqV@ZGVY8PRKzO)8g0Z{Dc!jF< z!>Z}Ss_8RS(`TusFGth2>iA66@y=XtZe*P3CNzBri)3m{$kbrVb%S`W`>!8{!VHAl)g`C`jn1OY4^v?<2=O^ z<_U5>X`UoL%giGFlzEEy)8=X7&zNV3KWm;PE(m75Rexuy=FU`|ovAuItUBAN&JL^2 zcB-?(sO&lHy23m%xHMPVA2`$6anL6Tvhn8U)OapO2MawYj%sS$Njh127 zoAty6AuUfWfGo8DLTUkIsRhtOEdXCFfF5cA_-X<4Pz%5}KbRlTnq!&oQm7U{SS^4o z-eyiGMRb1;)$}Rto~7EoNcDP_y~tjKHj+1hEmT-$kmw%hURMhMmFnMTMj_ZZ|P&sZec&a=V$?ONDANl-n(K3vsa<%I%N#N8(~Vl-r+~ z)l{f9M7iC{?50AsB+3<(w@~ega=x0!6QWi{xnmELN;fA;&UXI!p8E&W> zO8fwK0O5h|K*EFEL4+gR2*QKi!Gt5RKeE*R2&w&%rS?Zi?T;+AKSJ(khemLt-DpCw zKeE;SC{p{Q#GU9)#O4^|#$e@)bz_N-bK{7MMUtr&Ns(G4CGK2zE-B}^^9U!oNrdM! zlgzjaWYkz~kt}zqyA+E@ERry9^b97MaJb3qh`oH2VlQ8%*vrrHzRw2svUne}uqXQR z_P-yPHlwi_{tI;T%e_B%w|g@{)SvCW)FHQzh0~K!)Bad3hw|=zvUfK4_g8o~FdOy( z?{V*W@8u4;4f?*Ax8^9Be8}mC_w!CVZ0t$> zyc>=?;n;rO+~W^9xu3UU>j8XD4(bDoy24? z>u>mf>S=rn}-#X${E5-QHHl} zZ)~q4z{)utl=MsR1>WM_?LFc><;@4zL2?$s-F)n{U9jJVV}~7y)pZ762V4p&`c&^8 zY^JBZ1>irY@^-_vDaZC3h!uA*2-9P+ye5I;eyw+_cQ2OJGu{iJMWpg(P!qlJ#tg#N z8;Mmn4*TqUzW2J$yN!7#Gr>}?1XDVdHLItPQ19noi(vb;dzrUJl{>~VtC1=7rV*lbt#-Q<(!FbO4mY)e2%+b z!&@g`a^=PD&Mt<{t>tcBM zpncunF7IkM*hTqo*TNxgDgW(SxS#ug|8^}L>X!50u7&%%&-riH!UNnl{I?6?6(SpJ zyB4A^M8B})6}#16-83vEwCILn`e!+t!P}YSO@%!)E?P(M$0Q7CSf-(j(&DqwP_8bh z{1SH8P}ZXG>Gvg+5nf+M*nE0oiOU+`!|c-VYu(PyY07EJ4d?EWdsgnPxv%6d&0Uon zVL<{(yrSnq%9Z}0;@;Wzos z{&%bjv57SyHv8ZETl^pVAN`+L8{!v#tE>&-zGAgpi$N7KVb+JpV0DNr)7=a-c_yDV zB6^sftPxRSN==z5H@!_?)5rW|em1|DttM$%j)H|HEbg6<4cl%u!)Dqn+udf{9Gh$N zY`!h9g|^7{usv8jj97jyH?lZT-t#sAybGOR$ za$lNU7c)gB$9-Y4O(Au;8j0)b>J7JHyZrz48~)#}-_YI~ukilTm9}VpwgYL2KZ^9U zwl+U$Je8tPke}_gx{j^1QwuDi^>wwy9sj>-bN@FjF4f-N(bn>@v=e%l6&>4@wkT~k zrZnAhe(KP6iqoyG{@l8I^SGiE;JXJ|2C8HZe3z7H5KMEGsRqPt}s_Jnsv3g#{Aw~ zYp%o7^#^lrFR+q`H)ecPw^kE#6R?<`P!_;6I6@WrvVSodb0sf4&UCJ z&G9>2%K_&XkDv|^@x%>L0nj+f&}`*%DK3mF+$fmfi$9l^WcXx{ryai`&5 zKFeLCIxvjx+LO1a)3M#}OzTqV$-vS@GxZ|$sfCn|mGo;mq#xfQ{p|L1Q`sS1*0f1q z$3E5}eNcz=$2+8#wx_!?G`P?E*#fSR(%Km;@z$63xGCxPi}$>r{aie$$N1;@H~9C{ zV!!n_qq7E^QPj~Lc=tXq-=K|pp=tJKotG($CQY+Xv4YD7b~A76gYm#$;%-7WEOy_7 zGD5vVyM*=$4GSF_njCs06b=0|+ygG<@^0G8>&KhX05h60%`wLk&Nasq&cpj*y!q~0 z!UcFm4DVAuZ}+#i#u(EiF9d3an=YyDF4Qkx$4=KB$C)|iB+1Ko2-jtVM6P>1;Q~fZ zpxSB;*@nr5ke$90= zB#pHj6tg$>wytb`Nt!Y-br?TPs$uq zC1=f5g!5cP@|fs$$}i=bV?^5K8fka)7~7Nb-%PlGF+aJs$j)QLI?B%b^4m?-T#rjG z^I@klf2!x7)HBuXWp+<#%9qi9J)CeJV~cX_LkL@C=Q}+sHJ+;f@8!2VJHGqY*p{}~ zj~eSBpJoavbIj$EZbSm-xe~(p?nc4|o$6;#Qs%fl2wZHx&kZM>?|w_zi5K`kCFcQzbMb#l&VvZ&;{{DW zxtk{EpaSgg{^*On@S}zBdhJIqw?Dowz8_AHS*AuSkK>K)1S|@fDR&0GG_fT1#4C3* zp1P^*d*jENhKFrB`#>y=yYY%WieGDA?_>6%@L1ma&_}d2(Nczyo|SE>hWj~Iq5H5nZAs2?ZJ$q{xZI3b};?Sj{b{gXS0jhm0a0)6ZfFr zhQQsF6*w9Xq}Y7zSIB0L%x-3PBW1H#iKBhiENr{}B*wi)n7z$DW{}y}9B77{-*h-z zOl_5?eFLR+t2!y?h4Lk@V}IYL9SBHb=pfH z_vn01YAU01naqf`e;_?RYaOzSS2x8$%P+CC#_DgeoeUhk-oKvHD|}gpvh{wlwm`J) zmmz1C8H{I_bwkY%v!5Ai_BRI@X=OfTmTx**|7noEe6F_AkNMU9=l&P|D*sFWEB|XV ilGPv&F^8IiU7Xzcou0K9PurX8V3nIn?99hq+5Z8;ywPm{ diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Italic.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Italic.ttf deleted file mode 100755 index ff6046d5bfa7cd4498ad4a549d2d9028f6c73372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161484 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
  • 2a-ytx-(Y1%*Q`;e(V?9Smc22g?_xG~I&%zq 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≀A#j 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%0AHUW;|^l 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 NB=zG+r1ji${|`g+Rr~+| diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Regular.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Regular.ttf deleted file mode 100755 index 8c082c8de090865264d37594e396c4d6c0099fe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162876 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 diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Thin.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Thin.ttf deleted file mode 100755 index d69555029c3e184189c6cf9961c9cb21205bda96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163132 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 B#Bu-t diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-ThinItalic.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-ThinItalic.ttf deleted file mode 100755 index 07172ff666ad2d590e29324165b6c7b8e2be72ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168276 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%0Ay~d>kvf8cPe?;(_E`Q zt3z@q6`$AaMs8QCyl9^iuoZ-vRh-USmPBXh<@r9MV>II&@2&a;`TZ11}RS z8w^(3wfua}IeS%ocsBj;WB4aIk`kfL>p_=#Z?KS_iYJq4N-&c(=h$nMw79jrSai?( zo^N(_rLO%>wwiw1kLr!2gg`nqvIZ*RQ^=WS<+Vw{=wzyd)&U-CjW>`#hVC8h{-QIV zYhPLVST|~5lr)N@$Asm9VZmqOcPGQLm~bTHRr7WJ{U9dbA7HmdR0tnT1d>V(D?@5a zDB(z-qt&N!(e2BqGA?I%L*fSU>6+)DgG12qZ~a~(Jy@&q6;+IdEm6#O^V~X!hWBx| znCie|;>LWB1wSoo7oz;nSlSsMI(ElFDkj^Mkl>Sijy6^lo&O@CKMWrbC=%G1Qid4f zG`_*}fY-Hs1omZy+e?4IJ>sB5KYT04h6-}{qfe%D!cCk5>?P+kI^%xS&`;!}DW}ct zt{zsr<0uo6X-Y`+Ihv+=)$*bv&9Wv8AFR(a%}+*RL`=0Nn(;_UIjV%J2!kc_nu^M? zb5Z5EpZGlR`q}JGCkFcoq1Q04UN6fZfV;tWPw&{3e+lRM{a*IC4{XXm)n3a_u(S+L zpX-~qt;-&sVX2>BYaIR#V*ie~=;7m&Y&#YgNg;q3IG<>{dI%FM99HUcB#jmU^_J%9tv<|Y&OjR0(KgoZNPY5TI*6A<1P@Ta} zBKge;aXCo&v8+9jX%zAy`8Eo?5JxRmZ@rRh;`1T-?A8<69a-hkpezMFfpxbdb0{| zE=`QBHu*NC|zeKCzKIh1at>=%X>bdJpQh?%!@Oc=TN#X1l&mzr+tt1Mt=U=#*J;{y0M3w2edtJ)sIUf z*S1mDu7tXW!nzCD{5ubqheS?KwDRAIqD8LX%#)M@wEn)9-j!2-@_x^p?=yyo`$Wqw z?(Z^-k~y9~#-gGcrr%e4QHlzKbK5pviT5{bW}$DwrAJ~lC#@u^+Dsz9QN^m&?nzaD ziWaXvWi3(t3?H^pw!etZ-aA?amfpgQde*$4-hao0B_o@gW^X$V*Do zf^m(9em87%Y|y2}U4GZ+B&`pvJvSy}&2;r?8gJ7$+gEq=Vy2ds)QAe*le||aZFd7cwh8jtYI{Y_p&Xda5u17d8iH&LI z`R8v!-2&nbwPJGIR11X$Zr@7EXm6-NDDmFjCKA38Mp|%5f|tWT?S6!@rgNC(dEc)- zIdVi`{OHD*>0SG^|FbkB5j|S9p6QzBByZ2GU|C>$-$wWN{m3htxWMbaWAWu8v%fl| zAkUNIy8kjV4s7!q*Pl(Vu6`SR)8~9dR7>bm*y!I}TOV+CeHA_g-lG=LN0Mq$QAp)j zYi}$wNj(<~d}y?u)%Dz#N0x_ihZAZ2vxQDi6vc_!QqthkxVjl@ta85by3rbLEh;W? zkJ`j-8jDTB>HeB0HB9bG!v&mOZvTm#9Mk8)(^)XJUa>)-zP5ni-Og&$BKBI;{Sl8CRpQIo?Gr%%)mWh!Uw zO?zla)R-?RBoyS|80|ig;dC$Pb(z8FFuKHG&c&EGpGfF0+lmUW z{y%0DbnBh5k=a2vj@O}X!#ItMAjB#iH*($7wkaD93K+!W;t>i`jjNv04C&v?x(O^# zJgl{WKV@7AH;5B+)1M$sxU!VFUd8}#IIR#>Rhid_nBs24vlJ-SSJTgMsZuoaK5lm% zS$K>3SO6oW5eF#;_9}eYbH>)bm;59V$aoN!h?d5SxpG*Fagv}sZr;hm>XM$;H;pq{DWyGPhYE%eP@`m=T-5p&bswXpm&y-ekda^J~ zOf`j#iDyGN93GvyYZd6bbvpNNgd~r>dVhF^Dbj!n1pCEywxk!fl*iw)Wuf5V>`h~PGc54TSMGz42eL3h#YhRy7D5;SLBA=Bjh%^_0`9QRXoM1thX{Lv9+!c1+ILolPWzE z?lr!oo*>64t7N2d4*d>Qr8(~nf_E`3s1P))NR3RRFTZqsy4C!dfpuou*lgf!TE*VR zi;~HVPZoU)TJX1sKx=^NlvG}lt&_(h^0TikFzRuL{CiEV8-R5nnnoej+vpKgjrQCF z!8^+Bs6h0OEv4>Mbap9YiBWuNW(16k8)}|62u7lsQ2FS5g95VXHTitR1pSP@Ru_yW zdoTuEY5(^UvHRqM3b(&&mFg3Ma57@~x)6FvVr7>eO$BL&CrP*_8mcW#l$O^aiaR46Mt#IV zb?|k5dTa0HZk6Y*_&7_0%F7zMs(1Yu{Pj@aZ~qDnIy!plV&;4ou8F5b1f$g*ZR{EF z9%tFOIHj8v?gTrATR?L80(u;&(VQiLh^@j?1cyegNetx`H6f2cErp)N-_0!^y_SwT zMYwE_n746k3my)g3bl{84M9li0J;@jrv29R56DgBdK3{o^%i-Yk<;1)h7PoQ{)7W=`wZ2R{ z37!3zu??E}i~bk17JbC@D8qAF14e_4WNpH=iu*Q?Ed872F7GQr9@nFbP+4lP9vn^O ziwAA=E2cHLa&;fY@Zo`whxfrWFhyq$R6ZPIQvP`)qj}!NG2v~d7sRcsPRD09?ma(p zN2Q$Ih5{1OdWchy6M7AT2w|2fNa-?q6nUgIrAP*^P=yL|wR?9s9bMeS+zE&5CPE!z z9TF%I>>Obkh@>^6Ymp4ir{18HB^b+&o_N3AoSJWSKM)bWR5to}xsgf^2 zsw*wAcIMUT=`-lbD?HcTn_DXOiUvu!1L<8XCo~`v2_m!E<{9kREvJ9)-#2Ldy zdf$!f?kDwQa2RYr%0N={>XcC;sB5-98-M(#W?1$;#tU3;TT)6EUa=I$>V^}+`x90_ zer|UwmOq~22K7HtC0jfe@42I6AAmc=ZiFgv?`bm=BT-^1-P;B~4$lt*hXdk>q}-ol z2rQ1~yx-_E+G>2<5x8l>wjJEq*5PCGY3vH^62BXI&u? z1gnTwI&`?+m$r_fMytKH>to#5JG`KCL1QL#eg`41P$P^;kQO3Ah?e`AMQ;V27jP_; z-zR?>`3@!=;*xL?6QOt1?I2X6b$OUjneOEy*iJ}O-6jQrNB( ziPJLcAIx##*sPbsju{nlnm}S69VmFVJ~=ZO^qmL}IWN_U4Wn7=WE=-`DChkw;uh#? z;JxHy4;~D@lfeq{aU6g2sX2Y@G10CaJN}@4Dyc+650b${!6z1!r7J;skp1o0c@P-b zu`K{Tw~ddtyWHnqQk#2uFoADZ$R23uaH*E|5C%Or-B2X6iKM+2v@Yy0Yz93N1~!9r zf{!g|zkI4ez5R0Do9{%xx?U&~BrRKf0q9t@{qMF1aQ!r*!Pjc8r%~ggjtttLhWt() zu`TZ*ko9vBD-c6J=BH7P#f1N9w4yyYSvP1O3$f?TF3uI9fO=w982y4Xf5ISRn?~`p z?SZJH1Ju_zHz6=DFG0d!!Z<%SyCWb67B~C7GDdm={E$6_2du{_W{S&v5EHE+?@PqY zna-H#ag@E%V)H%AiND^Xk(97nekOH1ca>tl4#Mu$QQU(%LC()#O2OFGr6~ahVUWMQ zve-+wm=yOVK7-s0);k)Lt_#_?>8M*hS%eNzV5A40uLd*0`sYoxdIg6CssBB4%3z^uQV-)GfPTrFghqlo-jvYIIk0#m&D7*M?}j#Gpe=zz8&5d z*=EK&%Y+JDM&N2F9(fCS9W!p~_CTxrIcTTc$*T|4Mu)5b(cur~>>Wrpnd6i<%Qn36qn2ZR5B6 zENILP#nadI)}wlX3(fsZ!}7|hpReWj7IJ#|&MlIy?ogYk4NgWZEuUr7QwOo387!!+d=)W zv=EV}=Zx4`sUOuu&cmp<-I+~K~^hYMStZYP!}uN^lxuEd;xp|Yam z{G=BeTSzO_#JX1k%J$|?o$~4>S{Sw)%a+{^cSsyJp73C~aN0T!TzLiVHMEk0|}0DrHFZSvY4#M{r;%I!8cE{!eGw>OUPq1wojEU%z#_lxfpco{?7BuaTlB%g(M=OY-3?%f5i@ zUG_0n0i-!r2%$?&@cN`F(|2KOqe`oVG5K{np8FY*p<_fu%*4FUAfAq{CdE2lRusU- zj4jgleRPKGpZgoj6#d>vEm8O9&ekd&1V9(b`rIli6;;J>4VHdwtdi|Ll(V9(tAL8l z_(;}q=K{`Zm4 z1Enr$HH4=5wwGBe!k4ZdKVPEc&KVlv?sAbw_m~^qAI!`CFM&c#M7{!riWDnRs!X{G zm8#XMQ!lDflV&YiwTbDX={I25h%w_P#Lc+mvg>ZT<&L`&l4dPfv}8rvnspntY}>W( zz@ZaikvbLfgD-7EWs7PW7p+TM9ok#gN!SJGfnMknT08^5A;2(#(ily9w>J?4S-0C~=t3DP(8ynTb@U5bmk9NbAHp~44W+M3Fi)HEZS zP{#HyY*brOI z+X=W2I7xC6D@}LV`eT_^7{Bp#A+Vq)%CgJOzJ^0M;id-c$c5I5K^;tT9DTB#m{#2~ zX-(?q*qQvpv@FvG2Rj_>6P`S)GQ(?m5~90xaSnFd7!D7EOhK!JN=v<$Ef=#=QkE#6 z)}>1K zi?Yj|r&1y)#`NMfy5J1;sbaMt3EUu1Vn^l#9>4}Ncz`RAIir`oeOj93z2m^j#8^dq zPQ%hf7KQUXZxAS(Qo}O=X)t8z?-=@*TB~iL>R9Zrn!W*jGxy?a<&DRepKRl)c+t|V z3zlXwx48K_9o^8!&BAkeYmsje5P&YEMSWXzG6C@Vy}V6fkb3igoGxs(Nbe=9_hlAN z*uAJro2?IA=+?giy?;v@4-L?B@++z!zI$o{9-fM7f=-D<4NB!U)2HF-)8OO%ZtSfC z(fA50ua9rMu1Q|L7HEP~fA!#FEc@!P*T+qOzE)6%Eo%t|?WtN{(bjxMo9IA|k5li> z=nGt?i|H3T*7bBSM>{Svwxe$p2wgG9?&>Vq=}*6wx%&D6w9L1H1C1sX5Vvp^oz3#O ztBc+Uy>#A#_GGM1Svso^Yp4Gh0)^=JBO4bf{XT?kZEf21f6rlT_BA-S4W^7UXBJ&G zxMS=+gGVNQMj>B9(3OG-0Q)5cJCraU8Z_u?W&l6yxHQky{hl!jAW+l>Mgk3dGZxo9 zL_sCMn0a;rSTSJ3juQ{?a^c3u&r_}w_sNqyz=1+UiUqTo0T!(78Hl@SjSh%Ql|m2% zr|&L+0l{_SK)-Oqei>H(TyuOkif#5S7Ch9Nfe{&v`yzenZ6MgH*9+F~&zXB9V34Ql z7)CI@bag;EABqg$F?$1GonG``W78)^{sIxez>kRmx}g7kcp7G3;Wr3VUIma=zxyr) zuC~(|bG@yEcg6;a1L5C*kB0$Ou2d~;9*n^ROwPBEE`lIMs!{(u9RFdZ?vte-;{={~ z`8|$aL%|2Gf@5}jN3MyuF3*ki)xQtl+Fi#IiX;^;GL{(qyYjYqcT}vky=;O?Rm*LB zcmD7;wCm7mQr<6if<|0AjE1rIoN=;C^eRSy?#c(=D6 zK@=vq22lwj5Cg$=h&)5`AVv@ia06lmu><)Kha$KOaS|LuTm%V-o1h5dAxJ{JkAPx` z55y0oAOS^C0tr3><{%-EOrR8!r3mIB*#vhWId@G3Bo`zPSb+4|wE(Du6hh7#qzI%M zP-CR#5wH%a1!(|UAW`)Q*nl*GGz0CB78Pd`(h8E!MHi$41Y3~KX8IucuH9f8(gOkw z(o3)l=_BZeXwB?F;;s{505S=J6UY?7K4jV?wc;Q+fXtZe9rXg_GPtMc3gjA)S=Wi+ z0mu!4Q^-w%L&&XzaS`(Dqdo^*g1r0K?*V6sd_59ZD5zMny8ij<**pYLT)-nRzZLcm zL0N?|^O;n)T>Yr+=RoaqF<>NR$QD(zeX6m_j#_0&hT<}%1J(=$MYp=2Zt8@42(q1{&$t*La7Sq)g&!TAV%|9?LA`j29t$_;7U9~c{?`^*I`#Z7D z*XN$4bzVCCbf-HmR~;?fm9Y}rH#XbHxh7!&P#POPrn4#Tk_sVA_EF=Hfsx z*WQ5WNgas1W%QVNjSvSSBuN?u(cnuRO;Wb}x^)y{AviokHq;%YM&hnC#n@=8{>SEr z?kA4qD2j^jo!*Q$9}B1}+n;w~bFUB$#o&_}29#TEOl7L2PAY6>3_K?nr8f0OfRI~y z%v=*IBS^@)1|Qjg8B7C6m#3@w-x$AaI)~>CC6A2?+%+@ z-m~PSBDQP9i&1Wk6OV6xj;!3?W@jB{&Ox2so(dxphu3&|w2x9W2PsarZr&VHl26Zk zXLGmmtP`^JanS%Wsq%_GZzyHvj59mrPBeW~wnFuS;xr&B{%ZRs6qU+#FRe^adT@4S z<79dBCX+`#ozXiNI0sEcIMlsGtj|-ZRWX-7avG@&Z)Dh-Nn)P;@aDxUVnke#GIbJfJnx`xxvy_Q6JVofbrum7lDh>?Q zR~~a*rRqqo?_!mv{5SS2wJ-vkmGHkERAvn-)Xw?|i@kRTR-e$DpOa*oi z)v@E0Pbhyz|D4~V7*8Dzea7n|kcn?nNj*)ao=aCcS8_Y&Zqv%w+!49zh)(kq9{F@y zyS5LMGpDZ;WW{=xVQG_4OcD}8zrrMqfvi2{+3A?k^hK!_Y8+XQne$BL=*onfUF;f9 zRceDeM~|OfKOvgMTdy6We|8@E6IGK<&Z9h%i*va50I^uHf_Qxl=D_-zDUc(3p3H4NSW;s_9k5hPNA zL)P4C1;^ek*+QMNC%n?Va;tB|vh=BabWyCIH!CvI&E#PiJk|FTHS1%J4!E;gw`*$0 z`b_**ocAG6#;x)``Y%3tPT@~*gmm1&xNc5coc%{|w7RmoXh#va@YxdPV?{Gx2GURF zGMY@VOe(otLcA^{(l66V;Qsk(0-X=ANTRl-OKRz#LlE~>8(!t6D7kpJt!d?m90Rd@qP1i8h%Bg^e1!01S0*Kn(S=K>7Qa(rqINVH0J3_&>=bZ)0%Qp{XmNt{eG^Zn^(_^!>Z`k371Q zQ}PGc{*Xa5+0}(^_Vkg!`N*^+`~ z1Llcm8-4xaoB+2zVbAV(xR0%Ib5VSLg5pruYZVOeshs?<^vZ(5#Kfz0B(SSwnd8A- z<=_X-s<1F6MXv2fszE2CqG&K5!aMvlegGT7KK5Hius zhwctCALq<6$ zU9}xLTeNooA>P-r3j3;bI~YVD`Z`ucP139)AggD{E!^~zYH%>P25yCj^dv~%n$g^? z`EK}d42c0)8L`~*MsyB97P0`Xo4^_U>s`n)r~pkFZ%Xd?N>y7M;K0WVgEz2@AUi2z zC%8R>ciW6Vj$UlcB94#hbRV}B+qGBu9>{MWm}_^H)v~#@lP5(Qx6KVT{>~n*H#zP= z+&-@SbNcrw6P>K8FUPiG$q`);btSe}tpFQ#D6= z(BAuXMpiywrN8kGFvY(PF!z3KbaFR>V-)_Hu>_!9`HT5M5I)0;;uG#*WKA;&OfoCp5~r~N z1Gx{MtHuXc0*2rQDwmU2TrsX=iPX{1Qn`g=(cr@8F&KznsuCTz#z1OT_G1vVW*%gmyea~gZ4jwiFf&SL0v=> zGO$5PwVp0C*FP~%n7VbwCbMn3)DOCTw5jG>-8)f2D875#G`$5bEx;OH8HoHzGa=p( z;;0d0msVPvLndhNXKpf{#~E9|b{zwCV`Jwxz3Wxm7vWjYKu>!s`bQ!RoPYO+jWLAfk-Iu9Z}}fTWFQ=$Atll6o$yu(Tm#Gc z-#eto!QDv5t+vlTY(Y=DlV@TC0Q#}dee?_(~kd$j!KMcuHgNOkDIvX0)zj*yoZvx9~G-?RNa#7gF3VG6s{XU zu9mP@C1=QV0?;_+>pjF67MfdUF{?rK{8$H8>^llTK^8l+HSUgqOyg2$qYwHN^*pIWKN$%*`mp! zL`6<7IR9E7bSbcShkrp0n1By7oO zhDk;#q4bKq73_{NZ*dUL2m`KezXgZ?2FJGW5YYJ^UppkP42yDsqL{dmo-u-J;8w}azeD${A zIT*)SXQ;G|hXd=6wI0Oqshsk(mJo1slAKDFu+{U4cW-I`(s)zj*|U80Hug05e-CN{ zMMQ0yRP6n5DsWE_Y7ZYp-y3wQ9GrQz*!Pz~5#LRQb{h4OkhyoZzu5T#X>^Cwj|~I3 z7LWu~B8NiQm4&*0Vy=>$lK@umafr01zo(^O3nakRtSu|_88F#MJzjc_LD+S;1P}=~ z5eGCPMJp38ytiezN!+Vt`owBuFCp!EqDZ)rRuopmS_2;XC zn(L3m_}rQ3fk|da(7&va-R{}gdL!7;TJ}ck6!iaz3m*R>^WK)Sd5-4D(5c(48Hy5n zlVikmIwD3oeCiZtjs(W8?_o<{p}2O8@bon|Q%_fgtC(TA-?G+%n_THls~V_hNmg{T zZ57`0&*%It_xV?{{)jsD^Z&Ld?)BS0yZ_8z2mby*8kL*C`e(xB z(>-KvZb^}{|9{aPP=Y-4>EUJ=x0kf z|L@N`eRPE0TkFMo#!KIKMBw_Ex-+icatyp~zG-;!$s8wl$KC5kGcEK~u|M$^O+ovN zmh9K1hfc{?tv;{3{;~ARl_CF8C8*B=EB$ze=u0=|zl1uv^z~Ew(5t=Y`TDX|8_}ovs%diy>8?|80Jd&oR%-Oc=jtv)8 z@`gx^wR$CBL%y%xo5zxq+5Jk^#cHdv@9P0 diff --git a/js/packages/shared/assets/fonts/Roboto/v15/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2 b/js/packages/shared/assets/fonts/Roboto/v15/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2 deleted file mode 100644 index 4411cbc8754cf7ec78501ba711efabe15b936675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10324 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 diff --git a/js/packages/shared/assets/fonts/Roboto/v15/Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2 b/js/packages/shared/assets/fonts/Roboto/v15/Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2 deleted file mode 100644 index feec9f1e6a187f63cbb826958bbc01c050b5b9c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8040 zcmV-uAD7^FPew8T0RR9103T=o4gdfE078%e03Qzk0ssI200000000000000000000 z0000RjeHz|CI(;thYS%63fg$g1QLP-0X7081BYY_gLD7{AO(UL2Ot|aIJ2U5v|0%f zMcL&1C5o~^X=eYI0&c(%aG3Rr#wD!)d#d`@Ztc-h9a_V$g;X{5O)KU*pMSqoJ36$g zRS^CTiFw-eiFk~U_%VNl)rJxz&wuIo?A%tjG=B^TL4tr8W9rCW0<3&$MhEv z9So8PGrqeNSgpWr&$F^%WVM;y53tUE7b;HVzMYtk!zO1Tr(zrzIFWZ87T9JgH(iI> z%tG{7sHH{zsaRRC`aQRAclYkzM^K{>Wkr<*Ju?GzHM4sPO8FVlGzfsl|Eskj3#^^J zDJror-9oW~0K9LmcP4N!vwKjM|5d08SN60}K)7T~_J5b{30V}9*tM!I@LENF{b>pR z0A^xGTI`&aAb9PyzAl3A&_9(Wa<&{*1Ld9%=VU>wSsrC6XP| zDr7s!Nm`P9jOCSxG6a~aW2&x1Xn~6MitftxIx5=g{Qu_OY<_260eIB73SZ&kWPW-} zJ9$fVmzZQ^&q^f6q)50mZv7hii??el5PpmezZf~h9K&$P*akLwuM>2lqR;M*cYL98tS zLcQGJ1n7fcARz5oFrcZn837(RA|ea20s#-T0f{oiCl02;SwRpVs4G6Iv0AHw4>{-Y&&)fo0Opcd`RR$*P2VaL5YY}Oa@VzwVI~=|Jfvz7ssEES2P;_X!%(mQoeY6>V!V7Ez@v64ZQBb^Yfm*D$ z^?nH3)=3%|Y3+WcP?wPxLhO9b%SJ84$;W z@oq5#EC8DXaV8kR3k3;MEFRS~_6d9I z7H|P3sJg+-0Vf1BVNy_yOO2Xqv@My{d4L;y;4$H*x5Ermp>BQy!XVkB5p;+_R7ANg zax6w7$#a0yooMFh4c;O`EOL9x3NYDRV2veozNrhA#Km?tShC9=zvS`Do!&)xz@GvF zZ9}nKEO5eo433Hm{7S4YdJFvE0B;!z&Td;a?u00~;m>zJ{Dc7an1)fiX%zYuWlVr^ zeQ1Fk?n z-LAwhY@HUZy7asE1Au^oH++$ed^DpU>o~>1@B>L=uC<@e=2^Be93A)gap4 zc6SF3h@b*M;mZ${S9!Fjc^xRD9j$Ibe*jpw{_uZj`LKDv`~D}u4?p})-Zs4bdHW3r zfaA5FV{sMNle1lqY`U9$xo)&Wj~@fqTvw`0xeAr4;22JzJ7dJyUH1$cGHe8%|CGHe zuPk}(jed9BH(-y$2yfk3#lzP~EAs$u2jSI2xe)}j3;qJa2XX{>5JXlC

    bDLv#~} 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 diff --git a/js/packages/shared/assets/fonts/RobotoMono/LICENSE.txt b/js/packages/shared/assets/fonts/RobotoMono/LICENSE.txt deleted file mode 100755 index 75b52484e..000000000 --- a/js/packages/shared/assets/fonts/RobotoMono/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/js/packages/shared/assets/fonts/RobotoMono/font.css b/js/packages/shared/assets/fonts/RobotoMono/font.css deleted file mode 100644 index 6a86af729..000000000 --- a/js/packages/shared/assets/fonts/RobotoMono/font.css +++ /dev/null @@ -1,56 +0,0 @@ -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 300; - src: local('Roboto Mono Light'), local('RobotoMono-Light'), url(./v4/N4duVc9C58uwPiY8_59Fz0ExlR2MysFCBK8OirNw2kM.woff2) format('woff2'); - unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; -} -/* cyrillic */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 300; - src: local('Roboto Mono Light'), local('RobotoMono-Light'), url(./v4/N4duVc9C58uwPiY8_59Fz2dsm03krrxlabhmVQFB99s.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* greek-ext */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 300; - src: local('Roboto Mono Light'), local('RobotoMono-Light'), url(./v4/N4duVc9C58uwPiY8_59FzyJ0caWjaSBdV-xZbEgst_k.woff2) format('woff2'); - unicode-range: U+1F00-1FFF; -} -/* greek */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 300; - src: local('Roboto Mono Light'), local('RobotoMono-Light'), url(./v4/N4duVc9C58uwPiY8_59Fz2MSHb9EAJwuSzGfuRChQzQ.woff2) format('woff2'); - unicode-range: U+0370-03FF; -} -/* vietnamese */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 300; - src: local('Roboto Mono Light'), local('RobotoMono-Light'), url(./v4/N4duVc9C58uwPiY8_59Fz-pRBTtN4E2_qSPBnw6AgMc.woff2) format('woff2'); - unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 300; - src: local('Roboto Mono Light'), local('RobotoMono-Light'), url(./v4/N4duVc9C58uwPiY8_59Fz9Dnm4qiMZlH5rhYv_7LI2Y.woff2) format('woff2'); - unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 300; - src: local('Roboto Mono Light'), local('RobotoMono-Light'), url(./v4/N4duVc9C58uwPiY8_59Fz9TIkQYohD4BpHvJ3NvbHoA.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; -} diff --git a/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Bold.ttf b/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Bold.ttf deleted file mode 100755 index 07ef607d50c2e0b48d251910fc75c7eb83a41b34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114752 zcmbS!2S8j^+V&~;&d@>_U>G_x48s6JA7+NmKxhF1B!L7%3WS6-l8{PzFRoB!8=LP2zLPPMYyKZuO)yKNi5%}Ij2&-?IoRj|~{cMmBeg)2V_b%=knEc5t zIr#oBLIM`{u3l-JL!(*=eQ-L?U)MJ1VTc(37uCue{Rp5AF{$sgs!*_=biKML!c5k1>fJm_mugISFTBV<%t#ej`G5i z`-&ZKERPPTWi6oQI>e{9@lz?6(WO!ITLsu;B9l&qsPW2`E-UA4uzbF4g zuctTA8|h8-W_k;~mEJ~=(A()9^iFygy_+7TZ_;D*9(pgmj~=J@(+B8-^db82|JOb5 zvuoII@wyhrb?ka}1G|yk#BOG{uv^(}>{&*FFv$MZN|!0`thFX1?W<0Ouk zar_a-D>zOGXaSF#TVe8oyvE(^+&L-9$HIJ=}~L`VAdsam>X!*^?N%lj!Mxa>_Xm z8j!2}5 z6^T0%zfJsS;*UuajKM~|G0~W8Of}{j?Z#qbsj=F)(zw}poAD0gF_UbHFh!Y?O{u1A z)68U+tVtf59G)DToS1A&u21exo@;se-_I+gjF&xa;)b>D8x~p6);0eY*N| z*6ECQUJQDT9imrxXRoLSIi>#f{`oWB-bQO6eQDyTSNEuE2%Sy)M}HsvnNAbmaK$G4 zJ?uS0(K7mPOc#{M+;|C{_;x{PNDERiLV-Si{Kn?3Xsaw)lt>}AcYg|)JYkWZ7?WY)&o*%UUFb+AryIr$Bn z#=6*aHiOM%vsgFTPYyte&1Su94x7vR$U$;Q$TLW@^=t#%NYBzw={GExUC9o!tJu|S z1zX7m*&1>ba_?($5Br9F%f7=}yN~_Ieq!gyaW=#}2LEhmu zp2@Qy?>-@C$)`MzU6s5pM1ydk&E?&rs zcrnZZN*OQVlXxlRRH8EfiBINjG=fG_J&oe+df)Vz8vm4k#=H1*Nh<~L&-oX$ zkQVVT`B$`A zpD*T1_)=O;YxuYPJHDOoptZD)@8r9rKq-jU^W9P~-@`AZbLd=Yj1)rG@(<~HqQT6= zKPVKTQ%3)zkhb1`{`b*mM}PL-iP;YuN`@}d!g2~EK_nO!+87c_#=?%&k#G`0B8i?v z5d(=PG0?to&|wL%!IFp(S}PfvIfYnADzTC@l1?&+4c1u}$tF1@m*kOrVu!AF5GQew zLQ+JENeMK087U_f#7!zm6?A$vsUfwbj?|O!q=7V&CNhCElNQoSCXz{HGHE02WD1!| zI!Gs(M!H}F%pfz#ETKKcilyJue`3WBV|{9{Hnmun0W64xuuwLJjb&jhoatBui^MuL zV5LU0Sgh1|tWvB|x`Zqxvq>+RM+e9%*cFS(0=k*3AoJ-yvYBk9my!W`IsFZpOIFey zbQj%8o~M_Qg=8&x6l;GMv~~~ar+dhibT7G&EF$aZa>5}`zNCs+v0~ilBH9n#J)i8P z`8of6D{#WHIl<6$2U;Gi}VDyNz12#+?#&%`naYJi|+Zr0ocnD*Ja?%q(HJZ}K zu|Z6d}MwgJy!!~K9=4#Bm8h2IrShOlXhjE!T z5XvM*r2!(zOp=$Vol00QkvW&A5?SV*1j2Dbd1;|5FE>6m+Mo;51Vq|sK{m5yb4Nir zb2;q#M6Nd#q?(gMnLaX+8SphSlxg*52QD$;7kj>w&x&z%R?NM9mAiQ1;psO`+dtQ( ze70n!y)oBda7`OG_qJ6P#r;>$ys`bJ^$paJF>XrMq9t@wMx`?=Dy4PdzMl4d^WA}O zz7^6ic=MdK8{_h-tk$xEoaoevi}rPQ?CUEFeBp(Fl7XXZ>U)Z!=b#xfF%N$s-6j74 zE7*qBHWjO<++ET&4a%&OYP4uNh8At_#pKayByBG&EL=lKbtBPe#mYAf}NDVHDi%X3PQdaI}dAp@!#eGd# zSxtS#6N=_e$jqEDx5!{KMMRivh6(-;Lr04G#Hqfb=Ayo)%*>`f-!&Q0&4vtdafact zN=d4Ot=>5Nx%3A5Edw&EiL7)-lts&&$~oD_7|3rkCJb-zE|FyPk-y8Jhq^dSg|bEs zl_cM1hSg!b@S;xQzlL|A$Lo1hr+aLsZG4@rD6_~MnV6}?k`+DeN=+5hOYLwmo3s&5 zCpuiCHJGd#jp%+k-|3>-P)xQ&#v`K)u5wo3ABaXv^{kSTN>|_h&c^jqbB%?Kw$>kv z=C8&#KdC%d*>vl?xwkAUrOy=1$yR<0NKDmhqcbZE7UPU0J-t+w%_wDJ9Ih=9u@6`Ca z*vF{x)WM7^W4ia;_r~{oP(Hba9G8A8JqUdo>o$ar2?-7g4A5#g0{{f0oh*o?0eTy? zxMXhU7K2Q+oLgD4vZjg-ro3aNE31^{G~|KTUw@Eo?0)rjdY{s8>tDK*r?%3S%2n%8 zelIyFjh7yQ)=qVsvEG^7E>UP8ign$CNe9ysI&p$3WFfR-ZPcVU>2NskV(-u;%0cA^ z3R~E9D$Uk8Tgt^CPWah1Hyr`{3OhjurcQ{P!#Uy8=?NEd% zI+V&$MQaA;SesHBCQWyJCi*s(g-c!RpIA-NZoRNnXghv|636EWx-fOnQ4gtW=xJWb z!rvG7+&=sTPs7BBAig=$g&%8ZQ(B6++%jq{h{;cHkIk>o%Bs(ci^~)5`LQ=!$K@p? z8{LPSQ zDinrBFVmdL-{K|5*H?Mw(CxgtyQiCOS2oDqGiT3Y8T;Nm z(9m$;&3$yb|I>%mbm;QK*Bw*d+ke^BFbXKVY{H#rvxY>vbuub1!Mq|cyqdzq7@ABv z*uf8QDW5j%dV1y3qbo|YCanJ?nJ63YQ3Pi z$pDeH8m+7uK!vn2feJfcPmMVn#O^|q?n zd|F$*&P?*p7Pg*gQGn5gQh^Nag#T3lqGciqB_I(x!E zcS)Nw7EORcF2NYg#@GcxYS`RqV=xK-F27pndjDEHiyP~4$-Nwc;8oEpr!Zn7l#(Jgj_M+tI)5tcvc1}br;E0!!oF( zfmtAFWQ`;bpf(zbX+)o@BaVl{91=RKhBu`pN2Zx|I&DCl4Z2fr;!dYuQHk!en#81r zUEu3x?X{D6n&&BV((;A{N0yZquX$v{%=>n?a~dABs;jUi&yY|$tt`DXJ0%Rb;|E_T z&xEIr+w{na*~fP_7xrI2ch>xjhQ5;Gp4!yVs064FMi!v%4f2!lLJEl6U8cn}wNP0S z_8dOTRO&@{@-7W{}xFW$+Iw?1= zwJ?xEH<*LreWD<-wBX-P}3?=2~r zGae>5g*QZ`YIW@9B^F zikq|YCKSZSI$Gb&?bHWF5c`9sRPpnxza~##gajG0~4I-_oV;)1}IH z-oCwoCQ7aRe#|f}Np>fpBp4jEw9ba(I4<7?fyO+9&u$zvtu-KdPxR7+Wg!H`jA zNiEHYqL0^fPpGsc)r@aS?P`m_)b6`#PF{ZR!S1?MbGvMb*||k&%3n-H;*KJdu`tbG zNGtUAv1Rx_(qZ`)pdr)9PIq)P4P;ZAVu0@lptUY4lR~PIWf&w0Fi6q^fO}E6t1t&8 zN!vxVS_q23Kvm$?3DKwNf;(5HfstZG2L^H$*n81?&R^N-4(;rK<&u_WO-o4$65e?z zHz%k1+zxb|JwM98H9o26^tygp-*;H(xHy}+oZ()jKsCa^aTPcn5yIk;4)T<`B@^tE zqmAwPrPB)a0l`Jn)-^TvCfS&FY-CWZ&8U-X(=VOYck7BONzUoLYIagpMUlZ6JFcN2 z`QRIuR><N<2Uiw$-Ew-z&J#PT0>(y$?23qw2<(1f_{JM()Sm`BZ~ajDZpF%&6u_YL zX?_@8g}A5m3S_Ys+SuYw4ie5Xv?Hdj1l&jnWC64Q0TC9qY6wviHvu$+VCK9UTb~=Et8_tffm)OoH2H}yN& zB}xxnI&IDX{Uhz3(bq|_;#y!M52|ah&ubK0gihg1#xjJtDPtLO?$<6b7X_xE8p;0` z*9oK99f}*UTCrTyQ?#%z)!7HM!7qIcrfkeGU@dx~e4H+6wRYm}Czo$MvAe!$?@Jrj zJh8ngNI5Gdm2{R@c2^{>-L_6M|V(&e|#UpM>am2R>2 zDLI5X%tsx9NxC}~%9>!g_h4ZQ7>Z*e_-p}T`>C_e>(=R1$4)qR68GHAo*1(6zk2Es zVA!P0{Xjnckq8!1awW=MjIslX*=_XAV@PgQW((`$=W|)ulWLhsp8d+l{FJAP4X`fH z5mDeuls6SNMnCkdP1uiCXj%LwEHH*x0)tJiA;7<7@q}Ma2A$rTtd4G+&EgdoqefRa zMq+f~;tTaEAVH}=ZsyjTrf)cL`GkqTd3M?QM>o|4D_?~!8gNdpPNO?7HMt9I!Sq`e zc()0Hy5sh5fBWKZzrC}geAS%`29~)NUO(@|D{s-DaKjiH@K@0n>(Lj&&I%?bcOv>i zm<2sz#7i6D`3UdkeE-5>8abqDV@R`80;o2|FL2zvQ8<^>E8+-=f^s!X)|l(AfD$ zH&hocy>r>B1r~Rw9nac|`s3+{0l@YQf=b1VXkciE5Oivvgh%MYRkf~Fd&C7vM@`Ie zjq)*#-HwP}hZ04Hln2<9yOhc3m$?tnPdyuk-ay%hQT8;HEt42`l;4;|B+xhK!h}U@ zQG0|QXLk>k(%26$alLC|Gw$uimr&uC1_|M)dVnaE(E-@}qBne!7&nBH&l`!ggkxO(GW#J1>a@npIYgC>@Lr4Hp8=AnTV%&=f*gE3M7f{ zI4z)Jh<$m}hE}35kn=#0w>3OgfD~>_o$b!V%tq)$bgc&GcU7 z6Z+lYGrPu*-}TJkTW^(ilq4jSbdvVVw_#o$N8g1*U!dM&g$(iA2P*z1EYXpvnPSQ?`FwTNQ}=bA zmg-?L2tXp$Y-Y>;hVDDN_JzwDEj2x*v`BefiTU&3)=lgG#EhQzgQ^%hz5NQB?zjW9*1 z;G8Q$nn1^GestB6`#054AyVh|%v($;)_BRf-*2m~zU1k3{0~DV`}XhO$NwOn2MAlb z7thlWy*pggd6a$~@!laj=OR+=RO*y7NwjK_a$0FFijqHMP*k15}S#_|w8%|n>_ zb{6Ex_9U}#&sQLPLA#1)nDC4fct!w;cgG0K8;=;>4S0aR8@P$1^p!M;Ius{W&Qhg} z7H}QAaj0GifE|2Hln2OB+KTc5g?W zZQgSC-AW~WT7Le=KfI~^6gQD?fHUh+KQGRV)~-PDrLZDYs5`<$P2a$MFeyXw@gHCJ zJ-2n_xtP+Bc|CX-W$i-dp(Tt8e) zSQ}bASMBEWFt<+CtO#1!shL}~^x^kt#YtLz`nX=t?&EZ5n7-K7hH|bLwn{0e@_)hW zWwE$Yh6eclx873w?poPI3!HYl3LlJuyLE`b=~b-Ap_;FeQ9LgwR5p~3@32q4Y);{@=i0vR_Gaa? zvQ>92o_*Jb+945(WSSy!rwrB}eZt+`HNLE7!%SE1%-_sZ za;Gj&*F7I;OxHgilT~3UY*72`5c+I7VrqIgOY0hs$Dq%~j-e7yN@OxnV_*X4xY56W z9V2>ATo{MmDi>hB3Vx|L0qGLvjq0eu(!B62)|G$~{Nl3H9cW26>mpKA_d}JIsaCB} zYd#p*q#7+6tW|6i`FXBhklN|KH7aRz-zkVYmpYSa1rY_xft4{KVp&O<7e_?D|Oi)R&_(%TwF- z&o61e;-%$@%U`-;O6lTjyVL3mlAP04mM2!M>U3gwu_gvEzJ>qTX_!o?$H@Y8Xz$lu1NROYp;L`bAvVo!{*UxR= znokYqLhYA!^;6OY1ZT{ zb5?XzxGp4!K(Y#qRtDfS;z8>5K5IolQCvX#CJ-^$H5*?!*wVcBnPsaU-CX5K4#;bo zU7S9#!5w{B?Br#aF3V{yNeiMU7;yW@N&B8&oVMZBD<)0Y`-j2RuCA(-u%zsy!PFAtQMUv0FfKjXz@=egVq}q)C*S#oEA8Rh%YQPSC&^Kho^Q|Ub33*RMzpuua+#j zZJUrc9CQ(61KA(JQ@6-2mw*3K)|fRg)nb z#2I>#Gd>w%1a9aR3aWhYhSS7osH>_{a2rxE!72n@M3oG`a#^Q4$dYccS|R}EAY7!v zs~{`bbv`r8>heZF9X?Cm7kV3+bj!+?-_kd0cW$t!ao1DJ^9Gj8Hg9z7Y+ki3Z`+i) zH!m-vhPc8hCF3yzXVsNVDT?>bKzGT!bDu6bwz@1bqcZER(u$2M%AKYD*;trQU$(o{ z*+|JgjNuflGlS{@!T*VX8paq(5>}SaMy&IDn7RmyK3O%pe4-A^#V_nIl=N2TwcYKP z_Z2ChB{-XMYv-Ai&p<;w(lX87f7hUA89PwiRuGe)HS|wB5aabGo;_av0Cr6b$#Q4- zi8rcfR-Vt(LA_9IXm^3g7)PBU%yy$@!utuOpb%fqz6R2hAa$2CgLXC!ul9Yz2 zQyWrBG7M7j(4A+_uvPRwMwc~ea%JV@C@Z)bjGR^)`7+eO06l_8Q7~plkhce9SsirL z21`&xeKFQP?{z#yW%M-`AF;qYmVz>&x(N=Q$v4ivT2VX8C|`Z|;;iWzp&_=c^q{ml zd!q8SVo3K_FdY>Q}Art8d-K0EZF+gbf4$>_F;JBjT{?@W;6ma8Ap#I46{KU1I>%YAZ(0cf#mWq0l;I8Y;BeQk%Ct4hkw77X&nz6Swuf4+T855N-HX$we`w)G6n9&;S zk&3s~PF&$EOKI6SZD@$gNoj__IK$A3T$7X*6_}DZ^mnNkPxh{*$!M>E%<;BY%p?-2 zPA6D#c!vcpR+q1>5$Xa{L7b5#2El{?uB6U2pIq_5JDu(^c#44-MC(+9XQW-DS0UY_ zE53d1q}{z>*ojqGHz!H?R4P6^u`_qUk=33)cGx{RH=-ziXc)C-WFBmaIjFP1XUhFF z4;E5z}W=N;}^fzQ_wv8@QruUqn}5jre0y@M}!5eIj?%#Q|r85MC>u>V81!mO9nCTM29gn15`P`RBLw{6+z~)NjNIxVKU?N!WV${X$C+W!LzwxWGoB zK3h+?+WxNpg{{}=T69C-)a`j#X*4K*ch|fd`Y{kOj>#qCXT-+NXjH9)h}AD2YAbar zOn!S|X;sUCKd!GHoSI)$pp@Fn3Z@N?L)(_2ZAHGe`R&_LMi2)L5B4p7p+2)n{4!$S ziiUdEh`()U5o4;_5_Zw~zQ7p!TJOK&f;Nv*Siru#VAC&DRN>+q=S|;}ulrv4H1Cr3 zz8m_BXjF88XmMQJ4A@1E7?!&Jl>@ESPW`~OEVp#d%ibbY$*NTEw`^*?bKBnq1saY4Kd_HE(v^LLb zsrdfs3$WJLVcoQ&t}Zg$yJ}z!Tu7!JQJ#LQ95$zFH2g1@siepdXF+a`Ej{^HU@8&3 zRrv6o#lv7)`!9-VHA3ku6`S=L;?wj<9yZ(CJn zg*ChiZQq2pH_PLI^Yprd#==<-gW1P?B(VgTdPK8an0=&En1C1v$a^2n07CrN&wJ^h zm{_ul5 zPWjag*iakcbO|SeSGca7-nMs+i$+Cc zROd~eA4d&CS5KT?uQ`8)ihUhg^T@g?nU$m>I)K^v;*}G5ICUdTQ8)f&TFIZD z=h#sM%L{*+`lq^coemBb`GbQeEX)!$y09E7_7U2aDg4A>fHY_u+5}+^ z+CAcrqK%?iQ*pK6tq{2-)0S*9CW%Z5v`=r7qf{dT@lf!>MR-~3%1@Nk5V#(K5C(^2 zrcHSjDWP$N?Io+0$ca^D$+b({N>g>~w`^G-nO5G`U-h!LHO2F%)y3pLzS7&C>(i>c z<}WF@br+hwLo^#9RWZh~be*(@7ZS6GyO{;ACn6kmhG&GC#;1z<1F`g{4RF$ulAd}& z5Xw6`$K zly6SUjLRxciki5q$5~yOkrAI=qH@C-J)>;rR&a+nq*sZT2_q=Del*KB`BVcZTnqrA zGe%AW=6NK|;)7Q0Sb~1I-$(pm%oC=Zp-zLXRHgE$)SgnCfjNd+W0Q zYNS%Es@0IWf3>5xZN#QeiL~gVbh^l3!5%VzNhsVTdpUPlp|!jd0%o$;cEmC@nDi`H zlaS1AIQM>Mbb?NnZ@E@mwdRgFi*8?5qWm)QKml+XP&|?4WU11kb9{xz$D5YcW!a8vqW1|tVMVKLOY#`)Ga)5?o zIyc1V7_B#J5oc^X9tBWTSobPb!KeJt6crAQz#t2=3u0&_Vgyj5AU`85Dl%EZ;#3tJ zAW*BykaW7NF4Z~)%3)9`lxm>Tr@#GdLB6}}iir~smCxDNZ%(zPuH3i0^s)&P_Li=^ zd`)V)C3)a-Pi1b~vP$=|wp_fsEAif(o1dTEw|`0L<;|0?C?DLvDkCd9WAMQG@`Dqb zFDqSkfEnsHbU7Sd8|v%V3ol{4I`u&qQe!buLaqi<8UPQJvf1!0k*OkcsV4}E0|E?4 zxZEV}8AzJ*#}jK2l|-mZZ2%sFl#+>bg|fEezP0RwF|g5)R801XP_} z2Zz;8&w4x_CLisF(EU~bkSBM|J9_J&kMgw*h>f60OE%0|#&@Bw{8 zH=Z;V7Z%t>_!A^o1p6)|xmvvTi5Md_y~{a@@_K%@;v!g`7D0#;ip2n;3b^2f zTva`O=TocZKL6VpG%CAsR_=XDl<)dv(_iuvJ+}o(syR=vgPlYGwrfjdFeejuc0N4nYz|-rh+V6 zOk&;a?OoINWZL)4nX<3fS-AM7dA0_ZF(#uhDb<;k7A?;A=%e)$^3sZOZE?Z+5JOXL zN@0FBrUb?!Ph83$wtBiuthND81QB z`cxr%5q9?uI8>_&;sGlDS)=*PT`Nm_s#8*`drDXBT2(zR#c2r-w>VSAjr07mX3fph zyKY)jQ?ur#uIV?gsp)Dv@Z6Fm&+Tt(+b`Y^w9&^0S7tOVteoavG{H8wy1pVlzb3sa zqb4uDv|&!~vCZ}Mn~(MO-o2@=4usOxuU<7}%2ltf9(?ucDO0X~RUIcCdywCYd7erf zxH=F*z2zl9 zx@kcF2P^a!m#Y{rpm^9L60$AMUns1v^QA(gcDnUxRzh;Jtd2AXstdkhYHFY$;an_e zHlhGT(CmVk8S{+Qgr>V{GfHPvnC`f3Pf6U`G$X3kJ2IQmY?u10}zstN9SOptV4Tg3zf^_?41* zSV9+sY6Uce%UAsT_s)j_*Q#y_qGJvdA3EXL!N(yDSUQUGCDH*OYzyYTSceYcCc7Ta zr`iC&Czb;N4YW^UNOU2A0din32?(OdKiBsB5{Oa(s{f}u1a#$&OiOc@7dq20Y*8k? zSo^^vC_OZ^&o*-XOnJ#jHvtJ4=&m-xZ1oXVq>z55fR3$nAj|Hr1U^xZ)0X= zV{c*6?1qethS^1NS*D0^Q+8ZjjyWR2jP0G6%K5ZneFY=$9y}tzH4w)zuE8N9Oe-^C zXlXjJa1lN7DdsSdj;p5gsnZH75|fMlkI=;5E5~Tt_tZ9Y8=uaPoK-HT%g@qTKMj4L z_E!eGmftQvLE_2bhao3|7JcK*^n#3)kYw*mq(Z73#6$=t{;ypDg@G$V|H~Dk zjQ@6fC!m7plyIw$LX8a$7S?&=@g!6_ z6Agz?Gb)u#g9IpP)<_35qW8Thv=+_C_{HV^%(I`}CYDxk3c#zBaFKO}(NalXf-3KC zmsnjFWZ2kMI!S=mCsMfFDjtBK+qinHrosTKZ?w72M3}DBaoJ>cBwxMA|(V;kM>jgJiihzY3Ocx>*RV;k#! zY8CzT6-(n8d@|&S$Zr)LCp>piGNCQrgwdX)d2J!N!>ybqVr=oIg2 z+@I1%6espTkx_Q@!w>|33L1~+qE{m&3bzHAL9cio01)h%fgX(+^)sq4)prs+{Z2Qq z8Wa-|sf!iFHj6(uz^d{MtuA(3aJ(}kHgoEhcCEd-rYT7-lnv=+Hpi5*2tdc50g zZkt|OHGX|(etzfr@%Ye@pWm^5e0sG#KHgrPzACLcKOrF>xCU&156EUIlLJqqtA=Nz zrdsUB@s6l6&Q(JC9h4s=IrQ0K%DyhThNRNfp#j*9>jhdx2)^rtrNF-SS_;Plyg66c zA4Tx>9%8uqWPrF^ImNyyx(4?h#y%hZ`_#*Yfx*7<-6y=D=j6x4eY3@VFJKQ5T#fsl zAJ((8zUO)GpjU31&a1xJ>bWjD^uNlF4{DUC_Ar=}Jpg@z^-q^8;v$FR-SJ&o=ZQ(a?A z#^i|+Y3{7KSI*A0_a2;8yL#UA%!JHrR~pTU&r8wkQ}W_tvyvktle5HJ!+tYF`YqP@ zSg>&`-Q_w#^$}bWO@OTF38dJ@5LQ)>i1YXoDInB4A^Fv;=&-QxF#m2OVL_19VEmf_ z%9@0cBl2pgj!VDwoPBF1i0-G^s{g$879Ha`dl)g~2jt@)iUhTJbUKUle1W=9?9B2f zX@ay5`dss1AQyRUl)BIX6xJp-6?7Nujjs=SIFU`lAoZOTiu=r-jK z${%h6@fSg8!N$uSzFFELe?=02in_>LcX+G;IsG}wCN9ar0Sqt&h9=*P_v=+SdiTg^bAG@TwPWb>`uk84Fs^&cx`u&Ykt(A~cb$$9U4kw?G8~tO>C(LUzA#;Vrmf(t0cH>>JHi2^ zH-517ML`gMaq9;n$>W3S?y~s!vTme`DBq4-eWYjhk->4wX?)WuZcF(@n{85gsu=TI zV8>sti3MJ?8f+JEY*K{Jim?&uFbX}bDjhG8LiMweMgX%(P`F}8oyB|{A=rS9hBybx z25=?N;R{c};R>#-u%#OlEwG!Qx)1;#$y=0wO5o+?t9dyY0-lfrEbe!7_4HBY^P2TX z` t_+Kbj|odFsVPZw^j$g2I;qL6cZOvbRhi4G)n9cniNM*@@?*>u*>O_A>POaB zWKG{QJ-^sSb)|EE^L4Z?Oym(i0aphOS8};2nw(P z@PLCcxtO*WnR8qQM@*LM8bd=^KmcODV*u29Ls$8@sqnww1T?{aOJgVv3Gsgs3bxFD zD+$)J;Hh{j5f24ycK)Hiem@4vQd^7N6(-eAYHFygC@sm$$w*I0PD+T0j*1K$i#+3E zT0BVk)=IOF{*HN|6RPLOY!^ZC6%!PDxGrgw+!>K0M7W z={Z@-xtxxTEeED%EURx=+n%G8g=bXdCIczbyCTabOuO%STW)fClveqpE_p1qRc0An zk>y3vnZ}5$NvrGcdSuX1l;aGnUp*wAk8P{Z&S=?`w_{*cRPva&GWwS+^Nfo~jvbrZGQZH-J>KS+v30^M zA+I>;CwruR={0;B3yFoyLi7vT$zjGpl2HP+1l2ngVnD#@lH8J#nqu~)iomU-ARDWm zHZpL%YF4=2_#*WWLF9SnPO7b&G^wt364R#@ntdP3KA@(u*48q-JmHB2sZkTfM{j-R z4X*&-%mSIx+8+L*dip;W=z6{bL67Qozm3Iw|; z2=>T-xk4q>24-Z0r-!RdVK0-yr%Alx39Mm(uzFRAN}I+$TF@}6L{^zH^QYEbKfilU z^(DVwJ9A>)^?iueM;T)2SZkhO%FsVYL@NI=rwaCrmo;NN@VACf_p7{_*n@wr|Mqaz zicDtH3Cc{-ybRBW!GcADj_`43G+NlFR?>F?QCd)^y_EJ}FrhEPpSc)y26PP({X_uj z0xrpD{>-m(rNN)MzOO^&&qU>In>r8s2!K9Q&{jNtW^C+CL7y=&FMY1oFHL35<%j-LBeWJOAbqhEdXmFMV_m>(*i zPK_0h;?rHoYZS1C>i%DpPv>VYV$3!n*Gc5@aPTEtyqW|06BHn9SOS+*#9_q6RbVc2rCsnh<6s!+7l<3`$T&C)~WUDI`dA{m!`W+ zW8~xK4z_OY$WCwDGIi#Z80=nwIVF)srCFLPKZ70@%;qA};%)+;Qsd=QhR~p(z^-5# z7+4MB9-t>MgGI<5_KWNVc!brWS_+8X7drEEGc!_CRLDnP?Fbtq1_TTWq1Hz+EzK5_ zNJ|k3A`zoRg=N%dcAVZ+wB&}lMRQ!CNDI#m&F`qRobudE?|I+T|M^F!ii?U$N{Wh# zS)KnAxR}q(zp1}a8+3=@Vn%~c!w=s*G;sIb>|^>&j@zA+T~U$ad&d~xh{ivPG5$sF z=>NjUoPLMkV=kgrBxY`+S1Q-hqx+OIQn8Y{nRY2|&rXzWN7;iI^D%<&AU4rLEDj_P zK@aflisDZs)$1ZvtktCll?e=Ltph|8`s&%UBBgZ879?h_u718+$^C%!Sf01Ay+R%$ zhX&=(2j5dC;@o1JE^qlFM9;a@3CUM}L4;GMM_f~-09*93kN$}rl~jBe`L@X5^YTDX z&_d-&HiMtr`20rC-Dl3ww=aGEQhEb`ION-a!%>GeMUxVDp&=abyqF>aNZ}1SD9Q1l zMEb2*FN+IRg}aZx(Ii@@w^&sAZkPXE9VwygZ`nBr%tx=WkbI~TG-_rJ}2sQCF)cNEZRbLc`eg$fPf?!WCgH;Bz$2K ztTOSVeBqBi9-0?T6&r>Lx|xp-?7ngi zn*N?f)7Hj*Upgs2D$h3b4d$%S1$D4fZpWSm$owa#RIB~rBz3uAIs_1+`=n=NDqXv{ zrg)_I@dgly7!PDUqdE_?XUIsYOK^d)i&t4`Rb^>SS&h|dwwm=Rh*J1Bq!hu|5#v~u z*)D@<==mfT{3tj<0(^z7Y!QEi<(!&3WB1g$<(cXI<61XO%~GbfcEqM7C+SKpt6OiI zo4LBNWA}_aD%;A-Y(dfKNr~3zAeNGV-AQh>u&w<^2P?8NY+1B?;KrV}lNStVg2x6v zWX_wFlUu&}=;D=Y*Q`2O*imXUmUa|=kyJdz)jqBnBL$-X|NjNaf}9Z@vARcO=YA%Snon%#rv z9`wnVg?L6fsc<9rRwJ9Rw-+=Ko+XyCm{XFh!Lv}8PLXS)QXc$^HNs*M2`b(wgL!1} z32whrr5&meDL?^#x{96O|C(#wl{0f^=8g@rW~7Bos=xW>%60cGwa>Cg$B)ZgvFtUz zcxb0!0*C3}4G0O4=XLXSueS7Ezt9z}I~5w%JF^AtXJiKE$$Ro?#3%B}M0ZdG<=C?T z?jFpsNGv$PYNha>sn~z-Jba;s7evOIIEx;>;AH2c=^6U;6jfmRTw;GTSVZl`j+($V z{FB4)UOA-QqqFSSJy#nW{akZn<^P&$-_aV^TeI<~ZT}M&Nw`~zsxM5f^SN|T&8i0~$gg@#JbBjD*A0dJk^)?vF#N-~#R&TOi9n4xE?1jj* zIr-vwdsGEAFxFNzfzP-3fY@R*LTvq_q8+Sz{U7!;)Ng-$Iiy@UdrF&D(^FB@)l`+# zlGxUNNndt@(;TRDMCUh4Et7up+_JR6mk&**wIF%lP%yp5IwmSn_fT|}IcjL5xvVWe zCacjYNQBt$M0%Gml)r!}nc$8EBTNKW8Zg$#MuvVaXHEVjb-fvGst9r{eD|8)zD1L7 zmVS)iygBh(l<_0V_>cUhmy?Vgn!rgG%XfuHi%UW=iyolcU@Cbh`r*l(t z%cjnp6JwJdRyfjQQ=0ydoD5V+4)FH>cvS%u9281;ueRnbsqL^ zE;Jeov4?YWv1xfxMux+Ykx?Z5DWkq1F|h!#cU(;oDJ4wI4(z(CK1dWR<3jO|&GWh33R})?`mCHTN$J zPs_}UOR$D&t{IyUS1`do;c!0MhLPVQo#h=!hm2F@9_*V?%myTGP*#tAQwVC*27s3{O|5xcFDFJZ*!TqP!-5 zrTjnxl^-xfzf&&feE11<%qzTOsdRR@PNQL3a?81|MbRibRr*@F zQL_X62fs2Ll2SOVsFdJL3o$7o#vBj;B+mqVM4T3kS#_OTy=+1=$oeYxLGLLZGrlq^ z)tRJy?D5zPXT0?F9y!4n85gGAv0$3n4x$NylNk4NKS&=AH=iGOA%@QX{{Z~sZl+?? zO^S3@d51=`iub;U%lIJ;QvNN#AGu)~ zg!I9hw5RIzsdlV_8tFTJw`ME)+F$Odjs;;y3ozHj&Fo65e`~L1tFjCzDVI)2 z*o5&SC%tzHhRH=vif3NzciaRrjQHmc1QQD!b&XbR+s(~C?{IHaz!${AdSW|i*qw)z zJ7LHglL{<)yeAp)&MZIwMH{F*xgkE+92sfOjgQL}A=KQ2_#E*)C*Jov`geF3|4*$n z{GUoDGYwf?fu2$Gq)UKVc=zzaY!gYzX+rp?3!xImwNO!TD6tD&iD!}W3BOl*>t#PAmFWrcZE#N9l@ycm>?O9^rOQh`&FpdgFy%W((>o|$_BcfwvD#` ze`S}gzSF1vZ}!=un7u@L2<=z*143)lR75FV-DXbhH!MjUY!3E{e1|@RmOrb!ExFE} z6zxV!*W&(qwg0rx;iApZqi~tQ5tCJj3LPnyy1yfZj2CkU78L%EUD%%)ueJP7LwWt| zU!IUoe)Z6NY%w?S9bWvQxKAx#;8E%xODIIe7e-eyOwvZ%5M=a@ZyosFb1=fM`A1lk zu@oC)u0a_gB9mQg(Pqy*S9negF#@^A{z#UT#00~bAQ)lDVZ%#(3i>ua zPL(N%zW*DC*aSihy9+TDgszdxDI?YZ7@nu}Vb`j0Ywzq+&i36UKHb$vqm{hb?d`MK zw(hpJZt08QDSMwBaD!6UW?*^9te&3Yf7d(k;e-p`S^oKWWyi)IZGIBrq z0hyfAJE&irs9Q{Eu!!+sgC+2z#B^6zi{4;}RGSV#FZ=@dI(S3%#22vz2e&pg)7bLm zH}@)M=ijxalE%zv6QVlm%Kgmgd3n<_yIMn(J7`DHgx$|?5x?xeGKw$5P~!Ph{tsv0 z0oYb~u6@39j^q``OR~IeS(4?wWXao>_nsM!W5+YGvz)#6PRJxAKoV#O8yZH!D3rY~ ztBe-fatmdJ-S#%O{Irnh_W3C#SGc9RTq({@1WO8lU za@ULHi`z4-CO^Xj_OU4;w`Y9~&9^8VR~E?o;Jb`Km8FeNfR(gT642p5os0$Y%m_CC z1~&^}hVFY?7t?vQ+nFozC#6NG9ak(^Aawk$F*hdL5Vn zBUprw7bO$ZnREfwi2cQZ2_b|ybNk;sq(Jn$$u4e~bI z_w^1#Ca+RheAC4 z$w5BILxD96tqyLhMYJD*N}-T8H;`~1m6qgWXIRY|9F`t8jTZ%|-I*lgg4tYFAvzi| z7P!WUS;=|%*W5YR_q7~qP1V^;tIZ7^6U^oI|M|9N=L_pMzO<{xK7CcC*fF#{rlh~T ztfwT}R5l~OystDy{XyB9a8ld;=N9WGA6nWR z=%2j9b)a(fbh~}}>PlVC-04m~d*^beI*!}W=NsiFMDvlSfmPrIfveFXYsZV~1(0sL z2;d0(^b!WKt2m&{MnlZ^SC-Vsg#6r$w4_8pV}mF9tKbK|aMS_dabKh7kcRm+t_aRp zvKWnrO)nnUurjJ}Mp+>e1(?3`;3GXNU)tY1GQW4YcIVTpW<9hMR9mK!Nm=C`IeLSA zYU$_f)#AE{Op8Hp&WPyTG$}E4^6IAUjdAAHwM{EplG3KEZHh{b4GcA<86rVJ{RGXO z(5kGHQz6UKDfWa3#sL!0VIgtssiB zddfxR8trnb(pNUK(iECfk@mQAZevn%S&MalCW@N)MWw}`?%UOom^N+uv@cvYYEGR{ zCKnD4j#OrprAPZ%0xSiSi&J{0w?;0oO^pqTjR?`k2AB1$X=pvT|LWF%enf5Ftn|x` zkf(ZKzA8=0=PSSfL4vxQgG2qr9k(&i5z)mtI51U`l;qwLk;a=jiZ7pQ>CO za887nz{NpwaV%Ja9Zv@d9cgT*~+`;%=zW2^0HO@XPNSia;+h)DlN4#-GCJB zd4}|=w6w~!P|;`mt5;Q5U-jyCcJ1~z_SV+!ePg@wr<+=4mqtXC&Te5VHZ{*Fi;4nc zCe6!(=wB)K+0{FJF((rIc90cnKe;!BTz6a`d4z?VapdCnQz?N}5BEH25D1vNPaHSx zI#h@U#hkE2M@(8vWLjKFaY=@Z>e2zqkoe( zz-N&vtWzWEL2#0YDMmj;X3)NP_$?xx_ z0ps|P%RZ&vV2#Og77*W$Sn3iSff_HWBEzsnXx+g3M*uwoqkuy;*vq}txRq7%VogYm z-yGv_$tpAlCF-<+i76?%y2X=ngIJeulqD^~+sE72N2^QIH7uK2tUDep$JHAv97b7u zOZL&qdF}m)=l8~zX2)XZ{*)}JS{dx}?gmE|pOzj%zO=X19DTCIL!{;Z#0>>6U z##|AgM^&SQ#^ORFJXU1#jDr^eF5wpB<95G2N8S75g_%K)u;k}tN4G7kjE=5aHuc&A zuRNaKzOa0-cusR_a#^c&XJ*2RlJ(DQt+?~}@(p#nU)hw=T3u$8AM=^$qY1S-V&jp1 z{P~tmj@EpOU+6?5qDv{g(_11(Y;6gZF@dqpzJrVQKb@YiqrY?CK#tZwc!Ju;nZQqc zk2M%6ELNwF7NVdoM92p97dpW%%r41waS{04k$gv4C@EZp#7U;2e{j6X7k!F}#q5eA zu0WD33=ssY1HHV!M1)8ZBsY+19`_oOI|*1~lm72v zG}HBGYr4V9-}fo2&e*iBOUyohqcrpP)E80MjvRzuF6UB!E%PV+U=lM0>}=!Zo3JU|g6nZB+QSV#{-K zbN>7r2gmZkcN`B4Oe&pGQNFONCj6*Ze0p9?n$0_vNq^$(g?uhrAlr6eU4`MKEK?;~ zC_$F$Od_8f!3)?QT7;RuKOv}xKvj(+ZAyIYA#Nx$T|{cWy4 zju9%AES!{;HECf9`oV-U^urhZ2p5_>yWxV22Ga>lD*}XEBBZbM0ZHjcKywdxF0G_1 zh-s{QU*)6$Xd+vU331}0;`nL1`?8f=P`7)Ml2lY}@-+m!9i*S2N$ESbkiGK-+DE)I zlhM9d4^vezj})Li7;A#~^L=^go75Jb3qod$!9uzxtQhxrCWuzhC60}D5Ic;*ZfQl6 z?O|d;8uK?K#RcaqeSGJVM>bXB2su#OUlc)1I6L52PhYtCaQm9y-_)JA{8#J6h1io# zN<6qps$rMg$qPUc=R}Jh>M(QB#Zntn}G;ts&fYT1i463y4aL0KQbe z;KrwiCLi6gFzJYOdf#A1!JKK8da)4sq$xc|o*f)~{OEk0k|sW@tLT{Js8~8V(~QC& zv=*w+m-jK&CfbMb`d}o;k<$wDvXcPFII4Mk2HD1j@NjiZ(MVuVjcV1TaV9}dW=JY90pfPIzNU9c>BjF?bbfn${>!&63Q^M7yTQ{A zy|tVDMG0zJ(NPd2O{R7ce)=TZl}A=b3eI9`6r9LRScKrJB&BfQlH5(o8;)4?B~QpR zW8U>vZ*nKXOYNC^h+ogk@ylS$tR-&=yCc;mYA1#V2gjn+pLwDoHaH|aKr7l|`-fVi zgN)4^XSA(Nw61OK+1P9hj<&*vU9XJpsNOoOIHq!>1$7+nY#FJHDW18tX8fY*>gmG& zH~oH1`{B(C)3J6AqhD|0{7pl9fmh5*OMwj)fsS!>1kgBGMX1xNQr1EZbZezh1Jlzi z`b56XKnZ_gC0pF*jh!4nW1fs46wM?bi|Xu<-;5}TL#%LQ{sW-)_Kig;wvN7;cdo9; zo3&@sl%2h{f-KiV{XMB^Y58KccYt06##&HD?VV-jO-uWAUEA*J5AD8Y z$dNbq*nsk_&jbY6_8D13eTB1{uO*0f#mJEnTAIkS?gH}Re& z;doWW=(tay+KQt334tNTeKPJlq?3*NWZZYiQ$6mJvG0t3({nj@LO){8(OKg8xDtn; z2kzm;O=OiZ48{#t)k0t|SLU7=jxUci$g%#W+(6~Om9LZ!gYu0NVkJXFnF+N+E2570 zPn7SwcKd`0e-feTx!RR*_7CwEQ@kX;Kfy1$d`_b>+X-K@I68{8KRMO-rUUp$QJ943IAZNvD#6t0`eE1#R zFXhoSF_!q|%{^1LCM9j2(!04i-V!}uBPb6^mRKb`&LV09BXxRnWFRvKMuPVsGEgfm z9{6n2z-=qa2YP!4%2(Vru<5gbS6qu0eL?@Hww73E54`aP?Ep)08|~lN(ZBP$KSp5y zIk+IffC)f>0>V=BTo3q71+PxzorcoEDFOi{qNF@dPScgH&}ac)Sb3t0$2cP(Z>WMU$tE+io%3Y6ejZfJRj2$43kOa3aI|XO&sMM2 zT~91q|KjethF#Ar+wknJCY1Wo7)yK07jIyHR1%G4J;jSQc(a#BQ0`~SFFxAKBKLf9 zd@5BFEFUb3d-AEsPh)2toRP9(2lgfM6L6qY-dF^kSist0;86`30cugx2|ff(D6i(r zpm$LM7i6gw)$wq31i-?HMjtIs_VLL?fbEk{i^HVGr4>nj0n_%+wA*LypLTZFeGi4} zN*!Xi!IB$~iORPin@FzNaNp4E`!>|bue(+#zgNEep&+?T!anbIm}46h&jwhVETo zEe^R*xXKl#L?u>E%S`X6;CxY5G=yr^Ah+IW#!4ltkTW22vmun54F+DgC`1nqTbglW z5Ht@og#7Sm4%TCm;++4$#%kq@nL}8De}K?`UAcwX=iD@3DPk{-bc(KJp0zik9FZv= z>%A|cuc&eTfJpg$ul4CQ+wlvB!Q$}fQA&X(W!p;bA; zX7e?%75$ij`%->chBH-w=s`9i^2;b(iw%h<5ZV)KMC}dI%i=N2=n>cR#>N;A8aKXj zwrk#P8(!H{U%%&-4NAFmKYlImFN=*W>n}$iUoBg4*U;>fYmjN?l9lv?@@ZKa?ZqZq zqiM=9c_(jAxBz|toE?(ThI!@^5DOIEOo>N+us{((2J2Fgy7jqrC4qDajCi03fMNw} zOYZ$&*L#0Wb);9OM`;tqH|Mz?)r7<(hOxqXm1As3IVRSIO+ECdpH7k`GZ&63}(DhiOnDo^V~E4X7{2cM6=s_>ZzG1AS@rnPBUg zP@)3=^M#0_75G0W=exWE${)Y`h$ZYu`!0DSOZe0OD!&&STo2PpbE(nl~3d4@E~;DngWE5S(j)`Kp8+T z8cDPCoDq;aM$dr&&4BhWYz>b~$mllz`%AWl4p=$Hi zjW4`V+L<32Q_@?OJ+;)Ld@*VN<8xNOw5L(FWOuifhb5ofNJU?>hEFU?u64x5<~5`) zpZ$Kcqaoc|lM@?}S()5-WNtpH#L`$JmL|xh7;9dG2%J@tlr|r=)Nel zEMs)xM}dTh;42URAkK-;BsK_VswiS~iL96ua4^2x^_H=5^&E6#+IMb{+^c*Zk(X-= znScM<3Knk2tj*G8=jKJw0E;PJeqM6!vWM5R7nQ=gzI=n^g`BNh@hm75@*&K^ozuDQS1XkL=kOcV88&3K z;6G$GZnYFTPE^)Q*B0f@9_(tYC3THq- zKtN_5sMf*i=^v*>?ERf5eNBO0(~!o>w9DdBM%q)9^{i3 zI8@*&M7*{iQiU@ELiA#-Q2o&uzE(1Xj3gok)T{cQr+_Hulyi$(gGbc5b3OnSV@2Ay z(hghEK&3_5%r;UutGKr$N~3&Hx9ize%b(xd+_>+R^$VZ83c}?~`Rv++#Lm65te;x@ z_I9Nv)XlA!^Vr_DNyk3iqrAQMgQM-0TOMCY^DGLJA)`ikydg#CRTDa5p|OHr2|b{Q zFzFB&S<2?1ErsKQYN&dy;GY3QfSgSYKVzVVyQyMuCDiaFD=K6Mg@A1kYB==5crnOM z#~{u>dtk6FJ2+?zdopH)%Og*ozUy@7_uqHo$CJvaZ+LQCq{ZOtYp_JdC5QX6bISJw z&|_ZxuG_GXw{ODO1FolhAKx(SjEZs&Hz-o$Y{svck;j-2B zdtO@0e(y@#uy3VkHAWG}5d!0a*cizTWtOQn1{ zTpS7xGC?Rn>M`iJvrxQsb&Vk>ijY zhT)EBlG3#E(fRsCPwj4=eE79hdNJX77XR{!Fu%~4GM&vS zP0O0B?D@|@gXnxx%*ifxU|%0Vd$ZBri?Cg2oT_U8+l95jwG1Ql*d@w0pwXIk{w{n0 z^Ji3^kUzr9Kpb{hV-S)|B>j{N@300?a6njc%^5ZcRv0jixHgbZjZm_nh(CnnIGwss zIbhI}o_a99IL1rVO2Nl;isD+Te6JTx-lhar{Pjovo!jo{W(&^W?)rerEr@3Jmm~k0 zAud5b;?a-W(3YRjQN#X29o64{HfO!^myh3LVe694rmSP(fA|!V`zSa+@E3$(=hRpD z&Cm5X+OPyNvIjBpJd%+FVf^9$uh6YEiyvU`=QkwZEU>7xVexa*&;H~BMYO%&o87wf)Q+?VOT#__r@ z7cy#XOKXr^2yfPZrwrb@DoZrl%S;m(bw!%?%?)4P*!)>?&$aUy2pgFI2o^Z;-Mr$c zK!$U%p5h>34T!$G6?dxJN2VgyyeUXBNfZSW`;V~h?{0ql#_!m4)*${5h6$B+#YWdd zxS4z0sSlUctEGYGS|(S*_y`&KKH{SUBqrKDpIqYXF#g`AbYpPp*{?kJq`ABZ^Edu} zfuxsv?j{%EPVq9Opa}me8R!d4U@eu$sm!1}H3=Q$tAex7*gU1l8F@iNlhl<)zj+#LV4S5b|irijy zI!diUI0?v#Gr+g1&&{28!%P-F>&AI`dGme&wBpPg=H*ILgRO;$iG|i+*MmWpg2cpp zOR#92`M|z@Js}Qt{reu6rJsdgb=cI$^!PR_E# zeuO<9TLRKhD@a7&$zV$`hAtpQgy$=eJ6{E7!Nqs^WiZ{FztwmyyxCzpr;+ zZx)-Re28PV%MVnh@o5phe&BMZpW^bNdpFcVL!P%{-lIDkt5)CEs~{-tx-)OMH6x>S zIB!MnaBF5}>u@d~8zi^LZCGmo$asZ*2of~a1|eI7Y!C^=O|&cB2bmy*8$xxsdLs5F z*&qxpCfA|c3X!Po=mVx&Zd1NK|9j=k-v{QDuDE;NgZgA=D)Sx{(koKAs=?MO+u1Ku zj}10&?QHF%n)+Z#Go zh=9obVRC!(-WpDoRI+)2dJvpbcJIdhVpuL3z8u|BFKaq&m z%vCo{96kUOIN;2lKuwrC-PG-uA*R;LFX0o(uTZy;`{GWdD+;D~V;mk42^}yIt}F`d zxUDTr)tD{_xIS}h8d5?3u{n8pK*}ipTA18@aM&suDypOj0mf{zIolWjMeAmk+qb=? zb?1P?ttp;;>^b%uS8ilhLKp)#egvqp)ws@0=-*Gob@-P5(YOw@;R|wE-QVN4$E(0qcD=;v=NTs(CSRNiF3Z zvluh1p6TwE;Pu6R&>j>QP_)2C zK_v{RWTCK5$cA9pL25wLESOEe!&KC zv<;%_(zfl(n7X2-Zi&Ubu!{IpUCGw8WG1C&n&PoST83_zZLh?C_SrWKiKksHGrPKG zUieA-7AKp$7MzH*u2J=dsLhsu&|JcTA?FjESg3D^_$Ag0A(s$LGZ+jeLp*s?DW2x5 zhOfu3ZIB$%>2+asi=Qd~e0SvJ^5WvndVlW|nVn=zi3-rNci+`aj7m3I)5Cn_A6W75RdvlPI|?m~nNgBv=ZYT3cezPK;}t)KX$etmsHb#NL+Ov1-qerire@*hx%i zg6?-hZo}F8vZ^g*2|m7FzCIVy2*B)!kwzXtzu@bu?IN59b~LOY?v{lP=+>X?Kk-HW z6<=RIL^!<1f7zM;^S{T>d-^hj93G634$dNKE(>vU>CD0AzzICW$(1Tcu1yW^sG3%g zTLCke2)zb#)h2EImA4_)l9{D(NyUBZDrR2OpDlMQ|Bv}~YixZ72OBo_I+#nGU`U8E zr5JqJuh@&`_Nw%v@~!%m$`&)pDiIu6w9P2q zHIZTj6Ol7T-Y2M55YhuU{~)v6zFyj8hLulMJu{_OIm7M*Pt{$@ z8D-I5r$4Imun${qSVKBJQE=+_;Ywgn^4lz04_ud7=<5%0a_{uMDt)6 zIaPHb9&+CxbyKLlg`ifQ@gX+2k8F~(JNc&6X=jG^e*E!cPruI`pDCZ-)5acEYCV4u zk$FwBBOJGuy)xDg^qtxP?1-HRbd8Sanv5L!$#$Y5)dP6q@dz0EYassKD8)Gfkqs3*3 z4I|acU*!npoANoe3CdS~Vdn5)4#KfqFw{x@+k!%jk59cb(87*~ssNOgw5;lMqV#H9!y(ZlgaGMTSMvRWmSgJ2`xp+g^j$of8!LO(4Z zbQl>9O_FznIN`&h{u?ZQ! zF-nv4D&u;a2%LlYIMW|oHIfm%k$;&q!Pe95=`(6 za2YR{DQB7U{?*C_(a_8hsi+6p1-? z>H1moX(&b>+Em>;W&Yyw)prkP)f7i1Wdyeu&22@p!qhbl_PNW}F8{>~o}mzz=*(Hs zIpwdL>lZgpU2Te6HKl3wq*V7%{6begeNkD(%(A$;{EDj6lGe?cBXJziYUpfgt{5a9 z6iaAMU|!^qrU?CbQ&z7T1A*Et<5Iy^Urqv`1cc>v zSE*#?>}+&Nf7Jyp^WKx+?BzV>eJB62_pyj+*DWX^3iCI-JFlBxtTLD*vH_jFhv%)t z0XIpSv04}q2tGGZDfR+)5(1&|MnkAI!I%=C5)~O5XNXHOd%NA>7kPH<P@pQYel!+-d$mJ&9Ibp+JSVo zKyRCXT_$Os12UqFYEy9RD&dNQuFzv7BGaQ*QJ$lp+B_fFs&(!}#|w>wGRO@MwUJz}JZ=l%+ zp1`w!Jz!ZqGoU)HTk}L^P@XH3n=9GCaiAXPs(mM3o7A$jzG`l**-|sNs%~j(67vn} zJ@vIuTwZ&DZ)9Ycm#huZ>on2Uh>05gkyA=nc42g4m~UD^VK)0<@uOR6YPLMOn0@DY zrM!KgSa~icp{vy)p(5E41S*mXii6wbvf|y>TkGdlxgOnf-D(skSudSS%WWNUzPJf2Xy z~{1>Ij= zuJ^pS=CoLI#c^}}v1R|f($abRTlCHQ=a-hw-%p`ZU^ZGuSHYf6!bo}nnQ9a6RXLf` z0l(C+A$YssAf7Eq000jOz+#HS7#0sY1!&Q3oB=T?!K03I#`teZNZ$0)N?u6bl*Of2 z{u%(sFp7cXpvU}-FK|yZaj(F};42ou7iiqJv6VZPkTHgW8AEM|FTL=B_`(b9!ONwu zN8Wm5usoB!_}0s(|^1Vm;S zOOhwD^M$7AhW|H4L*qzA_AdLDm!!ooYA}pH@+~5cO~bQjEIp6-+7t-p)$A0-s`Q%C01D72ip%HnVrNp!zkqe{@R3Gs? zd+moi*asi1c!gH?D=U726jBm0z`H1UB?~z~*i8lR{BSAr_niv)hf*+Lsz5n*RwwxT z`uO_$zz6^ry%u30Kf%}E&vy_t8Gt#M;DaKCl*pvAn!!?!l>5ixU$URZhKTZejVd6TP)lN*&2*Y(iRcj&o}D>xTMuvpdY``Pv^%HL0PggFUU3 zbu=|h5^ospWuNb`q$OlJf-Q^YB&1oCJ;^l*y+hGOjx@4SfLDY*aZK}P==zg|KH))U zNDcGx?He1{I_6KltVArkBEjEB@bRZ8fI7T5pI9Usr^&~1M7%bm`M;^OI@#gmICH8)mO;QT|b&d-@3SVnw?przC3)42u*Dp^jK zPm+AmBqh}C94^kCvC3JyBtCv|ZP}_Bxy7@0)W@Vo`&(1PEuns2`$r^1q{R70r^LLL z*06f8-I7tTYs13$(o$zlOS)3#o-MgKv;WY5vbl3>M@n;DU2{su)=su@;81_&v%#rN z1A&kgyR`q8JHi3HaQA=rk9x#4r_p`o z`+x5ihu*qgIfQ!QF9NHkW^<5-&Yd|$$V{rf=nketqefc1E`_5zn92`DVvEEX%4E3J zI&2A>G@yJj_m``jHCunZWa)$J%9Jm9<^%N=Wv-c1^^kIi^##tl@wJsKe%ps9rk8Je zV$I%Nd9$u+Q{HdeJu4qFgbAmWgYtCfW@cg1SY1du-lE4^b|Jn4`Ot|kMGzboRUy@! zuS;4U3peQ_!1|7F``Cd$E>)d3evN-cV{p768Q>8L}!F zBwSzNI)V|Q*sVpvDUqw;e{B+e7dx4;R{7xJ`#)AbtYMZ{l|R=p)35J2!z_);N9@^q zHvLk0mhC^e=_H$da?43pt;{>Q@t5>`msP%H^aqU#YkIG`jl-}&nFwtHM(8lqTQx%` zl)J4-0|4oY`*UIGB_9*HYA8Mipb^sj;!m9*i1mB`50u2FpmP#}T)-Iu>8WOUL#$w% zYbbQCx8@qH2EFUO2bdVoPHW;eu)ob`?^B!4pVJsde*hkrV~j997%GWF+(8CI=PQMS zL&5Dd!OvSO7#K(!2!2~4BNNmMe7NcYG?}cf2_Td-i-wDR)Q)X-2tIClTB`%m6|`)wzVZ#%l}=(UFq z?BBg>!PW&^H?Cj3YT1%$BhyCa3=aq$m*3enKibipmDQXZy~xjy5J^CJ z_Gi46nbndTz1TM_Aup$vU}P2 zJL8`x|0Ag?JBliO>&#I>K~ZL%^37%M_+0vq>-$UJQO;cYjwa&Lca)!TAMA(kUsVQ~ zkLD$8Hy=cX!0ZYOGG4F>BhFZ3Tqu%^t?|)e1_;gotZHB6Yb98sB9ZCfse@#oXtGFz zpOnYxKArgqpog&o=_5-03LH4x7+#X=H-2mSstYFIA2G(CH7a+WTjsAk$fip-ip*K5{OSBZMCF+( zmXH#3xa=jVFX-Cx7mFq;_p*NZmWixgIiUniST|5pNdK_=0*_X{e13n>(W;llGa{?5 zQrN2N4N`_5s>P@R1U_;A?lZI-JQlT+)_mn^vBHRviRBwi9PF@tvj!vz>aV zi!e@*X|0hbFk}Itsj}OB5(y(;tpEw{iMv)6yeAw!OME@tx#ac*!<@b33Qw)7L`s-N z2r1XX-Arn7u7}=BJ-q?l@X+6sFHi>OvtQ-TJ3iFGt5z}J>|I?{>j7n}?2`)XW<*5H zpt4nA-fispwrML~Jv6zRk}q9XQ4_s z%RP!Ja5IxT=uA|^g#O6GMxvb+A7uvlH;kBPsq`x9+TdQjn&nrx7kB(!`Ch$NN^=k& zW_qcUQKkbcqu{ z+Hr*19S9`wHiIemo~u4QJ~e;S>xc5%^36IgcIQp^sN}iIs`^9kU$gM-+Xml_v)8sv zN_hO&t`m4T^$A6iw!*geP_odZsz z(ugNB0S7v|c?$m5`Q&Yd)lwgfe_(48n}HFIB4{{T*6-sDFAAnj6gjB@AivNqpoh_V z^jrhQ2~`zE&$aF=IR7T@&vS{P(gYJE#78trpqx`73zSR+zY>_X|BLl2H@KqjY(tIK zh_*X}{)!mc;`1MhU7vmCx*f0YX5i}(JJ9ZJ7@?=p1D$}{OKQ6jNOCvU(-2=DG#U;&vaf)V~RDRD&lp9ZHAFZOigsP)yKoq%Lu2DJC56- z9RX;^n;5@|ge$^ER#B1g3<2^$P-POi#6NH$0b(p#kJS!vvMt2O;EX;}pnR#kBDUCn z$EuK$)uuctwzy8qPoH%?DOR|uUA}l$B%bvO`utPRLaNTceb)Vz%BRY2#MbJgY(V)d z%T)HVtCW>e?f+7wR}ow<;aR14);;K#zkr+$^puhmsYk4n?yrKTkO_qO#DAXc0drK{ z#enxT!s6^y9#Z~+T(^HPf2l`oKYOlBB^|*1r{b2BdUWOctH7t9y#F$krcPGARX$O^ zQ$Ara;vRPY+4GO^`gOFfvz6O`2cnoSc-zr_H8BmQIMp*iQn|{^fq)a`*P;u-Q9%(% z{)AKBhPbY7q72?G4fdAI5g>ejiT|Tte#^}Ckd%tP4XvUjD>ldr)xLsa(&IvuZ*Nz= z6`z#K+3Y*tp4WJ2>%z7Sc7_>qtD9O(kqxcQC06D-B|mbm4o%|gX0q}P=l_8Z*qNz^ z@MraYzQhtnrh$L}x+uCO02#*+Z_!j|Gt3YQ82}}lw~=#$(f%ji1+|Gk44qh5l-RnW zae1;Mc7k7AZi@2l0pVxwb? zeRrMN#>(N+pYqp?$xADgC#D=2E|~V&F6Ny5z}AN5ea|gZ-d^{Ise$axDc2O{?rdg_ z4MW9|%XaZGs~G)Keh23|a%qKfXQ_=z+B7&qF=FtBa!HEbs&H`})ni~j_0-0+Q(!YS zJTV;or!!_;|GA|NwM5N>MDNE;Z_dr@>HQe^TYhKO$=bs0_3Pg_)KPzuYAFy&}I1&iIOCZGE+4K4Gqvxt! zC*3*vM&z83oWIg@R4MUup7X&I;*NV*5Q{yGt?DY4>du~Z-6_?df5`PVE93J>IczoP zj|A=UnA0}~VG^uf4KaKA@`DiiqlAcp23KgLnY;iJ*J5x)t5HZbB!fIPx)2;!KYk_L zgD7qmdXj_hzV?jFr`;@~`DfoiXy8`)uc*E_tvwN;gK)_>Bn-VkVY;Og@Hi;2L${tKq?a^ z8Y`T8QZOz!>xc*f$X5Jf5a9DRaSjMVvAT(~5ZL9=Oz6`qnaMVszwlREYnfJg9~`Fj zj=W)Lv91sN{7ct@#h{EmT>vOapr302WbWv@qhHB;HO~`gd*^lT9_I_{@~5+ zFN9TY94KTy0Xn~b#ih!x74@zx$jF#A$$@i558UWM$V|!jVz+G z19z=&^eXNzj~9QfNk|B6TylNa+*{`7GUj^FD=w!dEv+Iq-LR_arM+gmIaJFMMWlS_ zYBxVLFQ|HGOH);UMAz}9=eCA=z+Y@<(9)L@dymX3fT3|1h6dnd z?3$~7N6PY21c;_f*}AR+&#ztZ_U$wO5a+0EX-|0k5za7hKXSQYk12nYS7U!i2|#(O z+J=Ni00QSuMdXTxTh9Q6fQEd9Xo%a=$R$m~ExdszOsQWrC7mTr-8o}XS06JuXXHOf z>hkh`u^w@HXw$;0rx$KtKNt4KhW?`I#YV}K(u-Y$w(O%ir5KZN(%(@zPvfudJ8VY{ zG)>4?I!DL`qrnjg42CQnd^KDMCs;>Nkc!Tyqr`3By7P1J22u>~V5?X}PXAuy;-G+P zPIzIdvP<~_`*6Rw0`rrkuP zO}V`1j;obTKhSzjo6KIP6koJS1V-v>c^Qv0qze^JXAEX5S{iwx{phQ#Q~*}AsW?$VJrbR zO&1cIkWZha@_f*>e@h z#~xK?M}P4GA@;I{ZyqCaI=JCctj#6La(N}j-z>~=`cWIrY8x9)W#Vu%|4380NahPQ zf`C)TOD_YoP3Hauo(UbsdCe1lPLIg@WS9J1H%Rv|<+`WdXxaPh65ge-*n&y6f*Gap zmfCsMyQOKLJfaN8eD&PWO}tYJljGCSDsL`MARk%V*+3?6SYlnAg=XCd1rEI(4HkE zAF2EyDiD>T#F8DAm?Jm5ytlr7@5>urf4#il85`^DFPBb~c`9Qi*fTT$qy^Ak=CCS+wMCPak8 zcaNZfU}h%TDq}6;Y)jy`paK9mMZBPVSuQkE3>ms*NpbO#TZSYoGHXs8kPzMhh5#1i z9}$A8u#VX`3@a~7iA7eO&RUe{X|*Vv%VzoA%L>z0u3wp!wtVfX%(br_Z2jbtzH~u9 zxE1x$sOByZXV6K7{A6IQjc^|Va)!mZ1o|4zNyL!dw2Tz;hxN#*V-aOeN-!sdh6HoO znd*H$kC|E~w9U#$EJER@6yOI8@dCVY&hekz9Vq6Rh^bZdK zD{$V7)fHVkljCO;*Dh*IWT(R7BQ2r6K6*=JQna@ywk~{PXJeiyp0hb>#e1)v`P$5^ z!CAw$J#X%+6pJg1Dylc!JIoG-r8Uhi*yosDW{FL5#{o;x=bJHq4q})IM;8(KgFXNk zHO(PhECS6T&*b3p!9z}D)n^#ZMqoqXt0R33NogL8tLnJp+$;JET@MYVxzu7>+0!U* z7JG8Z@ZhwbH{KYzcSY&yk&>y7FcuMB0E#;FIXEIk6swkA*Iv7{Ekj}(vfA=vKbtpq z%HZdYIX4WgxHBubWYSRn{HP@HBz1M*)#1HwTvZ_&YnQardDk%diA?!{IfOumo+-zX zhKUJ8rUwF8@UFwbg6)DJ7Evuhm|!JSMit~9I%P=;jpY4O`D4cQVQl(1g$x|lDwhmi zK#c!oN}HoDO~+!AB4S0Fxd8ug9cIqnxvcE|)4ruezZDO3HZ^trS$k&Q9g7Raf3__& z`==GwCT1o%#H&^}-`Z?#X>ChfeCNVkY4O$uTkbohj{JsCQrkfxA_{k*X3dM3rxYPy za5{_iOcvs}y^x(nzD%U-(^)Jxn4! z_DYwLl!tQ|BB~qf7?fc|w{_XISlApZ3++ypJy(*gXGLn85v2xb52Mt8o4F8*302h^ z+qux|Jv&!SA4=`NVUba9aTo)|>){tSnlz$8_m5z#cu1)7s)fyIlKiUTcux87>7Fyi zTVKCgJaullCF|miYHD1CFuah6@i>L~=Ho%t24it(Abc%)kLh%=34H4Z zM&jHk=-p6NyQDo`mZp4h?5i7F&a#vl2WGL?&%4r!#p|~AKGQSf>Hf`6ZzvTlZ5zSZ zBGh6$?#KEt3bWPqVS>m)zAzm(bnw71^-?1PB(G>>+*AiYauugKxFFh)?}%|V3LxnK z&A#5G(hrW!^SF+w4o(CLq%0ONAtr>`h$ zTr)LW1}D-am1%6 zN>)r%2$=`)7Z5ar`~_||tD7m@<9~H)3w))Chu6P(xUKE*o9maIswgcxFs*#JHX)&Q zxO~N0NsKnIV4YPIr(XS}zUTH&i0b8&+k4Vd-!__x=j>}y{?)dBZn3y#-qcf5r`|Vh z`Mrxl^}r)V1L>5wIqljP<|og8;qWw5?E6tMd7X=Llk*o%=k2HUbQktX zG}Y^KpXQ51w3Tc7+`{KDZh(%l%&{;iI!k5@LMB&S6kC+%q}vcK&&w*Wl0;)P3#R>B zwe9|lL{*unTy(gt^T1Gn1{TOCN~F0sHC$XeTytHG zsjj}>OuB=Z+I!s`PrJU6Q2|aUA#Ii@ehJluHA=OIJaA!XLRtxWgBy(lhnJfL7+Whr zmw=KzD)(;)N{c};@Ss=55NXu@u_8V^<;#eG4xxd|H?6WyE{JX1`{L?>Q`?%A&to0+ zDdoK-F%kLGOJ96(!!}FxP}rg$}lQ;%#snH*N$)}1|c!yHHcyd!gV-*_`M< z-p|AP*Sp_`?{Vz?9j(buORrG7Ld5gO)MM^-$>s|@!Avsb_1RM zphrLg22fWK%o_nA3@DSS zl%4j!&>oHg<2NA80gq1GZIWM9Rz<@0gtV{9Z1br(<%jxzLu0|7m(GYkpglEgw)~nP zJR>-9TfAS5e*RXQf;BfhN?Aus#dQ%GPU{{tkkv$GmE)D|t5P&|Mtn=z z;r@H?x$qME3fqg!C_W4JY)gx)R%a8?41E{T(3dIk!1k4uO4 z^+smu*n`xEQ6N^H!5?^n^(pvE59Qq8eeA@C;_6T6$)C7((mWn!|B_}){|^|kFywpT z4PMon&I^IHB$?IX^03Sab-+~+IwaU(W6@McZbxxkTyclP(NScSg0m(U#m5&-&ML@i zFESd7+OyC#toi?ezqcBN_N+qSXdT}25&~Hae$r>NkWawaH2O?=8owt9fsLb#u6Pf> zMbi2o9VK4_IUV>5ayrlpx`7sU)nDX?kwa*N|GW@P%EQ8XVTUuYut47E!5T|!550FuV(N{-@52p0Hs#1 zTrhvIKPf3KDani?qZ2SEDjbeNl;cKj%*>WNVry(fL#)ied67uH^Z4cT8j@xgy>oeL z6Du`U3^)rqr;G&Yapbl%J44 z)R=0Di!-G*4&_UC6$~||r8N!}nDb{frKUE`%6Cof5vTT?|1B73Lqd$nVF`w0{=$%O z**j8?`c{g;j2AkcF@@(oGqy|EBy~tPVWwl8k%+3QC}4p@W(mOz7K)G{zCw|CZD%%d z*8i$%pctSmW;;R{04}toHwzo3Ht9I-li)OwcM3Oxiy0qH!4D2p$F2C1(uPPRQNfM_ zoSW!ik;-QepFJxbSJs3mYuEvHHQg^v_*6P3zeOtWgSc5{iUqUBZrI93w|-h7{j!4O zk-wNJN8qgUg{Q0C2|%78Q+-j2DUu^m4^@T$D*_{61&{U@(YlL(`XB;ae&JKNK!Mtm z#U^08R62exT!;n)0aYubkeHXW(W)_z>t0e1fI<+aGykP+aS}ldUBL2V*JX zKIwOw#~>Z&HJnO73&49K3Of8VR#Q^_1*w+wF>v9)!y@`62t}L>(en!x08`k-dC=RMd)JiK zni`h1DO&bKPF<=lHNo|s6ohj?{3uu)C}Dt| z%&9^ud5dY>#A1}F%FfEnNC%m7Jms>Xx`HlnB5hHl0S*=DU__2@x58n>|9ZCOm_}j1 zB?e?~DxZka@#67wA9sdD2WiAxk4raPCzr3fb0&FDlz&8Lmz&KcY2g}{uKZDhMACN? zN`{g?`9y1Vl*ZVOE;)Mr@U06A3+Er1VXH|EiOgxSU4N7?aj>MX!yazJy!T4EcswZPHJ*eVvx=lWTxVQTq0hfcp%ht&Pag6#lUf3U|)y) zx*Tj)%5$3o=T=jKe*#~JqjEf*ftcE!cmcynu4CHL^2le z$nb?l(ME@-NFuE&JN{AxcB}#u))Z>GA6D*`GTIhZ*$30&3OALn`OWnmNZdPluXp#+ zH`f*~FN{l>nZ5hA32cgTH|r3+J66{l1A;!C7+AUUwH=2y9NPBs&dQ*PXC?+;bIYL( z5FB>&={UCo2{GR#_&a^4Piw0#%mkDm^Fqe)n9@83@K*i382K@T_SnH>yX*+kK-h`X zO;tk`6~onLbJcKp<#3hh2|qmyueeY@zffem$LW3Frz_|aQ{^zOtTI359~P&>jC%Wp z#`7zcT_iE(M0;;tN@m+gaZ|}iduB>qzdghf6KqJZMK*zE%@7i84t5n6FKElmY+FFr z(2J3hNHCij60&iP`^6Sj^3r}ff&G-IIVhNc%<+CW#ex#*nW}Yb2foOTsTl(kQ9n^| z49BcQ8ZV_pX!X+2_7^uh(`IDZW~4Y~?(eK!)0vew|E6JsqqF?W&dJF!nRdN%<()(R zUS5wQ@qNaeJC+t@bZ%@-F5JC)V`fG{7wQ@Rt?2l)R9nHMX_yzn8LZMgL-DrV<<5LQw9-1a}<%*p1S+ORATwJGyGq!F5W= zwq3i}VfmlR4ZP?~43LD&T%RzIT(Aeo;8W|tsdeEKabI&>posfgIK)fFB19evDV0W! zLq<)vc+Mu5kRS(7d2FzD=d!*^OH$q7@=fK#5AA4n3AuZldw$)iT-~rQUyQO})nhMC ztRGr`psDG=`l0&7_N!l7o}oNyD=aLPlFRayZ&*xDF|^43(eLClntOx{_Ux!p{4)QT zkib?X2yl_S%x)0`{Lbwx@k`PwaeWl7{}|_F277)qQ2biG-tqb~fee(x-OPm~@Vb*bO0!SmkLJb>^0*Jz3O zjru(lV4?OM8rQyWa5;_XLagnX8U<`NB^Xm%QgkrQ6$DGV%1*^g?}mn6Qic2yPJMtM z>e>zz1r&EIDzld4<;5pOmNazb?Rw`>6Ik}wta)N{Mak;ZhfAmBhJ`yiO2DWZ=4;Mt zlzsDyIu8!zX(#CXU-ggF`!D#N^7>1K`~KfU!>#+DTdJQAF42!N+U6E;KK=auEp_t^ zwqzhzA#ZOS^^q-DV_=1SP)jzSi|s=NTWD#NFELZ0xQ{HpX0e8;826v6kAmdgC}a9P6lAz{e< zV7t zAwUQv)XeUPCRj;5|$UeW%nc3&zNdou#{k`u$ zZ}hOw?wmb)=FH5QnKNh3Ak>~;YN&H~a=eADWpYN8Q%FicKuU;HR7SF;twnrtxN~T# zA7uHxQmnb7ixhkyCr6peljYMCDV1wjV}IvlCwJ}PuTh^teC zcmGnqaeJmF>8(E3>&BGJ*G6p_AJ^0JL#=jj@jX~YQ0KP@zsQ4R3&B^&N1e})gRMU% zoPv5JL5!XI+9-`4Y6Pc9JTh%xOkG|`c50H3SA1f6VBWkKtC*R2f$2%{UOvgG*&%r= zVjN>?jTlM5r~}44U?c(~i7@J7G;<3Fh&^z4ppBb@)qukH3I|x>L`|G5*h3sp`00O1 zp-?nAlhEEBEiXI%G-QH{$4-N|IDiQI~K{ zIXhGQtLW8`J?85x-!x~B|K(;JbxqRv3 zd2?pZte#didD8fCqeoQ^8C2T0PeE=*dTK(Dx0|)4$u+ru9@8wx-JVTF{P< zU`L(5AGzaVUhj$dudEUv59~t6u8oFf2TnDHxc?7e!Jw!fm=!hij#x+Z=&Yt z?~j9J(c5wm&41r6N=+^5lbTxC6rbwp>Ee==Jhd{!KOi*J-#=8c_HuFej?ajROpCj} zJ*!%}J~Q*)2W{1w{I*P`u(yXt@1lVH`TINC_vQ1;)OcT?+<0Yh7W>oun92U6z@)sq zq%8VpVR*Ppu!W_cQ+SB-?!ut(@SrUEXQ-=}t9w*rT;w|))6dMx&YpEfGqxdT^yr+1 z(Mqhlvy!oVu*M=F!kqjUi&|*TP&Ot? z6l`*OCd9==MTFU7(y5IJx729Ku!*@Dn>k{f2E#Oy6MkB2oLu~!;x&*ifiyuH(D8J~ zY3X@gPrDw@kpV7&g;R1;#`g;s-;_dK1AXjVJ*;~BJ6T-5e7PDkYOFh!-H*K=t9kpL z8#Zs+dMBsmgyu}`7wnZgxhOd%C&4{FI=ELrNKjnN$hM9O*{TuKa^X3g`h}jO+JOl)h_rKzk4uzOvgaM0I`!E6Y~xkAb+Tf}$rIwW`Dg30v+K^z z|7Jcr3uavJNAg)sj;y!sVQ%S4Vv9&=OK@zK}qw) ziR(m7+)&rxnEc3;iN)co7DV(d>Kl%OA)tFjANiKXp!WNJCc zpo`{T?3*r6iuPhkmTOqLzr1{zlP{cAzpIohFmz52LT& zWgFdge8WnBXCx#|s}iUoaIL|~MjBx@MhrL=M3S=D$(Qy_%&GvisC=@`hx_+m7rk4Q zCyspejr{xS)wjor)=YNbUmLD_jM27u#!?S@q%XB3J;bZ@m!exl@9TJ5ll1M4Biavc zuU;)4RDNOa#>yKs@8~{8U2{X;U7b#a1oFgtMxA&0451oIP@ z$V2Fm`1Xt^mlsx!PR3zU*^5q9fBp5y(L*bLx>h#Q4e<-!ls5+rtScY#m|w4iqQPO6 zD+ULNx0E~mk_(E&7p06`RBS3{jD^af7b>6^LYe&@9=;k$JDbj|&}iY!h#G|zF4kIU zL8FkJCm1S(A}|DE*`duEkIgmC%W;AlrlA=4nWp9P5be+>o}MuG!iE8ZHvDz^taIxI zTPWYJsEH}h3JA;@mJm^v9Vl*{(J&>p|GM*Yo}7FB@%~A;8#6VmWLnNsg){mGJ4N*; z2P=u4dpHX+?gd{xS{)SNeU1IGT&A>v12VNnzN|g0-R*3E*3(z_K%Q)3s^QU_S?g;M zUzz#R*7EW#FI1g7moO|lz&~eHn!I_yW9MeHRzJJ8SaYT$I=Ii2oD=Dj`-hRNno-6n z_t$09qN(|%<87LHbZnJkQ7hv?Oi@^w zjzO7@K$%997a`7Q*Ww$rCM{_Ykpd17#!}UxZo*1Lx>zk;JA^1?CF>C$*mcYgU#3na zn@poVd4$K&HN2N{pD zHZCOzd~Xh0sp1Prv`&TTn5%Ld+pllK0zM9a<0|FN2;uinqInrKE#*xpJEDo2!|d1O z_rW}$GSw}CjHUz1i^?n!|6bN)las^!mqlCUXL-}jj+C1>rArVqXf{L6q2SX&pnbw9 zxVaE96bg1xQ9QjuL{D@K#Igiz$*QwArc%BbaAA>JV=ub&t!o)s)w&>05?w}C7LOL? z%^hLYC+26yPd`*MeTukv4!&^!d>_R(deS$n;Qa~0v;csqAlXgPf7(0P*|TrZVMM-m z6g5}$mEu+r+mpp0ailU#Jf}P(o?ouK0(m&B6{mIF=~xchq_d`iHa~X_8lG&r;s|4n zv(;F*ga@281wr1W^+7vbG8j4!kWoHd2j08}s#MG#$BwBbHr)Tj1z zIQ40iZ997=T3-qhjD4FLU)fRlL3v74eh?kS0ayl+p6@7vNDHMGz*rT^Y9iVM#pLLX z6#_5{auZQj#=4J?WdTf%4;d6e<#twT6Z@}wVa~ks>-zOw_rkn6FFanX{L?GFA|<0D z#ls_YSVnS1nwR*^jC1QsO4gm5@hTluQi2mp#EdB=;o&7y(=Vn^h4pp7)N}|_f}JN< zo(A4rg(&LB(MYKyr}c{m8>>6<8O->^QFSi*V2t9is%g}}PTk|#$Vt=ezp2J;{Ca5 z#9J>83oo9UaWP}+fbj4EQ!}XiCCp9)xfbPP4_(Y+Z}U+eG>QaIW!|NZSF1pPZy3%2 zXG=e98wTs$FzgXw4WYJxF2i4%_BT}6FQ=YbTHupb7Ay8pK2RoHs+=rNsk|iaRi??C zBP!Qa7ET+O=B$MEkQRso@P|@dgK`}O*=5sg31dri>*STHMSOx9Vie^}&Z*4lwop@& zk(QJg9U0&lr9<5&XWQThju_~>)N+PR6?1ddk}0Ff@}Z%o%o`^hRvoHI>9h3sxJhSL z^_NiWaG;3p8|UttT$wZV*u1QMtDdaNTs&)BpHMhg1?E)5#+Ssqiy7WgfnL@g$%Ez( zD_b!vGGy4MiGJx}u8#hZuHNCko;I%OL+dIlR+NX@_@|Z6=^vLLV(%P){2;2DARmC7 zu^^1NJm`&S-^+te!Khu(0-%f!D3ft+d5v78Idi{EbLLCD-vIgK<9#OqdJpGDV1)o$ ziieBg-8mwxV6LYndGH-6{K6$Cr=nO2p;0G}966S>l;xC$>g43=hAGnT z9hOyN$5u(dQ=5$huP@+R7J^5PE2${bRCtcF5qTem1xkDcGi_h`PnvAq3%+B4$^aZX zKTr%5$+M>P9@Q#Q@CB`{_|;RunQT_-S$1d`P%NbV&?Q0vm=p`_z4#xCwDFo$te0F- zW=+G%RQf?<3{oGd2+F0b;|%zILrNw-b3l6|Xv3c*$J0^=bq!8Qn?9forN!D9+vKj% zFqJy$Iy^P@iYt}Be)9#+Xqt!LSsH6`MaPAXXT)_%om4F4p~{Jv-3u~42RV4=xKR+O zE`k7YCI|=tf`%aGi9N(6imVN{|(Ay7s#h_Vk`c;nq8lNzD48nn695L=QV{ zd;C!HqZk_R9PDLh=N0VixlnR(vv;%B<(1@m1iRa6q9|WKVc=XKZ@?S__DZs=qBGYf z2F7a&a2m=>Qktixu;i0-Tm~?U%4ullWV3VNxHMY~=EF_BuW|W-&lho$%0lt@;Gtq! zzli)u9CvdocfrxgQ;y8b3N4-6_YKMCytt-lWps8w_o$q}@*OiWV@9nTnlrO%YT6<2 zMQtV%-^#$Zf*r`l1ubQo$@{9tPx_KcNw5tTY?Mx;bMcc^m17;la>9MnBi-?FvG1b# ziV4RT7xYf(7a3QU>Rr6*^n}5ORt?5_yyy{E5LP+HE2%hgmDDcw%lC-#bL{0F>^^u& zS$KH)va-kl*|E0PQF)cALskxp2p;Mj(+VQ2>(@DH`w>Cunw zADtUwKWR)rQm9WaDM=dk)yF#Po|f_BHxD1QV^&^N<%&VMiCBCN95SJYos%Wy;Qxx(N_)v%;oqOHJRN(QC?wZx|bwzwpR} zsi&6}Rh_%L^@F^zE~7_=b?8$8DrW16j!-fl>dZZY##CPFh)@1BxxDAAv=H%WZN+bHkd*Yz8 zF{6*v^_elebY$+F1H(rgn49ybdsKEH7Vh2MaezP|uAT$(^NLII^NTe@DpmwLCiNK_ zJ9K$@XlVKJp%XWU1g)qjTQVdpY{-(1XZ+%E(hdIcP4GwT{{+c0BP%;St*D5~;CaKZ ztgRW#z|#)(iB924Rzn;Z8yo8(5r`eDlFV#FIdB%620u12(<*9y?(nUX67v=uoiP5$ zqJr^%`E8feZy9AyBL;_LN4Si*>YOsZBsemD;`Y(Q_Rq~rUvzd+N&9d63O*ATMtV&d zKN)_BA%jV^L02Ui?r0h{KG0SEs1x3FQv!D zrKZKlrim#->IMY`4XPV*sBB4DNC^J1D(};${A@)*0b;(1lkm}78hbOnV_>t~*ekBar9a_y)Yy zpSELd&7^;ros6j;Y@slzA1q*JC5m^Hzc}eV{X?DBZVW7$SDHSnB2j!pN{jUlb+gLK zjE}d*de^?D4H`=e-P*dui6zlK8N;BE9DKrD60*AJ-oZ)*7W|GXProM)P=-p&r6V1q zq*^E_pqkojBH420W6d4Z|1v4bu#H~&zFpt8%n4a*@c_a!3i9n$p zC67cQDvwSD0g4T284wT<6cxs10TczrRH9u~A-WYEZ^IfhHK^H?o|sV-RW>ItZ*Ez1 zpNzze@B!1ab7l+(e>O8FCOsoICfy-2GAt@8A|gV{POb3p7@L<`f%OLblQ-7Wy&{!Y z@N#8g82v>>iL(OW{Nf)G0r^Q{D$2hZ?G3TDpko5O+-=NtUXW>irK-H-&MNPtq+vNB zdhe33B^#;ib7v2U$zObYqRolGxL#>-ZXq7lsXKf6XU4jDKDIiosx%75xuMBRj!q75 z>~OOy&P{Rjk8)4IWKa|%rS+N{Y~5G&&trvtqoYJRE3H4v%lc)xT+^X@7QKxNG@{ix zMEJG9NDw;0SL?4gDrdF2s%{uel+s;Mul(oP72ZkxLPPr`dU+-G38me(H3(7@9UT-D zuY2~&jo^Yh5N z7A)P<(Nl2amd=iP=E9JdL`QFb+tMBm*80_Qvl!r{d^jsGCn40@J|;QKdj{nLTeEOF zjHJ5>{TWNAu+kYuh^3(Q#|{cj|5#Di7qy=(R5+y#+D1>F^>|GfYk?uP2$wxUh>i>k z@%1)^iL|8Yg|V5M?92}86RKAaEd5D|vJ_ppytH)L@aPw81JXz*+irA?$P5ThkB{@| z9Wu`~JTt&IH95t*cZjwzfj$9w@m}l~%I{C5 zUSlh~fwFn{x;+bo2IHMA#T-!TB?My^Ym~7XT6=ec-qSOmOk?X%m!!F0S+F!`LPc=F zsDwVFdi&eO`g;dC>g+v(9I}%(_emU->+$<5L|GBgNdWHArx+H8leSiDorVlzFo`iu06oi0MAxMO zunk-heO%y8(SO*m{sHM>F6zIcG4ursN!VLq}Xsf$D(ybV^@^=>Rj(lC>);PXk}xoKj7mPJ@H_*ypz`W zPlLxK?BCZxZ_s@X#?;yD-t8VW=tJuKh4$d1rc!5x9X7Dd8N**PgP$OHxWTH=Hs9;W z{e|*qoDY}-ilJ@mZOp0v+7B*!RnQ~4}J@Nu&%%# z&>xML%7d~lQ_G?$D7BOadyP%|k^RMXl=qE4MQuR-_>7`4skFz~MY-tW-b*uW=I(6^ z=C~ydNjoSdcD$)=|LU#m$%8Uo9rH)jWRG{q%*n9tZQr-F(026nIe$#R(SJ#7K4v0E!s)Xv&MAs^QR4R0jO!M{3 zPLH?saLyfA5ni@+dZzNe7}L4VcO=GU2ioX+^wR#_+SS%Fbo8zn;&+`J0jm?I!N&$2 zg>J!kl($vmK8Iu%l?Mmk(^8_BcT!QXcYaQiorg1mvLqjpWN!PggM-Dt5rXNWRAlqV{eRxnEUEeR?R#-I zNiKDUeTeUI8$HD!)P*8+r&JekM3~vM3_Ur`m0g%`5$&zwdabN6Sh|-IMz1aNNK1;gPjJgFEb`g;?z%h# z0Vvx1?&BjG=NH)8DH}ba0$g=5k;RE#Jv_ohopq>-e_Z6i=~=~#hDJ`P%B}m$tc+PF zYcniuoqC;e@N}@8^yIHw!?*s@J|TWubB(e&YD$px32Rp`o2!@?h4+pPaD;e}*HY#W zd=YC{8OUp5j2liYLPT+YV+67PvW1Qg*5DR_WIMU>fXB$C^`j=VE-jiiFCs6}C4cd; ziKCk5=PS3|BQyL$vcsL7qY9&^FRq>Bk)9N0sVRM5(YYmtd!){6nlkTfq-#;x$SCZe zOH7-#V|YkTq^oCqpYZ4bsow8TUofu5qL+> zeL?3O+S*eG_#g&MP_Pu!(>FBQtzvBNTTT%tuqv@ls0kDzHd*A1TX}n9jds<(nLs|pKgk!FpnIcZpj)AJms-) zhVbdyzFKUTunhBe2nh0H1A3a1aSNG$B6@NfX(6x7(a434>tiD@WVNqDPDtiJ@6@vR zvR3!Ju)<-=kDq_I?bFd;>^_o(J+=cEM2V8MZ%JNIqOZ+!@4Nd=ncCqdefRNa%jYZq z@oZT$dh_ULUt|ya=>p|tnycCt^eJdh=u^}`+(R27-CeSmM@s+3J>s??UfH*3Z797P7Q4J@Xvy81Sf9gk zL?;T7&p$6@yZD38J}WNXe*5^ykw^ZqapBk11D6epiX6VCV$9dlnzPd4iBI0$xoGE| zCnrd2l(89e4_DPqI5aOup~3L~>->qB_Y3ko=)y;z!L8S4(e7Nf^x22S8X#i;{`eW( zw7I}v4Lrvx2d%X*uW9&-!7(;o`kT`I2=3-)jFRP-ly4t$0{2U2H*JFKczoF>QMNWT zdLTaw40F*RQHV0_aFi;F*0hLDy^@6m!lhELL|$r`Q)9I^UUL-NufF|ODU|mp+0RIK zI(kTV&We6`@&)_Gal_1zK9Xr(Rva zmKH(4mKJb9jiwOCHvR7~S@R-27%T(_Vc(AvJIKn8?ayGo1Y}p~+8NR|4FWqvl-;FN zfBLCMT%QP^{LDlLkKUz~W21&|pPKUOtH1xQ%~yVZtMTlL^nuZiI!i0<-|XCMEu$yy zpK;)9<6EL7wI!@&%UAS%h@<2W@#?WByILFtUvunW6i1Omr3uH|gi|Z5!y*L78Quw} zp9!ZPIHOgZ(VcK6nQ&T!&EgmpXG|xYXcJDA;oqDNqHTAkv)+W$EZB>8hz@Y>nA5SS zFye@B8h(ZM4sbNjiOnj`KsXI7)czeffylc~SQxM6F{WUuBVT!1_pH*pAsrSPCY$-< z5YT{wsyIZY!Eu~TIJLr7agd5Ls1r_(38x-7^vS@%Mq4Js5#k(ti|W@LHSZiJ!Gu#Q%oA%=oSIHJ zV@x>pz?rM!%u}oZ3z}1ty#-!wpUc`7+X34xUT(B*SEt=Ly|p$ZVY#t#Tn5FC&GkNW%wt@0Y63@UqdE&wa=n5pr&Kr%zEk<~X0LI69$rybH%rW2&)qo!*pQKi-3(l|u<;noJJF1(O5E`9j5k9HzK(3|IaQmaelf zrPojCoKOD#Pp0&$_gK2ruFBzcl-CIDYe=Vk^Ex39PEI6${`?|;&dRaXpz!)&P>4Ab z4#^Pj0;e7xVbXHe*di`QEDI*^|o$3nzMvJf#eGMxI;)2P8e}nSM zX;l5AbA8zZK8v+)B7K<3CwbtpoREfQG&s&B6$gASkvN9LWx>;bHKo@t(eZTJY5+cY z`bVbps_$94)UKu{ARggcTA~jF8Y{D%n6WS(=nISojzcsEht9_AOoR2YI^u!%u{8!o z%v1GJ9uWZ_ylqn4L$nRNUqddic+UIhT+_Q40gFxQyG@kQUi+jNUSdf$Ji|xpWSf}ZQaSKJ^;qiMBCTRi%a>&4NP7UF}#>%-82FO0%f|uZB z=NcGnXF={=qCf1vYz4}=dz38u2r*2)SsLjN@%_Tci~t+2z}_L&(VoK#qXuXA7ZeOu ziYt_l#LwNusNLH3KL^=|M8taZ4z|`Eu<7lQFd#m2ajfX4yo3FKvm_jACDelNV%Qq9 zg;HTe&agsJZxIZ)5PgEE6%vsNFplw`q+ucVEcBuUd55xy34PcxZrt08#`Yn=PHApwYI0mmfW3cEuoZF>h*`Bd!^bQJC%&^ejmgV^O`;!`-(a(ewX-I|qKDQc zqhDqGkd2d43>^ojj2l|2+{&DPV&;SsON(&AST}*>y&BdxEv)C3+)-(s1FamQ+}$F4 z9bzgL7M*+{r*ve$%)+H(l4Hhf9izkyn;UA^RahAd|LN!x>h!!@WOiUme^yrpqP;BC zd!ZiCc!v6k=fq02zo}H~%6#BtXsKP3{v@1Luuro3Ouc{^oxUbI^`JvzLi2G3qr=)i zr&A9))Ow+1OnR2{Q*5HsB&3VgDxGR`esoqUKRTgF4(C+Dfq?qYY0y}O=cz%6djv0} zuZb6(&~V?36VO-&eK=1~Z77K4xxvuF##S^2F^;XE({(_q|%twiAE0-jiy^z-y%LD2my8iw5KY}o%{uOU)f^rg!6qU zzM}=Ww!rLIuV=@~uql*;Q$Y}wfM$8DMdh*+C|sZb>=4R|q7q6-b-5n)!98=sjHvh=N8Wdk<- zec^)Sk$C~O-cjCr0{bNUY0|t_S%R@b=&AJ15t>P5p1 zvz{33V;IIv)p~00*v$i-P%j+p*2d;26>=Ze-utmSUO%aGf6r;q9Ea0r6r6DU4A&Wr zYW-w1wA4>=8jW9?^;0H3NMCRoO@dc9eZl!4eZgroeNXxVbzIdK!xU$^T1#UrMnl{# ze5G9Ad?**p`M{DZr=b_?Ve#0{sq7~d>UU{wQ=q5(gsC!_(M_&2&Z^M20tfn+$*ovC zujcu@`Yk?>qB#=i0;ff&?lwna<2g3oo`ZLvT7Z2AoNue#>lW$2L} zOphQwwmn*<1GA5CLkOy61`F=1!6`h3a_OKdra-s`F?!xVtO>$UW9R!aw&Hvv zdMZk{hL)ZN-)|@7wzmE2`%X8zwj!vIo0{8@;C1lXPy01SJ+VSjPQIDOv$SOKS75}V zL*T)3Han8&AxbYQ0!A6G_9%uGt+qM&K9c2b%W&{`efnYSe*lm8D_z&;?zcWPFVg(3 z>lLPQEHRa16XuOG)%q|~t$VW!KWKCGnZSwQ^;7&%9IWCDR&j1(d^=S8C2+9&fYssK zhJUNI=HDvLDy63kSpz4MaL}esDQ7v3a#qFJru33evHoj-inB*~M#XtX#o2@QGD0tb z4!MM4>|sb0GgN*uR2)|K^pk;8%5j7v-RkEa#UJx4;)l@zKTj%es^5CkNJj~fM=*XE z9pHScTv2hZnDe8hew)*&5){LJj$>eo0CFaN?&-7`7jQaN;=c_)syIJ(qGRF*`x&-$ ze9mz?J~#3MI*^Z%j?g5wc6_Yje5~S-&dF!d}nH2h1XdP(mZ>m`4e`W(Cqo!IzW=RSvM?AMPo(Krkn4YMnm*@K8i zqmKGdqM;WKt7Bc*ElgwGHOOnb-T^oX45wBYD-KY38Nl-)dIM)XE4y;WOYPv!Ww!?9 z($30`(LlKzW95SUC~CdNUI~ABJS#h*fwD9F-mUC7FIgsD8VsMXc29CKw)?*mFRbi1 zFAY~Zm7Or$@T0s*Pd2$kH9tFi}Hyoa)v8FsV2)!PWCz_9Nej2WK&Xb1{Bx4N&>DcSY+TTg# zs>;h%m6zp;8?8YAhg_41mmigvRh*Yq91kVmj1FWI){FPky?_8+P_E?BeiA82{0o;| zY)_uvlcz6Nk{)~m?P_5)m!}8n#*_L!M*iR<|I@+X7n+fyMxr9Mv!Sq&mqTpK&3QR2tnFs^CD}A2fJjCc`dmL(LH zC@fd@vokG%X-_Yr_enU}fsQJnG;tgvsA@Er&mok68V3vsSZVTiat;h-dwLzPvy8m8 zXi@ipEr&wZI{3mHhMqde*kQM2U65BNb57{Awnce};UbEY$4{M!h3WSD>CgO}=$R8_ zX3;6g)%02Y!a~j8@279xwrw*apAuhtFfJR9xW7@t#2lRVB5R^tU9e#qlRAk{>i9~V z2W!5RyZVS&N4VExe1n$e8{3xjNN4WYJt?c|hh zL$&-oo8*I|$~R3)7M&f!3Sx&;d5GPnZ5fMWHVqz?Fy}8zq?H}Z^F}1QW+zL(-+PV9 z87tWGIX&4gQo%jVt!8%XN2$FvYRNu`p(u1*eN|^0C8m0?{}YXLmBz|$G`J0tXpB^G zcJjI+GD{|FkDLyz>2Nw##y%Z&*SPKj4&+sOTGz;6bZUjw-PSc00B07niH=fn8oSL` zI341d(`mv2{B*UgO;_6qr*j85Li=m3s z_}}0d_X!&Hx_J4jI?^_kF%f)Hl?>L_T}lmX6aO~84s|Ff63mLI=_$kzRF`W>{Q<%n=vRfrN2(7v=wun*Tm5|Cq&^ z^3QQ7|Ad45kMF!r!qQp(d3ybL;vW>${PXuIe>}bFDoZ!z?=pC>q`8%NROMkN{L2^x zH)H-d&Sxf^TGSo0R>1PYaA4jt(y0dyt?hvm)7l=V^Mi^5S^vf`B!&TbKsvG`E2}of z3-z;9TA)Ft#lFM#O>2Jvjguz|YC6{+ z-oBneI<-NJNp8{V74oY37x4Bao6;M9oWRp35C@23f_{?Xm^^ab2J1CC?OfD)I^<%4 zEdC#^+XPee6I!>qExwi7tqUwDC{-h(*dY`O1w!d+aKXCG+XxoW;Rz25YI`ish?eRI zY8}aCG}RH*G_{VfbXG@rdi`iBW2BRv+W5ZC!}NaBjSQYnMgmhh=>-0M!$+Op$81xc zMPo|h2YqgXVVGd1xfqYU?NZtBwp;VD*~%im!P0e9HaxxYGb$VKNM&P6w=tzReH+8m zW2o#zp&4aI@k9KD?3@fU%M;>yTj=!TO*VImB=Ub{X-9Zg7Hniqw}OME{kB;ElCGr& zGa1DsG3ABi#q-+mS!X@RVvMlzI?T$mzOJ*pdAcp$=jn}iYPc+Dq6qptoywD^Hz}RV za}4G>h+(3p(_H7(ZgZV2C{tIai;u7}trvE%GDV4yHfCkY^`tN8aDCf?=ptq_uLn3Z z_aYp$oEifz;F0T3(mV7n>;xETvhp6q%kwhIlVXba3#mCt4{V+ShW~J`6vxwXX8+d~ zPc;CEL3l`6Dla^UO7f7RWPwVI`5;?`nvW){FrJSvUKWUBqNQ^gg2ZE7jwq9^ebNEN zhvJX`=Q!b@JQgdL_}ERkMB>1AP*dcov^Fmyq7B+uts$%1+WaBKmtu|>aX=?mc|)bc zg7q2c$lFXfRl+D`k&3g({96y`pfB_8$mKX4xhf7cf$Ye1G4*fIIZHb0;wIEF#2CSM zSpNrJUhG!K7!9U3IE{w8o!bHLA72Iy>K{>eZrVY%(C2nsw!CkncEHmczomA7bhRB& z`c|F0DgE%=&V3uL<6uMtL$Cx*!vc zhNq~{0u8m#VlgzBZa%}y4RcB}?abN&!(r{68w^n%O5PKTj!dsb&9`TCT88$p=`Oa2rO$zdM%+>+5w`r&0U* z7GW3qW!7@j7$f)&9}iqraZqlu7sv48a^*C7o6;NgOL+Pc^K`7?sNZNti+PtYr1p2s zzws0sU-2==VPQ8PPw>$K1cF!t$}tw7qsv^KCh4+<#pA)0{lCoBaisGj=IWTda<^>6 z@DMjF?CsiVs_sAW$bvlckRH2UjdV}*Gn=PpXKGSs9Gqw#;sbK?h3vO7o%o5ejbherpJDZ=wu`S4OV?39%hQ{F zH|u9XpQraSr8oT4`TL%re?_+nb25LFfnGS-afA3a)UoGl1gx7*BK>u;BeClo*02jW zt-2M!2~%+fcJ-CJwK=7&t|fI8up-U-Al;JOH5X$-e(p}1Zid#Ooqeqi~dbV`GtH|fz|cxg?*{%BmX5v8xc9(4*+O+>3&p)J?y=_x_pnjm-V67yvwPGe+%tak zWWxYID7T0Cr7{`}=h1eK>5%1C-6qg^j>+=mwH|2E(33rQn_r7EtJiHr`gxxIZ!4}7 zta$n=WxQO%-oL=pZ_@i1ji~SQvRY&+tCJsgw@H(qdAaTia1dln)Cs3ve3i5x%JWsG zRw%#JC!NDNw>r#E=$@@-z}Bs!wFumw!kIi1S^7M7-xv6gvHMDPPvzUf?nkhD#+R0S z)p#AM!pL)AT?taj;?v$=4pKIPf)d~wb`&>iUGCMu?=wu7=IWgGa z(kWJy8WX8E-v$B~7ccW@Q8?(cOSC9D+tav#$}Ct^qUs!?S?G~Ft#s_^wF65xoUfVt z;`$QhC&@c=B!$}Y4lSKkG^urQ{($x8XB9rNta@Oi=qQC1Ps?U;xRwSNq{lkBm)7hU zJ8IAL)I0<+i7iX_Mfm&R(7eP5hu-D2J4cM$JvGrSp|oo4pu8~|p6*e(kRxjctX=SS z`M+rwSPzy<*gIGc293RtBWr8oC+vO|?r*a-EVOON-nfQE>ow{c7Iv@PmOs#wFVm+C zr%~|f=F9Xy=^$2qj1QC__~@#WW`U1veK@}HG5?0)L-7edE)bufmVtL3rgzNsR#&~V z7&QB^Z$8bw*;NlQKQrtF(2<`R=y%mixp@C4_CB;T(!1&<=D*3>Wj;%v4Ozo?3H17~ zd-{Hc_Ac`D1M-CV#Yg2_UyuVD=yh$^+tIFvv-iu`*n#=m!51oAfX@X5c)(dQ?6hc6 zsDXo{W+ZB{H=G#YH$|3ycJQE|kEe%=Q%@@_U*qURJsmv=S0)@hXw4$Mo4lO#zBo0S z)oPw|#Soz!pn@zKjKtjNt-`QoxkZA%IyYwqj2Dl%ps92e3z!8>WhyezNm`NN^oNmk4@&2-R6cHdPeFQB8DvWwHckM!@E>}uyD_7Uk?Yc4yshR9?!l+nKqeE5Ap_QmY}b=;58zK8cWu=l(A zOMi*I^K%$}3B!L3_*dBXe&pXP?)*J&Yo|3L15!?V8i6#o7VwyP@_tTx|!O&L!Xw9n5>GI_q0bgZfKOqY7)m zY_Erz&7aetK7rGy`k-^4;0sn~!lc7U& zGt>*wP4ly6HM^JD{RP7>`nTa%6eQcC;^<{t`7Kr+6$wP&`tDYN( zO<7g!9i|_c-5=u;rpvnfQlNI=ypzwt^FS46Z#Q39Ph}_hP6G$yDaiMT$ZU9$(S}#6 z93&rQq@&$a`iry%3kx=1gEf>u4=mA@BOT)(%%!h%R0`WT#x^QKY9GAM!#qjgeO{iS z`#vMC6Jd*2bz+_&S1eNNLXlb*cssfQ9OxWYr@HTbSd2VpXs-i@^bpm}eC&E;t%+u_ zjGsc_e9Cm)v-}?CK7Pj9?`3x16XRBmem2J3PK?G0xl&wByr534R(Xj4jrqE4;K0g> z@0^emF=AmO4d#MC`7Tv7@-DWv{}JJcR}G&Vrt&-)rmA%2!mntIJOKROHsR3zA+!O* z92IAvVsEyOi|E`mEKqS4s5tY1^I+e|!*N(WXZc1w2Y(^TSov9&@8{Y5%gB@2SlI9f z?q6knAv6y1*l4)ZtuOQg&Jm{fZvh9o;>XTZ@cc*!RTGy&t!p?1e$D(Odg1~yO!PaI!ogKUT6PLe40xQx3JIj57ZIjf%yDI z3_`ilKE5Ee+z_7vHV^vlLH1pC&-x17L!MO~WamM9^TZ37*YPr;@gpyjD#Lf(_R;Y& zp)oEmld3N}k8w-!&0YE^q_cVnzP{u74tz0lAmlL@IAgR}Z(;Qke0<$`y@j<`9oBW! z_F7|jPmJJoQY14s$&|N6@*kzP2)o1wf2g(g55i#i?oJ;kH)2V{LJ@czZ zevEqtI34OYIi0TiemIRh6OF^dnMcqd9}l8IzGVktl{U@Dm~63nB#&itqR$ylmEoms zbd~~VJe#-OVR@?Z=v)W-BYh>)2{%+4=h--b%E!3&KM^=f+1&6yoCaGp-rZERBV=R+W%Fn95U;F31@}CdSH?Dz?=^9bw&R=zU$BO z-YS3e@cmc1$AAM}1Upfy{Iv01t*8ELF>Hj{9REe9=Ot3 zCtYLTzhL|7?19ANDb4s_$l+eSf3w zFQ)JBdy8zbpl)W1WppeeOmy}dz8BL~I_YL~igmY5boRdbr%LBf!gx?7%ohc+gzjhi zyisp?+1SB?!s`>cJ+MMT9#|PMA3u_9kbr%q>Dv(&E&mPX{3EY_y+IG+vLv>tA>pUNt&$OXDhqde3p$Z z(LUPb_t^8DsM}Tg3#NBl8xwACusR>24MgY7@h%Zl>wSN(UUclR0Yi3#ev31)fN zrXyLiJc#?Qkw-MO)ea^K$|sYB1?4lC^p&_5Iwwx06K6)JN=M@lPG|3>dn%oK59m<2 zvOO%I16nNZ0ILa9zIJRLNqreLK~~TtV=8Ck-e+p7Q#{!l?|}jx?XaX%Q9ppu zDxZ7!eiU6ba5ktoe;PXNNWu4B29GqRHqvR6|I)4QT?Y=$=YwcI&$#&)!!fc=G8?39 zl$Wr%1RvwH$*&m5;!3_%%u^URQ`-ehe7?`o~|7|*J6y#t0XdHey?om#crFwWB2u)czLKwt4q=f2`4)U73~ z4zcfx`wf?w{~h%eYFq)s-!b-@#Ofb?ANB8TTu26Zw-M(v7{9*{`l^iA3bE|L_vOQ^ zui)R`_icB5#bjVXI*0SH7xp)bX+b;~V_I-KF!dFj&fZVE_Z6&6^kX<3f$AS(HZZwU z+1QiZnIAY*5icZT8L_^C@`n1inD-S_Qq;Q``wF$hSiVOi-(TtBhbHV{X_KyoEKJqK!?>I%mPh3PDeAjZI=$(dco*_(mESUS8hJwokD(2nV|JT;45wCj zteeei0ou@5=6|{$I4H~7&NeSjgJi^M>qG@c&>5z`& zbXw)>-EfM4l#@=(Gr%y6pkvbg+)e_(8eWnR&sJT$GL4bL7vc^3o>1 z&B~9;#;D&GD7&;{@ix09gyUau9n}mZt`GrA|?+`r&a#8n>;ujk_V^LB0Szr9-I!zgVSlj z{xma*pzdLRFxveMoq#yL(ZZ4(8z<3H6C5NVzMUvqXb`T+4dI#s;Ugy_*a4l|q|;%; zpQRrQneh`e;005Hho?<0S3jIo9DUNRvaTznv{@3PgM*+bBPx_DqSNY<-j5*mwLw3Bez-h^q9fLAcZl7Jh{{Fs#`NQI}lEi0|GvkLZEPxnL zcC(cWOb&eSda!sIj`SI57rAkJxt5hOP=ZX$?lqS8UZp{6OKqLje#rJF;lk^LX-xK* zQm-vybpm#9%=fNJN$h(|lzRDhrYFMqbMZU&d@(&|_&;}g?t$l~{VqgDSjX^3G&$r@v9K*-D1bgm5&kcXz zyIBnXy87KHhVO^xNemx$C&o_@!~a0B#onY>Q5KoJEQE1}d0g)s=BaJZNpX<3)7VAK zQgNyb3sszjD$ZuK&k8o*#%v$$!wL7xu+PF7^OxkD1jIUmLOWTVa}Yip%L>@;k5H3nW~LDbl}#)wGD;}rW#Zz$JAyP2ov zXJySlHM8U6`SWqiODH{yEsSt~ z2Afz>#Mlz{{r3OPr}O{7Cr;Vy%4fWK0vsLnBRziW$nrNf_V2&(jpa&Sd%Ng<>(-IH z@wwjKx#RQXyi>UgTBlT7jjc1h$rtq`i0i4J$p$~DS7GiG=x#`6Ih@XkjwmJ!;NCeLx zt``Ntr5N3ZD>k;{Cp(9Y7_qmY7D8vSsc{X#gnA}h%5vq_>#vK>*RPk0;bN&$CBCbi z6#q6~c~*Yz?5irHs`27}vYeGdI$DH}Y;R4LAG(4NmKQwC>F& zD!w}PAtN?W3$B%esbYL5N z7(eK>*mwf<$X1BV!SRC{_}#*K0zJImgHd*@;^3&$*ZyWH zD&LFp)kQe)DM9qce~HTOX;Kdd#X^$xXQf{{#!F2dHl(*iy=8e z^{i&a{d>7Z8sYvbd{6Z`z5Y1Qf)4SUoQr8pgSJ9PX3-f@td8P5 z2{a8ls#)}Pz>j#%wKd`*zFOscl;!6J1bRp z+?A|4c2RzZqpiS~=)Zs8^-uDc*frrIu+tp*nOfK<2_J59q`={EA%XmKEzuur zcR6N3`m)1T?5(`*9F`Fjm=WgU5|$Adlo94Ec4(gd^CRCBdXnPnlM>?M5|RSBQD2-p zeNS%bSeuMHLJte#Lb&*|9YzI$@b2oTNB-w>#|QeiE!G0p61e;i?^#Uf_&^XW4S2nNgqP#uf}&L6mz0*EI{lK_-XG9Ro0$+16x-XT89 z@!rR{)&e#FwgP+set@|E$|vzi_o#2Cd{f?%)%&Hm4gpXeQUDVHM2q-H0t~=6uHrfa zfVxJ!8~%eU(WY{wypn9`UEm76)N2{81SAKN4bjQ~YzI68puCO;^aM~E(MbT1ysH4w z0Lm-Tq%0$%KbMiV8$k3?C)n@J>UABiRF*aX4?s46 z$}J868B!Y&@&O`%JD}_5Tl$JW1}Tv*K;QHNZQ7R{=$U2mr}`I$$M!@51$8 zfXM*xCawpp0=NQt0mAWo7GMd0$~O_v41gS19i#Wh13UpFM=F29uLlGINd9ysp1ucc z0g%kv04D*f@eM~@DUZVdB$MaxEEM1au!X$u@~aq&>qkg;1{?yE1E?(!Kdpc<0HROj zPR|Yi2yYRf2~Y(fUUvf40F3WP;-x^*7`uqRq1OR9x{5@nyhofKh-y0W|Z-lIGrKco*?|LZQ_HhjxL=z(WcCZvNr{|gL68p*^Qz$@!7jaMpvYKL8c zXq$sC?rZ-G%tzYnF7P_;&0#a{r#=Ms;F&oj;GTf;M&ImurF_x%9(7%Y)1HVI%J=`~ zIt+Mo0FSzojEHxV8Rh3;SCp}79C8!CR{^#GC|~rB=?dQ1z4ipV8fkaA8m8c#K>(6h z*DLBc8&A-c>H^jIzXOH?sQ&y0W# ztMU!QI$TR}eFivB1E@W%0?@aqtf=n244`K#)O(Tx>3Cz=df_+W_yVQ_)&dBh=uusv zyir{}1?USPy2dnmPB>Kd^i66@luq;rW&ubK5dVvFe8I(#M-!eej!bNbV$qu2-sWO9A}>69FV=qb!5*n|M|8 z-t}sLd<>@_o!%Ayk@qA|%I_nthEMUGryiZo>KK(Zjf(fJaiEg1ApQL`q%Uq zAnX#Y#Wty2s*xI{tCFG#)0AkYXtrruWh*&Io-2P3o8nUK_qv|C4Z1({R(el;ihhiK zk^Yv&8H+D0(=3l!esAS$m1R|L^_tbsJ%W0a_n6zGt;e;VK0PP&ywFSPHMiHUURQek zVC`;QVm;5g+4`dOXEuUOfK8UoBpbzck?l`*qwHR?x3F)q|H{G7q0XVr;T^}mjx9Kr zzQ*Z$=Pc**E?zDRT#S`->-b{`>pl6?Dw;Oo&Uvv z5rKmOuLZdWH3nM;mjy2hz7$drGB>0pbhW20h|V#{OeV&9MbEiNFgD6TH< za=caigaj#JSHgwFl*INVtE4GOA13=HA4_pfS)Ot$wIH=M^^df^X=l>@OrMheenxf1 zCz&~!&6#(zin5kxwPpR9os_*O`-dFIoRXYvIp=eQ+=$!>xox?3^HTB}^KJ7h@~;#G z6yz1GFSuNoQaG+~N8zQy--^77a*8Gty;Sr=pO8M~eKz!Yr>|$U!I z{x^#gidPpuRU(v>mb45QRccY1Q(9MgVW2#4#K87Jwu5F5x;uF3;7`g@%9fYCKcr&F z-SPuND=MUl&xVZ{_DN+x<=V=N!@Y)A4xc-G(@4jWEhB#&RXu9QsOLuAADuP&!00c= zIF9K*rfy8zm_NrBjQwKVh;duSy)wRF{Dtw#ghdm6o|rJPZsNsB){_=Yx->aqa^J}l zCbv$pp0a+*uTw`&y;_x3_1d)3Y0ppho4$Jb%^6`c7Rz=Cns!mxFwWMOnktNE~yroYqy|&C^S=6#o z%Qh`LyX=eQKFgDqS1-S~{QDJQE9S1)u;Pc62`j5tu3UL$<=s^wtEQ|vv+A|gQ&zXF zKEL{pH9l)LtU0pgowf4X18ZMd`@>_7k9j^8@Ys~co_g%hbrI`kuWMZQ+~ZM?uY3IJ z`mFUu>r2;HtUtE??h^%1EO_FFCzK7g8~ipTY$)1LxncT-x(%B)G;V0$@XChwH~eG6 z9~-SUdTxx`n6t5L}EgJ9Iln?6|b!lN~?oPu#xS-bl08nvr>*YaK4cD3w!YS+bGAMW~o*B`sB zcDwJ6*qyPvboaR3b9b-Zy=V8a-Oug5y!(^gw|3v%W3k75PsE+C6*r zwC;I+&y~GFd+Ya}*?VE{J9}^L{cWFapX%XbL+hEb)-Vo7{)i9`GT*KUk)eSouS{j~ec%|X}hHo0~Hd-{gH-2n z-ngx?rSZ?Eo=u)j5ltCQB~7E6s+#JWHZ?UiwKYB4^h(qFO`kP=)AU2rZ%y}`<>sEv zj?JFU0nHK33C$VJ1u~Aeio;_L*BoAOc-`SWhg%OnfB4Gb&kp}|SUF;Q#P3Mhk+>sS zM+P0KJTm>r(j%LW)E_x>gd^{uO0pH==VqeI3^skIOcvV>{!OJf@9^!rW{*vZ2hr)$J&maKX&!l7sq}+E*!Tw zZhPGCc---V#zyI(6*SQ>QMTdjHf{r+z&xpSC^icRJy8(dmlQRj2Dt zZ#vz0y8ZM^r>~v<;`GmFq%)3Zg3hFz>3`=VTDF!N|Bu!)4 zNV4Q3q!8lVq%5MimccovSoB6fwq($Q0m?n^!|Duw8c+OX@QoOQfO&Q@B5&o z^e(+<=}qDL@9xNwY5Mi|`!LbW?#|A&v-93tt@hpW%Uk}jlJcP)Kw>3epMeU1Gk`?2!Ya<+U+`M&Z)151l-s|K6&;S#Yee)Hm=s?1GXwuXoDAHzw8tO*i3N67>y63r;Qv z=D^Mh>oWW^xImA~7{?wgtH?OvY{zFa?y%g}&5S#7cHQS0cj0vRvl*|mc8TqbH(1T$ zdd8cq_2SixH(Tn=8Y8#Gxts&H80moN*6?7?$-#(|o>li+#K{<}zhw-n7e{SnSe9q%v z82_?pujRh&KhSPl(dN{=+$-EJ(vl0%NJ&vv^uP}FH;B8s5cW(}EmL?Ae@F0be@SaM zi+=OK+_)D!2J3sQUYvwqE3=|~_lm^Y)~a=Ga8lk#Y8iRJX=pYFn8%8*8`>SgXRYl$ zt4ga|QlOv1D9!2-!W+K8J*n+8(v`Q1kf&_kgSHf8&FfK^hLjR;B|WconFXfCZUG!p z;HXNg`*=}vYCo#TD5B>!>=`>3F|Pi4z^BTq2Rh^tE9YWtYxO9gW)ET~g13x}TKnC9(#5+ z;9JSlal*_Q_zn7**xPnC&MkD~-u@iy;@OB_r>kAzTQH_uvGdvs9eSXbit_+QI*9n_ z!|u%i#L6~A%67av<9wWfumj!-L-Q!Kj$@Q|!j4_oO}z)PJc?hxj$s$?IBYtA6N@jx z?#xL%MI6G;yGyJ~F~2WIHb~-^NiVdn!w#(*@hj}>akAD+thZS2x87wfV$Z}2uxI^` z)}L@j#ZA@?*kSZT>k<4?;b!ckder(0GRG^eKUg@y*m|+`HvH!9Hk=;yJN%CJ+t~k% zT}akL)=#h@sS)|7ESjwMh-T4(=ae?lF4o`|ct6H3uzp}YU_FRm!2L+973;)$oMp2C zUvZy~(`U~R9pX%JmN*+<)w}V<_Br?xeIrg+-y}ARr;9D(8DcB;UwB2g=n?1Qy%s*< z7Xi_WFZV;DPxOlcF(|f)^YDuKXNvR11!4zImko=Eh>Dnqi(#=-jEG%gx7Z^t6r*CV z7!&)%xY#cahzW6#I4CAXLL3qoi%Z0%;xci$m=Z~GSfs?XNQ)z4M$C$gxI!EiSurQ( zMNTY;E3pTAwDVY z5}y)xi%*Mt#J%D(; zWV>7=*UEKry*y2Bz-G78S5~&WR;`Hg;{G}4j|WDiQJP%rc?R*7_!j`>uUX6{~TOF zpKD!XU5hh(eq-Gs2jw<-p4={UGm-XJ@UQsee(VCX88g6LHQwhi(HbnEX!qi zQhr$8DnBAWDsPjw%RA)9e7- zQvOQ*T0Sg)BY!J@Cx0*hARm!`#M_1+m4B9hk$;tclYf{0kpGmA$$!bmGV`OgF5I;It%B}JdNDglXMPw zXd`W+&GdBILeIcDO&58on|kP6@{ykc)Js7MQ6Kfw01eVMI*+#FUB>6r1+;^PC`=KG zVjD}GhG{2_&@S4Im7WV}l=jjX?W1wpPX}m%E~0}pNeMbc7t@>HNAmFO59rxSD)T}{uTXVY`&8hS2WOV6X{(+lW@ zbRAt!FQOah#k5E-p_kIj=;ibZtTw%hUQMr|*V60gM!Jb!Pj8?%(wpeb^cH$6{SUp3 z-cIkJchbA)-Si%MFTIc6PdC#C=!5hjx`md=rZO$lN%}C|N*|$*(rt7*-9aCtkJFv> z3Hl`6MW3R(>CX)^c(su{f>T*Gba@0BMac*Rzqsh_iXmPYU+Hk7H8pm44 zI>&m)X^sunUmZ_zobGrkwrP$|?Aha*OQ!O<`PPMWK9ieHrRR(3e0tik^KddRM|R1~ z70pLy^6B(^HaS0?Nl|QmhSKvh&TMXerr_K=o6FBTbNX{af0oo|U1>h!3-tCo3#r-T zNmGjVHq7Lc$I_|X+~I~~s#G*sF_WFvm}54VJE}>0eewF~T=8%^n>+3-=H_#Smgx+X zDr5?})R3Id71P;tCg~hb&dnvA(R8+$bRL*Z7n80%$+^SRNjaI3V;SfE%*(M$*@fAp<1nb4GrHfj>Q|RuC}d!b<7zaJYAh;7j!X{RvWDA<4CQBYu7YCccWOYz zWT~!Xy3zt90Cnc((lf@~-l*T$5)Cly(=g~W<)AOfsWj%UX|6Z2U%X;;)yk3^q%kp|z zPA|*pWjVbpr)FS8_OYIQEVrNa>}PrX zEU%yC^)vr|=HJi!`f%d&;^)&o%62dMP`)OrAF zJpi>HfLaegtp{MZr8GaC&KFWSTm}wjTdpi2+2+&7P?ermF(2>+m}h^mVZKn(7mmCm zo5?3#3+aN&ov~6rr%C-R-tRYR`Tczj=|V9xmn^2I8*=mMbY^C@INMyD#U;kzg{C8! zV->u)0KxN>23$JklF5|1Mk(&`SX?_L9*=9M0Y)3HPUmwyg}Ky1UGX@O(!#n_CZ8(J z9m%FotXyl>R_oMNM_rO?$W|^>HFYZ&tk%QI7b_%dYIMruicw6vhO~HB*no%uQ3GNI z#0?lWV5b2i2JA9mw*h+$xX^%61NIuQ&wz0Q_8V}(fC&RGGT@*AlLjOVIHW;~wx{BS zdJKuKuGij!8yoe|=(>g@xl*1n43VKLWKL+LQIC{C^>`V=`AmhO8JN;Sofc7AFpgaD zYXi$EEz}z^3ei%~MGGk{G_VX{ECNJE0ubEA6biU&X~<{hXEfi2>0}|3%$>+2jj)yR zZ%SR2&t$WiR56okui(lD+4PZOb8UrlrYD&#wq}$08QdSKSOt|cqbi+Q^{G9UoiEL? z0~G2S)5h1OW)0!ECf}_-9hsg?(UHZ6_5*5M$)aj#NzP#+6>yWKN{z$m{2cJZ*+N?t z)m&RD>gj>g7a`wJ)D?yK$)aNx4saY$A4PmL4z2j2F}Z@)4VhcMx}<@wAUf`9T={R26ZE> zIg*sRF?Nj@%`?V3BdlY_z{Zgk^_zB8SvFl!#hZ86=+LZ^O(lupW>wt><1SNy<~=n{ z&DolQYmae6Rs+W#h;(G};Tkpl=S~07nl8=rH3iqG=|68AIiFm}6^i-X!fd*3FB_X< zWA_?ka~ibloh@N1Xl9!!^tuihNks!D%-EL9*iNvyB{p}$ zm|N1oIiaSAv!p&-CTfjsDb<$hCO8I41~wh6s@`A>)LrHE2Av5Qd6u(m{DKXx5u6&tTnbuK+{M~zmXaxN1oho zWOcvMs?JS&Yk2If;j#BgJeu}aJGJgz&2OTH$3zW}i6`-Bomky3QKfC>+-e+R6063W zIjx$8NVP|MO@1|$I*@(lHUimKWmVJ5WLQJQ`PDR-n zo&~0t)*;~2g*CMqRoArFWKz@Dq)^kB6DT*-Fy-8-8``RgQ1Z9QmA2S(wf0dQqy=dr!;P;db?3)GhMxQRWjplHDS?SlfZOq zdrjuj6|ITY5pOb>ZfdLMFI{drR5hb6WGYkJFrx06)e;ZfpHY`v zQ<$hBZrrO@RdoFtwJ1~3MAtaA1V#11czeo+?`xlNXiRKa={%~GsLL7g z`tsHrj>!2E;TEyE)~L28b#LZAnoTn|>O!MlY|^M^7&K3Uz92t|2Kfmz$WNd_egX~h z6KIgHr$HY-A@h@F&^%%Kf_`2ZFpq91^OH7TkAr^h=jSJDKd%V*c}0M4$$|lXf(|gh z06%$~r$}G0m!GtInSU=o!S^!1Ah!pZPmrJBgG?Xd`ViNLD)qdA5aK8N5I@<6Snp8G zbxZI&Cu0g}W$_O?buVAi(A-u|fxy-z}dn;i1a(=oYeIkX`Lfo;N8`8MZ zI$+ix{4rwxwf6paW!;L`6@vWy9}KbeA@*`Vm;2f3ezvlotsG=42ic25 zylyeX>qA5A)gd0G2=j|DzX*>~gxjOs&g+>$Ue63h+1pVb%_w_4%KAiEpD4?ZvOZDP zBg&%?WxJxRSCr+(SdSRXiLsm*%Zag^7|V&V-7%IEW4SSw7h`!bmKS4rF_y>U6^yeV z;w(ST^5ZN&&hq0dFV6DJ5`-@pH~d398$&#cLS`2EV`kk8(2RR*NXtQ4%K_AK0JR)I zZ6~0%6HvS<%e0mSyw|l%MY{sFv~aV zY-nfsVU{0e`IUG#>usQ8`C*oC;>{m3@dn89&AJ@QY=4C1M_9gDr$am2A7S|smLFmH z5w<_V_D5L0iD!Sz#4{khw%^1x z%4~0(<;B@v6X$3j#FM>RVo>QV;H#vQK`q`F9MtCff+m~+dD@t8MA=M>pb0l$(1aVH z76+)s`GRH`0eQL_bug{CeURw~xopA<{dpRjF!TinSl$5h>CC#Lu=*@IyrP3ENU*`mTd@piuG)~*G?TLq(>K>eU zb}#6-yo&CT8g7d25lyH0VZTqnw!CiJnwX3w-0t1CS*`na+phhGChcH{y(KYq#JxB% zY0FK?+v~C6D3$UY?&$2at%PkwJke#?7nuro+c=HdJ$0npmR|R?+rDeec5FVhyhSud zVyW2p#gm<$&W^=Nw>>sC*=g@cbhzySg$*PU?y@0DPTN~h#U;1xQ|&%QdDqya8%iuD z-FD;H

    V$s;yCBeG2QF>X=F-5*@baN+dkCH8z<}B)V<#x?^tJu_+0KoRP6f+vy40 zE>9ThCu}j*Z9BXk=;fX+I}eB5s>KLbpSEKvma=JUC+Z{aMfW0jmwnDnFl*oB)L2Jy zJTd7>pmoRoNi=mRqgZmc?eyApk*;NI)Y7hTq38*F;9^fWY0JY$Y>|R|+qt#duJgK; zl6WM%&0!q|3Dn#%l~5#8QLSXXce$>~ip0WOJ6D|D;9c$fM#DvPK?SJ3Y04d2^d!|l zXir%k%A2;k14>r3v}uzk88srB{zG?rBYL6pifOf-npMnr!plvK6r1eq@N_1&c6Qq> zUL5Zjv!|2MZoAbB1Ke)AIkHRH1;i6h*e$9wj#3Ls-F6$;v}>2R;eiy?wp$}p?!_s$ z-3q65+wI=n2PVso>1bl3-IDg4=(g8*cki3rz28)JbfSKpu3zgdTWyhv$#Pp;#1_f0 z-PWao6rmd~H>-~peAr?GMuIktO_o*U!dc-(46hQqwbO%c6}-c=t1gIr)tZ1M!_a?t z3WK<6sQ$wMmMv?Y2QH4-*7?ggO+`n;IWbDAC-R23qV|EjQveAQh3%jQv{?_(( zfxUd;@ZwZ?t*gr}b#$H2@@_%!HvHh8zYqk>+qd%KmLWySvNo#!NaFK|G9TJLOdJBnLbyjs2e#2&Hb@w=z6pgMIGSvQwNEn?xE? zgW#|A%)d7WyzY?Jw-<92Uf1h2trv%AOeupQtDDz`nQ=KGF)lP9H{+#M(7W;!Dg zRynX9*%b01(G$n)!)UIaN|^Ve%OralnVR<46iH4a4arEd1Nc+|bN9)8l28eW*%MC= zba)^k4!Z!f6!1HR5GbOOr2`27zIP&^klLT52{MNG?o6O3W$v3nptqTQteu;N`6TprAd z9!wIWV-!gPIeaBjEB5~PP#iv0VEligPx(#dm+hW`j?S9#?o6Q?J*D6_1Hno#hw45egrvJtY2q`K(oth_XF%!UW>u6?l>-M6+i9q zs&KS-!>t#3myu_Hi~(F_5(NYN84!J5jmh zbXyi~#_t=)jf!|VGPAk;UMO3x@U7Nx@6#OCR)z0qyijbb-(0^QTLigc)QY-%uCtuF zqA`5ux@%kSYPid}14n%|fTT5iCoVKQ^q;OFD_Y(tZrF!g&l@JoG#xE(R;4@Yuf;EQ scHEG{{TE1Zhn?8bIBIRL-%`J!&e6Q}Hu1!Dw&P{EqD0Hi>8NG>FQr^drT_o{ diff --git a/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-BoldItalic.ttf b/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-BoldItalic.ttf deleted file mode 100755 index 1cca0bf456a3b6b42b3c92e81b4f4ebfa7d41f95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122808 zcmbTe2Yj2=6*hjy`)YXGvL#PhvX(7bUa}=`%iHmcli2Y}Y{#*)6O%y_LIxxu5Oyep zSw`4l1Sq346eyzM=t9JV{98!DXWx@R!74|L^fv zw`}#+iLu3TX@o?L5PH`B<>RAEzq&cjO6Y-)u;0HNKSXTOcMy7s9pCNC*KFK!?|Vrb z@Vy0>$y&W`Z1f{@`>zN+v>KPQuNmDkDgPxpmC(Z%;dsm1(KX|3PoBc@{Rp11X>#3$ zjqldo@;;$=eNBk%g~|2flYvbYj}rR24#(d`L|;VVCH^s@BfrN+sg=6$-bcsqzJ+eV z`*ykm@4M(OydR)H!~5?kj#ST&AZC(FXhT!`0$c&TO32KNx`%F9Gd79e(4Fc_3jfs+ zMt@EIL9d}dr`OW!==JmldWhagZ=yHTTj;IyHhMcfOkbvV&^zf}^lo~D-b3%D_t9U_ z`~RQLd6QkquE6UmY*({u*w5Lu>^gQmyMY~IH?o`9&FmI-E4z)|&JMFX*q!Vyb~ii1 z?qT<```9no{p^AN$Fn|U4`O==+b^*_jO|z09>Ml&Y>#4l4BO+_euM1^Y)@i)3fph7 zJ%jCc*q+7q9Jb$Md!GFP+aIz03EKBp|E7)Ge_780T z#P%At*Rj2U?KEs}VS5|fJJ{aE_AhMz#`Yez_pyC|?L+nvwvVxWg6#@ON;I*NN{nee z86v43hsgN|~2clWnY)4U_ZPC|ghNV4K*f$_jO?e)#CpZfZ` z*H^zj@_NJT-q+o)J{|D~b_qQgl3wu~iNOV}7&%Es9QIY2HE`V87^8#|qCr|;4C=`j|` zE@hXogY0s)fo)`)*%opbdhb(mCp*SIW1nNL-OavX-?Hz>5jMr9$vsSAGvr>Vr~5c1 zzu=5>azB^I1LQ$2a}C#W9dt+pkK|F%mN7h*{Dw!9C&-iJDd?r&l4r>8cpQ0_Jjc7Z zk^GUH$e(yJPvNONjl4i!B!A`^d@eVWzwk`*61Q+G`76&NFGG6%4!x94Ug37`;7;!1 z**u54$*bJMbGaA#?%(7+@;=WaACM2pM?9Z=Og@1QJjM&iXS|RXkLf*&U<^Q62G@nm%1sb=I|C_%@i>Qwl(-P{Z0p8CC`1||=KFEh8 zt)$~0@{edKE#n{aPiQ%9`avMbWMN z9lDKZAbI!)gCcCo$^R&{ZRp?Z-;?*A{5fJs870a8lJNI9v1C9fjYq=p1ZEvbV|Zy=4Ni8PZIGKaL1HquTyNGItcb4fRuN9L0S zq=)p9g`|)4lL0aa46ukSCd0ydiWy5kqhDag&R~9OFgLZBmpT@~qF4-zX0a@eC9rsA zV2PNgCd|}imWr90j#-L1O4pKgWC;if!-9|UkO=2+UI&vyqLD$d?&_Dly7Wyy!oPI^Wrr*#ng$BYA->JHX zK!aROZXj#P&&jp0qnpVg*wSlo2}Zm4G5)Paco=$O3MMik7X2KPqMEeFC&b4~x?~UK zHiJ(VZ>)dt?)lHsZ3B1Be?~rASQ$^d;f)4S6*vDmQ$&b$pAJ-pD%`|7Er=_MOn~X_` z20UHpUtF9n!$WO&KwH44zI@zgz)NdWUwCkXjmtNHT_?vHw8=}~&6GC{Arjbi7K z=We@h5%mo;WK)`)--J1T+RO*ifc#s`ZVzVSLd>kjVBO$=)tD5aVZ6Vi&M#@S=o^ea zI%f>>rPWBe0=F`?zYqG}chpl@th z=$oI|kDfWPUv^Q`UTsnL>e}kznsiBvkE?=J!$Gt3FqPvoQ&XHNv0Mk-YDrBMA3xOk zx>pBrY=$^?uJ~AMmLH~?1WR(7GdWru8=sky>P(H{%9>s5PrIbUH7nY3DD$*URCZJ^ zZ_Q!U(>h+slHAs$M61WxmE_J+KTI9Mf!R2)b)vGfW_c_6&eMhi6WvxLHCS_#ailfL zfK$$G;4=c)1LtR=UoS(y=0exClTE?I`kGW3W~s0sD-Fuu0a@d%q4|}C-ka@A7_mVP zoKe-Lp^_B-%rLbq-#@6I%pSuBF&2%yy+0V6=bh8+t;nmeC7ScJnD6LgA$FmW5K?IH z`vX3WMr*RVG#ZSHZ1e|I`NZ%TG)7YZ`@_QPkORGI%Hz@#^^&%J?IjEA*L7q|JhyJX zXZ%5LAmZOq%a`m|Ud^9-+wg)5mzB^f0uzOgMJ9W)Op+9l>D!=9iJx%!VejJ2$yot+ z3SB+t)Uj@xt84B&PtQdY0ml6Or`DA%p4(`iqdZr$xBcu-Mn35-2rwF0dVVXjnrM&K zP~fl3wAK`4^3w|XJ&hTSK7-qqOlhjOLi91EU-LJ)S=D)lV4V1+A3q9x7teIYkhbHR zg%9?;AWtaUfW*W(-{?mpP+)SxLQ zIw~?kuhVKc1Gxl;fUHQQx+D*E1Z3z@he&J7Ej`%oL5bz*U-qg!3?q&&ZVsGcnhwMps9|jVZn?d~8NZYgR;&4ZC zHFTAkB_+l{Rpl|-nc-{Ban%>3n|;mMuDZhXE8R`LjMV%(S58w=dP-icxYxXy-O}l> zn>=()3iv>2C2bEqf^4N$+NXTWZB)Bm%XWo;BLi$Qdw5h8_3YoL1j>)sg%=yF(&#jHv<_5>Xz%+_a(AG;8XMA=SxG12<*|9S|uA3ULw_P}LdwK$655ic6*16FqUV zF2!TD1^}#Q6_i#!uGgrQ|8}Y}lf~HP%_-5!(T*xlS$~aFt9+&#J^0v)MVGJe>9p-@ zcU36AV@sc*pJjFSj}&J&`>l-H>jp~bsv|oZ7^_@!#c=Pzy_*BdYk0n5=D#-KZxa^5ei%wuKlQ4h& z@TeVsbQK;53n@eW3Im8ET=a>3zJVsMHe!Ac)K0ce`CL1A-d#gO*KMrS$=>EcUqQV) zPSTBD{^74S!E>7`BJ0s8S#x%y$9M#C)d^b7+`LZgkxkP(BMxKaj*erD@YKv|+-=GTv04q?Hfz zho{ys3#5pW_L=vk^KdUWsSK7ul9`)I8ek1cBWomiQlL?ZX+;03vVa={goVvrwmmW1 z79X$GrFjenp>O>D5Y|FxmRQX^)S1whEW2L|Ii@h{5rEB^gyO4Ar7;K!AJl-EQ(M3W(SMD? zrvJndkbGI5J)%FDXtfZMmuvA`{kVfU+iBJ5OdhIL=l)4825w65+XGafPOV0BqWS#g zmVf zrATL^{K$KhmaaIsxVnR~-u-thT=}d0ot%%~@cUJ(Zl#XD@1WBK)aWWPFUV|at}V($ z*L05;!{l3Jv0PhA@$e+-HG0CZFLX;O@hBsawveTj*OjU#lIu=%KNp>o!#D_rI^XgN}jx1Yo{Te@`rOOU3sb4qHoEErtaOu^n{fq^c9hf$`+sm>jwN=e8@U#W2 z_*6NM-Q}n+&O~pOwz?e+C03eMj*evHf|)O*TJ(pg&6*7nJmjKnng46&g zDFiSC6SJ(8csXcdMmSJS#PWR z2fOwRub4xYmzw)fH3;c{6a>&Q*XQY)o!*gBk`#69i4oGPAVUv zpO;Xxw3^=oiPVxTF>BGC6h1%99`8Z73fbnY15ypG3{?-A=0dI;rdDM0gB#R$_WV23 zYlK+i>^5?alp(dM&jEc=01XCJVQ>UoPkFh=HPutdf^BZzOu2ILTgpW=`KT#gjQ1Ba zpG)V!r*M%9QW`A5l@L$hlh7<6wItPH6}m;Wp0hp~A*KGjT$}<+l&ck!4ii9F(H~kO z%n>S(k3WojG(bKt$_b9D{H)GKpEjy%uDjW9*D1&J3-{eM+JDt46*^7L&^mucPDZ?} z95#8%v#jOrWJf5omZVl}R1d z$Z~7i><--zcJ#L$$-rqjI*c!c7Y~Ls2k=EcC5r5Ke5Bradim9~W+~ z=S)BLlP8{ZcraHS2@ZIS=s3|W6h`ug_c?KRe}6D$)yni-M{cgmZFfcpt|LZv0m#84 z%W^vXV(J-Nb8_VOEcT!lR`{71oib}V?w8Gc88hXP={6U{Eo1Dqe z8nU42)H8c<+v!Rf&7z`Kw5y!J$|T?^z51M13?;kv>$aFe50z$%F438W$UVwYU@ zo3;J>$LnlzL`D?c=QFPvn!I^UDOZlgdfF??`sxd_jGA;=N8_>^N-7sO~hTN`J>Q&HBj%`e_vUMv#UA_k|IVz|E>;hWum>14h^~4smgykI;NVPozSN&M#L)Vq)^r02X$5Z@~ zoaw$sgp~%TZxYwsh-=Q9`A|A2KLzwq6wHTQfHr_vqalb^$l}^RmWy~pSSHehcYcyg zSi_p?xT*quYnAl5r|rM6Zs6SUdYcAPQPeiE>#D(3*RQFNl`mOhZgWXVPeYNzq{)C! zo9JmSDP8aNedwUy-BvQkYoIJJbovEXbv`}!x{J3D7Eu=5bjz}Wd6hQCoOKI_N8G=2 z4lL?zbTgJ=qxu)oo>=tJFV!)y2F>Ur0fUwZ>8NZId^mi`6MYZY6nY{2I;woOR$0GR zIW|S(m(vTD(^$57`W*Sl^kD`z0r3YSovB_IeJ?}0!tMxsR#2qqs49Nal|$@@761S` zr;Gctm5=YDiP=-nXVa*=lrQ8XZ%-w?^%nmyBsa~#xR2r5CL)jpg9c(;c$OH_@Bo0A zuqQgg$O6&0khf@7ndAV!lNt`kF1h6470a(%Rm`b@MLFwBihF}@oqS{}cG;cV0j7eR zZknL^-4!-UUG;qhs=Ov5?_nP98%4~)G*G<|pjL*a3H_;dRe~WtK}9oKwVQ-*N3AUP zXp8dEG&QWh2H7(s)3?zf_|)_7Q5K`KHr!2Lo1PTzJ^CyM%JdstUnTm$011 z3HAVLQQYKvqx0~>LEN&BX!I!;&KKBsEsoT+I%;hQY;+qv{%cJ}no*|OJOeoGe=$2=uh$u3cI4yJNY*-zoBUbbDg~tB=%S8gXI?$DaNk%k zOA}#@Dx9-)$CZP9=PYY*=pvL4WR0BYZtw*b)Z}F*YOJ!B#yM+!{@(f`n^DWwc3*eV zw!Q**7mK!?e|g(q=3aZz>HUS^U-9+IcJAowUr>iRWUHA!H0*iV);rMK0L^QwUa)Ay zgSH60Bl;$Wq>0f$1Oz+)KjC*lPSq|VBrOG+Hikr7<25S#3hqZWdp4J9^@Opb2Nx-y zOwpIdZ{1v>*N_~lfRAKAVomUR^?Vo52ceP}2Hx>taf_auCO|~p)6LV_vTi3RG zBUs)35BlCXIHS{3TC`yO?h9L{y05)>`vAH+u;}y)MOXI^^wguP?KPrrXR_wbZL6>| z-mrR4HTn?kGor8WL|-RBa?sbYD)(|+*N5G?&0pX2JLMnBt&axAI(*vbB@-_(%k&!pQUq3Bx4L83L`VAc;aD#5 z%*wv9iH(BY74xxd<|FAI^m`TY1q*%{CBt+Ppg|=rW}VFPQh!NdzCAHdBODIlRUZ#S zI8O4hRl)}1A7a12kMRnvt#(09=fREj8qLI&j|`99x}_GGGBm~4QJlN5rAVX6>lko! zU9_q~BNucnJ9SrZ#RF%};WUbG-75Ce-NmgX_L!88)fX>Xe)V#oiQvW?Curfkato!V z{N@5*bD=dVt$Xs4!RC#F4W2~GYEQd!Ej@J?OY$~~ww?vOXu}w2Nm?*jSd9|~JOnCd z6*2SxEZnzB$4kn`FDdh~rA^Xv-<3$uy&LMY#o&b=$8}N&Y>~vFS}{}5S3}qx0$3>| z#gXKYMGu9wI@HQ6n`@9BKNR10-lLn>Uc1B@brVehg_~AYT0Kx@*TH^IRi5(ebJ{qY zf9^vQ{OPH3&**|O&I{))FXm5&?tcr~k%aqeNK!CCwBsa##l2hqd{v zNMN6cI0?B(2)X{kqQO!ItXewB?zesSWd@%!J?P+HroH|4gHqzV_loP0&y;)ko0==b zYytoziq4-~rGcMo(fg&=wJM z&qHA738g*j=5KD+T=})>Wle=>$II+)AVty7>A@5*MtB^xqt#v!&k(Pgd1{0EW#cX_ zedJ&C=#zKhH@E4L7C{Deh+m1>od#y$ ze;$fJv|JTF0k_BD{Xt`%7amuk2;Sl;JoW^K+Yuo`9-u1KNG)71AHuW3@j~pOT8*uP zC@^Uq;Ozn~5mATgU`KVF)?C`xux+pi>R|5jQ@2-L9j%GasdhCjj!{0-44i#achBYP z%Jgk|eG*lq=I!3BZQh|yzgCLNDoia*t*D{Y+r6=+W$nBGE?V!Z_LwNEZ)5|zdt7kz zhtFH2Cac zUJPP9f2EG6n~VlyBH+^65YdPY=PrZ>4iR^CECdL^z}6fccXhUH%U@38lrO)CDLcQfWp!s!Dkf>1 zOw((t8Yf(x?rjYt!7MGytUr6lnyy^ND#}^Tx8#(X7RCy@S8m>3;axpk%UEqOeP~jq z)l0UNh2*yfdY~O+mWffT4+c}=c%%Vi9uGE*f?E$o8_-a}If&tdgjy}|{~Z>O)st*Y zh>waOnKV;y>N1c`c+|93)v|-ai{S?mjUGnP{rxy3uxhSu#JXqXX zVC1`5c0+G&N^X0p6%C@~HrPR;$;W&Q1dF55nixbX(Hf|HsIf7KA~dF8OKRG*&|hFc zaT;Jryusm!kJllxCqRxYnt++3b%JHoXtfRm+o%Ql zTkBuBWTEw3@0PamCGEvgF=czZTh?`#WN0)ro-Yx+xrfhtA|Ah|m#Gn*T03K457_0i}3MT}N0 z*(!vW5(_X&1Lmqp;5AG!Ov*4aZ$8e58XQSkDqagk4gr3`289D((BD>EvvlN)IVSxY z<=8q|Zx0sMt;*XEKom)1`Jwg^O53+z*E4+zJK*i8$O4z^o%$R%#F#DzjCfyu7yfew z@dn+q8DXkISE-U3^$`TH5rN}u2p6D%=xyj|ftUnS^26AJomE{*GqR^{aZ%42aJBH)7rFC*w}Rf{qvy75Qc47xDP&9KW$L!)(YfG$L~Nh+O-i2EbkmB%!w z6j(?bl%i>rl!=@ka5K1vJ}fJ0FI0bTjMNcQW#z;Ojj{H(sW*FSUp6g2sywA3-@f(M zTN02Ut~v7to_oF21@y8xG^?ZZ=yGB;f+AzE`|4M1_-l9ur+}Li%7{&(QvidT+Ys+p zMI_1Tr((b;1Sxiy~DD8B2f-7LbCl#!iq@u#~f)tih~cij139hEBf zT7_^0Dt)z-ntgS1+OnpmxHisaPRvN0dW!4f>=_1E>eNe8x!MovJgkR)Gm!zcAMS_H z!T(4Te-TFrx7?skPL<6%K0VWdCL{|;sx*f6RXCKK4*bglK(uk`Fwj-eTscMe1LPrGXV^aMMY-%)Czw5(`K5l_uXC*lK* zuzN|sZGx`~)9KKc;ducH(vuU)MEZW-X2_~li@eQHtcqy|V+IfW_Owm6t`JZJAGdD2 zbwv(Th|H{WY8%Gt9Xf^zr6gCSr*TZEKg;^(uk7P&=-`v9jO(Afd?C~~ph?j>VWF!= zHRqM^a^CMY-dN?&Vo_QLFw!Gvh#Xc z*LD@A2tX-k)K%AwyXG2uDnrO5rEcGj)pNa!m6a<*eub{Cu18oD3Vvr*-Wt*H@?xdD z3@EL7Y-_37W-^2}ufZ6Z(B@fe4NpP^WH9YWCIz;}4{)|5IrPJEY%SU!wv*u|qoKe* z;T#lUBEwyTA^*VqDX+9x34G`@I_Ash(%Uzqg_ITZ&D^tp`vC=(V zE$D|-u#&Neza`j8bI=v@Obf~zMuRqhw25c0ALT4qyY5>joeoqoTG+j6^NtF0Q&X+a zLRp26{;@;*$ zvmOC3u}Cj3@nvSDBqxH_R@2L+*}M#%BtOVSj$gXBHa-zMkC_k=x z-?}Ew^5zV$T3bBt>TPYx=QORL){)s%?bT?Vl})Mj2R64!yr5%z-G<`%*X`_ra>^>3 zlatw2Ur6&)9BGDVofMnjwzi{kti9A0k7TFb-GkJHk5L(gc4uB%j2!K0UB94ati8kv zRGBxpZ;0kryAmSO3WU4@djd-@kn4d6mIfoDF&;61o-CXiWd__NL^C0<2d-#s1b z>q{{w?t>v#c^DAoU{q8dMip?CwKS-Nmq`Ex8+VA(7urv4)6alFi>9@6y4h#nJuQhM zDr7ej=|!~l$Gl(7PxF49+v0tk`q($GD$3cPBz*Vjf8dflKzrFc-#yLlm|h^2Pn+3W z=*OAQaP6mX?H}=eCocU{yx$g@MvIgN8n1l#u=0w6Dsbf+n#A6x-P3PPze7irYgrM~ z;n|7OB6D0nS>%)&0rp6g3i-qk3G4)G2D(Y0JY#~vf!Ph}(u6KK4)fsY1kgv!tEZRI zz;u$eYh+Wiz0np(%uUS5bJ^lYly9k-K0L{6!uu3adr_r=KZ(#G zTvIvRQV13{NgJErU75J^KtfVf?W)Vi4Z-$YgElGtveOG&Jn?c8*XmQeHsuQLZWtI} zU2NrOk zN)oO;&QXFMWbuco{jf5jRU7uW@-zODrV@Ff$X5VGPxY$q5N$*Dxf&uJLpMt(SHT}7 z+!CqFos(s?WEzvu?j(;%j3b&1_G~uYUNjiZ6^$1KIggjOjLT_H;w((3_fxh8+!=C0h1#$aZ=D>pycT9TcnxkHmTZ*%9u^Qz*V?z|MM z&zT~#&zjC&Sxb}bg&A>~$+70V^7N#pz00fNyOqUdro?0xl*1|kL(zb;hYPNQ15s3j z5~Y%6RWPh!SX@=Kgm5gLnl3uNo3-~p04FXK3Go3KiA;Iqi`61W#KacGX8jx1u%(AAXMn{2i zE2M=dQ*Pm!Emb9`WnDiY-aKLAt!4eio!L)%7Hpl9s^?K1r{6N+dNQYRZM$9iY5Hyc zzNJg?WD!(p~kXw8j<_Zni9`w3xFXo*%2egJ_$%ob}7V04EGFat_KkgO^b62rKq{*rlf z&M7-}%V`PGy2v{J(7}bZ=e9SUS$fXabCP295mg0)mrviWGgS=NwQL`*(rb+sBegBt zN2=PrB_L_?C$1W=KfAH#V8iyk8(jI6=6W_?y}t3>mhKCJThC%K6`K}U0^X19sxRNT z2%pN9AkZe{zXM!d5IWK*Vyp-u>)<_8wgi4L3c+C2MnRy97#?B=a=WOSR8v{Rn>x6# zVu%un4JZ|airBc7?WFrq@f7z_hVqz+)@3M<7Ac<;DfeZ-0*d#jZ@?ZjvlY|+n@_(< zd6Q<|bo$NgSus|$PWhZKRdu$O*n?I`A)s1F2dEiM3|ygBBO~#Ya0CI7WG$k92m#W% z{a@|B^{d@q;R0z>??O9%DaQU4r9`?HxkepiOl12Hb>{-5tBG~9)Hp+C!EtIF;pFhJ z&LM!rl@);! z>F`QMW1ZD`zMwlbGC4T1uP4$No!ag%Zt!MAM5lipXaJc&+TPoe?@ZT-~IF!4cI?Cx53~lI#U(sRa&Wl082y4S(s2iJ@OiVozFu z-6(gb=Vv9-c&j%pJr9B3c+1Hj@@-;Q9t5KfxOp*rwH#y)EF?X_d6^MN-4}&4p%g>} z6hbM8vojfKoXAKYgHF>85}giqNTbmYB3HLj4{=*Cuc@KDv>*@H0~wK!V~-R7?nH0| zQXzD-YCl5*jixz%Fu}D#IOLG{aJMF>Zm_&+A=qAIv$re_PHvPpP<^U5E4$ofl5|Xy zoaf9!;-Yr?;|S;Ad5gyG*t;My!ZmQ-;Mkped&hM}b64)XxT|%?L`Q)^t1IeSwe#Z6 zb$4zkrVp3)RaqD<>RMJhP_b%mK4m-C(##@zqSfDE8_KNp+d+-ni_D99ZalM_@vgJ( zUet5L8FLx$+;ivRwu^SIYDczgZpZSi`x@IW+O?|P&G_(DPhnnGv3vPDm`B;9jNI9F z#10J^nVJH37vqew2zbEZZzy7(^?)zJ2!EgeP=b$e;y@8%IB``VgZ^NW8_8dV`8j3oGCXFs%aLu@i~KA#lnIf8 z;W-h@6hH@7NW?N7YJso~=nP}VW;EP8*;q8c+{}3W#I}mFbzEa`r2E@q4(qB1)|OR| z2F;ox9oH(iq!t&r;}W)|RTSAck4bZ|$MW-iWi+#Fp08<<-$+YRybxDbP#j&=Uk+a? zr)9iKc{;B@|BRSaThekGot~R%vKaKJBOuq4MN$?&ow?}78Q;u5k(a-b9GdwjNf4C; zGyg=jfhaprKd5^9A$lr|mjk^}9V+`l5)Y=`G7Q!CLh5NSWazdHKm5J_{^L<{p||;i zPv%V@%;X*{5Fi}}vTZ~haaiTLyoi{zLmAGgq*@(qg;@YUDlwF!AqQO+Ip`4-D^h4j zf0Dn;%WH3~3+C12)udXJvfXZHq^O(<-iXnimbI6REB|T4K|m{2S_b!q^lj( z)k5gk-MQWu0g+cHz)nnnge78P3}Iq~ril2|L-VsImp<*8TbadKy2qa}yry-0Ws=99 zBFQmkck)tZY`bvR%8ndWyqBwjj|?eq$MVzmHTE1j15=~(th*NBlR7o-x^N1Mp3o$3 zQ(;!IDucbba7w^QrJ&{0<*DpxIqF7X=N{wN z^FIJzi8#SY+$ZJ-#!pmJ)SRR{L$VsuIOs05qCKo}=o7rKYgu{8!pcm}^E<}NOZsap z7qgi3?BujOo00RV6jw@Gfzu@2R<^7Q$?tis!$qabI=z4hEsF!m9*e^)6P>xJGi~X~-b3fIt1kL3*6Geqae5LgImt9Q(c(mDK*d0{zrU>}eGs&r z7}qX#0sl}wih9h`?hln?wjHrSX`uu|IK(GaWol4AC?U-#R7wiSq}7J#bS+S$`$vb* z7IFUIG%5<}g|*4`xE%I`>`)PBcov9A0-EX*1l)3hHs0}Lk083m1+ zjN)vS^unwe5?qQJ$*+~rsp+%3)E^OC8iEP}#VkqKjj9(6pph685a@TP)db(8zYtip zWx3!)GW~?ijHUjjwVr(-zCPFc);A7!_6Ry16w(2A{~VM#`2C!H_jHT5ph&5gUqM@< zAej^LJxDwivllH8HcjM6s&ORzfDGYmtAvbHt3i;07&VkX92}?}zkYR*K4S3VU$3Tx zQw*g(4O?#=UwdR*9sPDLF7X+2ayzQK3~F6Deo)B}1+m7U-ixVXg4+Cc~ChjLZ z9f04oV9H5951XTGw3PF>=Nd1AKEB%Y709e$&f>_rU){_1nI%(@T^&C;9{YW5a|(87vaiG zu}FyOi>c2pk|gM$zIN%JjydZ)Y}#n?vAtzOhfQ-gkFxl4-1P++ax{;$mS(FTrHyUd z2axAn+`qMXQ``3be8znE$nEurBT#d3qieHWEu+l9M^RUZm40@@fB89V{ic~^Xt@^a z@%#mU#XhiaQnP#?$)}Ic>}Q{rT}hnu)L0!><9m{Vu)z0tfe6^AAw+OQ7pgBdLKUqIIPF#?U zz{d<7E@Sc{&RUS?&c^kj1w#ddP*3(uDdXl}qay#`@wKLXIRf&@QpcpJR^EmqME7<&4M1^XD z)$tFpY}HR=5}k7NH+zL!|b{#l%W35m$}_a|F6AlZ$t!57 z@{DK~pSf%1dTC1j1bj&msU;IZgEE|^^v$GTez5)*>8W7y-d|88LLK5ep@#sQx?T6t$@$ z-!Ao}y^!DI=}zi;0?Cj95NZer{9qTHvdFT4!)8u*0JOmrTEk&{F^|oX(7zbUfYBIG zi4kemeyBRQUis{y*m-+?v99xsL9a&6^%q5GjoC$>G_GmfaK%8=f$EODHU7GJ5!z&T zu?LGA2!#XM`LhA9Ix$& z6DJ{M^Z#@b$cfog+G1#Adrtx|$siIY}q3l91S|Lnh@?qrE*~qkj;{c+jP=*K?!H}Xx zN7J9nXjZ;f+cJcvsoa%j zZ&1^fLK#ZjdF4l)uWb+IDA9!2EC1~rS+}jWU`0Ml23aezll1Pz-svxqYFLH5CEyY@ zPf4Rio|2c0pPczFQsLW<6hP1XD7AeytNr9$CC=8PGfqy8hX|aUtMtR9L{I3E(F=#4(AmjEYW>L{V8@T$Jm!XQ`}HQn4dW9WSfMn#~Gl%~msH z;W(_Kf=Sd7QQ;tn^+n(zh|t5y->_2Dr4PrnZ8_|Qv5bse%QgtXC0=u!WXV`+kCNQhdC~l|TT+${ir<)QKflYs1Y>0gX>xcIEFA zvm)QE{L)UFn?=&ELbv~M`}C2w-lBim|Hu9Ga`c-^X_bzmU8!QGrz9f8AjC-zP0m|U z#!u%U(RCJa3%xc=ZQ!9(Nou^w;ZT!WMIKH_a0Ja3;3AS~Fi1ydNL1a*1B)C@c2{y? zD#Ch3jpp^MluxE<)N5B`@eX(2C9BFKbpO=oXl7xJ#lg2t?M1EO9)3EWEnAr*WrII= zk)5HLDQX}Ho=Qp()QiZP#1Ha`AHrFap)6RjAfZSO4Ci#sNaOY9zDrh?(+J(`TAjI|+QJ@nwN*MOEA&i#3RxEV zDSzfeIU4JKWPn!yz7<{u)*MALf$AR5CdxLnMF6IPD-}d~$m0<3Id}F*b;%sTtEs-@ ztfTp(bA*@T{@yu|aP^e1_x+0qJ%53x<$!RGii{>q2{o(Gie*xLv-KV-cPXVQr`DZW z-?Fy57)#T(#x`%cV?*7}I(m&$IZ{hAoyuEt=+JbZ$z%Gp(POOb^=If>WI3@^jsx32 zXUY20tLdMX9lfxJ#>;6(_v9iH&@0v< zL=rriNA=naAY8i{%h6yFDLtUAo?%_)*`Y%gJyf?eD3Zys5MlS+B(KNrKnkK=EIB0F z7WNLX$``x?GdMTDy0Q@FUdW%AU0Fy9XHN+?&>Js4o0M_wXb4t29Jt0cNQm6)eN@j|?C>h3#5++wM-rvb}CEqt2T7!{Y_7*zK)VSaR1C_dqU6L40{&ffwvP zG?&HZ7niuPN?&qzvEP^YEWX0~q^!7oe#R%rDk?51i0@4(^jaV`&^ciIq+3u6g*Z>p zj{FJ|0mUTp=-^KfIws^AAOv5rD5%2`;)_FFr49R4SUB})+`xH9*XML)=bOCAmE#>n z5sygi>wd8V&P}xLuSjvG_J+~&@9qPS{x$T@%eY?-!OCozSg6W^wGDAkf_pOz8>XKm zYj9sYSHGw$Q`1{!6-<)d5sz0WkYf|p|73$2%H6>zYSne0v|1m3{F$?(>epR0Hag_U zXt8D$J zv!vZ;jEp?K8iv2;|7JA|zN9NAue3Vj|0C@?0OBgswdXtMOk-%n3^TL=hN-ln3@~(t z-dh3*kc5N)2_&QulNgOD_7ZzyuUWgRCRdGRz3N)GxNcQ@x$sdNMDY*lZ@q zHrdLjf^6d)=Mx9$_DiRMZYS2%ML!k&#GMzM4#Iu8ZRb+q=^rGAM64S>a@KCfnQc;m zYk6MA8Y$u!svI=z@g2bE z^dUbXob#Ft<^qNi^)5#L;U{KXuM4LrgThoC9|5Zqg9#wMZZ> ze%c5Jwmh_@AVM9r?3$OiufJoBH!?x^mS`>R4Gi4YRh7MV)0Xn0-fEvwUZc@QdFrGt zq5sNfr!qJF@WugAY(MYt+S`hT>OF#(>ptqpw?)pJ&Ajz}*(o_~CF!KYes$@ zTian!f2(;@J3`}`?Ng1cq7AFO5@%PJ^olsG{yiOA!C1VHi=FCOF6#wu9++H07Z_X9 zQ;WS;;@V6t_9Upg;JdNFcjHe>FLu)pu!3Nh{9TF`uT&qvb6u)h1!qJ^O#XOICBnl9 z&7^}R;0B_R7{zT1aOgk@yThn6gk1qT!@?j&?SN)3PEM!+)Vy$4b!U4U{Wc~zD>}2i z&Bdu(q+CzDD-#a!Ex3mS6V0b`2W9Op=iHQL;moWIKh z!cM5Ji8R)L{$t7#4ID;6F&V~yW_BeI#kYDcer1Kmqd<}Z!cJQi5bHvGiaFEd^bYzc zg$Gpsb$wZ4ls%`^k(>@Mr|wpZnc0e3bNx%314J2!_kJL~FTM-}ak8o)=!4M%PZDOP z4a!Ih_>-IQW)cyUVK?hFYWQW>w>ke+ycXe zQbt*Cp{t&LD>SG-@C`O++cKd0lzVKsvp<(X#Sxfa`lECoVn)POI*S41u`a9$@@ptE zgHePFCBj&$eE%Psky-K9JL->-xvH1{iD%g4%Y{|PpTXSQRjU;QHc(BN;x*)$0|Z~m zqabj&;)};Ph#29MzeKcR-siJx11T5+>lqw8Y7Q?BHTfRrtq!0lFa!#sgr(Yi)%G;R z(iuzkRoK(YvJQAyv;#aLWN8>^$_NyMO?-Nu5WjrYjn}`9dK1HV&Yz{Hj^Ct7#B+eHAREWPr2!ts zpK}Uq1vqi!|N4tO^N1!pfgp&cQULoaBc4Lc+$IWsTD zXlre64y0pDbIa58(kGV)>geQzMC_Iem?k@J5PhBm|X|6#QQS`kwB21 zR+^KPm{Xoc|No=C#1kLq@Z0Sr?)bP2KUUJWq`yhsnthlTBLPj6jXnvqmlmFVTH^th zApiMV%|3Yx`XaL3(ks$ET0O2OzxhgKuxTIT;A105I!68}c_a%(THF*{J;j&#`0`Yr z<0jaa`mn2AOO+5r2X#yFdcln1Zm)&Ei?z)7_Kor#@$SNu6tE#$T!ksgg>I{0wuC=X zzHwW%dij~X$iItc%#@LzV#{}$fg-i%rQtLBi9X}s;wP*(!3PY>h}bV^RNJd)XwqS8 z9EP7p;pD^2QbN9$)VfR(4zZ#Z$B>=eF4D!JJ#WCnB3>)KcB}}u;2+`m!(kpKuwAfBjf93KsrzoOo9MN9>_ziK;&69S1p9$qp|h z)t11jf_{d$h2rVXpL6>c2pynu^S~dJqppRgRTxKCv-h&K5`4?BywPi;1QP3pWg zzkTcfLY{|yvg7w-%v=~V&clTf^71^5Oio3~#~X_j11{VzyX9XChgtj+^7~TJvDav@ zXq=GwE#1V&Tnjt_jgyi9H9{zjK@1iKAMYW7#s{BdJdG21%83D#{uGIid1pFjgx`8X z_HuEzcjjF1PxihomcK`HfrMAQgZy`#^9&E-j+*%mjg_ClFbliCtcV=Gip)cX^f#^0Y7VYqs36oFtX?j1~w&` z?|lWEhj(z$R{&81a&?%ZMKx)qB2?0yqgM`Q=negsKDE&!f8tqv)sT~ZdwR2%#f6?z z3rR(}(cWO&naS1pTtDHNa8 z-(DUow8mEUu6AS%bXOZgPsWsW;p|XNVP%6J5;`{Y5?d_fC+N;#aL~r#(`L0=EqqX5 zIbo0?uCWOzgEgEfivO!i+VYcitC(q3Y}cM6TkGXd>epY>pB%Z8#jVsxrh@$2nNg@T z2K&c~gp$w?Hht%cWzq7zY$#^*+9yZx$@g4tE{J#EMuCF?>m&qfo9@U2&uKvkWR>pwg(WmMJ<5a_5-P$`+b9|-O7m_ zF$au12;U=yNg)gkDn^cSe}@($#icfP`xMZjkSlbgr7}Ju9#?8bT1A32-lVcIn_i2| zc4dq5zv17)lE0r_wL zh#tQDF>!3#AjP=KJ^9^LUhM^$>q`7X&3Rf)q`NMEI#vC$P&9Join5hGwMhvrLu&(T z?%9SswH~=peaGmxwpE9&5w?!F>L_8&UeS{?^KWNLdPScEL2upeO$?~zwZAHp_| zAh`p)JsfvRk~P)>DAT}(7#BW289IXhtO4;=<_cZaDu34fIg7glH3Z6!{ZJlauSoGT z$Ld?LMuWgE3~LCv*Gdr^1Wi-_-!Seo2+<=q z{&45?Bh!TuLPT)w#fuD$Z3d0b(^JwlCAnQeKZ;06Z!bNk7cB45mXw$$ z%o!{)DJu=QIji0~wf~Xz@n?Mh+Qp)<_=;yY#xJ^dYfo%^)_I`|ilOW$IIl!$4d9Fr?P_3mJFqAO684w!$U#l9$#^c~b zKMgzIf(0U|(;87~qPQsEmtcvFG3ZrItckC%@c8f)F}tEQV0`FAASUy8mk;(RX=OMW z{90kNXRy0mtMS%#*c^SG<$7?66)l=LV@GMh#tozGnWC88IFt{3FZij7`ZsJpv$*rt zy}k11%v;fvn$g=*qSZRfo031avmfegrTLkKDG@BfR+L%0rlU9=wGX3G@|#xHl=j!; z7-O?bg6{h9mb_%Rgk9ac2AL}_QLnf8Gd;N$4MU`w#-&<5OFD#e!$;bdC0?nG#bC|h zutO>cDCbqa+#Hd%k{0d*Li&W!_b?^-Hd4?*0hc`>9ZHpbfz7KLA`F3!hfu-BBZ`Hs z16h|Co#~iSgT-#Tqh(vSORHaU_BBl`GW3L3efR-+IB)sHS)H9jW>2K6Y*Bg1=wMsQ zwm46YFDX7XK1!V)Te)m!=h!`0?XCRh?|7Td@`zLexoaiM5q478s5y!M#tPY>TE_Wr zFp;8|8Qw(6!DI?sU{BHac;JF>7xLhcWStGE&114Mu^%P`A6UP9SBq8uwEW3;)P{`8 zoVw}4{hSBq_C>29^tN8V_}CLtTPDhQAF+^N{Q{#onIaQKztS5il=@+vWV~} zl3)q@61mix6)o}POQhk1x`C_~h+uMyaQy>DyK|?cw)$LIZO(+!9Swtfx@`JI@<%vc zavcG;nI)Qj=yfomc;wP0>~qW*^ot|MKaouEhj>+8Pk12E;DJTRfNF7o37i4U0*^Ah z1u79SO|G&f!&9*E3p@vFLIQ z;b##T9AEqD;+e}WWkqhdG1xnp@x1Pda`x19yicl2!kNcI%DVf?iNBOLxu~Rk#&LWPD)hD<~k;hGzFOqP_DG#TTDCV9$bxpAp|2}(9rtS zYQga3;F^@b@WcXz*MV0Wc(R*pZnEcrTvBOutxV`(VWfgWU zYSf_?bZkaxR_*c{P`+xilSganR@NW^UR`(o&Iu%b3cqQmk?Z9rkpAVRZ@sf0I0=V56UiM)4lC zs+bjnzMN}eo^Yx(KL{0n(d-EVDS)LZT(RnwjpfpDY59uA@kXys(i*aRYCQco^pL7q zJ9<{-x|GTyms*{YTV$TRbDa;ImMgCNKAiUzQ#X&Wp$TNVuh?FZS~=cb5~+<#c9(V( zww$rNG4VD-hOac;mVq*(rlsdSygqH~53cJc{k;UT_(^cuSa8SzEklBWPXz=QMIA8< zP{*@fnO-g!*enWAX|8{^EFvPCLsd&81Yy2mt%khRV8Cb#ARVAave4V%hNDmvxEa^6Ot*Z`u0N6}>FWb6bOko}23n1TSCNd=)8@cizGV%uTY& zM>{2E@nvRpxFgE81()w?OVD@9-}Z_Ri;HEivpO%?68&>qBH|iTS1)0|_%q%=h;gfy zDq(BVs8OH+Z^YP9tPUFrKc=bDJc%wf38ygKI4TVZ9xGt5bdFJ`!n+e{DLokQwUy_j znKW^lG}#*w8`E>~OXqF8donw60>c0D+@TiG8)TGsEbepdWzsq9Z25~l+kbV}DnV%4 zb$ElY39rIDR>&FBeNqcz$N|!EAt(U8fq$(HI}Eto*`+TMm55E?aYPhsB`JYa6e5sBLYWRui4+9n+QcZ?0>e>Mlw~45|CP z$EOG6PucnY_Tn@R>=zc9Xt5=$H3?g8d~#Ly!Haj~-_rHm`t0GMu4JL2WmCY zxLBi&^k&`!*x@~iU8^=%?)>LYw&Pzrcl_w~Ni>kXmAK>1=f~KGa%|4{$kG&~t?@Qm zVP9N@Ha4li|4LQP&_X(?RBSW6&;lwSlMW3AD{w`N)Z8XjQ&ok(!0Sm(i8pIWIH0M~ zu)}!D2lq^be=dnr77W3rJ+y34Hn$`$z}`;^QMp!!St4R zYeqsWV4$%qCFB-kwF#c`#nWwBjU}!KOHp-)uX$BPvR0=tu4-?;S`iSLt)SlHYAAvkS2=Rl zzOxJWGjS(6Ca5-IEWQgnHeXdsIPsGFTqH`Q@G~6e50G+5q(0$!3~Qgz@~SHGT=8Bt zX-8OYvpd8!N7PS;HdZPf=w!Qcx&h8M$xT@4a9U+rZ0xfAPi+{xZC#!LM@yDECcDL7 z)K!wMiyORbI7ch!>ZYz4TzYnEvfh_eloa}0G9Y&lc~6Gq6kAp*IAa@i(VEf8BfA?# zp=0lZtFh8#Id4flSirKI26Dy{hR-{++}d~TRHZ01Pao(;jTwVR&gpI_F|ibLel~(w ziJn4Qwph2X!56h&{X=-r8iP@ZIygcc8F3I3vs61qTEqOLfU+wHnRH5@_^dGe+2GME zvlGTBMg@Jxng9|7IkAjPU$+N8&FW|I0rBFb`X%e@9KrNFtHoVqmd6*#pA6j@UmKMW z$x4YQH>DSI6g4jd;Hg zGByJe1PoCCRguN0f&WsYRWylNQLEL?xo+xf%gfBhL~mxSj@-x|WT}xssH|Q!+8fZq zM~EE?+L*9=i}IY{pQJi#fa*zV-4;QL)+Tx@dM4^}TFbl<)<9i%LCx}@Ck|1Q){0F| z=^c3yM4ap{?u>?ONf!smsm+W$kW^+%#Ro8z6JR(+>m_juoBrLF(#_*bYcd2di#BC? znoH6E$_e(bo+#S+!Ibd5&>35PzeU*a{+SV;Jb$)L5YtNP>q}#Q{9}VZ*ihz7%JTbj z`J7&Q{A20AVJF&I*5j11P1<(20;!S@MB#hwAmDHoIz0tI!vyqcHoyUv?k~SAonICU zP42XpDNi$h)n&@l2v+zto<;`4X)mLv1s$hqy;^NmdWt2Cs|fN(IZ%N5l^7Eou{sUq z$78=zwL=oeH2qvr(2(bq&fbHvug#ch9J_Nvkxswl(#O_VS5F$$QJD>eF}9d#@__%^ zD;cEM?X_mbG-3P~!*SYV}4P`5v zys)aaTm(GUA6SN~Z*f;8>@;WnN>Z_)ufKR)meyjuXCMkd6=_tk;Z&#|4WuEUbZWH) z2uMPz5c0=L=djy}YcuQ~O7GJ^XAfuYdmPC0gb;89l=BUr^Fta2yLib;-SV@Wty*1h z<1OR=e&gIt5y{!Xp`G1n$wqg;lNhU)4zi!EjLmPzh4+MkV6tGhKx+!)G`qgZk0GOw+xrAW>D@+tb#gT7cHk--=TJ(r)- zDp8{nSCbbWTUMhHa7YV+Rp=nFJ={lHni)SBmr9iEJxW<6?j@xI#7@h0-Lw9~k?NH# zh#E+`+Re9(9apWtcl{SL$CzcgF2B(SkApeeE4By|p?|4e&8sG-@|HhzVUHlJ2_fDT zN{|y-VcVcLt+TNZ5f;@o&|hyyJ2^Iq_&iY!22w>m2;T^ri1j`Q$0aop_F6n*P#PZn zq+=1z8SdSsZM8%0YFK&8`of5I`Q!G;`juzWPWqi!{3CYK9b);^Eu(TJdwJEcK6D1{ z9y;o7;4w>s3MUA}l*9oz{Egxeg=?*Iwb$@Qs3<&2MSsi8_$IsJO=b$o->H#5tdZ|U zVnm_z`WHR&4QzsR0t@O0;zJeXiNfwvF{+8k)RaESLtuCdfupgmc(*7`Gy_Wrqt9XU ziV^R@tC&(vkR*t-C$y*d%CW{C=(UY%dKP+%? zyd_ZFkBc=>eqbqB5w5`xep29ESR6NgR2}-T=1)cWW&Kr|X_m`*f=0Z}MAg z*9f!5=WP6JOXi=MTYh*{{;SXtdQ9jHJt~@oTS7Nrjb0CyvX+nzg9D8P{^G|GzY3}z z4@O`ONIC}44Guk$t+|Lu09gxhfX}cbNwh-M6GyR7dGS|>*06eaLbQH^o492C2G=Ws z)qry4cGN8Q@j1ezkQu;p4%M@sdRjdIlJPR}_>m$YN}(6j1j}z@^4l}+6!AJ_OED5b`-b!(@X~Sh4eN^;t$&HxM}}n)$dWirh9Dd zYPawO?J;)z*zv#cxU7ZVZKeVlVZvCl*3pD8&M6g?7cN&E?-+VTCn5xFfGi;ZL780$ zX0dOx;!urqVCuZ?z+`b&Mzgc;jI1pAb(SI?IgS(S*l6v>ZczQ0quz-`QQWr1pp?kl z0Qq(&_wk428%%2#SibqOpA`AF_YG!#^NH=pt7eWW((PD5 z=y`B$Q2$hKU~GTR#}>W_JdnraX&%`aT<-$7mvGtK_<~!0ZhXV2IJ|C-saX0shIt}? z)IW9Wh&!^K#kHwfVns>O8vofe%tB6dENj{G@LKk=T%NnM0cBTW48mR1j^lrV?4UYP z296CtHUOP!)J1j|wJHtO*wvvS4f3S)^e)GaNnfT`UZ!$yZ*t@9WNHScJ z<9MXCehCRS{?b#&_9EoDr4D|A>M6oefU zStv7)Zi>f$3ta;BML~HJ2QLqe1wv`?^l4U;_J9^q7$d9{nM|fMQyQrgpf;kjS|Kyy zrx`!d=2RiJw`Aa~)?|&YdHbPJ`Na@32r-m=6*qInVs}=lBMyhMKGiM`i_K>o>|S-( zj(UL>1a|l@#k4_Rh9fBqROUU%9P7Lp78fPU!Y{u4SmIc`7`0G%9PYr!Z5M~PNo zBWM|?SjEAC#YDBj(>Z6JqLY99yHar%bn>r%16~u>$x)0s+i51XoUhy2BZKpN&N-a< zX`$AJVfQQr(c9MY-suisq)tB1%cfvzXv~>)d39sW90SK+oPQSlta;pW1a7)qDSt=~&cDRVsz-&UIC6)3cX?d!=CUmh-P^lYe^l+jp%H z#jcBvu7iYoALDri{3|Y1z3L+6Bu>N03r0G&8Y3pc<^%{_A>*R0PsgYN9zE@4bVLU| za}VN=&}e3-1B%%ky;u00O-;oyVYIrHa~3Bo98&?V9E)JQMbuZ)0B8&EAr4pxW5sbS zWavxPdYi9y@Qk*`l{FcW;Kb-#_xG94H}#vrlUKE5Q%loWgA1s_e+fD@i%CyO&9WI$ zo~487G=`MKbYGe&5}1IQ$~`+KJHbxkU$p*=?L{M@yRd67*ju)1$GUE$?-%q;p0P9F zFcwu*7Qi*1l3!U>YLZ!WVFkFd1tHm2SzQj)D&))Y^^lI2sE>ftCW&kupinqjD#WRz zqIe`%OQ8pbH7>~Ucu<%?zIjQ8TETYZz)=MX7fyJ^C^T%M@RP7}>}T>dIGG+EUaZ%z zz5RRZ*jqE9zeTTI`(o$)rDNU2LRIKR;kue9HgCHdb;WU7f4FWPWX6+1asU+qd0n&J znt0@-)v1Ob&tgC+gcUD@@KnMy8jAEYs9b~z;ifE(PafYp<(KKivlj2mWva43Zk?|# zJq_iva##+EoAJm**x?55UL5r>&iv7wd5Hejf(YqqO7j%8FsgCba`(@x+r>Ux-+v{ zic)~7yWmjw{oc3JYKmPNa4{7my>*|hs@Q`AJ+mbFQLz29$mHzWfwF@3@~l{cx1!xQ ze0B?bg)jbzzR7c>WhNNdvy4Rm`j?Sqg^o=+MF!U8TJ&uJh7=v)dOu-EvG(9v!4V?W zgf2WN|Lqy^5^-SWKHS3B^#S=A)c-2yb`91w4kjj$UBfe6652u8M2ZUWG{LY#QQ@S- z1YFArniBM|yJ#JdazGjo-V(NN>Iz#6)8nJHjl#^q>$c96g)S~Tu4)(7McTZ@P8OK@ z{kxj-{>gQ#U2Nmb-Jy3;3h5ca$vzC8yL%@><_Jh1e-!=tG1?VRj6q@h26Bq2RZF;W zlYs0O9G^qq%*1)SsN=(~f*0iXS<{(Jm*?&HYlr&<@W1_Jn;c>{$!pln^0?5+KEh8o z$>Z$iP$=|$8YiZzfQ{1$OiY97@Z)6S%)OH|EWWo4%fTbK?52*mZx2c~fjh zk%2i#Y=&3HHl-j)Fx)uba^|MN@CIC_1kt7_uRU>lSQ~In$k0Rnv1mB)RKm@ zH|jGKf{}vQajUnqFn{1MHx@9^3+}*=;QJVd!mo5BG^} z!h06lQP`NLx1-1ioppano1T$BJt)8DF=Q0AOcs|z zTRfgEdFHbpv zm3lsUb{f0cKaa|vw#sL<@&W8%7k02%c9*;yL)XTR&YSNAxaaxL&{!ymn}i@v1ae-Zy9h#o>xTT6uqB}8!8S#K zCT&hs_c;$t_OZCWW#@LM=!K}B-49N7${%+v+Y1zrSgnc6a_w9;ZVbJuW=5~`%%Rn> zf_?Jw%U7A%^Ky0Kkw z*^gLHC+yf!GHfu|d=XG}v{+hWn6Y^VY^p$ZI)>|)@}~`jWB%3m?kG0^V;s;JbDIlF zCW?o#EQV2}vT)7K>sX)spuZ^x{t*`$f2RZo4Wg?+Dwi_s+fN zx{X`jEuGmm?_J73;w^$|6naTFewy`nLQ^ANyb;)6{KUmThIKabJyZBOLnwfz5%hZ{`2qdlLxOmuJQ=Rb-6q3)kO}C6l3=#2}hXV>Dt*heCZHe zHzU6a-F6&HInGh!uw|u0bG!AQXxGDN7ul^!1kUYeuUG;BW5C%^jN$Akv?qi0~XK2T|IS`;CP=FAM?2`1$Boz=PYk`?)k zWE{lybMm`lLsM#zHv#T0f$MT5ylwwsv!Y>N&t?sudF=jw_Z-|@qt-0j|KO6)uW?+A z=O1%4Rb+u1%u|{syv~H2CFc!|Tsnv_ae3%*gilxuGM*d-X{btuJyr)Bs|2~axvG7$ zaU_6cVPnC^se#K=4VWxw1+*HlL7?sAxW+*pCKgJioF!x@e(f95k<1jdGF7J69P!RMgIJarYyI12ZYI=&&ZvnEF`t9`AjHf*cd@$L0lkz(|U zgFiTX_~wmeVn|p%ShcJHdA`r3u|g?2vsK*4;=`dn0R8aVLM#G)EL}YCq$?@3i2Nj@IoqxH;JKm66Cwyt z!$XSTQYJwJLo+aEeX`E3NSD8HU{gc=n&w}|6~4YbLBdWM<)4!nvK zo1UDOOX@9(;)H+o(XWEAm6e^bZbdz!W4Z0CH*E`SAA0=iK~d=0bNeDDQ{}CDVoPdj zi-FHf^#^M!;&+69Wj6jR#t__DgZ5whAw?z$#2v~XQ7Qn75){=K9e>a zP(v56M|=kdS6w!gEnl3TXOF|2A+y!&D#PeAl|^or%5g6GReOR+6$Ts%Y&{UqA~C3u zzduW*L%E1G;1Z*=Qma}$E5rEGKM@AD(~M@~V%_xDxfc9A{zCN8l#NP|vr!BVIwiV| zITvt1saY_O#7AK%^9yhMxnQ=SZkoD3GB|Pd3U{;9olubIDgm93R+?X9_s2)l58L2Y z_@i`>9GWe)`?M^8+NT0qtNzzoJxeXDNza;Jd{?^Xv3u^JG3td}@Bs5SPc9$=qLvU= z#(=<^wVA*XOrupM6jCb<^j={J!B;xGQeXQ9il?8D3v(6A!*anziT+^npoI^Eoy5aj z;UuJb!E+_(zp`X`#bAxsz)I8PpR-73?boPVp3}Or@Njm2Lk`vq@)Y3*y#g}Z4g_*} zFyMmA1c)KRbIy+x6N6Lu#3LmIM;>mrtLzje4!fZhlN$?szM9M^nh75A?G2shuEYdv18b;1tl9O!8s>-pM3{t1CQ(ssXtXl$&^ESypw6}NpCY=y=ecZI1fpevZx#?;{7K(lo;-@RkbQD@YjgzsLSPl!GJIC1ar7?&svyzAHQMRZTmpV`Y(db*L$T9S zAW>m8RAS0FV>jQ7 zF(zI1CW-7oCEpTW;jIX_@-fE(8VX0^apl681vffqxJ~R=2iZkXXrGZEua-Zpksl4K zW5-^hFe@I6cO)KvU!4eFcn&z=!ITD-RuO0MS`8e;@Q2gXs+KcsQ*M%<;&U>+gH#C< zb&x3;!Rg|T{IGBeBl!K{2o827BCkp`hkjNkJ{3{A;=CpG>ulNUTNZC^PSQOYdID5Z zNw!qC)gV3*dR!09;&(EQ|`4o##I;r%ItloLOLl^Q@`L1|Ryn8_x6e)schtJNF zx*$DwhM{n9-(cfpQha`(*4@9U+N9h1&n?*LLZro%0sob_1#_&{+R{@UW}PsN1>Dnl z-HsMfXsERnQXX~Z_G?;%BcU#XGmCg;g{-Q2D=N5lnS)gb*X35%nuY&D^8|1q9hdx? zB)%tsrX)($X`oCHDTH)ctwM=H)Uei#LP_9y7uL7cYIRsMXloK?AVPs0&1tJxv}C9v z`V-!oBB*17&vhNx62w_~*@OME={vWk-CE3yCBT#I^nEvj6h(EsH;^I~$(J)Bvv2Rf z$Rz__CKWw~@|dsBd?C*uB@1jG8M!H-oq&DuI&eonf=|AdRVaY4eBh42(lDV4qmF>! z(4*FmO0Dcp0|W~P9_f}vfG{mpM=p9gV+)k~AcDTZjT9dFhBv13H!6H^yrrjnqrq?@ zT69u#gP>id9)6wsA|klD$16?Y#T+3PR~xLUuBvoeJVuMt;*O0Zp<^X27Zt@FC6vmO zfv`b9>w)1NhQjj0j-m`yXB>=0LorT&)2cm-n%1;r$7??qw2_&)?h+RPU*F1p1tmTr zSS+~bvQy1bTIp}P!1xW5U7K1xQ4vwny7ltRad8E!x#H5@E8$cISKP)OWws^VWz19C z+uNRqvJ`RV#zjjInFqz0zoa;xEqio-pD0$1?z!ZWia3DIAX8}W{|9q_ozw@EKU3x~ zU!{-GM(8K7mML9jvw=c0lv1}^6%nCX1}Ut;p#tNYM{1z_hr=@k%6%tN@lJmunHfsD zZSiStBO!xJI&!4bj%5m zux7$layk`hKRSx&D1k%LFZMhvAP^9nnwacKGOGWjuUvKBqE+X2Bp61zL)?By6=QBfwK6jm3Y6CD?il?h`1MfdhGxk9Rt>z6!m zL9Zy(O{o$A0W3-r@5)-wC~a#Urfct^8j+a5s5*A*psLRe0b)EVllu8 zXS0{WZ6Vz7>DrQTy0$1Ie^OgSvB_6>x8J|>&*yCLz4OdF8}Da1zuf$@S8tC;iHKuN zgOb6LJcFa>a$zeBo>!TV<^s4EJW#yr>l)T=ShL4Z(y)ru_NYzM3WY93k+G6pU} zJ=AoH0BD)Xk?D*mT5{H+N5mQVVExkkD2+@0)FrC5Nw&Cl`Li~QBhMDAcC)n)g+A)t zJ6vvHzmij`|V_}*_@^$_i#+JCJUC{p#eZyfWCSi1` z*%aCrRb#|u3T|W4vnUq|kZG>|dp)?vg_hIuGZ`@8eiLxveC5$$O{4En(EWT_lJgZ^ z_@X|>JF({1Gryi@1CydkzAxC5W6*T`G$?8$Yf{Ym*VmcSvr&<`gY7!+UiM%8T|(#~ z#D%AX1EI0VrqySZ$(`&mQ-Lo-VxdQc9>JDdk}P+Mud#S^2lMb#%)`5w2ahUCi6*K< zh?-OOCt*Q

    my#&Iogj%gPMT!rkQYnYa~3nbMLY z-DaEHFSS25B`ecda2f6hhl#@-E;rAa=4QE&?>6^~bo<$?q$C~*51Wh}kU-7k>?|V5 zPLoRd+Zz0Wj8vziUr(>G18g@MKTvUD{h?~`qHR))K%Af%;?FtVoG8U`gjTDnD_ za95fV5%dem-Mx_tiM?6#O%zN%6YgjT3KY)Fo?+oVv-a+U}6lY-?q<)g1z(MY=<6BPV3m zoAT1Kdb``?htG?2x3i5Ln>lj4iVW+C_zp6@y{+D8n>sPGzHQr7H*-1MZTpjx!gU?> z!SvGxKW^3;B_aA`WY&}C!dQ+<6fcSG*E1Z+JmD~PpOV1$>24NsG8Fm`%|;>KP*lHA zfc1vaAsi-7bsIw(aN>%rC>?A@y}_LmGTm*%9ag712u>Lo4u5l4vmyRqD86VHVmKU? z+4b!${oNJ)!+OC?9g(*V{UhC-Z1s$AXV{r=7hAm`+|^cZB7BRj-b}cgt=>X7%vSG5 zxVx?1pYW}=`T)Xr*sM`*HZ{`SPX->0boZBm(nxm?o8fNL|9_$5ZP2j?cw3<(;hxZu za4+acI2<|>?hPFY_koUtBcLPU+o2=jzR;1d&1M}et3ad;rU}iqrlNeZsXSf4ZX5Yq zl+7L4-yMmXbSIp6D7@`wt5UctDV&i1D?| z&9`H1)_AFJ9O#(y<{FKL;%C*Pc%w58z{9_^A>m2&v8)qvWJms?@Xsd6hGV;uBHi(} zs4jye-3h-&3Mb43c_NC$=-kH|WgSYD7p5FuSvfR(C>o1QH0x*(mkQlhDd^ zMg_rtN#YJj?Vn#66>hZ-t^}_EEw`;viig_-o}jY2v#Gu(kImfAt->0%pGSypSq^Fg z{n4629wdgRqxPXRZ>&nF_pHBa?0IT-UbtJNy7JHr@l;nB!r57pb{G9@N`#F zSU4o4BVRyL3i$nu5GX>8r3noHY;T4`p=ocW2{^itxQ|oSNWgU#Zku=tkVAf)COCMYf$1QK~ zs|xC7=gJP(B?BEJ-FImXQaweJP2F?rEP9G^h%MY2MOI5k!#p@Esy>Q!L9leyTJVIiSb7yURa-z3KJ?s$Wwxcc%`-S-7XmeS|4(@o+jIg;Afku+moUp4k9o?G8 zPNQt(j_#2#>peD{H<5k z5e)_IB^nB35)B2ih$a<*$wWhe`-p}DQ;3EFQ;8-Wf%}Pu0uK-k1+s~T0xqI)Ado{e z6v!nS3gi(D1@dj~fnGCDqYL*CL{FEYyAdjo{)FgcTol^egS^x;=t5G@lp&%nk|83U zWpfYqk`~j2BrTC4BAqQmMEao3eV3QClrAJ`nG6wWxeO6$g>8R;iF*c5j{a`{e7ESG zG0)TG;6r~HjK4V!0~NL$EwdVa&#pHtj)TU~xZ6xdKME%Y-opm^NBDQd5)d4#&>oCKoa7h)8&)ppNtVkT77S}Y%GSJ%QEXlURr$wT^;pb vgdH=<%W^UP0trUgS;>K;jluqX{X6@ag8Ln2%}=;Z&!R_3t2gJR8OHwsUum9p diff --git a/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Light.ttf b/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Light.ttf deleted file mode 100755 index 63229b2805b102f626c06e29752fe28e1ce9471f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118976 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 diff --git a/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-LightItalic.ttf b/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-LightItalic.ttf deleted file mode 100755 index f25bed56adba942784c953710324ef0bba7577fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127568 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 diff --git a/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-MediumItalic.ttf b/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-MediumItalic.ttf deleted file mode 100755 index 307efad8fcaa533cdc695b8f1aae696ba662431e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123640 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 diff --git a/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Regular.ttf b/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-Regular.ttf deleted file mode 100755 index b158a334eb372a9ab2ecd4f2566e60d561e71a9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114624 zcmbS!2Vh&(+4dP%l1J=V-tm+yTk?{ZEXmvQ-Yd&?oZ+46*ooupkdTBB5+HjJAS8i6 z7Q_kDVYX1d0tMPaftFH6S!EXr1!BqnbFL)E0s8&@f8S`_t8>pi<2~>Dp67ke3891# zKfFnVRFsyLd#8J65JD&6s;y$$jN%W~ZwKJKmJn9iFfBFX(w{y#NC@AL-`l(TItHeF zbRre!|02X=QP;{9nvSmn=MZ}FulW78-hugj?*_j46`}X9CdB*D{Eoo^@ihGYDn32t zFIm%Dn5pn3WKuh!y^k&E>FE9;-4DMHM&NhL0$iBH`Fl8@j`P?BeJfT+KA+WwbL8h2 zv!uVP3+Qbjv}RezZZ!j$%K}c*G@+cXjMYS#^hhQm*o2NAdEgi{z`AB zN9i5(7(Gr;&^zf}^d!BT-a}8()AS5IOJAqw=)LqldY%r`3-ltrpFThz{QtV=U3P@s zg4eA$ZezEzqwEfLj2&ku*q!Vyc9PxA?qR3cX?BL4W#`zv>^^p$4YLdEBDmC4f#XRWPvQ6#j$h+=8pks@euLwGaQqg>b2y&I@dA$D z;dqg~gyUr#zsKTR8rP<82)8;8=^} zJsf|>@ji|ZaD0g4BOD*&_y>+paD2)>!|^$eFL2xfN%0{%l7~JmA+t#s*@7dJT!+I< zKcF8H3;mcSk}PIq1!Ns7V)MvNtb;8l=hzTiNuFS9*c$Q_TgUd3U-7^5zmqo!mtLZ~ ziGmQt5rqlj67Brte;~aKkGb;q4q;<{MAL>V8gX@C&GJEFgT&cAI_-bLnCN6l8ba@A z5Cc3%F^nWQ#XEPsBIGloY{wOGJ%UKeQhdHcHW4Lh$2UeiQ9muYh8!d3$i3uA@+^6o zd`P||4mz2tX&g1sG&+sWqx0!CbR)*YaY*P_bc}^FD{Ezsq3@nUOMk;D=iHM|<~qKE z-^lm!<9wKp@aOnT{Ez%KDNah2%A^LVQ|gyiN!z5Cq}Qc)rEe8f;im|QqEUrW*G2s^ z>YJz^qU$u?njlS-CPt&zq-ji=98I34RI@^}QFE8(9?dzeLK~nB*2ZY{+7#{F7#5?9 znH=LE6BZK{lN3`K(;m|k_xyKHJI2QB7?*hjDe73%*HQmM4T&Z|6Qa>*;!wj3P4;*V z??esHURA?3R}Iw@YS`_n;i%9&(j-Ya_AO-MJz6sM6t#{$35iO?D-JI$UeS0(;wAKa z@L13ocYNpg2W=5eD{wkN4@j$o<`hckAD+eYfQA0q^Gi z-TU2)clkR%K=59{Yt=i8-dXU@oVWM9GxZ()+gtv2`t4P3uY9}z?Imxwzg_ya@$JMn zpY?i)?W2dB(kseA-jLs&Z@1+m@$(mUUYb7_6U2GO>W3$;D zHkZv~?PNFE11;9cx>z^sVZCH8*(dZFwAnhgo^7BX(|^#fm^VAX4zfe+FdJkm*ebS~ zoQ2-|lHAL_V*g}cW2~KLKd>L!Wirf0nVno<4mL(ELOtEjDS3c1&dGyZA`g*=xq>UX zihDqZcyVt&3EI+^PbRG?DCQUv)6kL7V(&ka1DC-6k_CQstY+z5U5 z5&4+>gQt*B$fx8po=QF^UqA zGjHJ^@DFJUP33m(fW}SdAMuZA1~t)4YNi%y<*j@c{|EnsxAEDMO7h^J^3P}%&E}u; zFK7meUHpjbAT$N?x>*ZNX^@6&Ze3CY7B42rNR z6aOf*t@F?QIq}zt-<@|t`r$(pSjPXb6F2_nHHgoKhQ zu)g82VUh5`qKO7pD+ZQ1mc$V~F_3tYKoUt3yfY(7A*m#dq>~I{f~__a3$c0}0(Nt#IuX(h8r z8+?E{WGC%#ZmqH49*Y7^fi^si7rp-(=i4l!ayztP2X32gTQvW@O$8g?^X zN!QU8bVzgt?I$bgLfS_Mp@04bE%Yt@n*N)9Pk*4_2@Ql4mu1~Uph0dUC&*HAl-vP3 zx{BNhTY5XPV6;=x@_9-)Gw8d_nqh5Yi_M1#*=Xe$83m*^+!lauxG+OpAg%b3lDgK1 z{Qdpal1FF~<+=c~Ng=<}AA&a1gS02;T6$2i&v7&D+|Vb#i{di$9FcB;pA(M$Ur{q0 zf@c|gy&0dx7@?eWcu=J>uV%6rlO#o}r-~^Qg*85SXg)w=Qn~R7>mmxy70pDU;H?Bov@Rzr(_~DJ z4UAHHgd|am-jKr0nFY*hHU$L-hv+g>m@Y=C3XEbQQ9LNnm#KnuW+XA;iYcRj@tySg zeRB>j&N0oouIa$3OY{+K;q2Ts>#3%!uWs(a1y*bKuI2;vyOtJ@WHfY}iWXEF=&H8O zX_2)Hx3^B;-c#W9*T05*{=1T8O)1wb&ZxIp!=h_@x3xC!=*sha>Pe5R#V3|c?=Ozf zc%@|z;w%oQ^Fm|m}sX~>}t*CPsl!Qttsk-2SAq^p=HAJaY zw4u^virNI{U#y2mL{b21YRZUWL84~5m=rc%FSA*$xi1T%|3w;wfrcdOO1g`RdrEZT zv#6(3x5HPH9;-`_nmjpLd`A1ymvyB`(p{?4m3AR1l1z@y5J`M}qce1|NaEPo&#e8@ zne6%XMq~Z_?7HmUI-{|!H#<7p7#?oSj;@Q&6<>0rM^9zT9mie?J*yAFcFt80d*V0gr!joeKJJJrVF zO61olsU*3+GmH$))rne(I}L9`iy{q^gRf?Br}+U{taSqgJ%ERj(JKB{#T` zBo(z-tfoMvDnw^cDn;`vGAvfA@`a#9F&-EkVl99$3JLUOi{mT1^Gg~`bGJ^dSkaUm zZLLk7OHI0XdQVmPgKtf%zS!AyY#^TwS8UC8JRXrzp!L=i%+AR$4n@ZYdj`a1YLkkR zg6UAn@~+mTwi7KgwzQ^X%or#zH`kVG8y$VN!!4WMZ25d?VM)${J-273(et4R^<~)s zrj}wo|1fK)XiiW{YFbECc2c;;QUN3Wg`{OS$$HG_)MDNcG}?+^WE}?BLZ~pD!Vbs^ z>;Zo@^9XjSFLqPV4ti9v$FZBXZxlDu9!DY{QZ9zBQr;h^qG?HxJINa2%Y<WPmWuRQAesN;_xpUhYm z(XsQw>!ZLoD77K~rmOM~^p#YG0_G10^N1s#KK%$iEw_88W0-BhEZdv-*?g1=<}7WPC~ce&QiH`}Hk;U% z5Th+|FfIPMq}2I6vttX(kIuMX+)w_(()sJ`IgGMUThLECUF|1#Im*Caw{vD^>4!yM zd^Pqt52Px1D*-lvHBo?Aw2aoq$BN`}6UK-b6!fcrSW9fIH7+0^&Kira0jr}j4Z*>N z%&16{J}5{pKmjs3wgt}QFv=n4N#Pbynn!D$MNsJA8lJeDwV&LeG~$Vz?14_O$+|QW z9#On4E;=eCSVDh6i!!-D(3&p&Sw?F0@d>fA^>r&swY!v*>h&-YK?)iiY|5~hC7W&a zeFOdH*B05&u&uHCzn<=UTD-?(Al4a~Un^?kLq`(EEkXY71^e_h@F z*LOO8Pw(Gz=r@lyI~s1<|J%nzoiKCbO4Lb70&Qvq3MawsA~1EeexiT0I<>+aXX45c z#};OoEIqU5v_KLmJTM|9DV~9^mtsqT{~(DuPbF$Dy23QxJ;@o$ji(~F(w#d1N9mY;SLEaY|ca%z*b#VV5hyl z+NudKHDaioUs%{% zX)rbomTl$f`r_Hvjo0dmXJ=2_*H>s>aHJ=3){L4dA=R^cGkTBqWm^^;Y|oxs9IGwu zDJ$(N*1#CopdaR=|Gc0Tl5Ful=m`%fL{_bEkK9gFDz8Qu5LT-ezLRt4!by^cE`(OA zR`J_jcwxl8fZg~T`+E996#d5`$9;5aAOGiQHv2;s+VoM#as!@|Nb+pi3aVs@R8qnn zkdz9gq!>U+loC^l_LO@Z4}|;UvQ_ahf$=)ETICU*6c7NF!7UcIff7w;FbSy^E$lQy zs;{cpr}hg8Nvj)rjt%5xEjzcO_2{|=uVM9pq2k^$ouPV3c}j^Tbqb)x*B)@JpQ10{ z_`uQy7q6|#=sw)Dep71m+M3dp%^5zSF~R6(Ms7mc;}jP#BgrE2q~#0=T>I`J|s~t?Ei!fh99JF-DWD6y`^%R81Ha z7~NK1Y;(-pN^%(IGOrOduFX`vOfm*jUHS!lH^Jkp)t*H#%C zS~9KEGVegI#nO9V^hewoA79m*U)WU|8(Z4N{%)OJ5~nMklbwxc>xyPWW)6&vNeR#) zLS{;AHY4OjMdA5Ys{nEdbq6nBAxlard^eZ)gQ!GxgD~z?DW9&>*wQ|zq$R$ zUk?R*mD*a9t2Wm4WJ7pjHAP)_>1@plhw`J$@gXyI+}ASy;TxJ#r!CvEtFmOy(+?eA zU4D}OH9EU4HLv6F!mP};4VAWa?YW4Puo&3Ma%qt1iC+eRs`Mindzzvl5t0duHsX`P%084`CL9>~4 zj}G%jc1Z32*)w$AUb^-fF*fg|eNrO77t*I9F}7&r0*3>0XhKyFvt*!R*-#YO0m zHgd9NI1sfD45glIM!g4u5>~1pSyZWzs>5v|&dbch(}Qvk_b-a-R_9#?bdo1$o?ZAA z#znya&PbA~ji^+zwpO-b;+d~Rt0jw+Kw-Ox2PYoQ!g2l2$y;r{Ei?6r3GwlU_}Ex4 z0VIggsdvqi(1d8H5UzBpbgRW>n%w6ha$-HR7AS;bqe|hISp(!om#*iUqTcHKCbe#U zL3*W8t@O-lU0G4m5|+%p0wVn4vh{&f%9ww!z2}~_<&q+8(aC|Rf;>yGW{R!6QnT-s z>v9!RV%7Xjx6EAo#I-hijUqWMy)nuV5oK<$Xn9cMJ=!y`e{2M-wp!%R5yc`>JMs@EI$(gn6DDC`i6^Ki{7o)2 zsXQS@e+s`?>3mp72q9@H`q&U%NK9BLZVu9Vz`&T)+9(cL7FH%$_>5{T+)4D0Ax?aO zMKS2k(F?QAZEJ+J%b%K((@}1qjoZ%8aePc8a~3qF(xlqnT*sd&%j~XCOKq5Mu`7nD zaqiyU?71~rf$GB6fui2q7G_a)+Ws#ZSKOXo&|VVDj?n1bnc4X>tzlx;DbM%kKyR3c z#by%bkuwDp20Um56b9#RLkSO9z$0+)@opj}V{D)?Rs}y;7Pl11V0KDSh%N=<=PQgt zlq9?et2D=_e#6;?v-S;6vxZX|Zk;x`x2^Bo`kF~2p2^jVtBQN7(xZHQqSC6nOR5%E zCwtO|dQPt?G0j@L`)Jb(O-FaHn`J6lcWy!P@|o#L)tyTREiYOI`#WorQl>2{MqwDa z75y@Re(}MKIN6qZWRfbz> z)8Q{qHdESs^2@^q4y-)4%t~q2z`2!*Vb*ow-v<{T{P%?}stCQjkv84-Ks$6`kPG;XLnvInjPPG&33N_9)nf7~zxd1cW9&DhoB5Ev zl(nPz10S1>em9eBn#pdH1V>MAyd%Cpb>2G^8kg z-t$q4kYIGYKr*G-v%k1`)}ht2@}tr9S<{F1&+a|9sowKp@06MaWyQU<85&=zj?HRV zP^_O;UmC(3Z_qcMT(W>t^PFq;9iMu->G=MQb1a2JCwmJQ*CrWjdj?im&RT~Cx@(P; zdW0ruX$2@8l-z{&DU{n@Yl}kr2-l`VNJ3r>W_4obcBRcR85Glf^uF386`r@Bz3)CY z<2>4Xo?_U3GXm_m`#$6sCFh6sRzQMW(*ev30U@Gg;3HkhQOpKJdkdp}A0KesN#~62 zrZXI86~o6b?>Tl%>KA!-!Y>U*o*_hd2n-s9aWR8K_qkdc6Z_b}IH!kTQajx&gDDC+ z9PP{MbmPeFkYn7pANSSb zo3EH_dkLi}&uH-rqXU@7h?a0^Xq4ZV_y(YON-<*zpe7VBfa-VvKIxjzDf#e$$&POp z{d@8QC|f*x1A4lQwU2(qF54fpKZ=JSSAbbk0ls>YC|kG+a5v0>Kq>QT(49gg{MG() zTWfWQ6ri*LCaK^t`wRTh$C#NvD%mbSr5L{aYpDQzwFrIJf$Z(YM^rmcU{T=%^wOg(2*X}=Be>YC9?T}B7)w9fH{XKQY zl)9e&Wu{Z6<^8>NDdJ>#rtBZ0E!N0wA1>zC!1Dnk@GEm6$e`RLgoIClhV&&qTD4MO zkZ5lhDjCinH%wZ(dW62wd46kM-PZG+j(2IaZAqii*wANlyvr)>k3d!CEIqMs;qj$8 z^f1L7r?_}gH6|2j$GKx((v4_G4Nwh~!viQ9r`0N@0MmX6OhTI`INOw~LR4{Z_DBYgN_(qitAp>Q zW%H}kMB5%}y6f3>-BFaPY$>ki-9xTz86UD@K~WFxb#8eGtjlG?CfaFu1VWz`B; zV4SR2Wktg=@*vuGIoj7B@gvl0vd}+n-$TY6h2uRg-tpQ*tqZ@9fk#&ZQx&`sxAAAY z9dA8C&tmdimr&WAhv~=D_9wqDSUN2&W$Ln$Z`f4(eQ0OPk~^1HtZc6iv+te6KA~~t zJ;mhm<&k0}IpLtvUvj_9cg&dwAvB`zpVA*Lh&E{z;u3UKM< z0LjK!`8D?~Sajd|a>|A!YN+a~s8~{^hbuKas_(scU0v;U_xJL@jOvS4&(5;WSzW~c zg69J0mNw$KN)lxA7iFJd!<`6+a7#_BleYZEVLtB2e3m9k+kR}sEpoZ5aQ{)9Od=Xv zq?ZCY&}tN4JR0nRtuyOY7GN1-17e_0-@P^|F$K!9( zi;mVm^C954DfSpvZodS=+#j9!i&(4BMII!=Hbvn6$bMoIAai#Upw!5@jn@9rk;~6< zNA4@&=Dj)EZ-19X^F3%s7;DLjygY@^h&abzoJa)XUE@!7;SJ-L3J^edq6*`e5Q@MhKTNg9 zFF8~BPrT$z6+H2hGnI(lkKgD_CE}Iimz=4>Cth-u%dp@>!Uaqw{PkV{x_TSMn`{-bCpuhcl%iOvwzjG%Z2)9fP zDvXK9&m;&fMKnuVk6R&{5B;XLy8{uez0ufk|@#+czvy(RA zmZ2Tc`GV^K7y0TW7{tzWc)Cc26j$zd4vwo+09f)&NPy!QD^Im#o256XgzN8u?wzCs zOuyAmg>IHgvXxRX_D{Dprq%Y9X_E>W#>y>Sxh)5tUXr-@nFB5P3wKXV zZ!XrC_3tQ8tk~IKhJF<`F+%Rw1hT_6*#py9bg889nGpRChekpFxr7(}H!r!hA()?rBw$=An#4!Du7xqpqDq!h9lI6vv)Av8OqT%Kxg~18g zI{IDl3|rqW(RFBt>(LHn=sS3H#AeG64+DY=r_LEg=m3E33?rcO0&o!MIiymnp+q02 zNzx{T2K%cgd68%uEr4@{pp1-nT@ZX~fwTdClVdJgKo9K3vDz|yFx~P+lu+14xZI3)K?GqM1v*j)H6(+Ns5aak zbwFI4TJ3?rIHt2^t+UWz6`+Zg%Ag=Iv!lOuyhaoA`)_M6-cTHz&{wc|3q9_b$ItGn zU2yv%OR)MD-ypjAy4qc%2(XH_ywNdJibPu`z#HA=Q~`nDR1pvg6iO|k62U>R-2z7y zm+4P0yR?P|7^zcD$Qr{L=oHN_51t~yIEjT|777xN?85zrWUV%@gakuETmT>}1oPxT z1}G#ZwcD+=y3~Q$Nj8}vXDI^SVnH|N4jk+0K4kVhRkG$(Z{m{v`El(rmDSa8#fxg< zE&DpUj`in_Xd!uNb@^%j{%HlZDUdy_Q}!xKR$hK<@!c!(0+K4t{R!DIll4_g%I6dm zxn(gVF-J$gipfd{aY~~Tk4TosWYt4z;e1fgaDDQC3z*fI74eLSVGFvXac=ai>c95uWJ&ki9v z5#ht^je9|bK)MwQSuC70a}l+NG`MD#Re)D?L8WFF>BHIEg3clXEM~QKVrgg+i^=Z0 zy*sZ8syr~78kE;Tp~(FRMF{AZDJEo8zb8g5%y$B)q`jD>|pV}3ry zA6#{55t?ceDSKFkU&cF4?bM!(i58OQ-H0FH8bL4NR1|pp7tk4h38kT5Z@+YD4eff@ zQB8mNl>V^Au|r8lr*Ed+j(qzKs5W)>51#LdCK#6$xnl~h>KKeUqz6St>JadYyT2eQ zqQ8Ws1dR9Bgg#P|ACCdr0y2qb%|QmsF}`ESvYKJxTTN1;OGtDu9C3zGEuX4frx?v5 zNw5>C^#BrtHDomiyvuSDZVU6EDpg^P^Jn1{T=`KB72zo{LWl!&I!}yW8X^Q)ehZd` zS%ncQgn3-5DOYG0*B;2wEUa0zX?TM+P2K+Qj=##rrR3bngdNO)7Veo;qBuTR1xrU$% z*J`!-pt(XwNI+bWPKLJRV!H;R2+qi(kWTl>J?9*Sn!>i+IX5MaNIA!*&!cI*w=c0b zv9p!k1rc*w=|8IvH_bj#9mhNc`ZrHQ5 zsA%aPmkqtw(JmFrWiyaY*%@TfQRD8R+ZS{@4`?x$M^Gjp?IPiW3pWtguXuVtNdX@r zZrn$pE+0>5GPJDBaBve-)h>F5R0tQZx9gB)~FJWLHO*!MI!sB+4oMk424AEQo zhOmO(+BvuMoR4sEB= zT61#Tne05nVPWVoM=r(yk>HcwXV0Ma^>`t+>T9U+4X6GGf^$* zqnlB$1ceR0DdIPip^p6E+6h*Nk|>u8pN_N&{|+q-1?=K4;l^kZtqw|Xd3RI}5uqw_ zctH*Y!$*~AkgS{D=IGXBRV75(^3Ce7kmCC0q{?dahLsp!l~(jDlczo zi*L|mkA&8nx>@ZmJRYlWP_}4jrVvv4U;v6HTop0r^A}1`E|Ig(!KvdX3q`0 z2{$Fq>82peBsVhrez~lWYDhX?VmYyB#t!%?5m`;Iw7+?D31pL79yI)2{*~oCj*56GTam*!XE;2o2mAvsgFA! zc-rM>g%uF(4lG2v2Pggnc%ctsDk6q~ppa;4nE{R9UZ6S zrv``LyXstI`0Bep+HP`{~NUE6r2y!(K3IZhzGQ5?#7t#ZnrW-c;b&%i>FC&F?dx-o2UbxpvPPbKm?~ zrSVwJX6ss?e`fWAsVNVxI$f}?%LdT_s2AZ_&MsWR2?YvGNRb;Sq%ddf!hr*h)KgRqSS}G%AEIc8H)yc_M65eO9fOh-2sD^8ErMw; zvke5PJ18*NglghbFcM1gr=|yq8u=tmuM8~fo1Uxp-*MxOJCf(z+<6)GSXXd*)q^Ri z53W9wzaI4%bk+C_s!KQTKHYfdwwb6L#thvn-Ns``oQV6yiOEZVKjxtFOw?Us!a;PA z!}gps=o9o;F^CO%OiwWBGPp>#A;G~`fL>T3+y9k^f&WA7KQotxz!n;By?)5!D^y}EeyEOS6?rY6lqHRf_Xiu1MOM)ro(fOeZq za-C~`g4}8ow!tNQvNPf@&Ip||{xhp>eFzg9Cmaj46d-ew(5|4}Ft3r3mvXbRb8@n? za#`1Cf?}$e!=x1zAs1w`Z_FFmwH~XtSFtPPsEB`t8c{YU98YSi0LZ4Xrl`+%IVxvHPXJPJv|+7 zBaK_z%|AzsY(w*kCw=^>f7i{!^AhKs-__;+-rpvb^=_`Z8aWbmT86Q_9xP}zwh}5w6=;a@4!sCKHJWd|-ELnM1dpp>HmkcG%X{J_NoCmeB#eI2wj62%;-9C0xc0Imxyy01bi>$pzj!ZrE&I znHh=k!GSRn2BB=*07)9;1uqt>!76*Lz#>ARYd~;A(383>v>W~9cNQF+G2=kNf-M93 z_~gXZTZZy>H8$?fTfKFCd~$s3imi4-M)Rt&vX#y0>CG$4%2qXJOwX`b(w1C5Sh%lg z=8>ZH*RKT=%eZ0tCfnf|je81KZD&!{Tf1^|yS7&2Gbg7@up%kZqA$Tl0 zid1kK;{fVI#flSH6UJ zM||4$?w0Ly(~UhRSF`%XC6St}`qZ@Y?99l>vd(Su=I%^L-`+j_`gT)x-|+=G^J|i| z+4aWE%Ix%rsPgvf?w&No*T1{MT%DT{;S=f`*j15Mm1ma62#uD$;-|14#9K^cZGpmp zBW)spR|n%Ekm-CvL)b8f~=zKtZ+XeeQ3HHsB>jKs!msf&ybQuoF&ZfuFPm ze!CclST$>dAM50%dAYf1?x6*KpHd=SP%Iv8#KQv$TdDMHBc7gRo{$Sc>lWh;8R-&Y z{1allg?SfBdK``o4$`^6W6>!Bm5rOwp91Yu32wYV%3K}J=Wbb9&|VxHTijl-a_drB zQmN0@`}^aqvY6U`Rl54ld2{bvU5d}S^YGamSK6_1N6oTd@0vOlfbFuUv3B#(6|0i# z78N!ZEUr&pJy=m3WvYm8Nhr^ZDz5D6y!YDbnrqK>cAVW*Rki7CNByo1y_NAThkiFS z^x`coEw{XgF%iM;=NBNyF<6iMV9l@&T4-`$08DE^FQ+rN@fcv4q#g>`JT1;y&1 z-V=1Gv8e*MG3a7rJ%xmbVW5h^IzNlaWEMT3#2PaoaRLlMTx&vDE0|B3tc)6%zH-aG zM{lA9g(Xe&I5jpcFDqJHlQ_xOu`@i^WbnALq0PpAm26Hbp=%cotja7ZH)l>V%`Aw~ zl`SZBJe$^HT&IqV_3tZAH>P9ni81mjS;=4Ldzpc*7^@t6i>l}fa%k)=;xG8%V{d^q zF6iU(7g--ZPFG=Vy#_TbaK<&UECZrHAKh_Pcs3jc0ZlUa)9bAd0#1{s8nQa%mq+aD zcmZ8SJ&q%Pi8MpzH%WDvTN@ztHd1S=%A_g}S`BrpV(2j}`vEgpA(+8l6f5;r9WI~A zIenJ5KQb37A0SKD^e@Y?p_>Vv0b_B{F4vY0SxG2`xWI`4t zjPI)!ovF0^Zu@DfDatC&sji?$6YKlS1Wzp7RFQO^?qattp_B8Pb?NyvIhOW{1Z_dH zHNK*(!mvlkNeSD2ZNYKD_hW{~IM8%$gwr^MPWY2JAKYtZ;kOjdpV9dqLe#ZbPkX-mx(tJ^ROEF&#QfEMOFC=_b|+UV+<2nB~=A7K0c=%y)WuZE;C< zHND+fw;<29q&}&l=wRx!0bBOsX{MvJp{TSLah2&(Pmal$la_3nnjIaPJ>8l$Yf9qH zSu=B@!?RoRQ*!f6h2Zj0dIbE6jH~$-sI!Y$g1!^I>kS1YUlL1<-TaEHQaSk*SEX|D zE3QiA#d8k0 zZbR@#;ti3P?(s~%cGljhfaL9ayEj!w zOs(M2m!DlxR8i$fQv3y(p{!u@@ZUp^`N~=eSH!wq!T*y(97qCsYrIwh!x98Q;fn~} zq*e3a=9Ld$Q&e=#!z(G)fS0d7*V}V;L&cAc$bo*(7PG(cD(Drlei#?z*}ce_(1zF; zdHwK2SL=H*?-cV-_GhuACAF|nE*pK(QHQCv;B8=iv@4i_f>AJ^k>_muQYF*;gGi7% zR4$^t6b|NDOu7Xv(8^X$inJz$9o?gf$uourCgjCOXDUMD^OHIT=wk2CxbP`4L6i74 z=kqpW*SPN#_kru?Z<~B&ZSF#OWiFr%6;|f5?{0sccKRb_YxbrgaUUQ}c9A~@-7ex9 zV2VMrqLB04Ca)BW)LcQ0|7PC>>X+7fO+&-R*3{INYZ@9iwx-<~Y%EPlE=djvF_swd zFIXC?TGyJ9(Ymf`sM7hRGO;2vDk`%gaVVj}92I4*NDzL*KgnV4;19xY7#izANmbbM zN5&z_;hgy38)ybJcF)4LeA9`xK9e`?6KI?-}4fNR9iR9`j)z zyYEwp$8p^EvA7Q{`8&sI>?>9Wt7#%VHN#?P#sSU5B*;lqa`97KEG5w$SWV~*PQ?5y zoyd^2W3uE-jwM|-zn?GY!ZHh>Xh4{R6uHSP5PPxAYvO_~_A2#^%1w_hw(3^&B{dc5 zM`+>F1I-<`EVQOpwHYHdlX+B5wm?-N*~cqpSC$xcHB)DqezKrz)3UCl$P9Cyf#w2n zNdxjCim5?+i8<|LAh=-U_zOOcpmZob6v_@D#KPa|5aAZrnhh8Wv8~Mb0s`1;KTp6D zS}oUN?GProg8LtUc`cXD+Oa#%^Xr~vX{^+7p3xM?AF)}(=r=zw+TplEF?`sOa0p3O zvtJ8gq2LU^B;^37^Ts+uPcGK^QHsSTArzh{wrH$&jI5%Sv}%>(5n8j#@qpt&z_CrV zex2h2ZCK~H=s3TQHaX6Vyf~>CyA!MjQ%FnrKh7EG-&9-4Mjy89vpIfIx<3o>X+BV##Rs3D~26!7B0JO&Yatp6*~S0XC?N( z8EZPtmaaM@8vQi<`dVc$`lZR{g{1~kjF`K^Yza#mhy*~GAO-^dbcq_`6yuj=K7fni zg4Nt`Ly8I$3{eqraIauJ5aovDa1|L7Sjp{xjMEx2QzU_5JK-axigrAbyKwi6n$4YA z@o5HQX=AC;G<#!hLQ7L=V4}aduq-CEG&x9IPYH~UjSh@TFVu9cqEg|&@an>Z=^JM@ zES_GMky2e=KDE1O#x>Iuy#vDhZuJfinH-*G)2G&zRZN>-YADXN<`(KRYD{5wVR;rO zNr(xZmg8`huv&|3^R-YmwHD@~vLb}y0pSFD86m;}FUlri5HeMlFCas%0Iy1+sHmCj z%{)91F!f3 z&xywF9Dy|zk>>c&D(6)(+e`4(ClXP23Fsvl4j*Hc4qQz!Y zp0pCOB#^uDO^z_wv#qJd_;_L5X|TVH_m6uaSTBl^tq_o;!HV&24dI!3@Y7`8lN%Y~ zbqj`Swmsap~*m6sD$gBd#cU4~|G^b=Y?kfDS>O56vH_k681CW*2Fj!qV z*p#eLu5>*7Qo)WlZ)vL8da-x#v29hQSxZk99`3p!Ji+gd;40JB?$J@7P@iyk$vGFf0kI-xZNdcM~bzH%w){dJ@;n z2{4FL+p-`n!co*|J7s=Gc8{@YUC-Pe!O^hHOR8Si)3sC15 zd!aA9c!wv5MR_%t7z;w$Pj+FOB%%(k?L?sY5pn>GEEch0DlX-1+H@WZ1(z=uO9e+q z*$n$xY1gh%B32DbWEa&s-lkgn&9Lk)-jy8Bl-D9U_l~)m3n!-i|Cw3k=DeXFHjRBQ zubJay3TbdMF2W$|pcg3yFw8}qP+0JB78%w)UiG7FJ+7?q0dXV-K^EtrfbB48$2pHe z+GN*^W{-@pStAKEu5GSb*OGAwh9EC?G8TyJYueb7k}!Q!bJwi!^a{W=FshA?dhDn2 zBwAdH-4U}%gRK@^Jf)M1H;HMuXx z5pE8j{fR3)!^^)~aL3XtmDf?h=9`i~zm6Y0?&2O^a*_Iy-Q+&hosvsv01==6+4{VL^s`UsTh}>GVJ7+cYI>_fYd?v6K{b$SAjdvpekL}@LJSG6 zsR&`ac0zG4wggZr<&zgAjIrshCrN3E(eyu zVz(thBw_!eF%(0?N$b3qPIK&L3H-&aC$`#$!0NOdIdO!3bR1KrEG*;4`o zpgDyMiCI3c2D{GfwFz8LR;SJ>Y8VMq2N~j=i$rBu&qe1%++HkQG*Pt_L6e$R)<&5k zeLcb>!<0oO4h5XI%UE*r@2S_$O7-yCCn5`d&23WB6z7g=dExf1bpNJs>m@5N9yxWbDE1 zlBf}4f)6fpQ!Qpt8Qs*txsxn+ESkA}ZpP^&QI;rQ&xoinRY}Flm2xc zJC=;v?|FcFc-<~));^1k?OI<|F!~x~Rp|Bx_zQPqUJV;c-jKnQ2czY^5&#qdwhdodNvm63j5X}{hj=b#Nnjhew)iWp@q(iUI1POwW=PKaZPu$(LTF2C#7(X_mGd5X zKP~6|a)SZ44!32v??m`UHkFv5jNd1KJJ(&*!^3?O0t^9B5jssoa#XU=90>9Fc>|x* zYTdLU**^{r5wvyrrN|gxEg*m%>2AmLf~{p8xAx`cEV;F#Y+C_6;TWVXj#KoIy)Hdt zN=8_AOHLG)BdUB#wm!XyKE3Jbt)-JZ4m)BG+rJ6q(h0`mX5O^Wk-Ko$Oiaf)NkRJ# zLvE5uF?M^cu$6+&O2WZ(h>d^@@oF!M!OT6FY>nI`Kru0q+5~MBJ9m|q)Krx;lr{k0 zFvJDL0>F1~K>0J5)gnArFk&L2BQt0!wsaT=2@fNflO zW^HjvL1D3N`E6|v+DiKylM*AY!A|LZMFsiA#jDROEFGMhk}`F$^x4wo(^68W4wiV# zNUYC~ORDcL!T9|x^qV)=Ox#Uidu;PZn#D8?Kho-Vj_!aCy=o8HC6IWaOkKlfc;bR!X)p!=x9oX_T z*s29<4V17@cqYcOJoA?nN<0%~Y86X5rcG{wv@9y3S4 z^J0CJi+UiB6j{y4)B}Ot!$te0A6p+b8iR~_Sz%9HsV)bjO~EqB>1RvUXZ_-m^<}5? zEgAT~Cc5V)$Fu+Uh3nHR{FhAIcuLpueE0vhdR?@|DzwFY(i!;NCX#AP2BU;b#!MPg z0}CNsQMZP@GE+`S0HZ|I((Pg+3}KQvTvz5h?!9TRjFwfxp>98#Z!w*sZ8H-R|1TWq zT(f$?v^6JUOYfTfzfhs&b;gP#}f&z z8rj0Xlz9q2_b;I#n10-QG+D6nqYW!R_W$B~4C9PH9?-y&SQX3R(y4_bcgr9;Nsku4bey3`{3*ooF?>nTb#~D`2(mh1o$m zOi;}N5j=A6z~OHPB>R*@hr+%@9yCq*JHJ)V0~i)|Ktf;+InzPmF(MS@&cSL5Qt1rX zEVcX4F~{=Dw<~5G_W%A{1T{n+xzas+kK!Wcp4hhoPshJ`LKMXwrAUCVL~I}iHn2K3 z0cU&|^F4|6OH0d^)+ZhGkIjlVSY!Pa7jwJH4Tkcr+$d{&XlT4ON<8Ch>0S1Q;t61{ zVh>c5Q#fdXzw+}i%GYkNSy3>rz<{!iPHT-Y@&c;7u5e-&{=qN^oZ74 zlbBd#)o83$iHS8MP;g_47T%gb-Rf)JmRZ>!=DI&sDnG~##^z)0*hopfe zBkFOpqXD)n3o?(kf=xqvhj=o1?^CxCi;EMHA-F>Vdk==c;PMm%^v>R_pBtN~G5bYF z%qSA{6P>LsE3v;gCV>WctnrHoO{+*vm{wmNj%Se_=-V9NOwpL-fz!_!{`)7`?P$s> zvEK!_a3WZUjcuKQcbFzPLn6|K@O?OL;KDZ&fmm6|VSRP$Lpnp;M53o8%ef2Bl;@&6 zC)!eL)Mh5>4awoj*>pj)r6wh@q_D^kqz_jsUNKJ1kM#|j669Ny5^9`QsE^V``9~$l z{ANbJliuU6DZa#0Rm9CxlEHjDTg<=Z@h{fDgP+a5eb@2w>FSriJ*fE7@eTEHe1p=X zpYL^SV{eU}ML$PFfym320z|!lJPB5x+{Q996ySsVDr(s5`i;>B@I&=ZQBb&Q=0<1% zu8jwg>Aj(eS(<1|LTG4$C0dh}7&?<0BEt0gun5CHG*$!l@P&+6#2&sDO}IWTBGO<$ zpNu{)J!ZcQoQ4xMG%fl=Uafv*iMsvrHTPeX9upHr`vU1P$3bO?D=iYskylq*w1NGT zbC*^qLmVf^#zwbGe;><2U#rN8%MQ^LxW85UvtyTX1=<2UUVmsgC+8Tg1cwDmR&b3u zrufhtb@&SJ4Qx(%oQj>1#nK6@*t8FPDwVyTR#bEo<+RyST%XtvGmS0g!Muto$;vD|RoVDQ84Is$6}F-c0Z7hdA)6rn$UjPyeJrocDGHcP07Qbe<{uut?n zA-EkQKLT2C&$Pq}6&prI^(OEOt*LL4&{NU)KLx*_5VeTb} z&G^3`kbfe|C-0Sm^2u}YiG}o&RG}i83W^Cw&56Y)F@_5)Nr5`xL`HS``^lA2@{e{E3Srx0; zec1kz+!kdhE4E$);u#Bm5B9f7O4LM$_;`u%tZ*mLxJZY#jR=>=UDU+?Z9-Tzvq^BK zL$HCGLa-Io1)M$IadJ&r*_x9bBb_JLmX@wP**W6KjxED~zkq#b*(O&9n^|%&-l{V7&K?x8ry_iJj#Pr?DF+jpfWXvuV?&FLl$`zP3qM+9qvZU)z6Q zW9$0=`_7ewSCYQEC5Wp#&N=s-?|kF;{k|Rj1#ZHh+zS?NZ*1PyU*K*J#OECtTWFu0 z`w5j}tWi<^J`{@pVGghX2rKNZncS^ov6f$(-tSBcJ6GV$O7 zTkriuTTs%KZDYUi&h6gNA`ID2t$bl?gO~IYtMF>r`oc;&(z3og*IRs_zu$heVJUn% zW<`?K5QudtFHye#rg4WiLqeFmQp3Tvlt_~&A)6Te9VumFekMch$w0FD!<}uZo>65*^Pky?$x$Em^cbN&hCMdQbF1iPPk~plMw`35Hzm~a) z$tJLH`+GvxBY{$ONz!rUEyu059wKzB!%-CmWS!UpxTGj%B8M2WA7NF7I&9>hqLle4 zQo>Dyc;&-$`$<+{F~A0{P)*!^9@e7kUhq31e4LSHG@$))#`uH;4|=~&=nz-3TuvFM zn;=KV^3UXDihuSFjtcaP@YKW<#MTdlW}g~fcx)&uYv}mE$m#5K`-_n!gVkND^y)NZ zY1S+%i9~4Nr~1rjAEmG-*r&X%vZi_Os}sQ+uAc5}sNQ71QonOiVOy!7j>*yoSFJit zdz7GfM%oO|(i`xt<|{T?eZj9Fnt&1p+5n>_XE4OWJ&#U{pr#>H8iYX#E{M5)lTLCz zMJ88(S7GW)&n2K-SY!lKP=rw*ACVuKkHi2!SVZBo+~s6WN^5YU=k)}w!gM3k#x)h4 zks+FzI*YKR|G|l(g`I15RIEL>u=T;>E7fZr>a;E>jEXJp$GbD@Z>uvXqTkXf<3g={|wwEOuD&|?PziBBkH7+T! z47FyEh{QUsM$GFN>_<}g{Xak;xl7H%xP(wTIsXz2QUBTf!5Xo-&`Ktabk5_fR{SEvell`xM#Si zXn0R!aLI*?m<;rpqdcT$r9w-|~FdrdEAY$If{y!=9|VxLTT9Hobal z)4;;O4DayN`eH+Sb7jb!?77LhTz{Q^LD$;Wyj>?A?O=r`(9TDtex(VrH&`+E8-e7k zpx_T-HZ`<&^l&}{ybDn@I_7?aHG-VeSPJw#x^v67GOqzFbI>yA+(-~2jxj?n;*4F? z`{X<|(S2Yr`^x4`i|#R8kx31b2hL1gdrnz%XhUP^^&eA^LR8o=cS3p1k!VDqTV*=1 zD8!!#Btl9NmrRgR1r5VkUq)Z@(XC+8cVVN8@J*2baQLOTba5{I-~`aWV*J!v zc|p&Z>jB!!LKurM7iv?QqKw5WiffiPCrM`!I`k;5Pw;7A(*wiJ&xg}pe?j5?4E=y zc75v@+?j6)Gw%BKj%)pH{`QV*361>4*Ag(<_3a(k5-Gdu+dH01P6^kycU(&lEZ4Vp zTuYu$*SB|EOT!vOk_@Yd#J8N)P9p{Qmh&)%jwT@&Zs|Z9&-{BKF-#xguW|>^n~q_@ zbLWQ)NYXH(q(RbNj=SuvF^KNW{d;V0j&EFYPMi49f+SNo?lvo~e6UO~t>Sa@g0xDR z3f-WBn6oROapmy28LtzBYD^K*12mQq(_nA2PlGAAO*m=cw2 z3h)Uj9X>VDuyJ8cNN_=2M><8bLZGP8n&<+S;z_K-2*nav)_Ib{OkRu;R>vQ-HDeu+ zC`9EmsPG)9;8>$%vSWV+qWqSxlu9looog8EQZUbGCA+(Wod$6uY(hl#<%~#@jfGNw z%7%mfkqIH;=>bM_hdHmiC{{Xb+m5oG580O_XGVJX&)OQRj;@@XBkaB2D?W6R^ohry zqf|j|hrlX_B^D120y`+hK^*D>#Ihq80=126EheL04ON2D-h7d-$TcpPhVNjsPzJjQ z@T#&$PY*4Aq`+3Y>B+w73sZTv=(5F)=`F=6QGV*I@;R9xz>8&nn|O6^Q-#(3-{Qw? z(;GV~I#2&_kJl&F(NtKh@?LH3dUEVW=_1YN-qPFinWu0MDR}6&Plg03<4H zBouhd6tL5Cy1Pu4sdOrdF0KtewH&)6W|mxckUAg?4L-4^@OYE>{Du2b8434-OYzkw7F_AA~rgh=B zoT-IcSL&`ywN>tve$zi(y6(Bjspr<0mae}vDdb!~8(+J;v0-wFNg+3Ormr`+#%j?f5KX?_lgME782p-7C#%? zOcTH)Oz|Mbs07cC;Uh#&dOXoFPFN}Uh}e%&lb|A@Auj|d`aqEu1A0A5Dmx^RlAVtu5 z*-Do#Alv6^%r;pp3qH#q7))8Wc~MHSK`n%3ca}sKEwDE29L!4_d34%lD_>9;A!v|J zpp9m}e#6IK9(szYdv+KXjxNozZXTN*C_IO$xPu5%NQeIO{P2@8`4lcX#aoeJbuIz$RO z<8&toFVzl}L<#Bo*JI6TOP=0f8#oOjOKnlR1qNhWVEgo*ik(ccq4$R3(Isy^IO;3q zuGMpsSF?p_DATeE-;gH^}@O8mG{rx#Z(*nrR$F^ z`@zEt$A*T+7C!ugWsfmsKbnL&asvH0sd`J10vmXj)fdGBl$l9kM9vC%@6;|4_`{?@ z%ACwfiVfeP>ymaU!?lqVd+SNi8E!fWD(G$B-*OWow9L&;NeDKmNJn-si{+EkU%xwfu(V|%Ku zBGwK=XQH~Usk~K~3iUWU_SA~P(p66kvnD~hSh=jx$c`R6=ij~SnL)o+fS)q^_H;^T zL>~{zc3G2!Me~uKN!V)xJXOnY(BEe122~# z7_l$P8sbgg@X?XKA?@&{Z(P^he9(D1l%yBp5#*D%ElLU|hy^J~-0~*ngDfS&ZfiiW zBj$zYmQ*E1S|UPxqjd#=(vL4oKME|+MfqwXEK!E4lDzOsp`pqTOFFYP?g2+<=@aei z>@NvcVYk6B>u7+x1`Apm?d-%nA?yzM0K$<+0Su`(-Vv6eJN&xtZWDadcZgLg2<&nO zVYUYaXyOh2v)ln$)Xg|IoT0Yt9PIZZlp=)ToC^Y^9P)xt9@`k36ji#U36nf_O?T6h z(kP>LR5|h|!K{~j^k%^`)DT@>ccrd8$`I-)KD7ASzOF|$)Q=4hjn{8@q-)=`#V764 z>+NgS*w+_~&CWP?;o7we=hEB8Y5gXlF4TJ1qcMsPWaS>zVsgF##iQN30ICY1?Mwjl zNI)HF=R5q;)1vul^g_S%H2H3nmHDNo(cP@NyERLt(#UPY^uk%BI$OP;cRZ~fq2BUPXa@ zZihyZGm+b&(cHW@E6fQ2h*BHlXSqQGbndZS4aSsp5wXCv$~_bm*H zRaM(woSwY6p~lnZnOrwk-@K~T2p;t}jjgMi>&NO%p6rE1Pp&QRc;G*`vAk_Rxxb@i z_1DJhSGFXTPd~Jv{zPZ*Lo3UPsgL9yVopk`z7Yuv4mfU*K_YQnfr61hsdpi3HUU{No^DVb9l7CK%oA4Gj~6dH(cOJ|vQ(}kbNz<> ze^TmtGcy;|B-1)9M{`EdmvG9^03{4V-X$SKU~v&a47sVfp%KD;^;kJTG6FHnCe5}6%7@W9f1TVz33QErw^Iw#sOwF`kVNnLniG4}OuSM(M} zxY^5TW+M(Ho#b&KFNMw;3qgQ#cz8615pIcY$1q}8D7xepZc=jqyc`pH*d~P7qz7!$ z5k##%QH6cpBAsNzG{-2mM0H&#=L$9nRii{!9dfQO>T=6_<$k4ugg%xQF1x?K@9bm=rc|K) zYAR}A=ML1G<_f)=GhMR_;Wk`JjzO*p>rWcD0h*VNOE zHW8YF$S_3J20k@GB8Twdwd@y)-}^1|`R#|#RK8IBwIBbE`Tj=OYoF#n9}53zpAz=- zAEO=c0JNbC_Q3?~`+V}jMgWJ3-HaM=Q-(ZLCL;Geko#cs zS^g|HI4&I_eL`cp()wj|ol~cAp>iC4{NXdFjBRV%N+#OUZOyx$9hiD~R~_3lzF}AE z!8fLQUpUl#C9QpRP3xAPw3PM@%`b=*OyzxI8Az~9H%neqN0uM`0a;8d|dl!&0wE5nqQGxaoF*as*AASc1RiJQ{8 z6siAQI0mSdCY#hF=;!Vk%uF1btE2}&=pB04{!GttMoBdYX(Bi7Q|0q`PB=X$l!&?& z*~o|X-)joyteRah8XoGCU^1yw ztFq#Kk|f{vg@3#%uD)i?>a9r%_1Z6jNQ96Vb5Y(1Z8#@A#AEypxxkcd7&^!W+7?vZ z@V9DIgqgWjE(pgm_3X4&owJa_#mhg|qfQXxwl_dJjBGoW8#Bo#u@E!>P`9v~1f zAO_%L76gnY@!^u;AQxJ3jiYnZoMC-b8f@CK>ejUW6C*jch@3fjvk#$MEGj?scnA8r zr!ReK4SPq*ox8j;Dk@ZXk>mhO9JHYYZSW$0JOW&30!;-R?S@d&aErxDK}rP*`^p;~ zZ3OrqNY1mbUcP$ydWxf8T;}0c@_jL0=rHC6F<*lQr_BRp%IW6l6=Zog6atMKbqmvj z{-p;5a9u#YJI^iR!^fX;)Oxu)@UiQAoKHf1xzB$m&0@WHf}qGiYpGt!9rD%TK>jlM zNWzq}M_wi@#NO??5`A97U>XXFn-g{=sis|~4{i?ZX zI5%gYj)beIIE404eu}SxsvS}P5!wL(o!bDJ+-MEF^YdupK(?yY>KJu2-)Un#u%m!B z1N#`Q5R$I9?Xk7`$QZb{7x}fKV6$D9=H)b{g@mLxqWW3UvIly3i)ayXk#BAu z%FS6=M+Gw}@3)n=DT1R)AZwLKRUtixFIc{U&>lZOzX-o@Y(KGlz23C)#86kt*L6QWIu)DzeAw4()9;7Vh303`!=JNzP zqmc;kf@PhN9KcYkEZF9q&Lj7kvL6^fSd9i|Vurf0>ZY}GQlv=s>*P6Wo2$p_49v#L zH(VT_er0EE?ao)G$1iRuXY2pIe`lMgQFK0bfJnMrF}$A*SQ&u(v+bMnJ&(sSE> zbaGDRrc1CHWUTdK>={vrszC1|Cpao?p!F!Jhvtef75Ju3nIE*2pz}sp4X!izcW!RZ zPQt2iajxJ@Xz)e@#3lO4_gm*?Vc{BAfCEvFIYP`S9O}>g2N(+F;?#M&yW6*RBv0CG zlctWX?LE8arP^8tQ;PNe{`%t7jLIanAZ~hlcTLUiw>Pb|Z^JAZJhAERJvB9Z-rgj< z^pbhO{sq$9-UAEF<^>1HuPrD_F>mykH-1oefy{;;c9*(c&=(xLG^CU!BnW5wC6c_* zP=y2_dyuP1x;;b&H5NMy8ZM4W?@Hf)lg-_Cq+rW^lkS<{vz^x7X1 z4rji!ckqEFx!81k3x?{GgxG{iOjzI|K2uh^1;E2wp~$sbP@x=XaU2&W(LCgdAXGzP zdTx1OQ%EyYoYY*ARuLVAdK0NE)t&ZdT4zr8LXnsi2v0&Wfyj}$4|i9wsG-4iS|1z+ zBJ5mzZbcFKBqyI+Usk#4`DK=#a{Y;@%*vL|-EV0)hvJQKugPk*OqJCE1zfTZ%ze!YIGK3*@9AIWT2;?rF+{vL`%a?YORMGuj|RBjH`qB(N{yDV#B#q=`i zyMI}~W7qmWEA!)PCK?-8#(JlhwIsuu(zBmRSLU=d%{fxn)C$4Q6fdC7gg3thQ-=o1 zdIm6cm>3J+vNl6cC_X zdxl+uSr@7a!MXmllZ4E|K81J56;#@Rp(nz`Bt7+hQ-NON?l0K(20m{0ITy&jt?~=e zhO#Ttv&Y?E9D1$T*5X#Cj!X{Wl9yAYqLbK(X5 zMO`(9EbkdzRmKarbXCF&@UQ~K9PHdiT zs$Zjv+1T5(dUjGkd`^9TfuYh81CE4*)KX(0IKmW4 z_b$3{4rl9CEA>~TNftlnz~XGtm{)HK5O_BplHNV?+XrVq#`2awwVcu8(4XCSo{{$l zm^xI6Bt4!2FroD#)<0<$0mvl?P+=(~z(CRkh&mDf%@pSS_7mF=H~+-;=f8`UVADQr zUnE?zH{wn+uKd|h!hFcW&G{lAeD?Qdh>lMrmd0=i0V zbiTh^FqJpo%b#?0$DOqDUBsORx;~d6F!t9;Emx!t zrCNOS`aJQ`V>C{pVlCokeq(zJEi(r$%YqN)s%(pE#I+C3;d~|_r{*mEqF(x9rH5>nru%8OI zv}9XaED?fXmE)s4npO?*i+F)>o9T z!)GxhuzqM=nf#8Ql3rCFLjP~IIq-(R(&l)|#{TEZ7T6sBfdw#Md;~%*k(E+!_hU?H zO>wM+8s-Kj%S|?iycY0ym>dLE@uvxdH{^`WW^(8mG0fw2Ropvw@ZqUq8{4+F^+=_S z?F|UbSafoj6-aOHSQ{81pkj++3!c}&`{1%KNGt|IHWM z7kTVA@AMrTvRH zgZ=x`ftbuvowhtX4r4@X-OAf^hke0?;Q!ISSitK0kB`97d7|Hb-Nx$k=VXV4XV1|5o}#F+R^o3sbAY5nrEWKnLEtYpkZt#q zH-|^5u`@b&AEF6KXG}EcZz?R8!czFo$hSm?U)rTEy0*g{jt3SBGy3XNFV?L)+rH_w zO;+pXS2y)Nyt4daQcZvEoRy6Rl{A~3cS~wmA$|k(+4dV=R}WA6w9mh@0&T2s0qci5io^zF>@R>~fL>4-k+$OFl!T!idvp z5NtRLRy^qdyw4OQfPDe;0f691&F<5`-1O1`~^|sw`CtQ$Q<~<|jo%|LIsyBJSy5}PN)~Izj{p4#8&acUl=3W)BZl z7uq`$kkJYa=2Wy&Z9s`W_|Q352aF7Ecfe`mM!{VNeF2O+S1l%Z#t`|^3PaLA9hJt| zlc!>{qy0Q0qa!@ZYM5Mi?B$njFgR_}M~>=azp{V)#B=VRM~Km2w5Q8eicD!ce$nBR zIf!{hwHD>|fwXQ^u?IJ?JG>JxzY)PhFpr>v9L*F1MiR$L!L0eB^}$Jqom_RUsH`J? z1H>T8_F>n5wk`vZ7^K&t0^q4cKO9i{yboZDI>;pI= zT``-O7@#anF-dW;xFq^+F&mom+$$+-VgWY=HbjrIj-B0RbN9}UYu}2gUEQ6cj5cP+ z`UqKNX6UJb#!@rH^L>iLPgn1uD(OoqhkWiEn%7tOg+%Vta!gGif zcXt7)Y&;}NN+DMkX5BK$(Y8A#^-1ZyTg&I&d#??crdOn&-dRLX`O5M0aFIffle{1`kWDE|?&DE>`XF~&&Yfa7LWlhuC*cDCX<4wuT zR%j`#ew9@fWfdt4?5u6$T)A;`H?|2k?5uO)!p@oBn9DR*3f)5aTm~x*QHo7s;Q{-? zl$a|Fkw$lhNF$~Skz*pbH8Z0rzQyB;5Z2t>i%QH+1bO# z`lYPbUbC?>I+WjL2@A8dVkoi1whUKOr71UviN$9*1UiHI!{l&U30E}JQxxEz#LfTnHjS0Gbq8|n^u|24|w-rxl1I=62fvUqjz^l z>)N^L?vJZNlZungl_?q)F8x-MQfW>uPSUtN?w&q(ZEMHw-i%|HFN@ZJE#KK!S1@*e zU(rCdK6}yOd5eypo`2t>?D+Ej;?CpCitF}%XUl1O2Nn*-_cYefZjN8vBYQ*B6|+3u zJ!j3NF?f-0l=2w*6`r1MJ%kOx>V@UOU8T^!A}~Z>d<{R_)02-0SKBZ|bTPycuEhvt zW~3%38i*My2&fo&gm?v61b*Pr6Sy;&4@H1e-*Lhx-L>M|(p4cisoWf$kr2!-WXzqi zcJ1g%6A#*K2Zgkron6%{+EOm4<1@A9auc`;P3--$)$?;A(n{j3)7_T(Z5M|mxaOpk zp|5Xm$nD!wmsppp&0Vm@O7b3Rnetf-lNYpgpxb?srUkQ;DiCmaO5rkW*ba{v2~s(t zO>Na7x`_|~(~9DvhipggdzpQHmi^^r`wMLQYwWUALq9yc(;A37hQ) z@1J39FG-L6bcFp-N_PIJE?$3AEI?dqT2Rs$PoNzyqu**sqPw&MDnCu2|9d;m*F4ZX z|K)+>Hrsnw&#>7qOHX~Uh$Torb^c)c+$XGnBKa1q8?*!2WXc_UFENl`8hkW(*Lc$; z6DiaJQYK>S$B?*VObC#nP#E+ix6^@T2nY=J1eigtZEX?a(+CO~RrFV3Rute*<=SQXmbf;LkQEbyQT@D!sk6g| zsTH+MtrZWh-h7f}7U|qidgujZUiwKEbo%^xw&hdd_tL&Ck|c(z_8*qK+286*gX~9y zQH@YqOMkW$+BYN0G9sL?zsF9a-K}UhVW#6T)|expZN-eJQ^1{#R(r4k$Vc}sVqt_1 ziwsTfh%xASX<)QENFBr%&P|P`W*Y9=YMuD_*yKrODGBs;JLMS*y5p>qEckvjd-6Yo zpG)_y|6ifSYtKIE2h7}HjY8do$3g^a9sSu_AXP%3g|Sbh3|7MD$h%UNGTwa!I7+G& zbF8hESnI(+X$W-&y&zU&g}J*;Do})D60d-2o&eqANRr{vSEsB-UQJa+d8xIiATuo{ z(i?k(qL>wX-h`KcMeWcBoH>xr>MV6*&ZAOl!&OE=~%+fm6)~A+@H72FBuW#P}HJMulDIHsvXLMNOPY?#) zvY^EplKAxYp)*T!i!&38l4CsA2Nkpo7MAxFM<-Sf6jlzEX^)GKx%gNF#m_M|v)rPQ z$5%;XQ;xAw^RY>Y|BA7}Cg{M@avwxxMOkS{F?{r?QQ>@S;GgGXlYu%3se;ZqHZIpZ zhDJj!$uAw6SjZw-(+xmVOW8-*D96Rq1F5hc}-ymI* zSH;u2h&{ukWzclm;D_pclh}km9+ymfU$ueGl4)U8~ z3zbr<@(Sj6Fc2s;3gBQh05GJ%@0bAl2doc{icwLp)F{G4(Mvwl`J$hP!PKHeLqbSi zu!d#;uyxK@zbnszX#i`Jfj&;U@|+wolUN&MZNM4(7xow$me*E}R_k=tqm{K2jRqFv zH~Q#bX2s>SIvQv`rTS!FBZ{@8Kjjx(KxlK$Km)7AfeocdW9ID=`*yNK z;aey>Xk%yoZ5|rsCARgS#cVIz`ERk&&^WKX(GQOD@9=R3XCjpHiMdogK-8g`7ov|52N#msG5guD_TY4Ov$wv=eu2nVf%uMDCZV9U?mOqtxx*mYbXMt z-?*ZYXx0gHPt@yT72EOoF?O7pv0~=V#fte7YDm1HM)<(Cxwj(Yq(RZC7_||ihr2ZY5N{r$*3B}Mc$KN=U!R07!H<%7G5yZeYT*Psq2 zM+51rp#LMrtY~E>;eaWV1v{b`*R*whR_g5Os)ngp?NojBirJ}|^S3rPbyXG>R$Zwo zEUaRzyYa=O+7*4R`iwlbY3*2CNl|e{V~SLxjoTX%Zw^yk$Q-<{&u;42(QU4&s;V(} z@8}S&_T4v_d7N!rVK?=U4R*5YlCpDftY5ggVk2WOZb~#8vU39C$Cs)jw2^A*P-3;d zZz!t3lHx-$M?_86Pmu%jbBu4DqFwQdSsvIHm9MqJ&#sR7%~tu5@@u z%Nr)O+Np-}@n%zc=eqjJmV#`&BfKd~QETP5Om!>zTMZfcY}2~2te)Pb6;iq5Eh!r_ z1`hX0J3F>_rBvZxO4s%dwzlu^K*n*lW~H>Vf3&ZYIP^OEM*G>?m1`J#%JG&G#+Mk( ziPFJa-;o>>+(DTsie$x#=L1mikTf+CK2$Io+9kjeFmho{_Ir7HKyJay04q{vOr{;d zs+Z40#OF&-?6L-Vcz7gxBpVIn?ADVc;2uXU7^0D+rTS{eH;WM7XVR~pkp3o)eyI!G zUAc6_hTna)8yt2s_k%-6r2enIrT+#;{|Obr(P1I=@(93Paq9>qI!EBEPW`GeK%y@B z6mN3=JLi_mxsEKyA2I2pC#1iKE5F#yuDZB%({gdyz<_NvM~LBuwaqvAiABK{V-nYKdu**Bi}So%c; zOL$NEc@@*W^w=jXp+@?Mz4G)rKz-PO^XtyDvGW_wvwCUd{Mx5*Q>OTV@*KEcuVdct zlb1V~GqB8|p&uVfw7@=9=o7#PQ9WOEOayEZa3VS#?YuiLGwwczj@PmceY; zNbO>;t3rfl-8z6rmFw(bJyhe1(EtWaEVE=%E%Dc%V}(ts|5~?iMJZh)6skhRBz_I} zLjkixB{8~0%`Y)f;dtSmhWzJLA*Cz!ty6eNpGa@GZBt!=%t$F39pa$M7&x+7S2=J2ebIzN?JNmCY$Z>_Qzpsz~zxh-G zl=PiCwSD{ecxPu>S#oknh(dAd!l?`ApM31mvkz`Rx&7qP`wkx1bIpZ1vnZ04+uwBA_E+6e3MZsW1@o9%0MNG zbwJBAA$=x?gP;(0AtNI}3!EzUK!aA9zFj)HO}b=bKVEoYdt>AF3k#)>S&VgQOG--f zm=&KtsA8X0NxSWrRTqW)@rOr8LE*(tFhk9785J6aaF**_Veh8;N+!jK6_q8FP<@c? ztx|e3WD%jcN{3q~0=u_dS{7a%r(2i&g@D&aAVr2d!5sc>Z1uOD0qO@{7b}qxYZK6` z1c#DEE(K@R7kO>pR2wUMLOQyfP30~S;u+jAfUwne;}zk@Hkk{SijmU3P4`Jxt-8y7xL@*a_elq@u<*?*GX9wr$@c-k zi{n$|dTtnN6)%Mdtxo908IGK2j3v)M)CYu8+AvRvmQnoBQ=NJL6e-dwv+O085B%(8 zOVR4DPYJEdDx!t&eD5;nGnSHCj{a!pw(snzy)SR%zV5ewZ12P5L|-mTzlN_QA1fD` z!oEI;Y2YA$L71HAB^5$KpLjeoiVEs!w9qLrF=sOCsBS$^(vq8CvRD6P*~@#IlNTHr zPOIoEjLhs_Q~eX3{~`URbj{b7=O5TUtUerA(A<~Xu(H`G0j@{wcm_{<15FB26j}2z z@eplB;EAjrH`Wh!FG|+OB;%wFzyU*R`Y?h#7z&1NGs$dyrGUW+W z4PEz%bS3-fBAac|(QIZ!+^+Td4dKY&|88H3&+8bIZV1F@`v}^x5lsrB$m8wpz#A73 z2$S3Me`p0X3ACb1dWNm~gY<{YBi&c7bRS7Z2sz&_+23LBed}9t&cW5I>|L}W1#LKo zvG66_5*8w%3ZUV`VDHBeh{(hxUp*!FW2(tv_ZegX;z-WChNFuwOIH|zf6*UEFS4;; z3isK^kO^;JE9|tF*pc;uXXWBqUq^qx>{$f4`{HLIvd?tFOFM0NhP3IQA4xB;rGKC- z3b1zZGzxT4p6^(0%2Vi1 z(q(DC%_hbO_n!Ftcfu~a99}?Qkie(BAAPy|{bf+qm)_sN*0X;~ui2#S$aq-9uAaQ! zD`!2(?H`kV!P_6D00%q{$;oIi%c(N6O64FF0V05MYpEBZ0im*|O_tyCYE2c1_LX-^ z_;|@<6M1RQDyg;*-gKJmepE${BDyRTsMzK#VamJ|r~g)^Mg zE2Q5j*Q2jm1@eorZUs_Z$we@L)ymPTG(UOBL>n6uO^Y{F6HEK0oQ3ME;tMxb)X}=- zYgc&BV?M~2nSY$6eqm8sUZXjP#T9pCd)Pj)30=aDvh^3o^j-718ghLO2NpK>W!Fx( zn4~CYPKTfvx$#Tn8^5WrK#vAiBQGNs<|*8AU}yttwu5FRisLt3*tXl zvpJIyNGar5dQJj4q#3$GCrDX902xHrRJI3)9T5{{OWWa+w6VhF-`HGf?pWW%^tlFg zV$)PzK&*dHzo})are>;T&N#J<0Ddiw}$^LHxB-(10#RIcsL%G~T8E9Bvy-0ChP_kt$-kAh4?IZI> zm%mXT%$^*5JTLFT1xqP4%viH94{I(Dx!~WxnpV^PLBR!{JI??gb*^alZg|Qy?v7>M zDlZ5~DH4jov=AVoMf_$}RC~hqr$4bV+r5F0*{fBd#~C|*Z4>A=9BK7|1sIe+W&c>U&MAH>IfZQWFk^;h_yY~K;Q*R%mnaG__4{rqNy3F=$MC*xOH2Ad$iDuMyXGeS3VkI80nWbwKL-oFg>weN68jC{M1)+$ zA2;zY5K7gNH-Tx%WearDU)i*!oPJ?6hdKBcs-ZYM;;ok17od@ucG;*zwrm< zZp7Y=@VvKKoBbSPO`MepkcdiXH<$`a00|JUMT)rr9f(N1GozVE{fNm|j#r3D>tEekUfN%(J<783 ztJXf&d-W}QcYO2uPIF_aCB*D!X&91Lvp)uBc9d`07t;B_hno+1m-KF|pR+pb&~G2^ zkgiIPX>0A4XGd2z>=?{1NnMXJQK90yR3<7kd$19~L&ZDN zPf%z6BHm0QJo5lZVeJ44MQT(p&1q<;TvMj4KQSPT>*}}e{Cu+|l{8a$cj*(8g+(hb zObIPx6;Uj;XYc%vY_vV+8)k+>dcNsJHCNDnlOw<1V`yXlK9AL z3`LXbajD85QncRxSCV z_9*4WUK^XerOR1Ub#b>~poCehk8bD%9l(;rDN+^XR%aOlDDyo`~v%kl>5O~#tRg8L5~M>}^*)5;o*emr8z zUc8+s;fIFSUrgiMx4aJ{Yz{P!5{84^TrPh3L=7h&w$`y-yG{cIyOP`HymO(%=rIeu zGC8u!q1Aj@r;_dWP^TtGADb+!-S*t#jwiOaT`|^=l+>V8=g;hi!L(8e@F-n&|H4Ib zr^a)^JCj&5Q1HP1<7nfJ8;UZ_Z_IQ-uXqMdBLjQ)hL55Is>%B|$T{Khb;d51T+D=Z zf^%2kT-XRW_jhgbxg|FS`MDK1cNWgQd}ENGEWok^2L;}%FIG;PHHABqSUq3j^>`6jNYU5CD-r}}&+D{NzQtn4vVqpmn$&rspa-D$|0?rHExQw86MqPrE=&=fXqdRiF!5?J}qpng*1(;kA#DHL@hqE!{@ zW8m##<@h7r}PYq5!l@?syxwv37G9w{`6)ZlCZZATwcfGf_TG&hL6+LLV@hjy9 z$e~O^gqvkv7l2ye=_4XdI6$z(5GW!lBnThOh#qtoNtxPsZGu4)$8}=DHUKR;GbPah zBAM42oQy8`AorJOxP_nUEpeGTRJPDYKNoHi1WU(s+0J|1*ph*-2}jpXtXTUCx8Dpt zIF{GnGc@O_A>Gutw5;iorlzy4gJwZ&6>_ zUnmS~;4hm>OZ>L5=ERn*h5dL>mXXs#Q;((xm31yHx~F7J9~N9%S)$%vxUe$8{m%G9KEQCPmAzE3hO7adCB1{Yr&SL-q#k) zf3<)8OPfoD6K93Z(tC$LIXm|;RxtI{1p6-U^D^}LDBi73F(UU_ce9}dXH36`yX-he z2j;mt3(EBwbL{4`IGX^SDvO{lt3MutL?DF=(eFa4oxO*1=6}>&sO}Le) zn~~3w_(aNG`I>Di=_*j6Ae6keJ>Hs*O=8Kt&eyo(y?r&pLr<|*(%?z8=Y5+--^dTI zQ}oMyi$h|ahB}e+fstJ0QG;DM0Sjm?CDhFi{sGYv(^`T3cqX(cn zPs2Z&Lb|gryvBam6n^3^ zF4?;|(;;rcJhx^kOJy|1->ZA(JpoNZg#!fwm5 z?CkOEj?Ht7U7UR5^&?$zv4vwM#)Pk9Ip_&9HEk#l9Xcvk~a5WFx%PFJ} z?vQq>4Y>(vH5p;ltY>|~)Ts7?(iu&spYZ^N(lPtscC6h^Ak;m*0wg|_~Xm- zgs&rX%@j-F(^-bOTCDij>z8p4mebf{3gm&Mrz9upLxTMMplKr)%*DDwqe&`_Gk@2j z&qf(HmxJ4hQKQoU!kKQ~(4Lasy`{BcqBVut+V@`UnR@+TE8Dd`r?W^~x9jDp-lw-T z*jP&ANMYN$R-?XgWy?2&Q!%9jm4$;fiKe>2yk%!c(h)}<-h4huQ`Wj5bLjM_C3ocL z{OoyU`oyXQIk`Qh@h8Y;sulJs?-An^)$E=dFbijATJef-ya~tmJB~vQa2-DXbwg&U?;QaX7sw3@CVsG4F-^cTRh3A7|S9w99cnzis zKVGZ!6CZMm!a5kfF&~HA*)Z{8^Y2oW?&3bT5PUasqmO?#qIjCV0~F0HeP0|=`~vOK zD1xkjLjeedn`0r4Mubzn?weYrx~YLx&IYnL=cjt}h_k6jWq8|N_%k6HQ*a-$34|l z4+IK(AqPaOpj@a_B><#CYV#7?MRb1@#=a>f+S4P-q;)>T@gPVQt+HJjwMkQKKmFL) zacLAkeeCRU(UU**9(WY;k>X@f_}^HHL+%QH zrpIskZq|)Is`QTU!f*)ZDDIcf5d!HP_;s_fFPw$E(84w-K&IC)*oPrG3i1U{uRIUI zT@i*zJ`7q2yiRIm}JY9coN5>U72wctgY|@fT7Nhj4gNLuzWn zqFj5)9AV3x>#s-Wr$j`gvF=u8I#T ze*gu~?GkR7W=g;tWcM!@*yPnR@k$xV4nH9mwGm&(Jo2Ropbz2;R994}Be*GUuV92I z;J}qa6cQkGguKELYb1!f0kjKnT8UeZAAdy364|$(l*(Cnh`4N{&9*>TVSk$4lT2-? z7xs$ZR$ak*L%lQ|T!yGGB`5;%A4*lEKa}zx$W)}SfyH)~jx6LPevUelg#?e1>q?@J z@>epKI=;EJa-;`wn?o<+nJL7tLp5K>5B}Y#_+@p4y%q6KHI^6D2R)@azs_3A;_Fwm zfWhIv7Izh<+rKBq@-gK3{wv{Y&Q#P}Yn-$jpy)s`7ZmU4_o3jEbmCm?6M{R+9N%pWL@mT>dNhD z$B(<`*0#o0uidlGHuUiF!rY+)9VK0P5r*0&<+gQusDFZD6ZDcxkikY&>3M)>96nD) z>{wj{egm;a_3MbVIYZ&$=H=$$HG!F;WS;O!czJOz3%vq}H=c*jHv+l(3q($YHTz$@ zNTuQ;p8INWA#jP=S;;7B8W5xnh^N|jTwL8*`%VX4m!K9Tzcl1&L?8%iknFQkK6ueD zEIv5MRZ*0yIL$NnAF#oU42ZOl#jTsoZ5Hji2?Pk6A)^BM%Sv9vDp(w52)wYfeo`HYFu+N|ppLvhWEK z4XU|pXPG~m9TxmhsLrL*6J=PiRvec$3Yp!Tn+wLX0&`cFOuxRrMZAQ6s@8q4ttgo; z3d~wo*tD@5aL%pLMz&Rm89qIn6%cUB&%frt2YWF&?)l!HssP{9{_2c@V}tU%P(p|P zl=A?|$m|}4kJYogv$d)q4Wae4ne5vc6_W=?VK{O3AiV?^64jem}pa!-*mIUSH(AN2f&l`r?cj z{Fb;>Q$}aauS`s98!K!q8k?PFteS6$$k2zxWR%4<#(`8URG$`VuPz#EOT#%uP0kNG zYi4wGrd8JzS4tmB;||Hvk=Do0ZhR{KRrPJeJ<=5(&!;4y9D14~S`287g%AYJRZIOu z5iaQ1A{Moy?yERw>4T%0=_9%MBW4f-)IotZWG%X{Pm|kS@yG1utnd_LSwV2ws&k8c zy?rkF`mkTL?;FTYnZ2UM*!bil_hxlej5QjC5<}mT<+-M&mZ`0!NMbTk>_ZM@L!P+aK+YYTwHnHk@T-f`-`T|r%$r@D9h_LG zHxwlX6kO7bTo`eiL z0vnpxzCE6gi}n?8-vkHpDT}foXbiMO#~OkXXtWDx1N3^OX6}`N@mKe^8EXcnx0DS( zzoW^n$l2Glz}6)lYS@=2L}uT!z*5w8^1D+F2iFhR8QTuOHD#7AXBM!+5;3VPSNfDi zXQJW-*)uIS{-4sOx}Y$#Z{7$MewTL&q4t&ktAI=59kx@Uz~9`45q?KD49?HM`QOBT zXlAe92p9e!pC9uNe*OV|ejwRA!XI!x4=nuyA8=j#jn9=|Q$368-n^j{K9#RS;SYMw zT7?pS2k`4YrRxOoqSEm^E1vf_zwYfDX6JPu$k!nX?rI-hM`OAX>%U6%8Ah}aW14P= z@TYeL;gbsYf*VCfA&G9U9ex`Pe5xq4^qed7DjVEd*R-qJKdPj@C;#C0ckv=Tlb6<) zqSn;r#tAUL*G@DvqZp4{V$Bj!YN#B&xUo7m;plhA2CgAFTk8-nXxIyeFm~W&`!DzZ-G(Aot)rvLUI36*oWc_pPCFE*s-w#BbtVSZdi zUi|Rkad{PS1q%xN=p59z%DlMY!{hTR;&J1*&elII+ymzgy4h(o*e?+g?-7yaZ`*Sa z&m%nI!~I9n^O64H29Iz&mkSFv&rS`?uLudL$PY`My}2MHzyE{$sLGrmw}`}qXd8E% z=!C>@_rRR0=;*4PK=<&(geY77Fv5-cHjwqtN|EM&bfJG5(uYaX-m8IRx zL7T4Wle{5o%S$;i-lY48fe~wfSo^oj5!m;y)9ca8yk{C}N>fyQPGCxWte1OKbfRBQ zeWX=XeYSr>bd-l@TwH1(9yt7049)!95;oLfq^->e`=KSd59f>>YCpop*3ALI_eyg6 za!MFd-E1(4JalaC!?`6^!;v}?sU?`0hMr275N|yT<80mI!$@|_TaPVi@t9EoIO`EX zRqw40=`{6%1=tlFGxzt>xfNq zb8~i1PncH~|dIi_cS`Xc%L#c6lmJ-0}cb1qHEb00aTz0 z&XL~k<{WXE7when6|0O(=l?X{rtyEWzacx@kWPPAhlV-_S`P7X3=LA=S{)D?8h|iK zp#c+IJX~BO!eheU>|JnSNk+z!3!3R|nNz1`woO%{U7Z|Vrm{CO`M;jr4E|4^YwH|V zwo^I1gE{R`POCpK$06DDzN>xIvJTcX7;^^Eu&Fkg!{TD1BEmxKwV1<;3LS!&HE({R@!e$>#^p*8Q_e5*nxHAHq32i+Sk}`uc=Zy~Z$eNR%5S1C{ z8XFmSpI=ZwOw{Cay%k!kcC3z(F8AHSOh6mP&7r6R{;oD!ssqB-2gVB<@5~Q;r_LuC zC-9FwVUcq>mMrO*i)b=YbJ~|IX`dU-o@S2mlk)N=#Un1GQ~YH7igRG>``K6aPMEOw z%IpiXuk0=_-+g7aThgj&sj1UfCjB*O)y(wtnX9lanPF3j<^%@C9um%WhmW83P+(^! zhV3+ggw_D-)%2r9@c2;2|*%)*C_!xw`5F@*0u7x%J}A`u^WhhsKgawIT^$jc?BgF38s=f^?rbxL z?mS~6qTFpgoUOGtySth0XYY(?52umNb|by*hI?nlcsjW{*}8h$p*(uDH?>!FZ{XXm z__m$i{M*jF%3{4lf~qlk&0ijV@x^n@{@PD0Ez>11&P{iJgL6Ri2&TPx^(xb?+iZcu zjYrt(r&JVqM|#?8QhEDhi~RkfJA`jo;Twn}XqG<<=$_`67tWn~p7}H@dmCPUNqe)s zo$0C=rtu(~q2TYf*}GUw#%-pMj>cDxY+}AIoIUrV#^+Bj?Y8(@`4w+Jru5RgQP@9y zUUwS0HUi&uaf1HgT~(lWSCr8@3C($g<`^}4<@oSJ4#AmWp&7vr5sPqe*o7LH&va&xaY`S4 z?vW!UDJ~`?Xk_5X01r33I>Or$9y$2B5yXU>3J+R{r}f3sEn!Lm{mIV*n-b{zCTokG zKeHmk&kIAP=<+l_pVaZy^W&A$H#*Xp?Phj?nUQfhh+~TOz7{sa0Gojv!LN>0 zwFt1bl+MxASYT-${Cc##oUe;UHuKP&kqbI7*ava$^{BH0t&1;({Zg$9#!p(qu(I{X zr>(@25yo;Kys~=Qv9%?`t~hRcV8WVWcqF|>tt{WT+nKGcJ}^7B>hOz8<}CZu;Y!2Y z#%ZfI<}BG;G^J-&+aeG2j)5BcARb#gR|NDD%+my;GLF{~%xMQd#>N!BB+ zUF~duHq2WmWbL7G#$2afLs4qcm(>J5#TKr8?a&0qs*b#Q|H+e6_Rd0gK6-k?WbJOb zbpQ4HGuB_Cea{^|OO zZS~`aakNih5LoedBB-D>NJmJCSh+ebmOZCG{0O_bQdqOUoWyB6l?A7 z-d-8Tj!7Rvwzk>^lpE25=5Tj4t;^u6q|(%_Z`@x!TrID7l-P%w1m$-ur{`rleMQ@F ztmjf^r-oLgfac-8TbeJyqq9VNT2WxjAzc_7?7O0fgn6tOv88Rby3v-;1m#vmN0z4g%G%vMUr#?UD>iKE{yFIr6GwQbO{Bd(Pk{f8_|`D` zmKC;+-~;6J#}JZys%S^;huhinZ;{^`3n_W$SC$T5xw45he4+Tr(r2=MkFpIid2cT} zinFikLH8}tEdyO~mKa)q<&?EaMs2gzSUQLLlRRSCA^CSb8=h~1#^ODc56%Q3ez2bq z=On@T58Xn7%$CB-jcI+Ot>wohk*Of3jp?|g#UFj&ePi?I-9O7!a{Qe-&F_0R$aOtq zIql~_+Xlb*`BZw4h8d@+DQP0I%d=`{&&7JzeWkTIuMD+#>;n5y*R5I9(+DXZ)GP)= zn@|S|Q3t3`eFV@;sRASNm$~v}tXxF3wr}YWwtQZLihJ1qW6Z7OmQ! zpI5Mdby3l(12m5e{-*UAwDZ89s}w~$8~98LBIV22#&=IvgH=|stIHpqd$bb2*|D3$ z+!M>2GpdV{oD^3pxr(_&7sV%zjd7uNY$wV&33ANi?U))0 z1lAcwua*Q2VbWqxzCt2TQ=FZdnvxJtTU{LNb(YwoVTjP8z~Q3i9zav@cLxtGM)ACX zCRt;h2lWp%8<=Z&az@6;ydw{e56rHbH7}~XWBoYY({f~SbxhEt;uz1ktengd`3Ke% z2jxzhJwLkQ;hmFo*W`qX1%{xhW8+zfpCQEE$yRR{TehYmX=*{Nw{7Uet&>0Gu5=_F~ zMnYH}b<$fqU#YyNOwc{?_YwvLh=3xvWGaA0rNPpULxd)Xy(PXEDO|sHe9V5 zIE+CZH4N8=Fu7n&=j17!tMeJV#F&51^b{=5^~aK=-95LbH`W*oa}QN(hV|S|nVRY2 zlQ}g-GYsFY0N(e=K~*nl(-5|K4%! z4;^1U+GwYC#_pHV--s?5?}4LszGp$n%e)9%BV27XWS&7y&~i1&}x zlwDO;$sw+qM_0CAMj1Vce8-^9`vK3H;~`V&8Zz7g=z|(ht)&qp^VY`nbg+j#@{?im ze3FYp43o11HCHu-Yg;E2?_H7;T{tmBxh${W%-Y4D1M!JqU3>W&k>n~CoRJCct~HDkQ%YyMeb>A0CzO^4{%v-j&mC+3Iyr;QB_ zE=dp4Ue%7S+gDf&JL{b|IwZ0z&9`W6b4kgeRfXCs+K}w=Vc`>UgCoaGkE)lC@}7J| zZkXe645r4d85;xxUJ+B89${l0o;@*z7UBhtTQ?yxC(OYqq97)*C~P>?mf9LR+b|t^ zLi6{Qm+l*iW6FtlYyd?E$~ZZ{r@Onm_ku>wd9L?5+Zw>yn&2nX)oC1hZDr>yu5WK4 z|Bj%8J;#sR!D$dWoO(9bE(xRoteyfKX3>z`1r;zsx*Mh*jOAo1|7KuSyTUr>oCcP(I^wW<>cP4 z{wO>5=4;k#{qB6ktufSHBAI$XrvkBpXDod7g_(vhA8XZTPg^OBLu>Lm-CeGyQGHLw znbd*z*d-8~7Z_fe>Ql6~skpdlO_5LX*zmyI826mTyGM`SyCkERykBW45jvOVYhvbC2xP)hihGz4tD7UM9ziRrBPh+{c+d&8Y zQADOGICx;-I;Y_p;?UC|1LHOBp}~A4+djE<=m2k565CnI} z>}zPqn8i6ch=bprpOceckei*y@+Pb=4-PJ0KVfJ2hVqaQ{IQuaefo^kv!+j<1zU$s zsQiY;v7fEe!`8`fw7t(}+RGD@Hm)STvbCRRI(0kYLw5#WP7VX?F`ui2L5|h?YC6Nl zF3HVXIyS7?-ajd5OaYsIc)#y9*iX-zm3RmBIn`KytTJ3o;>weXJaJawrVXn3M1CH+o57V$HZ1%~4%pieIdcZRsf2AWxTJY%@Es z<(#FXZ%%cpVP;{dM@qRNHVTJ|du9|{4zsbOe5T<0`!pVyB_Kboue+^kySxUl05^U* z76_mu9F4X#Ky%+v<<DZvfNH)yNFEDTQ(MsXO{ z2K^=qI-NkV{!b`G(0{ns^LilKdhbl2CZX9j5GuB{XD0RF7qeCy|RCsOH z+|M!-GKwR{E=o^dTpCf7nUEP=I43n_Zehp{C;wQFw33o^kC*^Q$1H;(E8Aemlyg$5 zTwQ16Bu&872ma*DaCNOpF_a~`WBjEobPaa1Ns2cl*|-I>Ws!#XsK|r_lBEni`~`aG z1#eau^uWh$gbmq3^sD;YLRcC2!(j^z2spx(k*qy?ciYyXo)z&KGqQYev_x+H;^Lt9 zKDF+MDzGa_^@_m>GCpx@X3TT<3(T95l7zL5VdZOzV&D3NZD3M}d+N9{m*50XkN5y5 z;ssOLn4i9=@j*+ZuK%OPN^`Myv;2U%pH9Qx(q?MT;5ZTuY>+S7C@)ugOY|_Q525$f z8<)1Iwh}v3sEf!2D}VmtN9#7YMW*}uq|?I4bRXaJNVf?r#?Lp3Mf>{2=$2o8-!DCE z#E7tTKflya7njgfKi`-b-+-7H$mvJzCe2e=J7ppIEkoe7!8eD;I%0z;8hdBd4`2Dw z>NA&1uMUX~9~G;)U)#rcCwFjGwy|G*)Oo)I6tq6ZSI_vX1l~U_XgjbPYrd zUUXPc=k87j7~(b084dd(mOCaO!OyP2B`nP^$PgLn?Hj?$M}(&NV_GfF%O}d>Lgd&) zPtU}$ky+U1>m0wo0yR*AR8ozrTVb_Ao-Aa+7qU;;UCe~ITcK66w);6sy-@$XZZ^X#+)khX26*c_n{@U}aGTfuH{6=~>c!fBQo0bWr z(ow9ow;|X+I@d41Cbx9czh;<MQCF4o^mppNUCgUWS;3yrS%5RSAg+iTFQ(&Lh(tVZV#W z$cP9}P33&C&c1Incd%cY__8Lx5U*KGm>Jg|#@opg9V5pidL+bz**oNK&7ZoV*jwjv zXXdD>21hF!JNhd49~NXmr?5uS2b*`*QS|!}$G(o5cI8xGzE#W|;O*xd;&rqXpYkRug;~%>w&gOrUfxz;Sh%*mT=|aKM^DKM z3CWuhjo(i~FLxsf$c`z~w^fFqZ|EE|Cc#h|??zP)UtOpa?7&mjKA{Od_XS%s`!wxnL+P|2rAKDH$%?aALJ-aiYu8))=FQ1wg;--Wgzfan zj`P&AMhh$OCG&WB)mTU70}sFDrBGi~Rw@%@pT<9E{2&E1aK^o_Fl+vpq9*&`>&vEG zVMh=iAd{`cUfy^Y_kd@xmsj@Bt4>vv*UldH9lgBdQ+aLgHj78&=eNvVb~4%_r)pu^ zj`Z397wqFrAO2A4jJ$v*wrL~w`uYnwoke+3JSy%Jw!#DhT*BmhhhvHy?G$8=?-k@> z^Tb9f8hY}jxELPE_dR^&N-KN%9mP&|`GN<`>o$v*CrfLwc5k}HbFh8nlkjoF94psl zlM-4(^oWGeU$xiDK3)lh!5*1uarPsevr8&MM?EklUTJ1!2?j%AA{r2k$^0|MM>*(+ z4z+m5+R?@`c;fEaax!}+JUu-;EG><60J^WO(NXYk-Q)JOE@rrQf^mZbg~8z;9`4=A zYOZ>ypNqG<`#D#o)uNBxnLg+<@RZ^olU_$%_#U#OwO&JLy-9*M_j%A9&kaU%5Z~Ic zz@EQ%YWdz7`2)RAn_V zFaTXkQWHd2cXs5*4aXZtS(;}phiZK1WoOOK^-Y|$t#pP(aNe|}sk^3xqcKRDv%A7A zIU&kEdPGKEzE{J`o3jw&DQElj%@v22X4%>)N4*om-1Va{4)(M2H87n`#E5`|@R9{- z#jD4MrA*22E_mpf)v5JY*Jlo~b-HiMaJS(@WN z)3&@&_2;eAPSoc+Cr&MhFOGK3TiG(9`sm`6E8eM|J`?L5uQ*Pb&`RYr>G2Lb0eVIQk*zHDOhbC^|=0aQV+) z6m3{CBTV_Q8V9!KtT{C+tv=o0J3TF9W}e@HeM{Id$EehT&~bB<9W{UGV_M(z2{Fpj zAz4dWX3XteoaF4RD!dv2WQB0YQ%=8+RtkGb7J|@^E!`q%`K|xv~=(qzP z>X7@Z-7KEH;bN+opT%exCB$+3^QAp zp)rLGOQns?8XUWdOlvST?(5_2>4eib@rJFpo!t<4vc(c9v`5^dL5r>7>!2BE{JQej zzp`=7|2$dASmnuoHWz$!Xw~^;@Ma_~J-_PEM{-M(yg{Dz*uM`iJpAv+W-+;?x0j7; zcxK6B#CR>0l@b3R;ZdB0RtVeaF3o&WJ^H$++Z)Q|g>7e$C(}WsdVM-=w&gRY1w4Ev zX3?QwW+zHu>{JIJnwCN5WH%|_^*<;3;>9b>Ui-H4r+b`} z{dQAR6V(xvtac0Zz=nDuh(t)vdbDW>xuNCJKA{G}yH1Q?)*nY#QO6zsVTBxqQ8at1 zdE_5YeEhMJu1!?Z|Dj3fd0CUt#B$r)6*vm%8+%X>gDo=Q{~MK=HynFF9IysME*#3N zB&+3!IfEHrS`C1nIR*%H795;$HaoI2?tR;l7t z_QM%v!fBPZK^+90$^CH3OgLTAK{i9hnb8mD?zd_r8$n0D%=**WWunuG1CLG+9pIcW zr(@}2#9^=W^{`Wfqq)pZsW=OjG1{pX&jW`#K{{zQ79ml7X>KBp%Op^h$zCoKtaLTW zMBosg0tahDxl9PhC=-E0G7&hf(gQp%gk#LhKstzsDR9j4djb4-aDFhz;AJ#<5I+Kk z_z^gDQo$g81P<{da9X9&gZLRpr>5`iLHuCbp*CGl

    WH`00`s@p7bm8Ow12>ck9v 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

    lr~Z#iIB^qAyre z$FW7Fi8RvCpTBOGpYdExx!k8k|G_9t4|H;x?w8=$49S2zuN|cSU=;p~Gs^QQ905)1 z5RxA-ikpjr2@b-Cmq@F~O}@E;AhM^_e|k0vB?Q?lcv>dpR}X=2o!gxIbaSvZmH)2R z2Xu3AwIK_gXEXg5qhd}3#Q?{&X*jX}*iA(5a7`nCeC-h|>L3J6F(DA!vgZu0Uc+Xc zY$62H2rJb5)=HZ0zUg@^FPLZ|H+X`C=3p{1)HvVb!#Vb8NQi+AN%INZ1dyLq#jt7v zMn;n}@#8Cn@K0($w=@aj;gJDolC6YC-p=8kzlnX5X^J=6?Ky*seXuD82NSacBF_HL zzIopsYP?A7doLvg8_@{mDEbqsoNtgz`t6ARLwneWhAG7vV!ryg5e;WT)73S>=j^BQsk@#->eWi`fG+GRf1VgCbblSZRV!!@sYIfPWW>iG zHdQVq6O|9PdHgstI@ngTmv;XitjFv*d0NiqzJVDr6syQ!Cz~sc$ZeXvtl#NgmHDrk z?V>0;R7SIxr}P*>Sut%cNaSm=L+JqoFecG{O!TYyWbAG7FCwDN$j|fge$2faq*3I# zfc9fXekWZIL8E-BYI!lqUVQeDevEhne7TNbG>0x#i62p!d~@>zoi~M-_Ptum$+YDY zTQ9F>&TT0=`^FryVj! zLa<_jn7F=vHvK1?@IeH+?5*y_kT}C1O%W__or)nt$)~k7;N=*RHc^#idnKJTDT)}M zD;lJm06TWjPb{|-lSfVW&SCg-hYX zDm<7pnHdAimG5&5xpjaU^5v?~l}qty*mf?iO42%%vHLLWLQA1evQ0-i=BvxyQ`8{Qz; zmrXwe^;~v~q%8Mne@K{chrWI6PkdTX@(00DILwUvJPh?C>hLN}KYd=z{(^~~E@jCR zpmwMg`kFx`#HaDI|-wgmoLkJ7(pwg}Dy_}9!J zH9JELgU$@Q&tjAR4Tjz4Wm^Bw=4=3!zFgpo`mP0ZpZgyEk4@}8M=lmA(q(2(>^}E( z;cb$#K=(O@g%hPsHRBia;R72Gq5NEpOS6U@$WLu{G|CW4B0Y={TPr)!ZJ;C~JA2@q zuY=_FTXQmR_tT^;1pi=1mk1&B^cQ%053z))aLyMoI{*T}9G-eUJ^KuR0AwKE2sV$%}#PVxIkJlJLOS3rPCM`T%-_vnd@cP>UYnEFY}2>Hcke8yZGwFmY}r zDP-X51;z;_rosLa@50v$j0w7FF+KYXwiViJ1jBHnXP-f4Ci|8kf;R!4MurFfT7uD{ z2RZ{r*=&P{IrqQDu@I!vED#YM&_v?~O9uZe0xD7z0RyG7APJqtQQZiCgPEKJZ*Zjt zIzwV6yAKa{Pf;YW42c;J{u=}&QxzmMfv3TLgaK8GhyVfP(%|?J?p}3*FEG|NG`T2s z5+QIfTNq4(y%j0J!4r({L}2m^o4_K}!Ztf#-tOw8{A$^&C~kzeT_0HB*eEbIa#2OL zqM^iUbrGr*iLNwZVt>KJ26QS&G;fB9sqmR+l`#gerh+~hW&Qp2|&8Xi)4YY-;P~{Ee}5CfP`@J+Irl!rP6;7dKG=%*o)rXb|6hYmjfbPpNT{GQ`yoJ+G)d%x$(BHm{(pnj znn!s4Yp{;N6llBuZ)QGk;OH|PjONj44YyRVf|bWG-_W1!xcIdEvx<(hcHfbo@kGA; z+k7+$1YagXpnK8q=~Qw%q;b#_6J^?imaQ+ip@LmMhJFGjvxSq-@F#7w^E9e^W)mQ-)l#!oiFN@$81812<;zX~V zO2VnZPC!+}F6cp@CAXU|l3;MhW;XtWv&={tlkhhx(&v?k~>DXDLJ=Q4g*hl#6u?%1`5@e3Feo&EUIg2fFnuSmwB z#rZ;(=*q>tAKkBn2B$Hi>%F0PS@8CRF0-Ap#65X={qnT*>|2az(hg!e@4Nz4m<0>2 z{@K>;Q4qArfsvMJ?!Z?VBd>*uQOIStmi6PV8DahH&Q%wED+H1^!G&0V%Ty7(O9S=#IEN5T>CEc71}U3Sj2 z^3XSCggtxxh;Qw}q4dqF*M<6L;vs?q|g5iOm`yFr=8>OAk%*g zlNY8(p44T+Q(KdRyLCX(O3dd_5Aw$855^xRfTH(a=F~<83&Rx!#k;NWm7y6S%Nbsg z>8tw3+EuwGOs5y^xp~1ZP$#EzdrxtGYdqYo!jwMRP2zmm%zht+7kt?5Qf|`DwqJKK zvM3!Qr1JZBr!tbj>OG;qd~Ds-q|TIH-Azm*EXkTB_@ycx#6R2{d=(4=-YF-@ZG)rfzdV z&@|@qz%sgv*u!g=8W?w0R#PqL`HC{r+F(H_-+h?Rh(}lK%fAH{cIjtE7NA3d(6Y)A zE5>Gf@?ZYmKv@AP6TPvQPe7it%9>gl4~Oe9{G}I2IWaW1y^4{6v=7*~9(j}c{wrok zHyp((NEaHh1dRcWKb2~MxZmqA{I-=IDAqpXiHnXoUy37WiPx2Z5| zs&A|cjnJ;@Vlkc3Kagx|R{NNuAnEDe#=KHT-;SKH!-$5p7n5mOe>7sQ#W-i!x0ZvMeV)WTKc0YZ z$RZ>$Eb!{Xh6CG76Q8!h8&k=ul0Y~{-Fj!Y<&vcv;GsYhd_f$34@_{02RL?zOJ>c0 zBW&RrA+o*pmy?9~k8knoZS}rZ_nIA;|7`kTMqc6EyRKs7pYZ+^i+eMFcjc+U4-ewZ zG*2_BqoePVTUvJg6d7grQ|*!tU1o9fKMD0g{?=`ml$e<>XdQR&fh~vWP5!5*J}97k zgSgN0li5fcjytRUI;*em_Src(ZO=#lvsy*WpEgPg$G!;397S2z$1MF-cE=lvmBg}9 z)iGj8HYarjvF`WIdFNJLAHKboIep;M+>v)Un9NquqM+uM{sz0`*2q*w=h>!!q9!^e@CjLu*0m*C^#F=HR*!F!%S-YvrsdCdB@@{ySH6ir#K_hE5L58F6Za&_)ug<-Y8f~7C>)068@)Z+ql}-ThftDrnx$%HQh`;y2{s0A$JtlG-S>@dFE#JWKeM?Cyrrv!=$m*=Fc(p0Tbw?4HSh!^r@qeAC=hV4dGBP~YUGz`g z)i#YuUqW(Y^{)LAhX3DBWkvb7{67RIF`WmLc2#k3bnwjOlZ9@A>B)bm5%pRz7 z&3lud+-fTNxQr!D=$emgS){%5QWj}yo^jac9?&xSAEvYNeH7mCwDMTUxQB&D&wHC+ z6A|UW@LyVy7lc=Vf!H@6o*Zk61q~~RRH%kMP2qZZ%`N^f2X|Yy88aLUB8KDN>sm5b z?(A4+?Qh;bti+PzXqQjpIjmeQ-h{6lT)J!LY;oG(1+O` zT71^9UIPv5pgWyUpNoVk>Ut48FDlQy2@LB>N;D}9PXj1Oe?aV+$6|sv9jU&w9Y{NY|>fNt11@BzW^- z;c?Cp5VXG<<3bpFZ`yv4xz?Dxv5pN+TsMWeWJE0SbLr_4EvCh6uYRabf0VxpvxQ7E z@biq2FPJd!r0=@9gK>4>#MHyeIFB3|1kTf08m|Y;7AXiwYR=7$K2gF#_;^wGThFq< zO_La*7n$e=w&Jzu)Bs&)gIe(5$&BYGq5$c|Hg9Fmx4p>=f93oFrgbekh9DY;4{6Yw zL2#uN_3XFcN;gxZN#^&y!&dQ{KLXd*P}i$LYJ#8dkj#(Y(I8}Py$&4T;1r-~dDdKN zBVJhsPCw9ep!!+&ALvV-l@y1#9?@rX1vg7~{Mp$p1LG2hf2N}QbFGBA{1luir=r>D zN#AIy-7t5*<=Pp{vy9OT7g!MwmPG!vy=$%4-nqBO8lShP%ec-%_VtSX+()nNLkC46!(eT#uJ4Ez z-}2H~IX}N{a9bgYX$wzca?Ynp2|`4kC|S)6-7r&qpQ+Oup6kTqEIYm!^)jpd6C+yw zwd#8nox}&ZtC^hImHnvszIpAXjORjlAx^JmQxwy;#EJl=FS|jJ>8~uBB{h0A7?it! z$$?xQY0Eeb3QYCY{3G0$%LB&sN{sb|7f4`eO2}lUZ|{yNof{Um3~VxBoTJohFq7s= zvQ@Y-&SBq+EcFwnGmD(lj~SDJY};KFfwHZ+RJZ0y7mGJl4=q$~npu4Ez`wFh-j+Wd8l>%AW?p+(GUf64-$ zdzMIb6CZT_fIM3w&pgBaT*l(Ow#L-X(>`5%=C*1A+M;-`B%39UWSi;FmzI3q!O>#! z@}=Lx4Q6KtAulNd#tM7$7lQtSTSv`U zyaV-aegvlrESWVoM@r|bzJIj?(%Cf!r|Tg=31+fktGUOm*WW5}D%{Oky!G|w7uF($ z6S{&|U7CNYsqv3r3|5ex$Saf*TS}`^7hhk0>2;kF=i)X6S=fS=-uO5VaJP!>vEIQz zl^-~k%-AG%&$l8F*q|%8xHa1S=h7*immyHjDN&n@Qx#VWSvE(^n>T%kS~ah2<#a+L1HMLkSX7t9^|f+{QxUK7!>h~!?`5V;d;Gp! z^Vr(AZBH(+oZXLoLc^HVepCUa-R+3dR#X&CyotdTC~K+;%$uJugtCU3pxZ5nWL`j- zhm`FJWzH-HD3=jMXJ{$|Wvi2fGIV-!7Rf2ABjtU1lrjU9IdaNG&ne##$}G{uMQFiD znL)~1DPMyO?;!{a1bM0KS`nNO0Unp7_e=;SXcW-_(2i93Z6fBXYH^8 zSIfQ??@a06#atr>c56pa_`c=f=RbrKo7^jjV8rJFx|CvTc?}K`EOEZ`H~7ZggpVJQ z=R>Oe)vtJw!GpYfMLfes9X$ow$gYUb8S$Loh1h zr-M+P9x>d31$C%3rs3m5WI0Qf-|N%W#oSiAiC4vMgqh07^5_Imv$35PS&2xS69X9bB#G%GQJMFBkhikz?@vdMa65Lae)V1ncqS1i z`(QdNtmq+t$2E$W0fDMwwxu^?G0BGsL<$R1JNf200@QT0hJcb* zi#+kM3N^jgV@hXB;FCuf0q_NV56N;R6gX_bK~+bq3*@8^WO|JvfL1@BjikHcm>~jI zHa8&f4V5F;OHMzw`OJ)y4tDot%J(DJ8p!ofIVHU@3b+nRC0y@DuG?JXq#=!qd`fh^ z+&mmj~eWIjOkaRvFeF?dqEa&<<2z=BFNhiKV()pD1kHGaA zlxuOtj2WA8^GQ2F?b$`U1k<5I$$q2yPx(j@lrcV0XC1XV3bwC11 zPZ%e?wSzrozRUzAXqe=*e~E8gTLXU1UmN4xGzsO*aI$D& z*Rw&w7%V)We2~bQaoGOL^^dQLZ_hY_Gw+wBt)?6{i|OoN!6%nc^Y{scLHe7l6L(9 z0M>bgX#JXsxp&}F8ZG$sZ;fvnaRV7 z63@OEek+6vGZk8&gk7o@HmgGtHYVW4J+`^2#|_oO=fg6DJJbO~06EXx+2(I4pyQhY z;ct*|v}UYEacbQzrk)mpmLqy04lI!LpP93zyTP_@Dda?xXkpuWIM4)wvw}i;5O`B= zmb_iD;h=8F7p(Ux6O=e@)_U2S6>@0pzCkNw5^Mb>xV-$JwL^fCGm&UU=Uz#GqJ_u$ zNvizl-h)X^Dxz>Y(VvRh#p>wCw(1H7$nqD0Zg*rsHm@M$4#uf9Tu}wGtVq2h>_`K< zSPgv1a8j(s#bAFe!TjS@G`rAdL6}nIXS@tdZc-A3Pd7vk1W*Z1KxYDo&uez{pDNh$ z;zuM9_C<&T11wL3H@uN$h|R~yZWtM-SP?=qE4H?9@}aW2X^i!YjpPjjDB=jq!)#!g z$?*y!2<#Qe0wsg3$MpK-PG<6~U%ViX>xMjK0e*n!K9{!ss?CIH!4U;8qhhwTKC%pN zj3LV$U^(n-e5D|y5d2tsN~iuG!181j-gHAuFa!;3Yh7R&0O~tn*$P;WL%W;RuB=E{ z)&R^*QAd{1J%D9vEz0tecU^#IwuzX1&=Q+_&bT7wxI%Rnyvh2)Q z6T8j~Hwc+dwOj>SUagShh2zM4y#i+e%W29A2Eg)3Ca(}Li_b)zD%pn#*b)OJPD|h> zMOGv!>qn&9B$E{py0VXP;{ZZZlttmBvoiGKn-)_*Ot6u(L25K( zN@rcAUz*+o(I>J@GgL18LWvl5ZW0*wG&%D2*+F4H5iOf5ap2g7mx-D2c#9prD zZa-uhv`q4&^0ypos%57DWO<65<)BYfLZ(wK4=e_jp~NE#7Ugr{f7%gYcfSK+Ga`zC zBlXa(><)xv#0Tv3t??p8+(BgFkyfeh9D*5`zAAq!f>&?ehZm3V9>DLwAfTpltOiyW zbuErV1c9Nhb@u(dV&9iaoYN1~M1SR-d2t4xKcOpnVEpunt1AC?>RbUQzxMZcsGYuf zK7!H|Nc|p8>EuBgv}kb22obk0Td|JdwE=M{g`E8EC>%!?Q((!pgTi?;btz_1D4{!a z6_CGfBfzF2x|BjrmK=a%U_$mu`}WNQZPrYKI@|Y!2Mz>vmM9Q2d?QrzH11^DJ{|2^ z=p#tk235_$l_G+hp)T&nVhCxDVqNvQfPHKw4&tV>rS*$YB{#iAb6qpQ4n&HZ zn?6rliPvZO2=vaQGndLB8|eO(3LB~{=b8PL;5gae1X`n#ZuAyh4}l6&A?GB?Dx|^YUdlN~hgYy-ovaf;(%N|*WT0YDnPSpD zxO}J;`E@1z15tIY_p(J`Ty9*^(}3bsC1*u~`l1S`vDkvw2jMz$o2~3j;+&wjv^IN! zv<=+2Zv!YeT}Mm;UFYSQ?96H6&mzF;G2MixYgw-M(AWh9r#}9`7(e}I%`EAQz+@*i zxoNfXv5=O`%vVq_80|ioG4Y0<>z&p)!2~$zEF*`s58E9C%uiS8^ohNXn6-3lgdI{6T8(psw4V#SU zS&FBU_|(%3If%afzz*`lk$!a^kC;}R{cXqv=FrN{04jKKtXVPYKm#CiuE0LOVC68n z-+gu7*3S?mG*lL~3``Tpx?LE+k#@mMzx!|$pAQ0yR>vh?mViK&x2A>O2?)PybM% z67ReEARI;1T3{*ujVd`2lRb@2V|>1->5Y)3v8Tjc3trd>MJr2x9jS7-sg>$HozDSF zSW`LyF@dma5MeE%?6j_IO0UXmR}cmyKN_!yDEzJzgD61BPHM!9#j|O3#ogiVD=14f z-~74`o_}l1(x+DHm)pQr>_H`mGE~XWisvH&3J#vq^}P3~dD9oOq`PmwnJci%e@@JI zaX83mS*zx{GLnR_dK#!|Rzg|#>>_j~G%0XJ<&j_`7=*rFgr&#jb#}zM6rNqAUdg!% z&nJO9bx%^_T(&M#x@PW1;%mTkOL6r3;;eRF_ zlHZElo2LgvEiHUb;vgv3SeBu9=`<02Qk(jW%3|v`VP0 zf$(BN_z}ywj5H0fpO|p~2)BcOK$WgeV~t1)5WnwRYSsraM#ysW&Je4Z?4=x*g1{B0 zjpdWw%TM2e|@uk1Z%bjZULw$YQzlp3>31YpE$)*{E9$G(Q}mb8CQ8f5qhX% zZ-OD6$Dweut?iI{!axiJ8{6OaK-{%I1TjMF?fT9>1X0W18TgZ-yqhSF6UHcbfD&a&KZhI91Fed_6 z?<26awj8bt-i&xaBRh{7R^@}Zqg7)c>FO+vcXolR48)K0#pku*G8<9>X@Ig8k<-oHb!%@8G0x+(FrkBIy(Jg+S(pmfcEF5(K(J&$xlDBX2h{y2HUFQIEE zr<=3uSPI-AbiV<*Rv-v4X+bU2kt8l6-P=HS38i}~-kD%BU_NK}LNjimf&nDAqA&7v zx^b9UJ|e~TcsEwc%uX?&N4j&FS~kJ0g+8KzRk8>bQMcq5G6oU(qB^f_0h*GJ7Sd;W13RM!bzzYCCH3J$7pAeHBS z;}-P$J{;xlX=dO;S|3oNAz!HHD) zoj(Cg2ZT&_!pCKy5^g@EJySZRiy-?bav-^c`0q;fqCWsD!M7Gbco4bek%%aJ23bte z13+oGQLr5Xli!adw95W~&|0)AW(Ne^^u>^UNcCvLl((}%*Y6}?C8CCj$Se?LBgV#| z-?4{9BZ>fU5SE%Q&?+u*o{wk(s#l5AX9VV4v@(>mR}wp1Bnc{DSN}u^xGESOw#!0r z`ZmxuOx5TNs`dc?#g(_e1+=8GNq*D9gOoZFk`e%oMFzA#wU7Y30g;reUBdz}3&0fO{b5O-EUzfD}(nt88(F=m6u` zNYMMbJvc@D0?7YP5V5*vFT|VhMrc zR6?0J%{iT<+7+K>guKGs0~ia-1BljBrA=CmZqxQlEC>#!APNYG{`&HgS)+?%tq!@z zBNbJ?r0HD{*)`F9zo=m5~&=r!ii*e=;OJp!!#LQnSJpX&EPu zuH5O389+9R#3cX8v`;EtmR_}UhZw9H{tp~_ah9GUDKEr^?hkfu0VO-B0}r6&n-gfK z)H9|a#F6#k=q44I(&|^PTWE^>EOjQkVH#urr3}o-+F?LRUdTnAEIE!!?pA_v-Wu1B zEBUj{nUaH;0dy|N11;6*>3-@X0 z!mIcyyMY0ZTIWJNYCEja5#N8B-tklskb2)jcmv{ay?jeWM$bZ6nEurKB#hcMXNkOc z-JsQf5@Zc_DuSGv@6Xl3*)A)0Nry^LW<{n*6UXzDUX6d=Mkum)nIWD3E0*iR!$6}cI|#0@;o(a z*RqWZypy%O<8K+PB+4R$U5k*<aC4j6!Lxc7ihkg{sDh@CF znrWNF7eF+N+gvue4Wm6|qbpcR`#w$u<%|R*YpCCz*oJW0x1e27p}ishdn1tP)&tXc z&h^86b||9`U7IwRXzwKXL{<1x%Sk5V2or^R2L{rFMagMA3tDrwXn3?YD83Qi3 zLe)RjTFqBTh^lRqz+lEkl z0@!vG!9Jf{0nt(1=A-s3>CuZrIMrGh$TPZZeicBipwgHXu`x<@4CTtp$kYHQd>sa+ zgo(>Fm6Kjs40`nt0S*WnB0o!!wn?IsH4>d1r>v;sFwaP@uBhA+TQ;jf^5 zflxa?CN;}MVOd-Zh6|hck7|OC19=QU;aP3i5zHN!jn9ufJ*;eqZU~gqngDEZ6;5UZ zcW@7}0_2F`=-VNQ=z1*Z_EyEAX0@-8lkWDmaykQ~@v6*4az+8<4Z<7vr+8cVS2P#l zyfbZI!+??DIG?s1cyf`ckAue14rm&n?E(6s;pIFWgnLqnPRB5o{8)N%|`f*pi!0c>mA_Z3+J}MVCpM^1VEMVAyMxTtP4Yo0QunM6bpD{W z?VUtJq}1_|SNTjZ@0tmqPcUyg)+0h-t+`jZ3M#q=A`d9Kb&_)#=Cjkbt_ZChj} zWsNR&SkBmD0m7}idqQ_85%pZema?={l_IwcEJPMszt6Zg8F5~8g_>BO0ZAh|&%y$* zHlz{E6%AtDP*=qhc@nthlLo7zFq zaN;Ntx27l@DF_ZmB*(_2uCLBS#|1@?u`&=?MfI@it%*2Rt_)0=E>;^l*S!~RFiocI zX|aHy;D_R3?4M|o04>nIb6OYF40MMIUIeBI=vuGn=B|(Z>eRGHp82H-xtjw=*jx88qW4s*4vcolHH7)%(sTiKCHs4#nn|Exe-+00y}Wqghz~Hp}Vgd>rNq zUpM5?ikKaSEF$Pvb-QWjU36?$Wy>}&F2hN11M;Rja&8BgJaV4^xiO5h;kq!Z_DDPq zQ&gKOT&gCgo6!w)Cz8IO;MU2Kcq|5@7<8xRUEN>hJjX0cq? z0FhQY|D9K_{?Nj&hbMr(R==vVqm4gqYFbA@?8BlS5{@LBI;d}K|F5GYU7`Pt+Y)sQ zw1sO86iLwGM%-_i3!&oA7dZStfO+Ud*C674+UMAZRNfcAhQq%(VxF~=y8?+IekTvH z4=ICoy>X%!gS$28;+DvuHe?H6W+GyjsZXvYT{yVXXWZ_DW~DzJ70~!=qJVUEMU%aH z6%eeS;qaeso#Q~XBl0h=7GC&F5R>KPb^D9#1%iAOoYnI?!V3cwtZiWP%8FsPcVwRY z4&A0e2#x?-McRc*R}M{urv=9&rdt*@VQhrqyIK!SE80oQPw4@+eJc792(5c}RI`KB zzrLA_-zbc(Wa(9D+c8A`h?Qo6pmT?3bMC zcqEy|SJ7dwN$A<`A%$xvPpBt?%ef;=Rh1)$ zdl4YV>LYY#(!ii;dpq_4fw5Y>-UqoSWruN|{%@g*RiuE$Z}v+|QK1k7-+Z-LK^4H% z>59FQ^;8z1zdL&`uWb3+;@&PTW>mM6X*sZ|f;&L+;qGtRjR{H)ZGfZwkZvrc8#(}V zA@3Psfrtphu^q^7PA)KvE__b`SOCacA_~`q>w<9D84f8fOZFyK11Zx|)!6|ks{-Yp zgAmYxvi&&auiK3=1wbTdD@Mxl@HWtI>XUPC^j3@FIAsB)oIaCn|29hZ>@cOQ)_s*y zE?x4-`B2in!>XVIpe!1sJX@Y)+h3`#UwNB~>Tz9gG)o@4HHyy+9<^`L}o-Gu3N@{m3-)v^u? zA7Eiav2bqA6@vCRgLN(Io*;ZY1EB(3I=j&AHU2N%B+hFv9A3KzLInVEcBp>?!ei zlPJq+wZJlTZ4hJCCL_x2{fnpSr^U{h|o8RV< z?Eo^R=l9i3`XSQ;9tN!ROl;Cgw2=*Y9e07XeH_0Wu*<}y3|AP$*I^akgpEF>1pk!^ zqD0!Cq!3T+ahLEW%31CX0+xBx=%zvahQr6F!}6Rx2$ezbav_Vh;*IdBLSk>V$Vv?@ z-pYv=Ny4j`U8!CL+uklASeW{#B^HEZV$6M zUO;Qm{lTr0Y5I->DGBQ~M-H(o*w|i&`TL!NMBulLwCl(V z>(EU^xQ3Cm0lm}`UwjEHFe)D$Bs?CV7tob%z8HL@BA*m=GO5>bd)N?=;S7NSIOxo%H2v*2T2tAa-N3F`A$KXMBe+!DKco~= z`Ci*n|99xkA#1(c+XkoUe@kO*TyVwG-kI)9fh7V{8I%3L8a+i*u}AX4E4N${Z0!gLw5tT)^gxU`EMQ9u!t3JlME{X z&+rfI;0=)WTP;_k-^&r5I}V=#X?u)gcGQvhYrgn~Is4sY!0aI88cD}?dp|RW8?)M@ zAl*aX90I1_P6pDMa2ZKYK+^DUA}MKc$F(&$P`vO13oNWe6EPJs&8A5?yN-WG(zX4D zkkG^F%oI9@nVGwTaHveL<0jA&(IjYY<XiDPg2qYVV zrw-x^L-X3#9DOK)XW*5`Hg<-t%T?gAtjjC}6`k0{F8Dg`r&F4^iMBHe#kF`wfuTC`Emp9gYM^=g3yFxl^DL zu4OqQj)X2Su}ii?pFIr$wvs~iHfzvz__(g;kl@od3v~T%TcE>a7L0_t9m? z87ruR!y4h3J@BoFJfO_j!V-6%W73LTOXLpVBq+ZC10pZzs@L%#&~;WX)wNoAE-fdA z!;@dU!Ac4=EmDK1QU02wRlQxSBz=pjNj#M5fPo*mnnw~kS+v*jt8#fKENn@b9_fhv zUO@zaG3*1!ILV|yQ?zdj4Sc;X+$4P_{nWYqE&-x=xL!qT?el)LaOAOE)m9BP#=m9S zp#_LF%TDM<2T@h)1%j&kRA~7=@|~n_>E}C76p#i&SzA6b*9XzQBF0fU%M5vgHQCYZ z(up|Gp|bdoV<_(cH~F6~VN%WxQv zLm6GAatrG`4&?=@W+UrUg_c{s&;}aWD;g4foe)4^XE{)a`w6GEg4ruP*Su zR6#9U6u{BgEz$B>W2SWYAV0qV_Ly^3Kf0s%DlC=R(XDa-9pA(BsMV+mOPt%JnMiAvhaO z?_^+kl=A{>1wrl7_>uu|Cb<3u9Cad`%MpFT@7_djYD1byA_R75TUi4e#7SAn={+ZG zP5=cXnmz=xs{7v62&co}A-S@8tN=F5D;S_b`&-kh(tU7VyS6v@5~jz1*f;e^2af-2 zo8(F*@_Vffu2-7g)S)rHH8i976xx+|RMCJ5T%21*@+s-Id-q$MOp9N0(F_rq2JKMOU}#}O z6?ZIW8A`45m;RQ;BqxB!tG+K>`?g{gTo!0R_wwLwP%s#TO&%!traGpeF|1&Hi4O{3SwoH8gZk;2sT&P+P(oiQgcm#XEjgM|JL7US_aQTMh z-dx|iC(b`e1qTi!0|~RVX>lj|rqAb2m6O$zeyKlPhWbj+7o#E$)aaG$C+gnoX9+h>oWFz( z5tL6#uTPR+#{44OVz=|b`a%%2mR!(t^)8i8yn@m1s@J8BpAKa$!W&>((`%r<3cwqW z7CJ5jq{IjZ8Mfcqjtg0ERkliEg)aOS(;_hG$Fu6IrA}~TilrmC($5FS1+DMqHy1A7 zK7HP2YoJ3s21HDAt-cM_+KvhBuFCauK*QDK24F|Zg>Zu=4EGs(Q#`?y;Q7uYk8K{S zKC*uUS0RDhf9509Z!jIHR{XYKSb66z1i+11?WNw3`jF>;N_EUzo+rhwHBUFB>^hY* zzZT@|pV&RW2&2s1Qzd_4I0Sb2PoQobSUtcg!mUNN)u9jeIFs?+VeNZSMw~Y25ft2@ zJ+9zp?Lt>?S95Zj5LXgPDhg^>^)uc4u(*Q7-VDt3K>9;iPt?zVFJN)>Fs%@?$5g+v zdjK7ICeWG22C>YxVJakCXjU=s1?2XZU&0|RFwK)C2MJ_>9gfs{CHtS4Pd;(@ZW`B+J>x?6CPfyXX4b2(T%H! zgwJod^m+>F9{Mmg7bwRW!X-ZgVSVCD;KEMXl<+iBYqhMAhb=lLY=r!Xy30@S*HJqp`DQXOA*i0kJ&MEOqG#!bwp0d8KcWtA0$ zY2Lbv!7p=2MQ3&2oE>5%H)?^)4#~7NuH<7ssX9Bv6qD|8Cf~$SFXyjgQ>#G z;8E{o@Cl#-$|!!@OVzwHWV7O|c6)T=feC29fs4EP?Q>tb>05u%!21oj}4L-T> z_mVn27%8nX(pjE+_+dt^5#Mc}g8*prDDFP>W3CGoz6dJ_F=`-VT^a3OtGNf%+>HrBMx`Vg z)I2b*=4aKHeFF792Zb z+bGWiL_4$#??VY2SBlRI59f_Lb1x)%83i1=Yw?j+`#!ldbNs=lZ0q~UzD0<08Nbp@ zj~fRy+x@42zlfV)VDliSMs=13S~=N1T$KaD#(1-a_|(^9nhdmnHqZqto02W;{;k-* z#;J}p*BJjDMr*n3LDT;4pl%}9F;awGCb^7L&nk)SI^Y>8jG|M)N6y$VmKAxmvypNn zte=9k|Nff5PEzUV^D2ZgxK5uLnD$h<`NZV?d>=#XdJ*Zp1EviNNG&JhXY4if19wKL z8eu0!a{!yC;)jsUsB}S$LOd!%ud1NkQ~3DV7Hu1S=L4)`8~%zBjrZj_c1RFf7*5sD zhwWfXzfP2WwX0GR1)byxsOLVOb?W`kZlsn=`@K+NX9k_bustG0Osrp)lYGV|b|yQ- z9E}^iE$j%m)$L5uF%Z0pKR+ylGz3jGclE3LWv(dg#NLHI(SDeQcpAZ+z{DcxzAF93 zeBs9*QPa%uL_P!7J#?L{ObT9wCx48E+#0tfGnf&K{Lv31F>40C^eN8=O$*9YI3yEk z+d@{pdF$Ezc97$$BNLE`3>9=^+{bR>`JfcQZ63-Au_S`j&e%=-n2f-!ja(qqanK5Ac~!SL+ht zu$@saP(R`0*;ZbT_eAC}pDG z&DY26sCVN(F2@ZEQD{v7peM(2pU2tb8~r0Okbu>Y>ku>E8}0l-5wBab`$5y2>`|o% zphLy;k5_Ulrir9m6 z&jQC5a9y@D(;N&8L?=~61N%}R0cK=cNEMc}*; zNxnbWb56K4PcG-l)=)uhp-0*DY>~8D>7HFo6aWR(MH*>`-_L8;0Na8V1+}g2OC;V6 zcAB>LBD<+_G3UnTX`&+xcGw=O{eH)G6@(G2+B~M;g}oOvl((=>;l3$K zbr>kXwnIzAO&F&01jLHas#VW0B0!)`#55PC&xJ3jU)5>VSM~AX#*`3ixk*bG!9w;4 zXr^hw<;YVdilkyhB!BFcT>2s;44orvYRK?7f=J!0Q|l%`8_x=E@G^E_&xb^W9c_b~ zhTVTKLFLXzADVjwUIix}F(i_MmCnNMy_u@z6 zq8@n$U4e~c1xZ|y-tpHqYFmN`fa^`eWN&HMHDLMts5|kNW=w+4Oh9!4a5eo(BhKvFkp0jWSW9M# ztIBpHkF$l;qWIgf0$bg2>uUOil+WVNP*x|cXw)Ru3yZra$=awm$}YZS0%#eI_@-v< zA4g&xHVx26*y?yoMJMa9y@7 z@D~6~IKK{A@JdeUIy{6)GZ=P1t`vYzfcjy5cRF3JgVtd}VN3FK_$O1~$$F@4|DJNfj=Wauoe1**nDT4;?Nh<7U zhecb+_ji5EJ4$N7zF-}X+E-q2JUq=n1F`)RbTro`QS}FHN_S(AV6lIH=Z@-teYWKB zH}2;3TgZZ)_#W&Ncaf(dBCX^15?umF&vfYAA$G%4Im<;=oyD#$ucGS}sFL(DmL!+Lqn=Xd?Z z)mN@daiLI93&m`i95%Vl3Ba%mVHkEI79@@9nE#tsa`$TlO=&QYJu^OUSlr zhXjn1&Atp|jR+)&s+U#noIcKP2;rCDK6VfXu%Hq*1c9Gs^q<6djKO9i41;&{t%={pxk3o5AYpW;tHdO(J^$4u zk1UKr2Qdjj6A6^>E_;*pG`AMA55~QJUimL-2G^dM5ZYd3#2*pvNONj<5V-u1obYzHA z-BPJ=B_W)WC}U&}r&pp78IoC%DN~up^R2a?<9+YvKl|Cw-g`~I^;_$C&N=*KrNK2~ zdq|#T-8Ru;Y9sK)JCjS_5Xbv59En4$%M*m!h<=Nf>qrd^Ht z(`F7wGiMq7&5z>;i-xxWY$NtKR=1}*9y&I!7-%`YXm|@gMMqU+*lf`nhF5Y9!Z;*a z6*+uMgn1Z*1|;eEv7UScy7%a+#^Ow8%2P*8R@Ki9!J#$TpB!CETq?r80_Z_~2RW&PE7 zX(_{<}+}& zpD_(WpL~>KhQ%`8VCUg=Vl1Q6+5&R`e8@VQBuNB4&l9#~`bIafRoAqkHRrfZ;c6;K z2IB&zUXm0LmD4|A4itYsg&1Jy$-I3qpEU%Zb?{zu{WqKrVRFD=%#U9FeXrr%ba1yYDL%o6uFDQCoc>%RBn)LL;saW!Gv;w}z#v#-s{^K{UcxxsL zNy@46(~mUM#KoYM*JVB1Jru9S8^L7lkIxOj@}eLFXNE47i6f-;`irDb3PHIN$pNduOp$1llw zNiBRi*o-6L0+KVMe{%1Vf7Gb98D=G1GFU@&(WhBywD8JIh}?Z4lu#G8Zw~l;29~bd z{E<4c`}4rf;pim7<7x0x5C~p!0Kb5W$#eNJcaRn@Oa@Zl_HhBSu8~myHE>;?Sd-s&+M2?zJL7K6g1ge9sI6~CJEzZs z|3{*uxyF<|Q0%sX14Fbk;!eaaH_!iGz(GJ*8A&a>x4bA6fg{^4XL^}uqog=*5_w-s zc@o?70OPw7Ofq!}BKnk_S826`d}!^4w-Pz-_0nCN0pV!w?R`;2q2$+u!DmNMe>-;< zDpLdCv%qC(v^?VwunxLt@s#QtRE42YK(!W8jV$Nj8xWjkRsXPBiHzvfFa3q7%}&=G zDm1VZz2AO?Ey|#uvoT49cs47r5&IQy3e!}$f$g_Tns9Cq9=+9s&-bh z-*HM#EpnFjAdpiA&j)gn1DE~@a>D=YKMY4Hrzrii-wy_uJE}7_QpQt!k|Be3_|o?D z(-5Vu)*l!irm=Bxg;w$uFth?fKw!(;4Cjkc-Y4{GA&m6xEKVUm$H+7rS|Wn$40~;@ zoka;gx>XL{1gx0?&qctu4lqvV!T?yaoAN)frU---Ef4nox1aZ|d#`aWWd^xPGz=Bt z7F3>O#YYYkMM9Gn7WFln5<%G@$pe9-?}MN>H_CgRc+Fve76O zFMcs77)w~_M?P%%`fJbjDr()A)zUD9Re5J$$WN~KCAp$kEB8>ISAAO>{$rLW87`j| z@G~k`r>inukW4A<5?Awt5%xD-?l$)MYd>#+kv>nZjHVGUGj$yy2mV*a=<+v)>T5BW zD=%^HlI#y|-vCoank}a{PnUU$-q>`Jim*Oi03St^x@S2z2sO6%BaYC8?sCE@u`j27 z*oz~FropEnl7KADCH#2BD1$mO6_+mO-WautK*<9@cXln@#B$Ou`Mr?}9twO0bYAJV zT_98Flp#xx0AyuDmjrxI$b>kOaIRNkFF3DjV?-@8QBA}&E!8doq7RJWC5L=H_B_K^`fG_q zxnIDVunG-?glAsxfW$O^?Jsz4Kx3njc({2-2OGn2%2dx&Z3;i5z+pXbbAYVbC=$D= z$QA=`(f9QKL&M8ltK|t-$%YI#4wpRz^5=5YzK)%G&y(veZ#S;(wXJQTB zBlI<6V^Tk{LsZWlyi2+DbWlCik8sPD+ zV1L}Do#aKWVs;33iqUx$m2`oOScHf5se2{{}G+A|==ZH&n!w z1Y#~G)?BKnd|Mk8hyjh}J@(?0#%J_f`gBA`6MRN*A{-dj={p5TyAuXXku{;*%Fi-n zo{qx^(@U|DBnBpxXPL%nCm)O|Q!)^wrDbh#Z~U)0;TBrf@14b|B+s&_6jZux7?yzo z2F}x3Rfuz3EC6Yv35?2C&xQe3B$!i?ta~(x#97v{H=Pu=(fi+E#IUNSgR^Pvec~nU zS=``k(%=RsAEcqt-PG|2H>Ayb2f+!v2NgO&LVRAq7cO$SMNo7?_#rYEaJLbs;zCRx zwCfIowOcvR%YY-B5g%Yn+~bV?zvwjGt=+$w3M(o)=Y7Rgi~0*1MN-1NDuSd5c9ymC z3qcPcoC!2O@5By~Jc7>Cj(+o{GkI&8-AFhSEW%V(Bs`z#ana==ktp{_h&S4{sd0%b z6`S+4s2oHyQ5b-;fdn_txi2CtkMMkOP&OTb7E>+qe2lWarIg3Ag{IND)Tx-@7R~)M zrV}{eKz++9WAu^f(44F+3jK}^8YKuCxKzk2w z0y;tVzEZYpbF&zZ0B0ibGVuP_UvDtT*vRv7-MyET?>J$AOAmE+DN`okNWlLz<(59+ zlc?ZfU|#de+qtRdf%RYio>7Ordd#F)^s26!Y;{w*^wr*z2`glD+athzJ^1S z8QNKFLxCS<#{_!_I?*k0HYRbnANmdruSFO~zAxT%-LHTOJmgy|}y7bpya1+g{LYxb+7J;2M zSYOhD85Hu+gSqLaZ#KwC3}A7OPzjpbKPqF?-qu^v31M#PM_vft+|<7#DH4|%ISN7& zsg?D&nIM9(BSk!VxSApPhZdUvWCC5WFI%#HfSiUh z#FnE65%6j3FN!KX1cre!WpMrVCxI29Oi#Dr96}A@d@;t`Ow@_!z?peas>Sj1-65hTYMyBZm)B8O1Ci-E7 zHjP*#kZ1A#_8aB3TN`H+LNV4$aBd)PUq~-?WGXJ{-Vm3gW<;$1U~*SrY$~)F(DAvB zKGt?RC|&@=rL>6fNmc;J3ExIS2nI1H-S(czFa-(}Yof^pd4q;B$Y* zg&*v}Ol%@L{(wXu@Uvrk&U|uUiZ+|dLJx*GPBw5uOi*l==t_TrbA2}`F@+y@WxGVyn73H%N#m(D^bx*ydqM5CN7>oA)cAnx)?3@*d%b>h@ zMU>Bud<4Y8DXU(Xg^%E}*k~dnPoU34%6clv!fA#7ri5$~z=(!{_8j0$c+Z3mHk#mg zrM6to)OQ4vETX_}xt!bj=tv~Vg150E!Is9z&zR6?!YNlOfHO7VLWBYXc+(q!Gr=!D z!XHv#+$;FQ-Zu!2q|pR&k3pX)FB1nyqX|cz00Yj%tw^H@Z@Nm^vTqfDmLeLLMcI-m zwBG%Mc>oXYPW72+$FCwcoQr$yB>9J?2aTpo;aTova65L9z@G;C8YyA}xi9Q^D;-VL7}ClXiHk#!-XfpC==6q)1}CrtfKT+o8@u32ln=1hx;q_h%_Q!|mDBri z=%460eGIOg?fzKqfdoy~T%yl%5`)_rsMl0MPIl}l7e_x-`8hNWkw zLt3SrDr%XbBG4X1si^KKw>^q`bGxH}8Bo+V!n;*)Vv07)3WGIsNa6N~vgY+frQ*$$ zVXO$8%scRkQt^m>aX-O7Vb(9`so+j3RNkcVU2=KIAvNQ4aGEX!ucbc+jZ*zInyiH< z_!^w1sbPu`9_ShpGhNrKUy3e4TL`5dn1F4!gDPlg9+$AxgIneu*+xn|+KA^XDuQyi zrz2+3M&z;6%_GKqa^CFFubDWMhLs*jxVNk*;MaT{nFb*KGrzH#pfP)~n89`TQVn35 zn?A}oCJuh(%&;ZKrtq9}jN#=fkdIc{2GVe?*t8UpnH3NI!L=e&UlGe67yJSA5h>iJ zY5tTQWRihR00EcevBIQX4u+^?nc!Vi`eDjvW^97HmO$QjU)+nnN%H^_%~F9mYn=AI zA*w>wG=@%3RWdX;Hd6d{7jQo@@IU>~hnqKzUs7VJ?*!>YTycG!x!Sgrc2jvk4)q{Q&F@MLSYv z+RiKhAH{_jlp=X!ID#a*HDVyQz5Y7_!)!>I ztXMo>^${z~yyOW0Qx48&(OURb0!Q!(KWLQ^tB9Vc*l6jSF9ch0j9g6 zi`w4B9RUq;o%}WF zHT9i`6TalEB);}K7XFHvj~Pv%U%Nu zZ%-nrgSm`!CxYj|?nR`Z0y$*pqJZfUSeR<4(KZgLl+R!e3OGVPg*0Jkv3k%^V-BKr zC_+JtmB&XqU*NavK~QLC!(SxabP22nkkw993e^mZ0AS*StGzgd*z>qEv1dC{N_YyO zMLTYd2X$WD>Q2!*jU{!`eT7}5TpHHGh>HB-^wa?*&{!ajhqCcKy`xX~&6=#}?) z07;qTQ3q{aDT*0}=cB}AOCSes;!tjjdo$mXXB{5kl2mVkCj1&gnrShE&IPS`hR|uk zydj)oMxB?A3>YDlDHcZ3MxTD9IT_G7))qb@g6pzIj)f5H)8$q{>>T2#8{ZMU zA-2SYA8=i^=>lLgC`MKk0@{rPy`)>-8c2_)0Mbn{~cFWZhG_O%guXg|15SZ^KDu# zV$t&W)o%XU-Q`tE3Sk_-BTh;Smgrn;^wcr&(4UON#nV>!6kMOw)y54)Mdf&I*WqYf zsDCn3?dCcsl3#^YcFo`a?1TxzSRAX{eyxOW{-LfkKDgys|Guxd8_CfE6IgvyQ8kBLBF4tb|NED>^8eEGF%s4u!j$Di!0wzV^zPf&O)3s)YXcR zIk#@nRe4)KSQ*q|H?e8!Rgq-tpZC%dVM2RAoXn*E{uwU4i=`aVBLtP_tzLLstRlr) z;NlI)gE|>1>#_=F7>nIQl5pIr*~C~wvUEe$&>_pk`WT)D9vj=wZG;`xhL-Zc0?VpL zMmYP{BpBDKME@Cw6<~_iuz5s`nq)#|ni5I5U03cLFirk4v>AHaOe0O6-Eu50= zpE^)-%{WDJ;n%EGQ|>PH-UnC}L%p5%j>8(XflLqS$zb1EyS|EV6eN-g2JfF?Gv9Jt z==yQ=POAq!C0l#aa_vqrDD!aK{s6n?_VL*4TxoNRSz7pt2{WYYt6FLCb;&_p}cRXM`MkS<@m8nJC-4=Ux*lgS(dZnHv9VI zXE#JbJG-xHl6DvRV%@V>&V`6#x(}OoIMtoHY`;B7oJgtyeo@+0F(ktODhgKkDqS!C z0Byz@J8MJv#jY#M0@?L7?ppPCZ$Q>$AMVJG7ywrY%@Kx|g1~A5o8dn_fyRzDr!!YU z;iWS5^8VfXXWUc~yJt3^2$HMeJ8OGk@?^@7;})>XgPvN=6L-{_e#KCcz0)1GxL4z@ zVSO52v8E*)&ghkMP^ILJz z)#4vD?uY7U!}VpxIpcAMzep~;+|O8csGS75cO!|iUJ-O&ulRNK!~ThjZnNXWhCBFR ziLc{J0@;?a-NTgzzA%BN6)}FbtoD{#Q~#7j(0`+>=?g1GMaNbR(P=+tHu(#eyrYSi$um48pZCdW*QS7=BB zPk5l=?Wx7L+1+mg$3`vTO;;M5(czwZ-_?B{gfW@$Wu&cq|BRrJn$SFLDR2mSj*{2m z9zcrmclVXhrPR82gH~*;OU}yPRf8=oG@aH&Gy+sieQdMI;u9 zP>L=yxvj<;Hr|sXg_~R#$_0P8U|sT3&KGNKg9xQ0%2@5+|DUl!Pi*u>pr~zIM?s?P z?k6ToNN7;Owc9gfKbVtQ7P5C81aMc)#T;SWAxp@2_JfnP4pF(}@^i;FT^AAGS#AyD zAXVv{tF|@0*dq28;a#@I%*s$Tq%HUc)`^Qu)Ln86Hml)lDLSS8n;f{X}OO6>fJEo z3(i0!9Jwv#gj%w_Jhox$)xjELH6!fY$6a-IS{0E4F7M&7`H9C&vWq9|S$VQ{?g|Ww zs<*{uMh8f0>9m-E*W>SbI77BJ8@c)QjScQH|Lhhy1gr7S<% zOJ=CWJ1#%^QB#VSlY4($g@+)au)3sf54cM@4ul-oB%7R>1RGPJ1E1uw@AWEM`R zE(AeCa{8jTZou;M)y3F?;#85j;JueGww(_nxVDs2LxH> zFvT#cDjFu42f*#^JMY07O*I_>J@%S8v-h`*dZ9tsgARR(v-h99q*JSP61_g|Ntuye z$4sfM6CKnhSwJ=B0Dp<=K3BO0CZyd=(R4Zyv0tHJe|1NR%@R6qr!C@PSgtOqmB{VCyVJVZGT1Ta%g(|YaG zhFP%3-87Sv9rg3}xAadThDgN!`WC=c10vw+%nxs^VQA=o#k58E3^V3^ek9NB?MlfZ zJ~iY3HF_Ouo;`?VsxcgT2wCg8GN+)$#(HhULs-2jsCHBRvjTo6oH=fu0HIxD~;UyKB= zJAIA3rIP9(11{5J{B5rN%T#nh0Zt~GO12u(q6b7jZPMnc=4J`sZ--V;AopHKe5O=l zx?%0@Ki=UJHXs0NUOtF`Gpd{zp_CL^!n^fEeD~SPV)E_U5dI(5Px>>}LUT;oiLLDV zJcy~@jXU3l77dMQ+_5HRK#q5j^QG-4j}pH(F&2=rzmT5dm$I0=Iu;R}mblEPAUJjI z7`4R2CODLf_1ZYWW^p*CX@uiq{g0Y-$*g^K7X=W8Mr7yhe^$Zx-Pt{Y)IUKl;{(JN zSi44i<1!4-U*CR$v4ozNl~iFV=pNBHc}vV`HK}zUF6g$Wv9g&Q9GP5&X2w4l?0=V z{sg4*t&_wjWR;bn3IeElU5Pycrg*2*5&e&Pbji&Adg2p6WPCo<*Jw9Nz~!cV2o95u zMiRaj#+dp91#>|4Kmi6S4K5;LgVU^#uI0InG@~CaikXYpYnzVkyFi#h&k4Rk8O&A? z(idSed|T6XYXgtpPeRweS5~anA{9@2>OjSsPY5C@n(`tM%Y6!< z?)uzC=$QBvhp8qPa6w5V`CTA}7^A~1oC>kPY6{lN&3OW2su+6Y(dVZpj!B2dWMB`E zEkQHUwXX+&heUi~=<(;m4on9NP5EuWuzm9TfELz}EH7k&0j5(M_#zd}_32!!W73f? z5Q6=TkCY(!y}XN7#8ojE1lE}jole^zc|n8?A2~n*L_qu|fKhDshWQ8-pDu(uCLMJF z|94JS2@)g`=5blfr=VNa+Wdta$U$pkL^>`v%NJ7)Jpeo&(a6p151;)|7zMuk6RtP$ zxmJ;wiH0YJf)t#U+)%=o#6QwBz`(nj}4(m zw<5}lfgJMO?h3W$rk5imy=V;D-~xXSXvu33Z8{Te_N@l~$#XkK&{F9TG9KFEBN^%I zYk6KU>b!y7{X4)Mj(L&^NylIYWw7id;uHy7gXt3{@QBr2R;*8$0A;bhOO(Yf^-Q|0 zU4uk^tp1I^u@vuKaBGwK*w+YEhsrNKrJuZ!`Y7hPW53?V!&1E7VP7u_07?lod3V+6 z8;j^x{P@f_{BX{k**sgn_C1SS$!}xzx39x{hKQ)5$BX6(r8d!dM?+3t_=D5f5DzYs z_^4{Ap)z*_W6m_y(c_`G)8%m+Yy$O}oXoQ2U9>Ja%j42ExZ30$%-F57#+Ao;L#WXv zERd$c2m6=v+!p<0S<7ees|`eF8+VMcy7;AjcO*eSnMbTiC2eex&whu)waQTkVGZ`i zozh0)K-PQ;T7EVf^Y*3Ej$bhV$BjzK(s9Cww8^{J;qv5wIE=mZ#v&+TYFwOekwQ>q zinunJ@K=Y;RdJ^gN9(_pZSZ>b7@T3dL2~!)YDqli!|f42Zyy%qU8Eq^PgbxSS}oyM zTr;$9H!3!5M`pxNudUX+i$qp6YOUb|7{2!pkn% zqS%--z4RFhwIkz|C0axc!4KjNeUw^sHSZQY!v_{O*b7CsV5()U40-018t0gG_@lZM z?`D&GEyPJLV>yxcCS`J~0Y+n8Mt51gq)JcUQ2kaFTz@bdYPO0L^G;+?Y_YE!jY=MT zFmB=TG7l)ML!Jnx@|`7GJXTeLhN3y0t{K#>zNgkyZm!bv0^)>S2`32hs~P%)PvDwt zc1auc5?0+3{kI^n{`0Zf8v$vL)=s?`Ckvbncbq)(TnO}Nmp%i$Ve3iGq&GxWkxMlt zWJutHo`<6sJr8kqHqJuiJZ^FYa%c5RYw-{w!;`W>-E{&yw;zvP6o3<2eR7|1Ht|HQ z@k=i_0aNLEWe+}ds!P9DHmDZ}F_M;T$O|gin=*9;^5D0al&oXod03<|&v&>)KLEZy z_1$0G2}Bf5sDhX|QFNj9jKRgtFoWgjl;^GV=1MB6=;rysY~U!m*5fgoz8k|;wra;% z%z+`^-^X`lk}YzR+@~ZZe8W$ajE`y~Tc+*YWEAgT4;2BWq;Kgii%CEkNB5^8gOlwZ zi+#||R9j>6rz0NVL1pSb=J1fxcCT^Fkq0|m;z%@ov!4x6H7{?h*JIxPv*voWq0ycf zyDET_TJZ$r$y`nQZsPTb}^dLZb(YP&)M3O6{?1{F1>^Q$$?Zz(k|IutEp(3A$8c& zTHw^OD{vWvy!qq+sNK+H(>Omm8VA*Er&oI_%JcJFn2=zQaZ38!Y6;(R{oU|7Etuj{ z1HnFqM5oyRI^%&%*Khe^4cP`m0_aLEm`$TnI8~zXvL?bBfB3YShOnSd;F`%=AYAS< zcJliY9CLLUaKvhF3i$?ufr$In2x@Hnyc({{uB*4BaE}V7VVgngg+2vl)}Ad=F8K6H zQ(o%an1qC{Pyjl6lX5I)Dj&SjELrTIYDqF9Ma#){A}u$vM7;UoH%Y<%wbK!0?RkFL6;#u~4*r*zqkdP$PLgs3^I+NI3I?mwec%t6 zVD-R;r3oc!OMJE_QMHU-BOrs^1*N0OY9$~A`?cfVV_fK)C@1LJ$PxA__!N_JJ$Y#s z>N4V|0HAY6zxc{0_(TIug^IMR+&6#~jpzfLG!j(toEB~ZL3enQ!l&nS8m`lt(j58p zo*`tl z#8ey(<&j+)bV)A=s@R@iPELo_liEAqa6(que4}+D0N~0~9urhpg;J{Qvs}!FsS;xU&EXUX3*Z#sP!o*? z$SJ^F-=dYaNW%m>!;Eh-ep$?2%Stv86y}6bq@wunK);_bN+NBy2 zF4KKC1fM5qFvmD!A%P zJfS+qTABQ8iw_ixzt@$68Qsz_6S6NO07AOotxw)>J`8!V1j$6$y;2??G2z%~;N)Gl zm2yuMF+=P>U32c}N9c2L)1dl!0&ofbB8W?wbWdj>qd;^Wi$O2yJml zPB0-WX)S1OZE|t+C&cZtbw;NntiXGQ+%Sj&fv13C_HMzsz6D<@$B^KXV$z{%?Q`&)j)Nm<>P=VeWe$bnF`KL4y#bQGc>}`k-DUlvFcZ|V3;y>c>ih3 zWRmRe^W|bkqRfv|bVuqInmTyShRFPq1Kmxrt9hZrQ!P6vnLt zq=pqpK2mtmy}yDqY!*IxU?WAcMaQVU#WXnq8v81WQ2B73jL*{30Jj%uh1A~39x-Ik#X(97lfgO zZ|Q#j3`kzfs}VxQuTB}LU^>!{wbmBIo^F$B2Y(?_ye{It4Vl333a0d|H6lp4vN};W zLwDW3Oq7)}mI8%5r1i84e6%II-mmPQ*8k#%ZW7D+1nfl9I=>ZT+w`oayd0H{2sarh zAL|4J&OKqBZ@5MT|M(;caDrCl_@#_^-0(lpg?4*;r< z;KOk1+=c7^{k(pbKj0OoiONNjuLy7W9FwwoJ4S(U_;bhANB@Oyr6R!f2{}@~q=G9v zkkgb`CqXnog6K*@h6SYLm~QDxBH`ikvU`UEyJmt8GXo08`H7tXzq*Pnm9!~C9?S4u zp9yKk?MMD(=v6>rj3cD6FUZ&X2*+M8yLXf%qARIyR4`>Di`*LDeY`Rpj=)@~w5k5M zKjfiZ%RGARok`g?IRSY@>C(GNH)I7(@1UBL>Vx8W*p-xI(3yv#P{}w6@4t9KQ{EV9 z^4Z^mpB7^%VI=)NUUWg}G$mvU#KP%wHQ*@U?41M9QAn&Fwp213Bz0l?!AxD5e1O56 z?97E^1!Q;%k1H7!DTtF_WsFurEDgj#RSH=U83Uw<{Mb#BcmR;kfN;BhH|KF&ofOU* z$ztgli#eEyAq)A+_(?2P=?N&Torx-J#4J}l(C-XaX&mj2_i@uWmvd}7ma1QNw-b~e z8BWoXci|ez+2DV%WYC#o)~4)OGZH@Iu5sEnV_~bH4$FS28H*%#X35{!e%`h5iih>+ z@RC{Y|NP|bVBGANojih1ToNA7uRd|lp6;=SD$eShm(RQ!VLT{*w4Y}J;(}FMx;3Pp>aM<;>BtO- z=be*SJ-#FCNH@8D!)jz-D}%187@z+SX11o0gDNc1E5k!7189+vveR-C>oYIWRYOBl zXyN>h%(soobEWrB`IfwpLxdaoXd^eV#))sv?};wfOyNJFLNlInqN}FV)pCv&BUS91 zUw^al+^3mK&cbK1AbaVGW_w?wXRQt6eH9$RwG9kPbK<>x?azO6~4`%nlf54<6&K`%8_%A@f7W6bHlaG=zWbHp1%b%oxg{DAu=e=~)%7Z7mKj{e>68E|1du>hq*$ zx$U&%%%IG~Q}w+;n;f9q!VW<0H4OP>9$~niA7wttyN=#o+U4P4-&KWxIDh3!R zo8}-thj%o~RVhmtAu{37{Hl&-!Qr@O;%5Ou;B(b}B{`8Ny=34r?O{^7aA2+Og7!Dr zW`t)FJ5@C1q#o&h=Z`b$TV1COH3(HO*H9YDIe*_s!|Km;M{uvCQ@8}YWTEQ18%zm` zTtA1`ARs;U$YApwn8EC}%JwQsm!8!%o^~C4NyxJ|TtcV!LtB9E#yo#CWr$U_cNe;Q zuC9S1n3{jBIB|Cq&18Ix#GaM-ZENDNUIZrMfOgfRodO6 zAFxBCPw8BKUPZgh+ve~NUUPH*tI`Z6&{kI$-_-hGc=sARHaz73SX(r#0s_LfWOH;7 z5?WKW`kPuGKUqHD8#9lzcE&B-ToC*;RdQb6z!lV!edh=GgR#EmnA8zn=29UgzULUC zhHPTGRa#8Zp!BR=E_Dx~K)edz2g~(z=SDp|jh%F+ww&QfhWt~}(wr+b4|!q6+mKA% z1^Y+cq+Pclv!Mg>Iat@r{P?dceC_IJ+uJdC25TB-o|W*PR>qPUit&FAU@t&4r$a-5 z#jq7WoV@f5I!l*Xu56-#hH6vC`Edt6K-a$15^%WHVL~s0ykDW7Gv?=hsD~4JTr8b> zL+KGhYUA+Glflz&xQC+1O+N*Y`-=E**m5xTw_u2(T&tzW^qdj!tO4j1^Xb38wPF zG7{5)r6Pdt0^moINc^*tx2sXmH9ajPa7WTOOK=ZcNHYB|hZzLj4(tgj_UGoQ+7kk} zg`Xlooy>ITKf3k9D(+^NjhX_>WBhfo& zppwcStPEoh?tck)4v#+QF`w`7~5iW{OzdC9RPk5ln zMNVIx@e{1E+uB?RHI;K^+03hAqi#zo^~fHtgNrMD!9y-jeP@MifkO}g1Z(*ol_5(U zmAfn90HDR`Y*scPsvLklHW##ocaX3+;Z-erhZ|Q)GHCC|ZV&=*+?1bMZiFqEvkgAo z^gYWp*9oZf*-bw(rDttOPxXFTgWX8e?-}#MKVT*SK{vn(JKe-*UfnS~^m!xJGP2Im z)v`~E0AuSEEg>0?yt;p=Q+iemoFJN#@-0K|?)qtCfd~^j|BHg*(GQ8P?r6*1-7uXC zXE-)_D!f@S^J;OZn=*f;CMx2{Kl8&2xycIjr1BriT)*mSJMv!R1h4A5Jk|BHq%{Bq zm8>ai&6nPPe{I+i>-QBnBeVK0U%Ch~mq=*5z$R~Vnb)lDbu?)25I=&FI0nCxa8P1N zcpD$uf)%aZ#B)JujV$>%w@-Tx5N_jJeA%a7ktK2HP;CdaurRoQnQTjO(>|6@zGc** z`tI!N+0q65%LTgOr=k@5ejlT&K78+F8+r21I>c&4m=Nf|GqdBs6p8R(!R~a0&Ktje zIK0eyqzDrvf?uu5^x~O0YFDAXhzc&AnStWw%8|><5o0!(ZBssLzJn!-(e)Sdr@r4t zkNN6qxzvV-k+fp9y#h;O+z&px3POx1vm`DwXQdvYh|ONd;ER$DTUZjQ_iKIuKs1fC zGy;K>3|qd{4%hFrdVitp31OymS7kd^E0bjO2WwtpUZOeHT3^Mb416 z2*4~$A~@?}o5M>)xF*jIvu(y_;{=wpd~RkKqPt9aE3!l-@G&-U$?KjxGpmE%WrbK`#$t+F z$_Kw%4YrE%9=}DUthJXwk6C{~-XDb-G|k75_lc!2DB^6;QgyYXq4)%WrgAc*Sjs1a zc@04jx-NG6Hk$y|JHH12C>bZXr~R;6bG0a)dCk$-WF6NR#C7hwoZ2(`c>NjV?X-Hc ztv~>QW3Eij9TZ>vEu}CK}y8z?oP>n2X|}l2*PLHaC4n(L<-yj~ z!4@iz`&VG(Z7|=aN*PPnbs=a9VwY)Ou{ax3{{cKhMzNZ2{XM4rfNfYx8@e0USRo}R zZdKz7F=pFNw1EA3>Q&nQWvh{_5Reiz_4SikVnLmtbU}E2cNO}B`(c3x;SIr;l_4ks z(cmB_BrO=^47{EcMV|v0)bSbp06yjaNEK$#h61e2Iaptv{gFhP}^vM&> z*2KU$#8}^=X2v<7CYAXggsUXGDpejXl7;(Oe#MSHA*jj{ZG)x^eu&%-Bf6@+C7f}y z8PX`9`H)VQj?2e&TV*8H zS$$AVnJna|L*tc*2aE>( ziq9+SPb){Ji|}E@i<&uIDCh`@;xo%J8UWyoKKH9#MSWEtT{-7qu?tL~U6=1p+vhBN zgY6gDzw-DKrr<8ul{eT~wOOf2NU_;{$<-IVw)SeQ>id39C`OYm@X0t?SKzfsYH-Q< z8eu%T=|&}+BigmFNBm|N)1|zM36}@fuzW6!PCVSPA{_TPkkqXALyF~-+S|HYN14SJ z(91Wc+TJ$jlExM^ADvMbSCq`$vqt>RT1TKwN#03J#i9CI+s2^{>ga|$3+@{{EH7s6 zF%BD|*E0n-O!XY3ugd&A+I^uX&jNSwtiD)lpSWBnKQh``sA66_`}=RjIagy_hsG6( zT_*5RJM*?u`r;exi^asiAKIj6^lbXk@QHzUpD8nQ8ZW53yQgWmJo^tgLEdNph*OxJ zTK*a(y!%m`p+(p3Q4{O)j^8w<39+=yBtCpW!H*V)AOuF!v(Lqpd-`(kdjt+6n|M6& z#|?IU_n(6f_woF~!C74ouN7UFp0P4?Xa`;oNd+Bh6n<>mj;#!udYeS%4~a;pr-F|r zbG=pyd%yeDn8Ma(Y&fL-bOF5Z(BQoY!T`R0eVAdh-*3xFy!!gg?X6W$7d&zkKD9>x zLVbLvm!fH7)|C(UPrrfd%&e~C&mY@>bB#R}Uye#taRG(Lxn-X%-k^?JN(&Ry^7qS% z;%hK29{&Ysaoo^YV^u~s&Y-(nndK+`Xwk0V35(n0LZ^E^F>uSezenOn zKaa)GnE^axZWp9CkxLVWZ-6BTzxFc;Uy#<;pgg1ax-?vdr)3*VT1h~;!tLJ_m2ATW zExcR$RlnZC!kej7y@jTbwfGXd2%}gyCNKOa7`31+x3uUf(hP`&n-W4`xZjQq5Rmgq zliGA=S*526sU0*A?i>OcmOnv@!yBD8K)@Bv}VlH z&>ng!c-eJFZ@^selZ&I`PZ#VT9#TDDBaNVcywHYT5F$O}{*}6bx!?$+qTuY-qi#Au zvC?RTM`rR8XVDSH&*y9aH1_J>tSeAdS1a&b;m$R<&g|m9@wnl(VpDnLzMOeD!NXqc z2Aglx%_1dS5+*cBD7n>rYg3pyhf1u=n6}c+;w))otvicsju-5@wWsOZdC-Af=BH19 zJ~gXH-Ryz}rO{3WHWmfvMYvWE2se=k*;XF#lqVq~(?jkD&{UC@kZ&AB3zSLfVXZE9R}up2b$pd{XNi)6T)wx(VF|BO>R|sj%OQ-S z<2*{$^Opt&>&}{RuR#qzBY<~ucxcsyt+>CxZ1+tsu8GJ7>%0mnN59U%#s=H+YoVaH zQ`(>TIs4l|#`y}PJLX(Ym<`G?we!xlmW@1Qt(TZ`|XoBCUs z$y=Rm@ZQsuS2*Pg1=!;(ONdqZmj1UFC?VH*R?inzsK2XdI#j!lvl~I17)mBg$fREa z)?hB(*3IwzSZ!6`yZlL4@WX%-DwY<0#ah_3vhIUTUxA_59@F2dhVWdrWx!JtYr9 zuFX+jWml4QMNJM<({Uqf#@&7YgS?!st~d7-S@k|88qdxXUpaN5ddnXQ*5QJWj0lC` zFMRpYzvX-iS>k+om$3IP$etrFFuC?|6r6!VJaiq8+OC1=GbXJ|*!O>+HxULD zg69%Il6MhFztKGsO7Ep2gLy6$xo5U>)*`Tn=kweEOj=!DN1WjYh#A!a6k;u>A2rq2 zubhXa3rkP^cpGWj@xyT&>wdNEa!`^^?f1{k%smWnf(zvBu|7_Em{_yF zA9D}lsswBAsgh8EC5e#R&wQ!#%0VGa|A7hV%XA8ICUoQw_{_y?nTkC&g>B(qy55_h z8GV37$qGYaT2T7rDe?!M{GzNYT`A4viyXfe-PbMrU`!XYZ7g<$8IKExd2RscF^b)B z{fVWX)mv=PP|s>GJMSFbIX9{~)OEal2bNPbkIL6)TDC%wG&+e&>^%P1V|G+H#u9vT z1pcNnAiFalyHhNZSFr*@Nl>~)^{SipHmq)$Ij1&4VmhUB|AJc`DA})s=Z4j>wA6AE z?Ci$vAMSrH+%-$O1=13);@x`6NV==S%DdhpD$@$?^Zv_5TY#K^m9x~9&6VJ@CxEJ| zjH5oDJU2u+TYF*o&x)fvSU$1O)m0*^y;V>>c8|oCo^244ZpkZL3EUtuN#B|-Hh!$9 zd%Mtg5!~Q_k|m^ex>!=9CRIvs_%t5w80udBX-ysXu|{#*V1t4&}(7R9&uo2K$|PMa9yw zjMQ?`Jo0?G;JzZE;k8a=gBxg}UDEy~)%VHwR@nK7-DuIKuUahb1j}D1M8BsJZYNRB zRQV>WH0MJdIO%XXo-YN`5>v4z{N(6kv)#D+fja#Y+PyO>esx$jzyWfT!9aGl=4k}V zno7=NoZtL;ISt9-M-`GD+Q(GI+;tgFX#9q}< zH(g-9Z#&0R(L8_lc5fd>NDL2sYy&}x$|<|$y{V5}f802Sui)w;UcymOp^ zJ%V_A1m#X_4@<)446X6PHl_6+4d+S^UNmvRd_-Whu6|PuRAM+`#0Eq>+-gQ&MIz`_ zAQA_;DiZVor=&2L-RKD@1Kpe=glte#oNCmhNu0@LhhlMh%Nzl z)u%gbw!tEXEv59b@Gtr*EW^Ob);bUEV);BM(WfVgkPjC~D19sh8&M%TvVv=)FD3eK z8Ff-{Kjea_%?=2pKfR`&18?#2fNJ?ZP$QGs#qM=jg+P&VoJXM=zzayeM>vpl5=K5H z`g{8&Y>{M`SsogJ#~&_Y}o2)3-n?Py-J$4|WBs9AnzL9VIv z)HWr~lO_4zceg(jVVKRAy0LNg?EjogbDno}KU3P-)u)0tu&2DiDTh;(y6vTjm-C~}I2oy!Y^QROVQg&IaoNCVo=XRyXVC~f z#7Da!n`vZj4%-|`Vm-~$De=tb77H2R9XSWkl@5huf!~0Jm_fCuA-f;y)vxUASF?OR zyUrE^`uXmc=U;TO3q9RlQ77(SfEkc4z1BLcW%*QTpd907oK`3lxD`A*H_;pi;)w$G11s9>r%2842=0L+hcHCv*4R-5) zS{=TSS48ZrA0`^;v=}ep6&QX#iH}$Xp^=pEWrG!@G~{*63)?@&@j|WlR+r-qe%|Z{ z1wrjkFX$~jL`yZDJeQhK@XNA-$IoM&awrH`GO1F!_%m^8SLUpN>(WbP}cIZ1Aq(Ui*dq*=e zBgzexw(Aq^xgq7YUZSFX-|P2&p68m+=Z~MioX&He<-NS#ulM_T&beDSVa~wei++3A zvX;oOd{A)kkfWa5++HYO$(Ua37~Tu$@gQLA2+nk<2lW{amz^E}CXe_bRj+&?MjroY ztas#WEph|8%}>{C{(*=mGGF}1N`W}sl=B(X<3~aD>Gts@C(taZYXXOdpSE(e6NhG- z%9zghJe>a>KVsdG??j-nJBr&v>y1Mv8mCKP^WxFLHUyjVMh;mthU0InYw@o(9c1`q zoAV$vrTqX}V*Iw!xYw}l#2(bYuOM+Q92V+6v5n(=SuI#`ndALql@2#LG7Qn(fWI}b zo&qBfAtP9MPFxJ0_+_Q3R#Qb9ko>5{3F9$`n|4kP)>x)ZdCu|?e(dV(s91@T2w_5Trw6BV zi?*ky2Smr0lsY88T2pLZKHfwti+|hxE5tSpwE=i~EvTuIkzPHO%iH`02i`hyQK!eo zi2abq4QDLouQ5nVQGps{o{vY^5+r3V>rz&pg2{zVlHxaLiJ?91r=VyMvWAzB*>zds z{q{)>M|W5P_N08z@qaFva);8pI#S6ucrzbG*L%=qZ^1p4cYz^Y4@uh=2`Twdh#7A) z`nWbldH)Jc&ZxOL5QYs>g4cp#WRnal}An5@eqMoG4)+%%bpDFW>NV-Qi<=~pTmKh9zpPuI zt@#^g@&s7R8Z=3Htt<)Urv+pr!Dp`pfmv|FLhZt7|V<~U=g~FQKCPtW7y)ZbQ((1+IDca!Up8rEk_d| z401;f_L{6cz8mM|A6S`y_^lIgiuc`n z=E@u|Hy-qM>BK`w9EaSrNRWbzC-ZdLRj4(BB%1?Scn{rRgPU*TG_Sg?>fJqo$Qs_> zxM};ny1@yL7PGZikuFsEm)djZksyV#o(GlhCzi?n%!d2Nu`YgS>Wtsm{4?ybM4%y7 zVAsm(>BZkC6Fi5+-@S1=l4Z(LB$?@&XD6^-Z-b^hWf2<`f+tBih{6$Xh{ z=2#FIZLOg-nnhx}#LUqh5`1v3*hRouP?)Om1B|kXU?6=Lv2wRJOF7FSI}`^|n9^;G z7ai6)hxZ`XnGLf|Y83A_osTq&RjGI{?xQzd%LCtgQ@}?HadlK^Ty89*xF9FCA~Tw1 z6>2VFKpYJ_x=J2b)asrMmDG_SWwEH@Fb+~rLL?2W@?a&DfB=wp*Mnmb!ZLiFW~HV1 zK?Xee13PR$l?^Ru9XWLzr&^q4Ox1#?L7W=79Ly?rhkMjqgA!J*ee+Fv6I*kj+X1-9 zQhUfQawa!}6h5IA%e1pJ87A(`FT?)qj`w3s)3TR(P^!sDPiw`MTl#H#@U)M19BqZE ziL5ygX;CQr*cl17g7cqcNA$Ba!L1s@gd}I&Y3Wbtx2qj2D^y-3o<+C_enOJnZ zKL`Wl+Q~vBneu0cO`sXvZQAE+p@@Rjvz%kfjdQ`?g2$Pj9$^DNqT6!?(e;sM%Ps-0 z&TfA%Vw$SuL7BvQ?0SINT1;xKO4es-%46CGS!Q=3EE3162jiAsUH?KcD|i!T6TK&E z@-<~oLS2&|^@&$14Ha+O9ThAVgPKNCx^zwk8}svf!i@M4kDFUYO$ev4dTHm|y=FD! zX{Ul}@;&5E#!ZYu2GPOGN#Bf_n^i?dD31_|38$L;M!A#g15~Vvns>E$zr&Q~LQOkh z-{gN4=Cjur~09x=exgS`0 zOACPqAp9G50Amzy0XAKl0r-azcCVY0f`$H&jG{^Ri55+e6IRq;AHA*d_)mQWp}g2k z5OZjv#&d^=T{X0+uYL6zd*lYxNO~=6Y&X$Tt57DkPWhBV@C8`O`C$i;@2IFQ4B9=anVuO*> z&&MUFj4a2f0FdJ^lRyf*hnE92i@hcKLmasUEg?0gUMIBdFQ}QQ4NPmTJQ>()A@k*3 z&RM|k!Xs#Y)+L<+AQezEN#G4ai#3n|K$a6Chmh?d7g|tT#kQtJyTNIP?wHG%zEFeu zmE*_?kaOunPjp|96&RH{%c|&NEZmM!n-U>wFMXOGdIl8*gunWF%B@BNY}n8-tK#n? zgQ#RutGgde;g|yh&7s{%VZZh^pwAmlnL?B082F4*mhm=UeHevCC{RCi2^2MOLO%+M zt0uv3|fFc8GB0P zsP-m~vu`hWY;D_qvFNb*eB?5~f<1i*OAoA3o(U$O20XfELbn_#vjRa`sMZN)9A z*tN&gjLb4vz}2k^Ywhn$By8lgwA%tWwLMMWyyiTvWed0Zdam-)hrD_$^C#@Nak7<{ zt7Ale*q|~mHTj>6(6-AcrK;XGkrf}1jtbQ}2%*Y=lmkHRf=z>*0=!Nv%dO&PKE;P1e)a7RN&BY4gpHiH#s^$K zb5RK1G-#KMe)LBWHF7M(8_Y5&XWHFF+srCpHa$aV2y4*jZWKyT9mHdrjA60ii?ey-(`dzkI7tURS4yaF=KC;CHVeCkP3G zRS@55ZK;lE_JvR6!#{BUHD48$rvZ}E$bo&3!KZ=26E4@9aG@!x{&DD66r5c66$LK= zQPsh9aq6Df)&eD{TOlGcZtD8s1kQG3d~3y{o-j1XyVA~4jD&WYfK!M566c))tLQAp zYqdc06lP>i{~sj0x7sWVqzM$wW7=4cGwLHF2983h$<6hWH0klZ_p&Trh?rowyyrY* z+px|>3`8v;ChBW~dtTLN_$1fA15wqJkKu=>Wi5zmdP|#5PJqHP|5ey!k%v;b7p|`Z z)-A^|1^L(Z|D#{NhjR3_PkoD?pAN)f%~z0Rh%!~+FZwe8MNqDN{8Dgms7nngzqdR2 zIgq%OXWpR?JF98i0MT6=TVWpI_^0e(p&O$TrDzzkP{tJR!z|}Dt{iN_C6S7wel`&O zfx(2pMp|JC#NOU>UvnF}EA?{yjtKaMWm%_Ph-?Bl zJG4-My4BspoE{)S@mSPD;*!pD8$0FZu7)gbM(cPK4qTljEyj_!^d$-CaP-Ru)(&vE zD?s*SZgqRLF%Y$v&tMfDXaGr8hm+qMNU;EMfnvy*HahtFqQIih6EQHCqk=iU#>$AP zor%n%Ukeag#vLPpJ4t>+S^TP-H9`?YoQ#C~ z7!j*lTl&tDg%;KqyR#w30{pSSS$Dw6SyqLE<6xKK2p*b;a9NfK!{jNT6)KM~ZZ`JA z&ZhcR6F@6(<6v}_ff7Tqdg#20K1gb^q30fi$7oT@blo0rbkn-r-JR3C6CQyiPR2CE z4adjy>Vdvfo7SA?VK?9E+lLZj!rP&f|DfnqGXg`T&9^{cM4vF;r3GvaWd?F5Ctu(? zqu-~#kxgj};K!n%!9j8PoT6+TB4LtKUlmrHqh8gt8qFg$y8h4^wRBR$LU=g23xW#> z)5FER@GsN?$WGvyfBg$F4X2U7&We?VI>>0WvP_s#_nK9qB5wZ(h5zH;5MX06R-&hq zj~aVu6+%5VaDxQ|d6l>A7KdajADTx(^r^{Mi<-c(3qMF!89s;Rr%-2++`~@IWF@wD`tE1||ZJ#O2z!(DVTyKtDlT4I$WF^cgME3r!Lh zx#6r@J@7TCkwntD96-an4y#jO4!%uSPz!^XEU0Fd#D*(?3tdr}%!LpE>D_F@B8IuDG!sj>TVi0q0 zNz`EE+>pA}IJlJ;o`BC2LHuzHgX~-2+xe_5vKb zxv(4Q*eP3S2sB1H27m#!x=nqQi`3ZkKk1(`0KJCQ5*Jv0Y3*eaeW;g`F{M!x$WEpc5s3orxH$~sJvAJ7tS zGq4vh_Bf@k2A1v#EF(y7^UY`e>rA5a5T-J0px)7TfDmd~!Zjw7M%Wl`AqqbB5+sKhg8 ze_Y0o3XPx0n9+($A~tNz75hHmLldc2>$RY=#DQ}hqw(K@8W0BrL{gr&W05hgSmd<3 zYd{8A*mo>s4)AG|zPTz7HLzf}6Bz-la2^RzQ+g0-jU^~40LY^sY8qqQHp+T-mbg+# zj_gUCXnPf5R-=X%z+DXY%Yd^iX-S$G02v~ViO3n-acx#l8ft>7`zS+|G(5^%f+^+~ zmoQW{GHI5&Lir5hN^KAT(LPwygFv=tav?esiVo9hhhjDXC1KhAdqz0VuK%ME)!uPg z2-L{m7*R{|Z1@KD7bshq)&z|Nwz{ltMky)=hlTG9)Tx9*( z*J|5;Rn*vlRWxrT;b+*P!TXTmg3wJUp;AEveZowADg{`I(@4UB8(D@eXa+^B6~%-; zOx8}9CT%z1^nCL3Y;4Et%$Dh(=$;J)tB}Qvn^0Kvam`BKvlDcP5LIaBYqdQB7)nqr z1jZJ;!M0;0!Ry9jv>lF;-?>*wRGJh4`#=S&hrq+4-?SHEPpvp=ERy1#1#&dNyQU`r zX7lbB8lcBhqt&CY;>35d^?wwkvo7613*A?BRv7q*^QhCZ{f)l34D!QB!j&7JRFRuf zg3z;HBhs|i5RbuuZ&7wXYO?PBb5C?X^{V7WBHAG@T5-p18~ zkDq~(PbmQD$5FlVG5b9FXgPSg+1(XGXMYZ?OERCb$2I`rVlEuK8b=cpK38Ae1!!Ia z(&b^&0Na-x^G<=>sm?erNl`~}^8 zB;M$TtJ;!@U*Okd!+5wNyr*&WJ9(6>LyF7KK+Y3_I{!3`cq6#3ecB=>Hr&q-Ub8QDM5CDG?n@XOoM z>|}O<`pVx?k+f$p_HWuwgb2bDIOCv3>XTOa_uILyr zZe~3fG45>k?1~xJZ)Q)wyBMDSj+9`n3YM8!tD^WFxB-;91=lw+a`bpx0(k~u9W)k_+8A2Mh9r+sOmTdqJR8wkBCc=-0}@FT#UXWYRXOVnRbv%B~m zHt3PRX|@Zl@3ucpPjk8P7%80}cS7N!4$3j1v@x$DtWD}KFK-_+LU=*{TGKACgw73I zrrB1ICM&6Cr01VTk6MX-_D$u2F(dl6g0EcB{%Q)gjzKGOm9Cha$z6iET}4$^m-a&a}o z;r=U;%?~?p20!<4tolm+ziMGCId?(D)Yrp#<2qbd=GZi`=Kl=NGBTCst$D!hySlT# zDJQI$IrrO=>HBUheYOStn#i%hnXI9PVw3EtGM?G`Z@xPdncKB)@IZj)Yl!iU&$4z$ zGZKA95=`E<<0<((7MJT39ReqKn@b1hUz+;tQ^_z%A5q(vh;y?lLHw?$Of?_j*c&@e z-m`*2XNFIm-ObuyRyoeL!TEnGdA60Kp0zZG4&Kud1eKASO~6GjBIMw>L8iQ_2;R?O zcf#P0c zi}r>tx&C;kt|SQX>LUr6RgOrY1`4R+clX0Hn0u(2+7pJ)%956{%$w*QSL2cR*@n_= zaG_RSq-_79BjepG`4RJme4FdPpvo*2H{-bY*`d#<0&c3FF%Z^O_JYJjMFa_Gi;l^09AJeFoFuCYI!Sqzv~7* zj%VOpC15_)Q&GT1-?SwM>zJZIV9JAeSu~$@U&ZjtdLiD zvz+Q{+2zV6jEL zLa(@`+n9ieL9D!ZFQN`ydk#+!nh&RQw!i`&6r-oPJDn89_cqtxWo}K{CNnzslIE=~ z>Zy=ro3uWx}f;eJV1ezrZiq zB(mTIfcMomVsQTvGqe7I$N+CnOmCfI3?I+^LdR^i2(v#9w)kG%6G{@n&Nz*W^OzxKl21Lfz7U=vCd{G{B`?|HIdv7^Djw1AMR0!Nbl=G)bMPAo1yyB9+ zA38XPJ)3Sk@RBwBj~X2HSpQkB-^0w`_`+)L#|Bp8Bhw3wNP2J>nNBG=1aJAgy-ZKe zYzhfd_kkDmyLXh64lGoCg~pD0+tj<8Ee2&q_lHNqs}T|ap1^}?m=tzzTO?*QUinu) z+yB*%`aP^3doN=%Nxau8#WRs(GNYQ|%3%GTyVzk}2>HweZB?OP-bTbCk>N} z?p5gmGX<@5c-w69$V=wvvr=%+fxb`PTx|Z5+WCTbGl*1)yvXMD{7CpEC{r!bDGvo= z{dAYAqn`!`YiRsWUNs#&4(3;TucfSogLjds#+dpM%H;P=T+i1c2aW|+(8DP8 z7o0*jg`0d^6bQII;)T*|HXB|?e37HBcSjuVjY+~`U!mN`Zcty=(AXD7P?yCv3~ru= zN^$KOIolo8wcX6?jz6hK*BdRQGw?g>N$P)Q}44wNHPN?bqgI_47 z4i)+O3SWFA%CTR=?=pws-@xz>Y_RenZ~nWq170)BTc%o}Z1)792izwkgB)a++y>vi z2-a=N?eE+DkY;0aix$0Ky$?;D(sN&BCixFU9)z7if6zm(%l0Q>sS131Jx~=3=U;Ezc#tXc*Qb-Cj{;%vY98pz|nI_eaImq_da&%wf^+dqb zTkLJ}g*NsW)3o4gPR;fa!bV+2GV$+>KRep#?ZwZwg7lV7M5@0m=W+@{nTpn03+68j)Zbf$UdAuK~BGl2ie56>o*RfvMBQm%me7(T%82LPt0 zPw*{Ka|J(=xKC>fSAq&q!gX2k_46nbh$-)K8mHES{*&%9jp}Ptrrj`lfTOp(*j6s8 z77k&B^n}XxhsL@^GZqgG-aCuW!%<7LvUC}%Rc^CXCj$GKvi&{z+jc8_jOjBW_HQt~ zRBSslD*w}6riR65kJFrxQS3kaJ6nW=nsC2;l9u(YmIAzG7khPbi9&yU^Qi zIy($z5d^!M7FGY2Ve$^l$n$k$Hk~`_Y85INsUrBFeDVA`l}zo#^CK6<#D)#r+QSu z(z1CI1UX*hgXL0`TY3X*$j%bW*ipgKN(yp$5yX%D_ARXyo%t&cZQP^WHttUdL)`#^ zJ{*f-9@f$SfsVqD{E8ZI&CIx0(2LLhK5O65?8)kCIA9ik64n?K_bqAw0#25y$XTTV zMIi)3OCH!n9>X-p$c+0RuT(h8DfyGPgWxFN_C_FEVV}cOJisb5?rVZ_Yrs>9hP1&3 zj#}cwG)iXN53A7;xsaM&Cj7`q^s$RG9>30az=dK+?76*!!d(r%0am`bk`dq8@rJS8 zFbMUY8lw*CY3$*K{K}Y+bmwhTPi5Z(^Ke5qg-Wi@#&R4fhubr~wMm3R+}byvTR4QI z7|apxkc&dZuYPReBXhI?><4m(pJDmL&&Ad+-A(B_c;#^9;&ia_e4`Tja==)>5DQP3 zoa|(*&XFo;iE2e5A_`G&N?SPI=y(UkJ$kPG5oK~H!c@|8HTY-7#AiZLcg-T%2bGp~ zxxNyGA?QDNHY~wu5m@+|@<7%~RJ@|fUe~wZkwlj!<~$Ga9Bp*=L!9>%B`3sKH9$LWs8uw zK=LYQxjs0I8+g}>cg%|-JZ^Hf)P;Up(-F*C>xcAD zJ$RNHzgjB{H2BW^v;M-0A)tvsgV{k9D>0583IiSqFKEu1IzF`t>1amv6WS{jL7s#g>Ok7NA+F8G@ish5Pd-(eLYn%y}u8Ax!>J*A|@UNSc;VGUu5bMOCA&7NfS}(!~ zkO+YZZznlchC9&oHCIr68lOI)$sFy06P$=;DXqiX$yBv_oVtOoNd_=w$)8hhUp?rG z=x(7rcP~AuPG?2CC@f>5!^MJ{g?IbjAEDu6?4+5b}!K^iJ z!#`|A8loZAEg(dD*QkYDe~$8Q1=pwP`QhtyaR*B}4R~H=h$c??0*glmZdP_6O~V*l z;3JrR45o2YzyaVbk*UI$LENO5u9xQ5r*7Y{?E5DV|CpK?WIQ=EW9j;DetMlyZ|#sA z7P{jRj`UA#G-nj$UL2&lpPur!P$H0lNl368sn$C>JE$6$XvE`yJ#`*^SXZ!8~55A7`j7P_K13%Jb4jY(MTW@wSYb9=YVBp$-4c%`4;T7fY;}NoC znJwxTUKz0A$ro+kFqc|7G?;W&fFd>JVqMk3Sl#&H1Xa}1>@8V{{#GH_TeVb1(DlKP z@~?-q;!ymawRpOEHoWOYTc~ad))lgPS&IuU#PtvSO_$kFo*rGjBWWA2Z^O%#=(Kq= z#3?d#fT_h)1IzU`21J9>QAdv6AVZjQa{I{m2>&D&7&EnK)Rp7Tq{re)TV~RDGnWdD z8u(0??WH^ejt>nk5n@`+Ro!R9Q!aY3o$@@WFf?c+Y$h=9O>A-#RO_hrk9|fQ6D%2} zt@Z~gM-3)@&_-nGH zh$YT;#;cmW`RzyEp}%rt9&hB>$rQ(p7#W^Ke@rc}(bDQ$MGa@Uu7z&D3B|$= za+@6$q(Y60Gv9(2G#duurlOi9S}F{o=E>@#K-|J{>Px35yU8G-gyg_SY|gxXfeT5( zZ;vO^?fV%*i~Eam)0s}{i?OzB;^jUb(FB>C>oc)>fIs6$rIys_X{9p^eERM{r{{an zNc8q9Uj{f)oWSSUQ<&AdtyqJjHLJB$^ce@1hS&TU!f_{$@iJPv#B{=3;&a&o>4H2 zdt7n6jV?>4;w}tnfAr>hUzmlJx4o*FA@*Y!$hB+)y!DFMjsKdKZ88;1}m1 zU)5V)7tW)p(p&a%xn8rV&`R5|SkW0lL^1wrvarJOr3}}3v(x^0s<-Rpg;wq7u8Yp}YP`V_cPv@>jne}e z?zAc={)Cz}`GB49;684YAmn@%BO3w_H%4y>w(9vdfVOnN`poov&ln#|yqD!DC%>Xk zwL_-pJvhoChYM(;+?aW)|Fmbh%n`O76;6Px)?!)d=o(m`Ixo*SS*;Cud3M3~=&v06 zGw(|RFIG|6%BDP~lg1t##q@2?Fd&SqVyw?f&lj$eQqybmR0W5=Ujs2f2=@Op4)2y( zJIb9~={?_#ic>b{F?AeXqZw$m4I!IGLdiXDiNms5nhY}*gtDRfuN*{BAI7Y^a>) zE0OrSb&@WFO}~DD-({hKs%B9DD&5v5S3vqWyOY=pB4iLGM0#tKBTvCcBB{dUChDUO zrSWH01Y|*<=1yVjJ0yr;MuDY7cC(>?8tom9B^{T+gzzD0s9Fqh(Me?rL+VMJZA=J2 zb$ip*_OKO`Q<$Zm_HGT#+; zFw_csJro|`vB%#Uw%w&NFCApQyR-^TDFlzRQV^jSm3iTyjCJh80dIaX{^RhO zRs?jz{-H)&j{35;VIA~Wt+w@y%-?r0Tdz5kBS%TWz1~Z1l68Ff!JBGsDsK@kK@I7~ zOvecYNb9+_1(1aGVwV(p4EQ{v54AHT4lD-*zL@U_yK)@W^#N$RXJzdMzKtK>F^`GNe>lcF5W8x{er|j3><~tUEwJu0t0P6Y3xK6}PPs2M z8D&$qL=60D3dIFa$!Xu;V~;!_?*CrDz%Rg3LHoGlfGSh3S1pCY-<6(Yr~}SEE{Z?j zJdFQ=t?;1d6#ARc5LvZl{!`08dCd4dfmnW?#fp}jfT~!E;bi2J#Du2(s3{8H=?u%N z;vDrmiR~Zo20X2&YcLDK&z%IR6L9Y#pTV5ivXGI>1E#s^lrkb8SSu-yGhU`6L%pEnp&E?NJpJg7n6n2A9d&- zTOYvp5IH7=gk#&B`LQ@~26w!95ByR5!cVGy;UmX9MQ&XcWc23o!))|CH-27R+#y+m zBVnKVk*knbXaSV|E>4g$*p~$#K;&l^u0lI($eZwMfy@%AKhia~0ZD33OmvhiPeQk?DH00v?nLq$X(w6SW?^r>ep2XkfkBMNh1gDE)G*>q)IoS@7`X?kk>X?Pwhn(}+SpIftfzu{crQ_CC#-)N%1 zWo^!!FMYv22W+{hMTqrGk6mBh%5hITB|Nr2db5=0*6mJ#U(6_USrqkYiXjEc2Lc&z zoemjTkI=#v<4i`1L)AIJbB^Bx;K92D> zM;nKHX@cC6$*0NGRCKJ1V#TT{_;!F17Tkva7#$CwH2t`fje#tyr}$}&+bL7>z%dRm zJ3A;HJhp#$&^~&qXvyvVn-*Mb!SjNIg6ck@ z&}>oGLdE;zs+8o)Ko=#jm-Dn}>&*{lK|sMQnPVR!3w*Y&`2A9lb+3j9FE`t9ViwAN zhEm6D*b3GKYp}G_k}YIW{9yJbL0hj2Nmz&TZ9Xa%bVE@kQL60k%n9#6I1o=yo5j|uN%iXa7A6oD%9^FHU^PUeeTHqCGM#*tJGpbb= z483lz--Hv$yUztrp~7iG4ru8xi#r(~$Vv^z4osyb=b^Z4FP9wR2a>g2izn8aHaVMP z_hCEjK9Ysz^$G`ZE!=B<=g^3nWMK!ER)kFm6QwV#RK2_|5ZIozSdSTw6YBJ#=SwMt zAz#Vj5)=GWNN`e}0Z1EI0a!U4wL0<%?!mUIky&&|u6x#U9#b>zd=>sOezwZ`Tkc(ZyDKiyelLxzU zjK!~P^KJt4kz-6kowgxV3n-9GjKO-daUujezz_@c4Ns=#LV)L&Ib`6mc5VdLsQnZ~ zsEU4VkD_Xm8|49a^X2;D0XAO0;A1Nc%3%PLgD-S)U;k8qezOY2%XBI#R#j_#-4_7P zOMl>}8w3q9oM!lKFyHhNS zAL^7U;KmGWrBFDMy{~aN&B_v<5{^^NJdUu52q^_dxba z0CKC2u5j3*vtpG82vkaWPXOi3xL=k|KPmG7b0rZbyc}9ya%z-&5|*7l&8Qi+w$IZXPH z?1r~(&1}#f;o_=)Cl66knKS)wblSlR1T#=mZgPZ8mkd-#y4AY;z&S}MFKD|mz(!&z z4DFi$Yn2M?_kjUBh)2pGmSAKQ*x?M0+ExWHfVeMyHhybFO-g$+$^{KGIfME=%TjZJ zcT1x=Bq)!jPK3Fisz#8BO(49U-KNfP%zZKOtTPunJ%nvQHP4|cKnCiJV`qIby^$MZ z90E7?lZ%SYSiHV&0&u|20Uu1DlZWJ@OfH(8c{9<~K{;u>K?|c!+H@f&s$+g+B5~cp zsQvC}jxh+PuCA?_0pa(gA&!$A`!1H2_ae_d^_x*tcOYausA>$sZr#f<2k2nk9Sqz4 zrK1$`p}K;RjUdGGQnEfg{eaOMm_Dv}u$OYb@z)D9ga9J!4;0C*~76eY+7{^#>EWU~>)SO^04Y|h|4 zIcQ+G!-FKYxX`pbrQ)t8fzyuSy?VB^HSs4&e3jI0?Y82bYes)8a!BRa-=*&B%$a&?}P_TtP=N-maMD*z{_jBCMp82n|l=-O}~vMOA8{BOkWZr z77?fesz|Y07Ahrcf$J>G`W^pi{ZTm=_)1BbGm;eUuX|T)G9?0Z>9)vnhA8ia=`AwTb-&2X;M@Ag ze*^-eH)5T|Imx+fXuvCZnxiXJ*^bM`lZe#%( zVoF9wo-S6bxK@^~sle zSbajF`$W>gCtz(Qrnw{-^XBpQUN7XEXF;hKQdn|G0VcIpcPy5_s_nHGa^q?|fkV)# zuKvc&EVoAJQycf0tF6n)2UFRaurLo~g|m7pa9iv=zLVH*;|#$7FjgYKE-`rF0ll+H z0rig>kX_>E8!PwIPn=$!P5Sbn9N`GAfYMzx&T=k?2JcBuHPiw&e8QoVYJ{AF?*p(Y zI-vnoU=ooj_*9l+MRuM1u8LJ*C`BR`RQLTpdeG^?hgWgR--5M~dDRuHXrm}7!fKp{ zkJuYz;`h%GXab23@l`DW3p$Bc>bWLJT^8-`$Y=cl$U@?|r`cF?KB9DWnr*A&f~6@M zeei~p`ZPNG`OO|vet?;DV}vq(Tx9wUb=~8{wuEyh|8 zHcw!yooB1d`J*PJVnn%jUGZ5Dr0!X{PxWCysMjyB7eOWK2b3bE53p0gxL0@L`NEzL zpMvs0-OJOS;2p>7FgyaOOQk*hdk6DYaJf^F_`|$ZtAM4-ac@#-y_OGcOZ{=tf_AH7pg?W0M$;cwmgKL6 zx}|ej3psjrAGTS?o*6}&>|xQN7mvzd zbW3UIJOmLc@$$rW%fhFvEyB2HJ>0>qzP%;} ztE+KC|6GWhhQ+xTA8sE}Q;jDSn3nIiVQdA={WWFL1o|sk(-N3!EMV?^_dv8z4EeMX zpi{Ud6qAztpo2dMWIpL?SU zLhBe?yrxIZar3wdu#s{2pbAX?zI0A4SLO)|b2g?dMhV4MnA+sNjAz=B)EoL6K9lYn-{UlFFV6i=M+Ma-(^wVD@=YI!;;V+_*=7D+K@zwiZ z-KqZ$NC51q!9UKJonR*gsPO8R&-L#iwpOcRod9csk(~W+0@`xtg!BCEZ@?6oe z)u86yg-q=JQ9cVPD6!2mxenmfjDK2=qV6TnVMN8c{O8o0BNhq<`1gIN49A<(py1;F zw9^#m0_-E=q>RqpDGyA{|H065fX^$2-{GNbt3FdjTQ!}u7u|gIC+wSiv5pI zKRtrT-aMCyowUL^#|)-A@*LJ=QYgWXJKmfN75nmTlO-3|n@ARp%f6;3%bV3_Lixd4*u&XJ5T z-p32DH?Ka7$#4V|ty-lTb2lat_a(%k#Ma#Wg?gTktUi*g!7A!^51W0q5_$ zowaivU?kaA28>)f9py3&V~&8bCin-P;qC03%b3&iGgsCpF*-Y71otJ@)(V0G_ z(;+H5kr#Jxpd1@2PfCFC38mP|Pk93eCW7kz^VBjER_cR?4}ZpP`#;Ehb2|(={!4Y% zXFJ_AfU0Gn$o&Ikcyn-5hlfR`PN=X}{izaxDOMf8%fN9eu+H9i4~qWgxMhLEUwk-f zP&j<{%}yXX1m5CY({`$H25keY0$!C!z1^8Qb$*wL#|3wJX@Y2=r~h{XN)W?* zs(Ys>>9&Y!JXoW^KB&2YB@Md;&X*s{L|q)F2lBwaqltH@YQxVY@>Vyi<8570cO&Q zFE<(J`}o0T!^!6UF!-xrbKWiC;g$;nR%-Oife7!kDisCZhbc=NHlfz zyGt_6O<@7)Jugpz%?}k=OVd>&s<9~OIqWA(6dq%SPQO^RkoItzw1*OgLd?TJyv}%6 zDz|THQkiNrdrrvN21h1*W`BIE8=eH1D*W<5g^28kq_TF2(GRZY{TzusJ9WN3xi%nL zJl&qg7(T{P;NK!E*dkyI+rT9*=u=gWS7!=$$(T}Mcxda`Fjx4AEqZEqExEq_2Lpbx zIrx_$(zg*AtMOhTxy>VEH7+21Uvd|q=DE8?r1?+cDLI(9l|8wAvlHK*B-<`j)feqW z@Bvqe{jZoMQTNvMTfndPQI$cs^W^FzJeRymZG2tTz5+MbEFfd2$Gg(=D;RgBV|j_G zReUCVC+49qzV9cdWJbR*>aY~3vGy4Fbr;63bMVB36>ah`ugV|-D5=GEYhWULRu94U z2ZH@dAYs)e9_~q1uzvx7 zqe~*};i@G8zajB%4kYQfuL8GZyyrrnH-n!CvC6_dNw)10x5=P^9L6!_qwECx zk5wJ=AKt^Z@-ws z>$|AKD15ocwy=%dCWF0p%f{4@8gqr2anJlZ#{y zXUW=5fin}Pnn858(}`z3=YPa-b-`&3JQ#K#YNzv6a|Lu;ok(fV(~?_^{|a&E@uFMU zYT0-u)Y5C_KB%=Vxl9_oVtxXyg~Vz-PZL9W{p%cOJXc~!(QktYIi-jp{fBh|`zi&P z49mK@&K)ls_AKeQ3Mc8B7n%6s?r3DRmSD6acC6^-hltSp#3~3orJ%egRg|lR z%=!tL=yys%CP+c`L_u#-i*x6q+ZtHJ^xqjJx!?R(y>}dna;Kr&QuWTc5;XmP)Vrtm zN)Y3}>NQw3)}BT}0A3f=xu><#!NHpN%CdaPSTa-v+uO&jjco@ZN>u|I4O&r z5%PxD;%n|}3@STQNM%j<$Q-LDXVOikRh%A`*g$t{Ja*v{Hug~ z=9+?l3q#E@eZB$TO%>sX?>sRiu8j>T;irxxWL?A9XcM-Y7Z4)i8G~#g;kl|e*0m5D zlBdi7MVE+fj1{y0mwAfG_=v*|VWHiBU6V>U7ZH zZiF&~RiQmv*^?ZLyh!{l4vLEdO5h>&BMszX>`!dh@Jwu2To=?+;ur5SGEv|-p!vc| zpE6<`IKT_Tq(-})2$B6Y#D9x%pld&o|H^z@P|8X$5ri5Pg zPI-#3GEY({y5`E8P(+;(N=k28G%7+fdrFY`n%mWhrT;V5cE6Yjgw#@hTG@zW`uINc zLY$J35I?>%=n|>?N_3DJ4_~UaCP**{dk)C`2zfC$p#Ww!G0w(cQm1HamfhYyWM)-O z+W6tWN$tw|DkdMizX?qg-q?U0YU-X;;y$OaLroTvD3EG2)~@+Kmb7o_SO8jw6q4G! zG5H9*N2>;kN$h2@mwNG~yf|!0VD`)>`g@Da=BbV0l|V zL{vkfFO~O=dNNO`ysO-JGb=!T(!jXS9oZ~j3KBIzCGyq*D8S>M=zFeo48$TL0Id&8 z7IEJ~W5WNbN$o}4a=0W^LZT0`MwbOtVt6Tj7&uO{5fb$zS;IMb>*LU~t(5G#3K&%j z0Qd|ivENY-1dM%fT|fr*mcX`Hz7&dP&P=_9@ByO*Wib>zGxZu=6P%>- zdauk(y#nUCh&+9K%$44YG(%ive5;WVK4kb+t>Z7T*RHfDM1l(L!ZtMDgP`m%wju84 zFNCxRdDw=8g100i7xD-wlVf|-@0ci9r`9~bhsVb8cIAGjY#b3O9B+k3)IU7NcS*dR zvCh5eExAUDwZ2pHf{3_}$->Vm0{JBiL(rAFHl}AE zZtaP!b%yuv=|uiP2%A>^M0}QNIE=@-BDL1+LL5u3C6aJUHMFcijx^ta2*E#v$mF)v zjv7{>yVw4Z+R=m^p2;ltrp5oeE-Mn&fF42P{=TtcqRn@X%rbMZGKWC2X$)klYy$+r zo)h?CgSEnJCL*MTBe28%htfPb_78afaIgdX4ezPQ(ef70DoW?8vZ-jIP%#-!gqx*m>3!DdV)S^Fvy=_ zFcK|bFkL(t2^MIu6?`VCky1Mk^JW?(LR6Eo#GOZ6=#l>dL_$H5E1e0~Pl;`;j{(=c z4%ftWB_~0>M`xk5m8f%*nDYJ?lBuNrD>Dt?M~$QqvHpJ0;710`T&mukuC0H=5A}Qn zqlB6z0W}CTr0U(-wIbj(Tyw*TRnyu5|3SBJHLb*hX$3q*m#bf5(}Co3=?p+!)(Jut zQbo6xfky8V)P%$p;CXaJ?b}41?9CYm5iB7-~7+PZVk^~cX!BROG`qxE-98=;wGSHciW-M+^`HA1)uqCCtFxXXe z?Qn>M7A5m}sB>P^&!qF^0SnQ(9yEE8>+OTzp}^#JXg0pCbKHd!;U#+HaREb56Y!3$ zM{EfQm7Y3We-lgm4`5{mf?7Q?)pPP0t_UrqbT_a>KEn~N+u|@`qB3x_|1VC^7s0S< zo_~)=<`@b80_{0j65!2tWFA@uhIE9aqJR^gmysbkY{IR%F7$S!+!xXKQn+Mn952h^ z0KNuZ-VWE?@V~K9)7oQY==LoKvT7}0yGXfrh`#IuB1NQJ!!7vXR1tge|3|rZh<6!@ zTaf$*RLLoSkhe3scCaMsQ3}$)$~CmbeRW3%v9NL-2x*b%j48p;5+m}eA%y`<^6}S2 zbI4Q>fO-Dvqq&D%;!Mc%z<}x-a*Znsozp+5I38@Fk7ggaB!emX{BA;ohT$?nsM<%K-po|908ej;BMSw#?AeYY zj-fGLDX?YFk0|2w5sxtzQ`=?&bvwTRKmPyPd-uPZv;A>=RhU7?U$a`yA|0YM)WE<+4YkwroVT zrR(RpUhBEa`98jX!uZAG*}6Q}^L}})*K0#8ln#N^EtC1j*lR=Ptbx?+GD~+A?iQML zAg{Yh_MVACMam)A74JIB7B6&CM2Sv`UE@|Pc2ayn)2V2thMrD}(bV$S+!Bv6sjER0 zZ=+b0f$e%2i{jmi;_aRE|0CW;#xp0i6*DI`caVu%%!iogRm>1M{(LEh-3rF>=ZjhP zTR2wCm0P@%#l^xSaF+1Xn_G`DH=+27W=o2AZ15@eg0s9Jh5>Q9LJnczf(wKJCJwKe zvlQ@)3KBOaT-zHE2I_%I8KcTC8<0f+lUQm^yf&wgXh{Nru#h8sa(zgw42-XfohA5O z#gJGUB|I6jFP|0}_z$EmkIc$gjc zya|V#7+>=LkCtT~SaB3iWIXppp3hd(E|tOu3rdK*f$cySOBKlz`L*8BG?hkq-kBTJ zM?g1}j7jZgo$;deGE7fe#ftF3aXiS+89JKJDy(lYR{$BTSW;U|V?K-8Q%gkgu41ON z=V`9ekr$WJ&S0^*)=_U7ib_k*8PM!Em-bTVEa&(b4vdK zt5aUMF;LqM2^l04uh`;+`a8fAo|SfMr&<8BF#t?T(k-TwQLNn`>wlzknJFo%F9a35 z4Ky;bl7x*prREe7Q$VuBBMN?|Id{v8X(A$M_gVt8k3Q*`Ey5b>_;&$jbqVP>c&HAf zyd#dK8Jexx@(dGznM;Or*GvBp7>J34#%H5^{74wS!{pR5PhBwtIKt{k(ou9?HyIL( z+=&egmyoO*3~*oy=H5yEcHmx`UHqA(Vz2v81$b&hF=I)-?i*mB#>t=go04n(e}mx- z77^kw39_g98DkZ}gn2jE-UQ%w(+DO2UD0@`{&qOtXW`j2ZapQtDVDJTx{q?o!+?gT z9N8zpVhu~(gjc5W@q;K~ELm=`Q&)hm<5fV5yS>_r!dL~w7RdDffZf=G6w;F5X-^-+ zV5?YoRUc$edzUdR4^+%s8Ej8e2Xsf!V1k1jU_`k$+QdJj2kk<*d2)Osz*xDrM0M$w zQ5N1+j%E|o(IUqmvUFKksNYT%ye^8><_b@J7{Ct7Q*5?p^}B$$_**IC8T5OHQt8fN zO*f5~-j+&tr&KgU2)Q9|Qzj_CVAIvDV2F~Z4@<<&ppA2uYURX++YC zQucUJy1SY9ppQL9lrBr;g?ybEW%#H(6kkv^t#OM}*@G7%Z-Rc{j&o_gZ1|bH3HoR| z;!k2lQOX&iX}OU#bUx6X_3bi)mS|SemFrA z-tZ?oxo$mG(`OBB49w8kFtue&gr3pAL?&(%hl!`pcsOah3nsj`gM27cV=S8(*H#Am zj0O0Ar8|c?AdOA@ccOIXd?4-x8EhPdJu%^hY^zhwYV767?36xYwkruRqg_482EtYN>H4>)EhgJ)SyzQxv_i%tpk8=`J*uDIrG- z9MPN>>pub8i?r}%>^D}Arza1WektxI=vqbDV!A72=%Pj0N;j}!nf?b+woLTIGe?x| zgquuzVH2YOvh-qUE}XAXu&sJ!h0f5rczrMv5Fq4Spu~fkFw$I?IM9%6+KrII_rl9FrguA+2jvZDoAS%|pKa?4GlCyh&a%`JBx zL`_IY(Q;)ADB01K%%6dDV=3;GZJgn0G%@t7WITmt?@+pVs+tYU(;%$?FY%gz{_-^D zC0IL`=+*N?trb6|Oo;IaKwMrMUCGS}%m>=Jq1euayd1{gy2lJg>@tBG^@>Cbd0{}K z`%llLETMtU0>JkRMxJ6h38dw4kgXO{rqhBrn(toDln@>X(b;(?rA$6TvIswN+RvC^ zY7UEE9bIV4HgEa9XA5PD%$8|R%jB*bz?303l+%m9#PSz>}SYguP020!%dYQV}$1GmeQy@s)AYiUHV#2u2F;2 zI7aBzgb^@%!+0;oB}mL6lM87#tza;8>L8Q**>OKhAVk7Ejy17+4MgMX1bdY&HLGBn zwNhNYBH52=P9XJX8fQq|7$HG@qR#J%VW7V}k!o#R3d;{bx@96=tO3TPTU{G{g6&-h zdEjPENOR~3MkkZ54`y#%x~%qO(uKn|}VYgfGw5|8n`;S^stJ_VSR8a(LTZpRHW>q=nHFNma#fpJM{k z=|Jslx2sz3E9tVSRS(=GfGXwJ$wkr19f!WIhCcDDqkbsB36zgWpzr(eXg37$q3 zBOw?uzGz-S=`#5(nrX0_fLshVsu%%zWJ5Tc{!G5($`DAQ&aeenhwL|3?dUXTHxfu; z#gP4G;O)7e3{|b~EEAAFYPkS+gLc*j@kPuT`Y^_yH zdg&-&VmSjlO045YgZgZ+%3*)lQ%axGw43KJjc?ftB5+7-H_drNxS6Gn?#%rKu7jUv zKAYdvVJog?!o9Fq*~C^uF93cZ`VI;Rg`39^LDvCx4v4YBER$hc+HRW14lb%u<}pWa zCcR1E#8+oGyC5hUw!^%3H*e-bK)5iTbQ-ftLJhmp=V`-l44G)yjYpm})G!!?3*%mH z%E#=WqOYvH&N6k)GcjiEyZiR+CQHRwV(D z5Ci|cxLh!yQ#suO_=Z@KuQo&}M(ygY1-Yx%z!6K%`rOLw$gzh9@_H|P} zV(tsFs}ykIy8XJbPrJIh3Q z!7!+lSQ?)B8uzIGTht-$3;7w1wgGQX+#Elh4d0*=O#P;#VkO4om2@7=hWo2UL0 zI9f^aPGUbP^7WJp+c(RGf)A@VJvY;|(Wqvwe?@ zR`BQ~;9)K7EMq$_P}5A|((Bq#gzLR1e707K@I7jZe^e^*AQvGjCbu4M;-KjNT^6JN zpCG!3EcRA1{7my|>QGvbA+E|xBCfNX-<4O+h`SxdgJq`Cn44ULEs{WQs=-x|dNP znsz4NJjR9VBOb-~7#D87CuPgGT(}pLK*{H%a^Y?d7msoXTT+2l(AI{dY0v|;I#CWr!RbBz zZ(y2bqJ9q92VxQ)nRUv7yPKpdaz!`pxGCXz{dtIF<_QLaBU|A_%ZV+hm7vO_&j0?iy^CF8=Id1!| zI!YKSx$OhHuB8-qy2Z|}+0!!|j?OPP!0ku_%Y>6or&#VM78S`k$GZH6Gl9_}BiSln ziV3iS2ACF4DdxWtN=RBwogYh5p%5;E1n_9R-*~p#Q~zMVbRj(k?{>hCDKT`Fa=;5L zQlk5UR`5{BcpY!Cixgsf_Aq~S>Qi=XA8HVNUlg3eP-HK{U!FO&gpDWb62Xa>N=q3? zb+Y$RHV3z;`>3y+fz4ixbyp&6Hv#isk~E~Zug_?M)e~mh5a12ZZ5h^X9?Bwk%fgSq zjd0d?h< zOnD;3oOm@liSAleD3~I*rH=fC`g1^Zj8!6|O0iJ?BZbkJ5`wP!j|RFpXdCYa2k%5{ z>b~uzUruN9%`2_rCl3%NineA-0#hOotvSryhuvYgtXKfWM`TI>h70W@P!grA8~656 zdqJ413GGG|w1HzxhcprV;p^U*WD!YIlDL|ev2w*Pk_czKjpi9IffJXXEJ|19<0Pwc8 zKRgBH5kN@06KoF+tIsh4z-x>__VA#yFtr*LO-pZjL-LENGQ|Qik+O4X)eP2%@Of8d z2!kDh;8FcdXP(~ffgj|pTp>%XW)guLPq4b^T&gcJSscHOrHvRwH;ln-S0V14-`_-q z{1w*bxhfyCwGOjDVSS`o>~#;~qXrI5s13y?DzT?S*~4M-JSdF&^=Q*ZdEVP^=+WLJ-B8eJZXa@a9z2>kidl?t0F%k$pUSo4YUJgTvrGy05subo)i1xHvEvLIQv-2F=Q}3*UD>-M^Lzj zVC|EmvIWd7LJ>swK3bRg4x7G_!WH@DnW(WMu3Z+`>lJa?{hH0e+rdCc#$q$nSp~I@ zlB3}ZMzhVR&Sos?%6yN3PE^YtL3fwMPbh-`K3pTkZZGkqT(ahu8wec@u8GFG4$PJ& z*Sx}RFBDubKKOq`t9QiE6Go|s&hN@}Wtb;Yxb?Vn0Xi#su%_7 z=30BfQtko4A76tY(avol^kgg=kj9PaJuYwHYTcUNV@7c)QL!9?62YT8D6veUEZx4+ ztsFt^zq?8NI(XO>UFpQi2&AsC`8vs2{R0TmAsD zp`!(-W-+E+2r8pt?#!vV489v&Hk^i<$;`SYbl5;SJ@LSy@HJ|- z)$QOuxRv?2nHOd()?LnU5~(fM**M`rZ+ zQrTj0F40$uvPBTuvuRYer!ec7AWsA@J4g8=+uWfo4Q3ao%|?!<1C`yYN|oo>FuXMc z@M1UR9h^@6S)wCPZuj(rP|25fvQbgC-CxMkX7faXuKxG`%JvCX(=^_8WSmPY#<|p( zIzYDV3=X8O(n{%vu_l|^b>HIZQ)?Nj3*8Z7@)~~vGqGaO39Y5ug<9|E4V#ja6>0J++y!y%Vo~E5e+}SlCVX;#jdrqUf1;sTm|c`H95^)@DGuMF_WEWZ)6o37 zv1t4-1IuT8wO#xVuo-3=Bw}k$>BnGiCNIziS~5%L0$d)824@<#jaEKe*>a&tcNmn7 zmk2HX59Aqx0XfEaO%EUgm?Lw4FMd8CJIxG;SViTOPN2v*9DUUv`d2*JP|O=qI(8u0 z*nT@h7ffB+2u4{4yo3gh+VdVtYr8TW{0vVvBtg~illFLFpJ<}DsH2nn-8RXIxti@V z;I_BlSGB^$tp-f_HLa)B(Ezub=P^{|fbR7_0P}Y@84OodPg5@7lVm}6mX3bQ!BzUX z))0=eu$Y-34;k7Yj>wc}KylX`6wmFo)h2MvP@W6VU0V&dS>u~!&M+CfIn(%Xjd4g3 zt-nCs+hy$hD(oy8$3pdoX-n3naHq<@=U!UH)+)9IUD^(tajND%D_U&_!m(zH0*|Fj?m(Jy70jdY5E9XfSpk@GBzCmw(v&sD7C{4 zaKxwwC0VPS7C82Yf5l`=`RcC*_?X$Hbi?gU>dHgd&BO=M+#xYJ6P0dBVkUy1>4 zbJ2D_EBfQd0d5Bln^^Qm+<<5U&6ARz3=lQtp^L>ypqY#I$eQ#Kbwm3LO>(5c$>QWY zsz2=5Spq+k|6vY|h7k3dyY`Qj47vZ>&jTcs2919Fj&Ya5NIY9w$8@f(l-|~j< zPH8K^B}7@>WT^(J*LhJFk!pk4-a`FrFh%YnGE3fv;Exx5NwvBOjJ!A%uRaK?^xLS} z@^p9t+({l#qv$;{Z)&)BYM0wD7;Uc`!SY|iix+;~?`fb#3(N$HJ zpV39bIeGANIeWt$sw|#GR(k0l!$~k>C5?~VyK1N*>)7=hz&rpnhG=hsVxbZS zCS@1-fWP4ZAaJ*nIu9}tUTOwrZ!GeGkk1+3IJIjLY{mmXbWDy6QmTHR+!}M$owhX4 z6ACUConr@DM483*>KyQ^?buBTyzivWfoKzhQQl#zr~U)$0k!Q8PJ{*^_sW62Thz1x z*gndOv5nAH!0QrMo)0TjlX6?5q_)Vmu%eG7O+Po!-jB9QOQ%*xjw|rtZqPbg?8(gy z`C6!&SHo{YkS*%x)c>EdWtbwbCOFg7?so=C^zm@YlC;Cj-w5IQE-EhNOBAP6Pm|Jn zJpWawp2M-Fw(qdvxglkiK$Vv*QoX$*VH&V3f+ro8z#?+ z9zeAMRH0LuSd?f&O?N-~x1?S-@XFFZ7%q)V7d)*x^Z`rGvMy7q3d0=y%Sy#f4dilqnh3d&gcnwLz6xdk7L?das$BH z-7kFDW)deu*U%+h_$nLGxLX(;Y(I{eNN=^2jxY9k5y7S_RBvlf)M81dNSqt;er}O> zJ8G38FmuBBjlrKFNN2D5Vz*|Zaj@c5S+z)>x-Fh5cWkE&vgScV6|(FC(m^w zudanExS3N@U|b6K^zd;V>Hggb*zhR70M(`&LaxEV!}-W?xHmCcb(WQeL~|y)2+nz$ z=j1K%=YfpL_rx|vB>$w7B)^9 zZd!urQcD&P@lGw)C&H_a{Q$q@5x2$t3^3HT3f-#k>N+rJJ?}@6=P@}jTV4~&HYU$s zWdgjn#&PQ?wdih*C&GDK=t=zhwdip$Y-KOa!sUe&lXr6{ehq=N zP=;@>S(t_5qzoVO3@1}lnmN8WH5%cIbT5;AQJ63(sGbx>rbJ^Tp(KADWyQXYK*-$? zA1EH$&6|+uxodsE!N-hgLKYjl#ejO_#}ME}0o{5}NuK}1Zbk?^`}p2E*VhbFIdXTc zkEx++c?lXWyw^5Lbxel$XGvs^+v2yiHK8j}6C$r>PXSZ1u|u*<<9-~aGHdt>_YT*O zg}v>g<}(-y+&I_`KZZa^lI|Kfd^`3r1n7chL(RIu3f~ojE@<9hgM)E9E6_!cRQrA< zc)MM}=nXfJhZ?#{S0dGgH?ra0SM%hPI6Jm78>+MBcoY{cWbR(6MW|YRQxLqv8{+Vs ztMqVL+1Dfr(>R57S0|iPx)NjH9+`}CFc_(D>be7?1ySJ$OZ728rE?T^e-)~_Z-lB< z3lLXJmTV!g%;^Zi9s6Z&0DCULgGL^Z&3;=uK{}O<3%bycBq4Xpu{lLvsq1zK-lfXT zxI9f=2S>km`Fn&t1E4!DWxsYq2wakU31&A-7N=o>2EpBaC~!O#@A*PYA>(Vx@mZ*so&k^#Nf(S|s0(k_d> zY#+YK2EV8!8%^oD&gp_&H&5@#nP}J54F^rmtM-vyRzx)e^jKM`}i zuJs?Fv}>>*C6w!;0p_J7O{S_a+>#<-xI1ix#v^RI9ZZv5o<%5DLaJ;8RN|=v-9?Z) zPBZn|9AGF<5e1iRm7hwQ+IWvZ*k)#KaPa1NWN+YF8US31c>r*5egMYl@+aH-0LKK%XDBO6^A#K%KHT zzEDgAm-FCpng(GXnN+R-pONE?J!_JArVD1f=ku&Q^E{1AIljDPt$YBnW_uMsm|++k z`*jL;%7H`SHMeBJ8)Zi-pc71;1Uoj_|6bS6AWKw#;&rN`*Ax^3?NoR)Cnyn~QMRMn zDE1onfMW1?YkQr>+gJJA|LlL{Na5o=ZKG9CG}@u!A@!84?!03ixNQsY^TIqgjADf! zC+p6DbK_}*-w_IipeqYJbXpzp4cHQ&y(mo`0s768w!)R3G}q+;!1i{ueg$|19su_1 zC`-$hnxIPBLXiuwZ$B68;N19WFGBn-P=+V`ir;)9h1=8MsNJ94!*7%k0+Fe8+SXI3 zhTxWS;N++IwFbqMt`OiUzvW9d7QuCagZx$leEJnq-IOjr9wpto=D}=!t$}E0$PK7n zcmnm5Mw`UhN;E}M4@c`gaT@RW5_m#NQ{9wyq>M(~UX5ue@(E&OYuN@X4$_GGx*#q! z2BQ&;xZNw@&|@)%Ced&mmyBR@W2=s=02gs; zBbozcXxz?X?*50J17C#RUJ&eZXMT$M7gkia5S+t%cp&IF-gv|Fci&WnP5~9_!{L^! zQh)07`f%Tt>G8k9bZgwK_o-9-L4Zy3Uv1s;%;PZ*I0rKqf_|rwSLRCU?Ax+l38kn{Bq0-<(Y->N7fp4-A zLFQ!Gxg0*XhS+Hm8S1Evz=MW?^y>HnRMHZ^R2>RBZkCA5aR@39gevP^9{nv0WUrO0 zy0K}jfRw27_gb%R6d2t1H;}2Dt$Pty;JQI=!4}9@&AT*{^IGDAm|M(g&R>D=z7l9H z8oDMU(_;^p0~Lplb02=;7R5B9)(gik+^3kn?HAJh_b903tJ4?4?3cWqK`z{&Jovq) zj*ru7BBK!_4Y{ua46Y#?$L@??29;7#jKm8NZN+2`ODLaRTDWsi+QYPoTE83c3 z9;ANN_s|a$tJC1rbIx>Plb%?esRp>{+-@n7W@>J54=*E-NtEBMix14egxyM7E$4gqx_et3h%(;)AbF5tVc#P^8*Q2ak8MFvJ$*8Ss_-miks?ob42BnGp)lbEyIDiE zHLJ4FE5n7Qu>f0F;rvPQ-woQVoHLDW25p-*U`x{+dxT~B8h~T)H8;4(?hBF6A_V0_ zUwbn+c;_;{Km=a_^!XNI7y3i^HG1`!_j04L4iYM^W{)&D7{ygQ<3*O+yTD^C)=7rE zIvd&>_#F-U6H*2TF#{rY>(bre3R1tudYuEEE4#pBN685=Ci~~ulOf~vP}n4_FXsB} z6<-CjPw>n^sHg|u7x1MU{@exJ!3OYm({yAgEtAT!;=Wsta0$ir{dM-!;_%IDitEv+ zbnZeZF0keSW=Ls>MYk>->r@@NU5h&-U!g7 zBdA%E4%{5FS(%B8g{ClXGu5$-OtfqW0eQnglW=Wj$#887e!`5veM#?kL1!zu;=tUY z+C}&YGk81f#(HqenWNcSp*+lcw90I&BlQLeC-`kXW?s-yDe!JZ-MhEXeQl) zm`|%GIDK?@TO5554v@Pnp*jCagg44v zyd`-P*IY!Hf*~npNc8Qs(J8c6;RU#^=yfbq2+9k{B;y<9My_WZqj7PL{PjADY%9V` z)!S_;!xIs9R&W0sRD`F{FB1yRRKAC!VMW^#AMm*@kc)a~j9D-W)g16NLP;(nm+Ehztfz@3vC+rcs0@=RRnR4_uDa^7z$ zu5JqR9}jxuhprm*r~r10;Wr;76ihj_4mYb0>zxRiWQ(#_$ea>~gC_mn&+rGJNq%@m z12n030yt)V6#~9j&^wmm;yQaEEWrvi2|r;*1PYo-d5}1*?zRI>I)zy!=v@NnT}nG1 z#q`I3w>EE-euAKTaBIHc{dCPjgip#}yMS;{@et&!?lz^k`n5K}80d2Cr|Y5#RH7%) z))ejsBB-0dd%oZ%E{*`por+|J$zS(TTn7hmEtTXwTk|WzNnyR98p(cWF#-i=D!;?k zb3SrkKZ;RtA=UQmpth} z<0FIG)<0?R#C-vc`|5T#cNDZBg}IBh10DIFH@ibZy zve~e6Y^@D$+wuLvVcIb@s4yhwH#p&@{;pTcvevPx4~|UaEUg}+N?fhMeH9?Z`Nx)R z$4Ef(Vd^h4c)==oOLF%3ZpT1C4#42g56YL~fm^cRh&9$1`4P9l5#c=`1S#cO{4f?F zw!V@a;f`|K0E6A*_VG8kh^v9D%{z+c<`;oWn~Kv~Ihs9&okwe}?KqnN&HGE9@ZKb# zaeUJ7k2e^+yg1bh=V~$yJO8rBDc>*NIUMbSa`^AH?sk}%3CUws^Nwael;c*~ zFC|t7m-APw$fVpfA1fSMdDm`m+yCJgdI*W!29`GOFu#LCi<-{&PI4<;2FLxfsDyK6 ziA`?Wr*2n@aVt2I^ozU_Z2k}@82#94DK7*7%@;?X^Nu8`^p#k_OTSNWYl+0_>rYmi z;Z7A}Rc{rn<^4!<0*+sDy@cBwa9HDwTv3b&gTdeMJFd_>{!jEUt(STM~!|^+o8t|oKMtL{$89KkCUk+g+=|(GJtJHo4)%H38In=tZ{#aN=zmB z)=$|F6L2k+D3}mOyDSxwbn1ClKJns+Km(%~_xh=P7mDnOKFXStM3vzo@LB2J9tYg;IuV*_~pDRE{$Q9+1i zJfMj<+K_PdybO9i?UWgFHkkl*A6w$DI}nnYCnOjZ?_P~A zMj|Qu#(fB98#u(JOY2Q}WZi9(8?X$2!2vjVP)G>QGsOdwwJ^B&DSkeYkl243^nBMm zssTAJ$uR7!t#MVN{u6_qxK2|nKgkwYIzL>BsRjWTp73t_`?%5}YP@Q^Bc?c{5_tC2 zo$?YKEd0!%=V7yrl6z%uN!f49%e8!TzCq7_I!&z+q-Yj}OH&Y}lz-H2+JF`-2nq9d znR36pALcH&vE~HM^*byiShtUDK-H6ckQ?yn!8Mn0^!6`8!f06v_XH5F10=FE_Pfk* zYb4vSQ{C*SD$k>UKiN{UYDMSr31HV$OKd4_LJl z^zb67W!Ew%OI0X$lr8y-ohGQBa6($npS&mdbEhhJgvr$cZ^)7E$1WBlwERvT>8O}{ zz*yUF@tWs%jJ3NuIEVb!er-^y=a(Mf=f@ij<9Ht#e)Obnxuk%X%8JA=`KbXk7c|xf zhH3d-B%+zz8us_xIw=yPs8~Ks%QZz-%{M|i z_E>*7vh8s{+a2?DPO2xo0on3}v|xw73HQ-f`n?B-boL8yXqRq=DwGF?7PCB^gK8QE z0^*)mF7e@&5cIQeR zf(q%DG1_+X0M3@4L7l$aIc;-8KG@-(+`$9R?V$0LyIfIC$`mn zf+sfVcle+0utPAm@`tzLN|mpWbj4kx9vePJvZHV9@b_HF$;sNJ1T_6=scDmiHfHy5 zTq#(&)Jt+6uEBi+_stvuLd@W_ORHw6o>=otlr)-YeWJd=xrNncL*hp8&j66f>*~RA z!7F)~NGTfL7QGUSLt^YwB*_^WwT&;mz6==Lz~=^L`R3Mn@@M7b!k;OIvhSwx6UwTl zs6uy!a?rQxZ>nkh**FQb+mWz)8j>nlhm6+7>_kdTKu&} zBN_LOCFcUvvAK1eg__QZMUN!~*qS3H-<&q;;iN>4sa8kk)>-358Yd@pSZ*Dcsb-0C ziBT!P;Y6HU_ofc0WTa<)*c&Pt>6NAq%&iN>ofP54rdsa3iL*ZI#v3}h@#*)egX4bX za@iOWHcj)~GnAcEt8p>1(H<2eVn81~pa{%3C8 zs8@XBys-CFp_Z?BRF)3k;onp;4bhm&cL0_ugaY?%HEDBImg2UG*yoah3tqSE4W!=ARo||fUu}s2CLUMEX0n8o$yk{uuFOGj(lfHFW8-GGgev@AC z$*tq{Sgy7GwhT!QSM(oWPJ2E|%bUGqU4``i+yRSU9^Exy@w1v-A|`12BgVSwDG}yc z{_ZYW_utqGNkKSLB1!junKaC`%tw*C&ntY`E5-Bfveu<_TI*TLdBs88Ki3+&}hR8q1r*W(KB zaVXpiOtrHw^9)mAQ!q|j%s(7Pgcr*}h?zVcHGTQn4)-fOO;k)Rct_hlvyls289FG= z?J`dc6<+?;WhZ%UUUJlxL!1;Dh?5E`iNkQ~xp5rEUf1K;{U(UeWe%4jR)Aw?u#6pXV^30AR41!{a^$H-%<`P zyf{W1lhVtlc5DGGTnE8x9{|02kDtC^`}=?;7(t=DI|pJsZ-0=!4^`Et`onlu-}}Jc z3fz|*=!U3X?#I(^)4mm8^5eL6B>b5;w9RH5_g_n1TY;JQar=v{OdQ^J-H%JPjqQy4MRFH*Y@^@7F#Q&lEhPY2RpVaq2fbcv$yM)cV@;mhOp{eMY5QPOZeb4vl?- zA^x)8yM-Ql0L0&M+`{y)nyacIup|bD^7E_^+xUi5yfBs z{l$U5IPez-{^G!29Qca^e{tY14*bOd#sQ5_&G=+GB!NEiw7SgU2bHq@SB7s11RrYWR6#ur4?v?^= zkk`_{m{-fg3&$%jsQ|-DDJb$PDoaYsD=NwFd11DIVlx68Qz~C zesyM0QuT6hR58)k{TU8?QsZ|f5|vNncq>4=*RUw6d}?TuKHmBLf39U<7}6 zBE}EqP7wIv|hv526Rb+2h}Y{8jyL1A{p+ zF!&YwAKUBZ_K%?nL>(Ux!B3?BXh|^h_r$?Xa0Cx;FDy>S2keT#KlPr7cl;V?uGFEbAhSM?vG%=iz4yjogoql#C=0E5N5 zuW}Vth5y~?&y4@+52uYG;?%(rsQ{Cbg-I!zNz1E9%c{srgO4gwQVdRhX#UNIfrkU$ z(VxMGJWN{JY}J8+iqxvhUp^Q#|Ly~vK@J!q=D+2IQJ2Aw16IY+!^;grRL8qvoN#bY zcPCZ&pM?yXzs8k{mWQi{7uYPEx~wYvpNbi**2bC&;7%Z7+_5-7TOBNr#N!=Q<<2a}V*Ilz<^uu?E3ob;(vj&e#e3euQ0hz16X=Ktba+XL&pI$wUecK9E< zW-$L3*G67=aIM3*GU%+f{(lHXeRaX}_6>v0wEyJv3L0T35FJ*s5{-JNVnpIctHGM@HDewcAUj6r{DP#5D zO|Aa3DP#5DP5-nscgGXeWqwBcTQP&x>gxMrVK4;`3OIEId3jlRRrueF|88N7_rtkb zYU9BfOjsS4vQi+EHKV`R{G+ASpO!L8ij0;FH9swXB#U8FU(4l>Qt-$Co>t($jw^pn z^RLP9e=PjjrT=5cjP5pqFw$68-oUjkB1VM`T#Pi$6Q>mp)Q z*ucd|V_kUz*Sd%p6*h1&(pXpCz_l(SMuiPrj5OAjH*l?sh*4n!7bA^z~wFh!_<%a52(YSKh$2E+R&S4P1;g)|EGKt&50JVFMQT$6Q>mp)Q*ucd| zV_o?_;$r^u3xGIx@LPYr;Me=Qq*soEUk&8NB1{Y*kN_wIaxNSK`L+W79)Uo-r67<| zdk9438U(`WL9%tUmp(T-H3b2Lh4YhISBon6AArkU=8u z3*Lla8BM>UkK#mBn$m~9?BIpna}q*`0jbatMUrE?@Hy(ulU&#bsX`+*K&~Lo>g?t3 zo5)PwkB2>4mX0ZIBB+1c|%#L)a&_Pd-3~yeA;5F5t0~&(a zIwq#kR1{*Nf(-j8eiUsCZ<b_OU6nhcd!Xi21(7j*U7tquDFElWTu+O?uOGfqK*L{btlq+&SdK4(Q?w6(@$v0Qy+>s_q-joi1lX&rZZTc6$u?6NGR=&>4_JJj z3>FHLrW(l&1+1WDf-Qv5d|1Fm!RC;5VK`l&C-!yFqh?{#u#PfRV4* z!1a9}5-rdele0U6Sr9Cz>mMON7sm|63#bpsOOL<6cwwJfI#K<`$R?aTRN|Us;|JPn z@{$a&NN+qxz0VmAJ>=9hZxWSv?5;@nR;hqFDMK`lsp_Z=94`{Q3&9dp7*S#-j2_+N zYe%BeKPC{xR!ehmWaz+kte3?J%%G?wOc>!(LALAJ?7DC$mc#5B8Ih2fbk3-E@YX>- zL&sdG?Xiq4^f2VB2B0>}fF&Nu6QzxILqY4z=-*S+U=71>47h9Sy~}kYDK;w zkSwEnj>_v`eYvohH06J~G-!wlCc+EYE`vHMeBT&o%rdJ@_7Z%rx8rf9f7xBp;mG?v z&|qu&wrDPT*!Pxx(e?*-nMKT{)Fe2s3EgPA#s~XY=js}UZ{4d2wUx|ci(eE2v*+Qy z+7L=o^k*&fbEEhvSuew7x=(;e@l&l6Cuon&n(bPB(%7?u~y%_=>m~mG$Mc#XbR0*^Md1U65 z4&zkgIKG5`Sd^nw4F`5g?l$1M^zGwR)a10WT$y=k=@bnw`96wzla)|D?KYWAtMLL} zRjKBEl9Si3EHI_pG_c_{2XKoC&GRM=2~rbN@5u7G4ebwO6PfdaTE2oU3U8X5TP zk@Pk}wNs{#9y7J==2%`neVLcbiOdvy-hjVpzIt$%f9GLCTB!!#hze8h6A2Sf(LyId zHQY2BS8Qd2nN~Bf0Vh>p12@<{ptkLa6(P~d?QM!st}N8{o;@ES_tFP-V7|M}NNY`j>gghdi;*j!xa*34(_#7cJkL&HW3Zk5BQUrt~{+p`?k&VU%q{vziAe(SNTw| zNJQ7nDh_24egBxhn&=4MQv;Zx()(-jIub{KZ(Px8^sojj)nGW4kjEAM)IukI3{!hr zbNA$x57bVFJ-T*hfW_PGk8nwLy`fleMqtmJ*E#4vW8u`pRtV735MIHzmJbTw>)eT_ z0FkAYCLh>^CXUFG<^UoxwM`ma)y~9E;oI*^6`wxgsWW^%{lmfowiC3WXlkb!LdlyL zKX=)y+2xXX^WlafP+6KZC5)5k5>#fBDPTT{Z<@{fO$_HiWoe#_bE0u*Z1zNIa+rYUs2bY71 z0o{Xq55&X@XmQ9zL%@lU#|!%y+#o2}HKS`_71D+NRNEO%i%5KK&fCSV=)F`$*07rB zcg};H;8Zy`0ks`v zvn~yYCX+~CDTe&D<5pQscxp&hTrj;=_Q(> zb$v*>ju0jDM%E=3=9lAW|nW}gb z)O0L#d?hJnC)?1sYiMr*9{5`Boitp-nW4ru{;@ENd`tPTtQozDboTVO{Kb8wSqi&8 z-$Po2i<*x4TeDB{Kwa4&(qG`&TLt-(_A6f1;O4h~cM0pvXHu#7r*fFYW~(>)T)F9D z3#x(LIMaGbz%Gtz5IV1*NiWkUT6ji-`gN~6o0xt4oE0vyr^rm=O)PU};k9Tvzz$rG z(XC_t09%k_4Me}qaN$&Z}v}KF(b7zb1JNu)jw9Au5CEOoPVbLSRbdqn`z@k1koctv{tlfGo zHJHKOE#TrMD)i24#@3Ws@)3{Y(@V9`5!LI*hHSf4b?OyfQ7*JyuQ1Pc4ajJ~pDdmnkR4pDD9P z>)MG6_E~*851uETjeUsZjs*UDWOA?)PW2Y(&=WIbAe4*aGOZW%hZUvf2^`QPGc8BV z>o)TumA!0Vke7)9ZO6vXlzt7!Ot*5?6W!Nh+AkF$t&M(Ocfiqnq<#NrS*nbe?PMFC zrKs;hOFCD3tyhdlZXZAGL^L0GZfiW?wAb6T^GQh~CQ!iXd|CYXX_HUMqlZiAzeha^BJ#9>_zGeG3|0Q_vwm-Dne7b)cFl~^-Cz?)L z!|;;9yTJ)~L;2sL1RV6@{!cub1CF;tP&W_TJOWET;qqOOT?<6t4#h4>Fm3 zLa!aQ+d|)LH(oH=$6MTd_%7QMe4-oLPcj%p86=}kFETuvn@|)jTtMxC+7`?zvTg-E z$zK=k7SC0_<1X%@1D@Mi1g~UyY{F|&x?4n53{u60DD7a!#DbZ@TUgUkAU?7BcWpED z;Q5k^>7*g??(?x{naE7?xbx(8wh*r3JQa$9xJS8dJ+^i!NV<>#YoCZq zHmpNAL47NkNv$PxNBbiwdX%+Pa2h)Q4I!EXWJ8)7-HuJ_1AF;#y!K++iSPRn# z9PAlqG>KT5eu5}KNhD3070#D-urvkuP{N zSfBEi*(bc*xL%&+_>0x6`rc;VR?-)q1u)%m%mO1@z*h(7s2{if@gCxT{R(0AWyacD z2}+KV5q+5?MCXJca`#$N-uNg7Z#qZi4jmMtJpIT5A$K6?l?kWN4DQvEM;9apKT4)7h6f9D*gvw z=gvw{Y7XHiF0Oh^I3$=ZF(OL>7eOJwF8<32AOg{IPZ#dDA9xSFLg)tQfKXzY;322^ ziV)d;W@8s9C5|N2ySQ>&+L|s+Djk2ksUJn(K~jf}1pJ;=AYNYi{B3E}&CUXhIG{yX z>Qf+<=Du+0wlKL&7Ka8~(959UHDM`36voMP$Oj;hy~Zg+mVY9b-@uF09URS8Id2Zu%j)$ zuJhLcFE`r*lR6#e)K?PdoFVaFaDesvoBHxP@a`3$f=&DGu>HA$e88c2K{e<|!})x(NbW93&{BN<@G~oO9HjI_8G~&Ko2c3A_r`75u8u}2AV{tBuZnc2zm?YqWO!~ z5mKdK%azx4w}P|PuF;*^^cF(NHD0Q1#=vm*0pY%rBw}u+e>LE;ALv2`wEN#4c763M zU8wj1i6^G|nlRL0M(*qT@fLH!k>)$pe$Kd#83idlC@k*FQSG}%NR`rtVs1=Wkbu`w zB4XhJ`7m%g@k{TM?fzGS?+4f2AW)VEj@Q0WEb97p`q_b&*-zEmk!UXbJY48%2BOk{ zF7x~Tc^}_hbe6-O>Tqj+XOH5U!Rlc42^;K09&s|T4CvnlIg1VMaLkye#SLU6PaiyT z-M+8)@Wc%DQO{UZQ0TMIe3U~IH(5Pc^->e}@b4~z%3D|y_xIN(?7PUp-o?i(nK~-d zp2DNhxOCPeamT_v>Rn(VxvvY;#x-#@l;lGb{X&>4^XNA7Il8Ov#lzk^B=sA60$6EV zz98e>{Hj__<@R{R&=y^smgcD|5oH#F%k-FRt(<6{ZHQFvZ^d6zf~~H^eCvg|sdA`< ztmGMt1<%%>=$zD0)#;6}4s0_MrQ}l5p)ot{JZl{stl|@>_~iFR?JMLCQz&bfUcjUC9X5qmCS0TV0UV&E zT2spB^X9_T$~be+0Y~NJPjgmnbToeZbjHMr%f$IhZPF@F90Z;=M(5tVvMi`JsXy#f zK)`>Cq@tALhK9wI<|d09eE@Ek`GK(~D^J3j7J4U&;DXSlcJA`mJWHkNn)j%Li)bEb z(EdfaLh1w2x18dx!v}=-DZOZSsk$H6GA`D`K=>*#V5lSlXv=RDzHlNgbsbh@}+lb8^D(ph^J?wnk3h zzrQ_yC!E_1UF>`-)g;tY%;##>+2GEmKC|BbAw#+HXAif}9UQ(4*OyK+3IAMiAHU+q zI$_}3P?dRAPkc$HzbvX$(tFzH>XE&#-!S)Hf3N)kJB=K3X$=ob->uOly~wvqg7V6| z)H{kcbGxI;yuEWcy}Dk>Xli!na1GBGfPOo1Tt26dWky)z^UI;5;^DE0uXawor&m@r zcTr0Yg?rVKb5a1;sSlh+O#+mb^m`xmcv$n}NIWwKYGyA|PbPdZWMu-cje){uuQD(( zAAjc=7&8XyN_;{lPoO{*yn zrK{v$-2RG_G9f(vd+`f0t+~C-FN@}jVV^kYcv#Htn{e{wbVOjDFdmlk0=Qg`Wk_3hLGzg8yRGFz;4_iR`|vrgDfd|;Q&oMjr8o3(G--o3Y#?aZky$gu#U zi3`9;fyIl4gISgyT5VJFM~BbXFRB4!)!flfx0NpN>u+9kUkMm4k-B$P7k#z4%`5+M zTG3ow*-|;pJA?-hE7Yhh+P1y^uAz>bDd=#s(Zur0hjPji&4?(}*-To`jVao=<(wnR%&TecASAFe~XT&b`+sx!IBkkZrgh+ z4SvpFdBOhdgEQQ?8)37aZ(q@BauSjXqQ0`eyvN_4OubQ9U0&doGB6m|S-~Ht%oCWhTRuC0J1m92@m@s$1$u-;_7UtGh1La+<`*0 zXT*}E{)8w#eJZ=AS5+JRHtbDZmuK3fNulnGMwuJ+@&}T4#F$MMU^HxS-%0`^sg9lg z*|aOXlue|wxVEC3F;`p4C||t`#Co~kv3*}i<(b=ocN

    3PrzD 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 T%&ip|_-AQmLoP7cAN&6SN7O$Y diff --git a/js/packages/shared/assets/images/dapps/blocks-350.jpg b/js/packages/shared/assets/images/dapps/blocks-350.jpg deleted file mode 100644 index 524f9267c50777c162f3f2081933716329926907..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235011 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

    - ); -} diff --git a/js/packages/ui/AccountCard/accountCard.js b/js/packages/ui/AccountCard/accountCard.js deleted file mode 100644 index 05ce24919..000000000 --- a/js/packages/ui/AccountCard/accountCard.js +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import ReactDOM from 'react-dom'; -import keycode from 'keycode'; - -import Balance from '../Balance'; -import Container from '../Container'; -import IdentityIcon from '../IdentityIcon'; -import IdentityName from '../IdentityName'; -import Tags from '../Tags'; - -import styles from './accountCard.css'; - -export default class AccountCard extends Component { - static propTypes = { - children: PropTypes.node, - account: PropTypes.object.isRequired, - balance: PropTypes.object, - className: PropTypes.string, - disableAddressClick: PropTypes.bool, - onClick: PropTypes.func, - onFocus: PropTypes.func - }; - - static defaultProps = { - disableAddressClick: false - }; - - state = { - copied: false - }; - - render () { - const { account, balance, className, onFocus, children } = this.props; - const { copied } = this.state; - const { address, description, meta = {}, name } = account; - const { tags = [] } = meta; - const classes = [ styles.account, className ]; - - if (copied) { - classes.push(styles.copied); - } - - const props = onFocus - ? { tabIndex: 0 } - : {}; - - return ( - -
    -
    - -
    -
    - -
    - { this.renderDescription(description) } - { this.renderAddress(address) } -
    -
    - - - { children } -
    - - { - tags && tags.length > 0 - ? ( -
    -
    - -
    -
    - ) : null - } - -
    - ); - } - - renderDescription (description) { - if (!description) { - return null; - } - - return ( -
    - { description } -
    - ); - } - - renderAddress (address) { - return ( -
    - - { address } - -
    - ); - } - - handleAddressClick = (event) => { - const { disableAddressClick } = this.props; - - // Stop the event if address click is disallowed - if (disableAddressClick) { - return this.preventEvent(event); - } - - return this.onClick(event); - } - - handleKeyDown = (event) => { - const codeName = keycode(event); - - if (event.ctrlKey) { - // Copy the selected address if nothing selected and there is - // a focused item - const isSelection = !window.getSelection || window.getSelection().type === 'Range'; - - if (codeName === 'c' && !isSelection) { - const element = ReactDOM.findDOMNode(this.refs.address); - - // Copy the address from the right element - // @see https://developers.google.com/web/updates/2015/04/cut-and-copy-commands - try { - const range = document.createRange(); - - range.selectNode(element); - window.getSelection().addRange(range); - document.execCommand('copy'); - - try { - window.getSelection().removeRange(range); - } catch (e) { - window.getSelection().removeAllRanges(); - } - - this.setState({ copied: true }, () => { - window.setTimeout(() => { - this.setState({ copied: false }); - }, 250); - }); - } catch (e) { - console.warn('could not copy'); - } - } - - return event; - } - } - - onClick = (event) => { - const { account, onClick } = this.props; - - // Stop the default event if text is selected - if (window.getSelection && window.getSelection().type === 'Range') { - return this.preventEvent(event); - } - - onClick && onClick(account.address); - } - - onFocus = () => { - const { account, onFocus } = this.props; - - onFocus && onFocus(account.index); - } - - preventEvent = (event) => { - event.preventDefault(); - event.stopPropagation(); - } - - setTagRef = (tagRef) => { - this.tagRefs.push(tagRef); - } -} diff --git a/js/packages/ui/AccountCard/accountCard.spec.js b/js/packages/ui/AccountCard/accountCard.spec.js deleted file mode 100644 index bff5cf5f2..000000000 --- a/js/packages/ui/AccountCard/accountCard.spec.js +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import { shallow } from 'enzyme'; -import React from 'react'; -import sinon from 'sinon'; - -import { ETH_TOKEN } from '@parity/shared/util/tokens'; - -import AccountCard from './'; - -const TEST_ADDRESS = '0x1234567890123456789012345678901234567890'; -const TEST_NAME = 'Jimmy'; - -let component; -let onClick; -let onFocus; - -function reduxStore () { - const getState = () => ({ - balances: {}, - tokens: { - [ETH_TOKEN.id]: ETH_TOKEN - } - }); - - return { - getState, - dispatch: () => null, - subscribe: () => null - }; -} - -function render (props = {}) { - if (!props.account) { - props.account = { - address: TEST_ADDRESS, - description: 'testDescription', - name: TEST_NAME, - meta: { - tags: [ 'tag 1', 'tag 2' ] - } - }; - } - - if (!props.balance) { - props.balance = { - [ETH_TOKEN.id]: new BigNumber(10) - }; - } - - onClick = sinon.stub(); - onFocus = sinon.stub(); - - component = shallow( - - ); - - return component; -} - -describe('ui/AccountCard', () => { - beforeEach(() => { - render(); - }); - - it('renders defaults', () => { - expect(component).to.be.ok; - }); - - describe('components', () => { - describe('Balance', () => { - let balance; - - beforeEach(() => { - balance = component.find('Connect(Balance)').shallow({ - context: { store: reduxStore() } - }); - }); - - it('renders the balance', () => { - expect(balance.length).to.equal(1); - }); - - it('sets showOnlyEth', () => { - expect(balance.props().showOnlyEth).to.be.true; - }); - }); - - describe('IdentityIcon', () => { - let icon; - - beforeEach(() => { - icon = component.find('IdentityIcon'); - }); - - it('renders the icon', () => { - expect(icon.length).to.equal(1); - }); - - it('passes the address through', () => { - expect(icon.props().address).to.equal(TEST_ADDRESS); - }); - }); - - describe('IdentityName', () => { - let name; - - beforeEach(() => { - name = component.find('Connect(IdentityName)'); - }); - - it('renders the name', () => { - expect(name.length).to.equal(1); - }); - - it('passes the address through', () => { - expect(name.props().address).to.equal(TEST_ADDRESS); - }); - - it('passes the name through', () => { - expect(name.props().name).to.equal(TEST_NAME); - }); - - it('renders unknown (no name)', () => { - expect(name.props().unknown).to.be.true; - }); - }); - - describe('Tags', () => { - let tags; - - beforeEach(() => { - tags = component.find('Tags'); - }); - - it('renders the tags', () => { - expect(tags.length).to.equal(1); - }); - }); - }); -}); diff --git a/js/packages/ui/AccountCard/index.js b/js/packages/ui/AccountCard/index.js deleted file mode 100644 index 8a741b573..000000000 --- a/js/packages/ui/AccountCard/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './accountCard'; diff --git a/js/packages/ui/Actionbar/Export/export.js b/js/packages/ui/Actionbar/Export/export.js deleted file mode 100644 index 1e602a8f1..000000000 --- a/js/packages/ui/Actionbar/Export/export.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; - -import FileSaver from 'file-saver'; - -import Button from '../../Button'; -import { FileDownloadIcon } from '../../Icons'; - -export default class ActionbarExport extends Component { - static propTypes = { - content: PropTypes.oneOfType([ - PropTypes.string, - PropTypes.object - ]).isRequired, - filename: PropTypes.string.isRequired, - className: PropTypes.string - } - - render () { - const { className } = this.props; - - return ( -

    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%0Drq7Wa>^NahS0gIYJ-XegNw8;$7>Dy?*IL>SO! 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 diff --git a/js/packages/shared/assets/images/dapps/close.svg b/js/packages/shared/assets/images/dapps/close.svg deleted file mode 100644 index d46acd872..000000000 --- a/js/packages/shared/assets/images/dapps/close.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/js/packages/shared/assets/images/dapps/plus.svg b/js/packages/shared/assets/images/dapps/plus.svg deleted file mode 100644 index 0fce86130..000000000 --- a/js/packages/shared/assets/images/dapps/plus.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/js/packages/shared/assets/images/dapps/signature.png b/js/packages/shared/assets/images/dapps/signature.png deleted file mode 100644 index 36b341a036642764e48a0a958077b2440f370cbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2655 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 v+L(5?Lv+G|QXGXcnee}8^&fp50hyp2X`b5_ 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 diff --git a/js/packages/shared/assets/images/parity-logo-black-no-text.svg b/js/packages/shared/assets/images/parity-logo-black-no-text.svg deleted file mode 100644 index a4f104838..000000000 --- a/js/packages/shared/assets/images/parity-logo-black-no-text.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/js/packages/shared/assets/images/parity-logo-black.svg b/js/packages/shared/assets/images/parity-logo-black.svg deleted file mode 100644 index f2b2fa726..000000000 --- a/js/packages/shared/assets/images/parity-logo-black.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/js/packages/shared/assets/images/parity-logo-white-no-text.svg b/js/packages/shared/assets/images/parity-logo-white-no-text.svg deleted file mode 100644 index 213ab1db4..000000000 --- a/js/packages/shared/assets/images/parity-logo-white-no-text.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/js/packages/shared/assets/images/parity-logo-white.svg b/js/packages/shared/assets/images/parity-logo-white.svg deleted file mode 100644 index 7360ef6a6..000000000 --- a/js/packages/shared/assets/images/parity-logo-white.svg +++ /dev/null @@ -1,100 +0,0 @@ - - - -image/svg+xml diff --git a/js/packages/shared/assets/images/paritybar.png b/js/packages/shared/assets/images/paritybar.png deleted file mode 100644 index f0b0e1457409c386690e52ab1091393de19aedc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1971 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 diff --git a/js/packages/shared/assets/images/shapeshift-logo.png b/js/packages/shared/assets/images/shapeshift-logo.png deleted file mode 100644 index 586a01ef13a7ce480d46b88fe6dc457d3083c966..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15127 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", - "version": "1.0.0", - "visible": false, - "noselect": false - }, - { - "id": "0xa635a9326814bded464190eddf0bdb90ce92d40ea2359cf553ea80e3c5a4076c", - "url": "console", - "name": "Parity/Web3 console", - "description": "A Javascript development console complete with web3 and parity objects", - "version": "0.3", - "author": "Gav Wood ", - "position": "top-right", - "visible": true - }, - { - "id": "0xf9f2d620c2e08f83e45555247146c62185e4ab7cf82a4b9002a265a0d020348f", - "url": "tokendeploy", - "name": "Token Deployment", - "description": "Deploy new basic tokens that you are able to send around", - "author": "Parity Team ", - "version": "1.0.0", - "visible": true - }, - { - "id": "0xd1adaede68d344519025e2ff574650cd99d3830fe6d274c7a7843cdc00e17938", - "url": "registry", - "name": "Registry", - "description": "A global registry of addresses on the network", - "author": "Parity Team ", - "version": "1.0.0", - "visible": true - }, - { - "id": "0x0a8048117e51e964628d0f2d26342b3cd915248b59bcce2721e1d05f5cfa2208", - "url": "tokenreg", - "name": "Token Registry", - "description": "A registry of transactable tokens on the network", - "author": "Parity Team ", - "version": "1.0.0", - "visible": true - }, - { - "id": "0xf49089046f53f5d2e5f3513c1c32f5ff57d986e46309a42d2b249070e4e72c46", - "url": "signaturereg", - "name": "Method Registry", - "description": "A registry of method signatures for lookups on transactions", - "author": "Parity Team ", - "version": "1.0.0", - "visible": true - }, - { - "id": "0x058740ee9a5a3fb9f1cfa10752baec87e09cc45cd7027fd54708271aca300c75", - "url": "githubhint", - "name": "GitHub Hint", - "description": "A mapping of GitHub URLs to hashes for use in contracts as references", - "author": "Parity Team ", - "version": "1.0.0", - "visible": false, - "onlyPersonal": true - }, - { - "id": "0xae74ad174b95cdbd01c88ac5b73a296d33e9088fc2a200e76bcedf3a94a7815d", - "url": "localtx", - "name": "TxQueue Viewer", - "description": "Have a peek at the internals of your node's transaction queue", - "author": "Parity Team ", - "version": "1.0.0", - "visible": true - }, - { - "id": "0x7bbc4f1a27628781b96213e781a1b8eec6982c1db8fac739af6e4c5a55862c03", - "url": "dappreg", - "name": "Dapp Registration", - "description": "Enables the registration and content management of dapps on the network", - "author": "Parity Team ", - "version": "1.0.0", - "visible": false - }, - { - "id": "0x9042323cd85c6576992d211de34b3ecc183f15e4f639aa87859882f839c374e5", - "url": "web", - "name": "Browser", - "description": "A Web 2.0 hosted pseudo-dapps browser", - "author": "Parity Team ", - "version": "1.0.0", - "visible": true, - "skipBuild": true, - "skipHistory": true, - "onlyPersonal": true - } -] diff --git a/js/packages/shared/config/dappsViews.json b/js/packages/shared/config/dappsViews.json deleted file mode 100644 index 75ce976ea..000000000 --- a/js/packages/shared/config/dappsViews.json +++ /dev/null @@ -1,200 +0,0 @@ -[ - { - "id": "accounts", - "url": "accounts", - "src": "Accounts", - "name": "Accounts", - "description": "Display the accounts", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "address card" - }, - { - "id": "account", - "url": "account", - "src": "Account", - "name": "Account", - "description": "Display a single account", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "noselect": true - }, - { - "id": "addresses", - "url": "addresses", - "src": "Addresses", - "name": "Addresses", - "description": "Display the accounts added to the addressbook", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "address book" - }, - { - "id": "address", - "url": "address", - "src": "Address", - "name": "Address", - "description": "Display a single address", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "noselect": true - }, - { - "id": "contracts", - "url": "contracts", - "src": "Contracts", - "name": "Contracts", - "description": "Display the contracts added to the addressbook", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "puzzle" - }, - { - "id": "contract", - "url": "contract", - "src": "Contract", - "name": "Contract", - "description": "Display a single contract", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "noselect": true - }, - { - "id": "dappAccounts", - "url": "dappAccounts", - "src": "DappAccounts", - "name": "Default dapp accounts", - "description": "Allow setting of accounts to use by default for dapps", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "users" - }, - { - "id": "dappMethods", - "url": "dappMethods", - "src": "DappMethods", - "name": "Dapp Method Permissions", - "description": "Allow setting of dapp permissions on a per method level", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "map signs" - }, - { - "id": "dappVisible", - "url": "dappVisible", - "src": "DappVisible", - "name": "Dapp Visibility", - "description": "Allow setting of visible dapps", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "hide" - }, - { - "id": "develop", - "url": "develop", - "src": "ContractDevelop", - "name": "Contract Development", - "description": "Create new contracts", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "connectdevelop" - }, - { - "id": "home", - "url": "home", - "src": "Home", - "name": "Home", - "description": "Display the status of the node, recently accessed applications, accounts and news", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "home" - }, - { - "id": "playground", - "url": "playground", - "src": "Playground", - "name": "Playground", - "description": "Playground for Parity UI components", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "noselect": true - }, - { - "id": "signer", - "url": "signer", - "src": "Signer", - "name": "Signer Requests", - "description": "Display the current and historic Signer requests", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "exchange" - }, - { - "id": "settings", - "url": "settings", - "src": "Settings", - "name": "Settings", - "description": "Allows the configuraion of all Parity & Parity-UI related options", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "settings" - }, - { - "id": "status", - "url": "status", - "src": "Status", - "name": "Status", - "description": "Displays an overview of the node including settings, logs and connections", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "feed" - }, - { - "id": "vaults", - "url": "vaults", - "src": "Vaults", - "name": "Vaults", - "description": "Allows the management of the Account Vaults, including creation, locking and account assignment", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "semantic-icon": "archive" - }, - { - "id": "wallet", - "url": "wallet", - "src": "Wallet", - "name": "Wallet", - "description": "Display a single wallet account", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "noselect": true - }, - { - "id": "web", - "url": "web", - "src": "Web", - "name": "Web", - "description": "Embed dapps loaded from the web into the Parity shell", - "author": "Parity Team ", - "version": "2.0.0", - "visible": true, - "noselect": true - } -] diff --git a/js/packages/shared/config/defaultViews.js b/js/packages/shared/config/defaultViews.js deleted file mode 100644 index 9712fdf72..000000000 --- a/js/packages/shared/config/defaultViews.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React from 'react'; - -import { AppsIcon } from '@parity/ui/Icons'; - -const defaultViews = { - apps: { - active: true, - icon: , - route: '/apps', - value: 'app' - } -}; - -export default defaultViews; diff --git a/js/packages/shared/config/index.js b/js/packages/shared/config/index.js deleted file mode 100644 index 5113e9399..000000000 --- a/js/packages/shared/config/index.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import LogLevel from 'loglevel'; - -export const LOG_KEYS = { - Balances: { - key: 'balances', - desc: 'Balances fetching' - }, - CertificationsMiddleware: { - key: 'certifications.middleware', - desc: 'Certifications Middleware' - }, - TransferModalStore: { - key: 'modalsTransferStore', - desc: 'Transfer modal MobX store' - }, - Signer: { - key: 'secureApi', - desc: 'The Signer and the Secure API' - } -}; - -export const getLogger = (LOG_KEY) => { - return LogLevel.getLogger(LOG_KEY.key); -}; diff --git a/js/packages/shared/contracts/abi/badgereg.json b/js/packages/shared/contracts/abi/badgereg.json deleted file mode 100644 index 6ae56393b..000000000 --- a/js/packages/shared/contracts/abi/badgereg.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_name","type":"bytes32"}],"name":"register","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"}],"name":"fromName","outputs":[{"name":"id","type":"uint256"},{"name":"addr","type":"address"},{"name":"owner","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"badgeCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"},{"name":"_key","type":"bytes32"}],"name":"meta","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"unregister","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_newAddr","type":"address"}],"name":"setAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"fromAddress","outputs":[{"name":"id","type":"uint256"},{"name":"name","type":"bytes32"},{"name":"owner","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"badge","outputs":[{"name":"addr","type":"address"},{"name":"name","type":"bytes32"},{"name":"owner","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_key","type":"bytes32"},{"name":"_value","type":"bytes32"}],"name":"setMeta","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_name","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"registerAs","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"addr","type":"address"}],"name":"Registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"id","type":"uint256"}],"name":"Unregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":true,"name":"key","type":"bytes32"},{"indexed":false,"name":"value","type":"bytes32"}],"name":"MetaChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"addr","type":"address"}],"name":"AddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] diff --git a/js/packages/shared/contracts/abi/basiccoin.json b/js/packages/shared/contracts/abi/basiccoin.json deleted file mode 100644 index 0bdc66666..000000000 --- a/js/packages/shared/contracts/abi/basiccoin.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"base","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_totalSupply","type":"uint256"},{"name":"_owner","type":"address"}],"type":"constructor"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] diff --git a/js/packages/shared/contracts/abi/basiccoinmanager.json b/js/packages/shared/contracts/abi/basiccoinmanager.json deleted file mode 100644 index cafe09735..000000000 --- a/js/packages/shared/contracts/abi/basiccoinmanager.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"countByOwner","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"count","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"base","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"get","outputs":[{"name":"coin","type":"address"},{"name":"owner","type":"address"},{"name":"tokenreg","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_totalSupply","type":"uint256"},{"name":"_tla","type":"string"},{"name":"_name","type":"string"},{"name":"_tokenreg","type":"address"}],"name":"deploy","outputs":[{"name":"","type":"bool"}],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"getByOwner","outputs":[{"name":"coin","type":"address"},{"name":"owner","type":"address"},{"name":"tokenreg","type":"address"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"tokenreg","type":"address"},{"indexed":true,"name":"coin","type":"address"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] diff --git a/js/packages/shared/contracts/abi/certifier.json b/js/packages/shared/contracts/abi/certifier.json deleted file mode 100644 index 905ddde6c..000000000 --- a/js/packages/shared/contracts/abi/certifier.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"getAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"getUint","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"}],"name":"certified","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"get","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"Confirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"Revoked","type":"event"}] \ No newline at end of file diff --git a/js/packages/shared/contracts/abi/dappreg.json b/js/packages/shared/contracts/abi/dappreg.json deleted file mode 100644 index f6bec35af..000000000 --- a/js/packages/shared/contracts/abi/dappreg.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":true,"inputs":[{"name":"_id","type":"bytes32"},{"name":"_key","type":"bytes32"}],"name":"meta","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"count","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"bytes32"}],"name":"unregister","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"bytes32"}],"name":"get","outputs":[{"name":"id","type":"bytes32"},{"name":"owner","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"bytes32"},{"name":"_key","type":"bytes32"},{"name":"_value","type":"bytes32"}],"name":"setMeta","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"setDappOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"at","outputs":[{"name":"id","type":"bytes32"},{"name":"owner","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"bytes32"}],"name":"register","outputs":[],"payable":true,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"bytes32"},{"indexed":true,"name":"key","type":"bytes32"},{"indexed":false,"name":"value","type":"bytes32"}],"name":"MetaChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"}],"name":"Registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"bytes32"}],"name":"Unregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] diff --git a/js/packages/shared/contracts/abi/eip20.json b/js/packages/shared/contracts/abi/eip20.json deleted file mode 100644 index 6937e28c8..000000000 --- a/js/packages/shared/contracts/abi/eip20.json +++ /dev/null @@ -1,163 +0,0 @@ -[ - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "total", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "balance", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "remaining", - "type": "uint256" - } - ], - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } -] diff --git a/js/packages/shared/contracts/abi/email-verification.json b/js/packages/shared/contracts/abi/email-verification.json deleted file mode 100644 index 3bb0fe650..000000000 --- a/js/packages/shared/contracts/abi/email-verification.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"reverse","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_puzzle","type":"bytes32"},{"name":"_emailHash","type":"bytes32"}],"name":"puzzle","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"getAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_emailHash","type":"bytes32"}],"name":"request","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_new","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_code","type":"bytes32"}],"name":"confirm","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"getUint","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"}],"name":"certified","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"get","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":true,"name":"emailHash","type":"bytes32"}],"name":"Requested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":true,"name":"emailHash","type":"bytes32"},{"indexed":false,"name":"puzzle","type":"bytes32"}],"name":"Puzzled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"Confirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"Revoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] \ No newline at end of file diff --git a/js/packages/shared/contracts/abi/gavcoin.json b/js/packages/shared/contracts/abi/gavcoin.json deleted file mode 100644 index 5170326f5..000000000 --- a/js/packages/shared/contracts/abi/gavcoin.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_maxPrice","type":"uint256"}],"name":"buyin","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"remaining","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_price","type":"uint256"},{"name":"_units","type":"uint256"}],"name":"refund","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":true,"name":"price","type":"uint256"},{"indexed":true,"name":"amount","type":"uint256"}],"name":"Buyin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":true,"name":"price","type":"uint256"},{"indexed":true,"name":"amount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"price","type":"uint256"}],"name":"NewTranch","type":"event"}] diff --git a/js/packages/shared/contracts/abi/githubhint.json b/js/packages/shared/contracts/abi/githubhint.json deleted file mode 100644 index bdbc162e4..000000000 --- a/js/packages/shared/contracts/abi/githubhint.json +++ /dev/null @@ -1,81 +0,0 @@ -[ - { - "constant":false, - "inputs":[ - { - "name":"_content", - "type":"bytes32" - }, - { - "name":"_url", - "type":"string" - } - ], - "name":"hintURL", - "outputs":[ - - ], - "type":"function" - }, - { - "constant":false, - "inputs":[ - { - "name":"_content", - "type":"bytes32" - }, - { - "name":"_accountSlashRepo", - "type":"string" - }, - { - "name":"_commit", - "type":"bytes20" - } - ], - "name":"hint", - "outputs":[ - - ], - "type":"function" - }, - { - "constant":true, - "inputs":[ - { - "name":"", - "type":"bytes32" - } - ], - "name":"entries", - "outputs":[ - { - "name":"accountSlashRepo", - "type":"string" - }, - { - "name":"commit", - "type":"bytes20" - }, - { - "name":"owner", - "type":"address" - } - ], - "type":"function" - }, - { - "constant":false, - "inputs":[ - { - "name":"_content", - "type":"bytes32" - } - ], - "name":"unhint", - "outputs":[ - - ], - "type":"function" - } -] diff --git a/js/packages/shared/contracts/abi/index.js b/js/packages/shared/contracts/abi/index.js deleted file mode 100644 index 8985d869e..000000000 --- a/js/packages/shared/contracts/abi/index.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export badgereg from './badgereg.json'; -export basiccoin from './basiccoin.json'; -export basiccoinmanager from './basiccoinmanager.json'; -export dappreg from './dappreg.json'; -export eip20 from './eip20.json'; -export emailverification from './email-verification.json'; -export gavcoin from './gavcoin.json'; -export githubhint from './githubhint.json'; -export owned from './owned.json'; -export registry from './registry.json'; -export registry2 from './registry2.json'; -export signaturereg from './signaturereg.json'; -export smsverification from './sms-verification.json'; -export tokenreg from './tokenreg.json'; -export wallet from './wallet.json'; diff --git a/js/packages/shared/contracts/abi/old-wallet.json b/js/packages/shared/contracts/abi/old-wallet.json deleted file mode 100644 index 930069742..000000000 --- a/js/packages/shared/contracts/abi/old-wallet.json +++ /dev/null @@ -1,466 +0,0 @@ -[ - { - "constant": false, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_addr", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_numOwners", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_lastDay", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "resetSpentToday", - "outputs": [], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_spentToday", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_required", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_h", - "type": "bytes32" - } - ], - "name": "confirm", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_newLimit", - "type": "uint256" - } - ], - "name": "setDailyLimit", - "outputs": [], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - }, - { - "name": "_data", - "type": "bytes" - } - ], - "name": "execute", - "outputs": [ - { - "name": "_r", - "type": "bytes32" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_operation", - "type": "bytes32" - } - ], - "name": "revoke", - "outputs": [], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_newRequired", - "type": "uint256" - } - ], - "name": "changeRequirement", - "outputs": [], - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_operation", - "type": "bytes32" - }, - { - "name": "_owner", - "type": "address" - } - ], - "name": "hasConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "ownerIndex", - "type": "uint256" - } - ], - "name": "getOwner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - } - ], - "name": "kill", - "outputs": [], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - } - ], - "name": "changeOwner", - "outputs": [], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_dailyLimit", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_required", - "type": "uint256" - }, - { - "name": "_daylimit", - "type": "uint256" - } - ], - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "operation", - "type": "bytes32" - } - ], - "name": "Confirmation", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "operation", - "type": "bytes32" - } - ], - "name": "Revoke", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldOwner", - "type": "address" - }, - { - "indexed": false, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldOwner", - "type": "address" - } - ], - "name": "OwnerRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newRequirement", - "type": "uint256" - } - ], - "name": "RequirementChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "data", - "type": "bytes" - } - ], - "name": "SingleTransact", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "operation", - "type": "bytes32" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "data", - "type": "bytes" - } - ], - "name": "MultiTransact", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "operation", - "type": "bytes32" - }, - { - "indexed": false, - "name": "initiator", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "data", - "type": "bytes" - } - ], - "name": "ConfirmationNeeded", - "type": "event" - } -] diff --git a/js/packages/shared/contracts/abi/owned.json b/js/packages/shared/contracts/abi/owned.json deleted file mode 100644 index ccfeed85d..000000000 --- a/js/packages/shared/contracts/abi/owned.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] diff --git a/js/packages/shared/contracts/abi/registry.json b/js/packages/shared/contracts/abi/registry.json deleted file mode 100644 index f97dc20c7..000000000 --- a/js/packages/shared/contracts/abi/registry.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"confirmReverse","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"reserve","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"},{"name":"_value","type":"bytes32"}],"name":"set","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"drop","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"}],"name":"getAddress","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"setFee","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_to","type":"address"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"}],"name":"reserved","outputs":[{"name":"reserved","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_who","type":"address"}],"name":"proposeReverse","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"}],"name":"getUint","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"}],"name":"get","outputs":[{"name":"","type":"bytes32"}],"type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"reverse","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"},{"name":"_value","type":"uint256"}],"name":"setUint","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"removeReverse","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"},{"name":"_value","type":"address"}],"name":"setAddress","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Drained","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"FeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"}],"name":"Reserved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"oldOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"Transferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"}],"name":"Dropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"key","type":"string"},{"indexed":false,"name":"plainKey","type":"string"}],"name":"DataChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"string"},{"indexed":true,"name":"reverse","type":"address"}],"name":"ReverseProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"string"},{"indexed":true,"name":"reverse","type":"address"}],"name":"ReverseConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"string"},{"indexed":true,"name":"reverse","type":"address"}],"name":"ReverseRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] diff --git a/js/packages/shared/contracts/abi/registry2.json b/js/packages/shared/contracts/abi/registry2.json deleted file mode 100644 index 922b9b7e2..000000000 --- a/js/packages/shared/contracts/abi/registry2.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":true,"inputs":[{"name":"_data","type":"address"}],"name":"canReverse","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"},{"name":"_value","type":"bytes32"}],"name":"setData","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"confirmReverse","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"reserve","outputs":[{"name":"success","type":"bool"}],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"drop","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"}],"name":"getAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"setFee","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_to","type":"address"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"}],"name":"getData","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"}],"name":"reserved","outputs":[{"name":"reserved","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_who","type":"address"}],"name":"proposeReverse","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"}],"name":"hasReverse","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"}],"name":"getUint","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"}],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"}],"name":"getReverse","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_data","type":"address"}],"name":"reverse","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"},{"name":"_value","type":"uint256"}],"name":"setUint","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_who","type":"address"}],"name":"confirmReverseAs","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"removeReverse","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"string"},{"name":"_value","type":"address"}],"name":"setAddress","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Drained","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"FeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"string"},{"indexed":true,"name":"reverse","type":"address"}],"name":"ReverseProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"string"},{"indexed":true,"name":"reverse","type":"address"}],"name":"ReverseConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"string"},{"indexed":true,"name":"reverse","type":"address"}],"name":"ReverseRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"}],"name":"Reserved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"oldOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"Transferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"}],"name":"Dropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":true,"name":"key","type":"string"},{"indexed":false,"name":"plainKey","type":"string"}],"name":"DataChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] diff --git a/js/packages/shared/contracts/abi/signaturereg.json b/js/packages/shared/contracts/abi/signaturereg.json deleted file mode 100644 index a9b109ecd..000000000 --- a/js/packages/shared/contracts/abi/signaturereg.json +++ /dev/null @@ -1,128 +0,0 @@ -[ - { - "constant": false, - "inputs": [ - { - "name": "_new", - "type": "address" - } - ], - "name": "setOwner", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSignatures", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "drain", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "name": "entries", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_method", - "type": "string" - } - ], - "name": "register", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "inputs": [], - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "creator", - "type": "address" - }, - { - "indexed": true, - "name": "signature", - "type": "bytes4" - }, - { - "indexed": false, - "name": "method", - "type": "string" - } - ], - "name": "Registered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "old", - "type": "address" - }, - { - "indexed": true, - "name": "current", - "type": "address" - } - ], - "name": "NewOwner", - "type": "event" - } -] diff --git a/js/packages/shared/contracts/abi/sms-verification.json b/js/packages/shared/contracts/abi/sms-verification.json deleted file mode 100644 index 3eb5492a4..000000000 --- a/js/packages/shared/contracts/abi/sms-verification.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"}],"name":"certify","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"request","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_puzzle","type":"bytes32"}],"name":"puzzle","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"getAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_new","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"}],"name":"revoke","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_code","type":"bytes32"}],"name":"confirm","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"delegate","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"getUint","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setDelegate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"}],"name":"certified","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_who","type":"address"},{"name":"_field","type":"string"}],"name":"get","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"Requested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"puzzle","type":"bytes32"}],"name":"Puzzled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"Confirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"}],"name":"Revoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] \ No newline at end of file diff --git a/js/packages/shared/contracts/abi/tokenreg.json b/js/packages/shared/contracts/abi/tokenreg.json deleted file mode 100644 index e56a13eec..000000000 --- a/js/packages/shared/contracts/abi/tokenreg.json +++ /dev/null @@ -1 +0,0 @@ -[{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"token","outputs":[{"name":"addr","type":"address"},{"name":"tla","type":"string"},{"name":"base","type":"uint256"},{"name":"name","type":"string"},{"name":"owner","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"_new","type":"address"}],"name":"setOwner","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_tla","type":"string"},{"name":"_base","type":"uint256"},{"name":"_name","type":"string"}],"name":"register","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"},{"name":"_key","type":"bytes32"}],"name":"meta","outputs":[{"name":"","type":"bytes32"}],"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_tla","type":"string"},{"name":"_base","type":"uint256"},{"name":"_name","type":"string"},{"name":"_owner","type":"address"}],"name":"registerAs","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"_tla","type":"string"}],"name":"fromTLA","outputs":[{"name":"id","type":"uint256"},{"name":"addr","type":"address"},{"name":"base","type":"uint256"},{"name":"name","type":"string"},{"name":"owner","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"tokenCount","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"unregister","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"fromAddress","outputs":[{"name":"id","type":"uint256"},{"name":"tla","type":"string"},{"name":"base","type":"uint256"},{"name":"name","type":"string"},{"name":"owner","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_key","type":"bytes32"},{"name":"_value","type":"bytes32"}],"name":"setMeta","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tla","type":"string"},{"indexed":true,"name":"id","type":"uint256"},{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"name","type":"string"}],"name":"Registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tla","type":"string"},{"indexed":true,"name":"id","type":"uint256"}],"name":"Unregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"uint256"},{"indexed":true,"name":"key","type":"bytes32"},{"indexed":false,"name":"value","type":"bytes32"}],"name":"MetaChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"old","type":"address"},{"indexed":true,"name":"current","type":"address"}],"name":"NewOwner","type":"event"}] diff --git a/js/packages/shared/contracts/abi/wallet.json b/js/packages/shared/contracts/abi/wallet.json deleted file mode 100644 index 752407e62..000000000 --- a/js/packages/shared/contracts/abi/wallet.json +++ /dev/null @@ -1,476 +0,0 @@ -[ - { - "constant": false, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_addr", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_numOwners", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_lastDay", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "resetSpentToday", - "outputs": [], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_spentToday", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_required", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_h", - "type": "bytes32" - } - ], - "name": "confirm", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_newLimit", - "type": "uint256" - } - ], - "name": "setDailyLimit", - "outputs": [], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - }, - { - "name": "_data", - "type": "bytes" - } - ], - "name": "execute", - "outputs": [ - { - "name": "_r", - "type": "bytes32" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_operation", - "type": "bytes32" - } - ], - "name": "revoke", - "outputs": [], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_newRequired", - "type": "uint256" - } - ], - "name": "changeRequirement", - "outputs": [], - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_operation", - "type": "bytes32" - }, - { - "name": "_owner", - "type": "address" - } - ], - "name": "hasConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "ownerIndex", - "type": "uint256" - } - ], - "name": "getOwner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - } - ], - "name": "kill", - "outputs": [], - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - } - ], - "name": "changeOwner", - "outputs": [], - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "m_dailyLimit", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "type": "function" - }, - { - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_required", - "type": "uint256" - }, - { - "name": "_daylimit", - "type": "uint256" - } - ], - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "operation", - "type": "bytes32" - } - ], - "name": "Confirmation", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "operation", - "type": "bytes32" - } - ], - "name": "Revoke", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldOwner", - "type": "address" - }, - { - "indexed": false, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldOwner", - "type": "address" - } - ], - "name": "OwnerRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newRequirement", - "type": "uint256" - } - ], - "name": "RequirementChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "data", - "type": "bytes" - }, - { - "indexed": false, - "name": "created", - "type": "address" - } - ], - "name": "SingleTransact", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "operation", - "type": "bytes32" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "data", - "type": "bytes" - }, - { - "indexed": false, - "name": "created", - "type": "address" - } - ], - "name": "MultiTransact", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "operation", - "type": "bytes32" - }, - { - "indexed": false, - "name": "initiator", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "data", - "type": "bytes" - } - ], - "name": "ConfirmationNeeded", - "type": "event" - } -] diff --git a/js/packages/shared/contracts/badgereg.js b/js/packages/shared/contracts/badgereg.js deleted file mode 100644 index 4ef8f5db0..000000000 --- a/js/packages/shared/contracts/badgereg.js +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { bytesToHex, hexToAscii } from '@parity/api/util/format'; - -import ABI from './abi/certifier.json'; - -const ZERO20 = '0x0000000000000000000000000000000000000000'; -const ZERO32 = '0x0000000000000000000000000000000000000000000000000000000000000000'; - -export default class BadgeReg { - constructor (api, registry) { - this._api = api; - this._registry = registry; - - registry.getContract('badgereg'); - this.certifiers = []; // by id - this.contracts = {}; // by name - } - - getContract () { - return this._registry.getContract('badgereg'); - } - - certifierCount () { - return this - .getContract() - .then((badgeReg) => { - return badgeReg.instance.badgeCount.call({}, []) - .then((count) => count.valueOf()); - }); - } - - fetchCertifier (id) { - if (this.certifiers[id]) { - return Promise.resolve(this.certifiers[id]); - } - - return this - .getContract() - .then((badgeReg) => { - return badgeReg.instance.badge.call({}, [ id ]); - }) - .then(([ address, name ]) => { - if (address === ZERO20) { - throw new Error(`Certifier ${id} does not exist.`); - } - - name = bytesToHex(name); - name = name === ZERO32 - ? null - : hexToAscii(name); - - return this.fetchMeta(id) - .then(({ title, icon }) => { - const data = { address, id, name, title, icon }; - - this.certifiers[id] = data; - return data; - }); - }); - } - - fetchCertifierByName (name) { - return this - .getContract() - .then((badgeReg) => { - return badgeReg.instance.fromName.call({}, [ name ]); - }) - .then(([ id, address, owner ]) => { - if (address === ZERO20) { - throw new Error(`Certifier ${name} does not exist.`); - } - - return this.fetchMeta(id) - .then(({ title, icon }) => { - const data = { address, id, name, title, icon }; - - this.certifiers[id] = data; - return data; - }); - }); - } - - fetchMeta (id) { - return this - .getContract() - .then((badgeReg) => { - return Promise.all([ - badgeReg.instance.meta.call({}, [id, 'TITLE']), - badgeReg.instance.meta.call({}, [id, 'IMG']) - ]); - }) - .then(([ title, icon ]) => { - title = bytesToHex(title); - title = title === ZERO32 ? null : hexToAscii(title); - - if (bytesToHex(icon) === ZERO32) { - icon = null; - } - - return { title, icon }; - }); - } - - checkIfCertified (certifier, address) { - if (!this.contracts[certifier]) { - this.contracts[certifier] = this._api.newContract(ABI, certifier); - } - - const contract = this.contracts[certifier]; - - return contract.instance.certified.call({}, [address]); - } -} diff --git a/js/packages/shared/contracts/code/index.js b/js/packages/shared/contracts/code/index.js deleted file mode 100644 index 1081c9afa..000000000 --- a/js/packages/shared/contracts/code/index.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { wallet } from './wallet'; - -export { - wallet -}; diff --git a/js/packages/shared/contracts/code/wallet.js b/js/packages/shared/contracts/code/wallet.js deleted file mode 100644 index ab60bfc98..000000000 --- a/js/packages/shared/contracts/code/wallet.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -/** - * @version Solidity v0.4.10 - Optimized - * @from https://github.com/paritytech/parity/blob/6b0e4f9098be6b841353e7c4f116aa86b7c2e3d6/js/src/contracts/snippets/enhanced-wallet.sol - * @date 20-Jul-2017 @ 16h00 UTC - */ -export const walletCompiler = 'v0.4.10+commit.f0d539ae'; -export const walletSource = 'https://github.com/paritytech/parity/blob/c4196a5de31e0b97ec42d5263d9db404cea4a776/js/src/contracts/snippets/enhanced-wallet.sol'; -export const wallet = '0x6060604052341561000c57fe5b60405161048538038061048583398101604090815281516020830151918301519201915b604080517f696e697457616c6c657428616464726573735b5d2c75696e743235362c75696e81527f7432353629000000000000000000000000000000000000000000000000000000602080830191909152915190819003602501902084516000829052909173_____________WalletLibrary______________91600281019160049182010290819038829003903960006000600483016000866127105a03f45b505050505050505b61039d806100e86000396000f300606060405236156100725763ffffffff60e060020a6000350416632f54bf6e811461012d5780634123cb6b1461015d578063523750931461017f578063659010e7146101a1578063746c9171146101c3578063c2cf7326146101e5578063c41a360a14610218578063f1736d8614610247575b61012b5b60003411156100c75760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a1610127565b60003611156101275773_____________WalletLibrary______________600160a060020a0316600036600060405160200152604051808383808284378201915050925050506020604051808303818560325a03f4151561012457fe5b50505b5b5b565b005b341561013557fe5b610149600160a060020a0360043516610269565b604080519115158252519081900360200190f35b341561016557fe5b61016d6102cd565b60408051918252519081900360200190f35b341561018757fe5b61016d6102d3565b60408051918252519081900360200190f35b34156101a957fe5b61016d6102d9565b60408051918252519081900360200190f35b34156101cb57fe5b61016d6102df565b60408051918252519081900360200190f35b34156101ed57fe5b610149600435600160a060020a03602435166102e5565b604080519115158252519081900360200190f35b341561022057fe5b61022b60043561034a565b60408051600160a060020a039092168252519081900360200190f35b341561024f57fe5b61016d61036b565b60408051918252519081900360200190f35b600073_____________WalletLibrary______________600160a060020a0316600036600060405160200152604051808383808284378201915050925050506020604051808303818560325a03f415156102bf57fe5b50506040515190505b919050565b60015481565b60045481565b60035481565b60005481565b600073_____________WalletLibrary______________600160a060020a0316600036600060405160200152604051808383808284378201915050925050506020604051808303818560325a03f4151561033b57fe5b50506040515190505b92915050565b6000600560018301610100811061035d57fe5b0160005b505490505b919050565b600254815600a165627a7a72305820c20a8475c42598c198f6629bada37e1b234da85ac2c0cbac3d96089030b180400029'; -export const walletLibrary = '0x6060604052341561000c57fe5b5b61170f8061001c6000396000f300606060405236156101015763ffffffff60e060020a600035041663173825d981146101575780632f54bf6e146101755780634123cb6b146101a557806352375093146101c75780635c52c2f5146101e9578063659010e7146101fb5780637065cb481461021d578063746c91711461023b578063797af6271461025d5780639da5e0eb14610284578063b20d30a914610299578063b61d27f6146102ae578063b75c7dc6146102ec578063ba51a6df14610301578063c2cf732614610316578063c41a360a14610349578063c57c5f6014610378578063cbf0b0c0146103cf578063e46dcfeb146103ed578063f00d4b5d14610449578063f1736d861461046d575b6101555b60003411156101525760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b5b565b005b341561015f57fe5b610155600160a060020a036004351661048f565b005b341561017d57fe5b610191600160a060020a036004351661057d565b604080519115158252519081900360200190f35b34156101ad57fe5b6101b561059e565b60408051918252519081900360200190f35b34156101cf57fe5b6101b56105a4565b60408051918252519081900360200190f35b34156101f157fe5b6101556105aa565b005b341561020357fe5b6101b56105e1565b60408051918252519081900360200190f35b341561022557fe5b610155600160a060020a03600435166105e7565b005b341561024357fe5b6101b56106d7565b60408051918252519081900360200190f35b341561026557fe5b6101916004356106dd565b604080519115158252519081900360200190f35b341561028c57fe5b610155600435610a30565b005b34156102a157fe5b610155600435610a56565b005b34156102b657fe5b6101b560048035600160a060020a0316906024803591604435918201910135610a8e565b60408051918252519081900360200190f35b34156102f457fe5b610155600435610d71565b005b341561030957fe5b610155600435610e1c565b005b341561031e57fe5b610191600435600160a060020a0360243516610e9e565b604080519115158252519081900360200190f35b341561035157fe5b61035c600435610ef3565b60408051600160a060020a039092168252519081900360200190f35b341561038057fe5b6101556004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505093359350610f1492505050565b005b34156103d757fe5b610155600160a060020a0360043516610ff9565b005b34156103f557fe5b6101556004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505084359460200135935061103792505050565b005b341561045157fe5b610155600160a060020a0360043581169060243516611062565b005b341561047557fe5b6101b561115c565b60408051918252519081900360200190f35b60006000366040518083838082843782019150509250505060405180910390206104b881611162565b1561057657600160a060020a0383166000908152610105602052604090205491508115156104e557610576565b60016001540360005411156104f957610576565b6000600583610100811061050957fe5b0160005b5055600160a060020a038316600090815261010560205260408120556105316112cd565b6105396113bd565b60408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a15b5b5b505050565b600160a060020a03811660009081526101056020526040812054115b919050565b60015481565b60045481565b6000366040518083838082843782019150509250505060405180910390206105d181611162565b156105dc5760006003555b5b5b50565b60035481565b60003660405180838380828437820191505092505050604051809103902061060e81611162565b156106d15761061c8261057d565b15610626576106d1565b61062e6112cd565b60015460fa9010610641576106416113bd565b5b60015460fa9010610652576106d1565b60018054810190819055600160a060020a03831690600590610100811061067557fe5b0160005b5055600154600160a060020a03831660008181526101056020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b5b5b5050565b60005481565b60006000826106eb81611162565b15610a265760008481526101086020526040902054600160a060020a031615158061072757506000848152610108602052604090206001015415155b80610754575060008481526101086020526040902060029081015461010060018216150260001901160415155b15610a265760008481526101086020526040902054600160a060020a0316151561082c57600084815261010860209081526040918290206001808201546002928301805486516000199482161561010002949094011693909304601f810185900485028301850190955284825261082594909391929183018282801561081b5780601f106107f05761010080835404028352916020019161081b565b820191906000526020600020905b8154815290600101906020018083116107fe57829003601f168201915b50505050506114f9565b91506108e4565b60008481526101086020526040908190208054600180830154935160029384018054600160a060020a0390941695949093919283928592918116156101000260001901160480156108be5780601f10610893576101008083540402835291602001916108be565b820191906000526020600020905b8154815290600101906020018083116108a157829003601f168201915b505091505060006040518083038185876185025a03f19250505015156108e45760006000fd5b5b6000848152610108602090815260409182902060018082015482548551600160a060020a033381811683529682018c90529681018390529086166060820181905295881660a082015260c06080820181815260029586018054958616156101000260001901909516959095049082018190527fe3a3a4111a84df27d76b68dc721e65c7711605ea5eee4afd3a9c58195217365c968b959394909390928a9290919060e0830190859080156109da5780601f106109af576101008083540402835291602001916109da565b820191906000526020600020905b8154815290600101906020018083116109bd57829003601f168201915b505097505050505050505060405180910390a16000848152610108602052604081208054600160a060020a03191681556001810182905590610a1f600283018261158e565b5050600192505b5b5b5b5050919050565b60006001541115610a415760006000fd5b6002819055610a4e611513565b6004555b5b50565b600036604051808383808284378201915050925050506040518091039020610a7d81611162565b156106d15760028290555b5b5b5050565b60006000610a9b3361057d565b15610d645782158015610ab25750610ab285611522565b5b80610ac057506000546001145b15610c0357600160a060020a0386161515610b1657610b0f8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437506114f9945050505050565b9050610b57565b85600160a060020a03168585856040518083838082843782019150509250505060006040518083038185876185025a03f1925050501515610b575760006000fd5b5b7f9738cd1a8777c86b011f7b01d87d484217dc6ab5154a9d41eda5d14af8caf2923386888787866040518087600160a060020a0316600160a060020a0316815260200186815260200185600160a060020a0316600160a060020a031681526020018060200183600160a060020a0316600160a060020a0316815260200182810382528585828181526020019250808284376040519201829003995090975050505050505050a1610d64565b600036436040518084848082843791909101928352505060408051602092819003830190206000818152610108909352912054909450600160a060020a0316159150508015610c62575060008281526101086020526040902060010154155b8015610c8f5750600082815261010860205260409020600290810154610100600182161502600019011604155b15610cd3576000828152610108602052604090208054600160a060020a031916600160a060020a03881617815560018101869055610cd19060020185856115d6565b505b610cdc826106dd565b1515610d645760408051838152600160a060020a033381811660208401529282018890528816606082015260a0608082018181529082018690527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32928592909189918b918a918a9160c082018484808284376040519201829003995090975050505050505050a15b5b5b5b5b50949350505050565b600160a060020a033316600090815261010560205260408120549080821515610d9957610e15565b50506000828152610106602052604081206001810154600284900a929083161115610e155780546001908101825581018054839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5b50505050565b600036604051808383808284378201915050925050506040518091039020610e4381611162565b156106d157600154821115610e57576106d1565b6000829055610e646112cd565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15b5b5b5050565b600082815261010660209081526040808320600160a060020a038516845261010590925282205482811515610ed65760009350610eea565b8160020a9050808360010154166000141593505b50505092915050565b60006005600183016101008110610f0657fe5b0160005b505490505b919050565b600060006001541115610f275760006000fd5b825160019081018155600160a060020a033316906005905b0160005b505550600160a060020a033316600090815261010560205260408120600190555b8251811015610fed578281815181101515610f7b57fe5b60209081029091010151600160a060020a03166005600283016101008110610f9f57fe5b0160005b50819055508060020161010560008584815181101515610fbf57fe5b90602001906020020151600160a060020a03168152602001908152602001600020819055505b600101610f64565b60008290555b5b505050565b60003660405180838380828437820191505092505050604051809103902061102081611162565b156106d15781600160a060020a0316ff5b5b5b5050565b600060015411156110485760006000fd5b61105181610a30565b6105768383610f14565b5b5b505050565b600060003660405180838380828437820191505092505050604051809103902061108b81611162565b15610e15576110998361057d565b156110a357610e15565b600160a060020a0384166000908152610105602052604090205491508115156110cb57610e15565b6110d36112cd565b600160a060020a03831660058361010081106110eb57fe5b0160005b5055600160a060020a0380851660008181526101056020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b5b5b50505050565b60025481565b600160a060020a03331660009081526101056020526040812054818082151561118a576112c3565b600085815261010660205260409020805490925015156111ed576000805483556001808401919091556101078054916111c591908301611655565b60028301819055610107805487929081106111dc57fe5b906000526020600020900160005b50555b8260020a905080826001015416600014156112c35760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18154600190116112b057600085815261010660205260409020600201546101078054909190811061127357fe5b906000526020600020900160005b5060009081905585815261010660205260408120818155600180820183905560029091019190915593506112c3565b8154600019018255600182018054821790555b5b5b505050919050565b6101075460005b818110156113ab576101086000610107838154811015156112f157fe5b906000526020600020900160005b50548152602081019190915260400160009081208054600160a060020a03191681556001810182905590611336600283018261158e565b505061010780548290811061134757fe5b906000526020600020900160005b5054156113a25761010660006101078381548110151561137157fe5b906000526020600020900160005b505481526020810191909152604001600090812081815560018101829055600201555b5b6001016112d4565b6106d1610107600061167f565b5b5050565b60015b6001548110156105dc575b600154811080156113ee575060058161010081106113e557fe5b0160005b505415155b156113fb576001016113cb565b5b60016001541180156114225750600154600590610100811061141a57fe5b0160005b5054155b1561143657600180546000190190556113fb565b6001548110801561145c5750600154600590610100811061145357fe5b0160005b505415155b80156114795750600581610100811061147157fe5b0160005b5054155b156114f057600154600590610100811061148f57fe5b0160005b505460058261010081106114a357fe5b0160005b505580610105600060058361010081106114bd57fe5b0160005b505481526020019081526020016000208190555060006005600154610100811015156114e957fe5b0160005b50555b6113c0565b5b50565b600081516020830184f09050803b15610000575b92915050565b600062015180425b0490505b90565b600061152d3361057d565b156105995760045461153d611513565b1115611554576000600355611550611513565b6004555b6003548281011080159061156e5750600254826003540111155b15611583575060038054820190556001610599565b5060005b5b5b919050565b50805460018160011615610100020316600290046000825580601f106115b457506105dc565b601f0160209004906000526020600020908101906105dc91906116a1565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116175782800160ff19823516178555611644565b82800160010185558215611644579182015b82811115611644578235825591602001919060010190611629565b5b506116519291506116a1565b5090565b815481835581811511610576576000838152602090206105769181019083016116a1565b5b505050565b50805460008255906000526020600020908101906105dc91906116a1565b5b50565b61151f91905b8082111561165157600081556001016116a7565b5090565b90565b61151f91905b8082111561165157600081556001016116a7565b5090565b905600a165627a7a723058209a3af51063f944081cd5ee8601e4e655f25cf7bc219a7983cda60f163f1709a70029'; -export const walletLibraryABI = '[{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_numOwners","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_lastDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"resetSpentToday","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_spentToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_required","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_h","type":"bytes32"}],"name":"confirm","outputs":[{"name":"o_success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_limit","type":"uint256"}],"name":"initDaylimit","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newLimit","type":"uint256"}],"name":"setDailyLimit","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"o_hash","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_operation","type":"bytes32"}],"name":"revoke","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newRequired","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_operation","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"hasConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"ownerIndex","type":"uint256"}],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"}],"name":"initMultiowned","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"kill","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"},{"name":"_daylimit","type":"uint256"}],"name":"initWallet","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_dailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"}],"name":"OwnerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newRequirement","type":"uint256"}],"name":"RequirementChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"},{"indexed":false,"name":"created","type":"address"}],"name":"SingleTransact","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"},{"indexed":false,"name":"created","type":"address"}],"name":"MultiTransact","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"initiator","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"ConfirmationNeeded","type":"event"}]'; -export const walletSourceURL = 'https://github.com/paritytech/parity/blob/6b0e4f9098be6b841353e7c4f116aa86b7c2e3d6/js/src/contracts/snippets/enhanced-wallet.sol'; -export const walletLibraryRegKey = 'walletLibrary.v.2'; - -// Used if no Wallet Library found in registry... -// Compiled from `wallet.sol` using Solidity v0.4.9 - Optimized -export const fullWalletCode = '0x6060604052341561000c57fe5b60405161166d38038061166d83398101604090815281516020830151918301519201915b805b83835b815160019081018155600090600160a060020a033316906002905b0160005b505550600160a060020a033316600090815261010260205260408120600190555b82518110156100fd57828181518110151561008c57fe5b60209081029091010151600160a060020a0316600282810161010081106100af57fe5b0160005b508190555080600201610102600085848151811015156100cf57fe5b90602001906020020151600160a060020a03168152602001908152602001600020819055505b600101610075565b60008290555b50505061010581905561012164010000000061138f61013082021704565b610107555b505b50505061013f565b600062015180425b0490505b90565b61151f8061014e6000396000f300606060405236156100e05763ffffffff60e060020a600035041663173825d981146101365780632f54bf6e146101545780634123cb6b1461018457806352375093146101a65780635c52c2f5146101c8578063659010e7146101da5780637065cb48146101fc578063746c91711461021a578063797af6271461023c578063b20d30a914610263578063b61d27f614610278578063b75c7dc6146102b6578063ba51a6df146102cb578063c2cf7326146102e0578063c41a360a14610313578063cbf0b0c014610342578063f00d4b5d14610360578063f1736d8614610384575b6101345b60003411156101315760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b5b565b005b341561013e57fe5b610134600160a060020a03600435166103a6565b005b341561015c57fe5b610170600160a060020a0360043516610494565b604080519115158252519081900360200190f35b341561018c57fe5b6101946104b5565b60408051918252519081900360200190f35b34156101ae57fe5b6101946104bb565b60408051918252519081900360200190f35b34156101d057fe5b6101346104c2565b005b34156101e257fe5b6101946104fa565b60408051918252519081900360200190f35b341561020457fe5b610134600160a060020a0360043516610501565b005b341561022257fe5b6101946105f1565b60408051918252519081900360200190f35b341561024457fe5b6101706004356105f7565b604080519115158252519081900360200190f35b341561026b57fe5b610134600435610949565b005b341561028057fe5b61019460048035600160a060020a0316906024803591604435918201910135610982565b60408051918252519081900360200190f35b34156102be57fe5b610134600435610c64565b005b34156102d357fe5b610134600435610d0f565b005b34156102e857fe5b610170600435600160a060020a0360243516610d91565b604080519115158252519081900360200190f35b341561031b57fe5b610326600435610de6565b60408051600160a060020a039092168252519081900360200190f35b341561034a57fe5b610134600160a060020a0360043516610e07565b005b341561036857fe5b610134600160a060020a0360043581169060243516610e45565b005b341561038c57fe5b610194610f3f565b60408051918252519081900360200190f35b60006000366040518083838082843782019150509250505060405180910390206103cf81610f46565b1561048d57600160a060020a0383166000908152610102602052604090205491508115156103fc5761048d565b60016001540360005411156104105761048d565b6000600283610100811061042057fe5b0160005b5055600160a060020a038316600090815261010260205260408120556104486110b1565b610450611132565b60408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a15b5b5b505050565b600160a060020a03811660009081526101026020526040812054115b919050565b60015481565b6101075481565b6000366040518083838082843782019150509250505060405180910390206104e981610f46565b156104f5576000610106555b5b5b50565b6101065481565b60003660405180838380828437820191505092505050604051809103902061052881610f46565b156105eb5761053682610494565b15610540576105eb565b6105486110b1565b60015460fa901061055b5761055b611132565b5b60015460fa901061056c576105eb565b60018054810190819055600160a060020a03831690600290610100811061058f57fe5b0160005b5055600154600160a060020a03831660008181526101026020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b5b5b5050565b60005481565b600060008261060581610f46565b1561093f5760008481526101086020526040902054600160a060020a031615158061064157506000848152610108602052604090206001015415155b8061066e575060008481526101086020526040902060029081015461010060018216150260001901160415155b1561093f5760008481526101086020526040902054600160a060020a0316151561074657600084815261010860209081526040918290206001808201546002928301805486516000199482161561010002949094011693909304601f810185900485028301850190955284825261073f9490939192918301828280156107355780601f1061070a57610100808354040283529160200191610735565b820191906000526020600020905b81548152906001019060200180831161071857829003601f168201915b505050505061126e565b91506107fd565b60008481526101086020526040908190208054600180830154935160029384018054600160a060020a0390941695949093919283928592918116156101000260001901160480156107d85780601f106107ad576101008083540402835291602001916107d8565b820191906000526020600020905b8154815290600101906020018083116107bb57829003601f168201915b505091505060006040518083038185876185025a03f19250505015156107fd57610000565b5b6000848152610108602090815260409182902060018082015482548551600160a060020a033381811683529682018c90529681018390529086166060820181905295881660a082015260c06080820181815260029586018054958616156101000260001901909516959095049082018190527fe3a3a4111a84df27d76b68dc721e65c7711605ea5eee4afd3a9c58195217365c968b959394909390928a9290919060e0830190859080156108f35780601f106108c8576101008083540402835291602001916108f3565b820191906000526020600020905b8154815290600101906020018083116108d657829003601f168201915b505097505050505050505060405180910390a16000848152610108602052604081208054600160a060020a03191681556001810182905590610938600283018261139e565b5050600192505b5b5b5b5050919050565b60003660405180838380828437820191505092505050604051809103902061097081610f46565b156105eb576101058290555b5b5b5050565b6000600061098f33610494565b15610c5757821580156109a657506109a685611288565b5b806109b457506000546001145b15610af657600160a060020a0386161515610a0a57610a038585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375061126e945050505050565b9050610a4a565b85600160a060020a03168585856040518083838082843782019150509250505060006040518083038185876185025a03f1925050501515610a4a57610000565b5b7f9738cd1a8777c86b011f7b01d87d484217dc6ab5154a9d41eda5d14af8caf2923386888787866040518087600160a060020a0316600160a060020a0316815260200186815260200185600160a060020a0316600160a060020a031681526020018060200183600160a060020a0316600160a060020a0316815260200182810382528585828181526020019250808284376040519201829003995090975050505050505050a1610c57565b600036436040518084848082843791909101928352505060408051602092819003830190206000818152610108909352912054909450600160a060020a0316159150508015610b55575060008281526101086020526040902060010154155b8015610b825750600082815261010860205260409020600290810154610100600182161502600019011604155b15610bc6576000828152610108602052604090208054600160a060020a031916600160a060020a03881617815560018101869055610bc49060020185856113e6565b505b610bcf826105f7565b1515610c575760408051838152600160a060020a033381811660208401529282018890528816606082015260a0608082018181529082018690527f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32928592909189918b918a918a9160c082018484808284376040519201829003995090975050505050505050a15b5b5b5b5b50949350505050565b600160a060020a033316600090815261010260205260408120549080821515610c8c57610d08565b50506000828152610103602052604081206001810154600284900a929083161115610d085780546001908101825581018054839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5b50505050565b600036604051808383808284378201915050925050506040518091039020610d3681610f46565b156105eb57600154821115610d4a576105eb565b6000829055610d576110b1565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15b5b5b5050565b600082815261010360209081526040808320600160a060020a038516845261010290925282205482811515610dc95760009350610ddd565b8160020a9050808360010154166000141593505b50505092915050565b60006002600183016101008110610df957fe5b0160005b505490505b919050565b600036604051808383808284378201915050925050506040518091039020610e2e81610f46565b156105eb5781600160a060020a0316ff5b5b5b5050565b6000600036604051808383808284378201915050925050506040518091039020610e6e81610f46565b15610d0857610e7c83610494565b15610e8657610d08565b600160a060020a038416600090815261010260205260409020549150811515610eae57610d08565b610eb66110b1565b600160a060020a0383166002836101008110610ece57fe5b0160005b5055600160a060020a0380851660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b5b5b50505050565b6101055481565b600160a060020a033316600090815261010260205260408120548180821515610f6e576110a7565b60008581526101036020526040902080549092501515610fd157600080548355600180840191909155610104805491610fa991908301611465565b6002830181905561010480548792908110610fc057fe5b906000526020600020900160005b50555b8260020a905080826001015416600014156110a75760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a181546001901161109457600085815261010360205260409020600201546101048054909190811061105757fe5b906000526020600020900160005b5060009081905585815261010360205260408120818155600180820183905560029091019190915593506110a7565b8154600019018255600182018054821790555b5b5b505050919050565b6101045460005b81811015611125576101086000610104838154811015156110d557fe5b906000526020600020900160005b50548152602081019190915260400160009081208054600160a060020a0319168155600181018290559061111a600283018261139e565b50505b6001016110b8565b6105eb6112fb565b5b5050565b60015b6001548110156104f5575b600154811080156111635750600281610100811061115a57fe5b0160005b505415155b1561117057600101611140565b5b60016001541180156111975750600154600290610100811061118f57fe5b0160005b5054155b156111ab5760018054600019019055611170565b600154811080156111d1575060015460029061010081106111c857fe5b0160005b505415155b80156111ee575060028161010081106111e657fe5b0160005b5054155b1561126557600154600290610100811061120457fe5b0160005b5054600282610100811061121857fe5b0160005b5055806101026000600283610100811061123257fe5b0160005b5054815260200190815260200160002081905550600060026001546101008110151561125e57fe5b0160005b50555b611135565b5b50565b600081516020830184f09050803b15610000575b92915050565b600061129333610494565b156104b057610107546112a461138f565b11156112bd576000610106556112b861138f565b610107555b61010654828101108015906112da57506101055482610106540111155b156112f0575061010680548201905560016104b0565b5060005b5b5b919050565b6101045460005b8181101561137d5761010480548290811061131957fe5b906000526020600020900160005b5054156113745761010360006101048381548110151561134357fe5b906000526020600020900160005b505481526020810191909152604001600090812081815560018101829055600201555b5b600101611302565b6105eb610104600061148f565b5b5050565b600062015180425b0490505b90565b50805460018160011615610100020316600290046000825580601f106113c457506104f5565b601f0160209004906000526020600020908101906104f591906114b1565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114275782800160ff19823516178555611454565b82800160010185558215611454579182015b82811115611454578235825591602001919060010190611439565b5b506114619291506114b1565b5090565b81548183558181151161048d5760008381526020902061048d9181019083016114b1565b5b505050565b50805460008255906000526020600020908101906104f591906114b1565b5b50565b61139b91905b8082111561146157600081556001016114b7565b5090565b90565b61139b91905b8082111561146157600081556001016114b7565b5090565b905600a165627a7a723058203a7ac7072dc640002704b704af82b742650362cd55debf72fca105c2b916e01d0029'; diff --git a/js/packages/shared/contracts/contracts.js b/js/packages/shared/contracts/contracts.js deleted file mode 100644 index 4935ce8cf..000000000 --- a/js/packages/shared/contracts/contracts.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import DappReg from './dappreg'; -import Registry from './registry'; -import SignatureReg from './signaturereg'; -import TokenReg from './tokenreg'; -import GithubHint from './githubhint'; -import * as verification from './verification'; -import BadgeReg from './badgereg'; - -let instance = null; - -export default class Contracts { - constructor (api) { - instance = this; - - this._api = api; - this._registry = new Registry(api); - this._dappreg = new DappReg(api, this._registry); - this._signaturereg = new SignatureReg(api, this._registry); - this._tokenreg = new TokenReg(api, this._registry); - this._githubhint = new GithubHint(api, this._registry); - this._badgeReg = new BadgeReg(api, this._registry); - } - - get registry () { - return this._registry; - } - - get badgeReg () { - return this._badgeReg; - } - - get dappReg () { - return this._dappreg; - } - - get signatureReg () { - return this._signaturereg; - } - - get tokenReg () { - return this._tokenreg; - } - - get githubHint () { - return this._githubhint; - } - - get smsVerification () { - return verification; - } - - get emailVerification () { - return verification; - } - - static get (api) { - if (!instance) { - instance = new Contracts(api); - } - - return instance; - } -} diff --git a/js/packages/shared/contracts/dappreg.js b/js/packages/shared/contracts/dappreg.js deleted file mode 100644 index 18af9c163..000000000 --- a/js/packages/shared/contracts/dappreg.js +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class DappReg { - constructor (api, registry) { - this._api = api; - this._registry = registry; - - this.getInstance(); - } - - getContract () { - return this._registry.getContract('dappreg'); - } - - getInstance () { - return this.getContract().then((contract) => contract.instance); - } - - count () { - return this.getInstance().then((instance) => { - return instance.count.call(); - }); - } - - at (index) { - return this.getInstance().then((instance) => { - return instance.at.call({}, [index]); - }); - } - - get (id) { - return this.getInstance().then((instance) => { - return instance.get.call({}, [id]); - }); - } - - meta (id, key) { - return this.getInstance().then((instance) => { - return instance.meta.call({}, [id, key]); - }); - } - - getImage (id) { - return this.meta(id, 'IMG'); - } - - getContent (id) { - return this.meta(id, 'CONTENT'); - } - - getManifest (id) { - return this.meta(id, 'MANIFEST'); - } -} diff --git a/js/packages/shared/contracts/githubhint.js b/js/packages/shared/contracts/githubhint.js deleted file mode 100644 index dfc3d5fb7..000000000 --- a/js/packages/shared/contracts/githubhint.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class GithubHint { - constructor (api, registry) { - this._api = api; - this._registry = registry; - this._instance = null; - - this.getInstance(); - } - - getContract () { - return this._registry.getContract('githubhint'); - } - - getInstance () { - if (this._instance) { - return Promise.resolve(this._instance); - } - - return this.getContract().then((contract) => { - this._instance = contract.instance; - return this._instance; - }); - } - - getEntry (entryId) { - return this.getInstance().then((instance) => { - return instance.entries.call({}, [entryId]); - }); - } -} diff --git a/js/packages/shared/contracts/githubhint.spec.js b/js/packages/shared/contracts/githubhint.spec.js deleted file mode 100644 index f33850782..000000000 --- a/js/packages/shared/contracts/githubhint.spec.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import GithubHint from './githubhint'; - -let githubHint; -let instance; -let registry; - -function create () { - instance = { - __id: 'testInstance', - entries: { - call: sinon.stub().resolves('testValue') - } - }; - registry = { - getContract: sinon.stub().resolves({ instance }) - }; - githubHint = new GithubHint({}, registry); - - return githubHint; -} - -describe('contracts/GithubHint', () => { - beforeEach(() => { - create(); - - return githubHint.getInstance(); - }); - - it('instantiates successfully', () => { - expect(githubHint).to.be.ok; - }); - - it('attaches the instance on create', () => { - expect(githubHint._instance.__id).to.equal('testInstance'); - }); - - describe('interface', () => { - describe('getEntry', () => { - beforeEach(() => { - return githubHint.getEntry('testId'); - }); - - it('calls entries on the instance', () => { - expect(instance.entries.call).to.have.been.calledWith({}, ['testId']); - }); - }); - }); -}); diff --git a/js/packages/shared/contracts/index.js b/js/packages/shared/contracts/index.js deleted file mode 100644 index 8714ff544..000000000 --- a/js/packages/shared/contracts/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default from './contracts'; diff --git a/js/packages/shared/contracts/registry.js b/js/packages/shared/contracts/registry.js deleted file mode 100644 index cef31785e..000000000 --- a/js/packages/shared/contracts/registry.js +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import * as abis from './abi'; - -const REGISTRY_V1_HASHES = [ - '0x34f7c51bbb1b1902fbdabfdf04811100f5c9f998f26dd535d2f6f977492c748e', // ropsten - '0x64c3ee34851517a9faecd995c102b339f03e564ad6772dc43a26f993238b20ec' // homestead -]; - -export default class Registry { - _registryContract = null; - - constructor (api) { - this._api = api; - - this._contracts = {}; - this._pendingContracts = {}; - - this._instance = null; - this._fetching = false; - this._queue = []; - - this.getInstance(); - } - - getInstance () { - if (this._instance) { - return Promise.resolve(this._instance); - } - - if (this._fetching) { - return new Promise((resolve) => { - this._queue.push({ resolve }); - }); - } - - this._fetching = true; - - return this.fetchContract() - .then((contract) => { - this._fetching = false; - this._instance = contract.instance; - - this._queue.forEach((queued) => { - queued.resolve(this._instance); - }); - - this._queue = []; - - return this._instance; - }); - } - - getContract (_name) { - const name = _name.toLowerCase(); - - if (this._contracts[name]) { - return Promise.resolve(this._contracts[name]); - } - - if (this._pendingContracts[name]) { - return this._pendingContracts[name]; - } - - const promise = this - .lookupAddress(name) - .then((address) => { - this._contracts[name] = this._api.newContract(abis[name], address); - delete this._pendingContracts[name]; - return this._contracts[name]; - }); - - this._pendingContracts[name] = promise; - - return promise; - } - - getContractInstance (_name) { - return this - .getContract(_name) - .then((contract) => contract.instance); - } - - fetchContract () { - if (this._registryContract) { - return Promise.resolve(this._registryContract); - } - - return this._api.parity - .registryAddress() - .then((address) => Promise.all([ address, this._api.eth.getCode(address) ])) - .then(([ address, code ]) => { - const codeHash = this._api.util.sha3(code); - const version = REGISTRY_V1_HASHES.includes(codeHash) - ? 1 - : 2; - const abi = version === 1 - ? abis.registry - : abis.registry2; - const contract = this._api.newContract(abi, address); - - // Add support for previous `set` and `get` methods - if (!contract.instance.get && contract.instance.getData) { - contract.instance.get = contract.instance.getData; - } - - if (contract.instance.get && !contract.instance.getData) { - contract.instance.getData = contract.instance.get; - } - - if (!contract.instance.set && contract.instance.setData) { - contract.instance.set = contract.instance.setData; - } - - if (contract.instance.set && !contract.instance.setData) { - contract.instance.setData = contract.instance.set; - } - - console.log(`registry at ${address}, code ${codeHash}, version ${version}`); - this._registryContract = contract; - return this._registryContract; - }); - } - - _createGetParams (_name, key) { - const name = _name.toLowerCase(); - const sha3 = this._api.util.sha3.text(name); - - return [sha3, key]; - } - - lookupAddress (name) { - return this - .getInstance() - .then((instance) => { - return instance.getAddress.call({}, this._createGetParams(name, 'A')); - }) - .then((address) => { - console.log('[lookupAddress]', `${name}: ${address}`); - return address; - }); - } - - lookupMeta (name, key) { - return this - .getInstance() - .then((instance) => { - return instance.get.call({}, this._createGetParams(name, key)); - }); - } -} diff --git a/js/packages/shared/contracts/registry.spec.js b/js/packages/shared/contracts/registry.spec.js deleted file mode 100644 index d794cd7f8..000000000 --- a/js/packages/shared/contracts/registry.spec.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import apiutil from '@parity/api/util'; - -import Registry from './registry'; - -const GHH_NAME = 'githubhint'; -const GHH_SHA3 = '0x058740ee9a5a3fb9f1cfa10752baec87e09cc45cd7027fd54708271aca300c75'; - -let api; -let instance; -let registry; - -function create () { - instance = { - __id: 'testInstance', - get: { - call: sinon.stub().resolves('testGet') - } - }; - api = { - eth: { - getCode: sinon.stub().resolves('0x123456') - }, - parity: { - registryAddress: sinon.stub().resolves('testRegistryAddress') - }, - util: apiutil, - newContract: sinon.stub().returns({ instance }) - }; - registry = new Registry(api); - - return registry; -} - -describe('contracts/Registry', () => { - beforeEach(() => { - create(); - - return registry.getInstance(); - }); - - it('instantiates successfully', () => { - expect(registry).to.be.ok; - }); - - it('retrieves the registry on create', () => { - expect(api.parity.registryAddress).to.have.been.called; - }); - - it('attaches the instance on create', () => { - expect(registry._instance.__id).to.equal('testInstance'); - }); - - describe('interface', () => { - describe('lookupMeta', () => { - it('calls get on the contract', () => { - return registry.lookupMeta(GHH_NAME, 'key').then(() => { - expect(instance.get.call).to.have.been.calledWith({}, [GHH_SHA3, 'key']); - }); - }); - - it('converts names to lowercase', () => { - return registry.lookupMeta(GHH_NAME.toUpperCase(), 'key').then(() => { - expect(instance.get.call).to.have.been.calledWith({}, [GHH_SHA3, 'key']); - }); - }); - }); - }); -}); diff --git a/js/packages/shared/contracts/signaturereg.js b/js/packages/shared/contracts/signaturereg.js deleted file mode 100644 index 9fa3eab06..000000000 --- a/js/packages/shared/contracts/signaturereg.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class SignatureReg { - constructor (api, registry) { - this._api = api; - this._registry = registry; - - this.getInstance(); - } - - getInstance () { - return this._registry.getContractInstance('signaturereg'); - } - - lookup (signature) { - return this.getInstance().then((instance) => { - return instance.entries.call({}, [signature]); - }); - } -} diff --git a/js/packages/shared/contracts/snippets/enhanced-wallet.sol b/js/packages/shared/contracts/snippets/enhanced-wallet.sol deleted file mode 100644 index 90a15c070..000000000 --- a/js/packages/shared/contracts/snippets/enhanced-wallet.sol +++ /dev/null @@ -1,464 +0,0 @@ -//sol Wallet -// Multi-sig, daily-limited account proxy/wallet. -// @authors: -// Gav Wood -// inheritable "property" contract that enables methods to be protected by requiring the acquiescence of either a -// single, or, crucially, each of a number of, designated owners. -// usage: -// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by -// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the -// interior is executed. - -pragma solidity ^0.4.9; - -contract WalletEvents { - // EVENTS - - // this contract only has six types of events: it can accept a confirmation, in which case - // we record owner and operation (hash) alongside it. - event Confirmation(address owner, bytes32 operation); - event Revoke(address owner, bytes32 operation); - - // some others are in the case of an owner changing. - event OwnerChanged(address oldOwner, address newOwner); - event OwnerAdded(address newOwner); - event OwnerRemoved(address oldOwner); - - // the last one is emitted if the required signatures change - event RequirementChanged(uint newRequirement); - - // Funds has arrived into the wallet (record how much). - event Deposit(address _from, uint value); - // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going). - event SingleTransact(address owner, uint value, address to, bytes data, address created); - // Multi-sig transaction going out of the wallet (record who signed for it last, the operation hash, how much, and to whom it's going). - event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data, address created); - // Confirmation still needed for a transaction. - event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data); -} - -contract WalletAbi { - // Revokes a prior confirmation of the given operation - function revoke(bytes32 _operation) external; - - // Replaces an owner `_from` with another `_to`. - function changeOwner(address _from, address _to) external; - - function addOwner(address _owner) external; - - function removeOwner(address _owner) external; - - function changeRequirement(uint _newRequired) external; - - function isOwner(address _addr) constant returns (bool); - - function hasConfirmed(bytes32 _operation, address _owner) external constant returns (bool); - - // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today. - function setDailyLimit(uint _newLimit) external; - - function execute(address _to, uint _value, bytes _data) external returns (bytes32 o_hash); - function confirm(bytes32 _h) returns (bool o_success); -} - -contract WalletLibrary is WalletEvents { - // TYPES - - // struct for the status of a pending operation. - struct PendingState { - uint yetNeeded; - uint ownersDone; - uint index; - } - - // Transaction structure to remember details of transaction lest it need be saved for a later call. - struct Transaction { - address to; - uint value; - bytes data; - } - - // MODIFIERS - - // simple single-sig function modifier. - modifier onlyowner { - if (isOwner(msg.sender)) - _; - } - // multi-sig function modifier: the operation must have an intrinsic hash in order - // that later attempts can be realised as the same underlying operation and - // thus count as confirmations. - modifier onlymanyowners(bytes32 _operation) { - if (confirmAndCheck(_operation)) - _; - } - - // METHODS - - // gets called when no other function matches - function() payable { - // just being sent some cash? - if (msg.value > 0) - Deposit(msg.sender, msg.value); - } - - // constructor is given number of sigs required to do protected "onlymanyowners" transactions - // as well as the selection of addresses capable of confirming them. - function initMultiowned(address[] _owners, uint _required) only_uninitialized { - m_numOwners = _owners.length + 1; - m_owners[1] = uint(msg.sender); - m_ownerIndex[uint(msg.sender)] = 1; - for (uint i = 0; i < _owners.length; ++i) - { - m_owners[2 + i] = uint(_owners[i]); - m_ownerIndex[uint(_owners[i])] = 2 + i; - } - m_required = _required; - } - - // Revokes a prior confirmation of the given operation - function revoke(bytes32 _operation) external { - uint ownerIndex = m_ownerIndex[uint(msg.sender)]; - // make sure they're an owner - if (ownerIndex == 0) return; - uint ownerIndexBit = 2**ownerIndex; - var pending = m_pending[_operation]; - if (pending.ownersDone & ownerIndexBit > 0) { - pending.yetNeeded++; - pending.ownersDone -= ownerIndexBit; - Revoke(msg.sender, _operation); - } - } - - // Replaces an owner `_from` with another `_to`. - function changeOwner(address _from, address _to) onlymanyowners(sha3(msg.data)) external { - if (isOwner(_to)) return; - uint ownerIndex = m_ownerIndex[uint(_from)]; - if (ownerIndex == 0) return; - - clearPending(); - m_owners[ownerIndex] = uint(_to); - m_ownerIndex[uint(_from)] = 0; - m_ownerIndex[uint(_to)] = ownerIndex; - OwnerChanged(_from, _to); - } - - function addOwner(address _owner) onlymanyowners(sha3(msg.data)) external { - if (isOwner(_owner)) return; - - clearPending(); - if (m_numOwners >= c_maxOwners) - reorganizeOwners(); - if (m_numOwners >= c_maxOwners) - return; - m_numOwners++; - m_owners[m_numOwners] = uint(_owner); - m_ownerIndex[uint(_owner)] = m_numOwners; - OwnerAdded(_owner); - } - - function removeOwner(address _owner) onlymanyowners(sha3(msg.data)) external { - uint ownerIndex = m_ownerIndex[uint(_owner)]; - if (ownerIndex == 0) return; - if (m_required > m_numOwners - 1) return; - - m_owners[ownerIndex] = 0; - m_ownerIndex[uint(_owner)] = 0; - clearPending(); - reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot - OwnerRemoved(_owner); - } - - function changeRequirement(uint _newRequired) onlymanyowners(sha3(msg.data)) external { - if (_newRequired > m_numOwners) return; - m_required = _newRequired; - clearPending(); - RequirementChanged(_newRequired); - } - - // Gets an owner by 0-indexed position (using numOwners as the count) - function getOwner(uint ownerIndex) external constant returns (address) { - return address(m_owners[ownerIndex + 1]); - } - - function isOwner(address _addr) constant returns (bool) { - return m_ownerIndex[uint(_addr)] > 0; - } - - function hasConfirmed(bytes32 _operation, address _owner) external constant returns (bool) { - var pending = m_pending[_operation]; - uint ownerIndex = m_ownerIndex[uint(_owner)]; - - // make sure they're an owner - if (ownerIndex == 0) return false; - - // determine the bit to set for this owner. - uint ownerIndexBit = 2**ownerIndex; - return !(pending.ownersDone & ownerIndexBit == 0); - } - - // constructor - stores initial daily limit and records the present day's index. - function initDaylimit(uint _limit) only_uninitialized { - m_dailyLimit = _limit; - m_lastDay = today(); - } - // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today. - function setDailyLimit(uint _newLimit) onlymanyowners(sha3(msg.data)) external { - m_dailyLimit = _newLimit; - } - // resets the amount already spent today. needs many of the owners to confirm. - function resetSpentToday() onlymanyowners(sha3(msg.data)) external { - m_spentToday = 0; - } - - // throw unless the contract is not yet initialized. - modifier only_uninitialized { if (m_numOwners > 0) throw; _; } - - // constructor - just pass on the owner array to the multiowned and - // the limit to daylimit - function initWallet(address[] _owners, uint _required, uint _daylimit) only_uninitialized { - initDaylimit(_daylimit); - initMultiowned(_owners, _required); - } - - // kills the contract sending everything to `_to`. - function kill(address _to) onlymanyowners(sha3(msg.data)) external { - suicide(_to); - } - - // Outside-visible transact entry point. Executes transaction immediately if below daily spend limit. - // If not, goes into multisig process. We provide a hash on return to allow the sender to provide - // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value - // and _data arguments). They still get the option of using them if they want, anyways. - function execute(address _to, uint _value, bytes _data) external onlyowner returns (bytes32 o_hash) { - // first, take the opportunity to check that we're under the daily limit. - if ((_data.length == 0 && underLimit(_value)) || m_required == 1) { - // yes - just execute the call. - address created; - if (_to == 0) { - created = create(_value, _data); - } else { - if (!_to.call.value(_value)(_data)) - throw; - } - SingleTransact(msg.sender, _value, _to, _data, created); - } else { - // determine our operation hash. - o_hash = sha3(msg.data, block.number); - // store if it's new - if (m_txs[o_hash].to == 0 && m_txs[o_hash].value == 0 && m_txs[o_hash].data.length == 0) { - m_txs[o_hash].to = _to; - m_txs[o_hash].value = _value; - m_txs[o_hash].data = _data; - } - if (!confirm(o_hash)) { - ConfirmationNeeded(o_hash, msg.sender, _value, _to, _data); - } - } - } - - function create(uint _value, bytes _code) internal returns (address o_addr) { - assembly { - o_addr := create(_value, add(_code, 0x20), mload(_code)) - jumpi(invalidJumpLabel, iszero(extcodesize(o_addr))) - } - } - - // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order - // to determine the body of the transaction from the hash provided. - function confirm(bytes32 _h) onlymanyowners(_h) returns (bool o_success) { - if (m_txs[_h].to != 0 || m_txs[_h].value != 0 || m_txs[_h].data.length != 0) { - address created; - if (m_txs[_h].to == 0) { - created = create(m_txs[_h].value, m_txs[_h].data); - } else { - if (!m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data)) - throw; - } - - MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data, created); - delete m_txs[_h]; - return true; - } - } - - // INTERNAL METHODS - - function confirmAndCheck(bytes32 _operation) internal returns (bool) { - // determine what index the present sender is: - uint ownerIndex = m_ownerIndex[uint(msg.sender)]; - // make sure they're an owner - if (ownerIndex == 0) return; - - var pending = m_pending[_operation]; - // if we're not yet working on this operation, switch over and reset the confirmation status. - if (pending.yetNeeded == 0) { - // reset count of confirmations needed. - pending.yetNeeded = m_required; - // reset which owners have confirmed (none) - set our bitmap to 0. - pending.ownersDone = 0; - pending.index = m_pendingIndex.length++; - m_pendingIndex[pending.index] = _operation; - } - // determine the bit to set for this owner. - uint ownerIndexBit = 2**ownerIndex; - // make sure we (the message sender) haven't confirmed this operation previously. - if (pending.ownersDone & ownerIndexBit == 0) { - Confirmation(msg.sender, _operation); - // ok - check if count is enough to go ahead. - if (pending.yetNeeded <= 1) { - // enough confirmations: reset and run interior. - delete m_pendingIndex[m_pending[_operation].index]; - delete m_pending[_operation]; - return true; - } - else - { - // not enough: record that this owner in particular confirmed. - pending.yetNeeded--; - pending.ownersDone |= ownerIndexBit; - } - } - } - - function reorganizeOwners() private { - uint free = 1; - while (free < m_numOwners) - { - while (free < m_numOwners && m_owners[free] != 0) free++; - while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--; - if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0) - { - m_owners[free] = m_owners[m_numOwners]; - m_ownerIndex[m_owners[free]] = free; - m_owners[m_numOwners] = 0; - } - } - } - - // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and - // returns true. otherwise just returns false. - function underLimit(uint _value) internal onlyowner returns (bool) { - // reset the spend limit if we're on a different day to last time. - if (today() > m_lastDay) { - m_spentToday = 0; - m_lastDay = today(); - } - // check to see if there's enough left - if so, subtract and return true. - // overflow protection // dailyLimit check - if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) { - m_spentToday += _value; - return true; - } - return false; - } - - // determines today's index. - function today() private constant returns (uint) { return now / 1 days; } - - function clearPending() internal { - uint length = m_pendingIndex.length; - - for (uint i = 0; i < length; ++i) { - delete m_txs[m_pendingIndex[i]]; - - if (m_pendingIndex[i] != 0) - delete m_pending[m_pendingIndex[i]]; - } - - delete m_pendingIndex; - } - - // FIELDS - address constant _walletLibrary = 0xcafecafecafecafecafecafecafecafecafecafe; - - // the number of owners that must confirm the same operation before it is run. - uint public m_required; - // pointer used to find a free slot in m_owners - uint public m_numOwners; - - uint public m_dailyLimit; - uint public m_spentToday; - uint public m_lastDay; - - // list of owners - uint[256] m_owners; - - uint constant c_maxOwners = 250; - // index on the list of owners to allow reverse lookup - mapping(uint => uint) m_ownerIndex; - // the ongoing operations. - mapping(bytes32 => PendingState) m_pending; - bytes32[] m_pendingIndex; - - // pending transactions we have at present. - mapping (bytes32 => Transaction) m_txs; -} - -contract Wallet is WalletEvents { - - // WALLET CONSTRUCTOR - // calls the `initWallet` method of the Library in this context - function Wallet(address[] _owners, uint _required, uint _daylimit) { - // Signature of the Wallet Library's init function - bytes4 sig = bytes4(sha3("initWallet(address[],uint256,uint256)")); - address target = _walletLibrary; - - // Compute the size of the call data : arrays has 2 - // 32bytes for offset and length, plus 32bytes per element ; - // plus 2 32bytes for each uint - uint argarraysize = (2 + _owners.length); - uint argsize = (2 + argarraysize) * 32; - - assembly { - // Add the signature first to memory - mstore(0x0, sig) - // Add the call data, which is at the end of the - // code - codecopy(0x4, sub(codesize, argsize), argsize) - // Delegate call to the library - delegatecall(sub(gas, 10000), target, 0x0, add(argsize, 0x4), 0x0, 0x0) - } - } - - // METHODS - - // gets called when no other function matches - function() payable { - // just being sent some cash? - if (msg.value > 0) - Deposit(msg.sender, msg.value); - else if (msg.data.length > 0) - _walletLibrary.delegatecall(msg.data); - } - - // Gets an owner by 0-indexed position (using numOwners as the count) - function getOwner(uint ownerIndex) constant returns (address) { - return address(m_owners[ownerIndex + 1]); - } - - // As return statement unavailable in fallback, explicit the method here - - function hasConfirmed(bytes32 _operation, address _owner) external constant returns (bool) { - return _walletLibrary.delegatecall(msg.data); - } - - function isOwner(address _addr) constant returns (bool) { - return _walletLibrary.delegatecall(msg.data); - } - - // FIELDS - address constant _walletLibrary = 0xcafecafecafecafecafecafecafecafecafecafe; - - // the number of owners that must confirm the same operation before it is run. - uint public m_required; - // pointer used to find a free slot in m_owners - uint public m_numOwners; - - uint public m_dailyLimit; - uint public m_spentToday; - uint public m_lastDay; - - // list of owners - uint[256] m_owners; -} diff --git a/js/packages/shared/contracts/snippets/human-standard-token.sol b/js/packages/shared/contracts/snippets/human-standard-token.sol deleted file mode 100644 index db05bbc7d..000000000 --- a/js/packages/shared/contracts/snippets/human-standard-token.sol +++ /dev/null @@ -1,60 +0,0 @@ -/* -This Token Contract implements the standard token functionality (https://github.com/ethereum/EIPs/issues/20) as well as the following OPTIONAL extras intended for use by humans. - -In other words. This is intended for deployment in something like a Token Factory or Mist wallet, and then used by humans. -Imagine coins, currencies, shares, voting weight, etc. -Machine-based, rapid creation of many tokens would not necessarily need these extra features or will be minted in other manners. - -1) Initial Finite Supply (upon creation one specifies how much is minted). -2) In the absence of a token registry: Optional Decimal, Symbol & Name. -3) Optional approveAndCall() functionality to notify a contract if an approval() has occurred. - -.*/ - -import "StandardToken.sol"; - -contract HumanStandardToken is StandardToken { - - function () { - //if ether is sent to this address, send it back. - throw; - } - - /* Public variables of the token */ - - /* - NOTE: - The following variables are OPTIONAL vanities. One does not have to include them. - They allow one to customise the token contract & in no way influences the core functionality. - Some wallets/interfaces might not even bother to look at this information. - */ - string public name; //fancy name: eg Simon Bucks - uint8 public decimals; //How many decimals to show. ie. There could 1000 base units with 3 decimals. Meaning 0.980 SBX = 980 base units. It's like comparing 1 wei to 1 ether. - string public symbol; //An identifier: eg SBX - string public version = 'H0.1'; //human 0.1 standard. Just an arbitrary versioning scheme. - - function HumanStandardToken( - uint256 _initialAmount, - string _tokenName, - uint8 _decimalUnits, - string _tokenSymbol - ) { - balances[msg.sender] = _initialAmount; // Give the creator all initial tokens - totalSupply = _initialAmount; // Update total supply - name = _tokenName; // Set the name for display purposes - decimals = _decimalUnits; // Amount of decimals for display purposes - symbol = _tokenSymbol; // Set the symbol for display purposes - } - - /* Approves and then calls the receiving contract */ - function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) { - allowed[msg.sender][_spender] = _value; - Approval(msg.sender, _spender, _value); - - //call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this. - //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData) - //it is assumed that when does this that the call *should* succeed, otherwise one would use vanilla approve instead. - if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { throw; } - return true; - } -} diff --git a/js/packages/shared/contracts/snippets/standard-token.sol b/js/packages/shared/contracts/snippets/standard-token.sol deleted file mode 100644 index 3d91e5510..000000000 --- a/js/packages/shared/contracts/snippets/standard-token.sol +++ /dev/null @@ -1,55 +0,0 @@ -/* -You should inherit from StandardToken or, for a token like you would want to -deploy in something like Mist, see HumanStandardToken.sol. -(This implements ONLY the standard functions and NOTHING else. -If you deploy this, you won't have anything useful.) - -Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20 -.*/ - -import "Token.sol"; - -contract StandardToken is Token { - - function transfer(address _to, uint256 _value) returns (bool success) { - //Default assumes totalSupply can't be over max (2^256 - 1). - //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap. - //Replace the if with this one instead. - //if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) { - if (balances[msg.sender] >= _value && _value > 0) { - balances[msg.sender] -= _value; - balances[_to] += _value; - Transfer(msg.sender, _to, _value); - return true; - } else { return false; } - } - - function transferFrom(address _from, address _to, uint256 _value) returns (bool success) { - //same as above. Replace this line with the following if you want to protect against wrapping uints. - //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) { - if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) { - balances[_to] += _value; - balances[_from] -= _value; - allowed[_from][msg.sender] -= _value; - Transfer(_from, _to, _value); - return true; - } else { return false; } - } - - function balanceOf(address _owner) constant returns (uint256 balance) { - return balances[_owner]; - } - - function approve(address _spender, uint256 _value) returns (bool success) { - allowed[msg.sender][_spender] = _value; - Approval(msg.sender, _spender, _value); - return true; - } - - function allowance(address _owner, address _spender) constant returns (uint256 remaining) { - return allowed[_owner][_spender]; - } - - mapping (address => uint256) balances; - mapping (address => mapping (address => uint256)) allowed; -} diff --git a/js/packages/shared/contracts/snippets/token.sol b/js/packages/shared/contracts/snippets/token.sol deleted file mode 100644 index d54c5c424..000000000 --- a/js/packages/shared/contracts/snippets/token.sol +++ /dev/null @@ -1,47 +0,0 @@ -// Abstract contract for the full ERC 20 Token standard -// https://github.com/ethereum/EIPs/issues/20 - -contract Token { - /* This is a slight change to the ERC20 base standard. - function totalSupply() constant returns (uint256 supply); - is replaced with: - uint256 public totalSupply; - This automatically creates a getter function for the totalSupply. - This is moved to the base contract since public getter functions are not - currently recognised as an implementation of the matching abstract - function by the compiler. - */ - /// total amount of tokens - uint256 public totalSupply; - - /// @param _owner The address from which the balance will be retrieved - /// @return The balance - function balanceOf(address _owner) constant returns (uint256 balance); - - /// @notice send `_value` token to `_to` from `msg.sender` - /// @param _to The address of the recipient - /// @param _value The amount of token to be transferred - /// @return Whether the transfer was successful or not - function transfer(address _to, uint256 _value) returns (bool success); - - /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from` - /// @param _from The address of the sender - /// @param _to The address of the recipient - /// @param _value The amount of token to be transferred - /// @return Whether the transfer was successful or not - function transferFrom(address _from, address _to, uint256 _value) returns (bool success); - - /// @notice `msg.sender` approves `_addr` to spend `_value` tokens - /// @param _spender The address of the account able to transfer the tokens - /// @param _value The amount of wei to be approved for transfer - /// @return Whether the approval was successful or not - function approve(address _spender, uint256 _value) returns (bool success); - - /// @param _owner The address of the account owning tokens - /// @param _spender The address of the account able to transfer the tokens - /// @return Amount of remaining tokens allowed to spent - function allowance(address _owner, address _spender) constant returns (uint256 remaining); - - event Transfer(address indexed _from, address indexed _to, uint256 _value); - event Approval(address indexed _owner, address indexed _spender, uint256 _value); -} diff --git a/js/packages/shared/contracts/snippets/wallet.sol b/js/packages/shared/contracts/snippets/wallet.sol deleted file mode 100644 index a8f1ba938..000000000 --- a/js/packages/shared/contracts/snippets/wallet.sol +++ /dev/null @@ -1,403 +0,0 @@ -//sol Wallet -// Multi-sig, daily-limited account proxy/wallet. -// @authors: -// Gav Wood -// inheritable "property" contract that enables methods to be protected by requiring the acquiescence of either a -// single, or, crucially, each of a number of, designated owners. -// usage: -// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by -// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the -// interior is executed. - -pragma solidity ^0.4.9; - -contract multiowned { - - // TYPES - - // struct for the status of a pending operation. - struct PendingState { - uint yetNeeded; - uint ownersDone; - uint index; - } - - // EVENTS - - // this contract only has six types of events: it can accept a confirmation, in which case - // we record owner and operation (hash) alongside it. - event Confirmation(address owner, bytes32 operation); - event Revoke(address owner, bytes32 operation); - // some others are in the case of an owner changing. - event OwnerChanged(address oldOwner, address newOwner); - event OwnerAdded(address newOwner); - event OwnerRemoved(address oldOwner); - // the last one is emitted if the required signatures change - event RequirementChanged(uint newRequirement); - - // MODIFIERS - - // simple single-sig function modifier. - modifier onlyowner { - if (isOwner(msg.sender)) - _; - } - // multi-sig function modifier: the operation must have an intrinsic hash in order - // that later attempts can be realised as the same underlying operation and - // thus count as confirmations. - modifier onlymanyowners(bytes32 _operation) { - if (confirmAndCheck(_operation)) - _; - } - - // METHODS - - // constructor is given number of sigs required to do protected "onlymanyowners" transactions - // as well as the selection of addresses capable of confirming them. - function multiowned(address[] _owners, uint _required) { - m_numOwners = _owners.length + 1; - m_owners[1] = uint(msg.sender); - m_ownerIndex[uint(msg.sender)] = 1; - for (uint i = 0; i < _owners.length; ++i) - { - m_owners[2 + i] = uint(_owners[i]); - m_ownerIndex[uint(_owners[i])] = 2 + i; - } - m_required = _required; - } - - // Revokes a prior confirmation of the given operation - function revoke(bytes32 _operation) external { - uint ownerIndex = m_ownerIndex[uint(msg.sender)]; - // make sure they're an owner - if (ownerIndex == 0) return; - uint ownerIndexBit = 2**ownerIndex; - var pending = m_pending[_operation]; - if (pending.ownersDone & ownerIndexBit > 0) { - pending.yetNeeded++; - pending.ownersDone -= ownerIndexBit; - Revoke(msg.sender, _operation); - } - } - - // Replaces an owner `_from` with another `_to`. - function changeOwner(address _from, address _to) onlymanyowners(sha3(msg.data)) external { - if (isOwner(_to)) return; - uint ownerIndex = m_ownerIndex[uint(_from)]; - if (ownerIndex == 0) return; - - clearPending(); - m_owners[ownerIndex] = uint(_to); - m_ownerIndex[uint(_from)] = 0; - m_ownerIndex[uint(_to)] = ownerIndex; - OwnerChanged(_from, _to); - } - - function addOwner(address _owner) onlymanyowners(sha3(msg.data)) external { - if (isOwner(_owner)) return; - - clearPending(); - if (m_numOwners >= c_maxOwners) - reorganizeOwners(); - if (m_numOwners >= c_maxOwners) - return; - m_numOwners++; - m_owners[m_numOwners] = uint(_owner); - m_ownerIndex[uint(_owner)] = m_numOwners; - OwnerAdded(_owner); - } - - function removeOwner(address _owner) onlymanyowners(sha3(msg.data)) external { - uint ownerIndex = m_ownerIndex[uint(_owner)]; - if (ownerIndex == 0) return; - if (m_required > m_numOwners - 1) return; - - m_owners[ownerIndex] = 0; - m_ownerIndex[uint(_owner)] = 0; - clearPending(); - reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot - OwnerRemoved(_owner); - } - - function changeRequirement(uint _newRequired) onlymanyowners(sha3(msg.data)) external { - if (_newRequired > m_numOwners) return; - m_required = _newRequired; - clearPending(); - RequirementChanged(_newRequired); - } - - // Gets an owner by 0-indexed position (using numOwners as the count) - function getOwner(uint ownerIndex) external constant returns (address) { - return address(m_owners[ownerIndex + 1]); - } - - function isOwner(address _addr) constant returns (bool) { - return m_ownerIndex[uint(_addr)] > 0; - } - - function hasConfirmed(bytes32 _operation, address _owner) constant returns (bool) { - var pending = m_pending[_operation]; - uint ownerIndex = m_ownerIndex[uint(_owner)]; - - // make sure they're an owner - if (ownerIndex == 0) return false; - - // determine the bit to set for this owner. - uint ownerIndexBit = 2**ownerIndex; - return !(pending.ownersDone & ownerIndexBit == 0); - } - - // INTERNAL METHODS - - function confirmAndCheck(bytes32 _operation) internal returns (bool) { - // determine what index the present sender is: - uint ownerIndex = m_ownerIndex[uint(msg.sender)]; - // make sure they're an owner - if (ownerIndex == 0) return; - - var pending = m_pending[_operation]; - // if we're not yet working on this operation, switch over and reset the confirmation status. - if (pending.yetNeeded == 0) { - // reset count of confirmations needed. - pending.yetNeeded = m_required; - // reset which owners have confirmed (none) - set our bitmap to 0. - pending.ownersDone = 0; - pending.index = m_pendingIndex.length++; - m_pendingIndex[pending.index] = _operation; - } - // determine the bit to set for this owner. - uint ownerIndexBit = 2**ownerIndex; - // make sure we (the message sender) haven't confirmed this operation previously. - if (pending.ownersDone & ownerIndexBit == 0) { - Confirmation(msg.sender, _operation); - // ok - check if count is enough to go ahead. - if (pending.yetNeeded <= 1) { - // enough confirmations: reset and run interior. - delete m_pendingIndex[m_pending[_operation].index]; - delete m_pending[_operation]; - return true; - } - else - { - // not enough: record that this owner in particular confirmed. - pending.yetNeeded--; - pending.ownersDone |= ownerIndexBit; - } - } - } - - function reorganizeOwners() private { - uint free = 1; - while (free < m_numOwners) - { - while (free < m_numOwners && m_owners[free] != 0) free++; - while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--; - if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0) - { - m_owners[free] = m_owners[m_numOwners]; - m_ownerIndex[m_owners[free]] = free; - m_owners[m_numOwners] = 0; - } - } - } - - function clearPending() internal { - uint length = m_pendingIndex.length; - for (uint i = 0; i < length; ++i) - if (m_pendingIndex[i] != 0) - delete m_pending[m_pendingIndex[i]]; - delete m_pendingIndex; - } - - // FIELDS - - // the number of owners that must confirm the same operation before it is run. - uint public m_required; - // pointer used to find a free slot in m_owners - uint public m_numOwners; - - // list of owners - uint[256] m_owners; - uint constant c_maxOwners = 250; - // index on the list of owners to allow reverse lookup - mapping(uint => uint) m_ownerIndex; - // the ongoing operations. - mapping(bytes32 => PendingState) m_pending; - bytes32[] m_pendingIndex; -} - -// inheritable "property" contract that enables methods to be protected by placing a linear limit (specifiable) -// on a particular resource per calendar day. is multiowned to allow the limit to be altered. resource that method -// uses is specified in the modifier. -contract daylimit is multiowned { - - // METHODS - - // constructor - stores initial daily limit and records the present day's index. - function daylimit(uint _limit) { - m_dailyLimit = _limit; - m_lastDay = today(); - } - // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today. - function setDailyLimit(uint _newLimit) onlymanyowners(sha3(msg.data)) external { - m_dailyLimit = _newLimit; - } - // resets the amount already spent today. needs many of the owners to confirm. - function resetSpentToday() onlymanyowners(sha3(msg.data)) external { - m_spentToday = 0; - } - - // INTERNAL METHODS - - // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and - // returns true. otherwise just returns false. - function underLimit(uint _value) internal onlyowner returns (bool) { - // reset the spend limit if we're on a different day to last time. - if (today() > m_lastDay) { - m_spentToday = 0; - m_lastDay = today(); - } - // check to see if there's enough left - if so, subtract and return true. - // overflow protection // dailyLimit check - if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) { - m_spentToday += _value; - return true; - } - return false; - } - // determines today's index. - function today() private constant returns (uint) { return now / 1 days; } - - // FIELDS - - uint public m_dailyLimit; - uint public m_spentToday; - uint public m_lastDay; -} - -// interface contract for multisig proxy contracts; see below for docs. -contract multisig { - - // EVENTS - - // logged events: - // Funds has arrived into the wallet (record how much). - event Deposit(address _from, uint value); - // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going). - event SingleTransact(address owner, uint value, address to, bytes data, address created); - // Multi-sig transaction going out of the wallet (record who signed for it last, the operation hash, how much, and to whom it's going). - event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data, address created); - // Confirmation still needed for a transaction. - event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data); - - // FUNCTIONS - - // TODO: document - function execute(address _to, uint _value, bytes _data) external returns (bytes32 o_hash); - function confirm(bytes32 _h) returns (bool o_success); -} - -// usage: -// bytes32 h = Wallet(w).from(oneOwner).execute(to, value, data); -// Wallet(w).from(anotherOwner).confirm(h); -contract Wallet is multisig, multiowned, daylimit { - - // TYPES - - // Transaction structure to remember details of transaction lest it need be saved for a later call. - struct Transaction { - address to; - uint value; - bytes data; - } - - // METHODS - - // constructor - just pass on the owner array to the multiowned and - // the limit to daylimit - function Wallet(address[] _owners, uint _required, uint _daylimit) - multiowned(_owners, _required) daylimit(_daylimit) { - } - - // kills the contract sending everything to `_to`. - function kill(address _to) onlymanyowners(sha3(msg.data)) external { - suicide(_to); - } - - // gets called when no other function matches - function() payable { - // just being sent some cash? - if (msg.value > 0) - Deposit(msg.sender, msg.value); - } - - // Outside-visible transact entry point. Executes transaction immediately if below daily spend limit. - // If not, goes into multisig process. We provide a hash on return to allow the sender to provide - // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value - // and _data arguments). They still get the option of using them if they want, anyways. - function execute(address _to, uint _value, bytes _data) external onlyowner returns (bytes32 o_hash) { - // first, take the opportunity to check that we're under the daily limit. - if ((_data.length == 0 && underLimit(_value)) || m_required == 1) { - // yes - just execute the call. - address created; - if (_to == 0) { - created = create(_value, _data); - } else { - if (!_to.call.value(_value)(_data)) - throw; - } - SingleTransact(msg.sender, _value, _to, _data, created); - } else { - // determine our operation hash. - o_hash = sha3(msg.data, block.number); - // store if it's new - if (m_txs[o_hash].to == 0 && m_txs[o_hash].value == 0 && m_txs[o_hash].data.length == 0) { - m_txs[o_hash].to = _to; - m_txs[o_hash].value = _value; - m_txs[o_hash].data = _data; - } - if (!confirm(o_hash)) { - ConfirmationNeeded(o_hash, msg.sender, _value, _to, _data); - } - } - } - - function create(uint _value, bytes _code) internal returns (address o_addr) { - assembly { - o_addr := create(_value, add(_code, 0x20), mload(_code)) - jumpi(invalidJumpLabel, iszero(extcodesize(o_addr))) - } - } - - // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order - // to determine the body of the transaction from the hash provided. - function confirm(bytes32 _h) onlymanyowners(_h) returns (bool o_success) { - if (m_txs[_h].to != 0 || m_txs[_h].value != 0 || m_txs[_h].data.length != 0) { - address created; - if (m_txs[_h].to == 0) { - created = create(m_txs[_h].value, m_txs[_h].data); - } else { - if (!m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data)) - throw; - } - - MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data, created); - delete m_txs[_h]; - return true; - } - } - - // INTERNAL METHODS - - function clearPending() internal { - uint length = m_pendingIndex.length; - for (uint i = 0; i < length; ++i) - delete m_txs[m_pendingIndex[i]]; - super.clearPending(); - } - - // FIELDS - - // pending transactions we have at present. - mapping (bytes32 => Transaction) m_txs; -} diff --git a/js/packages/shared/contracts/tokenreg.js b/js/packages/shared/contracts/tokenreg.js deleted file mode 100644 index 2bbf639bf..000000000 --- a/js/packages/shared/contracts/tokenreg.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export default class TokenReg { - constructor (api, registry) { - this._api = api; - this._registry = registry; - - this.getInstance(); - } - - getContract () { - return this._registry.getContract('tokenreg'); - } - - getInstance () { - return this.getContract().then((contract) => contract.instance); - } - - tokenCount () { - return this.getInstance().then((instance) => { - return instance.tokenCount.call(); - }); - } - - token (index) { - return this.getInstance().then((instance) => { - return instance.token.call({}, [index]); - }); - } -} diff --git a/js/packages/shared/contracts/verification.js b/js/packages/shared/contracts/verification.js deleted file mode 100644 index 8101565db..000000000 --- a/js/packages/shared/contracts/verification.js +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import subscribeToEvents from '../util/subscribe-to-events'; - -export const checkIfVerified = (contract, account) => { - return contract.instance.certified.call({}, [account]); -}; - -export const findLastRequested = (contract, account) => { - let subId = null; - let resolved = false; - - return new Promise((resolve, reject) => { - contract - .subscribe('Requested', { - fromBlock: 0, - toBlock: 'pending', - limit: 1, - topics: [account] - }, (err, logs) => { - if (err) { - return reject(err); - } - - resolve(logs[0] || null); - resolved = true; - - if (subId) { - contract.unsubscribe(subId); - } - }) - .then((_subId) => { - subId = _subId; - - if (resolved) { - contract.unsubscribe(subId); - } - }); - }); -}; - -const blockNumber = (api) => { - return new Promise((resolve, reject) => { - api.subscribe('eth_blockNumber', (err, block) => { - if (err) { - return reject(err); - } - resolve(block); - }) - .then((subscription) => { - api.unsubscribe(subscription); - }) - .catch(reject); - }); -}; - -export const awaitPuzzle = (api, contract, account) => { - return blockNumber(api) - .then((block) => { - return new Promise((resolve, reject) => { - const subscription = subscribeToEvents(contract, ['Puzzled'], { - from: block.toNumber(), - filter: (log) => log.params.who.value === account - }); - - subscription.once('error', reject); - subscription.once('log', subscription.unsubscribe); - subscription.once('log', resolve); - subscription.once('timeout', () => { - reject(new Error('Timed out waiting for the puzzle.')); - }); - }); - }); -}; diff --git a/js/packages/shared/environment/empty.js b/js/packages/shared/environment/empty.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/js/packages/shared/environment/index.js b/js/packages/shared/environment/index.js deleted file mode 100644 index 8eaa6519d..000000000 --- a/js/packages/shared/environment/index.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -// import './integration-tests'; -// import './perf-debug'; - -import './tests'; - -export {}; diff --git a/js/packages/shared/environment/integration-tests/fake-backend.js b/js/packages/shared/environment/integration-tests/fake-backend.js deleted file mode 100644 index dcb325130..000000000 --- a/js/packages/shared/environment/integration-tests/fake-backend.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon/pkg/sinon'; -import mockedResponses from '../../../test/mocked-responses.json'; - -class FakeRpcServer { - constructor () { - this.xhr = null; - this.middlewares = []; - } - - start () { - this.xhr = sinon.useFakeXMLHttpRequest(); - this.xhr.onCreate = this.handleRequest; - return () => this.xhr.restore(); - } - - simpleRpc (rpcMethod, result) { - this.rpc(rpcMethod, req => result); - } - - rpc (rpcMethod, middleware) { - this.middlewares.unshift({ - rpcMethod, middleware - }); - } - - handleRequest = req => { - setTimeout(() => { - req.body = JSON.parse(req.requestBody); - const middlewaresForMethod = this.middlewares - .filter(m => m.rpcMethod === req.body.method); - - const response = middlewaresForMethod - .map(m => m.middleware) - .reduce((replied, middleware) => { - if (replied) { - return replied; - } - - return middleware(req); - }, false); - - if (!response) { - return req.respond(405, { - 'Content-Type': 'application/json' - }, JSON.stringify({ - jsonrpc: '2.0', - id: req.body.id, - result: null - })); - } - - return req.respond(200, { - 'Content-Type': 'application/json' - }, JSON.stringify({ - jsonrpc: '2.0', - id: req.body.id, - result: response - })); - }); - } -} - -const fakeRpc = new FakeRpcServer(); - -fakeRpc.start(); -mockedResponses.rpc.forEach(method => fakeRpc.simpleRpc(method.name, method.response)); - -// export fakeRpc to mock stuff in tests -window.fakeRpc = fakeRpc; diff --git a/js/packages/shared/environment/integration-tests/index.js b/js/packages/shared/environment/integration-tests/index.js deleted file mode 100644 index 0d504878e..000000000 --- a/js/packages/shared/environment/integration-tests/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import './fake-backend'; diff --git a/js/packages/shared/environment/perf-debug/index.js b/js/packages/shared/environment/perf-debug/index.js deleted file mode 100644 index d25ef1cc8..000000000 --- a/js/packages/shared/environment/perf-debug/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import './why-update'; diff --git a/js/packages/shared/environment/perf-debug/why-update.js b/js/packages/shared/environment/perf-debug/why-update.js deleted file mode 100644 index 061c6df1d..000000000 --- a/js/packages/shared/environment/perf-debug/why-update.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React from 'react'; -import { whyDidYouUpdate } from 'why-did-you-update'; - -whyDidYouUpdate(React); diff --git a/js/packages/shared/environment/tests/index.js b/js/packages/shared/environment/tests/index.js deleted file mode 100644 index ea80e6b9e..000000000 --- a/js/packages/shared/environment/tests/index.js +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import './test-utils'; diff --git a/js/packages/shared/environment/tests/test-utils.js b/js/packages/shared/environment/tests/test-utils.js deleted file mode 100644 index e18e461eb..000000000 --- a/js/packages/shared/environment/tests/test-utils.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { Component } from 'react'; - -const isProd = process.env.NODE_ENV === 'production'; - -// Component utils for integration tests hooks. -const TEST_HOOK = 'data-test'; - -Component.prototype._test = isProd ? noop : testHook; -Component.prototype._testInherit = isProd ? noop : testHookInherit; - -function noop (name) {} - -function testHookInherit (name) { - let hook = this.props[TEST_HOOK]; - - if (name) { - hook += `-${name}`; - } - return { - [TEST_HOOK]: hook - }; -} - -function testHook (name) { - let hook = this.constructor.name; - - if (name) { - hook += `-${name}`; - } - return { - [TEST_HOOK]: hook - }; -} diff --git a/js/packages/shared/mobx/hardwareStore.js b/js/packages/shared/mobx/hardwareStore.js deleted file mode 100644 index 606ab841f..000000000 --- a/js/packages/shared/mobx/hardwareStore.js +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { action, computed, observable, transaction } from 'mobx'; - -import Ledger from '@parity/ledger/index'; - -const HW_SCAN_INTERVAL = 5000; -let instance = null; - -export default class HardwareStore { - @observable isScanning = false; - @observable wallets = {}; - - constructor (api) { - this._api = api; - this._ledger = Ledger.create(api); - this._pollId = null; - - this._pollScan(); - } - - isConnected (address) { - return computed(() => !!this.wallets[address]).get(); - } - - @action setScanning = (isScanning) => { - this.isScanning = isScanning; - } - - @action setWallets = (wallets) => { - this.wallets = wallets; - } - - _pollScan = () => { - this._pollId = setTimeout(() => { - this.scan().then(this._pollScan); - }, HW_SCAN_INTERVAL); - } - - scanLedger () { - if (!this._ledger.isSupported) { - return Promise.resolve({}); - } - - return this._ledger - .scan() - .then((wallets) => { - console.log('HardwareStore::scanLedger', wallets); - - return wallets.reduce((hwInfo, wallet) => { - wallet.manufacturer = 'Ledger'; - wallet.name = 'Nano S'; - wallet.via = 'ledger'; - - hwInfo[wallet.address] = wallet; - - return hwInfo; - }, {}); - }) - .catch((error) => { - console.warn('HardwareStore::scanLedger', error); - - return {}; - }); - } - - scanParity () { - if (!this._api) { - return Promise.resolve({}); - } - - return this._api.parity - .hardwareAccountsInfo() - .then((hwInfo) => { - Object - .keys(hwInfo) - .forEach((address) => { - const info = hwInfo[address]; - - info.address = address; - info.via = 'parity'; - }); - - return hwInfo; - }) - .catch((error) => { - console.warn('HardwareStore::scanParity', error); - - return {}; - }); - } - - scan () { - this.setScanning(true); - - // NOTE: Depending on how the hardware is configured and how the local env setup - // is done, different results will be retrieved via Parity vs. the browser APIs - // (latter is Chrome-only, needs the browser app enabled on a Ledger, former is - // not intended as a network call, i.e. hw wallet is with the user) - return Promise - .all([ - this.scanParity(), - this.scanLedger() - ]) - .then(([hwAccounts, ledgerAccounts]) => { - transaction(() => { - this.setWallets(Object.assign({}, hwAccounts, ledgerAccounts)); - this.setScanning(false); - }); - }); - } - - createAccountInfo (entry, original = {}) { - const { address, manufacturer, name } = entry; - - return Promise - .all([ - original.name - ? Promise.resolve(true) - : this._api.parity.setAccountName(address, name), - this._api.parity.setAccountMeta(address, Object.assign({ - description: `${manufacturer} ${name}`, - hardware: { - manufacturer - }, - tags: ['hardware'], - timestamp: Date.now() - }, original.meta || {})) - ]) - .catch((error) => { - console.warn('HardwareStore::createEntry', error); - throw error; - }); - } - - signLedger (transaction) { - return this._ledger.signTransaction(transaction); - } - - static get (api) { - if (!instance) { - instance = new HardwareStore(api); - } - - return instance; - } -} - -export { - HW_SCAN_INTERVAL -}; diff --git a/js/packages/shared/mobx/hardwareStore.spec.js b/js/packages/shared/mobx/hardwareStore.spec.js deleted file mode 100644 index 784fc3f10..000000000 --- a/js/packages/shared/mobx/hardwareStore.spec.js +++ /dev/null @@ -1,253 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import HardwareStore, { HW_SCAN_INTERVAL } from './hardwareStore'; - -const ADDRESS = '0x1234567890123456789012345678901234567890'; -const WALLET = { - address: ADDRESS, - name: 'testing' -}; - -let api; -let clock; -let ledger; -let store; - -function createApi () { - api = { - parity: { - hardwareAccountsInfo: sinon.stub().resolves({ ADDRESS: WALLET }), - setAccountMeta: sinon.stub().resolves(true), - setAccountName: sinon.stub().resolves(true) - } - }; - - return api; -} - -function createLedger () { - ledger = { - isSupported: true, - getAppConfiguration: sinon.stub().resolves(), - scan: sinon.stub().resolves(WALLET), - signTransaction: sinon.stub().resolves() - }; - - return ledger; -} - -function create () { - clock = sinon.useFakeTimers(); - store = new HardwareStore(createApi()); - store._ledger = createLedger(); - - return store; -} - -function teardown () { - clock.restore(); -} - -describe('mobx/HardwareStore', () => { - beforeEach(() => { - create(); - }); - - afterEach(() => { - teardown(); - }); - - describe('@computed', () => { - describe('isConnected', () => { - beforeEach(() => { - store.setWallets({ [ADDRESS]: WALLET }); - }); - - it('returns true for available', () => { - expect(store.isConnected(ADDRESS)).to.be.true; - }); - - it('returns false for non-available', () => { - expect(store.isConnected('nothing')).to.be.false; - }); - }); - }); - - describe('background polling', () => { - let pollId; - - beforeEach(() => { - pollId = store._pollId; - sinon.spy(store, 'scan'); - }); - - afterEach(() => { - store.scan.restore(); - }); - - it('starts the polling at creation', () => { - expect(pollId).not.to.be.null; - }); - - it('scans when timer elapsed', () => { - expect(store.scan).not.to.have.been.called; - clock.tick(HW_SCAN_INTERVAL + 1); - expect(store.scan).to.have.been.called; - }); - }); - - describe('@action', () => { - describe('setScanning', () => { - it('sets the flag', () => { - store.setScanning('testScanning'); - expect(store.isScanning).to.equal('testScanning'); - }); - }); - - describe('setWallets', () => { - it('sets the wallets', () => { - store.setWallets('testWallet'); - expect(store.wallets).to.equal('testWallet'); - }); - }); - }); - - describe('operations', () => { - describe('createAccountInfo', () => { - describe('when not existing', () => { - beforeEach(() => { - return store.createAccountInfo({ - address: 'testAddr', - manufacturer: 'testMfg', - name: 'testName' - }); - }); - - it('calls into parity_setAccountName', () => { - expect(api.parity.setAccountName).to.have.been.calledWith('testAddr', 'testName'); - }); - - it('calls into parity_setAccountMeta', () => { - expect(api.parity.setAccountMeta).to.have.been.calledWith('testAddr', sinon.match({ - description: 'testMfg testName', - hardware: { - manufacturer: 'testMfg' - }, - tags: ['hardware'] - })); - }); - }); - - describe('when already exists', () => { - beforeEach(() => { - return store.createAccountInfo({ - address: 'testAddr', - manufacturer: 'testMfg', - name: 'testName' - }, { - name: 'originalName', - meta: { - description: 'originalDescription', - tags: ['tagA', 'tagB'] - } - }); - }); - - it('does not call into parity_setAccountName', () => { - expect(api.parity.setAccountName).not.to.have.been.called; - }); - - it('calls into parity_setAccountMeta', () => { - expect(api.parity.setAccountMeta).to.have.been.calledWith('testAddr', sinon.match({ - description: 'originalDescription', - hardware: { - manufacturer: 'testMfg' - }, - tags: ['tagA', 'tagB'] - })); - }); - }); - }); - - describe('scanLedger', () => { - beforeEach(() => { - return store.scanLedger(); - }); - - it('calls scan on the Ledger APIs', () => { - expect(ledger.scan).to.have.been.called; - }); - }); - - describe('scanParity', () => { - beforeEach(() => { - return store.scanParity(); - }); - - it('calls parity_hardwareAccountsInfo', () => { - expect(api.parity.hardwareAccountsInfo).to.have.been.called; - }); - }); - - describe('scan', () => { - beforeEach(() => { - sinon.spy(store, 'setScanning'); - sinon.spy(store, 'setWallets'); - sinon.spy(store, 'scanLedger'); - sinon.spy(store, 'scanParity'); - - return store.scan(); - }); - - afterEach(() => { - store.setScanning.restore(); - store.setWallets.restore(); - store.scanLedger.restore(); - store.scanParity.restore(); - }); - - it('calls scanLedger', () => { - expect(store.scanLedger).to.have.been.called; - }); - - it('calls scanParity', () => { - expect(store.scanParity).to.have.been.called; - }); - - it('sets and resets the scanning state', () => { - expect(store.setScanning).to.have.been.calledWith(true); - expect(store.setScanning).to.have.been.calledWith(false); - }); - - it('sets the wallets', () => { - expect(store.setWallets).to.have.been.called; - }); - }); - - describe('signLedger', () => { - beforeEach(() => { - return store.signLedger('testTx'); - }); - - it('calls signTransaction on the ledger', () => { - expect(ledger.signTransaction).to.have.been.calledWith('testTx'); - }); - }); - }); -}); diff --git a/js/packages/shared/mobx/historyStore.js b/js/packages/shared/mobx/historyStore.js deleted file mode 100644 index fd18fd931..000000000 --- a/js/packages/shared/mobx/historyStore.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { action, observable } from 'mobx'; -import localStore from 'store'; - -const LS_KEY = '_parity::history'; -const MAX_ENTRIES = 5; - -const instances = {}; - -export default class Store { - @observable history = []; - - constructor (type) { - this.historyKey = `${LS_KEY}::${type}`; - this.load(); - } - - @action add = (entry, type) => { - this.history = [{ - entry, - timestamp: Date.now(), - type - }].concat(this.history.filter((h) => h.entry !== entry)).slice(0, MAX_ENTRIES); - this.save(); - } - - @action clear = () => { - this.history = []; - this.save(); - } - - @action load = () => { - this.history = localStore.get(this.historyKey) || []; - } - - save = () => { - return localStore.set(this.historyKey, this.history); - } - - static get (type) { - if (!instances[type]) { - instances[type] = new Store(type); - } - - return instances[type]; - } -} diff --git a/js/packages/shared/mobx/historyStore.spec.js b/js/packages/shared/mobx/historyStore.spec.js deleted file mode 100644 index b791eb036..000000000 --- a/js/packages/shared/mobx/historyStore.spec.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Store from './historyStore'; - -const TEST_ENTRY_1 = 'testing 1'; -const TEST_ENTRY_2 = 'testing 2'; -const TEST_ENTRY_3 = 'testing 3'; - -let store; - -function create () { - store = Store.get('test'); - store.clear(); - - return store; -} - -describe('mobx/HistoryStore', () => { - beforeEach(() => { - create(); - }); - - describe('@action', () => { - describe('add', () => { - it('adds the url to the list (front)', () => { - store.add(TEST_ENTRY_1); - expect(store.history[0].entry).to.equal(TEST_ENTRY_1); - }); - - it('adds multiples to the list', () => { - store.add(TEST_ENTRY_1); - store.add(TEST_ENTRY_2); - - expect(store.history.length).to.equal(2); - expect(store.history[0].entry).to.equal(TEST_ENTRY_2); - expect(store.history[1].entry).to.equal(TEST_ENTRY_1); - }); - - it('does not add duplicates', () => { - store.add(TEST_ENTRY_2); - store.add(TEST_ENTRY_2); - - expect(store.history.length).to.equal(1); - expect(store.history[0].entry).to.equal(TEST_ENTRY_2); - }); - }); - - describe('clear', () => { - it('empties the list', () => { - store.add(TEST_ENTRY_3); - store.clear(); - - expect(store.history.length).to.equal(0); - }); - }); - }); -}); diff --git a/js/packages/shared/package.json b/js/packages/shared/package.json deleted file mode 100644 index 6dc0cd5ec..000000000 --- a/js/packages/shared/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@parity/shared", - "description": "Shared states and non-ui components for the Parity wallet", - "version": "0.0.0", - "main": "index.js", - "author": "Parity Team ", - "maintainers": [], - "contributors": [], - "license": "GPL-3.0", - "repository": { - "type": "git", - "url": "git+https://github.com/paritytech/parity.git" - }, - "keywords": [], - "scripts": {}, - "devDependencies": {}, - "dependencies": { - "mobx": "2.6.4", - "mobx-react": "4.0.3", - "push.js": "0.0.11", - "react-redux": "4.4.6", - "redux": "3.6.0", - "redux-actions": "1.1.0", - "redux-thunk": "2.1.0", - "scryptsy": "2.0.0", - "solc": "ngotchac/solc-js", - "yargs": "6.6.0" - }, - "peerDependencies": {} -} diff --git a/js/packages/shared/redux/actions.js b/js/packages/shared/redux/actions.js deleted file mode 100644 index 0bd782d95..000000000 --- a/js/packages/shared/redux/actions.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { newError } from '@parity/ui/Errors/actions'; - -import { openSnackbar, showSnackbar } from './providers/snackbarActions'; -import { toggleStatusRefresh } from './providers/statusActions'; -import { toggleView } from './providers/settings/actions'; - -export { - newError, - openSnackbar, - showSnackbar, - toggleStatusRefresh, - toggleView -}; diff --git a/js/packages/shared/redux/index.js b/js/packages/shared/redux/index.js deleted file mode 100644 index f0fbdff69..000000000 --- a/js/packages/shared/redux/index.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import * as actions from './actions'; -import initStore from './store'; - -export { - actions, - initStore -}; diff --git a/js/packages/shared/redux/middleware.js b/js/packages/shared/redux/middleware.js deleted file mode 100644 index 99d38cad6..000000000 --- a/js/packages/shared/redux/middleware.js +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . -import thunk from 'redux-thunk'; -import { routerMiddleware } from 'react-router-redux'; - -import ErrorsMiddleware from '@parity/ui/Errors/middleware'; - -import SettingsMiddleware from './providers/settings/middleware'; -import SignerMiddleware from './providers/signerMiddleware'; - -import CertificationsMiddleware from './providers/certifications/middleware'; -import ChainMiddleware from './providers/chainMiddleware'; -import RegistryMiddleware from './providers/registry/middleware'; - -export default function (api, browserHistory, forEmbed = false) { - const middleware = [ - new SettingsMiddleware().toMiddleware(), - new SignerMiddleware(api).toMiddleware(), - new ErrorsMiddleware().toMiddleware(), - new ChainMiddleware().toMiddleware() - ]; - - if (!forEmbed) { - middleware.push( - new CertificationsMiddleware(api).toMiddleware(), - new RegistryMiddleware(api).toMiddleware() - ); - } - - return middleware.concat( - browserHistory - ? routerMiddleware(browserHistory) - : [], - thunk - ); -} diff --git a/js/packages/shared/redux/providers/apiActions.js b/js/packages/shared/redux/providers/apiActions.js deleted file mode 100644 index 36563a210..000000000 --- a/js/packages/shared/redux/providers/apiActions.js +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export function setApi (api) { - return { - type: 'setApi', - api - }; -} diff --git a/js/packages/shared/redux/providers/apiReducer.js b/js/packages/shared/redux/providers/apiReducer.js deleted file mode 100644 index 787aee73d..000000000 --- a/js/packages/shared/redux/providers/apiReducer.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -const initialState = null; - -export default handleActions({ - setApi (state, action) { - const { api } = action; - - return api; - } -}, initialState); diff --git a/js/packages/shared/redux/providers/balances.js b/js/packages/shared/redux/providers/balances.js deleted file mode 100644 index 568e63f3f..000000000 --- a/js/packages/shared/redux/providers/balances.js +++ /dev/null @@ -1,348 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { throttle } from 'lodash'; - -import { padRight } from '@parity/api/util/format'; -import Contracts from '@parity/shared/contracts'; - -import { fetchBalances, fetchTokensBalances, queryTokensFilter } from './balancesActions'; -import { loadTokens, fetchTokens } from './tokensActions'; - -let instance = null; - -export default class Balances { - constructor (store, api) { - this._api = api; - this._store = store; - - this._tokenreg = null; - this._tokenregSID = null; - this._tokenMetaSID = null; - - this._blockNumberSID = null; - this._accountsInfoSID = null; - - // Throtthled load tokens (no more than once - // every minute) - this.loadTokens = throttle( - this._loadTokens, - 60 * 1000, - { leading: true, trailing: true } - ); - - // Throttled `_fetchBalances` function - // that gets called max once every 40s - this.longThrottledFetch = throttle( - this._fetchBalances, - 40 * 1000, - { leading: false, trailing: true } - ); - - this.shortThrottledFetch = throttle( - this._fetchBalances, - 2 * 1000, - { leading: false, trailing: true } - ); - - // Fetch all tokens every 2 minutes - this.throttledTokensFetch = throttle( - this._fetchTokens, - 2 * 60 * 1000, - { leading: false, trailing: true } - ); - - // Unsubscribe previous instance if it exists - if (instance) { - Balances.stop(); - } - } - - static get (store = {}) { - if (!instance && store) { - const { api } = store.getState(); - - return Balances.instantiate(store, api); - } - - return instance; - } - - static instantiate (store, api) { - if (!instance) { - instance = new Balances(store, api); - } - - return instance; - } - - static start () { - if (!instance) { - return Promise.reject('BalancesProvider has not been intiated yet'); - } - - const self = instance; - - // Unsubscribe from previous subscriptions - return Balances - .stop() - .then(() => self.loadTokens()) - .then(() => { - const promises = [ - self.subscribeBlockNumber(), - self.subscribeAccountsInfo() - ]; - - return Promise.all(promises); - }); - } - - static stop () { - if (!instance) { - return Promise.resolve(); - } - - const self = instance; - const promises = []; - - if (self._blockNumberSID) { - const p = self._api - .unsubscribe(self._blockNumberSID) - .then(() => { - self._blockNumberSID = null; - }); - - promises.push(p); - } - - if (self._accountsInfoSID) { - const p = self._api - .unsubscribe(self._accountsInfoSID) - .then(() => { - self._accountsInfoSID = null; - }); - - promises.push(p); - } - - // Unsubscribe without adding the promises - // to the result, since it would have to wait for a - // reconnection to resolve if the Node is disconnected - if (self._tokenreg) { - if (self._tokenregSID) { - const tokenregSID = self._tokenregSID; - - self._tokenreg - .unsubscribe(tokenregSID) - .then(() => { - if (self._tokenregSID === tokenregSID) { - self._tokenregSID = null; - } - }); - } - - if (self._tokenMetaSID) { - const tokenMetaSID = self._tokenMetaSID; - - self._tokenreg - .unsubscribe(tokenMetaSID) - .then(() => { - if (self._tokenMetaSID === tokenMetaSID) { - self._tokenMetaSID = null; - } - }); - } - } - - return Promise.all(promises); - } - - subscribeAccountsInfo () { - return this._api - .subscribe('parity_allAccountsInfo', (error, accountsInfo) => { - if (error) { - return; - } - - this.fetchAllBalances(); - }) - .then((accountsInfoSID) => { - this._accountsInfoSID = accountsInfoSID; - }) - .catch((error) => { - console.warn('_subscribeAccountsInfo', error); - }); - } - - subscribeBlockNumber () { - return this._api - .subscribe('eth_blockNumber', (error) => { - if (error) { - return console.warn('_subscribeBlockNumber', error); - } - - this._store.dispatch(queryTokensFilter()); - return this.fetchAllBalances(); - }) - .then((blockNumberSID) => { - this._blockNumberSID = blockNumberSID; - }) - .catch((error) => { - console.warn('_subscribeBlockNumber', error); - }); - } - - fetchAllBalances (options = {}) { - // If it's a network change, reload the tokens - // ( and then fetch the tokens balances ) and fetch - // the accounts balances - if (options.changedNetwork) { - this.loadTokens({ skipNotifications: true }); - this.loadTokens.flush(); - - this.fetchBalances({ - force: true, - skipNotifications: true - }); - - return; - } - - this.fetchTokensBalances(options); - this.fetchBalances(options); - } - - fetchTokensBalances (options) { - const { skipNotifications = false, force = false } = options; - - this.throttledTokensFetch(skipNotifications); - - if (force) { - this.throttledTokensFetch.flush(); - } - } - - fetchBalances (options) { - const { skipNotifications = false, force = false } = options; - const { syncing } = this._store.getState().nodeStatus; - - // If syncing, only retrieve balances once every - // few seconds - if (syncing || syncing === null) { - this.shortThrottledFetch.cancel(); - this.longThrottledFetch(skipNotifications); - - if (force) { - this.longThrottledFetch.flush(); - } - - return; - } - - this.longThrottledFetch.cancel(); - this.shortThrottledFetch(skipNotifications); - - if (force) { - this.shortThrottledFetch.flush(); - } - } - - _fetchBalances (skipNotifications = false) { - this._store.dispatch(fetchBalances(null, skipNotifications)); - } - - _fetchTokens (skipNotifications = false) { - this._store.dispatch(fetchTokensBalances(null, null, skipNotifications)); - } - - getTokenRegistry () { - return Contracts.get(this._api).tokenReg.getContract(); - } - - _loadTokens (options = {}) { - return this - .getTokenRegistry() - .then((tokenreg) => { - this._tokenreg = tokenreg; - - this._store.dispatch(loadTokens(options)); - - return this.attachToTokens(tokenreg); - }) - .catch((error) => { - console.warn('balances::loadTokens', error); - }); - } - - attachToTokens (tokenreg) { - return Promise - .all([ - this.attachToTokenMetaChange(tokenreg), - this.attachToNewToken(tokenreg) - ]); - } - - attachToNewToken (tokenreg) { - if (this._tokenregSID) { - return Promise.resolve(); - } - - return tokenreg.instance.Registered - .subscribe({ - fromBlock: 0, - toBlock: 'latest', - skipInitFetch: true - }, (error, logs) => { - if (error) { - return console.error('balances::attachToNewToken', 'failed to attach to tokenreg Registered', error.toString(), error.stack); - } - - this.handleTokensLogs(logs); - }) - .then((tokenregSID) => { - this._tokenregSID = tokenregSID; - }); - } - - attachToTokenMetaChange (tokenreg) { - if (this._tokenMetaSID) { - return Promise.resolve(); - } - - return tokenreg.instance.MetaChanged - .subscribe({ - fromBlock: 0, - toBlock: 'latest', - topics: [ null, padRight(this._api.util.asciiToHex('IMG'), 32) ], - skipInitFetch: true - }, (error, logs) => { - if (error) { - return console.error('balances::attachToTokenMetaChange', 'failed to attach to tokenreg MetaChanged', error.toString(), error.stack); - } - - this.handleTokensLogs(logs); - }) - .then((tokenMetaSID) => { - this._tokenMetaSID = tokenMetaSID; - }); - } - - handleTokensLogs (logs) { - const tokenIds = logs.map((log) => log.params.id.value.toNumber()); - - this._store.dispatch(fetchTokens(tokenIds)); - } -} diff --git a/js/packages/shared/redux/providers/balancesActions.js b/js/packages/shared/redux/providers/balancesActions.js deleted file mode 100644 index 63e43aec9..000000000 --- a/js/packages/shared/redux/providers/balancesActions.js +++ /dev/null @@ -1,279 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { uniq, isEqual } from 'lodash'; -import { push } from 'react-router-redux'; - -import { sha3 } from '@parity/api/util/sha3'; - -import { LOG_KEYS, getLogger } from '@parity/shared/config'; -import { notifyTransaction } from '@parity/shared/util/notifications'; -import { ETH_TOKEN, fetchAccountsBalances } from '@parity/shared/util/tokens'; - -const TRANSFER_SIGNATURE = sha3('Transfer(address,address,uint256)'); - -const log = getLogger(LOG_KEYS.Balances); - -let tokensFilter = {}; - -function _setBalances (balances) { - return { - type: 'setBalances', - balances - }; -} - -/** - * @param {Object} _balances - In the shape: - * { - * [ who ]: { [ tokenId ]: BigNumber } // The balances of `who` - * } - * @param {Boolean} skipNotifications [description] - */ -function setBalances (updates, skipNotifications = false) { - return (dispatch, getState) => { - const { tokens, balances } = getState(); - - const prevBalances = balances; - const nextBalances = { ...prevBalances }; - - Object.keys(updates) - .forEach((who) => { - const accountUpdates = updates[who]; - - Object.keys(accountUpdates) - .forEach((tokenId) => { - const token = tokens[tokenId]; - const prevTokenValue = (prevBalances[who] || {})[tokenId]; - const nextTokenValue = accountUpdates[tokenId]; - - if (prevTokenValue && prevTokenValue.lt(nextTokenValue)) { - dispatch(notifyBalanceChange(who, prevTokenValue, nextTokenValue, token)); - } - - // Add the token if it's native ETH or if it has a value - if (token.native || nextTokenValue.gt(0)) { - nextBalances[who] = { - ...(nextBalances[who] || {}), - [tokenId]: nextTokenValue - }; - } - }); - }); - - return dispatch(_setBalances(nextBalances)); - }; -} - -function notifyBalanceChange (who, fromValue, toValue, token) { - return (dispatch, getState) => { - const account = getState().personal.accounts[who]; - - if (account) { - const txValue = toValue.minus(fromValue); - - const redirectToAccount = () => { - const basePath = account.wallet - ? 'wallet' - : 'accounts'; - - const route = `/${basePath}/${account.address}`; - - dispatch(push(route)); - }; - - notifyTransaction(account, token, txValue, redirectToAccount); - } - }; -} - -// TODO: fetch txCount when needed -export function fetchBalances (_addresses, skipNotifications = false) { - return fetchTokensBalances(_addresses, [ ETH_TOKEN ], skipNotifications); -} - -export function updateTokensFilter (_addresses, _tokens, options = {}) { - return (dispatch, getState) => { - const { api, personal, tokens } = getState(); - const { visibleAccounts, accounts } = personal; - - const addressesToFetch = uniq(visibleAccounts.concat(Object.keys(accounts))); - const addresses = uniq(_addresses || addressesToFetch || []).sort(); - - const tokensToUpdate = _tokens || Object.values(tokens); - const tokenAddresses = tokensToUpdate - .map((t) => t.address) - .filter((address) => address) - .sort(); - - if (tokensFilter.filterFromId || tokensFilter.filterToId) { - // Has the tokens addresses changed (eg. a network change) - const sameTokens = isEqual(tokenAddresses, tokensFilter.tokenAddresses); - - // Addresses that are not in the current filter (omit those - // that the filter includes) - const newAddresses = addresses.filter((address) => !tokensFilter.addresses.includes(address)); - - // If no new addresses and the same tokens, don't change the filter - if (sameTokens && newAddresses.length === 0) { - log.debug('no need to update token filter', addresses, tokenAddresses, tokensFilter); - return queryTokensFilter(tokensFilter)(dispatch, getState); - } - } - - log.debug('updating the token filter', addresses, tokenAddresses); - const promises = []; - - if (tokensFilter.filterFromId) { - promises.push(api.eth.uninstallFilter(tokensFilter.filterFromId)); - } - - if (tokensFilter.filterToId) { - promises.push(api.eth.uninstallFilter(tokensFilter.filterToId)); - } - - Promise - .all([ - api.eth.blockNumber() - ].concat(promises)) - .then(([ block ]) => { - const topicsFrom = [ TRANSFER_SIGNATURE, addresses, null ]; - const topicsTo = [ TRANSFER_SIGNATURE, null, addresses ]; - - const filterOptions = { - fromBlock: block, - toBlock: 'pending', - address: tokenAddresses - }; - - const optionsFrom = { - ...filterOptions, - topics: topicsFrom - }; - - const optionsTo = { - ...filterOptions, - topics: topicsTo - }; - - const newFilters = Promise.all([ - api.eth.newFilter(optionsFrom), - api.eth.newFilter(optionsTo) - ]); - - return newFilters; - }) - .then(([ filterFromId, filterToId ]) => { - const nextTokensFilter = { - filterFromId, filterToId, - addresses, tokenAddresses - }; - - const { skipNotifications } = options; - - tokensFilter = nextTokensFilter; - fetchTokensBalances(addresses, tokensToUpdate, skipNotifications)(dispatch, getState); - }) - .catch((error) => { - console.warn('balances::updateTokensFilter', error); - }); - }; -} - -export function queryTokensFilter () { - return (dispatch, getState) => { - const { api, personal, tokens } = getState(); - const { visibleAccounts, accounts } = personal; - - const allAddresses = visibleAccounts.concat(Object.keys(accounts)); - const addressesToFetch = uniq(allAddresses); - const lcAddresses = addressesToFetch.map((a) => a.toLowerCase()); - - Promise - .all([ - api.eth.getFilterChanges(tokensFilter.filterFromId), - api.eth.getFilterChanges(tokensFilter.filterToId) - ]) - .then(([ logsFrom, logsTo ]) => { - const addresses = []; - const tokenAddresses = []; - const logs = logsFrom.concat(logsTo); - - if (logs.length > 0) { - log.debug('got tokens filter logs', logs); - } - - logs - .forEach((log) => { - const tokenAddress = log.address; - - const fromAddress = '0x' + log.topics[1].slice(-40); - const toAddress = '0x' + log.topics[2].slice(-40); - - const fromAddressIndex = lcAddresses.indexOf(fromAddress); - const toAddressIndex = lcAddresses.indexOf(toAddress); - - if (fromAddressIndex > -1) { - addresses.push(addressesToFetch[fromAddressIndex]); - } - - if (toAddressIndex > -1) { - addresses.push(addressesToFetch[toAddressIndex]); - } - - tokenAddresses.push(tokenAddress); - }); - - if (addresses.length === 0) { - return; - } - - const tokensToUpdate = Object.values(tokens) - .filter((t) => tokenAddresses.includes(t.address)); - - fetchTokensBalances(uniq(addresses), tokensToUpdate)(dispatch, getState); - }); - }; -} - -export function fetchTokensBalances (_addresses = null, _tokens = null, skipNotifications = false) { - return (dispatch, getState) => { - const { api, personal, tokens } = getState(); - const { visibleAccounts, accounts } = personal; - const allTokens = Object.values(tokens); - - const addressesToFetch = uniq(visibleAccounts.concat(Object.keys(accounts))); - const addresses = _addresses || addressesToFetch; - const tokensToUpdate = _tokens || allTokens; - - if (addresses.length === 0) { - return Promise.resolve(); - } - - const updates = addresses.reduce((updates, who) => { - updates[who] = tokensToUpdate.map((token) => token.id); - return updates; - }, {}); - - return fetchAccountsBalances(api, allTokens, updates) - .then((balances) => { - dispatch(setBalances(balances, skipNotifications)); - }) - .catch((error) => { - console.warn('balances::fetchTokensBalances', error); - }); - }; -} diff --git a/js/packages/shared/redux/providers/balancesReducer.js b/js/packages/shared/redux/providers/balancesReducer.js deleted file mode 100644 index 1b6f34391..000000000 --- a/js/packages/shared/redux/providers/balancesReducer.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -const initialState = {}; - -export default handleActions({ - setBalances (state, action) { - const { balances } = action; - - return Object.assign({}, state, balances); - } -}, initialState); diff --git a/js/packages/shared/redux/providers/certifications/actions.js b/js/packages/shared/redux/providers/certifications/actions.js deleted file mode 100644 index 8dede1c53..000000000 --- a/js/packages/shared/redux/providers/certifications/actions.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export const fetchCertifiers = () => ({ - type: 'fetchCertifiers' -}); - -export const fetchCertifications = (address) => ({ - type: 'fetchCertifications', address -}); - -export const addCertification = (address, id, name, title, icon) => ({ - type: 'addCertification', address, id, name, title, icon -}); - -export const removeCertification = (address, id) => ({ - type: 'removeCertification', address, id -}); diff --git a/js/packages/shared/redux/providers/certifications/middleware.js b/js/packages/shared/redux/providers/certifications/middleware.js deleted file mode 100644 index 010bb7743..000000000 --- a/js/packages/shared/redux/providers/certifications/middleware.js +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { uniq, range, debounce } from 'lodash'; - -import Contract from '@parity/api/contract'; -import { getLogger, LOG_KEYS } from '@parity/shared/config'; -import Contracts from '@parity/shared/contracts'; -import CertifierABI from '@parity/shared/contracts/abi/certifier.json'; - -import { addCertification, removeCertification } from './actions'; - -const log = getLogger(LOG_KEYS.CertificationsMiddleware); - -// TODO: move this to a more general place -const updatableFilter = (api, onFilter) => { - let filter = null; - - const update = (address, topics) => { - if (filter) { - filter = filter.then((filterId) => { - api.eth.uninstallFilter(filterId); - }); - } - - filter = (filter || Promise.resolve()) - .then(() => api.eth.newFilter({ - fromBlock: 0, - toBlock: 'latest', - address, - topics - })) - .then((filterId) => { - onFilter(filterId); - return filterId; - }) - .catch((err) => { - console.error('Failed to create certifications filter:', err); - }); - - return filter; - }; - - return update; -}; - -export default class CertificationsMiddleware { - constructor (api) { - this._api = api; - } - - toMiddleware () { - const api = this._api; - const badgeReg = Contracts.get(api).badgeReg; - - const contract = new Contract(api, CertifierABI); - const Confirmed = contract.events.find((e) => e.name === 'Confirmed'); - const Revoked = contract.events.find((e) => e.name === 'Revoked'); - - return (store) => { - let certifiers = []; - let addresses = []; - let filterChanged = false; - let filter = null; - let badgeRegFilter = null; - let fetchCertifiersPromise = null; - - const updateFilter = updatableFilter(api, (filterId) => { - filterChanged = true; - filter = filterId; - }); - - const badgeRegUpdateFilter = updatableFilter(api, (filterId) => { - filterChanged = true; - badgeRegFilter = filterId; - }); - - badgeReg - .getContract() - .then((badgeRegContract) => { - return badgeRegUpdateFilter(badgeRegContract.address, [ [ - badgeRegContract.instance.Registered.signature, - badgeRegContract.instance.Unregistered.signature, - badgeRegContract.instance.MetaChanged.signature, - badgeRegContract.instance.AddressChanged.signature - ] ]); - }) - .then(() => { - shortFetchChanges(); - - api.subscribe('eth_blockNumber', (err) => { - if (err) { - return; - } - - fetchChanges(); - }); - }); - - function onLogs (logs) { - logs = contract.parseEventLogs(logs); - logs.forEach((log) => { - const certifier = certifiers.find((c) => c.address === log.address); - - if (!certifier) { - throw new Error(`Could not find certifier at ${log.address}.`); - } - const { id, name, title, icon } = certifier; - - if (log.event === 'Revoked') { - store.dispatch(removeCertification(log.params.who.value, id)); - } else { - store.dispatch(addCertification(log.params.who.value, id, name, title, icon)); - } - }); - } - - function onBadgeRegLogs (logs) { - return badgeReg - .getContract() - .then((badgeRegContract) => { - logs = badgeRegContract.parseEventLogs(logs); - - const ids = logs.map((log) => log.params && log.params.id.value.toNumber()); - - return fetchCertifiers(uniq(ids)); - }); - } - - function _fetchChanges () { - const method = filterChanged - ? 'getFilterLogs' - : 'getFilterChanges'; - - filterChanged = false; - - api.eth[method](badgeRegFilter) - .then(onBadgeRegLogs) - .catch((err) => { - console.error('Failed to fetch badge reg events:', err); - }) - .then(() => api.eth[method](filter)) - .then(onLogs) - .catch((err) => { - console.error('Failed to fetch new certifier events:', err); - }); - } - - const shortFetchChanges = debounce(_fetchChanges, 0.5 * 1000, { leading: true }); - const fetchChanges = debounce(shortFetchChanges, 10 * 1000, { leading: true }); - - function fetchConfirmedEvents () { - return updateFilter(certifiers.map((c) => c.address), [ - [ Confirmed.signature, Revoked.signature ], - addresses - ]).then(() => shortFetchChanges()); - } - - function fetchCertifiers (ids = []) { - if (fetchCertifiersPromise) { - return fetchCertifiersPromise; - } - - let fetchEvents = false; - - const idsPromise = (certifiers.length === 0) - ? badgeReg.certifierCount().then((count) => { - return range(count); - }) - : Promise.resolve(ids); - - fetchCertifiersPromise = idsPromise - .then((ids) => { - const promises = ids.map((id) => { - return badgeReg.fetchCertifier(id) - .then((cert) => { - if (!certifiers.some((c) => c.id === cert.id)) { - certifiers = certifiers.concat(cert); - fetchEvents = true; - } - }) - .catch((err) => { - if (/does not exist/.test(err.toString())) { - return log.info(err.toString()); - } - - log.warn(`Could not fetch certifier ${id}:`, err); - }); - }); - - return Promise - .all(promises) - .then(() => { - fetchCertifiersPromise = null; - - if (fetchEvents) { - return fetchConfirmedEvents(); - } - }); - }); - - return fetchCertifiersPromise; - } - - return (next) => (action) => { - switch (action.type) { - case 'fetchCertifiers': - fetchConfirmedEvents(); - - break; - case 'fetchCertifications': - const { address } = action; - - if (!addresses.includes(address)) { - addresses = addresses.concat(address); - fetchConfirmedEvents(); - } - - break; - case 'setVisibleAccounts': - const _addresses = action.addresses || []; - - addresses = uniq(addresses.concat(_addresses)); - fetchConfirmedEvents(); - next(action); - - break; - default: - next(action); - } - }; - }; - } -} diff --git a/js/packages/shared/redux/providers/certifications/reducer.js b/js/packages/shared/redux/providers/certifications/reducer.js deleted file mode 100644 index 0f94239c6..000000000 --- a/js/packages/shared/redux/providers/certifications/reducer.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const initialState = {}; - -export default (state = initialState, action) => { - if (action.type === 'addCertification') { - const { address, id, name, icon, title } = action; - const certifications = state[address] || []; - - if (certifications.some((c) => c.id === id)) { - return state; - } - - const newCertifications = certifications.concat({ - id, name, icon, title - }); - - return { ...state, [address]: newCertifications }; - } - - if (action.type === 'removeCertification') { - const { address, id } = action; - const certifications = state[address] || []; - - const newCertifications = certifications.filter((c) => c.id !== id); - - return { ...state, [address]: newCertifications }; - } - - return state; -}; diff --git a/js/packages/shared/redux/providers/chainMiddleware.js b/js/packages/shared/redux/providers/chainMiddleware.js deleted file mode 100644 index 398e604be..000000000 --- a/js/packages/shared/redux/providers/chainMiddleware.js +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { DEFAULT_NETCHAIN } from './statusReducer'; - -export default class ChainMiddleware { - toMiddleware () { - return (store) => (next) => (action) => { - if (action.type === 'statusCollection') { - const { collection } = action; - - if (collection) { - const { nodeStatus } = store.getState(); - const { netChain, nodeKind } = nodeStatus; - const newChain = collection.netChain; - const newNodeKind = collection.nodeKind; - let reloadChain = false; - let reloadType = false; - - // force reload when chain has changed and is not initial value - if (newChain) { - const hasChainChanged = newChain !== netChain; - const isInitialChain = netChain === DEFAULT_NETCHAIN; - - reloadChain = !isInitialChain && hasChainChanged; - } - - // force reload when nodeKind (availability or capability) has changed - if (newNodeKind && nodeKind) { - const hasAvailabilityChanged = nodeKind.availability !== newNodeKind.availability; - const hasCapabilityChanged = nodeKind.capability !== newNodeKind.capability; - - reloadType = hasAvailabilityChanged || hasCapabilityChanged; - } - - if (reloadChain || reloadType) { - setTimeout(() => { - window.location.reload(); - }, 0); - } - } - } - - next(action); - }; - } -} diff --git a/js/packages/shared/redux/providers/chainMiddleware.spec.js b/js/packages/shared/redux/providers/chainMiddleware.spec.js deleted file mode 100644 index d7f29b2e3..000000000 --- a/js/packages/shared/redux/providers/chainMiddleware.spec.js +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import Contracts from '@parity/shared/contracts'; - -import { initialState as defaultNodeStatusState } from './statusReducer'; -import ChainMiddleware from './chainMiddleware'; -import { createWsApi } from '../../../../test/e2e/ethapi'; - -let middleware; -let next; -let store; -let clock; - -const api = createWsApi(); - -Contracts.get(api); - -function stubGlobals () { - clock = sinon.useFakeTimers(); - sinon.spy(window.location, 'reload'); -} - -function restoreGlobals () { - window.location.reload.restore(); - clock.restore(); -} - -function createMiddleware (collection = {}) { - middleware = new ChainMiddleware().toMiddleware(); - next = sinon.stub(); - store = { - dispatch: sinon.stub(), - getState: () => { - return { - api: api, - nodeStatus: Object.assign({}, defaultNodeStatusState, collection) - }; - } - }; - - return middleware; -} - -function callMiddleware (action) { - const result = middleware(store)(next)(action); - - clock.tick(100); - - return result; -} - -describe('reduxs/providers/ChainMiddleware', () => { - beforeEach(() => { - stubGlobals(); - }); - - afterEach(() => { - restoreGlobals(); - }); - - describe('next action', () => { - beforeEach(() => { - createMiddleware(); - }); - - it('calls next with matching actiontypes', () => { - callMiddleware({ type: 'statusCollection' }); - - expect(next).to.have.been.calledWithMatch({ type: 'statusCollection' }); - }); - - it('calls next with non-matching actiontypes', () => { - callMiddleware({ type: 'nonMatchingType' }); - - expect(next).to.have.been.calledWithMatch({ type: 'nonMatchingType' }); - }); - }); - - describe('chain switching', () => { - it('does not reload when moving from the initial/unknown chain', () => { - createMiddleware(); - callMiddleware({ type: 'statusCollection', collection: { netChain: 'homestead' } }); - - expect(window.location.reload).not.to.have.been.called; - }); - - it('does not reload when moving to the same chain', () => { - createMiddleware({ netChain: 'homestead' }); - callMiddleware({ type: 'statusCollection', collection: { netChain: 'homestead' } }); - - expect(window.location.reload).not.to.have.been.called; - }); - - it('does reload when moving between chains', () => { - createMiddleware({ netChain: 'homestead' }); - callMiddleware({ type: 'statusCollection', collection: { netChain: 'ropsten' } }); - - expect(window.location.reload).to.have.been.called; - }); - }); -}); diff --git a/js/packages/shared/redux/providers/index.js b/js/packages/shared/redux/providers/index.js deleted file mode 100644 index db71763b4..000000000 --- a/js/packages/shared/redux/providers/index.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export Balances from './balances'; -export Personal from './personal'; -export Signer from './signer'; -export Status from './status'; - -export apiReducer from './apiReducer'; -export balancesReducer from './balancesReducer'; -export workerReducer from './workerReducer'; -export personalReducer from './personalReducer'; -export requestsReducer from './requestsReducer'; -export settingsReducer from './settings/reducers'; -export signerReducer from './signerReducer'; -export snackbarReducer from './snackbarReducer'; -export statusReducer from './statusReducer'; -export tokensReducer from './tokensReducer'; -export walletReducer from './walletReducer'; diff --git a/js/packages/shared/redux/providers/personal.js b/js/packages/shared/redux/providers/personal.js deleted file mode 100644 index 4c9d3e23a..000000000 --- a/js/packages/shared/redux/providers/personal.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { personalAccountsInfo } from './personalActions'; - -export default class Personal { - constructor (store, api) { - this._api = api; - this._store = store; - } - - start () { - this._removeDeleted(); - this._subscribeAccountsInfo(); - } - - _subscribeAccountsInfo () { - this._api - .subscribe('parity_allAccountsInfo', (error, accountsInfo) => { - if (error) { - console.error('parity_allAccountsInfo', error); - return; - } - - // Add the address to each accounts - Object.keys(accountsInfo) - .forEach((address) => { - accountsInfo[address].address = address; - }); - - this._store.dispatch(personalAccountsInfo(accountsInfo)); - }); - } - - _removeDeleted () { - this._api.parity - .allAccountsInfo() - .then((accountsInfo) => { - return Promise.all( - Object - .keys(accountsInfo) - .filter((address) => { - const account = accountsInfo[address]; - - return !account.uuid && account.meta && account.meta.deleted; - }) - .map((address) => this._api.parity.removeAddress(address)) - ); - }) - .then((results) => { - if (results.length) { - console.log(`Removed ${results.length} previously marked addresses`); - } - }) - .catch((error) => { - console.warn('removeDeleted', error); - }); - } -} diff --git a/js/packages/shared/redux/providers/personalActions.js b/js/packages/shared/redux/providers/personalActions.js deleted file mode 100644 index 7210b2a4f..000000000 --- a/js/packages/shared/redux/providers/personalActions.js +++ /dev/null @@ -1,188 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isEqual, intersection } from 'lodash'; - -import Contract from '@parity/api/contract'; -import { wallet as WalletAbi } from '@parity/shared/contracts/abi'; -import WalletsUtils from '@parity/shared/util/wallets'; - -import BalancesProvider from './balances'; -import { updateTokensFilter } from './balancesActions'; -import { attachWallets } from './walletActions'; - -import MethodDecodingStore from '@parity/ui/MethodDecoding/methodDecodingStore'; - -export function personalAccountsInfo (accountsInfo) { - const accounts = {}; - const contacts = {}; - const contracts = {}; - const hardware = {}; - const wallets = {}; - - Object.keys(accountsInfo || {}) - .map((address) => Object.assign({}, accountsInfo[address], { address })) - .filter((account) => account.meta && (account.uuid || !account.meta.deleted)) - .forEach((account) => { - if (account.uuid) { - accounts[account.address] = account; - } else if (account.meta.wallet) { - account.wallet = true; - wallets[account.address] = account; - } else if (account.meta.contract) { - account.contract = true; - contracts[account.address] = account; - } else if (account.meta.hardware) { - account.hardware = true; - hardware[account.address] = account; - accounts[account.address] = account; - } else if (account.meta.external) { - account.external = true; - accounts[account.address] = account; - } else { - contacts[account.address] = account; - } - }); - - // Load user contracts for Method Decoding - MethodDecodingStore.loadContracts(contracts); - - return (dispatch, getState) => { - const { api } = getState(); - - const _fetchOwners = Object - .values(wallets) - .map((wallet) => { - const walletContract = new Contract(api, WalletAbi); - - return WalletsUtils.fetchOwners(walletContract.at(wallet.address)); - }); - - Promise - .all(_fetchOwners) - .then((walletsOwners) => { - return Object - .values(wallets) - .map((wallet, index) => { - wallet.owners = walletsOwners[index].map((owner) => ({ - address: owner, - name: accountsInfo[owner] && accountsInfo[owner].name || owner - })); - - return wallet; - }); - }) - .catch(() => { - return []; - }) - .then((_wallets) => { - // We want to separate owned wallets and other wallets - // However, wallets can be owned by wallets, that can - // be owned by an account... - let otherWallets = [].concat(_wallets); - let prevLength; - let nextLength; - - // If no more other wallets, or if the size decreased, continue... - do { - prevLength = otherWallets.length; - - otherWallets = otherWallets - .map((wallet) => { - const addresses = Object.keys(accounts); - const owners = wallet.owners.map((o) => o.address); - - // Owners ∩ Addresses not null : Wallet is owned - // by one of the accounts - if (intersection(owners, addresses).length > 0) { - accounts[wallet.address] = wallet; - return false; - } - - return wallet; - }) - .filter((wallet) => wallet); - - nextLength = otherWallets.length; - } while (nextLength < prevLength); - - // And other wallets to contacts... - otherWallets.forEach((wallet) => { - contacts[wallet.address] = wallet; - }); - - // Cache the _real_ accounts for - // WalletsUtils (used for sending transactions) - WalletsUtils.cacheAccounts(accounts); - - dispatch(_personalAccountsInfo({ - accountsInfo, - accounts, - contacts, - contracts, - hardware - })); - dispatch(attachWallets(wallets)); - - BalancesProvider.get().fetchAllBalances({ - force: true - }); - }) - .catch((error) => { - console.warn('personalAccountsInfo', error); - throw error; - }); - }; -} - -function _personalAccountsInfo (data) { - return { - type: 'personalAccountsInfo', - ...data - }; -} - -export function _setVisibleAccounts (addresses) { - return { - type: 'setVisibleAccounts', - addresses - }; -} - -export function setVisibleAccounts (addresses) { - return (dispatch, getState) => { - const { visibleAccounts } = getState().personal; - - if (isEqual(addresses.sort(), visibleAccounts.sort())) { - return; - } - - dispatch(_setVisibleAccounts(addresses)); - - // Don't update the balances if no new addresses displayed - if (addresses.length === 0) { - return; - } - - // Update the Tokens filter to take into account the new - // addresses - dispatch(updateTokensFilter()); - - BalancesProvider.get().fetchBalances({ - force: true - }); - }; -} diff --git a/js/packages/shared/redux/providers/personalReducer.js b/js/packages/shared/redux/providers/personalReducer.js deleted file mode 100644 index ba13ef003..000000000 --- a/js/packages/shared/redux/providers/personalReducer.js +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isEqual } from 'lodash'; -import { handleActions } from 'redux-actions'; - -const initialState = { - accountsInfo: {}, - accounts: {}, - contacts: {}, - contracts: {}, - hardware: {}, - hasAccounts: false, - hasContacts: false, - hasContracts: false, - hasHardware: false, - visibleAccounts: [] -}; - -export default handleActions({ - personalAccountsInfo (state, action) { - const accountsInfo = action.accountsInfo || state.accountsInfo; - const { accounts, contacts, contracts, hardware } = action; - - return Object.assign({}, state, { - accountsInfo, - accounts, - contacts, - contracts, - hasAccounts: Object.keys(accounts).length !== 0, - hasContacts: Object.keys(contacts).length !== 0, - hasContracts: Object.keys(contracts).length !== 0, - hasHardware: Object.keys(hardware).length !== 0 - }); - }, - - setVisibleAccounts (state, action) { - const addresses = (action.addresses || []).sort(); - - if (isEqual(addresses, state.visibleAccounts)) { - return state; - } - - return Object.assign({}, state, { - visibleAccounts: addresses - }); - } -}, initialState); diff --git a/js/packages/shared/redux/providers/registry/actions.js b/js/packages/shared/redux/providers/registry/actions.js deleted file mode 100644 index 6461470b8..000000000 --- a/js/packages/shared/redux/providers/registry/actions.js +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export const setReverse = (address, reverse) => ({ - type: 'setReverse', - address, reverse -}); - -export const startCachingReverses = () => ({ - type: 'startCachingReverses' -}); - -export const stopCachingReverses = () => ({ - type: 'stopCachingReverses' -}); diff --git a/js/packages/shared/redux/providers/registry/middleware.js b/js/packages/shared/redux/providers/registry/middleware.js deleted file mode 100644 index 78c1074e3..000000000 --- a/js/packages/shared/redux/providers/registry/middleware.js +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { debounce } from 'lodash'; -import lsstore from 'store'; - -import Contracts from '../../../contracts'; -import registryABI from '../../../contracts/abi/registry.json'; -import subscribeToEvents from '../../../util/subscribe-to-events'; - -import { setReverse, startCachingReverses } from './actions'; - -const STORE_KEY = '_parity::reverses'; - -export default class RegistryMiddleware { - contract; - interval; - store; - subscription; - timeout; - - addressesToCheck = {}; - - constructor (api) { - this._api = api; - } - - toMiddleware () { - return (store) => { - this.store = store; - - return (next) => (action) => { - switch (action.type) { - case 'initAll': - next(action); - store.dispatch(startCachingReverses()); - break; - - case 'startCachingReverses': - this.cacheReverses(); - break; - - case 'stopCachingReverses': - if (this.subscription) { - this.subscription.unsubscribe(); - } - if (this.interval) { - clearInterval(this.interval); - } - if (this.timeout) { - clearTimeout(this.timeout); - } - - this.write.flush(); - break; - - case 'setReverse': - this.write( - () => store.getState().nodeStatus.netChain, - () => store.getState().registry.reverse, - () => +store.getState().nodeStatus.blockNumber - ); - next(action); - break; - - default: - next(action); - } - }; - }; - } - - cacheReverses () { - const { registry } = Contracts.get(this._api); - const cached = this.read(this.store.getState().nodeStatus.netChain); - - if (cached) { - Object - .entries(cached.reverses) - .forEach(([ address, reverse ]) => this.store.dispatch(setReverse(address, reverse))); - } - - registry.getInstance() - .then((instance) => this._api.newContract(registryABI, instance.address)) - .then((_contract) => { - this.contract = _contract; - - this.subscription = subscribeToEvents(this.contract, [ - 'ReverseConfirmed', 'ReverseRemoved' - ], { - from: cached ? cached.lastBlock : 0 - }); - this.subscription.on('log', this.onLog); - - this.timeout = setTimeout(this.checkReverses, 10000); - this.interval = setInterval(this.checkReverses, 20000); - }) - .catch((err) => { - console.error('Failed to start caching reverses:', err); - throw err; - }); - } - - checkReverses = () => { - Object - .keys(this.addressesToCheck) - .forEach((address) => { - this.contract - .instance - .reverse - .call({}, [ address ]) - .then((reverse) => { - this.store.dispatch(setReverse(address, reverse)); - }); - }); - - this.addressesToCheck = {}; - }; - - onLog = (log) => { - switch (log.event) { - case 'ReverseConfirmed': - this.addressesToCheck[log.params.reverse.value] = true; - - break; - case 'ReverseRemoved': - delete this.addressesToCheck[log.params.reverse.value]; - - break; - } - }; - - read = (chain) => { - const reverses = lsstore.get(`${STORE_KEY}::${chain}::data`); - const lastBlock = lsstore.get(`${STORE_KEY}::${chain}::lastBlock`); - - if (!reverses || !lastBlock) { - return null; - } - return { reverses, lastBlock }; - }; - - write = debounce((getChain, getReverses, getLastBlock) => { - const chain = getChain(); - const reverses = getReverses(); - const lastBlock = getLastBlock(); - - lsstore.set(`${STORE_KEY}::${chain}::data`, reverses); - lsstore.set(`${STORE_KEY}::${chain}::lastBlock`, lastBlock); - }, 20000); -} diff --git a/js/packages/shared/redux/providers/registry/reducer.js b/js/packages/shared/redux/providers/registry/reducer.js deleted file mode 100644 index e7f599b83..000000000 --- a/js/packages/shared/redux/providers/registry/reducer.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const initialState = { - reverse: {} // cache for reverse lookup -}; - -export default (state = initialState, action) => { - if (action.type === 'setReverse') { - if (state.reverse[action.address] === action.reverse) { - return state; - } - - return { - reverse: { - ...state.reverse, [ action.address ]: action.reverse - } - }; - } - - return state; -}; diff --git a/js/packages/shared/redux/providers/requestsActions.js b/js/packages/shared/redux/providers/requestsActions.js deleted file mode 100644 index c4d9ffaf9..000000000 --- a/js/packages/shared/redux/providers/requestsActions.js +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import { outTransaction } from '@parity/api/format/output'; -import { trackRequest as trackRequestUtil, parseTransactionReceipt } from '@parity/shared/util/tx'; - -// FIXME: We should not import from shell -import SavedRequests from '~/src/Requests/savedRequests'; - -const savedRequests = new SavedRequests(); - -export const init = (api) => (dispatch) => { - api.subscribe('parity_postTransaction', (error, request) => { - if (error) { - return console.error(error); - } - - dispatch(watchRequest(request)); - }); - - api.once('connected', () => { - savedRequests.load(api).then((requests) => { - requests.forEach((request) => dispatch(watchRequest(request))); - }); - }); -}; - -export const watchRequest = (request) => (dispatch, getState) => { - const { requestId } = request; - - // Convert value to BigNumber - request.transaction = outTransaction(request.transaction); - dispatch(setRequest(requestId, request)); - dispatch(trackRequest(requestId, request)); -}; - -export const trackRequest = (requestId, { transactionHash = null } = {}) => (dispatch, getState) => { - const { api } = getState(); - - trackRequestUtil(api, { requestId, transactionHash }, (error, _data = {}) => { - const data = { ..._data }; - - if (error) { - console.error(error); - return dispatch(setRequest(requestId, { error })); - } - - // Hide the request after 6 mined blocks - if (data.transactionReceipt) { - const { transactionReceipt } = data; - const { requests } = getState(); - const requestData = requests[requestId]; - let blockSubscriptionId = -1; - - // Set the block height to 0 at the beggining - data.blockHeight = new BigNumber(0); - - // If the request was a contract deployment, - // then add the contract with the saved metadata to the account - if (requestData.metadata && requestData.metadata.deployment) { - const { metadata } = requestData; - - const options = { - ...requestData.transaction, - metadata - }; - - parseTransactionReceipt(api, options, data.transactionReceipt) - .then((contractAddress) => { - // No contract address given, might need some confirmations - // from the wallet owners... - if (!contractAddress || /^(0x)?0*$/.test(contractAddress)) { - return false; - } - - metadata.blockNumber = data.transactionReceipt - ? data.transactionReceipt.blockNumber.toNumber() - : null; - - const prevRequest = getState().requests[requestId]; - const nextTransaction = { - ...prevRequest.transaction, - creates: contractAddress - }; - - dispatch(setRequest(requestId, { transaction: nextTransaction })); - return Promise.all([ - api.parity.setAccountName(contractAddress, metadata.name), - api.parity.setAccountMeta(contractAddress, metadata) - ]); - }) - .catch((error) => { - console.error(error); - }); - } - - api - .subscribe('eth_blockNumber', (error, blockNumber) => { - if (error || !blockNumber) { - return; - } - - // Transaction included in `blockHeight` blocks - const blockHeight = blockNumber.minus(transactionReceipt.blockNumber).plus(1); - const nextData = { blockHeight }; - - // Hide the transaction after 6 blocks - if (blockHeight.gt(6)) { - return dispatch(hideRequest(requestId)); - } - - return dispatch(setRequest(requestId, nextData, false)); - }) - .then((subId) => { - blockSubscriptionId = subId; - return dispatch(setRequest(requestId, { blockSubscriptionId }, false)); - }); - } - - return dispatch(setRequest(requestId, data)); - }); -}; - -export const hideRequest = (requestId) => (dispatch, getState) => { - const { api, requests } = getState(); - const request = requests[requestId]; - - dispatch(setRequest(requestId, { show: false })); - - // Delete it if an error occured or if completed - if (request.error || request.transactionReceipt) { - // Wait for the animation to be done to delete the request - setTimeout(() => { - dispatch(deleteRequest(requestId)); - }, 1000); - } - - // Unsubscribe to eth-blockNumber if subscribed - if (request.blockSubscriptionId) { - api.unsubscribe(request.blockSubscriptionId); - dispatch(setRequest(requestId, { blockSubscriptionId: null }, false)); - } -}; - -export const setRequest = (requestId, requestData, autoSetShow = true) => { - if (autoSetShow && requestData.show === undefined) { - requestData.show = true; - } - - savedRequests.save(requestId, requestData); - - return { - type: 'setRequest', - requestId, requestData - }; -}; - -export const deleteRequest = (requestId) => { - savedRequests.remove(requestId); - - return { - type: 'deleteRequest', - requestId - }; -}; diff --git a/js/packages/shared/redux/providers/requestsActions.spec.js b/js/packages/shared/redux/providers/requestsActions.spec.js deleted file mode 100644 index 8f48b03d7..000000000 --- a/js/packages/shared/redux/providers/requestsActions.spec.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import sinon from 'sinon'; - -import { hideRequest, trackRequest, watchRequest } from './requestsActions'; - -const TX_HASH = '0x123456'; -const BASE_REQUEST = { - requestId: '0x1', - transaction: { - from: '0x0', - to: '0x1' - } -}; - -let api; -let store; -let dispatcher; - -function createApi () { - return { - pollMethod: (method, data) => { - switch (method) { - case 'parity_checkRequest': - return Promise.resolve(TX_HASH); - - default: - return Promise.resolve(); - } - } - }; -} - -function createRedux (dispatcher) { - return { - dispatch: (arg) => { - if (typeof arg === 'function') { - return arg(store.dispatch, store.getState); - } - - return dispatcher(arg); - }, - getState: () => { - return { - api, - requests: { - [BASE_REQUEST.requestId]: BASE_REQUEST - } - }; - } - }; -} - -describe('redux/requests', () => { - beforeEach(() => { - api = createApi(); - dispatcher = sinon.spy(); - store = createRedux(dispatcher); - }); - - it('watches new requests', () => { - store.dispatch(watchRequest(BASE_REQUEST)); - - expect(dispatcher).to.be.calledWith({ - type: 'setRequest', - requestId: BASE_REQUEST.requestId, - requestData: BASE_REQUEST - }); - }); - - it('tracks requests', (done) => { - store.dispatch(trackRequest(BASE_REQUEST.requestId)); - - setTimeout(() => { - expect(dispatcher).to.be.calledWith({ - type: 'setRequest', - requestId: BASE_REQUEST.requestId, - requestData: { - transactionHash: TX_HASH, - show: true - } - }); - - done(); - }, 50); - }); - - it('hides requests', () => { - store.dispatch(hideRequest(BASE_REQUEST.requestId)); - - expect(dispatcher).to.be.calledWith({ - type: 'setRequest', - requestId: BASE_REQUEST.requestId, - requestData: { show: false } - }); - }); -}); diff --git a/js/packages/shared/redux/providers/requestsReducer.js b/js/packages/shared/redux/providers/requestsReducer.js deleted file mode 100644 index eebc6fe2d..000000000 --- a/js/packages/shared/redux/providers/requestsReducer.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -const initialState = {}; - -export default handleActions({ - setRequest (state, action) { - const { requestId, requestData } = action; - - const nextState = { - ...state, - [requestId]: { - ...(state[requestId] || {}), - ...requestData - } - }; - - return nextState; - }, - - deleteRequest (state, action) { - const { requestId } = action; - const nextState = { ...state }; - - delete nextState[requestId]; - return nextState; - } -}, initialState); diff --git a/js/packages/shared/redux/providers/settings/actions.js b/js/packages/shared/redux/providers/settings/actions.js deleted file mode 100644 index eb86413ac..000000000 --- a/js/packages/shared/redux/providers/settings/actions.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export function toggleView (viewId) { - return { - type: 'toggleView', - viewId - }; -} - -export function updateBackground (backgroundSeed) { - return { - type: 'updateBackground', - backgroundSeed - }; -} diff --git a/js/packages/shared/redux/providers/settings/middleware.js b/js/packages/shared/redux/providers/settings/middleware.js deleted file mode 100644 index 93eacb242..000000000 --- a/js/packages/shared/redux/providers/settings/middleware.js +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import store from 'store'; - -import defaultViews from '@parity/shared/config/defaultViews'; - -function initBackground (store, api) { - const backgroundSeed = loadBackground() || api.util.sha3(`${Date.now()}`); - - store.dispatch({ - type: 'updateBackground', - backgroundSeed - }); -} - -function loadBackground () { - // Check global object to support embedding - return store.get('backgroundSeed') || window.backgroundSeed; -} - -function saveBackground (backgroundSeed) { - store.set('backgroundSeed', backgroundSeed); -} - -function initViews (store) { - const { settings } = store.getState(); - const data = loadViews(); - const viewIds = Object.keys(data).filter((viewId) => { - return settings.views[viewId] && data[viewId].active !== settings.views[viewId].active; - }); - - if (viewIds.length) { - store.dispatch({ type: 'toggleViews', viewIds }); - } -} - -function getFixedViews () { - const views = {}; - - Object.keys(defaultViews).forEach((id) => { - if (defaultViews[id].fixed) { - views[id] = { active: true }; - } - }); - - return views; -} - -function getDefaultViews () { - const views = {}; - - Object.keys(defaultViews).forEach((id) => { - views[id] = { - active: defaultViews[id].active || false - }; - }); - - return views; -} - -function loadViews () { - const fixed = getFixedViews(); - const defaults = getDefaultViews(); - let data; - - try { - const json = store.get('views') || {}; - - data = Object.assign(defaults, json, fixed); - } catch (e) { - data = defaults; - } - - return data; -} - -function saveViews () { - store.set('views', getDefaultViews()); -} - -function toggleViews (viewIds) { - viewIds.forEach((id) => { - defaultViews[id].active = !defaultViews[id].active; - }); - - saveViews(); -} - -export default class SettingsMiddleware { - toMiddleware () { - return (store) => (next) => (action) => { - switch (action.type) { - case 'initAll': - initBackground(store, action.api); - initViews(store); - break; - - case 'toggleView': - toggleViews([action.viewId]); - break; - - case 'toggleViews': - toggleViews(action.viewIds); - break; - - case 'updateBackground': - saveBackground(action.backgroundSeed); - break; - } - - next(action); - }; - } -} diff --git a/js/packages/shared/redux/providers/settings/reducers.js b/js/packages/shared/redux/providers/settings/reducers.js deleted file mode 100644 index 2c0fc0e1a..000000000 --- a/js/packages/shared/redux/providers/settings/reducers.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -import views from '@parity/shared/config/defaultViews'; - -const initialState = { - views, - backgroundSeed: `${Date.now()}` -}; - -export default handleActions({ - toggleView (state, action) { - return Object.assign({}, state, { views }); - }, - - toggleViews (state, action) { - return Object.assign({}, state, { views }); - }, - - updateBackground (state, action) { - const { backgroundSeed } = action; - - return Object.assign({}, state, { backgroundSeed }); - } -}, initialState); diff --git a/js/packages/shared/redux/providers/signer.js b/js/packages/shared/redux/providers/signer.js deleted file mode 100644 index 0e48d5c6e..000000000 --- a/js/packages/shared/redux/providers/signer.js +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { signerRequestsToConfirm } from './signerActions'; - -export default class Signer { - constructor (store, api) { - this._api = api; - this._store = store; - } - - start () { - this._subscribeRequestsToConfirm(); - } - - _subscribeRequestsToConfirm () { - this._api - .subscribe('signer_requestsToConfirm', (error, pending) => { - if (error) { - return; - } - - this._store.dispatch(signerRequestsToConfirm(pending || [])); - }); - } -} diff --git a/js/packages/shared/redux/providers/signerActions.js b/js/packages/shared/redux/providers/signerActions.js deleted file mode 100644 index d09982ede..000000000 --- a/js/packages/shared/redux/providers/signerActions.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { createAction } from 'redux-actions'; - -import { withError } from '../util'; - -function identity (x) { - return x; -} - -export function signerRequestsToConfirm (pending) { - return { - type: 'signerRequestsToConfirm', - pending - }; -} - -export const startConfirmRequest = createAction('signerStartConfirmRequest'); -export const successConfirmRequest = createAction('signerSuccessConfirmRequest'); -export const errorConfirmRequest = createAction('signerErrorConfirmRequest', identity, - withError((args) => args.err, 'error') -); -export const startRejectRequest = createAction('signerStartRejectRequest'); -export const successRejectRequest = createAction('signerSuccessRejectRequest'); -export const errorRejectRequest = createAction('signerErrorRejectRequest', identity, - withError((args) => args.err, 'error') -); diff --git a/js/packages/shared/redux/providers/signerMiddleware.js b/js/packages/shared/redux/providers/signerMiddleware.js deleted file mode 100644 index d3db902f3..000000000 --- a/js/packages/shared/redux/providers/signerMiddleware.js +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import * as actions from './signerActions'; - -import { inHex } from '@parity/api/format/input'; -import HardwareStore from '@parity/shared/mobx/hardwareStore'; -import { Signer } from '@parity/shared/util/signer'; - -// FIXME: We should not import from shell -import { createSignedTx } from '~/src/Signer/utils/qrscan'; - -export default class SignerMiddleware { - constructor (api) { - this._api = api; - this._hwstore = HardwareStore.get(api); - } - - toMiddleware () { - return (store) => (next) => (action) => { - let delegate; - - switch (action.type) { - case 'signerStartConfirmRequest': - delegate = this.onConfirmStart; - break; - - case 'signerStartRejectRequest': - delegate = this.onRejectStart; - break; - - default: - next(action); - return; - } - - if (!delegate) { - return; - } - - next(action); - delegate(store, action); - }; - } - - _createConfirmPromiseHandler (store, id) { - return (promise) => { - return promise - .then((txHash) => { - if (!txHash) { - store.dispatch(actions.errorConfirmRequest({ id, err: 'Unable to confirm.' })); - return; - } - - store.dispatch(actions.successConfirmRequest({ id, txHash })); - }) - .catch((error) => { - console.error('confirmRequest', id, error); - store.dispatch(actions.errorConfirmRequest({ id, err: error.message })); - }); - }; - } - - createNoncePromise (transaction) { - return !transaction.nonce || transaction.nonce.isZero() - ? this._api.parity.nextNonce(transaction.from) - : Promise.resolve(transaction.nonce); - } - - confirmLedgerTransaction (store, id, transaction) { - return this - .createNoncePromise(transaction) - .then((nonce) => { - transaction.nonce = nonce; - - return this._hwstore.signLedger(transaction); - }) - .then((rawTx) => { - return this.confirmRawRequest(store, id, rawTx); - }); - } - - confirmRawRequest (store, id, rawData) { - const handlePromise = this._createConfirmPromiseHandler(store, id); - - return handlePromise(this._api.signer.confirmRequestRaw(id, rawData)); - } - - confirmSignedData (store, id, dataSigned) { - const { signature } = dataSigned; - - return this.confirmRawRequest(store, id, signature); - } - - confirmDecryptedMsg (store, id, decrypted) { - const { msg } = decrypted; - - return this.confirmRawRequest(store, id, msg); - } - - confirmSignedTransaction (store, id, txSigned) { - const { netVersion } = store.getState().nodeStatus; - const { signature, tx } = txSigned; - const { rlp } = createSignedTx(netVersion, signature, tx); - - return this.confirmRawRequest(store, id, rlp); - } - - confirmWalletTransaction (store, id, transaction, wallet, password) { - const { worker } = store.getState().worker; - - const signerPromise = worker && worker._worker.state === 'activated' - ? worker - .postMessage({ - action: 'getSignerSeed', - data: { wallet, password } - }) - .then((result) => { - const seed = Buffer.from(result.data); - - return new Signer(seed); - }) - : Signer.fromJson(wallet, password); - - // NOTE: Derving the key takes significant amount of time, - // make sure to display some kind of "in-progress" state. - return Promise - .all([ signerPromise, this.createNoncePromise(transaction) ]) - .then(([ signer, nonce ]) => { - const txData = { - to: inHex(transaction.to), - nonce: inHex(transaction.nonce.isZero() ? nonce : transaction.nonce), - gasPrice: inHex(transaction.gasPrice), - gasLimit: inHex(transaction.gas), - value: inHex(transaction.value), - data: inHex(transaction.data) - }; - - return signer.signTransaction(txData); - }) - .then((rawTx) => { - return this.confirmRawRequest(store, id, rawTx); - }) - .catch((error) => { - console.error(error.message); - store.dispatch(actions.errorConfirmRequest({ id, err: error.message })); - }); - } - - onConfirmStart = (store, action) => { - const { condition, gas = 0, gasPrice = 0, id, password, payload, txSigned, dataSigned, decrypted, wallet } = action.payload; - const handlePromise = this._createConfirmPromiseHandler(store, id); - const transaction = payload.sendTransaction || payload.signTransaction; - - if (transaction) { - const hardwareAccount = this._hwstore.wallets[transaction.from]; - - if (wallet) { - return this.confirmWalletTransaction(store, id, transaction, wallet, password); - } else if (txSigned) { - return this.confirmSignedTransaction(store, id, txSigned); - } else if (hardwareAccount) { - switch (hardwareAccount.via) { - case 'ledger': - return this.confirmLedgerTransaction(store, id, transaction); - - case 'parity': - default: - break; - } - } - } - - // TODO [ToDr] Support eth_sign for external wallet (wallet && dataSigned) - if (dataSigned) { - return this.confirmSignedData(store, id, dataSigned); - } - // TODO [ToDr] Support parity_decrypt for external wallet (wallet && decrypted) - if (decrypted) { - return this.confirmDecryptedMsg(store, id, decrypted); - } - - return handlePromise(this._api.signer.confirmRequest(id, { gas, gasPrice, condition }, password)); - } - - onRejectStart = (store, action) => { - const id = action.payload; - - return this._api.signer - .rejectRequest(id) - .then(() => { - store.dispatch(actions.successRejectRequest({ id })); - }) - .catch((error) => { - console.error('rejectRequest', id, error); - store.dispatch(actions.errorRejectRequest({ id, err: error.message })); - }); - } -} diff --git a/js/packages/shared/redux/providers/signerMiddleware.spec.js b/js/packages/shared/redux/providers/signerMiddleware.spec.js deleted file mode 100644 index 1dcc19d75..000000000 --- a/js/packages/shared/redux/providers/signerMiddleware.spec.js +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import sinon from 'sinon'; - -import SignerMiddleware from './signerMiddleware'; - -const ADDRESS = '0x3456789012345678901234567890123456789012'; -const RAW_SIGNED = 'testSignResponse'; -const NONCE = new BigNumber(0x123454321); -const TRANSACTION = { - from: ADDRESS, - nonce: NONCE -}; -const PAYLOAD = { - condition: 'testCondition', - gas: 'testGas', - gasPrice: 'testGasPrice', - id: 'testId', - password: 'testPassword', - payload: { - sendTransaction: TRANSACTION - } -}; -const ACTION = { - payload: PAYLOAD -}; - -let api; -let clock; -let hwstore; -let middleware; -let store; - -function createApi () { - api = { - net: { - version: sinon.stub().resolves('2') - }, - parity: { - nextNonce: sinon.stub().resolves(NONCE) - }, - signer: { - confirmRequest: sinon.stub().resolves(true), - confirmRequestRaw: sinon.stub().resolves(true), - rejectRequest: sinon.stub().resolves(true) - } - }; - - return api; -} - -function createHwStore () { - hwstore = { - signLedger: sinon.stub().resolves(RAW_SIGNED), - wallets: { - [ADDRESS]: { - address: ADDRESS, - via: 'ledger' - } - } - }; - - return hwstore; -} - -function createRedux () { - return { - dispatch: sinon.stub(), - getState: () => { - return { - worker: { - worker: null - } - }; - } - }; -} - -function create () { - clock = sinon.useFakeTimers(); - store = createRedux(); - middleware = new SignerMiddleware(createApi()); - - return middleware; -} - -function teardown () { - clock.restore(); -} - -describe('redux/SignerMiddleware', () => { - beforeEach(() => { - create(); - }); - - afterEach(() => { - teardown(); - }); - - describe('createNoncePromise', () => { - it('resolves via transaction.nonce when available', () => { - const nonce = new BigNumber('0xabc'); - - return middleware.createNoncePromise({ nonce }).then((_nonce) => { - expect(_nonce).to.equal(nonce); - }); - }); - - it('calls parity_nextNonce', () => { - return middleware.createNoncePromise({ from: 'testing' }).then((nonce) => { - expect(api.parity.nextNonce).to.have.been.calledWith('testing'); - expect(nonce).to.equal(NONCE); - }); - }); - }); - - describe('confirmLedgerTransaction', () => { - beforeEach(() => { - sinon.spy(middleware, 'createNoncePromise'); - middleware._hwstore = createHwStore(); - - return middleware.confirmLedgerTransaction(store, PAYLOAD.id, TRANSACTION); - }); - - afterEach(() => { - middleware.createNoncePromise.restore(); - }); - - it('creates nonce via createNoncePromise', () => { - expect(middleware.createNoncePromise).to.have.been.calledWith(TRANSACTION); - }); - - it('calls into hardware signLedger', () => { - expect(hwstore.signLedger).to.have.been.calledWith(TRANSACTION); - }); - - it('confirms via signer_confirmRequestRaw', () => { - expect(api.signer.confirmRequestRaw).to.have.been.calledWith(PAYLOAD.id, RAW_SIGNED); - }); - }); - - describe('onConfirmStart', () => { - describe('normal accounts', () => { - beforeEach(() => { - return middleware.onConfirmStart(store, ACTION); - }); - - it('calls into signer_confirmRequest', () => { - expect(api.signer.confirmRequest).to.have.been.calledWith( - PAYLOAD.id, - { - condition: PAYLOAD.condition, - gas: PAYLOAD.gas, - gasPrice: PAYLOAD.gasPrice - }, - PAYLOAD.password - ); - }); - }); - - describe('hardware accounts', () => { - beforeEach(() => { - sinon.spy(middleware, 'confirmLedgerTransaction'); - middleware._hwstore = createHwStore(); - - return middleware.onConfirmStart(store, ACTION); - }); - - afterEach(() => { - middleware.confirmLedgerTransaction.restore(); - }); - - it('calls out to confirmLedgerTransaction', () => { - expect(middleware.confirmLedgerTransaction).to.have.been.called; - }); - }); - - describe('json wallet accounts', () => { - beforeEach(() => { - sinon.spy(middleware, 'confirmWalletTransaction'); - - return middleware.onConfirmStart(store, { - payload: Object.assign({}, PAYLOAD, { wallet: 'testWallet' }) - }); - }); - - afterEach(() => { - middleware.confirmWalletTransaction.restore(); - }); - - it('calls out to confirmWalletTransaction', () => { - expect(middleware.confirmWalletTransaction).to.have.been.called; - }); - }); - }); - - describe('onRejectStart', () => { - beforeEach(() => { - return middleware.onRejectStart(store, { payload: 'testId' }); - }); - - it('calls into signer_rejectRequest', () => { - expect(api.signer.rejectRequest).to.have.been.calledWith('testId'); - }); - }); -}); diff --git a/js/packages/shared/redux/providers/signerReducer.js b/js/packages/shared/redux/providers/signerReducer.js deleted file mode 100644 index 157529659..000000000 --- a/js/packages/shared/redux/providers/signerReducer.js +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -const initialState = { - finished: [], - pending: [] -}; - -function removeWithId (pending, id) { - return pending.filter(tx => tx.id !== id).slice(); -} - -function setIsSending (pending, id, isSending) { - return pending.map(p => { - if (p.id === id) { - p.isSending = isSending; - } - return p; - }).slice(); -} - -export default handleActions({ - signerRequestsToConfirm (state, action) { - const { pending } = action; - - return Object.assign({}, state, { - pending: pending.map((request) => { - const { id } = request; - const oldRequest = state.pending.find((r) => r.id === id); - - request.date = (oldRequest && oldRequest.date) - ? oldRequest.date - : new Date(); - - return request; - }) - }); - }, - - signerStartConfirmRequest (state, action) { - return { - ...state, - pending: setIsSending(state.pending, action.payload.id, true) - }; - }, - - signerSuccessConfirmRequest (state, action) { - const { id, txHash } = action.payload; - const confirmed = Object.assign( - state.pending.find(p => p.id === id) || { id }, - { result: txHash, status: 'confirmed' } - ); - - return { - ...state, - pending: removeWithId(state.pending, id), - finished: [confirmed].concat(state.finished) - }; - }, - - signerErrorConfirmRequest (state, action) { - return { - ...state, - pending: setIsSending(state.pending, action.payload.id, false) - }; - }, - - signerStartRejectRequest (state, action) { - return { - ...state, - pending: setIsSending(state.pending, action.payload.id, true) - }; - }, - - signerSuccessRejectRequest (state, action) { - const { id } = action.payload; - const rejected = Object.assign( - state.pending.find(p => p.id === id) || { id }, - { status: 'rejected' } - ); - - return { - ...state, - pending: removeWithId(state.pending, id), - finished: [rejected].concat(state.finished) - }; - }, - - signerErrorRejectRequest (state, action) { - return { - ...state, - pending: setIsSending(state.pending, action.payload.id, false) - }; - } - -}, initialState); diff --git a/js/packages/shared/redux/providers/snackbarActions.js b/js/packages/shared/redux/providers/snackbarActions.js deleted file mode 100644 index 61bed53f6..000000000 --- a/js/packages/shared/redux/providers/snackbarActions.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export function showSnackbar (message, cooldown) { - return (dispatch, getState) => { - dispatch(openSnackbar(message, cooldown)); - }; -} - -export function openSnackbar (message, cooldown) { - return { - type: 'openSnackbar', - message, cooldown - }; -} - -export function closeSnackbar () { - return { - type: 'closeSnackbar' - }; -} diff --git a/js/packages/shared/redux/providers/snackbarReducer.js b/js/packages/shared/redux/providers/snackbarReducer.js deleted file mode 100644 index c572399a1..000000000 --- a/js/packages/shared/redux/providers/snackbarReducer.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -const initialState = { - open: false, - message: '', - cooldown: 1000 -}; - -export default handleActions({ - openSnackbar (state, action) { - const { message, cooldown } = action; - - return { - ...state, - open: true, - cooldown: cooldown || state.cooldown, - message - }; - }, - - closeSnackbar (state) { - return { - ...state, - open: false, - cooldown: initialState.cooldown - }; - } -}, initialState); diff --git a/js/packages/shared/redux/providers/status.js b/js/packages/shared/redux/providers/status.js deleted file mode 100644 index 39abd3b15..000000000 --- a/js/packages/shared/redux/providers/status.js +++ /dev/null @@ -1,292 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isEqual } from 'lodash'; - -import { LOG_KEYS, getLogger } from '@parity/shared/config'; - -// FIXME: We should not import from shell -import UpgradeStore from '~/src/UpgradeParity/store'; - -import { isTestnet } from '../../util/testnet'; - -import BalancesProvider from './balances'; -import { statusBlockNumber, statusCollection } from './statusActions'; - -const log = getLogger(LOG_KEYS.Signer); -let instance = null; - -export default class Status { - _apiStatus = {}; - _status = {}; - _longStatus = {}; - _minerSettings = {}; - _timeoutIds = {}; - _blockNumberSubscriptionId = null; - _timestamp = Date.now(); - - constructor (store, api) { - this._api = api; - this._store = store; - this._upgradeStore = UpgradeStore.get(api); - - // On connecting, stop all subscriptions - api.on('connecting', this.stop, this); - - // On connected, start the subscriptions - api.on('connected', this.start, this); - - // On disconnected, stop all subscriptions - api.on('disconnected', this.stop, this); - - this.updateApiStatus(); - - if (api.isConnected) { - this.start(); - } - } - - static instantiate (store, api) { - if (!instance) { - instance = new Status(store, api); - } - - return instance; - } - - static get () { - if (!instance) { - throw new Error('The Status Provider has not been initialized yet'); - } - - return instance; - } - - start () { - log.debug('status::start'); - - Promise - .all([ - this._subscribeBlockNumber(), - - this._pollLongStatus(), - this._pollStatus() - ]) - .then(() => { - return BalancesProvider.start(); - }); - } - - stop () { - log.debug('status::stop'); - - const promises = []; - - if (this._blockNumberSubscriptionId) { - const promise = this._api - .unsubscribe(this._blockNumberSubscriptionId) - .then(() => { - this._blockNumberSubscriptionId = null; - }); - - promises.push(promise); - } - - Object.values(this._timeoutIds).forEach((timeoutId) => { - clearTimeout(timeoutId); - }); - - const promise = BalancesProvider.stop(); - - promises.push(promise); - - return Promise.all(promises) - .then(() => true) - .catch((error) => { - console.error('status::stop', error); - return true; - }) - .then(() => this.updateApiStatus()); - } - - updateApiStatus () { - const apiStatus = this.getApiStatus(); - - log.debug('status::updateApiStatus', apiStatus); - - if (!isEqual(apiStatus, this._apiStatus)) { - this._store.dispatch(statusCollection(apiStatus)); - this._apiStatus = apiStatus; - } - } - - _subscribeBlockNumber = () => { - return this._api - .subscribe('eth_blockNumber', (error, blockNumber) => { - if (error || !blockNumber) { - return; - } - - this._store.dispatch(statusBlockNumber(blockNumber)); - - this._api.parity - .getBlockHeaderByNumber(blockNumber) - .then((block) => { - if (!block) { - return; - } - - this._store.dispatch(statusCollection({ - blockTimestamp: block.timestamp, - gasLimit: block.gasLimit - })); - }) - .catch((error) => { - console.warn('status._subscribeBlockNumber', 'getBlockHeaderByNumber', error); - }); - }) - .then((blockNumberSubscriptionId) => { - this._blockNumberSubscriptionId = blockNumberSubscriptionId; - }); - } - - _pollTraceMode = () => { - return this._api.trace - .block() - .then(blockTraces => { - // Assumes not in Trace Mode if no transactions - // in latest block... - return blockTraces.length > 0; - }) - .catch(() => false); - } - - getApiStatus = () => { - const { isConnected, isConnecting, needsToken, secureToken } = this._api; - - return { - isConnected, - isConnecting, - needsToken, - secureToken - }; - } - - _pollStatus = () => { - const nextTimeout = (timeout = 1000) => { - if (this._timeoutIds.status) { - clearTimeout(this._timeoutIds.status); - } - - this._timeoutIds.status = setTimeout(() => this._pollStatus(), timeout); - }; - - this.updateApiStatus(); - - if (!this._api.isConnected) { - nextTimeout(250); - return Promise.resolve(); - } - - const statusPromises = [ - this._api.eth.syncing(), - this._api.parity.netPeers() - ]; - - return Promise - .all(statusPromises) - .then(([ syncing, netPeers ]) => { - const status = { netPeers, syncing }; - - if (!isEqual(status, this._status)) { - this._store.dispatch(statusCollection(status)); - this._status = status; - } - }) - .catch((error) => { - console.error('_pollStatus', error); - }) - .then(() => { - nextTimeout(); - }); - } - - /** - * The data fetched here should not change - * unless Parity is restarted. They are thus - * fetched every 30s just in case, and whenever - * the client got reconnected. - */ - _pollLongStatus = () => { - if (!this._api.isConnected) { - return Promise.resolve(); - } - - const { nodeKindFull } = this._store.getState().nodeStatus; - const defaultTimeout = (nodeKindFull === false ? 240 : 30) * 1000; - - const nextTimeout = (timeout = defaultTimeout) => { - if (this._timeoutIds.longStatus) { - clearTimeout(this._timeoutIds.longStatus); - } - - this._timeoutIds.longStatus = setTimeout(() => this._pollLongStatus(), timeout); - }; - - const statusPromises = [ - this._api.parity.nodeKind(), - this._api.parity.netPeers(), - this._api.web3.clientVersion(), - this._api.net.version(), - this._api.parity.netChain() - ]; - - if (nodeKindFull) { - statusPromises.push(this._upgradeStore.checkUpgrade()); - } - - return Promise - .all(statusPromises) - .then(([nodeKind, netPeers, clientVersion, netVersion, netChain]) => { - const isTest = isTestnet(netVersion); - - const nodeKindFull = nodeKind && - nodeKind.availability === 'personal' && - nodeKind.capability === 'full'; - - const longStatus = { - nodeKind, - nodeKindFull, - netPeers, - clientVersion, - netChain, - netVersion, - isTest - }; - - if (!isEqual(longStatus, this._longStatus)) { - this._store.dispatch(statusCollection(longStatus)); - this._longStatus = longStatus; - } - }) - .catch((error) => { - console.error('_pollLongStatus', error); - }) - .then(() => { - nextTimeout(60000); - }); - } -} diff --git a/js/packages/shared/redux/providers/statusActions.js b/js/packages/shared/redux/providers/statusActions.js deleted file mode 100644 index df18053e1..000000000 --- a/js/packages/shared/redux/providers/statusActions.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export function statusBlockNumber (blockNumber) { - return { - type: 'statusBlockNumber', - blockNumber - }; -} - -export function statusCollection (collection) { - return { - type: 'statusCollection', - collection - }; -} diff --git a/js/packages/shared/redux/providers/statusReducer.js b/js/packages/shared/redux/providers/statusReducer.js deleted file mode 100644 index 23da8616f..000000000 --- a/js/packages/shared/redux/providers/statusReducer.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import { handleActions } from 'redux-actions'; - -const DEFAULT_NETCHAIN = '(unknown)'; -const DEFAULT_STATUS = 'needsAttention'; -const initialState = { - blockNumber: new BigNumber(0), - blockTimestamp: new Date(), - clientVersion: '', - gasLimit: new BigNumber(0), - health: { - peers: { - status: DEFAULT_STATUS - }, - sync: { - status: DEFAULT_STATUS - }, - time: { - status: DEFAULT_STATUS - }, - overall: { - isReady: false, - status: DEFAULT_STATUS, - message: [] - } - }, - netChain: DEFAULT_NETCHAIN, - netPeers: { - active: new BigNumber(0), - connected: new BigNumber(0), - max: new BigNumber(0), - peers: [] - }, - netVersion: '0', - nodeKind: null, - nodeKindFull: null, - syncing: null, - isConnected: false, - isConnecting: false, - isTest: undefined, - traceMode: undefined -}; - -export default handleActions({ - statusBlockNumber (state, action) { - const { blockNumber } = action; - - return Object.assign({}, state, { blockNumber }); - }, - - statusCollection (state, action) { - const { collection } = action; - - return Object.assign({}, state, collection); - } -}, initialState); - -export { - DEFAULT_NETCHAIN, - initialState -}; diff --git a/js/packages/shared/redux/providers/tokensActions.js b/js/packages/shared/redux/providers/tokensActions.js deleted file mode 100644 index f036a31ec..000000000 --- a/js/packages/shared/redux/providers/tokensActions.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { uniq } from 'lodash'; - -import { IconCache } from '@parity/ui'; - -import { LOG_KEYS, getLogger } from '../../config'; -import Contracts from '../../contracts'; -import { fetchTokenIds, fetchTokenInfo } from '../../util/tokens'; - -import { updateTokensFilter } from './balancesActions'; - -const log = getLogger(LOG_KEYS.Balances); - -export function setTokens (tokens) { - return { - type: 'setTokens', - tokens - }; -} - -export function loadTokens (options = {}) { - log.debug('loading tokens', Object.keys(options).length ? options : ''); - - return (dispatch, getState) => { - const { api } = getState(); - const { tokenReg } = Contracts.get(api); - - tokenReg.getInstance() - .then((tokenRegInstance) => { - return fetchTokenIds(tokenRegInstance); - }) - .then((tokenIndexes) => dispatch(fetchTokens(tokenIndexes, options))) - .catch((error) => { - console.warn('tokens::loadTokens', error); - }); - }; -} - -export function fetchTokens (_tokenIndexes, options = {}) { - const tokenIndexes = uniq(_tokenIndexes || []); - - return (dispatch, getState) => { - const { api } = getState(); - const { tokenReg } = Contracts.get(api); - const iconCache = IconCache.get(); - - return tokenReg.getInstance() - .then((tokenRegInstance) => { - const promises = tokenIndexes.map((id) => fetchTokenInfo(api, tokenRegInstance, id)); - - return Promise.all(promises); - }) - .then((results) => { - const tokens = results - .reduce((tokens, token) => { - const { id, image, address } = token; - - // dispatch only the changed images - if (iconCache.images[address] !== image) { - iconCache.add(address, image, true); - } - - tokens[id] = token; - return tokens; - }, {}); - - log.debug('fetched token', tokens); - - dispatch(setTokens(tokens)); - dispatch(updateTokensFilter(null, null, options)); - }) - .catch((error) => { - console.warn('tokens::fetchTokens', error); - }); - }; -} diff --git a/js/packages/shared/redux/providers/tokensReducer.js b/js/packages/shared/redux/providers/tokensReducer.js deleted file mode 100644 index 2e8b90fa1..000000000 --- a/js/packages/shared/redux/providers/tokensReducer.js +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -import { ETH_TOKEN } from '@parity/shared/util/tokens'; - -const initialState = { - [ ETH_TOKEN.id ]: ETH_TOKEN -}; - -export default handleActions({ - setTokens (state, action) { - const { tokens } = action; - - return { - ...state, - ...tokens - }; - } -}, initialState); diff --git a/js/packages/shared/redux/providers/walletActions.js b/js/packages/shared/redux/providers/walletActions.js deleted file mode 100644 index 7db601a03..000000000 --- a/js/packages/shared/redux/providers/walletActions.js +++ /dev/null @@ -1,520 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { isEqual, uniq } from 'lodash'; - -import Contract from '@parity/api/contract'; -import { ERROR_CODES } from '@parity/api/transport/error'; -import { bytesToHex, toHex } from '@parity/api/util/format'; -import { newError } from '@parity/ui/Errors/actions'; - -import { wallet as WALLET_ABI } from '../../contracts/abi'; -import { MAX_GAS_ESTIMATION } from '../../util/constants'; -import WalletsUtils from '../../util/wallets'; - -const UPDATE_OWNERS = 'owners'; -const UPDATE_REQUIRE = 'require'; -const UPDATE_DAILYLIMIT = 'dailylimit'; -const UPDATE_TRANSACTIONS = 'transactions'; -const UPDATE_CONFIRMATIONS = 'confirmations'; - -export function confirmOperation (address, owner, operation) { - return modifyOperation('confirm', address, owner, operation); -} - -export function revokeOperation (address, owner, operation) { - return modifyOperation('revoke', address, owner, operation); -} - -function modifyOperation (method, address, owner, operation) { - return (dispatch, getState) => { - const { api } = getState(); - const contract = new Contract(api, WALLET_ABI).at(address); - - const options = { - from: owner, - gas: MAX_GAS_ESTIMATION - }; - - const values = [ operation ]; - - dispatch(setOperationPendingState(address, operation, true)); - - contract.instance[method] - .estimateGas(options, values) - .then((gas) => { - options.gas = gas.mul(1.2); - return contract.instance[method].postTransaction(options, values); - }) - .then((requestId) => { - return api - .pollMethod('parity_checkRequest', requestId) - .catch((e) => { - dispatch(setOperationPendingState(address, operation, false)); - if (e.code === ERROR_CODES.REQUEST_REJECTED) { - return; - } - - throw e; - }); - }) - .catch((error) => { - dispatch(setOperationPendingState(address, operation, false)); - dispatch(newError(error)); - }); - }; -} - -export function attachWallets (_wallets) { - return (dispatch, getState) => { - const { wallet, api } = getState(); - - const prevAddresses = wallet.walletsAddresses; - const nextAddresses = Object.keys(_wallets).map((a) => a.toLowerCase()).sort(); - - if (isEqual(prevAddresses, nextAddresses)) { - return; - } - - if (wallet.filterSubId) { - api.eth.uninstallFilter(wallet.filterSubId); - } - - if (nextAddresses.length === 0) { - return dispatch(updateWallets({ wallets: {}, walletsAddresses: [], filterSubId: null })); - } - - const filterOptions = { - fromBlock: 0, - toBlock: 'latest', - address: nextAddresses - }; - - api.eth - .newFilter(filterOptions) - .then((filterId) => { - dispatch(updateWallets({ wallets: _wallets, walletsAddresses: nextAddresses, filterSubId: filterId })); - }) - .catch((error) => { - if (process.env.NODE_ENV === 'production') { - console.error('walletActions::attachWallets', error); - } else { - throw error; - } - }); - - fetchWalletsInfo(Object.keys(_wallets))(dispatch, getState); - }; -} - -export function load (api) { - return (dispatch, getState) => { - const contract = new Contract(api, WALLET_ABI); - - dispatch(setWalletContract(contract)); - api.subscribe('eth_blockNumber', (error) => { - if (error) { - if (process.env.NODE_ENV === 'production') { - return console.error('[eth_blockNumber] walletActions::load', error); - } else { - throw error; - } - } - - const { filterSubId } = getState().wallet; - - if (!filterSubId) { - return; - } - - api.eth - .getFilterChanges(filterSubId) - .then((logs) => contract.parseEventLogs(logs)) - .then((logs) => { - parseLogs(logs)(dispatch, getState); - }) - .catch((error) => { - if (process.env.NODE_ENV === 'production') { - return console.error('[getFilterChanges] walletActions::load', error); - } else { - throw error; - } - }); - }); - }; -} - -function fetchWalletsInfo (updates) { - return (dispatch, getState) => { - if (Array.isArray(updates)) { - const _updates = updates.reduce((updates, address) => { - updates[address] = { - [ UPDATE_OWNERS ]: true, - [ UPDATE_REQUIRE ]: true, - [ UPDATE_DAILYLIMIT ]: true, - [ UPDATE_CONFIRMATIONS ]: true, - [ UPDATE_TRANSACTIONS ]: true, - address - }; - - return updates; - }, {}); - - return fetchWalletsInfo(_updates)(dispatch, getState); - } - - const { api } = getState(); - const _updates = Object.values(updates); - - Promise - .all(_updates.map((update) => { - const contract = new Contract(api, WALLET_ABI).at(update.address); - - return fetchWalletInfo(contract, update, getState); - })) - .then((updates) => { - dispatch(updateWalletsDetails(updates)); - }) - .catch((error) => { - if (process.env.NODE_ENV === 'production') { - return console.error('walletAction::fetchWalletsInfo', error); - } else { - throw error; - } - }); - }; -} - -function fetchWalletInfo (contract, update, getState) { - const promises = []; - - if (update[UPDATE_OWNERS]) { - promises.push(fetchWalletOwners(contract)); - } - - if (update[UPDATE_REQUIRE]) { - promises.push(fetchWalletRequire(contract)); - } - - if (update[UPDATE_DAILYLIMIT]) { - promises.push(fetchWalletDailylimit(contract)); - } - - if (update[UPDATE_TRANSACTIONS]) { - promises.push(fetchWalletTransactions(contract)); - } - - return Promise - .all(promises) - .then((updates) => { - if (update[UPDATE_CONFIRMATIONS]) { - const ownersUpdate = updates.find((u) => u.key === UPDATE_OWNERS); - const transactionsUpdate = updates.find((u) => u.key === UPDATE_TRANSACTIONS); - - const owners = ownersUpdate && ownersUpdate.value || null; - const transactions = transactionsUpdate && transactionsUpdate.value || null; - - return fetchWalletConfirmations(contract, update[UPDATE_CONFIRMATIONS], owners, transactions, getState) - .then((update) => { - updates.push(update); - return updates; - }); - } - - return updates; - }) - .then((updates) => { - const wallet = { address: update.address }; - - updates.forEach((update) => { - wallet[update.key] = update.value; - }); - - return wallet; - }); -} - -function fetchWalletTransactions (contract) { - return WalletsUtils - .fetchTransactions(contract) - .then((transactions) => { - return { - key: UPDATE_TRANSACTIONS, - value: transactions - }; - }); -} - -function fetchWalletOwners (contract) { - return WalletsUtils - .fetchOwners(contract) - .then((value) => { - return { - key: UPDATE_OWNERS, - value - }; - }); -} - -function fetchWalletRequire (contract) { - return WalletsUtils - .fetchRequire(contract) - .then((value) => { - return { - key: UPDATE_REQUIRE, - value - }; - }); -} - -function fetchWalletDailylimit (contract) { - return WalletsUtils - .fetchDailylimit(contract) - .then((value) => { - return { - key: UPDATE_DAILYLIMIT, - value - }; - }); -} - -function fetchWalletConfirmations (contract, _operations, _owners = null, _transactions = null, getState) { - const walletInstance = contract.instance; - - const wallet = getState().wallet.wallets[contract.address]; - - const owners = _owners || (wallet && wallet.owners) || null; - const transactions = _transactions || (wallet && wallet.transactions) || null; - // Full load if no operations given, or if the one given aren't loaded yet - const fullLoad = !Array.isArray(_operations) || _operations - .filter((op) => !wallet.confirmations.find((conf) => conf.operation === op)) - .length > 0; - - let promise; - - if (fullLoad) { - promise = walletInstance - .ConfirmationNeeded - .getAllLogs() - .then((logs) => { - return logs.map((log) => ({ - initiator: log.params.initiator.value, - to: log.params.to.value, - data: log.params.data.value, - value: log.params.value.value, - operation: bytesToHex(log.params.operation.value), - transactionIndex: log.transactionIndex, - transactionHash: log.transactionHash, - blockNumber: log.blockNumber, - confirmedBy: [] - })); - }) - .then((logs) => { - return logs.sort((logA, logB) => { - const comp = logA.blockNumber.comparedTo(logB.blockNumber); - - if (comp !== 0) { - return comp; - } - - return logA.transactionIndex.comparedTo(logB.transactionIndex); - }); - }) - .then((confirmations) => { - if (confirmations.length === 0) { - return confirmations; - } - - // Only fetch confirmations for operations not - // yet confirmed (ie. not yet a transaction) - if (transactions) { - const operations = transactions - .filter((t) => t.operation) - .map((t) => t.operation); - - return confirmations.filter((confirmation) => { - return !operations.includes(confirmation.operation); - }); - } - - return confirmations; - }); - } else { - const { confirmations } = wallet; - const nextConfirmations = confirmations - .filter((conf) => _operations.includes(conf.operation)); - - promise = Promise.resolve(nextConfirmations); - } - - return promise - .then((confirmations) => { - if (confirmations.length === 0) { - return confirmations; - } - - const uniqConfirmations = Object.values( - confirmations.reduce((confirmations, confirmation) => { - confirmations[confirmation.operation] = confirmation; - return confirmations; - }, {}) - ); - - const operations = uniqConfirmations.map((conf) => conf.operation); - - return Promise - .all(operations.map((op) => fetchOperationConfirmations(contract, op, owners))) - .then((confirmedBys) => { - uniqConfirmations.forEach((_, index) => { - uniqConfirmations[index].confirmedBy = confirmedBys[index]; - }); - - return uniqConfirmations; - }); - }) - .then((confirmations) => { - const prevConfirmations = wallet.confirmations || []; - const nextConfirmations = prevConfirmations - .filter((conA) => !confirmations.find((conB) => conB.operation === conA.operation)) - .concat(confirmations) - .map((conf) => ({ - ...conf, - pending: false - })); - - return { - key: UPDATE_CONFIRMATIONS, - value: nextConfirmations - }; - }); -} - -function fetchOperationConfirmations (contract, operation, owners = null) { - if (!owners) { - console.warn('[fetchOperationConfirmations] try to provide the owners for the Wallet', contract.address); - } - - const walletInstance = contract.instance; - - const promise = owners - ? Promise.resolve({ value: owners }) - : fetchWalletOwners(contract); - - return promise - .then((result) => { - const owners = result.value; - - return Promise - .all(owners.map((owner) => walletInstance.hasConfirmed.call({}, [ operation, owner ]))) - .then((data) => { - return owners.filter((owner, index) => data[index]); - }); - }); -} - -function parseLogs (logs) { - return (dispatch, getState) => { - if (!logs || logs.length === 0) { - return; - } - - const WalletSignatures = WalletsUtils.getWalletSignatures(); - - const updates = {}; - - logs.forEach((log) => { - const { address, topics } = log; - const eventSignature = toHex(topics[0]); - const prev = updates[address] || { - [ UPDATE_DAILYLIMIT ]: true, - address - }; - - switch (eventSignature) { - case WalletSignatures.OwnerChanged: - case WalletSignatures.OwnerAdded: - case WalletSignatures.OwnerRemoved: - updates[address] = { - ...prev, - [ UPDATE_OWNERS ]: true - }; - return; - - case WalletSignatures.RequirementChanged: - updates[address] = { - ...prev, - [ UPDATE_REQUIRE ]: true - }; - return; - - case WalletSignatures.ConfirmationNeeded: - case WalletSignatures.Confirmation: - case WalletSignatures.Revoke: - const operation = bytesToHex(log.params.operation.value); - - updates[address] = { - ...prev, - [ UPDATE_CONFIRMATIONS ]: uniq( - (prev[UPDATE_CONFIRMATIONS] || []).concat(operation) - ) - }; - - return; - - case WalletSignatures.Deposit: - case WalletSignatures.SingleTransact: - case WalletSignatures.MultiTransact: - case WalletSignatures.Old.SingleTransact: - case WalletSignatures.Old.MultiTransact: - updates[address] = { - ...prev, - [ UPDATE_TRANSACTIONS ]: true - }; - return; - } - }); - - fetchWalletsInfo(updates)(dispatch, getState); - }; -} - -function setOperationPendingState (address, operation, isPending) { - return { - type: 'setOperationPendingState', - address, operation, isPending - }; -} - -function updateWalletsDetails (wallets) { - return { - type: 'updateWalletsDetails', - wallets - }; -} - -function setWalletContract (contract) { - return { - type: 'setWalletContract', - contract - }; -} - -function updateWallets (data) { - return { - type: 'updateWallets', - ...data - }; -} diff --git a/js/packages/shared/redux/providers/walletReducer.js b/js/packages/shared/redux/providers/walletReducer.js deleted file mode 100644 index eb8e43c37..000000000 --- a/js/packages/shared/redux/providers/walletReducer.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -const initialState = { - wallets: {}, - walletsAddresses: [], - filterSubId: null, - contract: null -}; - -export default handleActions({ - updateWallets: (state, action) => { - const { wallets, walletsAddresses, filterSubId } = action; - - return { - ...state, - wallets, walletsAddresses, filterSubId - }; - }, - - updateWalletsDetails: (state, action) => { - const { wallets } = action; - const prevWallets = state.wallets; - - const nextWallets = { ...prevWallets }; - - Object.values(wallets).forEach((wallet) => { - const prevWallet = prevWallets[wallet.address] || {}; - - nextWallets[wallet.address] = { - instance: (state.contract && state.contract.instance) || null, - ...prevWallet, - ...wallet - }; - }); - - return { - ...state, - wallets: nextWallets - }; - }, - - setWalletContract: (state, action) => { - const { contract } = action; - - return { - ...state, - contract - }; - }, - - setOperationPendingState: (state, action) => { - const { address, operation, isPending } = action; - const { wallets } = state; - - const wallet = { ...wallets[address] }; - - wallet.confirmations = wallet.confirmations.map((conf) => { - if (conf.operation === operation) { - conf.pending = isPending; - } - - return conf; - }); - - return { - ...state, - wallets: { - ...wallets, - [ address ]: wallet - } - }; - } -}, initialState); diff --git a/js/packages/shared/redux/providers/worker.js b/js/packages/shared/redux/providers/worker.js deleted file mode 100644 index 8e7d8a4b0..000000000 --- a/js/packages/shared/redux/providers/worker.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import PromiseWorker from 'promise-worker'; -import runtime from 'serviceworker-webpack-plugin/lib/runtime'; - -// FIXME: WebWorker here should be close, not in src -import WebWorker from 'worker-loader!~/src/webWorker.js'; - -import { setWorker } from './workerActions'; - -// Setup the Service Worker -setupServiceWorker() - .then(() => console.log('SW is setup')) - .catch((error) => console.error('SW error', error)); - -function setupServiceWorker () { - if (!('serviceWorker' in navigator)) { - return Promise.reject('Service Worker is not available in your browser.'); - } - - const getServiceWorker = () => { - return navigator.serviceWorker.ready - .then((registration) => { - const worker = registration.active; - - worker.controller = registration.active; - - return new PromiseWorker(worker); - }); - }; - - return new Promise((resolve, reject) => { - // Safe guard for registration bugs (happens in Chrome sometimes) - const timeoutId = window.setTimeout(() => { - console.warn('could not register SW after 2.5s'); - getServiceWorker().then(resolve).catch(reject); - }, 2500); - - // Setup the Service Worker - runtime - .register() - .then(() => { - window.clearTimeout(timeoutId); - return getServiceWorker(); - }) - .then(resolve).catch(reject); - }); -} - -function getWorker () { - try { - const worker = new PromiseWorker(new WebWorker()); - - return Promise.resolve(worker); - } catch (error) { - return Promise.reject(error); - } -} - -export const setupWorker = (store) => { - const { dispatch, getState } = store; - - const state = getState(); - const stateWorker = state.worker.worker; - - if (stateWorker !== undefined) { - return; - } - - getWorker() - .then((worker) => { - dispatch(setWorker(worker)); - }) - .catch((error) => { - console.error('setupWorker', error); - dispatch(setWorker(null)); - }); -}; diff --git a/js/packages/shared/redux/providers/workerActions.js b/js/packages/shared/redux/providers/workerActions.js deleted file mode 100644 index 5598c154b..000000000 --- a/js/packages/shared/redux/providers/workerActions.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export function setWorker (worker) { - return { - type: 'setWorker', - worker - }; -} - -export function setError (error) { - return { - type: 'setError', - error - }; -} diff --git a/js/packages/shared/redux/providers/workerReducer.js b/js/packages/shared/redux/providers/workerReducer.js deleted file mode 100644 index 566b25c75..000000000 --- a/js/packages/shared/redux/providers/workerReducer.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { handleActions } from 'redux-actions'; - -const initialState = { - worker: undefined, - error: null -}; - -export default handleActions({ - setWorker (state, action) { - const { worker } = action; - - return Object.assign({}, state, { worker: worker || null }); - }, - - setError (state, action) { - const { error } = action; - - return Object.assign({}, state, { error }); - } -}, initialState); diff --git a/js/packages/shared/redux/providers/workerWrapper.js b/js/packages/shared/redux/providers/workerWrapper.js deleted file mode 100644 index c6bb5daca..000000000 --- a/js/packages/shared/redux/providers/workerWrapper.js +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -if (!process.env.EMBED) { - const setupWorker = require('./worker').setupWorker; - - module.exports = { setupWorker }; -} else { - module.exports = { setupWorker: () => {} }; -} diff --git a/js/packages/shared/redux/reducers.js b/js/packages/shared/redux/reducers.js deleted file mode 100644 index 255150d74..000000000 --- a/js/packages/shared/redux/reducers.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { combineReducers } from 'redux'; -import { routerReducer } from 'react-router-redux'; - -import { - apiReducer, balancesReducer, - workerReducer, personalReducer, requestsReducer, - settingsReducer, signerReducer, statusReducer as nodeStatusReducer, - snackbarReducer, tokensReducer, walletReducer -} from './providers'; -import certificationsReducer from './providers/certifications/reducer'; -import registryReducer from './providers/registry/reducer'; - -import errorReducer from '@parity/ui/Errors/reducers'; - -export default function () { - return combineReducers({ - api: apiReducer, - errors: errorReducer, - routing: routerReducer, - settings: settingsReducer, - - balances: balancesReducer, - certifications: certificationsReducer, - nodeStatus: nodeStatusReducer, - personal: personalReducer, - registry: registryReducer, - requests: requestsReducer, - signer: signerReducer, - snackbar: snackbarReducer, - tokens: tokensReducer, - wallet: walletReducer, - worker: workerReducer - }); -} diff --git a/js/packages/shared/redux/store.js b/js/packages/shared/redux/store.js deleted file mode 100644 index 056e8d56c..000000000 --- a/js/packages/shared/redux/store.js +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { applyMiddleware, createStore } from 'redux'; - -import initMiddleware from './middleware'; -import initReducers from './reducers'; - -import { setApi } from './providers/apiActions'; -import { startCachingReverses } from './providers/registry/actions'; -import { init as initRequests } from './providers/requestsActions'; -import { load as loadWallet } from './providers/walletActions'; -import { setupWorker } from './providers/workerWrapper'; - -import { - Balances as BalancesProvider, - Personal as PersonalProvider, - Signer as SignerProvider, - Status as StatusProvider -} from './providers'; - -const storeCreation = window.devToolsExtension - ? window.devToolsExtension()(createStore) - : createStore; - -export default function (api, browserHistory, forEmbed = false) { - const reducers = initReducers(); - const middleware = initMiddleware(api, browserHistory, forEmbed); - const store = applyMiddleware(...middleware)(storeCreation)(reducers); - - store.dispatch(setApi(api)); - - BalancesProvider.instantiate(store, api); - StatusProvider.instantiate(store, api); - new PersonalProvider(store, api).start(); - new SignerProvider(store, api).start(); - - store.dispatch(startCachingReverses()); - store.dispatch(loadWallet(api)); - store.dispatch(initRequests(api)); - - setupWorker(store); - - return store; -} diff --git a/js/packages/shared/redux/util.js b/js/packages/shared/redux/util.js deleted file mode 100644 index d3b2a870f..000000000 --- a/js/packages/shared/redux/util.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { withError } from '@parity/ui/Errors/middleware'; - -export { - withError -}; diff --git a/js/packages/shared/util/abi.js b/js/packages/shared/util/abi.js deleted file mode 100644 index e2670f387..000000000 --- a/js/packages/shared/util/abi.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { range } from 'lodash'; - -const ARRAY_TYPE = 'ARRAY_TYPE'; -const ADDRESS_TYPE = 'ADDRESS_TYPE'; -const STRING_TYPE = 'STRING_TYPE'; -const BOOL_TYPE = 'BOOL_TYPE'; -const BYTES_TYPE = 'BYTES_TYPE'; -const INT_TYPE = 'INT_TYPE'; -const FIXED_TYPE = 'FIXED_TYPE'; - -export const ABI_TYPES = { - ARRAY: ARRAY_TYPE, ADDRESS: ADDRESS_TYPE, - STRING: STRING_TYPE, BOOL: BOOL_TYPE, - BYTES: BYTES_TYPE, INT: INT_TYPE, - FIXED: FIXED_TYPE -}; - -export function parseAbiType (type) { - const arrayRegex = /^(.+)\[(\d*)]$/; - - if (arrayRegex.test(type)) { - const matches = arrayRegex.exec(type); - - const subtype = parseAbiType(matches[1]); - const M = parseInt(matches[2]) || null; - const defaultValue = !M - ? [] - : range(M).map(() => subtype.default); - - return { - type: ARRAY_TYPE, - subtype: subtype, - length: M, - default: defaultValue - }; - } - - const lengthRegex = /^(u?int|bytes)(\d{1,3})$/; - - if (lengthRegex.test(type)) { - const matches = lengthRegex.exec(type); - - const subtype = parseAbiType(matches[1]); - const length = parseInt(matches[2]); - - return { - ...subtype, - length - }; - } - - const fixedLengthRegex = /^(u?fixed)(\d{1,3})x(\d{1,3})$/; - - if (fixedLengthRegex.test(type)) { - const matches = fixedLengthRegex.exec(type); - - const subtype = parseAbiType(matches[1]); - const M = parseInt(matches[2]); - const N = parseInt(matches[3]); - - return { - ...subtype, - M, N - }; - } - - if (type === 'string') { - return { - type: STRING_TYPE, - default: '' - }; - } - - if (type === 'bool') { - return { - type: BOOL_TYPE, - default: false - }; - } - - if (type === 'address') { - return { - type: ADDRESS_TYPE, - default: '' - }; - } - - if (type === 'bytes' || type === 'fixedBytes') { - return { - type: BYTES_TYPE, - default: '0x' - }; - } - - if (type === 'uint') { - return { - type: INT_TYPE, - default: 0, - length: 256, - signed: false - }; - } - - if (type === 'int') { - return { - type: INT_TYPE, - default: 0, - length: 256, - signed: true - }; - } - - if (type === 'ufixed') { - return { - type: FIXED_TYPE, - default: 0, - length: 256, - signed: false - }; - } - - if (type === 'fixed') { - return { - type: FIXED_TYPE, - default: 0, - length: 256, - signed: true - }; - } - - // If no matches, return null - return null; -} diff --git a/js/packages/shared/util/constants.js b/js/packages/shared/util/constants.js deleted file mode 100644 index 4a5548de9..000000000 --- a/js/packages/shared/util/constants.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -const DEFAULT_GAS = '21000'; -const DEFAULT_GASPRICE = '20000000000'; - -const MAX_GAS_ESTIMATION = '50000000'; - -const NULL_ADDRESS = '0000000000000000000000000000000000000000'; - -const DOMAIN = '.web3.site'; - -export { - DEFAULT_GAS, - DEFAULT_GASPRICE, - MAX_GAS_ESTIMATION, - NULL_ADDRESS, - DOMAIN -}; diff --git a/js/packages/shared/util/dapps.js b/js/packages/shared/util/dapps.js deleted file mode 100644 index be34ba874..000000000 --- a/js/packages/shared/util/dapps.js +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import { pick, range, uniq } from 'lodash'; - -import { bytesToHex } from '@parity/api/util/format'; -import { IconCache } from '@parity/ui'; - -import builtinJson from '../config/dappsBuiltin.json'; -import viewsJson from '../config/dappsViews.json'; -import Contracts from '../contracts'; - -const builtinApps = [].concat( - viewsJson.map((app) => { - app.isView = true; - return app; - }), - builtinJson.filter((app) => app.id) -); - -export function subscribeToChanges (api, dappReg, callback) { - return dappReg - .getContract() - .then((dappRegContract) => { - const dappRegInstance = dappRegContract.instance; - - const signatures = ['MetaChanged', 'OwnerChanged', 'Registered'] - .map((event) => dappRegInstance[event].signature); - - return api.eth - .newFilter({ - fromBlock: '0', - toBlock: 'latest', - address: dappRegInstance.address, - topics: [ signatures ] - }) - .then((filterId) => { - return api - .subscribe('eth_blockNumber', () => { - if (filterId > -1) { - api.eth - .getFilterChanges(filterId) - .then((logs) => { - return dappRegContract.parseEventLogs(logs); - }) - .then((events) => { - if (events.length === 0) { - return []; - } - - // Return uniq IDs which changed meta-data - const ids = uniq(events.map((event) => bytesToHex(event.params.id.value))); - - callback(ids); - }); - } - }) - .then((blockSubId) => { - return { - block: blockSubId, - filter: filterId - }; - }); - }); - }); -} - -export function fetchBuiltinApps (api) { - const { dappReg } = Contracts.get(api); - - return Promise - .all(builtinApps.map((app) => dappReg.getImage(app.id))) - .then((imageIds) => { - return builtinApps.map((app, index) => { - app.type = app.isView - ? 'view' - : 'builtin'; - app.image = IconCache.hashToImage(imageIds[index]); - return app; - }); - }) - .catch((error) => { - console.warn('DappsStore:fetchBuiltinApps', error); - }); -} - -export function fetchLocalApps (api) { - return api.parity.dappsList() - .then((apps) => { - return apps - .map((app) => { - app.type = 'local'; - app.visible = true; - return app; - }) - .filter((app) => app.id && !['ui'].includes(app.id)); - }) - .catch((error) => { - console.warn('DappsStore:fetchLocal', error); - }); -} - -export function fetchRegistryAppIds (api) { - const { dappReg } = Contracts.get(api); - - return dappReg - .count() - .then((count) => { - const promises = range(0, count.toNumber()).map((index) => dappReg.at(index)); - - return Promise.all(promises); - }) - .then((appsInfo) => { - const appIds = appsInfo - .map(([appId, owner]) => bytesToHex(appId)) - .filter((appId) => { - return (new BigNumber(appId)).gt(0) && !builtinApps.find((app) => app.id === appId); - }); - - return uniq(appIds); - }) - .catch((error) => { - console.warn('DappsStore:fetchRegistryAppIds', error); - }); -} - -export function fetchRegistryApp (api, dappReg, appId) { - return Promise - .all([ - dappReg.getImage(appId), - dappReg.getContent(appId), - dappReg.getManifest(appId) - ]) - .then(([ imageId, contentId, manifestId ]) => { - const app = { - id: appId, - image: IconCache.hashToImage(imageId), - contentHash: bytesToHex(contentId).substr(2), - manifestHash: bytesToHex(manifestId).substr(2), - type: 'network', - visible: true - }; - - return fetchManifest(api, app.manifestHash) - .then((manifest) => { - if (manifest) { - app.manifestHash = null; - - // Add usefull manifest fields to app - Object.assign(app, pick(manifest, ['author', 'description', 'name', 'version'])); - } - - return app; - }); - }) - .then((app) => { - // Keep dapps that has a Manifest File and an Id - const dapp = (app.manifestHash || !app.id) ? null : app; - - return dapp; - }) - .catch((error) => { - console.warn('DappsStore:fetchRegistryApp', error); - }); -} - -export function fetchManifest (api, manifestHash) { - if (/^(0x)?0+/.test(manifestHash)) { - return Promise.resolve(null); - } - - return fetch( - `/api/content/${manifestHash}/`, - { redirect: 'follow', mode: 'cors' } - ) - .then((response) => { - return response.ok - ? response.json() - : null; - }) - .then((manifest) => { - return manifest; - }) - .catch((error) => { - console.warn('DappsStore:fetchManifest', error); - return null; - }); -} diff --git a/js/packages/shared/util/messages.js b/js/packages/shared/util/messages.js deleted file mode 100644 index e9017e85a..000000000 --- a/js/packages/shared/util/messages.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -/** - * Convert a String or a FormattedMessage - * element into a string - * - * @param {Object} context - The React `context` - * @param {String|Object} value - A String or a FormattedMessage - * element - * @return {String} - */ -export function parseI18NString (context, value) { - if (!context.intl) { - console.warn(`remember to add: - static contextTypes = { - intl: React.PropTypes.object.isRequired - }; - to your component`); - return value; - } - - const textValue = typeof value !== 'string' && (value && value.props) - ? context.intl.formatMessage( - value.props, - value.props.values || {} - ) - : value || ''; - - return textValue; -} diff --git a/js/packages/shared/util/notifications.js b/js/packages/shared/util/notifications.js deleted file mode 100644 index 296fb0f6f..000000000 --- a/js/packages/shared/util/notifications.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import Push from 'push.js'; -import BigNumber from 'bignumber.js'; - -import unkownIcon from '../assets/images/contracts/unknown-64x64.png'; - -export function notifyTransaction (account, token, _value, onClick) { - const name = account.name || account.address; - const value = _value.div(new BigNumber(token.format || 1)); - const icon = token.image || unkownIcon; - - let _notification = null; - - Push - .create(`${name}`, { - body: `You just received ${value.toFormat(3)} ${token.tag.toUpperCase()}`, - icon: { - x16: icon, - x32: icon - }, - timeout: 20000, - onClick: () => { - // Focus on the UI - try { - window.focus(); - } catch (e) {} - - if (onClick && typeof onClick === 'function') { - onClick(); - } - - // Close the notification - if (_notification) { - _notification.close(); - _notification = null; - } - } - }) - .then((notification) => { - _notification = notification; - }); -} diff --git a/js/packages/shared/util/proptypes.js b/js/packages/shared/util/proptypes.js deleted file mode 100644 index 9192f87bd..000000000 --- a/js/packages/shared/util/proptypes.js +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import PropTypes from 'prop-types'; - -export function arrayOrObjectProptype () { - return PropTypes.oneOfType([ - PropTypes.array, - PropTypes.object - ]); -} - -export function nullableProptype (type) { - return PropTypes.oneOfType([ - PropTypes.oneOf([ null ]), - type - ]); -} - -export function nodeOrStringProptype () { - return PropTypes.oneOfType([ - PropTypes.node, - PropTypes.string - ]); -} diff --git a/js/packages/shared/util/signer.js b/js/packages/shared/util/signer.js deleted file mode 100644 index 4e5632ee3..000000000 --- a/js/packages/shared/util/signer.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import scrypt from 'scryptsy'; -import Transaction from 'ethereumjs-tx'; -import { pbkdf2Sync } from 'crypto'; -import { createDecipheriv } from 'browserify-aes'; - -import { inHex } from '@parity/api/format/input'; -import { sha3 } from '@parity/api/util/sha3'; - -// Adapted from https://github.com/kvhnuke/etherwallet/blob/mercury/app/scripts/myetherwallet.js - -export class Signer { - static fromJson (json, password) { - return Signer - .getSeed(json, password) - .then((seed) => { - return new Signer(seed); - }); - } - - static getSeed (json, password) { - try { - const seed = Signer.getSyncSeed(json, password); - - return Promise.resolve(seed); - } catch (error) { - return Promise.reject(error); - } - } - - static getSyncSeed (json, password) { - if (json.version !== 3) { - throw new Error('Only V3 wallets are supported'); - } - - const { kdf } = json.crypto; - const kdfparams = json.crypto.kdfparams || {}; - const pwd = Buffer.from(password); - const salt = Buffer.from(kdfparams.salt, 'hex'); - let derivedKey; - - if (kdf === 'scrypt') { - derivedKey = scrypt(pwd, salt, kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen); - } else if (kdf === 'pbkdf2') { - if (kdfparams.prf !== 'hmac-sha256') { - throw new Error('Unsupported parameters to PBKDF2'); - } - - derivedKey = pbkdf2Sync(pwd, salt, kdfparams.c, kdfparams.dklen, 'sha256'); - } else { - throw new Error('Unsupported key derivation scheme'); - } - - const ciphertext = Buffer.from(json.crypto.ciphertext, 'hex'); - const mac = sha3(Buffer.concat([derivedKey.slice(16, 32), ciphertext])); - - if (mac !== inHex(json.crypto.mac)) { - throw new Error('Key derivation failed - possibly wrong password'); - } - - const decipher = createDecipheriv( - json.crypto.cipher, - derivedKey.slice(0, 16), - Buffer.from(json.crypto.cipherparams.iv, 'hex') - ); - - let seed = Buffer.concat([decipher.update(ciphertext), decipher.final()]); - - while (seed.length < 32) { - const nullBuff = Buffer.from([0x00]); - - seed = Buffer.concat([nullBuff, seed]); - } - - return seed; - } - - constructor (seed) { - this.seed = seed; - } - - signTransactionObject (tx) { - tx.sign(this.seed); - - return tx; - } - - signTransaction (transaction) { - const tx = new Transaction(transaction); - - return inHex(this.signTransactionObject(tx).serialize().toString('hex')); - } -} diff --git a/js/packages/shared/util/solidity.js b/js/packages/shared/util/solidity.js deleted file mode 100644 index 7309e8072..000000000 --- a/js/packages/shared/util/solidity.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import solc from 'solc/browser-wrapper'; - -export default class SolidityUtils { - static compile (data, compiler) { - const { sourcecode, build, optimize, files, name = '' } = data; - - const start = Date.now(); - - console.log('[solidity] compiling...'); - - const input = { - [ name ]: sourcecode - }; - - const findFiles = (path) => { - const file = files.find((f) => f.name === path); - - if (file) { - return { contents: file.sourcecode }; - } else { - return { error: 'File not found' }; - } - }; - - const compiled = compiler.compile({ sources: input }, optimize ? 1 : 0, findFiles); - - const time = Math.round((Date.now() - start) / 100) / 10; - - console.log(`[solidity] done compiling in ${time}s`); - - compiled.version = build.longVersion; - compiled.sourcecode = sourcecode; - - return compiled; - } - - static getCompiler (build) { - const { longVersion, path } = build; - const URL = `https://cdn.rawgit.com/ethereum/solc-bin/gh-pages/bin/${path}`; - const isWorker = typeof window !== 'object'; - - return fetch(URL) - .then((r) => r.text()) - .then((code) => { - // `window` for main thread, `self` for workers - const _self = isWorker ? self : window; - - _self.Module = {}; - - const solcCode = code.replace('var Module;', `var Module=${isWorker ? 'self' : 'window'}.Module;`); - - console.log(`[solidity] evaluating ${longVersion}`); - - try { - // eslint-disable-next-line no-eval - eval(solcCode); - } catch (e) { - return Promise.reject(e); - } - - console.log(`[solidity] done evaluating ${longVersion}`); - - const compiler = solc(_self.Module); - - delete _self.Module; - - return compiler; - }); - } -} diff --git a/js/packages/shared/util/subscribe-to-events.js b/js/packages/shared/util/subscribe-to-events.js deleted file mode 100644 index 20c04260e..000000000 --- a/js/packages/shared/util/subscribe-to-events.js +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import EventEmitter from 'eventemitter3'; - -const defaults = { - from: 0, - to: 'latest', - interval: 5000, - filter: () => true -}; - -const subscribeToEvents = (contract, events, opt = {}) => { - const { api } = contract; - - opt = Object.assign({}, defaults, opt); - - let filter = null; - let interval = null; - - const unsubscribe = () => { - if (filter) { - filter - .then((filterId) => { - return api.eth.uninstallFilter(filterId); - }) - .catch((err) => { - emitter.emit('error', err); - }); - filter = null; - } - if (interval) { - clearInterval(interval); - interval = null; - } - }; - - const emitter = new EventEmitter(); - - emitter.unsubscribe = unsubscribe; - - const fetcher = (method, filterId) => () => { - api - .eth[method](filterId) - .then((logs) => { - logs = contract.parseEventLogs(logs); - - for (let log of logs) { - if (opt.filter(log)) { - emitter.emit('log', log); - emitter.emit(log.event, log); - } - } - }) - .catch((err) => { - emitter.emit('error', err); - }); - }; - - const signatures = events - .filter((event) => contract.instance[event]) - .map((event) => contract.instance[event].signature); - - filter = api.eth - .newFilter({ - fromBlock: opt.from, - toBlock: opt.to, - address: contract.address, - topics: [signatures] - }) - .then((filterId) => { - fetcher('getFilterLogs', filterId)(); // fetch immediately - - const fetchChanges = fetcher('getFilterChanges', filterId); - - interval = setInterval(fetchChanges, opt.interval); - - return filterId; - }) - .catch((err) => { - emitter.emit('error', err); - throw err; // reject Promise - }); - - return emitter; -}; - -export default subscribeToEvents; diff --git a/js/packages/shared/util/subscribe-to-events.spec.js b/js/packages/shared/util/subscribe-to-events.spec.js deleted file mode 100644 index db0d40f07..000000000 --- a/js/packages/shared/util/subscribe-to-events.spec.js +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { spy, stub, useFakeTimers } from 'sinon'; - -import subscribeToEvents from './subscribe-to-events'; -import { - pastLogs, liveLogs, createApi, createContract -} from './subscribe-to-events.test.js'; - -// Note: We want to have a `setTimeout` that is independent from -// `sinon.useFakeTimers`. Therefore we dereference `setTimeout` here. -const _setTimeout = setTimeout; -const delay = (t) => new Promise((resolve) => { - _setTimeout(resolve, t); -}); - -describe('util/subscribe-to-events', () => { - beforeEach(function () { - this.api = createApi(); - this.contract = createContract(this.api); - }); - - it('installs a filter', async function () { - const { api, contract } = this; - - subscribeToEvents(contract, [ 'Foo', 'Bar' ]); - await delay(0); - - expect(api.eth.newFilter.calledOnce).to.equal(true); - expect(api.eth.newFilter.firstCall.args).to.eql([ { - fromBlock: 0, toBlock: 'latest', - address: contract.address, - topics: [ [ - contract.instance.Foo.signature, - contract.instance.Bar.signature - ] ] - } ]); - }); - - it('queries & parses logs in the beginning', async function () { - const { api, contract } = this; - - subscribeToEvents(contract, [ 'Foo', 'Bar' ]); - - await delay(0); - expect(api.eth.getFilterLogs.callCount).to.equal(1); - expect(api.eth.getFilterLogs.firstCall.args).to.eql([ 123 ]); - - await delay(0); - expect(contract.parseEventLogs.callCount).to.equal(1); - }); - - it('emits logs in the beginning', async function () { - const { contract } = this; - - const onLog = spy(); - const onFoo = spy(); - const onBar = spy(); - - subscribeToEvents(contract, [ 'Foo', 'Bar' ]) - .on('log', onLog) - .on('Foo', onFoo) - .on('Bar', onBar); - - await delay(0); - - expect(onLog.callCount).to.equal(2); - expect(onLog.firstCall.args).to.eql([ pastLogs[0] ]); - expect(onLog.secondCall.args).to.eql([ pastLogs[1] ]); - expect(onFoo.callCount).to.equal(1); - expect(onFoo.firstCall.args).to.eql([ pastLogs[0] ]); - expect(onBar.callCount).to.equal(1); - expect(onBar.firstCall.args).to.eql([ pastLogs[1] ]); - }); - - it('uninstalls the filter on sunsubscribe', async function () { - const { api, contract } = this; - - const s = subscribeToEvents(contract, [ 'Foo', 'Bar' ]); - - await delay(0); - s.unsubscribe(); - await delay(0); - - expect(api.eth.uninstallFilter.calledOnce).to.equal(true); - expect(api.eth.uninstallFilter.firstCall.args).to.eql([ 123 ]); - }); - - it('checks for new events regularly', async function () { - const clock = useFakeTimers(); - const { api, contract } = this; - - api.eth.getFilterLogs = stub().resolves([]); - - const onLog = spy(); - const onBar = spy(); - - subscribeToEvents(contract, [ 'Bar' ], { interval: 5 }) - .on('log', onLog) - .on('Bar', onBar); - await delay(1); // let stubs resolve - clock.tick(5); - await delay(1); // let stubs resolve - - expect(onLog.callCount).to.be.at.least(1); - expect(onLog.firstCall.args).to.eql([ liveLogs[0] ]); - expect(onBar.callCount).to.be.at.least(1); - expect(onBar.firstCall.args).to.eql([ liveLogs[0] ]); - - clock.restore(); - }); - - it('accepts a custom block range', async function () { - const { api, contract } = this; - - subscribeToEvents(contract, [ 'Foo' ], { from: 123, to: 321 }); - - await delay(0); - expect(api.eth.newFilter.callCount).to.equal(1); - expect(api.eth.newFilter.firstCall.args[0].fromBlock).to.equal(123); - expect(api.eth.newFilter.firstCall.args[0].toBlock).to.equal(321); - }); -}); diff --git a/js/packages/shared/util/subscribe-to-events.test.js b/js/packages/shared/util/subscribe-to-events.test.js deleted file mode 100644 index 306a98ecb..000000000 --- a/js/packages/shared/util/subscribe-to-events.test.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { stub } from 'sinon'; - -export const ADDRESS = '0x1111111111111111111111111111111111111111'; - -export const pastLogs = [ - { event: 'Foo', type: 'mined', address: ADDRESS, params: {} }, - { event: 'Bar', type: 'mined', address: ADDRESS, params: {} } -]; - -export const liveLogs = [ - { event: 'Bar', type: 'mined', address: ADDRESS, params: { foo: 'bar' } } -]; - -export const createApi = () => ({ - eth: { - newFilter: stub().resolves(123), - uninstallFilter: stub() - .rejects(new Error('unknown filter id')) - .withArgs(123).resolves(null), - getFilterLogs: stub() - .rejects(new Error('unknown filter id')) - .withArgs(123).resolves(pastLogs), - getFilterChanges: stub() - .rejects(new Error('unknown filter id')) - .withArgs(123).resolves(liveLogs) - } -}); - -export const createContract = (api) => ({ - api, - address: ADDRESS, - instance: { - Foo: { signature: 'Foo signature' }, - Bar: { signature: 'Bar signature' } - }, - parseEventLogs: stub().returnsArg(0) -}); diff --git a/js/packages/shared/util/testnet.js b/js/packages/shared/util/testnet.js deleted file mode 100644 index a8bcfdd72..000000000 --- a/js/packages/shared/util/testnet.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -export function isTestnet (chainId) { - return [ - '2', // morden - '3', // ropsten, - '17', // devchain - '42' // kovan - ].includes(chainId); -} diff --git a/js/packages/shared/util/tokens.js b/js/packages/shared/util/tokens.js deleted file mode 100644 index 61aeeb3b9..000000000 --- a/js/packages/shared/util/tokens.js +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import { range } from 'lodash'; -import BigNumber from 'bignumber.js'; - -import { sha3 } from '@parity/api/util/sha3'; -import { IconCache } from '@parity/ui'; - -import imagesEthereum from '../assets/images/contracts/ethereum-black-64x64.png'; - -const BALANCEOF_SIGNATURE = sha3('balanceOf(address)'); -const ADDRESS_PADDING = range(24).map(() => '0').join(''); - -export const ETH_TOKEN = { - address: '', - format: new BigNumber(10).pow(18), - id: sha3('eth_native_token').slice(0, 10), - image: imagesEthereum, - name: 'Ethereum', - native: true, - tag: 'ETH' -}; - -export function fetchTokenIds (tokenregInstance) { - return tokenregInstance.tokenCount - .call() - .then((numTokens) => { - const tokenIndexes = range(numTokens.toNumber()); - - return tokenIndexes; - }); -} - -export function fetchTokenInfo (api, tokenregInstace, tokenIndex) { - return Promise - .all([ - tokenregInstace.token.call({}, [tokenIndex]), - tokenregInstace.meta.call({}, [tokenIndex, 'IMG']) - ]) - .then(([ tokenData, image ]) => { - const [ address, tag, format, name ] = tokenData; - - const token = { - format: format.toString(), - index: tokenIndex, - image: IconCache.hashToImage(image), - id: sha3(address + tokenIndex).slice(0, 10), - address, - name, - tag - }; - - return token; - }); -} - -/** - * `updates` should be in the shape: - * { - * [ who ]: [ tokenId ] // Array of tokens to updates - * } - * - * Returns a Promise resolved witht the balances in the shape: - * { - * [ who ]: { [ tokenId ]: BigNumber } // The balances of `who` - * } - */ -export function fetchAccountsBalances (api, tokens, updates) { - const addresses = Object.keys(updates); - const promises = addresses - .map((who) => { - const tokensIds = updates[who]; - const tokensToUpdate = tokensIds.map((tokenId) => tokens.find((t) => t.id === tokenId)); - - return fetchAccountBalances(api, tokensToUpdate, who); - }); - - return Promise.all(promises) - .then((results) => { - return results.reduce((balances, accountBalances, index) => { - balances[addresses[index]] = accountBalances; - return balances; - }, {}); - }); -} - -/** - * Returns a Promise resolved with the balances in the shape: - * { - * [ tokenId ]: BigNumber // Token balance value - * } - */ -export function fetchAccountBalances (api, tokens, who) { - const calldata = '0x' + BALANCEOF_SIGNATURE.slice(2, 10) + ADDRESS_PADDING + who.slice(2); - const promises = tokens.map((token) => fetchTokenBalance(api, token, { who, calldata })); - - return Promise.all(promises) - .then((results) => { - return results.reduce((balances, value, index) => { - const token = tokens[index]; - - balances[token.id] = value; - return balances; - }, {}); - }); -} - -export function fetchTokenBalance (api, token, { who, calldata }) { - if (token.native) { - return api.eth.getBalance(who); - } - - return api.eth - .call({ data: calldata, to: token.address }) - .then((result) => { - const cleanResult = result.replace(/^0x/, ''); - - return new BigNumber(`0x${cleanResult || 0}`); - }); -} diff --git a/js/packages/shared/util/tx.js b/js/packages/shared/util/tx.js deleted file mode 100644 index a42a89a68..000000000 --- a/js/packages/shared/util/tx.js +++ /dev/null @@ -1,284 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import WalletsUtils from './wallets'; - -/** - * The sender is by default (when the UI loads) the - * default dapp address. It can then be modified when - * sending transactions.... - */ -let currentSender = ''; -let hasCurrentSenderChanged = false; - -export function getSender () { - currentSender; -} - -export function loadSender (api) { - // If the current sender has been changed - // then don't bother checking changes of the - // default sender - if (hasCurrentSenderChanged) { - return Promise.resolve(currentSender); - } - - return api.parity.getNewDappsDefaultAddress() - .then((defaultAccount) => { - currentSender = defaultAccount; - return defaultAccount; - }); -} - -export function setSender (sender) { - currentSender = sender; - hasCurrentSenderChanged = true; -} - -export function trackRequest (api, options, statusCallback) { - const { requestId, transactionHash } = options; - const txHashPromise = transactionHash - ? Promise.resolve(transactionHash) - : api.pollMethod('parity_checkRequest', requestId); - - return txHashPromise - .then((transactionHash) => { - statusCallback(null, { transactionHash }); - return api.pollMethod('eth_getTransactionReceipt', transactionHash, isValidReceipt); - }) - .then((transactionReceipt) => { - statusCallback(null, { transactionReceipt }); - }) - .catch((error) => { - statusCallback(error); - }); -} - -const isValidReceipt = (receipt) => { - return receipt && receipt.blockNumber && receipt.blockNumber.gt(0); -}; - -function getTxArgs (func, options, values = []) { - const { contract } = func; - const { api } = contract; - const address = options.from; - - if (!address) { - return Promise.resolve({ func, options, values }); - } - - return WalletsUtils - .isWallet(api, address) - .then((isWallet) => { - if (!isWallet) { - return { func, options, values }; - } - - options.data = contract.getCallData(func, options, values); - options.to = options.to || contract.address; - - if (!options.to) { - return { func, options, values }; - } - - return WalletsUtils - .getCallArgs(api, options, values) - .then((callArgs) => { - if (!callArgs) { - return { func, options, values }; - } - - return callArgs; - }); - }); -} - -export function estimateGas (_func, _options, _values = []) { - return getTxArgs(_func, _options, _values) - .then((callArgs) => { - const { func, options, values } = callArgs; - - return func._estimateGas(options, values); - }); -} - -export function postTransaction (_func, _options, _values = []) { - return getTxArgs(_func, _options, _values) - .then((callArgs) => { - const { func, options, values } = callArgs; - - return func._postTransaction(options, values); - }); -} - -export function deployEstimateGas (contract, _options, values) { - const options = { ..._options }; - const { api } = contract; - const address = options.from; - - return WalletsUtils - .isWallet(api, address) - .then((isWallet) => { - if (!isWallet) { - return contract.deployEstimateGas(options, values); - } - - return WalletsUtils - .getDeployArgs(contract, options, values) - .then((callArgs) => { - const { func, options, values } = callArgs; - - return func.estimateGas(options, values); - }) - .then((gasEst) => { - return [gasEst, gasEst.mul(1.05)]; - }); - }); -} - -export function deploy (contract, options, values, skipGasEstimate = false) { - const { api } = contract; - const address = options.from; - - const gasEstPromise = skipGasEstimate - ? Promise.resolve(null) - : deployEstimateGas(contract, options, values).then(([gasEst, gas]) => gas); - - return gasEstPromise - .then((gas) => { - if (gas) { - options.gas = gas.toFixed(0); - } - - return WalletsUtils.isWallet(api, address); - }) - .then((isWallet) => { - if (!isWallet) { - const encodedOptions = contract._encodeOptions(contract.constructors[0], options, values); - - return api.parity.postTransaction(encodedOptions); - } - - return WalletsUtils.getDeployArgs(contract, options, values) - .then((callArgs) => { - const { func, options, values } = callArgs; - - return func._postTransaction(options, values); - }); - }); -} - -export function parseTransactionReceipt (api, options, receipt) { - const { metadata } = options; - const address = options.from; - - if (receipt.gasUsed.eq(options.gas)) { - const error = new Error(`Contract not deployed, gasUsed == ${options.gas.toFixed(0)}`); - - return Promise.reject(error); - } - - const logs = WalletsUtils.parseLogs(api, receipt.logs || []); - - const confirmationLog = logs.find((log) => log.event === 'ConfirmationNeeded'); - const transactionLog = logs.find((log) => log.event === 'SingleTransact'); - - if (!confirmationLog && !transactionLog && !receipt.contractAddress) { - const error = new Error('Something went wrong in the contract deployment...'); - - return Promise.reject(error); - } - - // Confirmations are needed from the other owners - if (confirmationLog) { - const operationHash = api.util.bytesToHex(confirmationLog.params.operation.value); - - // Add the contract to pending contracts - WalletsUtils.addPendingContract(address, operationHash, metadata); - return Promise.resolve(null); - } - - if (transactionLog) { - // Set the contract address in the receipt - receipt.contractAddress = transactionLog.params.created.value; - } - - const contractAddress = receipt.contractAddress; - - return api.eth - .getCode(contractAddress) - .then((code) => { - if (code === '0x') { - throw new Error('Contract not deployed, getCode returned 0x'); - } - - return contractAddress; - }); -} - -export function patchApi (api) { - api.patch = { - ...api.patch, - contract: patchContract - }; -} - -export function patchContract (contract) { - contract._functions.forEach((func) => { - if (!func.constant) { - func._postTransaction = func.postTransaction; - func._estimateGas = func.estimateGas; - - func.postTransaction = postTransaction.bind(contract, func); - func.estimateGas = estimateGas.bind(contract, func); - } - }); -} - -export function checkIfTxFailed (api, tx, gasSent) { - return api.pollMethod('eth_getTransactionReceipt', tx) - .then((receipt) => { - // TODO: Right now, there's no way to tell wether the EVM code crashed. - // Because you usually send a bit more gas than estimated (to make sure - // it gets mined quickly), we transaction probably failed if all the gas - // has been used up. - return receipt.gasUsed.eq(gasSent); - }); -} - -export function waitForConfirmations (api, tx, confirmations) { - return new Promise((resolve, reject) => { - api.pollMethod('eth_getTransactionReceipt', tx, isValidReceipt) - .then((receipt) => { - let subscription; - - api.subscribe('eth_blockNumber', (err, block) => { - if (err) { - reject(err); - } else if (block.minus(confirmations - 1).gte(receipt.blockNumber)) { - if (subscription) { - api.unsubscribe(subscription); - } - resolve(); - } - }) - .then((_subscription) => { - subscription = _subscription; - }) - .catch(reject); - }); - }); -} diff --git a/js/packages/shared/util/validation.js b/js/packages/shared/util/validation.js deleted file mode 100644 index fb0534827..000000000 --- a/js/packages/shared/util/validation.js +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import apiutil from '@parity/api/util'; - -import { NULL_ADDRESS } from './constants'; - -// TODO: Convert to FormattedMessages as soon as comfortable with the impact, i.e. errors -// not being concatted into strings in components, all supporting a non-string format -export const ERRORS = { - invalidAddress: 'address is an invalid network address', - invalidAmount: 'the supplied amount should be a valid positive number', - invalidAmountDecimals: 'the supplied amount exceeds the allowed decimals', - duplicateAddress: 'the address is already in your address book', - invalidChecksum: 'address has failed the checksum formatting', - invalidName: 'name should not be blank and longer than 2', - invalidAbi: 'abi should be a valid JSON array', - invalidCode: 'code should be the compiled hex string', - invalidNumber: 'invalid number format', - negativeNumber: 'input number should be positive', - decimalNumber: 'input number should not contain decimals', - gasException: 'the transaction will throw an exception with the current values', - gasBlockLimit: 'the transaction execution will exceed the block gas limit' -}; - -export function validateAbi (abi) { - let abiError = null; - let abiParsed = null; - - try { - abiParsed = JSON.parse(abi); - - if (!apiutil.isArray(abiParsed)) { - abiError = ERRORS.invalidAbi; - - return { - error: abiError, - abi, - abiError, - abiParsed - }; - } - - // Validate each elements of the Array - const invalidIndex = abiParsed - .map((o) => isValidAbiEvent(o) || isValidAbiFunction(o) || isAbiFallback(o)) - .findIndex((valid) => !valid); - - if (invalidIndex !== -1) { - const invalid = abiParsed[invalidIndex]; - - // TODO: Needs seperate error when using FormattedMessage (no concats) - abiError = `${ERRORS.invalidAbi} (#${invalidIndex}: ${invalid.name || invalid.type})`; - - return { - error: abiError, - abi, - abiError, - abiParsed - }; - } - - abi = JSON.stringify(abiParsed); - } catch (error) { - abiError = ERRORS.invalidAbi; - } - - return { - error: abiError, - abi, - abiError, - abiParsed - }; -} - -function isValidAbiFunction (object) { - if (!object) { - return false; - } - - return ((object.type === 'function' && object.name) || object.type === 'constructor') && - (object.inputs && apiutil.isArray(object.inputs)); -} - -function isAbiFallback (object) { - if (!object) { - return false; - } - - return object.type === 'fallback'; -} - -function isValidAbiEvent (object) { - if (!object) { - return false; - } - - return (object.type === 'event') && - (object.name) && - (object.inputs && apiutil.isArray(object.inputs)); -} - -export function validateAddress (address) { - let addressError = null; - - if (!address) { - addressError = ERRORS.invalidAddress; - } else if (!apiutil.isAddressValid(address)) { - addressError = ERRORS.invalidAddress; - } else { - address = apiutil.toChecksumAddress(address); - } - - return { - error: addressError, - address, - addressError - }; -} - -export function validateCode (code) { - let codeError = null; - - if (!code || !code.length) { - codeError = ERRORS.invalidCode; - } else if (!apiutil.isHex(code)) { - codeError = ERRORS.invalidCode; - } - - return { - error: codeError, - code, - codeError - }; -} - -export function validateName (name) { - const nameError = !name || name.trim().length < 2 - ? ERRORS.invalidName - : null; - - return { - error: nameError, - name, - nameError - }; -} - -export function validatePositiveNumber (number) { - let numberError = null; - - try { - const v = new BigNumber(number); - - if (v.lt(0)) { - numberError = ERRORS.invalidAmount; - } - } catch (e) { - numberError = ERRORS.invalidAmount; - } - - return { - error: numberError, - number, - numberError - }; -} - -export function validateDecimalsNumber (number, base = 1) { - let numberError = null; - - try { - const s = new BigNumber(number).mul(base).toFixed(); - - if (s.indexOf('.') !== -1) { - numberError = ERRORS.invalidAmountDecimals; - } - } catch (e) { - numberError = ERRORS.invalidAmount; - } - - return { - error: numberError, - number, - numberError - }; -} - -export function validateUint (value) { - let valueError = null; - - try { - const bn = new BigNumber(value); - - if (bn.lt(0)) { - valueError = ERRORS.negativeNumber; - } else if (!bn.isInteger()) { - valueError = ERRORS.decimalNumber; - } - } catch (e) { - valueError = ERRORS.invalidNumber; - } - - return { - error: valueError, - value, - valueError - }; -} - -export function isNullAddress (address) { - if (address && address.substr(0, 2) === '0x') { - return isNullAddress(address.substr(2)); - } - - return address === NULL_ADDRESS; -} diff --git a/js/packages/shared/util/validation.spec.js b/js/packages/shared/util/validation.spec.js deleted file mode 100644 index 3b9c00a72..000000000 --- a/js/packages/shared/util/validation.spec.js +++ /dev/null @@ -1,333 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; - -import { NULL_ADDRESS } from './constants'; -import { ERRORS, isNullAddress, validateAbi, validateAddress, validateCode, validateName, validatePositiveNumber, validateUint } from './validation'; - -describe('util/validation', () => { - describe('validateAbi', () => { - it('passes on valid ABI', () => { - const abi = '[{"type":"function","name":"test","inputs":[],"outputs":[]}]'; - - expect(validateAbi(abi)).to.deep.equal({ - abi, - abiError: null, - abiParsed: [{ - type: 'function', - name: 'test', - inputs: [], - outputs: [] - }], - error: null - }); - }); - - it('passes on valid ABI & trims ABI', () => { - const abi = '[ { "type" : "function" , "name" : "test" , "inputs" : [] , "outputs" : [] } ]'; - - expect(validateAbi(abi)).to.deep.equal({ - abi: '[{"type":"function","name":"test","inputs":[],"outputs":[]}]', - abiError: null, - abiParsed: [{ - type: 'function', - name: 'test', - inputs: [], - outputs: [] - }], - error: null - }); - }); - - it('sets error on invalid JSON', () => { - const abi = 'this is not json'; - - expect(validateAbi(abi)).to.deep.equal({ - abi, - abiError: ERRORS.invalidAbi, - abiParsed: null, - error: ERRORS.invalidAbi - }); - }); - - it('sets error on non-array JSON', () => { - const abi = '{}'; - - expect(validateAbi(abi)).to.deep.equal({ - abi, - abiError: ERRORS.invalidAbi, - abiParsed: {}, - error: ERRORS.invalidAbi - }); - }); - - it('fails with invalid event', () => { - const abi = '[{ "type":"event" }]'; - - expect(validateAbi(abi)).to.deep.equal({ - abi, - abiError: `${ERRORS.invalidAbi} (#0: event)`, - abiParsed: [{ type: 'event' }], - error: `${ERRORS.invalidAbi} (#0: event)` - }); - }); - - it('fails with invalid function', () => { - const abi = '[{ "type":"function" }]'; - - expect(validateAbi(abi)).to.deep.equal({ - abi, - abiError: `${ERRORS.invalidAbi} (#0: function)`, - abiParsed: [{ type: 'function' }], - error: `${ERRORS.invalidAbi} (#0: function)` - }); - }); - - it('fails with unknown type', () => { - const abi = '[{ "type":"somethingElse" }]'; - - expect(validateAbi(abi)).to.deep.equal({ - abi, - abiError: `${ERRORS.invalidAbi} (#0: somethingElse)`, - abiParsed: [{ type: 'somethingElse' }], - error: `${ERRORS.invalidAbi} (#0: somethingElse)` - }); - }); - }); - - describe('validateAddress', () => { - it('validates address', () => { - const address = '0x1234567890123456789012345678901234567890'; - - expect(validateAddress(address)).to.deep.equal({ - address, - addressError: null, - error: null - }); - }); - - it('validates address and converts to checksum', () => { - const address = '0x5A5eFF38DA95b0D58b6C616f2699168B480953C9'; - - expect(validateAddress(address.toLowerCase())).to.deep.equal({ - address, - addressError: null, - error: null - }); - }); - - it('sets error on null addresses', () => { - expect(validateAddress(null)).to.deep.equal({ - address: null, - addressError: ERRORS.invalidAddress, - error: ERRORS.invalidAddress - }); - }); - - it('sets error on invalid addresses', () => { - const address = '0x12344567'; - - expect(validateAddress(address)).to.deep.equal({ - address, - addressError: ERRORS.invalidAddress, - error: ERRORS.invalidAddress - }); - }); - }); - - describe('validateCode', () => { - it('validates hex code', () => { - expect(validateCode('0x123abc')).to.deep.equal({ - code: '0x123abc', - codeError: null, - error: null - }); - }); - - it('validates hex code (non-prefix)', () => { - expect(validateCode('123abc')).to.deep.equal({ - code: '123abc', - codeError: null, - error: null - }); - }); - - it('sets error on invalid code', () => { - expect(validateCode(null)).to.deep.equal({ - code: null, - codeError: ERRORS.invalidCode, - error: ERRORS.invalidCode - }); - }); - - it('sets error on empty code', () => { - expect(validateCode('')).to.deep.equal({ - code: '', - codeError: ERRORS.invalidCode, - error: ERRORS.invalidCode - }); - }); - - it('sets error on non-hex code', () => { - expect(validateCode('123hfg')).to.deep.equal({ - code: '123hfg', - codeError: ERRORS.invalidCode, - error: ERRORS.invalidCode - }); - }); - }); - - describe('validateName', () => { - it('validates names', () => { - expect(validateName('Joe Bloggs')).to.deep.equal({ - name: 'Joe Bloggs', - nameError: null, - error: null - }); - }); - - it('sets error on null names', () => { - expect(validateName(null)).to.deep.equal({ - name: null, - nameError: ERRORS.invalidName, - error: ERRORS.invalidName - }); - }); - - it('sets error on short names', () => { - expect(validateName(' 1 ')).to.deep.equal({ - name: ' 1 ', - nameError: ERRORS.invalidName, - error: ERRORS.invalidName - }); - }); - }); - - describe('validatePositiveNumber', () => { - it('validates numbers', () => { - expect(validatePositiveNumber(123)).to.deep.equal({ - number: 123, - numberError: null, - error: null - }); - }); - - it('validates strings', () => { - expect(validatePositiveNumber('123')).to.deep.equal({ - number: '123', - numberError: null, - error: null - }); - }); - - it('validates bignumbers', () => { - expect(validatePositiveNumber(new BigNumber(123))).to.deep.equal({ - number: new BigNumber(123), - numberError: null, - error: null - }); - }); - - it('sets error on invalid numbers', () => { - expect(validatePositiveNumber(null)).to.deep.equal({ - number: null, - numberError: ERRORS.invalidAmount, - error: ERRORS.invalidAmount - }); - }); - - it('sets error on negative numbers', () => { - expect(validatePositiveNumber(-1)).to.deep.equal({ - number: -1, - numberError: ERRORS.invalidAmount, - error: ERRORS.invalidAmount - }); - }); - }); - - describe('validateUint', () => { - it('validates numbers', () => { - expect(validateUint(123)).to.deep.equal({ - value: 123, - valueError: null, - error: null - }); - }); - - it('validates strings', () => { - expect(validateUint('123')).to.deep.equal({ - value: '123', - valueError: null, - error: null - }); - }); - - it('validates bignumbers', () => { - expect(validateUint(new BigNumber(123))).to.deep.equal({ - value: new BigNumber(123), - valueError: null, - error: null - }); - }); - - it('sets error on invalid numbers', () => { - expect(validateUint(null)).to.deep.equal({ - value: null, - valueError: ERRORS.invalidNumber, - error: ERRORS.invalidNumber - }); - }); - - it('sets error on negative numbers', () => { - expect(validateUint(-1)).to.deep.equal({ - value: -1, - valueError: ERRORS.negativeNumber, - error: ERRORS.negativeNumber - }); - }); - - it('sets error on decimal numbers', () => { - expect(validateUint(3.1415927)).to.deep.equal({ - value: 3.1415927, - valueError: ERRORS.decimalNumber, - error: ERRORS.decimalNumber - }); - }); - }); - - describe('isNullAddress', () => { - it('verifies a prefixed null address', () => { - expect(isNullAddress(`0x${NULL_ADDRESS}`)).to.be.true; - }); - - it('verifies a non-prefixed null address', () => { - expect(isNullAddress(NULL_ADDRESS)).to.be.true; - }); - - it('sets false on a null value', () => { - expect(isNullAddress(null)).to.be.false; - }); - - it('sets false on a non-full length 00..00 value', () => { - expect(isNullAddress(NULL_ADDRESS.slice(2))).to.be.false; - }); - - it('sets false on a valid addess, non 00..00 value', () => { - expect(isNullAddress('0x1234567890123456789012345678901234567890')).to.be.false; - }); - }); -}); diff --git a/js/packages/shared/util/wallets.js b/js/packages/shared/util/wallets.js deleted file mode 100644 index 455ce2f62..000000000 --- a/js/packages/shared/util/wallets.js +++ /dev/null @@ -1,405 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import BigNumber from 'bignumber.js'; -import { intersection, range, uniq } from 'lodash'; -import store from 'store'; - -import Abi from '@parity/abi'; -import Contract from '@parity/api/contract'; -import { bytesToHex, toHex } from '@parity/api/util/format'; - -import WalletAbi from '../contracts/abi/wallet.json'; -import OldWalletAbi from '../contracts/abi/old-wallet.json'; -import { validateAddress } from './validation'; - -const LS_PENDING_CONTRACTS_KEY = '_parity::wallets::pendingContracts'; - -const _cachedWalletLookup = {}; -let _cachedAccounts = {}; - -const walletAbi = new Abi(WalletAbi); -const oldWalletAbi = new Abi(OldWalletAbi); - -const walletEvents = walletAbi.events.reduce((events, event) => { - events[event.name] = event; - return events; -}, {}); - -const oldWalletEvents = oldWalletAbi.events.reduce((events, event) => { - events[event.name] = event; - return events; -}, {}); - -const WalletSignatures = { - OwnerChanged: toHex(walletEvents.OwnerChanged.signature), - OwnerAdded: toHex(walletEvents.OwnerAdded.signature), - OwnerRemoved: toHex(walletEvents.OwnerRemoved.signature), - RequirementChanged: toHex(walletEvents.RequirementChanged.signature), - Confirmation: toHex(walletEvents.Confirmation.signature), - Revoke: toHex(walletEvents.Revoke.signature), - Deposit: toHex(walletEvents.Deposit.signature), - SingleTransact: toHex(walletEvents.SingleTransact.signature), - MultiTransact: toHex(walletEvents.MultiTransact.signature), - ConfirmationNeeded: toHex(walletEvents.ConfirmationNeeded.signature), - - Old: { - SingleTransact: toHex(oldWalletEvents.SingleTransact.signature), - MultiTransact: toHex(oldWalletEvents.MultiTransact.signature) - } -}; - -export default class WalletsUtils { - static getWalletSignatures () { - return WalletSignatures; - } - - static getPendingContracts () { - return store.get(LS_PENDING_CONTRACTS_KEY) || {}; - } - - static setPendingContracts (contracts = {}) { - return store.set(LS_PENDING_CONTRACTS_KEY, contracts); - } - - static removePendingContract (operationHash) { - const nextContracts = WalletsUtils.getPendingContracts(); - - delete nextContracts[operationHash]; - WalletsUtils.setPendingContracts(nextContracts); - } - - static addPendingContract (address, operationHash, metadata) { - const nextContracts = { - ...WalletsUtils.getPendingContracts(), - [ operationHash ]: { - address, - metadata, - operationHash - } - }; - - WalletsUtils.setPendingContracts(nextContracts); - } - - static cacheAccounts (accounts) { - _cachedAccounts = accounts; - } - - static getCallArgs (api, options, values = []) { - const walletContract = new Contract(api, WalletAbi); - const walletAddress = options.from; - - return WalletsUtils - .fetchOwners(walletContract.at(walletAddress)) - .then((owners) => { - const addresses = Object.keys(_cachedAccounts); - const ownerAddress = intersection(addresses, owners).pop(); - - if (!ownerAddress) { - return false; - } - - const account = _cachedAccounts[ownerAddress]; - const _options = { ...options }; - const { to, value = new BigNumber(0), data } = _options; - - delete _options.data; - - const nextValues = [ to, value, data ]; - const nextOptions = { - ..._options, - from: ownerAddress, - to: walletAddress, - value: new BigNumber(0) - }; - - const execFunc = walletContract.instance.execute; - const callArgs = { func: execFunc, options: nextOptions, values: nextValues }; - - if (!account.wallet) { - return callArgs; - } - - const nextData = walletContract.getCallData(execFunc, nextOptions, nextValues); - - return WalletsUtils.getCallArgs(api, { ...nextOptions, data: nextData }, nextValues); - }); - } - - static getDeployArgs (contract, options, values) { - const { api } = contract; - const func = contract.constructors[0]; - - options.data = contract.getCallData(func, options, values); - options.to = '0x'; - - return WalletsUtils - .getCallArgs(api, options, values) - .then((callArgs) => { - if (!callArgs) { - console.error('no call args', callArgs); - throw new Error('you do not own this wallet'); - } - - return callArgs; - }); - } - - static parseLogs (api, logs = []) { - const walletContract = new Contract(api, WalletAbi); - - return walletContract.parseEventLogs(logs); - } - - /** - * Check whether the given address could be - * a Wallet. The result is cached in order not - * to make unnecessary calls on non-wallet accounts - */ - static isWallet (api, address) { - if (!address) { - return Promise.resolve(false); - } - - if (!_cachedWalletLookup[address]) { - const walletContract = new Contract(api, WalletAbi); - - _cachedWalletLookup[address] = walletContract - .at(address) - .instance - .m_numOwners - .call() - .then((result) => { - if (!result || result.equals(0)) { - return false; - } - - return true; - }) - .then((bool) => { - _cachedWalletLookup[address] = Promise.resolve(bool); - return bool; - }); - } - - return _cachedWalletLookup[address]; - } - - static fetchRequire (walletContract) { - return walletContract.instance.m_required.call(); - } - - static fetchOwners (walletContract) { - const walletInstance = walletContract.instance; - - return walletInstance - .m_numOwners.call() - .then((mNumOwners) => { - const promises = range(mNumOwners.toNumber()) - .map((idx) => walletInstance.getOwner.call({}, [ idx ])); - - return Promise - .all(promises) - .then((owners) => { - const uniqOwners = uniq(owners); - - // If all owners are the zero account : must be Mist wallet contract - if (uniqOwners.length === 1 && /^(0x)?0*$/.test(owners[0])) { - return WalletsUtils.fetchMistOwners(walletContract, mNumOwners.toNumber()); - } - - return owners; - }) - .then((owners) => uniq(owners)); - }); - } - - static fetchMistOwners (walletContract, mNumOwners) { - const walletAddress = walletContract.address; - - return WalletsUtils - .getMistOwnersOffset(walletContract) - .then((result) => { - if (!result || result.offset === -1) { - return []; - } - - const owners = [ result.address ]; - - if (mNumOwners === 1) { - return owners; - } - - const initOffset = result.offset + 1; - let promise = Promise.resolve(); - - range(initOffset, initOffset + mNumOwners - 1).forEach((offset) => { - promise = promise - .then(() => { - return walletContract.api.eth.getStorageAt(walletAddress, offset); - }) - .then((result) => { - const resultAddress = '0x' + (result || '').slice(-40); - const { address } = validateAddress(resultAddress); - - owners.push(address); - }); - }); - - return promise.then(() => owners); - }); - } - - static getMistOwnersOffset (walletContract, offset = 3) { - return walletContract.api.eth - .getStorageAt(walletContract.address, offset) - .then((result) => { - if (result && !/^(0x)?0*$/.test(result)) { - const resultAddress = '0x' + result.slice(-40); - const { address, addressError } = validateAddress(resultAddress); - - if (!addressError) { - return { offset, address }; - } - } - - if (offset >= 100) { - return { offset: -1 }; - } - - return WalletsUtils.getMistOwnersOffset(walletContract, offset + 1); - }); - } - - static fetchDailylimit (walletContract) { - const walletInstance = walletContract.instance; - - return Promise - .all([ - walletInstance.m_dailyLimit.call(), - walletInstance.m_spentToday.call(), - walletInstance.m_lastDay.call() - ]) - .then(([ limit, spent, last ]) => ({ - limit, spent, last - })); - } - - static fetchTransactions (walletContract) { - const { api } = walletContract; - const pendingContracts = WalletsUtils.getPendingContracts(); - - return walletContract - .getAllLogs({ - topics: [ [ - WalletSignatures.SingleTransact, - WalletSignatures.MultiTransact, - WalletSignatures.Deposit, - WalletSignatures.Old.SingleTransact, - WalletSignatures.Old.MultiTransact - ] ] - }) - .then((logs) => { - return logs.sort((logA, logB) => { - const comp = logB.blockNumber.comparedTo(logA.blockNumber); - - if (comp !== 0) { - return comp; - } - - return logB.transactionIndex.comparedTo(logA.transactionIndex); - }); - }) - .then((logs) => { - const transactions = logs.map((log) => { - const signature = toHex(log.topics[0]); - - const value = log.params.value.value; - const from = signature === WalletSignatures.Deposit - ? log.params['_from'].value - : walletContract.address; - - const to = signature === WalletSignatures.Deposit - ? walletContract.address - : log.params.to.value; - - const transaction = { - transactionHash: log.transactionHash, - blockNumber: log.blockNumber, - from, to, value - }; - - if (log.params.created && log.params.created.value && !/^(0x)?0*$/.test(log.params.created.value)) { - transaction.creates = log.params.created.value; - delete transaction.to; - } - - if (log.params.operation) { - const operation = bytesToHex(log.params.operation.value); - - // Add the pending contract to the contracts - if (pendingContracts[operation]) { - const { metadata } = pendingContracts[operation]; - const contractName = metadata.name; - - metadata.blockNumber = log.blockNumber; - - // The contract creation might not be in the same log, - // but must be in the same transaction (eg. Contract creation - // from Wallet within a Wallet) - api.eth - .getTransactionReceipt(log.transactionHash) - .then((transactionReceipt) => { - const transactionLogs = WalletsUtils.parseLogs(api, transactionReceipt.logs); - const creationLog = transactionLogs.find((log) => { - return log.params.created && !/^(0x)?0*$/.test(log.params.created.value); - }); - - if (!creationLog) { - return false; - } - - const contractAddress = creationLog.params.created.value; - - return Promise - .all([ - api.parity.setAccountName(contractAddress, contractName), - api.parity.setAccountMeta(contractAddress, metadata) - ]) - .then(() => { - WalletsUtils.removePendingContract(operation); - }); - }) - .catch((error) => { - console.error('adding wallet contract', error); - }); - } - - transaction.operation = operation; - } - - if (log.params.data) { - transaction.data = log.params.data.value; - } - - return transaction; - }); - - return transactions; - }); - } -} diff --git a/js/packages/ui/AccountCard/accountCard.css b/js/packages/ui/AccountCard/accountCard.css deleted file mode 100644 index 6fc5ca565..000000000 --- a/js/packages/ui/AccountCard/accountCard.css +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright 2015-2017 Parity Technologies (UK) Ltd. -/* This file is part of Parity. -/* -/* Parity is free software: you can redistribute it and/or modify -/* it under the terms of the GNU General Public License as published by -/* the Free Software Foundation, either version 3 of the License, or -/* (at your option) any later version. -/* -/* Parity is distributed in the hope that it will be useful, -/* but WITHOUT ANY WARRANTY; without even the implied warranty of -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/* GNU General Public License for more details. -/* -/* You should have received a copy of the GNU General Public License -/* along with Parity. If not, see . -*/ - -.account { - align-items: stretch; - display: flex; - flex-direction: row; - height: 100%; - overflow: hidden; - transition: transform ease-out 0.1s; - transform: scale(1); - - &.copied { - animation-duration: 0.25s; - animation-name: copied; - } - - &:focus { - transform: scale(0.99); - } - - &:first-child { - margin-top: 0; - } - - &:last-child { - margin-bottom: 0; - } - - &:hover { - cursor: pointer; - } -} - -.mainContainer { - flex: 1 1 auto; - overflow: hidden; - padding: 1em; -} - -.tagsContainer { - flex: 0 0 auto; - position: relative; - width: 3em; -} - -.tags { - background-color: rgba(0, 0, 0, 0.4); - box-sizing: content-box; - height: calc(100% - 0.5em); - overflow-x: hidden; - overflow-y: scroll; - padding: 0.25em; - padding-right: 2em; - position: absolute; - right: -2.5em; - transition: background-color 0.2s ease-out; - width: calc(100% + 0.25em); - - &:hover { - background-color: rgba(0, 0, 0, 0.8); - padding-left: 0.5em; - width: auto; - } -} - -.infoContainer { - display: flex; - flex-direction: row; - margin-bottom: 0.5em; - width: 100%; -} - -.description { - font-size: 0.75em; - color: rgba(255, 255, 255, 0.5); -} - -.accountInfo { - flex: 1; - - display: flex; - flex-direction: column; - justify-content: center; - min-width: 0; - - > * { - padding: 0.25em 0; - } - - .addressContainer { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-size: 0.9em; - } - - .accountName { - font-weight: 700 !important; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } -} - -.balance { - margin-top: 0; -} - -@keyframes copied { - from { - transform: scale(0.99); - } - - 50% { - transform: scale(0.97); - } - - to { - transform: scale(0.99); - } -} diff --git a/js/packages/ui/AccountCard/accountCard.example.js b/js/packages/ui/AccountCard/accountCard.example.js deleted file mode 100644 index ab260bcbc..000000000 --- a/js/packages/ui/AccountCard/accountCard.example.js +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2015-2017 Parity Technologies (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -import React from 'react'; - -import PlaygroundExample from '@parity/dapp-playground/playgroundExample'; - -import AccountCard from './accountCard'; - -const account = { - address: '0x639ba260535db072a41115c472830846e4e9ad0f', - description: 'This is a description for the main account', - meta: { - tags: [ 'important', 'zargo' ] - }, - name: 'Main Account' -}; - -const balance = { - tokens: [ - { - value: 100000000000000000000, - token: { - tag: 'ETH' - } - } - ] -}; - -const accountManyTags = { - ...account, - meta: { tags: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => `tag #${n}`) } -}; - -const accountNoTags = { - ...account, - meta: { tags: [] } -}; - -export default function AccountCardExample () { - return ( -

    a@sg3#Gn>8y;_>oT*lOrhsN@pIDb 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 diff --git a/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-ThinItalic.ttf b/js/packages/shared/assets/fonts/RobotoMono/ttf/RobotoMono-ThinItalic.ttf deleted file mode 100755 index e1bb9121ec6568d6b8772d121eafeaa5da0db928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121456 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 diff --git a/js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz-pRBTtN4E2_qSPBnw6AgMc.woff2 b/js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz-pRBTtN4E2_qSPBnw6AgMc.woff2 deleted file mode 100644 index f1fdb93524e7a84934cc4f6d4b731006059705f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3516 zcmV;t4MXyGPew8T0RR9101dnV3;+NC03LJz01avY0suh(00000000000000000000 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 qeFFdh000000000$2qA{P+qPgx>^#xc| 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 C6V#>v diff --git a/js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz2MSHb9EAJwuSzGfuRChQzQ.woff2 b/js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz2MSHb9EAJwuSzGfuRChQzQ.woff2 deleted file mode 100644 index 54484b1e3edcbac1fc80f13cfa4a03cb29c84bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5264 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 diff --git a/js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz9TIkQYohD4BpHvJ3NvbHoA.woff2 b/js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59Fz9TIkQYohD4BpHvJ3NvbHoA.woff2 deleted file mode 100644 index 62b3a15f698a5e966f5f6b4a5b6d5081e340c654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11032 zcmV+zE9caAPew8T0RR9104o>(3;+NC083B+04l}+0suh(00000000000000000000 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 Scv!ceo=>Nzrn}1J^(g>##wLjX diff --git a/js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59FzyJ0caWjaSBdV-xZbEgst_k.woff2 b/js/packages/shared/assets/fonts/RobotoMono/v4/N4duVc9C58uwPiY8_59FzyJ0caWjaSBdV-xZbEgst_k.woff2 deleted file mode 100644 index 2d4fda538a22e1046718d4d158e7512eae086f69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 740 zcmV z+RAd76BT?PY(kec3BTZPYG+|J-?aT)o_hM=)4(kF(kZQ8ikqvnj&)5YH8+`?#a&gl zxH+#yl-?<=S&E&DmW+2#BsDi@LzUNfE}?9Xz~EW@bt&T7T1j+KkvOKdHbv~OOPABn za(uJDUczIFiht*)=b9O4|4JGycV7+9UDs77jCcPfdUtw2xe8(n$jC_jZ-oew{p5vQ zP3_;>&n9le6JPK$ezPn(;ORpU1@P{?V%0++CqvtDb;ZxgK5JaPQ;c%kE|Og?h1qFJmamnK?=b!n7da(GL> z5rd-0C=H7yHmctsDV5E`>Cq~b%2%jLJ#->xtGv~*$(RA!RT+X1p~yf$B9O^djTIG) WfnL>UuS{>Y&@|G~*rJ320000!p+^V+ diff --git a/js/packages/shared/assets/images/certifications/unknown.svg b/js/packages/shared/assets/images/certifications/unknown.svg deleted file mode 100644 index 1554bcc25..000000000 --- a/js/packages/shared/assets/images/certifications/unknown.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/js/packages/shared/assets/images/contracts/ethereum-black-64x64.png b/js/packages/shared/assets/images/contracts/ethereum-black-64x64.png deleted file mode 100644 index 8e80e4ff134759b9cfbbc6f535791b93aac64a49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz?dE26XLpf>9VZs?55@xeFKBN z`w#R_m9Q&+F3tO^Scx3shr6Bk!eRSgUZQdCruk&(&F&X$mnP*zs<@%5Eg zP|(uS2AZ&N$r7L;KojQ7n-4J`s4FTux~ite(#i^Gm!XkSLQ;~MxjE1xplOq*PF=Zr zjhDAK(5RHuw5FC;Yg-_&%gN1~w{YRcEn9qjeSyvZI@`|P-ow*VPhWrc-hJWW5zVcw zKzj=c3sTjba_`#@AR3oTwGnZ?bvB$ zW$o(bR$ft2Ti?*zKcT3&BqA~rXl!6`@QKrBW`&d}07IX#B*-tA!Qt7BG!Q4r+uens zgH_f8$l)yTh%9Dc;1&j9Muu5)B!GhKC7!;n><_rug@i;3s-3!kdIUXP977@wAH9B> zuSJ2U_2D|dOUqw$g+KXuyh55wV~g*Erz!vZeW!3={GGtnr*WVs;rxN=4DT8CG5=r@ zcv;SHpCN|f2U7y;fxGbxVa#_JBDf3K8`kSHtYQAactEQ`p3$O;_W)0aiuQt6xl3|q zu*{WraP;}E#PvhCc&`WZog*v?mstIhZgkr)v47<9Fb=Z4$1ssoLDfib*&cO?-_tfc z<4ruhQ*>6{7o{sMbNlZfd1d+K?)h3CuM5-X|CQl(dVcxy!T*-0cANWpP7jE?XR%t$ z{^qmNJeL2578GB<<;J0R{^r%=jIS8Z`3Cj9yL5*kw4r+SEWtau&tH_;GhN_yIcH;8 q^`eV$3-iXs*?nIN8$P|@x9{W+n#VuqXgV;w7(8A5T-G@yGywp%&m|iG diff --git a/js/packages/shared/assets/images/contracts/ethereum-black.png b/js/packages/shared/assets/images/contracts/ethereum-black.png deleted file mode 100644 index d7bdc4c904012b2224306216f1d36c78eb29122a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147077 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 ^<8Tpf9A?3V!vp;Iw4({x>wwGt-<{c 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

  • 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 z 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 diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-LightItalic.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-LightItalic.ttf deleted file mode 100755 index 04cc002302024c4e032d32319f0d40a32b54aada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166492 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 O52#$t24}uzn*1+3HAyD` diff --git a/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Medium.ttf b/js/packages/shared/assets/fonts/Roboto/ttf/Roboto-Medium.ttf deleted file mode 100755 index 39c63d7461796094c0b8889ee8fe2706d344a99a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162588 zcmbS!2S8Lu*Y?cZdv|Hd(h(FE5U?Q#0&3KtVndC+H|!NV*t;n95;ex&jeWgh?_CrX zdsjeBOro)%CMtXPf97rh^7?+?|Noe0&z-sV&YU@O=FFKhvl~JQAujk3iLQRLrY*;B z8#;$DyI%-t?^M5K>)MT1mdPfpTRI^n`ZjGD9=XnO&wfJaGQ5@8BdObvxR3_J2=N(6 zi0j23DI@gaPvsK`2|tSaZF&#slQi~ox9x<4RmM9<`*a&VgxC=`l)n=9o%#$M-Fw&S z?!OaK^%0?$GyC>T8dc-_>Uu&vCV`<>eS3B5`Onzxc6hfWo{#B^42L%kE0Au5bm_iH zBSw|Zi~or9KZLlY4IJE~+v6v_cM=lePKf>aq;8{zXk8hXXa0)(BDW! z(S>|3jv))ha%7V5oK)AAAswZb#8q-4i>0chw^WTR7N-NfkRC?*OS{QpR-0@PhmtVK z5&5miVlBnJUBGlaUrMEkqJn$3NP_qf&&87QQW$a7I*;iNnZ9;Un>s-je`PL;Qso#0j(o+fAx4Ms|VvO3g_! z^CQ#6@ua7?k93h%kt9TNO(=^LRRybjwB&}lCTAQgh$|g9NO(j zCNr6gVogX{;T{+cgAell){yajAT|hCej5R?qmW(A?XL26p^xl-iTN zc4;KcZa!I|=}0P}-bIofS)kF7(%SVX_YP?&{Q}+G3Vn1SRW)59m(O@+CYh&QL6&Jh zlVuto;;s3N_GrlhsTmodZAI3Ke}mugq@y^W%ojS4RPhrD)ua$V(UUYmKTH<~p+A3~D>6ayBL14ec&;x{oix`>!?+tlLdBt`he)^5 zTqk~-=XhtP=`UW6wjuPODRiliDI4Q*nTC?-7?&j>3kPj&vO^O?R%u>CF29l~_K{=* z+Av?#!#2EyOvaF|kYQ8Fhv>M>t!Zstlo?M(Sj)!!-q77nqKPD-e|uZ{dMx^R6Cqzp z15J4Sk{k4LI>uCg$YCA&>;U>$k2Y0+{%t4oG)qWj=vfVI7G%7QOt7nue)vcxXv#r{ zO{AN)668LFgh(UMufxd*X$DEvlt#atFR+EvEi1#Xx*5D%m_9$Lz zO(qK!zz1d{yRxvp7RnC6);hrEc0wNPHjBXZdKlyDW`oSu!L9;QS;#p8Wvn71JxO}d zqa=!6C6V+Ok|4N~fr2lI6YNN&*qOwMKa)=EGD#D@kXh1ZGK&r*^|f0_0vkpKvVNo$ zY+M*@LA1~bV|^cVV+eHTAX#SjBkX7ziPp@4jOW1qe1xs4Ov;Gs(S|PQ$MK|$^qdTV z{b+1g5&CIQk|cMsR1*zb@>tcKj+*rt?+ZzHX(`z(-UlyJ$!bw1-`UkAU09fDH|%3C z)z-U^>fGLoPNX#JNY-Jl=|SI-x{@!(-7myjJW9f}L1suUBusOFG~yDmiy-aoqM<8M zq?-66Y^=^?pnFLt=tHs)$ z1=%*@wiYnkV#pfTO@Ssr48ZT#LmdlX^OmA42iWR1Qar|e8R#GS8S~x>*qq5~UA;*a zu?Z>8dE)h{{D2C}NNw>R@=8FzR*_~>E7DASPP$49!5iABZ3Vm2mZV5OA$=Fm4aIeP z*p6z%N34f;pCgaA=Q8fsBmPonT+bo3U=vcb4tTZ$anR_I*9VwHs%sX3reQ7!ME)X_ zu?o-l0E0+r=`Cc`0qs9aJTMMR^KyU`*hL5N2JZ3txE#?I;crsUE(T@&3Av>~*J^<8 zWu&RF5#wzgX)G>A-WoiMIT!P7bJ&dm(t2PzeiEmUL8?sJ5@+$aDq}9! zZ^~L602@=0)X|_GF`W!Y-QD?Iq{0`zj<4w}1LgXm`akezq;{siImG#v||nAb_jG6=u=S0k$AyhAfT%>d*KHU9gFeI zEDLR|(sg8xN`E7Bct3FY{F{oyO`CYXaC!Zka(`0w>CCjLC0#}JG2!R^uT<3`_=1J$ zbz;Z+o%hB6EydW3Q2j{wu&N(v@nyL`$$i?wl>2quk5m0R?!%2SZC1hU7q^H14X_`o zedIRM0-A5y3>!HWbStpRW*hmqE(~rL3xnIm!u6nR)dpMX7}DQbM`0>*yIdHmjW#Vr z-9G`xz>5bkuCUGK_P`32KW@LRHr&c1w|Q1@TV5DkE>;w7L!oQc-t#tD>^-;n9O}6F z!<3+LGqq%!O>Ly*rY%yuk|PZ^$!wcx2EWhOH0t<3KUvo?Txb8ie&IU8ZGeQe3bz}o zJ>dQ;_gUeeFz&0uABEkVr;csz>tlU^zV}C6nd&`0=JAZ`tMV}kKbh;O#U7pDV}{Q+ zynYG(sEt4V9G;iptEzlqJo2%?eQI@W#q9w2oudX-wIy3=xEyT2k`#qc|zTQ&h&Fi=DYUM-q_u-?P z{Z7+6tjL?%bNdhfoBPaGJEqDMekqp+_s=!(srj|FTr0JXA*)?eeM78a(EshN@7c3^YCUHcEZ9{LQZJ{k0tk5_el1>INIS6u(mCw%?J`^rlBIO95R)eY+! zgU@M_)|AB|CY#<09Zb1Wb<;C3-n7f6FP1t~9mjgk+SgWHwdn!31HB02YXbOLMdK`M zvGz!ZKVh9`t#h5ZpNpZt8eptYR$KYRe3V>^+&wX$MPki92=mZT%ty}RQ)P#0uP~<7 z7!21v9*g1BGDlnITPwB9x1(%h)LJ)UGOBGb&z-|;bERc2>}V_vKYTp4)!z!*kot?Kb>% zbq>R|I_GfT8uI|=lT@B>om049Y%813ExdgA&1#vLkJNdO`{2B6KA-XO`C5ScyZk=S zLmjFg%>8YYr~2xaF=rh+@Y{G?l42G3+}=@ybHkXRk+d2n2%@BZNY+2ba3$Jl@Fz(c zjUZ_xHKC^L@X16bih}w$KJhrS;|T%(M6D!B0*Xc%8i{E{ttd)bJS+&fi5sG*)oMjM z+|;Nq@dv?(y&cnlXpj`~#~Bg@FpNK5EN6vti^|P^sMmar(j-Z%)i^lduGXGEiIly) z7A$jKMGfxb30(09?Rb*s*r9eiE&fB}w02qtdpyaRQd6Mjx_KocuL?zK?C~&4l~9EF zQC_+oFF~@`+Jm5OQL>lp1uhbXxT>JhiV!qf4Soet!|c&6$XjdYfV#m3m=*2ufl_!? zl06qa9u*i;c6J&&VsFnS43Y4BQN7KtnW(mhXX1}H2m-eJ@yb+rA(y|#8^8sK@^EFY z2raUT0vQ&e@M0wJV|h<~jf)orSc>LVX?Tm!K!NuLKFojoRsN7Q&2JX^Q(v*AMT@M> zV&sCe-Li<5-+{K6|Dmh6JWwasG4o5-=LDz?+H3pc+G2Uc{2(ODg~0z*0hllOr>bbY zDgXJ$Z<*iXjB{aI)Bo|TDl{%a-gH$a_~hdS;!_z@KQJiprn#Tg-r%<_qsr2F)Q6D> zc0{g_oNXo`ZSFPRaT>|N5ftSJ_NWb4T#1pkN4e(4T0TV$|EDT<(Hlil|85GGc9CL= zJdHcHKQPMwsrRkp28zRV1?{#CB+e>_Swxo7z&)=8{1+)6HU#R)Z}9eU{viSWCeOgL zsEt_);wFNR3C=$>$x=E`VVH6T@F=$%7L>#l>>lA1kuXgf5jEIDB7cxcL__-HijiVu z0$EFTke%cNIZv*UU&$MyP-p5wgJ~#@pe<=v+J{b{6X|@qh_0gs`j(oQFN_Z zWw6IAPoU6$d%;-<5@rc=ghj$S!5|zGGK8zb4dIR$EQX79#in9+aj-aAoGxA!?}|C% zM~O;0$<2@Yeeaj*_s%cR@3Vgsy`$bm@1gh82kJxh5&9^7HGOq`yncj!qJE=(n|_CW zkN&X!Sb!AZ7T_5W7!VRrF`!Ez3)BQU2f7CO1o{P*4{Q*a7}zWL(qHV;nXjT^G8s)K zwA9>IJ=(esZQVsqk_#k@{6^jq6V*{y8bZs^O0*SCqXtly5d9?~Bz($PZZ@tnt~Aa>iI+?n{0XByuD9hI^S>aLj0kJ~9$+)D7H@w5-r>3-Auo2l z81%yb#ShQ-zG(cSQ%=X6wuI!g%4wO?Jg4EavL67qv#(}f$)27) zI(uaHz^6ZEcgv1`y6DOFr_-ONKArG%?9;(dTRyG+wCcm#ZfhK#YBsR#bhoP6oTY+4 zltiARUD)BHWeS07dZ9nspN=S$EOJS^^CX_&@>*@aMfc-cfdYj94S;q)F7O^hO;hA` zHNmh?`k#O7CEfu3fBsk_)|fS6Kd`2(8Fq8(vyQA2>&&{at}GEdIa66T)}8fWJy|a@ zjij>PtPktU`mz3O0GUo^uoO0ujbfwO7&exqk(q298_y=NiEI*?#p=OtnvGV?VY``u z?O`(8%hJhQwvX*+2iQS&h#h7}*ikYMtBqsqI6J{kvQz9dJ3|(bh3qUl$IinFTx1z! z5&040<34)?i|~X!Wer&ZYt9C;zu7} z7Q%A8BkxI`u!wws4OmP*3QNc*VW}VsKT#?yqfGc&ST3v(R#JhAR1#JRdxh0hL$%aS z>?EWM`=}@NqTaNGuwOU;Yk3g%wv5;fR`Ol&MR5snKd#C~Fb@dvRftwz6tJ!(#? z(;Bp<*nxge&JVlS~btt(s+GGW2530bgg zH)uUtUu-3|7Jd_6(gw7l@VoGbI6xdo6NEp-B;l3tn)ajpVc`eSiDG@4O0b)V;|Fp4 z6XOStx9yM5NqnBNq8P3@_`IbDV4nzoeytfS9&{bB1Ly(Z>;VU>3%Uz90SpFC0_Tv= z_cP90Fd6g$a1Hq_K(owX^+EYg&>iG=1icH~1Ev7?fyc=22Koee3QPmCffvZ{4f?AE z(?Nd&-XK2-l%Hwfm;t~Rl26EottEd0+%BX6p8+HC`FRM~6&15UVGXG>^1(CJnZfFT zx|o5HN~kLkjAs^shL}OPeGfH*+b7lbMc|puxUOUdnFAUL#3Fw;XcaTaT+pgO9P;;p z)&gpS7wiqwIsj}rI|iBnaJeo3Z45L={#j7Sl(s}Z=cg6W75SGy69LGNL8jcM(q6cJ z1lk+ugKLya`vT}|mJK@546+z>z8Pc*C@&WvOF`EH>u~)OC~t!S*FS^4HAC12ig}5H zfj|1y4D5CjtUd{ad>Q(Ic>^T?-uFI$FMzp&aoGT51!#LS$V$+oW(eCs&jT0m%qq|f zGsqfHw39(+$Xd`mGYI6*Ra&6<*aC_K2iXd0Zw3L+0{WbTpnM_746f_2O$4?{)pcPy zt~nrYVTKt5G7z9o!YlxNfYT;sv;jr`!7>q{E$|}%xx&^G*eD|W1atzHnL%Vw$Wd4h zp#KE4pM&fLMfeEGTpUyQl>762VT33SkmxF*A6(vAeGVGZqn{BOKgji8?bd zixHgiQNeAP=nA-@{HdVsW^lVEdYHlW36WYNdZV2Cpe4-Ux+VIUfmx7X7f=Ox1X>aZ zM42-{gMiX_7rHJ6o56KW3<1KC{}eRB49uEDtOQg>{_mjCW?&8_Vhm6P`L98%nt?eL zXQzM~$bSo3(+sZ1;`e5d51?^CE%5UrXl*mdN6~q8x`FCignEpmV(v;nxg!_ zL7SN&$e_*5;A2B=ge6ANmfT1Wq9dsCwjC|g2DZohN?*|=a1|J*ZXfuR^ zpj_vs<9XhnX~0Zehl0XR;PjMQHzJ!v1^5;*2Z)e8EepzJ&E?8@UkpH&v?3^%9hXfT zfXf2y=3^1jaw4t(8UQN+w3|kN@^-EPcw5&3>yRG_x*pg7Bmf(Mt;nwoit&z_+}^Py?_B=m*FEm+KDzm(f0yQw@~M((0f`Ea(7w6gY-_ zu2a0+6F@uQBybvaae4+gi)U(qo&(MUeSix9>;<12#S8%ULhZN9pqW4m;0kaR=mlH@ z?xIXy-aRuY*T?&22>jUxW(fTKhrm-j&)?4ma!?o7*<9cw@^6BE0{#YC0sjD>k^dX$ z7vL+N=Y5e67?J-wr~;UP0XXMK%;596M9mQX1Z98@?=}K;F$0lTBDn%?DCZR+et6dp z?+EA+YC23-l-6X=EfRfGg%OmOhiuzx{c{sJF#EnH!Y0S>yJkgv%9D&iV)R7_@2 z$kCJ!KyT@G1F6u+VBf6W9!lr6KS)ifhH0ht*b7~|gc)cBy}oY0cmqugGq4H?F^IReGPH(?R^6R^mPp< zo3%5XjQ0&_-#*NsvGE9A$M^F#bE~aj(3A@^*qKXc+0GE>Yas1s&En;?Y!?(@m^5pa z?<};ynm$=HeUOrWXT%lGfCTCuq?4MVD3G84U!D;Z5EK9o+sB6)>?<^C*{&{F3;>G` z6%1wTh8Y|y7|MY-RoD|s)AX}iwmTFD_ol}|JCfF_-60$reL1APuOSG`>eCMDAU8`M zZ)LFxhPbqYdeWiYo^mAK_Yf&3yo^V_Q+Wd^Ph?t*m8WuXiq8YZt3?F+>WE!=a)4H; zSlY)0mj~DnagjkD{7Pu>UBv)*ekI!Sq=+*9p2c~drbqMd!+iObHmiYY%~w=IA;!jEysysDE7#9iZ!lUpZ=4(m);t*Dw{yoSF-+rQ=HERCZlSUdJX zC@xe(oMR={=Ff!BqF#&@XN!j<2Wh-?N)xJ?uQ{r%rroGDXpd?i+A+HTyBYRT_QUNT zJ485)b~xnl#_p(8;+Q(AlsW*O3en|7=#Z*{0^M&8Id0*kVFUP0Nj~Vq0x$?cBO$ z>z~_*Z3eV0-}YI%PVFAHk7z%&{lWIPI%qqT>JZgY>^Q9BgHDw?t?iWA>0{@F&PzJ~ z*`-F8xm|L**6KRH>+8fii8s1+>bAbyi|(=Ar+3fjQKiR$o?bl%_Po?9xYwLsfAwzA zyKV12z4!O=>$9n^SKmo}f9;phZ(o1^{!{zE9nfgNssV2X#tqy*Fz3Ji`+eZMfnSrP zBz;nyq+Us>NgI<4Nk^0Z8dPD>+(CN=9UF9I(658j2WJg_HP|%7ZAgb9kA_Yd<}l22 z*ssGI4bK=cVZ`&~F3I~-N~fF}894IbD9=%&MlBk(W7PRk*`phc9y)sK=o6#!#-xt9 zFt*;<)Uk`lZW#M$?3;1k<0_4-F>dX+kK^Y}@SZS#VuOhdCjB$H+vIsu9H&&D(qhV~ zslHSDPQ5=Zd|L9fqp1$5VW|UB-%O96K4*I73^pTi#^D*a(@0vKv_5Hv(%#RkH*@~X zKW5dQwSCs@*~MpnKYQlv8*_v?-_4miXU806?$Eh==ef=sG;hUx|M?T=FPZ;x!O{h$ zh20l!U-)iO)S?lK{`j%wj~PGaEiSWo#p0_=yq6>_nY-lc(#A`7|K#*j>QDbHOIvpD zXRn_J{(O3Qjpav{|GlE=ie)Pvu5@47dga`emsbU>3R^XL)tl85R$pJ^wr25~&uhD` zJ+-dcx=!nMuKT>c{`$1_e{blt;qbu1hbO9+h4HE^Jq(4djxKF#U)V_-Q>h0^iZ}7gqkXUUi~D`|rydABQ1w8g z1KkgdIxzph<^u;0WE^;S;Ln5XpxeQ62jdR5Jviv#!$ZRk%{;XH(4IpV4m~;a;jrW3 zz{3>}#~p5axZmMPhZh~*didnwyNCZe{P~D@#P>+(k*FgHN4gzJIx_mmf+Jgw>^*Yg z$gLy4ANhEc9`!z2?r6->+DF?T?SFLQ(WOVX96f&Y_R-hJq+?#k${ve8R_j>HV?B?h z97{X4=GeYtr;c4YcK_ImV}BpFJMMm5f4su+D#x21?|6LJ@wDU1j~k9(IR51LyA$Gx zk|)AX%suhuq~>I)la)^cpu# zr(T^hp7uB$cDm~6x~Dsx9)5b}>9wa1oW64U`RV*K#m@wvi9OTgOqVk$XXc*Sc;@h# z8)tq$V>;`3cKq4-XE&WadiKiMCucvLb2t}pZr-_#=MJB{e(vSD59b}umpmVJKH+@p z^8?OLIY00G#`A{r=gwb0|ML8Y3yv2`UWmF-??Sr^Juf6*m~mm%g{>D3UpRl^(S?^6 zl#9+6LoQam*!beki)SxBxcDx^F2g?~IwLNlaYnn0o*6?j#$}{sY{=N2u{YyL#+i)E z88m}im<0ZFC72_&d&TXb4BKc z%yHLtY3GVscXE90&#zOwSl-YXebvakGowfNQGt5vQxy4wBf z@T)VfZoVpCJ$p6t>a(jKuhDD8u9d#_-L)3i`du4(ZS=K;*S22UckR@*E7$H{dvWdE zwa-~J%RWn=6`S>aR-3G(tkkTPSsSxBi9;w{E<;Dc3?V3owPfP@2tJEfBNLJAjL_S7&d_-k*Is`&Ra^+3&NJ9ETjw zoWPulIn{FN<+RJ`pOca^C1+mF@|?{%a?aVD+c`NouX8@?o-@};_CWKD5r&bdZspx@%t34A(nJ~hQ0%C`%+=lh{O9yHMKh)OgFwO5Xb^z?Ao z1cuNF*S#oFJ||2{XfUk--6;xR&QxvGsA_CN0_yA~d|+`{l!}m8uvr`eN)`ej4wePc z7_?aiZMZ?u8SJtQcD!^U$R$eRAJi>q_AVNR4{4+_o;l6rA1E^s#T`XEe2G8yHB_mp z+*(DfLj^i(LKQyRp+4q=J3hQorJNXVe5r7m2)5>lS%y+-58~4?%itI;+ZEh&L=PZO zXK)3ZI)l6VtY?;i=nUR!j$f84nIN~I=l~T_LX;ce5u^g2Zb9r?cH>_f|3;;1dDP{H zEkEP{S$|b~{I&6xlpBq&hh;qEE=F{p&rBPco~Bs$97Gb%Dhh#Ht* z@ApeP*X}z0erUJEfdeR6)HCMVp*81k=S>_jY$P4mdT{%Y@gFzeaewfr#K*G}7WVDd zwqKWKeWrKVdc*C^Y0tOkC(J@HMj|~-ucVpMIqV?%kWdm$s*;(qRP8&?pQJOmW${m6 z^|Orn83V132{%*;S9@MnI;&WMA&Fov7HFMAmcb!hc41aQAW!x#NCoQ*epv>;a6_<8 zE?sJ!wdK*#l|vvE3>3>Pec?M?U{Wac>alIsoUL1D z&Dg!I$@euIH<{3gx$c^gwsVW}a{IQXHRBroP@`rO1^f6H#*53QZQVMv!PH+i&C%3t z-MV4Jx^3Fl&(E5^dGp-*Q?_oIDaE&K*{D&yR;>~~G!Tb1fR$=Xml7ZbU!7dara7{IDb-lo>*R1-rYgKx=!;oSP#-OgiH_1~y#hit`qENl zEY)(|65PFFV`CswNUqJG^{wk<8P;6x)UO9EQRC)>JIb#uRw~UDBh4Kz+kH&D_?{ix*aFm_9R5!8Z?^z4}2Yl5(?)x^dn zV%t=04%0$O3n8C6sy55>TNcY=qNtWEI(y11h4#2|(n ziou|{Rd#ia^};z+t(`z)KxwGFXro+L zg2&CMO&cP{MoAfz+Z^S(@^anWt>qTyhSHreZD@?EOSF!KhQ@ljx_YtZWB!>Dv2^#c zdHxZT-cGV(aZi*U%FbFdM$pGJ(hDaMGG>)btErq-MrZMs`m!d%2v|~_;WxKbM2Cy& zFv%)mAmQEydrdZUnLTU8u3&t)5X?U^wei83hz?+_jCrgWvpf|!ElIU!AU@_jSJ{_SEfCq9HsG#g?ssJS)!in!(>RC|LR65(qH!R^G9K3W+o_6WieZd)q|W(^V`1j1W$_l%6ug$UjJGCz1F??3fa`FiVt@{T6cF0Y!U z`lsESFiAR)Aw0M^R(X5(iSnA(rcz6sot2FZJ2XmIe_}ng+syl>E_5UYeWM|f=1wVM z2h<+oogx+K6nytVl`*A3-1dqw#=|C7*XS&~lgfU%E561yl0f=eETI<(z;43`*}g&; zmzBNF;KOGULurde^gzdZSS6jR-e69Y9p!#@Rf(2J18`O2!SSA17edX)8AzhN*W?p%FbMmc;;~$On zA9Q$N(%~dAV!)P&=z}9p=H#A8J{%dbWx(MF5At^pOr4fAVA42d>^e5NSI-n|aWc}` z^hI=qeeposd&>5Ks*{d3ds^CDWEiSuk+<2?g}ZCx44&cMg?)U&RCgW*($&^BJ{1?Z zXlN;1SO#YdnnGMWbVLe@hNTfAF{xVGD)^1raPs+xJ98gVrmR%flnT20>!XH~f~MUV zKY?|dOp85S@W&M8pz=CiNm07vba)1JZk5n=-PxVfX8uBOa(N17)m1o&5kg$Q5~3xp zrmsSCU~Y!s&91b~Kk$wX_1mK9Pk-avm9c{KSH9gznKE~Gt$H#pNHpeC$9`C2o}AYkEFAOfvU7Huh%#+?vAc$2?g z=)xg5T{6zg;Ji#Cn}qCd@S@J+W?q6hC(-N=<5D3pe=QsL?2R(#lrrZHc&TpsAS^>~ zdXpg1MYb;;%rz6eS<=#*MOLnXQ0GA2nE5OG8J{wpJGAMS$6lYw$XPbFHv5q9eH<3@_34h()yK-z zsNbbWx0ZXZW**qEdUT@&O2&5$tt5%hhb_DT7CrAqv*3Afud44k}1tvW&B(xW>Y( z3DxkWS8R+c^w!f$(7-^)x?&q$WLk}@$WvbYiPE7VZmzDSqasCDs^L~V){QSHG*_IS z9N$+XYDU7MpImhl&kSlcxou^))ZSAyF3Kt8lcn;HiQJyYu-1u$A2CA7~uD0>Y`G>pcP?~mDnfv;k zvSELjz?o$#-Oap7L-2iseeWMCy_7j=bGx>ruidUgN1*ajZP-yQX4`sZMKAEmt>bq8P1>Wxwe9S&$ug(*g~ahO222);Q`$TCSug~#tiZ&#$72ACkuuAh9Y4j zn-5(i2Eu*lf;oe08}|WNXmn++M#L*9gewrAMY%SKe|jpnKJQZgULY)@E_>h65bu1~ zALnh_!?tc%vecbE_+9zBiAH3kU8U8wDPP{Kn*Hwg$*=yIj-wS!mHZ7z-VxTmp3FQ| zc|qbH7VGd$iE|M;*+j_2Tg;ZS2-FpU2_^;!E}TQ|wk)Q*PSNrkH!0W7ZQgX@HoJOO zGVD;!W;VR0oZlus|N86a-@6@%5ex;Wy(pb|k-nu*cY#wPCZAxJ!~DQyFBbzY^-VCvpG7NRYp!{07ut zu*BqJfV-N!PT`?(zfo9aOvD!#`Wb)Xbu~p@{h=dop(B2zwe0B6BOB%_9bvQ_txdM+ zh~s}>XUTq!0@rlE@FEUau!cM4P#pMOk)l@+3sBVtOR-o!*@$nODlg>&%CA2QIKc0l zNBv6uQ%?E3ZI5ta&*>J*Emr1OpZ=R^^wnWBfewG0OSKm79weVH3KSe2 z8Rf#4IMx7TG<%t^e7*DhpZwuTy}?z!aQ)M-S4Jey7+FXvPNb!|_#&26osO(Mt8#5M zt7@O~igDN%U76mWj3KPEtTCs0X_7UpGdR(zqKSoJr2#BvlhHVbZljULXRJEO5-IZyZmbLx8bcA4g1N><(S>YD{vhKej0-M1j7m*^ToxyT zz9FoBV8$)Y-{ zVHgm-Hw&(a{kO>q_P<~?$n8jxbrd(H)(Jo_BBEEB2URcu@SsYxPCA~x24p0;Fpbu*pbb@>|^pB<=D=hH12wf+qB-!?aGPU(tCK(raxP~RlZQ1Vm8kL zw;(GA;zpXt4({se#X)Cqvhb`5!>YB`WtHqmRhv`P1Y_zd2k{<9}>&bRz z&lUS1dJ9)YA~IG#kB4GP*sMNx^7OV8*l}lCFKsaQ%B<6=Do)I&1>!6*HRa1jJvz{IPoGKWXW5N zPGiSFXW_qyVXzHFXQobU&V{3d5Vg8-hKU&)LeLJc!foOM#NxwH4>(+EoFFuSZC8FZ zGLlbS=T4yYm3PL|RGhRRb(->#RWe?a47qm}or^ZEE5`CC4@sWH4^ol@%tx~z@leu3 zb}7SGs%D)nvf?X+$*B}KRIC(V+R4T3)i5E}bcLdTtT2yqp!y_sx{5AvD~G^0j;;)! zrpS(tbQ4=#B8doh7q_*pNDW0S z=(qirqS0%$Zdo!D2P-FTQQ!psMY+)^$szlzVtB9osl3Qj3}17p=PlY-Z1AO-82a@- z?CfED(}E)UNyOj5ouhT0Ey7k2@53r|)v#-!zFKvjrF@{lVN(e<*m=tAl9)xK&ar%& zor$kQmR1_j)5?A20%Fq-=ozIxEiJ5P#f=q>fy~qR2fmhigKL=jvC@cAZcbwU_+vsx?SCwQ8MV;xwCf4&4M>}tEA( cASb?` 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