@arbitrum/nitro-contracts
Version:
Layer 2 precompiles and rollup for Arbitrum Nitro
408 lines (407 loc) • 37.8 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ValidatorWallet",
"sourceName": "src/rollup/ValidatorWallet.sol",
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "expected",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "actual",
"type": "uint256"
}
],
"name": "BadArrayLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "actual",
"type": "address"
}
],
"name": "NotExecutorOrOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "expected",
"type": "address"
},
{
"internalType": "address",
"name": "actual",
"type": "address"
},
{
"internalType": "address",
"name": "destination",
"type": "address"
}
],
"name": "OnlyOwnerDestination",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "destination",
"type": "address"
}
],
"name": "WithdrawEthFail",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "destination",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isSet",
"type": "bool"
}
],
"name": "AllowedExecutorDestinationsUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "executor",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isExecutor",
"type": "bool"
}
],
"name": "ExecutorUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowedExecutorDestinations",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "address",
"name": "destination",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "executeTransaction",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IGasRefunder",
"name": "gasRefunder",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "address",
"name": "destination",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "executeTransactionWithGasRefunder",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes[]",
"name": "data",
"type": "bytes[]"
},
{
"internalType": "address[]",
"name": "destination",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "amount",
"type": "uint256[]"
}
],
"name": "executeTransactions",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IGasRefunder",
"name": "gasRefunder",
"type": "address"
},
{
"internalType": "bytes[]",
"name": "data",
"type": "bytes[]"
},
{
"internalType": "address[]",
"name": "destination",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "amount",
"type": "uint256[]"
}
],
"name": "executeTransactionsWithGasRefunder",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "executors",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_executor",
"type": "address"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address[]",
"name": "initialExecutorAllowedDests",
"type": "address[]"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "destinations",
"type": "address[]"
},
{
"internalType": "bool[]",
"name": "isSet",
"type": "bool[]"
}
],
"name": "setAllowedExecutorDestinations",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "newExecutors",
"type": "address[]"
},
{
"internalType": "bool[]",
"name": "isExecutor",
"type": "bool[]"
}
],
"name": "setExecutor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "destination",
"type": "address"
}
],
"name": "validateExecuteTransaction",
"outputs": [],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "destination",
"type": "address"
}
],
"name": "withdrawEth",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60c0604052306080526202000060a05234801561001b57600080fd5b5060805160a051611c3f61004860003960008181610562015261116901526000610a3a0152611c3f6000f3fe6080604052600436106100e15760003560e01c80638da5cb5b1161007f578063a158657c11610059578063a158657c14610247578063c179f1d914610267578063ce1d571f1461027a578063f2fde38b1461028d57600080fd5b80638da5cb5b146101cf5780639ac2a011146101f75780639be7bbd21461022757600080fd5b80633a7c721a116100bb5780633a7c721a14610167578063715018a61461018757806372f458661461019c57806377a24f36146101af57600080fd5b8063097da1f8146100ed5780630a2435f814610102578063193c8edd1461012257600080fd5b366100e857005b600080fd5b6101006100fb36600461154f565b6102ad565b005b34801561010e57600080fd5b5061010061011d366004611604565b610668565b34801561012e57600080fd5b5061015261013d366004611670565b60666020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561017357600080fd5b50610100610182366004611604565b6107eb565b34801561019357600080fd5b50610100610935565b6101006101aa366004611694565b610949565b3480156101bb57600080fd5b506101006101ca36600461172e565b610961565b3480156101db57600080fd5b506033546040516001600160a01b03909116815260200161015e565b34801561020357600080fd5b50610152610212366004611670565b60656020526000908152604090205460ff1681565b34801561023357600080fd5b50610100610242366004611670565b610c78565b34801561025357600080fd5b50610100610262366004611787565b610d03565b6101006102753660046117b7565b610da8565b610100610288366004611864565b611271565b34801561029957600080fd5b506101006102a8366004611670565b611285565b3360009081526065602052604090205460ff161580156102d857506033546001600160a01b03163314155b1561032257335b6040517ff26aea8b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024015b60405180910390fd5b846000805a90508515610386576001600160a01b0385163b6103865760405162461bcd60e51b815260206004820152600f60248201527f4e4f5f434f44455f41545f4144445200000000000000000000000000000000006044820152606401610319565b61038f85610c78565b6000856001600160a01b03168589896040516103ac9291906118c1565b60006040518083038185875af1925050503d80600081146103e9576040519150601f19603f3d011682016040523d82523d6000602084013e6103ee565b606091505b5050905080610404576040513d806000833e8082fd5b506001600160a01b0383161561065e57366000602061042483601f6118e7565b61042e9190611900565b905061020061043e600283611a06565b6104489190611900565b610453826006611a15565b61045d91906118e7565b61046790846118e7565b9250610471611312565b61047e57600091506105b1565b6001600160a01b038416156105b157836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156104ec57506040513d6000823e601f3d908101601f191682016040526104e99190810190611a42565b60015b156105b1578051156105af576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190611b00565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161058d9190611a15565b6105979190611a15565b6105a19190611900565b6105ab90866118e7565b9450505b505b846001600160a01b031663e3db8a49335a6105cc9087611b19565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a9190611b3a565b5050505b5050505050505050565b610670611327565b82811461069a5760405163088253c360e11b81526004810184905260248101829052604401610319565b60005b67ffffffffffffffff81168411156107e45782828267ffffffffffffffff168181106106cb576106cb611b57565b90506020020160208101906106e09190611b6d565b6065600087878567ffffffffffffffff1681811061070057610700611b57565b90506020020160208101906107159190611670565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055848467ffffffffffffffff831681811061075957610759611b57565b905060200201602081019061076e9190611670565b6001600160a01b03167f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea284848467ffffffffffffffff168181106107b4576107b4611b57565b90506020020160208101906107c99190611b6d565b604051901515815260200160405180910390a260010161069d565b5050505050565b6107f3611327565b82811461081d5760405163088253c360e11b81526004810184905260248101829052604401610319565b60005b838110156107e45782828281811061083a5761083a611b57565b905060200201602081019061084f9190611b6d565b6066600087878581811061086557610865611b57565b905060200201602081019061087a9190611670565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558484828181106108b4576108b4611b57565b90506020020160208101906108c99190611670565b6001600160a01b03167fab063fe575c4df359aaf3733bcf10706bacfdd24557e670a2c1cba126ae4d8a484848481811061090557610905611b57565b905060200201602081019061091a9190611b6d565b604051901515815260200160405180910390a2600101610820565b61093d611327565b6109476000611381565b565b6109596000878787878787610da8565b505050505050565b600054610100900460ff16158080156109815750600054600160ff909116105b8061099b5750303b15801561099b575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610319565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ace5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610319565b610ad66113eb565b610adf84611285565b6001600160a01b038516600081815260656020908152604091829020805460ff1916600190811790915591519182527f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea2910160405180910390a260005b67ffffffffffffffff8116831115610c2b5760016066600086868567ffffffffffffffff16818110610b7057610b70611b57565b9050602002016020810190610b859190611670565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838367ffffffffffffffff8316818110610bc957610bc9611b57565b9050602002016020810190610bde9190611670565b6001600160a01b03167fab063fe575c4df359aaf3733bcf10706bacfdd24557e670a2c1cba126ae4d8a46001604051610c1b911515815260200190565b60405180910390a2600101610b3c565b5080156107e4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6001600160a01b03811660009081526066602052604090205460ff16158015610cac57506033546001600160a01b03163314155b15610d00576033546040517f41fc6f8a0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201523360248201529082166044820152606401610319565b50565b610d0b611327565b6000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114610d58576040519150601f19603f3d011682016040523d82523d6000602084013e610d5d565b606091505b5050905080610da3576040517f7edbb4980000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610319565b505050565b3360009081526065602052604090205460ff16158015610dd357506033546001600160a01b03163314155b15610dde57336102df565b866000805a905087868114610e105760405163088253c360e11b81526004810182905260248101889052604401610319565b808514610e3a5760405163088253c360e11b81526004810182905260248101869052604401610319565b60005b8181101561100a5760008b8b83818110610e5957610e59611b57565b9050602002810190610e6b9190611b8a565b90501115610ef857610eac898983818110610e8857610e88611b57565b9050602002016020810190610e9d9190611670565b6001600160a01b03163b151590565b610ef85760405162461bcd60e51b815260206004820152600f60248201527f4e4f5f434f44455f41545f4144445200000000000000000000000000000000006044820152606401610319565b610f22898983818110610f0d57610f0d611b57565b90506020020160208101906102429190611670565b6000898983818110610f3657610f36611b57565b9050602002016020810190610f4b9190611670565b6001600160a01b0316888884818110610f6657610f66611b57565b905060200201358d8d85818110610f7f57610f7f611b57565b9050602002810190610f919190611b8a565b604051610f9f9291906118c1565b60006040518083038185875af1925050503d8060008114610fdc576040519150601f19603f3d011682016040523d82523d6000602084013e610fe1565b606091505b5050905080610ff7576040513d806000833e8082fd5b508061100281611bef565b915050610e3d565b50506001600160a01b0383161561126557366000602061102b83601f6118e7565b6110359190611900565b9050610200611045600283611a06565b61104f9190611900565b61105a826006611a15565b61106491906118e7565b61106e90846118e7565b9250611078611312565b61108557600091506111b8565b6001600160a01b038416156111b857836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156110f357506040513d6000823e601f3d908101601f191682016040526110f09190810190611a42565b60015b156111b8578051156111b6576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111639190611b00565b905048817f000000000000000000000000000000000000000000000000000000000000000084516111949190611a15565b61119e9190611a15565b6111a89190611900565b6111b290866118e7565b9450505b505b846001600160a01b031663e3db8a49335a6111d39087611b19565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611b3a565b5050505b50505050505050505050565b61127f6000858585856102ad565b50505050565b61128d611327565b6001600160a01b0381166113095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610319565b610d0081611381565b600033321480156113225750333b155b905090565b6033546001600160a01b031633146109475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610319565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166114685760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610319565b610947600054610100900460ff166114e85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610319565b61094733611381565b6001600160a01b0381168114610d0057600080fd5b60008083601f84011261151857600080fd5b50813567ffffffffffffffff81111561153057600080fd5b60208301915083602082850101111561154857600080fd5b9250929050565b60008060008060006080868803121561156757600080fd5b8535611572816114f1565b9450602086013567ffffffffffffffff81111561158e57600080fd5b61159a88828901611506565b90955093505060408601356115ae816114f1565b949793965091946060013592915050565b60008083601f8401126115d157600080fd5b50813567ffffffffffffffff8111156115e957600080fd5b6020830191508360208260051b850101111561154857600080fd5b6000806000806040858703121561161a57600080fd5b843567ffffffffffffffff8082111561163257600080fd5b61163e888389016115bf565b9096509450602087013591508082111561165757600080fd5b50611664878288016115bf565b95989497509550505050565b60006020828403121561168257600080fd5b813561168d816114f1565b9392505050565b600080600080600080606087890312156116ad57600080fd5b863567ffffffffffffffff808211156116c557600080fd5b6116d18a838b016115bf565b909850965060208901359150808211156116ea57600080fd5b6116f68a838b016115bf565b9096509450604089013591508082111561170f57600080fd5b5061171c89828a016115bf565b979a9699509497509295939492505050565b6000806000806060858703121561174457600080fd5b843561174f816114f1565b9350602085013561175f816114f1565b9250604085013567ffffffffffffffff81111561177b57600080fd5b611664878288016115bf565b6000806040838503121561179a57600080fd5b8235915060208301356117ac816114f1565b809150509250929050565b60008060008060008060006080888a0312156117d257600080fd5b87356117dd816114f1565b9650602088013567ffffffffffffffff808211156117fa57600080fd5b6118068b838c016115bf565b909850965060408a013591508082111561181f57600080fd5b61182b8b838c016115bf565b909650945060608a013591508082111561184457600080fd5b506118518a828b016115bf565b989b979a50959850939692959293505050565b6000806000806060858703121561187a57600080fd5b843567ffffffffffffffff81111561189157600080fd5b61189d87828801611506565b90955093505060208501356118b1816114f1565b9396929550929360400135925050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156118fa576118fa6118d1565b92915050565b60008261191d57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561195d578160001904821115611943576119436118d1565b8085161561195057918102915b93841c9390800290611927565b509250929050565b600082611974575060016118fa565b81611981575060006118fa565b816001811461199757600281146119a1576119bd565b60019150506118fa565b60ff8411156119b2576119b26118d1565b50506001821b6118fa565b5060208310610133831016604e8410600b84101617156119e0575081810a6118fa565b6119ea8383611922565b80600019048211156119fe576119fe6118d1565b029392505050565b600061168d60ff841683611965565b80820281158282048414176118fa576118fa6118d1565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611a5557600080fd5b825167ffffffffffffffff80821115611a6d57600080fd5b818501915085601f830112611a8157600080fd5b815181811115611a9357611a93611a2c565b8060051b604051601f19603f83011681018181108582111715611ab857611ab8611a2c565b604052918252848201925083810185019188831115611ad657600080fd5b938501935b82851015611af457845184529385019392850192611adb565b98975050505050505050565b600060208284031215611b1257600080fd5b5051919050565b818103818111156118fa576118fa6118d1565b8015158114610d0057600080fd5b600060208284031215611b4c57600080fd5b815161168d81611b2c565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b7f57600080fd5b813561168d81611b2c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611bbf57600080fd5b83018035915067ffffffffffffffff821115611bda57600080fd5b60200191503681900382131561154857600080fd5b60006000198203611c0257611c026118d1565b506001019056fea26469706673582212201b8c8d3f657a1f00cb4519e7a8dac6c32c676f86b2e4bf5ffd27d27342fc945264736f6c63430008110033",
"deployedBytecode": "0x6080604052600436106100e15760003560e01c80638da5cb5b1161007f578063a158657c11610059578063a158657c14610247578063c179f1d914610267578063ce1d571f1461027a578063f2fde38b1461028d57600080fd5b80638da5cb5b146101cf5780639ac2a011146101f75780639be7bbd21461022757600080fd5b80633a7c721a116100bb5780633a7c721a14610167578063715018a61461018757806372f458661461019c57806377a24f36146101af57600080fd5b8063097da1f8146100ed5780630a2435f814610102578063193c8edd1461012257600080fd5b366100e857005b600080fd5b6101006100fb36600461154f565b6102ad565b005b34801561010e57600080fd5b5061010061011d366004611604565b610668565b34801561012e57600080fd5b5061015261013d366004611670565b60666020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561017357600080fd5b50610100610182366004611604565b6107eb565b34801561019357600080fd5b50610100610935565b6101006101aa366004611694565b610949565b3480156101bb57600080fd5b506101006101ca36600461172e565b610961565b3480156101db57600080fd5b506033546040516001600160a01b03909116815260200161015e565b34801561020357600080fd5b50610152610212366004611670565b60656020526000908152604090205460ff1681565b34801561023357600080fd5b50610100610242366004611670565b610c78565b34801561025357600080fd5b50610100610262366004611787565b610d03565b6101006102753660046117b7565b610da8565b610100610288366004611864565b611271565b34801561029957600080fd5b506101006102a8366004611670565b611285565b3360009081526065602052604090205460ff161580156102d857506033546001600160a01b03163314155b1561032257335b6040517ff26aea8b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024015b60405180910390fd5b846000805a90508515610386576001600160a01b0385163b6103865760405162461bcd60e51b815260206004820152600f60248201527f4e4f5f434f44455f41545f4144445200000000000000000000000000000000006044820152606401610319565b61038f85610c78565b6000856001600160a01b03168589896040516103ac9291906118c1565b60006040518083038185875af1925050503d80600081146103e9576040519150601f19603f3d011682016040523d82523d6000602084013e6103ee565b606091505b5050905080610404576040513d806000833e8082fd5b506001600160a01b0383161561065e57366000602061042483601f6118e7565b61042e9190611900565b905061020061043e600283611a06565b6104489190611900565b610453826006611a15565b61045d91906118e7565b61046790846118e7565b9250610471611312565b61047e57600091506105b1565b6001600160a01b038416156105b157836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156104ec57506040513d6000823e601f3d908101601f191682016040526104e99190810190611a42565b60015b156105b1578051156105af576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190611b00565b905048817f0000000000000000000000000000000000000000000000000000000000000000845161058d9190611a15565b6105979190611a15565b6105a19190611900565b6105ab90866118e7565b9450505b505b846001600160a01b031663e3db8a49335a6105cc9087611b19565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a9190611b3a565b5050505b5050505050505050565b610670611327565b82811461069a5760405163088253c360e11b81526004810184905260248101829052604401610319565b60005b67ffffffffffffffff81168411156107e45782828267ffffffffffffffff168181106106cb576106cb611b57565b90506020020160208101906106e09190611b6d565b6065600087878567ffffffffffffffff1681811061070057610700611b57565b90506020020160208101906107159190611670565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055848467ffffffffffffffff831681811061075957610759611b57565b905060200201602081019061076e9190611670565b6001600160a01b03167f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea284848467ffffffffffffffff168181106107b4576107b4611b57565b90506020020160208101906107c99190611b6d565b604051901515815260200160405180910390a260010161069d565b5050505050565b6107f3611327565b82811461081d5760405163088253c360e11b81526004810184905260248101829052604401610319565b60005b838110156107e45782828281811061083a5761083a611b57565b905060200201602081019061084f9190611b6d565b6066600087878581811061086557610865611b57565b905060200201602081019061087a9190611670565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558484828181106108b4576108b4611b57565b90506020020160208101906108c99190611670565b6001600160a01b03167fab063fe575c4df359aaf3733bcf10706bacfdd24557e670a2c1cba126ae4d8a484848481811061090557610905611b57565b905060200201602081019061091a9190611b6d565b604051901515815260200160405180910390a2600101610820565b61093d611327565b6109476000611381565b565b6109596000878787878787610da8565b505050505050565b600054610100900460ff16158080156109815750600054600160ff909116105b8061099b5750303b15801561099b575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610319565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ace5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610319565b610ad66113eb565b610adf84611285565b6001600160a01b038516600081815260656020908152604091829020805460ff1916600190811790915591519182527f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea2910160405180910390a260005b67ffffffffffffffff8116831115610c2b5760016066600086868567ffffffffffffffff16818110610b7057610b70611b57565b9050602002016020810190610b859190611670565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838367ffffffffffffffff8316818110610bc957610bc9611b57565b9050602002016020810190610bde9190611670565b6001600160a01b03167fab063fe575c4df359aaf3733bcf10706bacfdd24557e670a2c1cba126ae4d8a46001604051610c1b911515815260200190565b60405180910390a2600101610b3c565b5080156107e4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6001600160a01b03811660009081526066602052604090205460ff16158015610cac57506033546001600160a01b03163314155b15610d00576033546040517f41fc6f8a0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201523360248201529082166044820152606401610319565b50565b610d0b611327565b6000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114610d58576040519150601f19603f3d011682016040523d82523d6000602084013e610d5d565b606091505b5050905080610da3576040517f7edbb4980000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610319565b505050565b3360009081526065602052604090205460ff16158015610dd357506033546001600160a01b03163314155b15610dde57336102df565b866000805a905087868114610e105760405163088253c360e11b81526004810182905260248101889052604401610319565b808514610e3a5760405163088253c360e11b81526004810182905260248101869052604401610319565b60005b8181101561100a5760008b8b83818110610e5957610e59611b57565b9050602002810190610e6b9190611b8a565b90501115610ef857610eac898983818110610e8857610e88611b57565b9050602002016020810190610e9d9190611670565b6001600160a01b03163b151590565b610ef85760405162461bcd60e51b815260206004820152600f60248201527f4e4f5f434f44455f41545f4144445200000000000000000000000000000000006044820152606401610319565b610f22898983818110610f0d57610f0d611b57565b90506020020160208101906102429190611670565b6000898983818110610f3657610f36611b57565b9050602002016020810190610f4b9190611670565b6001600160a01b0316888884818110610f6657610f66611b57565b905060200201358d8d85818110610f7f57610f7f611b57565b9050602002810190610f919190611b8a565b604051610f9f9291906118c1565b60006040518083038185875af1925050503d8060008114610fdc576040519150601f19603f3d011682016040523d82523d6000602084013e610fe1565b606091505b5050905080610ff7576040513d806000833e8082fd5b508061100281611bef565b915050610e3d565b50506001600160a01b0383161561126557366000602061102b83601f6118e7565b6110359190611900565b9050610200611045600283611a06565b61104f9190611900565b61105a826006611a15565b61106491906118e7565b61106e90846118e7565b9250611078611312565b61108557600091506111b8565b6001600160a01b038416156111b857836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156110f357506040513d6000823e601f3d908101601f191682016040526110f09190810190611a42565b60015b156111b8578051156111b6576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111639190611b00565b905048817f000000000000000000000000000000000000000000000000000000000000000084516111949190611a15565b61119e9190611a15565b6111a89190611900565b6111b290866118e7565b9450505b505b846001600160a01b031663e3db8a49335a6111d39087611b19565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611b3a565b5050505b50505050505050505050565b61127f6000858585856102ad565b50505050565b61128d611327565b6001600160a01b0381166113095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610319565b610d0081611381565b600033321480156113225750333b155b905090565b6033546001600160a01b031633146109475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610319565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166114685760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610319565b610947600054610100900460ff166114e85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610319565b61094733611381565b6001600160a01b0381168114610d0057600080fd5b60008083601f84011261151857600080fd5b50813567ffffffffffffffff81111561153057600080fd5b60208301915083602082850101111561154857600080fd5b9250929050565b60008060008060006080868803121561156757600080fd5b8535611572816114f1565b9450602086013567ffffffffffffffff81111561158e57600080fd5b61159a88828901611506565b90955093505060408601356115ae816114f1565b949793965091946060013592915050565b60008083601f8401126115d157600080fd5b50813567ffffffffffffffff8111156115e957600080fd5b6020830191508360208260051b850101111561154857600080fd5b6000806000806040858703121561161a57600080fd5b843567ffffffffffffffff8082111561163257600080fd5b61163e888389016115bf565b9096509450602087013591508082111561165757600080fd5b50611664878288016115bf565b95989497509550505050565b60006020828403121561168257600080fd5b813561168d816114f1565b9392505050565b600080600080600080606087890312156116ad57600080fd5b863567ffffffffffffffff808211156116c557600080fd5b6116d18a838b016115bf565b909850965060208901359150808211156116ea57600080fd5b6116f68a838b016115bf565b9096509450604089013591508082111561170f57600080fd5b5061171c89828a016115bf565b979a9699509497509295939492505050565b6000806000806060858703121561174457600080fd5b843561174f816114f1565b9350602085013561175f816114f1565b9250604085013567ffffffffffffffff81111561177b57600080fd5b611664878288016115bf565b6000806040838503121561179a57600080fd5b8235915060208301356117ac816114f1565b809150509250929050565b60008060008060008060006080888a0312156117d257600080fd5b87356117dd816114f1565b9650602088013567ffffffffffffffff808211156117fa57600080fd5b6118068b838c016115bf565b909850965060408a013591508082111561181f57600080fd5b61182b8b838c016115bf565b909650945060608a013591508082111561184457600080fd5b506118518a828b016115bf565b989b979a50959850939692959293505050565b6000806000806060858703121561187a57600080fd5b843567ffffffffffffffff81111561189157600080fd5b61189d87828801611506565b90955093505060208501356118b1816114f1565b9396929550929360400135925050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156118fa576118fa6118d1565b92915050565b60008261191d57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561195d578160001904821115611943576119436118d1565b8085161561195057918102915b93841c9390800290611927565b509250929050565b600082611974575060016118fa565b81611981575060006118fa565b816001811461199757600281146119a1576119bd565b60019150506118fa565b60ff8411156119b2576119b26118d1565b50506001821b6118fa565b5060208310610133831016604e8410600b84101617156119e0575081810a6118fa565b6119ea8383611922565b80600019048211156119fe576119fe6118d1565b029392505050565b600061168d60ff841683611965565b80820281158282048414176118fa576118fa6118d1565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611a5557600080fd5b825167ffffffffffffffff80821115611a6d57600080fd5b818501915085601f830112611a8157600080fd5b815181811115611a9357611a93611a2c565b8060051b604051601f19603f83011681018181108582111715611ab857611ab8611a2c565b604052918252848201925083810185019188831115611ad657600080fd5b938501935b82851015611af457845184529385019392850192611adb565b98975050505050505050565b600060208284031215611b1257600080fd5b5051919050565b818103818111156118fa576118fa6118d1565b8015158114610d0057600080fd5b600060208284031215611b4c57600080fd5b815161168d81611b2c565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b7f57600080fd5b813561168d81611b2c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611bbf57600080fd5b83018035915067ffffffffffffffff821115611bda57600080fd5b60200191503681900382131561154857600080fd5b60006000198203611c0257611c026118d1565b506001019056fea26469706673582212201b8c8d3f657a1f00cb4519e7a8dac6c32c676f86b2e4bf5ffd27d27342fc945264736f6c63430008110033",
"linkReferences": {},
"deployedLinkReferences": {}
}