@keep-network/tbtc-v2 1.0.0-dev.4 → 1.0.0-dev.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/BLS.json +1 -1
- package/artifacts/Bank.json +3 -3
- package/artifacts/BeaconAuthorization.json +1 -1
- package/artifacts/BeaconDkg.json +1 -1
- package/artifacts/BeaconDkgValidator.json +1 -1
- package/artifacts/BeaconInactivity.json +1 -1
- package/artifacts/BeaconSortitionPool.json +3 -3
- package/artifacts/Bridge.json +5 -5
- package/artifacts/BridgeGovernance.json +19 -19
- package/artifacts/BridgeGovernanceParameters.json +7 -7
- package/artifacts/Deposit.json +7 -7
- package/artifacts/DepositSweep.json +7 -7
- package/artifacts/DonationVault.json +188 -0
- package/artifacts/EcdsaDkgValidator.json +1 -1
- package/artifacts/EcdsaInactivity.json +1 -1
- package/artifacts/EcdsaSortitionPool.json +3 -3
- package/artifacts/Fraud.json +9 -9
- package/artifacts/KeepRegistry.json +1 -1
- package/artifacts/KeepStake.json +2 -2
- package/artifacts/KeepToken.json +2 -2
- package/artifacts/KeepTokenStaking.json +1 -1
- package/artifacts/LightRelay.json +3 -3
- package/artifacts/MaintainerProxy.json +15 -15
- package/artifacts/MovingFunds.json +7 -7
- package/artifacts/NuCypherStakingEscrow.json +1 -1
- package/artifacts/NuCypherToken.json +2 -2
- package/artifacts/RandomBeacon.json +2 -2
- package/artifacts/RandomBeaconChaosnet.json +2 -2
- package/artifacts/RandomBeaconGovernance.json +2 -2
- package/artifacts/Redemption.json +7 -7
- package/artifacts/ReimbursementPool.json +2 -2
- package/artifacts/T.json +2 -2
- package/artifacts/TBTC.json +3 -3
- package/artifacts/TBTCToken.json +3 -3
- package/artifacts/TBTCVault.json +9 -9
- package/artifacts/TokenStaking.json +1 -1
- package/artifacts/TokenholderGovernor.json +9 -9
- package/artifacts/TokenholderTimelock.json +8 -8
- package/artifacts/VendingMachine.json +3 -3
- package/artifacts/VendingMachineKeep.json +1 -1
- package/artifacts/VendingMachineNuCypher.json +1 -1
- package/artifacts/WalletRegistry.json +5 -5
- package/artifacts/WalletRegistryGovernance.json +2 -2
- package/artifacts/Wallets.json +7 -7
- package/artifacts/solcInputs/{b63dab89a2e89a0f54eb7f775a5bd516.json → 79a96d1cf4af176d93e6844dc248dcff.json} +2 -2
- package/artifacts/solcInputs/{c88caf1374ff7ffc912d8c7e982bd645.json → fccb130292c8c7cc958ab4fa31a3e180.json} +2 -2
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
- package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
- package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
- package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.json +2 -2
- package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.dbg.json +1 -1
- package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +2 -2
- package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.json +2 -2
- package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
- package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
- package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
- package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +2 -2
- package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
- package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
- package/build/contracts/bridge/Fraud.sol/Fraud.json +2 -2
- package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
- package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +2 -2
- package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/OutboundTx.json +2 -2
- package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/Redemption.json +2 -2
- package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.json +2 -2
- package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
- package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +2 -2
- package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
- package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
- package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
- package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
- package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
- package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +2 -2
- package/contracts/bridge/Bridge.sol +1 -1
- package/contracts/bridge/BridgeState.sol +1 -1
- package/deploy/01_deploy_light_relay.ts +1 -1
- package/deploy/05_deploy_bank.ts +1 -2
- package/deploy/06_deploy_bridge.ts +3 -2
- package/deploy/{11_deploy_tbtc_vault.ts → 07_deploy_tbtc_vault.ts} +0 -0
- package/deploy/08_deploy_donation_vault.ts +34 -0
- package/deploy/{12_deploy_bridge_governance.ts → 09_deploy_bridge_governance.ts} +3 -2
- package/deploy/{13_deploy_maintainer_proxy.ts → 10_deploy_maintainer_proxy.ts} +0 -0
- package/deploy/{14_bank_update_bridge.ts → 11_bank_update_bridge.ts} +0 -0
- package/deploy/{15_authorize_spv_maintainer_in_bridge.ts → 12_authorize_tbtc_vault_in_bridge.ts} +7 -5
- package/deploy/{22_authorize_maintainer_proxy_in_bridge.ts → 13_authorize_maintainer_proxy_in_bridge.ts} +0 -0
- package/deploy/{10_set_deposit_params.ts → 14_set_deposit_parameters.ts} +1 -1
- package/deploy/15_set_wallet_parameters.ts +42 -0
- package/deploy/{07_disable_fraud_challenges.ts → 16_disable_fraud_challenges.ts} +7 -8
- package/deploy/{08_disable_redemptions.ts → 17_disable_redemptions.ts} +6 -4
- package/deploy/{09_disable_moving_funds.ts → 18_disable_moving_funds.ts} +16 -7
- package/deploy/19_authorize_spv_maintainer_in_bridge.ts +31 -0
- package/deploy/{16_transfer_bank_ownership.ts → 20_transfer_bank_ownership.ts} +1 -1
- package/deploy/{17_transfer_bridge_governance.ts → 21_transfer_bridge_governance.ts} +11 -1
- package/deploy/{18_transfer_bridge_governance_ownership.ts → 22_transfer_bridge_governance_ownership.ts} +0 -0
- package/deploy/{19_transfer_tbtc_vault_ownership.ts → 23_transfer_tbtc_vault_ownership.ts} +0 -0
- package/deploy/{20_transfer_maintainer_proxy_ownership.ts → 24_transfer_maintainer_proxy_ownership.ts} +0 -0
- package/deploy/{21_transfer_proxy_admin_ownership.ts → 25_transfer_proxy_admin_ownership.ts} +0 -0
- package/deploy/{23_authorize_maintainer_proxy_in_reimbursement_pool.ts → 26_authorize_maintainer_proxy_in_reimbursement_pool.ts} +7 -0
- package/deploy/{24_authorize_bridge_in_reimbursement_pool.ts → 27_authorize_bridge_in_reimbursement_pool.ts} +7 -0
- package/deploy/{25_deploy_proxy_admin_with_deputy.ts → 28_deploy_proxy_admin_with_deputy.ts} +0 -0
- package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +6 -6
- package/export/artifacts/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +5 -5
- package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +5 -5
- package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +6 -6
- package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +5 -5
- package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +5 -5
- package/export/deploy/01_deploy_light_relay.js +1 -1
- package/export/deploy/05_deploy_bank.js +1 -1
- package/export/deploy/06_deploy_bridge.js +3 -2
- package/export/deploy/{11_deploy_tbtc_vault.js → 07_deploy_tbtc_vault.js} +0 -0
- package/export/deploy/08_deploy_donation_vault.js +83 -0
- package/export/deploy/{12_deploy_bridge_governance.js → 09_deploy_bridge_governance.js} +3 -2
- package/export/deploy/{13_deploy_maintainer_proxy.js → 10_deploy_maintainer_proxy.js} +0 -0
- package/export/deploy/{14_bank_update_bridge.js → 11_bank_update_bridge.js} +0 -0
- package/export/deploy/12_authorize_tbtc_vault_in_bridge.js +63 -0
- package/export/deploy/{22_authorize_maintainer_proxy_in_bridge.js → 13_authorize_maintainer_proxy_in_bridge.js} +0 -0
- package/export/deploy/{10_set_deposit_params.js → 14_set_deposit_parameters.js} +1 -1
- package/export/deploy/15_set_wallet_parameters.js +67 -0
- package/export/deploy/{07_disable_fraud_challenges.js → 16_disable_fraud_challenges.js} +4 -6
- package/export/deploy/{08_disable_redemptions.js → 17_disable_redemptions.js} +3 -2
- package/export/deploy/{09_disable_moving_funds.js → 18_disable_moving_funds.js} +13 -5
- package/export/deploy/{15_authorize_spv_maintainer_in_bridge.js → 19_authorize_spv_maintainer_in_bridge.js} +10 -0
- package/export/deploy/{16_transfer_bank_ownership.js → 20_transfer_bank_ownership.js} +1 -1
- package/export/deploy/{17_transfer_bridge_governance.js → 21_transfer_bridge_governance.js} +11 -1
- package/export/deploy/{18_transfer_bridge_governance_ownership.js → 22_transfer_bridge_governance_ownership.js} +0 -0
- package/export/deploy/{19_transfer_tbtc_vault_ownership.js → 23_transfer_tbtc_vault_ownership.js} +0 -0
- package/export/deploy/{20_transfer_maintainer_proxy_ownership.js → 24_transfer_maintainer_proxy_ownership.js} +0 -0
- package/export/deploy/{21_transfer_proxy_admin_ownership.js → 25_transfer_proxy_admin_ownership.js} +0 -0
- package/export/deploy/{23_authorize_maintainer_proxy_in_reimbursement_pool.js → 26_authorize_maintainer_proxy_in_reimbursement_pool.js} +7 -0
- package/export/deploy/{24_authorize_bridge_in_reimbursement_pool.js → 27_authorize_bridge_in_reimbursement_pool.js} +7 -0
- package/export/deploy/{25_deploy_proxy_admin_with_deputy.js → 28_deploy_proxy_admin_with_deputy.js} +0 -0
- package/export/hardhat.config.js +19 -8
- package/export/tasks/test-utils.js +133 -43
- package/export/test/integration/data/bls.js +12 -0
- package/export/test/integration/data/integration.js +133 -0
- package/export/test/integration/utils/random-beacon.js +193 -0
- package/export/typechain/factories/BridgeGovernance__factory.js +1 -1
- package/export/typechain/factories/BridgeState__factory.js +1 -1
- package/export/typechain/factories/BridgeStub__factory.js +1 -1
- package/export/typechain/factories/Bridge__factory.js +1 -1
- package/export/typechain/factories/DepositSweep__factory.js +1 -1
- package/export/typechain/factories/Deposit__factory.js +1 -1
- package/export/typechain/factories/Fraud__factory.js +1 -1
- package/export/typechain/factories/MaintainerProxy__factory.js +1 -1
- package/export/typechain/factories/MovingFunds__factory.js +1 -1
- package/export/typechain/factories/Redemption__factory.js +1 -1
- package/export/typechain/factories/SystemTestRelay__factory.js +1 -1
- package/export/typechain/factories/TBTCVault__factory.js +1 -1
- package/export/typechain/factories/Wallets__factory.js +1 -1
- package/package.json +3 -3
- package/tasks/test-utils.ts +88 -4
|
@@ -1076,8 +1076,8 @@
|
|
|
1076
1076
|
"type": "function"
|
|
1077
1077
|
}
|
|
1078
1078
|
],
|
|
1079
|
-
"bytecode": "0x60e060405260008054600160a81b600160e81b031916650a8c0000007d60aa1b1790553480156200002f57600080fd5b5060405162003d0f38038062003d0f83398101604081905262000052916200020c565b806200005e33620001a3565b6001600160a01b038116620000c55760405162461bcd60e51b815260206004820152602260248201527f4272696467652063616e206e6f7420626520746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b6001600160a01b039081166080528316620001235760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f20616464726573736044820152606401620000bc565b6001600160a01b0382166200018a5760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b6064820152608401620000bc565b506001600160a01b0391821660a0521660c05262000260565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200020957600080fd5b50565b6000806000606084860312156200022257600080fd5b83516200022f81620001f3565b60208501519093506200024281620001f3565b60408501519092506200025581620001f3565b809150509250925092565b60805160a05160c0516139f36200031c600039600081816106e30152818161093001528181610ca401528181611ece015281816122b701528181612c8701528181612dfe0152612f4e01526000818161053501528181610d1001528181610e5b01528181610ee901528181610fe501528181612333015281816124520152818161254a01528181612e880152612fe701526000818161070a015281816114e30152818161167101528181611c8d0152612eb701526139f36000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220cb3a2eee20068d75301299ad9f4df572707af0156ca083f0ce1dfa9362a398a764736f6c63430008110033",
|
|
1080
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220cb3a2eee20068d75301299ad9f4df572707af0156ca083f0ce1dfa9362a398a764736f6c63430008110033",
|
|
1079
|
+
"bytecode": "0x60e060405260008054600160a81b600160e81b031916650a8c0000007d60aa1b1790553480156200002f57600080fd5b5060405162003d0f38038062003d0f83398101604081905262000052916200020c565b806200005e33620001a3565b6001600160a01b038116620000c55760405162461bcd60e51b815260206004820152602260248201527f4272696467652063616e206e6f7420626520746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b6001600160a01b039081166080528316620001235760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f20616464726573736044820152606401620000bc565b6001600160a01b0382166200018a5760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b6064820152608401620000bc565b506001600160a01b0391821660a0521660c05262000260565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200020957600080fd5b50565b6000806000606084860312156200022257600080fd5b83516200022f81620001f3565b60208501519093506200024281620001f3565b60408501519092506200025581620001f3565b809150509250925092565b60805160a05160c0516139f36200031c600039600081816106e30152818161093001528181610ca401528181611ece015281816122b701528181612c8701528181612dfe0152612f4e01526000818161053501528181610d1001528181610e5b01528181610ee901528181610fe501528181612333015281816124520152818161254a01528181612e880152612fe701526000818161070a015281816114e30152818161167101528181611c8d0152612eb701526139f36000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212206df27f1fd72e328e7748f792dcab62895a452e873cfd8135f1a805978412e1f164736f6c63430008110033",
|
|
1080
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212206df27f1fd72e328e7748f792dcab62895a452e873cfd8135f1a805978412e1f164736f6c63430008110033",
|
|
1081
1081
|
"linkReferences": {},
|
|
1082
1082
|
"deployedLinkReferences": {}
|
|
1083
1083
|
}
|
|
@@ -1447,9 +1447,9 @@ contract Bridge is
|
|
|
1447
1447
|
// i.e. the period when the wallet remains in the Closing state
|
|
1448
1448
|
// and can be subject of deposit fraud challenges.
|
|
1449
1449
|
/// @dev Requirements:
|
|
1450
|
-
/// - Wallet minimum BTC balance must be greater than zero,
|
|
1451
1450
|
/// - Wallet maximum BTC balance must be greater than the wallet
|
|
1452
1451
|
/// minimum BTC balance,
|
|
1452
|
+
/// - Wallet closure BTC balance must be greater than zero,
|
|
1453
1453
|
/// - Wallet maximum BTC transfer must be greater than zero,
|
|
1454
1454
|
/// - Wallet closing period must be greater than zero.
|
|
1455
1455
|
function updateWalletParameters(
|
|
@@ -724,9 +724,9 @@ library BridgeState {
|
|
|
724
724
|
// i.e. the period when the wallet remains in the Closing state
|
|
725
725
|
// and can be subject of deposit fraud challenges.
|
|
726
726
|
/// @dev Requirements:
|
|
727
|
-
/// - Wallet minimum BTC balance must be greater than zero,
|
|
728
727
|
/// - Wallet maximum BTC balance must be greater than the wallet
|
|
729
728
|
/// minimum BTC balance,
|
|
729
|
+
/// - Wallet closure BTC balance must be greater than zero,
|
|
730
730
|
/// - Wallet maximum BTC transfer must be greater than zero,
|
|
731
731
|
/// - Wallet closing period must be greater than zero.
|
|
732
732
|
function updateWalletParameters(
|
package/deploy/05_deploy_bank.ts
CHANGED
|
@@ -7,8 +7,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
|
7
7
|
const { deployer } = await getNamedAccounts()
|
|
8
8
|
|
|
9
9
|
const bank = await deploy("Bank", {
|
|
10
|
-
contract:
|
|
11
|
-
process.env.TEST_USE_STUBS_TBTC === "true" ? "BankStub" : undefined,
|
|
10
|
+
contract: process.env.TEST_USE_STUBS_TBTC === "true" ? "BankStub" : "Bank",
|
|
12
11
|
from: deployer,
|
|
13
12
|
args: [],
|
|
14
13
|
log: true,
|
|
@@ -14,7 +14,8 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
|
14
14
|
// For local tests use `1`.
|
|
15
15
|
const txProofDifficultyFactor =
|
|
16
16
|
deployments.getNetworkName() === "hardhat" ||
|
|
17
|
-
deployments.getNetworkName() === "development"
|
|
17
|
+
deployments.getNetworkName() === "development" ||
|
|
18
|
+
deployments.getNetworkName() === "system_tests"
|
|
18
19
|
? 1
|
|
19
20
|
: 6
|
|
20
21
|
|
|
@@ -38,7 +39,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
|
38
39
|
"Bridge",
|
|
39
40
|
{
|
|
40
41
|
contractName:
|
|
41
|
-
process.env.TEST_USE_STUBS_TBTC === "true" ? "BridgeStub" :
|
|
42
|
+
process.env.TEST_USE_STUBS_TBTC === "true" ? "BridgeStub" : "Bridge",
|
|
42
43
|
initializerArgs: [
|
|
43
44
|
Bank.address,
|
|
44
45
|
LightRelay.address,
|
|
File without changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { HardhatRuntimeEnvironment } from "hardhat/types"
|
|
2
|
+
import { DeployFunction } from "hardhat-deploy/types"
|
|
3
|
+
|
|
4
|
+
const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
5
|
+
const { deployments, getNamedAccounts, helpers } = hre
|
|
6
|
+
const { deploy } = deployments
|
|
7
|
+
const { deployer } = await getNamedAccounts()
|
|
8
|
+
|
|
9
|
+
const Bank = await deployments.get("Bank")
|
|
10
|
+
|
|
11
|
+
const donationVault = await deploy("DonationVault", {
|
|
12
|
+
contract: "DonationVault",
|
|
13
|
+
from: deployer,
|
|
14
|
+
args: [Bank.address],
|
|
15
|
+
log: true,
|
|
16
|
+
waitConfirmations: 1,
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
if (hre.network.tags.etherscan) {
|
|
20
|
+
await helpers.etherscan.verify(donationVault)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (hre.network.tags.tenderly) {
|
|
24
|
+
await hre.tenderly.verify({
|
|
25
|
+
name: "DonationVault",
|
|
26
|
+
address: donationVault.address,
|
|
27
|
+
})
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default func
|
|
32
|
+
|
|
33
|
+
func.tags = ["DonationVault"]
|
|
34
|
+
func.dependencies = ["Bank"]
|
|
@@ -17,10 +17,11 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
|
17
17
|
}
|
|
18
18
|
)
|
|
19
19
|
|
|
20
|
-
// 60 seconds for Goerli.
|
|
21
|
-
const GOVERNANCE_DELAY = hre.network.name === "goerli" ? 60 :
|
|
20
|
+
// 60 seconds for Goerli. 48 hours otherwise.
|
|
21
|
+
const GOVERNANCE_DELAY = hre.network.name === "goerli" ? 60 : 172800
|
|
22
22
|
|
|
23
23
|
const bridgeGovernance = await deploy("BridgeGovernance", {
|
|
24
|
+
contract: "BridgeGovernance",
|
|
24
25
|
from: deployer,
|
|
25
26
|
args: [Bridge.address, GOVERNANCE_DELAY],
|
|
26
27
|
log: true,
|
|
File without changes
|
|
File without changes
|
package/deploy/{15_authorize_spv_maintainer_in_bridge.ts → 12_authorize_tbtc_vault_in_bridge.ts}
RENAMED
|
@@ -4,18 +4,20 @@ import { DeployFunction } from "hardhat-deploy/types"
|
|
|
4
4
|
const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
5
5
|
const { getNamedAccounts, deployments } = hre
|
|
6
6
|
const { execute } = deployments
|
|
7
|
-
const { deployer
|
|
7
|
+
const { deployer } = await getNamedAccounts()
|
|
8
|
+
|
|
9
|
+
const TBTCVault = await deployments.get("TBTCVault")
|
|
8
10
|
|
|
9
11
|
await execute(
|
|
10
12
|
"Bridge",
|
|
11
13
|
{ from: deployer, log: true, waitConfirmations: 1 },
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
+
"setVaultStatus",
|
|
15
|
+
TBTCVault.address,
|
|
14
16
|
true
|
|
15
17
|
)
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export default func
|
|
19
21
|
|
|
20
|
-
func.tags = ["
|
|
21
|
-
func.dependencies = ["Bridge"]
|
|
22
|
+
func.tags = ["AuthorizeTBTCVault"]
|
|
23
|
+
func.dependencies = ["Bridge", "TBTCVault"]
|
|
File without changes
|
|
@@ -31,7 +31,7 @@ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
|
|
|
31
31
|
|
|
32
32
|
export default func
|
|
33
33
|
|
|
34
|
-
func.tags = ["
|
|
34
|
+
func.tags = ["SetDepositParameters"]
|
|
35
35
|
func.dependencies = ["Bridge"]
|
|
36
36
|
|
|
37
37
|
func.skip = async (hre: HardhatRuntimeEnvironment): Promise<boolean> =>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { HardhatRuntimeEnvironment } from "hardhat/types"
|
|
2
|
+
import type { DeployFunction } from "hardhat-deploy/types"
|
|
3
|
+
|
|
4
|
+
const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
|
|
5
|
+
const { deployments, ethers, getNamedAccounts } = hre
|
|
6
|
+
const { execute, read } = deployments
|
|
7
|
+
const { deployer } = await getNamedAccounts()
|
|
8
|
+
|
|
9
|
+
deployments.log("setting initial wallet parameters")
|
|
10
|
+
|
|
11
|
+
// We set the wallet creation period to two weeks and the min BTC balance to
|
|
12
|
+
// zero. It will allow creating new wallets every two weeks even though they
|
|
13
|
+
// are not sweeping so from the Bridge's perspective their balance is zero.
|
|
14
|
+
//
|
|
15
|
+
// 14 * 24 * 60 * 60 = 1209600 seconds
|
|
16
|
+
const walletCreationPeriod = ethers.BigNumber.from("1209600")
|
|
17
|
+
const walletCreationMinBtcBalance = ethers.BigNumber.from("0")
|
|
18
|
+
|
|
19
|
+
// Fetch the current values of other wallet parameters to keep them unchanged.
|
|
20
|
+
const walletParameters = await read("Bridge", "walletParameters")
|
|
21
|
+
|
|
22
|
+
await execute(
|
|
23
|
+
"Bridge",
|
|
24
|
+
{ from: deployer, log: true, waitConfirmations: 1 },
|
|
25
|
+
"updateWalletParameters",
|
|
26
|
+
walletCreationPeriod,
|
|
27
|
+
walletCreationMinBtcBalance,
|
|
28
|
+
walletParameters.walletCreationMaxBtcBalance,
|
|
29
|
+
walletParameters.walletClosureMinBtcBalance,
|
|
30
|
+
walletParameters.walletMaxAge,
|
|
31
|
+
walletParameters.walletMaxBtcTransfer,
|
|
32
|
+
walletParameters.walletClosingPeriod
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export default func
|
|
37
|
+
|
|
38
|
+
func.tags = ["SetWalletParameters"]
|
|
39
|
+
func.dependencies = ["Bridge"]
|
|
40
|
+
|
|
41
|
+
func.skip = async (hre: HardhatRuntimeEnvironment): Promise<boolean> =>
|
|
42
|
+
hre.network.name !== "mainnet"
|
|
@@ -3,7 +3,7 @@ import type { DeployFunction } from "hardhat-deploy/types"
|
|
|
3
3
|
|
|
4
4
|
const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
|
|
5
5
|
const { deployments, ethers, getNamedAccounts } = hre
|
|
6
|
-
const { execute
|
|
6
|
+
const { execute } = deployments
|
|
7
7
|
const { deployer } = await getNamedAccounts()
|
|
8
8
|
|
|
9
9
|
deployments.log("disabling fraud challenges in the Bridge")
|
|
@@ -16,14 +16,13 @@ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
|
|
|
16
16
|
"79228162514264337593543950335"
|
|
17
17
|
)
|
|
18
18
|
|
|
19
|
-
// To emphasize the fact that frauds are disabled, we set
|
|
20
|
-
// fraudChallengeDefeatTimeout to uint32 max value (2^32-1 = 4294967295)
|
|
21
|
-
// fraudSlashingAmount to zero
|
|
19
|
+
// To emphasize the fact that frauds are disabled, we set:
|
|
20
|
+
// - fraudChallengeDefeatTimeout to uint32 max value (2^32-1 = 4294967295)
|
|
21
|
+
// - fraudSlashingAmount to zero,
|
|
22
|
+
// - fraudNotifierRewardMultiplier to zero.
|
|
22
23
|
const fraudChallengeDefeatTimeout = ethers.BigNumber.from("4294967295")
|
|
23
24
|
const fraudSlashingAmount = ethers.BigNumber.from("0")
|
|
24
|
-
|
|
25
|
-
// Fetch the current values of other fraud parameters to keep them unchanged.
|
|
26
|
-
const fraudParameters = await read("Bridge", "fraudParameters")
|
|
25
|
+
const fraudNotifierRewardMultiplier = ethers.BigNumber.from("0")
|
|
27
26
|
|
|
28
27
|
await execute(
|
|
29
28
|
"Bridge",
|
|
@@ -32,7 +31,7 @@ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
|
|
|
32
31
|
fraudChallengeDepositAmount,
|
|
33
32
|
fraudChallengeDefeatTimeout,
|
|
34
33
|
fraudSlashingAmount,
|
|
35
|
-
|
|
34
|
+
fraudNotifierRewardMultiplier
|
|
36
35
|
)
|
|
37
36
|
}
|
|
38
37
|
|
|
@@ -14,11 +14,13 @@ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
|
|
|
14
14
|
// The maximum value for the uint64 is 2^64-1 = 18446744073709551615.
|
|
15
15
|
const redemptionDustThreshold = ethers.BigNumber.from("18446744073709551615")
|
|
16
16
|
|
|
17
|
-
// To emphasize the fact that redemptions are disabled, we set
|
|
18
|
-
// redemptionTimeout to uint32 max value (2^32-1 = 4294967295)
|
|
19
|
-
// redemptionTimeoutSlashingAmount to zero
|
|
17
|
+
// To emphasize the fact that redemptions are disabled, we set:
|
|
18
|
+
// - redemptionTimeout to uint32 max value (2^32-1 = 4294967295),
|
|
19
|
+
// - redemptionTimeoutSlashingAmount to zero,
|
|
20
|
+
// - redemptionTimeoutNotifierRewardMultiplier to zero.
|
|
20
21
|
const redemptionTimeout = ethers.BigNumber.from("4294967295")
|
|
21
22
|
const redemptionTimeoutSlashingAmount = ethers.BigNumber.from("0")
|
|
23
|
+
const redemptionTimeoutNotifierRewardMultiplier = ethers.BigNumber.from("0")
|
|
22
24
|
|
|
23
25
|
// Fetch the current values of other redemption parameters to keep them unchanged.
|
|
24
26
|
const redemptionParameters = await read("Bridge", "redemptionParameters")
|
|
@@ -33,7 +35,7 @@ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
|
|
|
33
35
|
redemptionParameters.redemptionTxMaxTotalFee,
|
|
34
36
|
redemptionTimeout,
|
|
35
37
|
redemptionTimeoutSlashingAmount,
|
|
36
|
-
|
|
38
|
+
redemptionTimeoutNotifierRewardMultiplier
|
|
37
39
|
)
|
|
38
40
|
}
|
|
39
41
|
|