Files
2025-12-31 21:13:02 -08:00

1 line
210 KiB
JSON

{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"initialBalance","type":"uint256","internalType":"uint256"},{"name":"encryptedBalance","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MINTER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"_allowanceEncrypted","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"allowanceEncrypted","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"permission","type":"tuple","internalType":"struct Permission","components":[{"name":"publicKey","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveEncrypted","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfEncrypted","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"auth","type":"tuple","internalType":"struct Permission","components":[{"name":"publicKey","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintEncrypted","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintEncrypted","inputs":[{"name":"encryptedAmount","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferEncrypted","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"euint32"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferEncrypted","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"encryptedAmount","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromEncrypted","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint32"}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromEncrypted","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"tuple","internalType":"struct Euint32","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"uint256","internalType":"euint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"unwrap","inputs":[{"name":"amount","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"amount","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalEncrypted","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TransferEncrypted","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ErrorInsufficientFunds","inputs":[]},{"type":"error","name":"InvalidEncryptedInput","inputs":[{"name":"got","type":"uint8","internalType":"uint8"},{"name":"expected","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"SecurityZoneOutOfBounds","inputs":[{"name":"value","type":"int32","internalType":"int32"}]},{"type":"error","name":"SignerNotMessageSender","inputs":[]},{"type":"error","name":"SignerNotOwner","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x6101606040526100145f6101dc60201b60201c565b600955348015610022575f5ffd5b5060405161585f38038061585f83398181016040528101906100449190611088565b83836040518060400160405280601181526020017f4c7578464845205065726d697373696f6e0000000000000000000000000000008152506040518060400160405280600381526020017f312e300000000000000000000000000000000000000000000000000000000000815250838381600390816100c39190611347565b5080600490816100d39190611347565b5050506100ea6005836101f460201b90919060201c565b61012081815250506101066006826101f460201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505061014361024160201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050505050610192338361029b60201b60201c565b6101a2338261032060201b60201c565b6101d27f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336103dd60201b60201c565b50505050506119b1565b5f6101ed825f6104d360201b60201c565b9050919050565b5f6020835110156102155761020e836104f360201b60201c565b905061023b565b826102258361055860201b60201c565b5f0190816102339190611347565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e05161010051463060405160200161028095949392919061147c565b60405160208183030381529060405280519060200120905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361030b575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161030291906114cd565b60405180910390fd5b61031c5f838361056160201b60201c565b5050565b5f6103308261077a60201b60201c565b905061037f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826107f960201b60201c565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506103d2600954826107f960201b60201c565b600981905550505050565b5f6103ee838361086060201b60201c565b6104c9576001600a5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506104666108c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506104cd565b5f90505b92915050565b5f5f6104e7846004856108cb60201b60201c565b90508091505092915050565b5f5f829050601f8151111561053f57826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401610536919061152e565b60405180910390fd5b80518161054b9061157b565b5f1c175f1b915050919050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105b1578060025f8282546105a5919061160e565b9250508190555061067f565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561063a578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161063193929190611641565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106c6578060025f8282540392505081905550610710565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161076d9190611676565b60405180910390a3505050565b5f5f600490508060ff16836040015160ff16146107d4578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016107cb92919061169e565b60405180910390fd5b6107f16107e6846109d260201b60201c565b610a1460201b60201c565b915050919050565b5f61080983610aab60201b60201c565b61081f5761081c5f6101dc60201b60201c565b92505b61082e82610aab60201b60201c565b610844576108415f6101dc60201b60201c565b91505b610858600484846008610ac260201b60201c565b905092915050565b5f600a5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff81111561091957610918610dc4565b5b6040519080825280602002602001820160405280156109475781602001602082028036833780820191505090505b5061096a898960ff1661095f8a610bb760201b60201c565b610c0e60201b60201c565b6040518563ffffffff1660e01b815260040161098994939291906117ef565b6020604051808303815f875af11580156109a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c99190611840565b90509392505050565b6109da610d70565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b8152600401610a64929190611922565b6020604051808303815f875af1158015610a80573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa49190611840565b9050919050565b5f610abb82610cca60201b60201c565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd8684610b058888610cd660201b60201c565b5f67ffffffffffffffff811115610b1f57610b1e610dc4565b5b604051908082528060200260200182016040528015610b4d5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610b6d94939291906117ef565b6020604051808303815f875af1158015610b89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bad9190611840565b9050949350505050565b5f5f8260030b1215610c0057816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401610bf7919061196b565b60405180910390fd5b8163ffffffff169050919050565b60605f600367ffffffffffffffff811115610c2c57610c2b610dc4565b5b604051908082528060200260200182016040528015610c5a5781602001602082028036833780820191505090505b50905084815f81518110610c7157610c70611984565b5b6020026020010181815250508381600181518110610c9257610c91611984565b5b6020026020010181815250508281600281518110610cb357610cb2611984565b5b602002602001018181525050809150509392505050565b5f5f8214159050919050565b60605f600267ffffffffffffffff811115610cf457610cf3610dc4565b5b604051908082528060200260200182016040528015610d225781602001602082028036833780820191505090505b50905083815f81518110610d3957610d38611984565b5b6020026020010181815250508281600181518110610d5a57610d59611984565b5b6020026020010181815250508091505092915050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610dfa82610db4565b810181811067ffffffffffffffff82111715610e1957610e18610dc4565b5b80604052505050565b5f610e2b610d9b565b9050610e378282610df1565b919050565b5f67ffffffffffffffff821115610e5657610e55610dc4565b5b610e5f82610db4565b9050602081019050919050565b8281835e5f83830152505050565b5f610e8c610e8784610e3c565b610e22565b905082815260208101848484011115610ea857610ea7610db0565b5b610eb3848285610e6c565b509392505050565b5f82601f830112610ecf57610ece610dac565b5b8151610edf848260208601610e7a565b91505092915050565b5f819050919050565b610efa81610ee8565b8114610f04575f5ffd5b50565b5f81519050610f1581610ef1565b92915050565b5f5ffd5b5f5ffd5b5f60ff82169050919050565b610f3881610f23565b8114610f42575f5ffd5b50565b5f81519050610f5381610f2f565b92915050565b5f67ffffffffffffffff821115610f7357610f72610dc4565b5b610f7c82610db4565b9050602081019050919050565b5f610f9b610f9684610f59565b610e22565b905082815260208101848484011115610fb757610fb6610db0565b5b610fc2848285610e6c565b509392505050565b5f82601f830112610fde57610fdd610dac565b5b8151610fee848260208601610f89565b91505092915050565b5f6080828403121561100c5761100b610f1b565b5b6110166080610e22565b90505f61102584828501610f07565b5f83015250602061103884828501610f45565b602083015250604061104c84828501610f45565b604083015250606082015167ffffffffffffffff8111156110705761106f610f1f565b5b61107c84828501610fca565b60608301525092915050565b5f5f5f5f608085870312156110a05761109f610da4565b5b5f85015167ffffffffffffffff8111156110bd576110bc610da8565b5b6110c987828801610ebb565b945050602085015167ffffffffffffffff8111156110ea576110e9610da8565b5b6110f687828801610ebb565b935050604061110787828801610f07565b925050606085015167ffffffffffffffff81111561112857611127610da8565b5b61113487828801610ff7565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061118e57607f821691505b6020821081036111a1576111a061114a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026112037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826111c8565b61120d86836111c8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61124861124361123e84610ee8565b611225565b610ee8565b9050919050565b5f819050919050565b6112618361122e565b61127561126d8261124f565b8484546111d4565b825550505050565b5f5f905090565b61128c61127d565b611297818484611258565b505050565b5b818110156112ba576112af5f82611284565b60018101905061129d565b5050565b601f8211156112ff576112d0816111a7565b6112d9846111b9565b810160208510156112e8578190505b6112fc6112f4856111b9565b83018261129c565b50505b505050565b5f82821c905092915050565b5f61131f5f1984600802611304565b1980831691505092915050565b5f6113378383611310565b9150826002028217905092915050565b61135082611140565b67ffffffffffffffff81111561136957611368610dc4565b5b6113738254611177565b61137e8282856112be565b5f60209050601f8311600181146113af575f841561139d578287015190505b6113a7858261132c565b86555061140e565b601f1984166113bd866111a7565b5f5b828110156113e4578489015182556001820191506020850194506020810190506113bf565b8683101561140157848901516113fd601f891682611310565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b61142881611416565b82525050565b61143781610ee8565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114668261143d565b9050919050565b6114768161145c565b82525050565b5f60a08201905061148f5f83018861141f565b61149c602083018761141f565b6114a9604083018661141f565b6114b6606083018561142e565b6114c3608083018461146d565b9695505050505050565b5f6020820190506114e05f83018461146d565b92915050565b5f82825260208201905092915050565b5f61150082611140565b61150a81856114e6565b935061151a818560208601610e6c565b61152381610db4565b840191505092915050565b5f6020820190508181035f83015261154681846114f6565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f6115728251611416565b80915050919050565b5f6115858261154e565b8261158f84611558565b905061159a81611567565b925060208210156115da576115d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026111c8565b831692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61161882610ee8565b915061162383610ee8565b925082820190508082111561163b5761163a6115e1565b5b92915050565b5f6060820190506116545f83018661146d565b611661602083018561142e565b61166e604083018461142e565b949350505050565b5f6020820190506116895f83018461142e565b92915050565b61169881610f23565b82525050565b5f6040820190506116b15f83018561168f565b6116be602083018461168f565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208110611703576117026116c5565b5b50565b5f819050611713826116f2565b919050565b5f61172282611706565b9050919050565b61173281611718565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61176a81610ee8565b82525050565b5f61177b8383611761565b60208301905092915050565b5f602082019050919050565b5f61179d82611738565b6117a78185611742565b93506117b283611752565b805f5b838110156117e25781516117c98882611770565b97506117d483611787565b9250506001810190506117b5565b5085935050505092915050565b5f6080820190506118025f83018761168f565b61180f6020830186611729565b81810360408301526118218185611793565b905081810360608301526118358184611793565b905095945050505050565b5f6020828403121561185557611854610da4565b5b5f61186284828501610f07565b91505092915050565b61187481610f23565b82525050565b5f82825260208201905092915050565b5f6118948261154e565b61189e818561187a565b93506118ae818560208601610e6c565b6118b781610db4565b840191505092915050565b5f608083015f8301516118d75f860182611761565b5060208301516118ea602086018261186b565b5060408301516118fd604086018261186b565b5060608301518482036060860152611915828261188a565b9150508091505092915050565b5f6040820190508181035f83015261193a81856118c2565b9050611949602083018461146d565b9392505050565b5f8160030b9050919050565b61196581611950565b82525050565b5f60208201905061197e5f83018461195c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60805160a05160c05160e051610100516101205161014051613e5d611a025f395f611a2a01525f6119ef01525f61284801525f61282701525f61211301525f61216901525f6121920152613e5d5ff3fe608060405234801561000f575f5ffd5b50600436106101e3575f3560e01c80636e0505e11161010d578063a9059cbb116100a0578063d547741f1161006f578063d547741f146105f3578063dd62ed3e1461060f578063e1a136d51461063f578063fe229cbe1461066f576101e3565b8063a9059cbb14610545578063af575a0014610575578063c4224c19146105a5578063d5391393146105d5576101e3565b806395d89b41116100dc57806395d89b41146104d15780639f284be7146104ef578063a0712d681461050b578063a217fddf14610527576101e3565b80636e0505e11461043157806370a082311461044d57806384b0196e1461047d57806391d14854146104a1576101e3565b80632f2ff15d116101855780635b6c6b3e116101545780635b6c6b3e146103995780635fd006b1146103b557806360277204146103d157806363c05a3314610401576101e3565b80632f2ff15d14610313578063313ce5671461032f57806336568abe1461034d5780635356c42914610369576101e3565b806318160ddd116101c157806318160ddd1461026557806323b872dd1461028357806323db9354146102b3578063248a9ca3146102e3576101e3565b806301ffc9a7146101e757806306fdde0314610217578063095ea7b314610235575b5f5ffd5b61020160048036038101906101fc9190612dad565b61069f565b60405161020e9190612df2565b60405180910390f35b61021f610718565b60405161022c9190612e7b565b60405180910390f35b61024f600480360381019061024a9190612f28565b6107a8565b60405161025c9190612df2565b60405180910390f35b61026d6107ca565b60405161027a9190612f75565b60405180910390f35b61029d60048036038101906102989190612f8e565b6107d3565b6040516102aa9190612df2565b60405180910390f35b6102cd60048036038101906102c89190612fde565b610801565b6040516102da9190613055565b60405180910390f35b6102fd60048036038101906102f891906130a1565b610883565b60405161030a91906130db565b60405180910390f35b61032d600480360381019061032891906130f4565b6108a0565b005b6103376108c2565b604051610344919061314d565b60405180910390f35b610367600480360381019061036291906130f4565b6108ca565b005b610383600480360381019061037e9190613188565b610945565b6040516103909190613234565b60405180910390f35b6103b360048036038101906103ae9190613443565b610a3f565b005b6103cf60048036038101906103ca91906134bb565b610a7d565b005b6103eb60048036038101906103e6919061356b565b610a93565b6040516103f89190613234565b60405180910390f35b61041b600480360381019061041691906135c5565b610bba565b6040516104289190612df2565b60405180910390f35b61044b60048036038101906104469190613658565b610be1565b005b61046760048036038101906104629190613683565b610cfe565b6040516104749190612f75565b60405180910390f35b610485610d43565b60405161049897969594939291906137ae565b60405180910390f35b6104bb60048036038101906104b691906130f4565b610de8565b6040516104c89190612df2565b60405180910390f35b6104d9610e4c565b6040516104e69190612e7b565b60405180910390f35b61050960048036038101906105049190613658565b610edc565b005b61052560048036038101906105209190613830565b610fe4565b005b61052f610ff1565b60405161053c91906130db565b60405180910390f35b61055f600480360381019061055a9190612f28565b610ff7565b60405161056c9190612df2565b60405180910390f35b61058f600480360381019061058a9190613885565b611019565b60405161059c9190613055565b60405180910390f35b6105bf60048036038101906105ba91906138d5565b611044565b6040516105cc9190613055565b60405180910390f35b6105dd611058565b6040516105ea91906130db565b60405180910390f35b61060d600480360381019061060891906130f4565b61107c565b005b61062960048036038101906106249190612fde565b61109e565b6040516106369190612f75565b60405180910390f35b61065960048036038101906106549190613913565b611120565b6040516106669190613055565b60405180910390f35b610689600480360381019061068491906135c5565b61115c565b6040516106969190613055565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610711575061071082611180565b5b9050919050565b606060038054610727906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610753906139ac565b801561079e5780601f106107755761010080835404028352916020019161079e565b820191905f5260205f20905b81548152906001019060200180831161078157829003601f168201915b5050505050905090565b5f5f6107b26111e9565b90506107bf8185856111f0565b600191505092915050565b5f600254905090565b5f5f6107dd6111e9565b90506107ea858285611202565b6107f5858585611295565b60019150509392505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f600a5f8381526020019081526020015f20600101549050919050565b6108a982610883565b6108b281611385565b6108bc8383611399565b50505050565b5f6012905090565b6108d26111e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610936576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109408282611483565b505050565b606081610951906139dc565b5f6109a67f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d835f015160405160200161098b9291906139ee565b6040516020818303038152906040528051906020012061156d565b90505f6109b7828460200151611586565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a1e576040517f3093a27700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a34610a2b3388610801565b865f01356115b0565b935050505092915050565b610a697f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610de8565b15610a7957610a7882826115e1565b5b5050565b610a903382610a8b90613a15565b6115e1565b50565b606081835f610aec7f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d845f0151604051602001610ad19291906139ee565b6040516020818303038152906040528051906020012061156d565b90505f610afd828560200151611586565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b64576040517f51c65eae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bae60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054875f01516115b0565b94505050505092915050565b5f610bd73384610bd285610bcd90613a15565b61168c565b6116ff565b6001905092915050565b5f610bf18263ffffffff16611861565b90505f610c4d610c3e60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484611873565b610c475f611861565b846118bc565b9050610c9660075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261191e565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ce36009548261191e565b600981905550610cf9338463ffffffff16611967565b505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6060805f5f5f6060610d546119e6565b610d5c611a21565b46305f5f1b5f67ffffffffffffffff811115610d7b57610d7a613258565b5b604051908082528060200260200182016040528015610da95781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f600a5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060048054610e5b906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610e87906139ac565b8015610ed25780601f10610ea957610100808354040283529160200191610ed2565b820191905f5260205f20905b815481529060010190602001808311610eb557829003601f168201915b5050505050905090565b8063ffffffff16610eec33610cfe565b1015610f24576040517ffda7bbda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f34338263ffffffff16611a5c565b5f610f448263ffffffff16611861565b9050610f8d60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611adb565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610fda60095482611adb565b6009819055505050565b610fee3382611967565b50565b5f5f1b81565b5f5f6110016111e9565b905061100e818585611295565b600191505092915050565b5f5f8290505f61102a863384611b24565b9050611037868683611b5f565b5080925050509392505050565b5f611050338484611b5f565b905092915050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61108582610883565b61108e81611385565b6110988383611483565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f5f6111348361112f90613a15565b61168c565b90505f611142863384611b24565b905061114f868683611b5f565b5080925050509392505050565b5f611178836111738461116e90613a15565b61168c565b611044565b905092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b6111fd8383836001611cd7565b505050565b5f61120d848461109e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561128f5781811015611280578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161127793929190613a27565b60405180910390fd5b61128e84848484035f611cd7565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611305575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112fc9190613a5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611375575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161136c9190613a5c565b60405180910390fd5b611380838383611ea6565b505050565b611396816113916111e9565b6120bf565b50565b5f6113a48383610de8565b611479576001600a5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114166111e9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061147d565b5f90505b92915050565b5f61148e8383610de8565b15611563575f600a5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506115006111e9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611567565b5f90505b92915050565b5f61157f611579612110565b836121c6565b9050919050565b5f5f5f5f6115948686612206565b9250925092506115a4828261225b565b82935050505092915050565b60605f83905080836040516020016115c9929190613a75565b60405160208183030381529060405291505092915050565b5f6115eb8261168c565b905061163460075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611adb565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061168160095482611adb565b600981905550505050565b5f5f600490508060ff16836040015160ff16146116e6578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016116dd929190613a9c565b60405180910390fd5b6116f76116f2846123bd565b6123ff565b915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176f575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016117669190613a5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117df575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016117d69190613a5c565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f61186c825f612496565b9050919050565b5f61187d836124b0565b61188d5761188a5f611861565b92505b611896826124b0565b6118a6576118a35f611861565b91505b6118b46004848460156124c1565b905092915050565b5f6118c6846125b0565b6118d6576118d35f6125c1565b93505b6118df836124b0565b6118ef576118ec5f611861565b92505b6118f8826124b0565b611908576119055f611861565b91505b61191560048585856125d3565b90509392505050565b5f611928836124b0565b611938576119355f611861565b92505b611941826124b0565b6119515761194e5f611861565b91505b61195f6004848460076124c1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d7575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016119ce9190613a5c565b60405180910390fd5b6119e25f8383611ea6565b5050565b6060611a1c60057f00000000000000000000000000000000000000000000000000000000000000006126c490919063ffffffff16565b905090565b6060611a5760067f00000000000000000000000000000000000000000000000000000000000000006126c490919063ffffffff16565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611acc575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611ac39190613a5c565b60405180910390fd5b611ad7825f83611ea6565b5050565b5f611ae5836124b0565b611af557611af25f611861565b92505b611afe826124b0565b611b0e57611b0b5f611861565b91505b611b1c6004848460086124c1565b905092915050565b5f5f611b308585610801565b90505f611b3d8285612771565b9050611b538686611b4e858561191e565b6116ff565b80925050509392505050565b5f5f611bba611bab8460075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ba565b84611bb55f611861565b6118bc565b9050611c0360075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611adb565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c8b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261191e565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d47575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611d3e9190613a5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db7575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611dae9190613a5c565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611ea0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611e979190612f75565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ef6578060025f828254611eea9190613af0565b92505081905550611fc4565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611f7f578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611f7693929190613a27565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200b578060025f8282540392505081905550612055565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b29190612f75565b60405180910390a3505050565b6120c98282610de8565b61210c5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401612103929190613b23565b60405180910390fd5b5050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561218b57507f000000000000000000000000000000000000000000000000000000000000000046145b156121b8577f000000000000000000000000000000000000000000000000000000000000000090506121c3565b6121c0612803565b90505b90565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f6041845103612246575f5f5f602087015192506040870151915060608701515f1a905061223888828585612898565b955095509550505050612254565b5f600285515f1b9250925092505b9250925092565b5f600381111561226e5761226d613b4a565b5b82600381111561228157612280613b4a565b5b03156123b9576001600381111561229b5761229a613b4a565b5b8260038111156122ae576122ad613b4a565b5b036122e5576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156122f9576122f8613b4a565b5b82600381111561230c5761230b613b4a565b5b0361235057805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016123479190612f75565b60405180910390fd5b60038081111561236357612362613b4a565b5b82600381111561237657612375613b4a565b5b036123b857806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016123af91906130db565b60405180910390fd5b5b5050565b6123c5612d1c565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b815260040161244f929190613c2e565b6020604051808303815f875af115801561246b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248f9190613c70565b9050919050565b5f5f6124a48460048561297f565b90508091505092915050565b5f6124ba82612a7a565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd86846124fe8888612a86565b5f67ffffffffffffffff81111561251857612517613258565b5b6040519080825280602002602001820160405280156125465781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016125669493929190613ce1565b6020604051808303815f875af1158015612582573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a69190613c70565b9050949350505050565b5f6125ba82612a7a565b9050919050565b5f6125cc825f612b20565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004612612888888612b49565b5f67ffffffffffffffff81111561262c5761262b613258565b5b60405190808252806020026020018201604052801561265a5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b815260040161267a9493929190613ce1565b6020604051808303815f875af1158015612696573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126ba9190613c70565b9050949350505050565b606060ff5f1b83146126e0576126d983612c05565b905061276b565b8180546126ec906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054612718906139ac565b80156127635780601f1061273a57610100808354040283529160200191612763565b820191905f5260205f20905b81548152906001019060200180831161274657829003601f168201915b505050505090505b92915050565b5f61277b836124b0565b61278b576127885f611861565b92505b612794826124b0565b6127a4576127a15f611861565b91505b6127b26004848460166124c1565b905092915050565b5f6127c4836124b0565b6127d4576127d15f611861565b92505b6127dd826124b0565b6127ed576127ea5f611861565b91505b6127fb6004848460146124c1565b905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161287d959493929190613d32565b60405160208183030381529060405280519060200120905090565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156128d4575f600385925092509250612975565b5f6001888888886040515f81526020016040526040516128f79493929190613d83565b6020604051602081039080840390855afa158015612917573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612968575f60015f5f1b93509350935050612975565b805f5f5f1b935093509350505b9450945094915050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff8111156129cd576129cc613258565b5b6040519080825280602002602001820160405280156129fb5781602001602082028036833780820191505090505b50612a12898960ff16612a0d8a612c77565b612b49565b6040518563ffffffff1660e01b8152600401612a319493929190613ce1565b6020604051808303815f875af1158015612a4d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a719190613c70565b90509392505050565b5f5f8214159050919050565b60605f600267ffffffffffffffff811115612aa457612aa3613258565b5b604051908082528060200260200182016040528015612ad25781602001602082028036833780820191505090505b50905083815f81518110612ae957612ae8613dc6565b5b6020026020010181815250508281600181518110612b0a57612b09613dc6565b5b6020026020010181815250508091505092915050565b5f5f5f90508315612b3057600190505b5f612b3c825f8661297f565b9050809250505092915050565b60605f600367ffffffffffffffff811115612b6757612b66613258565b5b604051908082528060200260200182016040528015612b955781602001602082028036833780820191505090505b50905084815f81518110612bac57612bab613dc6565b5b6020026020010181815250508381600181518110612bcd57612bcc613dc6565b5b6020026020010181815250508281600281518110612bee57612bed613dc6565b5b602002602001018181525050809150509392505050565b60605f612c1183612cce565b90505f602067ffffffffffffffff811115612c2f57612c2e613258565b5b6040519080825280601f01601f191660200182016040528015612c615781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f5f8260030b1215612cc057816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401612cb79190613e0e565b60405180910390fd5b8163ffffffff169050919050565b5f5f60ff835f1c169050601f811115612d13576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d8c81612d58565b8114612d96575f5ffd5b50565b5f81359050612da781612d83565b92915050565b5f60208284031215612dc257612dc1612d50565b5b5f612dcf84828501612d99565b91505092915050565b5f8115159050919050565b612dec81612dd8565b82525050565b5f602082019050612e055f830184612de3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612e4d82612e0b565b612e578185612e15565b9350612e67818560208601612e25565b612e7081612e33565b840191505092915050565b5f6020820190508181035f830152612e938184612e43565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ec482612e9b565b9050919050565b612ed481612eba565b8114612ede575f5ffd5b50565b5f81359050612eef81612ecb565b92915050565b5f819050919050565b612f0781612ef5565b8114612f11575f5ffd5b50565b5f81359050612f2281612efe565b92915050565b5f5f60408385031215612f3e57612f3d612d50565b5b5f612f4b85828601612ee1565b9250506020612f5c85828601612f14565b9150509250929050565b612f6f81612ef5565b82525050565b5f602082019050612f885f830184612f66565b92915050565b5f5f5f60608486031215612fa557612fa4612d50565b5b5f612fb286828701612ee1565b9350506020612fc386828701612ee1565b9250506040612fd486828701612f14565b9150509250925092565b5f5f60408385031215612ff457612ff3612d50565b5b5f61300185828601612ee1565b925050602061301285828601612ee1565b9150509250929050565b5f819050919050565b5f61303f61303a61303584612ef5565b61301c565b612ef5565b9050919050565b61304f81613025565b82525050565b5f6020820190506130685f830184613046565b92915050565b5f819050919050565b6130808161306e565b811461308a575f5ffd5b50565b5f8135905061309b81613077565b92915050565b5f602082840312156130b6576130b5612d50565b5b5f6130c38482850161308d565b91505092915050565b6130d58161306e565b82525050565b5f6020820190506130ee5f8301846130cc565b92915050565b5f5f6040838503121561310a57613109612d50565b5b5f6131178582860161308d565b925050602061312885828601612ee1565b9150509250929050565b5f60ff82169050919050565b61314781613132565b82525050565b5f6020820190506131605f83018461313e565b92915050565b5f5ffd5b5f6040828403121561317f5761317e613166565b5b81905092915050565b5f5f6040838503121561319e5761319d612d50565b5b5f6131ab85828601612ee1565b925050602083013567ffffffffffffffff8111156131cc576131cb612d54565b5b6131d88582860161316a565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f613206826131e2565b61321081856131ec565b9350613220818560208601612e25565b61322981612e33565b840191505092915050565b5f6020820190508181035f83015261324c81846131fc565b905092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61328e82612e33565b810181811067ffffffffffffffff821117156132ad576132ac613258565b5b80604052505050565b5f6132bf612d47565b90506132cb8282613285565b919050565b5f5ffd5b6132dd81613132565b81146132e7575f5ffd5b50565b5f813590506132f8816132d4565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156133205761331f613258565b5b61332982612e33565b9050602081019050919050565b828183375f83830152505050565b5f61335661335184613306565b6132b6565b90508281526020810184848401111561337257613371613302565b5b61337d848285613336565b509392505050565b5f82601f830112613399576133986132fe565b5b81356133a9848260208601613344565b91505092915050565b5f608082840312156133c7576133c6613254565b5b6133d160806132b6565b90505f6133e084828501612f14565b5f8301525060206133f3848285016132ea565b6020830152506040613407848285016132ea565b604083015250606082013567ffffffffffffffff81111561342b5761342a6132d0565b5b61343784828501613385565b60608301525092915050565b5f5f6040838503121561345957613458612d50565b5b5f61346685828601612ee1565b925050602083013567ffffffffffffffff81111561348757613486612d54565b5b613493858286016133b2565b9150509250929050565b5f608082840312156134b2576134b1613166565b5b81905092915050565b5f602082840312156134d0576134cf612d50565b5b5f82013567ffffffffffffffff8111156134ed576134ec612d54565b5b6134f98482850161349d565b91505092915050565b5f6040828403121561351757613516613254565b5b61352160406132b6565b90505f6135308482850161308d565b5f83015250602082013567ffffffffffffffff811115613553576135526132d0565b5b61355f84828501613385565b60208301525092915050565b5f5f6040838503121561358157613580612d50565b5b5f61358e85828601612ee1565b925050602083013567ffffffffffffffff8111156135af576135ae612d54565b5b6135bb85828601613502565b9150509250929050565b5f5f604083850312156135db576135da612d50565b5b5f6135e885828601612ee1565b925050602083013567ffffffffffffffff81111561360957613608612d54565b5b6136158582860161349d565b9150509250929050565b5f63ffffffff82169050919050565b6136378161361f565b8114613641575f5ffd5b50565b5f813590506136528161362e565b92915050565b5f6020828403121561366d5761366c612d50565b5b5f61367a84828501613644565b91505092915050565b5f6020828403121561369857613697612d50565b5b5f6136a584828501612ee1565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6136e2816136ae565b82525050565b6136f181612eba565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61372981612ef5565b82525050565b5f61373a8383613720565b60208301905092915050565b5f602082019050919050565b5f61375c826136f7565b6137668185613701565b935061377183613711565b805f5b838110156137a1578151613788888261372f565b975061379383613746565b925050600181019050613774565b5085935050505092915050565b5f60e0820190506137c15f83018a6136d9565b81810360208301526137d38189612e43565b905081810360408301526137e78188612e43565b90506137f66060830187612f66565b61380360808301866136e8565b61381060a08301856130cc565b81810360c08301526138228184613752565b905098975050505050505050565b5f6020828403121561384557613844612d50565b5b5f61385284828501612f14565b91505092915050565b61386481612ef5565b811461386e575f5ffd5b50565b5f8135905061387f8161385b565b92915050565b5f5f5f6060848603121561389c5761389b612d50565b5b5f6138a986828701612ee1565b93505060206138ba86828701612ee1565b92505060406138cb86828701613871565b9150509250925092565b5f5f604083850312156138eb576138ea612d50565b5b5f6138f885828601612ee1565b925050602061390985828601613871565b9150509250929050565b5f5f5f6060848603121561392a57613929612d50565b5b5f61393786828701612ee1565b935050602061394886828701612ee1565b925050604084013567ffffffffffffffff81111561396957613968612d54565b5b6139758682870161349d565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139c357607f821691505b6020821081036139d6576139d561397f565b5b50919050565b5f6139e73683613502565b9050919050565b5f604082019050613a015f8301856130cc565b613a0e60208301846130cc565b9392505050565b5f613a2036836133b2565b9050919050565b5f606082019050613a3a5f8301866136e8565b613a476020830185612f66565b613a546040830184612f66565b949350505050565b5f602082019050613a6f5f8301846136e8565b92915050565b5f604082019050613a885f830185612f66565b613a9560208301846130cc565b9392505050565b5f604082019050613aaf5f83018561313e565b613abc602083018461313e565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613afa82612ef5565b9150613b0583612ef5565b9250828201905080821115613b1d57613b1c613ac3565b5b92915050565b5f604082019050613b365f8301856136e8565b613b4360208301846130cc565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b613b8081613132565b82525050565b5f82825260208201905092915050565b5f613ba0826131e2565b613baa8185613b86565b9350613bba818560208601612e25565b613bc381612e33565b840191505092915050565b5f608083015f830151613be35f860182613720565b506020830151613bf66020860182613b77565b506040830151613c096040860182613b77565b5060608301518482036060860152613c218282613b96565b9150508091505092915050565b5f6040820190508181035f830152613c468185613bce565b9050613c5560208301846136e8565b9392505050565b5f81519050613c6a81612efe565b92915050565b5f60208284031215613c8557613c84612d50565b5b5f613c9284828501613c5c565b91505092915050565b60208110613cac57613cab613b4a565b5b50565b5f819050613cbc82613c9b565b919050565b5f613ccb82613caf565b9050919050565b613cdb81613cc1565b82525050565b5f608082019050613cf45f83018761313e565b613d016020830186613cd2565b8181036040830152613d138185613752565b90508181036060830152613d278184613752565b905095945050505050565b5f60a082019050613d455f8301886130cc565b613d5260208301876130cc565b613d5f60408301866130cc565b613d6c6060830185612f66565b613d7960808301846136e8565b9695505050505050565b5f608082019050613d965f8301876130cc565b613da3602083018661313e565b613db060408301856130cc565b613dbd60608301846130cc565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b613e0881613df3565b82525050565b5f602082019050613e215f830184613dff565b9291505056fea264697066735822122083d9f26f9cd3b05cd18295ac273ce30b12f9776024103d89a5c77b96966a4ad564736f6c634300081b0033","sourceMap":"241:597:3:-:0;;;812:16:4;826:1;812:13;;;:16;;:::i;:::-;773:55;;364:282:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;483:4;489:6;3428:431:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;917:4:4;923:6;1656:5:17;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;3501:45:26;3532:13;3501:4;:30;;;;:45;;;;:::i;:::-;3493:53;;;;;;3567:51;3601:16;3567:7;:33;;;;:51;;;;:::i;:::-;3556:62;;;;;;3658:4;3642:22;;;;;;3628:36;;;;;;3707:7;3691:25;;;;;;3674:42;;;;;;3744:13;3727:30;;;;;;3792:23;:21;;;:23;;:::i;:::-;3767:48;;;;;;3847:4;3825:27;;;;;;;;;;3428:431;;835:98:4;;507:33:3::1;513:10;525:14;507:5;;;:33;;:::i;:::-;550:44;565:10;577:16;550:14;;;:44;;:::i;:::-;604:35;333:24;628:10;604;;;:35;;:::i;:::-;;364:282:::0;;;;241:597;;127894:104:7;127946:7;127972:19;127982:5;127989:1;127972:9;;;:19;;:::i;:::-;127965:26;;127894:104;;;:::o;2887:340:22:-;2983:11;3032:2;3016:5;3010:19;:24;3006:215;;;3057:20;3071:5;3057:13;;;:20;;:::i;:::-;3050:27;;;;3006:215;3149:5;3108:32;3134:5;3108:25;;;:32;;:::i;:::-;:38;;:46;;;;;;:::i;:::-;;1390:66;3192:17;;3168:42;;2887:340;;;;;:::o;4213:179:26:-;4268:7;2079:95;4326:11;;4339:14;;4355:13;4378:4;4304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;:::o;7362:208:17:-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;;;:35;;:::i;:::-;7362:208;;:::o;4126:273:4:-;4213:14;4230:30;4244:15;4230:13;;;:30;;:::i;:::-;4213:47;;4289:33;4297:12;:16;4310:2;4297:16;;;;;;;;;;;;;;;;4315:6;4289:7;;;:33;;:::i;:::-;4270:12;:16;4283:2;4270:16;;;;;;;;;;;;;;;:52;;;;4355:37;4363:20;;4385:6;4355:7;;;:37;;:::i;:::-;4332:20;:60;;;;4203:196;4126:273;;:::o;6155:316:13:-;6232:4;6253:22;6261:4;6267:7;6253;;;:22;;:::i;:::-;6248:217;;6323:4;6291:6;:12;6298:4;6291:12;;;;;;;;;;;:20;;:29;6312:7;6291:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;6373:12;:10;;;:12;;:::i;:::-;6346:40;;6364:7;6346:40;;6358:4;6346:40;;;;;;;;;;6407:4;6400:11;;;;6248:217;6449:5;6442:12;;6155:316;;;;;:::o;128225:210:7:-;128297:7;128316:10;128329:66;128355:5;7770:1:11;128382:12:7;128329:25;;;:66;;:::i;:::-;128316:79;;128425:2;128405:23;;;128225:210;;;;:::o;1708:286:22:-;1773:11;1796:17;1822:3;1796:30;;1854:2;1840:4;:11;:16;1836:72;;;1893:3;1879:18;;;;;;;;;;;:::i;:::-;;;;;;;;1836:72;1974:4;:11;1965:4;1957:13;;;:::i;:::-;1949:22;;:36;1941:45;;1917:70;;;1708:286;;;:::o;3468:175:23:-;3536:20;3617:10;3607:20;;3468:175;;;:::o;5912:1107:17:-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;115527:335:7:-;115586:7;115605:19;7770:1:11;115605:40:7;;115674:13;115659:28;;:5;:11;;;:28;;;115655:115;;115732:5;:11;;;115745:13;115710:49;;;;;;;;;;;;:::i;:::-;;;;;;;;115655:115;115801:53;115824:29;115847:5;115824:22;;;:29;;:::i;:::-;115801:22;;;:53;;:::i;:::-;115781:74;;;115527:335;;;:::o;5596:342::-;5653:7;5677:12;5685:3;5677:7;;;:12;;:::i;:::-;5672:62;;5711:12;5721:1;5711:9;;;:12;;:::i;:::-;5705:18;;5672:62;5748:12;5756:3;5748:7;;;:12;;:::i;:::-;5743:62;;5782:12;5792:1;5782:9;;;:12;;:::i;:::-;5776:18;;5743:62;5835:95;7770:1:11;5888:3:7;5909;5915:14;5835:17;;;:95;;:::i;:::-;5815:116;;5596:342;;;;:::o;2830:136:13:-;2907:4;2930:6;:12;2937:4;2930:12;;;;;;;;;;;:20;;:29;2951:7;2930:29;;;;;;;;;;;;;;;;;;;;;;;;;2923:36;;2830:136;;;;:::o;656:96:20:-;709:7;735:10;728:17;;656:96;:::o;743:372:9:-;834:7;745:42:10;860:44:9;;;918:6;938:25;991:1;977:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:91;1037:5;1044:6;1007:91;;1052:45;1084:12;1052:31;;;:45;;:::i;:::-;1007:29;;;:91;;:::i;:::-;860:248;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;853:255;;743:372;;;;;:::o;10682:297:11:-;10753:21;;:::i;:::-;10793:179;;;;;;;;10830:5;:12;;;10793:179;;;;10870:5;:18;;;10793:179;;;;;;7770:1;10793:179;;;;;;10946:5;:15;;;10793:179;;;10786:186;;10682:297;;;:::o;5059:165:9:-;5127:7;745:42:10;5153:45:9;;;5199:5;5206:10;5153:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:71;;5059:165;;;:::o;2075:110:7:-;2125:4;2140:42;2179:1;2140:23;;;:42;;:::i;:::-;2133:49;;2075:110;;;:::o;2614:319:9:-;2715:7;745:42:10;2741:44:9;;;2799:10;2823;2847:39;2877:3;2882;2847:29;;;:39;;:::i;:::-;2914:1;2900:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2734:192;;2614:319;;;;;;:::o;629:208:8:-;696:7;727:1;719:5;:9;;;715:77;;;775:5;751:30;;;;;;;;;;;:::i;:::-;;;;;;;;715:77;823:5;808:22;;801:29;;629:208;;;:::o;1745:284::-;1845:16;1873:23;1913:1;1899:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:42;;1937:6;1925;1932:1;1925:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1965:6;1953;1960:1;1953:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1993:6;1981;1988:1;1981:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;2016:6;2009:13;;;1745:284;;;;;:::o;1020:99::-;1080:4;1111:1;1103:4;:9;;1096:16;;1020:99;;;:::o;1440:240::-;1524:16;1552:23;1592:1;1578:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:42;;1616:6;1604;1611:1;1604:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1644:6;1632;1639:1;1632:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1667:6;1660:13;;;1440:240;;;;:::o;241:597:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:33:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:139::-;1699:6;1694:3;1689;1683:23;1740:1;1731:6;1726:3;1722:16;1715:27;1610:139;;;:::o;1755:434::-;1844:5;1869:66;1885:49;1927:6;1885:49;:::i;:::-;1869:66;:::i;:::-;1860:75;;1958:6;1951:5;1944:21;1996:4;1989:5;1985:16;2034:3;2025:6;2020:3;2016:16;2013:25;2010:112;;;2041:79;;:::i;:::-;2010:112;2131:52;2176:6;2171:3;2166;2131:52;:::i;:::-;1850:339;1755:434;;;;;:::o;2209:355::-;2276:5;2325:3;2318:4;2310:6;2306:17;2302:27;2292:122;;2333:79;;:::i;:::-;2292:122;2443:6;2437:13;2468:90;2554:3;2546:6;2539:4;2531:6;2527:17;2468:90;:::i;:::-;2459:99;;2282:282;2209:355;;;;:::o;2570:77::-;2607:7;2636:5;2625:16;;2570:77;;;:::o;2653:122::-;2726:24;2744:5;2726:24;:::i;:::-;2719:5;2716:35;2706:63;;2765:1;2762;2755:12;2706:63;2653:122;:::o;2781:143::-;2838:5;2869:6;2863:13;2854:22;;2885:33;2912:5;2885:33;:::i;:::-;2781:143;;;;:::o;2930:117::-;3039:1;3036;3029:12;3053:117;3162:1;3159;3152:12;3176:86;3211:7;3251:4;3244:5;3240:16;3229:27;;3176:86;;;:::o;3268:118::-;3339:22;3355:5;3339:22;:::i;:::-;3332:5;3329:33;3319:61;;3376:1;3373;3366:12;3319:61;3268:118;:::o;3392:139::-;3447:5;3478:6;3472:13;3463:22;;3494:31;3519:5;3494:31;:::i;:::-;3392:139;;;;:::o;3537:307::-;3598:4;3688:18;3680:6;3677:30;3674:56;;;3710:18;;:::i;:::-;3674:56;3748:29;3770:6;3748:29;:::i;:::-;3740:37;;3832:4;3826;3822:15;3814:23;;3537:307;;;:::o;3850:432::-;3938:5;3963:65;3979:48;4020:6;3979:48;:::i;:::-;3963:65;:::i;:::-;3954:74;;4051:6;4044:5;4037:21;4089:4;4082:5;4078:16;4127:3;4118:6;4113:3;4109:16;4106:25;4103:112;;;4134:79;;:::i;:::-;4103:112;4224:52;4269:6;4264:3;4259;4224:52;:::i;:::-;3944:338;3850:432;;;;;:::o;4301:353::-;4367:5;4416:3;4409:4;4401:6;4397:17;4393:27;4383:122;;4424:79;;:::i;:::-;4383:122;4534:6;4528:13;4559:89;4644:3;4636:6;4629:4;4621:6;4617:17;4559:89;:::i;:::-;4550:98;;4373:281;4301:353;;;;:::o;4682:1126::-;4768:5;4812:4;4800:9;4795:3;4791:19;4787:30;4784:117;;;4820:79;;:::i;:::-;4784:117;4919:21;4935:4;4919:21;:::i;:::-;4910:30;;5001:1;5041:60;5097:3;5088:6;5077:9;5073:22;5041:60;:::i;:::-;5034:4;5027:5;5023:16;5016:86;4950:163;5180:2;5221:58;5275:3;5266:6;5255:9;5251:22;5221:58;:::i;:::-;5214:4;5207:5;5203:16;5196:84;5123:168;5351:2;5392:58;5446:3;5437:6;5426:9;5422:22;5392:58;:::i;:::-;5385:4;5378:5;5374:16;5367:84;5301:161;5547:2;5536:9;5532:18;5526:25;5578:18;5570:6;5567:30;5564:117;;;5600:79;;:::i;:::-;5564:117;5720:69;5785:3;5776:6;5765:9;5761:22;5720:69;:::i;:::-;5713:4;5706:5;5702:16;5695:95;5472:329;4682:1126;;;;:::o;5814:1371::-;5957:6;5965;5973;5981;6030:3;6018:9;6009:7;6005:23;6001:33;5998:120;;;6037:79;;:::i;:::-;5998:120;6178:1;6167:9;6163:17;6157:24;6208:18;6200:6;6197:30;6194:117;;;6230:79;;:::i;:::-;6194:117;6335:74;6401:7;6392:6;6381:9;6377:22;6335:74;:::i;:::-;6325:84;;6128:291;6479:2;6468:9;6464:18;6458:25;6510:18;6502:6;6499:30;6496:117;;;6532:79;;:::i;:::-;6496:117;6637:74;6703:7;6694:6;6683:9;6679:22;6637:74;:::i;:::-;6627:84;;6429:292;6760:2;6786:64;6842:7;6833:6;6822:9;6818:22;6786:64;:::i;:::-;6776:74;;6731:129;6920:2;6909:9;6905:18;6899:25;6951:18;6943:6;6940:30;6937:117;;;6973:79;;:::i;:::-;6937:117;7078:90;7160:7;7151:6;7140:9;7136:22;7078:90;:::i;:::-;7068:100;;6870:308;5814:1371;;;;;;;:::o;7191:99::-;7243:6;7277:5;7271:12;7261:22;;7191:99;;;:::o;7296:180::-;7344:77;7341:1;7334:88;7441:4;7438:1;7431:15;7465:4;7462:1;7455:15;7482:320;7526:6;7563:1;7557:4;7553:12;7543:22;;7610:1;7604:4;7600:12;7631:18;7621:81;;7687:4;7679:6;7675:17;7665:27;;7621:81;7749:2;7741:6;7738:14;7718:18;7715:38;7712:84;;7768:18;;:::i;:::-;7712:84;7533:269;7482:320;;;:::o;7808:141::-;7857:4;7880:3;7872:11;;7903:3;7900:1;7893:14;7937:4;7934:1;7924:18;7916:26;;7808:141;;;:::o;7955:93::-;7992:6;8039:2;8034;8027:5;8023:14;8019:23;8009:33;;7955:93;;;:::o;8054:107::-;8098:8;8148:5;8142:4;8138:16;8117:37;;8054:107;;;;:::o;8167:393::-;8236:6;8286:1;8274:10;8270:18;8309:97;8339:66;8328:9;8309:97;:::i;:::-;8427:39;8457:8;8446:9;8427:39;:::i;:::-;8415:51;;8499:4;8495:9;8488:5;8484:21;8475:30;;8548:4;8538:8;8534:19;8527:5;8524:30;8514:40;;8243:317;;8167:393;;;;;:::o;8566:60::-;8594:3;8615:5;8608:12;;8566:60;;;:::o;8632:142::-;8682:9;8715:53;8733:34;8742:24;8760:5;8742:24;:::i;:::-;8733:34;:::i;:::-;8715:53;:::i;:::-;8702:66;;8632:142;;;:::o;8780:75::-;8823:3;8844:5;8837:12;;8780:75;;;:::o;8861:269::-;8971:39;9002:7;8971:39;:::i;:::-;9032:91;9081:41;9105:16;9081:41;:::i;:::-;9073:6;9066:4;9060:11;9032:91;:::i;:::-;9026:4;9019:105;8937:193;8861:269;;;:::o;9136:73::-;9181:3;9202:1;9195:8;;9136:73;:::o;9215:189::-;9292:32;;:::i;:::-;9333:65;9391:6;9383;9377:4;9333:65;:::i;:::-;9268:136;9215:189;;:::o;9410:186::-;9470:120;9487:3;9480:5;9477:14;9470:120;;;9541:39;9578:1;9571:5;9541:39;:::i;:::-;9514:1;9507:5;9503:13;9494:22;;9470:120;;;9410:186;;:::o;9602:543::-;9703:2;9698:3;9695:11;9692:446;;;9737:38;9769:5;9737:38;:::i;:::-;9821:29;9839:10;9821:29;:::i;:::-;9811:8;9807:44;10004:2;9992:10;9989:18;9986:49;;;10025:8;10010:23;;9986:49;10048:80;10104:22;10122:3;10104:22;:::i;:::-;10094:8;10090:37;10077:11;10048:80;:::i;:::-;9707:431;;9692:446;9602:543;;;:::o;10151:117::-;10205:8;10255:5;10249:4;10245:16;10224:37;;10151:117;;;;:::o;10274:169::-;10318:6;10351:51;10399:1;10395:6;10387:5;10384:1;10380:13;10351:51;:::i;:::-;10347:56;10432:4;10426;10422:15;10412:25;;10325:118;10274:169;;;;:::o;10448:295::-;10524:4;10670:29;10695:3;10689:4;10670:29;:::i;:::-;10662:37;;10732:3;10729:1;10725:11;10719:4;10716:21;10708:29;;10448:295;;;;:::o;10748:1395::-;10865:37;10898:3;10865:37;:::i;:::-;10967:18;10959:6;10956:30;10953:56;;;10989:18;;:::i;:::-;10953:56;11033:38;11065:4;11059:11;11033:38;:::i;:::-;11118:67;11178:6;11170;11164:4;11118:67;:::i;:::-;11212:1;11236:4;11223:17;;11268:2;11260:6;11257:14;11285:1;11280:618;;;;11942:1;11959:6;11956:77;;;12008:9;12003:3;11999:19;11993:26;11984:35;;11956:77;12059:67;12119:6;12112:5;12059:67;:::i;:::-;12053:4;12046:81;11915:222;11250:887;;11280:618;11332:4;11328:9;11320:6;11316:22;11366:37;11398:4;11366:37;:::i;:::-;11425:1;11439:208;11453:7;11450:1;11447:14;11439:208;;;11532:9;11527:3;11523:19;11517:26;11509:6;11502:42;11583:1;11575:6;11571:14;11561:24;;11630:2;11619:9;11615:18;11602:31;;11476:4;11473:1;11469:12;11464:17;;11439:208;;;11675:6;11666:7;11663:19;11660:179;;;11733:9;11728:3;11724:19;11718:26;11776:48;11818:4;11810:6;11806:17;11795:9;11776:48;:::i;:::-;11768:6;11761:64;11683:156;11660:179;11885:1;11881;11873:6;11869:14;11865:22;11859:4;11852:36;11287:611;;;11250:887;;10840:1303;;;10748:1395;;:::o;12149:77::-;12186:7;12215:5;12204:16;;12149:77;;;:::o;12232:118::-;12319:24;12337:5;12319:24;:::i;:::-;12314:3;12307:37;12232:118;;:::o;12356:::-;12443:24;12461:5;12443:24;:::i;:::-;12438:3;12431:37;12356:118;;:::o;12480:126::-;12517:7;12557:42;12550:5;12546:54;12535:65;;12480:126;;;:::o;12612:96::-;12649:7;12678:24;12696:5;12678:24;:::i;:::-;12667:35;;12612:96;;;:::o;12714:118::-;12801:24;12819:5;12801:24;:::i;:::-;12796:3;12789:37;12714:118;;:::o;12838:664::-;13043:4;13081:3;13070:9;13066:19;13058:27;;13095:71;13163:1;13152:9;13148:17;13139:6;13095:71;:::i;:::-;13176:72;13244:2;13233:9;13229:18;13220:6;13176:72;:::i;:::-;13258;13326:2;13315:9;13311:18;13302:6;13258:72;:::i;:::-;13340;13408:2;13397:9;13393:18;13384:6;13340:72;:::i;:::-;13422:73;13490:3;13479:9;13475:19;13466:6;13422:73;:::i;:::-;12838:664;;;;;;;;:::o;13508:222::-;13601:4;13639:2;13628:9;13624:18;13616:26;;13652:71;13720:1;13709:9;13705:17;13696:6;13652:71;:::i;:::-;13508:222;;;;:::o;13736:169::-;13820:11;13854:6;13849:3;13842:19;13894:4;13889:3;13885:14;13870:29;;13736:169;;;;:::o;13911:377::-;13999:3;14027:39;14060:5;14027:39;:::i;:::-;14082:71;14146:6;14141:3;14082:71;:::i;:::-;14075:78;;14162:65;14220:6;14215:3;14208:4;14201:5;14197:16;14162:65;:::i;:::-;14252:29;14274:6;14252:29;:::i;:::-;14247:3;14243:39;14236:46;;14003:285;13911:377;;;;:::o;14294:313::-;14407:4;14445:2;14434:9;14430:18;14422:26;;14494:9;14488:4;14484:20;14480:1;14469:9;14465:17;14458:47;14522:78;14595:4;14586:6;14522:78;:::i;:::-;14514:86;;14294:313;;;;:::o;14613:98::-;14664:6;14698:5;14692:12;14682:22;;14613:98;;;:::o;14717:116::-;14768:4;14791:3;14783:11;;14821:4;14816:3;14812:14;14804:22;;14717:116;;;:::o;14839:154::-;14882:11;14918:29;14942:3;14936:10;14918:29;:::i;:::-;14981:5;14957:29;;14894:99;14839:154;;;:::o;14999:594::-;15083:5;15114:38;15146:5;15114:38;:::i;:::-;15177:5;15204:40;15238:5;15204:40;:::i;:::-;15192:52;;15263:35;15289:8;15263:35;:::i;:::-;15254:44;;15322:2;15314:6;15311:14;15308:278;;;15393:169;15478:66;15448:6;15444:2;15440:15;15437:1;15433:23;15393:169;:::i;:::-;15370:5;15349:227;15340:236;;15308:278;15089:504;;14999:594;;;:::o;15599:180::-;15647:77;15644:1;15637:88;15744:4;15741:1;15734:15;15768:4;15765:1;15758:15;15785:191;15825:3;15844:20;15862:1;15844:20;:::i;:::-;15839:25;;15878:20;15896:1;15878:20;:::i;:::-;15873:25;;15921:1;15918;15914:9;15907:16;;15942:3;15939:1;15936:10;15933:36;;;15949:18;;:::i;:::-;15933:36;15785:191;;;;:::o;15982:442::-;16131:4;16169:2;16158:9;16154:18;16146:26;;16182:71;16250:1;16239:9;16235:17;16226:6;16182:71;:::i;:::-;16263:72;16331:2;16320:9;16316:18;16307:6;16263:72;:::i;:::-;16345;16413:2;16402:9;16398:18;16389:6;16345:72;:::i;:::-;15982:442;;;;;;:::o;16430:222::-;16523:4;16561:2;16550:9;16546:18;16538:26;;16574:71;16642:1;16631:9;16627:17;16618:6;16574:71;:::i;:::-;16430:222;;;;:::o;16658:112::-;16741:22;16757:5;16741:22;:::i;:::-;16736:3;16729:35;16658:112;;:::o;16776:316::-;16889:4;16927:2;16916:9;16912:18;16904:26;;16940:67;17004:1;16993:9;16989:17;16980:6;16940:67;:::i;:::-;17017:68;17081:2;17070:9;17066:18;17057:6;17017:68;:::i;:::-;16776:316;;;;;:::o;17098:180::-;17146:77;17143:1;17136:88;17243:4;17240:1;17233:15;17267:4;17264:1;17257:15;17284:122;17373:2;17366:5;17363:13;17353:47;;17380:18;;:::i;:::-;17353:47;17284:122;:::o;17412:143::-;17465:7;17494:5;17483:16;;17500:49;17543:5;17500:49;:::i;:::-;17412:143;;;:::o;17561:::-;17625:9;17658:40;17692:5;17658:40;:::i;:::-;17645:53;;17561:143;;;:::o;17710:159::-;17811:51;17856:5;17811:51;:::i;:::-;17806:3;17799:64;17710:159;;:::o;17875:114::-;17942:6;17976:5;17970:12;17960:22;;17875:114;;;:::o;17995:184::-;18094:11;18128:6;18123:3;18116:19;18168:4;18163:3;18159:14;18144:29;;17995:184;;;;:::o;18185:132::-;18252:4;18275:3;18267:11;;18305:4;18300:3;18296:14;18288:22;;18185:132;;;:::o;18323:108::-;18400:24;18418:5;18400:24;:::i;:::-;18395:3;18388:37;18323:108;;:::o;18437:179::-;18506:10;18527:46;18569:3;18561:6;18527:46;:::i;:::-;18605:4;18600:3;18596:14;18582:28;;18437:179;;;;:::o;18622:113::-;18692:4;18724;18719:3;18715:14;18707:22;;18622:113;;;:::o;18771:732::-;18890:3;18919:54;18967:5;18919:54;:::i;:::-;18989:86;19068:6;19063:3;18989:86;:::i;:::-;18982:93;;19099:56;19149:5;19099:56;:::i;:::-;19178:7;19209:1;19194:284;19219:6;19216:1;19213:13;19194:284;;;19295:6;19289:13;19322:63;19381:3;19366:13;19322:63;:::i;:::-;19315:70;;19408:60;19461:6;19408:60;:::i;:::-;19398:70;;19254:224;19241:1;19238;19234:9;19229:14;;19194:284;;;19198:14;19494:3;19487:10;;18895:608;;;18771:732;;;;:::o;19509:875::-;19796:4;19834:3;19823:9;19819:19;19811:27;;19848:67;19912:1;19901:9;19897:17;19888:6;19848:67;:::i;:::-;19925:86;20007:2;19996:9;19992:18;19983:6;19925:86;:::i;:::-;20058:9;20052:4;20048:20;20043:2;20032:9;20028:18;20021:48;20086:108;20189:4;20180:6;20086:108;:::i;:::-;20078:116;;20241:9;20235:4;20231:20;20226:2;20215:9;20211:18;20204:48;20269:108;20372:4;20363:6;20269:108;:::i;:::-;20261:116;;19509:875;;;;;;;:::o;20390:351::-;20460:6;20509:2;20497:9;20488:7;20484:23;20480:32;20477:119;;;20515:79;;:::i;:::-;20477:119;20635:1;20660:64;20716:7;20707:6;20696:9;20692:22;20660:64;:::i;:::-;20650:74;;20606:128;20390:351;;;;:::o;20747:102::-;20820:22;20836:5;20820:22;:::i;:::-;20815:3;20808:35;20747:102;;:::o;20855:158::-;20928:11;20962:6;20957:3;20950:19;21002:4;20997:3;20993:14;20978:29;;20855:158;;;;:::o;21019:353::-;21095:3;21123:38;21155:5;21123:38;:::i;:::-;21177:60;21230:6;21225:3;21177:60;:::i;:::-;21170:67;;21246:65;21304:6;21299:3;21292:4;21285:5;21281:16;21246:65;:::i;:::-;21336:29;21358:6;21336:29;:::i;:::-;21331:3;21327:39;21320:46;;21099:273;21019:353;;;;:::o;21432:976::-;21567:3;21603:4;21598:3;21594:14;21692:4;21685:5;21681:16;21675:23;21711:63;21768:4;21763:3;21759:14;21745:12;21711:63;:::i;:::-;21618:166;21874:4;21867:5;21863:16;21857:23;21893:59;21946:4;21941:3;21937:14;21923:12;21893:59;:::i;:::-;21794:168;22045:4;22038:5;22034:16;22028:23;22064:59;22117:4;22112:3;22108:14;22094:12;22064:59;:::i;:::-;21972:161;22220:4;22213:5;22209:16;22203:23;22273:3;22267:4;22263:14;22256:4;22251:3;22247:14;22240:38;22299:71;22365:4;22351:12;22299:71;:::i;:::-;22291:79;;22143:238;22398:4;22391:11;;21572:836;21432:976;;;;:::o;22414:515::-;22601:4;22639:2;22628:9;22624:18;22616:26;;22688:9;22682:4;22678:20;22674:1;22663:9;22659:17;22652:47;22716:124;22835:4;22826:6;22716:124;:::i;:::-;22708:132;;22850:72;22918:2;22907:9;22903:18;22894:6;22850:72;:::i;:::-;22414:515;;;;;:::o;22935:90::-;22970:7;23013:5;23010:1;22999:20;22988:31;;22935:90;;;:::o;23031:112::-;23114:22;23130:5;23114:22;:::i;:::-;23109:3;23102:35;23031:112;;:::o;23149:214::-;23238:4;23276:2;23265:9;23261:18;23253:26;;23289:67;23353:1;23342:9;23338:17;23329:6;23289:67;:::i;:::-;23149:214;;;;:::o;23369:180::-;23417:77;23414:1;23407:88;23514:4;23511:1;23504:15;23538:4;23535:1;23528:15;241:597:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106101e3575f3560e01c80636e0505e11161010d578063a9059cbb116100a0578063d547741f1161006f578063d547741f146105f3578063dd62ed3e1461060f578063e1a136d51461063f578063fe229cbe1461066f576101e3565b8063a9059cbb14610545578063af575a0014610575578063c4224c19146105a5578063d5391393146105d5576101e3565b806395d89b41116100dc57806395d89b41146104d15780639f284be7146104ef578063a0712d681461050b578063a217fddf14610527576101e3565b80636e0505e11461043157806370a082311461044d57806384b0196e1461047d57806391d14854146104a1576101e3565b80632f2ff15d116101855780635b6c6b3e116101545780635b6c6b3e146103995780635fd006b1146103b557806360277204146103d157806363c05a3314610401576101e3565b80632f2ff15d14610313578063313ce5671461032f57806336568abe1461034d5780635356c42914610369576101e3565b806318160ddd116101c157806318160ddd1461026557806323b872dd1461028357806323db9354146102b3578063248a9ca3146102e3576101e3565b806301ffc9a7146101e757806306fdde0314610217578063095ea7b314610235575b5f5ffd5b61020160048036038101906101fc9190612dad565b61069f565b60405161020e9190612df2565b60405180910390f35b61021f610718565b60405161022c9190612e7b565b60405180910390f35b61024f600480360381019061024a9190612f28565b6107a8565b60405161025c9190612df2565b60405180910390f35b61026d6107ca565b60405161027a9190612f75565b60405180910390f35b61029d60048036038101906102989190612f8e565b6107d3565b6040516102aa9190612df2565b60405180910390f35b6102cd60048036038101906102c89190612fde565b610801565b6040516102da9190613055565b60405180910390f35b6102fd60048036038101906102f891906130a1565b610883565b60405161030a91906130db565b60405180910390f35b61032d600480360381019061032891906130f4565b6108a0565b005b6103376108c2565b604051610344919061314d565b60405180910390f35b610367600480360381019061036291906130f4565b6108ca565b005b610383600480360381019061037e9190613188565b610945565b6040516103909190613234565b60405180910390f35b6103b360048036038101906103ae9190613443565b610a3f565b005b6103cf60048036038101906103ca91906134bb565b610a7d565b005b6103eb60048036038101906103e6919061356b565b610a93565b6040516103f89190613234565b60405180910390f35b61041b600480360381019061041691906135c5565b610bba565b6040516104289190612df2565b60405180910390f35b61044b60048036038101906104469190613658565b610be1565b005b61046760048036038101906104629190613683565b610cfe565b6040516104749190612f75565b60405180910390f35b610485610d43565b60405161049897969594939291906137ae565b60405180910390f35b6104bb60048036038101906104b691906130f4565b610de8565b6040516104c89190612df2565b60405180910390f35b6104d9610e4c565b6040516104e69190612e7b565b60405180910390f35b61050960048036038101906105049190613658565b610edc565b005b61052560048036038101906105209190613830565b610fe4565b005b61052f610ff1565b60405161053c91906130db565b60405180910390f35b61055f600480360381019061055a9190612f28565b610ff7565b60405161056c9190612df2565b60405180910390f35b61058f600480360381019061058a9190613885565b611019565b60405161059c9190613055565b60405180910390f35b6105bf60048036038101906105ba91906138d5565b611044565b6040516105cc9190613055565b60405180910390f35b6105dd611058565b6040516105ea91906130db565b60405180910390f35b61060d600480360381019061060891906130f4565b61107c565b005b61062960048036038101906106249190612fde565b61109e565b6040516106369190612f75565b60405180910390f35b61065960048036038101906106549190613913565b611120565b6040516106669190613055565b60405180910390f35b610689600480360381019061068491906135c5565b61115c565b6040516106969190613055565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610711575061071082611180565b5b9050919050565b606060038054610727906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610753906139ac565b801561079e5780601f106107755761010080835404028352916020019161079e565b820191905f5260205f20905b81548152906001019060200180831161078157829003601f168201915b5050505050905090565b5f5f6107b26111e9565b90506107bf8185856111f0565b600191505092915050565b5f600254905090565b5f5f6107dd6111e9565b90506107ea858285611202565b6107f5858585611295565b60019150509392505050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f600a5f8381526020019081526020015f20600101549050919050565b6108a982610883565b6108b281611385565b6108bc8383611399565b50505050565b5f6012905090565b6108d26111e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610936576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109408282611483565b505050565b606081610951906139dc565b5f6109a67f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d835f015160405160200161098b9291906139ee565b6040516020818303038152906040528051906020012061156d565b90505f6109b7828460200151611586565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a1e576040517f3093a27700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a34610a2b3388610801565b865f01356115b0565b935050505092915050565b610a697f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610de8565b15610a7957610a7882826115e1565b5b5050565b610a903382610a8b90613a15565b6115e1565b50565b606081835f610aec7f6bdaeb2d29561f159c7ef98b16b27015fb2aeb87209c7ee656226d912f59927d845f0151604051602001610ad19291906139ee565b6040516020818303038152906040528051906020012061156d565b90505f610afd828560200151611586565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b64576040517f51c65eae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bae60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054875f01516115b0565b94505050505092915050565b5f610bd73384610bd285610bcd90613a15565b61168c565b6116ff565b6001905092915050565b5f610bf18263ffffffff16611861565b90505f610c4d610c3e60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484611873565b610c475f611861565b846118bc565b9050610c9660075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261191e565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ce36009548261191e565b600981905550610cf9338463ffffffff16611967565b505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6060805f5f5f6060610d546119e6565b610d5c611a21565b46305f5f1b5f67ffffffffffffffff811115610d7b57610d7a613258565b5b604051908082528060200260200182016040528015610da95781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f600a5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060048054610e5b906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610e87906139ac565b8015610ed25780601f10610ea957610100808354040283529160200191610ed2565b820191905f5260205f20905b815481529060010190602001808311610eb557829003601f168201915b5050505050905090565b8063ffffffff16610eec33610cfe565b1015610f24576040517ffda7bbda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f34338263ffffffff16611a5c565b5f610f448263ffffffff16611861565b9050610f8d60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611adb565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610fda60095482611adb565b6009819055505050565b610fee3382611967565b50565b5f5f1b81565b5f5f6110016111e9565b905061100e818585611295565b600191505092915050565b5f5f8290505f61102a863384611b24565b9050611037868683611b5f565b5080925050509392505050565b5f611050338484611b5f565b905092915050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61108582610883565b61108e81611385565b6110988383611483565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f5f6111348361112f90613a15565b61168c565b90505f611142863384611b24565b905061114f868683611b5f565b5080925050509392505050565b5f611178836111738461116e90613a15565b61168c565b611044565b905092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b6111fd8383836001611cd7565b505050565b5f61120d848461109e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561128f5781811015611280578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161127793929190613a27565b60405180910390fd5b61128e84848484035f611cd7565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611305575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112fc9190613a5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611375575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161136c9190613a5c565b60405180910390fd5b611380838383611ea6565b505050565b611396816113916111e9565b6120bf565b50565b5f6113a48383610de8565b611479576001600a5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114166111e9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061147d565b5f90505b92915050565b5f61148e8383610de8565b15611563575f600a5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506115006111e9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611567565b5f90505b92915050565b5f61157f611579612110565b836121c6565b9050919050565b5f5f5f5f6115948686612206565b9250925092506115a4828261225b565b82935050505092915050565b60605f83905080836040516020016115c9929190613a75565b60405160208183030381529060405291505092915050565b5f6115eb8261168c565b905061163460075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611adb565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061168160095482611adb565b600981905550505050565b5f5f600490508060ff16836040015160ff16146116e6578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016116dd929190613a9c565b60405180910390fd5b6116f76116f2846123bd565b6123ff565b915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176f575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016117669190613a5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117df575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016117d69190613a5c565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f61186c825f612496565b9050919050565b5f61187d836124b0565b61188d5761188a5f611861565b92505b611896826124b0565b6118a6576118a35f611861565b91505b6118b46004848460156124c1565b905092915050565b5f6118c6846125b0565b6118d6576118d35f6125c1565b93505b6118df836124b0565b6118ef576118ec5f611861565b92505b6118f8826124b0565b611908576119055f611861565b91505b61191560048585856125d3565b90509392505050565b5f611928836124b0565b611938576119355f611861565b92505b611941826124b0565b6119515761194e5f611861565b91505b61195f6004848460076124c1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d7575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016119ce9190613a5c565b60405180910390fd5b6119e25f8383611ea6565b5050565b6060611a1c60057f00000000000000000000000000000000000000000000000000000000000000006126c490919063ffffffff16565b905090565b6060611a5760067f00000000000000000000000000000000000000000000000000000000000000006126c490919063ffffffff16565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611acc575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611ac39190613a5c565b60405180910390fd5b611ad7825f83611ea6565b5050565b5f611ae5836124b0565b611af557611af25f611861565b92505b611afe826124b0565b611b0e57611b0b5f611861565b91505b611b1c6004848460086124c1565b905092915050565b5f5f611b308585610801565b90505f611b3d8285612771565b9050611b538686611b4e858561191e565b6116ff565b80925050509392505050565b5f5f611bba611bab8460075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ba565b84611bb55f611861565b6118bc565b9050611c0360075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482611adb565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c8b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261191e565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d47575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611d3e9190613a5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db7575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611dae9190613a5c565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611ea0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611e979190612f75565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ef6578060025f828254611eea9190613af0565b92505081905550611fc4565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611f7f578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611f7693929190613a27565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200b578060025f8282540392505081905550612055565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b29190612f75565b60405180910390a3505050565b6120c98282610de8565b61210c5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401612103929190613b23565b60405180910390fd5b5050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561218b57507f000000000000000000000000000000000000000000000000000000000000000046145b156121b8577f000000000000000000000000000000000000000000000000000000000000000090506121c3565b6121c0612803565b90505b90565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f6041845103612246575f5f5f602087015192506040870151915060608701515f1a905061223888828585612898565b955095509550505050612254565b5f600285515f1b9250925092505b9250925092565b5f600381111561226e5761226d613b4a565b5b82600381111561228157612280613b4a565b5b03156123b9576001600381111561229b5761229a613b4a565b5b8260038111156122ae576122ad613b4a565b5b036122e5576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156122f9576122f8613b4a565b5b82600381111561230c5761230b613b4a565b5b0361235057805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016123479190612f75565b60405180910390fd5b60038081111561236357612362613b4a565b5b82600381111561237657612375613b4a565b5b036123b857806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016123af91906130db565b60405180910390fd5b5b5050565b6123c5612d1c565b6040518060800160405280835f01518152602001836020015160ff168152602001600460ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b815260040161244f929190613c2e565b6020604051808303815f875af115801561246b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248f9190613c70565b9050919050565b5f5f6124a48460048561297f565b90508091505092915050565b5f6124ba82612a7a565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd86846124fe8888612a86565b5f67ffffffffffffffff81111561251857612517613258565b5b6040519080825280602002602001820160405280156125465781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016125669493929190613ce1565b6020604051808303815f875af1158015612582573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a69190613c70565b9050949350505050565b5f6125ba82612a7a565b9050919050565b5f6125cc825f612b20565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004612612888888612b49565b5f67ffffffffffffffff81111561262c5761262b613258565b5b60405190808252806020026020018201604052801561265a5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b815260040161267a9493929190613ce1565b6020604051808303815f875af1158015612696573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126ba9190613c70565b9050949350505050565b606060ff5f1b83146126e0576126d983612c05565b905061276b565b8180546126ec906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054612718906139ac565b80156127635780601f1061273a57610100808354040283529160200191612763565b820191905f5260205f20905b81548152906001019060200180831161274657829003601f168201915b505050505090505b92915050565b5f61277b836124b0565b61278b576127885f611861565b92505b612794826124b0565b6127a4576127a15f611861565b91505b6127b26004848460166124c1565b905092915050565b5f6127c4836124b0565b6127d4576127d15f611861565b92505b6127dd826124b0565b6127ed576127ea5f611861565b91505b6127fb6004848460146124c1565b905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161287d959493929190613d32565b60405160208183030381529060405280519060200120905090565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156128d4575f600385925092509250612975565b5f6001888888886040515f81526020016040526040516128f79493929190613d83565b6020604051602081039080840390855afa158015612917573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612968575f60015f5f1b93509350935050612975565b805f5f5f1b935093509350505b9450945094915050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff8111156129cd576129cc613258565b5b6040519080825280602002602001820160405280156129fb5781602001602082028036833780820191505090505b50612a12898960ff16612a0d8a612c77565b612b49565b6040518563ffffffff1660e01b8152600401612a319493929190613ce1565b6020604051808303815f875af1158015612a4d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a719190613c70565b90509392505050565b5f5f8214159050919050565b60605f600267ffffffffffffffff811115612aa457612aa3613258565b5b604051908082528060200260200182016040528015612ad25781602001602082028036833780820191505090505b50905083815f81518110612ae957612ae8613dc6565b5b6020026020010181815250508281600181518110612b0a57612b09613dc6565b5b6020026020010181815250508091505092915050565b5f5f5f90508315612b3057600190505b5f612b3c825f8661297f565b9050809250505092915050565b60605f600367ffffffffffffffff811115612b6757612b66613258565b5b604051908082528060200260200182016040528015612b955781602001602082028036833780820191505090505b50905084815f81518110612bac57612bab613dc6565b5b6020026020010181815250508381600181518110612bcd57612bcc613dc6565b5b6020026020010181815250508281600281518110612bee57612bed613dc6565b5b602002602001018181525050809150509392505050565b60605f612c1183612cce565b90505f602067ffffffffffffffff811115612c2f57612c2e613258565b5b6040519080825280601f01601f191660200182016040528015612c615781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f5f8260030b1215612cc057816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401612cb79190613e0e565b60405180910390fd5b8163ffffffff169050919050565b5f5f60ff835f1c169050601f811115612d13576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d8c81612d58565b8114612d96575f5ffd5b50565b5f81359050612da781612d83565b92915050565b5f60208284031215612dc257612dc1612d50565b5b5f612dcf84828501612d99565b91505092915050565b5f8115159050919050565b612dec81612dd8565b82525050565b5f602082019050612e055f830184612de3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612e4d82612e0b565b612e578185612e15565b9350612e67818560208601612e25565b612e7081612e33565b840191505092915050565b5f6020820190508181035f830152612e938184612e43565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ec482612e9b565b9050919050565b612ed481612eba565b8114612ede575f5ffd5b50565b5f81359050612eef81612ecb565b92915050565b5f819050919050565b612f0781612ef5565b8114612f11575f5ffd5b50565b5f81359050612f2281612efe565b92915050565b5f5f60408385031215612f3e57612f3d612d50565b5b5f612f4b85828601612ee1565b9250506020612f5c85828601612f14565b9150509250929050565b612f6f81612ef5565b82525050565b5f602082019050612f885f830184612f66565b92915050565b5f5f5f60608486031215612fa557612fa4612d50565b5b5f612fb286828701612ee1565b9350506020612fc386828701612ee1565b9250506040612fd486828701612f14565b9150509250925092565b5f5f60408385031215612ff457612ff3612d50565b5b5f61300185828601612ee1565b925050602061301285828601612ee1565b9150509250929050565b5f819050919050565b5f61303f61303a61303584612ef5565b61301c565b612ef5565b9050919050565b61304f81613025565b82525050565b5f6020820190506130685f830184613046565b92915050565b5f819050919050565b6130808161306e565b811461308a575f5ffd5b50565b5f8135905061309b81613077565b92915050565b5f602082840312156130b6576130b5612d50565b5b5f6130c38482850161308d565b91505092915050565b6130d58161306e565b82525050565b5f6020820190506130ee5f8301846130cc565b92915050565b5f5f6040838503121561310a57613109612d50565b5b5f6131178582860161308d565b925050602061312885828601612ee1565b9150509250929050565b5f60ff82169050919050565b61314781613132565b82525050565b5f6020820190506131605f83018461313e565b92915050565b5f5ffd5b5f6040828403121561317f5761317e613166565b5b81905092915050565b5f5f6040838503121561319e5761319d612d50565b5b5f6131ab85828601612ee1565b925050602083013567ffffffffffffffff8111156131cc576131cb612d54565b5b6131d88582860161316a565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f613206826131e2565b61321081856131ec565b9350613220818560208601612e25565b61322981612e33565b840191505092915050565b5f6020820190508181035f83015261324c81846131fc565b905092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61328e82612e33565b810181811067ffffffffffffffff821117156132ad576132ac613258565b5b80604052505050565b5f6132bf612d47565b90506132cb8282613285565b919050565b5f5ffd5b6132dd81613132565b81146132e7575f5ffd5b50565b5f813590506132f8816132d4565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156133205761331f613258565b5b61332982612e33565b9050602081019050919050565b828183375f83830152505050565b5f61335661335184613306565b6132b6565b90508281526020810184848401111561337257613371613302565b5b61337d848285613336565b509392505050565b5f82601f830112613399576133986132fe565b5b81356133a9848260208601613344565b91505092915050565b5f608082840312156133c7576133c6613254565b5b6133d160806132b6565b90505f6133e084828501612f14565b5f8301525060206133f3848285016132ea565b6020830152506040613407848285016132ea565b604083015250606082013567ffffffffffffffff81111561342b5761342a6132d0565b5b61343784828501613385565b60608301525092915050565b5f5f6040838503121561345957613458612d50565b5b5f61346685828601612ee1565b925050602083013567ffffffffffffffff81111561348757613486612d54565b5b613493858286016133b2565b9150509250929050565b5f608082840312156134b2576134b1613166565b5b81905092915050565b5f602082840312156134d0576134cf612d50565b5b5f82013567ffffffffffffffff8111156134ed576134ec612d54565b5b6134f98482850161349d565b91505092915050565b5f6040828403121561351757613516613254565b5b61352160406132b6565b90505f6135308482850161308d565b5f83015250602082013567ffffffffffffffff811115613553576135526132d0565b5b61355f84828501613385565b60208301525092915050565b5f5f6040838503121561358157613580612d50565b5b5f61358e85828601612ee1565b925050602083013567ffffffffffffffff8111156135af576135ae612d54565b5b6135bb85828601613502565b9150509250929050565b5f5f604083850312156135db576135da612d50565b5b5f6135e885828601612ee1565b925050602083013567ffffffffffffffff81111561360957613608612d54565b5b6136158582860161349d565b9150509250929050565b5f63ffffffff82169050919050565b6136378161361f565b8114613641575f5ffd5b50565b5f813590506136528161362e565b92915050565b5f6020828403121561366d5761366c612d50565b5b5f61367a84828501613644565b91505092915050565b5f6020828403121561369857613697612d50565b5b5f6136a584828501612ee1565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6136e2816136ae565b82525050565b6136f181612eba565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61372981612ef5565b82525050565b5f61373a8383613720565b60208301905092915050565b5f602082019050919050565b5f61375c826136f7565b6137668185613701565b935061377183613711565b805f5b838110156137a1578151613788888261372f565b975061379383613746565b925050600181019050613774565b5085935050505092915050565b5f60e0820190506137c15f83018a6136d9565b81810360208301526137d38189612e43565b905081810360408301526137e78188612e43565b90506137f66060830187612f66565b61380360808301866136e8565b61381060a08301856130cc565b81810360c08301526138228184613752565b905098975050505050505050565b5f6020828403121561384557613844612d50565b5b5f61385284828501612f14565b91505092915050565b61386481612ef5565b811461386e575f5ffd5b50565b5f8135905061387f8161385b565b92915050565b5f5f5f6060848603121561389c5761389b612d50565b5b5f6138a986828701612ee1565b93505060206138ba86828701612ee1565b92505060406138cb86828701613871565b9150509250925092565b5f5f604083850312156138eb576138ea612d50565b5b5f6138f885828601612ee1565b925050602061390985828601613871565b9150509250929050565b5f5f5f6060848603121561392a57613929612d50565b5b5f61393786828701612ee1565b935050602061394886828701612ee1565b925050604084013567ffffffffffffffff81111561396957613968612d54565b5b6139758682870161349d565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139c357607f821691505b6020821081036139d6576139d561397f565b5b50919050565b5f6139e73683613502565b9050919050565b5f604082019050613a015f8301856130cc565b613a0e60208301846130cc565b9392505050565b5f613a2036836133b2565b9050919050565b5f606082019050613a3a5f8301866136e8565b613a476020830185612f66565b613a546040830184612f66565b949350505050565b5f602082019050613a6f5f8301846136e8565b92915050565b5f604082019050613a885f830185612f66565b613a9560208301846130cc565b9392505050565b5f604082019050613aaf5f83018561313e565b613abc602083018461313e565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613afa82612ef5565b9150613b0583612ef5565b9250828201905080821115613b1d57613b1c613ac3565b5b92915050565b5f604082019050613b365f8301856136e8565b613b4360208301846130cc565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b613b8081613132565b82525050565b5f82825260208201905092915050565b5f613ba0826131e2565b613baa8185613b86565b9350613bba818560208601612e25565b613bc381612e33565b840191505092915050565b5f608083015f830151613be35f860182613720565b506020830151613bf66020860182613b77565b506040830151613c096040860182613b77565b5060608301518482036060860152613c218282613b96565b9150508091505092915050565b5f6040820190508181035f830152613c468185613bce565b9050613c5560208301846136e8565b9392505050565b5f81519050613c6a81612efe565b92915050565b5f60208284031215613c8557613c84612d50565b5b5f613c9284828501613c5c565b91505092915050565b60208110613cac57613cab613b4a565b5b50565b5f819050613cbc82613c9b565b919050565b5f613ccb82613caf565b9050919050565b613cdb81613cc1565b82525050565b5f608082019050613cf45f83018761313e565b613d016020830186613cd2565b8181036040830152613d138185613752565b90508181036060830152613d278184613752565b905095945050505050565b5f60a082019050613d455f8301886130cc565b613d5260208301876130cc565b613d5f60408301866130cc565b613d6c6060830185612f66565b613d7960808301846136e8565b9695505050505050565b5f608082019050613d965f8301876130cc565b613da3602083018661313e565b613db060408301856130cc565b613dbd60608301846130cc565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b613e0881613df3565b82525050565b5f602082019050613e215f830184613dff565b9291505056fea264697066735822122083d9f26f9cd3b05cd18295ac273ce30b12f9776024103d89a5c77b96966a4ad564736f6c634300081b0033","sourceMap":"241:597:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:202:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:89:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2803:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;939:147:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3786:120:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4202:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2688:82:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5304:245:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1091:267:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;652:184:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3996:124:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5362:235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1364:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3405:500;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2933:116:17;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:557:26;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;2830:136:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:93:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2793:379:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3911:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2196:49:13;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3244:178:17;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:267:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4666:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;295:62:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4618:138:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3455:140:17;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2496:291:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4405:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2541:202:13;2626:4;2664:32;2649:47;;;:11;:47;;;;:87;;;;2700:36;2724:11;2700:23;:36::i;:::-;2649:87;2642:94;;2541:202;;;:::o;1760:89:17:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;3991:13;4007:12;:10;:12::i;:::-;3991:28;;4029:31;4038:5;4045:7;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;:::o;2803:97::-;2855:7;2881:12;;2874:19;;2803:97;:::o;4680:244::-;4767:4;4783:15;4801:12;:10;:12::i;:::-;4783:30;;4823:37;4839:4;4845:7;4854:5;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;:::o;939:147:4:-;1029:7;1055:8;:15;1064:5;1055:15;;;;;;;;;;;;;;;:24;1071:7;1055:24;;;;;;;;;;;;;;;;1048:31;;939:147;;;;:::o;3786:120:13:-;3851:7;3877:6;:12;3884:4;3877:12;;;;;;;;;;;:22;;;3870:29;;3786:120;;;:::o;4202:136::-;4276:18;4289:4;4276:12;:18::i;:::-;2473:16;2484:4;2473:10;:16::i;:::-;4306:25:::1;4317:4;4323:7;4306:10;:25::i;:::-;;4202:136:::0;;;:::o;2688:82:17:-;2737:5;2761:2;2754:9;;2688:82;:::o;5304:245:13:-;5419:12;:10;:12::i;:::-;5397:34;;:18;:34;;;5393:102;;5454:30;;;;;;;;;;;;;;5393:102;5505:37;5517:4;5523:18;5505:11;:37::i;:::-;;5304:245;;:::o;1091:267:4:-;1242:12;1221:10;1147:385:12;;;:::i;:::-;1207:14;1224:141;1275:44;1333:10;:20;;;1251:112;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1241:123;;;;;;1224:16;:141::i;:::-;1207:158;;1375:14;1392:43;1406:6;1414:10;:20;;;1392:13;:43::i;:::-;1375:60;;1459:10;1449:20;;:6;:20;;;1445:69;;1490:24;;;;;;;;;;;;;;1445:69;1273:78:4::1;1288:40;1308:10;1320:7;1288:19;:40::i;:::-;1330:10;:20;;;1273:14;:78::i;:::-;1266:85;;1197:335:12::0;;1091:267:4;;;;;:::o;652:184:3:-;738:32;333:24;759:10;738:7;:32::i;:::-;734:96;;;786:33;801:9;812:6;786:14;:33::i;:::-;734:96;652:184;;:::o;3996:124:4:-;4070:43;4085:10;4097:15;4070:43;;;:::i;:::-;:14;:43::i;:::-;3996:124;:::o;5362:235::-;5503:12;5479:4;5485:7;1915:14:12;1932:141;1983:44;2041:10;:20;;;1959:112;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1949:123;;;;;;1932:16;:141::i;:::-;1915:158;;2083:14;2100:43;2114:6;2122:10;:20;;;2100:13;:43::i;:::-;2083:60;;2167:5;2157:15;;:6;:15;;;2153:56;;2193:16;;;;;;;;;;;;;;2153:56;5534::4::1;5549:12;:24;5562:10;5549:24;;;;;;;;;;;;;;;;5575:4;:14;;;5534;:56::i;:::-;5527:63;;1905:322:12::0;;5362:235:4;;;;;;:::o;1364:186::-;1455:4;1471:51;1480:10;1492:7;1501:20;1515:5;1501:20;;;:::i;:::-;:13;:20::i;:::-;1471:8;:51::i;:::-;1539:4;1532:11;;1364:186;;;;:::o;3405:500::-;3453:17;3473:21;3487:6;3473:21;;:13;:21::i;:::-;3453:41;;3505:22;3530:84;3541:43;3548:12;:24;3561:10;3548:24;;;;;;;;;;;;;;;;3574:9;3541:6;:43::i;:::-;3586:16;3600:1;3586:13;:16::i;:::-;3604:9;3530:10;:84::i;:::-;3505:109;;3652:49;3660:12;:24;3673:10;3660:24;;;;;;;;;;;;;;;;3686:14;3652:7;:49::i;:::-;3625:12;:24;3638:10;3625:24;;;;;;;;;;;;;;;:76;;;;3734:45;3742:20;;3764:14;3734:7;:45::i;:::-;3711:20;:68;;;;3873:25;3879:10;3891:6;3873:25;;:5;:25::i;:::-;3443:462;;3405:500;:::o;2933:116:17:-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;5228:557:26:-;5326:13;5353:18;5385:21;5420:15;5449:25;5488:12;5514:27;5617:13;:11;:13::i;:::-;5644:16;:14;:16::i;:::-;5674:13;5709:4;5736:1;5728:10;;5766:1;5752:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5566:212;;;;;;;;;;;;;;;;;;;;;5228:557;;;;;;;:::o;2830:136:13:-;2907:4;2930:6;:12;2937:4;2930:12;;;;;;;;;;;:20;;:29;2951:7;2930:29;;;;;;;;;;;;;;;;;;;;;;;;;2923:36;;2830:136;;;;:::o;1962:93:17:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;2793:379:4:-;2867:6;2843:30;;:21;2853:10;2843:9;:21::i;:::-;:30;2839:92;;;2896:24;;;;;;;;;;;;;;2839:92;2941:25;2947:10;2959:6;2941:25;;:5;:25::i;:::-;2976:15;2994:21;3008:6;2994:21;;:13;:21::i;:::-;2976:39;;3052:42;3060:12;:24;3073:10;3060:24;;;;;;;;;;;;;;;;3086:7;3052;:42::i;:::-;3025:12;:24;3038:10;3025:24;;;;;;;;;;;;;;;:69;;;;3127:38;3135:20;;3157:7;3127;:38::i;:::-;3104:20;:61;;;;2829:343;2793:379;:::o;3911:79::-;3958:25;3964:10;3976:6;3958:5;:25::i;:::-;3911:79;:::o;2196:49:13:-;2241:4;2196:49;;;:::o;3244:178:17:-;3313:4;3329:13;3345:12;:10;:12::i;:::-;3329:28;;3367:27;3377:5;3384:2;3388:5;3367:9;:27::i;:::-;3411:4;3404:11;;;3244:178;;;;:::o;2223:267:4:-;2319:7;2338:11;2352:5;2338:19;;2367:13;2383:38;2399:4;2405:10;2417:3;2383:15;:38::i;:::-;2367:54;;2431:30;2445:4;2451:2;2455:5;2431:13;:30::i;:::-;;2478:5;2471:12;;;;2223:267;;;;;:::o;4666:141::-;4737:7;4763:37;4777:10;4789:2;4793:6;4763:13;:37::i;:::-;4756:44;;4666:141;;;;:::o;295:62:3:-;333:24;295:62;:::o;4618:138:13:-;4693:18;4706:4;4693:12;:18::i;:::-;2473:16;2484:4;2473:10;:16::i;:::-;4723:26:::1;4735:4;4741:7;4723:11;:26::i;:::-;;4618:138:::0;;;:::o;3455:140:17:-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;2496:291:4:-;2601:7;2620:11;2634:20;2648:5;2634:20;;;:::i;:::-;:13;:20::i;:::-;2620:34;;2664:13;2680:38;2696:4;2702:10;2714:3;2680:15;:38::i;:::-;2664:54;;2728:30;2742:4;2748:2;2752:5;2728:13;:30::i;:::-;;2775:5;2768:12;;;;2496:291;;;;;:::o;4405:175::-;4494:7;4520:53;4538:2;4542:30;4556:15;4542:30;;;:::i;:::-;:13;:30::i;:::-;4520:17;:53::i;:::-;4513:60;;4405:175;;;;:::o;730:146:28:-;806:4;844:25;829:40;;;:11;:40;;;;822:47;;730:146;;;:::o;656:96:20:-;709:7;735:10;728:17;;656:96;:::o;8630:128:17:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10319:476::-;10418:24;10445:25;10455:5;10462:7;10445:9;:25::i;:::-;10418:52;;10503:17;10484:16;:36;10480:309;;;10559:5;10540:16;:24;10536:130;;;10618:7;10627:16;10645:5;10591:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10536:130;10707:57;10716:5;10723:7;10751:5;10732:16;:24;10758:5;10707:8;:57::i;:::-;10480:309;10408:387;10319:476;;;:::o;5297:300::-;5396:1;5380:18;;:4;:18;;;5376:86;;5448:1;5421:30;;;;;;;;;;;:::i;:::-;;;;;;;;5376:86;5489:1;5475:16;;:2;:16;;;5471:86;;5543:1;5514:32;;;;;;;;;;;:::i;:::-;;;;;;;;5471:86;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;:::-;5297:300;;;:::o;3175:103:13:-;3241:30;3252:4;3258:12;:10;:12::i;:::-;3241:10;:30::i;:::-;3175:103;:::o;6155:316::-;6232:4;6253:22;6261:4;6267:7;6253;:22::i;:::-;6248:217;;6323:4;6291:6;:12;6298:4;6291:12;;;;;;;;;;;:20;;:29;6312:7;6291:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;6373:12;:10;:12::i;:::-;6346:40;;6364:7;6346:40;;6358:4;6346:40;;;;;;;;;;6407:4;6400:11;;;;6248:217;6449:5;6442:12;;6155:316;;;;;:::o;6708:317::-;6786:4;6806:22;6814:4;6820:7;6806;:22::i;:::-;6802:217;;;6876:5;6844:6;:12;6851:4;6844:12;;;;;;;;;;;:20;;:29;6865:7;6844:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;6927:12;:10;:12::i;:::-;6900:40;;6918:7;6900:40;;6912:4;6900:40;;;;;;;;;;6961:4;6954:11;;;;6802:217;7003:5;6996:12;;6708:317;;;;;:::o;5017:176:26:-;5094:7;5120:66;5153:20;:18;:20::i;:::-;5175:10;5120:32;:66::i;:::-;5113:73;;5017:176;;;:::o;3714:255:25:-;3792:7;3812:17;3831:18;3851:16;3871:27;3882:4;3888:9;3871:10;:27::i;:::-;3811:87;;;;;;3908:28;3920:5;3927:8;3908:11;:28::i;:::-;3953:9;3946:16;;;;;3714:255;;;;:::o;154592:190:7:-;154670:12;154694;154724:5;154694:36;;154758:4;154764:10;154747:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;154740:35;;;154592:190;;;;:::o;4126:273:4:-;4213:14;4230:30;4244:15;4230:13;:30::i;:::-;4213:47;;4289:33;4297:12;:16;4310:2;4297:16;;;;;;;;;;;;;;;;4315:6;4289:7;:33::i;:::-;4270:12;:16;4283:2;4270:16;;;;;;;;;;;;;;;:52;;;;4355:37;4363:20;;4385:6;4355:7;:37::i;:::-;4332:20;:60;;;;4203:196;4126:273;;:::o;115527:335:7:-;115586:7;115605:19;7770:1:11;115605:40:7;;115674:13;115659:28;;:5;:11;;;:28;;;115655:115;;115732:5;:11;;;115745:13;115710:49;;;;;;;;;;;;:::i;:::-;;;;;;;;115655:115;115801:53;115824:29;115847:5;115824:22;:29::i;:::-;115801:22;:53::i;:::-;115781:74;;;115527:335;;;:::o;1556:320:4:-;1661:1;1644:19;;:5;:19;;;1640:89;;1715:1;1686:32;;;;;;;;;;;:::i;:::-;;;;;;;;1640:89;1761:1;1742:21;;:7;:21;;;1738:90;;1814:1;1786:31;;;;;;;;;;;:::i;:::-;;;;;;;;1738:90;1864:5;1837:8;:15;1846:5;1837:15;;;;;;;;;;;;;;;:24;1853:7;1837:24;;;;;;;;;;;;;;;:32;;;;1556:320;;;:::o;127894:104:7:-;127946:7;127972:19;127982:5;127989:1;127972:9;:19::i;:::-;127965:26;;127894:104;;;:::o;31097:336::-;31153:5;31175:12;31183:3;31175:7;:12::i;:::-;31170:62;;31209:12;31219:1;31209:9;:12::i;:::-;31203:18;;31170:62;31246:12;31254:3;31246:7;:12::i;:::-;31241:62;;31280:12;31290:1;31280:9;:12::i;:::-;31274:18;;31241:62;31331:94;7770:1:11;31384:3:7;31405;31411:13;31331:17;:94::i;:::-;31313:113;;31097:336;;;;:::o;98634:468::-;98714:7;98738:15;98746:6;98738:7;:15::i;:::-;98733:70;;98778:14;98786:5;98778:7;:14::i;:::-;98769:23;;98733:70;98817:15;98825:6;98817:7;:15::i;:::-;98812:68;;98857:12;98867:1;98857:9;:12::i;:::-;98848:21;;98812:68;98894:15;98902:6;98894:7;:15::i;:::-;98889:68;;98934:12;98944:1;98934:9;:12::i;:::-;98925:21;;98889:68;98987:107;7770:1:11;99038:6:7;99062;99086;98987:17;:107::i;:::-;98967:128;;98634:468;;;;;:::o;12990:342::-;13047:7;13071:12;13079:3;13071:7;:12::i;:::-;13066:62;;13105:12;13115:1;13105:9;:12::i;:::-;13099:18;;13066:62;13142:12;13150:3;13142:7;:12::i;:::-;13137:62;;13176:12;13186:1;13176:9;:12::i;:::-;13170:18;;13137:62;13229:95;7770:1:11;13282:3:7;13303;13309:14;13229:17;:95::i;:::-;13209:116;;12990:342;;;;:::o;7362:208:17:-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;6105:126:26:-;6151:13;6183:41;6210:13;6183:5;:26;;:41;;;;:::i;:::-;6176:48;;6105:126;:::o;6557:135::-;6606:13;6638:47;6668:16;6638:8;:29;;:47;;;;:::i;:::-;6631:54;;6557:135;:::o;7888:206:17:-;7977:1;7958:21;;:7;:21;;;7954:89;;8029:1;8002:30;;;;;;;;;;;:::i;:::-;;;;;;;;7954:89;8052:35;8060:7;8077:1;8081:5;8052:7;:35::i;:::-;7888:206;;:::o;5596:342:7:-;5653:7;5677:12;5685:3;5677:7;:12::i;:::-;5672:62;;5711:12;5721:1;5711:9;:12::i;:::-;5705:18;;5672:62;5748:12;5756:3;5748:7;:12::i;:::-;5743:62;;5782:12;5792:1;5782:9;:12::i;:::-;5776:18;;5743:62;5835:95;7770:1:11;5888:3:7;5909;5915:14;5835:17;:95::i;:::-;5815:116;;5596:342;;;;:::o;1882:335:4:-;1980:7;1999:24;2026:35;2046:5;2053:7;2026:19;:35::i;:::-;1999:62;;2071:13;2087:32;2095:16;2113:5;2087:7;:32::i;:::-;2071:48;;2129:58;2138:5;2145:7;2154:32;2162:16;2180:5;2154:7;:32::i;:::-;2129:8;:58::i;:::-;2205:5;2198:12;;;;1882:335;;;;;:::o;4851:505::-;4934:7;5004:20;5027:72;5038:34;5045:6;5053:12;:18;5066:4;5053:18;;;;;;;;;;;;;;;;5038:6;:34::i;:::-;5074:6;5082:16;5096:1;5082:13;:16::i;:::-;5027:10;:72::i;:::-;5004:95;;5208:39;5216:12;:16;5229:2;5216:16;;;;;;;;;;;;;;;;5234:12;5208:7;:39::i;:::-;5189:12;:16;5202:2;5189:16;;;;;;;;;;;;;;;:58;;;;5278:41;5286:12;:18;5299:4;5286:18;;;;;;;;;;;;;;;;5306:12;5278:7;:41::i;:::-;5257:12;:18;5270:4;5257:18;;;;;;;;;;;;;;;:62;;;;5337:12;5330:19;;;4851:505;;;;;:::o;9605:432:17:-;9734:1;9717:19;;:5;:19;;;9713:89;;9788:1;9759:32;;;;;;;;;;;:::i;:::-;;;;;;;;9713:89;9834:1;9815:21;;:7;:21;;;9811:90;;9887:1;9859:31;;;;;;;;;;;:::i;:::-;;;;;;;;9811:90;9940:5;9910:11;:18;9922:5;9910:18;;;;;;;;;;;;;;;:27;9929:7;9910:27;;;;;;;;;;;;;;;:35;;;;9959:9;9955:76;;;10005:7;9989:31;;9998:5;9989:31;;;10014:5;9989:31;;;;;;:::i;:::-;;;;;;;;9955:76;9605:432;;;;:::o;5912:1107::-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;3408:197:13:-;3496:22;3504:4;3510:7;3496;:22::i;:::-;3491:108;;3574:7;3583:4;3541:47;;;;;;;;;;;;:::i;:::-;;;;;;;;3491:108;3408:197;;:::o;3945:262:26:-;3998:7;4038:11;4021:28;;4029:4;4021:28;;;:63;;;;;4070:14;4053:13;:31;4021:63;4017:184;;;4107:22;4100:29;;;;4017:184;4167:23;:21;:23::i;:::-;4160:30;;3945:262;;:::o;3874:374:27:-;3967:14;4049:4;4043:11;4079:10;4074:3;4067:23;4126:15;4119:4;4114:3;4110:14;4103:39;4178:10;4171:4;4166:3;4162:14;4155:34;4227:4;4222:3;4212:20;4202:30;;4018:224;3874:374;;;;:::o;2129:778:25:-;2232:17;2251:16;2269:14;2319:2;2299:9;:16;:22;2295:606;;2337:9;2360;2383:7;2604:4;2593:9;2589:20;2583:27;2578:32;;2653:4;2642:9;2638:20;2632:27;2627:32;;2710:4;2699:9;2695:20;2689:27;2686:1;2681:36;2676:41;;2751:25;2762:4;2768:1;2771;2774;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;2823:1;2827:35;2872:9;:16;2864:25;;2807:83;;;;;;2129:778;;;;;;:::o;7280:532::-;7375:20;7366:29;;;;;;;;:::i;:::-;;:5;:29;;;;;;;;:::i;:::-;;;7362:444;7411:7;7362:444;7471:29;7462:38;;;;;;;;:::i;:::-;;:5;:38;;;;;;;;:::i;:::-;;;7458:348;;7523:23;;;;;;;;;;;;;;7458:348;7576:35;7567:44;;;;;;;;:::i;:::-;;:5;:44;;;;;;;;:::i;:::-;;;7563:243;;7670:8;7662:17;;7634:46;;;;;;;;;;;:::i;:::-;;;;;;;;7563:243;7710:30;7701:39;;;;;;;;:::i;:::-;;:5;:39;;;;;;;;:::i;:::-;;;7697:109;;7786:8;7763:32;;;;;;;;;;;:::i;:::-;;;;;;;;7697:109;7280:532;;;:::o;10682:297:11:-;10753:21;;:::i;:::-;10793:179;;;;;;;;10830:5;:12;;;10793:179;;;;10870:5;:18;;;10793:179;;;;;;7770:1;10793:179;;;;;;10946:5;:15;;;10793:179;;;10786:186;;10682:297;;;:::o;5059:165:9:-;5127:7;745:42:10;5153:45:9;;;5199:5;5206:10;5153:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:71;;5059:165;;;:::o;128225:210:7:-;128297:7;128316:10;128329:66;128355:5;7770:1:11;128382:12:7;128329:25;:66::i;:::-;128316:79;;128425:2;128405:23;;;128225:210;;;;:::o;2075:110::-;2125:4;2140:42;2179:1;2140:23;:42::i;:::-;2133:49;;2075:110;;;:::o;2614:319:9:-;2715:7;745:42:10;2741:44:9;;;2799:10;2823;2847:39;2877:3;2882;2847:29;:39::i;:::-;2914:1;2900:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2734:192;;2614:319;;;;;;:::o;1736:106:7:-;1784:4;1799:40;1836:1;1799:23;:40::i;:::-;1792:47;;1736:106;;;:::o;125538:95::-;125585:5;125609:17;125617:5;125624:1;125609:7;:17::i;:::-;125602:24;;125538:95;;;:::o;1956:343:9:-;2058:7;745:42:10;2084:44:9;;;2142:10;2166:17;2197:55;2227:7;2236:6;2244:7;2197:29;:55::i;:::-;2280:1;2266:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:208;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2077:215;;1956:343;;;;;;:::o;3368:267:22:-;3462:13;1390:66;3520:17;;3510:5;3491:46;3487:142;;3560:15;3569:5;3560:8;:15::i;:::-;3553:22;;;;3487:142;3613:5;3606:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3368:267;;;;;:::o;62753:342:7:-;62810:7;62834:12;62842:3;62834:7;:12::i;:::-;62829:62;;62868:12;62878:1;62868:9;:12::i;:::-;62862:18;;62829:62;62905:12;62913:3;62905:7;:12::i;:::-;62900:62;;62939:12;62949:1;62939:9;:12::i;:::-;62933:18;;62900:62;62992:95;7770:1:11;63045:3:7;63066;63072:14;62992:17;:95::i;:::-;62972:116;;62753:342;;;;:::o;19770:336::-;19826:5;19848:12;19856:3;19848:7;:12::i;:::-;19843:62;;19882:12;19892:1;19882:9;:12::i;:::-;19876:18;;19843:62;19919:12;19927:3;19919:7;:12::i;:::-;19914:62;;19953:12;19963:1;19953:9;:12::i;:::-;19947:18;;19914:62;20004:94;7770:1:11;20057:3:7;20078;20084:13;20004:17;:94::i;:::-;19986:113;;19770:336;;;;:::o;4213:179:26:-;4268:7;2079:95;4326:11;4339:14;4355:13;4378:4;4304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;:::o;5203:1551:25:-;5329:17;5348:16;5366:14;6283:66;6278:1;6270:10;;:79;6266:164;;;6381:1;6385:30;6417:1;6365:54;;;;;;;;6266:164;6524:14;6541:24;6551:4;6557:1;6560;6563;6541:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6524:41;;6597:1;6579:20;;:6;:20;;;6575:113;;6631:1;6635:29;6674:1;6666:10;;6615:62;;;;;;;;;6575:113;6706:6;6714:20;6744:1;6736:10;;6698:49;;;;;;;5203:1551;;;;;;;;;:::o;743:372:9:-;834:7;745:42:10;860:44:9;;;918:6;938:25;991:1;977:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:91;1037:5;1044:6;1007:91;;1052:45;1084:12;1052:31;:45::i;:::-;1007:29;:91::i;:::-;860:248;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;853:255;;743:372;;;;;:::o;1020:99:8:-;1080:4;1111:1;1103:4;:9;;1096:16;;1020:99;;;:::o;1440:240::-;1524:16;1552:23;1592:1;1578:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:42;;1616:6;1604;1611:1;1604:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1644:6;1632;1639:1;1632:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1667:6;1660:13;;;1440:240;;;;:::o;125941:277:7:-;126008:5;126025:12;126040:1;126025:16;;126055:5;126051:44;;;126083:1;126076:8;;126051:44;126104:10;126117:63;126143:4;8001:1:11;126167:12:7;126117:25;:63::i;:::-;126104:76;;126208:2;126190:21;;;;125941:277;;;;:::o;1745:284:8:-;1845:16;1873:23;1913:1;1899:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:42;;1937:6;1925;1932:1;1925:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1965:6;1953;1960:1;1953:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1993:6;1981;1988:1;1981:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;2016:6;2009:13;;;1745:284;;;;;:::o;2078:378:22:-;2137:13;2162:11;2176:16;2187:4;2176:10;:16::i;:::-;2162:30;;2280:17;2311:2;2300:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2280:34;;2375:3;2370;2363:16;2415:4;2408;2403:3;2399:14;2392:28;2446:3;2439:10;;;;2078:378;;;:::o;629:208:8:-;696:7;727:1;719:5;:9;;;715:77;;;775:5;751:30;;;;;;;;;;;:::i;:::-;;;;;;;;715:77;823:5;808:22;;801:29;;629:208;;;:::o;2528:245:22:-;2589:7;2608:14;2661:4;2652;2625:33;;:40;2608:57;;2688:2;2679:6;:11;2675:69;;;2713:20;;;;;;;;;;;;;;2675:69;2760:6;2753:13;;;2528:245;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:33:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:139::-;1887:6;1882:3;1877;1871:23;1928:1;1919:6;1914:3;1910:16;1903:27;1798:139;;;:::o;1943:102::-;1984:6;2035:2;2031:7;2026:2;2019:5;2015:14;2011:28;2001:38;;1943:102;;;:::o;2051:377::-;2139:3;2167:39;2200:5;2167:39;:::i;:::-;2222:71;2286:6;2281:3;2222:71;:::i;:::-;2215:78;;2302:65;2360:6;2355:3;2348:4;2341:5;2337:16;2302:65;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2143:285;2051:377;;;;:::o;2434:313::-;2547:4;2585:2;2574:9;2570:18;2562:26;;2634:9;2628:4;2624:20;2620:1;2609:9;2605:17;2598:47;2662:78;2735:4;2726:6;2662:78;:::i;:::-;2654:86;;2434:313;;;;:::o;2753:126::-;2790:7;2830:42;2823:5;2819:54;2808:65;;2753:126;;;:::o;2885:96::-;2922:7;2951:24;2969:5;2951:24;:::i;:::-;2940:35;;2885:96;;;:::o;2987:122::-;3060:24;3078:5;3060:24;:::i;:::-;3053:5;3050:35;3040:63;;3099:1;3096;3089:12;3040:63;2987:122;:::o;3115:139::-;3161:5;3199:6;3186:20;3177:29;;3215:33;3242:5;3215:33;:::i;:::-;3115:139;;;;:::o;3260:77::-;3297:7;3326:5;3315:16;;3260:77;;;:::o;3343:122::-;3416:24;3434:5;3416:24;:::i;:::-;3409:5;3406:35;3396:63;;3455:1;3452;3445:12;3396:63;3343:122;:::o;3471:139::-;3517:5;3555:6;3542:20;3533:29;;3571:33;3598:5;3571:33;:::i;:::-;3471:139;;;;:::o;3616:474::-;3684:6;3692;3741:2;3729:9;3720:7;3716:23;3712:32;3709:119;;;3747:79;;:::i;:::-;3709:119;3867:1;3892:53;3937:7;3928:6;3917:9;3913:22;3892:53;:::i;:::-;3882:63;;3838:117;3994:2;4020:53;4065:7;4056:6;4045:9;4041:22;4020:53;:::i;:::-;4010:63;;3965:118;3616:474;;;;;:::o;4096:118::-;4183:24;4201:5;4183:24;:::i;:::-;4178:3;4171:37;4096:118;;:::o;4220:222::-;4313:4;4351:2;4340:9;4336:18;4328:26;;4364:71;4432:1;4421:9;4417:17;4408:6;4364:71;:::i;:::-;4220:222;;;;:::o;4448:619::-;4525:6;4533;4541;4590:2;4578:9;4569:7;4565:23;4561:32;4558:119;;;4596:79;;:::i;:::-;4558:119;4716:1;4741:53;4786:7;4777:6;4766:9;4762:22;4741:53;:::i;:::-;4731:63;;4687:117;4843:2;4869:53;4914:7;4905:6;4894:9;4890:22;4869:53;:::i;:::-;4859:63;;4814:118;4971:2;4997:53;5042:7;5033:6;5022:9;5018:22;4997:53;:::i;:::-;4987:63;;4942:118;4448:619;;;;;:::o;5073:474::-;5141:6;5149;5198:2;5186:9;5177:7;5173:23;5169:32;5166:119;;;5204:79;;:::i;:::-;5166:119;5324:1;5349:53;5394:7;5385:6;5374:9;5370:22;5349:53;:::i;:::-;5339:63;;5295:117;5451:2;5477:53;5522:7;5513:6;5502:9;5498:22;5477:53;:::i;:::-;5467:63;;5422:118;5073:474;;;;;:::o;5553:60::-;5581:3;5602:5;5595:12;;5553:60;;;:::o;5619:142::-;5669:9;5702:53;5720:34;5729:24;5747:5;5729:24;:::i;:::-;5720:34;:::i;:::-;5702:53;:::i;:::-;5689:66;;5619:142;;;:::o;5767:159::-;5882:37;5913:5;5882:37;:::i;:::-;5877:3;5870:50;5767:159;;:::o;5932:278::-;6053:4;6091:2;6080:9;6076:18;6068:26;;6104:99;6200:1;6189:9;6185:17;6176:6;6104:99;:::i;:::-;5932:278;;;;:::o;6216:77::-;6253:7;6282:5;6271:16;;6216:77;;;:::o;6299:122::-;6372:24;6390:5;6372:24;:::i;:::-;6365:5;6362:35;6352:63;;6411:1;6408;6401:12;6352:63;6299:122;:::o;6427:139::-;6473:5;6511:6;6498:20;6489:29;;6527:33;6554:5;6527:33;:::i;:::-;6427:139;;;;:::o;6572:329::-;6631:6;6680:2;6668:9;6659:7;6655:23;6651:32;6648:119;;;6686:79;;:::i;:::-;6648:119;6806:1;6831:53;6876:7;6867:6;6856:9;6852:22;6831:53;:::i;:::-;6821:63;;6777:117;6572:329;;;;:::o;6907:118::-;6994:24;7012:5;6994:24;:::i;:::-;6989:3;6982:37;6907:118;;:::o;7031:222::-;7124:4;7162:2;7151:9;7147:18;7139:26;;7175:71;7243:1;7232:9;7228:17;7219:6;7175:71;:::i;:::-;7031:222;;;;:::o;7259:474::-;7327:6;7335;7384:2;7372:9;7363:7;7359:23;7355:32;7352:119;;;7390:79;;:::i;:::-;7352:119;7510:1;7535:53;7580:7;7571:6;7560:9;7556:22;7535:53;:::i;:::-;7525:63;;7481:117;7637:2;7663:53;7708:7;7699:6;7688:9;7684:22;7663:53;:::i;:::-;7653:63;;7608:118;7259:474;;;;;:::o;7739:86::-;7774:7;7814:4;7807:5;7803:16;7792:27;;7739:86;;;:::o;7831:112::-;7914:22;7930:5;7914:22;:::i;:::-;7909:3;7902:35;7831:112;;:::o;7949:214::-;8038:4;8076:2;8065:9;8061:18;8053:26;;8089:67;8153:1;8142:9;8138:17;8129:6;8089:67;:::i;:::-;7949:214;;;;:::o;8169:117::-;8278:1;8275;8268:12;8317:235;8394:5;8435:2;8426:6;8421:3;8417:16;8413:25;8410:112;;;8441:79;;:::i;:::-;8410:112;8540:6;8531:15;;8317:235;;;;:::o;8558:696::-;8657:6;8665;8714:2;8702:9;8693:7;8689:23;8685:32;8682:119;;;8720:79;;:::i;:::-;8682:119;8840:1;8865:53;8910:7;8901:6;8890:9;8886:22;8865:53;:::i;:::-;8855:63;;8811:117;8995:2;8984:9;8980:18;8967:32;9026:18;9018:6;9015:30;9012:117;;;9048:79;;:::i;:::-;9012:117;9153:84;9229:7;9220:6;9209:9;9205:22;9153:84;:::i;:::-;9143:94;;8938:309;8558:696;;;;;:::o;9260:98::-;9311:6;9345:5;9339:12;9329:22;;9260:98;;;:::o;9364:168::-;9447:11;9481:6;9476:3;9469:19;9521:4;9516:3;9512:14;9497:29;;9364:168;;;;:::o;9538:373::-;9624:3;9652:38;9684:5;9652:38;:::i;:::-;9706:70;9769:6;9764:3;9706:70;:::i;:::-;9699:77;;9785:65;9843:6;9838:3;9831:4;9824:5;9820:16;9785:65;:::i;:::-;9875:29;9897:6;9875:29;:::i;:::-;9870:3;9866:39;9859:46;;9628:283;9538:373;;;;:::o;9917:309::-;10028:4;10066:2;10055:9;10051:18;10043:26;;10115:9;10109:4;10105:20;10101:1;10090:9;10086:17;10079:47;10143:76;10214:4;10205:6;10143:76;:::i;:::-;10135:84;;9917:309;;;;:::o;10232:117::-;10341:1;10338;10331:12;10355:180;10403:77;10400:1;10393:88;10500:4;10497:1;10490:15;10524:4;10521:1;10514:15;10541:281;10624:27;10646:4;10624:27;:::i;:::-;10616:6;10612:40;10754:6;10742:10;10739:22;10718:18;10706:10;10703:34;10700:62;10697:88;;;10765:18;;:::i;:::-;10697:88;10805:10;10801:2;10794:22;10584:238;10541:281;;:::o;10828:129::-;10862:6;10889:20;;:::i;:::-;10879:30;;10918:33;10946:4;10938:6;10918:33;:::i;:::-;10828:129;;;:::o;10963:117::-;11072:1;11069;11062:12;11086:118;11157:22;11173:5;11157:22;:::i;:::-;11150:5;11147:33;11137:61;;11194:1;11191;11184:12;11137:61;11086:118;:::o;11210:135::-;11254:5;11292:6;11279:20;11270:29;;11308:31;11333:5;11308:31;:::i;:::-;11210:135;;;;:::o;11351:117::-;11460:1;11457;11450:12;11474:117;11583:1;11580;11573:12;11597:307;11658:4;11748:18;11740:6;11737:30;11734:56;;;11770:18;;:::i;:::-;11734:56;11808:29;11830:6;11808:29;:::i;:::-;11800:37;;11892:4;11886;11882:15;11874:23;;11597:307;;;:::o;11910:148::-;12008:6;12003:3;11998;11985:30;12049:1;12040:6;12035:3;12031:16;12024:27;11910:148;;;:::o;12064:423::-;12141:5;12166:65;12182:48;12223:6;12182:48;:::i;:::-;12166:65;:::i;:::-;12157:74;;12254:6;12247:5;12240:21;12292:4;12285:5;12281:16;12330:3;12321:6;12316:3;12312:16;12309:25;12306:112;;;12337:79;;:::i;:::-;12306:112;12427:54;12474:6;12469:3;12464;12427:54;:::i;:::-;12147:340;12064:423;;;;;:::o;12506:338::-;12561:5;12610:3;12603:4;12595:6;12591:17;12587:27;12577:122;;12618:79;;:::i;:::-;12577:122;12735:6;12722:20;12760:78;12834:3;12826:6;12819:4;12811:6;12807:17;12760:78;:::i;:::-;12751:87;;12567:277;12506:338;;;;:::o;12872:1078::-;12947:5;12991:4;12979:9;12974:3;12970:19;12966:30;12963:117;;;12999:79;;:::i;:::-;12963:117;13098:21;13114:4;13098:21;:::i;:::-;13089:30;;13180:1;13220:49;13265:3;13256:6;13245:9;13241:22;13220:49;:::i;:::-;13213:4;13206:5;13202:16;13195:75;13129:152;13348:2;13389:47;13432:3;13423:6;13412:9;13408:22;13389:47;:::i;:::-;13382:4;13375:5;13371:16;13364:73;13291:157;13508:2;13549:47;13592:3;13583:6;13572:9;13568:22;13549:47;:::i;:::-;13542:4;13535:5;13531:16;13524:73;13458:150;13700:2;13689:9;13685:18;13672:32;13731:18;13723:6;13720:30;13717:117;;;13753:79;;:::i;:::-;13717:117;13873:58;13927:3;13918:6;13907:9;13903:22;13873:58;:::i;:::-;13866:4;13859:5;13855:16;13848:84;13618:325;12872:1078;;;;:::o;13956:686::-;14050:6;14058;14107:2;14095:9;14086:7;14082:23;14078:32;14075:119;;;14113:79;;:::i;:::-;14075:119;14233:1;14258:53;14303:7;14294:6;14283:9;14279:22;14258:53;:::i;:::-;14248:63;;14204:117;14388:2;14377:9;14373:18;14360:32;14419:18;14411:6;14408:30;14405:117;;;14441:79;;:::i;:::-;14405:117;14546:79;14617:7;14608:6;14597:9;14593:22;14546:79;:::i;:::-;14536:89;;14331:304;13956:686;;;;;:::o;14670:233::-;14744:5;14785:3;14776:6;14771:3;14767:16;14763:26;14760:113;;;14792:79;;:::i;:::-;14760:113;14891:6;14882:15;;14670:233;;;;:::o;14909:545::-;14996:6;15045:2;15033:9;15024:7;15020:23;15016:32;15013:119;;;15051:79;;:::i;:::-;15013:119;15199:1;15188:9;15184:17;15171:31;15229:18;15221:6;15218:30;15215:117;;;15251:79;;:::i;:::-;15215:117;15356:81;15429:7;15420:6;15409:9;15405:22;15356:81;:::i;:::-;15346:91;;15142:305;14909:545;;;;:::o;15485:757::-;15563:5;15607:4;15595:9;15590:3;15586:19;15582:30;15579:117;;;15615:79;;:::i;:::-;15579:117;15714:21;15730:4;15714:21;:::i;:::-;15705:30;;15799:1;15839:49;15884:3;15875:6;15864:9;15860:22;15839:49;:::i;:::-;15832:4;15825:5;15821:16;15814:75;15745:155;15992:2;15981:9;15977:18;15964:32;16023:18;16015:6;16012:30;16009:117;;;16045:79;;:::i;:::-;16009:117;16165:58;16219:3;16210:6;16199:9;16195:22;16165:58;:::i;:::-;16158:4;16151:5;16147:16;16140:84;15910:325;15485:757;;;;:::o;16248:692::-;16345:6;16353;16402:2;16390:9;16381:7;16377:23;16373:32;16370:119;;;16408:79;;:::i;:::-;16370:119;16528:1;16553:53;16598:7;16589:6;16578:9;16574:22;16553:53;:::i;:::-;16543:63;;16499:117;16683:2;16672:9;16668:18;16655:32;16714:18;16706:6;16703:30;16700:117;;;16736:79;;:::i;:::-;16700:117;16841:82;16915:7;16906:6;16895:9;16891:22;16841:82;:::i;:::-;16831:92;;16626:307;16248:692;;;;;:::o;16946:690::-;17042:6;17050;17099:2;17087:9;17078:7;17074:23;17070:32;17067:119;;;17105:79;;:::i;:::-;17067:119;17225:1;17250:53;17295:7;17286:6;17275:9;17271:22;17250:53;:::i;:::-;17240:63;;17196:117;17380:2;17369:9;17365:18;17352:32;17411:18;17403:6;17400:30;17397:117;;;17433:79;;:::i;:::-;17397:117;17538:81;17611:7;17602:6;17591:9;17587:22;17538:81;:::i;:::-;17528:91;;17323:306;16946:690;;;;;:::o;17642:93::-;17678:7;17718:10;17711:5;17707:22;17696:33;;17642:93;;;:::o;17741:120::-;17813:23;17830:5;17813:23;:::i;:::-;17806:5;17803:34;17793:62;;17851:1;17848;17841:12;17793:62;17741:120;:::o;17867:137::-;17912:5;17950:6;17937:20;17928:29;;17966:32;17992:5;17966:32;:::i;:::-;17867:137;;;;:::o;18010:327::-;18068:6;18117:2;18105:9;18096:7;18092:23;18088:32;18085:119;;;18123:79;;:::i;:::-;18085:119;18243:1;18268:52;18312:7;18303:6;18292:9;18288:22;18268:52;:::i;:::-;18258:62;;18214:116;18010:327;;;;:::o;18343:329::-;18402:6;18451:2;18439:9;18430:7;18426:23;18422:32;18419:119;;;18457:79;;:::i;:::-;18419:119;18577:1;18602:53;18647:7;18638:6;18627:9;18623:22;18602:53;:::i;:::-;18592:63;;18548:117;18343:329;;;;:::o;18678:149::-;18714:7;18754:66;18747:5;18743:78;18732:89;;18678:149;;;:::o;18833:115::-;18918:23;18935:5;18918:23;:::i;:::-;18913:3;18906:36;18833:115;;:::o;18954:118::-;19041:24;19059:5;19041:24;:::i;:::-;19036:3;19029:37;18954:118;;:::o;19078:114::-;19145:6;19179:5;19173:12;19163:22;;19078:114;;;:::o;19198:184::-;19297:11;19331:6;19326:3;19319:19;19371:4;19366:3;19362:14;19347:29;;19198:184;;;;:::o;19388:132::-;19455:4;19478:3;19470:11;;19508:4;19503:3;19499:14;19491:22;;19388:132;;;:::o;19526:108::-;19603:24;19621:5;19603:24;:::i;:::-;19598:3;19591:37;19526:108;;:::o;19640:179::-;19709:10;19730:46;19772:3;19764:6;19730:46;:::i;:::-;19808:4;19803:3;19799:14;19785:28;;19640:179;;;;:::o;19825:113::-;19895:4;19927;19922:3;19918:14;19910:22;;19825:113;;;:::o;19974:732::-;20093:3;20122:54;20170:5;20122:54;:::i;:::-;20192:86;20271:6;20266:3;20192:86;:::i;:::-;20185:93;;20302:56;20352:5;20302:56;:::i;:::-;20381:7;20412:1;20397:284;20422:6;20419:1;20416:13;20397:284;;;20498:6;20492:13;20525:63;20584:3;20569:13;20525:63;:::i;:::-;20518:70;;20611:60;20664:6;20611:60;:::i;:::-;20601:70;;20457:224;20444:1;20441;20437:9;20432:14;;20397:284;;;20401:14;20697:3;20690:10;;20098:608;;;19974:732;;;;:::o;20712:1215::-;21061:4;21099:3;21088:9;21084:19;21076:27;;21113:69;21179:1;21168:9;21164:17;21155:6;21113:69;:::i;:::-;21229:9;21223:4;21219:20;21214:2;21203:9;21199:18;21192:48;21257:78;21330:4;21321:6;21257:78;:::i;:::-;21249:86;;21382:9;21376:4;21372:20;21367:2;21356:9;21352:18;21345:48;21410:78;21483:4;21474:6;21410:78;:::i;:::-;21402:86;;21498:72;21566:2;21555:9;21551:18;21542:6;21498:72;:::i;:::-;21580:73;21648:3;21637:9;21633:19;21624:6;21580:73;:::i;:::-;21663;21731:3;21720:9;21716:19;21707:6;21663:73;:::i;:::-;21784:9;21778:4;21774:20;21768:3;21757:9;21753:19;21746:49;21812:108;21915:4;21906:6;21812:108;:::i;:::-;21804:116;;20712:1215;;;;;;;;;;:::o;21933:329::-;21992:6;22041:2;22029:9;22020:7;22016:23;22012:32;22009:119;;;22047:79;;:::i;:::-;22009:119;22167:1;22192:53;22237:7;22228:6;22217:9;22213:22;22192:53;:::i;:::-;22182:63;;22138:117;21933:329;;;;:::o;22268:150::-;22369:24;22387:5;22369:24;:::i;:::-;22362:5;22359:35;22349:63;;22408:1;22405;22398:12;22349:63;22268:150;:::o;22424:195::-;22498:5;22536:6;22523:20;22514:29;;22552:61;22607:5;22552:61;:::i;:::-;22424:195;;;;:::o;22625:675::-;22730:6;22738;22746;22795:2;22783:9;22774:7;22770:23;22766:32;22763:119;;;22801:79;;:::i;:::-;22763:119;22921:1;22946:53;22991:7;22982:6;22971:9;22967:22;22946:53;:::i;:::-;22936:63;;22892:117;23048:2;23074:53;23119:7;23110:6;23099:9;23095:22;23074:53;:::i;:::-;23064:63;;23019:118;23176:2;23202:81;23275:7;23266:6;23255:9;23251:22;23202:81;:::i;:::-;23192:91;;23147:146;22625:675;;;;;:::o;23306:530::-;23402:6;23410;23459:2;23447:9;23438:7;23434:23;23430:32;23427:119;;;23465:79;;:::i;:::-;23427:119;23585:1;23610:53;23655:7;23646:6;23635:9;23631:22;23610:53;:::i;:::-;23600:63;;23556:117;23712:2;23738:81;23811:7;23802:6;23791:9;23787:22;23738:81;:::i;:::-;23728:91;;23683:146;23306:530;;;;;:::o;23842:835::-;23947:6;23955;23963;24012:2;24000:9;23991:7;23987:23;23983:32;23980:119;;;24018:79;;:::i;:::-;23980:119;24138:1;24163:53;24208:7;24199:6;24188:9;24184:22;24163:53;:::i;:::-;24153:63;;24109:117;24265:2;24291:53;24336:7;24327:6;24316:9;24312:22;24291:53;:::i;:::-;24281:63;;24236:118;24421:2;24410:9;24406:18;24393:32;24452:18;24444:6;24441:30;24438:117;;;24474:79;;:::i;:::-;24438:117;24579:81;24652:7;24643:6;24632:9;24628:22;24579:81;:::i;:::-;24569:91;;24364:306;23842:835;;;;;:::o;24683:180::-;24731:77;24728:1;24721:88;24828:4;24825:1;24818:15;24852:4;24849:1;24842:15;24869:320;24913:6;24950:1;24944:4;24940:12;24930:22;;24997:1;24991:4;24987:12;25018:18;25008:81;;25074:4;25066:6;25062:17;25052:27;;25008:81;25136:2;25128:6;25125:14;25105:18;25102:38;25099:84;;25155:18;;:::i;:::-;25099:84;24920:269;24869:320;;;:::o;25195:223::-;25305:9;25339:72;25396:14;25389:5;25339:72;:::i;:::-;25326:85;;25195:223;;;:::o;25424:332::-;25545:4;25583:2;25572:9;25568:18;25560:26;;25596:71;25664:1;25653:9;25649:17;25640:6;25596:71;:::i;:::-;25677:72;25745:2;25734:9;25730:18;25721:6;25677:72;:::i;:::-;25424:332;;;;;:::o;25762:214::-;25866:9;25900:69;25954:14;25947:5;25900:69;:::i;:::-;25887:82;;25762:214;;;:::o;25982:442::-;26131:4;26169:2;26158:9;26154:18;26146:26;;26182:71;26250:1;26239:9;26235:17;26226:6;26182:71;:::i;:::-;26263:72;26331:2;26320:9;26316:18;26307:6;26263:72;:::i;:::-;26345;26413:2;26402:9;26398:18;26389:6;26345:72;:::i;:::-;25982:442;;;;;;:::o;26430:222::-;26523:4;26561:2;26550:9;26546:18;26538:26;;26574:71;26642:1;26631:9;26627:17;26618:6;26574:71;:::i;:::-;26430:222;;;;:::o;26658:332::-;26779:4;26817:2;26806:9;26802:18;26794:26;;26830:71;26898:1;26887:9;26883:17;26874:6;26830:71;:::i;:::-;26911:72;26979:2;26968:9;26964:18;26955:6;26911:72;:::i;:::-;26658:332;;;;;:::o;26996:316::-;27109:4;27147:2;27136:9;27132:18;27124:26;;27160:67;27224:1;27213:9;27209:17;27200:6;27160:67;:::i;:::-;27237:68;27301:2;27290:9;27286:18;27277:6;27237:68;:::i;:::-;26996:316;;;;;:::o;27318:180::-;27366:77;27363:1;27356:88;27463:4;27460:1;27453:15;27487:4;27484:1;27477:15;27504:191;27544:3;27563:20;27581:1;27563:20;:::i;:::-;27558:25;;27597:20;27615:1;27597:20;:::i;:::-;27592:25;;27640:1;27637;27633:9;27626:16;;27661:3;27658:1;27655:10;27652:36;;;27668:18;;:::i;:::-;27652:36;27504:191;;;;:::o;27701:332::-;27822:4;27860:2;27849:9;27845:18;27837:26;;27873:71;27941:1;27930:9;27926:17;27917:6;27873:71;:::i;:::-;27954:72;28022:2;28011:9;28007:18;27998:6;27954:72;:::i;:::-;27701:332;;;;;:::o;28039:180::-;28087:77;28084:1;28077:88;28184:4;28181:1;28174:15;28208:4;28205:1;28198:15;28225:102;28298:22;28314:5;28298:22;:::i;:::-;28293:3;28286:35;28225:102;;:::o;28333:158::-;28406:11;28440:6;28435:3;28428:19;28480:4;28475:3;28471:14;28456:29;;28333:158;;;;:::o;28497:353::-;28573:3;28601:38;28633:5;28601:38;:::i;:::-;28655:60;28708:6;28703:3;28655:60;:::i;:::-;28648:67;;28724:65;28782:6;28777:3;28770:4;28763:5;28759:16;28724:65;:::i;:::-;28814:29;28836:6;28814:29;:::i;:::-;28809:3;28805:39;28798:46;;28577:273;28497:353;;;;:::o;28910:976::-;29045:3;29081:4;29076:3;29072:14;29170:4;29163:5;29159:16;29153:23;29189:63;29246:4;29241:3;29237:14;29223:12;29189:63;:::i;:::-;29096:166;29352:4;29345:5;29341:16;29335:23;29371:59;29424:4;29419:3;29415:14;29401:12;29371:59;:::i;:::-;29272:168;29523:4;29516:5;29512:16;29506:23;29542:59;29595:4;29590:3;29586:14;29572:12;29542:59;:::i;:::-;29450:161;29698:4;29691:5;29687:16;29681:23;29751:3;29745:4;29741:14;29734:4;29729:3;29725:14;29718:38;29777:71;29843:4;29829:12;29777:71;:::i;:::-;29769:79;;29621:238;29876:4;29869:11;;29050:836;28910:976;;;;:::o;29892:515::-;30079:4;30117:2;30106:9;30102:18;30094:26;;30166:9;30160:4;30156:20;30152:1;30141:9;30137:17;30130:47;30194:124;30313:4;30304:6;30194:124;:::i;:::-;30186:132;;30328:72;30396:2;30385:9;30381:18;30372:6;30328:72;:::i;:::-;29892:515;;;;;:::o;30413:143::-;30470:5;30501:6;30495:13;30486:22;;30517:33;30544:5;30517:33;:::i;:::-;30413:143;;;;:::o;30562:351::-;30632:6;30681:2;30669:9;30660:7;30656:23;30652:32;30649:119;;;30687:79;;:::i;:::-;30649:119;30807:1;30832:64;30888:7;30879:6;30868:9;30864:22;30832:64;:::i;:::-;30822:74;;30778:128;30562:351;;;;:::o;30919:122::-;31008:2;31001:5;30998:13;30988:47;;31015:18;;:::i;:::-;30988:47;30919:122;:::o;31047:143::-;31100:7;31129:5;31118:16;;31135:49;31178:5;31135:49;:::i;:::-;31047:143;;;:::o;31196:::-;31260:9;31293:40;31327:5;31293:40;:::i;:::-;31280:53;;31196:143;;;:::o;31345:159::-;31446:51;31491:5;31446:51;:::i;:::-;31441:3;31434:64;31345:159;;:::o;31510:875::-;31797:4;31835:3;31824:9;31820:19;31812:27;;31849:67;31913:1;31902:9;31898:17;31889:6;31849:67;:::i;:::-;31926:86;32008:2;31997:9;31993:18;31984:6;31926:86;:::i;:::-;32059:9;32053:4;32049:20;32044:2;32033:9;32029:18;32022:48;32087:108;32190:4;32181:6;32087:108;:::i;:::-;32079:116;;32242:9;32236:4;32232:20;32227:2;32216:9;32212:18;32205:48;32270:108;32373:4;32364:6;32270:108;:::i;:::-;32262:116;;31510:875;;;;;;;:::o;32391:664::-;32596:4;32634:3;32623:9;32619:19;32611:27;;32648:71;32716:1;32705:9;32701:17;32692:6;32648:71;:::i;:::-;32729:72;32797:2;32786:9;32782:18;32773:6;32729:72;:::i;:::-;32811;32879:2;32868:9;32864:18;32855:6;32811:72;:::i;:::-;32893;32961:2;32950:9;32946:18;32937:6;32893:72;:::i;:::-;32975:73;33043:3;33032:9;33028:19;33019:6;32975:73;:::i;:::-;32391:664;;;;;;;;:::o;33061:545::-;33234:4;33272:3;33261:9;33257:19;33249:27;;33286:71;33354:1;33343:9;33339:17;33330:6;33286:71;:::i;:::-;33367:68;33431:2;33420:9;33416:18;33407:6;33367:68;:::i;:::-;33445:72;33513:2;33502:9;33498:18;33489:6;33445:72;:::i;:::-;33527;33595:2;33584:9;33580:18;33571:6;33527:72;:::i;:::-;33061:545;;;;;;;:::o;33612:180::-;33660:77;33657:1;33650:88;33757:4;33754:1;33747:15;33781:4;33778:1;33771:15;33798:90;33833:7;33876:5;33873:1;33862:20;33851:31;;33798:90;;;:::o;33894:112::-;33977:22;33993:5;33977:22;:::i;:::-;33972:3;33965:35;33894:112;;:::o;34012:214::-;34101:4;34139:2;34128:9;34124:18;34116:26;;34152:67;34216:1;34205:9;34201:17;34192:6;34152:67;:::i;:::-;34012:214;;;;:::o","linkReferences":{},"immutableReferences":{"23012":[{"start":8594,"length":32}],"23014":[{"start":8553,"length":32}],"23016":[{"start":8467,"length":32}],"23018":[{"start":10279,"length":32}],"23020":[{"start":10312,"length":32}],"23023":[{"start":6639,"length":32}],"23026":[{"start":6698,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","_allowanceEncrypted(address,address)":"23db9354","allowance(address,address)":"dd62ed3e","allowanceEncrypted(address,(bytes32,bytes))":"5356c429","approve(address,uint256)":"095ea7b3","approveEncrypted(address,(uint256,uint8,uint8,bytes))":"63c05a33","balanceOf(address)":"70a08231","balanceOfEncrypted(address,(bytes32,bytes))":"60277204","decimals()":"313ce567","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mint(uint256)":"a0712d68","mintEncrypted((uint256,uint8,uint8,bytes))":"5fd006b1","mintEncrypted(address,(uint256,uint8,uint8,bytes))":"5b6c6b3e","name()":"06fdde03","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferEncrypted(address,(uint256,uint8,uint8,bytes))":"fe229cbe","transferEncrypted(address,uint256)":"c4224c19","transferFrom(address,address,uint256)":"23b872dd","transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))":"e1a136d5","transferFromEncrypted(address,address,uint256)":"af575a00","unwrap(uint32)":"6e0505e1","wrap(uint32)":"9f284be7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"encryptedBalance\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":\"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\":[],\"name\":\"ErrorInsufficientFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"got\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"}],\"name\":\"InvalidEncryptedInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"value\",\"type\":\"int32\"}],\"name\":\"SecurityZoneOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignerNotMessageSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignerNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"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\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ApprovalEncrypted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"TransferEncrypted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"_allowanceEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"publicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Permission\",\"name\":\"permission\",\"type\":\"tuple\"}],\"name\":\"allowanceEncrypted\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"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\":\"spender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"approveEncrypted\",\"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\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"publicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Permission\",\"name\":\"auth\",\"type\":\"tuple\"}],\"name\":\"balanceOfEncrypted\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"amount\",\"type\":\"tuple\"}],\"name\":\"mintEncrypted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"encryptedAmount\",\"type\":\"tuple\"}],\"name\":\"mintEncrypted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint32\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"encryptedAmount\",\"type\":\"tuple\"}],\"name\":\"transferEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint32\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint32\",\"name\":\"value\",\"type\":\"tuple\"}],\"name\":\"transferFromEncrypted\",\"outputs\":[{\"internalType\":\"euint32\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"amount\",\"type\":\"uint32\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"amount\",\"type\":\"uint32\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ApprovalEncrypted(address,address)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approveEncrypted}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"TransferEncrypted(address,address)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"allowanceEncrypted(address,(bytes32,bytes))\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"approveEncrypted(address,(uint256,uint8,uint8,bytes))\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {ApprovalEncrypted} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"balanceOfEncrypted(address,(bytes32,bytes))\":{\"details\":\"Returns the value of tokens owned by `account`, sealed and encrypted for the caller.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {TransferEncrypted} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"SignerNotMessageSender()\":[{\"notice\":\"Emitted when the signer is not the message sender\"}],\"SignerNotOwner()\":[{\"notice\":\"Emitted when the signer is not the specified owner\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ExampleToken.sol\":\"ExampleToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@luxfi/contracts/=node_modules/@luxfi/contracts/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/ExampleToken.sol\":{\"keccak256\":\"0x9866ae1341ccc834aa0aaef8124457f64a46d0cb5e6362ffa18e6075ec986d1c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ef8ff9837d5380ec9a33a3c6359e972b7147f207722f54ddac183c71f5813f10\",\"dweb:/ipfs/QmULoCgGho1V4yxhT5bFBV7MWfS9Ku8jm1KXJQSc8QSrqs\"]},\"contracts/FHERC20.sol\":{\"keccak256\":\"0xbff20d2472dcec67d365f7493bea9ffb826740e553a666e9f27f9b23027664e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://024750634990a0633884b7635d825bff7c6a10b8c14351fe7cc8bc77d1d44511\",\"dweb:/ipfs/QmQPBXkp6ee6pCCVoBKG1FA1e8ag8SZkC1qZByRcMm6jxo\"]},\"contracts/IFHERC20.sol\":{\"keccak256\":\"0xba86640a1ce6a17599d0f65536b5600ed432e6ee755ec504277b032df7631d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1deb54a9a932cce6e42af436d5edfee2f48f0521b16500698dc8ce798f33c8a5\",\"dweb:/ipfs/Qma1PLcxBNv4drQUF5i9JaExoC2S3wZvYrfYop8oT5e9qF\"]},\"node_modules/@luxfi/contracts/fhe/FHE.sol\":{\"keccak256\":\"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9\",\"dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn\"]},\"node_modules/@luxfi/contracts/fhe/FHECommon.sol\":{\"keccak256\":\"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37\",\"dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY\"]},\"node_modules/@luxfi/contracts/fhe/FHENetwork.sol\":{\"keccak256\":\"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f\",\"dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF\"]},\"node_modules/@luxfi/contracts/fhe/FHETypes.sol\":{\"keccak256\":\"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264\",\"dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn\"]},\"node_modules/@luxfi/contracts/fhe/IFHE.sol\":{\"keccak256\":\"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc\",\"dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y\"]},\"node_modules/@luxfi/contracts/fhe/access/Permissioned.sol\":{\"keccak256\":\"0xd0876cc02c971bcf12808f76e9098f33836f47c83f6ac392caea30db4c7f0128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9bc8e34428b0c0b4874813dc61c9641b8390d123717f8b00819d27ffc4e52d9\",\"dweb:/ipfs/QmXprnttQ6w7Z5jQfhgPZrHqyK8kEVrdqHMuJp6oZ4rJ3B\"]},\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x1a6b4f6b7798ab80929d491b89d5427a9b3338c0fd1acd0ba325f69c6f1646af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bb7f346c12a14dc622bc105ce3c47202fbc89f4b153a28a63bb68193297330c\",\"dweb:/ipfs/QmagwF8P3bUBXwdo159ueEnY9dLSvEWwK24kk2op58egwG\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746\",\"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd\"]},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialBalance","type":"uint256"},{"internalType":"struct Euint32","name":"encryptedBalance","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"ErrorInsufficientFunds"},{"inputs":[{"internalType":"uint8","name":"got","type":"uint8"},{"internalType":"uint8","name":"expected","type":"uint8"}],"type":"error","name":"InvalidEncryptedInput"},{"inputs":[],"type":"error","name":"InvalidShortString"},{"inputs":[{"internalType":"int32","name":"value","type":"int32"}],"type":"error","name":"SecurityZoneOutOfBounds"},{"inputs":[],"type":"error","name":"SignerNotMessageSender"},{"inputs":[],"type":"error","name":"SignerNotOwner"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"type":"error","name":"StringTooLong"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true}],"type":"event","name":"ApprovalEncrypted","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"TransferEncrypted","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"_allowanceEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"struct Permission","name":"permission","type":"tuple","components":[{"internalType":"bytes32","name":"publicKey","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"allowanceEncrypted","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"struct Euint32","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"approveEncrypted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"struct Permission","name":"auth","type":"tuple","components":[{"internalType":"bytes32","name":"publicKey","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"balanceOfEncrypted","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","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[]"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"struct Euint32","name":"amount","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"mintEncrypted"},{"inputs":[{"internalType":"struct Euint32","name":"encryptedAmount","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"mintEncrypted"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"euint32","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint32","name":"encryptedAmount","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"transferEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint32","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFromEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint32","name":"value","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"transferFromEncrypted","outputs":[{"internalType":"euint32","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"amount","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"unwrap"},{"inputs":[{"internalType":"uint32","name":"amount","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"wrap"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"allowanceEncrypted(address,(bytes32,bytes))":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"approveEncrypted(address,(uint256,uint8,uint8,bytes))":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {ApprovalEncrypted} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"balanceOfEncrypted(address,(bytes32,bytes))":{"details":"Returns the value of tokens owned by `account`, sealed and encrypted for the caller."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"name()":{"details":"Returns the name of the token."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferFromEncrypted(address,address,(uint256,uint8,uint8,bytes))":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {TransferEncrypted} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@luxfi/contracts/=node_modules/@luxfi/contracts/","@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/","hardhat-deploy/=node_modules/hardhat-deploy/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/ExampleToken.sol":"ExampleToken"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/ExampleToken.sol":{"keccak256":"0x9866ae1341ccc834aa0aaef8124457f64a46d0cb5e6362ffa18e6075ec986d1c","urls":["bzz-raw://ef8ff9837d5380ec9a33a3c6359e972b7147f207722f54ddac183c71f5813f10","dweb:/ipfs/QmULoCgGho1V4yxhT5bFBV7MWfS9Ku8jm1KXJQSc8QSrqs"],"license":"UNLICENSED"},"contracts/FHERC20.sol":{"keccak256":"0xbff20d2472dcec67d365f7493bea9ffb826740e553a666e9f27f9b23027664e8","urls":["bzz-raw://024750634990a0633884b7635d825bff7c6a10b8c14351fe7cc8bc77d1d44511","dweb:/ipfs/QmQPBXkp6ee6pCCVoBKG1FA1e8ag8SZkC1qZByRcMm6jxo"],"license":"MIT"},"contracts/IFHERC20.sol":{"keccak256":"0xba86640a1ce6a17599d0f65536b5600ed432e6ee755ec504277b032df7631d98","urls":["bzz-raw://1deb54a9a932cce6e42af436d5edfee2f48f0521b16500698dc8ce798f33c8a5","dweb:/ipfs/Qma1PLcxBNv4drQUF5i9JaExoC2S3wZvYrfYop8oT5e9qF"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHE.sol":{"keccak256":"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424","urls":["bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9","dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHECommon.sol":{"keccak256":"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01","urls":["bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37","dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHENetwork.sol":{"keccak256":"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337","urls":["bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f","dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHETypes.sol":{"keccak256":"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445","urls":["bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264","dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/IFHE.sol":{"keccak256":"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4","urls":["bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc","dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/access/Permissioned.sol":{"keccak256":"0xd0876cc02c971bcf12808f76e9098f33836f47c83f6ac392caea30db4c7f0128","urls":["bzz-raw://f9bc8e34428b0c0b4874813dc61c9641b8390d123717f8b00819d27ffc4e52d9","dweb:/ipfs/QmXprnttQ6w7Z5jQfhgPZrHqyK8kEVrdqHMuJp6oZ4rJ3B"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0x1a6b4f6b7798ab80929d491b89d5427a9b3338c0fd1acd0ba325f69c6f1646af","urls":["bzz-raw://7bb7f346c12a14dc622bc105ce3c47202fbc89f4b153a28a63bb68193297330c","dweb:/ipfs/QmagwF8P3bUBXwdo159ueEnY9dLSvEWwK24kk2op58egwG"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c","urls":["bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d","dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e","urls":["bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23","dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994","urls":["bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c","dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol":{"keccak256":"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402","urls":["bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35","dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"keccak256":"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5","urls":["bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746","dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"}},"version":1},"id":3}