@tokamak-network/thanos-contracts
Version:
1 lines • 613 kB
JSON
{"abi":[{"type":"function","name":"_setupSafe","inputs":[{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"threshold","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SafeInstance","components":[{"name":"instanceId","type":"uint256","internalType":"uint256"},{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"owners","type":"address[]","internalType":"address[]"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"safe","type":"address","internalType":"contract DeployedSafe"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"_setupSafe","inputs":[{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"initialBalance","type":"uint256","internalType":"uint256"},{"name":"advancedParams","type":"tuple","internalType":"struct AdvancedSafeInitParams","components":[{"name":"includeFallbackHandler","type":"bool","internalType":"bool"},{"name":"saltNonce","type":"uint256","internalType":"uint256"},{"name":"setupModulesCall_to","type":"address","internalType":"address"},{"name":"setupModulesCall_data","type":"bytes","internalType":"bytes"},{"name":"refundAmount","type":"uint256","internalType":"uint256"},{"name":"refundToken","type":"address","internalType":"address"},{"name":"refundReceiver","type":"address","internalType":"address payable"},{"name":"initData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct SafeInstance","components":[{"name":"instanceId","type":"uint256","internalType":"uint256"},{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"owners","type":"address[]","internalType":"address[]"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"safe","type":"address","internalType":"contract DeployedSafe"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"_setupSafe","inputs":[{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"initialBalance","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SafeInstance","components":[{"name":"instanceId","type":"uint256","internalType":"uint256"},{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"owners","type":"address[]","internalType":"address[]"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"safe","type":"address","internalType":"contract DeployedSafe"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"_setupSafe","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SafeInstance","components":[{"name":"instanceId","type":"uint256","internalType":"uint256"},{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"owners","type":"address[]","internalType":"address[]"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"safe","type":"address","internalType":"contract DeployedSafe"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"getSafe","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SafeInstance","components":[{"name":"instanceId","type":"uint256","internalType":"uint256"},{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"owners","type":"address[]","internalType":"address[]"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"safe","type":"address","internalType":"contract DeployedSafe"}]}],"stateMutability":"view"},{"type":"function","name":"getSafe","inputs":[{"name":"_safe","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SafeInstance","components":[{"name":"instanceId","type":"uint256","internalType":"uint256"},{"name":"ownerPKs","type":"uint256[]","internalType":"uint256[]"},{"name":"owners","type":"address[]","internalType":"address[]"},{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"safe","type":"address","internalType":"contract DeployedSafe"}]}],"stateMutability":"view"}],"bytecode":{"object":"0x6080604052604051620000129062000141565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b03929092169190911790556040516200005e906200014f565b604051809103906000f0801580156200007b573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b0392909216919091179055604051620000aa906200015d565b604051809103906000f080158015620000c7573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600981526814d0519148151154d560ba1b6020909101527fbff0e1d6be3df3bedf05c892f554fbea3c6ca2bb9d224bc3f3d3fbc3ec267d1c6004553480156200013a57600080fd5b506200016b565b613fdb806200232d83390190565b610bc2806200630883390190565b6111098062006eca83390190565b6121b2806200017b6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806368bc573e1161005057806368bc573e146100c6578063894adc65146100ce578063b38b4717146100e157600080fd5b8063080df7f114610077578063403b551a146100a05780634867cf9a146100b3575b600080fd5b61008a61008536600461196f565b6100e9565b6040516100979190611a05565b60405180910390f35b61008a6100ae366004611ba9565b6101f0565b61008a6100c1366004611ccb565b610756565b61008a610854565b61008a6100dc366004611d19565b610a87565b61008a610cfd565b6101316040518060a0016040528060008152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6101e9838369021e19e0c9bab24000006040518061010001604052806001151581526020016004548152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528060008152508152506101f0565b9392505050565b6102386040518060a0016040528060008152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600061024386610e49565b90506000815167ffffffffffffffff81111561026157610261611838565b60405190808252806020026020018201604052801561028a578160200160208202803683370190505b50905060005b82518110156103d7576102ca8382815181106102ae576102ae611d36565b602002602001015160a01c6bffffffffffffffffffffffff1490565b15610356576103058382815181106102e4576102e4611d36565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1690565b82828151811061031757610317611d36565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506103c5565b61037883828151811061036b5761036b611d36565b6020026020010151611330565b82828151811061038a5761038a611d36565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b806103cf81611d65565b915050610290565b506000808560e0015151116104e5576040850151606086015186517fb63e800d000000000000000000000000000000000000000000000000000000009285928b9261042357600061043d565b60025473ffffffffffffffffffffffffffffffffffffffff165b8a60a001518b608001518c60c00151604051602401610463989796959493929190611e3e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526104eb565b8460e001515b6001546000805460208901516040517f1688f0b9000000000000000000000000000000000000000000000000000000008152949550919373ffffffffffffffffffffffffffffffffffffffff93841693631688f0b9936105549390911691879190600401611f3b565b6020604051808303816000875af1158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190611f7a565b6040805160a0810182526003805480835260208084018a8152948401899052606084018e905273ffffffffffffffffffffffffffffffffffffffff86166080850152600182018355600092909252825160059091027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b81019182559351805195965092948594919361064f937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909301920190611740565b506040820151805161066b91600284019160209091019061178b565b5060608201516003820155608090910151600491820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790556040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081529084169181019190915260248101899052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b50929c9b505050505050505050505050565b61079e6040518060a0016040528060008152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b61084c8484846040518061010001604052806001151581526020016004548152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528060008152508152506101f0565b949350505050565b61089c6040518060a0016040528060008152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600354600003610959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604f60248201527f5341464554455354544f4f4c533a2054657374205361666520686173206e6f7460448201527f206265656e206465706c6f7965642c20757365205f736574757053616665282960648201527f2063616c6c696e67207361666528290000000000000000000000000000000000608482015260a4015b60405180910390fd5b600360008154811061096d5761096d611d36565b90600052602060002090600502016040518060a001604052908160008201548152602001600182018054806020026020016040519081016040528092919081815260200182805480156109df57602002820191906000526020600020905b8154815260200190600101908083116109cb575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a23575b50505091835250506003820154602082015260049091015473ffffffffffffffffffffffffffffffffffffffff16604090910152919050565b610acf6040518060a0016040528060008152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60005b600354811015610c74578273ffffffffffffffffffffffffffffffffffffffff1660038281548110610b0657610b06611d36565b600091825260209091206004600590920201015473ffffffffffffffffffffffffffffffffffffffff1603610c645760038181548110610b4857610b48611d36565b90600052602060002090600502016040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015610bba57602002820191906000526020600020905b815481526020019060010190808311610ba6575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610c2957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bfe575b50505091835250506003820154602082015260049091015473ffffffffffffffffffffffffffffffffffffffff166040909101529392505050565b610c6d81611d65565b9050610ad2565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f5341464554455354544f4f4c533a205361666520696e7374616e6365206e6f7460448201527f20666f756e6400000000000000000000000000000000000000000000000000006064820152608401610950565b610d456040518060a0016040528060008152602001606081526020016060815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000610d876040518060400160405280600781526020017f64656661756c740000000000000000000000000000000000000000000000000081525060036113c6565b915050610e4381600269021e19e0c9bab24000006040518061010001604052806001151581526020016004548152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528060008152508152506101f0565b91505090565b60606000825167ffffffffffffffff811115610e6757610e67611838565b604051908082528060200260200182016040528015610e90578160200160208202803683370190505b5090506000835167ffffffffffffffff811115610eaf57610eaf611838565b604051908082528060200260200182016040528015610ed8578160200160208202803683370190505b5090506000845167ffffffffffffffff811115610ef757610ef7611838565b604051908082528060200260200182016040528015610f3057816020015b610f1d611805565b815260200190600190039081610f155790505b50905060005b8551811015611095576000868281518110610f5357610f53611d36565b602002602001015190506000610f6882611330565b9050610f828260a01c6bffffffffffffffffffffffff1490565b15610fa0575073ffffffffffffffffffffffffffffffffffffffff81165b80858481518110610fb357610fb3611d36565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201526040516110029183910173ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60405160208183030381529060405261101a90611f97565b84848151811061102c5761102c611d36565b602002602001015160006002811061104657611046611d36565b60200201528351829085908590811061106157611061611d36565b602002602001015160016002811061107b5761107b611d36565b60200201525081905061108d81611d65565b915050610f36565b506040517f128424a700000000000000000000000000000000000000000000000000000000815273__$dfdc500774783d96746216ea464aa94b2d$__9063128424a7906110e6908590600401611fdc565b600060405180830381865af4158015611103573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111499190810190612036565b91506000805b835181101561126e57600084828151811061116c5761116c611d36565b602002602001015190506000805b8551811015611239578273ffffffffffffffffffffffffffffffffffffffff168682815181106111ac576111ac611d36565b60200260200101516000600281106111c6576111c6611d36565b602002015173ffffffffffffffffffffffffffffffffffffffff1603611227578581815181106111f8576111f8611d36565b602002602001015160016002811061121257611212611d36565b602002015191508461122381611d65565b9550505b8061123181611d65565b91505061117a565b508087848151811061124d5761124d611d36565b6020026020010181815250505050808061126690611d65565b91505061114f565b508551811015611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f5341464554455354544f4f4c533a20697373756520776974682070726976617460448201527f65206b657920736f7274696e672c20706c65617365206f70656e20612074696360648201527f6b6574206f6e2067697468756200000000000000000000000000000000000000608482015260a401610950565b5091949350505050565b6040517fffa1864900000000000000000000000000000000000000000000000000000000815260048101829052600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190611f7a565b92915050565b6060808267ffffffffffffffff8111156113e2576113e2611838565b60405190808252806020026020018201604052801561140b578160200160208202803683370190505b5090508267ffffffffffffffff81111561142757611427611838565b604051908082528060200260200182016040528015611450578160200160208202803683370190505b50915060005b838110156114bf5760008160405160200161147391815260200190565b6040516020818303038152906040528051906020012060001c9050808383815181106114a1576114a1611d36565b602090810291909101015250806114b781611d65565b915050611456565b5060005b8381101561173857737109709ecfa91a80626ff3989d68f67f5b1dd12d73ffffffffffffffffffffffffffffffffffffffff1663ffa1864983838151811061150d5761150d611d36565b60200260200101516040518263ffffffff1660e01b815260040161153391815260200190565b602060405180830381865afa158015611550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115749190611f7a565b83828151811061158657611586611d36565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737109709ecfa91a80626ff3989d68f67f5b1dd12d73ffffffffffffffffffffffffffffffffffffffff1663c657c71861160584848151811061036b5761036b611d36565b6040517f6900a3ae000000000000000000000000000000000000000000000000000000008152600481018590528890737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa158015611670573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116b691908101906120d0565b6040516020016116c7929190612147565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016116f3929190612176565b600060405180830381600087803b15801561170d57600080fd5b505af1158015611721573d6000803e3d6000fd5b50505050808061173090611d65565b9150506114c3565b509250929050565b82805482825590600052602060002090810192821561177b579160200282015b8281111561177b578251825591602001919060010190611760565b50611787929150611823565b5090565b82805482825590600052602060002090810192821561177b579160200282015b8281111561177b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906117ab565b60405180604001604052806002906020820280368337509192915050565b5b808211156117875760008155600101611824565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561188b5761188b611838565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156118d8576118d8611838565b604052919050565b600067ffffffffffffffff8211156118fa576118fa611838565b5060051b60200190565b600082601f83011261191557600080fd5b8135602061192a611925836118e0565b611891565b82815260059290921b8401810191818101908684111561194957600080fd5b8286015b84811015611964578035835291830191830161194d565b509695505050505050565b6000806040838503121561198257600080fd5b823567ffffffffffffffff81111561199957600080fd5b6119a585828601611904565b95602094909401359450505050565b600081518084526020808501945080840160005b838110156119fa57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016119c8565b509495945050505050565b60208082528251828201528281015160a06040840152805160c0840181905260009291820190839060e08601905b80831015611a535783518252928401926001929092019190840190611a33565b50604087015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868203016060870152611a8f81856119b4565b9350505050606084015160808401526080840151611ac560a085018273ffffffffffffffffffffffffffffffffffffffff169052565b509392505050565b80358015158114611add57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b0457600080fd5b50565b8035611add81611ae2565b600067ffffffffffffffff821115611b2c57611b2c611838565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611b6957600080fd5b8135611b7761192582611b12565b818152846020838601011115611b8c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611bbf57600080fd5b843567ffffffffffffffff80821115611bd757600080fd5b611be388838901611904565b955060208701359450604087013593506060870135915080821115611c0757600080fd5b908601906101008289031215611c1c57600080fd5b611c24611867565b611c2d83611acd565b815260208301356020820152611c4560408401611b07565b6040820152606083013582811115611c5c57600080fd5b611c688a828601611b58565b60608301525060808301356080820152611c8460a08401611b07565b60a0820152611c9560c08401611b07565b60c082015260e083013582811115611cac57600080fd5b611cb88a828601611b58565b60e0830152509598949750929550505050565b600080600060608486031215611ce057600080fd5b833567ffffffffffffffff811115611cf757600080fd5b611d0386828701611904565b9660208601359650604090950135949350505050565b600060208284031215611d2b57600080fd5b81356101e981611ae2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611dbd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60005b83811015611ddf578181015183820152602001611dc7565b83811115611dee576000848401525b50505050565b60008151808452611e0c816020860160208601611dc4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6101008082528951908201819052600090610120830190602090818d01845b82811015611e8f57815173ffffffffffffffffffffffffffffffffffffffff1685529383019390830190600101611e5d565b50505083018a905273ffffffffffffffffffffffffffffffffffffffff891660408401528281036060840152611ec58189611df4565b915050611eea608083018773ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff851660a08301528360c0830152611f2e60e083018473ffffffffffffffffffffffffffffffffffffffff169052565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000611f6a6060830185611df4565b9050826040830152949350505050565b600060208284031215611f8c57600080fd5b81516101e981611ae2565b80516020808301519190811015611fd6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b6020808252825182820181905260009190848201906040850190845b8181101561202a57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611ff8565b50909695505050505050565b6000602080838503121561204957600080fd5b825167ffffffffffffffff81111561206057600080fd5b8301601f8101851361207157600080fd5b805161207f611925826118e0565b81815260059190911b8201830190838101908783111561209e57600080fd5b928401925b828410156120c55783516120b681611ae2565b825292840192908401906120a3565b979650505050505050565b6000602082840312156120e257600080fd5b815167ffffffffffffffff8111156120f957600080fd5b8201601f8101841361210a57600080fd5b805161211861192582611b12565b81815285602083850101111561212d57600080fd5b61213e826020830160208601611dc4565b95945050505050565b60008351612159818460208801611dc4565b83519083019061216d818360208801611dc4565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061084c6040830184611df456fea164736f6c634300080f000a608060405234801561001057600080fd5b506001600455613fb6806100256000396000f3fe6080604052600436106101dc5760003560e01c8063affed0e011610102578063e19a9dd911610095578063f08a032311610064578063f08a032314610620578063f698da2514610640578063f8dc5dd9146106a7578063ffa1ad74146106c757610218565b8063e19a9dd9146105ab578063e318b52b146105cb578063e75235b8146105eb578063e86637db1461060057610218565b8063cc2f8452116100d1578063cc2f84521461051d578063d4d9bdcd1461054b578063d8d11f781461056b578063e009cfde1461058b57610218565b8063affed0e0146104a7578063b4faba09146104bd578063b63e800d146104dd578063c4ca3a9c146104fd57610218565b80635624b25b1161017a5780636a761202116101495780636a7612021461041a5780637d8329741461042d578063934f3a1114610465578063a0e67e2b1461048557610218565b80635624b25b146103805780635ae6bd37146103ad578063610b5925146103da578063694e80c3146103fa57610218565b80632f54bf6e116101b65780632f54bf6e146102f55780633408e47014610315578063468721a7146103325780635229073f1461035257610218565b80630d582f131461027e57806312fb68e0146102a05780632d9ad53d146102c057610218565b366102185760405134815233907f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d9060200160405180910390a2005b34801561022457600080fd5b507f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d580548061024f57005b36600080373360601b365260008060143601600080855af190503d6000803e80610278573d6000fd5b503d6000f35b34801561028a57600080fd5b5061029e6102993660046132ce565b610710565b005b3480156102ac57600080fd5b5061029e6102bb3660046133d4565b610966565b3480156102cc57600080fd5b506102e06102db366004613449565b610fbb565b60405190151581526020015b60405180910390f35b34801561030157600080fd5b506102e0610310366004613449565b611010565b34801561032157600080fd5b50465b6040519081526020016102ec565b34801561033e57600080fd5b506102e061034d366004613475565b611062565b34801561035e57600080fd5b5061037261036d366004613475565b611178565b6040516102ec92919061354a565b34801561038c57600080fd5b506103a061039b366004613565565b6111ae565b6040516102ec9190613587565b3480156103b957600080fd5b506103246103c836600461359a565b60076020526000908152604090205481565b3480156103e657600080fd5b5061029e6103f5366004613449565b611234565b34801561040657600080fd5b5061029e61041536600461359a565b611426565b6102e06104283660046135fc565b61153a565b34801561043957600080fd5b506103246104483660046132ce565b600860209081526000928352604080842090915290825290205481565b34801561047157600080fd5b5061029e6104803660046136d5565b611934565b34801561049157600080fd5b5061049a6119b0565b6040516102ec9190613793565b3480156104b357600080fd5b5061032460055481565b3480156104c957600080fd5b5061029e6104d83660046137a6565b611ac8565b3480156104e957600080fd5b5061029e6104f83660046137f6565b611aeb565b34801561050957600080fd5b506103246105183660046138eb565b611c26565b34801561052957600080fd5b5061053d6105383660046132ce565b611cf8565b6040516102ec92919061395c565b34801561055757600080fd5b5061029e61056636600461359a565b611e26565b34801561057757600080fd5b50610324610586366004613994565b611efa565b34801561059757600080fd5b5061029e6105a6366004613a55565b611f27565b3480156105b757600080fd5b5061029e6105c6366004613449565b612106565b3480156105d757600080fd5b5061029e6105e6366004613a8e565b612178565b3480156105f757600080fd5b50600454610324565b34801561060c57600080fd5b506103a061061b366004613994565b612504565b34801561062c57600080fd5b5061029e61063b366004613449565b61269d565b34801561064c57600080fd5b5061032460007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b3480156106b357600080fd5b5061029e6106c2366004613ad9565b612713565b3480156106d357600080fd5b506103a06040518060400160405280600581526020017f312e332e3000000000000000000000000000000000000000000000000000000081525081565b6107186129a5565b73ffffffffffffffffffffffffffffffffffffffff821615801590610754575073ffffffffffffffffffffffffffffffffffffffff8216600114155b8015610776575073ffffffffffffffffffffffffffffffffffffffff82163014155b6107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303400000000000000000000000000000000000000000000000000000060448201526064016107d8565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805473ffffffffffffffffffffffffffffffffffffffff8481166000818152604081208054939094167fffffffffffffffffffffffff00000000000000000000000000000000000000009384161790935560018352835490911617909155600380549161090283613b49565b909155505060405173ffffffffffffffffffffffffffffffffffffffff831681527f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea269060200160405180910390a180600454146109625761096281611426565b5050565b610971816041612a10565b825110156109db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330323000000000000000000000000000000000000000000000000000000060448201526064016107d8565b6000808060008060005b86811015610faf576041818102890160208101516040820151919092015160ff16955090935091506000849003610cbc579193508391610a26876041612a10565b821015610a8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330323100000000000000000000000000000000000000000000000000000060448201526064016107d8565b8751610a9c836020612a4c565b1115610b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330323200000000000000000000000000000000000000000000000000000060448201526064016107d8565b602082890181015189519091610b27908390610b21908790612a4c565b90612a4c565b1115610b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330323300000000000000000000000000000000000000000000000000000060448201526064016107d8565b6040517f20c13b0b000000000000000000000000000000000000000000000000000000008082528a85016020019173ffffffffffffffffffffffffffffffffffffffff8916906320c13b0b90610beb908f908690600401613b81565b602060405180830381865afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190613ba6565b7fffffffff000000000000000000000000000000000000000000000000000000001614610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330323400000000000000000000000000000000000000000000000000000060448201526064016107d8565b5050610eaf565b8360ff16600103610d8a5791935083913373ffffffffffffffffffffffffffffffffffffffff84161480610d1f575073ffffffffffffffffffffffffffffffffffffffff851660009081526008602090815260408083208d845290915290205415155b610d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330323500000000000000000000000000000000000000000000000000000060448201526064016107d8565b610eaf565b601e8460ff161115610e4f576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018b9052600190605c0160405160208183030381529060405280519060200120600486610def9190613be8565b6040805160008152602081018083529390935260ff90911690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610e3e573d6000803e3d6000fd5b505050602060405103519450610eaf565b6040805160008152602081018083528c905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015610ea2573d6000803e3d6000fd5b5050506020604051035194505b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16118015610f10575073ffffffffffffffffffffffffffffffffffffffff8581166000908152600260205260409020541615155b8015610f33575073ffffffffffffffffffffffffffffffffffffffff8516600114155b610f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330323600000000000000000000000000000000000000000000000000000060448201526064016107d8565b8495508080610fa790613b49565b9150506109e5565b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff83161480159061100a575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600160205260409020541615155b92915050565b600073ffffffffffffffffffffffffffffffffffffffff821660011480159061100a57505073ffffffffffffffffffffffffffffffffffffffff90811660009081526002602052604090205416151590565b60003360011480159061109957503360009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b6110ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475331303400000000000000000000000000000000000000000000000000000060448201526064016107d8565b61110c858585855a612a68565b905080156111445760405133907f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb890600090a2611170565b60405133907facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37590600090a25b949350505050565b6000606061118886868686611062565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006111bd836020613c0b565b67ffffffffffffffff8111156111d5576111d56132fa565b6040519080825280601f01601f1916602001820160405280156111ff576020820181803683370190505b50905060005b8381101561122c57848101546020808302840101528061122481613b49565b915050611205565b509392505050565b61123c6129a5565b73ffffffffffffffffffffffffffffffffffffffff811615801590611278575073ffffffffffffffffffffffffffffffffffffffff8116600114155b6112de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475331303100000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260016020526040902054161561136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475331303200000000000000000000000000000000000000000000000000000060448201526064016107d8565b600160208181527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f805473ffffffffffffffffffffffffffffffffffffffff858116600081815260408082208054949095167fffffffffffffffffffffffff000000000000000000000000000000000000000094851617909455959095528254168417909155519182527fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844091015b60405180910390a150565b61142e6129a5565b60035481111561149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303100000000000000000000000000000000000000000000000000000060448201526064016107d8565b6001811015611505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303200000000000000000000000000000000000000000000000000000060448201526064016107d8565b60048190556040518181527f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c939060200161141b565b60008060006115548e8e8e8e8e8e8e8e8e8e600554612504565b60058054919250600061156683613b49565b909155505080516020820120915061157f828286611934565b5060006115aa7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c85490565b905073ffffffffffffffffffffffffffffffffffffffff81161561164a578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b81526004016116179c9b9a99989796959493929190613cb2565b600060405180830381600087803b15801561163157600080fd5b505af1158015611645573d6000803e3d6000fd5b505050505b6116766116598a6109c4613dc8565b603f6116668c6040613c0b565b6116709190613de0565b90612aaf565b611682906101f4613dc8565b5a10156116eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330313000000000000000000000000000000000000000000000000000000060448201526064016107d8565b60005a905061175c8f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e8c600014611749578e612a68565b6109c45a6117579190613e1b565b612a68565b93506117695a8290612ac6565b9050838061177657508915155b8061178057508715155b6117e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330313300000000000000000000000000000000000000000000000000000060448201526064016107d8565b600088156117fe576117fb828b8b8b8b612ae1565b90505b84156118425760408051858152602081018390527f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e910160405180910390a161187c565b60408051858152602081018390527f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d23910160405180910390a15b505073ffffffffffffffffffffffffffffffffffffffff811615611923576040517f9327136800000000000000000000000000000000000000000000000000000000815260048101839052831515602482015273ffffffffffffffffffffffffffffffffffffffff821690639327136890604401600060405180830381600087803b15801561190a57600080fd5b505af115801561191e573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b6004548061199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330303100000000000000000000000000000000000000000000000000000060448201526064016107d8565b6119aa84848484610966565b50505050565b6060600060035467ffffffffffffffff8111156119cf576119cf6132fa565b6040519080825280602002602001820160405280156119f8578160200160208202803683370190505b506001600090815260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0549192509073ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff8116600114611ac05780838381518110611a7357611a73613e32565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152918116600090815260029092526040909120541681611ab881613b49565b925050611a42565b509092915050565b600080825160208401855af480600052503d6020523d600060403e60403d016000fd5b611b298a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c9250612c72915050565b73ffffffffffffffffffffffffffffffffffffffff841615611b6d57611b6d847f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b611bad8787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061303f92505050565b8115611bc457611bc282600060018685612ae1565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b89604051611c12959493929190613e61565b60405180910390a250505050505050505050565b6000805a9050611c6f878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089925050505a612a68565b611c7857600080fd5b60005a611c859083613e1b565b905080604051602001611c9a91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526107d891600401613587565b606060008267ffffffffffffffff811115611d1557611d156132fa565b604051908082528060200260200182016040528015611d3e578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff80861660009081526001602052604081205492945091165b73ffffffffffffffffffffffffffffffffffffffff811615801590611da8575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015611db357508482105b15611e185780848381518110611dcb57611dcb613e32565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152918116600090815260019092526040909120541681611e1081613b49565b925050611d6c565b908352919491935090915050565b3360009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611eb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330333000000000000000000000000000000000000000000000000000000060448201526064016107d8565b336000818152600860209081526040808320858452909152808220600190555183917ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c91a350565b6000611f0f8c8c8c8c8c8c8c8c8c8c8c612504565b8051906020012090509b9a5050505050505050505050565b611f2f6129a5565b73ffffffffffffffffffffffffffffffffffffffff811615801590611f6b575073ffffffffffffffffffffffffffffffffffffffff8116600114155b611fd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475331303100000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260016020526040902054811690821614612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475331303300000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600160209081526040808320805488871685528285208054919097167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790965592849052825490941690915591519081527faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427691015b60405180910390a15050565b61210e6129a5565b7f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c881815560405173ffffffffffffffffffffffffffffffffffffffff831681527f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2906020016120fa565b6121806129a5565b73ffffffffffffffffffffffffffffffffffffffff8116158015906121bc575073ffffffffffffffffffffffffffffffffffffffff8116600114155b80156121de575073ffffffffffffffffffffffffffffffffffffffff81163014155b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604090205416156122d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303400000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff82161580159061230f575073ffffffffffffffffffffffffffffffffffffffff8216600114155b612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260026020526040902054811690831614612408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303500000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152600260209081526040808320805487871680865283862080549289167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179055968a1685528285208054821690971790965592849052825490941690915591519081527ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf910160405180910390a160405173ffffffffffffffffffffffffffffffffffffffff821681527f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea269060200160405180910390a1505050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405161253e929190613ee7565b604051908190038120612564949392918e908e908e908e908e908e908e90602001613ef7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012090507f19000000000000000000000000000000000000000000000000000000000000007f010000000000000000000000000000000000000000000000000000000000000061263860007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692184660408051602081019390935282015230606082015260800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b6126a56129a5565b6126cd817f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d555565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b09060200161141b565b61271b6129a5565b80600160035461272b9190613e1b565b1015612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303100000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff8216158015906127cf575073ffffffffffffffffffffffffffffffffffffffff8216600114155b612835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600260205260409020548116908316146128c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303500000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260026020526040808220805488861684529183208054929095167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179094559181528254909116909155600380549161294083613f74565b909155505060405173ffffffffffffffffffffffffffffffffffffffff831681527ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf9060200160405180910390a180600454146129a0576129a081611426565b505050565b333014612a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330333100000000000000000000000000000000000000000000000000000060448201526064016107d8565b565b600082600003612a225750600061100a565b6000612a2e8385613c0b565b905082612a3b8583613de0565b14612a4557600080fd5b9392505050565b600080612a598385613dc8565b905083811015612a4557600080fd5b60006001836001811115612a7e57612a7e613c48565b03612a96576000808551602087018986f49050612aa6565b600080855160208701888a87f190505b95945050505050565b600081831015612abf5781612a45565b5090919050565b600082821115612ad557600080fd5b60006111708385613e1b565b60008073ffffffffffffffffffffffffffffffffffffffff831615612b065782612b08565b325b905073ffffffffffffffffffffffffffffffffffffffff8416612be757612b473a8610612b35573a612b37565b855b612b418989612a4c565b90612a10565b60405190925073ffffffffffffffffffffffffffffffffffffffff82169083156108fc029084906000818181858888f19350505050612be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330313100000000000000000000000000000000000000000000000000000060448201526064016107d8565b612c68565b612bf585612b418989612a4c565b9150612c028482846131cf565b612c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330313200000000000000000000000000000000000000000000000000000060448201526064016107d8565b5095945050505050565b60045415612cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303000000000000000000000000000000000000000000000000000000060448201526064016107d8565b8151811115612d47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303100000000000000000000000000000000000000000000000000000060448201526064016107d8565b6001811015612db2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303200000000000000000000000000000000000000000000000000000060448201526064016107d8565b600160005b8351811015612fe7576000848281518110612dd457612dd4613e32565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612e32575073ffffffffffffffffffffffffffffffffffffffff8116600114155b8015612e54575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015612e8c57508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303300000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600260205260409020541615612f81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475332303400000000000000000000000000000000000000000000000000000060448201526064016107d8565b73ffffffffffffffffffffffffffffffffffffffff928316600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169382169390931790925580612fdf81613b49565b915050612db7565b5073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790559051600355600455565b600160008190526020527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5473ffffffffffffffffffffffffffffffffffffffff16156130e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475331303000000000000000000000000000000000000000000000000000000060448201526064016107d8565b6001600081905260208190527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80547fffffffffffffffffffffffff000000000000000000000000000000000000000016909117905573ffffffffffffffffffffffffffffffffffffffff821615610962576131698260008360015a612a68565b610962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f475330303000000000000000000000000000000000000000000000000000000060448201526064016107d8565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251600093929184919082896127105a03f13d801561327c5760208114613284576000935061328f565b81935061328f565b600051158215171593505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146132bb57600080fd5b50565b80356132c981613299565b919050565b600080604083850312156132e157600080fd5b82356132ec81613299565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261333a57600080fd5b813567ffffffffffffffff80821115613355576133556132fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561339b5761339b6132fa565b816040528381528660208588010111156133b457600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080608085870312156133ea57600080fd5b84359350602085013567ffffffffffffffff8082111561340957600080fd5b61341588838901613329565b9450604087013591508082111561342b57600080fd5b5061343887828801613329565b949793965093946060013593505050565b60006020828403121561345b57600080fd5b8135612a4581613299565b8035600281106132c957600080fd5b6000806000806080858703121561348b57600080fd5b843561349681613299565b935060208501359250604085013567ffffffffffffffff8111156134b957600080fd5b6134c587828801613329565b9250506134d460608601613466565b905092959194509250565b6000815180845260005b81811015613505576020818501810151868301820152016134e9565b81811115613517576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b821515815260406020820152600061117060408301846134df565b6000806040838503121561357857600080fd5b50508035926020909101359150565b602081526000612a4560208301846134df565b6000602082840312156135ac57600080fd5b5035919050565b60008083601f8401126135c557600080fd5b50813567ffffffffffffffff8111156135dd57600080fd5b6020830191508360208285010111156135f557600080fd5b9250929050565b600080600080600080