Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CheckpointUnorderedInsertion", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20ExceededSafeSupply", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" }, { "internalType": "uint48", "name": "clock", "type": "uint48" } ], "name": "ERC5805FutureLookup", "type": "error" }, { "inputs": [], "name": "ERC6372InconsistentClock", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "VotesExpiredSignature", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousVotes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newVotes", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint48", "name": "_key", "type": "uint48" }, { "internalType": "uint208", "name": "_value", "type": "uint208" } ], "internalType": "struct Checkpoints.Checkpoint208", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
610160604052348015610010575f80fd5b506040518060400160405280600c81526020017f45766f2045786368616e67650000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600c81526020017f45766f2045786368616e676500000000000000000000000000000000000000008152506040518060400160405280600481526020017f45766f580000000000000000000000000000000000000000000000000000000081525081600390816100f9919061124c565b508060049081610109919061124c565b5050506101206005836101f460201b90919060201c565b610120818152505061013c6006826101f460201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505061017961024160201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506101ef336101c961029b60201b60201c565b600a6101d59190611483565b633b9aca006101e491906114cd565b6102a360201b60201c565b611951565b5f6020835110156102155761020e8361032860201b60201c565b905061023b565b826102258361038d60201b60201c565b5f019081610233919061124c565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e051610100514630604051602001610280959493929190611574565b60405160208183030381529060405280519060200120905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610313575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161030a91906115c5565b60405180910390fd5b6103245f838361039660201b60201c565b5050565b5f80829050601f8151111561037457826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040161036b9190611644565b60405180910390fd5b80518161038090611691565b5f1c175f1b915050919050565b5f819050919050565b6103a78383836103ac60201b60201c565b505050565b6103bd83838361047260201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361045c575f6103ff61068b60201b60201c565b90505f61041061069460201b60201c565b9050808211156104595781816040517f1cb15d260000000000000000000000000000000000000000000000000000000081526004016104509291906116f7565b60405180910390fd5b50505b61046d8383836106b760201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104c2578060025f8282546104b6919061171e565b92505081905550610590565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561054b578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161054293929190611751565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105d7578060025f8282540392505081905550610621565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161067e9190611786565b60405180910390a3505050565b5f600254905090565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361071657610713600a6107a760201b610d3517610708846107bc60201b60201c565b61082960201b60201c565b50505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361077557610772600a61087160201b610d4a17610767846107bc60201b60201c565b61082960201b60201c565b50505b6107a26107878461088660201b60201c565b6107968461088660201b60201c565b836108eb60201b60201c565b505050565b5f81836107b491906117c4565b905092915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff80168211156108215760d0826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161081892919061184a565b60405180910390fd5b819050919050565b5f8061086561083c610b8160201b60201c565b61085561084e88610b9560201b60201c565b868860201c565b87610bfd60201b9092919060201c565b91509150935093915050565b5f818361087e9190611871565b905092915050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561092657505f81115b15610b7c575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a53575f806109c460095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061087160201b610d4a176109b9866107bc60201b60201c565b61082960201b60201c565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051610a489291906116f7565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610b7b575f80610aec60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206107a760201b610d3517610ae1866107bc60201b60201c565b61082960201b60201c565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051610b709291906116f7565b60405180910390a250505b5b505050565b5f610b90610c1e60201b60201c565b905090565b5f80825f018054905090505f8114610bf357610bc5835f01600183610bba91906118be565b610c3360201b60201c565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff16610bf5565b5f5b915050919050565b5f80610c12855f018585610c4560201b60201c565b91509150935093915050565b5f610c2e43610fb960201b60201c565b905090565b5f825f528160205f2001905092915050565b5f805f858054905090505f811115610ed1575f610c7487600184610c6991906118be565b610c3360201b60201c565b6040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff168152505090508565ffffffffffff16815f015165ffffffffffff161115610d5f576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8565ffffffffffff16815f015165ffffffffffff1603610de75784610d9688600185610d8b91906118be565b610c3360201b60201c565b5f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610ec0565b8660405180604001604052808865ffffffffffff1681526020018779ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b806020015185935093505050610fb1565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505f8492509250505b935093915050565b5f65ffffffffffff801682111561100a576030826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161100192919061192a565b60405180910390fd5b819050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061108d57607f821691505b6020821081036110a05761109f611049565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026111027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826110c7565b61110c86836110c7565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61115061114b61114684611124565b61112d565b611124565b9050919050565b5f819050919050565b61116983611136565b61117d61117582611157565b8484546110d3565b825550505050565b5f90565b611191611185565b61119c818484611160565b505050565b5b818110156111bf576111b45f82611189565b6001810190506111a2565b5050565b601f821115611204576111d5816110a6565b6111de846110b8565b810160208510156111ed578190505b6112016111f9856110b8565b8301826111a1565b50505b505050565b5f82821c905092915050565b5f6112245f1984600802611209565b1980831691505092915050565b5f61123c8383611215565b9150826002028217905092915050565b61125582611012565b67ffffffffffffffff81111561126e5761126d61101c565b5b6112788254611076565b6112838282856111c3565b5f60209050601f8311600181146112b4575f84156112a2578287015190505b6112ac8582611231565b865550611313565b601f1984166112c2866110a6565b5f5b828110156112e9578489015182556001820191506020850194506020810190506112c4565b868310156113065784890151611302601f891682611215565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561139d578086048111156113795761137861131b565b5b60018516156113885780820291505b808102905061139685611348565b945061135d565b94509492505050565b5f826113b55760019050611470565b816113c2575f9050611470565b81600181146113d857600281146113e257611411565b6001915050611470565b60ff8411156113f4576113f361131b565b5b8360020a91508482111561140b5761140a61131b565b5b50611470565b5060208310610133831016604e8410600b84101617156114465782820a9050838111156114415761144061131b565b5b611470565b6114538484846001611354565b9250905081840481111561146a5761146961131b565b5b81810290505b9392505050565b5f60ff82169050919050565b5f61148d82611124565b915061149883611477565b92506114c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846113a6565b905092915050565b5f6114d782611124565b91506114e283611124565b92508282026114f081611124565b915082820484148315176115075761150661131b565b5b5092915050565b5f819050919050565b6115208161150e565b82525050565b61152f81611124565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61155e82611535565b9050919050565b61156e81611554565b82525050565b5f60a0820190506115875f830188611517565b6115946020830187611517565b6115a16040830186611517565b6115ae6060830185611526565b6115bb6080830184611565565b9695505050505050565b5f6020820190506115d85f830184611565565b92915050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61161682611012565b61162081856115de565b93506116308185602086016115ee565b611639816115fc565b840191505092915050565b5f6020820190508181035f83015261165c818461160c565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f611688825161150e565b80915050919050565b5f61169b82611664565b826116a58461166e565b90506116b08161167d565b925060208210156116f0576116eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026110c7565b831692505b5050919050565b5f60408201905061170a5f830185611526565b6117176020830184611526565b9392505050565b5f61172882611124565b915061173383611124565b925082820190508082111561174b5761174a61131b565b5b92915050565b5f6060820190506117645f830186611565565b6117716020830185611526565b61177e6040830184611526565b949350505050565b5f6020820190506117995f830184611526565b92915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117ce8261179f565b91506117d98361179f565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff81111561180b5761180a61131b565b5b92915050565b5f819050919050565b5f61183461182f61182a84611811565b61112d565b611477565b9050919050565b6118448161181a565b82525050565b5f60408201905061185d5f83018561183b565b61186a6020830184611526565b9392505050565b5f61187b8261179f565b91506118868361179f565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff8111156118b8576118b761131b565b5b92915050565b5f6118c882611124565b91506118d383611124565b92508282039050818111156118eb576118ea61131b565b5b92915050565b5f819050919050565b5f61191461190f61190a846118f1565b61112d565b611477565b9050919050565b611924816118fa565b82525050565b5f60408201905061193d5f83018561191b565b61194a6020830184611526565b9392505050565b60805160a05160c05160e0516101005161012051610140516136f46119a25f395f6112bf01525f61128401525f6116c701525f6116a601525f610efd01525f610f5301525f610f7c01526136f45ff3fe608060405234801561000f575f80fd5b506004361061014b575f3560e01c806370a08231116100c15780639ab24eb01161007a5780639ab24eb0146103e1578063a9059cbb14610411578063c3cda52014610441578063d505accf1461045d578063dd62ed3e14610479578063f1127ed8146104a95761014b565b806370a08231146102f15780637ecebe001461032157806384b0196e146103515780638e539e8c1461037557806391ddadf4146103a557806395d89b41146103c35761014b565b80633644e515116101135780633644e515146102095780633a46b1a8146102275780634bf5d7e914610257578063587cde1e146102755780635c19a95c146102a55780636fcfff45146102c15761014b565b806306fdde031461014f578063095ea7b31461016d57806318160ddd1461019d57806323b872dd146101bb578063313ce567146101eb575b5f80fd5b6101576104d9565b6040516101649190612a17565b60405180910390f35b61018760048036038101906101829190612ac8565b610569565b6040516101949190612b20565b60405180910390f35b6101a561058b565b6040516101b29190612b48565b60405180910390f35b6101d560048036038101906101d09190612b61565b610594565b6040516101e29190612b20565b60405180910390f35b6101f36105c2565b6040516102009190612bcc565b60405180910390f35b6102116105ca565b60405161021e9190612bfd565b60405180910390f35b610241600480360381019061023c9190612ac8565b6105d8565b60405161024e9190612b48565b60405180910390f35b61025f6106ae565b60405161026c9190612a17565b60405180910390f35b61028f600480360381019061028a9190612c16565b610742565b60405161029c9190612c50565b60405180910390f35b6102bf60048036038101906102ba9190612c16565b6107a7565b005b6102db60048036038101906102d69190612c16565b6107c0565b6040516102e89190612c87565b60405180910390f35b61030b60048036038101906103069190612c16565b6107d1565b6040516103189190612b48565b60405180910390f35b61033b60048036038101906103369190612c16565b610816565b6040516103489190612b48565b60405180910390f35b610359610827565b60405161036c9796959493929190612d91565b60405180910390f35b61038f600480360381019061038a9190612e13565b6108cc565b60405161039c9190612b48565b60405180910390f35b6103ad610966565b6040516103ba9190612e5e565b60405180910390f35b6103cb610974565b6040516103d89190612a17565b60405180910390f35b6103fb60048036038101906103f69190612c16565b610a04565b6040516104089190612b48565b60405180910390f35b61042b60048036038101906104269190612ac8565b610a6d565b6040516104389190612b20565b60405180910390f35b61045b60048036038101906104569190612ecb565b610a8f565b005b61047760048036038101906104729190612f54565b610b54565b005b610493600480360381019061048e9190612ff1565b610c99565b6040516104a09190612b48565b60405180910390f35b6104c360048036038101906104be9190613059565b610d1b565b6040516104d09190613107565b60405180910390f35b6060600380546104e89061314d565b80601f01602080910402602001604051908101604052809291908181526020018280546105149061314d565b801561055f5780601f106105365761010080835404028352916020019161055f565b820191905f5260205f20905b81548152906001019060200180831161054257829003601f168201915b5050505050905090565b5f80610573610d5f565b9050610580818585610d66565b600191505092915050565b5f600254905090565b5f8061059e610d5f565b90506105ab858285610d78565b6105b6858585610e0a565b60019150509392505050565b5f6012905090565b5f6105d3610efa565b905090565b5f806105e2610966565b90508065ffffffffffff1683106106325782816040517fecd3f81e00000000000000000000000000000000000000000000000000000000815260040161062992919061317d565b60405180910390fd5b61068961063e84610fb0565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061100990919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff1691505092915050565b60606106b86110f6565b65ffffffffffff166106c8610966565b65ffffffffffff1614610707576040517f6ff0714000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280601d81526020017f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000815250905090565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f6107b0610d5f565b90506107bc8183611105565b5050565b5f6107ca82611215565b9050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6108208261126a565b9050919050565b5f6060805f805f606061083861127b565b6108406112b6565b46305f801b5f67ffffffffffffffff81111561085f5761085e6131a4565b5b60405190808252806020026020018201604052801561088d5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f806108d6610966565b90508065ffffffffffff1683106109265782816040517fecd3f81e00000000000000000000000000000000000000000000000000000000815260040161091d92919061317d565b60405180910390fd5b61094261093284610fb0565b600a61100990919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b5f61096f6110f6565b905090565b6060600480546109839061314d565b80601f01602080910402602001604051908101604052809291908181526020018280546109af9061314d565b80156109fa5780601f106109d1576101008083540402835291602001916109fa565b820191905f5260205f20905b8154815290600101906020018083116109dd57829003601f168201915b5050505050905090565b5f610a4a60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206112f1565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b5f80610a77610d5f565b9050610a84818585610e0a565b600191505092915050565b83421115610ad457836040517f4683af0e000000000000000000000000000000000000000000000000000000008152600401610acb9190612b48565b60405180910390fd5b5f610b35610b2d7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610b1294939291906131d1565b60405160208183030381529060405280519060200120611353565b85858561136c565b9050610b41818761139a565b610b4b8188611105565b50505050505050565b83421115610b9957836040517f62791302000000000000000000000000000000000000000000000000000000008152600401610b909190612b48565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610bc78c6113f1565b89604051602001610bdd96959493929190613214565b6040516020818303038152906040528051906020012090505f610bff82611353565b90505f610c0e8287878761136c565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c8257808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610c79929190613273565b60405180910390fd5b610c8d8a8a8a610d66565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610d2361296b565b610d2d8383611444565b905092915050565b5f8183610d4291906132c7565b905092915050565b5f8183610d579190613314565b905092915050565b5f33905090565b610d7383838360016114a3565b505050565b5f610d838484610c99565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e045781811015610df5578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610dec93929190613361565b60405180910390fd5b610e0384848484035f6114a3565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e7a575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e719190612c50565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610eea575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ee19190612c50565b60405180910390fd5b610ef5838383611672565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610f7557507f000000000000000000000000000000000000000000000000000000000000000046145b15610fa2577f00000000000000000000000000000000000000000000000000000000000000009050610fad565b610faa611682565b90505b90565b5f65ffffffffffff8016821115611001576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401610ff89291906133d8565b60405180910390fd5b819050919050565b5f80835f018054905090505f80829050600583111561108a575f61102c84611717565b8461103791906133ff565b9050611045875f018261180d565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff168665ffffffffffff16101561107857809150611088565b6001816110859190613432565b92505b505b5f611099875f0187858561181f565b90505f81146110e8576110ba875f016001836110b591906133ff565b61180d565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff166110ea565b5f5b94505050505092915050565b5f61110043610fb0565b905090565b5f61110f83610742565b90508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611210818361120b86611894565b6118a5565b505050565b5f61126361125e60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611b15565b611b24565b9050919050565b5f61127482611b7b565b9050919050565b60606112b160057f0000000000000000000000000000000000000000000000000000000000000000611bc190919063ffffffff16565b905090565b60606112ec60067f0000000000000000000000000000000000000000000000000000000000000000611bc190919063ffffffff16565b905090565b5f80825f018054905090505f81146113495761131b835f0160018361131691906133ff565b61180d565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1661134b565b5f5b915050919050565b5f61136561135f610efa565b83611c6e565b9050919050565b5f805f8061137c88888888611cae565b92509250925061138c8282611d95565b829350505050949350505050565b5f6113a4836113f1565b90508082146113ec5782816040517f752d88c00000000000000000000000000000000000000000000000000000000081526004016113e3929190613465565b60405180910390fd5b505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b61144c61296b565b61149b8260095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611ef790919063ffffffff16565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611513575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161150a9190612c50565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611583575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161157a9190612c50565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561166c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516116639190612b48565b60405180910390a35b50505050565b61167d838383611fc6565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016116fc95949392919061348c565b60405160208183030381529060405280519060200120905090565b5f808203611727575f9050611808565b5f600161173384612074565b901c6001901b9050600181848161174d5761174c6134dd565b5b048201901c90506001818481611766576117656134dd565b5b048201901c9050600181848161177f5761177e6134dd565b5b048201901c90506001818481611798576117976134dd565b5b048201901c905060018184816117b1576117b06134dd565b5b048201901c905060018184816117ca576117c96134dd565b5b048201901c905060018184816117e3576117e26134dd565b5b048201901c9050611804818285816117fe576117fd6134dd565b5b0461214b565b9150505b919050565b5f825f528160205f2001905092915050565b5f5b81831015611889575f6118348484612163565b90508465ffffffffffff16611849878361180d565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff16111561187357809250611883565b6001816118809190613432565b93505b50611821565b819050949350505050565b5f61189e826107d1565b9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118e057505f81115b15611b10575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119fa575f8061196b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20610d4a61196686612188565b6121f5565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516119ef92919061350a565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b0f575f80611a8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20610d35611a7b86612188565b6121f5565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611b0492919061350a565b60405180910390a250505b5b505050565b5f815f01805490509050919050565b5f63ffffffff8016821115611b73576020826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401611b6a92919061356a565b60405180910390fd5b819050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b606060ff5f1b8314611bdd57611bd683612234565b9050611c68565b818054611be99061314d565b80601f0160208091040260200160405190810160405280929190818152602001828054611c159061314d565b8015611c605780601f10611c3757610100808354040283529160200191611c60565b820191905f5260205f20905b815481529060010190602001808311611c4357829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611cea575f600385925092509250611d8b565b5f6001888888886040515f8152602001604052604051611d0d9493929190613591565b6020604051602081039080840390855afa158015611d2d573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d7e575f60015f801b93509350935050611d8b565b805f805f1b935093509350505b9450945094915050565b5f6003811115611da857611da76135d4565b5b826003811115611dbb57611dba6135d4565b5b0315611ef35760016003811115611dd557611dd46135d4565b5b826003811115611de857611de76135d4565b5b03611e1f576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115611e3357611e326135d4565b5b826003811115611e4657611e456135d4565b5b03611e8a57805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401611e819190612b48565b60405180910390fd5b600380811115611e9d57611e9c6135d4565b5b826003811115611eb057611eaf6135d4565b5b03611ef257806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611ee99190612bfd565b60405180910390fd5b5b5050565b611eff61296b565b825f018263ffffffff1681548110611f1a57611f19613601565b5b905f5260205f20016040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b611fd18383836122a6565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612064575f61200d61058b565b90505f6120186124bf565b9050808211156120615781816040517f1cb15d2600000000000000000000000000000000000000000000000000000000815260040161205892919061350a565b60405180910390fd5b50505b61206f8383836124e2565b505050565b5f805f90505f608084901c111561209357608083901c92506080810190505b5f604084901c11156120ad57604083901c92506040810190505b5f602084901c11156120c757602083901c92506020810190505b5f601084901c11156120e157601083901c92506010810190505b5f600884901c11156120fb57600883901c92506008810190505b5f600484901c111561211557600483901c92506004810190505b5f600284901c111561212f57600283901c92506002810190505b5f600184901c1115612142576001810190505b80915050919050565b5f818310612159578161215b565b825b905092915050565b5f6002828418612173919061362e565b8284166121809190613432565b905092915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff80168211156121ed5760d0826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016121e4929190613697565b60405180910390fd5b819050919050565b5f80612228612202610966565b61221861220e886112f1565b868863ffffffff16565b8761259a9092919063ffffffff16565b91509150935093915050565b60605f612240836125b5565b90505f602067ffffffffffffffff81111561225e5761225d6131a4565b5b6040519080825280601f01601f1916602001820160405280156122905781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122f6578060025f8282546122ea9190613432565b925050819055506123c4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561237f578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161237693929190613361565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361240b578060025f8282540392505081905550612455565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124b29190612b48565b60405180910390a3505050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361252e5761252b600a610d3561252684612188565b6121f5565b50505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361257a57612577600a610d4a61257284612188565b6121f5565b50505b61259561258684610742565b61258f84610742565b836118a5565b505050565b5f806125a9855f018585612603565b91509150935093915050565b5f8060ff835f1c169050601f8111156125fa576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f805f858054905090505f811115612883575f61262c8760018461262791906133ff565b61180d565b6040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff168152505090508565ffffffffffff16815f015165ffffffffffff161115612717576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8565ffffffffffff16815f015165ffffffffffff160361279957846127488860018561274391906133ff565b61180d565b5f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550612872565b8660405180604001604052808865ffffffffffff1681526020018779ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b806020015185935093505050612963565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505f8492509250505b935093915050565b60405180604001604052805f65ffffffffffff1681526020015f79ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6129e9826129a7565b6129f381856129b1565b9350612a038185602086016129c1565b612a0c816129cf565b840191505092915050565b5f6020820190508181035f830152612a2f81846129df565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a6482612a3b565b9050919050565b612a7481612a5a565b8114612a7e575f80fd5b50565b5f81359050612a8f81612a6b565b92915050565b5f819050919050565b612aa781612a95565b8114612ab1575f80fd5b50565b5f81359050612ac281612a9e565b92915050565b5f8060408385031215612ade57612add612a37565b5b5f612aeb85828601612a81565b9250506020612afc85828601612ab4565b9150509250929050565b5f8115159050919050565b612b1a81612b06565b82525050565b5f602082019050612b335f830184612b11565b92915050565b612b4281612a95565b82525050565b5f602082019050612b5b5f830184612b39565b92915050565b5f805f60608486031215612b7857612b77612a37565b5b5f612b8586828701612a81565b9350506020612b9686828701612a81565b9250506040612ba786828701612ab4565b9150509250925092565b5f60ff82169050919050565b612bc681612bb1565b82525050565b5f602082019050612bdf5f830184612bbd565b92915050565b5f819050919050565b612bf781612be5565b82525050565b5f602082019050612c105f830184612bee565b92915050565b5f60208284031215612c2b57612c2a612a37565b5b5f612c3884828501612a81565b91505092915050565b612c4a81612a5a565b82525050565b5f602082019050612c635f830184612c41565b92915050565b5f63ffffffff82169050919050565b612c8181612c69565b82525050565b5f602082019050612c9a5f830184612c78565b92915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612cd481612ca0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d0c81612a95565b82525050565b5f612d1d8383612d03565b60208301905092915050565b5f602082019050919050565b5f612d3f82612cda565b612d498185612ce4565b9350612d5483612cf4565b805f5b83811015612d84578151612d6b8882612d12565b9750612d7683612d29565b925050600181019050612d57565b5085935050505092915050565b5f60e082019050612da45f83018a612ccb565b8181036020830152612db681896129df565b90508181036040830152612dca81886129df565b9050612dd96060830187612b39565b612de66080830186612c41565b612df360a0830185612bee565b81810360c0830152612e058184612d35565b905098975050505050505050565b5f60208284031215612e2857612e27612a37565b5b5f612e3584828501612ab4565b91505092915050565b5f65ffffffffffff82169050919050565b612e5881612e3e565b82525050565b5f602082019050612e715f830184612e4f565b92915050565b612e8081612bb1565b8114612e8a575f80fd5b50565b5f81359050612e9b81612e77565b92915050565b612eaa81612be5565b8114612eb4575f80fd5b50565b5f81359050612ec581612ea1565b92915050565b5f805f805f8060c08789031215612ee557612ee4612a37565b5b5f612ef289828a01612a81565b9650506020612f0389828a01612ab4565b9550506040612f1489828a01612ab4565b9450506060612f2589828a01612e8d565b9350506080612f3689828a01612eb7565b92505060a0612f4789828a01612eb7565b9150509295509295509295565b5f805f805f805f60e0888a031215612f6f57612f6e612a37565b5b5f612f7c8a828b01612a81565b9750506020612f8d8a828b01612a81565b9650506040612f9e8a828b01612ab4565b9550506060612faf8a828b01612ab4565b9450506080612fc08a828b01612e8d565b93505060a0612fd18a828b01612eb7565b92505060c0612fe28a828b01612eb7565b91505092959891949750929550565b5f806040838503121561300757613006612a37565b5b5f61301485828601612a81565b925050602061302585828601612a81565b9150509250929050565b61303881612c69565b8114613042575f80fd5b50565b5f813590506130538161302f565b92915050565b5f806040838503121561306f5761306e612a37565b5b5f61307c85828601612a81565b925050602061308d85828601613045565b9150509250929050565b6130a081612e3e565b82525050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6130d4816130a6565b82525050565b604082015f8201516130ee5f850182613097565b50602082015161310160208501826130cb565b50505050565b5f60408201905061311a5f8301846130da565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061316457607f821691505b60208210810361317757613176613120565b5b50919050565b5f6040820190506131905f830185612b39565b61319d6020830184612e4f565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6080820190506131e45f830187612bee565b6131f16020830186612c41565b6131fe6040830185612b39565b61320b6060830184612b39565b95945050505050565b5f60c0820190506132275f830189612bee565b6132346020830188612c41565b6132416040830187612c41565b61324e6060830186612b39565b61325b6080830185612b39565b61326860a0830184612b39565b979650505050505050565b5f6040820190506132865f830185612c41565b6132936020830184612c41565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132d1826130a6565b91506132dc836130a6565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff81111561330e5761330d61329a565b5b92915050565b5f61331e826130a6565b9150613329836130a6565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff81111561335b5761335a61329a565b5b92915050565b5f6060820190506133745f830186612c41565b6133816020830185612b39565b61338e6040830184612b39565b949350505050565b5f819050919050565b5f819050919050565b5f6133c26133bd6133b884613396565b61339f565b612bb1565b9050919050565b6133d2816133a8565b82525050565b5f6040820190506133eb5f8301856133c9565b6133f86020830184612b39565b9392505050565b5f61340982612a95565b915061341483612a95565b925082820390508181111561342c5761342b61329a565b5b92915050565b5f61343c82612a95565b915061344783612a95565b925082820190508082111561345f5761345e61329a565b5b92915050565b5f6040820190506134785f830185612c41565b6134856020830184612b39565b9392505050565b5f60a08201905061349f5f830188612bee565b6134ac6020830187612bee565b6134b96040830186612bee565b6134c66060830185612b39565b6134d36080830184612c41565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f60408201905061351d5f830185612b39565b61352a6020830184612b39565b9392505050565b5f819050919050565b5f61355461354f61354a84613531565b61339f565b612bb1565b9050919050565b6135648161353a565b82525050565b5f60408201905061357d5f83018561355b565b61358a6020830184612b39565b9392505050565b5f6080820190506135a45f830187612bee565b6135b16020830186612bbd565b6135be6040830185612bee565b6135cb6060830184612bee565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61363882612a95565b915061364383612a95565b925082613653576136526134dd565b5b828204905092915050565b5f819050919050565b5f61368161367c6136778461365e565b61339f565b612bb1565b9050919050565b61369181613667565b82525050565b5f6040820190506136aa5f830185613688565b6136b76020830184612b39565b939250505056fea2646970667358221220f6c0329b83ac0a06de4a5e51209cc62f758ed7cf9482efe80f3079065f202ec764736f6c63430008190033