1k txs
1.1k calls
constructor
constructor(address _poolManager, address _positionManager, address _permit2, address _owner)
functions
defaultFee
viewfunction defaultFee() view returns (uint24)
defaultSupply
viewfunction defaultSupply() view returns (uint256)
defaultTick
viewfunction defaultTick() view returns (int24)
defaultTickSpacing
viewfunction defaultTickSpacing() view returns (int24)
deprecated
viewfunction deprecated() view returns (bool)
owner
viewfunction owner() view returns (address)
poolManager
viewfunction poolManager() view returns (address)
positionManager
viewfunction positionManager() view returns (address)
pubhouseHook
viewfunction pubhouseHook() view returns (address)
SIGNER
viewfunction SIGNER() view returns (address)
version
viewfunction version() view returns (string)
deployToken
nonpayablefunction deployToken(bytes _encodedData, bytes _signature, bytes32 _salt) returns (address token, tuple pool, uint256 positionId)
initProtocolToken
nonpayablefunction initProtocolToken(address token, string name, string ticker, string description, uint256 supplyToProvide)
renounceOwnership
nonpayablefunction renounceOwnership()
setHook
nonpayablefunction setHook(address newHook)
setSigner
nonpayablefunction setSigner(address newSigner)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TokenCreated
event TokenCreated(address token, bytes32 poolId, string name, string ticker, string description, address deployer)
errors
Deprecated
error Deprecated()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
NotAdmin
error NotAdmin(address user)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x608060405234801561000f575f80fd5b50604051615bb9380380615bb983398181016040528101906100319190610315565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610388565b60405180910390fd5b6100b1816101f660201b60201c565b508360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce80000006001819055506202d050600260036101000a81548162ffffff021916908360020b62ffffff16021790555061271060025f6101000a81548162ffffff021916908362ffffff16021790555060c8600260066101000a81548162ffffff021916908360020b62ffffff160217905550505050506103a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102e4826102bb565b9050919050565b6102f4816102da565b81146102fe575f80fd5b50565b5f8151905061030f816102eb565b92915050565b5f805f806080858703121561032d5761032c6102b7565b5b5f61033a87828801610301565b945050602061034b87828801610301565b935050604061035c87828801610301565b925050606061036d87828801610301565b91505092959194509250565b610382816102da565b82525050565b5f60208201905061039b5f830184610379565b92915050565b61580b806103ae5f395ff3fe608060405234801561000f575f80fd5b5060043610610109575f3560e01c8063715018a6116100a05780639d193cd41161006f5780639d193cd414610271578063bf11b4d51461028f578063dc4c90d3146102ad578063f2fde38b146102cb578063f8e1e5a8146102e757610109565b8063715018a61461020d578063791b98bc146102175780638da5cb5b146102355780639391ba071461025357610109565b8063582abd12116100dc578063582abd12146101835780635a6c72d0146101a15780636ba1fbf8146101bf5780636c19e783146101f157610109565b80630e136b191461010d57806329f5b5731461012b5780633dfd38731461014957806354fd4d5014610165575b5f80fd5b610115610303565b6040516101229190611a2d565b60405180910390f35b610133610315565b6040516101409190611a61565b60405180910390f35b610163600480360381019061015e9190611ae5565b610328565b005b61016d610373565b60405161017a9190611b80565b60405180910390f35b61018b6103ac565b6040516101989190611baf565b60405180910390f35b6101a96103d2565b6040516101b69190611be5565b60405180910390f35b6101d960048036038101906101d49190611c92565b6103e6565b6040516101e893929190611e5a565b60405180910390f35b61020b60048036038101906102069190611ae5565b6105ee565b005b61021561063a565b005b61021f61064d565b60405161022c9190611eaf565b60405180910390f35b61023d610672565b60405161024a9190611baf565b60405180910390f35b61025b610699565b6040516102689190611baf565b60405180910390f35b6102796106be565b6040516102869190611ec8565b60405180910390f35b6102976106c4565b6040516102a49190611a61565b60405180910390f35b6102b56106d7565b6040516102c29190611f01565b60405180910390f35b6102e560048036038101906102e09190611ae5565b6106fc565b005b61030160048036038101906102fc919061206c565b610780565b005b5f60149054906101000a900460ff1681565b600260039054906101000a900460020b81565b61033061084d565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600260099054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900462ffffff1681565b5f6103ef611992565b5f8060149054906101000a900460ff1615610436576040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f808b8b8101906104499190612137565b935093509350935061045d8c8c8c8c6108d4565b61049c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049390612255565b60405180910390fd5b5f600260069054906101000a900460020b60020b141580156104e957505f600260069054906101000a900460020b600260039054906101000a900460020b6104e491906122a0565b60020b145b610528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051f9061231a565b60405180910390fd5b5f308960405160200161053c929190612347565b604051602081830303815290604052805190602001209050808486858560015460405161056890611a06565b61057695949392919061236e565b8190604051809103905ff5905080158015610593573d5f803e3d5ffd5b5097506105d688858786600154600260039054906101000a900460020b600260069054906101000a900460020b60025f9054906101000a900462ffffff166109c3565b80975081985050505050505050955095509592505050565b6105f661084d565b80600260096101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61064261084d565b61064b5f6110ae565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b600260069054906101000a900460020b81565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61070461084d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610774575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161076b9190611baf565b60405180910390fd5b61077d816110ae565b50565b61078861084d565b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016107c5939291906123db565b6020604051808303815f875af11580156107e1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610805919061243a565b506108448585858585600260039054906101000a900460020b600260069054906101000a900460020b60025f9054906101000a900462ffffff166109c3565b50505050505050565b61085561116f565b73ffffffffffffffffffffffffffffffffffffffff16610873610672565b73ffffffffffffffffffffffffffffffffffffffff16146108d25761089661116f565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108c99190611baf565b60405180910390fd5b565b5f8085856040516108e6929190612493565b60405180910390206040516020016108fe919061251f565b6040516020818303038152906040528051906020012090505f6109648286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611176565b9050600260099054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161492505050949350505050565b6109cb611992565b5f8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1611610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a319061258e565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663095ea7b360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ab69291906125ac565b6020604051808303815f875af1158015610ad2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af6919061243a565b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166387517c458b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff6201518042610b7b9190612600565b6040518563ffffffff1660e01b8152600401610b9a9493929190612662565b5f604051808303815f87803b158015610bb1575f80fd5b505af1158015610bc3573d5f803e3d5ffd5b505050505f610bd48660020b6111a0565b90505f610be38760020b6114fa565b90505f8790506040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020018762ffffff1681526020018860020b815260200160035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525094507f57394f626d68f51d610e2dfe787a92e391bf9dfab4bfbb1b154cf9f4afdb89dc8d610ca88761153b565b8e8e8e33604051610cbe969594939291906126c5565b60405180910390a160055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636276cbbe86856040518363ffffffff1660e01b8152600401610d22929190612739565b6020604051808303815f875af1158015610d3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d62919061278a565b505f600267ffffffffffffffff811115610d7f57610d7e611f1e565b5b604051908082528060200260200182016040528015610db257816020015b6060815260200190600190039081610d9d5790505b509050858383610dd9610dc78760020b6111a0565b610dd38760020b6111a0565b8f611547565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051602001610e339796959493929190612847565b604051602081830303815290604052815f81518110610e5557610e546128cc565b5b6020026020010181905250855f01518660200151604051602001610e7a929190612908565b60405160208183030381529060405281600181518110610e9d57610e9c6128cc565b5b602002602001018190525060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f369190612943565b945060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd46508f6002600d604051602001610f8a9291906129a2565b60405160208183030381529060405283604051602001610fab929190612b22565b6040516020818303038152906040526103e842610fc89190612600565b6040518363ffffffff1660e01b8152600401610fe5929190612b57565b5f604051808303815f87803b158015610ffc575f80fd5b505af115801561100e573d5f803e3d5ffd5b5050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de67ed5f8f87336040518463ffffffff1660e01b815260040161107093929190612b85565b5f604051808303815f87803b158015611087575f80fd5b505af1158015611099573d5f803e3d5ffd5b50505050505050509850989650505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f805f8061118486866115c8565b925092509250611194828261161d565b82935050505092915050565b5f808260020b92508260ff1d8381018118915050620d89e860020b8111156111fc576111fb83638b86327a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661177f90919063ffffffff16565b5b5f600182166ffffcb933bd6fad37aa2d162d1a594001600160801b1802600160801b1890505f60028316146112455760806ffff97272373d413259a46990580e213a8202901c90505b5f60048316146112695760806ffff2e50f5f656932ef12357cf3c7fdcc8202901c90505b5f600883161461128d5760806fffe5caca7e10e4e61c3624eaa0941cd08202901c90505b5f60108316146112b15760806fffcb9843d60f6159c9db58835c9266448202901c90505b5f60208316146112d55760806fff973b41fa98c081472e6896dfb254c08202901c90505b5f60408316146112f95760806fff2ea16466c96a3843ec78b326b528618202901c90505b5f608083161461131d5760806ffe5dee046a99a2a811c461f1969c30538202901c90505b5f6101008316146113425760806ffcbe86c7900a88aedcffc83b479aa3a48202901c90505b5f6102008316146113675760806ff987a7253ac413176f2b074cf7815e548202901c90505b5f61040083161461138c5760806ff3392b0822b70005940c7a398e4b70f38202901c90505b5f6108008316146113b15760806fe7159475a2c29b7443b29c7fa6e889d98202901c90505b5f6110008316146113d65760806fd097f3bdfd2022b8845ad8f792aa58258202901c90505b5f6120008316146113fb5760806fa9f746462d870fdf8a65dc1f90e061e58202901c90505b5f6140008316146114205760806f70d869a156d2a1b890bb3df62baf32f78202901c90505b5f6180008316146114455760806f31be135f97d08fd981231505542fcfa68202901c90505b5f6201000083161461146b5760806f09aa508b5b7a84e1c677de54f3e99bc98202901c90505b5f620200008316146114905760806e5d6af8dedb81196699c329225ee6048202901c90505b5f620400008316146114b45760806d2216e584f5fa1ea926041bedfe988202901c90505b5f620800008316146114d65760806b048a170391f7dc42444e8fa28202901c90505b5f8413156114e557805f190490505b60018060201b03810160201c92505050919050565b5f818260020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860020b8161153257611531612273565b5b05029050919050565b5f60a082209050919050565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111561158757828480945081955050505b6115bf6115ba836c0100000000000000000000000087870373ffffffffffffffffffffffffffffffffffffffff1661178e565b611851565b90509392505050565b5f805f6041845103611608575f805f602087015192506040870151915060608701515f1a90506115fa888285856118a3565b955095509550505050611616565b5f600285515f1b9250925092505b9250925092565b5f60038111156116305761162f612bba565b5b82600381111561164357611642612bba565b5b031561177b576001600381111561165d5761165c612bba565b5b8260038111156116705761166f612bba565b5b036116a7576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156116bb576116ba612bba565b5b8260038111156116ce576116cd612bba565b5b0361171257805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016117099190611ec8565b60405180910390fd5b60038081111561172557611724612bba565b5b82600381111561173857611737612bba565b5b0361177a57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016117719190612be7565b60405180910390fd5b5b5050565b815f528060020b60045260245ffd5b5f8083850290505f8019858709828110838203039150508084116117b0575f80fd5b5f81036117c3578382049250505061184a565b5f8486880990508281118203915080830392505f85865f0316905080860495508084049350600181825f0304019050808302841793505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b5f819050806fffffffffffffffffffffffffffffffff16821461189e5761189d6393dafdf160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661198a565b5b919050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156118df575f600385925092509250611980565b5f6001888888886040515f81526020016040526040516119029493929190612c0f565b6020604051602081039080840390855afa158015611922573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611973575f60015f801b93509350935050611980565b805f805f1b935093509350505b9450945094915050565b805f5260045ffd5b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b612b8380612c5383390190565b5f8115159050919050565b611a2781611a13565b82525050565b5f602082019050611a405f830184611a1e565b92915050565b5f8160020b9050919050565b611a5b81611a46565b82525050565b5f602082019050611a745f830184611a52565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ab482611a8b565b9050919050565b611ac481611aaa565b8114611ace575f80fd5b50565b5f81359050611adf81611abb565b92915050565b5f60208284031215611afa57611af9611a83565b5b5f611b0784828501611ad1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611b5282611b10565b611b5c8185611b1a565b9350611b6c818560208601611b2a565b611b7581611b38565b840191505092915050565b5f6020820190508181035f830152611b988184611b48565b905092915050565b611ba981611aaa565b82525050565b5f602082019050611bc25f830184611ba0565b92915050565b5f62ffffff82169050919050565b611bdf81611bc8565b82525050565b5f602082019050611bf85f830184611bd6565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611c1f57611c1e611bfe565b5b8235905067ffffffffffffffff811115611c3c57611c3b611c02565b5b602083019150836001820283011115611c5857611c57611c06565b5b9250929050565b5f819050919050565b611c7181611c5f565b8114611c7b575f80fd5b50565b5f81359050611c8c81611c68565b92915050565b5f805f805f60608688031215611cab57611caa611a83565b5b5f86013567ffffffffffffffff811115611cc857611cc7611a87565b5b611cd488828901611c0a565b9550955050602086013567ffffffffffffffff811115611cf757611cf6611a87565b5b611d0388828901611c0a565b93509350506040611d1688828901611c7e565b9150509295509295909350565b5f819050919050565b5f611d46611d41611d3c84611a8b565b611d23565b611a8b565b9050919050565b5f611d5782611d2c565b9050919050565b5f611d6882611d4d565b9050919050565b611d7881611d5e565b82525050565b5f611d8882611d4d565b9050919050565b611d9881611d7e565b82525050565b611da781611bc8565b82525050565b611db681611a46565b82525050565b5f611dc682611d4d565b9050919050565b611dd681611dbc565b82525050565b60a082015f820151611df05f850182611d8f565b506020820151611e036020850182611d8f565b506040820151611e166040850182611d9e565b506060820151611e296060850182611dad565b506080820151611e3c6080850182611dcd565b50505050565b5f819050919050565b611e5481611e42565b82525050565b5f60e082019050611e6d5f830186611d6f565b611e7a6020830185611ddc565b611e8760c0830184611e4b565b949350505050565b5f611e9982611d4d565b9050919050565b611ea981611e8f565b82525050565b5f602082019050611ec25f830184611ea0565b92915050565b5f602082019050611edb5f830184611e4b565b92915050565b5f611eeb82611d4d565b9050919050565b611efb81611ee1565b82525050565b5f602082019050611f145f830184611ef2565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f5482611b38565b810181811067ffffffffffffffff82111715611f7357611f72611f1e565b5b80604052505050565b5f611f85611a7a565b9050611f918282611f4b565b919050565b5f67ffffffffffffffff821115611fb057611faf611f1e565b5b611fb982611b38565b9050602081019050919050565b828183375f83830152505050565b5f611fe6611fe184611f96565b611f7c565b90508281526020810184848401111561200257612001611f1a565b5b61200d848285611fc6565b509392505050565b5f82601f83011261202957612028611bfe565b5b8135612039848260208601611fd4565b91505092915050565b61204b81611e42565b8114612055575f80fd5b50565b5f8135905061206681612042565b92915050565b5f805f805f60a0868803121561208557612084611a83565b5b5f61209288828901611ad1565b955050602086013567ffffffffffffffff8111156120b3576120b2611a87565b5b6120bf88828901612015565b945050604086013567ffffffffffffffff8111156120e0576120df611a87565b5b6120ec88828901612015565b935050606086013567ffffffffffffffff81111561210d5761210c611a87565b5b61211988828901612015565b925050608061212a88828901612058565b9150509295509295909350565b5f805f806080858703121561214f5761214e611a83565b5b5f85013567ffffffffffffffff81111561216c5761216b611a87565b5b61217887828801612015565b945050602085013567ffffffffffffffff81111561219957612198611a87565b5b6121a587828801612015565b935050604085013567ffffffffffffffff8111156121c6576121c5611a87565b5b6121d287828801612015565b925050606085013567ffffffffffffffff8111156121f3576121f2611a87565b5b6121ff87828801612015565b91505092959194509250565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f61223f601183611b1a565b915061224a8261220b565b602082019050919050565b5f6020820190508181035f83015261226c81612233565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6122aa82611a46565b91506122b583611a46565b9250826122c5576122c4612273565b5b828207905092915050565b7f496e76616c6964207469636b00000000000000000000000000000000000000005f82015250565b5f612304600c83611b1a565b915061230f826122d0565b602082019050919050565b5f6020820190508181035f830152612331816122f8565b9050919050565b61234181611c5f565b82525050565b5f60408201905061235a5f830185611ba0565b6123676020830184612338565b9392505050565b5f60a0820190508181035f8301526123868188611b48565b9050818103602083015261239a8187611b48565b905081810360408301526123ae8186611b48565b905081810360608301526123c28185611b48565b90506123d16080830184611e4b565b9695505050505050565b5f6060820190506123ee5f830186611ba0565b6123fb6020830185611ba0565b6124086040830184611e4b565b949350505050565b61241981611a13565b8114612423575f80fd5b50565b5f8151905061243481612410565b92915050565b5f6020828403121561244f5761244e611a83565b5b5f61245c84828501612426565b91505092915050565b5f81905092915050565b5f61247a8385612465565b9350612487838584611fc6565b82840190509392505050565b5f61249f82848661246f565b91508190509392505050565b5f81905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f82015250565b5f6124e9601c836124ab565b91506124f4826124b5565b601c82019050919050565b5f819050919050565b61251961251482611c5f565b6124ff565b82525050565b5f612529826124dd565b91506125358284612508565b60208201915081905092915050565b7f496e76616c69642073616c7400000000000000000000000000000000000000005f82015250565b5f612578600c83611b1a565b915061258382612544565b602082019050919050565b5f6020820190508181035f8301526125a58161256c565b9050919050565b5f6040820190506125bf5f830185611ba0565b6125cc6020830184611e4b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61260a82611e42565b915061261583611e42565b925082820190508082111561262d5761262c6125d3565b5b92915050565b61263c81611a8b565b82525050565b5f65ffffffffffff82169050919050565b61265c81612642565b82525050565b5f6080820190506126755f830187611ba0565b6126826020830186611ba0565b61268f6040830185612633565b61269c6060830184612653565b95945050505050565b5f6126af82611c5f565b9050919050565b6126bf816126a5565b82525050565b5f60c0820190506126d85f830189611ba0565b6126e560208301886126b6565b81810360408301526126f78187611b48565b9050818103606083015261270b8186611b48565b9050818103608083015261271f8185611b48565b905061272e60a0830184611ba0565b979650505050505050565b5f60c08201905061274c5f830185611ddc565b61275960a0830184612633565b9392505050565b61276981611a46565b8114612773575f80fd5b50565b5f8151905061278481612760565b92915050565b5f6020828403121561279f5761279e611a83565b5b5f6127ac84828501612776565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6127d9816127b5565b82525050565b5f819050919050565b5f60ff82169050919050565b5f61280e612809612804846127df565b611d23565b6127e8565b9050919050565b61281e816127f4565b82525050565b50565b5f6128325f83611b1a565b915061283d82612824565b5f82019050919050565b5f6101808201905061285b5f83018a611ddc565b61286860a0830189611a52565b61287560c0830188611a52565b61288260e08301876127d0565b612890610100830186612815565b61289e610120830185611e4b565b6128ac610140830184611ba0565b8181036101608301526128be81612827565b905098975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61290281611d7e565b82525050565b5f60408201905061291b5f8301856128f9565b61292860208301846128f9565b9392505050565b5f8151905061293d81612042565b92915050565b5f6020828403121561295857612957611a83565b5b5f6129658482850161292f565b91505092915050565b5f8160f81b9050919050565b5f6129848261296e565b9050919050565b61299c612997826127e8565b61297a565b82525050565b5f6129ad828561298b565b6001820191506129bd828461298b565b6001820191508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6129f1826129cd565b6129fb81856129d7565b9350612a0b818560208601611b2a565b612a1481611b38565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f612a62826129cd565b612a6c8185612a48565b9350612a7c818560208601611b2a565b612a8581611b38565b840191505092915050565b5f612a9b8383612a58565b905092915050565b5f602082019050919050565b5f612ab982612a1f565b612ac38185612a29565b935083602082028501612ad585612a39565b805f5b85811015612b105784840389528151612af18582612a90565b9450612afc83612aa3565b925060208a01995050600181019050612ad8565b50829750879550505050505092915050565b5f6040820190508181035f830152612b3a81856129e7565b90508181036020830152612b4e8184612aaf565b90509392505050565b5f6040820190508181035f830152612b6f81856129e7565b9050612b7e6020830184611e4b565b9392505050565b5f606082019050612b985f830186611ba0565b612ba56020830185611e4b565b612bb26040830184611ba0565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082019050612bfa5f830184612338565b92915050565b612c09816127e8565b82525050565b5f608082019050612c225f830187612338565b612c2f6020830186612c00565b612c3c6040830185612338565b612c496060830184612338565b9594505050505056fe610180604052348015610010575f80fd5b50604051612b83380380612b83833981810160405281019061003291906106bc565b84806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508787816003908161007b91906109a7565b50806004908161008b91906109a7565b5050506100a260058361017360201b90919060201c565b61012081815250506100be60068261017360201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506100fb6101c060201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050826008908161014891906109a7565b50816009908161015891906109a7565b50610169338261021a60201b60201c565b5050505050610cef565b5f6020835110156101945761018d8361029f60201b60201c565b90506101ba565b826101a48361030460201b60201c565b5f0190816101b291906109a7565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016101ff959493929190610adc565b60405160208183030381529060405280519060200120905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361028a575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016102819190610b2d565b60405180910390fd5b61029b5f838361030d60201b60201c565b5050565b5f80829050601f815111156102eb57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016102e29190610b8e565b60405180910390fd5b8051816102f790610bdb565b5f1c175f1b915050919050565b5f819050919050565b61031e83838361032360201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610373578060025f8282546103679190610c6e565b92505081905550610441565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156103fc578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016103f393929190610ca1565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610488578060025f82825403925050819055506104d2565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161052f9190610cd6565b60405180910390a3505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61059b82610555565b810181811067ffffffffffffffff821117156105ba576105b9610565565b5b80604052505050565b5f6105cc61053c565b90506105d88282610592565b919050565b5f67ffffffffffffffff8211156105f7576105f6610565565b5b61060082610555565b9050602081019050919050565b8281835e5f83830152505050565b5f61062d610628846105dd565b6105c3565b90508281526020810184848401111561064957610648610551565b5b61065484828561060d565b509392505050565b5f82601f8301126106705761066f61054d565b5b815161068084826020860161061b565b91505092915050565b5f819050919050565b61069b81610689565b81146106a5575f80fd5b50565b5f815190506106b681610692565b92915050565b5f805f805f60a086880312156106d5576106d4610545565b5b5f86015167ffffffffffffffff8111156106f2576106f1610549565b5b6106fe8882890161065c565b955050602086015167ffffffffffffffff81111561071f5761071e610549565b5b61072b8882890161065c565b945050604086015167ffffffffffffffff81111561074c5761074b610549565b5b6107588882890161065c565b935050606086015167ffffffffffffffff81111561077957610778610549565b5b6107858882890161065c565b9250506080610796888289016106a8565b9150509295509295909350565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806107f157607f821691505b602082108103610804576108036107ad565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026108667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261082b565b610870868361082b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6108ab6108a66108a184610689565b610888565b610689565b9050919050565b5f819050919050565b6108c483610891565b6108d86108d0826108b2565b848454610837565b825550505050565b5f90565b6108ec6108e0565b6108f78184846108bb565b505050565b5b8181101561091a5761090f5f826108e4565b6001810190506108fd565b5050565b601f82111561095f576109308161080a565b6109398461081c565b81016020851015610948578190505b61095c6109548561081c565b8301826108fc565b50505b505050565b5f82821c905092915050565b5f61097f5f1984600802610964565b1980831691505092915050565b5f6109978383610970565b9150826002028217905092915050565b6109b0826107a3565b67ffffffffffffffff8111156109c9576109c8610565565b5b6109d382546107da565b6109de82828561091e565b5f60209050601f831160018114610a0f575f84156109fd578287015190505b610a07858261098c565b865550610a6e565b601f198416610a1d8661080a565b5f5b82811015610a4457848901518255600182019150602085019450602081019050610a1f565b86831015610a615784890151610a5d601f891682610970565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b610a8881610a76565b82525050565b610a9781610689565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ac682610a9d565b9050919050565b610ad681610abc565b82525050565b5f60a082019050610aef5f830188610a7f565b610afc6020830187610a7f565b610b096040830186610a7f565b610b166060830185610a8e565b610b236080830184610acd565b9695505050505050565b5f602082019050610b405f830184610acd565b92915050565b5f82825260208201905092915050565b5f610b60826107a3565b610b6a8185610b46565b9350610b7a81856020860161060d565b610b8381610555565b840191505092915050565b5f6020820190508181035f830152610ba68184610b56565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f610bd28251610a76565b80915050919050565b5f610be582610bae565b82610bef84610bb8565b9050610bfa81610bc7565b92506020821015610c3a57610c357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261082b565b831692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c7882610689565b9150610c8383610689565b9250828201905080821115610c9b57610c9a610c41565b5b92915050565b5f606082019050610cb45f830186610acd565b610cc16020830185610a8e565b610cce6040830184610a8e565b949350505050565b5f602082019050610ce95f830184610a8e565b92915050565b60805160a05160c05160e05161010051610120516101405161016051611e3c610d475f395f50505f610c5901525f610c1e01525f610fdd01525f610fbc01525f610b1c01525f610b7201525f610b9b0152611e3c5ff3fe608060405234801561000f575f80fd5b50600436106100f3575f3560e01c80637284e41611610095578063a9059cbb11610064578063a9059cbb1461028f578063d505accf146102bf578063dd62ed3e146102db578063f3ccaac01461030b576100f3565b80637284e416146101ff5780637ecebe001461021d57806384b0196e1461024d57806395d89b4114610271576100f3565b806323b872dd116100d157806323b872dd14610163578063313ce567146101935780633644e515146101b157806370a08231146101cf576100f3565b806306fdde03146100f7578063095ea7b31461011557806318160ddd14610145575b5f80fd5b6100ff610329565b60405161010c91906116ac565b60405180910390f35b61012f600480360381019061012a919061175d565b6103b9565b60405161013c91906117b5565b60405180910390f35b61014d61047b565b60405161015a91906117dd565b60405180910390f35b61017d600480360381019061017891906117f6565b610484565b60405161018a91906117b5565b60405180910390f35b61019b6104b2565b6040516101a89190611861565b60405180910390f35b6101b96104ba565b6040516101c69190611892565b60405180910390f35b6101e960048036038101906101e491906118ab565b6104c8565b6040516101f691906117dd565b60405180910390f35b61020761050d565b60405161021491906116ac565b60405180910390f35b610237600480360381019061023291906118ab565b61059d565b60405161024491906117dd565b60405180910390f35b6102556105ae565b60405161026897969594939291906119d6565b60405180910390f35b610279610653565b60405161028691906116ac565b60405180910390f35b6102a960048036038101906102a4919061175d565b6106e3565b6040516102b691906117b5565b60405180910390f35b6102d960048036038101906102d49190611aac565b610705565b005b6102f560048036038101906102f09190611b49565b61084a565b60405161030291906117dd565b60405180910390f35b6103136108d6565b60405161032091906116ac565b60405180910390f35b60606003805461033890611bb4565b80601f016020809104026020016040519081016040528092919081815260200182805461036490611bb4565b80156103af5780601f10610386576101008083540402835291602001916103af565b820191905f5260205f20905b81548152906001019060200180831161039257829003601f168201915b5050505050905090565b5f6103c2610966565b15610469576e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561043157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b15610468576040517f3f68539a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610473838361096e565b905092915050565b5f600254905090565b5f8061048e610990565b905061049b858285610997565b6104a6858585610a29565b60019150509392505050565b5f6012905090565b5f6104c3610b19565b905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606008805461051c90611bb4565b80601f016020809104026020016040519081016040528092919081815260200182805461054890611bb4565b80156105935780601f1061056a57610100808354040283529160200191610593565b820191905f5260205f20905b81548152906001019060200180831161057657829003601f168201915b5050505050905090565b5f6105a782610bcf565b9050919050565b5f6060805f805f60606105bf610c15565b6105c7610c50565b46305f801b5f67ffffffffffffffff8111156105e6576105e5611be4565b5b6040519080825280602002602001820160405280156106145781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b60606004805461066290611bb4565b80601f016020809104026020016040519081016040528092919081815260200182805461068e90611bb4565b80156106d95780601f106106b0576101008083540402835291602001916106d9565b820191905f5260205f20905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b5f806106ed610990565b90506106fa818585610a29565b600191505092915050565b8342111561074a57836040517f6279130200000000000000000000000000000000000000000000000000000000815260040161074191906117dd565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107788c610c8b565b8960405160200161078e96959493929190611c11565b6040516020818303038152906040528051906020012090505f6107b082610cde565b90505f6107bf82878787610cf7565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461083357808a6040517f4b800e4600000000000000000000000000000000000000000000000000000000815260040161082a929190611c70565b60405180910390fd5b61083e8a8a8a610d25565b50505050505050505050565b5f610853610966565b156108c3576e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506108d0565b5b6108cd8383610d37565b90505b92915050565b6060600980546108e590611bb4565b80601f016020809104026020016040519081016040528092919081815260200182805461091190611bb4565b801561095c5780601f106109335761010080835404028352916020019161095c565b820191905f5260205f20905b81548152906001019060200180831161093f57829003601f168201915b5050505050905090565b5f6001905090565b5f80610978610990565b9050610985818585610d25565b600191505092915050565b5f33905090565b5f6109a2848461084a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a235781811015610a14578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610a0b93929190611c97565b60405180910390fd5b610a2284848484035f610db9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a99575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a909190611ccc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b09575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610b009190611ccc565b60405180910390fd5b610b14838383610f88565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610b9457507f000000000000000000000000000000000000000000000000000000000000000046145b15610bc1577f00000000000000000000000000000000000000000000000000000000000000009050610bcc565b610bc9610f98565b90505b90565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060610c4b60057f000000000000000000000000000000000000000000000000000000000000000061102d90919063ffffffff16565b905090565b6060610c8660067f000000000000000000000000000000000000000000000000000000000000000061102d90919063ffffffff16565b905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f610cf0610cea610b19565b836110da565b9050919050565b5f805f80610d078888888861111a565b925092509250610d178282611201565b829350505050949350505050565b610d328383836001610db9565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e29575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610e209190611ccc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e99575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610e909190611ccc565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610f82578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f7991906117dd565b60405180910390a35b50505050565b610f93838383611363565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611012959493929190611ce5565b60405160208183030381529060405280519060200120905090565b606060ff5f1b8314611049576110428361157c565b90506110d4565b81805461105590611bb4565b80601f016020809104026020016040519081016040528092919081815260200182805461108190611bb4565b80156110cc5780601f106110a3576101008083540402835291602001916110cc565b820191905f5260205f20905b8154815290600101906020018083116110af57829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611156575f6003859250925092506111f7565b5f6001888888886040515f81526020016040526040516111799493929190611d36565b6020604051602081039080840390855afa158015611199573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ea575f60015f801b935093509350506111f7565b805f805f1b935093509350505b9450945094915050565b5f600381111561121457611213611d79565b5b82600381111561122757611226611d79565b5b031561135f576001600381111561124157611240611d79565b5b82600381111561125457611253611d79565b5b0361128b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561129f5761129e611d79565b5b8260038111156112b2576112b1611d79565b5b036112f657805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016112ed91906117dd565b60405180910390fd5b60038081111561130957611308611d79565b5b82600381111561131c5761131b611d79565b5b0361135e57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016113559190611892565b60405180910390fd5b5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b3578060025f8282546113a79190611dd3565b92505081905550611481565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561143c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161143393929190611c97565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c8578060025f8282540392505081905550611512565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161156f91906117dd565b60405180910390a3505050565b60605f611588836115ee565b90505f602067ffffffffffffffff8111156115a6576115a5611be4565b5b6040519080825280601f01601f1916602001820160405280156115d85781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f811115611633576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167e8261163c565b6116888185611646565b9350611698818560208601611656565b6116a181611664565b840191505092915050565b5f6020820190508181035f8301526116c48184611674565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116f9826116d0565b9050919050565b611709816116ef565b8114611713575f80fd5b50565b5f8135905061172481611700565b92915050565b5f819050919050565b61173c8161172a565b8114611746575f80fd5b50565b5f8135905061175781611733565b92915050565b5f8060408385031215611773576117726116cc565b5b5f61178085828601611716565b925050602061179185828601611749565b9150509250929050565b5f8115159050919050565b6117af8161179b565b82525050565b5f6020820190506117c85f8301846117a6565b92915050565b6117d78161172a565b82525050565b5f6020820190506117f05f8301846117ce565b92915050565b5f805f6060848603121561180d5761180c6116cc565b5b5f61181a86828701611716565b935050602061182b86828701611716565b925050604061183c86828701611749565b9150509250925092565b5f60ff82169050919050565b61185b81611846565b82525050565b5f6020820190506118745f830184611852565b92915050565b5f819050919050565b61188c8161187a565b82525050565b5f6020820190506118a55f830184611883565b92915050565b5f602082840312156118c0576118bf6116cc565b5b5f6118cd84828501611716565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61190a816118d6565b82525050565b611919816116ef565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6119518161172a565b82525050565b5f6119628383611948565b60208301905092915050565b5f602082019050919050565b5f6119848261191f565b61198e8185611929565b935061199983611939565b805f5b838110156119c95781516119b08882611957565b97506119bb8361196e565b92505060018101905061199c565b5085935050505092915050565b5f60e0820190506119e95f83018a611901565b81810360208301526119fb8189611674565b90508181036040830152611a0f8188611674565b9050611a1e60608301876117ce565b611a2b6080830186611910565b611a3860a0830185611883565b81810360c0830152611a4a818461197a565b905098975050505050505050565b611a6181611846565b8114611a6b575f80fd5b50565b5f81359050611a7c81611a58565b92915050565b611a8b8161187a565b8114611a95575f80fd5b50565b5f81359050611aa681611a82565b92915050565b5f805f805f805f60e0888a031215611ac757611ac66116cc565b5b5f611ad48a828b01611716565b9750506020611ae58a828b01611716565b9650506040611af68a828b01611749565b9550506060611b078a828b01611749565b9450506080611b188a828b01611a6e565b93505060a0611b298a828b01611a98565b92505060c0611b3a8a828b01611a98565b91505092959891949750929550565b5f8060408385031215611b5f57611b5e6116cc565b5b5f611b6c85828601611716565b9250506020611b7d85828601611716565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611bcb57607f821691505b602082108103611bde57611bdd611b87565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60c082019050611c245f830189611883565b611c316020830188611910565b611c3e6040830187611910565b611c4b60608301866117ce565b611c5860808301856117ce565b611c6560a08301846117ce565b979650505050505050565b5f604082019050611c835f830185611910565b611c906020830184611910565b9392505050565b5f606082019050611caa5f830186611910565b611cb760208301856117ce565b611cc460408301846117ce565b949350505050565b5f602082019050611cdf5f830184611910565b92915050565b5f60a082019050611cf85f830188611883565b611d056020830187611883565b611d126040830186611883565b611d1f60608301856117ce565b611d2c6080830184611910565b9695505050505050565b5f608082019050611d495f830187611883565b611d566020830186611852565b611d636040830185611883565b611d706060830184611883565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ddd8261172a565b9150611de88361172a565b9250828201905080821115611e0057611dff611da6565b5b9291505056fea2646970667358221220608f559056e7a6aa72cdbfaeea274e8d1b23355c050c6dee3a582aa4b38ac6bc64736f6c634300081a0033a264697066735822122076de0b8c18434766405b530618a1b1360faa3b4722bd7b308a0ca44fa6f3448064736f6c634300081a0033000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b0000000000000000000000007c5f5a4bbd8fd63184577525326123b519429bdc000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000030ef5100f6363daf9efffef474968778f8f0512c