mirror of
https://github.com/luxfhe/example-confidential-contracts.git
synced 2026-10-30 18:13:34 +00:00
1 line
200 KiB
JSON
1 line
200 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfIsIndicator","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"euint64"}],"stateMutability":"view"},{"type":"function","name":"confidentialTotalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"euint64"}],"stateMutability":"view"},{"type":"function","name":"confidentialTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","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":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","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"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","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":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"euint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"confidentialTransferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"inValue","type":"tuple","internalType":"struct Euint64","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"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"transferred","type":"uint256","internalType":"euint64"}],"stateMutability":"nonpayable"},{"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":"indicatorTick","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isFherc20","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"until","type":"uint48","internalType":"uint48"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetIndicatedBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"until","type":"uint48","internalType":"uint48"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTotalIndicatedSupply","inputs":[{"name":"value","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUserIndicatedBalance","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"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":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"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":"ConfidentialTransfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value_hash","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"OperatorSet","inputs":[{"name":"holder","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"until","type":"uint48","indexed":false,"internalType":"uint48"}],"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":"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":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromOwnerMismatch","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"permitOwner","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromSpenderMismatch","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"permitSpender","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20ConfidentialTransferFromValueHashMismatch","inputs":[{"name":"inValueHash","type":"uint256","internalType":"uint256"},{"name":"permitValueHash","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FHERC20IncompatibleFunction","inputs":[]},{"type":"error","name":"FHERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20UnauthorizedSpender","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FHERC20UnauthorizedUseOfEncryptedAmount","inputs":[{"name":"value","type":"uint256","internalType":"euint64"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"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":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x610160604052348015610010575f5ffd5b50604051614c09380380614c0983398181016040528101906100329190610428565b82806040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250858585826005908161007c91906106c0565b50816006908161008c91906106c0565b508060075f6101000a81548160ff021916908360ff16021790555060048160ff1611156100d1576004816100c091906107bc565b600a6100cc919061091f565b6100d4565b60015b6008819055505050506100f160098361019060201b90919060201c565b610120818152505061010d600a8261019060201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505061014a6101dd60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050505050610b1b565b5f6020835110156101b1576101aa8361023760201b60201c565b90506101d7565b826101c18361029c60201b60201c565b5f0190816101cf91906106c0565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e05161010051463060405160200161021c9594939291906109cf565b60405160208183030381529060405280519060200120905090565b5f5f829050601f8151111561028357826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040161027a9190610a68565b60405180910390fd5b80518161028f90610ab5565b5f1c175f1b915050919050565b5f819050919050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610304826102be565b810181811067ffffffffffffffff82111715610323576103226102ce565b5b80604052505050565b5f6103356102a5565b905061034182826102fb565b919050565b5f67ffffffffffffffff8211156103605761035f6102ce565b5b610369826102be565b9050602081019050919050565b8281835e5f83830152505050565b5f61039661039184610346565b61032c565b9050828152602081018484840111156103b2576103b16102ba565b5b6103bd848285610376565b509392505050565b5f82601f8301126103d9576103d86102b6565b5b81516103e9848260208601610384565b91505092915050565b5f60ff82169050919050565b610407816103f2565b8114610411575f5ffd5b50565b5f81519050610422816103fe565b92915050565b5f5f5f6060848603121561043f5761043e6102ae565b5b5f84015167ffffffffffffffff81111561045c5761045b6102b2565b5b610468868287016103c5565b935050602084015167ffffffffffffffff811115610489576104886102b2565b5b610495868287016103c5565b92505060406104a686828701610414565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806104fe57607f821691505b602082108103610511576105106104ba565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610538565b61057d8683610538565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105c16105bc6105b784610595565b61059e565b610595565b9050919050565b5f819050919050565b6105da836105a7565b6105ee6105e6826105c8565b848454610544565b825550505050565b5f5f905090565b6106056105f6565b6106108184846105d1565b505050565b5b81811015610633576106285f826105fd565b600181019050610616565b5050565b601f8211156106785761064981610517565b61065284610529565b81016020851015610661578190505b61067561066d85610529565b830182610615565b50505b505050565b5f82821c905092915050565b5f6106985f198460080261067d565b1980831691505092915050565b5f6106b08383610689565b9150826002028217905092915050565b6106c9826104b0565b67ffffffffffffffff8111156106e2576106e16102ce565b5b6106ec82546104e7565b6106f7828285610637565b5f60209050601f831160018114610728575f8415610716578287015190505b61072085826106a5565b865550610787565b601f19841661073686610517565b5f5b8281101561075d57848901518255600182019150602085019450602081019050610738565b8683101561077a5784890151610776601f891682610689565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6107c6826103f2565b91506107d1836103f2565b9250828203905060ff8111156107ea576107e961078f565b5b92915050565b5f8160011c9050919050565b5f5f8291508390505b6001851115610845578086048111156108215761082061078f565b5b60018516156108305780820291505b808102905061083e856107f0565b9450610805565b94509492505050565b5f8261085d5760019050610918565b8161086a575f9050610918565b8160018114610880576002811461088a576108b9565b6001915050610918565b60ff84111561089c5761089b61078f565b5b8360020a9150848211156108b3576108b261078f565b5b50610918565b5060208310610133831016604e8410600b84101617156108ee5782820a9050838111156108e9576108e861078f565b5b610918565b6108fb84848460016107fc565b925090508184048111156109125761091161078f565b5b81810290505b9392505050565b5f61092982610595565b9150610934836103f2565b92506109617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461084e565b905092915050565b5f819050919050565b61097b81610969565b82525050565b61098a81610595565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109b982610990565b9050919050565b6109c9816109af565b82525050565b5f60a0820190506109e25f830188610972565b6109ef6020830187610972565b6109fc6040830186610972565b610a096060830185610981565b610a1660808301846109c0565b9695505050505050565b5f82825260208201905092915050565b5f610a3a826104b0565b610a448185610a20565b9350610a54818560208601610376565b610a5d816102be565b840191505092915050565b5f6020820190508181035f830152610a808184610a30565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f610aac8251610969565b80915050919050565b5f610abf82610a88565b82610ac984610a92565b9050610ad481610aa1565b92506020821015610b1457610b0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802610538565b831692505b5050919050565b60805160a05160c05160e05161010051610120516101405161409d610b6c5f395f61167101525f61163601525f61210e01525f6120ed01525f6113cc01525f61142201525f61144b015261409d5ff3fe608060405234801561000f575f5ffd5b50600436106101f9575f3560e01c80637ecebe0011610118578063a9fe9959116100ab578063d174999a1161007a578063d174999a14610605578063d4febb9614610635578063dd62ed3e14610651578063fca114d614610681578063fe3f670d146106b1576101f9565b8063a9fe99591461056b578063b4b201901461059b578063b6363cf2146105a5578063ca49d7cd146105d5576101f9565b80639645edd4116100e75780639645edd4146104bd578063a415f269146104ed578063a794ee951461050b578063a9059cbb1461053b576101f9565b80637ecebe001461041b5780637edb0e7d1461044b57806384b0196e1461047b57806395d89b411461049f576101f9565b8063344ff1011161019057806339ce5fdf1161015f57806339ce5fdf14610393578063490690f3146103af57806354095227146103cd57806370a08231146103eb576101f9565b8063344ff1011461030b57806334e3e2ba1461033b5780633644e51514610357578063365ac00214610375576101f9565b80631c5f75fd116101cc5780631c5f75fd1461028557806323b872dd146102a15780632893c5b0146102d1578063313ce567146102ed576101f9565b806306fdde03146101fd578063095ea7b31461021b57806313691c761461024b57806318160ddd14610267575b5f5ffd5b6102056106e1565b6040516102129190612d4d565b60405180910390f35b61023560048036038101906102309190612e0b565b610771565b6040516102429190612e63565b60405180910390f35b61026560048036038101906102609190612eb9565b6107a4565b005b61026f6107b3565b60405161027c9190612f06565b60405180910390f35b61029f600480360381019061029a9190612fc3565b6107da565b005b6102bb60048036038101906102b69190613060565b61091f565b6040516102c89190612e63565b60405180910390f35b6102eb60048036038101906102e69190612eb9565b610952565b005b6102f5610961565b60405161030291906130bf565b60405180910390f35b610325600480360381019061032091906130d8565b610976565b604051610332919061313c565b60405180910390f35b6103556004803603810190610350919061318c565b6109bc565b005b61035f6109db565b60405161036c91906131c6565b60405180910390f35b61037d6109e9565b60405161038a9190612e63565b60405180910390f35b6103ad60048036038101906103a891906131df565b6109f1565b005b6103b7610a4b565b6040516103c49190612f06565b60405180910390f35b6103d5610a54565b6040516103e2919061313c565b60405180910390f35b610405600480360381019061040091906130d8565b610a5d565b6040516104129190612f06565b60405180910390f35b610435600480360381019061043091906130d8565b610ac0565b6040516104429190612f06565b60405180910390f35b610465600480360381019061046091906133e2565b610ad1565b604051610472919061313c565b60405180910390f35b610483610b40565b604051610496979695949392919061354e565b60405180910390f35b6104a7610be5565b6040516104b49190612d4d565b60405180910390f35b6104d760048036038101906104d29190613657565b610c75565b6040516104e4919061313c565b60405180910390f35b6104f5610d28565b6040516105029190612e63565b60405180910390f35b610525600480360381019061052091906136db565b610d30565b604051610532919061313c565b60405180910390f35b61055560048036038101906105509190612e0b565b610d51565b6040516105629190612e63565b60405180910390f35b61058560048036038101906105809190613735565b610d84565b604051610592919061313c565b60405180910390f35b6105a3610de9565b005b6105bf60048036038101906105ba91906137a6565b610e41565b6040516105cc9190612e63565b60405180910390f35b6105ef60048036038101906105ea91906137e4565b610f15565b6040516105fc919061313c565b60405180910390f35b61061f600480360381019061061a9190613834565b610fc4565b60405161062c919061313c565b60405180910390f35b61064f600480360381019061064a91906138c1565b610fe9565b005b61066b600480360381019061066691906137a6565b610ff8565b6040516106789190612f06565b60405180910390f35b61069b600480360381019061069691906138ff565b61102b565b6040516106a8919061313c565b60405180910390f35b6106cb60048036038101906106c6919061399f565b61109e565b6040516106d8919061313c565b60405180910390f35b6060600580546106f090613a0a565b80601f016020809104026020016040519081016040528092919081815260200182805461071c90613a0a565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050505050905090565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107ae82826110ff565b505050565b5f60085460035f9054906101000a900461ffff1661ffff166107d59190613a67565b905090565b8342111561081f57836040517f627913020000000000000000000000000000000000000000000000000000000081526004016108169190612f06565b60405180910390fd5b5f7f3761e53ce7a62748833418e1c459b491875d6c4ec15966ef7f501194dce7fed288888861084d8c611195565b8960405160200161086396959493929190613ab7565b6040516020818303038152906040528051906020012090505f610885826111e8565b90505f61089482878787611201565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461090857808a6040517f4b800e460000000000000000000000000000000000000000000000000000000081526004016108ff929190613b16565b60405180910390fd5b6109138a8a8a61122f565b50505050505050505050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61095c8282611333565b505050565b5f60075f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8060035f6101000a81548161ffff021916908361ffff16021790555050565b5f6109e46113c9565b905090565b5f6001905090565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505050565b5f600854905090565b5f600454905090565b5f6008545f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff1661ffff16610ab99190613a67565b9050919050565b5f610aca8261147f565b9050919050565b5f610adc8433610e41565b610b1f5783336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610b16929190613b16565b60405180910390fd5b5f610b29836114c5565b9050610b36858583611538565b9150509392505050565b5f6060805f5f5f6060610b5161162d565b610b59611668565b46305f5f1b5f67ffffffffffffffff811115610b7857610b77613221565b5b604051908082528060200260200182016040528015610ba65781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b606060068054610bf490613a0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2090613a0a565b8015610c6b5780601f10610c4257610100808354040283529160200191610c6b565b820191905f5260205f20905b815481529060010190602001808311610c4e57829003601f168201915b5050505050905090565b5f610c8084336116a3565b610cc35783336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610cba929190613b3d565b60405180910390fd5b610ccd8633610e41565b610d105785336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610d07929190613b16565b60405180910390fd5b610d1d868686868661173b565b905095945050505050565b5f6001905090565b5f5f610d3b836114c5565b9050610d48338583611538565b91505092915050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d8f84336116a3565b610dd25783336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610dc9929190613b3d565b60405180910390fd5b610ddf338686868661173b565b9050949350505050565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff160217905550565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610f0d575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900465ffffffffffff1665ffffffffffff164211155b905092915050565b5f610f2082336116a3565b610f635781336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610f5a929190613b3d565b60405180910390fd5b610f6d8433610e41565b610fb05783336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610fa7929190613b16565b60405180910390fd5b610fbb848484611538565b90509392505050565b5f5f610fcf856114c5565b9050610fde338783878761173b565b915050949350505050565b610ff433838361122f565b5050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110368633610e41565b6110795785336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401611070929190613b16565b60405180910390fd5b5f611083856114c5565b9050611092878783878761173b565b91505095945050505050565b5f6110a982336116a3565b6110ec5781336040517fd5fdb3f00000000000000000000000000000000000000000000000000000000081526004016110e3929190613b3d565b60405180910390fd5b6110f7338484611538565b905092915050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611170575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016111679190613b64565b60405180910390fd5b61118d835f6111888567ffffffffffffffff16611793565b6117a5565b905092915050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f6111fa6111f46113c9565b83611e40565b9050919050565b5f5f5f5f61121188888888611e80565b9250925092506112218282611f67565b829350505050949350505050565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f921a218a75d18e8ec5704851e6b234a85725b21a2521ce889622c35dedc1fa12836040516113269190613b7d565b60405180910390a3505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a4575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161139b9190613b64565b60405180910390fd5b6113c15f846113bc8567ffffffffffffffff16611793565b6117a5565b905092915050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561144457507f000000000000000000000000000000000000000000000000000000000000000046145b15611471577f0000000000000000000000000000000000000000000000000000000000000000905061147c565b6114796120c9565b90505b90565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5f600590508060ff16836040015160ff161461151f578260400151816040517f67cf3071000000000000000000000000000000000000000000000000000000008152600401611516929190613b96565b60405180910390fd5b61153061152b8461215e565b6121a0565b915050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036115a9575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016115a09190613b64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611619575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116109190613b64565b60405180910390fd5b6116248484846117a5565b90509392505050565b606061166360097f000000000000000000000000000000000000000000000000000000000000000061223790919063ffffffff16565b905090565b606061169e600a7f000000000000000000000000000000000000000000000000000000000000000061223790919063ffffffff16565b905090565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16635faa299a84846040518363ffffffff1660e01b81526004016116f3929190613bbd565b6020604051808303815f875af115801561170f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117339190613c0e565b905092915050565b5f5f611748878787611538565b90505f6117593389898589896122e4565b90505f611779888a6117748561176e5f611793565b88612421565b6117a5565b90506117858382612483565b935050505095945050505050565b5f61179e825f6124cc565b9050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146118425761183b61182c60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054846124e690919063ffffffff16565b836118365f611793565b612421565b9050611846565b8190505b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118c35761189160035f9054906101000a900461ffff166124f9565b60035f6101000a81548161ffff021916908361ffff1602179055506118b860045482612535565b6004819055506119f3565b61190a60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482612483565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061199d5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff1661257e565b5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a7057611a3e60035f9054906101000a900461ffff1661257e565b60035f6101000a81548161ffff021916908361ffff160217905550611a6560045482612483565b600481905550611ba0565b611ab760015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482612535565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611b4a5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff166124f9565b5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611c7c57611c2a60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b9565b611c7160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485612638565b611c7b8185612638565b5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611d5857611d0660015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b9565b611d4d60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484612638565b611d578184612638565b5b611d628133612638565b611d6d6004546125b9565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051611dcc9190612f06565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdef6144e0f80e23ca465862f2f93a21f8526624729198aed904b46e005c943e483604051611e319190612f06565b60405180910390a39392505050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611ebc575f600385925092509250611f5d565b5f6001888888886040515f8152602001604052604051611edf9493929190613c39565b6020604051602081039080840390855afa158015611eff573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f50575f60015f5f1b93509350935050611f5d565b805f5f5f1b935093509350505b9450945094915050565b5f6003811115611f7a57611f79613c7c565b5b826003811115611f8d57611f8c613c7c565b5b03156120c55760016003811115611fa757611fa6613c7c565b5b826003811115611fba57611fb9613c7c565b5b03611ff1576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561200557612004613c7c565b5b82600381111561201857612017613c7c565b5b0361205c57805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016120539190612f06565b60405180910390fd5b60038081111561206f5761206e613c7c565b5b82600381111561208257612081613c7c565b5b036120c457806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016120bb91906131c6565b60405180910390fd5b5b5050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001612143959493929190613ca9565b60405160208183030381529060405280519060200120905090565b612166612cb2565b6040518060800160405280835f01518152602001836020015160ff168152602001600560ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016121f0929190613dbb565b6020604051808303815f875af115801561220c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122309190613dfd565b9050919050565b606060ff5f1b83146122535761224c836126b8565b90506122de565b81805461225f90613a0a565b80601f016020809104026020016040519081016040528092919081815260200182805461228b90613a0a565b80156122d65780601f106122ad576101008083540402835291602001916122d6565b820191905f5260205f20905b8154815290600101906020018083116122b957829003601f168201915b505050505090505b92915050565b5f5f8573ffffffffffffffffffffffffffffffffffffffff163b111561240a578473ffffffffffffffffffffffffffffffffffffffff1663944e3ddb88888787876040518663ffffffff1660e01b8152600401612345959493929190613e64565b6020604051808303815f875af192505050801561238057506040513d601f19601f8201168201806040525081019061237d9190613eda565b60015b612401573d805f81146123ae576040519150601f19603f3d011682016040523d82523d5f602084013e6123b3565b606091505b505f8151036123f957856040517f502133790000000000000000000000000000000000000000000000000000000081526004016123f09190613b64565b60405180910390fd5b805181602001fd5b80915050612417565b612414600161272a565b90505b9695505050505050565b5f61242b8461273c565b61243b576124385f61272a565b93505b6124448361274d565b612454576124515f611793565b92505b61245d8261274d565b61246d5761246a5f611793565b91505b61247a600585858561275e565b90509392505050565b5f61248d8361274d565b61249d5761249a5f611793565b92505b6124a68261274d565b6124b6576124b35f611793565b91505b6124c460058484600761284f565b905092915050565b5f5f6124da8460058561293e565b90508091505092915050565b5f6124f18383612a39565b905092915050565b5f5f8261ffff161480612511575061270f8261ffff16145b15612520576113899050612530565b60018261252d9190613f05565b90505b919050565b5f61253f8361274d565b61254f5761254c5f611793565b92505b6125588261274d565b612568576125655f611793565b91505b61257660058484600861284f565b905092915050565b5f5f8261ffff161480612595575060018261ffff16145b156125a45761138790506125b4565b6001826125b19190613f3a565b90505b919050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c82306040518363ffffffff1660e01b8152600401612608929190613bbd565b5f604051808303815f87803b15801561261f575f5ffd5b505af1158015612631573d5f5f3e3d5ffd5b5050505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c83836040518363ffffffff1660e01b8152600401612687929190613bbd565b5f604051808303815f87803b15801561269e575f5ffd5b505af11580156126b0573d5f5f3e3d5ffd5b505050505050565b60605f6126c483612a82565b90505f602067ffffffffffffffff8111156126e2576126e1613221565b5b6040519080825280601f01601f1916602001820160405280156127145781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f612735825f612ad0565b9050919050565b5f61274682612af9565b9050919050565b5f61275782612af9565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd86600461279d888888612b05565b5f67ffffffffffffffff8111156127b7576127b6613221565b5b6040519080825280602002602001820160405280156127e55781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016128059493929190613fb5565b6020604051808303815f875af1158015612821573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128459190613dfd565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd868461288c8888612bc1565b5f67ffffffffffffffff8111156128a6576128a5613221565b5b6040519080825280602002602001820160405280156128d45781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016128f49493929190613fb5565b6020604051808303815f875af1158015612910573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129349190613dfd565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff81111561298c5761298b613221565b5b6040519080825280602002602001820160405280156129ba5781602001602082028036833780820191505090505b506129d1898960ff166129cc8a612c5b565b612b05565b6040518563ffffffff1660e01b81526004016129f09493929190613fb5565b6020604051808303815f875af1158015612a0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a309190613dfd565b90509392505050565b5f612a438361274d565b612a5357612a505f611793565b92505b612a5c8261274d565b612a6c57612a695f611793565b91505b612a7a60058484601361284f565b905092915050565b5f5f60ff835f1c169050601f811115612ac7576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f5f5f90508315612ae057600190505b5f612aec825f8661293e565b9050809250505092915050565b5f5f8214159050919050565b60605f600367ffffffffffffffff811115612b2357612b22613221565b5b604051908082528060200260200182016040528015612b515781602001602082028036833780820191505090505b50905084815f81518110612b6857612b67614006565b5b6020026020010181815250508381600181518110612b8957612b88614006565b5b6020026020010181815250508281600281518110612baa57612ba9614006565b5b602002602001018181525050809150509392505050565b60605f600267ffffffffffffffff811115612bdf57612bde613221565b5b604051908082528060200260200182016040528015612c0d5781602001602082028036833780820191505090505b50905083815f81518110612c2457612c23614006565b5b6020026020010181815250508281600181518110612c4557612c44614006565b5b6020026020010181815250508091505092915050565b5f5f8260030b1215612ca457816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401612c9b919061404e565b60405180910390fd5b8163ffffffff169050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d1f82612cdd565b612d298185612ce7565b9350612d39818560208601612cf7565b612d4281612d05565b840191505092915050565b5f6020820190508181035f830152612d658184612d15565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612da782612d7e565b9050919050565b612db781612d9d565b8114612dc1575f5ffd5b50565b5f81359050612dd281612dae565b92915050565b5f819050919050565b612dea81612dd8565b8114612df4575f5ffd5b50565b5f81359050612e0581612de1565b92915050565b5f5f60408385031215612e2157612e20612d76565b5b5f612e2e85828601612dc4565b9250506020612e3f85828601612df7565b9150509250929050565b5f8115159050919050565b612e5d81612e49565b82525050565b5f602082019050612e765f830184612e54565b92915050565b5f67ffffffffffffffff82169050919050565b612e9881612e7c565b8114612ea2575f5ffd5b50565b5f81359050612eb381612e8f565b92915050565b5f5f60408385031215612ecf57612ece612d76565b5b5f612edc85828601612dc4565b9250506020612eed85828601612ea5565b9150509250929050565b612f0081612dd8565b82525050565b5f602082019050612f195f830184612ef7565b92915050565b5f65ffffffffffff82169050919050565b612f3981612f1f565b8114612f43575f5ffd5b50565b5f81359050612f5481612f30565b92915050565b5f60ff82169050919050565b612f6f81612f5a565b8114612f79575f5ffd5b50565b5f81359050612f8a81612f66565b92915050565b5f819050919050565b612fa281612f90565b8114612fac575f5ffd5b50565b5f81359050612fbd81612f99565b92915050565b5f5f5f5f5f5f5f60e0888a031215612fde57612fdd612d76565b5b5f612feb8a828b01612dc4565b9750506020612ffc8a828b01612dc4565b965050604061300d8a828b01612f46565b955050606061301e8a828b01612df7565b945050608061302f8a828b01612f7c565b93505060a06130408a828b01612faf565b92505060c06130518a828b01612faf565b91505092959891949750929550565b5f5f5f6060848603121561307757613076612d76565b5b5f61308486828701612dc4565b935050602061309586828701612dc4565b92505060406130a686828701612df7565b9150509250925092565b6130b981612f5a565b82525050565b5f6020820190506130d25f8301846130b0565b92915050565b5f602082840312156130ed576130ec612d76565b5b5f6130fa84828501612dc4565b91505092915050565b5f819050919050565b5f61312661312161311c84612dd8565b613103565b612dd8565b9050919050565b6131368161310c565b82525050565b5f60208201905061314f5f83018461312d565b92915050565b5f61ffff82169050919050565b61316b81613155565b8114613175575f5ffd5b50565b5f8135905061318681613162565b92915050565b5f602082840312156131a1576131a0612d76565b5b5f6131ae84828501613178565b91505092915050565b6131c081612f90565b82525050565b5f6020820190506131d95f8301846131b7565b92915050565b5f5f604083850312156131f5576131f4612d76565b5b5f61320285828601612dc4565b925050602061321385828601613178565b9150509250929050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61325782612d05565b810181811067ffffffffffffffff8211171561327657613275613221565b5b80604052505050565b5f613288612d6d565b9050613294828261324e565b919050565b5f5ffd5b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156132bf576132be613221565b5b6132c882612d05565b9050602081019050919050565b828183375f83830152505050565b5f6132f56132f0846132a5565b61327f565b905082815260208101848484011115613311576133106132a1565b5b61331c8482856132d5565b509392505050565b5f82601f8301126133385761333761329d565b5b81356133488482602086016132e3565b91505092915050565b5f608082840312156133665761336561321d565b5b613370608061327f565b90505f61337f84828501612df7565b5f83015250602061339284828501612f7c565b60208301525060406133a684828501612f7c565b604083015250606082013567ffffffffffffffff8111156133ca576133c9613299565b5b6133d684828501613324565b60608301525092915050565b5f5f5f606084860312156133f9576133f8612d76565b5b5f61340686828701612dc4565b935050602061341786828701612dc4565b925050604084013567ffffffffffffffff81111561343857613437612d7a565b5b61344486828701613351565b9150509250925092565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6134828161344e565b82525050565b61349181612d9d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134c981612dd8565b82525050565b5f6134da83836134c0565b60208301905092915050565b5f602082019050919050565b5f6134fc82613497565b61350681856134a1565b9350613511836134b1565b805f5b8381101561354157815161352888826134cf565b9750613533836134e6565b925050600181019050613514565b5085935050505092915050565b5f60e0820190506135615f83018a613479565b81810360208301526135738189612d15565b905081810360408301526135878188612d15565b90506135966060830187612ef7565b6135a36080830186613488565b6135b060a08301856131b7565b81810360c08301526135c281846134f2565b905098975050505050505050565b6135d981612dd8565b81146135e3575f5ffd5b50565b5f813590506135f4816135d0565b92915050565b5f5ffd5b5f5ffd5b5f5f83601f8401126136175761361661329d565b5b8235905067ffffffffffffffff811115613634576136336135fa565b5b6020830191508360018202830111156136505761364f6135fe565b5b9250929050565b5f5f5f5f5f608086880312156136705761366f612d76565b5b5f61367d88828901612dc4565b955050602061368e88828901612dc4565b945050604061369f888289016135e6565b935050606086013567ffffffffffffffff8111156136c0576136bf612d7a565b5b6136cc88828901613602565b92509250509295509295909350565b5f5f604083850312156136f1576136f0612d76565b5b5f6136fe85828601612dc4565b925050602083013567ffffffffffffffff81111561371f5761371e612d7a565b5b61372b85828601613351565b9150509250929050565b5f5f5f5f6060858703121561374d5761374c612d76565b5b5f61375a87828801612dc4565b945050602061376b878288016135e6565b935050604085013567ffffffffffffffff81111561378c5761378b612d7a565b5b61379887828801613602565b925092505092959194509250565b5f5f604083850312156137bc576137bb612d76565b5b5f6137c985828601612dc4565b92505060206137da85828601612dc4565b9150509250929050565b5f5f5f606084860312156137fb576137fa612d76565b5b5f61380886828701612dc4565b935050602061381986828701612dc4565b925050604061382a868287016135e6565b9150509250925092565b5f5f5f5f6060858703121561384c5761384b612d76565b5b5f61385987828801612dc4565b945050602085013567ffffffffffffffff81111561387a57613879612d7a565b5b61388687828801613351565b935050604085013567ffffffffffffffff8111156138a7576138a6612d7a565b5b6138b387828801613602565b925092505092959194509250565b5f5f604083850312156138d7576138d6612d76565b5b5f6138e485828601612dc4565b92505060206138f585828601612f46565b9150509250929050565b5f5f5f5f5f6080868803121561391857613917612d76565b5b5f61392588828901612dc4565b955050602061393688828901612dc4565b945050604086013567ffffffffffffffff81111561395757613956612d7a565b5b61396388828901613351565b935050606086013567ffffffffffffffff81111561398457613983612d7a565b5b61399088828901613602565b92509250509295509295909350565b5f5f604083850312156139b5576139b4612d76565b5b5f6139c285828601612dc4565b92505060206139d3858286016135e6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a2157607f821691505b602082108103613a3457613a336139dd565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a7182612dd8565b9150613a7c83612dd8565b9250828202613a8a81612dd8565b91508282048414831517613aa157613aa0613a3a565b5b5092915050565b613ab181612f1f565b82525050565b5f60c082019050613aca5f8301896131b7565b613ad76020830188613488565b613ae46040830187613488565b613af16060830186613aa8565b613afe6080830185612ef7565b613b0b60a0830184612ef7565b979650505050505050565b5f604082019050613b295f830185613488565b613b366020830184613488565b9392505050565b5f604082019050613b505f83018561312d565b613b5d6020830184613488565b9392505050565b5f602082019050613b775f830184613488565b92915050565b5f602082019050613b905f830184613aa8565b92915050565b5f604082019050613ba95f8301856130b0565b613bb660208301846130b0565b9392505050565b5f604082019050613bd05f830185612ef7565b613bdd6020830184613488565b9392505050565b613bed81612e49565b8114613bf7575f5ffd5b50565b5f81519050613c0881613be4565b92915050565b5f60208284031215613c2357613c22612d76565b5b5f613c3084828501613bfa565b91505092915050565b5f608082019050613c4c5f8301876131b7565b613c5960208301866130b0565b613c6660408301856131b7565b613c7360608301846131b7565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60a082019050613cbc5f8301886131b7565b613cc960208301876131b7565b613cd660408301866131b7565b613ce36060830185612ef7565b613cf06080830184613488565b9695505050505050565b613d0381612f5a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f613d2d82613d09565b613d378185613d13565b9350613d47818560208601612cf7565b613d5081612d05565b840191505092915050565b5f608083015f830151613d705f8601826134c0565b506020830151613d836020860182613cfa565b506040830151613d966040860182613cfa565b5060608301518482036060860152613dae8282613d23565b9150508091505092915050565b5f6040820190508181035f830152613dd38185613d5b565b9050613de26020830184613488565b9392505050565b5f81519050613df781612de1565b92915050565b5f60208284031215613e1257613e11612d76565b5b5f613e1f84828501613de9565b91505092915050565b5f82825260208201905092915050565b5f613e438385613e28565b9350613e508385846132d5565b613e5983612d05565b840190509392505050565b5f608082019050613e775f830188613488565b613e846020830187613488565b613e91604083018661312d565b8181036060830152613ea4818486613e38565b90509695505050505050565b613eb981612dd8565b8114613ec3575f5ffd5b50565b5f81519050613ed481613eb0565b92915050565b5f60208284031215613eef57613eee612d76565b5b5f613efc84828501613ec6565b91505092915050565b5f613f0f82613155565b9150613f1a83613155565b9250828201905061ffff811115613f3457613f33613a3a565b5b92915050565b5f613f4482613155565b9150613f4f83613155565b9250828203905061ffff811115613f6957613f68613a3a565b5b92915050565b60208110613f8057613f7f613c7c565b5b50565b5f819050613f9082613f6f565b919050565b5f613f9f82613f83565b9050919050565b613faf81613f95565b82525050565b5f608082019050613fc85f8301876130b0565b613fd56020830186613fa6565b8181036040830152613fe781856134f2565b90508181036060830152613ffb81846134f2565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b61404881614033565b82525050565b5f6020820190506140615f83018461403f565b9291505056fea26469706673582212203fa568e140ee787bdaee9345ee73314fdade2fe68559ed2c7a6bb4ba741bb01964736f6c634300081b0033","sourceMap":"156:644:10:-:0;;;210:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;362:5;1700:4:1;3428:431:43;;;;;;;;;;;;;;;;;321:5:10;328:7;337:9;3998:5:0;3990;:13;;;;;;:::i;:::-;;4023:7;4013;:17;;;;;;:::i;:::-;;4052:9;4040;;:21;;;;;;;;;;;;;;;;;;4102:1;4089:9;:14;;;;:42;;4129:1;4117:9;:13;;;;:::i;:::-;4110:2;:21;;;;:::i;:::-;4089:42;;;4106:1;4089:42;4072:14;:59;;;;3907:231;;;3501:45:43;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;;1661:52:1;210:161:10;;;156:644;;2887:340:38;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:43:-;4268:7;2079:95;4326:11;;4339:14;;4355:13;4378:4;4304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;:::o;1708:286:38:-;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:40:-;3536:20;3617:10;3607:20;;3468:175;;;:::o;7:75:50:-;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:86::-;2605:7;2645:4;2638:5;2634:16;2623:27;;2570:86;;;:::o;2662:118::-;2733:22;2749:5;2733:22;:::i;:::-;2726:5;2723:33;2713:61;;2770:1;2767;2760:12;2713:61;2662:118;:::o;2786:139::-;2841:5;2872:6;2866:13;2857:22;;2888:31;2913:5;2888:31;:::i;:::-;2786:139;;;;:::o;2931:1005::-;3037:6;3045;3053;3102:2;3090:9;3081:7;3077:23;3073:32;3070:119;;;3108:79;;:::i;:::-;3070:119;3249:1;3238:9;3234:17;3228:24;3279:18;3271:6;3268:30;3265:117;;;3301:79;;:::i;:::-;3265:117;3406:74;3472:7;3463:6;3452:9;3448:22;3406:74;:::i;:::-;3396:84;;3199:291;3550:2;3539:9;3535:18;3529:25;3581:18;3573:6;3570:30;3567:117;;;3603:79;;:::i;:::-;3567:117;3708:74;3774:7;3765:6;3754:9;3750:22;3708:74;:::i;:::-;3698:84;;3500:292;3831:2;3857:62;3911:7;3902:6;3891:9;3887:22;3857:62;:::i;:::-;3847:72;;3802:127;2931:1005;;;;;:::o;3942:99::-;3994:6;4028:5;4022:12;4012:22;;3942:99;;;:::o;4047:180::-;4095:77;4092:1;4085:88;4192:4;4189:1;4182:15;4216:4;4213:1;4206:15;4233:320;4277:6;4314:1;4308:4;4304:12;4294:22;;4361:1;4355:4;4351:12;4382:18;4372:81;;4438:4;4430:6;4426:17;4416:27;;4372:81;4500:2;4492:6;4489:14;4469:18;4466:38;4463:84;;4519:18;;:::i;:::-;4463:84;4284:269;4233:320;;;:::o;4559:141::-;4608:4;4631:3;4623:11;;4654:3;4651:1;4644:14;4688:4;4685:1;4675:18;4667:26;;4559:141;;;:::o;4706:93::-;4743:6;4790:2;4785;4778:5;4774:14;4770:23;4760:33;;4706:93;;;:::o;4805:107::-;4849:8;4899:5;4893:4;4889:16;4868:37;;4805:107;;;;:::o;4918:393::-;4987:6;5037:1;5025:10;5021:18;5060:97;5090:66;5079:9;5060:97;:::i;:::-;5178:39;5208:8;5197:9;5178:39;:::i;:::-;5166:51;;5250:4;5246:9;5239:5;5235:21;5226:30;;5299:4;5289:8;5285:19;5278:5;5275:30;5265:40;;4994:317;;4918:393;;;;;:::o;5317:77::-;5354:7;5383:5;5372:16;;5317:77;;;:::o;5400:60::-;5428:3;5449:5;5442:12;;5400:60;;;:::o;5466:142::-;5516:9;5549:53;5567:34;5576:24;5594:5;5576:24;:::i;:::-;5567:34;:::i;:::-;5549:53;:::i;:::-;5536:66;;5466:142;;;:::o;5614:75::-;5657:3;5678:5;5671:12;;5614:75;;;:::o;5695:269::-;5805:39;5836:7;5805:39;:::i;:::-;5866:91;5915:41;5939:16;5915:41;:::i;:::-;5907:6;5900:4;5894:11;5866:91;:::i;:::-;5860:4;5853:105;5771:193;5695:269;;;:::o;5970:73::-;6015:3;6036:1;6029:8;;5970:73;:::o;6049:189::-;6126:32;;:::i;:::-;6167:65;6225:6;6217;6211:4;6167:65;:::i;:::-;6102:136;6049:189;;:::o;6244:186::-;6304:120;6321:3;6314:5;6311:14;6304:120;;;6375:39;6412:1;6405:5;6375:39;:::i;:::-;6348:1;6341:5;6337:13;6328:22;;6304:120;;;6244:186;;:::o;6436:543::-;6537:2;6532:3;6529:11;6526:446;;;6571:38;6603:5;6571:38;:::i;:::-;6655:29;6673:10;6655:29;:::i;:::-;6645:8;6641:44;6838:2;6826:10;6823:18;6820:49;;;6859:8;6844:23;;6820:49;6882:80;6938:22;6956:3;6938:22;:::i;:::-;6928:8;6924:37;6911:11;6882:80;:::i;:::-;6541:431;;6526:446;6436:543;;;:::o;6985:117::-;7039:8;7089:5;7083:4;7079:16;7058:37;;6985:117;;;;:::o;7108:169::-;7152:6;7185:51;7233:1;7229:6;7221:5;7218:1;7214:13;7185:51;:::i;:::-;7181:56;7266:4;7260;7256:15;7246:25;;7159:118;7108:169;;;;:::o;7282:295::-;7358:4;7504:29;7529:3;7523:4;7504:29;:::i;:::-;7496:37;;7566:3;7563:1;7559:11;7553:4;7550:21;7542:29;;7282:295;;;;:::o;7582:1395::-;7699:37;7732:3;7699:37;:::i;:::-;7801:18;7793:6;7790:30;7787:56;;;7823:18;;:::i;:::-;7787:56;7867:38;7899:4;7893:11;7867:38;:::i;:::-;7952:67;8012:6;8004;7998:4;7952:67;:::i;:::-;8046:1;8070:4;8057:17;;8102:2;8094:6;8091:14;8119:1;8114:618;;;;8776:1;8793:6;8790:77;;;8842:9;8837:3;8833:19;8827:26;8818:35;;8790:77;8893:67;8953:6;8946:5;8893:67;:::i;:::-;8887:4;8880:81;8749:222;8084:887;;8114:618;8166:4;8162:9;8154:6;8150:22;8200:37;8232:4;8200:37;:::i;:::-;8259:1;8273:208;8287:7;8284:1;8281:14;8273:208;;;8366:9;8361:3;8357:19;8351:26;8343:6;8336:42;8417:1;8409:6;8405:14;8395:24;;8464:2;8453:9;8449:18;8436:31;;8310:4;8307:1;8303:12;8298:17;;8273:208;;;8509:6;8500:7;8497:19;8494:179;;;8567:9;8562:3;8558:19;8552:26;8610:48;8652:4;8644:6;8640:17;8629:9;8610:48;:::i;:::-;8602:6;8595:64;8517:156;8494:179;8719:1;8715;8707:6;8703:14;8699:22;8693:4;8686:36;8121:611;;;8084:887;;7674:1303;;;7582:1395;;:::o;8983:180::-;9031:77;9028:1;9021:88;9128:4;9125:1;9118:15;9152:4;9149:1;9142:15;9169:191;9207:4;9227:18;9243:1;9227:18;:::i;:::-;9222:23;;9259:18;9275:1;9259:18;:::i;:::-;9254:23;;9301:1;9298;9294:9;9286:17;;9325:4;9319;9316:14;9313:40;;;9333:18;;:::i;:::-;9313:40;9169:191;;;;:::o;9366:102::-;9408:8;9455:5;9452:1;9448:13;9427:34;;9366:102;;;:::o;9474:848::-;9535:5;9542:4;9566:6;9557:15;;9590:5;9581:14;;9604:712;9625:1;9615:8;9612:15;9604:712;;;9720:4;9715:3;9711:14;9705:4;9702:24;9699:50;;;9729:18;;:::i;:::-;9699:50;9779:1;9769:8;9765:16;9762:451;;;10194:4;10187:5;10183:16;10174:25;;9762:451;10244:4;10238;10234:15;10226:23;;10274:32;10297:8;10274:32;:::i;:::-;10262:44;;9604:712;;;9474:848;;;;;;;:::o;10328:1073::-;10382:5;10573:8;10563:40;;10594:1;10585:10;;10596:5;;10563:40;10622:4;10612:36;;10639:1;10630:10;;10641:5;;10612:36;10708:4;10756:1;10751:27;;;;10792:1;10787:191;;;;10701:277;;10751:27;10769:1;10760:10;;10771:5;;;10787:191;10832:3;10822:8;10819:17;10816:43;;;10839:18;;:::i;:::-;10816:43;10888:8;10885:1;10881:16;10872:25;;10923:3;10916:5;10913:14;10910:40;;;10930:18;;:::i;:::-;10910:40;10963:5;;;10701:277;;11087:2;11077:8;11074:16;11068:3;11062:4;11059:13;11055:36;11037:2;11027:8;11024:16;11019:2;11013:4;11010:12;11006:35;10990:111;10987:246;;;11143:8;11137:4;11133:19;11124:28;;11178:3;11171:5;11168:14;11165:40;;;11185:18;;:::i;:::-;11165:40;11218:5;;10987:246;11258:42;11296:3;11286:8;11280:4;11277:1;11258:42;:::i;:::-;11243:57;;;;11332:4;11327:3;11323:14;11316:5;11313:25;11310:51;;;11341:18;;:::i;:::-;11310:51;11390:4;11383:5;11379:16;11370:25;;10328:1073;;;;;;:::o;11407:281::-;11465:5;11489:23;11507:4;11489:23;:::i;:::-;11481:31;;11533:25;11549:8;11533:25;:::i;:::-;11521:37;;11577:104;11614:66;11604:8;11598:4;11577:104;:::i;:::-;11568:113;;11407:281;;;;:::o;11694:77::-;11731:7;11760:5;11749:16;;11694:77;;;:::o;11777:118::-;11864:24;11882:5;11864:24;:::i;:::-;11859:3;11852:37;11777:118;;:::o;11901:::-;11988:24;12006:5;11988:24;:::i;:::-;11983:3;11976:37;11901:118;;:::o;12025:126::-;12062:7;12102:42;12095:5;12091:54;12080:65;;12025:126;;;:::o;12157:96::-;12194:7;12223:24;12241:5;12223:24;:::i;:::-;12212:35;;12157:96;;;:::o;12259:118::-;12346:24;12364:5;12346:24;:::i;:::-;12341:3;12334:37;12259:118;;:::o;12383:664::-;12588:4;12626:3;12615:9;12611:19;12603:27;;12640:71;12708:1;12697:9;12693:17;12684:6;12640:71;:::i;:::-;12721:72;12789:2;12778:9;12774:18;12765:6;12721:72;:::i;:::-;12803;12871:2;12860:9;12856:18;12847:6;12803:72;:::i;:::-;12885;12953:2;12942:9;12938:18;12929:6;12885:72;:::i;:::-;12967:73;13035:3;13024:9;13020:19;13011:6;12967:73;:::i;:::-;12383:664;;;;;;;;:::o;13053:169::-;13137:11;13171:6;13166:3;13159:19;13211:4;13206:3;13202:14;13187:29;;13053:169;;;;:::o;13228:377::-;13316:3;13344:39;13377:5;13344:39;:::i;:::-;13399:71;13463:6;13458:3;13399:71;:::i;:::-;13392:78;;13479:65;13537:6;13532:3;13525:4;13518:5;13514:16;13479:65;:::i;:::-;13569:29;13591:6;13569:29;:::i;:::-;13564:3;13560:39;13553:46;;13320:285;13228:377;;;;:::o;13611:313::-;13724:4;13762:2;13751:9;13747:18;13739:26;;13811:9;13805:4;13801:20;13797:1;13786:9;13782:17;13775:47;13839:78;13912:4;13903:6;13839:78;:::i;:::-;13831:86;;13611:313;;;;:::o;13930:98::-;13981:6;14015:5;14009:12;13999:22;;13930:98;;;:::o;14034:116::-;14085:4;14108:3;14100:11;;14138:4;14133:3;14129:14;14121:22;;14034:116;;;:::o;14156:154::-;14199:11;14235:29;14259:3;14253:10;14235:29;:::i;:::-;14298:5;14274:29;;14211:99;14156:154;;;:::o;14316:594::-;14400:5;14431:38;14463:5;14431:38;:::i;:::-;14494:5;14521:40;14555:5;14521:40;:::i;:::-;14509:52;;14580:35;14606:8;14580:35;:::i;:::-;14571:44;;14639:2;14631:6;14628:14;14625:278;;;14710:169;14795:66;14765:6;14761:2;14757:15;14754:1;14750:23;14710:169;:::i;:::-;14687:5;14666:227;14657:236;;14625:278;14406:504;;14316:594;;;:::o;156:644:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106101f9575f3560e01c80637ecebe0011610118578063a9fe9959116100ab578063d174999a1161007a578063d174999a14610605578063d4febb9614610635578063dd62ed3e14610651578063fca114d614610681578063fe3f670d146106b1576101f9565b8063a9fe99591461056b578063b4b201901461059b578063b6363cf2146105a5578063ca49d7cd146105d5576101f9565b80639645edd4116100e75780639645edd4146104bd578063a415f269146104ed578063a794ee951461050b578063a9059cbb1461053b576101f9565b80637ecebe001461041b5780637edb0e7d1461044b57806384b0196e1461047b57806395d89b411461049f576101f9565b8063344ff1011161019057806339ce5fdf1161015f57806339ce5fdf14610393578063490690f3146103af57806354095227146103cd57806370a08231146103eb576101f9565b8063344ff1011461030b57806334e3e2ba1461033b5780633644e51514610357578063365ac00214610375576101f9565b80631c5f75fd116101cc5780631c5f75fd1461028557806323b872dd146102a15780632893c5b0146102d1578063313ce567146102ed576101f9565b806306fdde03146101fd578063095ea7b31461021b57806313691c761461024b57806318160ddd14610267575b5f5ffd5b6102056106e1565b6040516102129190612d4d565b60405180910390f35b61023560048036038101906102309190612e0b565b610771565b6040516102429190612e63565b60405180910390f35b61026560048036038101906102609190612eb9565b6107a4565b005b61026f6107b3565b60405161027c9190612f06565b60405180910390f35b61029f600480360381019061029a9190612fc3565b6107da565b005b6102bb60048036038101906102b69190613060565b61091f565b6040516102c89190612e63565b60405180910390f35b6102eb60048036038101906102e69190612eb9565b610952565b005b6102f5610961565b60405161030291906130bf565b60405180910390f35b610325600480360381019061032091906130d8565b610976565b604051610332919061313c565b60405180910390f35b6103556004803603810190610350919061318c565b6109bc565b005b61035f6109db565b60405161036c91906131c6565b60405180910390f35b61037d6109e9565b60405161038a9190612e63565b60405180910390f35b6103ad60048036038101906103a891906131df565b6109f1565b005b6103b7610a4b565b6040516103c49190612f06565b60405180910390f35b6103d5610a54565b6040516103e2919061313c565b60405180910390f35b610405600480360381019061040091906130d8565b610a5d565b6040516104129190612f06565b60405180910390f35b610435600480360381019061043091906130d8565b610ac0565b6040516104429190612f06565b60405180910390f35b610465600480360381019061046091906133e2565b610ad1565b604051610472919061313c565b60405180910390f35b610483610b40565b604051610496979695949392919061354e565b60405180910390f35b6104a7610be5565b6040516104b49190612d4d565b60405180910390f35b6104d760048036038101906104d29190613657565b610c75565b6040516104e4919061313c565b60405180910390f35b6104f5610d28565b6040516105029190612e63565b60405180910390f35b610525600480360381019061052091906136db565b610d30565b604051610532919061313c565b60405180910390f35b61055560048036038101906105509190612e0b565b610d51565b6040516105629190612e63565b60405180910390f35b61058560048036038101906105809190613735565b610d84565b604051610592919061313c565b60405180910390f35b6105a3610de9565b005b6105bf60048036038101906105ba91906137a6565b610e41565b6040516105cc9190612e63565b60405180910390f35b6105ef60048036038101906105ea91906137e4565b610f15565b6040516105fc919061313c565b60405180910390f35b61061f600480360381019061061a9190613834565b610fc4565b60405161062c919061313c565b60405180910390f35b61064f600480360381019061064a91906138c1565b610fe9565b005b61066b600480360381019061066691906137a6565b610ff8565b6040516106789190612f06565b60405180910390f35b61069b600480360381019061069691906138ff565b61102b565b6040516106a8919061313c565b60405180910390f35b6106cb60048036038101906106c6919061399f565b61109e565b6040516106d8919061313c565b60405180910390f35b6060600580546106f090613a0a565b80601f016020809104026020016040519081016040528092919081815260200182805461071c90613a0a565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050505050905090565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107ae82826110ff565b505050565b5f60085460035f9054906101000a900461ffff1661ffff166107d59190613a67565b905090565b8342111561081f57836040517f627913020000000000000000000000000000000000000000000000000000000081526004016108169190612f06565b60405180910390fd5b5f7f3761e53ce7a62748833418e1c459b491875d6c4ec15966ef7f501194dce7fed288888861084d8c611195565b8960405160200161086396959493929190613ab7565b6040516020818303038152906040528051906020012090505f610885826111e8565b90505f61089482878787611201565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461090857808a6040517f4b800e460000000000000000000000000000000000000000000000000000000081526004016108ff929190613b16565b60405180910390fd5b6109138a8a8a61122f565b50505050505050505050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61095c8282611333565b505050565b5f60075f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8060035f6101000a81548161ffff021916908361ffff16021790555050565b5f6109e46113c9565b905090565b5f6001905090565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505050565b5f600854905090565b5f600454905090565b5f6008545f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff1661ffff16610ab99190613a67565b9050919050565b5f610aca8261147f565b9050919050565b5f610adc8433610e41565b610b1f5783336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610b16929190613b16565b60405180910390fd5b5f610b29836114c5565b9050610b36858583611538565b9150509392505050565b5f6060805f5f5f6060610b5161162d565b610b59611668565b46305f5f1b5f67ffffffffffffffff811115610b7857610b77613221565b5b604051908082528060200260200182016040528015610ba65781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b606060068054610bf490613a0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2090613a0a565b8015610c6b5780601f10610c4257610100808354040283529160200191610c6b565b820191905f5260205f20905b815481529060010190602001808311610c4e57829003601f168201915b5050505050905090565b5f610c8084336116a3565b610cc35783336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610cba929190613b3d565b60405180910390fd5b610ccd8633610e41565b610d105785336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610d07929190613b16565b60405180910390fd5b610d1d868686868661173b565b905095945050505050565b5f6001905090565b5f5f610d3b836114c5565b9050610d48338583611538565b91505092915050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d8f84336116a3565b610dd25783336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610dc9929190613b3d565b60405180910390fd5b610ddf338686868661173b565b9050949350505050565b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff160217905550565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610f0d575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900465ffffffffffff1665ffffffffffff164211155b905092915050565b5f610f2082336116a3565b610f635781336040517fd5fdb3f0000000000000000000000000000000000000000000000000000000008152600401610f5a929190613b3d565b60405180910390fd5b610f6d8433610e41565b610fb05783336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401610fa7929190613b16565b60405180910390fd5b610fbb848484611538565b90509392505050565b5f5f610fcf856114c5565b9050610fde338783878761173b565b915050949350505050565b610ff433838361122f565b5050565b5f6040517fd411f9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110368633610e41565b6110795785336040517fd2251dd5000000000000000000000000000000000000000000000000000000008152600401611070929190613b16565b60405180910390fd5b5f611083856114c5565b9050611092878783878761173b565b91505095945050505050565b5f6110a982336116a3565b6110ec5781336040517fd5fdb3f00000000000000000000000000000000000000000000000000000000081526004016110e3929190613b3d565b60405180910390fd5b6110f7338484611538565b905092915050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611170575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016111679190613b64565b60405180910390fd5b61118d835f6111888567ffffffffffffffff16611793565b6117a5565b905092915050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f6111fa6111f46113c9565b83611e40565b9050919050565b5f5f5f5f61121188888888611e80565b9250925092506112218282611f67565b829350505050949350505050565b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f921a218a75d18e8ec5704851e6b234a85725b21a2521ce889622c35dedc1fa12836040516113269190613b7d565b60405180910390a3505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a4575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161139b9190613b64565b60405180910390fd5b6113c15f846113bc8567ffffffffffffffff16611793565b6117a5565b905092915050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561144457507f000000000000000000000000000000000000000000000000000000000000000046145b15611471577f0000000000000000000000000000000000000000000000000000000000000000905061147c565b6114796120c9565b90505b90565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5f600590508060ff16836040015160ff161461151f578260400151816040517f67cf3071000000000000000000000000000000000000000000000000000000008152600401611516929190613b96565b60405180910390fd5b61153061152b8461215e565b6121a0565b915050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036115a9575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016115a09190613b64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611619575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116109190613b64565b60405180910390fd5b6116248484846117a5565b90509392505050565b606061166360097f000000000000000000000000000000000000000000000000000000000000000061223790919063ffffffff16565b905090565b606061169e600a7f000000000000000000000000000000000000000000000000000000000000000061223790919063ffffffff16565b905090565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff16635faa299a84846040518363ffffffff1660e01b81526004016116f3929190613bbd565b6020604051808303815f875af115801561170f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117339190613c0e565b905092915050565b5f5f611748878787611538565b90505f6117593389898589896122e4565b90505f611779888a6117748561176e5f611793565b88612421565b6117a5565b90506117858382612483565b935050505095945050505050565b5f61179e825f6124cc565b9050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146118425761183b61182c60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054846124e690919063ffffffff16565b836118365f611793565b612421565b9050611846565b8190505b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118c35761189160035f9054906101000a900461ffff166124f9565b60035f6101000a81548161ffff021916908361ffff1602179055506118b860045482612535565b6004819055506119f3565b61190a60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482612483565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061199d5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff1661257e565b5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a7057611a3e60035f9054906101000a900461ffff1661257e565b60035f6101000a81548161ffff021916908361ffff160217905550611a6560045482612483565b600481905550611ba0565b611ab760015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482612535565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611b4a5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900461ffff166124f9565b5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548161ffff021916908361ffff1602179055505b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611c7c57611c2a60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b9565b611c7160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205485612638565b611c7b8185612638565b5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611d5857611d0660015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b9565b611d4d60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484612638565b611d578184612638565b5b611d628133612638565b611d6d6004546125b9565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051611dcc9190612f06565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdef6144e0f80e23ca465862f2f93a21f8526624729198aed904b46e005c943e483604051611e319190612f06565b60405180910390a39392505050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611ebc575f600385925092509250611f5d565b5f6001888888886040515f8152602001604052604051611edf9493929190613c39565b6020604051602081039080840390855afa158015611eff573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f50575f60015f5f1b93509350935050611f5d565b805f5f5f1b935093509350505b9450945094915050565b5f6003811115611f7a57611f79613c7c565b5b826003811115611f8d57611f8c613c7c565b5b03156120c55760016003811115611fa757611fa6613c7c565b5b826003811115611fba57611fb9613c7c565b5b03611ff1576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561200557612004613c7c565b5b82600381111561201857612017613c7c565b5b0361205c57805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016120539190612f06565b60405180910390fd5b60038081111561206f5761206e613c7c565b5b82600381111561208257612081613c7c565b5b036120c457806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016120bb91906131c6565b60405180910390fd5b5b5050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001612143959493929190613ca9565b60405160208183030381529060405280519060200120905090565b612166612cb2565b6040518060800160405280835f01518152602001836020015160ff168152602001600560ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016121f0929190613dbb565b6020604051808303815f875af115801561220c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122309190613dfd565b9050919050565b606060ff5f1b83146122535761224c836126b8565b90506122de565b81805461225f90613a0a565b80601f016020809104026020016040519081016040528092919081815260200182805461228b90613a0a565b80156122d65780601f106122ad576101008083540402835291602001916122d6565b820191905f5260205f20905b8154815290600101906020018083116122b957829003601f168201915b505050505090505b92915050565b5f5f8573ffffffffffffffffffffffffffffffffffffffff163b111561240a578473ffffffffffffffffffffffffffffffffffffffff1663944e3ddb88888787876040518663ffffffff1660e01b8152600401612345959493929190613e64565b6020604051808303815f875af192505050801561238057506040513d601f19601f8201168201806040525081019061237d9190613eda565b60015b612401573d805f81146123ae576040519150601f19603f3d011682016040523d82523d5f602084013e6123b3565b606091505b505f8151036123f957856040517f502133790000000000000000000000000000000000000000000000000000000081526004016123f09190613b64565b60405180910390fd5b805181602001fd5b80915050612417565b612414600161272a565b90505b9695505050505050565b5f61242b8461273c565b61243b576124385f61272a565b93505b6124448361274d565b612454576124515f611793565b92505b61245d8261274d565b61246d5761246a5f611793565b91505b61247a600585858561275e565b90509392505050565b5f61248d8361274d565b61249d5761249a5f611793565b92505b6124a68261274d565b6124b6576124b35f611793565b91505b6124c460058484600761284f565b905092915050565b5f5f6124da8460058561293e565b90508091505092915050565b5f6124f18383612a39565b905092915050565b5f5f8261ffff161480612511575061270f8261ffff16145b15612520576113899050612530565b60018261252d9190613f05565b90505b919050565b5f61253f8361274d565b61254f5761254c5f611793565b92505b6125588261274d565b612568576125655f611793565b91505b61257660058484600861284f565b905092915050565b5f5f8261ffff161480612595575060018261ffff16145b156125a45761138790506125b4565b6001826125b19190613f3a565b90505b919050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c82306040518363ffffffff1660e01b8152600401612608929190613bbd565b5f604051808303815f87803b15801561261f575f5ffd5b505af1158015612631573d5f5f3e3d5ffd5b5050505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff166365d0509c83836040518363ffffffff1660e01b8152600401612687929190613bbd565b5f604051808303815f87803b15801561269e575f5ffd5b505af11580156126b0573d5f5f3e3d5ffd5b505050505050565b60605f6126c483612a82565b90505f602067ffffffffffffffff8111156126e2576126e1613221565b5b6040519080825280601f01601f1916602001820160405280156127145781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f612735825f612ad0565b9050919050565b5f61274682612af9565b9050919050565b5f61275782612af9565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd86600461279d888888612b05565b5f67ffffffffffffffff8111156127b7576127b6613221565b5b6040519080825280602002602001820160405280156127e55781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016128059493929190613fb5565b6020604051808303815f875af1158015612821573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128459190613dfd565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd868461288c8888612bc1565b5f67ffffffffffffffff8111156128a6576128a5613221565b5b6040519080825280602002602001820160405280156128d45781602001602082028036833780820191505090505b506040518563ffffffff1660e01b81526004016128f49493929190613fb5565b6020604051808303815f875af1158015612910573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129349190613dfd565b9050949350505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff81111561298c5761298b613221565b5b6040519080825280602002602001820160405280156129ba5781602001602082028036833780820191505090505b506129d1898960ff166129cc8a612c5b565b612b05565b6040518563ffffffff1660e01b81526004016129f09493929190613fb5565b6020604051808303815f875af1158015612a0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a309190613dfd565b90509392505050565b5f612a438361274d565b612a5357612a505f611793565b92505b612a5c8261274d565b612a6c57612a695f611793565b91505b612a7a60058484601361284f565b905092915050565b5f5f60ff835f1c169050601f811115612ac7576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f5f5f90508315612ae057600190505b5f612aec825f8661293e565b9050809250505092915050565b5f5f8214159050919050565b60605f600367ffffffffffffffff811115612b2357612b22613221565b5b604051908082528060200260200182016040528015612b515781602001602082028036833780820191505090505b50905084815f81518110612b6857612b67614006565b5b6020026020010181815250508381600181518110612b8957612b88614006565b5b6020026020010181815250508281600281518110612baa57612ba9614006565b5b602002602001018181525050809150509392505050565b60605f600267ffffffffffffffff811115612bdf57612bde613221565b5b604051908082528060200260200182016040528015612c0d5781602001602082028036833780820191505090505b50905083815f81518110612c2457612c23614006565b5b6020026020010181815250508281600181518110612c4557612c44614006565b5b6020026020010181815250508091505092915050565b5f5f8260030b1215612ca457816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401612c9b919061404e565b60405180910390fd5b8163ffffffff169050919050565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d1f82612cdd565b612d298185612ce7565b9350612d39818560208601612cf7565b612d4281612d05565b840191505092915050565b5f6020820190508181035f830152612d658184612d15565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612da782612d7e565b9050919050565b612db781612d9d565b8114612dc1575f5ffd5b50565b5f81359050612dd281612dae565b92915050565b5f819050919050565b612dea81612dd8565b8114612df4575f5ffd5b50565b5f81359050612e0581612de1565b92915050565b5f5f60408385031215612e2157612e20612d76565b5b5f612e2e85828601612dc4565b9250506020612e3f85828601612df7565b9150509250929050565b5f8115159050919050565b612e5d81612e49565b82525050565b5f602082019050612e765f830184612e54565b92915050565b5f67ffffffffffffffff82169050919050565b612e9881612e7c565b8114612ea2575f5ffd5b50565b5f81359050612eb381612e8f565b92915050565b5f5f60408385031215612ecf57612ece612d76565b5b5f612edc85828601612dc4565b9250506020612eed85828601612ea5565b9150509250929050565b612f0081612dd8565b82525050565b5f602082019050612f195f830184612ef7565b92915050565b5f65ffffffffffff82169050919050565b612f3981612f1f565b8114612f43575f5ffd5b50565b5f81359050612f5481612f30565b92915050565b5f60ff82169050919050565b612f6f81612f5a565b8114612f79575f5ffd5b50565b5f81359050612f8a81612f66565b92915050565b5f819050919050565b612fa281612f90565b8114612fac575f5ffd5b50565b5f81359050612fbd81612f99565b92915050565b5f5f5f5f5f5f5f60e0888a031215612fde57612fdd612d76565b5b5f612feb8a828b01612dc4565b9750506020612ffc8a828b01612dc4565b965050604061300d8a828b01612f46565b955050606061301e8a828b01612df7565b945050608061302f8a828b01612f7c565b93505060a06130408a828b01612faf565b92505060c06130518a828b01612faf565b91505092959891949750929550565b5f5f5f6060848603121561307757613076612d76565b5b5f61308486828701612dc4565b935050602061309586828701612dc4565b92505060406130a686828701612df7565b9150509250925092565b6130b981612f5a565b82525050565b5f6020820190506130d25f8301846130b0565b92915050565b5f602082840312156130ed576130ec612d76565b5b5f6130fa84828501612dc4565b91505092915050565b5f819050919050565b5f61312661312161311c84612dd8565b613103565b612dd8565b9050919050565b6131368161310c565b82525050565b5f60208201905061314f5f83018461312d565b92915050565b5f61ffff82169050919050565b61316b81613155565b8114613175575f5ffd5b50565b5f8135905061318681613162565b92915050565b5f602082840312156131a1576131a0612d76565b5b5f6131ae84828501613178565b91505092915050565b6131c081612f90565b82525050565b5f6020820190506131d95f8301846131b7565b92915050565b5f5f604083850312156131f5576131f4612d76565b5b5f61320285828601612dc4565b925050602061321385828601613178565b9150509250929050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61325782612d05565b810181811067ffffffffffffffff8211171561327657613275613221565b5b80604052505050565b5f613288612d6d565b9050613294828261324e565b919050565b5f5ffd5b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156132bf576132be613221565b5b6132c882612d05565b9050602081019050919050565b828183375f83830152505050565b5f6132f56132f0846132a5565b61327f565b905082815260208101848484011115613311576133106132a1565b5b61331c8482856132d5565b509392505050565b5f82601f8301126133385761333761329d565b5b81356133488482602086016132e3565b91505092915050565b5f608082840312156133665761336561321d565b5b613370608061327f565b90505f61337f84828501612df7565b5f83015250602061339284828501612f7c565b60208301525060406133a684828501612f7c565b604083015250606082013567ffffffffffffffff8111156133ca576133c9613299565b5b6133d684828501613324565b60608301525092915050565b5f5f5f606084860312156133f9576133f8612d76565b5b5f61340686828701612dc4565b935050602061341786828701612dc4565b925050604084013567ffffffffffffffff81111561343857613437612d7a565b5b61344486828701613351565b9150509250925092565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6134828161344e565b82525050565b61349181612d9d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134c981612dd8565b82525050565b5f6134da83836134c0565b60208301905092915050565b5f602082019050919050565b5f6134fc82613497565b61350681856134a1565b9350613511836134b1565b805f5b8381101561354157815161352888826134cf565b9750613533836134e6565b925050600181019050613514565b5085935050505092915050565b5f60e0820190506135615f83018a613479565b81810360208301526135738189612d15565b905081810360408301526135878188612d15565b90506135966060830187612ef7565b6135a36080830186613488565b6135b060a08301856131b7565b81810360c08301526135c281846134f2565b905098975050505050505050565b6135d981612dd8565b81146135e3575f5ffd5b50565b5f813590506135f4816135d0565b92915050565b5f5ffd5b5f5ffd5b5f5f83601f8401126136175761361661329d565b5b8235905067ffffffffffffffff811115613634576136336135fa565b5b6020830191508360018202830111156136505761364f6135fe565b5b9250929050565b5f5f5f5f5f608086880312156136705761366f612d76565b5b5f61367d88828901612dc4565b955050602061368e88828901612dc4565b945050604061369f888289016135e6565b935050606086013567ffffffffffffffff8111156136c0576136bf612d7a565b5b6136cc88828901613602565b92509250509295509295909350565b5f5f604083850312156136f1576136f0612d76565b5b5f6136fe85828601612dc4565b925050602083013567ffffffffffffffff81111561371f5761371e612d7a565b5b61372b85828601613351565b9150509250929050565b5f5f5f5f6060858703121561374d5761374c612d76565b5b5f61375a87828801612dc4565b945050602061376b878288016135e6565b935050604085013567ffffffffffffffff81111561378c5761378b612d7a565b5b61379887828801613602565b925092505092959194509250565b5f5f604083850312156137bc576137bb612d76565b5b5f6137c985828601612dc4565b92505060206137da85828601612dc4565b9150509250929050565b5f5f5f606084860312156137fb576137fa612d76565b5b5f61380886828701612dc4565b935050602061381986828701612dc4565b925050604061382a868287016135e6565b9150509250925092565b5f5f5f5f6060858703121561384c5761384b612d76565b5b5f61385987828801612dc4565b945050602085013567ffffffffffffffff81111561387a57613879612d7a565b5b61388687828801613351565b935050604085013567ffffffffffffffff8111156138a7576138a6612d7a565b5b6138b387828801613602565b925092505092959194509250565b5f5f604083850312156138d7576138d6612d76565b5b5f6138e485828601612dc4565b92505060206138f585828601612f46565b9150509250929050565b5f5f5f5f5f6080868803121561391857613917612d76565b5b5f61392588828901612dc4565b955050602061393688828901612dc4565b945050604086013567ffffffffffffffff81111561395757613956612d7a565b5b61396388828901613351565b935050606086013567ffffffffffffffff81111561398457613983612d7a565b5b61399088828901613602565b92509250509295509295909350565b5f5f604083850312156139b5576139b4612d76565b5b5f6139c285828601612dc4565b92505060206139d3858286016135e6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a2157607f821691505b602082108103613a3457613a336139dd565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a7182612dd8565b9150613a7c83612dd8565b9250828202613a8a81612dd8565b91508282048414831517613aa157613aa0613a3a565b5b5092915050565b613ab181612f1f565b82525050565b5f60c082019050613aca5f8301896131b7565b613ad76020830188613488565b613ae46040830187613488565b613af16060830186613aa8565b613afe6080830185612ef7565b613b0b60a0830184612ef7565b979650505050505050565b5f604082019050613b295f830185613488565b613b366020830184613488565b9392505050565b5f604082019050613b505f83018561312d565b613b5d6020830184613488565b9392505050565b5f602082019050613b775f830184613488565b92915050565b5f602082019050613b905f830184613aa8565b92915050565b5f604082019050613ba95f8301856130b0565b613bb660208301846130b0565b9392505050565b5f604082019050613bd05f830185612ef7565b613bdd6020830184613488565b9392505050565b613bed81612e49565b8114613bf7575f5ffd5b50565b5f81519050613c0881613be4565b92915050565b5f60208284031215613c2357613c22612d76565b5b5f613c3084828501613bfa565b91505092915050565b5f608082019050613c4c5f8301876131b7565b613c5960208301866130b0565b613c6660408301856131b7565b613c7360608301846131b7565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60a082019050613cbc5f8301886131b7565b613cc960208301876131b7565b613cd660408301866131b7565b613ce36060830185612ef7565b613cf06080830184613488565b9695505050505050565b613d0381612f5a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f613d2d82613d09565b613d378185613d13565b9350613d47818560208601612cf7565b613d5081612d05565b840191505092915050565b5f608083015f830151613d705f8601826134c0565b506020830151613d836020860182613cfa565b506040830151613d966040860182613cfa565b5060608301518482036060860152613dae8282613d23565b9150508091505092915050565b5f6040820190508181035f830152613dd38185613d5b565b9050613de26020830184613488565b9392505050565b5f81519050613df781612de1565b92915050565b5f60208284031215613e1257613e11612d76565b5b5f613e1f84828501613de9565b91505092915050565b5f82825260208201905092915050565b5f613e438385613e28565b9350613e508385846132d5565b613e5983612d05565b840190509392505050565b5f608082019050613e775f830188613488565b613e846020830187613488565b613e91604083018661312d565b8181036060830152613ea4818486613e38565b90509695505050505050565b613eb981612dd8565b8114613ec3575f5ffd5b50565b5f81519050613ed481613eb0565b92915050565b5f60208284031215613eef57613eee612d76565b5b5f613efc84828501613ec6565b91505092915050565b5f613f0f82613155565b9150613f1a83613155565b9250828201905061ffff811115613f3457613f33613a3a565b5b92915050565b5f613f4482613155565b9150613f4f83613155565b9250828203905061ffff811115613f6957613f68613a3a565b5b92915050565b60208110613f8057613f7f613c7c565b5b50565b5f819050613f9082613f6f565b919050565b5f613f9f82613f83565b9050919050565b613faf81613f95565b82525050565b5f608082019050613fc85f8301876130b0565b613fd56020830186613fa6565b8181036040830152613fe781856134f2565b90508181036060830152613ffb81846134f2565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160030b9050919050565b61404881614033565b82525050565b5f6020820190506140615f83018461403f565b9291505056fea26469706673582212203fa568e140ee787bdaee9345ee73314fdade2fe68559ed2c7a6bb4ba741bb01964736f6c634300081b0033","sourceMap":"156:644:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4361:89:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8969:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;473:90:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5488:123:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1719:675:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9235:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;377:90:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5289:89:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7194:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;698:100:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3028:112:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4212:84:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;569:123:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6383:93:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5681:112;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6908:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2699:137:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10164:385:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:557:43;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;4563:93:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12145:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6210:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9627:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8085:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11325:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19553:93;;;:::i;:::-;;7424:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10555:465;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11026:293;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7814:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8525:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11705:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9855:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4361:89;4406:13;4438:5;4431:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4361:89;:::o;8969:117::-;9027:4;9050:29;;;;;;;;;;;;;;473:90:10;535:21;541:7;550:5;535;:21::i;:::-;;473:90;;:::o;5488:123:0:-;5540:7;5590:14;;5566:21;;;;;;;;;;;:38;;;;;;:::i;:::-;5559:45;;5488:123;:::o;1719:675:1:-;1939:8;1921:15;:26;1917:97;;;1994:8;1970:33;;;;;;;;;;;:::i;:::-;;;;;;;;1917:97;2024:18;1110:94;2083:5;2090:7;2099:5;2106:16;2116:5;2106:9;:16::i;:::-;2124:8;2055:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2045:89;;;;;;2024:110;;2145:12;2160:28;2177:10;2160:16;:28::i;:::-;2145:43;;2199:14;2216:28;2230:4;2236:1;2239;2242;2216:13;:28::i;:::-;2199:45;;2268:5;2258:15;;:6;:15;;;2254:88;;2317:6;2325:5;2296:35;;;;;;;;;;;;:::i;:::-;;;;;;;;2254:88;2352:35;2365:5;2372:7;2381:5;2352:12;:35::i;:::-;1907:487;;;1719:675;;;;;;;:::o;9235:129:0:-;9305:4;9328:29;;;;;;;;;;;;;;377:90:10;439:21;445:7;454:5;439;:21::i;:::-;;377:90;;:::o;5289:89:0:-;5338:5;5362:9;;;;;;;;;;;5355:16;;5289:89;:::o;7194:131::-;7271:7;7297:12;:21;7310:7;7297:21;;;;;;;;;;;;;;;;7290:28;;7194:131;;;:::o;698:100:10:-;786:5;762:21;;:29;;;;;;;;;;;;;;;;;;698:100;:::o;3028:112:1:-;3087:7;3113:20;:18;:20::i;:::-;3106:27;;3028:112;:::o;4212:84:0:-;4262:4;4285;4278:11;;4212:84;:::o;569:123:10:-;680:5;650:18;:27;669:7;650:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;569:123;;:::o;6383:93:0:-;6429:7;6455:14;;6448:21;;6383:93;:::o;5681:112::-;5745:7;5771:15;;5764:22;;5681:112;:::o;6908:142::-;6973:7;7029:14;;6999:18;:27;7018:7;6999:27;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;;:::i;:::-;6992:51;;6908:142;;;:::o;2699:137:1:-;2784:7;2810:19;2823:5;2810:12;:19::i;:::-;2803:26;;2699:137;;;:::o;10164:385:0:-;10302:19;10338:28;10349:4;10355:10;10338;:28::i;:::-;10333:111;;10416:4;10422:10;10389:44;;;;;;;;;;;;:::i;:::-;;;;;;;;10333:111;10453:13;10469:22;10483:7;10469:13;:22::i;:::-;10453:38;;10516:26;10526:4;10532:2;10536:5;10516:9;:26::i;:::-;10502:40;;10323:226;10164:385;;;;;:::o;5228:557:43:-;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;4563:93:0:-;4610:13;4642:7;4635:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4563:93;:::o;12145:514::-;12310:19;12346:32;12360:5;12367:10;12346:13;:32::i;:::-;12341:129;;12441:5;12448:10;12401:58;;;;;;;;;;;;:::i;:::-;;;;;;;;12341:129;12484:28;12495:4;12501:10;12484;:28::i;:::-;12479:111;;12562:4;12568:10;12535:44;;;;;;;;;;;;:::i;:::-;;;;;;;;12479:111;12613:39;12630:4;12636:2;12640:5;12647:4;;12613:16;:39::i;:::-;12599:53;;12145:514;;;;;;;:::o;6210:95::-;6271:4;6294;6287:11;;6210:95;:::o;9627:222::-;9717:19;9748:13;9764:22;9778:7;9764:13;:22::i;:::-;9748:38;;9810:32;9820:10;9832:2;9836:5;9810:9;:32::i;:::-;9796:46;;9738:111;9627:222;;;;:::o;8085:116::-;8142:4;8165:29;;;;;;;;;;;;;;11325:374;11464:19;11500:32;11514:5;11521:10;11500:13;:32::i;:::-;11495:129;;11595:5;11602:10;11555:58;;;;;;;;;;;;:::i;:::-;;;;;;;;11495:129;11647:45;11664:10;11676:2;11680:5;11687:4;;11647:16;:45::i;:::-;11633:59;;11325:374;;;;;;:::o;19553:93::-;19638:1;19605:18;:30;19624:10;19605:30;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19553:93::o;7424:179::-;7506:4;7539:7;7529:17;;:6;:17;;;:67;;;;7569:10;:18;7580:6;7569:18;;;;;;;;;;;;;;;:27;7588:7;7569:27;;;;;;;;;;;;;;;;;;;;;;;;;7550:46;;:15;:46;;7529:67;7522:74;;7424:179;;;;:::o;10555:465::-;10684:19;10720:32;10734:5;10741:10;10720:13;:32::i;:::-;10715:129;;10815:5;10822:10;10775:58;;;;;;;;;;;;:::i;:::-;;;;;;;;10715:129;10858:28;10869:4;10875:10;10858;:28::i;:::-;10853:111;;10936:4;10942:10;10909:44;;;;;;;;;;;;:::i;:::-;;;;;;;;10853:111;10987:26;10997:4;11003:2;11007:5;10987:9;:26::i;:::-;10973:40;;10555:465;;;;;:::o;11026:293::-;11174:19;11205:13;11221:22;11235:7;11221:13;:22::i;:::-;11205:38;;11267:45;11284:10;11296:2;11300:5;11307:4;;11267:16;:45::i;:::-;11253:59;;11195:124;11026:293;;;;;;:::o;7814:126::-;7892:41;7905:10;7917:8;7927:5;7892:12;:41::i;:::-;7814:126;;:::o;8525:122::-;8585:7;8611:29;;;;;;;;;;;;;;11705:434;11879:19;11915:28;11926:4;11932:10;11915;:28::i;:::-;11910:111;;11993:4;11999:10;11966:44;;;;;;;;;;;;:::i;:::-;;;;;;;;11910:111;12030:13;12046:22;12060:7;12046:13;:22::i;:::-;12030:38;;12093:39;12110:4;12116:2;12120:5;12127:4;;12093:16;:39::i;:::-;12079:53;;11900:239;11705:434;;;;;;;:::o;9855:303::-;9936:19;9972:32;9986:5;9993:10;9972:13;:32::i;:::-;9967:129;;10067:5;10074:10;10027:58;;;;;;;;;;;;:::i;:::-;;;;;;;;9967:129;10119:32;10129:10;10141:2;10145:5;10119:9;:32::i;:::-;10105:46;;9855:303;;;;:::o;18080:264::-;18144:19;18198:1;18179:21;;:7;:21;;;18175:89;;18250:1;18223:30;;;;;;;;;;;:::i;:::-;;;;;;;;18175:89;18287:50;18295:7;18312:1;18316:20;18330:5;18316:20;;:13;:20::i;:::-;18287:7;:50::i;:::-;18273:64;;18080:264;;;;:::o;759:395:36:-;819:7;1121;:14;1129:5;1121:14;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;1114:23;;759:395;;;:::o;5017:176:43:-;5094:7;5120:66;5153:20;:18;:20::i;:::-;5175:10;5120:32;:66::i;:::-;5113:73;;5017:176;;;:::o;6887:260:42:-;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;7131:9;7124:16;;;;;6887:260;;;;;;:::o;19652:191:0:-;19780:5;19749:10;:18;19760:6;19749:18;;;;;;;;;;;;;;;:28;19768:8;19749:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19820:8;19800:36;;19812:6;19800:36;;;19830:5;19800:36;;;;;;:::i;:::-;;;;;;;;19652:191;;;:::o;17496:266::-;17560:19;17614:1;17595:21;;:7;:21;;;17591:91;;17668:1;17639:32;;;;;;;;;;;:::i;:::-;;;;;;;;17591:91;17705:50;17721:1;17725:7;17734:20;17748:5;17734:20;;:13;:20::i;:::-;17705:7;:50::i;:::-;17691:64;;17496:266;;;;:::o;3945:262:43:-;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;538:107:36:-;598:7;624;:14;632:5;624:14;;;;;;;;;;;;;;;;617:21;;538:107;;;:::o;116213:335:18:-;116272:7;116291:19;7816:1:22;116291:40:18;;116360:13;116345:28;;:5;:11;;;:28;;;116341:115;;116418:5;:11;;;116431:13;116396:49;;;;;;;;;;;;:::i;:::-;;;;;;;;116341:115;116487:53;116510:29;116533:5;116510:22;:29::i;:::-;116487:22;:53::i;:::-;116467:74;;;116213:335;;;:::o;13031:344:0:-;13109:19;13160:1;13144:18;;:4;:18;;;13140:86;;13212:1;13185:30;;;;;;;;;;;:::i;:::-;;;;;;;;13140:86;13253:1;13239:16;;:2;:16;;;13235:86;;13307:1;13278:32;;;;;;;;;;;:::i;:::-;;;;;;;;13235:86;13344:24;13352:4;13358:2;13362:5;13344:7;:24::i;:::-;13330:38;;13031:344;;;;;:::o;6105:126:43:-;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;142600:176:18:-;142670:4;1226:42;142693:43;;;142752:6;142761:7;142693:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;142686:83;;142600:176;;;;:::o;13381:612:0:-;13526:19;13641:12;13656:27;13666:4;13672:2;13676:6;13656:9;:27::i;:::-;13641:42;;13722:13;13738:70;13775:10;13787:4;13793:2;13797:4;13803;;13738:36;:70::i;:::-;13722:86;;13862:14;13879:62;13887:2;13891:4;13897:43;13908:7;13917:16;13931:1;13917:13;:16::i;:::-;13935:4;13897:10;:43::i;:::-;13879:7;:62::i;:::-;13862:79;;13965:21;13973:4;13979:6;13965:7;:21::i;:::-;13951:35;;13547:446;;;13381:612;;;;;;;:::o;128636:104:18:-;128688:7;128714:19;128724:5;128731:1;128714:9;:19::i;:::-;128707:26;;128636:104;;;:::o;14868:2285:0:-;14952:19;15456:1;15440:18;;:4;:18;;;15436:179;;15488:66;15499:29;15509:12;:18;15522:4;15509:18;;;;;;;;;;;;;;;;15499:5;:9;;:29;;;;:::i;:::-;15530:5;15537:16;15551:1;15537:13;:16::i;:::-;15488:10;:66::i;:::-;15474:80;;15436:179;;;15599:5;15585:19;;15436:179;15645:1;15629:18;;:4;:18;;;15625:362;;15687:42;15707:21;;;;;;;;;;;15687:19;:42::i;:::-;15663:21;;:66;;;;;;;;;;;;;;;;;;15761:37;15769:15;;15786:11;15761:7;:37::i;:::-;15743:15;:55;;;;15625:362;;;15850:40;15858:12;:18;15871:4;15858:18;;;;;;;;;;;;;;;;15878:11;15850:7;:40::i;:::-;15829:12;:18;15842:4;15829:18;;;;;;;;;;;;;;;:61;;;;15931:45;15951:18;:24;15970:4;15951:24;;;;;;;;;;;;;;;;;;;;;;;;;15931:19;:45::i;:::-;15904:18;:24;15923:4;15904:24;;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;15625:362;16015:1;16001:16;;:2;:16;;;15997:352;;16057:42;16077:21;;;;;;;;;;;16057:19;:42::i;:::-;16033:21;;:66;;;;;;;;;;;;;;;;;;16131:37;16139:15;;16156:11;16131:7;:37::i;:::-;16113:15;:55;;;;15997:352;;;16218:38;16226:12;:16;16239:2;16226:16;;;;;;;;;;;;;;;;16244:11;16218:7;:38::i;:::-;16199:12;:16;16212:2;16199:16;;;;;;;;;;;;;;;:57;;;;16295:43;16315:18;:22;16334:2;16315:22;;;;;;;;;;;;;;;;;;;;;;;;;16295:19;:43::i;:::-;16270:18;:22;16289:2;16270:22;;;;;;;;;;;;;;;;:68;;;;;;;;;;;;;;;;;;15997:352;16502:1;16479:12;:18;16492:4;16479:18;;;;;;;;;;;;;;;;16464:39;16460:194;;16519:33;16533:12;:18;16546:4;16533:18;;;;;;;;;;;;;;;;16519:13;:33::i;:::-;16566:35;16576:12;:18;16589:4;16576:18;;;;;;;;;;;;;;;;16596:4;16566:9;:35::i;:::-;16615:28;16625:11;16638:4;16615:9;:28::i;:::-;16460:194;16703:1;16682:12;:16;16695:2;16682:16;;;;;;;;;;;;;;;;16667:37;16663:184;;16720:31;16734:12;:16;16747:2;16734:16;;;;;;;;;;;;;;;;16720:13;:31::i;:::-;16765;16775:12;:16;16788:2;16775:16;;;;;;;;;;;;;;;;16793:2;16765:9;:31::i;:::-;16810:26;16820:11;16833:2;16810:9;:26::i;:::-;16663:184;16919:34;16929:11;16942:10;16919:9;:34::i;:::-;16992:30;17006:15;;16992:13;:30::i;:::-;17053:2;17038:34;;17047:4;17038:34;;;17057:14;;17038:34;;;;;;:::i;:::-;;;;;;;;17114:2;17087:59;;17108:4;17087:59;;;17133:11;17087:59;;;;;;:::i;:::-;;;;;;;;14868:2285;;;;;:::o;3874:374:44:-;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;5203:1551:42:-;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;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;4213:179:43:-;4268:7;2079:95;4326:11;4339:14;4355:13;4378:4;4304:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4294:91;;;;;;4287:98;;4213:179;:::o;10985:297:22:-;11056:21;;:::i;:::-;11096:179;;;;;;;;11133:5;:12;;;11096:179;;;;11173:5;:18;;;11096:179;;;;;;7816:1;11096:179;;;;;;11249:5;:15;;;11096:179;;;11089:186;;10985:297;;;:::o;5059:165:20:-;5127:7;745:42:21;5153:45:20;;;5199:5;5206:10;5153:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:71;;5059:165;;;:::o;3368:267:38:-;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;989:820:16:-;1167:5;1205:1;1188:2;:14;;;:18;1184:619;;;1243:2;1226:51;;;1278:8;1288:4;1294:6;1302:4;;1226:81;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1222:516;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:1;1458:6;:13;:18;1454:270;;1545:2;1507:41;;;;;;;;;;;:::i;:::-;;;;;;;;1454:270;1676:6;1670:13;1661:6;1657:2;1653:15;1646:38;1222:516;1386:6;1379:13;;;;;1184:619;1775:17;1787:4;1775:11;:17::i;:::-;1768:24;;989:820;;;;;;;;;:::o;99550:468:18:-;99630:7;99654:15;99662:6;99654:7;:15::i;:::-;99649:70;;99694:14;99702:5;99694:7;:14::i;:::-;99685:23;;99649:70;99733:15;99741:6;99733:7;:15::i;:::-;99728:68;;99773:12;99783:1;99773:9;:12::i;:::-;99764:21;;99728:68;99810:15;99818:6;99810:7;:15::i;:::-;99805:68;;99850:12;99860:1;99850:9;:12::i;:::-;99841:21;;99805:68;99903:107;7816:1:22;99954:6:18;99978;100002;99903:17;:107::i;:::-;99883:128;;99550:468;;;;;:::o;13666:342::-;13723:7;13747:12;13755:3;13747:7;:12::i;:::-;13742:62;;13781:12;13791:1;13781:9;:12::i;:::-;13775:18;;13742:62;13818:12;13826:3;13818:7;:12::i;:::-;13813:62;;13852:12;13862:1;13852:9;:12::i;:::-;13846:18;;13813:62;13905:95;7816:1:22;13958:3:18;13979;13985:14;13905:17;:95::i;:::-;13885:116;;13666:342;;;;:::o;128967:210::-;129039:7;129058:10;129071:66;129097:5;7816:1:22;129124:12:18;129071:25;:66::i;:::-;129058:79;;129167:2;129147:23;;;128967:210;;;;:::o;199837:105::-;199894:5;199918:17;199926:3;199931;199918:7;:17::i;:::-;199911:24;;199837:105;;;;:::o;14074:169:0:-;14142:6;14175:1;14164:7;:12;;;:31;;;;14191:4;14180:7;:15;;;14164:31;14160:48;;;14204:4;14197:11;;;;14160:48;14235:1;14225:7;:11;;;;:::i;:::-;14218:18;;14074:169;;;;:::o;6263:342:18:-;6320:7;6344:12;6352:3;6344:7;:12::i;:::-;6339:62;;6378:12;6388:1;6378:9;:12::i;:::-;6372:18;;6339:62;6415:12;6423:3;6415:7;:12::i;:::-;6410:62;;6449:12;6459:1;6449:9;:12::i;:::-;6443:18;;6410:62;6502:95;7816:1:22;6555:3:18;6576;6582:14;6502:17;:95::i;:::-;6482:116;;6263:342;;;;:::o;14324:158:0:-;14390:6;14421:1;14412:5;:10;;;:24;;;;14435:1;14426:5;:10;;;14412:24;14408:41;;;14445:4;14438:11;;;;14408:41;14474:1;14466:5;:9;;;;:::i;:::-;14459:16;;14324:158;;;;:::o;146569:139:18:-;1226:42;146623:39;;;146678:6;146695:4;146623:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;146569:139;:::o;136440:146::-;1226:42;136507:39;;;136562:6;136571:7;136507:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;136440:146;;:::o;2078:378:38:-;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;125538:95:18:-;125585:5;125609:17;125617:5;125624:1;125609:7;:17::i;:::-;125602:24;;125538:95;;;:::o;1736:106::-;1784:4;1799:40;1836:1;1799:23;:40::i;:::-;1792:47;;1736:106;;;:::o;2190:110::-;2240:4;2255:42;2294:1;2255:23;:42::i;:::-;2248:49;;2190:110;;;:::o;1956:343:20:-;2058:7;745:42:21;2084:44:20;;;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;2614:319::-;2715:7;745:42:21;2741:44:20;;;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;743:372::-;834:7;745:42:21;860:44:20;;;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;10121:338:18:-;10178:5;10200:12;10208:3;10200:7;:12::i;:::-;10195:62;;10234:12;10244:1;10234:9;:12::i;:::-;10228:18;;10195:62;10271:12;10279:3;10271:7;:12::i;:::-;10266:62;;10305:12;10315:1;10305:9;:12::i;:::-;10299:18;;10266:62;10356:95;7816:1:22;10409:3:18;10430;10436:14;10356:17;:95::i;:::-;10338:114;;10121:338;;;;:::o;2528:245:38:-;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;125941:277:18:-;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:22;126167:12:18;126117:25;:63::i;:::-;126104:76;;126208:2;126190:21;;;;125941:277;;;;:::o;1020:99:19:-;1080:4;1111:1;1103:4;:9;;1096:16;;1020:99;;;:::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;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;629:208::-;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;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:50:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:101::-;3375:7;3415:18;3408:5;3404:30;3393:41;;3339:101;;;:::o;3446:120::-;3518:23;3535:5;3518:23;:::i;:::-;3511:5;3508:34;3498:62;;3556:1;3553;3546:12;3498:62;3446:120;:::o;3572:137::-;3617:5;3655:6;3642:20;3633:29;;3671:32;3697:5;3671:32;:::i;:::-;3572:137;;;;:::o;3715:472::-;3782:6;3790;3839:2;3827:9;3818:7;3814:23;3810:32;3807:119;;;3845:79;;:::i;:::-;3807:119;3965:1;3990:53;4035:7;4026:6;4015:9;4011:22;3990:53;:::i;:::-;3980:63;;3936:117;4092:2;4118:52;4162:7;4153:6;4142:9;4138:22;4118:52;:::i;:::-;4108:62;;4063:117;3715:472;;;;;:::o;4193:118::-;4280:24;4298:5;4280:24;:::i;:::-;4275:3;4268:37;4193:118;;:::o;4317:222::-;4410:4;4448:2;4437:9;4433:18;4425:26;;4461:71;4529:1;4518:9;4514:17;4505:6;4461:71;:::i;:::-;4317:222;;;;:::o;4545:97::-;4581:7;4621:14;4614:5;4610:26;4599:37;;4545:97;;;:::o;4648:120::-;4720:23;4737:5;4720:23;:::i;:::-;4713:5;4710:34;4700:62;;4758:1;4755;4748:12;4700:62;4648:120;:::o;4774:137::-;4819:5;4857:6;4844:20;4835:29;;4873:32;4899:5;4873:32;:::i;:::-;4774:137;;;;:::o;4917:86::-;4952:7;4992:4;4985:5;4981:16;4970:27;;4917:86;;;:::o;5009:118::-;5080:22;5096:5;5080:22;:::i;:::-;5073:5;5070:33;5060:61;;5117:1;5114;5107:12;5060:61;5009:118;:::o;5133:135::-;5177:5;5215:6;5202:20;5193:29;;5231:31;5256:5;5231:31;:::i;:::-;5133:135;;;;:::o;5274:77::-;5311:7;5340:5;5329:16;;5274:77;;;:::o;5357:122::-;5430:24;5448:5;5430:24;:::i;:::-;5423:5;5420:35;5410:63;;5469:1;5466;5459:12;5410:63;5357:122;:::o;5485:139::-;5531:5;5569:6;5556:20;5547:29;;5585:33;5612:5;5585:33;:::i;:::-;5485:139;;;;:::o;5630:1197::-;5740:6;5748;5756;5764;5772;5780;5788;5837:3;5825:9;5816:7;5812:23;5808:33;5805:120;;;5844:79;;:::i;:::-;5805:120;5964:1;5989:53;6034:7;6025:6;6014:9;6010:22;5989:53;:::i;:::-;5979:63;;5935:117;6091:2;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6062:118;6219:2;6245:52;6289:7;6280:6;6269:9;6265:22;6245:52;:::i;:::-;6235:62;;6190:117;6346:2;6372:53;6417:7;6408:6;6397:9;6393:22;6372:53;:::i;:::-;6362:63;;6317:118;6474:3;6501:51;6544:7;6535:6;6524:9;6520:22;6501:51;:::i;:::-;6491:61;;6445:117;6601:3;6628:53;6673:7;6664:6;6653:9;6649:22;6628:53;:::i;:::-;6618:63;;6572:119;6730:3;6757:53;6802:7;6793:6;6782:9;6778:22;6757:53;:::i;:::-;6747:63;;6701:119;5630:1197;;;;;;;;;;:::o;6833:619::-;6910:6;6918;6926;6975:2;6963:9;6954:7;6950:23;6946:32;6943:119;;;6981:79;;:::i;:::-;6943:119;7101:1;7126:53;7171:7;7162:6;7151:9;7147:22;7126:53;:::i;:::-;7116:63;;7072:117;7228:2;7254:53;7299:7;7290:6;7279:9;7275:22;7254:53;:::i;:::-;7244:63;;7199:118;7356:2;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7327:118;6833:619;;;;;:::o;7458:112::-;7541:22;7557:5;7541:22;:::i;:::-;7536:3;7529:35;7458:112;;:::o;7576:214::-;7665:4;7703:2;7692:9;7688:18;7680:26;;7716:67;7780:1;7769:9;7765:17;7756:6;7716:67;:::i;:::-;7576:214;;;;:::o;7796:329::-;7855:6;7904:2;7892:9;7883:7;7879:23;7875:32;7872:119;;;7910:79;;:::i;:::-;7872:119;8030:1;8055:53;8100:7;8091:6;8080:9;8076:22;8055:53;:::i;:::-;8045:63;;8001:117;7796:329;;;;:::o;8131:60::-;8159:3;8180:5;8173:12;;8131:60;;;:::o;8197:142::-;8247:9;8280:53;8298:34;8307:24;8325:5;8307:24;:::i;:::-;8298:34;:::i;:::-;8280:53;:::i;:::-;8267:66;;8197:142;;;:::o;8345:159::-;8460:37;8491:5;8460:37;:::i;:::-;8455:3;8448:50;8345:159;;:::o;8510:278::-;8631:4;8669:2;8658:9;8654:18;8646:26;;8682:99;8778:1;8767:9;8763:17;8754:6;8682:99;:::i;:::-;8510:278;;;;:::o;8794:89::-;8830:7;8870:6;8863:5;8859:18;8848:29;;8794:89;;;:::o;8889:120::-;8961:23;8978:5;8961:23;:::i;:::-;8954:5;8951:34;8941:62;;8999:1;8996;8989:12;8941:62;8889:120;:::o;9015:137::-;9060:5;9098:6;9085:20;9076:29;;9114:32;9140:5;9114:32;:::i;:::-;9015:137;;;;:::o;9158:327::-;9216:6;9265:2;9253:9;9244:7;9240:23;9236:32;9233:119;;;9271:79;;:::i;:::-;9233:119;9391:1;9416:52;9460:7;9451:6;9440:9;9436:22;9416:52;:::i;:::-;9406:62;;9362:116;9158:327;;;;:::o;9491:118::-;9578:24;9596:5;9578:24;:::i;:::-;9573:3;9566:37;9491:118;;:::o;9615:222::-;9708:4;9746:2;9735:9;9731:18;9723:26;;9759:71;9827:1;9816:9;9812:17;9803:6;9759:71;:::i;:::-;9615:222;;;;:::o;9843:472::-;9910:6;9918;9967:2;9955:9;9946:7;9942:23;9938:32;9935:119;;;9973:79;;:::i;:::-;9935:119;10093:1;10118:53;10163:7;10154:6;10143:9;10139:22;10118:53;:::i;:::-;10108:63;;10064:117;10220:2;10246:52;10290:7;10281:6;10270:9;10266:22;10246:52;:::i;:::-;10236:62;;10191:117;9843:472;;;;;:::o;10321:117::-;10430:1;10427;10420:12;10444:180;10492:77;10489:1;10482:88;10589:4;10586:1;10579:15;10613:4;10610:1;10603:15;10630:281;10713:27;10735:4;10713:27;:::i;:::-;10705:6;10701:40;10843:6;10831:10;10828:22;10807:18;10795:10;10792:34;10789:62;10786:88;;;10854:18;;:::i;:::-;10786:88;10894:10;10890:2;10883:22;10673:238;10630:281;;:::o;10917:129::-;10951:6;10978:20;;:::i;:::-;10968:30;;11007:33;11035:4;11027:6;11007:33;:::i;:::-;10917:129;;;:::o;11052:117::-;11161:1;11158;11151:12;11175:117;11284:1;11281;11274:12;11298:117;11407:1;11404;11397:12;11421:307;11482:4;11572:18;11564:6;11561:30;11558:56;;;11594:18;;:::i;:::-;11558:56;11632:29;11654:6;11632:29;:::i;:::-;11624:37;;11716:4;11710;11706:15;11698:23;;11421:307;;;:::o;11734:148::-;11832:6;11827:3;11822;11809:30;11873:1;11864:6;11859:3;11855:16;11848:27;11734:148;;;:::o;11888:423::-;11965:5;11990:65;12006:48;12047:6;12006:48;:::i;:::-;11990:65;:::i;:::-;11981:74;;12078:6;12071:5;12064:21;12116:4;12109:5;12105:16;12154:3;12145:6;12140:3;12136:16;12133:25;12130:112;;;12161:79;;:::i;:::-;12130:112;12251:54;12298:6;12293:3;12288;12251:54;:::i;:::-;11971:340;11888:423;;;;;:::o;12330:338::-;12385:5;12434:3;12427:4;12419:6;12415:17;12411:27;12401:122;;12442:79;;:::i;:::-;12401:122;12559:6;12546:20;12584:78;12658:3;12650:6;12643:4;12635:6;12631:17;12584:78;:::i;:::-;12575:87;;12391:277;12330:338;;;;:::o;12696:1078::-;12771:5;12815:4;12803:9;12798:3;12794:19;12790:30;12787:117;;;12823:79;;:::i;:::-;12787:117;12922:21;12938:4;12922:21;:::i;:::-;12913:30;;13004:1;13044:49;13089:3;13080:6;13069:9;13065:22;13044:49;:::i;:::-;13037:4;13030:5;13026:16;13019:75;12953:152;13172:2;13213:47;13256:3;13247:6;13236:9;13232:22;13213:47;:::i;:::-;13206:4;13199:5;13195:16;13188:73;13115:157;13332:2;13373:47;13416:3;13407:6;13396:9;13392:22;13373:47;:::i;:::-;13366:4;13359:5;13355:16;13348:73;13282:150;13524:2;13513:9;13509:18;13496:32;13555:18;13547:6;13544:30;13541:117;;;13577:79;;:::i;:::-;13541:117;13697:58;13751:3;13742:6;13731:9;13727:22;13697:58;:::i;:::-;13690:4;13683:5;13679:16;13672:84;13442:325;12696:1078;;;;:::o;13780:831::-;13883:6;13891;13899;13948:2;13936:9;13927:7;13923:23;13919:32;13916:119;;;13954:79;;:::i;:::-;13916:119;14074:1;14099:53;14144:7;14135:6;14124:9;14120:22;14099:53;:::i;:::-;14089:63;;14045:117;14201:2;14227:53;14272:7;14263:6;14252:9;14248:22;14227:53;:::i;:::-;14217:63;;14172:118;14357:2;14346:9;14342:18;14329:32;14388:18;14380:6;14377:30;14374:117;;;14410:79;;:::i;:::-;14374:117;14515:79;14586:7;14577:6;14566:9;14562:22;14515:79;:::i;:::-;14505:89;;14300:304;13780:831;;;;;:::o;14617:149::-;14653:7;14693:66;14686:5;14682:78;14671:89;;14617:149;;;:::o;14772:115::-;14857:23;14874:5;14857:23;:::i;:::-;14852:3;14845:36;14772:115;;:::o;14893:118::-;14980:24;14998:5;14980:24;:::i;:::-;14975:3;14968:37;14893:118;;:::o;15017:114::-;15084:6;15118:5;15112:12;15102:22;;15017:114;;;:::o;15137:184::-;15236:11;15270:6;15265:3;15258:19;15310:4;15305:3;15301:14;15286:29;;15137:184;;;;:::o;15327:132::-;15394:4;15417:3;15409:11;;15447:4;15442:3;15438:14;15430:22;;15327:132;;;:::o;15465:108::-;15542:24;15560:5;15542:24;:::i;:::-;15537:3;15530:37;15465:108;;:::o;15579:179::-;15648:10;15669:46;15711:3;15703:6;15669:46;:::i;:::-;15747:4;15742:3;15738:14;15724:28;;15579:179;;;;:::o;15764:113::-;15834:4;15866;15861:3;15857:14;15849:22;;15764:113;;;:::o;15913:732::-;16032:3;16061:54;16109:5;16061:54;:::i;:::-;16131:86;16210:6;16205:3;16131:86;:::i;:::-;16124:93;;16241:56;16291:5;16241:56;:::i;:::-;16320:7;16351:1;16336:284;16361:6;16358:1;16355:13;16336:284;;;16437:6;16431:13;16464:63;16523:3;16508:13;16464:63;:::i;:::-;16457:70;;16550:60;16603:6;16550:60;:::i;:::-;16540:70;;16396:224;16383:1;16380;16376:9;16371:14;;16336:284;;;16340:14;16636:3;16629:10;;16037:608;;;15913:732;;;;:::o;16651:1215::-;17000:4;17038:3;17027:9;17023:19;17015:27;;17052:69;17118:1;17107:9;17103:17;17094:6;17052:69;:::i;:::-;17168:9;17162:4;17158:20;17153:2;17142:9;17138:18;17131:48;17196:78;17269:4;17260:6;17196:78;:::i;:::-;17188:86;;17321:9;17315:4;17311:20;17306:2;17295:9;17291:18;17284:48;17349:78;17422:4;17413:6;17349:78;:::i;:::-;17341:86;;17437:72;17505:2;17494:9;17490:18;17481:6;17437:72;:::i;:::-;17519:73;17587:3;17576:9;17572:19;17563:6;17519:73;:::i;:::-;17602;17670:3;17659:9;17655:19;17646:6;17602:73;:::i;:::-;17723:9;17717:4;17713:20;17707:3;17696:9;17692:19;17685:49;17751:108;17854:4;17845:6;17751:108;:::i;:::-;17743:116;;16651:1215;;;;;;;;;;:::o;17872:150::-;17973:24;17991:5;17973:24;:::i;:::-;17966:5;17963:35;17953:63;;18012:1;18009;18002:12;17953:63;17872:150;:::o;18028:195::-;18102:5;18140:6;18127:20;18118:29;;18156:61;18211:5;18156:61;:::i;:::-;18028:195;;;;:::o;18229:117::-;18338:1;18335;18328:12;18352:117;18461:1;18458;18451:12;18488:552;18545:8;18555:6;18605:3;18598:4;18590:6;18586:17;18582:27;18572:122;;18613:79;;:::i;:::-;18572:122;18726:6;18713:20;18703:30;;18756:18;18748:6;18745:30;18742:117;;;18778:79;;:::i;:::-;18742:117;18892:4;18884:6;18880:17;18868:29;;18946:3;18938:4;18930:6;18926:17;18916:8;18912:32;18909:41;18906:128;;;18953:79;;:::i;:::-;18906:128;18488:552;;;;;:::o;19046:1019::-;19171:6;19179;19187;19195;19203;19252:3;19240:9;19231:7;19227:23;19223:33;19220:120;;;19259:79;;:::i;:::-;19220:120;19379:1;19404:53;19449:7;19440:6;19429:9;19425:22;19404:53;:::i;:::-;19394:63;;19350:117;19506:2;19532:53;19577:7;19568:6;19557:9;19553:22;19532:53;:::i;:::-;19522:63;;19477:118;19634:2;19660:81;19733:7;19724:6;19713:9;19709:22;19660:81;:::i;:::-;19650:91;;19605:146;19818:2;19807:9;19803:18;19790:32;19849:18;19841:6;19838:30;19835:117;;;19871:79;;:::i;:::-;19835:117;19984:64;20040:7;20031:6;20020:9;20016:22;19984:64;:::i;:::-;19966:82;;;;19761:297;19046:1019;;;;;;;;:::o;20071:686::-;20165:6;20173;20222:2;20210:9;20201:7;20197:23;20193:32;20190:119;;;20228:79;;:::i;:::-;20190:119;20348:1;20373:53;20418:7;20409:6;20398:9;20394:22;20373:53;:::i;:::-;20363:63;;20319:117;20503:2;20492:9;20488:18;20475:32;20534:18;20526:6;20523:30;20520:117;;;20556:79;;:::i;:::-;20520:117;20661:79;20732:7;20723:6;20712:9;20708:22;20661:79;:::i;:::-;20651:89;;20446:304;20071:686;;;;;:::o;20763:873::-;20879:6;20887;20895;20903;20952:2;20940:9;20931:7;20927:23;20923:32;20920:119;;;20958:79;;:::i;:::-;20920:119;21078:1;21103:53;21148:7;21139:6;21128:9;21124:22;21103:53;:::i;:::-;21093:63;;21049:117;21205:2;21231:81;21304:7;21295:6;21284:9;21280:22;21231:81;:::i;:::-;21221:91;;21176:146;21389:2;21378:9;21374:18;21361:32;21420:18;21412:6;21409:30;21406:117;;;21442:79;;:::i;:::-;21406:117;21555:64;21611:7;21602:6;21591:9;21587:22;21555:64;:::i;:::-;21537:82;;;;21332:297;20763:873;;;;;;;:::o;21642:474::-;21710:6;21718;21767:2;21755:9;21746:7;21742:23;21738:32;21735:119;;;21773:79;;:::i;:::-;21735:119;21893:1;21918:53;21963:7;21954:6;21943:9;21939:22;21918:53;:::i;:::-;21908:63;;21864:117;22020:2;22046:53;22091:7;22082:6;22071:9;22067:22;22046:53;:::i;:::-;22036:63;;21991:118;21642:474;;;;;:::o;22122:675::-;22227:6;22235;22243;22292:2;22280:9;22271:7;22267:23;22263:32;22260:119;;;22298:79;;:::i;:::-;22260:119;22418:1;22443:53;22488:7;22479:6;22468:9;22464:22;22443:53;:::i;:::-;22433:63;;22389:117;22545:2;22571:53;22616:7;22607:6;22596:9;22592:22;22571:53;:::i;:::-;22561:63;;22516:118;22673:2;22699:81;22772:7;22763:6;22752:9;22748:22;22699:81;:::i;:::-;22689:91;;22644:146;22122:675;;;;;:::o;22803:1029::-;22917:6;22925;22933;22941;22990:2;22978:9;22969:7;22965:23;22961:32;22958:119;;;22996:79;;:::i;:::-;22958:119;23116:1;23141:53;23186:7;23177:6;23166:9;23162:22;23141:53;:::i;:::-;23131:63;;23087:117;23271:2;23260:9;23256:18;23243:32;23302:18;23294:6;23291:30;23288:117;;;23324:79;;:::i;:::-;23288:117;23429:79;23500:7;23491:6;23480:9;23476:22;23429:79;:::i;:::-;23419:89;;23214:304;23585:2;23574:9;23570:18;23557:32;23616:18;23608:6;23605:30;23602:117;;;23638:79;;:::i;:::-;23602:117;23751:64;23807:7;23798:6;23787:9;23783:22;23751:64;:::i;:::-;23733:82;;;;23528:297;22803:1029;;;;;;;:::o;23838:472::-;23905:6;23913;23962:2;23950:9;23941:7;23937:23;23933:32;23930:119;;;23968:79;;:::i;:::-;23930:119;24088:1;24113:53;24158:7;24149:6;24138:9;24134:22;24113:53;:::i;:::-;24103:63;;24059:117;24215:2;24241:52;24285:7;24276:6;24265:9;24261:22;24241:52;:::i;:::-;24231:62;;24186:117;23838:472;;;;;:::o;24316:1175::-;24439:6;24447;24455;24463;24471;24520:3;24508:9;24499:7;24495:23;24491:33;24488:120;;;24527:79;;:::i;:::-;24488:120;24647:1;24672:53;24717:7;24708:6;24697:9;24693:22;24672:53;:::i;:::-;24662:63;;24618:117;24774:2;24800:53;24845:7;24836:6;24825:9;24821:22;24800:53;:::i;:::-;24790:63;;24745:118;24930:2;24919:9;24915:18;24902:32;24961:18;24953:6;24950:30;24947:117;;;24983:79;;:::i;:::-;24947:117;25088:79;25159:7;25150:6;25139:9;25135:22;25088:79;:::i;:::-;25078:89;;24873:304;25244:2;25233:9;25229:18;25216:32;25275:18;25267:6;25264:30;25261:117;;;25297:79;;:::i;:::-;25261:117;25410:64;25466:7;25457:6;25446:9;25442:22;25410:64;:::i;:::-;25392:82;;;;25187:297;24316:1175;;;;;;;;:::o;25497:530::-;25593:6;25601;25650:2;25638:9;25629:7;25625:23;25621:32;25618:119;;;25656:79;;:::i;:::-;25618:119;25776:1;25801:53;25846:7;25837:6;25826:9;25822:22;25801:53;:::i;:::-;25791:63;;25747:117;25903:2;25929:81;26002:7;25993:6;25982:9;25978:22;25929:81;:::i;:::-;25919:91;;25874:146;25497:530;;;;;:::o;26033:180::-;26081:77;26078:1;26071:88;26178:4;26175:1;26168:15;26202:4;26199:1;26192:15;26219:320;26263:6;26300:1;26294:4;26290:12;26280:22;;26347:1;26341:4;26337:12;26368:18;26358:81;;26424:4;26416:6;26412:17;26402:27;;26358:81;26486:2;26478:6;26475:14;26455:18;26452:38;26449:84;;26505:18;;:::i;:::-;26449:84;26270:269;26219:320;;;:::o;26545:180::-;26593:77;26590:1;26583:88;26690:4;26687:1;26680:15;26714:4;26711:1;26704:15;26731:410;26771:7;26794:20;26812:1;26794:20;:::i;:::-;26789:25;;26828:20;26846:1;26828:20;:::i;:::-;26823:25;;26883:1;26880;26876:9;26905:30;26923:11;26905:30;:::i;:::-;26894:41;;27084:1;27075:7;27071:15;27068:1;27065:22;27045:1;27038:9;27018:83;26995:139;;27114:18;;:::i;:::-;26995:139;26779:362;26731:410;;;;:::o;27147:115::-;27232:23;27249:5;27232:23;:::i;:::-;27227:3;27220:36;27147:115;;:::o;27268:771::-;27499:4;27537:3;27526:9;27522:19;27514:27;;27551:71;27619:1;27608:9;27604:17;27595:6;27551:71;:::i;:::-;27632:72;27700:2;27689:9;27685:18;27676:6;27632:72;:::i;:::-;27714;27782:2;27771:9;27767:18;27758:6;27714:72;:::i;:::-;27796:70;27862:2;27851:9;27847:18;27838:6;27796:70;:::i;:::-;27876:73;27944:3;27933:9;27929:19;27920:6;27876:73;:::i;:::-;27959;28027:3;28016:9;28012:19;28003:6;27959:73;:::i;:::-;27268:771;;;;;;;;;:::o;28045:332::-;28166:4;28204:2;28193:9;28189:18;28181:26;;28217:71;28285:1;28274:9;28270:17;28261:6;28217:71;:::i;:::-;28298:72;28366:2;28355:9;28351:18;28342:6;28298:72;:::i;:::-;28045:332;;;;;:::o;28383:388::-;28532:4;28570:2;28559:9;28555:18;28547:26;;28583:99;28679:1;28668:9;28664:17;28655:6;28583:99;:::i;:::-;28692:72;28760:2;28749:9;28745:18;28736:6;28692:72;:::i;:::-;28383:388;;;;;:::o;28777:222::-;28870:4;28908:2;28897:9;28893:18;28885:26;;28921:71;28989:1;28978:9;28974:17;28965:6;28921:71;:::i;:::-;28777:222;;;;:::o;29005:218::-;29096:4;29134:2;29123:9;29119:18;29111:26;;29147:69;29213:1;29202:9;29198:17;29189:6;29147:69;:::i;:::-;29005:218;;;;:::o;29229:316::-;29342:4;29380:2;29369:9;29365:18;29357:26;;29393:67;29457:1;29446:9;29442:17;29433:6;29393:67;:::i;:::-;29470:68;29534:2;29523:9;29519:18;29510:6;29470:68;:::i;:::-;29229:316;;;;;:::o;29551:332::-;29672:4;29710:2;29699:9;29695:18;29687:26;;29723:71;29791:1;29780:9;29776:17;29767:6;29723:71;:::i;:::-;29804:72;29872:2;29861:9;29857:18;29848:6;29804:72;:::i;:::-;29551:332;;;;;:::o;29889:116::-;29959:21;29974:5;29959:21;:::i;:::-;29952:5;29949:32;29939:60;;29995:1;29992;29985:12;29939:60;29889:116;:::o;30011:137::-;30065:5;30096:6;30090:13;30081:22;;30112:30;30136:5;30112:30;:::i;:::-;30011:137;;;;:::o;30154:345::-;30221:6;30270:2;30258:9;30249:7;30245:23;30241:32;30238:119;;;30276:79;;:::i;:::-;30238:119;30396:1;30421:61;30474:7;30465:6;30454:9;30450:22;30421:61;:::i;:::-;30411:71;;30367:125;30154:345;;;;:::o;30505:545::-;30678:4;30716:3;30705:9;30701:19;30693:27;;30730:71;30798:1;30787:9;30783:17;30774:6;30730:71;:::i;:::-;30811:68;30875:2;30864:9;30860:18;30851:6;30811:68;:::i;:::-;30889:72;30957:2;30946:9;30942:18;30933:6;30889:72;:::i;:::-;30971;31039:2;31028:9;31024:18;31015:6;30971:72;:::i;:::-;30505:545;;;;;;;:::o;31056:180::-;31104:77;31101:1;31094:88;31201:4;31198:1;31191:15;31225:4;31222:1;31215:15;31242:664;31447:4;31485:3;31474:9;31470:19;31462:27;;31499:71;31567:1;31556:9;31552:17;31543:6;31499:71;:::i;:::-;31580:72;31648:2;31637:9;31633:18;31624:6;31580:72;:::i;:::-;31662;31730:2;31719:9;31715:18;31706:6;31662:72;:::i;:::-;31744;31812:2;31801:9;31797:18;31788:6;31744:72;:::i;:::-;31826:73;31894:3;31883:9;31879:19;31870:6;31826:73;:::i;:::-;31242:664;;;;;;;;:::o;31912:102::-;31985:22;32001:5;31985:22;:::i;:::-;31980:3;31973:35;31912:102;;:::o;32020:98::-;32071:6;32105:5;32099:12;32089:22;;32020:98;;;:::o;32124:158::-;32197:11;32231:6;32226:3;32219:19;32271:4;32266:3;32262:14;32247:29;;32124:158;;;;:::o;32288:353::-;32364:3;32392:38;32424:5;32392:38;:::i;:::-;32446:60;32499:6;32494:3;32446:60;:::i;:::-;32439:67;;32515:65;32573:6;32568:3;32561:4;32554:5;32550:16;32515:65;:::i;:::-;32605:29;32627:6;32605:29;:::i;:::-;32600:3;32596:39;32589:46;;32368:273;32288:353;;;;:::o;32701:976::-;32836:3;32872:4;32867:3;32863:14;32961:4;32954:5;32950:16;32944:23;32980:63;33037:4;33032:3;33028:14;33014:12;32980:63;:::i;:::-;32887:166;33143:4;33136:5;33132:16;33126:23;33162:59;33215:4;33210:3;33206:14;33192:12;33162:59;:::i;:::-;33063:168;33314:4;33307:5;33303:16;33297:23;33333:59;33386:4;33381:3;33377:14;33363:12;33333:59;:::i;:::-;33241:161;33489:4;33482:5;33478:16;33472:23;33542:3;33536:4;33532:14;33525:4;33520:3;33516:14;33509:38;33568:71;33634:4;33620:12;33568:71;:::i;:::-;33560:79;;33412:238;33667:4;33660:11;;32841:836;32701:976;;;;:::o;33683:515::-;33870:4;33908:2;33897:9;33893:18;33885:26;;33957:9;33951:4;33947:20;33943:1;33932:9;33928:17;33921:47;33985:124;34104:4;34095:6;33985:124;:::i;:::-;33977:132;;34119:72;34187:2;34176:9;34172:18;34163:6;34119:72;:::i;:::-;33683:515;;;;;:::o;34204:143::-;34261:5;34292:6;34286:13;34277:22;;34308:33;34335:5;34308:33;:::i;:::-;34204:143;;;;:::o;34353:351::-;34423:6;34472:2;34460:9;34451:7;34447:23;34443:32;34440:119;;;34478:79;;:::i;:::-;34440:119;34598:1;34623:64;34679:7;34670:6;34659:9;34655:22;34623:64;:::i;:::-;34613:74;;34569:128;34353:351;;;;:::o;34710:168::-;34793:11;34827:6;34822:3;34815:19;34867:4;34862:3;34858:14;34843:29;;34710:168;;;;:::o;34906:314::-;35002:3;35023:70;35086:6;35081:3;35023:70;:::i;:::-;35016:77;;35103:56;35152:6;35147:3;35140:5;35103:56;:::i;:::-;35184:29;35206:6;35184:29;:::i;:::-;35179:3;35175:39;35168:46;;34906:314;;;;;:::o;35226:716::-;35459:4;35497:3;35486:9;35482:19;35474:27;;35511:71;35579:1;35568:9;35564:17;35555:6;35511:71;:::i;:::-;35592:72;35660:2;35649:9;35645:18;35636:6;35592:72;:::i;:::-;35674:100;35770:2;35759:9;35755:18;35746:6;35674:100;:::i;:::-;35821:9;35815:4;35811:20;35806:2;35795:9;35791:18;35784:48;35849:86;35930:4;35921:6;35913;35849:86;:::i;:::-;35841:94;;35226:716;;;;;;;;:::o;35948:148::-;36047:24;36065:5;36047:24;:::i;:::-;36040:5;36037:35;36027:63;;36086:1;36083;36076:12;36027:63;35948:148;:::o;36102:195::-;36185:5;36216:6;36210:13;36201:22;;36232:59;36285:5;36232:59;:::i;:::-;36102:195;;;;:::o;36303:403::-;36399:6;36448:2;36436:9;36427:7;36423:23;36419:32;36416:119;;;36454:79;;:::i;:::-;36416:119;36574:1;36599:90;36681:7;36672:6;36661:9;36657:22;36599:90;:::i;:::-;36589:100;;36545:154;36303:403;;;;:::o;36712:193::-;36751:3;36770:19;36787:1;36770:19;:::i;:::-;36765:24;;36803:19;36820:1;36803:19;:::i;:::-;36798:24;;36845:1;36842;36838:9;36831:16;;36868:6;36863:3;36860:15;36857:41;;;36878:18;;:::i;:::-;36857:41;36712:193;;;;:::o;36911:196::-;36950:4;36970:19;36987:1;36970:19;:::i;:::-;36965:24;;37003:19;37020:1;37003:19;:::i;:::-;36998:24;;37046:1;37043;37039:9;37031:17;;37070:6;37064:4;37061:16;37058:42;;;37080:18;;:::i;:::-;37058:42;36911:196;;;;:::o;37113:122::-;37202:2;37195:5;37192:13;37182:47;;37209:18;;:::i;:::-;37182:47;37113:122;:::o;37241:143::-;37294:7;37323:5;37312:16;;37329:49;37372:5;37329:49;:::i;:::-;37241:143;;;:::o;37390:::-;37454:9;37487:40;37521:5;37487:40;:::i;:::-;37474:53;;37390:143;;;:::o;37539:159::-;37640:51;37685:5;37640:51;:::i;:::-;37635:3;37628:64;37539:159;;:::o;37704:875::-;37991:4;38029:3;38018:9;38014:19;38006:27;;38043:67;38107:1;38096:9;38092:17;38083:6;38043:67;:::i;:::-;38120:86;38202:2;38191:9;38187:18;38178:6;38120:86;:::i;:::-;38253:9;38247:4;38243:20;38238:2;38227:9;38223:18;38216:48;38281:108;38384:4;38375:6;38281:108;:::i;:::-;38273:116;;38436:9;38430:4;38426:20;38421:2;38410:9;38406:18;38399:48;38464:108;38567:4;38558:6;38464:108;:::i;:::-;38456:116;;37704:875;;;;;;;:::o;38585:180::-;38633:77;38630:1;38623:88;38730:4;38727:1;38720:15;38754:4;38751:1;38744:15;38771:90;38806:7;38849:5;38846:1;38835:20;38824:31;;38771:90;;;:::o;38867:112::-;38950:22;38966:5;38950:22;:::i;:::-;38945:3;38938:35;38867:112;;:::o;38985:214::-;39074:4;39112:2;39101:9;39097:18;39089:26;;39125:67;39189:1;39178:9;39174:17;39165:6;39125:67;:::i;:::-;38985:214;;;;:::o","linkReferences":{},"immutableReferences":{"25542":[{"start":5195,"length":32}],"25544":[{"start":5154,"length":32}],"25546":[{"start":5068,"length":32}],"25548":[{"start":8429,"length":32}],"25550":[{"start":8462,"length":32}],"25553":[{"start":5686,"length":32}],"25556":[{"start":5745,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfIsIndicator()":"a415f269","burn(address,uint64)":"13691c76","confidentialBalanceOf(address)":"344ff101","confidentialTotalSupply()":"54095227","confidentialTransfer(address,(uint256,uint8,uint8,bytes))":"a794ee95","confidentialTransfer(address,uint256)":"fe3f670d","confidentialTransferAndCall(address,(uint256,uint8,uint8,bytes),bytes)":"d174999a","confidentialTransferAndCall(address,uint256,bytes)":"a9fe9959","confidentialTransferFrom(address,address,(uint256,uint8,uint8,bytes))":"7edb0e7d","confidentialTransferFrom(address,address,uint256)":"ca49d7cd","confidentialTransferFromAndCall(address,address,(uint256,uint8,uint8,bytes),bytes)":"fca114d6","confidentialTransferFromAndCall(address,address,uint256,bytes)":"9645edd4","decimals()":"313ce567","eip712Domain()":"84b0196e","indicatorTick()":"490690f3","isFherc20()":"365ac002","isOperator(address,address)":"b6363cf2","mint(address,uint64)":"2893c5b0","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint48,uint256,uint8,bytes32,bytes32)":"1c5f75fd","resetIndicatedBalance()":"b4b20190","setOperator(address,uint48)":"d4febb96","setTotalIndicatedSupply(uint16)":"34e3e2ba","setUserIndicatedBalance(address,uint16)":"39ce5fdf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"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\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permitOwner\",\"type\":\"address\"}],\"name\":\"FHERC20ConfidentialTransferFromOwnerMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permitSpender\",\"type\":\"address\"}],\"name\":\"FHERC20ConfidentialTransferFromSpenderMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inValueHash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permitValueHash\",\"type\":\"uint256\"}],\"name\":\"FHERC20ConfidentialTransferFromValueHashMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FHERC20IncompatibleFunction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"FHERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"FHERC20UnauthorizedSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"FHERC20UnauthorizedUseOfEncryptedAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"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\":[{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value_hash\",\"type\":\"uint256\"}],\"name\":\"ConfidentialTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"until\",\"type\":\"uint48\"}],\"name\":\"OperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"balanceOfIsIndicator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"confidentialBalanceOf\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"confidentialTotalSupply\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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 Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"}],\"name\":\"confidentialTransfer\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"confidentialTransfer\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"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 Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"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 Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"}],\"name\":\"confidentialTransferFrom\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"confidentialTransferFrom\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"euint64\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferFromAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"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 Euint64\",\"name\":\"inValue\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferFromAndCall\",\"outputs\":[{\"internalType\":\"euint64\",\"name\":\"transferred\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"indicatorTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isFherc20\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"until\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetIndicatedBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"until\",\"type\":\"uint48\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"value\",\"type\":\"uint16\"}],\"name\":\"setTotalIndicatedSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"value\",\"type\":\"uint16\"}],\"name\":\"setUserIndicatedBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"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.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\",\"params\":{\"deadline\":\"Expired deadline of the FHERC20_EIP712_Permit.\"}}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\",\"params\":{\"owner\":\"Owner passed in as part of the FHERC20_EIP712_Permit struct.\",\"signer\":\"ECDSA recovered signer of the FHERC20_EIP712_Permit.\"}}],\"FHERC20ConfidentialTransferFromOwnerMismatch(address,address)\":[{\"details\":\"ConfidentialTransferFrom `from` and `permit.owner` don't match\",\"params\":{\"from\":\"ConfidentialTransferFrom param.\",\"permitOwner\":\"token owner included in FHERC20_EIP712_Permit struct.\"}}],\"FHERC20ConfidentialTransferFromSpenderMismatch(address,address)\":[{\"details\":\"ConfidentialTransferFrom `to` and `permit.spender` don't match\",\"params\":{\"permitSpender\":\"token receiver included in FHERC20_EIP712_Permit struct.\",\"to\":\"ConfidentialTransferFrom param.\"}}],\"FHERC20ConfidentialTransferFromValueHashMismatch(uint256,uint256)\":[{\"details\":\"ConfidentialTransferFrom `value` greater than `permit.value_hash` dont match (permit doesn't match Euint64)\",\"params\":{\"inValueHash\":\"ConfidentialTransferFrom param inValue.ctHash.\",\"permitValueHash\":\"token amount hash included in FHERC20_EIP712_Permit struct.\"}}],\"FHERC20IncompatibleFunction()\":[{\"details\":\"Indicates an incompatible function being called. Prevents unintentional treatment of an FHERC20 as a cleartext ERC20\"}],\"FHERC20InvalidReceiver(address)\":[{\"details\":\"The given receiver `receiver` is invalid for transfers.\"}],\"FHERC20UnauthorizedSpender(address,address)\":[{\"details\":\"ConfidentialTransferFrom `from` and `permit.owner` don't match\",\"params\":{\"from\":\"ConfidentialTransferFrom param.\",\"spender\":\"operator authorized to spent tokens from.\"}}],\"FHERC20UnauthorizedUseOfEncryptedAmount(uint256,address)\":[{\"details\":\"The caller `owner` does not have access to the encrypted value `value`.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}]},\"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.\"},\"ConfidentialTransfer(address,address,uint256)\":{\"details\":\"Emitted when `value_hash` encrypted tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"OperatorSet(address,address,uint48)\":{\"details\":\"Emitted when the expiration timestamp for an operator `operator` is updated for a given `holder`. The operator may move any amount of tokens on behalf of the holder until the timestamp `until`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`.\"},\"balanceOf(address)\":{\"details\":\"Returns an indicator of the underlying encrypted balance. The value returned is [0](no interaction) / [0.0001 - 0.9999](indicated) Indicator acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001. Returned in the decimal expectation of the token.\"},\"balanceOfIsIndicator()\":{\"details\":\"Returns an flag indicating that the public balances returned by `balanceOf` is an indication of the underlying encrypted balance. The value returned is between 0.0000 and 0.9999, and acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001.\"},\"confidentialBalanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}. Returns the euint64 representing the account's true balance (encrypted)\"},\"confidentialTotalSupply()\":{\"details\":\"Returns the encrypted total supply.\"},\"confidentialTransfer(address,(uint256,uint8,uint8,bytes))\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `inValue` must be a `Euint64` to preserve confidentiality.\"},\"confidentialTransfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Intended to be used as part of a contract call. Ensure that `value` is allowed to be used by using `FHE.allow` with this contracts address. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `value` must be a `euint64` to preserve confidentiality.\"},\"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.\"},\"indicatorTick()\":{\"details\":\"Returns the true size of the indicator tick\"},\"isFherc20()\":{\"details\":\"Returns true if the token is a FHERC20.\"},\"isOperator(address,address)\":{\"details\":\"Returns true if `spender` is currently an operator for `holder`.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"setOperator(address,uint48)\":{\"details\":\"Sets `operator` as an operator for `holder` until the timestamp `until`. NOTE: An operator may transfer any amount of tokens on behalf of a holder while approved.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. Returns the indicated total supply.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/FHERC20Permit_Harness.sol\":\"FHERC20Permit_Harness\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@luxfi/contracts/=node_modules/@luxfi/contracts/\",\":@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/FHERC20.sol\":{\"keccak256\":\"0x244749607f176c689be053fd7927cbaf091209b48578442f279b38d3f5bf6349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ecc4106a8dcf4ad0b169c088597be237496b30bb1004a5fb1e555d693a8a4dd5\",\"dweb:/ipfs/QmT7J1gh7ehWqYf5CWFfuHi6JfVjWTYW8Nffzqhkk6B2Lv\"]},\"contracts/FHERC20Permit.sol\":{\"keccak256\":\"0x663a7cd4a118fe03d643023378cd6ea1b731df688aa91fefefb88feaf8e48825\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af908314b7987415d3f33c2cde1f14ceb18f33b13bea1c4b87c9cef4e9dc42ef\",\"dweb:/ipfs/QmYiWcvUpQeswaG4UpXqvrMK9Ba82kjhryTeuS1RVDjQjp\"]},\"contracts/interfaces/IFHERC20.sol\":{\"keccak256\":\"0x79df467b619b818fea25c5d549aa7411dbf58bac635d3510f1ebf48cd47faed6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d892979a5bb813896710df407de396d4f11baca9b32c0fe43e9b89587fb79b0d\",\"dweb:/ipfs/Qmdqu1LmDzdxSd6tmgHko3L84hzWAtswjJqLLghhcVCxr4\"]},\"contracts/interfaces/IFHERC20Errors.sol\":{\"keccak256\":\"0xdc913f426c7a7bd670dd4cd679f2a237009f2e2449685a8011ffb33c850fb8ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aec51bbce38cd7335901334c6ece4153cce5c34cd9b9756d0009eca81d465371\",\"dweb:/ipfs/QmWHvKbj3ijoJq39R13fiZuAniTEuQh1oRL4XqfBp43eWW\"]},\"contracts/interfaces/IFHERC20Permit.sol\":{\"keccak256\":\"0xcab40eb2d8969fcf765200443ece7d9f2a2305c6bcc0c75b048d530f06ad2104\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91fb3e689d14d78cf4a45be9307a9864de590c0c6d27fc1d3ddc300726c09cea\",\"dweb:/ipfs/QmeN6oMAS7MKovEazogZsyCAXC4aT8U8HRgVKSfASZh2z5\"]},\"contracts/interfaces/IFHERC20Receiver.sol\":{\"keccak256\":\"0xaac3b3d8afc89c05213decaf8fc6689280af55d564fa0d19ae7f65a0036bd741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922645c6959d7409eeb14682cd2d3aa7ee445f839cedbd3e57d1aa060eccc5bb\",\"dweb:/ipfs/Qmc3MCSEe739GLSUZUunrB59DGohSvtqAFCkLMws3q2PtS\"]},\"contracts/test/FHERC20Permit_Harness.sol\":{\"keccak256\":\"0x718bb7e50a15541990e181864e09b143c50f593f0d285b3948b9b0fdf6461301\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb7ed02be655003877bb7defe9287a6ce34dd82bbde2e57c5eebe712cc809a61\",\"dweb:/ipfs/QmRFmnbWVJBsPJPNu62hiZ3XPZk89oSrMnQJwbzQVCYDY2\"]},\"contracts/utils/FHERC20Utils.sol\":{\"keccak256\":\"0x8aa6611b9bc478893f4f046e24207a4b028a3005b89fe1381bf0eddba95e3947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94da112f3eb641af69c0f487a9f695df0789c2044ecdac84a72fbbed80d1eff5\",\"dweb:/ipfs/QmXJMZgKoKGiuRKTzKiMAgjRKRrbpbm1HqJefAheYBAvE7\"]},\"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/@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/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"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/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":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"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":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"permitOwner","type":"address"}],"type":"error","name":"FHERC20ConfidentialTransferFromOwnerMismatch"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"permitSpender","type":"address"}],"type":"error","name":"FHERC20ConfidentialTransferFromSpenderMismatch"},{"inputs":[{"internalType":"uint256","name":"inValueHash","type":"uint256"},{"internalType":"uint256","name":"permitValueHash","type":"uint256"}],"type":"error","name":"FHERC20ConfidentialTransferFromValueHashMismatch"},{"inputs":[],"type":"error","name":"FHERC20IncompatibleFunction"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"FHERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"FHERC20UnauthorizedSpender"},{"inputs":[{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"FHERC20UnauthorizedUseOfEncryptedAmount"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"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":[{"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":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value_hash","type":"uint256","indexed":false}],"type":"event","name":"ConfidentialTransfer","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"holder","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint48","name":"until","type":"uint48","indexed":false}],"type":"event","name":"OperatorSet","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":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"approve","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":[],"stateMutability":"view","type":"function","name":"balanceOfIsIndicator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"value","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"confidentialBalanceOf","outputs":[{"internalType":"euint64","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"confidentialTotalSupply","outputs":[{"internalType":"euint64","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","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":"confidentialTransfer","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransfer","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","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"}]},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","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":"confidentialTransferFrom","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFrom","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"euint64","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFromAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct Euint64","name":"inValue","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"}]},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"confidentialTransferFromAndCall","outputs":[{"internalType":"euint64","name":"transferred","type":"uint256"}]},{"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":[],"stateMutability":"view","type":"function","name":"indicatorTick","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isFherc20","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"value","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint48","name":"until","type":"uint48"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetIndicatedBalance"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"until","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"uint16","name":"value","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTotalIndicatedSupply"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint16","name":"value","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setUserIndicatedBalance"},{"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":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`."},"approve(address,uint256)":{"details":"See {IERC20-approve}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20. Allowances have been removed from FHERC20s to prevent encrypted balance leakage. Allowances have been replaced with operators for each `confidentialTransferFrom`."},"balanceOf(address)":{"details":"Returns an indicator of the underlying encrypted balance. The value returned is [0](no interaction) / [0.0001 - 0.9999](indicated) Indicator acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001. Returned in the decimal expectation of the token."},"balanceOfIsIndicator()":{"details":"Returns an flag indicating that the public balances returned by `balanceOf` is an indication of the underlying encrypted balance. The value returned is between 0.0000 and 0.9999, and acts as a counter of tokens transfers and changes. Receiving tokens increments this indicator by +0.0001. Sending tokens decrements the indicator by -0.0001."},"confidentialBalanceOf(address)":{"details":"See {IERC20-balanceOf}. Returns the euint64 representing the account's true balance (encrypted)"},"confidentialTotalSupply()":{"details":"Returns the encrypted total supply."},"confidentialTransfer(address,(uint256,uint8,uint8,bytes))":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `inValue` must be a `Euint64` to preserve confidentiality."},"confidentialTransfer(address,uint256)":{"details":"See {IERC20-transfer}. Intended to be used as part of a contract call. Ensure that `value` is allowed to be used by using `FHE.allow` with this contracts address. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`. - `value` must be a `euint64` to preserve confidentiality."},"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."},"indicatorTick()":{"details":"Returns the true size of the indicator tick"},"isFherc20()":{"details":"Returns true if the token is a FHERC20."},"isOperator(address,address)":{"details":"Returns true if `spender` is currently an operator for `holder`."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"setOperator(address,uint48)":{"details":"Sets `operator` as an operator for `holder` until the timestamp `until`. NOTE: An operator may transfer any amount of tokens on behalf of a holder while approved."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}. Returns the indicated total supply."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20"},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Always reverts to prevent FHERC20 from being unintentionally treated as an ERC20"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@luxfi/contracts/=node_modules/@luxfi/contracts/","@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/","@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/test/FHERC20Permit_Harness.sol":"FHERC20Permit_Harness"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/FHERC20.sol":{"keccak256":"0x244749607f176c689be053fd7927cbaf091209b48578442f279b38d3f5bf6349","urls":["bzz-raw://ecc4106a8dcf4ad0b169c088597be237496b30bb1004a5fb1e555d693a8a4dd5","dweb:/ipfs/QmT7J1gh7ehWqYf5CWFfuHi6JfVjWTYW8Nffzqhkk6B2Lv"],"license":"MIT"},"contracts/FHERC20Permit.sol":{"keccak256":"0x663a7cd4a118fe03d643023378cd6ea1b731df688aa91fefefb88feaf8e48825","urls":["bzz-raw://af908314b7987415d3f33c2cde1f14ceb18f33b13bea1c4b87c9cef4e9dc42ef","dweb:/ipfs/QmYiWcvUpQeswaG4UpXqvrMK9Ba82kjhryTeuS1RVDjQjp"],"license":"MIT"},"contracts/interfaces/IFHERC20.sol":{"keccak256":"0x79df467b619b818fea25c5d549aa7411dbf58bac635d3510f1ebf48cd47faed6","urls":["bzz-raw://d892979a5bb813896710df407de396d4f11baca9b32c0fe43e9b89587fb79b0d","dweb:/ipfs/Qmdqu1LmDzdxSd6tmgHko3L84hzWAtswjJqLLghhcVCxr4"],"license":"MIT"},"contracts/interfaces/IFHERC20Errors.sol":{"keccak256":"0xdc913f426c7a7bd670dd4cd679f2a237009f2e2449685a8011ffb33c850fb8ef","urls":["bzz-raw://aec51bbce38cd7335901334c6ece4153cce5c34cd9b9756d0009eca81d465371","dweb:/ipfs/QmWHvKbj3ijoJq39R13fiZuAniTEuQh1oRL4XqfBp43eWW"],"license":"MIT"},"contracts/interfaces/IFHERC20Permit.sol":{"keccak256":"0xcab40eb2d8969fcf765200443ece7d9f2a2305c6bcc0c75b048d530f06ad2104","urls":["bzz-raw://91fb3e689d14d78cf4a45be9307a9864de590c0c6d27fc1d3ddc300726c09cea","dweb:/ipfs/QmeN6oMAS7MKovEazogZsyCAXC4aT8U8HRgVKSfASZh2z5"],"license":"MIT"},"contracts/interfaces/IFHERC20Receiver.sol":{"keccak256":"0xaac3b3d8afc89c05213decaf8fc6689280af55d564fa0d19ae7f65a0036bd741","urls":["bzz-raw://922645c6959d7409eeb14682cd2d3aa7ee445f839cedbd3e57d1aa060eccc5bb","dweb:/ipfs/Qmc3MCSEe739GLSUZUunrB59DGohSvtqAFCkLMws3q2PtS"],"license":"MIT"},"contracts/test/FHERC20Permit_Harness.sol":{"keccak256":"0x718bb7e50a15541990e181864e09b143c50f593f0d285b3948b9b0fdf6461301","urls":["bzz-raw://fb7ed02be655003877bb7defe9287a6ce34dd82bbde2e57c5eebe712cc809a61","dweb:/ipfs/QmRFmnbWVJBsPJPNu62hiZ3XPZk89oSrMnQJwbzQVCYDY2"],"license":"MIT"},"contracts/utils/FHERC20Utils.sol":{"keccak256":"0x8aa6611b9bc478893f4f046e24207a4b028a3005b89fe1381bf0eddba95e3947","urls":["bzz-raw://94da112f3eb641af69c0f487a9f695df0789c2044ecdac84a72fbbed80d1eff5","dweb:/ipfs/QmXJMZgKoKGiuRKTzKiMAgjRKRrbpbm1HqJefAheYBAvE7"],"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/@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/Nonces.sol":{"keccak256":"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f","urls":["bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e","dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ"],"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/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":10} |