0 txs
0 calls
constructor
No constructor.
functions
admin
viewfunction admin() view returns (address)
getDefaultConnection
viewfunction getDefaultConnection(string _nid) view returns (address)
getFee
viewfunction getFee(string _net, bool _rollback, string[] _sources) view returns (uint256)
getFee
viewfunction getFee(string _net, bool _rollback) view returns (uint256)
getNetworkAddress
viewfunction getNetworkAddress() view returns (string)
getNetworkId
viewfunction getNetworkId() view returns (string)
getProtocolFee
viewfunction getProtocolFee() view returns (uint256)
getProtocolFeeHandler
viewfunction getProtocolFeeHandler() view returns (address)
verifySuccess
viewfunction verifySuccess(uint256 _sn) view returns (bool)
executeCall
nonpayablefunction executeCall(uint256 _reqId, bytes _data)
executeMessage
nonpayablefunction executeMessage(address to, string from, bytes data, string[] protocols)
executeRollback
nonpayablefunction executeRollback(uint256 _sn)
handleBTPError
nonpayablefunction handleBTPError(string _src, string _svc, uint256 _sn, uint256 _code, string _msg)
handleBTPMessage
nonpayablefunction handleBTPMessage(string _from, string _svc, uint256 _sn, bytes _msg)
handleError
nonpayablefunction handleError(uint256 _sn)
handleMessage
nonpayablefunction handleMessage(string _from, bytes _msg)
initialize
nonpayablefunction initialize(string _nid)
sendCall
payablefunction sendCall(string _to, bytes _data) payable returns (uint256)
sendCallMessage
payablefunction sendCallMessage(string _to, bytes _data, bytes _rollback, string[] sources, string[] destinations) payable returns (uint256)
sendCallMessage
payablefunction sendCallMessage(string _to, bytes _data, bytes _rollback) payable returns (uint256)
setAdmin
nonpayablefunction setAdmin(address _address)
setDefaultConnection
nonpayablefunction setDefaultConnection(string _nid, address connection)
setProtocolFee
nonpayablefunction setProtocolFee(uint256 _value)
setProtocolFeeHandler
nonpayablefunction setProtocolFeeHandler(address _addr)
events
CallExecuted
event CallExecuted(uint256 indexed _reqId, int256 _code, string _msg)
CallMessage
event CallMessage(string indexed _from, string indexed _to, uint256 indexed _sn, uint256 _reqId, bytes _data)
CallMessageSent
event CallMessageSent(address indexed _from, string indexed _to, uint256 indexed _sn)
Initialized
event Initialized(uint64 version)
ResponseMessage
event ResponseMessage(uint256 indexed _sn, int256 _code)
RollbackExecuted
event RollbackExecuted(uint256 indexed _sn)
RollbackMessage
event RollbackMessage(uint256 indexed _sn)
errors
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
creation bytecode
0x608060405234801561001057600080fd5b50615e4580620000216000396000f3fe60806040526004361061014b5760003560e01c80637d4c4f4a116100b6578063bbc22efd1161006f578063bbc22efd14610389578063bda8ce21146103a9578063ec05386b146103c9578063edc6afff14610409578063f62d18881461041c578063f851a4401461043c57600080fd5b80637d4c4f4a146102e15780638ef378b8146103015780639e553a4f14610314578063a5a4103114610334578063b070f9e514610349578063b70eeb8d1461036957600080fd5b806339c5f3fc1161010857806339c5f3fc1461022a578063502bf8e01461024c57806364f037571461026c5780636bf459cb1461028c578063704b6c02146102a1578063787dce3d146102c157600080fd5b80630a823dea1461015057806317fd7a33146101725780632a84e1b0146101985780632eb71414146101b8578063304a70b5146101ea578063313bf3981461020a575b600080fd5b34801561015c57600080fd5b5061017061016b366004614de1565b610451565b005b610185610180366004614f42565b61046e565b6040519081526020015b60405180910390f35b3480156101a457600080fd5b506101706101b3366004614fa5565b6106f5565b3480156101c457600080fd5b50600d546001600160a01b03165b6040516001600160a01b03909116815260200161018f565b3480156101f657600080fd5b50610185610205366004615072565b610a61565b34801561021657600080fd5b506101706102253660046150fc565b610b18565b34801561023657600080fd5b5061023f610c28565b60405161018f91906151e4565b34801561025857600080fd5b506101706102673660046151f7565b610cba565b34801561027857600080fd5b50610170610287366004615212565b610d5b565b34801561029857600080fd5b5061023f610dd7565b3480156102ad57600080fd5b506101706102bc3660046151f7565b610de6565b3480156102cd57600080fd5b506101706102dc366004614fa5565b610e87565b3480156102ed57600080fd5b506101856102fc36600461525f565b610ec4565b61018561030f3660046152a3565b610f06565b34801561032057600080fd5b506101d261032f366004615320565b610f22565b34801561034057600080fd5b50600454610185565b34801561035557600080fd5b50610170610364366004614fa5565b610f53565b34801561037557600080fd5b50610170610384366004615354565b610f89565b34801561039557600080fd5b506101706103a43660046153f7565b610fa8565b3480156103b557600080fd5b506101706103c4366004615462565b6111f0565b3480156103d557600080fd5b506103f96103e4366004614fa5565b60009081526007602052604090205460ff1690565b604051901515815260200161018f565b61018561041736600461549e565b611812565b34801561042857600080fd5b50610170610437366004615320565b61182d565b34801561044857600080fd5b506101d261197b565b61045b868661198a565b61046484610f53565b5050505050505050565b6000338161047b84611a2c565b90506000610487611b0e565b90506000610496828885611b29565b905060006105486104af866001600160a01b0316611d0d565b600080546104bc9061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546104e89061556f565b80156105355780601f1061050a57610100808354040283529160200191610535565b820191906000526020600020905b81548152906001019060200180831161051857829003601f168201915b5050505050611d1890919063ffffffff16565b90506000806105568a611d5f565b9150915060006040518060c0016040528085815260200183815260200187815260200188600001518152602001866020015181526020018860600151815250905060006105a282611d9b565b9050610800815111156105f25760405162461bcd60e51b815260206004820152601360248201527213585e11185d1854da5e99515e18d959591959606a1b60448201526064015b60405180910390fd5b610600848960400151611ea0565b801561060b57508551155b15610669576011600061061e8282614c9a565b61062c600183016000614c9a565b6002820160009055600382016000905560048201600090556005820160006106549190614cd4565b506010905061066382826155eb565b50610699565b855160009061067957600061067b565b875b905061068f896040015186600184866120ea565b6106976121fb565b505b868c6040516106a891906156aa565b604051908190038120906001600160a01b038c16907f69e53ea70fdf945f6d035b3979748bc999151691fb1dc69d66f8017f8840ae2890600090a450949750505050505050505b92915050565b6000818152600e60209081526040808320815160a0810190925280546001600160a01b0316825260018101805492939192918401916107339061556f565b80601f016020809104026020016040519081016040528092919081815260200182805461075f9061556f565b80156107ac5780601f10610781576101008083540402835291602001916107ac565b820191906000526020600020905b81548152906001019060200180831161078f57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156108865783829060005260206000200180546107f99061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546108259061556f565b80156108725780601f1061084757610100808354040283529160200191610872565b820191906000526020600020905b81548152906001019060200180831161085557829003601f168201915b5050505050815260200190600101906107da565b50505050815260200160038201805461089e9061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546108ca9061556f565b80156109175780601f106108ec57610100808354040283529160200191610917565b820191906000526020600020905b8154815290600101906020018083116108fa57829003601f168201915b50505091835250506004919091015460ff16151560209091015280519091506001600160a01b031661097e5760405162461bcd60e51b815260206004820152601060248201526f496e76616c696453657269616c4e756d60801b60448201526064016105e9565b80608001516109c45760405162461bcd60e51b8152602060048201526012602482015271149bdb1b189858dad39bdd115b98589b195960721b60448201526064016105e9565b6109cd8261227f565b8051606082015160408084015190516306277e7360e31b8152309363313bf39893610a0093919260019290600401615720565b600060405180830381600087803b158015610a1a57600080fd5b505af1158015610a2e573d6000803e3d6000fd5b50506040518492507f08f0ac7aef6da8bbe43bee8b1444a1883f1359566618bc379ce5abba448838379150600090a25050565b600454600090610a718584611ea0565b8015610a7b575083155b15610a8a576000915050610b11565b60005b8351811015610b0d576000610aeb6040518060400160405280600f81526020016e125b1b1959d85b105c99dd5b595b9d608a1b815250868481518110610ad557610ad56157e8565b60200260200101516122d490919063ffffffff16565b9050610af88188886125a6565b610b029084615814565b925050600101610a8d565b5090505b9392505050565b333014610b565760405162461bcd60e51b815260206004820152600c60248201526b13db9b1e525b9d195c9b985b60a21b60448201526064016105e9565b8051600003610bc4576040516325ecfc2360e11b81526001600160a01b03851690634bd9f84690610b8d9086908690600401615827565b600060405180830381600087803b158015610ba757600080fd5b505af1158015610bbb573d6000803e3d6000fd5b50505050610c22565b604051635d6a16f560e01b81526001600160a01b03851690635d6a16f590610bf49086908690869060040161584c565b600060405180830381600087803b158015610c0e57600080fd5b505af1158015610464573d6000803e3d6000fd5b50505050565b606060008054610c379061556f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c639061556f565b8015610cb05780601f10610c8557610100808354040283529160200191610cb0565b820191906000526020600020905b815481529060010190602001808311610c9357829003601f168201915b5050505050905090565b610cc2612620565b6001600160a01b0316336001600160a01b031614610cf25760405162461bcd60e51b81526004016105e990615885565b6001600160a01b038116610d395760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69644164647265737360901b60448201526064016105e9565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b610d63612620565b6001600160a01b0316336001600160a01b031614610d935760405162461bcd60e51b81526004016105e990615885565b80600a83604051610da491906156aa565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b606060018054610c379061556f565b610dee612620565b6001600160a01b0316336001600160a01b031614610e1e5760405162461bcd60e51b81526004016105e990615885565b6001600160a01b038116610e655760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69644164647265737360901b60448201526064016105e9565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b610e8f612620565b6001600160a01b0316336001600160a01b031614610ebf5760405162461bcd60e51b81526004016105e990615885565b600455565b6000610ef9600a84604051610ed991906156aa565b908152604051908190036020019020546001600160a01b031684846125a6565b600454610b119190615814565b6000606080610f188686868585612653565b9695505050505050565b6000600a82604051610f3491906156aa565b908152604051908190036020019020546001600160a01b031692915050565b610f866040518060600160405280838152602001600081526020016040518060200160405280600081525081525061271d565b50565b610f93858561198a565b610f9f87878484610fa8565b50505050505050565b61107560008054610fb89061556f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe49061556f565b80156110315780601f1061100657610100808354040283529160200191611031565b820191906000526020600020905b81548152906001019060200180831161101457829003601f168201915b505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050612d549050565b156110b75760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590813995d1ddbdc9ac8125160721b60448201526064016105e9565b60006110f883838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612db192505050565b80519091506000190161114d5761114885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506020830151612e12565b6111e9565b80516001190161116c5761114861116782602001516131bb565b61271d565b60006111cd604051806040016040528060018152602001602960f81b8152506111c761119b8560000151613253565b60408051808201909152600f81526e0aadcd6dcdeeedc9ae6cea8f2e0ca5608b1b6020820152906133c3565b906133c3565b90508060405162461bcd60e51b81526004016105e991906151e4565b5050505050565b6000828152600f6020526040808220815160c081019092528054829082906112179061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546112439061556f565b80156112905780601f1061126557610100808354040283529160200191611290565b820191906000526020600020905b81548152906001019060200180831161127357829003601f168201915b505050505081526020016001820180546112a99061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546112d59061556f565b80156113225780601f106112f757610100808354040283529160200191611322565b820191906000526020600020905b81548152906001019060200180831161130557829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201805480602002602001604051908101604052809291908181526020016000905b8282101561141a57838290600052602060002001805461138d9061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546113b99061556f565b80156114065780601f106113db57610100808354040283529160200191611406565b820191906000526020600020905b8154815290600101906020018083116113e957829003601f168201915b50505050508152602001906001019061136e565b505050915250508051519091506114665760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5914995c5d595cdd125960821b60448201526064016105e9565b815160208301206080820151146114b25760405162461bcd60e51b815260206004820152601060248201526f088c2e8c290c2e6d09ad2e6dac2e8c6d60831b60448201526064016105e9565b6000838152600f60205260408120906114cb8282614c9a565b6114d9600183016000614c9a565b6002820160009055600382016000905560048201600090556005820160006115019190614cd4565b505060008160a001519050600061154c6040518060400160405280600f81526020016e125b1b1959d85b105c99dd5b595b9d608a1b81525084602001516122d490919063ffffffff16565b606084015190915061156f576115698582856000015187866133d8565b506111e9565b60028360600151036115db5782516040516306277e7360e31b8152309163313bf398916115a4918591899088906004016158a8565b600060405180830381600087803b1580156115be57600080fd5b505af11580156115d2573d6000803e3d6000fd5b505050506111e9565b60018360600151036117c0578251839060119081906115fa90826155eb565b506020820151600182019061160f90826155eb565b5060408201516002820155606082015160038201556080820151600482015560a08201518051611649916005840191602090910190614cf2565b5090505060006116608683866000015188876133d8565b9050601160006116708282614c9a565b61167e600183016000614c9a565b6002820160009055600382016000905560048201600090556005820160006116a69190614cd4565b505060606000601080546116b99061556f565b90501180156116c85750600182145b1561176857601080546116da9061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546117069061556f565b80156117535780601f1061172857610100808354040283529160200191611753565b820191906000526020600020905b81548152906001019060200180831161173657829003601f168201915b50505050509050601060006117689190614c9a565b604080516060810182528682015181526020810184905290810182905285516117b89086906117969061357a565b600289604001516000196117aa91906158f2565b6117b386613590565b6120ea565b5050506111e9565b60405162461bcd60e51b815260206004820152602160248201527f4d6573736167652074797065206973206e6f742079657420737570706f7274656044820152601960fa1b60648201526084016105e9565b60006118218686868686612653565b90505b95945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156118725750825b90506000826001600160401b0316600114801561188e5750303b155b90508115801561189c575080155b156118ba5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118e457845460ff60401b1916600160401b1785555b600b8054336001600160a01b03199182168117909255600c80549091169091179055600061191287826155eb565b5061191f6104af30611d0d565b60019061192c90826155eb565b50831561197357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6000611985612620565b905090565b6119e782828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260068152657863616c6c4d60d01b602082015292915050612d54565b611a285760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964536572766963654e616d6560701b60448201526064016105e9565b5050565b611a576040518060800160405280600081526020016060815260200160608152602001606081525090565b6000611a6a611a65846135e7565b613614565b90506040518060800160405280611a9a83600081518110611a8d57611a8d6157e8565b6020026020010151613753565b8152602001611ac283600181518110611ab557611ab56157e8565b60200260200101516137f6565b8152602001611aea83600281518110611add57611add6157e8565b60200260200101516138c6565b8152602001611b0583600381518110611add57611add6157e8565b90529392505050565b60006002546001611b1f9190615814565b6002819055919050565b6040805180820190915260008152606060208201528151801580611b4d5750600281145b15611b71575050604080518082019091526000815260208281015190820152610b11565b60018103611cc55760003390506000611b8d8560200151613974565b9050333b611bd35760405162461bcd60e51b8152602060048201526013602482015272526f6c6c6261636b4e6f74506f737369626c6560681b60448201526064016105e9565b60006040518060a00160405280846001600160a01b03168152602001611bf88961357a565b81526040888101516020808401919091528581015182840152600060609093018390528b8352600e81529120825181546001600160a01b0319166001600160a01b039091161781559082015191925082916001820190611c5890826155eb565b5060408201518051611c74916002840191602090910190614cf2565b5060608201516003820190611c8990826155eb565b50608091909101516004909101805460ff1916911515919091179055506040805180820190915260018152905160208201529250610b11915050565b60405162461bcd60e51b815260206004820152601d60248201527f4d6573736167652074797065206973206e6f7420737570706f7274656400000060448201526064016105e9565b60606106ef826139b9565b606082604051806040016040528060018152602001602f60f81b81525083604051602001611d4893929190615922565b604051602081830303815290604052905092915050565b6060806000611d6d84613b84565b9050611d7b84600083613c27565b611d9185611d8a846001615814565b8751613c27565b9250925050915091565b606080606060005b8460a0015151811015611e2457611dd68560a001518281518110611dc957611dc96157e8565b6020026020010151613cec565b604051602001611de691906156aa565b60405160208183030381529060405291508282604051602001611e0a929190615965565b60408051601f198184030181529190529250600101611da3565b506000611e348560000151613cec565b611e418660200151613cec565b611e4e8760400151613cf7565b611e5b8860600151613d0a565b611e688960800151613d18565b611e7188613d70565b604051602001611e8696959493929190615994565b604051602081830303815290604052905061182481613d70565b6000611f516040518060200160405280600081525060116000018054611ec59061556f565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef19061556f565b8015611f3e5780601f10611f1357610100808354040283529160200191611f3e565b820191906000526020600020905b815481529060010190602001808311611f2157829003601f168201915b5050505050612d5490919063ffffffff16565b6120e157611ff583611fef60116000018054611f6c9061556f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f989061556f565b8015611fe55780601f10611fba57610100808354040283529160200191611fe5565b820191906000526020600020905b815481529060010190602001808311611fc857829003601f168201915b505050505061357a565b90612d54565b80156120da57506120da6011600501805480602002602001604051908101604052809291908181526020016000905b828210156120d05783829060005260206000200180546120439061556f565b80601f016020809104026020016040519081016040528092919081815260200182805461206f9061556f565b80156120bc5780601f10612091576101008083540402835291602001916120bc565b820191906000526020600020905b81548152906001019060200180831161209f57829003601f168201915b505050505081526020019060010190612024565b5050505083613da6565b90506106ef565b50600092915050565b8451600003612187576000600a8560405161210591906156aa565b908152604051908190036020019020546001600160a01b03169050806121635760405162461bcd60e51b81526020600482015260136024820152722737a232b330bab63a21b7b73732b1ba34b7b760691b60448201526064016105e9565b6000612170828786613e2a565b9050612180828288888888613e6d565b50506111e9565b60005b85518110156119735760006121d26040518060400160405280600f81526020016e125b1b1959d85b105c99dd5b595b9d608a1b815250888481518110610ad557610ad56157e8565b905060006121e1828887613e2a565b90506121f1828289898989613e6d565b505060010161218a565b60045447908110156122455760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e7442616c616e636560681b60448201526064016105e9565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b6000818152600e6020526040812080546001600160a01b0319168155906122a96001830182614c9a565b6122b7600283016000614cd4565b6122c5600383016000614c9a565b50600401805460ff1916905550565b81516000908390602a1480156123185750600360fc1b6001600160f81b03191681600081518110612307576123076157e8565b01602001516001600160f81b031916145b80156123525750600f60fb1b6001600160f81b03191681600181518110612341576123416157e8565b01602001516001600160f81b031916145b83906123715760405162461bcd60e51b81526004016105e991906151e4565b5060408051601480825281830190925260009160208201818036833701905050905060008080805b602881101561250157856123ae826002615814565b815181106123be576123be6157e8565b016020015160f81c9350600160308510156123d7575060005b8460ff1660391080156123ed575060418560ff16105b156123f6575060005b8460ff16604610801561240c575060618560ff16105b15612415575060005b8460ff1660661015612425575060005b80612444578860405162461bcd60e51b81526004016105e991906151e4565b60418560ff1610156124595760309250612473565b8460ff166046101561246e5760579250612473565b603792505b61247e600283615a29565b6000036124965761248f8386615a3d565b93506124f8565b6124a08386615a3d565b6124ab856010615a56565b6124b59190615a72565b60f81b8660026124c6600186615a8b565b6124d09190615a9e565b815181106124e0576124e06157e8565b60200101906001600160f81b031916908160001a9053505b50600101612399565b5060008460405160200161251591906156aa565b60408051601f198184030181529190526014810151975090506001600160a01b03871661259a5760025b86518110156125985786818151811061255a5761255a6157e8565b60209101015189906001600160f81b031916600360fc1b1461258f5760405162461bcd60e51b81526004016105e991906151e4565b5060010161253f565b505b50505050505092915050565b604051633ea627a560e11b81526000906001600160a01b03851690637d4c4f4a906125d79086908690600401615ab2565b602060405180830381865afa1580156125f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126189190615ad6565b949350505050565b600c546000906001600160a01b03166126435750600b546001600160a01b031690565b50600c546001600160a01b031690565b6000806126816040518060800160405280600081526020016060815260200160608152602001606081525090565b85516000036126bd5750604080516020808201835288825282516080810184526000815291519082015290810185905260608101849052612704565b600060405180604001604052808981526020018881525090506040518060800160405280600181526020016126f183613f14565b8152602001878152602001868152509150505b6127118861018083613f43565b98975050505050505050565b80516000908152600e60209081526040808320815160a0810190925280546001600160a01b03168252600181018054929391929184019161275d9061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546127899061556f565b80156127d65780601f106127ab576101008083540402835291602001916127d6565b820191906000526020600020905b8154815290600101906020018083116127b957829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156128b05783829060005260206000200180546128239061556f565b80601f016020809104026020016040519081016040528092919081815260200182805461284f9061556f565b801561289c5780601f106128715761010080835404028352916020019161289c565b820191906000526020600020905b81548152906001019060200180831161287f57829003601f168201915b505050505081526020019060010190612804565b5050505081526020016003820180546128c89061556f565b80601f01602080910402602001604051908101604052809291908181526020018280546128f49061556f565b80156129415780601f1061291657610100808354040283529160200191612941565b820191906000526020600020905b81548152906001019060200180831161292457829003601f168201915b50505091835250506004919091015460ff16151560209091015280519091506001600160a01b03166129ab5760405162461bcd60e51b815260206004820152601360248201527210d85b1b14995c5d595cdd139bdd119bdd5b99606a1b60448201526064016105e9565b60018160400151511115612ae657815160009081526009602052604090206001906129d533611d0d565b6040516129e291906156aa565b908152604051908190036020019020805491151560ff1990921691909117905560005b816040015151811015612a735782516000908152600960205260409081902090830151805183908110612a3a57612a3a6157e8565b6020026020010151604051612a4f91906156aa565b9081526040519081900360200190205460ff16612a6b57505050565b600101612a05565b5060005b816040015151811015612ae05782516000908152600960205260409081902090830151805183908110612aac57612aac6157e8565b6020026020010151604051612ac191906156aa565b908152604051908190036020019020805460ff19169055600101612a77565b50612bb7565b806040015151600103612b6a57612b356040518060400160405280600f81526020016e125b1b1959d85b105c99dd5b595b9d608a1b8152508260400151600081518110610ad557610ad56157e8565b6001600160a01b0316336001600160a01b031614612b655760405162461bcd60e51b81526004016105e990615aef565b612bb7565b600a8160200151604051612b7e91906156aa565b90815260405190819003602001902054336001600160a01b0390911614612bb75760405162461bcd60e51b81526004016105e990615aef565b81516020808401516040519081527fbeacafd006c5e60667f6f04aec3a498f81c8e94142b4e95b5a5a763de43ca0ab910160405180910390a26001826020015103612c47578151612c079061227f565b60408201515115612c2857612c2881612c238460400151614095565b614186565b81516000908152600760205260409020805460ff191660011790555050565b600081606001515111612c8d5760405162461bcd60e51b815260206004820152600e60248201526d4e6f526f6c6c6261636b4461746160901b60448201526064016105e9565b60016080820181905282516000908152600e60209081526040909120835181546001600160a01b0319166001600160a01b03909116178155908301518392820190612cd890826155eb565b5060408201518051612cf4916002840191602090910190614cf2565b5060608201516003820190612d0990826155eb565b50608091909101516004909101805460ff191691151591909117905581516040517f38934ab923f985814047679ba041577b8203ddd15fe9910d3fc6a7aa6001e9c790600090a25050565b600081604051602001612d6791906156aa565b6040516020818303038152906040528051906020012083604051602001612d8e91906156aa565b60405160208183030381529060405280519060200120036120e1575060016106ef565b6040805180820190915260008152606060208201526000612dd4611a65846135e7565b90506040518060400160405280612df783600081518110611a8d57611a8d6157e8565b8152602001611b0583600181518110611ab557611ab56157e8565b6000612e1d82614095565b90506000612e2e826000015161357a565b9050612e3a8482612d54565b612e745760405162461bcd60e51b815260206004820152600b60248201526a125b9d985b1a590813925160aa1b60448201526064016105e9565b8251602084012060a08301515160011015612fb1576000818152600860205260409020600190612ea333611d0d565b604051612eb091906156aa565b908152604051908190036020019020805491151560ff1990921691909117905560005b8360a0015151811015612f4157600082815260086020526040902060a0850151805183908110612f0557612f056157e8565b6020026020010151604051612f1a91906156aa565b9081526040519081900360200190205460ff16612f3957505050505050565b600101612ed3565b5060005b8360a0015151811015612fab57600082815260086020526040902060a0850151805183908110612f7757612f776157e8565b6020026020010151604051612f8c91906156aa565b908152604051908190036020019020805460ff19169055600101612f45565b5061307e565b8260a0015151600103613035576130006040518060400160405280600f81526020016e125b1b1959d85b105c99dd5b595b9d608a1b8152508460a00151600081518110610ad557610ad56157e8565b6001600160a01b0316336001600160a01b0316146130305760405162461bcd60e51b81526004016105e990615aef565b61307e565b600a8260405161304591906156aa565b90815260405190819003602001902054336001600160a01b039091161461307e5760405162461bcd60e51b81526004016105e990615aef565b600061308861430a565b6040805160c08101825286518152602080880151818301528783015182840152606080890151908301526080808901518051908301209083015260a080890151908301526000848152600f909152919091208151929350909181906130ed90826155eb565b506020820151600182019061310290826155eb565b5060408201516002820155606082015160038201556080820151600482015560a0820151805161313c916005840191602090910190614cf2565b509050508360400151846020015160405161315791906156aa565b6040519081900381208651909161316e91906156aa565b60405180910390207f2cbc78425621c181f9f8a25fc06e44a0ac2b67cd6a31f8ed7918934187f8cc598488608001516040516131ab929190615b16565b60405180910390a4505050505050565b6131df60405180606001604052806000815260200160008152602001606081525090565b60006131ed611a65846135e7565b9050604051806060016040528061321d83600081518110613210576132106157e8565b6020026020010151614325565b815260200161323883600181518110611a8d57611a8d6157e8565b8152602001611b0583600281518110611ab557611ab56157e8565b60608160000361327a5750506040805180820190915260018152600360fc1b602082015290565b60408051602080825281830190925260009160208201818036833701905050905060005b8315613305576132af600a85615a29565b6132ba906030615814565b60f81b8282815181106132cf576132cf6157e8565b60200101906001600160f81b031916908160001a9053506132f1600a85615a9e565b9350806132fd81615b2f565b91505061329e565b60008161331181615b48565b92506001600160401b0381111561332a5761332a614e8d565b6040519080825280601f01601f191660200182016040528015613354576020820181803683370190505b50905060005b81518110156133ba578361336e8285615a8b565b8151811061337e5761337e6157e8565b602001015160f81c60f81b82828151811061339b5761339b6157e8565b60200101906001600160f81b031916908160001a90535060010161335a565b50949350505050565b60608282604051602001611d48929190615965565b6040516306277e7360e31b8152600090309063313bf398906134049088908890889088906004016158a8565b600060405180830381600087803b15801561341e57600080fd5b505af192505050801561342f575060015b6135285761343b615b5f565b806308c379a00361349f575061344f615b7b565b8061345a57506134a1565b867fc7391e04887f8b3c16fa20877e028e8163139a478c8447e7d449eba1905caa5160008360405161348d929190615b16565b60405180910390a26000915050611824565b505b3d8080156134cb576040519150601f19603f3d011682016040523d82523d6000602084013e6134d0565b606091505b50867fc7391e04887f8b3c16fa20877e028e8163139a478c8447e7d449eba1905caa51600060405161348d918152604060208201819052600c908201526b3ab735b737bbb722b93937b960a11b606082015260800190565b857fc7391e04887f8b3c16fa20877e028e8163139a478c8447e7d449eba1905caa51600160405161356a91815260406020820181905260009082015260600190565b60405180910390a2506001611824565b60606106ef82600061358b85613b84565b613c27565b606060006135a18360000151613cf7565b6135ae8460200151613d0a565b6135bb8560400151613d18565b6040516020016135cd93929190615922565b6040516020818303038152906040529050610b1181613d70565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b606061361f826143d7565b61365c5760405162461bcd60e51b815260206004820152600e60248201526d135d5cdd0818994818481b1a5cdd60921b60448201526064016105e9565b600061366783614408565b90506000816001600160401b0381111561368357613683614e8d565b6040519080825280602002602001820160405280156136c857816020015b60408051808201909152600080825260208201528152602001906001900390816136a15790505b50905060006136da856020015161448d565b85602001516136e99190615814565b90506000805b84811015613748576137008361450e565b9150604051806040016040528083815260200184815250848281518110613729576137296157e8565b602090810291909101015261373e8284615814565b92506001016136ef565b509195945050505050565b6000815160211161379b5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21034b73a10373ab6b132b960711b60448201526064016105e9565b60006137aa836020015161448d565b905060008184600001516137be9190615a8b565b90506000808386602001516137d39190615814565b90508051915060208310156133ba5781836020036008021d915050949350505050565b80516060906138385760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b60448201526064016105e9565b6000613847836020015161448d565b9050600081846000015161385b9190615a8b565b90506000816001600160401b0381111561387757613877614e8d565b6040519080825280601f01601f1916602001820160405280156138a1576020820181803683370190505b50905060008160200190506133ba8487602001516138bf9190615814565b82856145b7565b606060006138d383613614565b9050600081516001600160401b038111156138f0576138f0614e8d565b60405190808252806020026020018201604052801561392357816020015b606081526020019060019003908161390e5790505b50905060005b825181101561396c57613947838281518110611ab557611ab56157e8565b828281518110613959576139596157e8565b6020908102919091010152600101613929565b509392505050565b60408051808201909152606080825260208201526000613996611a65846135e7565b90506040518060400160405280612df783600081518110611ab557611ab56157e8565b604080516028808252606082810190935283831b9160009160208201818036833701905050905060008060008060008060006139f48b61463a565b905060005b6014811015613b5357613a0d816013615a8b565b613a18906008615c04565b613a23906002615cff565b613a319060608c901c615a9e565b9750613a3e601089615d0b565b9650613a4b876010615a56565b613a559089615a3d565b955081613a63826002615c04565b60288110613a7357613a736157e8565b6020020151945081613a86826002615c04565b613a91906001615814565b60288110613aa157613aa16157e8565b60200201519350613ab287866147c1565b9250613abe8388615a72565b60f81b89613acd836002615c04565b81518110613add57613add6157e8565b60200101906001600160f81b031916908160001a905350613afe86856147c1565b9250613b0a8387615a72565b60f81b89613b19836002615c04565b613b24906001615814565b81518110613b3457613b346157e8565b60200101906001600160f81b031916908160001a9053506001016139f9565b5087604051602001613b659190615d2d565b6040516020818303038152906040529950505050505050505050919050565b600081815b8151811015613be4576040805180820190915260018152602f60f81b60209091018190528251839083908110613bc157613bc16157e8565b01602001516001600160f81b03191603613bdc579392505050565b600101613b89565b6040805180820182526015815274696e76616c69644e6574776f726b4164647265737360581b6020820152905162461bcd60e51b81526105e991906004016151e4565b6060836000613c368585615a8b565b6001600160401b03811115613c4d57613c4d614e8d565b6040519080825280601f01601f191660200182016040528015613c77576020820181803683370190505b5090508460005b8251811015613ce0578382613c9281615b2f565b935081518110613ca457613ca46157e8565b602001015160f81c60f81b838281518110613cc157613cc16157e8565b60200101906001600160f81b031916908160001a905350600101613c7e565b50909695505050505050565b60606106ef82613d18565b60606106ef613d05836147ee565b613d18565b60606106ef613d05836148a0565b60608082516001148015613d465750608083600081518110613d3c57613d3c6157e8565b016020015160f81c105b15613d525750816106ef565b613d5e83516080614917565b83604051602001611d48929190615965565b6060613d7e825160c0614917565b82604051602001613d90929190615965565b6040516020818303038152906040529050919050565b60008151835114613db9575060006106ef565b60005b8351811015613e2057613e0a838281518110613dda57613dda6157e8565b6020026020010151858381518110613df457613df46157e8565b6020026020010151612d5490919063ffffffff16565b613e185760009150506106ef565b600101613dbc565b5060019392505050565b600080821215613e3c57506000610b11565b604051633ea627a560e11b81526001600160a01b03851690637d4c4f4a906125d79086906000871390600401615ab2565b856001600160a01b031663522a901e8686604051806040016040528060068152602001657863616c6c4d60d01b81525086613ebb60405180604001604052808b815260200189815250614acd565b6040518663ffffffff1660e01b8152600401613eda9493929190615d57565b6000604051808303818588803b158015613ef357600080fd5b505af1158015613f07573d6000803e3d6000fd5b5050505050505050505050565b60606000613f258360000151613d18565b613f328460200151613d18565b6040516020016135cd929190615965565b606080606060005b846040015151811015613fbf57613f7185604001518281518110611dc957611dc96157e8565b604051602001613f8191906156aa565b60405160208183030381529060405291508282604051602001613fa5929190615965565b60408051601f198184030181529190529250600101613f4b565b50606060005b85606001515181101561403957613feb86606001518281518110611dc957611dc96157e8565b604051602001613ffb91906156aa565b6040516020818303038152906040529250818360405160200161401f929190615965565b60408051601f198184030181529190529150600101613fc5565b5060006140498660000151613d0a565b6140568760200151613d18565b61405f86613d70565b61406885613d70565b60405160200161407b9493929190615d96565b6040516020818303038152906040529050610f1881613d70565b6140ce6040518060c001604052806060815260200160608152602001600081526020016000815260200160608152602001606081525090565b60006140dc611a65846135e7565b90506040518060c001604052806140ff83600081518110611ab557611ab56157e8565b815260200161411a83600181518110611ab557611ab56157e8565b815260200161413583600281518110613210576132106157e8565b815260200161415083600381518110611a8d57611a8d6157e8565b815260200161416b83600481518110611ab557611ab56157e8565b8152602001611b0583600581518110611add57611add6157e8565b6141a1614196826000015161357a565b602084015190612d54565b6141dd5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964205265706c7960981b60448201526064016105e9565b60006141e761430a565b90508160400151826020015160405161420091906156aa565b6040519081900381208451909161421791906156aa565b60405180910390207f2cbc78425621c181f9f8a25fc06e44a0ac2b67cd6a31f8ed7918934187f8cc59848660800151604051614254929190615b16565b60405180910390a46040805160c0810182528351815260208085015181830152848301518284015260608086015190830152608080860151805190830120908301528583015160a08301526000848152600f90915291909120815181906142bb90826155eb565b50602082015160018201906142d090826155eb565b5060408201516002820155606082015160038201556080820151600482015560a08201518051611973916005840191602090910190614cf2565b6000600354600161431b9190615814565b6003819055919050565b80516000901580159061433a57508151602110155b61437c5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103ab4b73a10373ab6b132b960691b60448201526064016105e9565b600061438b836020015161448d565b9050600081846000015161439f9190615a8b565b90506000808386602001516143b49190615814565b90508051915060208310156133ba57506020919091036101000a90049392505050565b805160009081036143ea57506000919050565b6020820151805160001a9060c0821015613e20575060009392505050565b8051600090810361441b57506000919050565b60008061442b846020015161448d565b846020015161443a9190615814565b90506000846000015185602001516144529190615814565b90505b80821015614484576144668261450e565b6144709083615814565b91508261447c81615b2f565b935050614455565b50909392505050565b8051600090811a60808110156144a65750600092915050565b60b88110806144c1575060c081108015906144c1575060f881105b156144cf5750600192915050565b60c08110156144fc576144e4600160b8615a3d565b6144f19060ff1682615a8b565b610b11906001615814565b6144e4600160f8615a3d565b50919050565b80516000908190811a608081101561452957600191506145b0565b60b881101561454f5761453d608082615a8b565b614548906001615814565b91506145b0565b60c081101561457c5760b78103600185019450806020036101000a855104600182018101935050506145b0565b60f88110156145905761453d60c082615a8b565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b806000036145c457505050565b602081106145fc57825182526145db602084615814565b92506145e8602083615814565b91506145f5602082615a8b565b90506145c4565b80156146355760006001614611836020615a8b565b61461d90610100615cff565b6146279190615a8b565b845184518216911916178352505b505050565b614642614d48565b606082901b600061465282614ade565b60405160200161466291906156aa565b60405160208183030381529060405280519060200120905060008060008060005b60148110156147b55760108782601481106146a0576146a06157e8565b6146ac9291901a615ded565b93506010848883601481106146c3576146c36157e8565b6146cf9291901a615a3d565b6146d99190615d0b565b945060108682602081106146ef576146ef6157e8565b6146fb9291901a615ded565b9150601082878360208110614712576147126157e8565b61471e9291901a615a3d565b6147289190615d0b565b925060098560ff16118015614740575060078360ff16115b8861474c836002615c04565b6028811061475c5761475c6157e8565b91151560209092020152600960ff851611801561477c575060078260ff16115b88614788836002615c04565b614793906001615814565b602881106147a3576147a36157e8565b91151560209092020152600101614683565b50505050505050919050565b6000600a8360ff1610156147d7575060306106ef565b81156147e5575060376106ef565b50605792915050565b60608160000361482b5760015b6040519080825280601f01601f1916602001820160405280156145b0576020820181803683370190505092915050565b608060015b602081101561485a578184101561484b576126188482614c2e565b60089190911b90600101614830565b5080831015614887576040805160208101859052015b604051602081830303815290604052915050919050565b6040516000602082015260218101849052604101614870565b6060816000036148b15760016147fb565b608060801960015b60208110156148f25782851280156148d057508185135b156148df576118248582614c2e565b600892831b929190911b906001016148b9565b5060408051602081018690520160405160208183030381529060405292505050919050565b6060806038841015614981576040805160018082528183019092529060208201818036833701905050905061494c8385615814565b601f1a60f81b81600081518110614965576149656157e8565b60200101906001600160f81b031916908160001a905350610b11565b600060015b6149908187615a9e565b156149b6578161499f81615b2f565b92506149af905061010082615c04565b9050614986565b6149c1826001615814565b6001600160401b038111156149d8576149d8614e8d565b6040519080825280601f01601f191660200182016040528015614a02576020820181803683370190505b509250614a0f8583615814565b614a1a906037615814565b601f1a60f81b83600081518110614a3357614a336157e8565b60200101906001600160f81b031916908160001a905350600190505b818111614ac457610100614a638284615a8b565b614a6f90610100615cff565b614a799088615a9e565b614a839190615a29565b601f1a60f81b838281518110614a9b57614a9b6157e8565b60200101906001600160f81b031916908160001a90535080614abc81615b2f565b915050614a4f565b50509392505050565b60606000613f258360000151613d0a565b60408051602880825260608281019093526000919060208201818036833701905050905060008080805b6014811015614c2357614b1c816013615a8b565b614b27906008615c04565b614b32906002615cff565b614b4090606089901c615a9e565b9350614b4d601085615d0b565b9250614b5a836010615a56565b614b649085615a3d565b9150600a8360ff1610614b78576057614b7b565b60305b614b859084615a72565b60f81b85614b94836002615c04565b81518110614ba457614ba46157e8565b60200101906001600160f81b031916908160001a905350600a8260ff1610614bcd576057614bd0565b60305b614bda9083615a72565b60f81b85614be9836002615c04565b614bf4906001615814565b81518110614c0457614c046157e8565b60200101906001600160f81b031916908160001a905350600101614b08565b509295945050505050565b60606000826001600160401b03811115614c4a57614c4a614e8d565b6040519080825280601f01601f191660200182016040528015614c74576020820181803683370190505b50905060208101836020035b6020811015614ac45785811a825360019182019101614c80565b508054614ca69061556f565b6000825580601f10614cb6575050565b601f016020900490600052602060002090810190610f869190614d67565b5080546000825590600052602060002090810190610f869190614d7c565b828054828255906000526020600020908101928215614d38579160200282015b82811115614d385782518290614d2890826155eb565b5091602001919060010190614d12565b50614d44929150614d7c565b5090565b6040518061050001604052806028906020820280368337509192915050565b5b80821115614d445760008155600101614d68565b80821115614d44576000614d908282614c9a565b50600101614d7c565b60008083601f840112614dab57600080fd5b5081356001600160401b03811115614dc257600080fd5b602083019150836020828501011115614dda57600080fd5b9250929050565b60008060008060008060008060a0898b031215614dfd57600080fd5b88356001600160401b0380821115614e1457600080fd5b614e208c838d01614d99565b909a50985060208b0135915080821115614e3957600080fd5b614e458c838d01614d99565b909850965060408b0135955060608b0135945060808b0135915080821115614e6c57600080fd5b50614e798b828c01614d99565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715614ec857614ec8614e8d565b6040525050565b600082601f830112614ee057600080fd5b81356001600160401b03811115614ef957614ef9614e8d565b604051614f10601f8301601f191660200182614ea3565b818152846020838601011115614f2557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614f5557600080fd5b82356001600160401b0380821115614f6c57600080fd5b614f7886838701614ecf565b93506020850135915080821115614f8e57600080fd5b50614f9b85828601614ecf565b9150509250929050565b600060208284031215614fb757600080fd5b5035919050565b80358015158114614fce57600080fd5b919050565b600082601f830112614fe457600080fd5b813560206001600160401b038083111561500057615000614e8d565b8260051b60405161501384830182614ea3565b9384528581018301938381018886111561502c57600080fd5b84880192505b858310156150665782358481111561504a5760008081fd5b6150588a87838c0101614ecf565b825250918401918401615032565b50979650505050505050565b60008060006060848603121561508757600080fd5b83356001600160401b038082111561509e57600080fd5b6150aa87838801614ecf565b94506150b860208701614fbe565b935060408601359150808211156150ce57600080fd5b506150db86828701614fd3565b9150509250925092565b80356001600160a01b0381168114614fce57600080fd5b6000806000806080858703121561511257600080fd5b61511b856150e5565b935060208501356001600160401b038082111561513757600080fd5b61514388838901614ecf565b9450604087013591508082111561515957600080fd5b61516588838901614ecf565b9350606087013591508082111561517b57600080fd5b5061518887828801614fd3565b91505092959194509250565b60005b838110156151af578181015183820152602001615197565b50506000910152565b600081518084526151d0816020860160208601615194565b601f01601f19169290920160200192915050565b602081526000610b1160208301846151b8565b60006020828403121561520957600080fd5b610b11826150e5565b6000806040838503121561522557600080fd5b82356001600160401b0381111561523b57600080fd5b61524785828601614ecf565b925050615256602084016150e5565b90509250929050565b6000806040838503121561527257600080fd5b82356001600160401b0381111561528857600080fd5b61529485828601614ecf565b92505061525660208401614fbe565b6000806000606084860312156152b857600080fd5b83356001600160401b03808211156152cf57600080fd5b6152db87838801614ecf565b945060208601359150808211156152f157600080fd5b6152fd87838801614ecf565b9350604086013591508082111561531357600080fd5b506150db86828701614ecf565b60006020828403121561533257600080fd5b81356001600160401b0381111561534857600080fd5b61261884828501614ecf565b60008060008060008060006080888a03121561536f57600080fd5b87356001600160401b038082111561538657600080fd5b6153928b838c01614d99565b909950975060208a01359150808211156153ab57600080fd5b6153b78b838c01614d99565b909750955060408a0135945060608a01359150808211156153d757600080fd5b506153e48a828b01614d99565b989b979a50959850939692959293505050565b6000806000806040858703121561540d57600080fd5b84356001600160401b038082111561542457600080fd5b61543088838901614d99565b9096509450602087013591508082111561544957600080fd5b5061545687828801614d99565b95989497509550505050565b6000806040838503121561547557600080fd5b8235915060208301356001600160401b0381111561549257600080fd5b614f9b85828601614ecf565b600080600080600060a086880312156154b657600080fd5b85356001600160401b03808211156154cd57600080fd5b6154d989838a01614ecf565b965060208801359150808211156154ef57600080fd5b6154fb89838a01614ecf565b9550604088013591508082111561551157600080fd5b61551d89838a01614ecf565b9450606088013591508082111561553357600080fd5b61553f89838a01614fd3565b9350608088013591508082111561555557600080fd5b5061556288828901614fd3565b9150509295509295909350565b600181811c9082168061558357607f821691505b60208210810361450857634e487b7160e01b600052602260045260246000fd5b601f821115614635576000816000526020600020601f850160051c810160208610156155cc5750805b601f850160051c820191505b81811015611973578281556001016155d8565b81516001600160401b0381111561560457615604614e8d565b61561881615612845461556f565b846155a3565b602080601f83116001811461564d57600084156156355750858301515b600019600386901b1c1916600185901b178555611973565b600085815260208120601f198616915b8281101561567c5788860151825594840194600190910190840161565d565b508582101561569a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516156bc818460208701615194565b9190910192915050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561571357601f198684030189526157018383516151b8565b988401989250908301906001016156e5565b5090979650505050505050565b60018060a01b03851681526000602060806020840152600086546157438161556f565b80608087015260a06001808416600081146157655760018114615781576157b1565b60ff19851660a08a015260a084151560051b8a010195506157b1565b8b600052602060002060005b858110156157a85781548b820186015290830190880161578d565b8a0160a0019650505b505050505083810360408501526157c881876151b8565b91505082810360608401526157dd81856156c6565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156106ef576106ef6157fe565b60408152600061583a60408301856151b8565b828103602084015261182481856151b8565b60608152600061585f60608301866151b8565b828103602084015261587181866151b8565b90508281036040840152610f1881856156c6565b60208082526009908201526827b7363ca0b236b4b760b91b604082015260600190565b6001600160a01b03851681526080602082018190526000906158cc908301866151b8565b82810360408401526158de81866151b8565b905082810360608401526157dd81856156c6565b80820260008212600160ff1b8414161561590e5761590e6157fe565b81810583148215176106ef576106ef6157fe565b60008451615934818460208901615194565b845190830190615948818360208901615194565b845191019061595b818360208801615194565b0195945050505050565b60008351615977818460208801615194565b83519083019061598b818360208801615194565b01949350505050565b6000875160206159a78285838d01615194565b8851918401916159ba8184848d01615194565b88519201916159cc8184848c01615194565b87519201916159de8184848b01615194565b86519201916159f08184848a01615194565b8551920191615a028184848901615194565b919091019998505050505050505050565b634e487b7160e01b600052601260045260246000fd5b600082615a3857615a38615a13565b500690565b60ff82811682821603908111156106ef576106ef6157fe565b60ff81811683821602908116908181146145b0576145b06157fe565b60ff81811683821601908111156106ef576106ef6157fe565b818103818111156106ef576106ef6157fe565b600082615aad57615aad615a13565b500490565b604081526000615ac560408301856151b8565b905082151560208301529392505050565b600060208284031215615ae857600080fd5b5051919050565b6020808252600d908201526c139bdd105d5d1a1bdc9a5e9959609a1b604082015260600190565b82815260406020820152600061261860408301846151b8565b600060018201615b4157615b416157fe565b5060010190565b600081615b5757615b576157fe565b506000190190565b600060033d1115615b785760046000803e5060005160e01c5b90565b600060443d1015615b895790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615bb857505050505090565b8285019150815181811115615bd05750505050505090565b843d8701016020828501011115615bea5750505050505090565b615bf960208286010187614ea3565b509095945050505050565b80820281158282048414176106ef576106ef6157fe565b600181815b80851115615c56578160001904821115615c3c57615c3c6157fe565b80851615615c4957918102915b93841c9390800290615c20565b509250929050565b600082615c6d575060016106ef565b81615c7a575060006106ef565b8160018114615c905760028114615c9a57615cb6565b60019150506106ef565b60ff841115615cab57615cab6157fe565b50506001821b6106ef565b5060208310610133831016604e8410600b8410161715615cd9575081810a6106ef565b615ce38383615c1b565b8060001904821115615cf757615cf76157fe565b029392505050565b6000610b118383615c5e565b600060ff831680615d1e57615d1e615a13565b8060ff84160491505092915050565b61060f60f31b815260008251615d4a816002850160208701615194565b9190910160020192915050565b608081526000615d6a60808301876151b8565b8281036020840152615d7c81876151b8565b905084604084015282810360608401526157dd81856151b8565b60008551615da8818460208a01615194565b855190830190615dbc818360208a01615194565b8551910190615dcf818360208901615194565b8451910190615de2818360208801615194565b019695505050505050565b600060ff831680615e0057615e00615a13565b8060ff8416069150509291505056fea26469706673582212204f5f6481cc59b37793f996224c814b5357cf95bbe50b7c5181c0a90aef4e124464736f6c63430008170033