diff --git a/.github/workflows/test-workflow.yml b/.github/workflows/test-workflow.yml index 650d7a92c..116fd6675 100644 --- a/.github/workflows/test-workflow.yml +++ b/.github/workflows/test-workflow.yml @@ -9,8 +9,8 @@ on: env: RELAY_IMAGE_TAG: main - NETWORK_NODE_IMAGE_TAG: 0.32.0-alpha.1 - HAVEGED_IMAGE_TAG: 0.32.0-alpha.1 + NETWORK_NODE_IMAGE_TAG: 0.32.0-alpha.4 + HAVEGED_IMAGE_TAG: 0.32.0-alpha.4 MIRROR_IMAGE_TAG: 0.67.2 jobs: diff --git a/artifacts/contracts/hts-precompile/IHederaTokenService.sol/IHederaTokenService.json b/artifacts/contracts/hts-precompile/IHederaTokenService.sol/IHederaTokenService.json index 33f981e75..b1cb5f11c 100644 --- a/artifacts/contracts/hts-precompile/IHederaTokenService.sol/IHederaTokenService.json +++ b/artifacts/contracts/hts-precompile/IHederaTokenService.sol/IHederaTokenService.json @@ -151,9 +151,9 @@ "type": "address" }, { - "internalType": "uint64", + "internalType": "int64", "name": "amount", - "type": "uint64" + "type": "int64" }, { "internalType": "int64[]", @@ -169,9 +169,9 @@ "type": "int64" }, { - "internalType": "uint64", + "internalType": "int64", "name": "newTotalSupply", - "type": "uint64" + "type": "int64" } ], "stateMutability": "nonpayable", @@ -263,9 +263,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -273,9 +273,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -288,14 +288,14 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "initialTotalSupply", - "type": "uint64" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int32", "name": "decimals", - "type": "uint32" + "type": "int32" } ], "name": "createFungibleToken", @@ -400,9 +400,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -410,9 +410,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -425,21 +425,21 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "initialTotalSupply", - "type": "uint64" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int32", "name": "decimals", - "type": "uint32" + "type": "int32" }, { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -469,24 +469,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -606,9 +606,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -616,9 +616,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -733,9 +733,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -743,9 +743,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -760,9 +760,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -792,19 +792,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1170,9 +1170,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1180,9 +1180,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1195,9 +1195,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -1217,9 +1217,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1249,24 +1249,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1286,19 +1286,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1331,9 +1331,9 @@ "type": "tuple" }, { - "internalType": "uint32", + "internalType": "int32", "name": "decimals", - "type": "uint32" + "type": "int32" } ], "internalType": "struct IHederaTokenService.FungibleTokenInfo", @@ -1452,9 +1452,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1462,9 +1462,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1477,9 +1477,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -1499,9 +1499,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1531,24 +1531,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1568,19 +1568,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1664,9 +1664,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1696,24 +1696,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1733,19 +1733,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1837,9 +1837,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1847,9 +1847,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1961,9 +1961,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1971,9 +1971,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1986,9 +1986,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -2008,9 +2008,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2040,24 +2040,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -2077,19 +2077,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2353,9 +2353,9 @@ "type": "address" }, { - "internalType": "uint64", + "internalType": "int64", "name": "amount", - "type": "uint64" + "type": "int64" }, { "internalType": "bytes[]", @@ -2371,9 +2371,9 @@ "type": "int64" }, { - "internalType": "uint64", + "internalType": "int64", "name": "newTotalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "int64[]", @@ -2708,9 +2708,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2718,9 +2718,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -2830,9 +2830,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2840,9 +2840,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -2942,9 +2942,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" } ], "name": "wipeTokenAccount", diff --git a/artifacts/contracts/hts-precompile/KeyHelper.sol/Bits.json b/artifacts/contracts/hts-precompile/KeyHelper.sol/Bits.json index 6855624e2..f46296d87 100644 --- a/artifacts/contracts/hts-precompile/KeyHelper.sol/Bits.json +++ b/artifacts/contracts/hts-precompile/KeyHelper.sol/Bits.json @@ -3,8 +3,8 @@ "contractName": "Bits", "sourceName": "contracts/hts-precompile/KeyHelper.sol", "abi": [], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bc27fe066025bb96b5e59264a4c6ccb0e126ebfd8bdca37953f14075f23f265664736f6c63430008090033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bc27fe066025bb96b5e59264a4c6ccb0e126ebfd8bdca37953f14075f23f265664736f6c63430008090033", + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d8085259036f3f0cef67a9bbff6143159cb14cca2b85257251854e34968e34964736f6c63430008090033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d8085259036f3f0cef67a9bbff6143159cb14cca2b85257251854e34968e34964736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/hts-precompile/examples/erc-721/ERC721Contract.sol/ERC721Contract.json b/artifacts/contracts/hts-precompile/examples/erc-721/ERC721Contract.sol/ERC721Contract.json index eb22c1586..0c91551c9 100644 --- a/artifacts/contracts/hts-precompile/examples/erc-721/ERC721Contract.sol/ERC721Contract.json +++ b/artifacts/contracts/hts-precompile/examples/erc-721/ERC721Contract.sol/ERC721Contract.json @@ -425,8 +425,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610ec5806100206000396000f3fe6080604052600436106100fe5760003560e01c8063a86e357611610095578063e4dc2aa411610064578063e4dc2aa414610280578063e9dc6375146102a0578063eac6f3fe146102c0578063f49f40db146102d3578063f7888aec1461030357600080fd5b8063a86e35761461021a578063cb60f1bf1461023a578063d9fc4b611461025a578063e1f21c671461026d57600080fd5b80631f29d2dc116100d15780631f29d2dc14610199578063367605ca146101b95780636b42bf2f146101d9578063734194a71461020757600080fd5b80630198489214610103578063039d6f1914610139578063098f23661461014e57806315dacbea14610186575b600080fd5b34801561010f57600080fd5b5061012361011e366004610a46565b610323565b6040516101309190610a93565b60405180910390f35b61014c610147366004610ac6565b6103a0565b005b34801561015a57600080fd5b5061016e610169366004610b79565b61040e565b6040516001600160a01b039091168152602001610130565b61014c610194366004610ba5565b610491565b3480156101a557600080fd5b5061016e6101b4366004610b79565b610502565b3480156101c557600080fd5b5061014c6101d4366004610c04565b610532565b3480156101e557600080fd5b506101f96101f4366004610c4f565b61059b565b604051908152602001610130565b61014c610215366004610c4f565b610627565b34801561022657600080fd5b50610123610235366004610a46565b6106c4565b34801561024657600080fd5b506101f9610255366004610b79565b6106ff565b61014c610268366004610ba5565b61077b565b61014c61027b366004610c4f565b6107b8565b34801561028c57600080fd5b506101f961029b366004610a46565b6107ed565b3480156102ac57600080fd5b506101236102bb366004610b79565b610860565b61014c6102ce366004610ba5565b6108df565b3480156102df57600080fd5b506102f36102ee366004610c90565b610977565b6040519015158152602001610130565b34801561030f57600080fd5b506101f961031e366004610cd0565b6109fc565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561035e57600080fd5b505afa158015610372573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261039a9190810190610d1f565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103d49088908890889088908890600401610dcc565b600060405180830381600087803b1580156103ee57600080fd5b505af1158015610402573d6000803e3d6000fd5b50505050505050505050565b60405163020604bf60e21b8152600481018290526000906001600160a01b0384169063081812fc906024015b60206040518083038186803b15801561045257600080fd5b505afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610e20565b9392505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b5050505050505050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e9060240161043a565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050505050565b604051632f745c5960e01b81526001600160a01b0383811660048301526024820183905260009190851690632f745c599060440160206040518083038186803b1580156105e757600080fd5b505afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610e3d565b949350505050565b6040516001600160a01b0383811660248301526044820183905284169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b1790525161067c9190610e56565b600060405180830381855af49150503d80600081146106b7576040519150601f19603f3d011682016040523d82523d6000602084013e6106bc565b606091505b505050505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561035e57600080fd5b604051634f6ccce760e01b8152600481018290526000906001600160a01b03841690634f6ccce7906024015b60206040518083038186803b15801561074357600080fd5b505afa158015610757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610e3d565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016104ca565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b390604401610564565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561082857600080fd5b505afa15801561083c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610e3d565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd9060240160006040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261048a9190810190610d1f565b6040516001600160a01b03848116602483015283811660448301526064820183905285169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b1790525161093c9190610e56565b600060405180830381855af49150503d8060008114610592576040519150601f19603f3d011682016040523d82523d6000602084013e610592565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000919085169063e985e9c59060440160206040518083038186803b1580156109c457600080fd5b505afa1580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610e72565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a082319060240161072b565b6001600160a01b0381168114610a4357600080fd5b50565b600060208284031215610a5857600080fd5b813561048a81610a2e565b60005b83811015610a7e578181015183820152602001610a66565b83811115610a8d576000848401525b50505050565b6020815260008251806020840152610ab2816040850160208701610a63565b601f01601f19169190910160400192915050565b60008060008060008060a08789031215610adf57600080fd5b8635610aea81610a2e565b95506020870135610afa81610a2e565b94506040870135610b0a81610a2e565b935060608701359250608087013567ffffffffffffffff80821115610b2e57600080fd5b818901915089601f830112610b4257600080fd5b813581811115610b5157600080fd5b8a6020828501011115610b6357600080fd5b6020830194508093505050509295509295509295565b60008060408385031215610b8c57600080fd5b8235610b9781610a2e565b946020939093013593505050565b60008060008060808587031215610bbb57600080fd5b8435610bc681610a2e565b93506020850135610bd681610a2e565b92506040850135610be681610a2e565b9396929550929360600135925050565b8015158114610a4357600080fd5b600080600060608486031215610c1957600080fd5b8335610c2481610a2e565b92506020840135610c3481610a2e565b91506040840135610c4481610bf6565b809150509250925092565b600080600060608486031215610c6457600080fd5b8335610c6f81610a2e565b92506020840135610c7f81610a2e565b929592945050506040919091013590565b600080600060608486031215610ca557600080fd5b8335610cb081610a2e565b92506020840135610cc081610a2e565b91506040840135610c4481610a2e565b60008060408385031215610ce357600080fd5b8235610cee81610a2e565b91506020830135610cfe81610a2e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610d3157600080fd5b815167ffffffffffffffff80821115610d4957600080fd5b818401915084601f830112610d5d57600080fd5b815181811115610d6f57610d6f610d09565b604051601f8201601f19908116603f01168101908382118183101715610d9757610d97610d09565b81604052828152876020848701011115610db057600080fd5b610dc1836020830160208801610a63565b979650505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610e3257600080fd5b815161048a81610a2e565b600060208284031215610e4f57600080fd5b5051919050565b60008251610e68818460208701610a63565b9190910192915050565b600060208284031215610e8457600080fd5b815161048a81610bf656fea2646970667358221220435e7ab83df9e872ee32fae86e21a22612135118c0003896eb486c88cd8fe62d64736f6c63430008090033", - "deployedBytecode": "0x6080604052600436106100fe5760003560e01c8063a86e357611610095578063e4dc2aa411610064578063e4dc2aa414610280578063e9dc6375146102a0578063eac6f3fe146102c0578063f49f40db146102d3578063f7888aec1461030357600080fd5b8063a86e35761461021a578063cb60f1bf1461023a578063d9fc4b611461025a578063e1f21c671461026d57600080fd5b80631f29d2dc116100d15780631f29d2dc14610199578063367605ca146101b95780636b42bf2f146101d9578063734194a71461020757600080fd5b80630198489214610103578063039d6f1914610139578063098f23661461014e57806315dacbea14610186575b600080fd5b34801561010f57600080fd5b5061012361011e366004610a46565b610323565b6040516101309190610a93565b60405180910390f35b61014c610147366004610ac6565b6103a0565b005b34801561015a57600080fd5b5061016e610169366004610b79565b61040e565b6040516001600160a01b039091168152602001610130565b61014c610194366004610ba5565b610491565b3480156101a557600080fd5b5061016e6101b4366004610b79565b610502565b3480156101c557600080fd5b5061014c6101d4366004610c04565b610532565b3480156101e557600080fd5b506101f96101f4366004610c4f565b61059b565b604051908152602001610130565b61014c610215366004610c4f565b610627565b34801561022657600080fd5b50610123610235366004610a46565b6106c4565b34801561024657600080fd5b506101f9610255366004610b79565b6106ff565b61014c610268366004610ba5565b61077b565b61014c61027b366004610c4f565b6107b8565b34801561028c57600080fd5b506101f961029b366004610a46565b6107ed565b3480156102ac57600080fd5b506101236102bb366004610b79565b610860565b61014c6102ce366004610ba5565b6108df565b3480156102df57600080fd5b506102f36102ee366004610c90565b610977565b6040519015158152602001610130565b34801561030f57600080fd5b506101f961031e366004610cd0565b6109fc565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561035e57600080fd5b505afa158015610372573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261039a9190810190610d1f565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103d49088908890889088908890600401610dcc565b600060405180830381600087803b1580156103ee57600080fd5b505af1158015610402573d6000803e3d6000fd5b50505050505050505050565b60405163020604bf60e21b8152600481018290526000906001600160a01b0384169063081812fc906024015b60206040518083038186803b15801561045257600080fd5b505afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610e20565b9392505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b5050505050505050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e9060240161043a565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050505050565b604051632f745c5960e01b81526001600160a01b0383811660048301526024820183905260009190851690632f745c599060440160206040518083038186803b1580156105e757600080fd5b505afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610e3d565b949350505050565b6040516001600160a01b0383811660248301526044820183905284169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b1790525161067c9190610e56565b600060405180830381855af49150503d80600081146106b7576040519150601f19603f3d011682016040523d82523d6000602084013e6106bc565b606091505b505050505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561035e57600080fd5b604051634f6ccce760e01b8152600481018290526000906001600160a01b03841690634f6ccce7906024015b60206040518083038186803b15801561074357600080fd5b505afa158015610757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610e3d565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016104ca565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b390604401610564565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561082857600080fd5b505afa15801561083c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610e3d565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd9060240160006040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261048a9190810190610d1f565b6040516001600160a01b03848116602483015283811660448301526064820183905285169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b1790525161093c9190610e56565b600060405180830381855af49150503d8060008114610592576040519150601f19603f3d011682016040523d82523d6000602084013e610592565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000919085169063e985e9c59060440160206040518083038186803b1580156109c457600080fd5b505afa1580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610e72565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a082319060240161072b565b6001600160a01b0381168114610a4357600080fd5b50565b600060208284031215610a5857600080fd5b813561048a81610a2e565b60005b83811015610a7e578181015183820152602001610a66565b83811115610a8d576000848401525b50505050565b6020815260008251806020840152610ab2816040850160208701610a63565b601f01601f19169190910160400192915050565b60008060008060008060a08789031215610adf57600080fd5b8635610aea81610a2e565b95506020870135610afa81610a2e565b94506040870135610b0a81610a2e565b935060608701359250608087013567ffffffffffffffff80821115610b2e57600080fd5b818901915089601f830112610b4257600080fd5b813581811115610b5157600080fd5b8a6020828501011115610b6357600080fd5b6020830194508093505050509295509295509295565b60008060408385031215610b8c57600080fd5b8235610b9781610a2e565b946020939093013593505050565b60008060008060808587031215610bbb57600080fd5b8435610bc681610a2e565b93506020850135610bd681610a2e565b92506040850135610be681610a2e565b9396929550929360600135925050565b8015158114610a4357600080fd5b600080600060608486031215610c1957600080fd5b8335610c2481610a2e565b92506020840135610c3481610a2e565b91506040840135610c4481610bf6565b809150509250925092565b600080600060608486031215610c6457600080fd5b8335610c6f81610a2e565b92506020840135610c7f81610a2e565b929592945050506040919091013590565b600080600060608486031215610ca557600080fd5b8335610cb081610a2e565b92506020840135610cc081610a2e565b91506040840135610c4481610a2e565b60008060408385031215610ce357600080fd5b8235610cee81610a2e565b91506020830135610cfe81610a2e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610d3157600080fd5b815167ffffffffffffffff80821115610d4957600080fd5b818401915084601f830112610d5d57600080fd5b815181811115610d6f57610d6f610d09565b604051601f8201601f19908116603f01168101908382118183101715610d9757610d97610d09565b81604052828152876020848701011115610db057600080fd5b610dc1836020830160208801610a63565b979650505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610e3257600080fd5b815161048a81610a2e565b600060208284031215610e4f57600080fd5b5051919050565b60008251610e68818460208701610a63565b9190910192915050565b600060208284031215610e8457600080fd5b815161048a81610bf656fea2646970667358221220435e7ab83df9e872ee32fae86e21a22612135118c0003896eb486c88cd8fe62d64736f6c63430008090033", + "bytecode": "0x608060405234801561001057600080fd5b50610ec5806100206000396000f3fe6080604052600436106100fe5760003560e01c8063a86e357611610095578063e4dc2aa411610064578063e4dc2aa414610280578063e9dc6375146102a0578063eac6f3fe146102c0578063f49f40db146102d3578063f7888aec1461030357600080fd5b8063a86e35761461021a578063cb60f1bf1461023a578063d9fc4b611461025a578063e1f21c671461026d57600080fd5b80631f29d2dc116100d15780631f29d2dc14610199578063367605ca146101b95780636b42bf2f146101d9578063734194a71461020757600080fd5b80630198489214610103578063039d6f1914610139578063098f23661461014e57806315dacbea14610186575b600080fd5b34801561010f57600080fd5b5061012361011e366004610a46565b610323565b6040516101309190610a93565b60405180910390f35b61014c610147366004610ac6565b6103a0565b005b34801561015a57600080fd5b5061016e610169366004610b79565b61040e565b6040516001600160a01b039091168152602001610130565b61014c610194366004610ba5565b610491565b3480156101a557600080fd5b5061016e6101b4366004610b79565b610502565b3480156101c557600080fd5b5061014c6101d4366004610c04565b610532565b3480156101e557600080fd5b506101f96101f4366004610c4f565b61059b565b604051908152602001610130565b61014c610215366004610c4f565b610627565b34801561022657600080fd5b50610123610235366004610a46565b6106c4565b34801561024657600080fd5b506101f9610255366004610b79565b6106ff565b61014c610268366004610ba5565b61077b565b61014c61027b366004610c4f565b6107b8565b34801561028c57600080fd5b506101f961029b366004610a46565b6107ed565b3480156102ac57600080fd5b506101236102bb366004610b79565b610860565b61014c6102ce366004610ba5565b6108df565b3480156102df57600080fd5b506102f36102ee366004610c90565b610977565b6040519015158152602001610130565b34801561030f57600080fd5b506101f961031e366004610cd0565b6109fc565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561035e57600080fd5b505afa158015610372573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261039a9190810190610d1f565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103d49088908890889088908890600401610dcc565b600060405180830381600087803b1580156103ee57600080fd5b505af1158015610402573d6000803e3d6000fd5b50505050505050505050565b60405163020604bf60e21b8152600481018290526000906001600160a01b0384169063081812fc906024015b60206040518083038186803b15801561045257600080fd5b505afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610e20565b9392505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b5050505050505050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e9060240161043a565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050505050565b604051632f745c5960e01b81526001600160a01b0383811660048301526024820183905260009190851690632f745c599060440160206040518083038186803b1580156105e757600080fd5b505afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610e3d565b949350505050565b6040516001600160a01b0383811660248301526044820183905284169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b1790525161067c9190610e56565b600060405180830381855af49150503d80600081146106b7576040519150601f19603f3d011682016040523d82523d6000602084013e6106bc565b606091505b505050505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561035e57600080fd5b604051634f6ccce760e01b8152600481018290526000906001600160a01b03841690634f6ccce7906024015b60206040518083038186803b15801561074357600080fd5b505afa158015610757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610e3d565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016104ca565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b390604401610564565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561082857600080fd5b505afa15801561083c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610e3d565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd9060240160006040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261048a9190810190610d1f565b6040516001600160a01b03848116602483015283811660448301526064820183905285169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b1790525161093c9190610e56565b600060405180830381855af49150503d8060008114610592576040519150601f19603f3d011682016040523d82523d6000602084013e610592565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000919085169063e985e9c59060440160206040518083038186803b1580156109c457600080fd5b505afa1580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610e72565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a082319060240161072b565b6001600160a01b0381168114610a4357600080fd5b50565b600060208284031215610a5857600080fd5b813561048a81610a2e565b60005b83811015610a7e578181015183820152602001610a66565b83811115610a8d576000848401525b50505050565b6020815260008251806020840152610ab2816040850160208701610a63565b601f01601f19169190910160400192915050565b60008060008060008060a08789031215610adf57600080fd5b8635610aea81610a2e565b95506020870135610afa81610a2e565b94506040870135610b0a81610a2e565b935060608701359250608087013567ffffffffffffffff80821115610b2e57600080fd5b818901915089601f830112610b4257600080fd5b813581811115610b5157600080fd5b8a6020828501011115610b6357600080fd5b6020830194508093505050509295509295509295565b60008060408385031215610b8c57600080fd5b8235610b9781610a2e565b946020939093013593505050565b60008060008060808587031215610bbb57600080fd5b8435610bc681610a2e565b93506020850135610bd681610a2e565b92506040850135610be681610a2e565b9396929550929360600135925050565b8015158114610a4357600080fd5b600080600060608486031215610c1957600080fd5b8335610c2481610a2e565b92506020840135610c3481610a2e565b91506040840135610c4481610bf6565b809150509250925092565b600080600060608486031215610c6457600080fd5b8335610c6f81610a2e565b92506020840135610c7f81610a2e565b929592945050506040919091013590565b600080600060608486031215610ca557600080fd5b8335610cb081610a2e565b92506020840135610cc081610a2e565b91506040840135610c4481610a2e565b60008060408385031215610ce357600080fd5b8235610cee81610a2e565b91506020830135610cfe81610a2e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610d3157600080fd5b815167ffffffffffffffff80821115610d4957600080fd5b818401915084601f830112610d5d57600080fd5b815181811115610d6f57610d6f610d09565b604051601f8201601f19908116603f01168101908382118183101715610d9757610d97610d09565b81604052828152876020848701011115610db057600080fd5b610dc1836020830160208801610a63565b979650505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610e3257600080fd5b815161048a81610a2e565b600060208284031215610e4f57600080fd5b5051919050565b60008251610e68818460208701610a63565b9190910192915050565b600060208284031215610e8457600080fd5b815161048a81610bf656fea2646970667358221220b045553e3ada4c691db9ed645d3a194c70396938900024b4711264b1cbe3975064736f6c63430008090033", + "deployedBytecode": "0x6080604052600436106100fe5760003560e01c8063a86e357611610095578063e4dc2aa411610064578063e4dc2aa414610280578063e9dc6375146102a0578063eac6f3fe146102c0578063f49f40db146102d3578063f7888aec1461030357600080fd5b8063a86e35761461021a578063cb60f1bf1461023a578063d9fc4b611461025a578063e1f21c671461026d57600080fd5b80631f29d2dc116100d15780631f29d2dc14610199578063367605ca146101b95780636b42bf2f146101d9578063734194a71461020757600080fd5b80630198489214610103578063039d6f1914610139578063098f23661461014e57806315dacbea14610186575b600080fd5b34801561010f57600080fd5b5061012361011e366004610a46565b610323565b6040516101309190610a93565b60405180910390f35b61014c610147366004610ac6565b6103a0565b005b34801561015a57600080fd5b5061016e610169366004610b79565b61040e565b6040516001600160a01b039091168152602001610130565b61014c610194366004610ba5565b610491565b3480156101a557600080fd5b5061016e6101b4366004610b79565b610502565b3480156101c557600080fd5b5061014c6101d4366004610c04565b610532565b3480156101e557600080fd5b506101f96101f4366004610c4f565b61059b565b604051908152602001610130565b61014c610215366004610c4f565b610627565b34801561022657600080fd5b50610123610235366004610a46565b6106c4565b34801561024657600080fd5b506101f9610255366004610b79565b6106ff565b61014c610268366004610ba5565b61077b565b61014c61027b366004610c4f565b6107b8565b34801561028c57600080fd5b506101f961029b366004610a46565b6107ed565b3480156102ac57600080fd5b506101236102bb366004610b79565b610860565b61014c6102ce366004610ba5565b6108df565b3480156102df57600080fd5b506102f36102ee366004610c90565b610977565b6040519015158152602001610130565b34801561030f57600080fd5b506101f961031e366004610cd0565b6109fc565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561035e57600080fd5b505afa158015610372573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261039a9190810190610d1f565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103d49088908890889088908890600401610dcc565b600060405180830381600087803b1580156103ee57600080fd5b505af1158015610402573d6000803e3d6000fd5b50505050505050505050565b60405163020604bf60e21b8152600481018290526000906001600160a01b0384169063081812fc906024015b60206040518083038186803b15801561045257600080fd5b505afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610e20565b9392505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b5050505050505050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e9060240161043a565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b50505050505050565b604051632f745c5960e01b81526001600160a01b0383811660048301526024820183905260009190851690632f745c599060440160206040518083038186803b1580156105e757600080fd5b505afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610e3d565b949350505050565b6040516001600160a01b0383811660248301526044820183905284169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b1790525161067c9190610e56565b600060405180830381855af49150503d80600081146106b7576040519150601f19603f3d011682016040523d82523d6000602084013e6106bc565b606091505b505050505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561035e57600080fd5b604051634f6ccce760e01b8152600481018290526000906001600160a01b03841690634f6ccce7906024015b60206040518083038186803b15801561074357600080fd5b505afa158015610757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610e3d565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016104ca565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b390604401610564565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561082857600080fd5b505afa15801561083c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610e3d565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd9060240160006040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261048a9190810190610d1f565b6040516001600160a01b03848116602483015283811660448301526064820183905285169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b1790525161093c9190610e56565b600060405180830381855af49150503d8060008114610592576040519150601f19603f3d011682016040523d82523d6000602084013e610592565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000919085169063e985e9c59060440160206040518083038186803b1580156109c457600080fd5b505afa1580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610e72565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a082319060240161072b565b6001600160a01b0381168114610a4357600080fd5b50565b600060208284031215610a5857600080fd5b813561048a81610a2e565b60005b83811015610a7e578181015183820152602001610a66565b83811115610a8d576000848401525b50505050565b6020815260008251806020840152610ab2816040850160208701610a63565b601f01601f19169190910160400192915050565b60008060008060008060a08789031215610adf57600080fd5b8635610aea81610a2e565b95506020870135610afa81610a2e565b94506040870135610b0a81610a2e565b935060608701359250608087013567ffffffffffffffff80821115610b2e57600080fd5b818901915089601f830112610b4257600080fd5b813581811115610b5157600080fd5b8a6020828501011115610b6357600080fd5b6020830194508093505050509295509295509295565b60008060408385031215610b8c57600080fd5b8235610b9781610a2e565b946020939093013593505050565b60008060008060808587031215610bbb57600080fd5b8435610bc681610a2e565b93506020850135610bd681610a2e565b92506040850135610be681610a2e565b9396929550929360600135925050565b8015158114610a4357600080fd5b600080600060608486031215610c1957600080fd5b8335610c2481610a2e565b92506020840135610c3481610a2e565b91506040840135610c4481610bf6565b809150509250925092565b600080600060608486031215610c6457600080fd5b8335610c6f81610a2e565b92506020840135610c7f81610a2e565b929592945050506040919091013590565b600080600060608486031215610ca557600080fd5b8335610cb081610a2e565b92506020840135610cc081610a2e565b91506040840135610c4481610a2e565b60008060408385031215610ce357600080fd5b8235610cee81610a2e565b91506020830135610cfe81610a2e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610d3157600080fd5b815167ffffffffffffffff80821115610d4957600080fd5b818401915084601f830112610d5d57600080fd5b815181811115610d6f57610d6f610d09565b604051601f8201601f19908116603f01168101908382118183101715610d9757610d97610d09565b81604052828152876020848701011115610db057600080fd5b610dc1836020830160208801610a63565b979650505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610e3257600080fd5b815161048a81610a2e565b600060208284031215610e4f57600080fd5b5051919050565b60008251610e68818460208701610a63565b9190910192915050565b600060208284031215610e8457600080fd5b815161048a81610bf656fea2646970667358221220b045553e3ada4c691db9ed645d3a194c70396938900024b4711264b1cbe3975064736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol/TokenCreateContract.json b/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol/TokenCreateContract.json index 4262f2c36..0daee6465 100644 --- a/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol/TokenCreateContract.json +++ b/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol/TokenCreateContract.json @@ -34,9 +34,9 @@ "inputs": [ { "indexed": false, - "internalType": "uint64", + "internalType": "int64", "name": "newTotalSupply", - "type": "uint64" + "type": "int64" }, { "indexed": false, @@ -336,9 +336,9 @@ "type": "address" }, { - "internalType": "uint64", + "internalType": "int64", "name": "amount", - "type": "uint64" + "type": "int64" }, { "internalType": "bytes[]", @@ -354,9 +354,9 @@ "type": "int256" }, { - "internalType": "uint64", + "internalType": "int64", "name": "newTotalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "int64[]", @@ -375,9 +375,9 @@ "type": "address" }, { - "internalType": "uint64", + "internalType": "int64", "name": "amount", - "type": "uint64" + "type": "int64" }, { "internalType": "bytes[]", @@ -393,9 +393,9 @@ "type": "int256" }, { - "internalType": "uint64", + "internalType": "int64", "name": "newTotalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "int64[]", @@ -475,8 +475,8 @@ "type": "function" } ], - "bytecode": "0x60c06040526009608081905268746f6b656e4e616d6560b81b60a09081526200002c9160029190620001cc565b5060408051808201909152600b8082526a1d1bdad95b94de5b589bdb60aa1b60209092019182526200006191600391620001cc565b50604080518082019091526004808252636d656d6f60e01b60209092019182526200008d9181620001cc565b50600580546001600160a81b031916700800000000000003e800000000000003e8179055348015620000be57600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55620002af565b828054620001da9062000272565b90600052602060002090601f016020900481019282620001fe576000855562000249565b82601f106200021957805160ff191683800117855562000249565b8280016001018555821562000249579182015b82811115620002495782518255916020019190600101906200022c565b50620002579291506200025b565b5090565b5b808211156200025757600081556001016200025c565b600181811c908216806200028757607f821691505b60208210811415620002a957634e487b7160e01b600052602260045260246000fd5b50919050565b61375c80620002bf6000396000f3fe6080604052600436106100f35760003560e01c80638070905f1161008a578063b35d417a11610059578063b35d417a14610286578063d85f74c114610299578063eac6f3fe146102ac578063f4a01e5b146102cc57600080fd5b80638070905f146102085780638ba74da0146102285780638f74a17b1461023b5780639b23d3d91461026657600080fd5b806315dacbea116100c657806315dacbea14610193578063492d21f7146101b35780634b5c6687146101e257806371de3707146101f557600080fd5b80630488c939146100f85780630fd2601e1461010d578063118741e71461014557806311e1fc0714610173575b600080fd5b61010b610106366004612b48565b6102ec565b005b34801561011957600080fd5b5061012d610128366004612b48565b61086e565b60405160079190910b81526020015b60405180910390f35b34801561015157600080fd5b50610165610160366004612bec565b6108cb565b60405190815260200161013c565b34801561017f57600080fd5b5061012d61018e366004612ca0565b61091f565b34801561019f57600080fd5b5061012d6101ae366004612ca0565b610a11565b3480156101bf57600080fd5b506101d36101ce366004612d77565b610acd565b60405161013c93929190612e8d565b61010b6101f0366004612ebf565b610b8e565b61010b610203366004612eeb565b610fa5565b34801561021457600080fd5b506101d3610223366004612d77565b611137565b61010b610236366004612b48565b6111d1565b61024e610249366004612f4f565b61164c565b6040516001600160a01b03909116815260200161013c565b34801561027257600080fd5b5061012d610281366004612ca0565b611a1d565b61010b610294366004612f4f565b611a62565b61010b6102a7366004612ebf565b611e0e565b3480156102b857600080fd5b5061012d6102c7366004612ca0565b6121af565b3480156102d857600080fd5b506101656102e7366004612b48565b6121f4565b60408051600580825260c08201909252600091816020015b61030c612ad3565b81526020019060019003908161030457905050905061033f60006006600060405180602001604052806000815250612200565b8160008151811061035257610352612f9f565b60200260200101819052506103796001600060405180602001604052806000815250612237565b8160018151811061038c5761038c612f9f565b60200260200101819052506103b36002600060405180602001604052806000815250612237565b816002815181106103c6576103c6612f9f565b60200260200101819052506103ed6004600060405180602001604052806000815250612237565b8160038151811061040057610400612f9f565b60200260200101819052506104276003600060405180602001604052806000815250612237565b8160048151811061043a5761043a612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001856001600160a01b03168152602001627a120063ffffffff16815250905060006040518061012001604052806002805461049890612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546104c490612fb5565b80156105115780601f106104e657610100808354040283529160200191610511565b820191906000526020600020905b8154815290600101906020018083116104f457829003601f168201915b505050505081526020016003805461052890612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461055490612fb5565b80156105a15780601f10610576576101008083540402835291602001916105a1565b820191906000526020600020905b81548152906001019060200180831161058457829003601f168201915b50505050508152602001866001600160a01b03168152602001600480546105c790612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546105f390612fb5565b80156106405780601f1061061557610100808354040283529160200191610640565b820191906000526020600020905b81548152906001019060200180831161062357829003601f168201915b5050509183525050600160208201819052600554600160401b810460070b6040840152600160a01b900460ff16151560608301526080820186905260a09091018490529091506000906040519080825280602002602001820160405280156106e257816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816106a75790505b506040805160a081018252600181526001600160a01b0380891660208301526000928201839052606082018390528916608082015282519293509183919061072c5761072c612f9f565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a0820152825260001990920191018161074e5790505090506040518060c00160405280600463ffffffff168152602001600563ffffffff168152602001600a63ffffffff168152602001876001600160a01b03168152602001600015158152602001886001600160a01b0316815250816000815181106107fc576107fc612f9f565b602002602001018190525060008061081585858561226c565b90925090506016821461082757600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050505050565b600061087a838361239a565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b6016146108c557600080fd5b92915050565b60006108d7838361247d565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161090a91815260200190565b60405180910390a1601681146108c557600080fd5b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161099e9190613020565b600060405180830381855af49150503d80600081146109d9576040519150601f19603f3d011682016040523d82523d6000602084013e6109de565b606091505b5091509150816109ef576015610a03565b80806020019051810190610a039190613053565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a909190613020565b6000604051808303816000865af19150503d80600081146109d9576040519150601f19603f3d011682016040523d82523d6000602084013e6109de565b6000806060610add8686866124a9565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a160168314610b2557600080fd5b7feff23992f47b3c101679f8b4dc9d3e242c903909dba4a453f2b2341ad463b0e28282604051610b5692919061306e565b60405180910390a1610b8486303384600081518110610b7757610b77612f9f565b60200260200101516125a7565b5093509350939050565b60408051600580825260c08201909252600091816020015b610bae612ad3565b815260200190600190039081610ba6579050509050610be160006006600060405180602001604052806000815250612200565b81600081518110610bf457610bf4612f9f565b6020026020010181905250610c1b6001600060405180602001604052806000815250612237565b81600181518110610c2e57610c2e612f9f565b6020026020010181905250610c556002600060405180602001604052806000815250612237565b81600281518110610c6857610c68612f9f565b6020026020010181905250610c8f6003600060405180602001604052806000815250612237565b81600381518110610ca257610ca2612f9f565b6020026020010181905250610cc96004600060405180602001604052806000815250612237565b81600481518110610cdc57610cdc612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001846001600160a01b03168152602001627a120063ffffffff168152509050600060405180610120016040528060028054610d3a90612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6690612fb5565b8015610db35780601f10610d8857610100808354040283529160200191610db3565b820191906000526020600020905b815481529060010190602001808311610d9657829003601f168201915b5050505050815260200160038054610dca90612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054610df690612fb5565b8015610e435780601f10610e1857610100808354040283529160200191610e43565b820191906000526020600020905b815481529060010190602001808311610e2657829003601f168201915b50505050508152602001856001600160a01b0316815260200160048054610e6990612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9590612fb5565b8015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b810460ff16151560608301526080820186905260a09091018490529091506000908190610f4f90849067ffffffffffffffff811690600160801b900463ffffffff166125ef565b909250905060168214610f6157600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050565b604051638f74a17b60e01b81526000903090638f74a17b903490610fcf90889088906004016130c5565b6020604051808303818588803b158015610fe857600080fd5b505af1158015610ffc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061102191906130e7565b60405163f4a01e5b60e01b81523360048201526001600160a01b0382166024820152909150309063f4a01e5b90604401602060405180830381600087803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a39190613104565b506040516307e9300f60e11b81526001600160a01b03821660048201523360248201523090630fd2601e90604401602060405180830381600087803b1580156110eb57600080fd5b505af11580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611123919061311d565b5061113081303385612662565b5050505050565b60008060606111478686866124a9565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a16016831461118f57600080fd5b7feff23992f47b3c101679f8b4dc9d3e242c903909dba4a453f2b2341ad463b0e282826040516111c092919061306e565b60405180910390a193509350939050565b604080516001808252818301909252600091816020015b6111f0612ad3565b8152602001906001900390816111e8579050509050611222600080600060405180602001604052806000815250612200565b8160008151811061123557611235612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001856001600160a01b03168152602001627a120063ffffffff16815250905060006040518061012001604052806002805461129390612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546112bf90612fb5565b801561130c5780601f106112e15761010080835404028352916020019161130c565b820191906000526020600020905b8154815290600101906020018083116112ef57829003601f168201915b505050505081526020016003805461132390612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461134f90612fb5565b801561139c5780601f106113715761010080835404028352916020019161139c565b820191906000526020600020905b81548152906001019060200180831161137f57829003601f168201915b50505050508152602001866001600160a01b03168152602001600480546113c290612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546113ee90612fb5565b801561143b5780601f106114105761010080835404028352916020019161143b565b820191906000526020600020905b81548152906001019060200180831161141e57829003601f168201915b5050509183525050600160208201819052600554600160401b900460070b6040808401919091526000606084018190526080840188905260a09093018690528051828152808201909152929350909190816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816114905750506040805160a081018252600181526001600160a01b0388811660208301526000928201839052606082018390528916608082015282519293509183919061151357611513612f9f565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816115355750506040805160c0810182526004815260056020820152600a91810191909152601e60608201526000608082018190526001600160a01b038a1660a0830152825192935090918391906115c9576115c9612f9f565b6020908102919091010152600554600090819061160290869067ffffffffffffffff811690600160801b900463ffffffff1687876126aa565b915091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8260405161163791815260200190565b60405180910390a16016821461082757600080fd5b60408051600580825260c08201909252600091829190816020015b61166f612ad3565b81526020019060019003908161166757905050905061169360006006600386612200565b816000815181106116a6576116a6612f9f565b60200260200101819052506116be6001600385612237565b816001815181106116d1576116d1612f9f565b60200260200101819052506116e96002600385612237565b816002815181106116fc576116fc612f9f565b60200260200101819052506117146004600385612237565b8160038151811061172757611727612f9f565b602002602001018190525061173e60038085612237565b8160048151811061175157611751612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001866001600160a01b03168152602001627a120063ffffffff1681525090506000604051806101200160405280600280546117af90612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546117db90612fb5565b80156118285780601f106117fd57610100808354040283529160200191611828565b820191906000526020600020905b81548152906001019060200180831161180b57829003601f168201915b505050505081526020016003805461183f90612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461186b90612fb5565b80156118b85780601f1061188d576101008083540402835291602001916118b8565b820191906000526020600020905b81548152906001019060200180831161189b57829003601f168201915b50505050508152602001876001600160a01b03168152602001600480546118de90612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461190a90612fb5565b80156119575780601f1061192c57610100808354040283529160200191611957565b820191906000526020600020905b81548152906001019060200180831161193a57829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b810460ff16151560608301526080820186905260a090910184905290915060009081906119c490849067ffffffffffffffff811690600160801b900463ffffffff166125ef565b9092509050601682146119d657600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a401610a52565b60408051600580825260c08201909252600091816020015b611a82612ad3565b815260200190600190039081611a7a579050509050611aa660006006600385612200565b81600081518110611ab957611ab9612f9f565b6020026020010181905250611ad16001600384612237565b81600181518110611ae457611ae4612f9f565b6020026020010181905250611afc6002600384612237565b81600281518110611b0f57611b0f612f9f565b6020026020010181905250611b276004600384612237565b81600381518110611b3a57611b3a612f9f565b6020026020010181905250611b5160038084612237565b81600481518110611b6457611b64612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001856001600160a01b03168152602001627a120063ffffffff168152509050600060405180610120016040528060028054611bc290612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054611bee90612fb5565b8015611c3b5780601f10611c1057610100808354040283529160200191611c3b565b820191906000526020600020905b815481529060010190602001808311611c1e57829003601f168201915b5050505050815260200160038054611c5290612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7e90612fb5565b8015611ccb5780601f10611ca057610100808354040283529160200191611ccb565b820191906000526020600020905b815481529060010190602001808311611cae57829003601f168201915b50505050508152602001866001600160a01b0316815260200160048054611cf190612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1d90612fb5565b8015611d6a5780601f10611d3f57610100808354040283529160200191611d6a565b820191906000526020600020905b815481529060010190602001808311611d4d57829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080611db7836127de565b909250905060168214611dc957600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050565b60408051600580825260c08201909252600091816020015b611e2e612ad3565b815260200190600190039081611e26579050509050611e6160006006600060405180602001604052806000815250612200565b81600081518110611e7457611e74612f9f565b6020026020010181905250611e9b6001600060405180602001604052806000815250612237565b81600181518110611eae57611eae612f9f565b6020026020010181905250611ed56002600060405180602001604052806000815250612237565b81600281518110611ee857611ee8612f9f565b6020026020010181905250611f0f6004600060405180602001604052806000815250612237565b81600381518110611f2257611f22612f9f565b6020026020010181905250611f496003600060405180602001604052806000815250612237565b81600481518110611f5c57611f5c612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001846001600160a01b03168152602001627a120063ffffffff168152509050600060405180610120016040528060028054611fba90612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054611fe690612fb5565b80156120335780601f1061200857610100808354040283529160200191612033565b820191906000526020600020905b81548152906001019060200180831161201657829003601f168201915b505050505081526020016003805461204a90612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461207690612fb5565b80156120c35780601f10612098576101008083540402835291602001916120c3565b820191906000526020600020905b8154815290600101906020018083116120a657829003601f168201915b50505050508152602001856001600160a01b03168152602001600480546120e990612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461211590612fb5565b80156121625780601f1061213757610100808354040283529160200191612162565b820191906000526020600020905b81548152906001019060200180831161214557829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080610f4f836127de565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a401610960565b60006108d78383612906565b612208612ad3565b604051806040016040528061221d878761293c565b815260200161222c858561297e565b905295945050505050565b61223f612ad3565b604051806040016040528061225386612a94565b8152602001612262858561297e565b9052949350505050565b600080848061010001516000015163ffffffff16600014801561229c57506101008101516040015163ffffffff16155b156122b2576101008101516276a7006040909101525b6000806101676001600160a01b031634634573396960e01b8a8a8a6040516024016122df9392919061336e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161231d9190613020565b60006040518083038185875af1925050503d806000811461235a576040519150601f19603f3d011682016040523d82523d6000602084013e61235f565b606091505b5091509150816123725760156000612386565b808060200190518101906123869190613427565b60039190910b999098509650505050505050565b6040516001600160a01b038381166024830152821660448201526000908190819061016790638f8d7f9960e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161240a9190613020565b6000604051808303816000865af19150503d8060008114612447576040519150601f19603f3d011682016040523d82523d6000602084013e61244c565b606091505b50915091508161245d576015612471565b808060200190518101906124719190613053565b60030b95945050505050565b60008060006101676001600160a01b0316632e63879b60e01b86866040516024016123cc929190613453565b60008060606000806101676001600160a01b031663278e0b8860e01b8989896040516024016124da939291906134ae565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516125189190613020565b6000604051808303816000865af19150503d8060008114612555576040519150601f19603f3d011682016040523d82523d6000602084013e61255a565b606091505b50915091508161257d576040805160008082526020820190925260159190612591565b808060200190518101906125919190613532565b60039290920b9a90995090975095505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a401610a52565b600080848061010001516000015163ffffffff16600014801561261f57506101008101516040015163ffffffff16155b15612635576101008101516276a7006040909101525b6000806101676001600160a01b03163463c23baeb660e01b8a8a8a6040516024016122df939291906135f2565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a401610a52565b600080868061010001516000015163ffffffff1660001480156126da57506101008101516040015163ffffffff16155b156126f0576101008101516276a7006040909101525b6000806101676001600160a01b03163463b937581a60e01b8c8c8c8c8c60405160240161272195949392919061362b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161275f9190613020565b60006040518083038185875af1925050503d806000811461279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b5091509150816127b457601560006127c8565b808060200190518101906127c89190613427565b60039190910b9b909a5098505050505050505050565b600080828061010001516000015163ffffffff16600014801561280e57506101008101516040015163ffffffff16155b15612824576101008101516276a7006040909101525b6000806101676001600160a01b031634639c89bb3560e01b8860405160240161284d91906136fd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161288b9190613020565b60006040518083038185875af1925050503d80600081146128c8576040519150601f19603f3d011682016040523d82523d6000602084013e6128cd565b606091505b5091509150816128e057601560006128f4565b808060200190518101906128f49190613427565b60039190910b97909650945050505050565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063248a35ef60e11b906064016123cc565b600061296083600681111561295357612953613710565b600160ff9091161b821790565b905061297782600681111561295357612953613710565b9392505050565b6129c46040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b60008360048111156129d8576129d8613710565b14156129e757600181526108c5565b60018360048111156129fb576129fb613710565b1415612a17576000546001600160a01b031660208201526108c5565b6002836004811115612a2b57612a2b613710565b1415612a3d57604081018290526108c5565b6003836004811115612a5157612a51613710565b1415612a6357606081018290526108c5565b6004836004811115612a7757612a77613710565b14156108c5576000546001600160a01b0316608082015292915050565b600060016000836006811115612aac57612aac613710565b6006811115612abd57612abd613710565b8152602001908152602001600020549050919050565b604051806040016040528060008152602001612b2b6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b0381168114612b4557600080fd5b50565b60008060408385031215612b5b57600080fd5b8235612b6681612b30565b91506020830135612b7681612b30565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612bc057612bc0612b81565b604052919050565b600067ffffffffffffffff821115612be257612be2612b81565b5060051b60200190565b60008060408385031215612bff57600080fd5b8235612c0a81612b30565b915060208381013567ffffffffffffffff811115612c2757600080fd5b8401601f81018613612c3857600080fd5b8035612c4b612c4682612bc8565b612b97565b81815260059190911b82018301908381019088831115612c6a57600080fd5b928401925b82841015612c91578335612c8281612b30565b82529284019290840190612c6f565b80955050505050509250929050565b60008060008060808587031215612cb657600080fd5b8435612cc181612b30565b93506020850135612cd181612b30565b92506040850135612ce181612b30565b9396929550929360600135925050565b67ffffffffffffffff81168114612b4557600080fd5b600082601f830112612d1857600080fd5b813567ffffffffffffffff811115612d3257612d32612b81565b612d45601f8201601f1916602001612b97565b818152846020838601011115612d5a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612d8c57600080fd5b8335612d9781612b30565b9250602084810135612da881612cf1565b9250604085013567ffffffffffffffff80821115612dc557600080fd5b818701915087601f830112612dd957600080fd5b8135612de7612c4682612bc8565b81815260059190911b8301840190848101908a831115612e0657600080fd5b8585015b83811015612e3e57803585811115612e225760008081fd5b612e308d89838a0101612d07565b845250918601918601612e0a565b508096505050505050509250925092565b600081518084526020808501945080840160005b83811015612e8257815160070b87529582019590820190600101612e63565b509495945050505050565b83815267ffffffffffffffff83166020820152606060408201526000612eb66060830184612e4f565b95945050505050565b600060208284031215612ed157600080fd5b813561297781612b30565b8060070b8114612b4557600080fd5b600080600060608486031215612f0057600080fd5b8335612f0b81612b30565b9250602084013567ffffffffffffffff811115612f2757600080fd5b612f3386828701612d07565b9250506040840135612f4481612edc565b809150509250925092565b60008060408385031215612f6257600080fd5b8235612f6d81612b30565b9150602083013567ffffffffffffffff811115612f8957600080fd5b612f9585828601612d07565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612fc957607f821691505b60208210811415612fea57634e487b7160e01b600052602260045260246000fd5b50919050565b60005b8381101561300b578181015183820152602001612ff3565b8381111561301a576000848401525b50505050565b60008251613032818460208701612ff0565b9190910192915050565b8051600381900b811461304e57600080fd5b919050565b60006020828403121561306557600080fd5b6129778261303c565b67ffffffffffffffff831681526040602082015260006130916040830184612e4f565b949350505050565b600081518084526130b1816020860160208601612ff0565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082015260006130916040830184613099565b6000602082840312156130f957600080fd5b815161297781612b30565b60006020828403121561311657600080fd5b5051919050565b60006020828403121561312f57600080fd5b815161297781612edc565b600081518084526020808501808196508360051b8101915082860160005b858110156131f15782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b01526131b360e08b0186613099565b928601518a8403603f1901858c01529294506131cf8584613099565b9501511660c09890980197909752505098850198935090840190600101613158565b5091979650505050505050565b6000610160825181855261321482860182613099565b9150506020830151848203602086015261322e8282613099565b915050604083015161324b60408601826001600160a01b03169052565b50606083015184820360608601526132638282613099565b9150506080830151613279608086018215159052565b5060a083015161328e60a086018260070b9052565b5060c08301516132a260c086018215159052565b5060e083015184820360e08601526132ba828261313a565b61010085810151805163ffffffff9081168984015260208201516001600160a01b03166101208a015260408201511661014089015291935091505090949350505050565b600081518084526020808501945080840160005b83811015612e82578151805163ffffffff168852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101613312565b60006060808352613381818401876131fe565b60208482038186015261339482886132fe565b91506040858303818701528287518085528385019150838901945060005b81811015613417578551805163ffffffff908116855286820151811687860152858201511685850152878101516001600160a01b039081168986015260808083015115159086015260a09182015116908401529484019460c0909201916001016133b2565b50909a9950505050505050505050565b6000806040838503121561343a57600080fd5b6134438361303c565b91506020830151612b7681612b30565b6000604082016001600160a01b0380861684526020604081860152828651808552606087019150828801945060005b818110156134a0578551851683529483019491830191600101613482565b509098975050505050505050565b6000606082016001600160a01b0386168352602067ffffffffffffffff8616818501526060604085015281855180845260808601915060808160051b870101935082870160005b8281101561352357607f19888703018452613511868351613099565b955092840192908401906001016134f5565b50939998505050505050505050565b60008060006060848603121561354757600080fd5b6135508461303c565b925060208085015161356181612cf1565b604086015190935067ffffffffffffffff81111561357e57600080fd5b8501601f8101871361358f57600080fd5b805161359d612c4682612bc8565b81815260059190911b820183019083810190898311156135bc57600080fd5b928401925b828410156135e35783516135d481612edc565b825292840192908401906135c1565b80955050505050509250925092565b60608152600061360560608301866131fe565b905067ffffffffffffffff8416602083015263ffffffff83166040830152949350505050565b600060a080835261363e818401896131fe565b602067ffffffffffffffff891681860152604063ffffffff808a1682880152606087850381890152613670858b6132fe565b94506080888603818a0152858a518088528688019150868c01975060005b818110156136e8578851805187168452888101518716898501528781015187168885015285810151871686850152848101511515858501528a01516001600160a01b03168a8401529787019760c09092019160010161368e565b50909f9e505050505050505050505050505050565b60208152600061297760208301846131fe565b634e487b7160e01b600052602160045260246000fdfea264697066735822122049dddd00a45ee42e67c556e3bd49f2b63161bd1a3f19e36165e0d268365eb65564736f6c63430008090033", - "deployedBytecode": "0x6080604052600436106100f35760003560e01c80638070905f1161008a578063b35d417a11610059578063b35d417a14610286578063d85f74c114610299578063eac6f3fe146102ac578063f4a01e5b146102cc57600080fd5b80638070905f146102085780638ba74da0146102285780638f74a17b1461023b5780639b23d3d91461026657600080fd5b806315dacbea116100c657806315dacbea14610193578063492d21f7146101b35780634b5c6687146101e257806371de3707146101f557600080fd5b80630488c939146100f85780630fd2601e1461010d578063118741e71461014557806311e1fc0714610173575b600080fd5b61010b610106366004612b48565b6102ec565b005b34801561011957600080fd5b5061012d610128366004612b48565b61086e565b60405160079190910b81526020015b60405180910390f35b34801561015157600080fd5b50610165610160366004612bec565b6108cb565b60405190815260200161013c565b34801561017f57600080fd5b5061012d61018e366004612ca0565b61091f565b34801561019f57600080fd5b5061012d6101ae366004612ca0565b610a11565b3480156101bf57600080fd5b506101d36101ce366004612d77565b610acd565b60405161013c93929190612e8d565b61010b6101f0366004612ebf565b610b8e565b61010b610203366004612eeb565b610fa5565b34801561021457600080fd5b506101d3610223366004612d77565b611137565b61010b610236366004612b48565b6111d1565b61024e610249366004612f4f565b61164c565b6040516001600160a01b03909116815260200161013c565b34801561027257600080fd5b5061012d610281366004612ca0565b611a1d565b61010b610294366004612f4f565b611a62565b61010b6102a7366004612ebf565b611e0e565b3480156102b857600080fd5b5061012d6102c7366004612ca0565b6121af565b3480156102d857600080fd5b506101656102e7366004612b48565b6121f4565b60408051600580825260c08201909252600091816020015b61030c612ad3565b81526020019060019003908161030457905050905061033f60006006600060405180602001604052806000815250612200565b8160008151811061035257610352612f9f565b60200260200101819052506103796001600060405180602001604052806000815250612237565b8160018151811061038c5761038c612f9f565b60200260200101819052506103b36002600060405180602001604052806000815250612237565b816002815181106103c6576103c6612f9f565b60200260200101819052506103ed6004600060405180602001604052806000815250612237565b8160038151811061040057610400612f9f565b60200260200101819052506104276003600060405180602001604052806000815250612237565b8160048151811061043a5761043a612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001856001600160a01b03168152602001627a120063ffffffff16815250905060006040518061012001604052806002805461049890612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546104c490612fb5565b80156105115780601f106104e657610100808354040283529160200191610511565b820191906000526020600020905b8154815290600101906020018083116104f457829003601f168201915b505050505081526020016003805461052890612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461055490612fb5565b80156105a15780601f10610576576101008083540402835291602001916105a1565b820191906000526020600020905b81548152906001019060200180831161058457829003601f168201915b50505050508152602001866001600160a01b03168152602001600480546105c790612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546105f390612fb5565b80156106405780601f1061061557610100808354040283529160200191610640565b820191906000526020600020905b81548152906001019060200180831161062357829003601f168201915b5050509183525050600160208201819052600554600160401b810460070b6040840152600160a01b900460ff16151560608301526080820186905260a09091018490529091506000906040519080825280602002602001820160405280156106e257816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816106a75790505b506040805160a081018252600181526001600160a01b0380891660208301526000928201839052606082018390528916608082015282519293509183919061072c5761072c612f9f565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a0820152825260001990920191018161074e5790505090506040518060c00160405280600463ffffffff168152602001600563ffffffff168152602001600a63ffffffff168152602001876001600160a01b03168152602001600015158152602001886001600160a01b0316815250816000815181106107fc576107fc612f9f565b602002602001018190525060008061081585858561226c565b90925090506016821461082757600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050505050565b600061087a838361239a565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b6016146108c557600080fd5b92915050565b60006108d7838361247d565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161090a91815260200190565b60405180910390a1601681146108c557600080fd5b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161099e9190613020565b600060405180830381855af49150503d80600081146109d9576040519150601f19603f3d011682016040523d82523d6000602084013e6109de565b606091505b5091509150816109ef576015610a03565b80806020019051810190610a039190613053565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a909190613020565b6000604051808303816000865af19150503d80600081146109d9576040519150601f19603f3d011682016040523d82523d6000602084013e6109de565b6000806060610add8686866124a9565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a160168314610b2557600080fd5b7feff23992f47b3c101679f8b4dc9d3e242c903909dba4a453f2b2341ad463b0e28282604051610b5692919061306e565b60405180910390a1610b8486303384600081518110610b7757610b77612f9f565b60200260200101516125a7565b5093509350939050565b60408051600580825260c08201909252600091816020015b610bae612ad3565b815260200190600190039081610ba6579050509050610be160006006600060405180602001604052806000815250612200565b81600081518110610bf457610bf4612f9f565b6020026020010181905250610c1b6001600060405180602001604052806000815250612237565b81600181518110610c2e57610c2e612f9f565b6020026020010181905250610c556002600060405180602001604052806000815250612237565b81600281518110610c6857610c68612f9f565b6020026020010181905250610c8f6003600060405180602001604052806000815250612237565b81600381518110610ca257610ca2612f9f565b6020026020010181905250610cc96004600060405180602001604052806000815250612237565b81600481518110610cdc57610cdc612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001846001600160a01b03168152602001627a120063ffffffff168152509050600060405180610120016040528060028054610d3a90612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6690612fb5565b8015610db35780601f10610d8857610100808354040283529160200191610db3565b820191906000526020600020905b815481529060010190602001808311610d9657829003601f168201915b5050505050815260200160038054610dca90612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054610df690612fb5565b8015610e435780601f10610e1857610100808354040283529160200191610e43565b820191906000526020600020905b815481529060010190602001808311610e2657829003601f168201915b50505050508152602001856001600160a01b0316815260200160048054610e6990612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9590612fb5565b8015610ee25780601f10610eb757610100808354040283529160200191610ee2565b820191906000526020600020905b815481529060010190602001808311610ec557829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b810460ff16151560608301526080820186905260a09091018490529091506000908190610f4f90849067ffffffffffffffff811690600160801b900463ffffffff166125ef565b909250905060168214610f6157600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050565b604051638f74a17b60e01b81526000903090638f74a17b903490610fcf90889088906004016130c5565b6020604051808303818588803b158015610fe857600080fd5b505af1158015610ffc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061102191906130e7565b60405163f4a01e5b60e01b81523360048201526001600160a01b0382166024820152909150309063f4a01e5b90604401602060405180830381600087803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a39190613104565b506040516307e9300f60e11b81526001600160a01b03821660048201523360248201523090630fd2601e90604401602060405180830381600087803b1580156110eb57600080fd5b505af11580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611123919061311d565b5061113081303385612662565b5050505050565b60008060606111478686866124a9565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a16016831461118f57600080fd5b7feff23992f47b3c101679f8b4dc9d3e242c903909dba4a453f2b2341ad463b0e282826040516111c092919061306e565b60405180910390a193509350939050565b604080516001808252818301909252600091816020015b6111f0612ad3565b8152602001906001900390816111e8579050509050611222600080600060405180602001604052806000815250612200565b8160008151811061123557611235612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001856001600160a01b03168152602001627a120063ffffffff16815250905060006040518061012001604052806002805461129390612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546112bf90612fb5565b801561130c5780601f106112e15761010080835404028352916020019161130c565b820191906000526020600020905b8154815290600101906020018083116112ef57829003601f168201915b505050505081526020016003805461132390612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461134f90612fb5565b801561139c5780601f106113715761010080835404028352916020019161139c565b820191906000526020600020905b81548152906001019060200180831161137f57829003601f168201915b50505050508152602001866001600160a01b03168152602001600480546113c290612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546113ee90612fb5565b801561143b5780601f106114105761010080835404028352916020019161143b565b820191906000526020600020905b81548152906001019060200180831161141e57829003601f168201915b5050509183525050600160208201819052600554600160401b900460070b6040808401919091526000606084018190526080840188905260a09093018690528051828152808201909152929350909190816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816114905750506040805160a081018252600181526001600160a01b0388811660208301526000928201839052606082018390528916608082015282519293509183919061151357611513612f9f565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816115355750506040805160c0810182526004815260056020820152600a91810191909152601e60608201526000608082018190526001600160a01b038a1660a0830152825192935090918391906115c9576115c9612f9f565b6020908102919091010152600554600090819061160290869067ffffffffffffffff811690600160801b900463ffffffff1687876126aa565b915091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8260405161163791815260200190565b60405180910390a16016821461082757600080fd5b60408051600580825260c08201909252600091829190816020015b61166f612ad3565b81526020019060019003908161166757905050905061169360006006600386612200565b816000815181106116a6576116a6612f9f565b60200260200101819052506116be6001600385612237565b816001815181106116d1576116d1612f9f565b60200260200101819052506116e96002600385612237565b816002815181106116fc576116fc612f9f565b60200260200101819052506117146004600385612237565b8160038151811061172757611727612f9f565b602002602001018190525061173e60038085612237565b8160048151811061175157611751612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001866001600160a01b03168152602001627a120063ffffffff1681525090506000604051806101200160405280600280546117af90612fb5565b80601f01602080910402602001604051908101604052809291908181526020018280546117db90612fb5565b80156118285780601f106117fd57610100808354040283529160200191611828565b820191906000526020600020905b81548152906001019060200180831161180b57829003601f168201915b505050505081526020016003805461183f90612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461186b90612fb5565b80156118b85780601f1061188d576101008083540402835291602001916118b8565b820191906000526020600020905b81548152906001019060200180831161189b57829003601f168201915b50505050508152602001876001600160a01b03168152602001600480546118de90612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461190a90612fb5565b80156119575780601f1061192c57610100808354040283529160200191611957565b820191906000526020600020905b81548152906001019060200180831161193a57829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b810460ff16151560608301526080820186905260a090910184905290915060009081906119c490849067ffffffffffffffff811690600160801b900463ffffffff166125ef565b9092509050601682146119d657600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a401610a52565b60408051600580825260c08201909252600091816020015b611a82612ad3565b815260200190600190039081611a7a579050509050611aa660006006600385612200565b81600081518110611ab957611ab9612f9f565b6020026020010181905250611ad16001600384612237565b81600181518110611ae457611ae4612f9f565b6020026020010181905250611afc6002600384612237565b81600281518110611b0f57611b0f612f9f565b6020026020010181905250611b276004600384612237565b81600381518110611b3a57611b3a612f9f565b6020026020010181905250611b5160038084612237565b81600481518110611b6457611b64612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001856001600160a01b03168152602001627a120063ffffffff168152509050600060405180610120016040528060028054611bc290612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054611bee90612fb5565b8015611c3b5780601f10611c1057610100808354040283529160200191611c3b565b820191906000526020600020905b815481529060010190602001808311611c1e57829003601f168201915b5050505050815260200160038054611c5290612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7e90612fb5565b8015611ccb5780601f10611ca057610100808354040283529160200191611ccb565b820191906000526020600020905b815481529060010190602001808311611cae57829003601f168201915b50505050508152602001866001600160a01b0316815260200160048054611cf190612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1d90612fb5565b8015611d6a5780601f10611d3f57610100808354040283529160200191611d6a565b820191906000526020600020905b815481529060010190602001808311611d4d57829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080611db7836127de565b909250905060168214611dc957600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050565b60408051600580825260c08201909252600091816020015b611e2e612ad3565b815260200190600190039081611e26579050509050611e6160006006600060405180602001604052806000815250612200565b81600081518110611e7457611e74612f9f565b6020026020010181905250611e9b6001600060405180602001604052806000815250612237565b81600181518110611eae57611eae612f9f565b6020026020010181905250611ed56002600060405180602001604052806000815250612237565b81600281518110611ee857611ee8612f9f565b6020026020010181905250611f0f6004600060405180602001604052806000815250612237565b81600381518110611f2257611f22612f9f565b6020026020010181905250611f496003600060405180602001604052806000815250612237565b81600481518110611f5c57611f5c612f9f565b602002602001018190525060006040518060600160405280600063ffffffff168152602001846001600160a01b03168152602001627a120063ffffffff168152509050600060405180610120016040528060028054611fba90612fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054611fe690612fb5565b80156120335780601f1061200857610100808354040283529160200191612033565b820191906000526020600020905b81548152906001019060200180831161201657829003601f168201915b505050505081526020016003805461204a90612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461207690612fb5565b80156120c35780601f10612098576101008083540402835291602001916120c3565b820191906000526020600020905b8154815290600101906020018083116120a657829003601f168201915b50505050508152602001856001600160a01b03168152602001600480546120e990612fb5565b80601f016020809104026020016040519081016040528092919081815260200182805461211590612fb5565b80156121625780601f1061213757610100808354040283529160200191612162565b820191906000526020600020905b81548152906001019060200180831161214557829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080610f4f836127de565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a401610960565b60006108d78383612906565b612208612ad3565b604051806040016040528061221d878761293c565b815260200161222c858561297e565b905295945050505050565b61223f612ad3565b604051806040016040528061225386612a94565b8152602001612262858561297e565b9052949350505050565b600080848061010001516000015163ffffffff16600014801561229c57506101008101516040015163ffffffff16155b156122b2576101008101516276a7006040909101525b6000806101676001600160a01b031634634573396960e01b8a8a8a6040516024016122df9392919061336e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161231d9190613020565b60006040518083038185875af1925050503d806000811461235a576040519150601f19603f3d011682016040523d82523d6000602084013e61235f565b606091505b5091509150816123725760156000612386565b808060200190518101906123869190613427565b60039190910b999098509650505050505050565b6040516001600160a01b038381166024830152821660448201526000908190819061016790638f8d7f9960e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161240a9190613020565b6000604051808303816000865af19150503d8060008114612447576040519150601f19603f3d011682016040523d82523d6000602084013e61244c565b606091505b50915091508161245d576015612471565b808060200190518101906124719190613053565b60030b95945050505050565b60008060006101676001600160a01b0316632e63879b60e01b86866040516024016123cc929190613453565b60008060606000806101676001600160a01b031663278e0b8860e01b8989896040516024016124da939291906134ae565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516125189190613020565b6000604051808303816000865af19150503d8060008114612555576040519150601f19603f3d011682016040523d82523d6000602084013e61255a565b606091505b50915091508161257d576040805160008082526020820190925260159190612591565b808060200190518101906125919190613532565b60039290920b9a90995090975095505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a401610a52565b600080848061010001516000015163ffffffff16600014801561261f57506101008101516040015163ffffffff16155b15612635576101008101516276a7006040909101525b6000806101676001600160a01b03163463c23baeb660e01b8a8a8a6040516024016122df939291906135f2565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a401610a52565b600080868061010001516000015163ffffffff1660001480156126da57506101008101516040015163ffffffff16155b156126f0576101008101516276a7006040909101525b6000806101676001600160a01b03163463b937581a60e01b8c8c8c8c8c60405160240161272195949392919061362b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161275f9190613020565b60006040518083038185875af1925050503d806000811461279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b5091509150816127b457601560006127c8565b808060200190518101906127c89190613427565b60039190910b9b909a5098505050505050505050565b600080828061010001516000015163ffffffff16600014801561280e57506101008101516040015163ffffffff16155b15612824576101008101516276a7006040909101525b6000806101676001600160a01b031634639c89bb3560e01b8860405160240161284d91906136fd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161288b9190613020565b60006040518083038185875af1925050503d80600081146128c8576040519150601f19603f3d011682016040523d82523d6000602084013e6128cd565b606091505b5091509150816128e057601560006128f4565b808060200190518101906128f49190613427565b60039190910b97909650945050505050565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063248a35ef60e11b906064016123cc565b600061296083600681111561295357612953613710565b600160ff9091161b821790565b905061297782600681111561295357612953613710565b9392505050565b6129c46040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b60008360048111156129d8576129d8613710565b14156129e757600181526108c5565b60018360048111156129fb576129fb613710565b1415612a17576000546001600160a01b031660208201526108c5565b6002836004811115612a2b57612a2b613710565b1415612a3d57604081018290526108c5565b6003836004811115612a5157612a51613710565b1415612a6357606081018290526108c5565b6004836004811115612a7757612a77613710565b14156108c5576000546001600160a01b0316608082015292915050565b600060016000836006811115612aac57612aac613710565b6006811115612abd57612abd613710565b8152602001908152602001600020549050919050565b604051806040016040528060008152602001612b2b6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b0381168114612b4557600080fd5b50565b60008060408385031215612b5b57600080fd5b8235612b6681612b30565b91506020830135612b7681612b30565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612bc057612bc0612b81565b604052919050565b600067ffffffffffffffff821115612be257612be2612b81565b5060051b60200190565b60008060408385031215612bff57600080fd5b8235612c0a81612b30565b915060208381013567ffffffffffffffff811115612c2757600080fd5b8401601f81018613612c3857600080fd5b8035612c4b612c4682612bc8565b612b97565b81815260059190911b82018301908381019088831115612c6a57600080fd5b928401925b82841015612c91578335612c8281612b30565b82529284019290840190612c6f565b80955050505050509250929050565b60008060008060808587031215612cb657600080fd5b8435612cc181612b30565b93506020850135612cd181612b30565b92506040850135612ce181612b30565b9396929550929360600135925050565b67ffffffffffffffff81168114612b4557600080fd5b600082601f830112612d1857600080fd5b813567ffffffffffffffff811115612d3257612d32612b81565b612d45601f8201601f1916602001612b97565b818152846020838601011115612d5a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612d8c57600080fd5b8335612d9781612b30565b9250602084810135612da881612cf1565b9250604085013567ffffffffffffffff80821115612dc557600080fd5b818701915087601f830112612dd957600080fd5b8135612de7612c4682612bc8565b81815260059190911b8301840190848101908a831115612e0657600080fd5b8585015b83811015612e3e57803585811115612e225760008081fd5b612e308d89838a0101612d07565b845250918601918601612e0a565b508096505050505050509250925092565b600081518084526020808501945080840160005b83811015612e8257815160070b87529582019590820190600101612e63565b509495945050505050565b83815267ffffffffffffffff83166020820152606060408201526000612eb66060830184612e4f565b95945050505050565b600060208284031215612ed157600080fd5b813561297781612b30565b8060070b8114612b4557600080fd5b600080600060608486031215612f0057600080fd5b8335612f0b81612b30565b9250602084013567ffffffffffffffff811115612f2757600080fd5b612f3386828701612d07565b9250506040840135612f4481612edc565b809150509250925092565b60008060408385031215612f6257600080fd5b8235612f6d81612b30565b9150602083013567ffffffffffffffff811115612f8957600080fd5b612f9585828601612d07565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612fc957607f821691505b60208210811415612fea57634e487b7160e01b600052602260045260246000fd5b50919050565b60005b8381101561300b578181015183820152602001612ff3565b8381111561301a576000848401525b50505050565b60008251613032818460208701612ff0565b9190910192915050565b8051600381900b811461304e57600080fd5b919050565b60006020828403121561306557600080fd5b6129778261303c565b67ffffffffffffffff831681526040602082015260006130916040830184612e4f565b949350505050565b600081518084526130b1816020860160208601612ff0565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082015260006130916040830184613099565b6000602082840312156130f957600080fd5b815161297781612b30565b60006020828403121561311657600080fd5b5051919050565b60006020828403121561312f57600080fd5b815161297781612edc565b600081518084526020808501808196508360051b8101915082860160005b858110156131f15782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b01526131b360e08b0186613099565b928601518a8403603f1901858c01529294506131cf8584613099565b9501511660c09890980197909752505098850198935090840190600101613158565b5091979650505050505050565b6000610160825181855261321482860182613099565b9150506020830151848203602086015261322e8282613099565b915050604083015161324b60408601826001600160a01b03169052565b50606083015184820360608601526132638282613099565b9150506080830151613279608086018215159052565b5060a083015161328e60a086018260070b9052565b5060c08301516132a260c086018215159052565b5060e083015184820360e08601526132ba828261313a565b61010085810151805163ffffffff9081168984015260208201516001600160a01b03166101208a015260408201511661014089015291935091505090949350505050565b600081518084526020808501945080840160005b83811015612e82578151805163ffffffff168852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101613312565b60006060808352613381818401876131fe565b60208482038186015261339482886132fe565b91506040858303818701528287518085528385019150838901945060005b81811015613417578551805163ffffffff908116855286820151811687860152858201511685850152878101516001600160a01b039081168986015260808083015115159086015260a09182015116908401529484019460c0909201916001016133b2565b50909a9950505050505050505050565b6000806040838503121561343a57600080fd5b6134438361303c565b91506020830151612b7681612b30565b6000604082016001600160a01b0380861684526020604081860152828651808552606087019150828801945060005b818110156134a0578551851683529483019491830191600101613482565b509098975050505050505050565b6000606082016001600160a01b0386168352602067ffffffffffffffff8616818501526060604085015281855180845260808601915060808160051b870101935082870160005b8281101561352357607f19888703018452613511868351613099565b955092840192908401906001016134f5565b50939998505050505050505050565b60008060006060848603121561354757600080fd5b6135508461303c565b925060208085015161356181612cf1565b604086015190935067ffffffffffffffff81111561357e57600080fd5b8501601f8101871361358f57600080fd5b805161359d612c4682612bc8565b81815260059190911b820183019083810190898311156135bc57600080fd5b928401925b828410156135e35783516135d481612edc565b825292840192908401906135c1565b80955050505050509250925092565b60608152600061360560608301866131fe565b905067ffffffffffffffff8416602083015263ffffffff83166040830152949350505050565b600060a080835261363e818401896131fe565b602067ffffffffffffffff891681860152604063ffffffff808a1682880152606087850381890152613670858b6132fe565b94506080888603818a0152858a518088528688019150868c01975060005b818110156136e8578851805187168452888101518716898501528781015187168885015285810151871686850152848101511515858501528a01516001600160a01b03168a8401529787019760c09092019160010161368e565b50909f9e505050505050505050505050505050565b60208152600061297760208301846131fe565b634e487b7160e01b600052602160045260246000fdfea264697066735822122049dddd00a45ee42e67c556e3bd49f2b63161bd1a3f19e36165e0d268365eb65564736f6c63430008090033", + "bytecode": "0x60c06040526009608081905268746f6b656e4e616d6560b81b60a09081526200002c9160029190620001cc565b5060408051808201909152600b8082526a1d1bdad95b94de5b589bdb60aa1b60209092019182526200006191600391620001cc565b50604080518082019091526004808252636d656d6f60e01b60209092019182526200008d9181620001cc565b50600580546001600160a81b031916700800000000000003e800000000000003e8179055348015620000be57600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55620002af565b828054620001da9062000272565b90600052602060002090601f016020900481019282620001fe576000855562000249565b82601f106200021957805160ff191683800117855562000249565b8280016001018555821562000249579182015b82811115620002495782518255916020019190600101906200022c565b50620002579291506200025b565b5090565b5b808211156200025757600081556001016200025c565b600181811c908216806200028757607f821691505b60208210811415620002a957634e487b7160e01b600052602260045260246000fd5b50919050565b6136ba80620002bf6000396000f3fe6080604052600436106100f35760003560e01c80638ba74da01161008a578063d85f74c111610059578063d85f74c114610279578063de84a7791461028c578063eac6f3fe146102ac578063f4a01e5b146102cc57600080fd5b80638ba74da0146102085780638f74a17b1461021b5780639b23d3d914610246578063b35d417a1461026657600080fd5b806315dacbea116100c657806315dacbea146101935780634b5c6687146101b35780634d1769d6146101c657806371de3707146101f557600080fd5b80630488c939146100f85780630fd2601e1461010d578063118741e71461014557806311e1fc0714610173575b600080fd5b61010b610106366004612ae8565b6102ec565b005b34801561011957600080fd5b5061012d610128366004612ae8565b61085f565b60405160079190910b81526020015b60405180910390f35b34801561015157600080fd5b50610165610160366004612b8c565b6108bc565b60405190815260200161013c565b34801561017f57600080fd5b5061012d61018e366004612c40565b610910565b34801561019f57600080fd5b5061012d6101ae366004612c40565b610a02565b61010b6101c1366004612c91565b610abe565b3480156101d257600080fd5b506101e66101e1366004612d2d565b610ec6565b60405161013c93929190612e43565b61010b610203366004612e6e565b610f87565b61010b610216366004612ae8565b611119565b61022e610229366004612ed2565b611585565b6040516001600160a01b03909116815260200161013c565b34801561025257600080fd5b5061012d610261366004612c40565b611947565b61010b610274366004612ed2565b61198c565b61010b610287366004612c91565b611d32565b34801561029857600080fd5b506101e66102a7366004612d2d565b6120cd565b3480156102b857600080fd5b5061012d6102c7366004612c40565b612167565b3480156102d857600080fd5b506101656102e7366004612ae8565b6121ac565b60408051600580825260c08201909252600091816020015b61030c612a73565b81526020019060019003908161030457905050905061033f600060066000604051806020016040528060008152506121b8565b8160008151811061035257610352612f22565b602002602001018190525061037960016000604051806020016040528060008152506121ef565b8160018151811061038c5761038c612f22565b60200260200101819052506103b360026000604051806020016040528060008152506121ef565b816002815181106103c6576103c6612f22565b60200260200101819052506103ed60046000604051806020016040528060008152506121ef565b8160038151811061040057610400612f22565b602002602001018190525061042760036000604051806020016040528060008152506121ef565b8160048151811061043a5761043a612f22565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461049290612f38565b80601f01602080910402602001604051908101604052809291908181526020018280546104be90612f38565b801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b505050505081526020016003805461052290612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461054e90612f38565b801561059b5780601f106105705761010080835404028352916020019161059b565b820191906000526020600020905b81548152906001019060200180831161057e57829003601f168201915b50505050508152602001866001600160a01b03168152602001600480546105c190612f38565b80601f01602080910402602001604051908101604052809291908181526020018280546105ed90612f38565b801561063a5780601f1061060f5761010080835404028352916020019161063a565b820191906000526020600020905b81548152906001019060200180831161061d57829003601f168201915b5050509183525050600160208201819052600554600160401b810460070b6040840152600160a01b900460ff16151560608301526080820186905260a09091018490529091506000906040519080825280602002602001820160405280156106dc57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816106a15790505b506040805160a081018252600181526001600160a01b0380891660208301526000928201839052606082018390528916608082015282519293509183919061072657610726612f22565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816107485790505090506040518060c00160405280600460070b8152602001600560070b8152602001600a60070b8152602001876001600160a01b03168152602001600015158152602001886001600160a01b0316815250816000815181106107ed576107ed612f22565b6020026020010181905250600080610806858585612224565b90925090506016821461081857600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050505050565b600061086b838361234c565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b6016146108b657600080fd5b92915050565b60006108c8838361242f565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa816040516108fb91815260200190565b60405180910390a1601681146108b657600080fd5b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161098f9190612fa3565b600060405180830381855af49150503d80600081146109ca576040519150601f19603f3d011682016040523d82523d6000602084013e6109cf565b606091505b5091509150816109e05760156109f4565b808060200190518101906109f49190612fd6565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a819190612fa3565b6000604051808303816000865af19150503d80600081146109ca576040519150601f19603f3d011682016040523d82523d6000602084013e6109cf565b60408051600580825260c08201909252600091816020015b610ade612a73565b815260200190600190039081610ad6579050509050610b11600060066000604051806020016040528060008152506121b8565b81600081518110610b2457610b24612f22565b6020026020010181905250610b4b60016000604051806020016040528060008152506121ef565b81600181518110610b5e57610b5e612f22565b6020026020010181905250610b8560026000604051806020016040528060008152506121ef565b81600281518110610b9857610b98612f22565b6020026020010181905250610bbf60036000604051806020016040528060008152506121ef565b81600381518110610bd257610bd2612f22565b6020026020010181905250610bf960046000604051806020016040528060008152506121ef565b81600481518110610c0c57610c0c612f22565b602002602001018190525060006040518060600160405280600060070b8152602001846001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054610c6490612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9090612f38565b8015610cdd5780601f10610cb257610100808354040283529160200191610cdd565b820191906000526020600020905b815481529060010190602001808311610cc057829003601f168201915b5050505050815260200160038054610cf490612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2090612f38565b8015610d6d5780601f10610d4257610100808354040283529160200191610d6d565b820191906000526020600020905b815481529060010190602001808311610d5057829003601f168201915b50505050508152602001856001600160a01b0316815260200160048054610d9390612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbf90612f38565b8015610e0c5780601f10610de157610100808354040283529160200191610e0c565b820191906000526020600020905b815481529060010190602001808311610def57829003601f168201915b505050918352505060016020820152600554600160401b8104600790810b604084015260ff600160a01b830416151560608401526080830187905260a09092018590529192506000918291610e7091859181900b90600160801b900460030b61245b565b909250905060168214610e8257600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050565b6000806060610ed68686866124c8565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a160168314610f1e57600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d8282604051610f4f929190612ff1565b60405180910390a1610f7d86303384600081518110610f7057610f70612f22565b60200260200101516125c6565b5093509350939050565b604051638f74a17b60e01b81526000903090638f74a17b903490610fb19088908890600401613041565b6020604051808303818588803b158015610fca57600080fd5b505af1158015610fde573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110039190613063565b60405163f4a01e5b60e01b81523360048201526001600160a01b0382166024820152909150309063f4a01e5b90604401602060405180830381600087803b15801561104d57600080fd5b505af1158015611061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190613080565b506040516307e9300f60e11b81526001600160a01b03821660048201523360248201523090630fd2601e90604401602060405180830381600087803b1580156110cd57600080fd5b505af11580156110e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111059190613099565b506111128130338561260e565b5050505050565b604080516001808252818301909252600091816020015b611138612a73565b81526020019060019003908161113057905050905061116a6000806000604051806020016040528060008152506121b8565b8160008151811061117d5761117d612f22565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b81525090506000604051806101200160405280600280546111d590612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461120190612f38565b801561124e5780601f106112235761010080835404028352916020019161124e565b820191906000526020600020905b81548152906001019060200180831161123157829003601f168201915b505050505081526020016003805461126590612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461129190612f38565b80156112de5780601f106112b3576101008083540402835291602001916112de565b820191906000526020600020905b8154815290600101906020018083116112c157829003601f168201915b50505050508152602001866001600160a01b031681526020016004805461130490612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461133090612f38565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050509183525050600160208201819052600554600160401b900460070b6040808401919091526000606084018190526080840188905260a09093018690528051828152808201909152929350909190816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816113d25750506040805160a081018252600181526001600160a01b0388811660208301526000928201839052606082018390528916608082015282519293509183919061145557611455612f22565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816114775750506040805160c0810182526004815260056020820152600a91810191909152601e60608201526000608082018190526001600160a01b038a1660a08301528251929350909183919061150b5761150b612f22565b6020908102919091010152600554600090819061153b908690600781900b90600160801b900460030b8787612656565b915091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8260405161157091815260200190565b60405180910390a16016821461081857600080fd5b60408051600580825260c08201909252600091829190816020015b6115a8612a73565b8152602001906001900390816115a05790505090506115cc600060066003866121b8565b816000815181106115df576115df612f22565b60200260200101819052506115f760016003856121ef565b8160018151811061160a5761160a612f22565b602002602001018190525061162260026003856121ef565b8160028151811061163557611635612f22565b602002602001018190525061164d60046003856121ef565b8160038151811061166057611660612f22565b6020026020010181905250611677600380856121ef565b8160048151811061168a5761168a612f22565b602002602001018190525060006040518060600160405280600060070b8152602001866001600160a01b03168152602001627a120060070b81525090506000604051806101200160405280600280546116e290612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461170e90612f38565b801561175b5780601f106117305761010080835404028352916020019161175b565b820191906000526020600020905b81548152906001019060200180831161173e57829003601f168201915b505050505081526020016003805461177290612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461179e90612f38565b80156117eb5780601f106117c0576101008083540402835291602001916117eb565b820191906000526020600020905b8154815290600101906020018083116117ce57829003601f168201915b50505050508152602001876001600160a01b031681526020016004805461181190612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461183d90612f38565b801561188a5780601f1061185f5761010080835404028352916020019161188a565b820191906000526020600020905b81548152906001019060200180831161186d57829003601f168201915b505050918352505060016020820152600554600160401b8104600790810b604084015260ff600160a01b830416151560608401526080830187905260a090920185905291925060009182916118ee91859181900b90600160801b900460030b61245b565b90925090506016821461190057600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a401610a43565b60408051600580825260c08201909252600091816020015b6119ac612a73565b8152602001906001900390816119a45790505090506119d0600060066003856121b8565b816000815181106119e3576119e3612f22565b60200260200101819052506119fb60016003846121ef565b81600181518110611a0e57611a0e612f22565b6020026020010181905250611a2660026003846121ef565b81600281518110611a3957611a39612f22565b6020026020010181905250611a5160046003846121ef565b81600381518110611a6457611a64612f22565b6020026020010181905250611a7b600380846121ef565b81600481518110611a8e57611a8e612f22565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054611ae690612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1290612f38565b8015611b5f5780601f10611b3457610100808354040283529160200191611b5f565b820191906000526020600020905b815481529060010190602001808311611b4257829003601f168201915b5050505050815260200160038054611b7690612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba290612f38565b8015611bef5780601f10611bc457610100808354040283529160200191611bef565b820191906000526020600020905b815481529060010190602001808311611bd257829003601f168201915b50505050508152602001866001600160a01b0316815260200160048054611c1590612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4190612f38565b8015611c8e5780601f10611c6357610100808354040283529160200191611c8e565b820191906000526020600020905b815481529060010190602001808311611c7157829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080611cdb83612784565b909250905060168214611ced57600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050565b60408051600580825260c08201909252600091816020015b611d52612a73565b815260200190600190039081611d4a579050509050611d85600060066000604051806020016040528060008152506121b8565b81600081518110611d9857611d98612f22565b6020026020010181905250611dbf60016000604051806020016040528060008152506121ef565b81600181518110611dd257611dd2612f22565b6020026020010181905250611df960026000604051806020016040528060008152506121ef565b81600281518110611e0c57611e0c612f22565b6020026020010181905250611e3360046000604051806020016040528060008152506121ef565b81600381518110611e4657611e46612f22565b6020026020010181905250611e6d60036000604051806020016040528060008152506121ef565b81600481518110611e8057611e80612f22565b602002602001018190525060006040518060600160405280600060070b8152602001846001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054611ed890612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0490612f38565b8015611f515780601f10611f2657610100808354040283529160200191611f51565b820191906000526020600020905b815481529060010190602001808311611f3457829003601f168201915b5050505050815260200160038054611f6890612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611f9490612f38565b8015611fe15780601f10611fb657610100808354040283529160200191611fe1565b820191906000526020600020905b815481529060010190602001808311611fc457829003601f168201915b50505050508152602001856001600160a01b031681526020016004805461200790612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461203390612f38565b80156120805780601f1061205557610100808354040283529160200191612080565b820191906000526020600020905b81548152906001019060200180831161206357829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080610e7083612784565b60008060606120dd8686866124c8565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a16016831461212557600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d8282604051612156929190612ff1565b60405180910390a193509350939050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a401610951565b60006108c883836128a6565b6121c0612a73565b60405180604001604052806121d587876128dc565b81526020016121e4858561291e565b905295945050505050565b6121f7612a73565b604051806040016040528061220b86612a34565b815260200161221a858561291e565b9052949350505050565b600080848061010001516000015160070b600014801561224e57506101008101516040015160070b155b15612264576101008101516276a7006040909101525b6000806101676001600160a01b03163463abb54eb560e01b8a8a8a604051602401612291939291906132e9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516122cf9190612fa3565b60006040518083038185875af1925050503d806000811461230c576040519150601f19603f3d011682016040523d82523d6000602084013e612311565b606091505b5091509150816123245760156000612338565b8080602001905181019061233891906133a0565b60039190910b999098509650505050505050565b6040516001600160a01b038381166024830152821660448201526000908190819061016790638f8d7f9960e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516123bc9190612fa3565b6000604051808303816000865af19150503d80600081146123f9576040519150601f19603f3d011682016040523d82523d6000602084013e6123fe565b606091505b50915091508161240f576015612423565b808060200190518101906124239190612fd6565b60030b95945050505050565b60008060006101676001600160a01b0316632e63879b60e01b868660405160240161237e9291906133cc565b600080848061010001516000015160070b600014801561248557506101008101516040015160070b155b1561249b576101008101516276a7006040909101525b6000806101676001600160a01b031634630fb65bf360e01b8a8a8a60405160240161229193929190613427565b60008060606000806101676001600160a01b031663e0f4059a60e01b8989896040516024016124f993929190613456565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516125379190612fa3565b6000604051808303816000865af19150503d8060008114612574576040519150601f19603f3d011682016040523d82523d6000602084013e612579565b606091505b50915091508161259c5760408051600080825260208201909252601591906125b0565b808060200190518101906125b091906134d3565b60039290920b9a90995090975095505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a401610a43565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a401610a43565b600080868061010001516000015160070b600014801561268057506101008101516040015160070b155b15612696576101008101516276a7006040909101525b6000806101676001600160a01b031634632af0c59a60e01b8c8c8c8c8c6040516024016126c7959493929190613593565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516127059190612fa3565b60006040518083038185875af1925050503d8060008114612742576040519150601f19603f3d011682016040523d82523d6000602084013e612747565b606091505b50915091508161275a576015600061276e565b8080602001905181019061276e91906133a0565b60039190910b9b909a5098505050505050505050565b600080828061010001516000015160070b60001480156127ae57506101008101516040015160070b155b156127c4576101008101516276a7006040909101525b6000806101676001600160a01b03163463ea83f29360e01b886040516024016127ed919061365b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161282b9190612fa3565b60006040518083038185875af1925050503d8060008114612868576040519150601f19603f3d011682016040523d82523d6000602084013e61286d565b606091505b5091509150816128805760156000612894565b8080602001905181019061289491906133a0565b60039190910b97909650945050505050565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063248a35ef60e11b9060640161237e565b60006129008360068111156128f3576128f361366e565b600160ff9091161b821790565b90506129178260068111156128f3576128f361366e565b9392505050565b6129646040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b60008360048111156129785761297861366e565b141561298757600181526108b6565b600183600481111561299b5761299b61366e565b14156129b7576000546001600160a01b031660208201526108b6565b60028360048111156129cb576129cb61366e565b14156129dd57604081018290526108b6565b60038360048111156129f1576129f161366e565b1415612a0357606081018290526108b6565b6004836004811115612a1757612a1761366e565b14156108b6576000546001600160a01b0316608082015292915050565b600060016000836006811115612a4c57612a4c61366e565b6006811115612a5d57612a5d61366e565b8152602001908152602001600020549050919050565b604051806040016040528060008152602001612acb6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b0381168114612ae557600080fd5b50565b60008060408385031215612afb57600080fd5b8235612b0681612ad0565b91506020830135612b1681612ad0565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612b6057612b60612b21565b604052919050565b600067ffffffffffffffff821115612b8257612b82612b21565b5060051b60200190565b60008060408385031215612b9f57600080fd5b8235612baa81612ad0565b915060208381013567ffffffffffffffff811115612bc757600080fd5b8401601f81018613612bd857600080fd5b8035612beb612be682612b68565b612b37565b81815260059190911b82018301908381019088831115612c0a57600080fd5b928401925b82841015612c31578335612c2281612ad0565b82529284019290840190612c0f565b80955050505050509250929050565b60008060008060808587031215612c5657600080fd5b8435612c6181612ad0565b93506020850135612c7181612ad0565b92506040850135612c8181612ad0565b9396929550929360600135925050565b600060208284031215612ca357600080fd5b813561291781612ad0565b8060070b8114612ae557600080fd5b600082601f830112612cce57600080fd5b813567ffffffffffffffff811115612ce857612ce8612b21565b612cfb601f8201601f1916602001612b37565b818152846020838601011115612d1057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612d4257600080fd5b8335612d4d81612ad0565b9250602084810135612d5e81612cae565b9250604085013567ffffffffffffffff80821115612d7b57600080fd5b818701915087601f830112612d8f57600080fd5b8135612d9d612be682612b68565b81815260059190911b8301840190848101908a831115612dbc57600080fd5b8585015b83811015612df457803585811115612dd85760008081fd5b612de68d89838a0101612cbd565b845250918601918601612dc0565b508096505050505050509250925092565b600081518084526020808501945080840160005b83811015612e3857815160070b87529582019590820190600101612e19565b509495945050505050565b8381528260070b6020820152606060408201526000612e656060830184612e05565b95945050505050565b600080600060608486031215612e8357600080fd5b8335612e8e81612ad0565b9250602084013567ffffffffffffffff811115612eaa57600080fd5b612eb686828701612cbd565b9250506040840135612ec781612cae565b809150509250925092565b60008060408385031215612ee557600080fd5b8235612ef081612ad0565b9150602083013567ffffffffffffffff811115612f0c57600080fd5b612f1885828601612cbd565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612f4c57607f821691505b60208210811415612f6d57634e487b7160e01b600052602260045260246000fd5b50919050565b60005b83811015612f8e578181015183820152602001612f76565b83811115612f9d576000848401525b50505050565b60008251612fb5818460208701612f73565b9190910192915050565b8051600381900b8114612fd157600080fd5b919050565b600060208284031215612fe857600080fd5b61291782612fbf565b8260070b815260406020820152600061300d6040830184612e05565b949350505050565b6000815180845261302d816020860160208601612f73565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820152600061300d6040830184613015565b60006020828403121561307557600080fd5b815161291781612ad0565b60006020828403121561309257600080fd5b5051919050565b6000602082840312156130ab57600080fd5b815161291781612cae565b600081518084526020808501808196508360051b8101915082860160005b8581101561316d5782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b015261312f60e08b0186613015565b928601518a8403603f1901858c015292945061314b8584613015565b9501511660c098909801979097525050988501989350908401906001016130d4565b5091979650505050505050565b6000610160825181855261319082860182613015565b915050602083015184820360208601526131aa8282613015565b91505060408301516131c760408601826001600160a01b03169052565b50606083015184820360608601526131df8282613015565b91505060808301516131f5608086018215159052565b5060a083015161320a60a086018260070b9052565b5060c083015161321e60c086018215159052565b5060e083015184820360e086015261323682826130b6565b9150506101008084015161327282870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b600081518084526020808501945080840160005b83811015612e38578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101613290565b600060608083526132fc8184018761317a565b60208482038186015261330f828861327c565b91506040858303818701528287518085528385019150838901945060005b818110156133905785518051600790810b855286820151810b8786015285820151900b85850152878101516001600160a01b039081168986015260808083015115159086015260a09182015116908401529484019460c09092019160010161332d565b50909a9950505050505050505050565b600080604083850312156133b357600080fd5b6133bc83612fbf565b91506020830151612b1681612ad0565b6000604082016001600160a01b0380861684526020604081860152828651808552606087019150828801945060005b818110156134195785518516835294830194918301916001016133fb565b509098975050505050505050565b60608152600061343a606083018661317a565b90508360070b60208301528260030b6040830152949350505050565b6000606082016001600160a01b038616835260208560070b818501526060604085015281855180845260808601915060808160051b870101935082870160005b828110156134c457607f198887030184526134b2868351613015565b95509284019290840190600101613496565b50939998505050505050505050565b6000806000606084860312156134e857600080fd5b6134f184612fbf565b925060208085015161350281612cae565b604086015190935067ffffffffffffffff81111561351f57600080fd5b8501601f8101871361353057600080fd5b805161353e612be682612b68565b81815260059190911b8201830190838101908983111561355d57600080fd5b928401925b8284101561358457835161357581612cae565b82529284019290840190613562565b80955050505050509250925092565b600060a08083526135a68184018961317a565b6020600789810b8287015260408960030b818801526060878503818901526135ce858b61327c565b94506080888603818a0152858a518088528688019150868c01975060005b818110156136465788518051880b845288810151880b8985015286810151880b8785015285810151880b86850152848101511515858501528a01516001600160a01b03168a8401529787019760c0909201916001016135ec565b50909f9e505050505050505050505050505050565b602081526000612917602083018461317a565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f2cf6067bfd2fc44bc3c409c6d77d070c246560db38a86c07739cd4f871f315c64736f6c63430008090033", + "deployedBytecode": "0x6080604052600436106100f35760003560e01c80638ba74da01161008a578063d85f74c111610059578063d85f74c114610279578063de84a7791461028c578063eac6f3fe146102ac578063f4a01e5b146102cc57600080fd5b80638ba74da0146102085780638f74a17b1461021b5780639b23d3d914610246578063b35d417a1461026657600080fd5b806315dacbea116100c657806315dacbea146101935780634b5c6687146101b35780634d1769d6146101c657806371de3707146101f557600080fd5b80630488c939146100f85780630fd2601e1461010d578063118741e71461014557806311e1fc0714610173575b600080fd5b61010b610106366004612ae8565b6102ec565b005b34801561011957600080fd5b5061012d610128366004612ae8565b61085f565b60405160079190910b81526020015b60405180910390f35b34801561015157600080fd5b50610165610160366004612b8c565b6108bc565b60405190815260200161013c565b34801561017f57600080fd5b5061012d61018e366004612c40565b610910565b34801561019f57600080fd5b5061012d6101ae366004612c40565b610a02565b61010b6101c1366004612c91565b610abe565b3480156101d257600080fd5b506101e66101e1366004612d2d565b610ec6565b60405161013c93929190612e43565b61010b610203366004612e6e565b610f87565b61010b610216366004612ae8565b611119565b61022e610229366004612ed2565b611585565b6040516001600160a01b03909116815260200161013c565b34801561025257600080fd5b5061012d610261366004612c40565b611947565b61010b610274366004612ed2565b61198c565b61010b610287366004612c91565b611d32565b34801561029857600080fd5b506101e66102a7366004612d2d565b6120cd565b3480156102b857600080fd5b5061012d6102c7366004612c40565b612167565b3480156102d857600080fd5b506101656102e7366004612ae8565b6121ac565b60408051600580825260c08201909252600091816020015b61030c612a73565b81526020019060019003908161030457905050905061033f600060066000604051806020016040528060008152506121b8565b8160008151811061035257610352612f22565b602002602001018190525061037960016000604051806020016040528060008152506121ef565b8160018151811061038c5761038c612f22565b60200260200101819052506103b360026000604051806020016040528060008152506121ef565b816002815181106103c6576103c6612f22565b60200260200101819052506103ed60046000604051806020016040528060008152506121ef565b8160038151811061040057610400612f22565b602002602001018190525061042760036000604051806020016040528060008152506121ef565b8160048151811061043a5761043a612f22565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b815250905060006040518061012001604052806002805461049290612f38565b80601f01602080910402602001604051908101604052809291908181526020018280546104be90612f38565b801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b505050505081526020016003805461052290612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461054e90612f38565b801561059b5780601f106105705761010080835404028352916020019161059b565b820191906000526020600020905b81548152906001019060200180831161057e57829003601f168201915b50505050508152602001866001600160a01b03168152602001600480546105c190612f38565b80601f01602080910402602001604051908101604052809291908181526020018280546105ed90612f38565b801561063a5780601f1061060f5761010080835404028352916020019161063a565b820191906000526020600020905b81548152906001019060200180831161061d57829003601f168201915b5050509183525050600160208201819052600554600160401b810460070b6040840152600160a01b900460ff16151560608301526080820186905260a09091018490529091506000906040519080825280602002602001820160405280156106dc57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816106a15790505b506040805160a081018252600181526001600160a01b0380891660208301526000928201839052606082018390528916608082015282519293509183919061072657610726612f22565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816107485790505090506040518060c00160405280600460070b8152602001600560070b8152602001600a60070b8152602001876001600160a01b03168152602001600015158152602001886001600160a01b0316815250816000815181106107ed576107ed612f22565b6020026020010181905250600080610806858585612224565b90925090506016821461081857600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050505050565b600061086b838361234c565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b6016146108b657600080fd5b92915050565b60006108c8838361242f565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa816040516108fb91815260200190565b60405180910390a1601681146108b657600080fd5b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161098f9190612fa3565b600060405180830381855af49150503d80600081146109ca576040519150601f19603f3d011682016040523d82523d6000602084013e6109cf565b606091505b5091509150816109e05760156109f4565b808060200190518101906109f49190612fd6565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a819190612fa3565b6000604051808303816000865af19150503d80600081146109ca576040519150601f19603f3d011682016040523d82523d6000602084013e6109cf565b60408051600580825260c08201909252600091816020015b610ade612a73565b815260200190600190039081610ad6579050509050610b11600060066000604051806020016040528060008152506121b8565b81600081518110610b2457610b24612f22565b6020026020010181905250610b4b60016000604051806020016040528060008152506121ef565b81600181518110610b5e57610b5e612f22565b6020026020010181905250610b8560026000604051806020016040528060008152506121ef565b81600281518110610b9857610b98612f22565b6020026020010181905250610bbf60036000604051806020016040528060008152506121ef565b81600381518110610bd257610bd2612f22565b6020026020010181905250610bf960046000604051806020016040528060008152506121ef565b81600481518110610c0c57610c0c612f22565b602002602001018190525060006040518060600160405280600060070b8152602001846001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054610c6490612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9090612f38565b8015610cdd5780601f10610cb257610100808354040283529160200191610cdd565b820191906000526020600020905b815481529060010190602001808311610cc057829003601f168201915b5050505050815260200160038054610cf490612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2090612f38565b8015610d6d5780601f10610d4257610100808354040283529160200191610d6d565b820191906000526020600020905b815481529060010190602001808311610d5057829003601f168201915b50505050508152602001856001600160a01b0316815260200160048054610d9390612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbf90612f38565b8015610e0c5780601f10610de157610100808354040283529160200191610e0c565b820191906000526020600020905b815481529060010190602001808311610def57829003601f168201915b505050918352505060016020820152600554600160401b8104600790810b604084015260ff600160a01b830416151560608401526080830187905260a09092018590529192506000918291610e7091859181900b90600160801b900460030b61245b565b909250905060168214610e8257600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1505050505050565b6000806060610ed68686866124c8565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a160168314610f1e57600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d8282604051610f4f929190612ff1565b60405180910390a1610f7d86303384600081518110610f7057610f70612f22565b60200260200101516125c6565b5093509350939050565b604051638f74a17b60e01b81526000903090638f74a17b903490610fb19088908890600401613041565b6020604051808303818588803b158015610fca57600080fd5b505af1158015610fde573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110039190613063565b60405163f4a01e5b60e01b81523360048201526001600160a01b0382166024820152909150309063f4a01e5b90604401602060405180830381600087803b15801561104d57600080fd5b505af1158015611061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190613080565b506040516307e9300f60e11b81526001600160a01b03821660048201523360248201523090630fd2601e90604401602060405180830381600087803b1580156110cd57600080fd5b505af11580156110e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111059190613099565b506111128130338561260e565b5050505050565b604080516001808252818301909252600091816020015b611138612a73565b81526020019060019003908161113057905050905061116a6000806000604051806020016040528060008152506121b8565b8160008151811061117d5761117d612f22565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b81525090506000604051806101200160405280600280546111d590612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461120190612f38565b801561124e5780601f106112235761010080835404028352916020019161124e565b820191906000526020600020905b81548152906001019060200180831161123157829003601f168201915b505050505081526020016003805461126590612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461129190612f38565b80156112de5780601f106112b3576101008083540402835291602001916112de565b820191906000526020600020905b8154815290600101906020018083116112c157829003601f168201915b50505050508152602001866001600160a01b031681526020016004805461130490612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461133090612f38565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050509183525050600160208201819052600554600160401b900460070b6040808401919091526000606084018190526080840188905260a09093018690528051828152808201909152929350909190816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816113d25750506040805160a081018252600181526001600160a01b0388811660208301526000928201839052606082018390528916608082015282519293509183919061145557611455612f22565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816114775750506040805160c0810182526004815260056020820152600a91810191909152601e60608201526000608082018190526001600160a01b038a1660a08301528251929350909183919061150b5761150b612f22565b6020908102919091010152600554600090819061153b908690600781900b90600160801b900460030b8787612656565b915091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8260405161157091815260200190565b60405180910390a16016821461081857600080fd5b60408051600580825260c08201909252600091829190816020015b6115a8612a73565b8152602001906001900390816115a05790505090506115cc600060066003866121b8565b816000815181106115df576115df612f22565b60200260200101819052506115f760016003856121ef565b8160018151811061160a5761160a612f22565b602002602001018190525061162260026003856121ef565b8160028151811061163557611635612f22565b602002602001018190525061164d60046003856121ef565b8160038151811061166057611660612f22565b6020026020010181905250611677600380856121ef565b8160048151811061168a5761168a612f22565b602002602001018190525060006040518060600160405280600060070b8152602001866001600160a01b03168152602001627a120060070b81525090506000604051806101200160405280600280546116e290612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461170e90612f38565b801561175b5780601f106117305761010080835404028352916020019161175b565b820191906000526020600020905b81548152906001019060200180831161173e57829003601f168201915b505050505081526020016003805461177290612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461179e90612f38565b80156117eb5780601f106117c0576101008083540402835291602001916117eb565b820191906000526020600020905b8154815290600101906020018083116117ce57829003601f168201915b50505050508152602001876001600160a01b031681526020016004805461181190612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461183d90612f38565b801561188a5780601f1061185f5761010080835404028352916020019161188a565b820191906000526020600020905b81548152906001019060200180831161186d57829003601f168201915b505050918352505060016020820152600554600160401b8104600790810b604084015260ff600160a01b830416151560608401526080830187905260a090920185905291925060009182916118ee91859181900b90600160801b900460030b61245b565b90925090506016821461190057600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a1979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a401610a43565b60408051600580825260c08201909252600091816020015b6119ac612a73565b8152602001906001900390816119a45790505090506119d0600060066003856121b8565b816000815181106119e3576119e3612f22565b60200260200101819052506119fb60016003846121ef565b81600181518110611a0e57611a0e612f22565b6020026020010181905250611a2660026003846121ef565b81600281518110611a3957611a39612f22565b6020026020010181905250611a5160046003846121ef565b81600381518110611a6457611a64612f22565b6020026020010181905250611a7b600380846121ef565b81600481518110611a8e57611a8e612f22565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054611ae690612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1290612f38565b8015611b5f5780601f10611b3457610100808354040283529160200191611b5f565b820191906000526020600020905b815481529060010190602001808311611b4257829003601f168201915b5050505050815260200160038054611b7690612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba290612f38565b8015611bef5780601f10611bc457610100808354040283529160200191611bef565b820191906000526020600020905b815481529060010190602001808311611bd257829003601f168201915b50505050508152602001866001600160a01b0316815260200160048054611c1590612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4190612f38565b8015611c8e5780601f10611c6357610100808354040283529160200191611c8e565b820191906000526020600020905b815481529060010190602001808311611c7157829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080611cdb83612784565b909250905060168214611ced57600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a150505050505050565b60408051600580825260c08201909252600091816020015b611d52612a73565b815260200190600190039081611d4a579050509050611d85600060066000604051806020016040528060008152506121b8565b81600081518110611d9857611d98612f22565b6020026020010181905250611dbf60016000604051806020016040528060008152506121ef565b81600181518110611dd257611dd2612f22565b6020026020010181905250611df960026000604051806020016040528060008152506121ef565b81600281518110611e0c57611e0c612f22565b6020026020010181905250611e3360046000604051806020016040528060008152506121ef565b81600381518110611e4657611e46612f22565b6020026020010181905250611e6d60036000604051806020016040528060008152506121ef565b81600481518110611e8057611e80612f22565b602002602001018190525060006040518060600160405280600060070b8152602001846001600160a01b03168152602001627a120060070b8152509050600060405180610120016040528060028054611ed890612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0490612f38565b8015611f515780601f10611f2657610100808354040283529160200191611f51565b820191906000526020600020905b815481529060010190602001808311611f3457829003601f168201915b5050505050815260200160038054611f6890612f38565b80601f0160208091040260200160405190810160405280929190818152602001828054611f9490612f38565b8015611fe15780601f10611fb657610100808354040283529160200191611fe1565b820191906000526020600020905b815481529060010190602001808311611fc457829003601f168201915b50505050508152602001856001600160a01b031681526020016004805461200790612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461203390612f38565b80156120805780601f1061205557610100808354040283529160200191612080565b820191906000526020600020905b81548152906001019060200180831161206357829003601f168201915b505050918352505060016020820152600554600160401b810460070b6040830152600160a01b900460ff16151560608201526080810185905260a0018390529050600080610e7083612784565b60008060606120dd8686866124c8565b60405183815292955090935091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a16016831461212557600080fd5b7ffc6b20023c4bac8ff1c48c1693e0cea5cd3c2163e9c2da41c58f17dd6d9f163d8282604051612156929190612ff1565b60405180910390a193509350939050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a401610951565b60006108c883836128a6565b6121c0612a73565b60405180604001604052806121d587876128dc565b81526020016121e4858561291e565b905295945050505050565b6121f7612a73565b604051806040016040528061220b86612a34565b815260200161221a858561291e565b9052949350505050565b600080848061010001516000015160070b600014801561224e57506101008101516040015160070b155b15612264576101008101516276a7006040909101525b6000806101676001600160a01b03163463abb54eb560e01b8a8a8a604051602401612291939291906132e9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516122cf9190612fa3565b60006040518083038185875af1925050503d806000811461230c576040519150601f19603f3d011682016040523d82523d6000602084013e612311565b606091505b5091509150816123245760156000612338565b8080602001905181019061233891906133a0565b60039190910b999098509650505050505050565b6040516001600160a01b038381166024830152821660448201526000908190819061016790638f8d7f9960e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516123bc9190612fa3565b6000604051808303816000865af19150503d80600081146123f9576040519150601f19603f3d011682016040523d82523d6000602084013e6123fe565b606091505b50915091508161240f576015612423565b808060200190518101906124239190612fd6565b60030b95945050505050565b60008060006101676001600160a01b0316632e63879b60e01b868660405160240161237e9291906133cc565b600080848061010001516000015160070b600014801561248557506101008101516040015160070b155b1561249b576101008101516276a7006040909101525b6000806101676001600160a01b031634630fb65bf360e01b8a8a8a60405160240161229193929190613427565b60008060606000806101676001600160a01b031663e0f4059a60e01b8989896040516024016124f993929190613456565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516125379190612fa3565b6000604051808303816000865af19150503d8060008114612574576040519150601f19603f3d011682016040523d82523d6000602084013e612579565b606091505b50915091508161259c5760408051600080825260208201909252601591906125b0565b808060200190518101906125b091906134d3565b60039290920b9a90995090975095505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a401610a43565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a401610a43565b600080868061010001516000015160070b600014801561268057506101008101516040015160070b155b15612696576101008101516276a7006040909101525b6000806101676001600160a01b031634632af0c59a60e01b8c8c8c8c8c6040516024016126c7959493929190613593565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516127059190612fa3565b60006040518083038185875af1925050503d8060008114612742576040519150601f19603f3d011682016040523d82523d6000602084013e612747565b606091505b50915091508161275a576015600061276e565b8080602001905181019061276e91906133a0565b60039190910b9b909a5098505050505050505050565b600080828061010001516000015160070b60001480156127ae57506101008101516040015160070b155b156127c4576101008101516276a7006040909101525b6000806101676001600160a01b03163463ea83f29360e01b886040516024016127ed919061365b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161282b9190612fa3565b60006040518083038185875af1925050503d8060008114612868576040519150601f19603f3d011682016040523d82523d6000602084013e61286d565b606091505b5091509150816128805760156000612894565b8080602001905181019061289491906133a0565b60039190910b97909650945050505050565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063248a35ef60e11b9060640161237e565b60006129008360068111156128f3576128f361366e565b600160ff9091161b821790565b90506129178260068111156128f3576128f361366e565b9392505050565b6129646040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b60008360048111156129785761297861366e565b141561298757600181526108b6565b600183600481111561299b5761299b61366e565b14156129b7576000546001600160a01b031660208201526108b6565b60028360048111156129cb576129cb61366e565b14156129dd57604081018290526108b6565b60038360048111156129f1576129f161366e565b1415612a0357606081018290526108b6565b6004836004811115612a1757612a1761366e565b14156108b6576000546001600160a01b0316608082015292915050565b600060016000836006811115612a4c57612a4c61366e565b6006811115612a5d57612a5d61366e565b8152602001908152602001600020549050919050565b604051806040016040528060008152602001612acb6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b0381168114612ae557600080fd5b50565b60008060408385031215612afb57600080fd5b8235612b0681612ad0565b91506020830135612b1681612ad0565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612b6057612b60612b21565b604052919050565b600067ffffffffffffffff821115612b8257612b82612b21565b5060051b60200190565b60008060408385031215612b9f57600080fd5b8235612baa81612ad0565b915060208381013567ffffffffffffffff811115612bc757600080fd5b8401601f81018613612bd857600080fd5b8035612beb612be682612b68565b612b37565b81815260059190911b82018301908381019088831115612c0a57600080fd5b928401925b82841015612c31578335612c2281612ad0565b82529284019290840190612c0f565b80955050505050509250929050565b60008060008060808587031215612c5657600080fd5b8435612c6181612ad0565b93506020850135612c7181612ad0565b92506040850135612c8181612ad0565b9396929550929360600135925050565b600060208284031215612ca357600080fd5b813561291781612ad0565b8060070b8114612ae557600080fd5b600082601f830112612cce57600080fd5b813567ffffffffffffffff811115612ce857612ce8612b21565b612cfb601f8201601f1916602001612b37565b818152846020838601011115612d1057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612d4257600080fd5b8335612d4d81612ad0565b9250602084810135612d5e81612cae565b9250604085013567ffffffffffffffff80821115612d7b57600080fd5b818701915087601f830112612d8f57600080fd5b8135612d9d612be682612b68565b81815260059190911b8301840190848101908a831115612dbc57600080fd5b8585015b83811015612df457803585811115612dd85760008081fd5b612de68d89838a0101612cbd565b845250918601918601612dc0565b508096505050505050509250925092565b600081518084526020808501945080840160005b83811015612e3857815160070b87529582019590820190600101612e19565b509495945050505050565b8381528260070b6020820152606060408201526000612e656060830184612e05565b95945050505050565b600080600060608486031215612e8357600080fd5b8335612e8e81612ad0565b9250602084013567ffffffffffffffff811115612eaa57600080fd5b612eb686828701612cbd565b9250506040840135612ec781612cae565b809150509250925092565b60008060408385031215612ee557600080fd5b8235612ef081612ad0565b9150602083013567ffffffffffffffff811115612f0c57600080fd5b612f1885828601612cbd565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612f4c57607f821691505b60208210811415612f6d57634e487b7160e01b600052602260045260246000fd5b50919050565b60005b83811015612f8e578181015183820152602001612f76565b83811115612f9d576000848401525b50505050565b60008251612fb5818460208701612f73565b9190910192915050565b8051600381900b8114612fd157600080fd5b919050565b600060208284031215612fe857600080fd5b61291782612fbf565b8260070b815260406020820152600061300d6040830184612e05565b949350505050565b6000815180845261302d816020860160208601612f73565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820152600061300d6040830184613015565b60006020828403121561307557600080fd5b815161291781612ad0565b60006020828403121561309257600080fd5b5051919050565b6000602082840312156130ab57600080fd5b815161291781612cae565b600081518084526020808501808196508360051b8101915082860160005b8581101561316d5782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b015261312f60e08b0186613015565b928601518a8403603f1901858c015292945061314b8584613015565b9501511660c098909801979097525050988501989350908401906001016130d4565b5091979650505050505050565b6000610160825181855261319082860182613015565b915050602083015184820360208601526131aa8282613015565b91505060408301516131c760408601826001600160a01b03169052565b50606083015184820360608601526131df8282613015565b91505060808301516131f5608086018215159052565b5060a083015161320a60a086018260070b9052565b5060c083015161321e60c086018215159052565b5060e083015184820360e086015261323682826130b6565b9150506101008084015161327282870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b600081518084526020808501945080840160005b83811015612e38578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101613290565b600060608083526132fc8184018761317a565b60208482038186015261330f828861327c565b91506040858303818701528287518085528385019150838901945060005b818110156133905785518051600790810b855286820151810b8786015285820151900b85850152878101516001600160a01b039081168986015260808083015115159086015260a09182015116908401529484019460c09092019160010161332d565b50909a9950505050505050505050565b600080604083850312156133b357600080fd5b6133bc83612fbf565b91506020830151612b1681612ad0565b6000604082016001600160a01b0380861684526020604081860152828651808552606087019150828801945060005b818110156134195785518516835294830194918301916001016133fb565b509098975050505050505050565b60608152600061343a606083018661317a565b90508360070b60208301528260030b6040830152949350505050565b6000606082016001600160a01b038616835260208560070b818501526060604085015281855180845260808601915060808160051b870101935082870160005b828110156134c457607f198887030184526134b2868351613015565b95509284019290840190600101613496565b50939998505050505050505050565b6000806000606084860312156134e857600080fd5b6134f184612fbf565b925060208085015161350281612cae565b604086015190935067ffffffffffffffff81111561351f57600080fd5b8501601f8101871361353057600080fd5b805161353e612be682612b68565b81815260059190911b8201830190838101908983111561355d57600080fd5b928401925b8284101561358457835161357581612cae565b82529284019290840190613562565b80955050505050509250925092565b600060a08083526135a68184018961317a565b6020600789810b8287015260408960030b818801526060878503818901526135ce858b61327c565b94506080888603818a0152858a518088528688019150868c01975060005b818110156136465788518051880b845288810151880b8985015286810151880b8785015285810151880b86850152848101511515858501528a01516001600160a01b03168a8401529787019760c0909201916001016135ec565b50909f9e505050505050505050505050505050565b602081526000612917602083018461317a565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f2cf6067bfd2fc44bc3c409c6d77d070c246560db38a86c07739cd4f871f315c64736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol/TokenCreateCustomContract.json b/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol/TokenCreateCustomContract.json index 2c449a01f..3d6d45946 100644 --- a/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol/TokenCreateCustomContract.json +++ b/artifacts/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol/TokenCreateCustomContract.json @@ -47,9 +47,9 @@ "type": "string" }, { - "internalType": "uint64", + "internalType": "int64", "name": "initialTotalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "int64", @@ -57,9 +57,9 @@ "type": "int64" }, { - "internalType": "uint32", + "internalType": "int32", "name": "decimals", - "type": "uint32" + "type": "int32" }, { "internalType": "bool", @@ -219,8 +219,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55610df3806101276000396000f3fe60806040526004361061004a5760003560e01c806311e1fc071461004f57806315dacbea146100865780635cbde966146100a65780639b23d3d9146100bb578063eac6f3fe146100db575b600080fd5b34801561005b57600080fd5b5061006f61006a366004610875565b6100fb565b60405160079190910b815260200160405180910390f35b34801561009257600080fd5b5061006f6100a1366004610875565b6101ed565b6100b96100b43660046109b7565b6102a9565b005b3480156100c757600080fd5b5061006f6100d6366004610875565b6104ad565b3480156100e757600080fd5b5061006f6100f6366004610875565b6104f2565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161017a9190610ae8565b600060405180830381855af49150503d80600081146101b5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ba565b606091505b5091509150816101cb5760156101df565b808060200190518101906101df9190610b16565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161026c9190610ae8565b6000604051808303816000865af19150503d80600081146101b5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ba565b60408051600580825260c08201909252600091816020015b6102c96107f0565b8152602001906001900390816102c15790505090506102eb6006600384610537565b816000815181106102fe576102fe610b38565b60200260200101819052506103166001600384610537565b8160018151811061032957610329610b38565b60200260200101819052506103416002600384610537565b8160028151811061035457610354610b38565b602002602001018190525061036c6004600384610537565b8160038151811061037f5761037f610b38565b602002602001018190525061039660038084610537565b816004815181106103a9576103a9610b38565b602002602001018190525060006040518060600160405280600063ffffffff168152602001856001600160a01b03168152602001627a120063ffffffff16815250905060006040518061012001604052808d81526020018c8152602001866001600160a01b031681526020018b81526020016001151581526020018960070b8152602001871515815260200184815260200183815250905060008061044f838c8b61056c565b90925090506016821461046157600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a15050505050505050505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161022e565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a40161013c565b61053f6107f0565b60405180604001604052806105538661069a565b815260200161056285856106d9565b9052949350505050565b600080848061010001516000015163ffffffff16600014801561059c57506101008101516040015163ffffffff16155b156105b2576101008101516276a7006040909101525b6000806101676001600160a01b03163463c23baeb660e01b8a8a8a6040516024016105df93929190610c3e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161061d9190610ae8565b60006040518083038185875af1925050503d806000811461065a576040519150601f19603f3d011682016040523d82523d6000602084013e61065f565b606091505b5091509150816106725760156000610686565b808060200190518101906106869190610d70565b60039190910b999098509650505050505050565b6000600160008360068111156106b2576106b2610da7565b60068111156106c3576106c3610da7565b8152602001908152602001600020549050919050565b61071f6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b600083600481111561073357610733610da7565b141561074257600181526107ea565b600183600481111561075657610756610da7565b1415610772576000546001600160a01b031660208201526107ea565b600283600481111561078657610786610da7565b141561079857604081018290526107ea565b60038360048111156107ac576107ac610da7565b14156107be57606081018290526107ea565b60048360048111156107d2576107d2610da7565b14156107ea576000546001600160a01b031660808201525b92915050565b6040518060400160405280600081526020016108486040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b038116811461086257600080fd5b50565b80356108708161084d565b919050565b6000806000806080858703121561088b57600080fd5b84356108968161084d565b935060208501356108a68161084d565b925060408501356108b68161084d565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108ed57600080fd5b813567ffffffffffffffff80821115610908576109086108c6565b604051601f8301601f19908116603f01168101908282118183101715610930576109306108c6565b8160405283815286602085880101111561094957600080fd5b836020870160208301376000602085830101528094505050505092915050565b803567ffffffffffffffff8116811461087057600080fd5b8035600781900b811461087057600080fd5b803563ffffffff8116811461087057600080fd5b8035801515811461087057600080fd5b60008060008060008060008060006101208a8c0312156109d657600080fd5b893567ffffffffffffffff808211156109ee57600080fd5b6109fa8d838e016108dc565b9a5060208c0135915080821115610a1057600080fd5b610a1c8d838e016108dc565b995060408c0135915080821115610a3257600080fd5b610a3e8d838e016108dc565b9850610a4c60608d01610969565b9750610a5a60808d01610981565b9650610a6860a08d01610993565b9550610a7660c08d016109a7565b9450610a8460e08d01610865565b93506101008c0135915080821115610a9b57600080fd5b50610aa88c828d016108dc565b9150509295985092959850929598565b60005b83811015610ad3578181015183820152602001610abb565b83811115610ae2576000848401525b50505050565b60008251610afa818460208701610ab8565b9190910192915050565b8051600381900b811461087057600080fd5b600060208284031215610b2857600080fd5b610b3182610b04565b9392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452610b66816020860160208601610ab8565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610c315782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b0152610bf360e08b0186610b4e565b928601518a8403603f1901858c0152929450610c0f8584610b4e565b9501511660c09890980197909752505098850198935090840190600101610b98565b5091979650505050505050565b6060815260008451610160806060850152610c5d6101c0850183610b4e565b91506020870151605f1980868503016080870152610c7b8483610b4e565b935060408901519150610c9960a08701836001600160a01b03169052565b60608901519150808685030160c0870152610cb48483610b4e565b935060808901519150610ccb60e087018315159052565b60a08901519150610100610ce38188018460070b9052565b60c08a0151151561012088015260e08a015187860383016101408901529250610d0c8584610b7a565b9450808a015192505050610d4882860182805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b505067ffffffffffffffff85166020840152905063ffffffff83166040830152949350505050565b60008060408385031215610d8357600080fd5b610d8c83610b04565b91506020830151610d9c8161084d565b809150509250929050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220e16e1677ebdd6915c792e5f5ea3da78b18864f09e0a7dc86f1d8a7e9f6f1c6d364736f6c63430008090033", - "deployedBytecode": "0x60806040526004361061004a5760003560e01c806311e1fc071461004f57806315dacbea146100865780635cbde966146100a65780639b23d3d9146100bb578063eac6f3fe146100db575b600080fd5b34801561005b57600080fd5b5061006f61006a366004610875565b6100fb565b60405160079190910b815260200160405180910390f35b34801561009257600080fd5b5061006f6100a1366004610875565b6101ed565b6100b96100b43660046109b7565b6102a9565b005b3480156100c757600080fd5b5061006f6100d6366004610875565b6104ad565b3480156100e757600080fd5b5061006f6100f6366004610875565b6104f2565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161017a9190610ae8565b600060405180830381855af49150503d80600081146101b5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ba565b606091505b5091509150816101cb5760156101df565b808060200190518101906101df9190610b16565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161026c9190610ae8565b6000604051808303816000865af19150503d80600081146101b5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ba565b60408051600580825260c08201909252600091816020015b6102c96107f0565b8152602001906001900390816102c15790505090506102eb6006600384610537565b816000815181106102fe576102fe610b38565b60200260200101819052506103166001600384610537565b8160018151811061032957610329610b38565b60200260200101819052506103416002600384610537565b8160028151811061035457610354610b38565b602002602001018190525061036c6004600384610537565b8160038151811061037f5761037f610b38565b602002602001018190525061039660038084610537565b816004815181106103a9576103a9610b38565b602002602001018190525060006040518060600160405280600063ffffffff168152602001856001600160a01b03168152602001627a120063ffffffff16815250905060006040518061012001604052808d81526020018c8152602001866001600160a01b031681526020018b81526020016001151581526020018960070b8152602001871515815260200184815260200183815250905060008061044f838c8b61056c565b90925090506016821461046157600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a15050505050505050505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161022e565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a40161013c565b61053f6107f0565b60405180604001604052806105538661069a565b815260200161056285856106d9565b9052949350505050565b600080848061010001516000015163ffffffff16600014801561059c57506101008101516040015163ffffffff16155b156105b2576101008101516276a7006040909101525b6000806101676001600160a01b03163463c23baeb660e01b8a8a8a6040516024016105df93929190610c3e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161061d9190610ae8565b60006040518083038185875af1925050503d806000811461065a576040519150601f19603f3d011682016040523d82523d6000602084013e61065f565b606091505b5091509150816106725760156000610686565b808060200190518101906106869190610d70565b60039190910b999098509650505050505050565b6000600160008360068111156106b2576106b2610da7565b60068111156106c3576106c3610da7565b8152602001908152602001600020549050919050565b61071f6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b600083600481111561073357610733610da7565b141561074257600181526107ea565b600183600481111561075657610756610da7565b1415610772576000546001600160a01b031660208201526107ea565b600283600481111561078657610786610da7565b141561079857604081018290526107ea565b60038360048111156107ac576107ac610da7565b14156107be57606081018290526107ea565b60048360048111156107d2576107d2610da7565b14156107ea576000546001600160a01b031660808201525b92915050565b6040518060400160405280600081526020016108486040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b038116811461086257600080fd5b50565b80356108708161084d565b919050565b6000806000806080858703121561088b57600080fd5b84356108968161084d565b935060208501356108a68161084d565b925060408501356108b68161084d565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108ed57600080fd5b813567ffffffffffffffff80821115610908576109086108c6565b604051601f8301601f19908116603f01168101908282118183101715610930576109306108c6565b8160405283815286602085880101111561094957600080fd5b836020870160208301376000602085830101528094505050505092915050565b803567ffffffffffffffff8116811461087057600080fd5b8035600781900b811461087057600080fd5b803563ffffffff8116811461087057600080fd5b8035801515811461087057600080fd5b60008060008060008060008060006101208a8c0312156109d657600080fd5b893567ffffffffffffffff808211156109ee57600080fd5b6109fa8d838e016108dc565b9a5060208c0135915080821115610a1057600080fd5b610a1c8d838e016108dc565b995060408c0135915080821115610a3257600080fd5b610a3e8d838e016108dc565b9850610a4c60608d01610969565b9750610a5a60808d01610981565b9650610a6860a08d01610993565b9550610a7660c08d016109a7565b9450610a8460e08d01610865565b93506101008c0135915080821115610a9b57600080fd5b50610aa88c828d016108dc565b9150509295985092959850929598565b60005b83811015610ad3578181015183820152602001610abb565b83811115610ae2576000848401525b50505050565b60008251610afa818460208701610ab8565b9190910192915050565b8051600381900b811461087057600080fd5b600060208284031215610b2857600080fd5b610b3182610b04565b9392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452610b66816020860160208601610ab8565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610c315782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b0152610bf360e08b0186610b4e565b928601518a8403603f1901858c0152929450610c0f8584610b4e565b9501511660c09890980197909752505098850198935090840190600101610b98565b5091979650505050505050565b6060815260008451610160806060850152610c5d6101c0850183610b4e565b91506020870151605f1980868503016080870152610c7b8483610b4e565b935060408901519150610c9960a08701836001600160a01b03169052565b60608901519150808685030160c0870152610cb48483610b4e565b935060808901519150610ccb60e087018315159052565b60a08901519150610100610ce38188018460070b9052565b60c08a0151151561012088015260e08a015187860383016101408901529250610d0c8584610b7a565b9450808a015192505050610d4882860182805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b505067ffffffffffffffff85166020840152905063ffffffff83166040830152949350505050565b60008060408385031215610d8357600080fd5b610d8c83610b04565b91506020830151610d9c8161084d565b809150509250929050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220e16e1677ebdd6915c792e5f5ea3da78b18864f09e0a7dc86f1d8a7e9f6f1c6d364736f6c63430008090033", + "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55610dc5806101276000396000f3fe60806040526004361061004a5760003560e01c806311e1fc071461004f57806315dacbea146100865780639b23d3d9146100a6578063eac6f3fe146100c6578063f7bddff8146100e6575b600080fd5b34801561005b57600080fd5b5061006f61006a366004610869565b6100fb565b60405160079190910b815260200160405180910390f35b34801561009257600080fd5b5061006f6100a1366004610869565b6101ed565b3480156100b257600080fd5b5061006f6100c1366004610869565b6102a9565b3480156100d257600080fd5b5061006f6100e1366004610869565b6102ee565b6100f96100f4366004610999565b610333565b005b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161017a9190610aca565b600060405180830381855af49150503d80600081146101b5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ba565b606091505b5091509150816101cb5760156101df565b808060200190518101906101df9190610ae6565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161026c9190610aca565b6000604051808303816000865af19150503d80600081146101b5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ba565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161022e565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a40161013c565b60408051600580825260c08201909252600091816020015b6103536107e4565b81526020019060019003908161034b5790505090506103756006600384610531565b8160008151811061038857610388610b0a565b60200260200101819052506103a06001600384610531565b816001815181106103b3576103b3610b0a565b60200260200101819052506103cb6002600384610531565b816002815181106103de576103de610b0a565b60200260200101819052506103f66004600384610531565b8160038151811061040957610409610b0a565b602002602001018190525061042060038084610531565b8160048151811061043357610433610b0a565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b815250905060006040518061012001604052808d81526020018c8152602001866001600160a01b031681526020018b81526020016001151581526020018960070b815260200187151581526020018481526020018381525090506000806104d3838c8b610566565b9092509050601682146104e557600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a15050505050505050505050505050565b6105396107e4565b604051806040016040528061054d8661068e565b815260200161055c85856106cd565b9052949350505050565b600080848061010001516000015160070b600014801561059057506101008101516040015160070b155b156105a6576101008101516276a7006040909101525b6000806101676001600160a01b031634630fb65bf360e01b8a8a8a6040516024016105d393929190610c10565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516106119190610aca565b60006040518083038185875af1925050503d806000811461064e576040519150601f19603f3d011682016040523d82523d6000602084013e610653565b606091505b509150915081610666576015600061067a565b8080602001905181019061067a9190610d3f565b60039190910b999098509650505050505050565b6000600160008360068111156106a6576106a6610d79565b60068111156106b7576106b7610d79565b8152602001908152602001600020549050919050565b6107136040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b600083600481111561072757610727610d79565b141561073657600181526107de565b600183600481111561074a5761074a610d79565b1415610766576000546001600160a01b031660208201526107de565b600283600481111561077a5761077a610d79565b141561078c57604081018290526107de565b60038360048111156107a0576107a0610d79565b14156107b257606081018290526107de565b60048360048111156107c6576107c6610d79565b14156107de576000546001600160a01b031660808201525b92915050565b60405180604001604052806000815260200161083c6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b038116811461085657600080fd5b50565b803561086481610841565b919050565b6000806000806080858703121561087f57600080fd5b843561088a81610841565b9350602085013561089a81610841565b925060408501356108aa81610841565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108e157600080fd5b813567ffffffffffffffff808211156108fc576108fc6108ba565b604051601f8301601f19908116603f01168101908282118183101715610924576109246108ba565b8160405283815286602085880101111561093d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b8035600781900b811461086457600080fd5b8060030b811461085657600080fd5b80356108648161096f565b8035801515811461086457600080fd5b60008060008060008060008060006101208a8c0312156109b857600080fd5b893567ffffffffffffffff808211156109d057600080fd5b6109dc8d838e016108d0565b9a5060208c01359150808211156109f257600080fd5b6109fe8d838e016108d0565b995060408c0135915080821115610a1457600080fd5b610a208d838e016108d0565b9850610a2e60608d0161095d565b9750610a3c60808d0161095d565b9650610a4a60a08d0161097e565b9550610a5860c08d01610989565b9450610a6660e08d01610859565b93506101008c0135915080821115610a7d57600080fd5b50610a8a8c828d016108d0565b9150509295985092959850929598565b60005b83811015610ab5578181015183820152602001610a9d565b83811115610ac4576000848401525b50505050565b60008251610adc818460208701610a9a565b9190910192915050565b600060208284031215610af857600080fd5b8151610b038161096f565b9392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452610b38816020860160208601610a9a565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610c035782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b0152610bc560e08b0186610b20565b928601518a8403603f1901858c0152929450610be18584610b20565b9501511660c09890980197909752505098850198935090840190600101610b6a565b5091979650505050505050565b6060815260008451610160806060850152610c2f6101c0850183610b20565b91506020870151605f1980868503016080870152610c4d8483610b20565b935060408901519150610c6b60a08701836001600160a01b03169052565b60608901519150808685030160c0870152610c868483610b20565b935060808901519150610c9d60e087018315159052565b60a08901519150610100610cb58188018460070b9052565b60c08a0151151561012088015260e08a015187860383016101408901529250610cde8584610b4c565b9450808a015192505050610d1a82860182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5050600785900b60208401529050610d37604083018460030b9052565b949350505050565b60008060408385031215610d5257600080fd5b8251610d5d8161096f565b6020840151909250610d6e81610841565b809150509250929050565b634e487b7160e01b600052602160045260246000fdfea26469706673582212200dcc7e8944e9f90182b8f0d49c55704ea54e4158600639a62993c197189f3ad464736f6c63430008090033", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c806311e1fc071461004f57806315dacbea146100865780639b23d3d9146100a6578063eac6f3fe146100c6578063f7bddff8146100e6575b600080fd5b34801561005b57600080fd5b5061006f61006a366004610869565b6100fb565b60405160079190910b815260200160405180910390f35b34801561009257600080fd5b5061006f6100a1366004610869565b6101ed565b3480156100b257600080fd5b5061006f6100c1366004610869565b6102a9565b3480156100d257600080fd5b5061006f6100e1366004610869565b6102ee565b6100f96100f4366004610999565b610333565b005b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161017a9190610aca565b600060405180830381855af49150503d80600081146101b5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ba565b606091505b5091509150816101cb5760156101df565b808060200190518101906101df9190610ae6565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161026c9190610aca565b6000604051808303816000865af19150503d80600081146101b5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ba565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161022e565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a40161013c565b60408051600580825260c08201909252600091816020015b6103536107e4565b81526020019060019003908161034b5790505090506103756006600384610531565b8160008151811061038857610388610b0a565b60200260200101819052506103a06001600384610531565b816001815181106103b3576103b3610b0a565b60200260200101819052506103cb6002600384610531565b816002815181106103de576103de610b0a565b60200260200101819052506103f66004600384610531565b8160038151811061040957610409610b0a565b602002602001018190525061042060038084610531565b8160048151811061043357610433610b0a565b602002602001018190525060006040518060600160405280600060070b8152602001856001600160a01b03168152602001627a120060070b815250905060006040518061012001604052808d81526020018c8152602001866001600160a01b031681526020018b81526020016001151581526020018960070b815260200187151581526020018481526020018381525090506000806104d3838c8b610566565b9092509050601682146104e557600080fd5b6040516001600160a01b03821681527f7bb17726df1f3adee8aa00ba8e8bc5d6f182af3bbf77604639cb7f008dd3b4ed9060200160405180910390a15050505050505050505050505050565b6105396107e4565b604051806040016040528061054d8661068e565b815260200161055c85856106cd565b9052949350505050565b600080848061010001516000015160070b600014801561059057506101008101516040015160070b155b156105a6576101008101516276a7006040909101525b6000806101676001600160a01b031634630fb65bf360e01b8a8a8a6040516024016105d393929190610c10565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516106119190610aca565b60006040518083038185875af1925050503d806000811461064e576040519150601f19603f3d011682016040523d82523d6000602084013e610653565b606091505b509150915081610666576015600061067a565b8080602001905181019061067a9190610d3f565b60039190910b999098509650505050505050565b6000600160008360068111156106a6576106a6610d79565b60068111156106b7576106b7610d79565b8152602001908152602001600020549050919050565b6107136040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b600083600481111561072757610727610d79565b141561073657600181526107de565b600183600481111561074a5761074a610d79565b1415610766576000546001600160a01b031660208201526107de565b600283600481111561077a5761077a610d79565b141561078c57604081018290526107de565b60038360048111156107a0576107a0610d79565b14156107b257606081018290526107de565b60048360048111156107c6576107c6610d79565b14156107de576000546001600160a01b031660808201525b92915050565b60405180604001604052806000815260200161083c6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b905290565b6001600160a01b038116811461085657600080fd5b50565b803561086481610841565b919050565b6000806000806080858703121561087f57600080fd5b843561088a81610841565b9350602085013561089a81610841565b925060408501356108aa81610841565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126108e157600080fd5b813567ffffffffffffffff808211156108fc576108fc6108ba565b604051601f8301601f19908116603f01168101908282118183101715610924576109246108ba565b8160405283815286602085880101111561093d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b8035600781900b811461086457600080fd5b8060030b811461085657600080fd5b80356108648161096f565b8035801515811461086457600080fd5b60008060008060008060008060006101208a8c0312156109b857600080fd5b893567ffffffffffffffff808211156109d057600080fd5b6109dc8d838e016108d0565b9a5060208c01359150808211156109f257600080fd5b6109fe8d838e016108d0565b995060408c0135915080821115610a1457600080fd5b610a208d838e016108d0565b9850610a2e60608d0161095d565b9750610a3c60808d0161095d565b9650610a4a60a08d0161097e565b9550610a5860c08d01610989565b9450610a6660e08d01610859565b93506101008c0135915080821115610a7d57600080fd5b50610a8a8c828d016108d0565b9150509295985092959850929598565b60005b83811015610ab5578181015183820152602001610a9d565b83811115610ac4576000848401525b50505050565b60008251610adc818460208701610a9a565b9190910192915050565b600060208284031215610af857600080fd5b8151610b038161096f565b9392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452610b38816020860160208601610a9a565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610c035782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b0152610bc560e08b0186610b20565b928601518a8403603f1901858c0152929450610be18584610b20565b9501511660c09890980197909752505098850198935090840190600101610b6a565b5091979650505050505050565b6060815260008451610160806060850152610c2f6101c0850183610b20565b91506020870151605f1980868503016080870152610c4d8483610b20565b935060408901519150610c6b60a08701836001600160a01b03169052565b60608901519150808685030160c0870152610c868483610b20565b935060808901519150610c9d60e087018315159052565b60a08901519150610100610cb58188018460070b9052565b60c08a0151151561012088015260e08a015187860383016101408901529250610cde8584610b4c565b9450808a015192505050610d1a82860182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5050600785900b60208401529050610d37604083018460030b9052565b949350505050565b60008060408385031215610d5257600080fd5b8251610d5d8161096f565b6020840151909250610d6e81610841565b809150509250929050565b634e487b7160e01b600052602160045260246000fdfea26469706673582212200dcc7e8944e9f90182b8f0d49c55704ea54e4158600639a62993c197189f3ad464736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json b/artifacts/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json index a5c17ef97..9ed61a6c7 100644 --- a/artifacts/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json +++ b/artifacts/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json @@ -108,9 +108,9 @@ "type": "address" }, { - "internalType": "uint64", + "internalType": "int64", "name": "amount", - "type": "uint64" + "type": "int64" }, { "internalType": "int64[]", @@ -126,9 +126,9 @@ "type": "int256" }, { - "internalType": "uint64", + "internalType": "int64", "name": "newTotalSupply", - "type": "uint64" + "type": "int64" } ], "stateMutability": "nonpayable", @@ -486,9 +486,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -496,9 +496,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -608,9 +608,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -618,9 +618,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -749,9 +749,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" } ], "name": "wipeTokenAccountPublic", @@ -766,8 +766,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55611b38806101276000396000f3fe608060405234801561001057600080fd5b50600436106101475760003560e01c80639b23d3d9116100c8578063eac6f3fe1161008c578063f7be342511610066578063f7be3425146102c8578063f848fec4146102db578063fa88f953146102ee57600080fd5b8063eac6f3fe1461028f578063eee55ac8146102a2578063f25b1200146102b557600080fd5b80639b23d3d914610230578063a345f7bd14610243578063b26d33cb14610256578063d92ac24814610269578063df6c06f51461027c57600080fd5b80632eecbca31161010f5780632eecbca3146101d15780632f13d66b146101e45780634d8f27c9146101f757806356af84031461020a5780637d3e5da81461021d57600080fd5b806311e1fc071461014c57806315dacbea146101775780632abf6c551461018a5780632b256ec8146101ab5780632d73bb2e146101be575b600080fd5b61015f61015a366004610e93565b61031f565b60405160079190910b81526020015b60405180910390f35b61015f610185366004610e93565b610411565b61019d610198366004610fb9565b6104cd565b60405190815260200161016e565b61019d6101b9366004611069565b610515565b61019d6101cc366004611084565b610590565b61015f6101df366004611084565b6105c0565b61019d6101f2366004611329565b610605565b61015f61020536600461146f565b610611565b61019d61021836600461151f565b61061d565b61019d61022b366004611084565b610667565b61015f61023e366004610e93565b610673565b61019d610251366004611069565b6106b8565b61019d610264366004611084565b6106fe565b61019d61027736600461157d565b61070a565b61019d61028a3660046115c0565b610717565b61015f61029d366004610e93565b610724565b61019d6102b03660046115fc565b610769565b61019d6102c3366004611627565b610775565b61019d6102d6366004611069565b610782565b61019d6102e93660046115c0565b6107f4565b6103016102fc36600461167a565b610801565b6040805192835267ffffffffffffffff90911660208301520161016e565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161039e91906116d8565b600060405180830381855af49150503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b606091505b5091509150816103ef576015610403565b808060200190518101906104039190611706565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161049091906116d8565b6000604051808303816000865af19150503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b60006104d9838361084a565b9050600080516020611ae3833981519152816040516104fa91815260200190565b60405180910390a16016811461050f57600080fd5b92915050565b600061052082610927565b9050600080516020611ae38339815191528160405161054191815260200190565b60405180910390a16016811461055657600080fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b600061059c8383610a01565b60070b9050600080516020611ae3833981519152816040516104fa91815260200190565b60006105cc8383610a37565b604051600782900b8152909150600080516020611ae38339815191529060200160405180910390a1600781900b60161461050f57600080fd5b60006104d98383610a6d565b60006105cc8383610a99565b600061062a848484610ac5565b9050600080516020611ae38339815191528160405161064b91815260200190565b60405180910390a16016811461066057600080fd5b9392505050565b600061059c8383610ba5565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a401610452565b60006106c382610bdb565b9050600080516020611ae3833981519152816040516106e491815260200190565b60405180910390a1601681146106f957600080fd5b919050565b60006104d98383610c09565b600061062a848484610c3f565b600061062a848484610c81565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a401610360565b60006104d98383610cbe565b600061062a848484610cea565b600061078d82610d28565b9050600080516020611ae3833981519152816040516107ae91815260200190565b60405180910390a1601681146107c357600080fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d290602001610583565b600061062a848484610d56565b60008061080f858585610d93565b6040518281529193509150600080516020611ae38339815191529060200160405180910390a16016821461084257600080fd5b935093915050565b60008060006101676001600160a01b03166378b6391860e01b8686604051602401610876929190611721565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108b491906116d8565b6000604051808303816000865af19150503d80600081146108f1576040519150601f19603f3d011682016040523d82523d6000602084013e6108f6565b606091505b50915091508161090757601561091b565b8080602001905181019061091b9190611706565b60030b95945050505050565b6040516001600160a01b03821660248201526000908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161098f91906116d8565b6000604051808303816000865af19150503d80600081146109cc576040519150601f19603f3d011682016040523d82523d6000602084013e6109d1565b606091505b5091509150816109e25760156109f6565b808060200190518101906109f69190611706565b60030b949350505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906352f9138760e01b90606401610876565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063af99c63360e01b90606401610876565b60008060006101676001600160a01b03166318370d3460e01b868660405160240161087692919061186c565b60008060006101676001600160a01b0316636fc3cbaf60e01b8686604051602401610876929190611999565b60008060006101676001600160a01b031663f7f38e2660e01b878787604051602401610af393929190611a01565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b3191906116d8565b6000604051808303816000865af19150503d8060008114610b6e576040519150601f19603f3d011682016040523d82523d6000602084013e610b73565b606091505b509150915081610b84576015610b98565b80806020019051810190610b989190611706565b60030b9695505050505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906316e3e16160e21b90606401610876565b6040516001600160a01b03821660248201526000908190819061016790637834fb8960e11b90604401610951565b6040516001600160a01b038381166024830152821660448201526000908190819061016790630132f29d60e31b90606401610876565b6040516001600160a01b0384811660248301528316604482015263ffffffff821660648201526000908190819061016790639790686d60e01b90608401610af3565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b90608401610af3565b60008060006101676001600160a01b031663593d6e8260e01b8686604051602401610876929190611a36565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b90608401610af3565b6040516001600160a01b03821660248201526000908190819061016790633b3bff0f60e01b90604401610951565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b90608401610af3565b6000806000806101676001600160a01b031663acb9cff960e01b888888604051602401610dc293929190611a79565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610e0091906116d8565b6000604051808303816000865af19150503d8060008114610e3d576040519150601f19603f3d011682016040523d82523d6000602084013e610e42565b606091505b509150915081610e555760156000610e69565b80806020019051810190610e699190611aab565b60039190910b9890975095505050505050565b80356001600160a01b03811681146106f957600080fd5b60008060008060808587031215610ea957600080fd5b610eb285610e7c565b9350610ec060208601610e7c565b9250610ece60408601610e7c565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f1757610f17610ede565b60405290565b60405160a0810167ffffffffffffffff81118282101715610f1757610f17610ede565b604051610120810167ffffffffffffffff81118282101715610f1757610f17610ede565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8d57610f8d610ede565b604052919050565b600067ffffffffffffffff821115610faf57610faf610ede565b5060051b60200190565b60008060408385031215610fcc57600080fd5b610fd583610e7c565b915060208084013567ffffffffffffffff811115610ff257600080fd5b8401601f8101861361100357600080fd5b803561101661101182610f95565b610f64565b81815260059190911b8201830190838101908883111561103557600080fd5b928401925b8284101561105a5761104b84610e7c565b8252928401929084019061103a565b80955050505050509250929050565b60006020828403121561107b57600080fd5b61066082610e7c565b6000806040838503121561109757600080fd5b6110a083610e7c565b91506110ae60208401610e7c565b90509250929050565b600082601f8301126110c857600080fd5b813567ffffffffffffffff8111156110e2576110e2610ede565b6110f5601f8201601f1916602001610f64565b81815284602083860101111561110a57600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146106f957600080fd5b8035600781900b81146106f957600080fd5b600082601f83011261115a57600080fd5b8135602061116a61101183610f95565b82815260059290921b8401810191818101908684111561118957600080fd5b8286015b8481101561129b57803567ffffffffffffffff808211156111ad57600080fd5b908801906040601f19838c0381018213156111c757600080fd5b6111cf610ef4565b88850135815282850135848111156111e657600080fd5b949094019360a0858e03830112156111fe5760008081fd5b611206610f1d565b9150611213898601611127565b8252611220838601610e7c565b89830152606080860135858111156112385760008081fd5b6112468f8c838a01016110b7565b85850152506080935083860135858111156112615760008081fd5b61126f8f8c838a01016110b7565b82850152505061128160a08601610e7c565b92820192909252818801528552505091830191830161118d565b509695505050505050565b803563ffffffff811681146106f957600080fd5b6000606082840312156112cc57600080fd5b6040516060810181811067ffffffffffffffff821117156112ef576112ef610ede565b6040529050806112fe836112a6565b815261130c60208401610e7c565b602082015261131d604084016112a6565b60408201525092915050565b6000806040838503121561133c57600080fd5b61134583610e7c565b9150602083013567ffffffffffffffff8082111561136257600080fd5b90840190610160828703121561137757600080fd5b61137f610f40565b82358281111561138e57600080fd5b61139a888286016110b7565b8252506020830135828111156113af57600080fd5b6113bb888286016110b7565b6020830152506113cd60408401610e7c565b60408201526060830135828111156113e457600080fd5b6113f0888286016110b7565b60608301525061140260808401611127565b608082015261141360a08401611137565b60a082015261142460c08401611127565b60c082015260e08301358281111561143b57600080fd5b61144788828601611149565b60e083015250610100915061145e878385016112ba565b828201528093505050509250929050565b6000806040838503121561148257600080fd5b61148b83610e7c565b9150602083013567ffffffffffffffff8111156114a757600080fd5b6114b385828601611149565b9150509250929050565b600082601f8301126114ce57600080fd5b813560206114de61101183610f95565b82815260059290921b840181019181810190868411156114fd57600080fd5b8286015b8481101561129b5761151281611137565b8352918301918301611501565b60008060006060848603121561153457600080fd5b61153d84610e7c565b925061154b60208501610e7c565b9150604084013567ffffffffffffffff81111561156757600080fd5b611573868287016114bd565b9150509250925092565b60008060006060848603121561159257600080fd5b61159b84610e7c565b92506115a960208501610e7c565b91506115b7604085016112a6565b90509250925092565b6000806000606084860312156115d557600080fd5b6115de84610e7c565b92506115ec60208501610e7c565b9150604084013590509250925092565b6000806080838503121561160f57600080fd5b61161883610e7c565b91506110ae84602085016112ba565b60008060006060848603121561163c57600080fd5b61164584610e7c565b925061165360208501610e7c565b91506115b760408501611127565b67ffffffffffffffff8116811461167757600080fd5b50565b60008060006060848603121561168f57600080fd5b61169884610e7c565b9250602084013561154b81611661565b60005b838110156116c35781810151838201526020016116ab565b838111156116d2576000848401525b50505050565b600082516116ea8184602087016116a8565b9190910192915050565b8051600381900b81146106f957600080fd5b60006020828403121561171857600080fd5b610660826116f4565b6000604082016001600160a01b0380861684526020604081860152828651808552606087019150828801945060005b8181101561176e578551851683529483019491830191600101611750565b509098975050505050505050565b600081518084526117948160208601602086016116a8565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b8581101561185f5782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b015261182160e08b018661177c565b928601518a8403603f1901858c015292945061183d858461177c565b9501511660c098909801979097525050988501989350908401906001016117c6565b5091979650505050505050565b6001600160a01b0383168152604060208201526000825161016060408401526118996101a084018261177c565b90506020840151603f19808584030160608601526118b7838361177c565b9250604086015191506118d560808601836001600160a01b03169052565b60608601519150808584030160a08601526118f0838361177c565b92506080860151915061190760c086018315159052565b60a0860151915061191d60e086018360070b9052565b60c086015191506101006119348187018415159052565b60e08701519250818685030161012087015261195084846117a8565b90870151805163ffffffff90811661014089015260208201516001600160a01b031661016089015260408201511661018088015290935091506119909050565b50949350505050565b6001600160a01b03831681526040602082015260006119bb60408301846117a8565b949350505050565b600081518084526020808501945080840160005b838110156119f657815160070b875295820195908201906001016119d7565b509495945050505050565b60006001600160a01b03808616835280851660208401525060606040830152611a2d60608301846119c3565b95945050505050565b6001600160a01b0383168152608081016106606020830184805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b6001600160a01b038416815267ffffffffffffffff83166020820152606060408201526000611a2d60608301846119c3565b60008060408385031215611abe57600080fd5b611ac7836116f4565b91506020830151611ad781611661565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122087586ca0a7160525c6c431002299aa2c56fdc18821b40b51869244c3195d86bc64736f6c63430008090033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101475760003560e01c80639b23d3d9116100c8578063eac6f3fe1161008c578063f7be342511610066578063f7be3425146102c8578063f848fec4146102db578063fa88f953146102ee57600080fd5b8063eac6f3fe1461028f578063eee55ac8146102a2578063f25b1200146102b557600080fd5b80639b23d3d914610230578063a345f7bd14610243578063b26d33cb14610256578063d92ac24814610269578063df6c06f51461027c57600080fd5b80632eecbca31161010f5780632eecbca3146101d15780632f13d66b146101e45780634d8f27c9146101f757806356af84031461020a5780637d3e5da81461021d57600080fd5b806311e1fc071461014c57806315dacbea146101775780632abf6c551461018a5780632b256ec8146101ab5780632d73bb2e146101be575b600080fd5b61015f61015a366004610e93565b61031f565b60405160079190910b81526020015b60405180910390f35b61015f610185366004610e93565b610411565b61019d610198366004610fb9565b6104cd565b60405190815260200161016e565b61019d6101b9366004611069565b610515565b61019d6101cc366004611084565b610590565b61015f6101df366004611084565b6105c0565b61019d6101f2366004611329565b610605565b61015f61020536600461146f565b610611565b61019d61021836600461151f565b61061d565b61019d61022b366004611084565b610667565b61015f61023e366004610e93565b610673565b61019d610251366004611069565b6106b8565b61019d610264366004611084565b6106fe565b61019d61027736600461157d565b61070a565b61019d61028a3660046115c0565b610717565b61015f61029d366004610e93565b610724565b61019d6102b03660046115fc565b610769565b61019d6102c3366004611627565b610775565b61019d6102d6366004611069565b610782565b61019d6102e93660046115c0565b6107f4565b6103016102fc36600461167a565b610801565b6040805192835267ffffffffffffffff90911660208301520161016e565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161039e91906116d8565b600060405180830381855af49150503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b606091505b5091509150816103ef576015610403565b808060200190518101906104039190611706565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161049091906116d8565b6000604051808303816000865af19150503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b60006104d9838361084a565b9050600080516020611ae3833981519152816040516104fa91815260200190565b60405180910390a16016811461050f57600080fd5b92915050565b600061052082610927565b9050600080516020611ae38339815191528160405161054191815260200190565b60405180910390a16016811461055657600080fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b600061059c8383610a01565b60070b9050600080516020611ae3833981519152816040516104fa91815260200190565b60006105cc8383610a37565b604051600782900b8152909150600080516020611ae38339815191529060200160405180910390a1600781900b60161461050f57600080fd5b60006104d98383610a6d565b60006105cc8383610a99565b600061062a848484610ac5565b9050600080516020611ae38339815191528160405161064b91815260200190565b60405180910390a16016811461066057600080fd5b9392505050565b600061059c8383610ba5565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a401610452565b60006106c382610bdb565b9050600080516020611ae3833981519152816040516106e491815260200190565b60405180910390a1601681146106f957600080fd5b919050565b60006104d98383610c09565b600061062a848484610c3f565b600061062a848484610c81565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a401610360565b60006104d98383610cbe565b600061062a848484610cea565b600061078d82610d28565b9050600080516020611ae3833981519152816040516107ae91815260200190565b60405180910390a1601681146107c357600080fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d290602001610583565b600061062a848484610d56565b60008061080f858585610d93565b6040518281529193509150600080516020611ae38339815191529060200160405180910390a16016821461084257600080fd5b935093915050565b60008060006101676001600160a01b03166378b6391860e01b8686604051602401610876929190611721565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108b491906116d8565b6000604051808303816000865af19150503d80600081146108f1576040519150601f19603f3d011682016040523d82523d6000602084013e6108f6565b606091505b50915091508161090757601561091b565b8080602001905181019061091b9190611706565b60030b95945050505050565b6040516001600160a01b03821660248201526000908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161098f91906116d8565b6000604051808303816000865af19150503d80600081146109cc576040519150601f19603f3d011682016040523d82523d6000602084013e6109d1565b606091505b5091509150816109e25760156109f6565b808060200190518101906109f69190611706565b60030b949350505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906352f9138760e01b90606401610876565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063af99c63360e01b90606401610876565b60008060006101676001600160a01b03166318370d3460e01b868660405160240161087692919061186c565b60008060006101676001600160a01b0316636fc3cbaf60e01b8686604051602401610876929190611999565b60008060006101676001600160a01b031663f7f38e2660e01b878787604051602401610af393929190611a01565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b3191906116d8565b6000604051808303816000865af19150503d8060008114610b6e576040519150601f19603f3d011682016040523d82523d6000602084013e610b73565b606091505b509150915081610b84576015610b98565b80806020019051810190610b989190611706565b60030b9695505050505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906316e3e16160e21b90606401610876565b6040516001600160a01b03821660248201526000908190819061016790637834fb8960e11b90604401610951565b6040516001600160a01b038381166024830152821660448201526000908190819061016790630132f29d60e31b90606401610876565b6040516001600160a01b0384811660248301528316604482015263ffffffff821660648201526000908190819061016790639790686d60e01b90608401610af3565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b90608401610af3565b60008060006101676001600160a01b031663593d6e8260e01b8686604051602401610876929190611a36565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b90608401610af3565b6040516001600160a01b03821660248201526000908190819061016790633b3bff0f60e01b90604401610951565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b90608401610af3565b6000806000806101676001600160a01b031663acb9cff960e01b888888604051602401610dc293929190611a79565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610e0091906116d8565b6000604051808303816000865af19150503d8060008114610e3d576040519150601f19603f3d011682016040523d82523d6000602084013e610e42565b606091505b509150915081610e555760156000610e69565b80806020019051810190610e699190611aab565b60039190910b9890975095505050505050565b80356001600160a01b03811681146106f957600080fd5b60008060008060808587031215610ea957600080fd5b610eb285610e7c565b9350610ec060208601610e7c565b9250610ece60408601610e7c565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f1757610f17610ede565b60405290565b60405160a0810167ffffffffffffffff81118282101715610f1757610f17610ede565b604051610120810167ffffffffffffffff81118282101715610f1757610f17610ede565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8d57610f8d610ede565b604052919050565b600067ffffffffffffffff821115610faf57610faf610ede565b5060051b60200190565b60008060408385031215610fcc57600080fd5b610fd583610e7c565b915060208084013567ffffffffffffffff811115610ff257600080fd5b8401601f8101861361100357600080fd5b803561101661101182610f95565b610f64565b81815260059190911b8201830190838101908883111561103557600080fd5b928401925b8284101561105a5761104b84610e7c565b8252928401929084019061103a565b80955050505050509250929050565b60006020828403121561107b57600080fd5b61066082610e7c565b6000806040838503121561109757600080fd5b6110a083610e7c565b91506110ae60208401610e7c565b90509250929050565b600082601f8301126110c857600080fd5b813567ffffffffffffffff8111156110e2576110e2610ede565b6110f5601f8201601f1916602001610f64565b81815284602083860101111561110a57600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146106f957600080fd5b8035600781900b81146106f957600080fd5b600082601f83011261115a57600080fd5b8135602061116a61101183610f95565b82815260059290921b8401810191818101908684111561118957600080fd5b8286015b8481101561129b57803567ffffffffffffffff808211156111ad57600080fd5b908801906040601f19838c0381018213156111c757600080fd5b6111cf610ef4565b88850135815282850135848111156111e657600080fd5b949094019360a0858e03830112156111fe5760008081fd5b611206610f1d565b9150611213898601611127565b8252611220838601610e7c565b89830152606080860135858111156112385760008081fd5b6112468f8c838a01016110b7565b85850152506080935083860135858111156112615760008081fd5b61126f8f8c838a01016110b7565b82850152505061128160a08601610e7c565b92820192909252818801528552505091830191830161118d565b509695505050505050565b803563ffffffff811681146106f957600080fd5b6000606082840312156112cc57600080fd5b6040516060810181811067ffffffffffffffff821117156112ef576112ef610ede565b6040529050806112fe836112a6565b815261130c60208401610e7c565b602082015261131d604084016112a6565b60408201525092915050565b6000806040838503121561133c57600080fd5b61134583610e7c565b9150602083013567ffffffffffffffff8082111561136257600080fd5b90840190610160828703121561137757600080fd5b61137f610f40565b82358281111561138e57600080fd5b61139a888286016110b7565b8252506020830135828111156113af57600080fd5b6113bb888286016110b7565b6020830152506113cd60408401610e7c565b60408201526060830135828111156113e457600080fd5b6113f0888286016110b7565b60608301525061140260808401611127565b608082015261141360a08401611137565b60a082015261142460c08401611127565b60c082015260e08301358281111561143b57600080fd5b61144788828601611149565b60e083015250610100915061145e878385016112ba565b828201528093505050509250929050565b6000806040838503121561148257600080fd5b61148b83610e7c565b9150602083013567ffffffffffffffff8111156114a757600080fd5b6114b385828601611149565b9150509250929050565b600082601f8301126114ce57600080fd5b813560206114de61101183610f95565b82815260059290921b840181019181810190868411156114fd57600080fd5b8286015b8481101561129b5761151281611137565b8352918301918301611501565b60008060006060848603121561153457600080fd5b61153d84610e7c565b925061154b60208501610e7c565b9150604084013567ffffffffffffffff81111561156757600080fd5b611573868287016114bd565b9150509250925092565b60008060006060848603121561159257600080fd5b61159b84610e7c565b92506115a960208501610e7c565b91506115b7604085016112a6565b90509250925092565b6000806000606084860312156115d557600080fd5b6115de84610e7c565b92506115ec60208501610e7c565b9150604084013590509250925092565b6000806080838503121561160f57600080fd5b61161883610e7c565b91506110ae84602085016112ba565b60008060006060848603121561163c57600080fd5b61164584610e7c565b925061165360208501610e7c565b91506115b760408501611127565b67ffffffffffffffff8116811461167757600080fd5b50565b60008060006060848603121561168f57600080fd5b61169884610e7c565b9250602084013561154b81611661565b60005b838110156116c35781810151838201526020016116ab565b838111156116d2576000848401525b50505050565b600082516116ea8184602087016116a8565b9190910192915050565b8051600381900b81146106f957600080fd5b60006020828403121561171857600080fd5b610660826116f4565b6000604082016001600160a01b0380861684526020604081860152828651808552606087019150828801945060005b8181101561176e578551851683529483019491830191600101611750565b509098975050505050505050565b600081518084526117948160208601602086016116a8565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b8581101561185f5782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b015261182160e08b018661177c565b928601518a8403603f1901858c015292945061183d858461177c565b9501511660c098909801979097525050988501989350908401906001016117c6565b5091979650505050505050565b6001600160a01b0383168152604060208201526000825161016060408401526118996101a084018261177c565b90506020840151603f19808584030160608601526118b7838361177c565b9250604086015191506118d560808601836001600160a01b03169052565b60608601519150808584030160a08601526118f0838361177c565b92506080860151915061190760c086018315159052565b60a0860151915061191d60e086018360070b9052565b60c086015191506101006119348187018415159052565b60e08701519250818685030161012087015261195084846117a8565b90870151805163ffffffff90811661014089015260208201516001600160a01b031661016089015260408201511661018088015290935091506119909050565b50949350505050565b6001600160a01b03831681526040602082015260006119bb60408301846117a8565b949350505050565b600081518084526020808501945080840160005b838110156119f657815160070b875295820195908201906001016119d7565b509495945050505050565b60006001600160a01b03808616835280851660208401525060606040830152611a2d60608301846119c3565b95945050505050565b6001600160a01b0383168152608081016106606020830184805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b6001600160a01b038416815267ffffffffffffffff83166020820152606060408201526000611a2d60608301846119c3565b60008060408385031215611abe57600080fd5b611ac7836116f4565b91506020830151611ad781611661565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122087586ca0a7160525c6c431002299aa2c56fdc18821b40b51869244c3195d86bc64736f6c63430008090033", + "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55611b19806101276000396000f3fe608060405234801561001057600080fd5b50600436106101475760003560e01c8063815228c0116100c8578063eac6f3fe1161008c578063f7be342511610066578063f7be3425146102e0578063f848fec4146102f3578063fad0038a1461030657600080fd5b8063eac6f3fe1461028f578063f25b1200146102a2578063f52177ee146102b557600080fd5b8063815228c0146102305780639b23d3d914610243578063a345f7bd14610256578063b26d33cb14610269578063df6c06f51461027c57600080fd5b80632eecbca31161010f5780632eecbca3146101d157806336348de3146101e45780634d8f27c9146101f757806356af84031461020a5780637d3e5da81461021d57600080fd5b806311e1fc071461014c57806315dacbea146101775780632abf6c551461018a5780632b256ec8146101ab5780632d73bb2e146101be575b600080fd5b61015f61015a366004610e8b565b610319565b60405160079190910b81526020015b60405180910390f35b61015f610185366004610e8b565b61040b565b61019d610198366004610fb1565b6104c7565b60405190815260200161016e565b61019d6101b9366004611061565b61050f565b61019d6101cc36600461107c565b61058a565b61015f6101df36600461107c565b6105ba565b61019d6101f236600461131d565b6105ff565b61015f610205366004611463565b61060b565b61019d610218366004611515565b610617565b61019d61022b36600461107c565b610661565b61019d61023e366004611573565b61066d565b61015f610251366004610e8b565b610679565b61019d610264366004611061565b6106be565b61019d61027736600461107c565b610704565b61019d61028a36600461159e565b610710565b61015f61029d366004610e8b565b61071d565b61019d6102b03660046115da565b610762565b6102c86102c336600461161d565b61076f565b6040805192835260079190910b60208301520161016e565b61019d6102ee366004611061565b6107b8565b61019d61030136600461159e565b61082a565b61019d61031436600461164b565b610837565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161039891906116c2565b600060405180830381855af49150503d80600081146103d3576040519150601f19603f3d011682016040523d82523d6000602084013e6103d8565b606091505b5091509150816103e95760156103fd565b808060200190518101906103fd91906116f0565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161048a91906116c2565b6000604051808303816000865af19150503d80600081146103d3576040519150601f19603f3d011682016040523d82523d6000602084013e6103d8565b60006104d38383610844565b9050600080516020611ac4833981519152816040516104f491815260200190565b60405180910390a16016811461050957600080fd5b92915050565b600061051a82610921565b9050600080516020611ac48339815191528160405161053b91815260200190565b60405180910390a16016811461055057600080fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b600061059683836109fb565b60070b9050600080516020611ac4833981519152816040516104f491815260200190565b60006105c68383610a31565b604051600782900b8152909150600080516020611ac48339815191529060200160405180910390a1600781900b60161461050957600080fd5b60006104d38383610a67565b60006105c68383610a93565b6000610624848484610abf565b9050600080516020611ac48339815191528160405161064591815260200190565b60405180910390a16016811461065a57600080fd5b9392505050565b60006105968383610b9f565b60006104d38383610bd5565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161044c565b60006106c982610c01565b9050600080516020611ac4833981519152816040516106ea91815260200190565b60405180910390a1601681146106ff57600080fd5b919050565b60006104d38383610c2f565b6000610624848484610c65565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a40161035a565b6000610624848484610ca2565b60008061077d858585610ce0565b6040518281529193509150600080516020611ac48339815191529060200160405180910390a1601682146107b057600080fd5b935093915050565b60006107c382610dc9565b9050600080516020611ac4833981519152816040516107e491815260200190565b60405180910390a1601681146107f957600080fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d29060200161057d565b6000610624848484610df7565b6000610624848484610e34565b60008060006101676001600160a01b03166378b6391860e01b868660405160240161087092919061170b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108ae91906116c2565b6000604051808303816000865af19150503d80600081146108eb576040519150601f19603f3d011682016040523d82523d6000602084013e6108f0565b606091505b509150915081610901576015610915565b8080602001905181019061091591906116f0565b60030b95945050505050565b6040516001600160a01b03821660248201526000908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161098991906116c2565b6000604051808303816000865af19150503d80600081146109c6576040519150601f19603f3d011682016040523d82523d6000602084013e6109cb565b606091505b5091509150816109dc5760156109f0565b808060200190518101906109f091906116f0565b60030b949350505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906352f9138760e01b90606401610870565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063af99c63360e01b90606401610870565b60008060006101676001600160a01b0316637d305cfa60e01b8686604051602401610870929190611856565b60008060006101676001600160a01b0316636fc3cbaf60e01b8686604051602401610870929190611981565b60008060006101676001600160a01b031663f7f38e2660e01b878787604051602401610aed939291906119e9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b2b91906116c2565b6000604051808303816000865af19150503d8060008114610b68576040519150601f19603f3d011682016040523d82523d6000602084013e610b6d565b606091505b509150915081610b7e576015610b92565b80806020019051810190610b9291906116f0565b60030b9695505050505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906316e3e16160e21b90606401610870565b60008060006101676001600160a01b031663d27be6cd60e01b8686604051602401610870929190611a1e565b6040516001600160a01b03821660248201526000908190819061016790637834fb8960e11b9060440161094b565b6040516001600160a01b038381166024830152821660448201526000908190819061016790630132f29d60e31b90606401610870565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b90608401610aed565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b90608401610aed565b6000806000806101676001600160a01b031663d6910d0660e01b888888604051602401610d0f93929190611a61565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d4d91906116c2565b6000604051808303816000865af19150503d8060008114610d8a576040519150601f19603f3d011682016040523d82523d6000602084013e610d8f565b606091505b509150915081610da25760156000610db6565b80806020019051810190610db69190611a8c565b60039190910b9890975095505050505050565b6040516001600160a01b03821660248201526000908190819061016790633b3bff0f60e01b9060440161094b565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b90608401610aed565b6040516001600160a01b03848116602483015283166044820152600782900b6064820152600090819081906101679063efef57f960e01b90608401610aed565b80356001600160a01b03811681146106ff57600080fd5b60008060008060808587031215610ea157600080fd5b610eaa85610e74565b9350610eb860208601610e74565b9250610ec660408601610e74565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f0f57610f0f610ed6565b60405290565b60405160a0810167ffffffffffffffff81118282101715610f0f57610f0f610ed6565b604051610120810167ffffffffffffffff81118282101715610f0f57610f0f610ed6565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8557610f85610ed6565b604052919050565b600067ffffffffffffffff821115610fa757610fa7610ed6565b5060051b60200190565b60008060408385031215610fc457600080fd5b610fcd83610e74565b915060208084013567ffffffffffffffff811115610fea57600080fd5b8401601f81018613610ffb57600080fd5b803561100e61100982610f8d565b610f5c565b81815260059190911b8201830190838101908883111561102d57600080fd5b928401925b828410156110525761104384610e74565b82529284019290840190611032565b80955050505050509250929050565b60006020828403121561107357600080fd5b61065a82610e74565b6000806040838503121561108f57600080fd5b61109883610e74565b91506110a660208401610e74565b90509250929050565b600082601f8301126110c057600080fd5b813567ffffffffffffffff8111156110da576110da610ed6565b6110ed601f8201601f1916602001610f5c565b81815284602083860101111561110257600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146106ff57600080fd5b8060070b811461113e57600080fd5b50565b80356106ff8161112f565b600082601f83011261115d57600080fd5b8135602061116d61100983610f8d565b82815260059290921b8401810191818101908684111561118c57600080fd5b8286015b8481101561129e57803567ffffffffffffffff808211156111b057600080fd5b908801906040601f19838c0381018213156111ca57600080fd5b6111d2610eec565b88850135815282850135848111156111e957600080fd5b949094019360a0858e03830112156112015760008081fd5b611209610f15565b915061121689860161111f565b8252611223838601610e74565b898301526060808601358581111561123b5760008081fd5b6112498f8c838a01016110af565b85850152506080935083860135858111156112645760008081fd5b6112728f8c838a01016110af565b82850152505061128460a08601610e74565b928201929092528188015285525050918301918301611190565b509695505050505050565b6000606082840312156112bb57600080fd5b6040516060810181811067ffffffffffffffff821117156112de576112de610ed6565b60405290508082356112ef8161112f565b81526112fd60208401610e74565b602082015260408301356113108161112f565b6040919091015292915050565b6000806040838503121561133057600080fd5b61133983610e74565b9150602083013567ffffffffffffffff8082111561135657600080fd5b90840190610160828703121561136b57600080fd5b611373610f38565b82358281111561138257600080fd5b61138e888286016110af565b8252506020830135828111156113a357600080fd5b6113af888286016110af565b6020830152506113c160408401610e74565b60408201526060830135828111156113d857600080fd5b6113e4888286016110af565b6060830152506113f66080840161111f565b608082015261140760a08401611141565b60a082015261141860c0840161111f565b60c082015260e08301358281111561142f57600080fd5b61143b8882860161114c565b60e0830152506101009150611452878385016112a9565b828201528093505050509250929050565b6000806040838503121561147657600080fd5b61147f83610e74565b9150602083013567ffffffffffffffff81111561149b57600080fd5b6114a78582860161114c565b9150509250929050565b600082601f8301126114c257600080fd5b813560206114d261100983610f8d565b82815260059290921b840181019181810190868411156114f157600080fd5b8286015b8481101561129e5780356115088161112f565b83529183019183016114f5565b60008060006060848603121561152a57600080fd5b61153384610e74565b925061154160208501610e74565b9150604084013567ffffffffffffffff81111561155d57600080fd5b611569868287016114b1565b9150509250925092565b6000806080838503121561158657600080fd5b61158f83610e74565b91506110a684602085016112a9565b6000806000606084860312156115b357600080fd5b6115bc84610e74565b92506115ca60208501610e74565b9150604084013590509250925092565b6000806000606084860312156115ef57600080fd5b6115f884610e74565b925061160660208501610e74565b91506116146040850161111f565b90509250925092565b60008060006060848603121561163257600080fd5b61163b84610e74565b925060208401356115418161112f565b60008060006060848603121561166057600080fd5b61166984610e74565b925061167760208501610e74565b915060408401356116878161112f565b809150509250925092565b60005b838110156116ad578181015183820152602001611695565b838111156116bc576000848401525b50505050565b600082516116d4818460208701611692565b9190910192915050565b8051600381900b81146106ff57600080fd5b60006020828403121561170257600080fd5b61065a826116de565b6000604082016001600160a01b0380861684526020604081860152828651808552606087019150828801945060005b8181101561175857855185168352948301949183019160010161173a565b509098975050505050505050565b6000815180845261177e816020860160208601611692565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156118495782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b015261180b60e08b0186611766565b928601518a8403603f1901858c01529294506118278584611766565b9501511660c098909801979097525050988501989350908401906001016117b0565b5091979650505050505050565b6001600160a01b0383168152604060208201526000825161016060408401526118836101a0840182611766565b90506020840151603f19808584030160608601526118a18383611766565b9250604086015191506118bf60808601836001600160a01b03169052565b60608601519150808584030160a08601526118da8383611766565b9250608086015191506118f160c086018315159052565b60a0860151915061190760e086018360070b9052565b60c0860151915061010061191e8187018415159052565b60e08701519250818685030161012087015261193a8484611792565b908701518051600790810b61014089015260208201516001600160a01b03166101608901526040820151900b61018088015290935091506119789050565b50949350505050565b6001600160a01b03831681526040602082015260006119a36040830184611792565b949350505050565b600081518084526020808501945080840160005b838110156119de57815160070b875295820195908201906001016119bf565b509495945050505050565b60006001600160a01b03808616835280851660208401525060606040830152611a1560608301846119ab565b95945050505050565b6001600160a01b03831681526080810161065a6020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b6001600160a01b03841681528260070b6020820152606060408201526000611a1560608301846119ab565b60008060408385031215611a9f57600080fd5b611aa8836116de565b91506020830151611ab88161112f565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa26469706673582212208ab31749a92e75feb5510da87bec4d150999a0aa3431b37994a4b90d7e1164a664736f6c63430008090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101475760003560e01c8063815228c0116100c8578063eac6f3fe1161008c578063f7be342511610066578063f7be3425146102e0578063f848fec4146102f3578063fad0038a1461030657600080fd5b8063eac6f3fe1461028f578063f25b1200146102a2578063f52177ee146102b557600080fd5b8063815228c0146102305780639b23d3d914610243578063a345f7bd14610256578063b26d33cb14610269578063df6c06f51461027c57600080fd5b80632eecbca31161010f5780632eecbca3146101d157806336348de3146101e45780634d8f27c9146101f757806356af84031461020a5780637d3e5da81461021d57600080fd5b806311e1fc071461014c57806315dacbea146101775780632abf6c551461018a5780632b256ec8146101ab5780632d73bb2e146101be575b600080fd5b61015f61015a366004610e8b565b610319565b60405160079190910b81526020015b60405180910390f35b61015f610185366004610e8b565b61040b565b61019d610198366004610fb1565b6104c7565b60405190815260200161016e565b61019d6101b9366004611061565b61050f565b61019d6101cc36600461107c565b61058a565b61015f6101df36600461107c565b6105ba565b61019d6101f236600461131d565b6105ff565b61015f610205366004611463565b61060b565b61019d610218366004611515565b610617565b61019d61022b36600461107c565b610661565b61019d61023e366004611573565b61066d565b61015f610251366004610e8b565b610679565b61019d610264366004611061565b6106be565b61019d61027736600461107c565b610704565b61019d61028a36600461159e565b610710565b61015f61029d366004610e8b565b61071d565b61019d6102b03660046115da565b610762565b6102c86102c336600461161d565b61076f565b6040805192835260079190910b60208301520161016e565b61019d6102ee366004611061565b6107b8565b61019d61030136600461159e565b61082a565b61019d61031436600461164b565b610837565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161039891906116c2565b600060405180830381855af49150503d80600081146103d3576040519150601f19603f3d011682016040523d82523d6000602084013e6103d8565b606091505b5091509150816103e95760156103fd565b808060200190518101906103fd91906116f0565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161048a91906116c2565b6000604051808303816000865af19150503d80600081146103d3576040519150601f19603f3d011682016040523d82523d6000602084013e6103d8565b60006104d38383610844565b9050600080516020611ac4833981519152816040516104f491815260200190565b60405180910390a16016811461050957600080fd5b92915050565b600061051a82610921565b9050600080516020611ac48339815191528160405161053b91815260200190565b60405180910390a16016811461055057600080fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b600061059683836109fb565b60070b9050600080516020611ac4833981519152816040516104f491815260200190565b60006105c68383610a31565b604051600782900b8152909150600080516020611ac48339815191529060200160405180910390a1600781900b60161461050957600080fd5b60006104d38383610a67565b60006105c68383610a93565b6000610624848484610abf565b9050600080516020611ac48339815191528160405161064591815260200190565b60405180910390a16016811461065a57600080fd5b9392505050565b60006105968383610b9f565b60006104d38383610bd5565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161044c565b60006106c982610c01565b9050600080516020611ac4833981519152816040516106ea91815260200190565b60405180910390a1601681146106ff57600080fd5b919050565b60006104d38383610c2f565b6000610624848484610c65565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a40161035a565b6000610624848484610ca2565b60008061077d858585610ce0565b6040518281529193509150600080516020611ac48339815191529060200160405180910390a1601682146107b057600080fd5b935093915050565b60006107c382610dc9565b9050600080516020611ac4833981519152816040516107e491815260200190565b60405180910390a1601681146107f957600080fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d29060200161057d565b6000610624848484610df7565b6000610624848484610e34565b60008060006101676001600160a01b03166378b6391860e01b868660405160240161087092919061170b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516108ae91906116c2565b6000604051808303816000865af19150503d80600081146108eb576040519150601f19603f3d011682016040523d82523d6000602084013e6108f0565b606091505b509150915081610901576015610915565b8080602001905181019061091591906116f0565b60030b95945050505050565b6040516001600160a01b03821660248201526000908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161098991906116c2565b6000604051808303816000865af19150503d80600081146109c6576040519150601f19603f3d011682016040523d82523d6000602084013e6109cb565b606091505b5091509150816109dc5760156109f0565b808060200190518101906109f091906116f0565b60030b949350505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906352f9138760e01b90606401610870565b6040516001600160a01b03838116602483015282166044820152600090819081906101679063af99c63360e01b90606401610870565b60008060006101676001600160a01b0316637d305cfa60e01b8686604051602401610870929190611856565b60008060006101676001600160a01b0316636fc3cbaf60e01b8686604051602401610870929190611981565b60008060006101676001600160a01b031663f7f38e2660e01b878787604051602401610aed939291906119e9565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b2b91906116c2565b6000604051808303816000865af19150503d8060008114610b68576040519150601f19603f3d011682016040523d82523d6000602084013e610b6d565b606091505b509150915081610b7e576015610b92565b80806020019051810190610b9291906116f0565b60030b9695505050505050565b6040516001600160a01b0383811660248301528216604482015260009081908190610167906316e3e16160e21b90606401610870565b60008060006101676001600160a01b031663d27be6cd60e01b8686604051602401610870929190611a1e565b6040516001600160a01b03821660248201526000908190819061016790637834fb8960e11b9060440161094b565b6040516001600160a01b038381166024830152821660448201526000908190819061016790630132f29d60e31b90606401610870565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b90608401610aed565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b90608401610aed565b6000806000806101676001600160a01b031663d6910d0660e01b888888604051602401610d0f93929190611a61565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d4d91906116c2565b6000604051808303816000865af19150503d8060008114610d8a576040519150601f19603f3d011682016040523d82523d6000602084013e610d8f565b606091505b509150915081610da25760156000610db6565b80806020019051810190610db69190611a8c565b60039190910b9890975095505050505050565b6040516001600160a01b03821660248201526000908190819061016790633b3bff0f60e01b9060440161094b565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b90608401610aed565b6040516001600160a01b03848116602483015283166044820152600782900b6064820152600090819081906101679063efef57f960e01b90608401610aed565b80356001600160a01b03811681146106ff57600080fd5b60008060008060808587031215610ea157600080fd5b610eaa85610e74565b9350610eb860208601610e74565b9250610ec660408601610e74565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f0f57610f0f610ed6565b60405290565b60405160a0810167ffffffffffffffff81118282101715610f0f57610f0f610ed6565b604051610120810167ffffffffffffffff81118282101715610f0f57610f0f610ed6565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8557610f85610ed6565b604052919050565b600067ffffffffffffffff821115610fa757610fa7610ed6565b5060051b60200190565b60008060408385031215610fc457600080fd5b610fcd83610e74565b915060208084013567ffffffffffffffff811115610fea57600080fd5b8401601f81018613610ffb57600080fd5b803561100e61100982610f8d565b610f5c565b81815260059190911b8201830190838101908883111561102d57600080fd5b928401925b828410156110525761104384610e74565b82529284019290840190611032565b80955050505050509250929050565b60006020828403121561107357600080fd5b61065a82610e74565b6000806040838503121561108f57600080fd5b61109883610e74565b91506110a660208401610e74565b90509250929050565b600082601f8301126110c057600080fd5b813567ffffffffffffffff8111156110da576110da610ed6565b6110ed601f8201601f1916602001610f5c565b81815284602083860101111561110257600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146106ff57600080fd5b8060070b811461113e57600080fd5b50565b80356106ff8161112f565b600082601f83011261115d57600080fd5b8135602061116d61100983610f8d565b82815260059290921b8401810191818101908684111561118c57600080fd5b8286015b8481101561129e57803567ffffffffffffffff808211156111b057600080fd5b908801906040601f19838c0381018213156111ca57600080fd5b6111d2610eec565b88850135815282850135848111156111e957600080fd5b949094019360a0858e03830112156112015760008081fd5b611209610f15565b915061121689860161111f565b8252611223838601610e74565b898301526060808601358581111561123b5760008081fd5b6112498f8c838a01016110af565b85850152506080935083860135858111156112645760008081fd5b6112728f8c838a01016110af565b82850152505061128460a08601610e74565b928201929092528188015285525050918301918301611190565b509695505050505050565b6000606082840312156112bb57600080fd5b6040516060810181811067ffffffffffffffff821117156112de576112de610ed6565b60405290508082356112ef8161112f565b81526112fd60208401610e74565b602082015260408301356113108161112f565b6040919091015292915050565b6000806040838503121561133057600080fd5b61133983610e74565b9150602083013567ffffffffffffffff8082111561135657600080fd5b90840190610160828703121561136b57600080fd5b611373610f38565b82358281111561138257600080fd5b61138e888286016110af565b8252506020830135828111156113a357600080fd5b6113af888286016110af565b6020830152506113c160408401610e74565b60408201526060830135828111156113d857600080fd5b6113e4888286016110af565b6060830152506113f66080840161111f565b608082015261140760a08401611141565b60a082015261141860c0840161111f565b60c082015260e08301358281111561142f57600080fd5b61143b8882860161114c565b60e0830152506101009150611452878385016112a9565b828201528093505050509250929050565b6000806040838503121561147657600080fd5b61147f83610e74565b9150602083013567ffffffffffffffff81111561149b57600080fd5b6114a78582860161114c565b9150509250929050565b600082601f8301126114c257600080fd5b813560206114d261100983610f8d565b82815260059290921b840181019181810190868411156114f157600080fd5b8286015b8481101561129e5780356115088161112f565b83529183019183016114f5565b60008060006060848603121561152a57600080fd5b61153384610e74565b925061154160208501610e74565b9150604084013567ffffffffffffffff81111561155d57600080fd5b611569868287016114b1565b9150509250925092565b6000806080838503121561158657600080fd5b61158f83610e74565b91506110a684602085016112a9565b6000806000606084860312156115b357600080fd5b6115bc84610e74565b92506115ca60208501610e74565b9150604084013590509250925092565b6000806000606084860312156115ef57600080fd5b6115f884610e74565b925061160660208501610e74565b91506116146040850161111f565b90509250925092565b60008060006060848603121561163257600080fd5b61163b84610e74565b925060208401356115418161112f565b60008060006060848603121561166057600080fd5b61166984610e74565b925061167760208501610e74565b915060408401356116878161112f565b809150509250925092565b60005b838110156116ad578181015183820152602001611695565b838111156116bc576000848401525b50505050565b600082516116d4818460208701611692565b9190910192915050565b8051600381900b81146106ff57600080fd5b60006020828403121561170257600080fd5b61065a826116de565b6000604082016001600160a01b0380861684526020604081860152828651808552606087019150828801945060005b8181101561175857855185168352948301949183019160010161173a565b509098975050505050505050565b6000815180845261177e816020860160208601611692565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156118495782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b015261180b60e08b0186611766565b928601518a8403603f1901858c01529294506118278584611766565b9501511660c098909801979097525050988501989350908401906001016117b0565b5091979650505050505050565b6001600160a01b0383168152604060208201526000825161016060408401526118836101a0840182611766565b90506020840151603f19808584030160608601526118a18383611766565b9250604086015191506118bf60808601836001600160a01b03169052565b60608601519150808584030160a08601526118da8383611766565b9250608086015191506118f160c086018315159052565b60a0860151915061190760e086018360070b9052565b60c0860151915061010061191e8187018415159052565b60e08701519250818685030161012087015261193a8484611792565b908701518051600790810b61014089015260208201516001600160a01b03166101608901526040820151900b61018088015290935091506119789050565b50949350505050565b6001600160a01b03831681526040602082015260006119a36040830184611792565b949350505050565b600081518084526020808501945080840160005b838110156119de57815160070b875295820195908201906001016119bf565b509495945050505050565b60006001600160a01b03808616835280851660208401525060606040830152611a1560608301846119ab565b95945050505050565b6001600160a01b03831681526080810161065a6020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b6001600160a01b03841681528260070b6020820152606060408201526000611a1560608301846119ab565b60008060408385031215611a9f57600080fd5b611aa8836116de565b91506020830151611ab88161112f565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa26469706673582212208ab31749a92e75feb5510da87bec4d150999a0aa3431b37994a4b90d7e1164a664736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/hts-precompile/examples/token-query/TokenQueryContract.sol/TokenQueryContract.json b/artifacts/contracts/hts-precompile/examples/token-query/TokenQueryContract.sol/TokenQueryContract.json index c44348fd3..63312dd7c 100644 --- a/artifacts/contracts/hts-precompile/examples/token-query/TokenQueryContract.sol/TokenQueryContract.json +++ b/artifacts/contracts/hts-precompile/examples/token-query/TokenQueryContract.sol/TokenQueryContract.json @@ -146,9 +146,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -156,9 +156,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -171,9 +171,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -193,9 +193,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -225,24 +225,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -262,19 +262,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -307,9 +307,9 @@ "type": "tuple" }, { - "internalType": "uint32", + "internalType": "int32", "name": "decimals", - "type": "uint32" + "type": "int32" } ], "indexed": false, @@ -438,9 +438,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -448,9 +448,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -463,9 +463,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -485,9 +485,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -517,24 +517,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -554,19 +554,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -652,9 +652,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -685,24 +685,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -723,19 +723,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -794,9 +794,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -804,9 +804,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "indexed": false, @@ -907,9 +907,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -917,9 +917,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -932,9 +932,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -954,9 +954,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -986,24 +986,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1023,19 +1023,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1359,9 +1359,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1369,9 +1369,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1384,9 +1384,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -1406,9 +1406,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1438,24 +1438,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1475,19 +1475,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1520,9 +1520,9 @@ "type": "tuple" }, { - "internalType": "uint32", + "internalType": "int32", "name": "decimals", - "type": "uint32" + "type": "int32" } ], "internalType": "struct IHederaTokenService.FungibleTokenInfo", @@ -1641,9 +1641,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1651,9 +1651,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1666,9 +1666,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -1688,9 +1688,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1720,24 +1720,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1757,19 +1757,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1853,9 +1853,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1885,24 +1885,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1922,19 +1922,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2026,9 +2026,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2036,9 +2036,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -2150,9 +2150,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2160,9 +2160,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -2175,9 +2175,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -2197,9 +2197,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2229,24 +2229,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -2266,19 +2266,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2579,8 +2579,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55612e4a806101276000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80635d2c5bad116100ad5780639b23d3d9116100715780639b23d3d914610300578063a3ad5b5514610313578063c0b19b6d14610326578063eac6f3fe14610347578063f2f38a741461035a57600080fd5b80635d2c5bad1461025c57806369837dc21461028c5780636a4dde21146102ad57806386f88d88146102c05780638c99ef5d146102d357600080fd5b806319db44b6116100f457806319db44b6146101ad5780633eed2c39146101dd5780634cbdb37b146101f05780635a5e6c31146102115780635b9076b71461023957600080fd5b806311e1fc071461012657806313c05dd81461015157806315dacbea146101795780631955de0b1461018c575b600080fd5b61013961013436600461197b565b61037b565b60405160079190910b81526020015b60405180910390f35b61016461015f3660046119cc565b61046d565b60408051928352901515602083015201610148565b61013961018736600461197b565b6104eb565b61019f61019a366004611a17565b6105a7565b604051610148929190611b0a565b6101c06101bb366004611a17565b610656565b604080519283526001600160a01b03909116602083015201610148565b6101646101eb366004611b2e565b6106cf565b6102036101fe366004611b61565b610749565b604051610148929190611fd8565b61022461021f3660046119cc565b6107bf565b60408051928352602083019190915201610148565b61024c610247366004611b2e565b610830565b6040516101489493929190611ff1565b61026f61026a366004611b2e565b6108c2565b6040805160079390930b835260039190910b602083015201610148565b61029f61029a366004611b2e565b61093d565b60405161014892919061206d565b6101646102bb366004612086565b6109b2565b6101646102ce366004611b2e565b610a29565b6102e66102e1366004611b2e565b610a9a565b6040805160079390930b8352901515602083015201610148565b61013961030e36600461197b565b610b13565b6102e6610321366004612086565b610b58565b610339610334366004611b2e565b610bd2565b6040516101489291906120b4565b61013961035536600461197b565b610c59565b61036d610368366004611b2e565b610c9e565b6040516101489291906120ee565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103fa9190612107565b600060405180830381855af49150503d8060008114610435576040519150601f19603f3d011682016040523d82523d6000602084013e61043a565b606091505b50915091508161044b57601561045f565b8080602001905181019061045f919061213a565b60030b979650505050505050565b60008061047b858585610d13565b6040518281529193509150600080516020612df58339815191529060200160405180910390a1601682146104ae57600080fd5b60405181151581527e1c2e72360171244b3bb8cc8ddd767820edf37138ad6f129fb3574b407c307d906020015b60405180910390a1935093915050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161056a9190612107565b6000604051808303816000865af19150503d8060008114610435576040519150601f19603f3d011682016040523d82523d6000602084013e61043a565b6040805160a081018252600080825260208201819052606092820183905282820192909252608081018290526105dd8484610df9565b604051600783900b81529193509150600080516020612df58339815191529060200160405180910390a1600782900b60161461061857600080fd5b7faed084fbdf29b6ba2242463299d7270f64e0f8ced16013cfff249856bd887157816040516106479190612155565b60405180910390a19250929050565b6000806106638484610f2a565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461069657600080fd5b6040516001600160a01b03821681527fc2c78c7c31baf14949e75c51df12be56edb9af523cf82839c2869bbcf13b3ecb90602001610647565b6000806106db83611003565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461070e57600080fd5b60405181151581527f6b7f3306751292f85ab4161ee2b0ac16dfc8ded13e6446ce6bd859d0a2f4c78e906020015b60405180910390a1915091565b600061075361184a565b61075d84846110e7565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461079057600080fd5b7fd010ef68d3ac3e07c14bed496400730a484fd17c48a4d373cbc4722a56540def816040516106479190612168565b6000806107cd8585856111c1565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461080057600080fd5b6040518181527f25b6684a7e8fe1b676e9c39c8dd65034fbafea906d3bdfd97bf748b7b55e14c8906020016104db565b6000606080606061084085611294565b604051600785900b815293975091955093509150600080516020612df58339815191529060200160405180910390a1600784900b60161461088057600080fd5b7f2efc8334b040613a552197fe34283d6ca2909c8ffae393e128424931f20c69b38383836040516108b39392919061217b565b60405180910390a19193509193565b6000806108ce8361137b565b604051600783900b81529193509150600080516020612df58339815191529060200160405180910390a1600782900b60161461090957600080fd5b604051600382900b81527f182137409609594f2b12128230091c673507ea4cab315d59415d5e3f8c301ad59060200161073c565b6000610947611885565b6109508361143f565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461098357600080fd5b7fea9419ffbaa766adf982c4c9864330eee1d848eff36c79e510e7e589c8bb265f8160405161073c91906121b4565b6000806109bf848461150f565b60405160079290920b80835293509150600080516020612df58339815191529060200160405180910390a1601682146109f757600080fd5b60405181151581527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e90602001610647565b600080610a35836115ea565b6040518281529193509150600080516020612df58339815191529060200160405180910390a160168214610a6857600080fd5b60405181151581527f9ee19e13dfa1ba8db2502e15ff56dbecdeb0e0473323fb195473ce648030a2cd9060200161073c565b600080610aa68361161a565b604051600783900b81529193509150600080516020612df58339815191529060200160405180910390a1600782900b601614610ae157600080fd5b60405181151581527f5080c42cc33acbcea410fa6eaa925bd878674825501981184fdd53749f8478a89060200161073c565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161052c565b600080610b65848461164a565b604051600783900b81529193509150600080516020612df58339815191529060200160405180910390a1600782900b601614610ba057600080fd5b60405181151581527fd24dda6928587354b65aa1a18c2eaf249bef7e5bafd2a71fac71d286f76f957f90602001610647565b60408051606081018252600080825260208201819052918101829052610bf783611682565b6040518281529193509150600080516020612df58339815191529060200160405180910390a160168214610c2a57600080fd5b7fa0a16bf9db2c17796faeca5af5aaeef8523f9d4c350c512cb00062ad89604f888160405161073c91906121c7565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4016103bc565b6000610ca86118a5565b610cb18361177a565b6040518281529193509150600080516020612df58339815191529060200160405180910390a160168214610ce457600080fd5b7fbdb65f8c2a2e9a3a37ea49e903836883766a922e4ce9b21f684035e304962d418160405161073c9190612201565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b179052905160009182918291829161016791610d7d91612107565b6000604051808303816000865af19150503d8060008114610dba576040519150601f19603f3d011682016040523d82523d6000602084013e610dbf565b606091505b509150915081610dd25760156000610de6565b80806020019051810190610de69190612224565b60039190910b9890975095505050505050565b6040805160a081018252600080825260208083018290526060838501819052808401526080830182905283516001600160a01b03871660248201526044808201879052855180830390910181526064909101855290810180516001600160e01b0316631e26e99760e11b179052925190928391829161016791610e7c9190612107565b6000604051808303816000865af19150503d8060008114610eb9576040519150601f19603f3d011682016040523d82523d6000602084013e610ebe565b606091505b5091509150610f096040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b82610f1657601581610de6565b81806020019051810190610de69190612446565b604080516001600160a01b0384166024820152604480820184905282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b179052905160009182918291829161016791610f8891612107565b6000604051808303816000865af19150503d8060008114610fc5576040519150601f19603f3d011682016040523d82523d6000602084013e610fca565b606091505b509150915081610fdd5760156000610ff1565b80806020019051810190610ff19190612494565b60039190910b97909650945050505050565b6040516001600160a01b03821660248201526000908190819081906101679063a7daa18d60e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161106d9190612107565b6000604051808303816000865af19150503d80600081146110aa576040519150601f19603f3d011682016040523d82523d6000602084013e6110af565b606091505b5091509150816110c257601560006110d6565b808060200190518101906110d69190612224565b60039190910b969095509350505050565b60006110f161184a565b604080516001600160a01b0386166024820152600785900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b179052905160009182916101679161115191612107565b6000604051808303816000865af19150503d806000811461118e576040519150601f19603f3d011682016040523d82523d6000602084013e611193565b606091505b50915091506111a061184a565b826111ad57601581610de6565b81806020019051810190610de69190612b07565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b17905290516000918291829182916101679161122b91612107565b6000604051808303816000865af19150503d8060008114611268576040519150601f19603f3d011682016040523d82523d6000602084013e61126d565b606091505b5091509150816112805760156000610de6565b80806020019051810190610de69190612bef565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b17905290516000916060918291829185918291610167916112f391612107565b6000604051808303816000865af19150503d8060008114611330576040519150601f19603f3d011682016040523d82523d6000602084013e611335565b606091505b509150915060608060608461134e576015838383611362565b838060200190518101906113629190612c1b565b60039390930b9d919c509a509098509650505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b1790529051600091829182918291610167916113d591612107565b6000604051808303816000865af19150503d8060008114611412576040519150601f19603f3d011682016040523d82523d6000602084013e611417565b606091505b50915091508161142b5760156000196110d6565b808060200190518101906110d69190612cb4565b6000611449611885565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b179052905160009182916101679161149f91612107565b6000604051808303816000865af19150503d80600081146114dc576040519150601f19603f3d011682016040523d82523d6000602084013e6114e1565b606091505b50915091506114ee611885565b826114fb57601581610ff1565b81806020019051810190610ff19190612cde565b6040516001600160a01b03838116602483015282166044820152600090819081908190610167906346de0fb160e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516115819190612107565b6000604051808303816000865af19150503d80600081146115be576040519150601f19603f3d011682016040523d82523d6000602084013e6115c3565b606091505b5091509150816115d65760156000610ff1565b80806020019051810190610ff19190612224565b6040516001600160a01b03821660248201526000908190819081906101679063335e04c160e01b9060440161102f565b6040516001600160a01b0382166024820152600090819081908190610167906319f3736160e01b9060440161102f565b6040516001600160a01b0383811660248301528216604482015260009081908190819061016790633cb0c7fd60e21b90606401611543565b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b1790529251909283918291610167916116f49190612107565b6000604051808303816000865af19150503d8060008114611731576040519150601f19603f3d011682016040523d82523d6000602084013e611736565b606091505b50604080516060810182526000808252602082018190529181019190915291935091508261176657601581610ff1565b81806020019051810190610ff19190612d85565b60006117846118a5565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291610167916117da91612107565b6000604051808303816000865af19150503d8060008114611817576040519150601f19603f3d011682016040523d82523d6000602084013e61181c565b606091505b50915091506118296118a5565b8261183657601581610ff1565b81806020019051810190610ff19190612db0565b6040518060c0016040528061185d6118a5565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60405180604001604052806118986118a5565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e0840181905261020084018390528451928301855280835260208301819052938201939093526102208201529081908152602001600067ffffffffffffffff168152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038116811461197857600080fd5b50565b6000806000806080858703121561199157600080fd5b843561199c81611963565b935060208501356119ac81611963565b925060408501356119bc81611963565b9396929550929360600135925050565b6000806000606084860312156119e157600080fd5b83356119ec81611963565b925060208401356119fc81611963565b91506040840135611a0c81611963565b809150509250925092565b60008060408385031215611a2a57600080fd5b8235611a3581611963565b946020939093013593505050565b60005b83811015611a5e578181015183820152602001611a46565b83811115611a6d576000848401525b50505050565b60008151808452611a8b816020860160208601611a43565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a06040860152611ad760a0860183611a73565b915060608401518583036060870152611af08382611a73565b925050806080850151166080860152508091505092915050565b8260070b8152604060208201526000611b266040830184611a9f565b949350505050565b600060208284031215611b4057600080fd5b8135611b4b81611963565b9392505050565b8060070b811461197857600080fd5b60008060408385031215611b7457600080fd5b8235611b7f81611963565b91506020830135611b8f81611b52565b809150509250929050565b600081518084526020808501808196508360051b8101915082860160005b85811015611bf65782840389528151805185528501516040868601819052611be281870183611a9f565b9a87019a9550505090840190600101611bb8565b5091979650505050505050565b60006101608251818552611c1982860182611a73565b91505060208301518482036020860152611c338282611a73565b9150506040830151611c5060408601826001600160a01b03169052565b5060608301518482036060860152611c688282611a73565b9150506080830151611c7e608086018215159052565b5060a0830151611c9360a086018260070b9052565b5060c0830151611ca760c086018215159052565b5060e083015184820360e0860152611cbf8282611b9a565b61010085810151805163ffffffff9081168984015260208201516001600160a01b03166101208a015260408201511661014089015291935091505090949350505050565b600081518084526020808501945080840160005b83811015611d73578151805163ffffffff168852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611d17565b509495945050505050565b600081518084526020808501945080840160005b83811015611d73578151805163ffffffff9081168952848201518116858a01526040808301518216908a01526060808301519091169089015260808082015115159089015260a0908101516001600160a01b03169088015260c09096019590820190600101611d92565b600081518084526020808501945080840160005b83811015611d73578151805163ffffffff9081168952848201518116858a0152604080830151909116908901526060808201516001600160a01b03908116918a01919091526080808301511515908a015260a091820151169088015260c09096019590820190600101611e10565b60006101208251818552611e9482860182611c03565b9150506020830151611eb2602086018267ffffffffffffffff169052565b506040830151611ec6604086018215159052565b506060830151611eda606086018215159052565b506080830151611eee608086018215159052565b5060a083015184820360a0860152611f068282611d03565b91505060c083015184820360c0860152611f208282611d7e565b91505060e083015184820360e0860152611f3a8282611dfc565b9150506101008084015185830382870152611f558382611a73565b9695505050505050565b6000815160c08452611f7460c0850182611e7e565b9050602083015160070b602085015260408301516001600160a01b038082166040870152606085015160070b6060870152608085015191508583036080870152611fbe8383611a73565b92508060a08601511660a087015250508091505092915050565b828152604060208201526000611b266040830184611f5f565b8460070b815260806020820152600061200d6080830186611d03565b828103604084015261201f8186611d7e565b905082810360608401526120338185611dfc565b979650505050505050565b60008151604084526120536040850182611e7e565b60209384015163ffffffff16949093019390935250919050565b828152604060208201526000611b26604083018461203e565b6000806040838503121561209957600080fd5b82356120a481611963565b91506020830135611b8f81611963565b82815260808101611b4b6020830184805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b828152604060208201526000611b266040830184611e7e565b60008251612119818460208701611a43565b9190910192915050565b8051600381900b811461213557600080fd5b919050565b60006020828403121561214c57600080fd5b611b4b82612123565b602081526000611b4b6020830184611a9f565b602081526000611b4b6020830184611f5f565b60608152600061218e6060830186611d03565b82810360208401526121a08186611d7e565b90508281036040840152611f558185611dfc565b602081526000611b4b602083018461203e565b606081016121fb8284805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b92915050565b602081526000611b4b6020830184611e7e565b8051801515811461213557600080fd5b6000806040838503121561223757600080fd5b61224083612123565b915061224e60208401612214565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561229057612290612257565b60405290565b6040805190810167ffffffffffffffff8111828210171561229057612290612257565b604051610120810167ffffffffffffffff8111828210171561229057612290612257565b60405160c0810167ffffffffffffffff8111828210171561229057612290612257565b604051601f8201601f1916810167ffffffffffffffff8111828210171561232957612329612257565b604052919050565b805161213581611963565b600082601f83011261234d57600080fd5b815167ffffffffffffffff81111561236757612367612257565b61237a601f8201601f1916602001612300565b81815284602083860101111561238f57600080fd5b611b26826020830160208701611a43565b600060a082840312156123b257600080fd5b6123ba61226d565b90506123c582612214565b815260208201516123d581611963565b6020820152604082015167ffffffffffffffff808211156123f557600080fd5b6124018583860161233c565b6040840152606084015191508082111561241a57600080fd5b506124278482850161233c565b606083015250608082015161243b81611963565b608082015292915050565b6000806040838503121561245957600080fd5b61246283612123565b9150602083015167ffffffffffffffff81111561247e57600080fd5b61248a858286016123a0565b9150509250929050565b600080604083850312156124a757600080fd5b6124b083612123565b91506020830151611b8f81611963565b805161213581611b52565b600067ffffffffffffffff8211156124e5576124e5612257565b5060051b60200190565b600082601f83011261250057600080fd5b81516020612515612510836124cb565b612300565b82815260059290921b8401810191818101908684111561253457600080fd5b8286015b848110156125b657805167ffffffffffffffff808211156125595760008081fd5b908801906040828b03601f19018113156125735760008081fd5b61257b612296565b8388015181529083015190828211156125945760008081fd5b6125a28c89848701016123a0565b818901528652505050918301918301612538565b509695505050505050565b805163ffffffff8116811461213557600080fd5b6000606082840312156125e757600080fd5b6040516060810181811067ffffffffffffffff8211171561260a5761260a612257565b604052905080612619836125c1565b8152602083015161262981611963565b602082015261263a604084016125c1565b60408201525092915050565b6000610160828403121561265957600080fd5b6126616122b9565b9050815167ffffffffffffffff8082111561267b57600080fd5b6126878583860161233c565b8352602084015191508082111561269d57600080fd5b6126a98583860161233c565b60208401526126ba60408501612331565b604084015260608401519150808211156126d357600080fd5b6126df8583860161233c565b60608401526126f060808501612214565b608084015261270160a085016124c0565b60a084015261271260c08501612214565b60c084015260e084015191508082111561272b57600080fd5b50612738848285016124ef565b60e08301525061010061274d848285016125d5565b9082015292915050565b805167ffffffffffffffff8116811461213557600080fd5b600082601f83011261278057600080fd5b81516020612790612510836124cb565b82815260a092830285018201928282019190878511156127af57600080fd5b8387015b858110156128315781818a0312156127cb5760008081fd5b6127d361226d565b6127dc826125c1565b8152858201516127eb81611963565b8187015260406127fc838201612214565b90820152606061280d838201612214565b9082015260808281015161282081611963565b9082015284529284019281016127b3565b5090979650505050505050565b600082601f83011261284f57600080fd5b8151602061285f612510836124cb565b82815260c0928302850182019282820191908785111561287e57600080fd5b8387015b858110156128315781818a03121561289a5760008081fd5b6128a26122dd565b6128ab826125c1565b81526128b88683016125c1565b8682015260406128c98184016125c1565b9082015260606128da8382016125c1565b9082015260806128eb838201612214565b9082015260a0828101516128fe81611963565b908201528452928401928101612882565b600082601f83011261292057600080fd5b81516020612930612510836124cb565b82815260c0928302850182019282820191908785111561294f57600080fd5b8387015b858110156128315781818a03121561296b5760008081fd5b6129736122dd565b61297c826125c1565b81526129898683016125c1565b86820152604061299a8184016125c1565b908201526060828101516129ad81611963565b9082015260806129be838201612214565b9082015260a0828101516129d181611963565b908201528452928401928101612953565b600061012082840312156129f557600080fd5b6129fd6122b9565b9050815167ffffffffffffffff80821115612a1757600080fd5b612a2385838601612646565b8352612a3160208501612757565b6020840152612a4260408501612214565b6040840152612a5360608501612214565b6060840152612a6460808501612214565b608084015260a0840151915080821115612a7d57600080fd5b612a898583860161276f565b60a084015260c0840151915080821115612aa257600080fd5b612aae8583860161283e565b60c084015260e0840151915080821115612ac757600080fd5b612ad38583860161290f565b60e084015261010091508184015181811115612aee57600080fd5b612afa8682870161233c565b8385015250505092915050565b60008060408385031215612b1a57600080fd5b612b2383612123565b9150602083015167ffffffffffffffff80821115612b4057600080fd5b9084019060c08287031215612b5457600080fd5b612b5c6122dd565b825182811115612b6b57600080fd5b612b77888286016129e2565b825250612b86602084016124c0565b6020820152612b9760408401612331565b6040820152612ba8606084016124c0565b6060820152608083015182811115612bbf57600080fd5b612bcb8882860161233c565b608083015250612bdd60a08401612331565b60a08201528093505050509250929050565b60008060408385031215612c0257600080fd5b612c0b83612123565b9150602083015190509250929050565b60008060008060808587031215612c3157600080fd5b612c3a85612123565b9350602085015167ffffffffffffffff80821115612c5757600080fd5b612c638883890161276f565b94506040870151915080821115612c7957600080fd5b612c858883890161283e565b93506060870151915080821115612c9b57600080fd5b50612ca88782880161290f565b91505092959194509250565b60008060408385031215612cc757600080fd5b612cd083612123565b915061224e60208401612123565b60008060408385031215612cf157600080fd5b612cfa83612123565b9150602083015167ffffffffffffffff80821115612d1757600080fd5b9084019060408287031215612d2b57600080fd5b604051604081018181108382111715612d4657612d46612257565b604052825182811115612d5857600080fd5b612d64888286016129e2565b825250612d73602084016125c1565b60208201528093505050509250929050565b60008060808385031215612d9857600080fd5b612da183612123565b915061224e84602085016125d5565b60008060408385031215612dc357600080fd5b612dcc83612123565b9150602083015167ffffffffffffffff811115612de857600080fd5b61248a858286016129e256fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122008044451f6deee0b71bb727c6e7d5e6a3e42b1e8ef1f4bbbe316cf7dee27854e64736f6c63430008090033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80635d2c5bad116100ad5780639b23d3d9116100715780639b23d3d914610300578063a3ad5b5514610313578063c0b19b6d14610326578063eac6f3fe14610347578063f2f38a741461035a57600080fd5b80635d2c5bad1461025c57806369837dc21461028c5780636a4dde21146102ad57806386f88d88146102c05780638c99ef5d146102d357600080fd5b806319db44b6116100f457806319db44b6146101ad5780633eed2c39146101dd5780634cbdb37b146101f05780635a5e6c31146102115780635b9076b71461023957600080fd5b806311e1fc071461012657806313c05dd81461015157806315dacbea146101795780631955de0b1461018c575b600080fd5b61013961013436600461197b565b61037b565b60405160079190910b81526020015b60405180910390f35b61016461015f3660046119cc565b61046d565b60408051928352901515602083015201610148565b61013961018736600461197b565b6104eb565b61019f61019a366004611a17565b6105a7565b604051610148929190611b0a565b6101c06101bb366004611a17565b610656565b604080519283526001600160a01b03909116602083015201610148565b6101646101eb366004611b2e565b6106cf565b6102036101fe366004611b61565b610749565b604051610148929190611fd8565b61022461021f3660046119cc565b6107bf565b60408051928352602083019190915201610148565b61024c610247366004611b2e565b610830565b6040516101489493929190611ff1565b61026f61026a366004611b2e565b6108c2565b6040805160079390930b835260039190910b602083015201610148565b61029f61029a366004611b2e565b61093d565b60405161014892919061206d565b6101646102bb366004612086565b6109b2565b6101646102ce366004611b2e565b610a29565b6102e66102e1366004611b2e565b610a9a565b6040805160079390930b8352901515602083015201610148565b61013961030e36600461197b565b610b13565b6102e6610321366004612086565b610b58565b610339610334366004611b2e565b610bd2565b6040516101489291906120b4565b61013961035536600461197b565b610c59565b61036d610368366004611b2e565b610c9e565b6040516101489291906120ee565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103fa9190612107565b600060405180830381855af49150503d8060008114610435576040519150601f19603f3d011682016040523d82523d6000602084013e61043a565b606091505b50915091508161044b57601561045f565b8080602001905181019061045f919061213a565b60030b979650505050505050565b60008061047b858585610d13565b6040518281529193509150600080516020612df58339815191529060200160405180910390a1601682146104ae57600080fd5b60405181151581527e1c2e72360171244b3bb8cc8ddd767820edf37138ad6f129fb3574b407c307d906020015b60405180910390a1935093915050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161056a9190612107565b6000604051808303816000865af19150503d8060008114610435576040519150601f19603f3d011682016040523d82523d6000602084013e61043a565b6040805160a081018252600080825260208201819052606092820183905282820192909252608081018290526105dd8484610df9565b604051600783900b81529193509150600080516020612df58339815191529060200160405180910390a1600782900b60161461061857600080fd5b7faed084fbdf29b6ba2242463299d7270f64e0f8ced16013cfff249856bd887157816040516106479190612155565b60405180910390a19250929050565b6000806106638484610f2a565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461069657600080fd5b6040516001600160a01b03821681527fc2c78c7c31baf14949e75c51df12be56edb9af523cf82839c2869bbcf13b3ecb90602001610647565b6000806106db83611003565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461070e57600080fd5b60405181151581527f6b7f3306751292f85ab4161ee2b0ac16dfc8ded13e6446ce6bd859d0a2f4c78e906020015b60405180910390a1915091565b600061075361184a565b61075d84846110e7565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461079057600080fd5b7fd010ef68d3ac3e07c14bed496400730a484fd17c48a4d373cbc4722a56540def816040516106479190612168565b6000806107cd8585856111c1565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461080057600080fd5b6040518181527f25b6684a7e8fe1b676e9c39c8dd65034fbafea906d3bdfd97bf748b7b55e14c8906020016104db565b6000606080606061084085611294565b604051600785900b815293975091955093509150600080516020612df58339815191529060200160405180910390a1600784900b60161461088057600080fd5b7f2efc8334b040613a552197fe34283d6ca2909c8ffae393e128424931f20c69b38383836040516108b39392919061217b565b60405180910390a19193509193565b6000806108ce8361137b565b604051600783900b81529193509150600080516020612df58339815191529060200160405180910390a1600782900b60161461090957600080fd5b604051600382900b81527f182137409609594f2b12128230091c673507ea4cab315d59415d5e3f8c301ad59060200161073c565b6000610947611885565b6109508361143f565b6040518281529193509150600080516020612df58339815191529060200160405180910390a16016821461098357600080fd5b7fea9419ffbaa766adf982c4c9864330eee1d848eff36c79e510e7e589c8bb265f8160405161073c91906121b4565b6000806109bf848461150f565b60405160079290920b80835293509150600080516020612df58339815191529060200160405180910390a1601682146109f757600080fd5b60405181151581527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e90602001610647565b600080610a35836115ea565b6040518281529193509150600080516020612df58339815191529060200160405180910390a160168214610a6857600080fd5b60405181151581527f9ee19e13dfa1ba8db2502e15ff56dbecdeb0e0473323fb195473ce648030a2cd9060200161073c565b600080610aa68361161a565b604051600783900b81529193509150600080516020612df58339815191529060200160405180910390a1600782900b601614610ae157600080fd5b60405181151581527f5080c42cc33acbcea410fa6eaa925bd878674825501981184fdd53749f8478a89060200161073c565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161052c565b600080610b65848461164a565b604051600783900b81529193509150600080516020612df58339815191529060200160405180910390a1600782900b601614610ba057600080fd5b60405181151581527fd24dda6928587354b65aa1a18c2eaf249bef7e5bafd2a71fac71d286f76f957f90602001610647565b60408051606081018252600080825260208201819052918101829052610bf783611682565b6040518281529193509150600080516020612df58339815191529060200160405180910390a160168214610c2a57600080fd5b7fa0a16bf9db2c17796faeca5af5aaeef8523f9d4c350c512cb00062ad89604f888160405161073c91906121c7565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4016103bc565b6000610ca86118a5565b610cb18361177a565b6040518281529193509150600080516020612df58339815191529060200160405180910390a160168214610ce457600080fd5b7fbdb65f8c2a2e9a3a37ea49e903836883766a922e4ce9b21f684035e304962d418160405161073c9190612201565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b179052905160009182918291829161016791610d7d91612107565b6000604051808303816000865af19150503d8060008114610dba576040519150601f19603f3d011682016040523d82523d6000602084013e610dbf565b606091505b509150915081610dd25760156000610de6565b80806020019051810190610de69190612224565b60039190910b9890975095505050505050565b6040805160a081018252600080825260208083018290526060838501819052808401526080830182905283516001600160a01b03871660248201526044808201879052855180830390910181526064909101855290810180516001600160e01b0316631e26e99760e11b179052925190928391829161016791610e7c9190612107565b6000604051808303816000865af19150503d8060008114610eb9576040519150601f19603f3d011682016040523d82523d6000602084013e610ebe565b606091505b5091509150610f096040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b82610f1657601581610de6565b81806020019051810190610de69190612446565b604080516001600160a01b0384166024820152604480820184905282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b179052905160009182918291829161016791610f8891612107565b6000604051808303816000865af19150503d8060008114610fc5576040519150601f19603f3d011682016040523d82523d6000602084013e610fca565b606091505b509150915081610fdd5760156000610ff1565b80806020019051810190610ff19190612494565b60039190910b97909650945050505050565b6040516001600160a01b03821660248201526000908190819081906101679063a7daa18d60e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161106d9190612107565b6000604051808303816000865af19150503d80600081146110aa576040519150601f19603f3d011682016040523d82523d6000602084013e6110af565b606091505b5091509150816110c257601560006110d6565b808060200190518101906110d69190612224565b60039190910b969095509350505050565b60006110f161184a565b604080516001600160a01b0386166024820152600785900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b179052905160009182916101679161115191612107565b6000604051808303816000865af19150503d806000811461118e576040519150601f19603f3d011682016040523d82523d6000602084013e611193565b606091505b50915091506111a061184a565b826111ad57601581610de6565b81806020019051810190610de69190612b07565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b17905290516000918291829182916101679161122b91612107565b6000604051808303816000865af19150503d8060008114611268576040519150601f19603f3d011682016040523d82523d6000602084013e61126d565b606091505b5091509150816112805760156000610de6565b80806020019051810190610de69190612bef565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b17905290516000916060918291829185918291610167916112f391612107565b6000604051808303816000865af19150503d8060008114611330576040519150601f19603f3d011682016040523d82523d6000602084013e611335565b606091505b509150915060608060608461134e576015838383611362565b838060200190518101906113629190612c1b565b60039390930b9d919c509a509098509650505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b1790529051600091829182918291610167916113d591612107565b6000604051808303816000865af19150503d8060008114611412576040519150601f19603f3d011682016040523d82523d6000602084013e611417565b606091505b50915091508161142b5760156000196110d6565b808060200190518101906110d69190612cb4565b6000611449611885565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b179052905160009182916101679161149f91612107565b6000604051808303816000865af19150503d80600081146114dc576040519150601f19603f3d011682016040523d82523d6000602084013e6114e1565b606091505b50915091506114ee611885565b826114fb57601581610ff1565b81806020019051810190610ff19190612cde565b6040516001600160a01b03838116602483015282166044820152600090819081908190610167906346de0fb160e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516115819190612107565b6000604051808303816000865af19150503d80600081146115be576040519150601f19603f3d011682016040523d82523d6000602084013e6115c3565b606091505b5091509150816115d65760156000610ff1565b80806020019051810190610ff19190612224565b6040516001600160a01b03821660248201526000908190819081906101679063335e04c160e01b9060440161102f565b6040516001600160a01b0382166024820152600090819081908190610167906319f3736160e01b9060440161102f565b6040516001600160a01b0383811660248301528216604482015260009081908190819061016790633cb0c7fd60e21b90606401611543565b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b1790529251909283918291610167916116f49190612107565b6000604051808303816000865af19150503d8060008114611731576040519150601f19603f3d011682016040523d82523d6000602084013e611736565b606091505b50604080516060810182526000808252602082018190529181019190915291935091508261176657601581610ff1565b81806020019051810190610ff19190612d85565b60006117846118a5565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291610167916117da91612107565b6000604051808303816000865af19150503d8060008114611817576040519150601f19603f3d011682016040523d82523d6000602084013e61181c565b606091505b50915091506118296118a5565b8261183657601581610ff1565b81806020019051810190610ff19190612db0565b6040518060c0016040528061185d6118a5565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60405180604001604052806118986118a5565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e0840181905261020084018390528451928301855280835260208301819052938201939093526102208201529081908152602001600067ffffffffffffffff168152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038116811461197857600080fd5b50565b6000806000806080858703121561199157600080fd5b843561199c81611963565b935060208501356119ac81611963565b925060408501356119bc81611963565b9396929550929360600135925050565b6000806000606084860312156119e157600080fd5b83356119ec81611963565b925060208401356119fc81611963565b91506040840135611a0c81611963565b809150509250925092565b60008060408385031215611a2a57600080fd5b8235611a3581611963565b946020939093013593505050565b60005b83811015611a5e578181015183820152602001611a46565b83811115611a6d576000848401525b50505050565b60008151808452611a8b816020860160208601611a43565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a06040860152611ad760a0860183611a73565b915060608401518583036060870152611af08382611a73565b925050806080850151166080860152508091505092915050565b8260070b8152604060208201526000611b266040830184611a9f565b949350505050565b600060208284031215611b4057600080fd5b8135611b4b81611963565b9392505050565b8060070b811461197857600080fd5b60008060408385031215611b7457600080fd5b8235611b7f81611963565b91506020830135611b8f81611b52565b809150509250929050565b600081518084526020808501808196508360051b8101915082860160005b85811015611bf65782840389528151805185528501516040868601819052611be281870183611a9f565b9a87019a9550505090840190600101611bb8565b5091979650505050505050565b60006101608251818552611c1982860182611a73565b91505060208301518482036020860152611c338282611a73565b9150506040830151611c5060408601826001600160a01b03169052565b5060608301518482036060860152611c688282611a73565b9150506080830151611c7e608086018215159052565b5060a0830151611c9360a086018260070b9052565b5060c0830151611ca760c086018215159052565b5060e083015184820360e0860152611cbf8282611b9a565b61010085810151805163ffffffff9081168984015260208201516001600160a01b03166101208a015260408201511661014089015291935091505090949350505050565b600081518084526020808501945080840160005b83811015611d73578151805163ffffffff168852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611d17565b509495945050505050565b600081518084526020808501945080840160005b83811015611d73578151805163ffffffff9081168952848201518116858a01526040808301518216908a01526060808301519091169089015260808082015115159089015260a0908101516001600160a01b03169088015260c09096019590820190600101611d92565b600081518084526020808501945080840160005b83811015611d73578151805163ffffffff9081168952848201518116858a0152604080830151909116908901526060808201516001600160a01b03908116918a01919091526080808301511515908a015260a091820151169088015260c09096019590820190600101611e10565b60006101208251818552611e9482860182611c03565b9150506020830151611eb2602086018267ffffffffffffffff169052565b506040830151611ec6604086018215159052565b506060830151611eda606086018215159052565b506080830151611eee608086018215159052565b5060a083015184820360a0860152611f068282611d03565b91505060c083015184820360c0860152611f208282611d7e565b91505060e083015184820360e0860152611f3a8282611dfc565b9150506101008084015185830382870152611f558382611a73565b9695505050505050565b6000815160c08452611f7460c0850182611e7e565b9050602083015160070b602085015260408301516001600160a01b038082166040870152606085015160070b6060870152608085015191508583036080870152611fbe8383611a73565b92508060a08601511660a087015250508091505092915050565b828152604060208201526000611b266040830184611f5f565b8460070b815260806020820152600061200d6080830186611d03565b828103604084015261201f8186611d7e565b905082810360608401526120338185611dfc565b979650505050505050565b60008151604084526120536040850182611e7e565b60209384015163ffffffff16949093019390935250919050565b828152604060208201526000611b26604083018461203e565b6000806040838503121561209957600080fd5b82356120a481611963565b91506020830135611b8f81611963565b82815260808101611b4b6020830184805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b828152604060208201526000611b266040830184611e7e565b60008251612119818460208701611a43565b9190910192915050565b8051600381900b811461213557600080fd5b919050565b60006020828403121561214c57600080fd5b611b4b82612123565b602081526000611b4b6020830184611a9f565b602081526000611b4b6020830184611f5f565b60608152600061218e6060830186611d03565b82810360208401526121a08186611d7e565b90508281036040840152611f558185611dfc565b602081526000611b4b602083018461203e565b606081016121fb8284805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b92915050565b602081526000611b4b6020830184611e7e565b8051801515811461213557600080fd5b6000806040838503121561223757600080fd5b61224083612123565b915061224e60208401612214565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561229057612290612257565b60405290565b6040805190810167ffffffffffffffff8111828210171561229057612290612257565b604051610120810167ffffffffffffffff8111828210171561229057612290612257565b60405160c0810167ffffffffffffffff8111828210171561229057612290612257565b604051601f8201601f1916810167ffffffffffffffff8111828210171561232957612329612257565b604052919050565b805161213581611963565b600082601f83011261234d57600080fd5b815167ffffffffffffffff81111561236757612367612257565b61237a601f8201601f1916602001612300565b81815284602083860101111561238f57600080fd5b611b26826020830160208701611a43565b600060a082840312156123b257600080fd5b6123ba61226d565b90506123c582612214565b815260208201516123d581611963565b6020820152604082015167ffffffffffffffff808211156123f557600080fd5b6124018583860161233c565b6040840152606084015191508082111561241a57600080fd5b506124278482850161233c565b606083015250608082015161243b81611963565b608082015292915050565b6000806040838503121561245957600080fd5b61246283612123565b9150602083015167ffffffffffffffff81111561247e57600080fd5b61248a858286016123a0565b9150509250929050565b600080604083850312156124a757600080fd5b6124b083612123565b91506020830151611b8f81611963565b805161213581611b52565b600067ffffffffffffffff8211156124e5576124e5612257565b5060051b60200190565b600082601f83011261250057600080fd5b81516020612515612510836124cb565b612300565b82815260059290921b8401810191818101908684111561253457600080fd5b8286015b848110156125b657805167ffffffffffffffff808211156125595760008081fd5b908801906040828b03601f19018113156125735760008081fd5b61257b612296565b8388015181529083015190828211156125945760008081fd5b6125a28c89848701016123a0565b818901528652505050918301918301612538565b509695505050505050565b805163ffffffff8116811461213557600080fd5b6000606082840312156125e757600080fd5b6040516060810181811067ffffffffffffffff8211171561260a5761260a612257565b604052905080612619836125c1565b8152602083015161262981611963565b602082015261263a604084016125c1565b60408201525092915050565b6000610160828403121561265957600080fd5b6126616122b9565b9050815167ffffffffffffffff8082111561267b57600080fd5b6126878583860161233c565b8352602084015191508082111561269d57600080fd5b6126a98583860161233c565b60208401526126ba60408501612331565b604084015260608401519150808211156126d357600080fd5b6126df8583860161233c565b60608401526126f060808501612214565b608084015261270160a085016124c0565b60a084015261271260c08501612214565b60c084015260e084015191508082111561272b57600080fd5b50612738848285016124ef565b60e08301525061010061274d848285016125d5565b9082015292915050565b805167ffffffffffffffff8116811461213557600080fd5b600082601f83011261278057600080fd5b81516020612790612510836124cb565b82815260a092830285018201928282019190878511156127af57600080fd5b8387015b858110156128315781818a0312156127cb5760008081fd5b6127d361226d565b6127dc826125c1565b8152858201516127eb81611963565b8187015260406127fc838201612214565b90820152606061280d838201612214565b9082015260808281015161282081611963565b9082015284529284019281016127b3565b5090979650505050505050565b600082601f83011261284f57600080fd5b8151602061285f612510836124cb565b82815260c0928302850182019282820191908785111561287e57600080fd5b8387015b858110156128315781818a03121561289a5760008081fd5b6128a26122dd565b6128ab826125c1565b81526128b88683016125c1565b8682015260406128c98184016125c1565b9082015260606128da8382016125c1565b9082015260806128eb838201612214565b9082015260a0828101516128fe81611963565b908201528452928401928101612882565b600082601f83011261292057600080fd5b81516020612930612510836124cb565b82815260c0928302850182019282820191908785111561294f57600080fd5b8387015b858110156128315781818a03121561296b5760008081fd5b6129736122dd565b61297c826125c1565b81526129898683016125c1565b86820152604061299a8184016125c1565b908201526060828101516129ad81611963565b9082015260806129be838201612214565b9082015260a0828101516129d181611963565b908201528452928401928101612953565b600061012082840312156129f557600080fd5b6129fd6122b9565b9050815167ffffffffffffffff80821115612a1757600080fd5b612a2385838601612646565b8352612a3160208501612757565b6020840152612a4260408501612214565b6040840152612a5360608501612214565b6060840152612a6460808501612214565b608084015260a0840151915080821115612a7d57600080fd5b612a898583860161276f565b60a084015260c0840151915080821115612aa257600080fd5b612aae8583860161283e565b60c084015260e0840151915080821115612ac757600080fd5b612ad38583860161290f565b60e084015261010091508184015181811115612aee57600080fd5b612afa8682870161233c565b8385015250505092915050565b60008060408385031215612b1a57600080fd5b612b2383612123565b9150602083015167ffffffffffffffff80821115612b4057600080fd5b9084019060c08287031215612b5457600080fd5b612b5c6122dd565b825182811115612b6b57600080fd5b612b77888286016129e2565b825250612b86602084016124c0565b6020820152612b9760408401612331565b6040820152612ba8606084016124c0565b6060820152608083015182811115612bbf57600080fd5b612bcb8882860161233c565b608083015250612bdd60a08401612331565b60a08201528093505050509250929050565b60008060408385031215612c0257600080fd5b612c0b83612123565b9150602083015190509250929050565b60008060008060808587031215612c3157600080fd5b612c3a85612123565b9350602085015167ffffffffffffffff80821115612c5757600080fd5b612c638883890161276f565b94506040870151915080821115612c7957600080fd5b612c858883890161283e565b93506060870151915080821115612c9b57600080fd5b50612ca88782880161290f565b91505092959194509250565b60008060408385031215612cc757600080fd5b612cd083612123565b915061224e60208401612123565b60008060408385031215612cf157600080fd5b612cfa83612123565b9150602083015167ffffffffffffffff80821115612d1757600080fd5b9084019060408287031215612d2b57600080fd5b604051604081018181108382111715612d4657612d46612257565b604052825182811115612d5857600080fd5b612d64888286016129e2565b825250612d73602084016125c1565b60208201528093505050509250929050565b60008060808385031215612d9857600080fd5b612da183612123565b915061224e84602085016125d5565b60008060408385031215612dc357600080fd5b612dcc83612123565b9150602083015167ffffffffffffffff811115612de857600080fd5b61248a858286016129e256fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122008044451f6deee0b71bb727c6e7d5e6a3e42b1e8ef1f4bbbe316cf7dee27854e64736f6c63430008090033", + "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55612e1d806101276000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80635d2c5bad116100ad5780639b23d3d9116100715780639b23d3d914610300578063a3ad5b5514610313578063c0b19b6d14610326578063eac6f3fe14610347578063f2f38a741461035a57600080fd5b80635d2c5bad1461025c57806369837dc21461028c5780636a4dde21146102ad57806386f88d88146102c05780638c99ef5d146102d357600080fd5b806319db44b6116100f457806319db44b6146101ad5780633eed2c39146101dd5780634cbdb37b146101f05780635a5e6c31146102115780635b9076b71461023957600080fd5b806311e1fc071461012657806313c05dd81461015157806315dacbea146101795780631955de0b1461018c575b600080fd5b610139610134366004611974565b61037b565b60405160079190910b81526020015b60405180910390f35b61016461015f3660046119c5565b61046d565b60408051928352901515602083015201610148565b610139610187366004611974565b6104eb565b61019f61019a366004611a10565b6105a7565b604051610148929190611b03565b6101c06101bb366004611a10565b610656565b604080519283526001600160a01b03909116602083015201610148565b6101646101eb366004611b27565b6106cf565b6102036101fe366004611b5a565b610749565b604051610148929190611fc3565b61022461021f3660046119c5565b6107bf565b60408051928352602083019190915201610148565b61024c610247366004611b27565b610830565b6040516101489493929190611fdc565b61026f61026a366004611b27565b6108c2565b6040805160079390930b835260039190910b602083015201610148565b61029f61029a366004611b27565b61093d565b604051610148929190612055565b6101646102bb36600461206e565b6109b2565b6101646102ce366004611b27565b610a29565b6102e66102e1366004611b27565b610a9a565b6040805160079390930b8352901515602083015201610148565b61013961030e366004611974565b610b13565b6102e661032136600461206e565b610b58565b610339610334366004611b27565b610bd2565b60405161014892919061209c565b610139610355366004611974565b610c59565b61036d610368366004611b27565b610c9e565b6040516101489291906120d6565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103fa91906120ef565b600060405180830381855af49150503d8060008114610435576040519150601f19603f3d011682016040523d82523d6000602084013e61043a565b606091505b50915091508161044b57601561045f565b8080602001905181019061045f9190612122565b60030b979650505050505050565b60008061047b858585610d13565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a1601682146104ae57600080fd5b60405181151581527e1c2e72360171244b3bb8cc8ddd767820edf37138ad6f129fb3574b407c307d906020015b60405180910390a1935093915050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161056a91906120ef565b6000604051808303816000865af19150503d8060008114610435576040519150601f19603f3d011682016040523d82523d6000602084013e61043a565b6040805160a081018252600080825260208201819052606092820183905282820192909252608081018290526105dd8484610df9565b604051600783900b81529193509150600080516020612dc88339815191529060200160405180910390a1600782900b60161461061857600080fd5b7faed084fbdf29b6ba2242463299d7270f64e0f8ced16013cfff249856bd88715781604051610647919061213d565b60405180910390a19250929050565b6000806106638484610f2a565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461069657600080fd5b6040516001600160a01b03821681527fc2c78c7c31baf14949e75c51df12be56edb9af523cf82839c2869bbcf13b3ecb90602001610647565b6000806106db83611003565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461070e57600080fd5b60405181151581527f6b7f3306751292f85ab4161ee2b0ac16dfc8ded13e6446ce6bd859d0a2f4c78e906020015b60405180910390a1915091565b600061075361184a565b61075d84846110e7565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461079057600080fd5b7f91ccf16c022fe2d397abee975516433182ab8f781d4ef14b66cc732526e66dcf816040516106479190612150565b6000806107cd8585856111c1565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461080057600080fd5b6040518181527f25b6684a7e8fe1b676e9c39c8dd65034fbafea906d3bdfd97bf748b7b55e14c8906020016104db565b6000606080606061084085611294565b604051600785900b815293975091955093509150600080516020612dc88339815191529060200160405180910390a1600784900b60161461088057600080fd5b7f2fc15414e589a7221dbee977ae9650a8990a7544fd1b3ae3ae62f4797f412a998383836040516108b393929190612163565b60405180910390a19193509193565b6000806108ce8361137b565b604051600783900b81529193509150600080516020612dc88339815191529060200160405180910390a1600782900b60161461090957600080fd5b604051600382900b81527f182137409609594f2b12128230091c673507ea4cab315d59415d5e3f8c301ad59060200161073c565b6000610947611885565b6109508361143f565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461098357600080fd5b7f4ef7d8101cfcfd8272047933834c75def485d9965aef926f86f237d4e61ef6388160405161073c919061219c565b6000806109bf848461150f565b60405160079290920b80835293509150600080516020612dc88339815191529060200160405180910390a1601682146109f757600080fd5b60405181151581527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e90602001610647565b600080610a35836115ea565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a160168214610a6857600080fd5b60405181151581527f9ee19e13dfa1ba8db2502e15ff56dbecdeb0e0473323fb195473ce648030a2cd9060200161073c565b600080610aa68361161a565b604051600783900b81529193509150600080516020612dc88339815191529060200160405180910390a1600782900b601614610ae157600080fd5b60405181151581527f5080c42cc33acbcea410fa6eaa925bd878674825501981184fdd53749f8478a89060200161073c565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161052c565b600080610b65848461164a565b604051600783900b81529193509150600080516020612dc88339815191529060200160405180910390a1600782900b601614610ba057600080fd5b60405181151581527fd24dda6928587354b65aa1a18c2eaf249bef7e5bafd2a71fac71d286f76f957f90602001610647565b60408051606081018252600080825260208201819052918101829052610bf783611682565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a160168214610c2a57600080fd5b7ffed17041c1dbab1a630961a1f2d469641f421ee8a8b0f717d6f840c75e4593338160405161073c91906121af565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4016103bc565b6000610ca86118a5565b610cb18361177a565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a160168214610ce457600080fd5b7fd1a813e1ab0917de7318f3003f23664aed447e65204cf1e19c2c806e591c851f8160405161073c91906121e9565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b179052905160009182918291829161016791610d7d916120ef565b6000604051808303816000865af19150503d8060008114610dba576040519150601f19603f3d011682016040523d82523d6000602084013e610dbf565b606091505b509150915081610dd25760156000610de6565b80806020019051810190610de6919061220c565b60039190910b9890975095505050505050565b6040805160a081018252600080825260208083018290526060838501819052808401526080830182905283516001600160a01b03871660248201526044808201879052855180830390910181526064909101855290810180516001600160e01b0316631e26e99760e11b179052925190928391829161016791610e7c91906120ef565b6000604051808303816000865af19150503d8060008114610eb9576040519150601f19603f3d011682016040523d82523d6000602084013e610ebe565b606091505b5091509150610f096040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b82610f1657601581610de6565b81806020019051810190610de6919061242e565b604080516001600160a01b0384166024820152604480820184905282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b179052905160009182918291829161016791610f88916120ef565b6000604051808303816000865af19150503d8060008114610fc5576040519150601f19603f3d011682016040523d82523d6000602084013e610fca565b606091505b509150915081610fdd5760156000610ff1565b80806020019051810190610ff1919061247c565b60039190910b97909650945050505050565b6040516001600160a01b03821660248201526000908190819081906101679063a7daa18d60e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161106d91906120ef565b6000604051808303816000865af19150503d80600081146110aa576040519150601f19603f3d011682016040523d82523d6000602084013e6110af565b606091505b5091509150816110c257601560006110d6565b808060200190518101906110d6919061220c565b60039190910b969095509350505050565b60006110f161184a565b604080516001600160a01b0386166024820152600785900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b1790529051600091829161016791611151916120ef565b6000604051808303816000865af19150503d806000811461118e576040519150601f19603f3d011682016040523d82523d6000602084013e611193565b606091505b50915091506111a061184a565b826111ad57601581610de6565b81806020019051810190610de69190612ada565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b17905290516000918291829182916101679161122b916120ef565b6000604051808303816000865af19150503d8060008114611268576040519150601f19603f3d011682016040523d82523d6000602084013e61126d565b606091505b5091509150816112805760156000610de6565b80806020019051810190610de69190612bc2565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b17905290516000916060918291829185918291610167916112f3916120ef565b6000604051808303816000865af19150503d8060008114611330576040519150601f19603f3d011682016040523d82523d6000602084013e611335565b606091505b509150915060608060608461134e576015838383611362565b838060200190518101906113629190612bee565b60039390930b9d919c509a509098509650505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b1790529051600091829182918291610167916113d5916120ef565b6000604051808303816000865af19150503d8060008114611412576040519150601f19603f3d011682016040523d82523d6000602084013e611417565b606091505b50915091508161142b5760156000196110d6565b808060200190518101906110d69190612c87565b6000611449611885565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b179052905160009182916101679161149f916120ef565b6000604051808303816000865af19150503d80600081146114dc576040519150601f19603f3d011682016040523d82523d6000602084013e6114e1565b606091505b50915091506114ee611885565b826114fb57601581610ff1565b81806020019051810190610ff19190612cb1565b6040516001600160a01b03838116602483015282166044820152600090819081908190610167906346de0fb160e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161158191906120ef565b6000604051808303816000865af19150503d80600081146115be576040519150601f19603f3d011682016040523d82523d6000602084013e6115c3565b606091505b5091509150816115d65760156000610ff1565b80806020019051810190610ff1919061220c565b6040516001600160a01b03821660248201526000908190819081906101679063335e04c160e01b9060440161102f565b6040516001600160a01b0382166024820152600090819081908190610167906319f3736160e01b9060440161102f565b6040516001600160a01b0383811660248301528216604482015260009081908190819061016790633cb0c7fd60e21b90606401611543565b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b1790529251909283918291610167916116f491906120ef565b6000604051808303816000865af19150503d8060008114611731576040519150601f19603f3d011682016040523d82523d6000602084013e611736565b606091505b50604080516060810182526000808252602082018190529181019190915291935091508261176657601581610ff1565b81806020019051810190610ff19190612d58565b60006117846118a5565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291610167916117da916120ef565b6000604051808303816000865af19150503d8060008114611817576040519150601f19603f3d011682016040523d82523d6000602084013e61181c565b606091505b50915091506118296118a5565b8261183657601581610ff1565b81806020019051810190610ff19190612d83565b6040518060c0016040528061185d6118a5565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60405180604001604052806118986118a5565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e0840181905261020084018390528451928301855280835260208301819052938201939093526102208201529081908152602001600060070b8152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038116811461197157600080fd5b50565b6000806000806080858703121561198a57600080fd5b84356119958161195c565b935060208501356119a58161195c565b925060408501356119b58161195c565b9396929550929360600135925050565b6000806000606084860312156119da57600080fd5b83356119e58161195c565b925060208401356119f58161195c565b91506040840135611a058161195c565b809150509250925092565b60008060408385031215611a2357600080fd5b8235611a2e8161195c565b946020939093013593505050565b60005b83811015611a57578181015183820152602001611a3f565b83811115611a66576000848401525b50505050565b60008151808452611a84816020860160208601611a3c565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a06040860152611ad060a0860183611a6c565b915060608401518583036060870152611ae98382611a6c565b925050806080850151166080860152508091505092915050565b8260070b8152604060208201526000611b1f6040830184611a98565b949350505050565b600060208284031215611b3957600080fd5b8135611b448161195c565b9392505050565b8060070b811461197157600080fd5b60008060408385031215611b6d57600080fd5b8235611b788161195c565b91506020830135611b8881611b4b565b809150509250929050565b600081518084526020808501808196508360051b8101915082860160005b85811015611bef5782840389528151805185528501516040868601819052611bdb81870183611a98565b9a87019a9550505090840190600101611bb1565b5091979650505050505050565b60006101608251818552611c1282860182611a6c565b91505060208301518482036020860152611c2c8282611a6c565b9150506040830151611c4960408601826001600160a01b03169052565b5060608301518482036060860152611c618282611a6c565b9150506080830151611c77608086018215159052565b5060a0830151611c8c60a086018260070b9052565b5060c0830151611ca060c086018215159052565b5060e083015184820360e0860152611cb88282611b93565b91505061010080840151611cf482870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b600081518084526020808501945080840160005b83811015611d6b578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611d12565b509495945050505050565b600081518084526020808501945080840160005b83811015611d6b5781518051600790810b895284820151810b858a0152604080830151820b908a015260608083015190910b9089015260808082015115159089015260a0908101516001600160a01b03169088015260c09096019590820190600101611d8a565b600081518084526020808501945080840160005b83811015611d6b5781518051600790810b895284820151810b858a015260408083015190910b908901526060808201516001600160a01b03908116918a01919091526080808301511515908a015260a091820151169088015260c09096019590820190600101611e05565b60006101208251818552611e8682860182611bfc565b9150506020830151611e9d602086018260070b9052565b506040830151611eb1604086018215159052565b506060830151611ec5606086018215159052565b506080830151611ed9608086018215159052565b5060a083015184820360a0860152611ef18282611cfe565b91505060c083015184820360c0860152611f0b8282611d76565b91505060e083015184820360e0860152611f258282611df1565b9150506101008084015185830382870152611f408382611a6c565b9695505050505050565b6000815160c08452611f5f60c0850182611e70565b9050602083015160070b602085015260408301516001600160a01b038082166040870152606085015160070b6060870152608085015191508583036080870152611fa98383611a6c565b92508060a08601511660a087015250508091505092915050565b828152604060208201526000611b1f6040830184611f4a565b8460070b8152608060208201526000611ff86080830186611cfe565b828103604084015261200a8186611d76565b9050828103606084015261201e8185611df1565b979650505050505050565b600081516040845261203e6040850182611e70565b60209384015160030b949093019390935250919050565b828152604060208201526000611b1f6040830184612029565b6000806040838503121561208157600080fd5b823561208c8161195c565b91506020830135611b888161195c565b82815260808101611b446020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b828152604060208201526000611b1f6040830184611e70565b60008251612101818460208701611a3c565b9190910192915050565b8051600381900b811461211d57600080fd5b919050565b60006020828403121561213457600080fd5b611b448261210b565b602081526000611b446020830184611a98565b602081526000611b446020830184611f4a565b6060815260006121766060830186611cfe565b82810360208401526121888186611d76565b90508281036040840152611f408185611df1565b602081526000611b446020830184612029565b606081016121e38284805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b92915050565b602081526000611b446020830184611e70565b8051801515811461211d57600080fd5b6000806040838503121561221f57600080fd5b6122288361210b565b9150612236602084016121fc565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156122785761227861223f565b60405290565b6040805190810167ffffffffffffffff811182821017156122785761227861223f565b604051610120810167ffffffffffffffff811182821017156122785761227861223f565b60405160c0810167ffffffffffffffff811182821017156122785761227861223f565b604051601f8201601f1916810167ffffffffffffffff811182821017156123115761231161223f565b604052919050565b805161211d8161195c565b600082601f83011261233557600080fd5b815167ffffffffffffffff81111561234f5761234f61223f565b612362601f8201601f19166020016122e8565b81815284602083860101111561237757600080fd5b611b1f826020830160208701611a3c565b600060a0828403121561239a57600080fd5b6123a2612255565b90506123ad826121fc565b815260208201516123bd8161195c565b6020820152604082015167ffffffffffffffff808211156123dd57600080fd5b6123e985838601612324565b6040840152606084015191508082111561240257600080fd5b5061240f84828501612324565b60608301525060808201516124238161195c565b608082015292915050565b6000806040838503121561244157600080fd5b61244a8361210b565b9150602083015167ffffffffffffffff81111561246657600080fd5b61247285828601612388565b9150509250929050565b6000806040838503121561248f57600080fd5b6124988361210b565b91506020830151611b888161195c565b805161211d81611b4b565b600067ffffffffffffffff8211156124cd576124cd61223f565b5060051b60200190565b600082601f8301126124e857600080fd5b815160206124fd6124f8836124b3565b6122e8565b82815260059290921b8401810191818101908684111561251c57600080fd5b8286015b8481101561259e57805167ffffffffffffffff808211156125415760008081fd5b908801906040828b03601f190181131561255b5760008081fd5b61256361227e565b83880151815290830151908282111561257c5760008081fd5b61258a8c8984870101612388565b818901528652505050918301918301612520565b509695505050505050565b6000606082840312156125bb57600080fd5b6040516060810181811067ffffffffffffffff821117156125de576125de61223f565b806040525080915082516125f181611b4b565b815260208301516126018161195c565b6020820152604083015161261481611b4b565b6040919091015292915050565b6000610160828403121561263457600080fd5b61263c6122a1565b9050815167ffffffffffffffff8082111561265657600080fd5b61266285838601612324565b8352602084015191508082111561267857600080fd5b61268485838601612324565b602084015261269560408501612319565b604084015260608401519150808211156126ae57600080fd5b6126ba85838601612324565b60608401526126cb608085016121fc565b60808401526126dc60a085016124a8565b60a08401526126ed60c085016121fc565b60c084015260e084015191508082111561270657600080fd5b50612713848285016124d7565b60e083015250610100612728848285016125a9565b9082015292915050565b600082601f83011261274357600080fd5b815160206127536124f8836124b3565b82815260a0928302850182019282820191908785111561277257600080fd5b8387015b858110156127f65781818a03121561278e5760008081fd5b612796612255565b81516127a181611b4b565b8152818601516127b08161195c565b8187015260406127c18382016121fc565b9082015260606127d28382016121fc565b908201526080828101516127e58161195c565b908201528452928401928101612776565b5090979650505050505050565b600082601f83011261281457600080fd5b815160206128246124f8836124b3565b82815260c0928302850182019282820191908785111561284357600080fd5b8387015b858110156127f65781818a03121561285f5760008081fd5b6128676122c5565b815161287281611b4b565b81528186015161288181611b4b565b8187015260408281015161289481611b4b565b908201526060828101516128a781611b4b565b9082015260806128b88382016121fc565b9082015260a0828101516128cb8161195c565b908201528452928401928101612847565b600082601f8301126128ed57600080fd5b815160206128fd6124f8836124b3565b82815260c0928302850182019282820191908785111561291c57600080fd5b8387015b858110156127f65781818a0312156129385760008081fd5b6129406122c5565b815161294b81611b4b565b81528186015161295a81611b4b565b8187015260408281015161296d81611b4b565b908201526060828101516129808161195c565b9082015260806129918382016121fc565b9082015260a0828101516129a48161195c565b908201528452928401928101612920565b600061012082840312156129c857600080fd5b6129d06122a1565b9050815167ffffffffffffffff808211156129ea57600080fd5b6129f685838601612621565b8352612a04602085016124a8565b6020840152612a15604085016121fc565b6040840152612a26606085016121fc565b6060840152612a37608085016121fc565b608084015260a0840151915080821115612a5057600080fd5b612a5c85838601612732565b60a084015260c0840151915080821115612a7557600080fd5b612a8185838601612803565b60c084015260e0840151915080821115612a9a57600080fd5b612aa6858386016128dc565b60e084015261010091508184015181811115612ac157600080fd5b612acd86828701612324565b8385015250505092915050565b60008060408385031215612aed57600080fd5b612af68361210b565b9150602083015167ffffffffffffffff80821115612b1357600080fd5b9084019060c08287031215612b2757600080fd5b612b2f6122c5565b825182811115612b3e57600080fd5b612b4a888286016129b5565b825250612b59602084016124a8565b6020820152612b6a60408401612319565b6040820152612b7b606084016124a8565b6060820152608083015182811115612b9257600080fd5b612b9e88828601612324565b608083015250612bb060a08401612319565b60a08201528093505050509250929050565b60008060408385031215612bd557600080fd5b612bde8361210b565b9150602083015190509250929050565b60008060008060808587031215612c0457600080fd5b612c0d8561210b565b9350602085015167ffffffffffffffff80821115612c2a57600080fd5b612c3688838901612732565b94506040870151915080821115612c4c57600080fd5b612c5888838901612803565b93506060870151915080821115612c6e57600080fd5b50612c7b878288016128dc565b91505092959194509250565b60008060408385031215612c9a57600080fd5b612ca38361210b565b91506122366020840161210b565b60008060408385031215612cc457600080fd5b612ccd8361210b565b9150602083015167ffffffffffffffff80821115612cea57600080fd5b9084019060408287031215612cfe57600080fd5b604051604081018181108382111715612d1957612d1961223f565b604052825182811115612d2b57600080fd5b612d37888286016129b5565b825250612d466020840161210b565b60208201528093505050509250929050565b60008060808385031215612d6b57600080fd5b612d748361210b565b915061223684602085016125a9565b60008060408385031215612d9657600080fd5b612d9f8361210b565b9150602083015167ffffffffffffffff811115612dbb57600080fd5b612472858286016129b556fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122003f9fc902afc9b62088773d289ce166d3a45c7c7992799924487795cba09d5be64736f6c63430008090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80635d2c5bad116100ad5780639b23d3d9116100715780639b23d3d914610300578063a3ad5b5514610313578063c0b19b6d14610326578063eac6f3fe14610347578063f2f38a741461035a57600080fd5b80635d2c5bad1461025c57806369837dc21461028c5780636a4dde21146102ad57806386f88d88146102c05780638c99ef5d146102d357600080fd5b806319db44b6116100f457806319db44b6146101ad5780633eed2c39146101dd5780634cbdb37b146101f05780635a5e6c31146102115780635b9076b71461023957600080fd5b806311e1fc071461012657806313c05dd81461015157806315dacbea146101795780631955de0b1461018c575b600080fd5b610139610134366004611974565b61037b565b60405160079190910b81526020015b60405180910390f35b61016461015f3660046119c5565b61046d565b60408051928352901515602083015201610148565b610139610187366004611974565b6104eb565b61019f61019a366004611a10565b6105a7565b604051610148929190611b03565b6101c06101bb366004611a10565b610656565b604080519283526001600160a01b03909116602083015201610148565b6101646101eb366004611b27565b6106cf565b6102036101fe366004611b5a565b610749565b604051610148929190611fc3565b61022461021f3660046119c5565b6107bf565b60408051928352602083019190915201610148565b61024c610247366004611b27565b610830565b6040516101489493929190611fdc565b61026f61026a366004611b27565b6108c2565b6040805160079390930b835260039190910b602083015201610148565b61029f61029a366004611b27565b61093d565b604051610148929190612055565b6101646102bb36600461206e565b6109b2565b6101646102ce366004611b27565b610a29565b6102e66102e1366004611b27565b610a9a565b6040805160079390930b8352901515602083015201610148565b61013961030e366004611974565b610b13565b6102e661032136600461206e565b610b58565b610339610334366004611b27565b610bd2565b60405161014892919061209c565b610139610355366004611974565b610c59565b61036d610368366004611b27565b610c9e565b6040516101489291906120d6565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103fa91906120ef565b600060405180830381855af49150503d8060008114610435576040519150601f19603f3d011682016040523d82523d6000602084013e61043a565b606091505b50915091508161044b57601561045f565b8080602001905181019061045f9190612122565b60030b979650505050505050565b60008061047b858585610d13565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a1601682146104ae57600080fd5b60405181151581527e1c2e72360171244b3bb8cc8ddd767820edf37138ad6f129fb3574b407c307d906020015b60405180910390a1935093915050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161056a91906120ef565b6000604051808303816000865af19150503d8060008114610435576040519150601f19603f3d011682016040523d82523d6000602084013e61043a565b6040805160a081018252600080825260208201819052606092820183905282820192909252608081018290526105dd8484610df9565b604051600783900b81529193509150600080516020612dc88339815191529060200160405180910390a1600782900b60161461061857600080fd5b7faed084fbdf29b6ba2242463299d7270f64e0f8ced16013cfff249856bd88715781604051610647919061213d565b60405180910390a19250929050565b6000806106638484610f2a565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461069657600080fd5b6040516001600160a01b03821681527fc2c78c7c31baf14949e75c51df12be56edb9af523cf82839c2869bbcf13b3ecb90602001610647565b6000806106db83611003565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461070e57600080fd5b60405181151581527f6b7f3306751292f85ab4161ee2b0ac16dfc8ded13e6446ce6bd859d0a2f4c78e906020015b60405180910390a1915091565b600061075361184a565b61075d84846110e7565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461079057600080fd5b7f91ccf16c022fe2d397abee975516433182ab8f781d4ef14b66cc732526e66dcf816040516106479190612150565b6000806107cd8585856111c1565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461080057600080fd5b6040518181527f25b6684a7e8fe1b676e9c39c8dd65034fbafea906d3bdfd97bf748b7b55e14c8906020016104db565b6000606080606061084085611294565b604051600785900b815293975091955093509150600080516020612dc88339815191529060200160405180910390a1600784900b60161461088057600080fd5b7f2fc15414e589a7221dbee977ae9650a8990a7544fd1b3ae3ae62f4797f412a998383836040516108b393929190612163565b60405180910390a19193509193565b6000806108ce8361137b565b604051600783900b81529193509150600080516020612dc88339815191529060200160405180910390a1600782900b60161461090957600080fd5b604051600382900b81527f182137409609594f2b12128230091c673507ea4cab315d59415d5e3f8c301ad59060200161073c565b6000610947611885565b6109508361143f565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a16016821461098357600080fd5b7f4ef7d8101cfcfd8272047933834c75def485d9965aef926f86f237d4e61ef6388160405161073c919061219c565b6000806109bf848461150f565b60405160079290920b80835293509150600080516020612dc88339815191529060200160405180910390a1601682146109f757600080fd5b60405181151581527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e90602001610647565b600080610a35836115ea565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a160168214610a6857600080fd5b60405181151581527f9ee19e13dfa1ba8db2502e15ff56dbecdeb0e0473323fb195473ce648030a2cd9060200161073c565b600080610aa68361161a565b604051600783900b81529193509150600080516020612dc88339815191529060200160405180910390a1600782900b601614610ae157600080fd5b60405181151581527f5080c42cc33acbcea410fa6eaa925bd878674825501981184fdd53749f8478a89060200161073c565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a40161052c565b600080610b65848461164a565b604051600783900b81529193509150600080516020612dc88339815191529060200160405180910390a1600782900b601614610ba057600080fd5b60405181151581527fd24dda6928587354b65aa1a18c2eaf249bef7e5bafd2a71fac71d286f76f957f90602001610647565b60408051606081018252600080825260208201819052918101829052610bf783611682565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a160168214610c2a57600080fd5b7ffed17041c1dbab1a630961a1f2d469641f421ee8a8b0f717d6f840c75e4593338160405161073c91906121af565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4016103bc565b6000610ca86118a5565b610cb18361177a565b6040518281529193509150600080516020612dc88339815191529060200160405180910390a160168214610ce457600080fd5b7fd1a813e1ab0917de7318f3003f23664aed447e65204cf1e19c2c806e591c851f8160405161073c91906121e9565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b179052905160009182918291829161016791610d7d916120ef565b6000604051808303816000865af19150503d8060008114610dba576040519150601f19603f3d011682016040523d82523d6000602084013e610dbf565b606091505b509150915081610dd25760156000610de6565b80806020019051810190610de6919061220c565b60039190910b9890975095505050505050565b6040805160a081018252600080825260208083018290526060838501819052808401526080830182905283516001600160a01b03871660248201526044808201879052855180830390910181526064909101855290810180516001600160e01b0316631e26e99760e11b179052925190928391829161016791610e7c91906120ef565b6000604051808303816000865af19150503d8060008114610eb9576040519150601f19603f3d011682016040523d82523d6000602084013e610ebe565b606091505b5091509150610f096040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b82610f1657601581610de6565b81806020019051810190610de6919061242e565b604080516001600160a01b0384166024820152604480820184905282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b179052905160009182918291829161016791610f88916120ef565b6000604051808303816000865af19150503d8060008114610fc5576040519150601f19603f3d011682016040523d82523d6000602084013e610fca565b606091505b509150915081610fdd5760156000610ff1565b80806020019051810190610ff1919061247c565b60039190910b97909650945050505050565b6040516001600160a01b03821660248201526000908190819081906101679063a7daa18d60e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161106d91906120ef565b6000604051808303816000865af19150503d80600081146110aa576040519150601f19603f3d011682016040523d82523d6000602084013e6110af565b606091505b5091509150816110c257601560006110d6565b808060200190518101906110d6919061220c565b60039190910b969095509350505050565b60006110f161184a565b604080516001600160a01b0386166024820152600785900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b1790529051600091829161016791611151916120ef565b6000604051808303816000865af19150503d806000811461118e576040519150601f19603f3d011682016040523d82523d6000602084013e611193565b606091505b50915091506111a061184a565b826111ad57601581610de6565b81806020019051810190610de69190612ada565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b17905290516000918291829182916101679161122b916120ef565b6000604051808303816000865af19150503d8060008114611268576040519150601f19603f3d011682016040523d82523d6000602084013e61126d565b606091505b5091509150816112805760156000610de6565b80806020019051810190610de69190612bc2565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b17905290516000916060918291829185918291610167916112f3916120ef565b6000604051808303816000865af19150503d8060008114611330576040519150601f19603f3d011682016040523d82523d6000602084013e611335565b606091505b509150915060608060608461134e576015838383611362565b838060200190518101906113629190612bee565b60039390930b9d919c509a509098509650505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b1790529051600091829182918291610167916113d5916120ef565b6000604051808303816000865af19150503d8060008114611412576040519150601f19603f3d011682016040523d82523d6000602084013e611417565b606091505b50915091508161142b5760156000196110d6565b808060200190518101906110d69190612c87565b6000611449611885565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b179052905160009182916101679161149f916120ef565b6000604051808303816000865af19150503d80600081146114dc576040519150601f19603f3d011682016040523d82523d6000602084013e6114e1565b606091505b50915091506114ee611885565b826114fb57601581610ff1565b81806020019051810190610ff19190612cb1565b6040516001600160a01b03838116602483015282166044820152600090819081908190610167906346de0fb160e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161158191906120ef565b6000604051808303816000865af19150503d80600081146115be576040519150601f19603f3d011682016040523d82523d6000602084013e6115c3565b606091505b5091509150816115d65760156000610ff1565b80806020019051810190610ff1919061220c565b6040516001600160a01b03821660248201526000908190819081906101679063335e04c160e01b9060440161102f565b6040516001600160a01b0382166024820152600090819081908190610167906319f3736160e01b9060440161102f565b6040516001600160a01b0383811660248301528216604482015260009081908190819061016790633cb0c7fd60e21b90606401611543565b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b1790529251909283918291610167916116f491906120ef565b6000604051808303816000865af19150503d8060008114611731576040519150601f19603f3d011682016040523d82523d6000602084013e611736565b606091505b50604080516060810182526000808252602082018190529181019190915291935091508261176657601581610ff1565b81806020019051810190610ff19190612d58565b60006117846118a5565b604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291610167916117da916120ef565b6000604051808303816000865af19150503d8060008114611817576040519150601f19603f3d011682016040523d82523d6000602084013e61181c565b606091505b50915091506118296118a5565b8261183657601581610ff1565b81806020019051810190610ff19190612d83565b6040518060c0016040528061185d6118a5565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60405180604001604052806118986118a5565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e0840181905261020084018390528451928301855280835260208301819052938201939093526102208201529081908152602001600060070b8152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6001600160a01b038116811461197157600080fd5b50565b6000806000806080858703121561198a57600080fd5b84356119958161195c565b935060208501356119a58161195c565b925060408501356119b58161195c565b9396929550929360600135925050565b6000806000606084860312156119da57600080fd5b83356119e58161195c565b925060208401356119f58161195c565b91506040840135611a058161195c565b809150509250925092565b60008060408385031215611a2357600080fd5b8235611a2e8161195c565b946020939093013593505050565b60005b83811015611a57578181015183820152602001611a3f565b83811115611a66576000848401525b50505050565b60008151808452611a84816020860160208601611a3c565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a06040860152611ad060a0860183611a6c565b915060608401518583036060870152611ae98382611a6c565b925050806080850151166080860152508091505092915050565b8260070b8152604060208201526000611b1f6040830184611a98565b949350505050565b600060208284031215611b3957600080fd5b8135611b448161195c565b9392505050565b8060070b811461197157600080fd5b60008060408385031215611b6d57600080fd5b8235611b788161195c565b91506020830135611b8881611b4b565b809150509250929050565b600081518084526020808501808196508360051b8101915082860160005b85811015611bef5782840389528151805185528501516040868601819052611bdb81870183611a98565b9a87019a9550505090840190600101611bb1565b5091979650505050505050565b60006101608251818552611c1282860182611a6c565b91505060208301518482036020860152611c2c8282611a6c565b9150506040830151611c4960408601826001600160a01b03169052565b5060608301518482036060860152611c618282611a6c565b9150506080830151611c77608086018215159052565b5060a0830151611c8c60a086018260070b9052565b5060c0830151611ca060c086018215159052565b5060e083015184820360e0860152611cb88282611b93565b91505061010080840151611cf482870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b600081518084526020808501945080840160005b83811015611d6b578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611d12565b509495945050505050565b600081518084526020808501945080840160005b83811015611d6b5781518051600790810b895284820151810b858a0152604080830151820b908a015260608083015190910b9089015260808082015115159089015260a0908101516001600160a01b03169088015260c09096019590820190600101611d8a565b600081518084526020808501945080840160005b83811015611d6b5781518051600790810b895284820151810b858a015260408083015190910b908901526060808201516001600160a01b03908116918a01919091526080808301511515908a015260a091820151169088015260c09096019590820190600101611e05565b60006101208251818552611e8682860182611bfc565b9150506020830151611e9d602086018260070b9052565b506040830151611eb1604086018215159052565b506060830151611ec5606086018215159052565b506080830151611ed9608086018215159052565b5060a083015184820360a0860152611ef18282611cfe565b91505060c083015184820360c0860152611f0b8282611d76565b91505060e083015184820360e0860152611f258282611df1565b9150506101008084015185830382870152611f408382611a6c565b9695505050505050565b6000815160c08452611f5f60c0850182611e70565b9050602083015160070b602085015260408301516001600160a01b038082166040870152606085015160070b6060870152608085015191508583036080870152611fa98383611a6c565b92508060a08601511660a087015250508091505092915050565b828152604060208201526000611b1f6040830184611f4a565b8460070b8152608060208201526000611ff86080830186611cfe565b828103604084015261200a8186611d76565b9050828103606084015261201e8185611df1565b979650505050505050565b600081516040845261203e6040850182611e70565b60209384015160030b949093019390935250919050565b828152604060208201526000611b1f6040830184612029565b6000806040838503121561208157600080fd5b823561208c8161195c565b91506020830135611b888161195c565b82815260808101611b446020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b828152604060208201526000611b1f6040830184611e70565b60008251612101818460208701611a3c565b9190910192915050565b8051600381900b811461211d57600080fd5b919050565b60006020828403121561213457600080fd5b611b448261210b565b602081526000611b446020830184611a98565b602081526000611b446020830184611f4a565b6060815260006121766060830186611cfe565b82810360208401526121888186611d76565b90508281036040840152611f408185611df1565b602081526000611b446020830184612029565b606081016121e38284805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b92915050565b602081526000611b446020830184611e70565b8051801515811461211d57600080fd5b6000806040838503121561221f57600080fd5b6122288361210b565b9150612236602084016121fc565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156122785761227861223f565b60405290565b6040805190810167ffffffffffffffff811182821017156122785761227861223f565b604051610120810167ffffffffffffffff811182821017156122785761227861223f565b60405160c0810167ffffffffffffffff811182821017156122785761227861223f565b604051601f8201601f1916810167ffffffffffffffff811182821017156123115761231161223f565b604052919050565b805161211d8161195c565b600082601f83011261233557600080fd5b815167ffffffffffffffff81111561234f5761234f61223f565b612362601f8201601f19166020016122e8565b81815284602083860101111561237757600080fd5b611b1f826020830160208701611a3c565b600060a0828403121561239a57600080fd5b6123a2612255565b90506123ad826121fc565b815260208201516123bd8161195c565b6020820152604082015167ffffffffffffffff808211156123dd57600080fd5b6123e985838601612324565b6040840152606084015191508082111561240257600080fd5b5061240f84828501612324565b60608301525060808201516124238161195c565b608082015292915050565b6000806040838503121561244157600080fd5b61244a8361210b565b9150602083015167ffffffffffffffff81111561246657600080fd5b61247285828601612388565b9150509250929050565b6000806040838503121561248f57600080fd5b6124988361210b565b91506020830151611b888161195c565b805161211d81611b4b565b600067ffffffffffffffff8211156124cd576124cd61223f565b5060051b60200190565b600082601f8301126124e857600080fd5b815160206124fd6124f8836124b3565b6122e8565b82815260059290921b8401810191818101908684111561251c57600080fd5b8286015b8481101561259e57805167ffffffffffffffff808211156125415760008081fd5b908801906040828b03601f190181131561255b5760008081fd5b61256361227e565b83880151815290830151908282111561257c5760008081fd5b61258a8c8984870101612388565b818901528652505050918301918301612520565b509695505050505050565b6000606082840312156125bb57600080fd5b6040516060810181811067ffffffffffffffff821117156125de576125de61223f565b806040525080915082516125f181611b4b565b815260208301516126018161195c565b6020820152604083015161261481611b4b565b6040919091015292915050565b6000610160828403121561263457600080fd5b61263c6122a1565b9050815167ffffffffffffffff8082111561265657600080fd5b61266285838601612324565b8352602084015191508082111561267857600080fd5b61268485838601612324565b602084015261269560408501612319565b604084015260608401519150808211156126ae57600080fd5b6126ba85838601612324565b60608401526126cb608085016121fc565b60808401526126dc60a085016124a8565b60a08401526126ed60c085016121fc565b60c084015260e084015191508082111561270657600080fd5b50612713848285016124d7565b60e083015250610100612728848285016125a9565b9082015292915050565b600082601f83011261274357600080fd5b815160206127536124f8836124b3565b82815260a0928302850182019282820191908785111561277257600080fd5b8387015b858110156127f65781818a03121561278e5760008081fd5b612796612255565b81516127a181611b4b565b8152818601516127b08161195c565b8187015260406127c18382016121fc565b9082015260606127d28382016121fc565b908201526080828101516127e58161195c565b908201528452928401928101612776565b5090979650505050505050565b600082601f83011261281457600080fd5b815160206128246124f8836124b3565b82815260c0928302850182019282820191908785111561284357600080fd5b8387015b858110156127f65781818a03121561285f5760008081fd5b6128676122c5565b815161287281611b4b565b81528186015161288181611b4b565b8187015260408281015161289481611b4b565b908201526060828101516128a781611b4b565b9082015260806128b88382016121fc565b9082015260a0828101516128cb8161195c565b908201528452928401928101612847565b600082601f8301126128ed57600080fd5b815160206128fd6124f8836124b3565b82815260c0928302850182019282820191908785111561291c57600080fd5b8387015b858110156127f65781818a0312156129385760008081fd5b6129406122c5565b815161294b81611b4b565b81528186015161295a81611b4b565b8187015260408281015161296d81611b4b565b908201526060828101516129808161195c565b9082015260806129918382016121fc565b9082015260a0828101516129a48161195c565b908201528452928401928101612920565b600061012082840312156129c857600080fd5b6129d06122a1565b9050815167ffffffffffffffff808211156129ea57600080fd5b6129f685838601612621565b8352612a04602085016124a8565b6020840152612a15604085016121fc565b6040840152612a26606085016121fc565b6060840152612a37608085016121fc565b608084015260a0840151915080821115612a5057600080fd5b612a5c85838601612732565b60a084015260c0840151915080821115612a7557600080fd5b612a8185838601612803565b60c084015260e0840151915080821115612a9a57600080fd5b612aa6858386016128dc565b60e084015261010091508184015181811115612ac157600080fd5b612acd86828701612324565b8385015250505092915050565b60008060408385031215612aed57600080fd5b612af68361210b565b9150602083015167ffffffffffffffff80821115612b1357600080fd5b9084019060c08287031215612b2757600080fd5b612b2f6122c5565b825182811115612b3e57600080fd5b612b4a888286016129b5565b825250612b59602084016124a8565b6020820152612b6a60408401612319565b6040820152612b7b606084016124a8565b6060820152608083015182811115612b9257600080fd5b612b9e88828601612324565b608083015250612bb060a08401612319565b60a08201528093505050509250929050565b60008060408385031215612bd557600080fd5b612bde8361210b565b9150602083015190509250929050565b60008060008060808587031215612c0457600080fd5b612c0d8561210b565b9350602085015167ffffffffffffffff80821115612c2a57600080fd5b612c3688838901612732565b94506040870151915080821115612c4c57600080fd5b612c5888838901612803565b93506060870151915080821115612c6e57600080fd5b50612c7b878288016128dc565b91505092959194509250565b60008060408385031215612c9a57600080fd5b612ca38361210b565b91506122366020840161210b565b60008060408385031215612cc457600080fd5b612ccd8361210b565b9150602083015167ffffffffffffffff80821115612cea57600080fd5b9084019060408287031215612cfe57600080fd5b604051604081018181108382111715612d1957612d1961223f565b604052825182811115612d2b57600080fd5b612d37888286016129b5565b825250612d466020840161210b565b60208201528093505050509250929050565b60008060808385031215612d6b57600080fd5b612d748361210b565b915061223684602085016125a9565b60008060408385031215612d9657600080fd5b612d9f8361210b565b9150602083015167ffffffffffffffff811115612dbb57600080fd5b612472858286016129b556fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122003f9fc902afc9b62088773d289ce166d3a45c7c7992799924487795cba09d5be64736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol/TokenTransferContract.json b/artifacts/contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol/TokenTransferContract.json index 6a7ac4158..f375db8d4 100644 --- a/artifacts/contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol/TokenTransferContract.json +++ b/artifacts/contracts/hts-precompile/examples/token-transfer/TokenTransferContract.sol/TokenTransferContract.json @@ -734,8 +734,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55611696806101276000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80639b23d3d9116100a2578063df6c06f511610071578063df6c06f514610238578063eac6f3fe1461024b578063ef7839b61461025e578063f25b120014610271578063f848fec41461028457600080fd5b80639b23d3d9146101ec578063ac36efb4146101ff578063c76620ca14610212578063cc2528f01461022557600080fd5b80636c40a777116100e95780636c40a7771461018d5780636da6b1f0146101a0578063842b71db146101b3578063942e01a3146101c6578063970e23d2146101d957600080fd5b806311e1fc071461011b57806315dacbea146101465780634ba6703514610159578063581315511461017a575b600080fd5b61012e610129366004610c75565b610297565b60405160079190910b81526020015b60405180910390f35b61012e610154366004610c75565b610389565b61016c610167366004610cd2565b610445565b60405190815260200161013d565b61016c610188366004610eb5565b6104a3565b61012e61019b366004610c75565b6104ff565b61016c6101ae366004610cd2565b6105de565b61012e6101c1366004610c75565b6105ec565b61016c6101d4366004610f29565b610632565b61016c6101e7366004610f65565b61063f565b61012e6101fa366004610c75565b61065c565b61016c61020d366004610f65565b6106a1565b61016c610220366004611017565b6106be565b61016c61023336600461105a565b6106cb565b61016c610246366004610f29565b6106d9565b61012e610259366004610c75565b6106e6565b61016c61026c366004610f29565b61072b565b61016c61027f366004611017565b610738565b61016c610292366004610f29565b610745565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161031691906110f3565b600060405180830381855af49150503d8060008114610351576040519150601f19603f3d011682016040523d82523d6000602084013e610356565b606091505b50915091508161036757601561037b565b8080602001905181019061037b919061112e565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161040891906110f3565b6000604051808303816000865af19150503d8060008114610351576040519150601f19603f3d011682016040523d82523d6000602084013e610356565b600061045385858585610752565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161048691815260200190565b60405180910390a16016811461049b57600080fd5b949350505050565b60006104b084848461079a565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa816040516104e391815260200190565b60405180910390a1601681146104f857600080fd5b9392505050565b604051639b23d3d960e01b81526001600160a01b038086166004830152808516602483015283166044820152606481018290526000903090639b23d3d9906084015b602060405180830381600087803b15801561055b57600080fd5b505af115801561056f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611151565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b60161461049b57600080fd5b60006104538585858561087a565b604051630aed65f560e11b81526001600160a01b0380861660048301528085166024830152831660448201526064810182905260009030906315dacbea90608401610541565b60006104b08484846108c2565b60006104b061064d85611219565b610657848661127a565b610974565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4016103ca565b60006104b06106af85611219565b6106b9848661127a565b610a51565b60006104b0848484610af6565b600061045385858585610b34565b60006104b0848484610b64565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4016102d8565b60006104b0848484610ba1565b60006104b0848484610bde565b60006104b0848484610c1c565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a4016103ca565b60008060006101676001600160a01b03166382bba49360e01b8787876040516024016107c89392919061147e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161080691906110f3565b6000604051808303816000865af19150503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b606091505b50915091508161085957601561086d565b8080602001905181019061086d919061112e565b60030b9695505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a4016103ca565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b906084015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161093991906110f3565b600060405180830381855af49150503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b60008060006101676001600160a01b0316630e71804f60e01b86866040516024016109a0929190611510565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109de91906110f3565b6000604051808303816000865af19150503d8060008114610a1b576040519150601f19603f3d011682016040523d82523d6000602084013e610a20565b606091505b509150915081610a31576015610a45565b80806020019051810190610a45919061112e565b60030b95945050505050565b60008060006101676001600160a01b0316630e71804f60e01b8686604051602401610a7d929190611510565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610abb91906110f3565b600060405180830381855af49150503d8060008114610a1b576040519150601f19603f3d011682016040523d82523d6000602084013e610a20565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b906084016108fb565b60008060006101676001600160a01b0316632c4ba19160e01b888888886040516024016103ca949392919061160d565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b906084016107c8565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b906084016108fb565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b906084016107c8565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b906084016107c8565b80356001600160a01b0381168114610c7057600080fd5b919050565b60008060008060808587031215610c8b57600080fd5b610c9485610c59565b9350610ca260208601610c59565b9250610cb060408601610c59565b9396929550929360600135925050565b8060070b8114610ccf57600080fd5b50565b60008060008060808587031215610ce857600080fd5b610cf185610c59565b9350610cff60208601610c59565b9250610d0d60408601610c59565b91506060850135610d1d81610cc0565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610d6157610d61610d28565b60405290565b6040516080810167ffffffffffffffff81118282101715610d6157610d61610d28565b604051601f8201601f1916810167ffffffffffffffff81118282101715610db357610db3610d28565b604052919050565b600067ffffffffffffffff821115610dd557610dd5610d28565b5060051b60200190565b600082601f830112610df057600080fd5b81356020610e05610e0083610dbb565b610d8a565b82815260059290921b84018101918181019086841115610e2457600080fd5b8286015b84811015610e4657610e3981610c59565b8352918301918301610e28565b509695505050505050565b600082601f830112610e6257600080fd5b81356020610e72610e0083610dbb565b82815260059290921b84018101918181019086841115610e9157600080fd5b8286015b84811015610e46578035610ea881610cc0565b8352918301918301610e95565b600080600060608486031215610eca57600080fd5b610ed384610c59565b9250602084013567ffffffffffffffff80821115610ef057600080fd5b610efc87838801610ddf565b93506040860135915080821115610f1257600080fd5b50610f1f86828701610e51565b9150509250925092565b600080600060608486031215610f3e57600080fd5b610f4784610c59565b9250610f5560208501610c59565b9150604084013590509250925092565b600080600060408486031215610f7a57600080fd5b833567ffffffffffffffff80821115610f9257600080fd5b9085019060208288031215610fa657600080fd5b90935060208501359080821115610fbc57600080fd5b818601915086601f830112610fd057600080fd5b813581811115610fdf57600080fd5b8760208260051b8501011115610ff457600080fd5b6020830194508093505050509250925092565b80358015158114610c7057600080fd5b60008060006060848603121561102c57600080fd5b61103584610c59565b925061104360208501610c59565b915061105160408501611007565b90509250925092565b6000806000806080858703121561107057600080fd5b61107985610c59565b9350602085013567ffffffffffffffff8082111561109657600080fd5b6110a288838901610ddf565b945060408701359150808211156110b857600080fd5b6110c488838901610ddf565b935060608701359150808211156110da57600080fd5b506110e787828801610e51565b91505092959194509250565b6000825160005b8181101561111457602081860181015185830152016110fa565b81811115611123576000828501525b509190910192915050565b60006020828403121561114057600080fd5b81518060030b81146104f857600080fd5b60006020828403121561116357600080fd5b81516104f881610cc0565b600082601f83011261117f57600080fd5b8135602061118f610e0083610dbb565b828152606092830285018201928282019190878511156111ae57600080fd5b8387015b8581101561120c5781818a0312156111ca5760008081fd5b6111d2610d3e565b6111db82610c59565b8152858201356111ea81610cc0565b8187015260406111fb838201611007565b9082015284529284019281016111b2565b5090979650505050505050565b60006020823603121561122b57600080fd5b6040516020810167ffffffffffffffff828210818311171561124f5761124f610d28565b81604052843591508082111561126457600080fd5b506112713682860161116e565b82525092915050565b6000611288610e0084610dbb565b80848252602080830192508560051b8501368111156112a657600080fd5b855b818110156113fb57803567ffffffffffffffff808211156112c95760008081fd5b818901915060608083360312156112e05760008081fd5b6112e8610d3e565b6112f184610c59565b815286840135838111156113055760008081fd5b6113113682870161116e565b88830152506040808501358481111561132a5760008081fd5b949094019336601f86011261134157600093508384fd5b84359350611351610e0085610dbb565b84815260079490941b850188019388810190368611156113715760008081fd5b958901955b858710156113e3576080873603121561138f5760008081fd5b611397610d67565b6113a088610c59565b81526113ad8b8901610c59565b8b820152838801356113be81610cc0565b818501526113cd888701611007565b8187015282526080969096019590890190611376565b918301919091525088525050509382019382016112a8565b50919695505050505050565b600081518084526020808501945080840160005b838110156114405781516001600160a01b03168752958201959082019060010161141b565b509495945050505050565b600081518084526020808501945080840160005b8381101561144057815160070b8752958201959082019060010161145f565b6001600160a01b03841681526060602082015260006114a06060830185611407565b82810360408401526114b2818561144b565b9695505050505050565b600081518084526020808501945080840160005b8381101561144057815180516001600160a01b031688528381015160070b84890152604090810151151590880152606090960195908201906001016114d0565b60006040808352606085516020808487015261152e838701836114bc565b9150858203818701528187518084528284019150828160051b850101838a0160005b838110156115fc57601f1987840301855281516001600160a01b03808251168552878201518a898701526115868b8701826114bc565b928c0151868403878e01528051808552908a0193600092508a01905b808310156115e65784518051851683528b81015185168c8401528e81015160070b8f8401528d015115158d830152938a0193600192909201916080909101906115a2565b5097890197955050509186019150600101611550565b50909b9a5050505050505050505050565b6001600160a01b038516815260806020820152600061162f6080830186611407565b82810360408401526116418186611407565b90508281036060840152611655818561144b565b97965050505050505056fea2646970667358221220622a05f2f323d85cc3793bea1ee1ad5aa92e71e0b4007e65eeb5821d9481cb2c64736f6c63430008090033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80639b23d3d9116100a2578063df6c06f511610071578063df6c06f514610238578063eac6f3fe1461024b578063ef7839b61461025e578063f25b120014610271578063f848fec41461028457600080fd5b80639b23d3d9146101ec578063ac36efb4146101ff578063c76620ca14610212578063cc2528f01461022557600080fd5b80636c40a777116100e95780636c40a7771461018d5780636da6b1f0146101a0578063842b71db146101b3578063942e01a3146101c6578063970e23d2146101d957600080fd5b806311e1fc071461011b57806315dacbea146101465780634ba6703514610159578063581315511461017a575b600080fd5b61012e610129366004610c75565b610297565b60405160079190910b81526020015b60405180910390f35b61012e610154366004610c75565b610389565b61016c610167366004610cd2565b610445565b60405190815260200161013d565b61016c610188366004610eb5565b6104a3565b61012e61019b366004610c75565b6104ff565b61016c6101ae366004610cd2565b6105de565b61012e6101c1366004610c75565b6105ec565b61016c6101d4366004610f29565b610632565b61016c6101e7366004610f65565b61063f565b61012e6101fa366004610c75565b61065c565b61016c61020d366004610f65565b6106a1565b61016c610220366004611017565b6106be565b61016c61023336600461105a565b6106cb565b61016c610246366004610f29565b6106d9565b61012e610259366004610c75565b6106e6565b61016c61026c366004610f29565b61072b565b61016c61027f366004611017565b610738565b61016c610292366004610f29565b610745565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161031691906110f3565b600060405180830381855af49150503d8060008114610351576040519150601f19603f3d011682016040523d82523d6000602084013e610356565b606091505b50915091508161036757601561037b565b8080602001905181019061037b919061112e565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161040891906110f3565b6000604051808303816000865af19150503d8060008114610351576040519150601f19603f3d011682016040523d82523d6000602084013e610356565b600061045385858585610752565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161048691815260200190565b60405180910390a16016811461049b57600080fd5b949350505050565b60006104b084848461079a565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa816040516104e391815260200190565b60405180910390a1601681146104f857600080fd5b9392505050565b604051639b23d3d960e01b81526001600160a01b038086166004830152808516602483015283166044820152606481018290526000903090639b23d3d9906084015b602060405180830381600087803b15801561055b57600080fd5b505af115801561056f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611151565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b60161461049b57600080fd5b60006104538585858561087a565b604051630aed65f560e11b81526001600160a01b0380861660048301528085166024830152831660448201526064810182905260009030906315dacbea90608401610541565b60006104b08484846108c2565b60006104b061064d85611219565b610657848661127a565b610974565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4016103ca565b60006104b06106af85611219565b6106b9848661127a565b610a51565b60006104b0848484610af6565b600061045385858585610b34565b60006104b0848484610b64565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4016102d8565b60006104b0848484610ba1565b60006104b0848484610bde565b60006104b0848484610c1c565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a4016103ca565b60008060006101676001600160a01b03166382bba49360e01b8787876040516024016107c89392919061147e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161080691906110f3565b6000604051808303816000865af19150503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b606091505b50915091508161085957601561086d565b8080602001905181019061086d919061112e565b60030b9695505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a4016103ca565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b906084015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161093991906110f3565b600060405180830381855af49150503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b60008060006101676001600160a01b0316630e71804f60e01b86866040516024016109a0929190611510565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109de91906110f3565b6000604051808303816000865af19150503d8060008114610a1b576040519150601f19603f3d011682016040523d82523d6000602084013e610a20565b606091505b509150915081610a31576015610a45565b80806020019051810190610a45919061112e565b60030b95945050505050565b60008060006101676001600160a01b0316630e71804f60e01b8686604051602401610a7d929190611510565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610abb91906110f3565b600060405180830381855af49150503d8060008114610a1b576040519150601f19603f3d011682016040523d82523d6000602084013e610a20565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b906084016108fb565b60008060006101676001600160a01b0316632c4ba19160e01b888888886040516024016103ca949392919061160d565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b906084016107c8565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b906084016108fb565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b906084016107c8565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b906084016107c8565b80356001600160a01b0381168114610c7057600080fd5b919050565b60008060008060808587031215610c8b57600080fd5b610c9485610c59565b9350610ca260208601610c59565b9250610cb060408601610c59565b9396929550929360600135925050565b8060070b8114610ccf57600080fd5b50565b60008060008060808587031215610ce857600080fd5b610cf185610c59565b9350610cff60208601610c59565b9250610d0d60408601610c59565b91506060850135610d1d81610cc0565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610d6157610d61610d28565b60405290565b6040516080810167ffffffffffffffff81118282101715610d6157610d61610d28565b604051601f8201601f1916810167ffffffffffffffff81118282101715610db357610db3610d28565b604052919050565b600067ffffffffffffffff821115610dd557610dd5610d28565b5060051b60200190565b600082601f830112610df057600080fd5b81356020610e05610e0083610dbb565b610d8a565b82815260059290921b84018101918181019086841115610e2457600080fd5b8286015b84811015610e4657610e3981610c59565b8352918301918301610e28565b509695505050505050565b600082601f830112610e6257600080fd5b81356020610e72610e0083610dbb565b82815260059290921b84018101918181019086841115610e9157600080fd5b8286015b84811015610e46578035610ea881610cc0565b8352918301918301610e95565b600080600060608486031215610eca57600080fd5b610ed384610c59565b9250602084013567ffffffffffffffff80821115610ef057600080fd5b610efc87838801610ddf565b93506040860135915080821115610f1257600080fd5b50610f1f86828701610e51565b9150509250925092565b600080600060608486031215610f3e57600080fd5b610f4784610c59565b9250610f5560208501610c59565b9150604084013590509250925092565b600080600060408486031215610f7a57600080fd5b833567ffffffffffffffff80821115610f9257600080fd5b9085019060208288031215610fa657600080fd5b90935060208501359080821115610fbc57600080fd5b818601915086601f830112610fd057600080fd5b813581811115610fdf57600080fd5b8760208260051b8501011115610ff457600080fd5b6020830194508093505050509250925092565b80358015158114610c7057600080fd5b60008060006060848603121561102c57600080fd5b61103584610c59565b925061104360208501610c59565b915061105160408501611007565b90509250925092565b6000806000806080858703121561107057600080fd5b61107985610c59565b9350602085013567ffffffffffffffff8082111561109657600080fd5b6110a288838901610ddf565b945060408701359150808211156110b857600080fd5b6110c488838901610ddf565b935060608701359150808211156110da57600080fd5b506110e787828801610e51565b91505092959194509250565b6000825160005b8181101561111457602081860181015185830152016110fa565b81811115611123576000828501525b509190910192915050565b60006020828403121561114057600080fd5b81518060030b81146104f857600080fd5b60006020828403121561116357600080fd5b81516104f881610cc0565b600082601f83011261117f57600080fd5b8135602061118f610e0083610dbb565b828152606092830285018201928282019190878511156111ae57600080fd5b8387015b8581101561120c5781818a0312156111ca5760008081fd5b6111d2610d3e565b6111db82610c59565b8152858201356111ea81610cc0565b8187015260406111fb838201611007565b9082015284529284019281016111b2565b5090979650505050505050565b60006020823603121561122b57600080fd5b6040516020810167ffffffffffffffff828210818311171561124f5761124f610d28565b81604052843591508082111561126457600080fd5b506112713682860161116e565b82525092915050565b6000611288610e0084610dbb565b80848252602080830192508560051b8501368111156112a657600080fd5b855b818110156113fb57803567ffffffffffffffff808211156112c95760008081fd5b818901915060608083360312156112e05760008081fd5b6112e8610d3e565b6112f184610c59565b815286840135838111156113055760008081fd5b6113113682870161116e565b88830152506040808501358481111561132a5760008081fd5b949094019336601f86011261134157600093508384fd5b84359350611351610e0085610dbb565b84815260079490941b850188019388810190368611156113715760008081fd5b958901955b858710156113e3576080873603121561138f5760008081fd5b611397610d67565b6113a088610c59565b81526113ad8b8901610c59565b8b820152838801356113be81610cc0565b818501526113cd888701611007565b8187015282526080969096019590890190611376565b918301919091525088525050509382019382016112a8565b50919695505050505050565b600081518084526020808501945080840160005b838110156114405781516001600160a01b03168752958201959082019060010161141b565b509495945050505050565b600081518084526020808501945080840160005b8381101561144057815160070b8752958201959082019060010161145f565b6001600160a01b03841681526060602082015260006114a06060830185611407565b82810360408401526114b2818561144b565b9695505050505050565b600081518084526020808501945080840160005b8381101561144057815180516001600160a01b031688528381015160070b84890152604090810151151590880152606090960195908201906001016114d0565b60006040808352606085516020808487015261152e838701836114bc565b9150858203818701528187518084528284019150828160051b850101838a0160005b838110156115fc57601f1987840301855281516001600160a01b03808251168552878201518a898701526115868b8701826114bc565b928c0151868403878e01528051808552908a0193600092508a01905b808310156115e65784518051851683528b81015185168c8401528e81015160070b8f8401528d015115158d830152938a0193600192909201916080909101906115a2565b5097890197955050509186019150600101611550565b50909b9a5050505050505050505050565b6001600160a01b038516815260806020820152600061162f6080830186611407565b82810360408401526116418186611407565b90508281036060840152611655818561144b565b97965050505050505056fea2646970667358221220622a05f2f323d85cc3793bea1ee1ad5aa92e71e0b4007e65eeb5821d9481cb2c64736f6c63430008090033", + "bytecode": "0x608060405234801561001057600080fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c55600660005260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a55611696806101276000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80639b23d3d9116100a2578063df6c06f511610071578063df6c06f514610238578063eac6f3fe1461024b578063ef7839b61461025e578063f25b120014610271578063f848fec41461028457600080fd5b80639b23d3d9146101ec578063ac36efb4146101ff578063c76620ca14610212578063cc2528f01461022557600080fd5b80636c40a777116100e95780636c40a7771461018d5780636da6b1f0146101a0578063842b71db146101b3578063942e01a3146101c6578063970e23d2146101d957600080fd5b806311e1fc071461011b57806315dacbea146101465780634ba6703514610159578063581315511461017a575b600080fd5b61012e610129366004610c75565b610297565b60405160079190910b81526020015b60405180910390f35b61012e610154366004610c75565b610389565b61016c610167366004610cd2565b610445565b60405190815260200161013d565b61016c610188366004610eb5565b6104a3565b61012e61019b366004610c75565b6104ff565b61016c6101ae366004610cd2565b6105de565b61012e6101c1366004610c75565b6105ec565b61016c6101d4366004610f29565b610632565b61016c6101e7366004610f65565b61063f565b61012e6101fa366004610c75565b61065c565b61016c61020d366004610f65565b6106a1565b61016c610220366004611017565b6106be565b61016c61023336600461105a565b6106cb565b61016c610246366004610f29565b6106d9565b61012e610259366004610c75565b6106e6565b61016c61026c366004610f29565b61072b565b61016c61027f366004611017565b610738565b61016c610292366004610f29565b610745565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161031691906110f3565b600060405180830381855af49150503d8060008114610351576040519150601f19603f3d011682016040523d82523d6000602084013e610356565b606091505b50915091508161036757601561037b565b8080602001905181019061037b919061112e565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161040891906110f3565b6000604051808303816000865af19150503d8060008114610351576040519150601f19603f3d011682016040523d82523d6000602084013e610356565b600061045385858585610752565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161048691815260200190565b60405180910390a16016811461049b57600080fd5b949350505050565b60006104b084848461079a565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa816040516104e391815260200190565b60405180910390a1601681146104f857600080fd5b9392505050565b604051639b23d3d960e01b81526001600160a01b038086166004830152808516602483015283166044820152606481018290526000903090639b23d3d9906084015b602060405180830381600087803b15801561055b57600080fd5b505af115801561056f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611151565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b60161461049b57600080fd5b60006104538585858561087a565b604051630aed65f560e11b81526001600160a01b0380861660048301528085166024830152831660448201526064810182905260009030906315dacbea90608401610541565b60006104b08484846108c2565b60006104b061064d85611219565b610657848661127a565b610974565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4016103ca565b60006104b06106af85611219565b6106b9848661127a565b610a51565b60006104b0848484610af6565b600061045385858585610b34565b60006104b0848484610b64565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4016102d8565b60006104b0848484610ba1565b60006104b0848484610bde565b60006104b0848484610c1c565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a4016103ca565b60008060006101676001600160a01b03166382bba49360e01b8787876040516024016107c89392919061147e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161080691906110f3565b6000604051808303816000865af19150503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b606091505b50915091508161085957601561086d565b8080602001905181019061086d919061112e565b60030b9695505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a4016103ca565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b906084015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161093991906110f3565b600060405180830381855af49150503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b60008060006101676001600160a01b0316630e71804f60e01b86866040516024016109a0929190611510565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109de91906110f3565b6000604051808303816000865af19150503d8060008114610a1b576040519150601f19603f3d011682016040523d82523d6000602084013e610a20565b606091505b509150915081610a31576015610a45565b80806020019051810190610a45919061112e565b60030b95945050505050565b60008060006101676001600160a01b0316630e71804f60e01b8686604051602401610a7d929190611510565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610abb91906110f3565b600060405180830381855af49150503d8060008114610a1b576040519150601f19603f3d011682016040523d82523d6000602084013e610a20565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b906084016108fb565b60008060006101676001600160a01b0316632c4ba19160e01b888888886040516024016103ca949392919061160d565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b906084016107c8565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b906084016108fb565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b906084016107c8565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b906084016107c8565b80356001600160a01b0381168114610c7057600080fd5b919050565b60008060008060808587031215610c8b57600080fd5b610c9485610c59565b9350610ca260208601610c59565b9250610cb060408601610c59565b9396929550929360600135925050565b8060070b8114610ccf57600080fd5b50565b60008060008060808587031215610ce857600080fd5b610cf185610c59565b9350610cff60208601610c59565b9250610d0d60408601610c59565b91506060850135610d1d81610cc0565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610d6157610d61610d28565b60405290565b6040516080810167ffffffffffffffff81118282101715610d6157610d61610d28565b604051601f8201601f1916810167ffffffffffffffff81118282101715610db357610db3610d28565b604052919050565b600067ffffffffffffffff821115610dd557610dd5610d28565b5060051b60200190565b600082601f830112610df057600080fd5b81356020610e05610e0083610dbb565b610d8a565b82815260059290921b84018101918181019086841115610e2457600080fd5b8286015b84811015610e4657610e3981610c59565b8352918301918301610e28565b509695505050505050565b600082601f830112610e6257600080fd5b81356020610e72610e0083610dbb565b82815260059290921b84018101918181019086841115610e9157600080fd5b8286015b84811015610e46578035610ea881610cc0565b8352918301918301610e95565b600080600060608486031215610eca57600080fd5b610ed384610c59565b9250602084013567ffffffffffffffff80821115610ef057600080fd5b610efc87838801610ddf565b93506040860135915080821115610f1257600080fd5b50610f1f86828701610e51565b9150509250925092565b600080600060608486031215610f3e57600080fd5b610f4784610c59565b9250610f5560208501610c59565b9150604084013590509250925092565b600080600060408486031215610f7a57600080fd5b833567ffffffffffffffff80821115610f9257600080fd5b9085019060208288031215610fa657600080fd5b90935060208501359080821115610fbc57600080fd5b818601915086601f830112610fd057600080fd5b813581811115610fdf57600080fd5b8760208260051b8501011115610ff457600080fd5b6020830194508093505050509250925092565b80358015158114610c7057600080fd5b60008060006060848603121561102c57600080fd5b61103584610c59565b925061104360208501610c59565b915061105160408501611007565b90509250925092565b6000806000806080858703121561107057600080fd5b61107985610c59565b9350602085013567ffffffffffffffff8082111561109657600080fd5b6110a288838901610ddf565b945060408701359150808211156110b857600080fd5b6110c488838901610ddf565b935060608701359150808211156110da57600080fd5b506110e787828801610e51565b91505092959194509250565b6000825160005b8181101561111457602081860181015185830152016110fa565b81811115611123576000828501525b509190910192915050565b60006020828403121561114057600080fd5b81518060030b81146104f857600080fd5b60006020828403121561116357600080fd5b81516104f881610cc0565b600082601f83011261117f57600080fd5b8135602061118f610e0083610dbb565b828152606092830285018201928282019190878511156111ae57600080fd5b8387015b8581101561120c5781818a0312156111ca5760008081fd5b6111d2610d3e565b6111db82610c59565b8152858201356111ea81610cc0565b8187015260406111fb838201611007565b9082015284529284019281016111b2565b5090979650505050505050565b60006020823603121561122b57600080fd5b6040516020810167ffffffffffffffff828210818311171561124f5761124f610d28565b81604052843591508082111561126457600080fd5b506112713682860161116e565b82525092915050565b6000611288610e0084610dbb565b80848252602080830192508560051b8501368111156112a657600080fd5b855b818110156113fb57803567ffffffffffffffff808211156112c95760008081fd5b818901915060608083360312156112e05760008081fd5b6112e8610d3e565b6112f184610c59565b815286840135838111156113055760008081fd5b6113113682870161116e565b88830152506040808501358481111561132a5760008081fd5b949094019336601f86011261134157600093508384fd5b84359350611351610e0085610dbb565b84815260079490941b850188019388810190368611156113715760008081fd5b958901955b858710156113e3576080873603121561138f5760008081fd5b611397610d67565b6113a088610c59565b81526113ad8b8901610c59565b8b820152838801356113be81610cc0565b818501526113cd888701611007565b8187015282526080969096019590890190611376565b918301919091525088525050509382019382016112a8565b50919695505050505050565b600081518084526020808501945080840160005b838110156114405781516001600160a01b03168752958201959082019060010161141b565b509495945050505050565b600081518084526020808501945080840160005b8381101561144057815160070b8752958201959082019060010161145f565b6001600160a01b03841681526060602082015260006114a06060830185611407565b82810360408401526114b2818561144b565b9695505050505050565b600081518084526020808501945080840160005b8381101561144057815180516001600160a01b031688528381015160070b84890152604090810151151590880152606090960195908201906001016114d0565b60006040808352606085516020808487015261152e838701836114bc565b9150858203818701528187518084528284019150828160051b850101838a0160005b838110156115fc57601f1987840301855281516001600160a01b03808251168552878201518a898701526115868b8701826114bc565b928c0151868403878e01528051808552908a0193600092508a01905b808310156115e65784518051851683528b81015185168c8401528e81015160070b8f8401528d015115158d830152938a0193600192909201916080909101906115a2565b5097890197955050509186019150600101611550565b50909b9a5050505050505050505050565b6001600160a01b038516815260806020820152600061162f6080830186611407565b82810360408401526116418186611407565b90508281036060840152611655818561144b565b97965050505050505056fea264697066735822122018ef42ee319b91bcf57d3dd0b0cef7fc3831cd4578a40730345053509949423164736f6c63430008090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80639b23d3d9116100a2578063df6c06f511610071578063df6c06f514610238578063eac6f3fe1461024b578063ef7839b61461025e578063f25b120014610271578063f848fec41461028457600080fd5b80639b23d3d9146101ec578063ac36efb4146101ff578063c76620ca14610212578063cc2528f01461022557600080fd5b80636c40a777116100e95780636c40a7771461018d5780636da6b1f0146101a0578063842b71db146101b3578063942e01a3146101c6578063970e23d2146101d957600080fd5b806311e1fc071461011b57806315dacbea146101465780634ba6703514610159578063581315511461017a575b600080fd5b61012e610129366004610c75565b610297565b60405160079190910b81526020015b60405180910390f35b61012e610154366004610c75565b610389565b61016c610167366004610cd2565b610445565b60405190815260200161013d565b61016c610188366004610eb5565b6104a3565b61012e61019b366004610c75565b6104ff565b61016c6101ae366004610cd2565b6105de565b61012e6101c1366004610c75565b6105ec565b61016c6101d4366004610f29565b610632565b61016c6101e7366004610f65565b61063f565b61012e6101fa366004610c75565b61065c565b61016c61020d366004610f65565b6106a1565b61016c610220366004611017565b6106be565b61016c61023336600461105a565b6106cb565b61016c610246366004610f29565b6106d9565b61012e610259366004610c75565b6106e6565b61016c61026c366004610f29565b61072b565b61016c61027f366004611017565b610738565b61016c610292366004610f29565b610745565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161031691906110f3565b600060405180830381855af49150503d8060008114610351576040519150601f19603f3d011682016040523d82523d6000602084013e610356565b606091505b50915091508161036757601561037b565b8080602001905181019061037b919061112e565b60030b979650505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161040891906110f3565b6000604051808303816000865af19150503d8060008114610351576040519150601f19603f3d011682016040523d82523d6000602084013e610356565b600061045385858585610752565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa8160405161048691815260200190565b60405180910390a16016811461049b57600080fd5b949350505050565b60006104b084848461079a565b90507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa816040516104e391815260200190565b60405180910390a1601681146104f857600080fd5b9392505050565b604051639b23d3d960e01b81526001600160a01b038086166004830152808516602483015283166044820152606481018290526000903090639b23d3d9906084015b602060405180830381600087803b15801561055b57600080fd5b505af115801561056f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611151565b604051600782900b81529091507f90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aa9060200160405180910390a1600781900b60161461049b57600080fd5b60006104538585858561087a565b604051630aed65f560e11b81526001600160a01b0380861660048301528085166024830152831660448201526064810182905260009030906315dacbea90608401610541565b60006104b08484846108c2565b60006104b061064d85611219565b610657848661127a565b610974565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790639b23d3d960e01b9060a4016103ca565b60006104b06106af85611219565b6106b9848661127a565b610a51565b60006104b0848484610af6565b600061045385858585610b34565b60006104b0848484610b64565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290526000908190819061016790630aed65f560e11b9060a4016102d8565b60006104b0848484610ba1565b60006104b0848484610bde565b60006104b0848484610c1c565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b6084820152600090819081906101679063eca3691760e01b9060a4016103ca565b60008060006101676001600160a01b03166382bba49360e01b8787876040516024016107c89392919061147e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161080691906110f3565b6000604051808303816000865af19150503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b606091505b50915091508161085957601561086d565b8080602001905181019061086d919061112e565b60030b9695505050505050565b6040516001600160a01b038581166024830152848116604483015283166064820152600782900b60848201526000908190819061016790635cfc901160e01b9060a4016103ca565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b906084015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161093991906110f3565b600060405180830381855af49150503d8060008114610843576040519150601f19603f3d011682016040523d82523d6000602084013e610848565b60008060006101676001600160a01b0316630e71804f60e01b86866040516024016109a0929190611510565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109de91906110f3565b6000604051808303816000865af19150503d8060008114610a1b576040519150601f19603f3d011682016040523d82523d6000602084013e610a20565b606091505b509150915081610a31576015610a45565b80806020019051810190610a45919061112e565b60030b95945050505050565b60008060006101676001600160a01b0316630e71804f60e01b8686604051602401610a7d929190611510565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610abb91906110f3565b600060405180830381855af49150503d8060008114610a1b576040519150601f19603f3d011682016040523d82523d6000602084013e610a20565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b906084016108fb565b60008060006101676001600160a01b0316632c4ba19160e01b888888886040516024016103ca949392919061160d565b6040516001600160a01b038481166024830152831660448201526064810182905260009081908190610167906307336aaf60e41b906084016107c8565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b906084016108fb565b6040516001600160a01b0384811660248301528316604482015281151560648201526000908190819061016790631b3b02e560e11b906084016107c8565b6040516001600160a01b0384811660248301528316604482015260648101829052600090819081906101679063e1f21c6760e01b906084016107c8565b80356001600160a01b0381168114610c7057600080fd5b919050565b60008060008060808587031215610c8b57600080fd5b610c9485610c59565b9350610ca260208601610c59565b9250610cb060408601610c59565b9396929550929360600135925050565b8060070b8114610ccf57600080fd5b50565b60008060008060808587031215610ce857600080fd5b610cf185610c59565b9350610cff60208601610c59565b9250610d0d60408601610c59565b91506060850135610d1d81610cc0565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610d6157610d61610d28565b60405290565b6040516080810167ffffffffffffffff81118282101715610d6157610d61610d28565b604051601f8201601f1916810167ffffffffffffffff81118282101715610db357610db3610d28565b604052919050565b600067ffffffffffffffff821115610dd557610dd5610d28565b5060051b60200190565b600082601f830112610df057600080fd5b81356020610e05610e0083610dbb565b610d8a565b82815260059290921b84018101918181019086841115610e2457600080fd5b8286015b84811015610e4657610e3981610c59565b8352918301918301610e28565b509695505050505050565b600082601f830112610e6257600080fd5b81356020610e72610e0083610dbb565b82815260059290921b84018101918181019086841115610e9157600080fd5b8286015b84811015610e46578035610ea881610cc0565b8352918301918301610e95565b600080600060608486031215610eca57600080fd5b610ed384610c59565b9250602084013567ffffffffffffffff80821115610ef057600080fd5b610efc87838801610ddf565b93506040860135915080821115610f1257600080fd5b50610f1f86828701610e51565b9150509250925092565b600080600060608486031215610f3e57600080fd5b610f4784610c59565b9250610f5560208501610c59565b9150604084013590509250925092565b600080600060408486031215610f7a57600080fd5b833567ffffffffffffffff80821115610f9257600080fd5b9085019060208288031215610fa657600080fd5b90935060208501359080821115610fbc57600080fd5b818601915086601f830112610fd057600080fd5b813581811115610fdf57600080fd5b8760208260051b8501011115610ff457600080fd5b6020830194508093505050509250925092565b80358015158114610c7057600080fd5b60008060006060848603121561102c57600080fd5b61103584610c59565b925061104360208501610c59565b915061105160408501611007565b90509250925092565b6000806000806080858703121561107057600080fd5b61107985610c59565b9350602085013567ffffffffffffffff8082111561109657600080fd5b6110a288838901610ddf565b945060408701359150808211156110b857600080fd5b6110c488838901610ddf565b935060608701359150808211156110da57600080fd5b506110e787828801610e51565b91505092959194509250565b6000825160005b8181101561111457602081860181015185830152016110fa565b81811115611123576000828501525b509190910192915050565b60006020828403121561114057600080fd5b81518060030b81146104f857600080fd5b60006020828403121561116357600080fd5b81516104f881610cc0565b600082601f83011261117f57600080fd5b8135602061118f610e0083610dbb565b828152606092830285018201928282019190878511156111ae57600080fd5b8387015b8581101561120c5781818a0312156111ca5760008081fd5b6111d2610d3e565b6111db82610c59565b8152858201356111ea81610cc0565b8187015260406111fb838201611007565b9082015284529284019281016111b2565b5090979650505050505050565b60006020823603121561122b57600080fd5b6040516020810167ffffffffffffffff828210818311171561124f5761124f610d28565b81604052843591508082111561126457600080fd5b506112713682860161116e565b82525092915050565b6000611288610e0084610dbb565b80848252602080830192508560051b8501368111156112a657600080fd5b855b818110156113fb57803567ffffffffffffffff808211156112c95760008081fd5b818901915060608083360312156112e05760008081fd5b6112e8610d3e565b6112f184610c59565b815286840135838111156113055760008081fd5b6113113682870161116e565b88830152506040808501358481111561132a5760008081fd5b949094019336601f86011261134157600093508384fd5b84359350611351610e0085610dbb565b84815260079490941b850188019388810190368611156113715760008081fd5b958901955b858710156113e3576080873603121561138f5760008081fd5b611397610d67565b6113a088610c59565b81526113ad8b8901610c59565b8b820152838801356113be81610cc0565b818501526113cd888701611007565b8187015282526080969096019590890190611376565b918301919091525088525050509382019382016112a8565b50919695505050505050565b600081518084526020808501945080840160005b838110156114405781516001600160a01b03168752958201959082019060010161141b565b509495945050505050565b600081518084526020808501945080840160005b8381101561144057815160070b8752958201959082019060010161145f565b6001600160a01b03841681526060602082015260006114a06060830185611407565b82810360408401526114b2818561144b565b9695505050505050565b600081518084526020808501945080840160005b8381101561144057815180516001600160a01b031688528381015160070b84890152604090810151151590880152606090960195908201906001016114d0565b60006040808352606085516020808487015261152e838701836114bc565b9150858203818701528187518084528284019150828160051b850101838a0160005b838110156115fc57601f1987840301855281516001600160a01b03808251168552878201518a898701526115868b8701826114bc565b928c0151868403878e01528051808552908a0193600092508a01905b808310156115e65784518051851683528b81015185168c8401528e81015160070b8f8401528d015115158d830152938a0193600192909201916080909101906115a2565b5097890197955050509186019150600101611550565b50909b9a5050505050505050505050565b6001600160a01b038516815260806020820152600061162f6080830186611407565b82810360408401526116418186611407565b90508281036060840152611655818561144b565b97965050505050505056fea264697066735822122018ef42ee319b91bcf57d3dd0b0cef7fc3831cd4578a40730345053509949423164736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/safe-hts-precompile/SafeHTS.sol/SafeHTS.json b/artifacts/contracts/safe-hts-precompile/SafeHTS.sol/SafeHTS.json index 613d849bb..a14abbc00 100644 --- a/artifacts/contracts/safe-hts-precompile/SafeHTS.sol/SafeHTS.json +++ b/artifacts/contracts/safe-hts-precompile/SafeHTS.sol/SafeHTS.json @@ -229,8 +229,8 @@ "type": "error" } ], - "bytecode": "0x615f786200003b600b82828239805160001a60731461002e57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106102d95760003560e01c806367ac845311610196578063978df2a2116100f8578063da49aa40116100a1578063dfb3bfc41161007b578063dfb3bfc4146108e8578063eb5625d914610908578063eccc07c61461092857600080fd5b8063da49aa4014610870578063db297c8f146108a8578063dc7a9cd4146108c857600080fd5b8063be83aa99116100d2578063be83aa9914610810578063ccc261fe14610830578063cf58c3ea1461085057600080fd5b8063978df2a2146107a25780639c7e98d0146107c2578063ba2ad973146107e257600080fd5b806382ddffbf1161015a5780638d1433dd116101345780638d1433dd1461072a578063910f27111461074a57806394f74f3e1461078257600080fd5b806382ddffbf146106ca57806387e6877c146106ea578063894c66531461070a57600080fd5b806367ac84531461061d5780636e4333fd1461063d5780636efe63a51461066a578063705314a01461068a5780637c6c6a84146106aa57600080fd5b80633e54fba81161023f5780634ddd613b1161020357806354a0b16c116101dd57806354a0b16c1461059d57806355caeb09146105ca578063587da69a146105fd57600080fd5b80634ddd613b1461053d5780634e03000f1461055d5780635140d67d1461057d57600080fd5b80633e54fba81461048057806344f8e471146104b057806348b14613146104dd5780634959707b146104fd57806349c8532b1461051d57600080fd5b806319cdce7e116102a15780632dbfc4a61161027b5780632dbfc4a614610403578063321060ab146104235780633364596e1461045157600080fd5b806319cdce7e146103a35780631ffbb8d7146103c35780632ad145af146103e357600080fd5b8063042a34b8146102de57806305923cee14610314578063067fa122146103365780630962e27b1461036357806310e9065514610383575b600080fd5b8180156102ea57600080fd5b506102fe6102f93660046133d6565b610948565b60405161030b91906138a6565b60405180910390f35b81801561032057600080fd5b5061033461032f3660046138f8565b610a42565b005b81801561034257600080fd5b506103566103513660046133d6565b610b1f565b60405161030b9190613943565b81801561036f57600080fd5b5061033461037e366004613b72565b610c11565b81801561038f57600080fd5b5061033461039e366004613da7565b610ce9565b8180156103af57600080fd5b506103346103be3660046133d6565b610dc5565b8180156103cf57600080fd5b506103346103de366004613ddd565b610e89565b8180156103ef57600080fd5b506103346103fe366004613ddd565b610f55565b81801561040f57600080fd5b5061033461041e366004613e16565b611021565b81801561042f57600080fd5b5061044361043e366004613ee3565b6110f9565b60405161030b929190613fba565b81801561045d57600080fd5b5061047161046c3660046133d6565b611218565b60405161030b93929190614007565b81801561048c57600080fd5b506104a061049b366004614040565b611319565b604051901515815260200161030b565b8180156104bc57600080fd5b506104d06104cb366004614080565b61141f565b60405161030b91906140ac565b8180156104e957600080fd5b506103346104f83660046140bf565b61155c565b81801561050957600080fd5b506104a0610518366004613ddd565b611630565b81801561052957600080fd5b506103346105383660046140ff565b611724565b81801561054957600080fd5b506104a06105583660046133d6565b61180a565b81801561056957600080fd5b506103346105783660046142b0565b6118f5565b81801561058957600080fd5b506104a0610598366004613ddd565b6119cb565b8180156105a957600080fd5b506105bd6105b83660046142ff565b611abf565b60405161030b919061432d565b8180156105d657600080fd5b506105ea6105e53660046133d6565b611bbb565b60405160039190910b815260200161030b565b81801561060957600080fd5b506103346106183660046140ff565b611ca7565b81801561062957600080fd5b506103346106383660046144c1565b611d85565b81801561064957600080fd5b5061065d6106583660046133d6565b611e64565b60405161030b9190614506565b81801561067657600080fd5b5061033461068536600461459e565b611f68565b81801561069657600080fd5b506103346106a5366004614663565b612040565b8180156106b657600080fd5b506103346106c53660046146a8565b612116565b8180156106d657600080fd5b506103346106e5366004613ddd565b6121f0565b8180156106f657600080fd5b50610334610705366004614663565b6122bc565b81801561071657600080fd5b506103346107253660046133d6565b612392565b81801561073657600080fd5b506104a06107453660046133d6565b612455565b81801561075657600080fd5b5061076a610765366004614742565b612541565b6040516001600160a01b03909116815260200161030b565b81801561078e57600080fd5b5061033461079d366004613ddd565b612646565b8180156107ae57600080fd5b5061076a6107bd3660046142ff565b612712565b8180156107ce57600080fd5b506103346107dd366004613ddd565b612808565b8180156107ee57600080fd5b506108026107fd366004614040565b6128d4565b60405190815260200161030b565b81801561081c57600080fd5b5061033461082b36600461477e565b6129d0565b81801561083c57600080fd5b5061076a61084b3660046148b1565b612aa8565b81801561085c57600080fd5b5061033461086b3660046133d6565b612bb1565b81801561087c57600080fd5b5061089061088b366004614a0f565b612c75565b6040516001600160401b03909116815260200161030b565b8180156108b457600080fd5b5061076a6108c3366004614a3f565b612d74565b8180156108d457600080fd5b5061076a6108e3366004614bb1565b612e8d565b8180156108f457600080fd5b506104a06109033660046133d6565b612f97565b81801561091457600080fd5b50610334610923366004614bfe565b613083565b81801561093457600080fd5b50610334610943366004613ddd565b613153565b610950613299565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b179052905160009182918291610167916109a99190614c3f565b6000604051808303816000865af19150503d80600081146109e6576040519150601f19603f3d011682016040523d82523d6000602084013e6109eb565b606091505b5091509150816109fd57601584610a11565b80806020019051810190610a119190615338565b94509250600383900b601614610a3a57604051631fbc7c8f60e01b815260040160405180910390fd5b505050919050565b604080516001600160a01b03858116602483015284166044820152600783900b60648083019190915282518083039091018152608490910182526020810180516001600160e01b03166307336aaf60e41b1790529051600091829161016791610aaa91614c3f565b6000604051808303816000865af19150503d8060008114610ae7576040519150601f19603f3d011682016040523d82523d6000602084013e610aec565b606091505b5091509150610afb828261321f565b610b18576040516323241c4960e01b815260040160405180910390fd5b5050505050565b610b276132b9565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291829161016791610b809190614c3f565b6000604051808303816000865af19150503d8060008114610bbd576040519150601f19603f3d011682016040523d82523d6000602084013e610bc2565b606091505b509150915081610bd457601584610be8565b80806020019051810190610be891906153e3565b94509250600383900b601614610a3a57604051632a5292c160e11b815260040160405180910390fd5b6000806101676001600160a01b0316630e71804f60e01b84604051602401610c399190615487565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610c779190614c3f565b6000604051808303816000865af19150503d8060008114610cb4576040519150601f19603f3d011682016040523d82523d6000602084013e610cb9565b606091505b5091509150610cc8828261321f565b610ce45760405162eebe6360e81b815260040160405180910390fd5b505050565b6000806101676001600160a01b031663593d6e8260e01b8585604051602401610d1392919061556c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d519190614c3f565b6000604051808303816000865af19150503d8060008114610d8e576040519150601f19603f3d011682016040523d82523d6000602084013e610d93565b606091505b5091509150610da2828261321f565b610dbf5760405163c779f09560e01b815260040160405180910390fd5b50505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633b3bff0f60e01b1790529051600091829161016791610e1b91614c3f565b6000604051808303816000865af19150503d8060008114610e58576040519150601f19603f3d011682016040523d82523d6000602084013e610e5d565b606091505b5091509150610e6c828261321f565b610ce45760405163f5db475160e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316638f8d7f9960e01b1790529051600091829161016791610ee791614c3f565b6000604051808303816000865af19150503d8060008114610f24576040519150601f19603f3d011682016040523d82523d6000602084013e610f29565b606091505b5091509150610f38828261321f565b610dbf57604051630fe6b06560e11b815260040160405180910390fd5b604080516001600160a01b038381166024830152841660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663248a35ef60e11b1790529051600091829161016791610fb391614c3f565b6000604051808303816000865af19150503d8060008114610ff0576040519150601f19603f3d011682016040523d82523d6000602084013e610ff5565b606091505b5091509150611004828261321f565b610dbf57604051630aadd01b60e31b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015263ffffffff831660648083019190915282518083039091018152608490910182526020810180516001600160e01b0316639790686d60e01b179052905160009182916101679161108b91614c3f565b6000604051808303816000865af19150503d80600081146110c8576040519150601f19603f3d011682016040523d82523d6000602084013e6110cd565b606091505b50915091506110dc828261321f565b610b1857604051634c55bcdb60e11b815260040160405180910390fd5b6000606060008060006101676001600160a01b031663278e0b8860e01b89898960405160240161112b939291906155af565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111699190614c3f565b6000604051808303816000865af19150503d80600081146111a6576040519150601f19603f3d011682016040523d82523d6000602084013e6111ab565b606091505b5091509150816111ce5760408051600080825260208201909252601591906111e2565b808060200190518101906111e29190615632565b90965094509250600383900b60161461120d5760405162ec6f7b60e31b815260040160405180910390fd5b505050935093915050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b179052905160609182918291600091829182916101679161127791614c3f565b6000604051808303816000865af19150503d80600081146112b4576040519150601f19603f3d011682016040523d82523d6000602084013e6112b9565b606091505b5091509150816112cd5760158686866112e1565b808060200190518101906112e191906156f1565b919850965094509250600383900b60161461130f57604051634c85126960e01b815260040160405180910390fd5b5050509193909250565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b17905290516000918291829182916101679161138391614c3f565b6000604051808303816000865af19150503d80600081146113c0576040519150601f19603f3d011682016040523d82523d6000602084013e6113c5565b606091505b5091509150816113d857601560006113ec565b808060200190518101906113ec919061577d565b94509250600383900b6016146114155760405163c30cd94160e01b815260040160405180910390fd5b5050509392505050565b6114656040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b604080516001600160a01b0385166024820152604480820185905282518083039091018152606490910182526020810180516001600160e01b0316631e26e99760e11b179052905160009182918291610167916114c29190614c3f565b6000604051808303816000865af19150503d80600081146114ff576040519150601f19603f3d011682016040523d82523d6000602084013e611504565b606091505b5091509150816115165760158461152a565b8080602001905181019061152a91906157a9565b94509250600383900b6016146115535760405163664cb42360e01b815260040160405180910390fd5b50505092915050565b604080516001600160a01b0385811660248301528416604482015282151560648083019190915282518083039091018152608490910182526020810180516001600160e01b0316631b3b02e560e11b17905290516000918291610167916115c291614c3f565b6000604051808303816000865af19150503d80600081146115ff576040519150601f19603f3d011682016040523d82523d6000602084013e611604565b606091505b5091509150611613828261321f565b610b18576040516354b6b38d60e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166346de0fb160e01b17905290516000918291829182916101679161169291614c3f565b6000604051808303816000865af19150503d80600081146116cf576040519150601f19603f3d011682016040523d82523d6000602084013e6116d4565b606091505b5091509150816116e757601560006116fb565b808060200190518101906116fb919061577d565b94509250600383900b601614611553576040516374004e7960e11b815260040160405180910390fd5b604080516001600160a01b038681166024830152858116604483015284166064820152600783900b6084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316635cfc901160e01b179052905160009182916101679161179491614c3f565b6000604051808303816000865af19150503d80600081146117d1576040519150601f19603f3d011682016040523d82523d6000602084013e6117d6565b606091505b50915091506117e5828261321f565b611802576040516308c0b8b360e31b815260040160405180910390fd5b505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663335e04c160e01b17905290516000918291829182916101679161186491614c3f565b6000604051808303816000865af19150503d80600081146118a1576040519150601f19603f3d011682016040523d82523d6000602084013e6118a6565b606091505b5091509150816118b957601560006118cd565b808060200190518101906118cd919061577d565b94509250600383900b601614610a3a5760405162629e9d60e81b815260040160405180910390fd5b6000806101676001600160a01b0316636fc3cbaf60e01b858560405160240161191f9291906158b0565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161195d9190614c3f565b6000604051808303816000865af19150503d806000811461199a576040519150601f19603f3d011682016040523d82523d6000602084013e61199f565b606091505b50915091506119ae828261321f565b610dbf576040516315f62c9d60e21b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316633cb0c7fd60e21b179052905160009182918291829161016791611a2d91614c3f565b6000604051808303816000865af19150503d8060008114611a6a576040519150601f19603f3d011682016040523d82523d6000602084013e611a6f565b606091505b509150915081611a825760156000611a96565b80806020019051810190611a96919061577d565b94509250600383900b6016146115535760405163711425f760e11b815260040160405180910390fd5b611ac7613376565b604080516001600160a01b0385166024820152600784900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b17905290516000918291829161016791611b2a9190614c3f565b6000604051808303816000865af19150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b509150915081611b7e57601584611b92565b80806020019051810190611b9291906158d2565b94509250600383900b6016146115535760405163b12473af60e01b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b179052905160009182918291829161016791611c1591614c3f565b6000604051808303816000865af19150503d8060008114611c52576040519150601f19603f3d011682016040523d82523d6000602084013e611c57565b606091505b509150915081611c6a5760156000611c7e565b80806020019051810190611c7e91906159b9565b94509250600383900b601614610a3a57604051635d4b19cf60e11b815260040160405180910390fd5b604080516001600160a01b038681166024830152858116604483015284166064820152600783900b6084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663eca3691760e01b1790529051600091829161016791611d1791614c3f565b6000604051808303816000865af19150503d8060008114611d54576040519150601f19603f3d011682016040523d82523d6000602084013e611d59565b606091505b5091509150611d68828261321f565b6118025760405163022e258160e11b815260040160405180910390fd5b611d8e81613250565b6000806101676001600160a01b03166318370d3460e01b8585604051602401611db8929190615a9f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611df69190614c3f565b6000604051808303816000865af19150503d8060008114611e33576040519150601f19603f3d011682016040523d82523d6000602084013e611e38565b606091505b5091509150611e47828261321f565b610dbf5760405163c2f7c6d760e01b815260040160405180910390fd5b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b1790529251919290918291829161016791611ed791614c3f565b6000604051808303816000865af19150503d8060008114611f14576040519150601f19603f3d011682016040523d82523d6000602084013e611f19565b606091505b509150915081611f2b57601584611f3f565b80806020019051810190611f3f9190615ac1565b94509250600383900b601614610a3a5760405163303d457360e21b815260040160405180910390fd5b6000806101676001600160a01b031663f7f38e2660e01b868686604051602401611f9493929190615b1f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611fd29190614c3f565b6000604051808303816000865af19150503d806000811461200f576040519150601f19603f3d011682016040523d82523d6000602084013e612014565b606091505b5091509150612023828261321f565b610b1857604051633c9afe0960e11b815260040160405180910390fd5b6000806101676001600160a01b03166378b6391860e01b858560405160240161206a929190615b8d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120a89190614c3f565b6000604051808303816000865af19150503d80600081146120e5576040519150601f19603f3d011682016040523d82523d6000602084013e6120ea565b606091505b50915091506120f9828261321f565b610dbf5760405163de94cd4f60e01b815260040160405180910390fd5b6000806101676001600160a01b0316632c4ba19160e01b878787876040516024016121449493929190615baf565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516121829190614c3f565b6000604051808303816000865af19150503d80600081146121bf576040519150601f19603f3d011682016040523d82523d6000602084013e6121c4565b606091505b50915091506121d3828261321f565b61180257604051636d4b973960e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663af99c63360e01b179052905160009182916101679161224e91614c3f565b6000604051808303816000865af19150503d806000811461228b576040519150601f19603f3d011682016040523d82523d6000602084013e612290565b606091505b509150915061229f828261321f565b610dbf5760405163b5c2401d60e01b815260040160405180910390fd5b6000806101676001600160a01b0316632e63879b60e01b85856040516024016122e6929190615b8d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516123249190614c3f565b6000604051808303816000865af19150503d8060008114612361576040519150601f19603f3d011682016040523d82523d6000602084013e612366565b606091505b5091509150612375828261321f565b610dbf576040516304abe53f60e51b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637834fb8960e11b17905290516000918291610167916123e891614c3f565b6000604051808303816000865af19150503d8060008114612425576040519150601f19603f3d011682016040523d82523d6000602084013e61242a565b606091505b5091509150612439828261321f565b610ce45760405162b4909160e51b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663a7daa18d60e01b1790529051600091829182918291610167916124af91614c3f565b6000604051808303816000865af19150503d80600081146124ec576040519150601f19603f3d011682016040523d82523d6000602084013e6124f1565b606091505b5091509150816125045760156000612518565b80806020019051810190612518919061577d565b94509250600383900b601614610a3a5760405163f6e464e960e01b815260040160405180910390fd5b600061254c82613250565b60008060006101676001600160a01b031634639c89bb3560e01b876040516024016125779190615c02565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516125b59190614c3f565b60006040518083038185875af1925050503d80600081146125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50915091508161260a576015600061261e565b8080602001905181019061261e9190615c15565b945060030b925060168314610a3a57604051635850783b60e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166352f9138760e01b17905290516000918291610167916126a491614c3f565b6000604051808303816000865af19150503d80600081146126e1576040519150601f19603f3d011682016040523d82523d6000602084013e6126e6565b606091505b50915091506126f5828261321f565b610dbf57604051633b85464b60e11b815260040160405180910390fd5b604080516001600160a01b0384166024820152600783900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b17905290516000918291829182916101679161277691614c3f565b6000604051808303816000865af19150503d80600081146127b3576040519150601f19603f3d011682016040523d82523d6000602084013e6127b8565b606091505b5091509150816127cb57601560006127df565b808060200190518101906127df9190615c15565b94509250600383900b6016146115535760405163e460426160e01b815260040160405180910390fd5b604080516001600160a01b038381166024830152841660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316630132f29d60e31b179052905160009182916101679161286691614c3f565b6000604051808303816000865af19150503d80600081146128a3576040519150601f19603f3d011682016040523d82523d6000602084013e6128a8565b606091505b50915091506128b7828261321f565b610dbf576040516314439df560e31b815260040160405180910390fd5b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b17905290516000918291829182916101679161293e91614c3f565b6000604051808303816000865af19150503d806000811461297b576040519150601f19603f3d011682016040523d82523d6000602084013e612980565b606091505b50915091508161299357601560006129a7565b808060200190518101906129a79190615c41565b94509250600383900b6016146114155760405163b9382f0760e01b815260040160405180910390fd5b6000806101676001600160a01b03166382bba49360e01b8686866040516024016129fc93929190615c6d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612a3a9190614c3f565b6000604051808303816000865af19150503d8060008114612a77576040519150601f19603f3d011682016040523d82523d6000602084013e612a7c565b606091505b5091509150612a8b828261321f565b610b185760405163311bf68160e11b815260040160405180910390fd5b6000612ab384613250565b60008060006101676001600160a01b031634634573396960e01b898989604051602401612ae293929190615d1f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612b209190614c3f565b60006040518083038185875af1925050503d8060008114612b5d576040519150601f19603f3d011682016040523d82523d6000602084013e612b62565b606091505b509150915081612b755760156000612b89565b80806020019051810190612b899190615c15565b945060030b9250601683146114155760405163893b894d60e01b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f106b4b60e21b1790529051600091829161016791612c0791614c3f565b6000604051808303816000865af19150503d8060008114612c44576040519150601f19603f3d011682016040523d82523d6000602084013e612c49565b606091505b5091509150612c58828261321f565b610ce457604051630d797d9160e31b815260040160405180910390fd5b6000806000806101676001600160a01b031663acb9cff960e01b888888604051602401612ca493929190615dd6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612ce29190614c3f565b6000604051808303816000865af19150503d8060008114612d1f576040519150601f19603f3d011682016040523d82523d6000602084013e612d24565b606091505b509150915081612d375760156000612d4b565b80806020019051810190612d4b9190615e07565b94509250600383900b60161461141557604051631bc5aabf60e21b815260040160405180910390fd5b6000612d7f86613250565b60008060006101676001600160a01b03163463b937581a60e01b8b8b8b8b8b604051602401612db2959493929190615e33565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612df09190614c3f565b60006040518083038185875af1925050503d8060008114612e2d576040519150601f19603f3d011682016040523d82523d6000602084013e612e32565b606091505b509150915081612e455760156000612e59565b80806020019051810190612e599190615c15565b945060030b925060168314612e81576040516351aeaaf760e11b815260040160405180910390fd5b50505095945050505050565b6000612e9884613250565b60008060006101676001600160a01b03163463c23baeb660e01b898989604051602401612ec793929190615f02565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612f059190614c3f565b60006040518083038185875af1925050503d8060008114612f42576040519150601f19603f3d011682016040523d82523d6000602084013e612f47565b606091505b509150915081612f5a5760156000612f6e565b80806020019051810190612f6e9190615c15565b94509250600383900b60161461141557604051636cc9c7cf60e11b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166319f3736160e01b179052905160009182918291829161016791612ff191614c3f565b6000604051808303816000865af19150503d806000811461302e576040519150601f19603f3d011682016040523d82523d6000602084013e613033565b606091505b509150915081613046576015600061305a565b8080602001905181019061305a919061577d565b94509250600383900b601614610a3a57604051634050963360e01b815260040160405180910390fd5b604080516001600160a01b03858116602483015284166044820152606480820184905282518083039091018152608490910182526020810180516001600160e01b031663e1f21c6760e01b17905290516000918291610167916130e591614c3f565b6000604051808303816000865af19150503d8060008114613122576040519150601f19603f3d011682016040523d82523d6000602084013e613127565b606091505b5091509150613136828261321f565b610b1857604051633e3f8f7360e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166316e3e16160e21b17905290516000918291610167916131b191614c3f565b6000604051808303816000865af19150503d80600081146131ee576040519150601f19603f3d011682016040523d82523d6000602084013e6131f3565b606091505b5091509150613202828261321f565b610dbf57604051631a0a25f560e31b815260040160405180910390fd5b600060168361322f576015613243565b828060200190518101906132439190615f27565b60030b1490505b92915050565b6101008101515163ffffffff1615801561327757506101008101516040015163ffffffff16155b1561329657610100810180516276a70060409091015251306020909101525b50565b60405180604001604052806132ac6132b9565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e084018190526102008401839052845192830185528083526020830181905293820193909352610220820152908190815260200160006001600160401b03168152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6040518060c001604052806133896132b9565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b6001600160a01b038116811461329657600080fd5b80356133d1816133b1565b919050565b6000602082840312156133e857600080fd5b81356133f3816133b1565b9392505050565b60005b838110156134155781810151838201526020016133fd565b83811115610dbf5750506000910152565b6000815180845261343e8160208601602086016133fa565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a0604086015261348a60a0860183613426565b9150606084015185830360608701526134a38382613426565b925050806080850151166080860152508091505092915050565b600082825180855260208086019550808260051b84010181860160005b8481101561351c57858303601f19018952815180518452840151604085850181905261350881860183613452565b9a86019a94505050908301906001016134da565b5090979650505050505050565b6000610160825181855261353f82860182613426565b915050602083015184820360208601526135598282613426565b915050604083015161357660408601826001600160a01b03169052565b506060830151848203606086015261358e8282613426565b91505060808301516135a4608086018215159052565b5060a08301516135b960a086018260070b9052565b5060c08301516135cd60c086018215159052565b5060e083015184820360e08601526135e582826134bd565b61010085810151805163ffffffff9081168984015260208201516001600160a01b03166101208a015260408201511661014089015291935091505090949350505050565b600081518084526020808501945080840160005b838110156136a75761369487835163ffffffff815116825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a096909601959082019060010161363d565b509495945050505050565b600081518084526020808501945080840160005b838110156136a75761372787835163ffffffff808251168352806020830151166020840152806040830151166040840152806060830151166060840152506080810151151560808301526001600160a01b0360a08201511660a08301525050565b60c09690960195908201906001016136c6565b600081518084526020808501945080840160005b838110156136a7576137b387835163ffffffff8082511683528060208301511660208401528060408301511660408401525060608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b60c096909601959082019060010161374e565b600061012082518185526137dc82860182613529565b91505060208301516137f960208601826001600160401b03169052565b50604083015161380d604086018215159052565b506060830151613821606086018215159052565b506080830151613835608086018215159052565b5060a083015184820360a086015261384d8282613629565b91505060c083015184820360c086015261386782826136b2565b91505060e083015184820360e0860152613881828261373a565b915050610100808401518583038287015261389c8382613426565b9695505050505050565b6020815260008251604060208401526138c260608401826137c6565b905063ffffffff60208501511660408401528091505092915050565b8060070b811461329657600080fd5b80356133d1816138de565b60008060006060848603121561390d57600080fd5b8335613918816133b1565b92506020840135613928816133b1565b91506040840135613938816138de565b809150509250925092565b6020815260006133f360208301846137c6565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561398e5761398e613956565b60405290565b604051606081016001600160401b038111828210171561398e5761398e613956565b604080519081016001600160401b038111828210171561398e5761398e613956565b60405160a081016001600160401b038111828210171561398e5761398e613956565b60405161012081016001600160401b038111828210171561398e5761398e613956565b60405160c081016001600160401b038111828210171561398e5761398e613956565b604051601f8201601f191681016001600160401b0381118282101715613a6757613a67613956565b604052919050565b60006001600160401b03821115613a8857613a88613956565b5060051b60200190565b801515811461329657600080fd5b80356133d181613a92565b600082601f830112613abc57600080fd5b81356020613ad1613acc83613a6f565b613a3f565b82815260079290921b84018101918181019086841115613af057600080fd5b8286015b84811015613b675760808189031215613b0d5760008081fd5b613b1561396c565b8135613b20816133b1565b815281850135613b2f816133b1565b81860152604082810135613b42816138de565b90820152606082810135613b5581613a92565b90820152835291830191608001613af4565b509695505050505050565b600060208284031215613b8457600080fd5b6001600160401b038083351115613b9a57600080fd5b8235830184601f820112613bad57600080fd5b613bba613acc8235613a6f565b81358082526020808301929160051b840101871015613bd857600080fd5b602083015b6020843560051b850101811015613b67578481351115613bfc57600080fd5b803584016060818a03601f19011215613c1457600080fd5b613c1c613994565b613c2960208301356133b1565b602082013581528660408301351115613c4157600080fd5b604082013582018a603f820112613c5757600080fd5b613c67613acc6020830135613a6f565b602082810135808352908201919060600283016040018d811115613c8a57600080fd5b6040840193505b80841015613d00576060848f031215613ca957600080fd5b613cb1613994565b613cbb85356133b1565b84358152613ccc60208601356138de565b60208501356020820152613ce36040860135613a92565b604085810135908201528352606090930192602090920191613c91565b50602084015250506060820135871015613d1957600080fd5b613d2c8a60206060850135850101613aab565b604082015284525060209283019201613bdd565b63ffffffff8116811461329657600080fd5b600060608284031215613d6457600080fd5b613d6c613994565b90508135613d7981613d40565b81526020820135613d89816133b1565b60208201526040820135613d9c81613d40565b604082015292915050565b60008060808385031215613dba57600080fd5b8235613dc5816133b1565b9150613dd48460208501613d52565b90509250929050565b60008060408385031215613df057600080fd5b8235613dfb816133b1565b91506020830135613e0b816133b1565b809150509250929050565b600080600060608486031215613e2b57600080fd5b8335613e36816133b1565b92506020840135613e46816133b1565b9150604084013561393881613d40565b6001600160401b038116811461329657600080fd5b60006001600160401b03821115613e8457613e84613956565b50601f01601f191660200190565b600082601f830112613ea357600080fd5b8135613eb1613acc82613e6b565b818152846020838601011115613ec657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613ef857600080fd5b8335613f03816133b1565b9250602084810135613f1481613e56565b925060408501356001600160401b0380821115613f3057600080fd5b818701915087601f830112613f4457600080fd5b8135613f52613acc82613a6f565b81815260059190911b8301840190848101908a831115613f7157600080fd5b8585015b83811015613fa957803585811115613f8d5760008081fd5b613f9b8d89838a0101613e92565b845250918601918601613f75565b508096505050505050509250925092565b6000604082016001600160401b03851683526020604081850152818551808452606086019150828701935060005b8181101561351c57845160070b83529383019391830191600101613fe8565b60608152600061401a6060830186613629565b828103602084015261402c81866136b2565b9050828103604084015261389c818561373a565b60008060006060848603121561405557600080fd5b8335614060816133b1565b92506020840135614070816133b1565b91506040840135613938816133b1565b6000806040838503121561409357600080fd5b823561409e816133b1565b946020939093013593505050565b6020815260006133f36020830184613452565b6000806000606084860312156140d457600080fd5b83356140df816133b1565b925060208401356140ef816133b1565b9150604084013561393881613a92565b6000806000806080858703121561411557600080fd5b8435614120816133b1565b93506020850135614130816133b1565b92506040850135614140816133b1565b91506060850135614150816138de565b939692955090935050565b600082601f83011261416c57600080fd5b8135602061417c613acc83613a6f565b82815260059290921b8401810191818101908684111561419b57600080fd5b8286015b84811015613b675780356001600160401b03808211156141be57600080fd5b908801906040601f19838c0381018213156141d857600080fd5b6141e06139b6565b88850135815282850135848111156141f757600080fd5b949094019360a0858e038301121561420f5760008081fd5b6142176139d8565b91508885013561422681613a92565b825284830135614235816133b1565b828a01526060858101358581111561424d5760008081fd5b61425b8f8c838a0101613e92565b85850152506080935083860135858111156142765760008081fd5b6142848f8c838a0101613e92565b82850152505061429660a086016133c6565b92820192909252818801528552505091830191830161419f565b600080604083850312156142c357600080fd5b82356142ce816133b1565b915060208301356001600160401b038111156142e957600080fd5b6142f58582860161415b565b9150509250929050565b6000806040838503121561431257600080fd5b823561431d816133b1565b91506020830135613e0b816138de565b602081526000825160c0602084015261434960e08401826137c6565b9050602084015160070b604084015260408401516001600160a01b038082166060860152606086015160070b608086015260808601519150601f198584030160a08601526143978383613426565b92508060a08701511660c086015250508091505092915050565b600061016082840312156143c457600080fd5b6143cc6139fa565b905081356001600160401b03808211156143e557600080fd5b6143f185838601613e92565b8352602084013591508082111561440757600080fd5b61441385838601613e92565b6020840152614424604085016133c6565b6040840152606084013591508082111561443d57600080fd5b61444985838601613e92565b606084015261445a60808501613aa0565b608084015261446b60a085016138ed565b60a084015261447c60c08501613aa0565b60c084015260e084013591508082111561449557600080fd5b506144a28482850161415b565b60e0830152506101006144b784828501613d52565b9082015292915050565b600080604083850312156144d457600080fd5b82356144df816133b1565b915060208301356001600160401b038111156144fa57600080fd5b6142f5858286016143b1565b6060810161324a8284805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b600082601f83011261454b57600080fd5b8135602061455b613acc83613a6f565b82815260059290921b8401810191818101908684111561457a57600080fd5b8286015b84811015613b67578035614591816138de565b835291830191830161457e565b6000806000606084860312156145b357600080fd5b83356145be816133b1565b925060208401356145ce816133b1565b915060408401356001600160401b038111156145e957600080fd5b6145f58682870161453a565b9150509250925092565b600082601f83011261461057600080fd5b81356020614620613acc83613a6f565b82815260059290921b8401810191818101908684111561463f57600080fd5b8286015b84811015613b67578035614656816133b1565b8352918301918301614643565b6000806040838503121561467657600080fd5b8235614681816133b1565b915060208301356001600160401b0381111561469c57600080fd5b6142f5858286016145ff565b600080600080608085870312156146be57600080fd5b84356146c9816133b1565b935060208501356001600160401b03808211156146e557600080fd5b6146f1888389016145ff565b9450604087013591508082111561470757600080fd5b614713888389016145ff565b9350606087013591508082111561472957600080fd5b506147368782880161453a565b91505092959194509250565b60006020828403121561475457600080fd5b81356001600160401b0381111561476a57600080fd5b614776848285016143b1565b949350505050565b60008060006060848603121561479357600080fd5b833561479e816133b1565b925060208401356001600160401b03808211156147ba57600080fd5b6147c6878388016145ff565b935060408601359150808211156147dc57600080fd5b506145f58682870161453a565b600082601f8301126147fa57600080fd5b8135602061480a613acc83613a6f565b82815260a0928302850182019282820191908785111561482957600080fd5b8387015b8581101561351c5781818a0312156148455760008081fd5b61484d6139d8565b813561485881613d40565b815281860135614867816133b1565b8187015260408281013561487a81613a92565b9082015260608281013561488d81613a92565b908201526080828101356148a0816133b1565b90820152845292840192810161482d565b600080600060608085870312156148c757600080fd5b84356001600160401b03808211156148de57600080fd5b6148ea888389016143b1565b955060209150818701358181111561490157600080fd5b61490d89828a016147e9565b9550506040808801358281111561492357600080fd5b88019150601f8201891361493657600080fd5b8135614944613acc82613a6f565b81815260c0918202840185019185820191908c84111561496357600080fd5b948601945b838610156149fd5780868e0312156149805760008081fd5b614988613a1d565b863561499381613d40565b8152868801356149a281613d40565b81890152868601356149b381613d40565b81870152868901356149c4816133b1565b818a01526080878101356149d781613a92565b9082015260a0878101356149ea816133b1565b9082015283529485019491860191614968565b50809750505050505050509250925092565b600080600060608486031215614a2457600080fd5b8335614a2f816133b1565b925060208401356145ce81613e56565b600080600080600060a08688031215614a5757600080fd5b85356001600160401b0380821115614a6e57600080fd5b614a7a89838a016143b1565b96506020915081880135955060408801359450606088013581811115614a9f57600080fd5b614aab8a828b016147e9565b94505060808089013582811115614ac157600080fd5b89019150601f82018a13614ad457600080fd5b8135614ae2613acc82613a6f565b81815260c0918202840185019185820191908d841115614b0157600080fd5b948601945b83861015614b9d5780868f031215614b1e5760008081fd5b614b26613a1d565b8635614b3181613d40565b815286880135614b4081613d40565b818901526040870135614b5281613d40565b60408201526060870135614b6581613d40565b606082015286860135614b7781613a92565b8187015260a0870135614b89816133b1565b60a082015283529485019491860191614b06565b508096505050505050509295509295909350565b600080600060608486031215614bc657600080fd5b83356001600160401b03811115614bdc57600080fd5b614be8868287016143b1565b9660208601359650604090950135949350505050565b600080600060608486031215614c1357600080fd5b8335614c1e816133b1565b92506020840135614c2e816133b1565b929592945050506040919091013590565b60008251614c518184602087016133fa565b9190910192915050565b8051600381900b81146133d157600080fd5b600082601f830112614c7e57600080fd5b8151614c8c613acc82613e6b565b818152846020838601011115614ca157600080fd5b6147768260208301602087016133fa565b80516133d1816133b1565b80516133d181613a92565b80516133d1816138de565b600060a08284031215614ce557600080fd5b614ced6139d8565b90508151614cfa81613a92565b81526020820151614d0a816133b1565b602082015260408201516001600160401b0380821115614d2957600080fd5b614d3585838601614c6d565b60408401526060840151915080821115614d4e57600080fd5b50614d5b84828501614c6d565b6060830152506080820151614d6f816133b1565b608082015292915050565b600082601f830112614d8b57600080fd5b81516020614d9b613acc83613a6f565b82815260059290921b84018101918181019086841115614dba57600080fd5b8286015b84811015613b675780516001600160401b0380821115614dde5760008081fd5b908801906040828b03601f1901811315614df85760008081fd5b614e006139b6565b838801518152908301519082821115614e195760008081fd5b614e278c8984870101614cd3565b818901528652505050918301918301614dbe565b600060608284031215614e4d57600080fd5b614e55613994565b90508151614e6281613d40565b81526020820151614e72816133b1565b60208201526040820151613d9c81613d40565b60006101608284031215614e9857600080fd5b614ea06139fa565b905081516001600160401b0380821115614eb957600080fd5b614ec585838601614c6d565b83526020840151915080821115614edb57600080fd5b614ee785838601614c6d565b6020840152614ef860408501614cb2565b60408401526060840151915080821115614f1157600080fd5b614f1d85838601614c6d565b6060840152614f2e60808501614cbd565b6080840152614f3f60a08501614cc8565b60a0840152614f5060c08501614cbd565b60c084015260e0840151915080821115614f6957600080fd5b50614f7684828501614d7a565b60e0830152506101006144b784828501614e3b565b80516133d181613e56565b600082601f830112614fa757600080fd5b81516020614fb7613acc83613a6f565b82815260a09283028501820192828201919087851115614fd657600080fd5b8387015b8581101561351c5781818a031215614ff25760008081fd5b614ffa6139d8565b815161500581613d40565b815281860151615014816133b1565b8187015260408281015161502781613a92565b9082015260608281015161503a81613a92565b9082015260808281015161504d816133b1565b908201528452928401928101614fda565b600082601f83011261506f57600080fd5b8151602061507f613acc83613a6f565b82815260c0928302850182019282820191908785111561509e57600080fd5b8387015b8581101561351c5781818a0312156150ba5760008081fd5b6150c2613a1d565b81516150cd81613d40565b8152818601516150dc81613d40565b818701526040828101516150ef81613d40565b9082015260608281015161510281613d40565b9082015260808281015161511581613a92565b9082015260a082810151615128816133b1565b9082015284529284019281016150a2565b600082601f83011261514a57600080fd5b8151602061515a613acc83613a6f565b82815260c0928302850182019282820191908785111561517957600080fd5b8387015b8581101561351c5781818a0312156151955760008081fd5b61519d613a1d565b81516151a881613d40565b8152818601516151b781613d40565b818701526040828101516151ca81613d40565b908201526060828101516151dd816133b1565b908201526080828101516151f081613a92565b9082015260a082810151615203816133b1565b90820152845292840192810161517d565b6000610120828403121561522757600080fd5b61522f6139fa565b905081516001600160401b038082111561524857600080fd5b61525485838601614e85565b835261526260208501614f8b565b602084015261527360408501614cbd565b604084015261528460608501614cbd565b606084015261529560808501614cbd565b608084015260a08401519150808211156152ae57600080fd5b6152ba85838601614f96565b60a084015260c08401519150808211156152d357600080fd5b6152df8583860161505e565b60c084015260e08401519150808211156152f857600080fd5b61530485838601615139565b60e08401526101009150818401518181111561531f57600080fd5b61532b86828701614c6d565b8385015250505092915050565b6000806040838503121561534b57600080fd5b61535483614c5b565b915060208301516001600160401b038082111561537057600080fd5b908401906040828703121561538457600080fd5b60405160408101818110838211171561539f5761539f613956565b6040528251828111156153b157600080fd5b6153bd88828601615214565b825250602083015192506153d083613d40565b8260208201528093505050509250929050565b600080604083850312156153f657600080fd5b6153ff83614c5b565b915060208301516001600160401b0381111561541a57600080fd5b6142f585828601615214565b600081518084526020808501945080840160005b838110156136a757815180516001600160a01b03908116895284820151168489015260408082015160070b908901526060908101511515908801526080909601959082019060010161543a565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561555e57603f19898403018552815160608085016001600160a01b038084511687528a840151838c89015282815180855260808a0191508d83019450600092505b8083101561552b5784518051851683528e81015160070b8f8401528d015115158d830152938d019360019290920191908501906154f3565b50948b0151888603898d0152946155428187615426565b9a8d019a98505050948a019450505060019190910190506154ae565b509098975050505050505050565b6001600160a01b0383168152608081016133f36020830184805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b6000606082016001600160a01b038616835260206001600160401b038616818501526060604085015281855180845260808601915060808160051b870101935082870160005b8281101561562357607f19888703018452615611868351613426565b955092840192908401906001016155f5565b50939998505050505050505050565b60008060006060848603121561564757600080fd5b61565084614c5b565b925060208085015161566181613e56565b60408601519093506001600160401b0381111561567d57600080fd5b8501601f8101871361568e57600080fd5b805161569c613acc82613a6f565b81815260059190911b820183019083810190898311156156bb57600080fd5b928401925b828410156156e25783516156d3816138de565b825292840192908401906156c0565b80955050505050509250925092565b6000806000806080858703121561570757600080fd5b61571085614c5b565b935060208501516001600160401b038082111561572c57600080fd5b61573888838901614f96565b9450604087015191508082111561574e57600080fd5b61575a8883890161505e565b9350606087015191508082111561577057600080fd5b5061473687828801615139565b6000806040838503121561579057600080fd5b61579983614c5b565b91506020830151613e0b81613a92565b600080604083850312156157bc57600080fd5b6157c583614c5b565b915060208301516001600160401b038111156157e057600080fd5b6142f585828601614cd3565b600081518084526020808501808196508360051b8101915082860160005b858110156158a35782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b015261586560e08b0186613426565b928601518a8403603f1901858c01529294506158818584613426565b9501511660c0989098019790975250509885019893509084019060010161580a565b5091979650505050505050565b6001600160a01b038316815260406020820152600061477660408301846157ec565b600080604083850312156158e557600080fd5b6158ee83614c5b565b915060208301516001600160401b038082111561590a57600080fd5b9084019060c0828703121561591e57600080fd5b615926613a1d565b82518281111561593557600080fd5b61594188828601615214565b82525061595060208401614cc8565b602082015261596160408401614cb2565b604082015261597260608401614cc8565b606082015260808301518281111561598957600080fd5b61599588828601614c6d565b6080830152506159a760a08401614cb2565b60a08201528093505050509250929050565b600080604083850312156159cc57600080fd5b6159d583614c5b565b9150613dd460208401614c5b565b600061016082518185526159f982860182613426565b91505060208301518482036020860152615a138282613426565b9150506040830151615a3060408601826001600160a01b03169052565b5060608301518482036060860152615a488282613426565b9150506080830151615a5e608086018215159052565b5060a0830151615a7360a086018260070b9052565b5060c0830151615a8760c086018215159052565b5060e083015184820360e08601526135e582826157ec565b6001600160a01b038316815260406020820152600061477660408301846159e3565b60008060808385031215615ad457600080fd5b615add83614c5b565b9150613dd48460208501614e3b565b600081518084526020808501945080840160005b838110156136a757815160070b87529582019590820190600101615b00565b60006001600160a01b03808616835280851660208401525060606040830152615b4b6060830184615aec565b95945050505050565b600081518084526020808501945080840160005b838110156136a75781516001600160a01b031687529582019590820190600101615b68565b6001600160a01b03831681526040602082015260006147766040830184615b54565b6001600160a01b0385168152608060208201526000615bd16080830186615b54565b8281036040840152615be38186615b54565b90508281036060840152615bf78185615aec565b979650505050505050565b6020815260006133f360208301846159e3565b60008060408385031215615c2857600080fd5b615c3183614c5b565b91506020830151613e0b816133b1565b60008060408385031215615c5457600080fd5b615c5d83614c5b565b9150602083015190509250929050565b6001600160a01b0384168152606060208201526000615c8f6060830185615b54565b828103604084015261389c8185615aec565b600081518084526020808501945080840160005b838110156136a757615d0c87835163ffffffff815116825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a0969096019590820190600101615cb5565b606081526000615d3260608301866159e3565b602083820381850152615d458287615ca1565b8481036040860152855180825282870193509082019060005b8181101561555e57615dc383865163ffffffff8082511683528060208301511660208401528060408301511660408401525060608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b9383019360c09290920191600101615d5e565b6001600160a01b03841681526001600160401b0383166020820152606060408201526000615b4b6060830184615aec565b60008060408385031215615e1a57600080fd5b615e2383614c5b565b91506020830151613e0b81613e56565b60a081526000615e4660a08301886159e3565b602087818501528660408501528382036060850152615e658287615ca1565b8481036080860152855180825282870193509082019060005b81811015615ef257615edf83865163ffffffff808251168352806020830151166020840152806040830151166040840152806060830151166060840152506080810151151560808301526001600160a01b0360a08201511660a08301525050565b9383019360c09290920191600101615e7e565b50909a9950505050505050505050565b606081526000615f1560608301866159e3565b60208301949094525060400152919050565b600060208284031215615f3957600080fd5b6133f382614c5b56fea26469706673582212201cac2dd19133638f2635757b82760093cde680c8eb914bbf98b8b6f96366d7c564736f6c63430008090033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106102d95760003560e01c806367ac845311610196578063978df2a2116100f8578063da49aa40116100a1578063dfb3bfc41161007b578063dfb3bfc4146108e8578063eb5625d914610908578063eccc07c61461092857600080fd5b8063da49aa4014610870578063db297c8f146108a8578063dc7a9cd4146108c857600080fd5b8063be83aa99116100d2578063be83aa9914610810578063ccc261fe14610830578063cf58c3ea1461085057600080fd5b8063978df2a2146107a25780639c7e98d0146107c2578063ba2ad973146107e257600080fd5b806382ddffbf1161015a5780638d1433dd116101345780638d1433dd1461072a578063910f27111461074a57806394f74f3e1461078257600080fd5b806382ddffbf146106ca57806387e6877c146106ea578063894c66531461070a57600080fd5b806367ac84531461061d5780636e4333fd1461063d5780636efe63a51461066a578063705314a01461068a5780637c6c6a84146106aa57600080fd5b80633e54fba81161023f5780634ddd613b1161020357806354a0b16c116101dd57806354a0b16c1461059d57806355caeb09146105ca578063587da69a146105fd57600080fd5b80634ddd613b1461053d5780634e03000f1461055d5780635140d67d1461057d57600080fd5b80633e54fba81461048057806344f8e471146104b057806348b14613146104dd5780634959707b146104fd57806349c8532b1461051d57600080fd5b806319cdce7e116102a15780632dbfc4a61161027b5780632dbfc4a614610403578063321060ab146104235780633364596e1461045157600080fd5b806319cdce7e146103a35780631ffbb8d7146103c35780632ad145af146103e357600080fd5b8063042a34b8146102de57806305923cee14610314578063067fa122146103365780630962e27b1461036357806310e9065514610383575b600080fd5b8180156102ea57600080fd5b506102fe6102f93660046133d6565b610948565b60405161030b91906138a6565b60405180910390f35b81801561032057600080fd5b5061033461032f3660046138f8565b610a42565b005b81801561034257600080fd5b506103566103513660046133d6565b610b1f565b60405161030b9190613943565b81801561036f57600080fd5b5061033461037e366004613b72565b610c11565b81801561038f57600080fd5b5061033461039e366004613da7565b610ce9565b8180156103af57600080fd5b506103346103be3660046133d6565b610dc5565b8180156103cf57600080fd5b506103346103de366004613ddd565b610e89565b8180156103ef57600080fd5b506103346103fe366004613ddd565b610f55565b81801561040f57600080fd5b5061033461041e366004613e16565b611021565b81801561042f57600080fd5b5061044361043e366004613ee3565b6110f9565b60405161030b929190613fba565b81801561045d57600080fd5b5061047161046c3660046133d6565b611218565b60405161030b93929190614007565b81801561048c57600080fd5b506104a061049b366004614040565b611319565b604051901515815260200161030b565b8180156104bc57600080fd5b506104d06104cb366004614080565b61141f565b60405161030b91906140ac565b8180156104e957600080fd5b506103346104f83660046140bf565b61155c565b81801561050957600080fd5b506104a0610518366004613ddd565b611630565b81801561052957600080fd5b506103346105383660046140ff565b611724565b81801561054957600080fd5b506104a06105583660046133d6565b61180a565b81801561056957600080fd5b506103346105783660046142b0565b6118f5565b81801561058957600080fd5b506104a0610598366004613ddd565b6119cb565b8180156105a957600080fd5b506105bd6105b83660046142ff565b611abf565b60405161030b919061432d565b8180156105d657600080fd5b506105ea6105e53660046133d6565b611bbb565b60405160039190910b815260200161030b565b81801561060957600080fd5b506103346106183660046140ff565b611ca7565b81801561062957600080fd5b506103346106383660046144c1565b611d85565b81801561064957600080fd5b5061065d6106583660046133d6565b611e64565b60405161030b9190614506565b81801561067657600080fd5b5061033461068536600461459e565b611f68565b81801561069657600080fd5b506103346106a5366004614663565b612040565b8180156106b657600080fd5b506103346106c53660046146a8565b612116565b8180156106d657600080fd5b506103346106e5366004613ddd565b6121f0565b8180156106f657600080fd5b50610334610705366004614663565b6122bc565b81801561071657600080fd5b506103346107253660046133d6565b612392565b81801561073657600080fd5b506104a06107453660046133d6565b612455565b81801561075657600080fd5b5061076a610765366004614742565b612541565b6040516001600160a01b03909116815260200161030b565b81801561078e57600080fd5b5061033461079d366004613ddd565b612646565b8180156107ae57600080fd5b5061076a6107bd3660046142ff565b612712565b8180156107ce57600080fd5b506103346107dd366004613ddd565b612808565b8180156107ee57600080fd5b506108026107fd366004614040565b6128d4565b60405190815260200161030b565b81801561081c57600080fd5b5061033461082b36600461477e565b6129d0565b81801561083c57600080fd5b5061076a61084b3660046148b1565b612aa8565b81801561085c57600080fd5b5061033461086b3660046133d6565b612bb1565b81801561087c57600080fd5b5061089061088b366004614a0f565b612c75565b6040516001600160401b03909116815260200161030b565b8180156108b457600080fd5b5061076a6108c3366004614a3f565b612d74565b8180156108d457600080fd5b5061076a6108e3366004614bb1565b612e8d565b8180156108f457600080fd5b506104a06109033660046133d6565b612f97565b81801561091457600080fd5b50610334610923366004614bfe565b613083565b81801561093457600080fd5b50610334610943366004613ddd565b613153565b610950613299565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b179052905160009182918291610167916109a99190614c3f565b6000604051808303816000865af19150503d80600081146109e6576040519150601f19603f3d011682016040523d82523d6000602084013e6109eb565b606091505b5091509150816109fd57601584610a11565b80806020019051810190610a119190615338565b94509250600383900b601614610a3a57604051631fbc7c8f60e01b815260040160405180910390fd5b505050919050565b604080516001600160a01b03858116602483015284166044820152600783900b60648083019190915282518083039091018152608490910182526020810180516001600160e01b03166307336aaf60e41b1790529051600091829161016791610aaa91614c3f565b6000604051808303816000865af19150503d8060008114610ae7576040519150601f19603f3d011682016040523d82523d6000602084013e610aec565b606091505b5091509150610afb828261321f565b610b18576040516323241c4960e01b815260040160405180910390fd5b5050505050565b610b276132b9565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291829161016791610b809190614c3f565b6000604051808303816000865af19150503d8060008114610bbd576040519150601f19603f3d011682016040523d82523d6000602084013e610bc2565b606091505b509150915081610bd457601584610be8565b80806020019051810190610be891906153e3565b94509250600383900b601614610a3a57604051632a5292c160e11b815260040160405180910390fd5b6000806101676001600160a01b0316630e71804f60e01b84604051602401610c399190615487565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610c779190614c3f565b6000604051808303816000865af19150503d8060008114610cb4576040519150601f19603f3d011682016040523d82523d6000602084013e610cb9565b606091505b5091509150610cc8828261321f565b610ce45760405162eebe6360e81b815260040160405180910390fd5b505050565b6000806101676001600160a01b031663593d6e8260e01b8585604051602401610d1392919061556c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d519190614c3f565b6000604051808303816000865af19150503d8060008114610d8e576040519150601f19603f3d011682016040523d82523d6000602084013e610d93565b606091505b5091509150610da2828261321f565b610dbf5760405163c779f09560e01b815260040160405180910390fd5b50505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633b3bff0f60e01b1790529051600091829161016791610e1b91614c3f565b6000604051808303816000865af19150503d8060008114610e58576040519150601f19603f3d011682016040523d82523d6000602084013e610e5d565b606091505b5091509150610e6c828261321f565b610ce45760405163f5db475160e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316638f8d7f9960e01b1790529051600091829161016791610ee791614c3f565b6000604051808303816000865af19150503d8060008114610f24576040519150601f19603f3d011682016040523d82523d6000602084013e610f29565b606091505b5091509150610f38828261321f565b610dbf57604051630fe6b06560e11b815260040160405180910390fd5b604080516001600160a01b038381166024830152841660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663248a35ef60e11b1790529051600091829161016791610fb391614c3f565b6000604051808303816000865af19150503d8060008114610ff0576040519150601f19603f3d011682016040523d82523d6000602084013e610ff5565b606091505b5091509150611004828261321f565b610dbf57604051630aadd01b60e31b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015263ffffffff831660648083019190915282518083039091018152608490910182526020810180516001600160e01b0316639790686d60e01b179052905160009182916101679161108b91614c3f565b6000604051808303816000865af19150503d80600081146110c8576040519150601f19603f3d011682016040523d82523d6000602084013e6110cd565b606091505b50915091506110dc828261321f565b610b1857604051634c55bcdb60e11b815260040160405180910390fd5b6000606060008060006101676001600160a01b031663278e0b8860e01b89898960405160240161112b939291906155af565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111699190614c3f565b6000604051808303816000865af19150503d80600081146111a6576040519150601f19603f3d011682016040523d82523d6000602084013e6111ab565b606091505b5091509150816111ce5760408051600080825260208201909252601591906111e2565b808060200190518101906111e29190615632565b90965094509250600383900b60161461120d5760405162ec6f7b60e31b815260040160405180910390fd5b505050935093915050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b179052905160609182918291600091829182916101679161127791614c3f565b6000604051808303816000865af19150503d80600081146112b4576040519150601f19603f3d011682016040523d82523d6000602084013e6112b9565b606091505b5091509150816112cd5760158686866112e1565b808060200190518101906112e191906156f1565b919850965094509250600383900b60161461130f57604051634c85126960e01b815260040160405180910390fd5b5050509193909250565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b17905290516000918291829182916101679161138391614c3f565b6000604051808303816000865af19150503d80600081146113c0576040519150601f19603f3d011682016040523d82523d6000602084013e6113c5565b606091505b5091509150816113d857601560006113ec565b808060200190518101906113ec919061577d565b94509250600383900b6016146114155760405163c30cd94160e01b815260040160405180910390fd5b5050509392505050565b6114656040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b604080516001600160a01b0385166024820152604480820185905282518083039091018152606490910182526020810180516001600160e01b0316631e26e99760e11b179052905160009182918291610167916114c29190614c3f565b6000604051808303816000865af19150503d80600081146114ff576040519150601f19603f3d011682016040523d82523d6000602084013e611504565b606091505b5091509150816115165760158461152a565b8080602001905181019061152a91906157a9565b94509250600383900b6016146115535760405163664cb42360e01b815260040160405180910390fd5b50505092915050565b604080516001600160a01b0385811660248301528416604482015282151560648083019190915282518083039091018152608490910182526020810180516001600160e01b0316631b3b02e560e11b17905290516000918291610167916115c291614c3f565b6000604051808303816000865af19150503d80600081146115ff576040519150601f19603f3d011682016040523d82523d6000602084013e611604565b606091505b5091509150611613828261321f565b610b18576040516354b6b38d60e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166346de0fb160e01b17905290516000918291829182916101679161169291614c3f565b6000604051808303816000865af19150503d80600081146116cf576040519150601f19603f3d011682016040523d82523d6000602084013e6116d4565b606091505b5091509150816116e757601560006116fb565b808060200190518101906116fb919061577d565b94509250600383900b601614611553576040516374004e7960e11b815260040160405180910390fd5b604080516001600160a01b038681166024830152858116604483015284166064820152600783900b6084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316635cfc901160e01b179052905160009182916101679161179491614c3f565b6000604051808303816000865af19150503d80600081146117d1576040519150601f19603f3d011682016040523d82523d6000602084013e6117d6565b606091505b50915091506117e5828261321f565b611802576040516308c0b8b360e31b815260040160405180910390fd5b505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663335e04c160e01b17905290516000918291829182916101679161186491614c3f565b6000604051808303816000865af19150503d80600081146118a1576040519150601f19603f3d011682016040523d82523d6000602084013e6118a6565b606091505b5091509150816118b957601560006118cd565b808060200190518101906118cd919061577d565b94509250600383900b601614610a3a5760405162629e9d60e81b815260040160405180910390fd5b6000806101676001600160a01b0316636fc3cbaf60e01b858560405160240161191f9291906158b0565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161195d9190614c3f565b6000604051808303816000865af19150503d806000811461199a576040519150601f19603f3d011682016040523d82523d6000602084013e61199f565b606091505b50915091506119ae828261321f565b610dbf576040516315f62c9d60e21b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316633cb0c7fd60e21b179052905160009182918291829161016791611a2d91614c3f565b6000604051808303816000865af19150503d8060008114611a6a576040519150601f19603f3d011682016040523d82523d6000602084013e611a6f565b606091505b509150915081611a825760156000611a96565b80806020019051810190611a96919061577d565b94509250600383900b6016146115535760405163711425f760e11b815260040160405180910390fd5b611ac7613376565b604080516001600160a01b0385166024820152600784900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b17905290516000918291829161016791611b2a9190614c3f565b6000604051808303816000865af19150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b509150915081611b7e57601584611b92565b80806020019051810190611b9291906158d2565b94509250600383900b6016146115535760405163b12473af60e01b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b179052905160009182918291829161016791611c1591614c3f565b6000604051808303816000865af19150503d8060008114611c52576040519150601f19603f3d011682016040523d82523d6000602084013e611c57565b606091505b509150915081611c6a5760156000611c7e565b80806020019051810190611c7e91906159b9565b94509250600383900b601614610a3a57604051635d4b19cf60e11b815260040160405180910390fd5b604080516001600160a01b038681166024830152858116604483015284166064820152600783900b6084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663eca3691760e01b1790529051600091829161016791611d1791614c3f565b6000604051808303816000865af19150503d8060008114611d54576040519150601f19603f3d011682016040523d82523d6000602084013e611d59565b606091505b5091509150611d68828261321f565b6118025760405163022e258160e11b815260040160405180910390fd5b611d8e81613250565b6000806101676001600160a01b03166318370d3460e01b8585604051602401611db8929190615a9f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611df69190614c3f565b6000604051808303816000865af19150503d8060008114611e33576040519150601f19603f3d011682016040523d82523d6000602084013e611e38565b606091505b5091509150611e47828261321f565b610dbf5760405163c2f7c6d760e01b815260040160405180910390fd5b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b1790529251919290918291829161016791611ed791614c3f565b6000604051808303816000865af19150503d8060008114611f14576040519150601f19603f3d011682016040523d82523d6000602084013e611f19565b606091505b509150915081611f2b57601584611f3f565b80806020019051810190611f3f9190615ac1565b94509250600383900b601614610a3a5760405163303d457360e21b815260040160405180910390fd5b6000806101676001600160a01b031663f7f38e2660e01b868686604051602401611f9493929190615b1f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611fd29190614c3f565b6000604051808303816000865af19150503d806000811461200f576040519150601f19603f3d011682016040523d82523d6000602084013e612014565b606091505b5091509150612023828261321f565b610b1857604051633c9afe0960e11b815260040160405180910390fd5b6000806101676001600160a01b03166378b6391860e01b858560405160240161206a929190615b8d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120a89190614c3f565b6000604051808303816000865af19150503d80600081146120e5576040519150601f19603f3d011682016040523d82523d6000602084013e6120ea565b606091505b50915091506120f9828261321f565b610dbf5760405163de94cd4f60e01b815260040160405180910390fd5b6000806101676001600160a01b0316632c4ba19160e01b878787876040516024016121449493929190615baf565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516121829190614c3f565b6000604051808303816000865af19150503d80600081146121bf576040519150601f19603f3d011682016040523d82523d6000602084013e6121c4565b606091505b50915091506121d3828261321f565b61180257604051636d4b973960e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663af99c63360e01b179052905160009182916101679161224e91614c3f565b6000604051808303816000865af19150503d806000811461228b576040519150601f19603f3d011682016040523d82523d6000602084013e612290565b606091505b509150915061229f828261321f565b610dbf5760405163b5c2401d60e01b815260040160405180910390fd5b6000806101676001600160a01b0316632e63879b60e01b85856040516024016122e6929190615b8d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516123249190614c3f565b6000604051808303816000865af19150503d8060008114612361576040519150601f19603f3d011682016040523d82523d6000602084013e612366565b606091505b5091509150612375828261321f565b610dbf576040516304abe53f60e51b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637834fb8960e11b17905290516000918291610167916123e891614c3f565b6000604051808303816000865af19150503d8060008114612425576040519150601f19603f3d011682016040523d82523d6000602084013e61242a565b606091505b5091509150612439828261321f565b610ce45760405162b4909160e51b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663a7daa18d60e01b1790529051600091829182918291610167916124af91614c3f565b6000604051808303816000865af19150503d80600081146124ec576040519150601f19603f3d011682016040523d82523d6000602084013e6124f1565b606091505b5091509150816125045760156000612518565b80806020019051810190612518919061577d565b94509250600383900b601614610a3a5760405163f6e464e960e01b815260040160405180910390fd5b600061254c82613250565b60008060006101676001600160a01b031634639c89bb3560e01b876040516024016125779190615c02565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516125b59190614c3f565b60006040518083038185875af1925050503d80600081146125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50915091508161260a576015600061261e565b8080602001905181019061261e9190615c15565b945060030b925060168314610a3a57604051635850783b60e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166352f9138760e01b17905290516000918291610167916126a491614c3f565b6000604051808303816000865af19150503d80600081146126e1576040519150601f19603f3d011682016040523d82523d6000602084013e6126e6565b606091505b50915091506126f5828261321f565b610dbf57604051633b85464b60e11b815260040160405180910390fd5b604080516001600160a01b0384166024820152600783900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b17905290516000918291829182916101679161277691614c3f565b6000604051808303816000865af19150503d80600081146127b3576040519150601f19603f3d011682016040523d82523d6000602084013e6127b8565b606091505b5091509150816127cb57601560006127df565b808060200190518101906127df9190615c15565b94509250600383900b6016146115535760405163e460426160e01b815260040160405180910390fd5b604080516001600160a01b038381166024830152841660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316630132f29d60e31b179052905160009182916101679161286691614c3f565b6000604051808303816000865af19150503d80600081146128a3576040519150601f19603f3d011682016040523d82523d6000602084013e6128a8565b606091505b50915091506128b7828261321f565b610dbf576040516314439df560e31b815260040160405180910390fd5b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b17905290516000918291829182916101679161293e91614c3f565b6000604051808303816000865af19150503d806000811461297b576040519150601f19603f3d011682016040523d82523d6000602084013e612980565b606091505b50915091508161299357601560006129a7565b808060200190518101906129a79190615c41565b94509250600383900b6016146114155760405163b9382f0760e01b815260040160405180910390fd5b6000806101676001600160a01b03166382bba49360e01b8686866040516024016129fc93929190615c6d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612a3a9190614c3f565b6000604051808303816000865af19150503d8060008114612a77576040519150601f19603f3d011682016040523d82523d6000602084013e612a7c565b606091505b5091509150612a8b828261321f565b610b185760405163311bf68160e11b815260040160405180910390fd5b6000612ab384613250565b60008060006101676001600160a01b031634634573396960e01b898989604051602401612ae293929190615d1f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612b209190614c3f565b60006040518083038185875af1925050503d8060008114612b5d576040519150601f19603f3d011682016040523d82523d6000602084013e612b62565b606091505b509150915081612b755760156000612b89565b80806020019051810190612b899190615c15565b945060030b9250601683146114155760405163893b894d60e01b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f106b4b60e21b1790529051600091829161016791612c0791614c3f565b6000604051808303816000865af19150503d8060008114612c44576040519150601f19603f3d011682016040523d82523d6000602084013e612c49565b606091505b5091509150612c58828261321f565b610ce457604051630d797d9160e31b815260040160405180910390fd5b6000806000806101676001600160a01b031663acb9cff960e01b888888604051602401612ca493929190615dd6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612ce29190614c3f565b6000604051808303816000865af19150503d8060008114612d1f576040519150601f19603f3d011682016040523d82523d6000602084013e612d24565b606091505b509150915081612d375760156000612d4b565b80806020019051810190612d4b9190615e07565b94509250600383900b60161461141557604051631bc5aabf60e21b815260040160405180910390fd5b6000612d7f86613250565b60008060006101676001600160a01b03163463b937581a60e01b8b8b8b8b8b604051602401612db2959493929190615e33565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612df09190614c3f565b60006040518083038185875af1925050503d8060008114612e2d576040519150601f19603f3d011682016040523d82523d6000602084013e612e32565b606091505b509150915081612e455760156000612e59565b80806020019051810190612e599190615c15565b945060030b925060168314612e81576040516351aeaaf760e11b815260040160405180910390fd5b50505095945050505050565b6000612e9884613250565b60008060006101676001600160a01b03163463c23baeb660e01b898989604051602401612ec793929190615f02565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612f059190614c3f565b60006040518083038185875af1925050503d8060008114612f42576040519150601f19603f3d011682016040523d82523d6000602084013e612f47565b606091505b509150915081612f5a5760156000612f6e565b80806020019051810190612f6e9190615c15565b94509250600383900b60161461141557604051636cc9c7cf60e11b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166319f3736160e01b179052905160009182918291829161016791612ff191614c3f565b6000604051808303816000865af19150503d806000811461302e576040519150601f19603f3d011682016040523d82523d6000602084013e613033565b606091505b509150915081613046576015600061305a565b8080602001905181019061305a919061577d565b94509250600383900b601614610a3a57604051634050963360e01b815260040160405180910390fd5b604080516001600160a01b03858116602483015284166044820152606480820184905282518083039091018152608490910182526020810180516001600160e01b031663e1f21c6760e01b17905290516000918291610167916130e591614c3f565b6000604051808303816000865af19150503d8060008114613122576040519150601f19603f3d011682016040523d82523d6000602084013e613127565b606091505b5091509150613136828261321f565b610b1857604051633e3f8f7360e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166316e3e16160e21b17905290516000918291610167916131b191614c3f565b6000604051808303816000865af19150503d80600081146131ee576040519150601f19603f3d011682016040523d82523d6000602084013e6131f3565b606091505b5091509150613202828261321f565b610dbf57604051631a0a25f560e31b815260040160405180910390fd5b600060168361322f576015613243565b828060200190518101906132439190615f27565b60030b1490505b92915050565b6101008101515163ffffffff1615801561327757506101008101516040015163ffffffff16155b1561329657610100810180516276a70060409091015251306020909101525b50565b60405180604001604052806132ac6132b9565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e084018190526102008401839052845192830185528083526020830181905293820193909352610220820152908190815260200160006001600160401b03168152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6040518060c001604052806133896132b9565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b6001600160a01b038116811461329657600080fd5b80356133d1816133b1565b919050565b6000602082840312156133e857600080fd5b81356133f3816133b1565b9392505050565b60005b838110156134155781810151838201526020016133fd565b83811115610dbf5750506000910152565b6000815180845261343e8160208601602086016133fa565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a0604086015261348a60a0860183613426565b9150606084015185830360608701526134a38382613426565b925050806080850151166080860152508091505092915050565b600082825180855260208086019550808260051b84010181860160005b8481101561351c57858303601f19018952815180518452840151604085850181905261350881860183613452565b9a86019a94505050908301906001016134da565b5090979650505050505050565b6000610160825181855261353f82860182613426565b915050602083015184820360208601526135598282613426565b915050604083015161357660408601826001600160a01b03169052565b506060830151848203606086015261358e8282613426565b91505060808301516135a4608086018215159052565b5060a08301516135b960a086018260070b9052565b5060c08301516135cd60c086018215159052565b5060e083015184820360e08601526135e582826134bd565b61010085810151805163ffffffff9081168984015260208201516001600160a01b03166101208a015260408201511661014089015291935091505090949350505050565b600081518084526020808501945080840160005b838110156136a75761369487835163ffffffff815116825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a096909601959082019060010161363d565b509495945050505050565b600081518084526020808501945080840160005b838110156136a75761372787835163ffffffff808251168352806020830151166020840152806040830151166040840152806060830151166060840152506080810151151560808301526001600160a01b0360a08201511660a08301525050565b60c09690960195908201906001016136c6565b600081518084526020808501945080840160005b838110156136a7576137b387835163ffffffff8082511683528060208301511660208401528060408301511660408401525060608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b60c096909601959082019060010161374e565b600061012082518185526137dc82860182613529565b91505060208301516137f960208601826001600160401b03169052565b50604083015161380d604086018215159052565b506060830151613821606086018215159052565b506080830151613835608086018215159052565b5060a083015184820360a086015261384d8282613629565b91505060c083015184820360c086015261386782826136b2565b91505060e083015184820360e0860152613881828261373a565b915050610100808401518583038287015261389c8382613426565b9695505050505050565b6020815260008251604060208401526138c260608401826137c6565b905063ffffffff60208501511660408401528091505092915050565b8060070b811461329657600080fd5b80356133d1816138de565b60008060006060848603121561390d57600080fd5b8335613918816133b1565b92506020840135613928816133b1565b91506040840135613938816138de565b809150509250925092565b6020815260006133f360208301846137c6565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561398e5761398e613956565b60405290565b604051606081016001600160401b038111828210171561398e5761398e613956565b604080519081016001600160401b038111828210171561398e5761398e613956565b60405160a081016001600160401b038111828210171561398e5761398e613956565b60405161012081016001600160401b038111828210171561398e5761398e613956565b60405160c081016001600160401b038111828210171561398e5761398e613956565b604051601f8201601f191681016001600160401b0381118282101715613a6757613a67613956565b604052919050565b60006001600160401b03821115613a8857613a88613956565b5060051b60200190565b801515811461329657600080fd5b80356133d181613a92565b600082601f830112613abc57600080fd5b81356020613ad1613acc83613a6f565b613a3f565b82815260079290921b84018101918181019086841115613af057600080fd5b8286015b84811015613b675760808189031215613b0d5760008081fd5b613b1561396c565b8135613b20816133b1565b815281850135613b2f816133b1565b81860152604082810135613b42816138de565b90820152606082810135613b5581613a92565b90820152835291830191608001613af4565b509695505050505050565b600060208284031215613b8457600080fd5b6001600160401b038083351115613b9a57600080fd5b8235830184601f820112613bad57600080fd5b613bba613acc8235613a6f565b81358082526020808301929160051b840101871015613bd857600080fd5b602083015b6020843560051b850101811015613b67578481351115613bfc57600080fd5b803584016060818a03601f19011215613c1457600080fd5b613c1c613994565b613c2960208301356133b1565b602082013581528660408301351115613c4157600080fd5b604082013582018a603f820112613c5757600080fd5b613c67613acc6020830135613a6f565b602082810135808352908201919060600283016040018d811115613c8a57600080fd5b6040840193505b80841015613d00576060848f031215613ca957600080fd5b613cb1613994565b613cbb85356133b1565b84358152613ccc60208601356138de565b60208501356020820152613ce36040860135613a92565b604085810135908201528352606090930192602090920191613c91565b50602084015250506060820135871015613d1957600080fd5b613d2c8a60206060850135850101613aab565b604082015284525060209283019201613bdd565b63ffffffff8116811461329657600080fd5b600060608284031215613d6457600080fd5b613d6c613994565b90508135613d7981613d40565b81526020820135613d89816133b1565b60208201526040820135613d9c81613d40565b604082015292915050565b60008060808385031215613dba57600080fd5b8235613dc5816133b1565b9150613dd48460208501613d52565b90509250929050565b60008060408385031215613df057600080fd5b8235613dfb816133b1565b91506020830135613e0b816133b1565b809150509250929050565b600080600060608486031215613e2b57600080fd5b8335613e36816133b1565b92506020840135613e46816133b1565b9150604084013561393881613d40565b6001600160401b038116811461329657600080fd5b60006001600160401b03821115613e8457613e84613956565b50601f01601f191660200190565b600082601f830112613ea357600080fd5b8135613eb1613acc82613e6b565b818152846020838601011115613ec657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613ef857600080fd5b8335613f03816133b1565b9250602084810135613f1481613e56565b925060408501356001600160401b0380821115613f3057600080fd5b818701915087601f830112613f4457600080fd5b8135613f52613acc82613a6f565b81815260059190911b8301840190848101908a831115613f7157600080fd5b8585015b83811015613fa957803585811115613f8d5760008081fd5b613f9b8d89838a0101613e92565b845250918601918601613f75565b508096505050505050509250925092565b6000604082016001600160401b03851683526020604081850152818551808452606086019150828701935060005b8181101561351c57845160070b83529383019391830191600101613fe8565b60608152600061401a6060830186613629565b828103602084015261402c81866136b2565b9050828103604084015261389c818561373a565b60008060006060848603121561405557600080fd5b8335614060816133b1565b92506020840135614070816133b1565b91506040840135613938816133b1565b6000806040838503121561409357600080fd5b823561409e816133b1565b946020939093013593505050565b6020815260006133f36020830184613452565b6000806000606084860312156140d457600080fd5b83356140df816133b1565b925060208401356140ef816133b1565b9150604084013561393881613a92565b6000806000806080858703121561411557600080fd5b8435614120816133b1565b93506020850135614130816133b1565b92506040850135614140816133b1565b91506060850135614150816138de565b939692955090935050565b600082601f83011261416c57600080fd5b8135602061417c613acc83613a6f565b82815260059290921b8401810191818101908684111561419b57600080fd5b8286015b84811015613b675780356001600160401b03808211156141be57600080fd5b908801906040601f19838c0381018213156141d857600080fd5b6141e06139b6565b88850135815282850135848111156141f757600080fd5b949094019360a0858e038301121561420f5760008081fd5b6142176139d8565b91508885013561422681613a92565b825284830135614235816133b1565b828a01526060858101358581111561424d5760008081fd5b61425b8f8c838a0101613e92565b85850152506080935083860135858111156142765760008081fd5b6142848f8c838a0101613e92565b82850152505061429660a086016133c6565b92820192909252818801528552505091830191830161419f565b600080604083850312156142c357600080fd5b82356142ce816133b1565b915060208301356001600160401b038111156142e957600080fd5b6142f58582860161415b565b9150509250929050565b6000806040838503121561431257600080fd5b823561431d816133b1565b91506020830135613e0b816138de565b602081526000825160c0602084015261434960e08401826137c6565b9050602084015160070b604084015260408401516001600160a01b038082166060860152606086015160070b608086015260808601519150601f198584030160a08601526143978383613426565b92508060a08701511660c086015250508091505092915050565b600061016082840312156143c457600080fd5b6143cc6139fa565b905081356001600160401b03808211156143e557600080fd5b6143f185838601613e92565b8352602084013591508082111561440757600080fd5b61441385838601613e92565b6020840152614424604085016133c6565b6040840152606084013591508082111561443d57600080fd5b61444985838601613e92565b606084015261445a60808501613aa0565b608084015261446b60a085016138ed565b60a084015261447c60c08501613aa0565b60c084015260e084013591508082111561449557600080fd5b506144a28482850161415b565b60e0830152506101006144b784828501613d52565b9082015292915050565b600080604083850312156144d457600080fd5b82356144df816133b1565b915060208301356001600160401b038111156144fa57600080fd5b6142f5858286016143b1565b6060810161324a8284805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b600082601f83011261454b57600080fd5b8135602061455b613acc83613a6f565b82815260059290921b8401810191818101908684111561457a57600080fd5b8286015b84811015613b67578035614591816138de565b835291830191830161457e565b6000806000606084860312156145b357600080fd5b83356145be816133b1565b925060208401356145ce816133b1565b915060408401356001600160401b038111156145e957600080fd5b6145f58682870161453a565b9150509250925092565b600082601f83011261461057600080fd5b81356020614620613acc83613a6f565b82815260059290921b8401810191818101908684111561463f57600080fd5b8286015b84811015613b67578035614656816133b1565b8352918301918301614643565b6000806040838503121561467657600080fd5b8235614681816133b1565b915060208301356001600160401b0381111561469c57600080fd5b6142f5858286016145ff565b600080600080608085870312156146be57600080fd5b84356146c9816133b1565b935060208501356001600160401b03808211156146e557600080fd5b6146f1888389016145ff565b9450604087013591508082111561470757600080fd5b614713888389016145ff565b9350606087013591508082111561472957600080fd5b506147368782880161453a565b91505092959194509250565b60006020828403121561475457600080fd5b81356001600160401b0381111561476a57600080fd5b614776848285016143b1565b949350505050565b60008060006060848603121561479357600080fd5b833561479e816133b1565b925060208401356001600160401b03808211156147ba57600080fd5b6147c6878388016145ff565b935060408601359150808211156147dc57600080fd5b506145f58682870161453a565b600082601f8301126147fa57600080fd5b8135602061480a613acc83613a6f565b82815260a0928302850182019282820191908785111561482957600080fd5b8387015b8581101561351c5781818a0312156148455760008081fd5b61484d6139d8565b813561485881613d40565b815281860135614867816133b1565b8187015260408281013561487a81613a92565b9082015260608281013561488d81613a92565b908201526080828101356148a0816133b1565b90820152845292840192810161482d565b600080600060608085870312156148c757600080fd5b84356001600160401b03808211156148de57600080fd5b6148ea888389016143b1565b955060209150818701358181111561490157600080fd5b61490d89828a016147e9565b9550506040808801358281111561492357600080fd5b88019150601f8201891361493657600080fd5b8135614944613acc82613a6f565b81815260c0918202840185019185820191908c84111561496357600080fd5b948601945b838610156149fd5780868e0312156149805760008081fd5b614988613a1d565b863561499381613d40565b8152868801356149a281613d40565b81890152868601356149b381613d40565b81870152868901356149c4816133b1565b818a01526080878101356149d781613a92565b9082015260a0878101356149ea816133b1565b9082015283529485019491860191614968565b50809750505050505050509250925092565b600080600060608486031215614a2457600080fd5b8335614a2f816133b1565b925060208401356145ce81613e56565b600080600080600060a08688031215614a5757600080fd5b85356001600160401b0380821115614a6e57600080fd5b614a7a89838a016143b1565b96506020915081880135955060408801359450606088013581811115614a9f57600080fd5b614aab8a828b016147e9565b94505060808089013582811115614ac157600080fd5b89019150601f82018a13614ad457600080fd5b8135614ae2613acc82613a6f565b81815260c0918202840185019185820191908d841115614b0157600080fd5b948601945b83861015614b9d5780868f031215614b1e5760008081fd5b614b26613a1d565b8635614b3181613d40565b815286880135614b4081613d40565b818901526040870135614b5281613d40565b60408201526060870135614b6581613d40565b606082015286860135614b7781613a92565b8187015260a0870135614b89816133b1565b60a082015283529485019491860191614b06565b508096505050505050509295509295909350565b600080600060608486031215614bc657600080fd5b83356001600160401b03811115614bdc57600080fd5b614be8868287016143b1565b9660208601359650604090950135949350505050565b600080600060608486031215614c1357600080fd5b8335614c1e816133b1565b92506020840135614c2e816133b1565b929592945050506040919091013590565b60008251614c518184602087016133fa565b9190910192915050565b8051600381900b81146133d157600080fd5b600082601f830112614c7e57600080fd5b8151614c8c613acc82613e6b565b818152846020838601011115614ca157600080fd5b6147768260208301602087016133fa565b80516133d1816133b1565b80516133d181613a92565b80516133d1816138de565b600060a08284031215614ce557600080fd5b614ced6139d8565b90508151614cfa81613a92565b81526020820151614d0a816133b1565b602082015260408201516001600160401b0380821115614d2957600080fd5b614d3585838601614c6d565b60408401526060840151915080821115614d4e57600080fd5b50614d5b84828501614c6d565b6060830152506080820151614d6f816133b1565b608082015292915050565b600082601f830112614d8b57600080fd5b81516020614d9b613acc83613a6f565b82815260059290921b84018101918181019086841115614dba57600080fd5b8286015b84811015613b675780516001600160401b0380821115614dde5760008081fd5b908801906040828b03601f1901811315614df85760008081fd5b614e006139b6565b838801518152908301519082821115614e195760008081fd5b614e278c8984870101614cd3565b818901528652505050918301918301614dbe565b600060608284031215614e4d57600080fd5b614e55613994565b90508151614e6281613d40565b81526020820151614e72816133b1565b60208201526040820151613d9c81613d40565b60006101608284031215614e9857600080fd5b614ea06139fa565b905081516001600160401b0380821115614eb957600080fd5b614ec585838601614c6d565b83526020840151915080821115614edb57600080fd5b614ee785838601614c6d565b6020840152614ef860408501614cb2565b60408401526060840151915080821115614f1157600080fd5b614f1d85838601614c6d565b6060840152614f2e60808501614cbd565b6080840152614f3f60a08501614cc8565b60a0840152614f5060c08501614cbd565b60c084015260e0840151915080821115614f6957600080fd5b50614f7684828501614d7a565b60e0830152506101006144b784828501614e3b565b80516133d181613e56565b600082601f830112614fa757600080fd5b81516020614fb7613acc83613a6f565b82815260a09283028501820192828201919087851115614fd657600080fd5b8387015b8581101561351c5781818a031215614ff25760008081fd5b614ffa6139d8565b815161500581613d40565b815281860151615014816133b1565b8187015260408281015161502781613a92565b9082015260608281015161503a81613a92565b9082015260808281015161504d816133b1565b908201528452928401928101614fda565b600082601f83011261506f57600080fd5b8151602061507f613acc83613a6f565b82815260c0928302850182019282820191908785111561509e57600080fd5b8387015b8581101561351c5781818a0312156150ba5760008081fd5b6150c2613a1d565b81516150cd81613d40565b8152818601516150dc81613d40565b818701526040828101516150ef81613d40565b9082015260608281015161510281613d40565b9082015260808281015161511581613a92565b9082015260a082810151615128816133b1565b9082015284529284019281016150a2565b600082601f83011261514a57600080fd5b8151602061515a613acc83613a6f565b82815260c0928302850182019282820191908785111561517957600080fd5b8387015b8581101561351c5781818a0312156151955760008081fd5b61519d613a1d565b81516151a881613d40565b8152818601516151b781613d40565b818701526040828101516151ca81613d40565b908201526060828101516151dd816133b1565b908201526080828101516151f081613a92565b9082015260a082810151615203816133b1565b90820152845292840192810161517d565b6000610120828403121561522757600080fd5b61522f6139fa565b905081516001600160401b038082111561524857600080fd5b61525485838601614e85565b835261526260208501614f8b565b602084015261527360408501614cbd565b604084015261528460608501614cbd565b606084015261529560808501614cbd565b608084015260a08401519150808211156152ae57600080fd5b6152ba85838601614f96565b60a084015260c08401519150808211156152d357600080fd5b6152df8583860161505e565b60c084015260e08401519150808211156152f857600080fd5b61530485838601615139565b60e08401526101009150818401518181111561531f57600080fd5b61532b86828701614c6d565b8385015250505092915050565b6000806040838503121561534b57600080fd5b61535483614c5b565b915060208301516001600160401b038082111561537057600080fd5b908401906040828703121561538457600080fd5b60405160408101818110838211171561539f5761539f613956565b6040528251828111156153b157600080fd5b6153bd88828601615214565b825250602083015192506153d083613d40565b8260208201528093505050509250929050565b600080604083850312156153f657600080fd5b6153ff83614c5b565b915060208301516001600160401b0381111561541a57600080fd5b6142f585828601615214565b600081518084526020808501945080840160005b838110156136a757815180516001600160a01b03908116895284820151168489015260408082015160070b908901526060908101511515908801526080909601959082019060010161543a565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561555e57603f19898403018552815160608085016001600160a01b038084511687528a840151838c89015282815180855260808a0191508d83019450600092505b8083101561552b5784518051851683528e81015160070b8f8401528d015115158d830152938d019360019290920191908501906154f3565b50948b0151888603898d0152946155428187615426565b9a8d019a98505050948a019450505060019190910190506154ae565b509098975050505050505050565b6001600160a01b0383168152608081016133f36020830184805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b6000606082016001600160a01b038616835260206001600160401b038616818501526060604085015281855180845260808601915060808160051b870101935082870160005b8281101561562357607f19888703018452615611868351613426565b955092840192908401906001016155f5565b50939998505050505050505050565b60008060006060848603121561564757600080fd5b61565084614c5b565b925060208085015161566181613e56565b60408601519093506001600160401b0381111561567d57600080fd5b8501601f8101871361568e57600080fd5b805161569c613acc82613a6f565b81815260059190911b820183019083810190898311156156bb57600080fd5b928401925b828410156156e25783516156d3816138de565b825292840192908401906156c0565b80955050505050509250925092565b6000806000806080858703121561570757600080fd5b61571085614c5b565b935060208501516001600160401b038082111561572c57600080fd5b61573888838901614f96565b9450604087015191508082111561574e57600080fd5b61575a8883890161505e565b9350606087015191508082111561577057600080fd5b5061473687828801615139565b6000806040838503121561579057600080fd5b61579983614c5b565b91506020830151613e0b81613a92565b600080604083850312156157bc57600080fd5b6157c583614c5b565b915060208301516001600160401b038111156157e057600080fd5b6142f585828601614cd3565b600081518084526020808501808196508360051b8101915082860160005b858110156158a35782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b015261586560e08b0186613426565b928601518a8403603f1901858c01529294506158818584613426565b9501511660c0989098019790975250509885019893509084019060010161580a565b5091979650505050505050565b6001600160a01b038316815260406020820152600061477660408301846157ec565b600080604083850312156158e557600080fd5b6158ee83614c5b565b915060208301516001600160401b038082111561590a57600080fd5b9084019060c0828703121561591e57600080fd5b615926613a1d565b82518281111561593557600080fd5b61594188828601615214565b82525061595060208401614cc8565b602082015261596160408401614cb2565b604082015261597260608401614cc8565b606082015260808301518281111561598957600080fd5b61599588828601614c6d565b6080830152506159a760a08401614cb2565b60a08201528093505050509250929050565b600080604083850312156159cc57600080fd5b6159d583614c5b565b9150613dd460208401614c5b565b600061016082518185526159f982860182613426565b91505060208301518482036020860152615a138282613426565b9150506040830151615a3060408601826001600160a01b03169052565b5060608301518482036060860152615a488282613426565b9150506080830151615a5e608086018215159052565b5060a0830151615a7360a086018260070b9052565b5060c0830151615a8760c086018215159052565b5060e083015184820360e08601526135e582826157ec565b6001600160a01b038316815260406020820152600061477660408301846159e3565b60008060808385031215615ad457600080fd5b615add83614c5b565b9150613dd48460208501614e3b565b600081518084526020808501945080840160005b838110156136a757815160070b87529582019590820190600101615b00565b60006001600160a01b03808616835280851660208401525060606040830152615b4b6060830184615aec565b95945050505050565b600081518084526020808501945080840160005b838110156136a75781516001600160a01b031687529582019590820190600101615b68565b6001600160a01b03831681526040602082015260006147766040830184615b54565b6001600160a01b0385168152608060208201526000615bd16080830186615b54565b8281036040840152615be38186615b54565b90508281036060840152615bf78185615aec565b979650505050505050565b6020815260006133f360208301846159e3565b60008060408385031215615c2857600080fd5b615c3183614c5b565b91506020830151613e0b816133b1565b60008060408385031215615c5457600080fd5b615c5d83614c5b565b9150602083015190509250929050565b6001600160a01b0384168152606060208201526000615c8f6060830185615b54565b828103604084015261389c8185615aec565b600081518084526020808501945080840160005b838110156136a757615d0c87835163ffffffff815116825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a0969096019590820190600101615cb5565b606081526000615d3260608301866159e3565b602083820381850152615d458287615ca1565b8481036040860152855180825282870193509082019060005b8181101561555e57615dc383865163ffffffff8082511683528060208301511660208401528060408301511660408401525060608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b9383019360c09290920191600101615d5e565b6001600160a01b03841681526001600160401b0383166020820152606060408201526000615b4b6060830184615aec565b60008060408385031215615e1a57600080fd5b615e2383614c5b565b91506020830151613e0b81613e56565b60a081526000615e4660a08301886159e3565b602087818501528660408501528382036060850152615e658287615ca1565b8481036080860152855180825282870193509082019060005b81811015615ef257615edf83865163ffffffff808251168352806020830151166020840152806040830151166040840152806060830151166060840152506080810151151560808301526001600160a01b0360a08201511660a08301525050565b9383019360c09290920191600101615e7e565b50909a9950505050505050505050565b606081526000615f1560608301866159e3565b60208301949094525060400152919050565b600060208284031215615f3957600080fd5b6133f382614c5b56fea26469706673582212201cac2dd19133638f2635757b82760093cde680c8eb914bbf98b8b6f96366d7c564736f6c63430008090033", + "bytecode": "0x615fc46200003b600b82828239805160001a60731461002e57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106102d95760003560e01c806354a0b16c116101965780638d1433dd116100f8578063be83aa99116100a1578063dfb3bfc41161007b578063dfb3bfc4146108df578063eb5625d9146108ff578063eccc07c61461091f57600080fd5b8063be83aa991461087f578063ccc261fe1461089f578063cf58c3ea146108bf57600080fd5b8063978df2a2116100d2578063978df2a2146108115780639c7e98d014610831578063ba2ad9731461085157600080fd5b80638d1433dd146107b1578063910f2711146107d157806394f74f3e146107f157600080fd5b80636efe63a51161015a57806382ddffbf1161013457806382ddffbf1461075157806387e6877c14610771578063894c66531461079157600080fd5b80636efe63a5146106f1578063705314a0146107115780637c6c6a841461073157600080fd5b806354a0b16c1461062457806355caeb0914610651578063587da69a1461068457806367ac8453146106a45780636e4333fd146106c457600080fd5b80633364596e1161023f57806348b14613116102035780634ddd613b116101dd5780634ddd613b146105c45780634e03000f146105e45780635140d67d1461060457600080fd5b806348b14613146105645780634959707b1461058457806349c8532b146105a457600080fd5b80633364596e1461048a5780633e54fba8146104b957806341e3eeab146104e9578063421d02281461050957806344f8e4711461053757600080fd5b806310e90655116102a15780631ffbb8d71161027b5780631ffbb8d71461041757806327a84817146104375780632ad145af1461046a57600080fd5b806310e90655146103b757806319cdce7e146103d75780631e4b2654146103f757600080fd5b806302004ccd146102de578063042a34b81461031b57806305923cee14610348578063067fa1221461036a5780630962e27b14610397575b600080fd5b8180156102ea57600080fd5b506102fe6102f936600461387f565b61093f565b6040516001600160a01b0390911681526020015b60405180910390f35b81801561032757600080fd5b5061033b6103363660046138e2565b610a53565b6040516103129190613da0565b81801561035457600080fd5b50610368610363366004613dd5565b610b4d565b005b81801561037657600080fd5b5061038a6103853660046138e2565b610c2a565b6040516103129190613e15565b8180156103a357600080fd5b506103686103b2366004613edf565b610d1c565b8180156103c357600080fd5b506103686103d23660046140ad565b610df4565b8180156103e357600080fd5b506103686103f23660046138e2565b610ed0565b81801561040357600080fd5b50610368610412366004613dd5565b610f94565b81801561042357600080fd5b506103686104323660046140e3565b61106a565b81801561044357600080fd5b50610457610452366004614180565b611136565b60405160079190910b8152602001610312565b81801561047657600080fd5b506103686104853660046140e3565b611235565b81801561049657600080fd5b506104aa6104a53660046138e2565b611301565b604051610312939291906141e1565b8180156104c557600080fd5b506104d96104d436600461421a565b611402565b6040519015158152602001610312565b8180156104f557600080fd5b506102fe610504366004614322565b6114fe565b81801561051557600080fd5b506105296105243660046144a6565b611617565b60405161031292919061457d565b81801561054357600080fd5b506105576105523660046145d2565b611736565b60405161031291906145fe565b81801561057057600080fd5b5061036861057f366004614611565b611873565b81801561059057600080fd5b506104d961059f3660046140e3565b611947565b8180156105b057600080fd5b506103686105bf366004614651565b611a3b565b8180156105d057600080fd5b506104d96105df3660046138e2565b611b21565b8180156105f057600080fd5b506103686105ff3660046146ad565b611c0c565b81801561061057600080fd5b506104d961061f3660046140e3565b611ce2565b81801561063057600080fd5b5061064461063f3660046146fc565b611dd6565b604051610312919061472a565b81801561065d57600080fd5b5061067161066c3660046138e2565b611ed2565b60405160039190910b8152602001610312565b81801561069057600080fd5b5061036861069f366004614651565b611fbe565b8180156106b057600080fd5b506103686106bf3660046147ae565b61209c565b8180156106d057600080fd5b506106e46106df3660046138e2565b61217b565b60405161031291906147f3565b8180156106fd57600080fd5b5061036861070c366004614827565b61227f565b81801561071d57600080fd5b5061036861072c3660046148bb565b612357565b81801561073d57600080fd5b5061036861074c366004614900565b61242d565b81801561075d57600080fd5b5061036861076c3660046140e3565b612507565b81801561077d57600080fd5b5061036861078c3660046148bb565b6125d3565b81801561079d57600080fd5b506103686107ac3660046138e2565b6126a9565b8180156107bd57600080fd5b506104d96107cc3660046138e2565b61276c565b8180156107dd57600080fd5b506102fe6107ec36600461499a565b612858565b8180156107fd57600080fd5b5061036861080c3660046140e3565b61295d565b81801561081d57600080fd5b506102fe61082c3660046146fc565b612a29565b81801561083d57600080fd5b5061036861084c3660046140e3565b612b1f565b81801561085d57600080fd5b5061087161086c36600461421a565b612beb565b604051908152602001610312565b81801561088b57600080fd5b5061036861089a3660046149d6565b612ce7565b8180156108ab57600080fd5b506102fe6108ba366004614a41565b612dbf565b8180156108cb57600080fd5b506103686108da3660046138e2565b612ec8565b8180156108eb57600080fd5b506104d96108fa3660046138e2565b612f8c565b81801561090b57600080fd5b5061036861091a366004614b9f565b613078565b81801561092b57600080fd5b5061036861093a3660046140e3565b613148565b600061094a84613214565b60008060006101676001600160a01b031634630fb65bf360e01b89898960405160240161097993929190614d60565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109b79190614d8f565b60006040518083038185875af1925050503d80600081146109f4576040519150601f19603f3d011682016040523d82523d6000602084013e6109f9565b606091505b509150915081610a0c5760156000610a20565b80806020019051810190610a209190614dab565b94509250600383900b601614610a4957604051636cc9c7cf60e11b815260040160405180910390fd5b5050509392505050565b610a5b613288565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b17905290516000918291829161016791610ab49190614d8f565b6000604051808303816000865af19150503d8060008114610af1576040519150601f19603f3d011682016040523d82523d6000602084013e610af6565b606091505b509150915081610b0857601584610b1c565b80806020019051810190610b1c919061549a565b94509250600383900b601614610b4557604051631fbc7c8f60e01b815260040160405180910390fd5b505050919050565b604080516001600160a01b03858116602483015284166044820152600783900b60648083019190915282518083039091018152608490910182526020810180516001600160e01b03166307336aaf60e41b1790529051600091829161016791610bb591614d8f565b6000604051808303816000865af19150503d8060008114610bf2576040519150601f19603f3d011682016040523d82523d6000602084013e610bf7565b606091505b5091509150610c068282613257565b610c23576040516323241c4960e01b815260040160405180910390fd5b5050505050565b610c326132a8565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291829161016791610c8b9190614d8f565b6000604051808303816000865af19150503d8060008114610cc8576040519150601f19603f3d011682016040523d82523d6000602084013e610ccd565b606091505b509150915081610cdf57601584610cf3565b80806020019051810190610cf39190615548565b94509250600383900b601614610b4557604051632a5292c160e11b815260040160405180910390fd5b6000806101676001600160a01b0316630e71804f60e01b84604051602401610d4491906155ef565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d829190614d8f565b6000604051808303816000865af19150503d8060008114610dbf576040519150601f19603f3d011682016040523d82523d6000602084013e610dc4565b606091505b5091509150610dd38282613257565b610def5760405162eebe6360e81b815260040160405180910390fd5b505050565b6000806101676001600160a01b031663d27be6cd60e01b8585604051602401610e1e9291906156c6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610e5c9190614d8f565b6000604051808303816000865af19150503d8060008114610e99576040519150601f19603f3d011682016040523d82523d6000602084013e610e9e565b606091505b5091509150610ead8282613257565b610eca5760405163c779f09560e01b815260040160405180910390fd5b50505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633b3bff0f60e01b1790529051600091829161016791610f2691614d8f565b6000604051808303816000865af19150503d8060008114610f63576040519150601f19603f3d011682016040523d82523d6000602084013e610f68565b606091505b5091509150610f778282613257565b610def5760405163f5db475160e01b815260040160405180910390fd5b604080516001600160a01b03858116602483015284166044820152600783900b60648083019190915282518083039091018152608490910182526020810180516001600160e01b031663efef57f960e01b1790529051600091829161016791610ffc91614d8f565b6000604051808303816000865af19150503d8060008114611039576040519150601f19603f3d011682016040523d82523d6000602084013e61103e565b606091505b509150915061104d8282613257565b610c2357604051634c55bcdb60e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316638f8d7f9960e01b17905290516000918291610167916110c891614d8f565b6000604051808303816000865af19150503d8060008114611105576040519150601f19603f3d011682016040523d82523d6000602084013e61110a565b606091505b50915091506111198282613257565b610eca57604051630fe6b06560e11b815260040160405180910390fd5b6000806000806101676001600160a01b031663d6910d0660e01b8888886040516024016111659392919061573c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111a39190614d8f565b6000604051808303816000865af19150503d80600081146111e0576040519150601f19603f3d011682016040523d82523d6000602084013e6111e5565b606091505b5091509150816111f8576015600061120c565b8080602001905181019061120c9190615770565b94509250600383900b601614610a4957604051631bc5aabf60e21b815260040160405180910390fd5b604080516001600160a01b038381166024830152841660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663248a35ef60e11b179052905160009182916101679161129391614d8f565b6000604051808303816000865af19150503d80600081146112d0576040519150601f19603f3d011682016040523d82523d6000602084013e6112d5565b606091505b50915091506112e48282613257565b610eca57604051630aadd01b60e31b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b179052905160609182918291600091829182916101679161136091614d8f565b6000604051808303816000865af19150503d806000811461139d576040519150601f19603f3d011682016040523d82523d6000602084013e6113a2565b606091505b5091509150816113b65760158686866113ca565b808060200190518101906113ca919061579f565b919850965094509250600383900b6016146113f857604051634c85126960e01b815260040160405180910390fd5b5050509193909250565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b17905290516000918291829182916101679161146c91614d8f565b6000604051808303816000865af19150503d80600081146114a9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ae565b606091505b5091509150816114c157601560006114d5565b808060200190518101906114d5919061582e565b94509250600383900b601614610a495760405163c30cd94160e01b815260040160405180910390fd5b600061150986613214565b60008060006101676001600160a01b031634632af0c59a60e01b8b8b8b8b8b60405160240161153c9594939291906158d8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161157a9190614d8f565b60006040518083038185875af1925050503d80600081146115b7576040519150601f19603f3d011682016040523d82523d6000602084013e6115bc565b606091505b5091509150816115cf57601560006115e3565b808060200190518101906115e39190614dab565b945060030b92506016831461160b576040516351aeaaf760e11b815260040160405180910390fd5b50505095945050505050565b6000606060008060006101676001600160a01b031663e0f4059a60e01b898989604051602401611649939291906159ab565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116879190614d8f565b6000604051808303816000865af19150503d80600081146116c4576040519150601f19603f3d011682016040523d82523d6000602084013e6116c9565b606091505b5091509150816116ec576040805160008082526020820190925260159190611700565b808060200190518101906117009190615a28565b90965094509250600383900b60161461172b5760405162ec6f7b60e31b815260040160405180910390fd5b505050935093915050565b61177c6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b604080516001600160a01b0385166024820152604480820185905282518083039091018152606490910182526020810180516001600160e01b0316631e26e99760e11b179052905160009182918291610167916117d99190614d8f565b6000604051808303816000865af19150503d8060008114611816576040519150601f19603f3d011682016040523d82523d6000602084013e61181b565b606091505b50915091508161182d57601584611841565b808060200190518101906118419190615aeb565b94509250600383900b60161461186a5760405163664cb42360e01b815260040160405180910390fd5b50505092915050565b604080516001600160a01b0385811660248301528416604482015282151560648083019190915282518083039091018152608490910182526020810180516001600160e01b0316631b3b02e560e11b17905290516000918291610167916118d991614d8f565b6000604051808303816000865af19150503d8060008114611916576040519150601f19603f3d011682016040523d82523d6000602084013e61191b565b606091505b509150915061192a8282613257565b610c23576040516354b6b38d60e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166346de0fb160e01b1790529051600091829182918291610167916119a991614d8f565b6000604051808303816000865af19150503d80600081146119e6576040519150601f19603f3d011682016040523d82523d6000602084013e6119eb565b606091505b5091509150816119fe5760156000611a12565b80806020019051810190611a12919061582e565b94509250600383900b60161461186a576040516374004e7960e11b815260040160405180910390fd5b604080516001600160a01b038681166024830152858116604483015284166064820152600783900b6084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316635cfc901160e01b1790529051600091829161016791611aab91614d8f565b6000604051808303816000865af19150503d8060008114611ae8576040519150601f19603f3d011682016040523d82523d6000602084013e611aed565b606091505b5091509150611afc8282613257565b611b19576040516308c0b8b360e31b815260040160405180910390fd5b505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663335e04c160e01b179052905160009182918291829161016791611b7b91614d8f565b6000604051808303816000865af19150503d8060008114611bb8576040519150601f19603f3d011682016040523d82523d6000602084013e611bbd565b606091505b509150915081611bd05760156000611be4565b80806020019051810190611be4919061582e565b94509250600383900b601614610b455760405162629e9d60e81b815260040160405180910390fd5b6000806101676001600160a01b0316636fc3cbaf60e01b8585604051602401611c36929190615b31565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c749190614d8f565b6000604051808303816000865af19150503d8060008114611cb1576040519150601f19603f3d011682016040523d82523d6000602084013e611cb6565b606091505b5091509150611cc58282613257565b610eca576040516315f62c9d60e21b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316633cb0c7fd60e21b179052905160009182918291829161016791611d4491614d8f565b6000604051808303816000865af19150503d8060008114611d81576040519150601f19603f3d011682016040523d82523d6000602084013e611d86565b606091505b509150915081611d995760156000611dad565b80806020019051810190611dad919061582e565b94509250600383900b60161461186a5760405163711425f760e11b815260040160405180910390fd5b611dde61335f565b604080516001600160a01b0385166024820152600784900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b17905290516000918291829161016791611e419190614d8f565b6000604051808303816000865af19150503d8060008114611e7e576040519150601f19603f3d011682016040523d82523d6000602084013e611e83565b606091505b509150915081611e9557601584611ea9565b80806020019051810190611ea99190615c06565b94509250600383900b60161461186a5760405163b12473af60e01b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b179052905160009182918291829161016791611f2c91614d8f565b6000604051808303816000865af19150503d8060008114611f69576040519150601f19603f3d011682016040523d82523d6000602084013e611f6e565b606091505b509150915081611f815760156000611f95565b80806020019051810190611f959190615cf0565b94509250600383900b601614610b4557604051635d4b19cf60e11b815260040160405180910390fd5b604080516001600160a01b038681166024830152858116604483015284166064820152600783900b6084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663eca3691760e01b179052905160009182916101679161202e91614d8f565b6000604051808303816000865af19150503d806000811461206b576040519150601f19603f3d011682016040523d82523d6000602084013e612070565b606091505b509150915061207f8282613257565b611b195760405163022e258160e11b815260040160405180910390fd5b6120a581613214565b6000806101676001600160a01b0316637d305cfa60e01b85856040516024016120cf929190615d1f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161210d9190614d8f565b6000604051808303816000865af19150503d806000811461214a576040519150601f19603f3d011682016040523d82523d6000602084013e61214f565b606091505b509150915061215e8282613257565b610eca5760405163c2f7c6d760e01b815260040160405180910390fd5b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b17905292519192909182918291610167916121ee91614d8f565b6000604051808303816000865af19150503d806000811461222b576040519150601f19603f3d011682016040523d82523d6000602084013e612230565b606091505b50915091508161224257601584612256565b808060200190518101906122569190615d41565b94509250600383900b601614610b455760405163303d457360e21b815260040160405180910390fd5b6000806101676001600160a01b031663f7f38e2660e01b8686866040516024016122ab93929190615d6e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516122e99190614d8f565b6000604051808303816000865af19150503d8060008114612326576040519150601f19603f3d011682016040523d82523d6000602084013e61232b565b606091505b509150915061233a8282613257565b610c2357604051633c9afe0960e11b815260040160405180910390fd5b6000806101676001600160a01b03166378b6391860e01b8585604051602401612381929190615dd3565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516123bf9190614d8f565b6000604051808303816000865af19150503d80600081146123fc576040519150601f19603f3d011682016040523d82523d6000602084013e612401565b606091505b50915091506124108282613257565b610eca5760405163de94cd4f60e01b815260040160405180910390fd5b6000806101676001600160a01b0316632c4ba19160e01b8787878760405160240161245b9493929190615df5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516124999190614d8f565b6000604051808303816000865af19150503d80600081146124d6576040519150601f19603f3d011682016040523d82523d6000602084013e6124db565b606091505b50915091506124ea8282613257565b611b1957604051636d4b973960e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663af99c63360e01b179052905160009182916101679161256591614d8f565b6000604051808303816000865af19150503d80600081146125a2576040519150601f19603f3d011682016040523d82523d6000602084013e6125a7565b606091505b50915091506125b68282613257565b610eca5760405163b5c2401d60e01b815260040160405180910390fd5b6000806101676001600160a01b0316632e63879b60e01b85856040516024016125fd929190615dd3565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161263b9190614d8f565b6000604051808303816000865af19150503d8060008114612678576040519150601f19603f3d011682016040523d82523d6000602084013e61267d565b606091505b509150915061268c8282613257565b610eca576040516304abe53f60e51b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637834fb8960e11b17905290516000918291610167916126ff91614d8f565b6000604051808303816000865af19150503d806000811461273c576040519150601f19603f3d011682016040523d82523d6000602084013e612741565b606091505b50915091506127508282613257565b610def5760405162b4909160e51b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663a7daa18d60e01b1790529051600091829182918291610167916127c691614d8f565b6000604051808303816000865af19150503d8060008114612803576040519150601f19603f3d011682016040523d82523d6000602084013e612808565b606091505b50915091508161281b576015600061282f565b8080602001905181019061282f919061582e565b94509250600383900b601614610b455760405163f6e464e960e01b815260040160405180910390fd5b600061286382613214565b60008060006101676001600160a01b03163463ea83f29360e01b8760405160240161288e9190615e48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516128cc9190614d8f565b60006040518083038185875af1925050503d8060008114612909576040519150601f19603f3d011682016040523d82523d6000602084013e61290e565b606091505b5091509150816129215760156000612935565b808060200190518101906129359190614dab565b945060030b925060168314610b4557604051635850783b60e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166352f9138760e01b17905290516000918291610167916129bb91614d8f565b6000604051808303816000865af19150503d80600081146129f8576040519150601f19603f3d011682016040523d82523d6000602084013e6129fd565b606091505b5091509150612a0c8282613257565b610eca57604051633b85464b60e11b815260040160405180910390fd5b604080516001600160a01b0384166024820152600783900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b179052905160009182918291829161016791612a8d91614d8f565b6000604051808303816000865af19150503d8060008114612aca576040519150601f19603f3d011682016040523d82523d6000602084013e612acf565b606091505b509150915081612ae25760156000612af6565b80806020019051810190612af69190614dab565b94509250600383900b60161461186a5760405163e460426160e01b815260040160405180910390fd5b604080516001600160a01b038381166024830152841660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316630132f29d60e31b1790529051600091829161016791612b7d91614d8f565b6000604051808303816000865af19150503d8060008114612bba576040519150601f19603f3d011682016040523d82523d6000602084013e612bbf565b606091505b5091509150612bce8282613257565b610eca576040516314439df560e31b815260040160405180910390fd5b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b179052905160009182918291829161016791612c5591614d8f565b6000604051808303816000865af19150503d8060008114612c92576040519150601f19603f3d011682016040523d82523d6000602084013e612c97565b606091505b509150915081612caa5760156000612cbe565b80806020019051810190612cbe9190615e5b565b94509250600383900b601614610a495760405163b9382f0760e01b815260040160405180910390fd5b6000806101676001600160a01b03166382bba49360e01b868686604051602401612d1393929190615e89565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612d519190614d8f565b6000604051808303816000865af19150503d8060008114612d8e576040519150601f19603f3d011682016040523d82523d6000602084013e612d93565b606091505b5091509150612da28282613257565b610c235760405163311bf68160e11b815260040160405180910390fd5b6000612dca84613214565b60008060006101676001600160a01b03163463abb54eb560e01b898989604051602401612df993929190615ebd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612e379190614d8f565b60006040518083038185875af1925050503d8060008114612e74576040519150601f19603f3d011682016040523d82523d6000602084013e612e79565b606091505b509150915081612e8c5760156000612ea0565b80806020019051810190612ea09190614dab565b945060030b925060168314610a495760405163893b894d60e01b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f106b4b60e21b1790529051600091829161016791612f1e91614d8f565b6000604051808303816000865af19150503d8060008114612f5b576040519150601f19603f3d011682016040523d82523d6000602084013e612f60565b606091505b5091509150612f6f8282613257565b610def57604051630d797d9160e31b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166319f3736160e01b179052905160009182918291829161016791612fe691614d8f565b6000604051808303816000865af19150503d8060008114613023576040519150601f19603f3d011682016040523d82523d6000602084013e613028565b606091505b50915091508161303b576015600061304f565b8080602001905181019061304f919061582e565b94509250600383900b601614610b4557604051634050963360e01b815260040160405180910390fd5b604080516001600160a01b03858116602483015284166044820152606480820184905282518083039091018152608490910182526020810180516001600160e01b031663e1f21c6760e01b17905290516000918291610167916130da91614d8f565b6000604051808303816000865af19150503d8060008114613117576040519150601f19603f3d011682016040523d82523d6000602084013e61311c565b606091505b509150915061312b8282613257565b610c2357604051633e3f8f7360e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166316e3e16160e21b17905290516000918291610167916131a691614d8f565b6000604051808303816000865af19150503d80600081146131e3576040519150601f19603f3d011682016040523d82523d6000602084013e6131e8565b606091505b50915091506131f78282613257565b610eca57604051631a0a25f560e31b815260040160405180910390fd5b6101008101515160070b15801561323557506101008101516040015160070b155b1561325457610100810180516276a70060409091015251306020909101525b50565b600060168361326757601561327b565b8280602001905181019061327b9190615f71565b60030b1490505b92915050565b604051806040016040528061329b6132a8565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e0840181905261020084018390528451928301855280835260208301819052938201939093526102208201529081908152602001600060070b8152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6040518060c001604052806133726132a8565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156133d2576133d261339a565b60405290565b60405160a081016001600160401b03811182821017156133d2576133d261339a565b604051606081016001600160401b03811182821017156133d2576133d261339a565b60405161012081016001600160401b03811182821017156133d2576133d261339a565b604051608081016001600160401b03811182821017156133d2576133d261339a565b60405160c081016001600160401b03811182821017156133d2576133d261339a565b604051601f8201601f191681016001600160401b03811182821017156134ab576134ab61339a565b604052919050565b60006001600160401b038211156134cc576134cc61339a565b50601f01601f191660200190565b600082601f8301126134eb57600080fd5b81356134fe6134f9826134b3565b613483565b81815284602083860101111561351357600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461325457600080fd5b803561355081613530565b919050565b801515811461325457600080fd5b803561355081613555565b8060070b811461325457600080fd5b80356135508161356e565b60006001600160401b038211156135a1576135a161339a565b5060051b60200190565b600082601f8301126135bc57600080fd5b813560206135cc6134f983613588565b82815260059290921b840181019181810190868411156135eb57600080fd5b8286015b848110156137005780356001600160401b038082111561360e57600080fd5b908801906040601f19838c03810182131561362857600080fd5b6136306133b0565b888501358152828501358481111561364757600080fd5b949094019360a0858e038301121561365f5760008081fd5b6136676133d8565b91508885013561367681613555565b82528483013561368581613530565b828a01526060858101358581111561369d5760008081fd5b6136ab8f8c838a01016134da565b85850152506080935083860135858111156136c65760008081fd5b6136d48f8c838a01016134da565b8285015250506136e660a08601613545565b9282019290925281880152855250509183019183016135ef565b509695505050505050565b60006060828403121561371d57600080fd5b6137256133fa565b905081356137328161356e565b8152602082013561374281613530565b602082015260408201356137558161356e565b604082015292915050565b6000610160828403121561377357600080fd5b61377b61341c565b905081356001600160401b038082111561379457600080fd5b6137a0858386016134da565b835260208401359150808211156137b657600080fd5b6137c2858386016134da565b60208401526137d360408501613545565b604084015260608401359150808211156137ec57600080fd5b6137f8858386016134da565b606084015261380960808501613563565b608084015261381a60a0850161357d565b60a084015261382b60c08501613563565b60c084015260e084013591508082111561384457600080fd5b50613851848285016135ab565b60e0830152506101006138668482850161370b565b9082015292915050565b8060030b811461325457600080fd5b60008060006060848603121561389457600080fd5b83356001600160401b038111156138aa57600080fd5b6138b686828701613760565b93505060208401356138c78161356e565b915060408401356138d781613870565b809150509250925092565b6000602082840312156138f457600080fd5b81356138ff81613530565b9392505050565b60005b83811015613921578181015183820152602001613909565b83811115610eca5750506000910152565b6000815180845261394a816020860160208601613906565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a0604086015261399660a0860183613932565b9150606084015185830360608701526139af8382613932565b925050806080850151166080860152508091505092915050565b6000815180845260208085019450848260051b860182860160005b85811015613a225783830389528151805184528501516040868501819052613a0e8186018361395e565b9a87019a94505050908401906001016139e4565b5090979650505050505050565b60006101608251818552613a4582860182613932565b91505060208301518482036020860152613a5f8282613932565b9150506040830151613a7c60408601826001600160a01b03169052565b5060608301518482036060860152613a948282613932565b9150506080830151613aaa608086018215159052565b5060a0830151613abf60a086018260070b9052565b5060c0830151613ad360c086018215159052565b5060e083015184820360e0860152613aeb82826139c9565b91505061010080840151613b2782870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b600081518084526020808501945080840160005b83811015613bac57613b99878351805160070b825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a0969096019590820190600101613b45565b509495945050505050565b600081518084526020808501945080840160005b83811015613bac57613c2a878351805160070b8252602081015160070b6020830152604081015160070b6040830152606081015160070b60608301526080810151151560808301526001600160a01b0360a08201511660a08301525050565b60c0969096019590820190600101613bcb565b600081518084526020808501945080840160005b83811015613bac57613cb3878351805160070b8252602081015160070b6020830152604081015160070b604083015260608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b60c0969096019590820190600101613c51565b60006101208251818552613cdc82860182613a2f565b9150506020830151613cf3602086018260070b9052565b506040830151613d07604086018215159052565b506060830151613d1b606086018215159052565b506080830151613d2f608086018215159052565b5060a083015184820360a0860152613d478282613b31565b91505060c083015184820360c0860152613d618282613bb7565b91505060e083015184820360e0860152613d7b8282613c3d565b9150506101008084015185830382870152613d968382613932565b9695505050505050565b602081526000825160406020840152613dbc6060840182613cc6565b9050602084015160030b60408401528091505092915050565b600080600060608486031215613dea57600080fd5b8335613df581613530565b92506020840135613e0581613530565b915060408401356138d78161356e565b6020815260006138ff6020830184613cc6565b600082601f830112613e3957600080fd5b81356020613e496134f983613588565b82815260079290921b84018101918181019086841115613e6857600080fd5b8286015b848110156137005760808189031215613e855760008081fd5b613e8d61343f565b8135613e9881613530565b815281850135613ea781613530565b81860152604082810135613eba8161356e565b90820152606082810135613ecd81613555565b90820152835291830191608001613e6c565b600060208284031215613ef157600080fd5b6001600160401b038083351115613f0757600080fd5b8235830184601f820112613f1a57600080fd5b613f276134f98235613588565b81358082526020808301929160051b840101871015613f4557600080fd5b602083015b6020843560051b850101811015613700578481351115613f6957600080fd5b803584016060818a03601f19011215613f8157600080fd5b613f896133fa565b613f966020830135613530565b602082013581528660408301351115613fae57600080fd5b604082013582018a603f820112613fc457600080fd5b613fd46134f96020830135613588565b602082810135808352908201919060600283016040018d811115613ff757600080fd5b6040840193505b8084101561406d576060848f03121561401657600080fd5b61401e6133fa565b6140288535613530565b84358152614039602086013561356e565b602085013560208201526140506040860135613555565b604085810135908201528352606090930192602090920191613ffe565b5060208401525050606082013587101561408657600080fd5b6140998a60206060850135850101613e28565b604082015284525060209283019201613f4a565b600080608083850312156140c057600080fd5b82356140cb81613530565b91506140da846020850161370b565b90509250929050565b600080604083850312156140f657600080fd5b823561410181613530565b9150602083013561411181613530565b809150509250929050565b600082601f83011261412d57600080fd5b8135602061413d6134f983613588565b82815260059290921b8401810191818101908684111561415c57600080fd5b8286015b848110156137005780356141738161356e565b8352918301918301614160565b60008060006060848603121561419557600080fd5b83356141a081613530565b925060208401356141b08161356e565b915060408401356001600160401b038111156141cb57600080fd5b6141d78682870161411c565b9150509250925092565b6060815260006141f46060830186613b31565b82810360208401526142068186613bb7565b90508281036040840152613d968185613c3d565b60008060006060848603121561422f57600080fd5b833561423a81613530565b9250602084013561424a81613530565b915060408401356138d781613530565b600082601f83011261426b57600080fd5b8135602061427b6134f983613588565b82815260a0928302850182019282820191908785111561429a57600080fd5b8387015b85811015613a225781818a0312156142b65760008081fd5b6142be6133d8565b81356142c98161356e565b8152818601356142d881613530565b818701526040828101356142eb81613555565b908201526060828101356142fe81613555565b9082015260808281013561431181613530565b90820152845292840192810161429e565b600080600080600060a0868803121561433a57600080fd5b85356001600160401b038082111561435157600080fd5b61435d89838a01613760565b965060209150818801356143708161356e565b9550604088013561438081613870565b945060608801358181111561439457600080fd5b6143a08a828b0161425a565b945050608080890135828111156143b657600080fd5b89019150601f82018a136143c957600080fd5b81356143d76134f982613588565b81815260c0918202840185019185820191908d8411156143f657600080fd5b948601945b838610156144925780868f0312156144135760008081fd5b61441b613461565b86356144268161356e565b8152868801356144358161356e565b8189015260408701356144478161356e565b6040820152606087013561445a8161356e565b60608201528686013561446c81613555565b8187015260a087013561447e81613530565b60a0820152835294850194918601916143fb565b508096505050505050509295509295909350565b6000806000606084860312156144bb57600080fd5b83356144c681613530565b92506020848101356144d78161356e565b925060408501356001600160401b03808211156144f357600080fd5b818701915087601f83011261450757600080fd5b81356145156134f982613588565b81815260059190911b8301840190848101908a83111561453457600080fd5b8585015b8381101561456c578035858111156145505760008081fd5b61455e8d89838a01016134da565b845250918601918601614538565b508096505050505050509250925092565b600060408201600785810b84526020604081860152828651808552606087019150828801945060005b818110156145c4578551850b835294830194918301916001016145a6565b509098975050505050505050565b600080604083850312156145e557600080fd5b82356145f081613530565b946020939093013593505050565b6020815260006138ff602083018461395e565b60008060006060848603121561462657600080fd5b833561463181613530565b9250602084013561464181613530565b915060408401356138d781613555565b6000806000806080858703121561466757600080fd5b843561467281613530565b9350602085013561468281613530565b9250604085013561469281613530565b915060608501356146a28161356e565b939692955090935050565b600080604083850312156146c057600080fd5b82356146cb81613530565b915060208301356001600160401b038111156146e657600080fd5b6146f2858286016135ab565b9150509250929050565b6000806040838503121561470f57600080fd5b823561471a81613530565b915060208301356141118161356e565b602081526000825160c0602084015261474660e0840182613cc6565b9050602084015160070b604084015260408401516001600160a01b038082166060860152606086015160070b608086015260808601519150601f198584030160a08601526147948383613932565b92508060a08701511660c086015250508091505092915050565b600080604083850312156147c157600080fd5b82356147cc81613530565b915060208301356001600160401b038111156147e757600080fd5b6146f285828601613760565b606081016132828284805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b60008060006060848603121561483c57600080fd5b833561484781613530565b925060208401356141b081613530565b600082601f83011261486857600080fd5b813560206148786134f983613588565b82815260059290921b8401810191818101908684111561489757600080fd5b8286015b848110156137005780356148ae81613530565b835291830191830161489b565b600080604083850312156148ce57600080fd5b82356148d981613530565b915060208301356001600160401b038111156148f457600080fd5b6146f285828601614857565b6000806000806080858703121561491657600080fd5b843561492181613530565b935060208501356001600160401b038082111561493d57600080fd5b61494988838901614857565b9450604087013591508082111561495f57600080fd5b61496b88838901614857565b9350606087013591508082111561498157600080fd5b5061498e8782880161411c565b91505092959194509250565b6000602082840312156149ac57600080fd5b81356001600160401b038111156149c257600080fd5b6149ce84828501613760565b949350505050565b6000806000606084860312156149eb57600080fd5b83356149f681613530565b925060208401356001600160401b0380821115614a1257600080fd5b614a1e87838801614857565b93506040860135915080821115614a3457600080fd5b506141d78682870161411c565b60008060006060808587031215614a5757600080fd5b84356001600160401b0380821115614a6e57600080fd5b614a7a88838901613760565b9550602091508187013581811115614a9157600080fd5b614a9d89828a0161425a565b95505060408088013582811115614ab357600080fd5b88019150601f82018913614ac657600080fd5b8135614ad46134f982613588565b81815260c0918202840185019185820191908c841115614af357600080fd5b948601945b83861015614b8d5780868e031215614b105760008081fd5b614b18613461565b8635614b238161356e565b815286880135614b328161356e565b8189015286860135614b438161356e565b8187015286890135614b5481613530565b818a0152608087810135614b6781613555565b9082015260a087810135614b7a81613530565b9082015283529485019491860191614af8565b50809750505050505050509250925092565b600080600060608486031215614bb457600080fd5b8335614bbf81613530565b92506020840135614bcf81613530565b929592945050506040919091013590565b600081518084526020808501808196508360051b8101915082860160005b85811015614c975782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b0152614c5960e08b0186613932565b928601518a8403603f1901858c0152929450614c758584613932565b9501511660c09890980197909752505098850198935090840190600101614bfe565b5091979650505050505050565b60006101608251818552614cba82860182613932565b91505060208301518482036020860152614cd48282613932565b9150506040830151614cf160408601826001600160a01b03169052565b5060608301518482036060860152614d098282613932565b9150506080830151614d1f608086018215159052565b5060a0830151614d3460a086018260070b9052565b5060c0830151614d4860c086018215159052565b5060e083015184820360e0860152613aeb8282614be0565b606081526000614d736060830186614ca4565b90508360070b60208301528260030b6040830152949350505050565b60008251614da1818460208701613906565b9190910192915050565b60008060408385031215614dbe57600080fd5b8251614dc981613870565b602084015190925061411181613530565b600082601f830112614deb57600080fd5b8151614df96134f9826134b3565b818152846020838601011115614e0e57600080fd5b6149ce826020830160208701613906565b805161355081613530565b805161355081613555565b80516135508161356e565b600060a08284031215614e5257600080fd5b614e5a6133d8565b90508151614e6781613555565b81526020820151614e7781613530565b602082015260408201516001600160401b0380821115614e9657600080fd5b614ea285838601614dda565b60408401526060840151915080821115614ebb57600080fd5b50614ec884828501614dda565b6060830152506080820151614edc81613530565b608082015292915050565b600082601f830112614ef857600080fd5b81516020614f086134f983613588565b82815260059290921b84018101918181019086841115614f2757600080fd5b8286015b848110156137005780516001600160401b0380821115614f4b5760008081fd5b908801906040828b03601f1901811315614f655760008081fd5b614f6d6133b0565b838801518152908301519082821115614f865760008081fd5b614f948c8984870101614e40565b818901528652505050918301918301614f2b565b600060608284031215614fba57600080fd5b614fc26133fa565b90508151614fcf8161356e565b81526020820151614fdf81613530565b602082015260408201516137558161356e565b6000610160828403121561500557600080fd5b61500d61341c565b905081516001600160401b038082111561502657600080fd5b61503285838601614dda565b8352602084015191508082111561504857600080fd5b61505485838601614dda565b602084015261506560408501614e1f565b6040840152606084015191508082111561507e57600080fd5b61508a85838601614dda565b606084015261509b60808501614e2a565b60808401526150ac60a08501614e35565b60a08401526150bd60c08501614e2a565b60c084015260e08401519150808211156150d657600080fd5b506150e384828501614ee7565b60e08301525061010061386684828501614fa8565b600082601f83011261510957600080fd5b815160206151196134f983613588565b82815260a0928302850182019282820191908785111561513857600080fd5b8387015b85811015613a225781818a0312156151545760008081fd5b61515c6133d8565b81516151678161356e565b81528186015161517681613530565b8187015260408281015161518981613555565b9082015260608281015161519c81613555565b908201526080828101516151af81613530565b90820152845292840192810161513c565b600082601f8301126151d157600080fd5b815160206151e16134f983613588565b82815260c0928302850182019282820191908785111561520057600080fd5b8387015b85811015613a225781818a03121561521c5760008081fd5b615224613461565b815161522f8161356e565b81528186015161523e8161356e565b818701526040828101516152518161356e565b908201526060828101516152648161356e565b9082015260808281015161527781613555565b9082015260a08281015161528a81613530565b908201528452928401928101615204565b600082601f8301126152ac57600080fd5b815160206152bc6134f983613588565b82815260c092830285018201928282019190878511156152db57600080fd5b8387015b85811015613a225781818a0312156152f75760008081fd5b6152ff613461565b815161530a8161356e565b8152818601516153198161356e565b8187015260408281015161532c8161356e565b9082015260608281015161533f81613530565b9082015260808281015161535281613555565b9082015260a08281015161536581613530565b9082015284529284019281016152df565b6000610120828403121561538957600080fd5b61539161341c565b905081516001600160401b03808211156153aa57600080fd5b6153b685838601614ff2565b83526153c460208501614e35565b60208401526153d560408501614e2a565b60408401526153e660608501614e2a565b60608401526153f760808501614e2a565b608084015260a084015191508082111561541057600080fd5b61541c858386016150f8565b60a084015260c084015191508082111561543557600080fd5b615441858386016151c0565b60c084015260e084015191508082111561545a57600080fd5b6154668583860161529b565b60e08401526101009150818401518181111561548157600080fd5b61548d86828701614dda565b8385015250505092915050565b600080604083850312156154ad57600080fd5b82516154b881613870565b60208401519092506001600160401b03808211156154d557600080fd5b90840190604082870312156154e957600080fd5b6040516040810181811083821117156155045761550461339a565b60405282518281111561551657600080fd5b61552288828601615376565b8252506020830151925061553583613870565b8260208201528093505050509250929050565b6000806040838503121561555b57600080fd5b825161556681613870565b60208401519092506001600160401b0381111561558257600080fd5b6146f285828601615376565b600081518084526020808501945080840160005b83811015613bac57815180516001600160a01b03908116895284820151168489015260408082015160070b90890152606090810151151590880152608090960195908201906001016155a2565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156145c457603f19898403018552815160608085016001600160a01b038084511687528a840151838c89015282815180855260808a0191508d83019450600092505b808310156156935784518051851683528e81015160070b8f8401528d015115158d830152938d0193600192909201919085019061565b565b50948b0151888603898d0152946156aa818761558e565b9a8d019a98505050948a01945050506001919091019050615616565b6001600160a01b0383168152608081016138ff6020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b600081518084526020808501945080840160005b83811015613bac57815160070b8752958201959082019060010161571d565b6001600160a01b03841681528260070b60208201526060604082015260006157676060830184615709565b95945050505050565b6000806040838503121561578357600080fd5b825161578e81613870565b60208401519092506141118161356e565b600080600080608085870312156157b557600080fd5b84516157c081613870565b60208601519094506001600160401b03808211156157dd57600080fd5b6157e9888389016150f8565b945060408701519150808211156157ff57600080fd5b61580b888389016151c0565b9350606087015191508082111561582157600080fd5b5061498e8782880161529b565b6000806040838503121561584157600080fd5b825161584c81613870565b602084015190925061411181613555565b600081518084526020808501945080840160005b83811015613bac576158c5878351805160070b825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a0969096019590820190600101615871565b60a0815260006158eb60a0830188614ca4565b60208760070b818501528660030b60408501528382036060850152615910828761585d565b8481036080860152855180825282870193509082019060005b8181101561599b57615988838651805160070b8252602081015160070b6020830152604081015160070b6040830152606081015160070b60608301526080810151151560808301526001600160a01b0360a08201511660a08301525050565b9383019360c09290920191600101615929565b50909a9950505050505050505050565b6000606082016001600160a01b038616835260208560070b818501526060604085015281855180845260808601915060808160051b870101935082870160005b82811015615a1957607f19888703018452615a07868351613932565b955092840192908401906001016159eb565b50939998505050505050505050565b600080600060608486031215615a3d57600080fd5b8351615a4881613870565b80935050602080850151615a5b8161356e565b60408601519093506001600160401b03811115615a7757600080fd5b8501601f81018713615a8857600080fd5b8051615a966134f982613588565b81815260059190911b82018301908381019089831115615ab557600080fd5b928401925b82841015615adc578351615acd8161356e565b82529284019290840190615aba565b80955050505050509250925092565b60008060408385031215615afe57600080fd5b8251615b0981613870565b60208401519092506001600160401b03811115615b2557600080fd5b6146f285828601614e40565b600060408083016001600160a01b03808716855260208381870152828751808552606094508488019150848160051b890101838a0160005b83811015615bf5578a8303605f190185528151805184528601518684018a9052805115158a850152808701518816898501528981015160a06080808701829052615bb660e0880184613932565b92508b840151603f198885030183890152615bd18482613932565b91909401518b1660c097909701969096525050509385019390850190600101615b69565b50909b9a5050505050505050505050565b60008060408385031215615c1957600080fd5b8251615c2481613870565b60208401519092506001600160401b0380821115615c4157600080fd5b9084019060c08287031215615c5557600080fd5b615c5d613461565b825182811115615c6c57600080fd5b615c7888828601615376565b825250615c8760208401614e35565b6020820152615c9860408401614e1f565b6040820152615ca960608401614e35565b6060820152608083015182811115615cc057600080fd5b615ccc88828601614dda565b608083015250615cde60a08401614e1f565b60a08201528093505050509250929050565b60008060408385031215615d0357600080fd5b8251615d0e81613870565b602084015190925061411181613870565b6001600160a01b03831681526040602082015260006149ce6040830184614ca4565b60008060808385031215615d5457600080fd5b8251615d5f81613870565b91506140da8460208501614fa8565b60006001600160a01b038086168352808516602084015250606060408301526157676060830184615709565b600081518084526020808501945080840160005b83811015613bac5781516001600160a01b031687529582019590820190600101615dae565b6001600160a01b03831681526040602082015260006149ce6040830184615d9a565b6001600160a01b0385168152608060208201526000615e176080830186615d9a565b8281036040840152615e298186615d9a565b90508281036060840152615e3d8185615709565b979650505050505050565b6020815260006138ff6020830184614ca4565b60008060408385031215615e6e57600080fd5b8251615e7981613870565b6020939093015192949293505050565b6001600160a01b0384168152606060208201526000615eab6060830185615d9a565b8281036040840152613d968185615709565b606081526000615ed06060830186614ca4565b602083820381850152615ee3828761585d565b8481036040860152855180825282870193509082019060005b818110156145c457615f5e838651805160070b8252602081015160070b6020830152604081015160070b604083015260608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b9383019360c09290920191600101615efc565b600060208284031215615f8357600080fd5b81516138ff8161387056fea264697066735822122067fc2ccf5e16c08e28f423f101d133a590111c3f96450b7c0c45058e73e8f76564736f6c63430008090033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106102d95760003560e01c806354a0b16c116101965780638d1433dd116100f8578063be83aa99116100a1578063dfb3bfc41161007b578063dfb3bfc4146108df578063eb5625d9146108ff578063eccc07c61461091f57600080fd5b8063be83aa991461087f578063ccc261fe1461089f578063cf58c3ea146108bf57600080fd5b8063978df2a2116100d2578063978df2a2146108115780639c7e98d014610831578063ba2ad9731461085157600080fd5b80638d1433dd146107b1578063910f2711146107d157806394f74f3e146107f157600080fd5b80636efe63a51161015a57806382ddffbf1161013457806382ddffbf1461075157806387e6877c14610771578063894c66531461079157600080fd5b80636efe63a5146106f1578063705314a0146107115780637c6c6a841461073157600080fd5b806354a0b16c1461062457806355caeb0914610651578063587da69a1461068457806367ac8453146106a45780636e4333fd146106c457600080fd5b80633364596e1161023f57806348b14613116102035780634ddd613b116101dd5780634ddd613b146105c45780634e03000f146105e45780635140d67d1461060457600080fd5b806348b14613146105645780634959707b1461058457806349c8532b146105a457600080fd5b80633364596e1461048a5780633e54fba8146104b957806341e3eeab146104e9578063421d02281461050957806344f8e4711461053757600080fd5b806310e90655116102a15780631ffbb8d71161027b5780631ffbb8d71461041757806327a84817146104375780632ad145af1461046a57600080fd5b806310e90655146103b757806319cdce7e146103d75780631e4b2654146103f757600080fd5b806302004ccd146102de578063042a34b81461031b57806305923cee14610348578063067fa1221461036a5780630962e27b14610397575b600080fd5b8180156102ea57600080fd5b506102fe6102f936600461387f565b61093f565b6040516001600160a01b0390911681526020015b60405180910390f35b81801561032757600080fd5b5061033b6103363660046138e2565b610a53565b6040516103129190613da0565b81801561035457600080fd5b50610368610363366004613dd5565b610b4d565b005b81801561037657600080fd5b5061038a6103853660046138e2565b610c2a565b6040516103129190613e15565b8180156103a357600080fd5b506103686103b2366004613edf565b610d1c565b8180156103c357600080fd5b506103686103d23660046140ad565b610df4565b8180156103e357600080fd5b506103686103f23660046138e2565b610ed0565b81801561040357600080fd5b50610368610412366004613dd5565b610f94565b81801561042357600080fd5b506103686104323660046140e3565b61106a565b81801561044357600080fd5b50610457610452366004614180565b611136565b60405160079190910b8152602001610312565b81801561047657600080fd5b506103686104853660046140e3565b611235565b81801561049657600080fd5b506104aa6104a53660046138e2565b611301565b604051610312939291906141e1565b8180156104c557600080fd5b506104d96104d436600461421a565b611402565b6040519015158152602001610312565b8180156104f557600080fd5b506102fe610504366004614322565b6114fe565b81801561051557600080fd5b506105296105243660046144a6565b611617565b60405161031292919061457d565b81801561054357600080fd5b506105576105523660046145d2565b611736565b60405161031291906145fe565b81801561057057600080fd5b5061036861057f366004614611565b611873565b81801561059057600080fd5b506104d961059f3660046140e3565b611947565b8180156105b057600080fd5b506103686105bf366004614651565b611a3b565b8180156105d057600080fd5b506104d96105df3660046138e2565b611b21565b8180156105f057600080fd5b506103686105ff3660046146ad565b611c0c565b81801561061057600080fd5b506104d961061f3660046140e3565b611ce2565b81801561063057600080fd5b5061064461063f3660046146fc565b611dd6565b604051610312919061472a565b81801561065d57600080fd5b5061067161066c3660046138e2565b611ed2565b60405160039190910b8152602001610312565b81801561069057600080fd5b5061036861069f366004614651565b611fbe565b8180156106b057600080fd5b506103686106bf3660046147ae565b61209c565b8180156106d057600080fd5b506106e46106df3660046138e2565b61217b565b60405161031291906147f3565b8180156106fd57600080fd5b5061036861070c366004614827565b61227f565b81801561071d57600080fd5b5061036861072c3660046148bb565b612357565b81801561073d57600080fd5b5061036861074c366004614900565b61242d565b81801561075d57600080fd5b5061036861076c3660046140e3565b612507565b81801561077d57600080fd5b5061036861078c3660046148bb565b6125d3565b81801561079d57600080fd5b506103686107ac3660046138e2565b6126a9565b8180156107bd57600080fd5b506104d96107cc3660046138e2565b61276c565b8180156107dd57600080fd5b506102fe6107ec36600461499a565b612858565b8180156107fd57600080fd5b5061036861080c3660046140e3565b61295d565b81801561081d57600080fd5b506102fe61082c3660046146fc565b612a29565b81801561083d57600080fd5b5061036861084c3660046140e3565b612b1f565b81801561085d57600080fd5b5061087161086c36600461421a565b612beb565b604051908152602001610312565b81801561088b57600080fd5b5061036861089a3660046149d6565b612ce7565b8180156108ab57600080fd5b506102fe6108ba366004614a41565b612dbf565b8180156108cb57600080fd5b506103686108da3660046138e2565b612ec8565b8180156108eb57600080fd5b506104d96108fa3660046138e2565b612f8c565b81801561090b57600080fd5b5061036861091a366004614b9f565b613078565b81801561092b57600080fd5b5061036861093a3660046140e3565b613148565b600061094a84613214565b60008060006101676001600160a01b031634630fb65bf360e01b89898960405160240161097993929190614d60565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109b79190614d8f565b60006040518083038185875af1925050503d80600081146109f4576040519150601f19603f3d011682016040523d82523d6000602084013e6109f9565b606091505b509150915081610a0c5760156000610a20565b80806020019051810190610a209190614dab565b94509250600383900b601614610a4957604051636cc9c7cf60e11b815260040160405180910390fd5b5050509392505050565b610a5b613288565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633f28a19b60e01b17905290516000918291829161016791610ab49190614d8f565b6000604051808303816000865af19150503d8060008114610af1576040519150601f19603f3d011682016040523d82523d6000602084013e610af6565b606091505b509150915081610b0857601584610b1c565b80806020019051810190610b1c919061549a565b94509250600383900b601614610b4557604051631fbc7c8f60e01b815260040160405180910390fd5b505050919050565b604080516001600160a01b03858116602483015284166044820152600783900b60648083019190915282518083039091018152608490910182526020810180516001600160e01b03166307336aaf60e41b1790529051600091829161016791610bb591614d8f565b6000604051808303816000865af19150503d8060008114610bf2576040519150601f19603f3d011682016040523d82523d6000602084013e610bf7565b606091505b5091509150610c068282613257565b610c23576040516323241c4960e01b815260040160405180910390fd5b5050505050565b610c326132a8565b604080516001600160a01b03841660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f69565f60e01b17905290516000918291829161016791610c8b9190614d8f565b6000604051808303816000865af19150503d8060008114610cc8576040519150601f19603f3d011682016040523d82523d6000602084013e610ccd565b606091505b509150915081610cdf57601584610cf3565b80806020019051810190610cf39190615548565b94509250600383900b601614610b4557604051632a5292c160e11b815260040160405180910390fd5b6000806101676001600160a01b0316630e71804f60e01b84604051602401610d4491906155ef565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610d829190614d8f565b6000604051808303816000865af19150503d8060008114610dbf576040519150601f19603f3d011682016040523d82523d6000602084013e610dc4565b606091505b5091509150610dd38282613257565b610def5760405162eebe6360e81b815260040160405180910390fd5b505050565b6000806101676001600160a01b031663d27be6cd60e01b8585604051602401610e1e9291906156c6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610e5c9190614d8f565b6000604051808303816000865af19150503d8060008114610e99576040519150601f19603f3d011682016040523d82523d6000602084013e610e9e565b606091505b5091509150610ead8282613257565b610eca5760405163c779f09560e01b815260040160405180910390fd5b50505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633b3bff0f60e01b1790529051600091829161016791610f2691614d8f565b6000604051808303816000865af19150503d8060008114610f63576040519150601f19603f3d011682016040523d82523d6000602084013e610f68565b606091505b5091509150610f778282613257565b610def5760405163f5db475160e01b815260040160405180910390fd5b604080516001600160a01b03858116602483015284166044820152600783900b60648083019190915282518083039091018152608490910182526020810180516001600160e01b031663efef57f960e01b1790529051600091829161016791610ffc91614d8f565b6000604051808303816000865af19150503d8060008114611039576040519150601f19603f3d011682016040523d82523d6000602084013e61103e565b606091505b509150915061104d8282613257565b610c2357604051634c55bcdb60e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316638f8d7f9960e01b17905290516000918291610167916110c891614d8f565b6000604051808303816000865af19150503d8060008114611105576040519150601f19603f3d011682016040523d82523d6000602084013e61110a565b606091505b50915091506111198282613257565b610eca57604051630fe6b06560e11b815260040160405180910390fd5b6000806000806101676001600160a01b031663d6910d0660e01b8888886040516024016111659392919061573c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111a39190614d8f565b6000604051808303816000865af19150503d80600081146111e0576040519150601f19603f3d011682016040523d82523d6000602084013e6111e5565b606091505b5091509150816111f8576015600061120c565b8080602001905181019061120c9190615770565b94509250600383900b601614610a4957604051631bc5aabf60e21b815260040160405180910390fd5b604080516001600160a01b038381166024830152841660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663248a35ef60e11b179052905160009182916101679161129391614d8f565b6000604051808303816000865af19150503d80600081146112d0576040519150601f19603f3d011682016040523d82523d6000602084013e6112d5565b606091505b50915091506112e48282613257565b610eca57604051630aadd01b60e31b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630573b08d60e51b179052905160609182918291600091829182916101679161136091614d8f565b6000604051808303816000865af19150503d806000811461139d576040519150601f19603f3d011682016040523d82523d6000602084013e6113a2565b606091505b5091509150816113b65760158686866113ca565b808060200190518101906113ca919061579f565b919850965094509250600383900b6016146113f857604051634c85126960e01b815260040160405180910390fd5b5050509193909250565b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663f49f40db60e01b17905290516000918291829182916101679161146c91614d8f565b6000604051808303816000865af19150503d80600081146114a9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ae565b606091505b5091509150816114c157601560006114d5565b808060200190518101906114d5919061582e565b94509250600383900b601614610a495760405163c30cd94160e01b815260040160405180910390fd5b600061150986613214565b60008060006101676001600160a01b031634632af0c59a60e01b8b8b8b8b8b60405160240161153c9594939291906158d8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161157a9190614d8f565b60006040518083038185875af1925050503d80600081146115b7576040519150601f19603f3d011682016040523d82523d6000602084013e6115bc565b606091505b5091509150816115cf57601560006115e3565b808060200190518101906115e39190614dab565b945060030b92506016831461160b576040516351aeaaf760e11b815260040160405180910390fd5b50505095945050505050565b6000606060008060006101676001600160a01b031663e0f4059a60e01b898989604051602401611649939291906159ab565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116879190614d8f565b6000604051808303816000865af19150503d80600081146116c4576040519150601f19603f3d011682016040523d82523d6000602084013e6116c9565b606091505b5091509150816116ec576040805160008082526020820190925260159190611700565b808060200190518101906117009190615a28565b90965094509250600383900b60161461172b5760405162ec6f7b60e31b815260040160405180910390fd5b505050935093915050565b61177c6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b604080516001600160a01b0385166024820152604480820185905282518083039091018152606490910182526020810180516001600160e01b0316631e26e99760e11b179052905160009182918291610167916117d99190614d8f565b6000604051808303816000865af19150503d8060008114611816576040519150601f19603f3d011682016040523d82523d6000602084013e61181b565b606091505b50915091508161182d57601584611841565b808060200190518101906118419190615aeb565b94509250600383900b60161461186a5760405163664cb42360e01b815260040160405180910390fd5b50505092915050565b604080516001600160a01b0385811660248301528416604482015282151560648083019190915282518083039091018152608490910182526020810180516001600160e01b0316631b3b02e560e11b17905290516000918291610167916118d991614d8f565b6000604051808303816000865af19150503d8060008114611916576040519150601f19603f3d011682016040523d82523d6000602084013e61191b565b606091505b509150915061192a8282613257565b610c23576040516354b6b38d60e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166346de0fb160e01b1790529051600091829182918291610167916119a991614d8f565b6000604051808303816000865af19150503d80600081146119e6576040519150601f19603f3d011682016040523d82523d6000602084013e6119eb565b606091505b5091509150816119fe5760156000611a12565b80806020019051810190611a12919061582e565b94509250600383900b60161461186a576040516374004e7960e11b815260040160405180910390fd5b604080516001600160a01b038681166024830152858116604483015284166064820152600783900b6084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316635cfc901160e01b1790529051600091829161016791611aab91614d8f565b6000604051808303816000865af19150503d8060008114611ae8576040519150601f19603f3d011682016040523d82523d6000602084013e611aed565b606091505b5091509150611afc8282613257565b611b19576040516308c0b8b360e31b815260040160405180910390fd5b505050505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663335e04c160e01b179052905160009182918291829161016791611b7b91614d8f565b6000604051808303816000865af19150503d8060008114611bb8576040519150601f19603f3d011682016040523d82523d6000602084013e611bbd565b606091505b509150915081611bd05760156000611be4565b80806020019051810190611be4919061582e565b94509250600383900b601614610b455760405162629e9d60e81b815260040160405180910390fd5b6000806101676001600160a01b0316636fc3cbaf60e01b8585604051602401611c36929190615b31565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c749190614d8f565b6000604051808303816000865af19150503d8060008114611cb1576040519150601f19603f3d011682016040523d82523d6000602084013e611cb6565b606091505b5091509150611cc58282613257565b610eca576040516315f62c9d60e21b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316633cb0c7fd60e21b179052905160009182918291829161016791611d4491614d8f565b6000604051808303816000865af19150503d8060008114611d81576040519150601f19603f3d011682016040523d82523d6000602084013e611d86565b606091505b509150915081611d995760156000611dad565b80806020019051810190611dad919061582e565b94509250600383900b60161461186a5760405163711425f760e11b815260040160405180910390fd5b611dde61335f565b604080516001600160a01b0385166024820152600784900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b031663050fc3b560e31b17905290516000918291829161016791611e419190614d8f565b6000604051808303816000865af19150503d8060008114611e7e576040519150601f19603f3d011682016040523d82523d6000602084013e611e83565b606091505b509150915081611e9557601584611ea9565b80806020019051810190611ea99190615c06565b94509250600383900b60161461186a5760405163b12473af60e01b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166393272baf60e01b179052905160009182918291829161016791611f2c91614d8f565b6000604051808303816000865af19150503d8060008114611f69576040519150601f19603f3d011682016040523d82523d6000602084013e611f6e565b606091505b509150915081611f815760156000611f95565b80806020019051810190611f959190615cf0565b94509250600383900b601614610b4557604051635d4b19cf60e11b815260040160405180910390fd5b604080516001600160a01b038681166024830152858116604483015284166064820152600783900b6084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663eca3691760e01b179052905160009182916101679161202e91614d8f565b6000604051808303816000865af19150503d806000811461206b576040519150601f19603f3d011682016040523d82523d6000602084013e612070565b606091505b509150915061207f8282613257565b611b195760405163022e258160e11b815260040160405180910390fd5b6120a581613214565b6000806101676001600160a01b0316637d305cfa60e01b85856040516024016120cf929190615d1f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161210d9190614d8f565b6000604051808303816000865af19150503d806000811461214a576040519150601f19603f3d011682016040523d82523d6000602084013e61214f565b606091505b509150915061215e8282613257565b610eca5760405163c2f7c6d760e01b815260040160405180910390fd5b604080516060810182526000808252602080830182905282840182905283516001600160a01b038616602480830191909152855180830390910181526044909101855290810180516001600160e01b0316631ac299b760e31b17905292519192909182918291610167916121ee91614d8f565b6000604051808303816000865af19150503d806000811461222b576040519150601f19603f3d011682016040523d82523d6000602084013e612230565b606091505b50915091508161224257601584612256565b808060200190518101906122569190615d41565b94509250600383900b601614610b455760405163303d457360e21b815260040160405180910390fd5b6000806101676001600160a01b031663f7f38e2660e01b8686866040516024016122ab93929190615d6e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516122e99190614d8f565b6000604051808303816000865af19150503d8060008114612326576040519150601f19603f3d011682016040523d82523d6000602084013e61232b565b606091505b509150915061233a8282613257565b610c2357604051633c9afe0960e11b815260040160405180910390fd5b6000806101676001600160a01b03166378b6391860e01b8585604051602401612381929190615dd3565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516123bf9190614d8f565b6000604051808303816000865af19150503d80600081146123fc576040519150601f19603f3d011682016040523d82523d6000602084013e612401565b606091505b50915091506124108282613257565b610eca5760405163de94cd4f60e01b815260040160405180910390fd5b6000806101676001600160a01b0316632c4ba19160e01b8787878760405160240161245b9493929190615df5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516124999190614d8f565b6000604051808303816000865af19150503d80600081146124d6576040519150601f19603f3d011682016040523d82523d6000602084013e6124db565b606091505b50915091506124ea8282613257565b611b1957604051636d4b973960e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663af99c63360e01b179052905160009182916101679161256591614d8f565b6000604051808303816000865af19150503d80600081146125a2576040519150601f19603f3d011682016040523d82523d6000602084013e6125a7565b606091505b50915091506125b68282613257565b610eca5760405163b5c2401d60e01b815260040160405180910390fd5b6000806101676001600160a01b0316632e63879b60e01b85856040516024016125fd929190615dd3565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161263b9190614d8f565b6000604051808303816000865af19150503d8060008114612678576040519150601f19603f3d011682016040523d82523d6000602084013e61267d565b606091505b509150915061268c8282613257565b610eca576040516304abe53f60e51b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637834fb8960e11b17905290516000918291610167916126ff91614d8f565b6000604051808303816000865af19150503d806000811461273c576040519150601f19603f3d011682016040523d82523d6000602084013e612741565b606091505b50915091506127508282613257565b610def5760405162b4909160e51b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663a7daa18d60e01b1790529051600091829182918291610167916127c691614d8f565b6000604051808303816000865af19150503d8060008114612803576040519150601f19603f3d011682016040523d82523d6000602084013e612808565b606091505b50915091508161281b576015600061282f565b8080602001905181019061282f919061582e565b94509250600383900b601614610b455760405163f6e464e960e01b815260040160405180910390fd5b600061286382613214565b60008060006101676001600160a01b03163463ea83f29360e01b8760405160240161288e9190615e48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516128cc9190614d8f565b60006040518083038185875af1925050503d8060008114612909576040519150601f19603f3d011682016040523d82523d6000602084013e61290e565b606091505b5091509150816129215760156000612935565b808060200190518101906129359190614dab565b945060030b925060168314610b4557604051635850783b60e11b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166352f9138760e01b17905290516000918291610167916129bb91614d8f565b6000604051808303816000865af19150503d80600081146129f8576040519150601f19603f3d011682016040523d82523d6000602084013e6129fd565b606091505b5091509150612a0c8282613257565b610eca57604051633b85464b60e11b815260040160405180910390fd5b604080516001600160a01b0384166024820152600783900b60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304c791b360e11b179052905160009182918291829161016791612a8d91614d8f565b6000604051808303816000865af19150503d8060008114612aca576040519150601f19603f3d011682016040523d82523d6000602084013e612acf565b606091505b509150915081612ae25760156000612af6565b80806020019051810190612af69190614dab565b94509250600383900b60161461186a5760405163e460426160e01b815260040160405180910390fd5b604080516001600160a01b038381166024830152841660448083019190915282518083039091018152606490910182526020810180516001600160e01b0316630132f29d60e31b1790529051600091829161016791612b7d91614d8f565b6000604051808303816000865af19150503d8060008114612bba576040519150601f19603f3d011682016040523d82523d6000602084013e612bbf565b606091505b5091509150612bce8282613257565b610eca576040516314439df560e31b815260040160405180910390fd5b604080516001600160a01b0385811660248301528481166044830152831660648083019190915282518083039091018152608490910182526020810180516001600160e01b031663927da10560e01b179052905160009182918291829161016791612c5591614d8f565b6000604051808303816000865af19150503d8060008114612c92576040519150601f19603f3d011682016040523d82523d6000602084013e612c97565b606091505b509150915081612caa5760156000612cbe565b80806020019051810190612cbe9190615e5b565b94509250600383900b601614610a495760405163b9382f0760e01b815260040160405180910390fd5b6000806101676001600160a01b03166382bba49360e01b868686604051602401612d1393929190615e89565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612d519190614d8f565b6000604051808303816000865af19150503d8060008114612d8e576040519150601f19603f3d011682016040523d82523d6000602084013e612d93565b606091505b5091509150612da28282613257565b610c235760405163311bf68160e11b815260040160405180910390fd5b6000612dca84613214565b60008060006101676001600160a01b03163463abb54eb560e01b898989604051602401612df993929190615ebd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612e379190614d8f565b60006040518083038185875af1925050503d8060008114612e74576040519150601f19603f3d011682016040523d82523d6000602084013e612e79565b606091505b509150915081612e8c5760156000612ea0565b80806020019051810190612ea09190614dab565b945060030b925060168314610a495760405163893b894d60e01b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316631f106b4b60e21b1790529051600091829161016791612f1e91614d8f565b6000604051808303816000865af19150503d8060008114612f5b576040519150601f19603f3d011682016040523d82523d6000602084013e612f60565b606091505b5091509150612f6f8282613257565b610def57604051630d797d9160e31b815260040160405180910390fd5b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166319f3736160e01b179052905160009182918291829161016791612fe691614d8f565b6000604051808303816000865af19150503d8060008114613023576040519150601f19603f3d011682016040523d82523d6000602084013e613028565b606091505b50915091508161303b576015600061304f565b8080602001905181019061304f919061582e565b94509250600383900b601614610b4557604051634050963360e01b815260040160405180910390fd5b604080516001600160a01b03858116602483015284166044820152606480820184905282518083039091018152608490910182526020810180516001600160e01b031663e1f21c6760e01b17905290516000918291610167916130da91614d8f565b6000604051808303816000865af19150503d8060008114613117576040519150601f19603f3d011682016040523d82523d6000602084013e61311c565b606091505b509150915061312b8282613257565b610c2357604051633e3f8f7360e01b815260040160405180910390fd5b604080516001600160a01b038481166024830152831660448083019190915282518083039091018152606490910182526020810180516001600160e01b03166316e3e16160e21b17905290516000918291610167916131a691614d8f565b6000604051808303816000865af19150503d80600081146131e3576040519150601f19603f3d011682016040523d82523d6000602084013e6131e8565b606091505b50915091506131f78282613257565b610eca57604051631a0a25f560e31b815260040160405180910390fd5b6101008101515160070b15801561323557506101008101516040015160070b155b1561325457610100810180516276a70060409091015251306020909101525b50565b600060168361326757601561327b565b8280602001905181019061327b9190615f71565b60030b1490505b92915050565b604051806040016040528061329b6132a8565b8152600060209091015290565b60408051610240810182526060610120820181815261014083018290526000610160840181905261018084018390526101a084018190526101c084018190526101e0840181905261020084018390528451928301855280835260208301819052938201939093526102208201529081908152602001600060070b8152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6040518060c001604052806133726132a8565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156133d2576133d261339a565b60405290565b60405160a081016001600160401b03811182821017156133d2576133d261339a565b604051606081016001600160401b03811182821017156133d2576133d261339a565b60405161012081016001600160401b03811182821017156133d2576133d261339a565b604051608081016001600160401b03811182821017156133d2576133d261339a565b60405160c081016001600160401b03811182821017156133d2576133d261339a565b604051601f8201601f191681016001600160401b03811182821017156134ab576134ab61339a565b604052919050565b60006001600160401b038211156134cc576134cc61339a565b50601f01601f191660200190565b600082601f8301126134eb57600080fd5b81356134fe6134f9826134b3565b613483565b81815284602083860101111561351357600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461325457600080fd5b803561355081613530565b919050565b801515811461325457600080fd5b803561355081613555565b8060070b811461325457600080fd5b80356135508161356e565b60006001600160401b038211156135a1576135a161339a565b5060051b60200190565b600082601f8301126135bc57600080fd5b813560206135cc6134f983613588565b82815260059290921b840181019181810190868411156135eb57600080fd5b8286015b848110156137005780356001600160401b038082111561360e57600080fd5b908801906040601f19838c03810182131561362857600080fd5b6136306133b0565b888501358152828501358481111561364757600080fd5b949094019360a0858e038301121561365f5760008081fd5b6136676133d8565b91508885013561367681613555565b82528483013561368581613530565b828a01526060858101358581111561369d5760008081fd5b6136ab8f8c838a01016134da565b85850152506080935083860135858111156136c65760008081fd5b6136d48f8c838a01016134da565b8285015250506136e660a08601613545565b9282019290925281880152855250509183019183016135ef565b509695505050505050565b60006060828403121561371d57600080fd5b6137256133fa565b905081356137328161356e565b8152602082013561374281613530565b602082015260408201356137558161356e565b604082015292915050565b6000610160828403121561377357600080fd5b61377b61341c565b905081356001600160401b038082111561379457600080fd5b6137a0858386016134da565b835260208401359150808211156137b657600080fd5b6137c2858386016134da565b60208401526137d360408501613545565b604084015260608401359150808211156137ec57600080fd5b6137f8858386016134da565b606084015261380960808501613563565b608084015261381a60a0850161357d565b60a084015261382b60c08501613563565b60c084015260e084013591508082111561384457600080fd5b50613851848285016135ab565b60e0830152506101006138668482850161370b565b9082015292915050565b8060030b811461325457600080fd5b60008060006060848603121561389457600080fd5b83356001600160401b038111156138aa57600080fd5b6138b686828701613760565b93505060208401356138c78161356e565b915060408401356138d781613870565b809150509250925092565b6000602082840312156138f457600080fd5b81356138ff81613530565b9392505050565b60005b83811015613921578181015183820152602001613909565b83811115610eca5750506000910152565b6000815180845261394a816020860160208601613906565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a0604086015261399660a0860183613932565b9150606084015185830360608701526139af8382613932565b925050806080850151166080860152508091505092915050565b6000815180845260208085019450848260051b860182860160005b85811015613a225783830389528151805184528501516040868501819052613a0e8186018361395e565b9a87019a94505050908401906001016139e4565b5090979650505050505050565b60006101608251818552613a4582860182613932565b91505060208301518482036020860152613a5f8282613932565b9150506040830151613a7c60408601826001600160a01b03169052565b5060608301518482036060860152613a948282613932565b9150506080830151613aaa608086018215159052565b5060a0830151613abf60a086018260070b9052565b5060c0830151613ad360c086018215159052565b5060e083015184820360e0860152613aeb82826139c9565b91505061010080840151613b2782870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b600081518084526020808501945080840160005b83811015613bac57613b99878351805160070b825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a0969096019590820190600101613b45565b509495945050505050565b600081518084526020808501945080840160005b83811015613bac57613c2a878351805160070b8252602081015160070b6020830152604081015160070b6040830152606081015160070b60608301526080810151151560808301526001600160a01b0360a08201511660a08301525050565b60c0969096019590820190600101613bcb565b600081518084526020808501945080840160005b83811015613bac57613cb3878351805160070b8252602081015160070b6020830152604081015160070b604083015260608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b60c0969096019590820190600101613c51565b60006101208251818552613cdc82860182613a2f565b9150506020830151613cf3602086018260070b9052565b506040830151613d07604086018215159052565b506060830151613d1b606086018215159052565b506080830151613d2f608086018215159052565b5060a083015184820360a0860152613d478282613b31565b91505060c083015184820360c0860152613d618282613bb7565b91505060e083015184820360e0860152613d7b8282613c3d565b9150506101008084015185830382870152613d968382613932565b9695505050505050565b602081526000825160406020840152613dbc6060840182613cc6565b9050602084015160030b60408401528091505092915050565b600080600060608486031215613dea57600080fd5b8335613df581613530565b92506020840135613e0581613530565b915060408401356138d78161356e565b6020815260006138ff6020830184613cc6565b600082601f830112613e3957600080fd5b81356020613e496134f983613588565b82815260079290921b84018101918181019086841115613e6857600080fd5b8286015b848110156137005760808189031215613e855760008081fd5b613e8d61343f565b8135613e9881613530565b815281850135613ea781613530565b81860152604082810135613eba8161356e565b90820152606082810135613ecd81613555565b90820152835291830191608001613e6c565b600060208284031215613ef157600080fd5b6001600160401b038083351115613f0757600080fd5b8235830184601f820112613f1a57600080fd5b613f276134f98235613588565b81358082526020808301929160051b840101871015613f4557600080fd5b602083015b6020843560051b850101811015613700578481351115613f6957600080fd5b803584016060818a03601f19011215613f8157600080fd5b613f896133fa565b613f966020830135613530565b602082013581528660408301351115613fae57600080fd5b604082013582018a603f820112613fc457600080fd5b613fd46134f96020830135613588565b602082810135808352908201919060600283016040018d811115613ff757600080fd5b6040840193505b8084101561406d576060848f03121561401657600080fd5b61401e6133fa565b6140288535613530565b84358152614039602086013561356e565b602085013560208201526140506040860135613555565b604085810135908201528352606090930192602090920191613ffe565b5060208401525050606082013587101561408657600080fd5b6140998a60206060850135850101613e28565b604082015284525060209283019201613f4a565b600080608083850312156140c057600080fd5b82356140cb81613530565b91506140da846020850161370b565b90509250929050565b600080604083850312156140f657600080fd5b823561410181613530565b9150602083013561411181613530565b809150509250929050565b600082601f83011261412d57600080fd5b8135602061413d6134f983613588565b82815260059290921b8401810191818101908684111561415c57600080fd5b8286015b848110156137005780356141738161356e565b8352918301918301614160565b60008060006060848603121561419557600080fd5b83356141a081613530565b925060208401356141b08161356e565b915060408401356001600160401b038111156141cb57600080fd5b6141d78682870161411c565b9150509250925092565b6060815260006141f46060830186613b31565b82810360208401526142068186613bb7565b90508281036040840152613d968185613c3d565b60008060006060848603121561422f57600080fd5b833561423a81613530565b9250602084013561424a81613530565b915060408401356138d781613530565b600082601f83011261426b57600080fd5b8135602061427b6134f983613588565b82815260a0928302850182019282820191908785111561429a57600080fd5b8387015b85811015613a225781818a0312156142b65760008081fd5b6142be6133d8565b81356142c98161356e565b8152818601356142d881613530565b818701526040828101356142eb81613555565b908201526060828101356142fe81613555565b9082015260808281013561431181613530565b90820152845292840192810161429e565b600080600080600060a0868803121561433a57600080fd5b85356001600160401b038082111561435157600080fd5b61435d89838a01613760565b965060209150818801356143708161356e565b9550604088013561438081613870565b945060608801358181111561439457600080fd5b6143a08a828b0161425a565b945050608080890135828111156143b657600080fd5b89019150601f82018a136143c957600080fd5b81356143d76134f982613588565b81815260c0918202840185019185820191908d8411156143f657600080fd5b948601945b838610156144925780868f0312156144135760008081fd5b61441b613461565b86356144268161356e565b8152868801356144358161356e565b8189015260408701356144478161356e565b6040820152606087013561445a8161356e565b60608201528686013561446c81613555565b8187015260a087013561447e81613530565b60a0820152835294850194918601916143fb565b508096505050505050509295509295909350565b6000806000606084860312156144bb57600080fd5b83356144c681613530565b92506020848101356144d78161356e565b925060408501356001600160401b03808211156144f357600080fd5b818701915087601f83011261450757600080fd5b81356145156134f982613588565b81815260059190911b8301840190848101908a83111561453457600080fd5b8585015b8381101561456c578035858111156145505760008081fd5b61455e8d89838a01016134da565b845250918601918601614538565b508096505050505050509250925092565b600060408201600785810b84526020604081860152828651808552606087019150828801945060005b818110156145c4578551850b835294830194918301916001016145a6565b509098975050505050505050565b600080604083850312156145e557600080fd5b82356145f081613530565b946020939093013593505050565b6020815260006138ff602083018461395e565b60008060006060848603121561462657600080fd5b833561463181613530565b9250602084013561464181613530565b915060408401356138d781613555565b6000806000806080858703121561466757600080fd5b843561467281613530565b9350602085013561468281613530565b9250604085013561469281613530565b915060608501356146a28161356e565b939692955090935050565b600080604083850312156146c057600080fd5b82356146cb81613530565b915060208301356001600160401b038111156146e657600080fd5b6146f2858286016135ab565b9150509250929050565b6000806040838503121561470f57600080fd5b823561471a81613530565b915060208301356141118161356e565b602081526000825160c0602084015261474660e0840182613cc6565b9050602084015160070b604084015260408401516001600160a01b038082166060860152606086015160070b608086015260808601519150601f198584030160a08601526147948383613932565b92508060a08701511660c086015250508091505092915050565b600080604083850312156147c157600080fd5b82356147cc81613530565b915060208301356001600160401b038111156147e757600080fd5b6146f285828601613760565b606081016132828284805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b60008060006060848603121561483c57600080fd5b833561484781613530565b925060208401356141b081613530565b600082601f83011261486857600080fd5b813560206148786134f983613588565b82815260059290921b8401810191818101908684111561489757600080fd5b8286015b848110156137005780356148ae81613530565b835291830191830161489b565b600080604083850312156148ce57600080fd5b82356148d981613530565b915060208301356001600160401b038111156148f457600080fd5b6146f285828601614857565b6000806000806080858703121561491657600080fd5b843561492181613530565b935060208501356001600160401b038082111561493d57600080fd5b61494988838901614857565b9450604087013591508082111561495f57600080fd5b61496b88838901614857565b9350606087013591508082111561498157600080fd5b5061498e8782880161411c565b91505092959194509250565b6000602082840312156149ac57600080fd5b81356001600160401b038111156149c257600080fd5b6149ce84828501613760565b949350505050565b6000806000606084860312156149eb57600080fd5b83356149f681613530565b925060208401356001600160401b0380821115614a1257600080fd5b614a1e87838801614857565b93506040860135915080821115614a3457600080fd5b506141d78682870161411c565b60008060006060808587031215614a5757600080fd5b84356001600160401b0380821115614a6e57600080fd5b614a7a88838901613760565b9550602091508187013581811115614a9157600080fd5b614a9d89828a0161425a565b95505060408088013582811115614ab357600080fd5b88019150601f82018913614ac657600080fd5b8135614ad46134f982613588565b81815260c0918202840185019185820191908c841115614af357600080fd5b948601945b83861015614b8d5780868e031215614b105760008081fd5b614b18613461565b8635614b238161356e565b815286880135614b328161356e565b8189015286860135614b438161356e565b8187015286890135614b5481613530565b818a0152608087810135614b6781613555565b9082015260a087810135614b7a81613530565b9082015283529485019491860191614af8565b50809750505050505050509250925092565b600080600060608486031215614bb457600080fd5b8335614bbf81613530565b92506020840135614bcf81613530565b929592945050506040919091013590565b600081518084526020808501808196508360051b8101915082860160005b85811015614c975782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b0152614c5960e08b0186613932565b928601518a8403603f1901858c0152929450614c758584613932565b9501511660c09890980197909752505098850198935090840190600101614bfe565b5091979650505050505050565b60006101608251818552614cba82860182613932565b91505060208301518482036020860152614cd48282613932565b9150506040830151614cf160408601826001600160a01b03169052565b5060608301518482036060860152614d098282613932565b9150506080830151614d1f608086018215159052565b5060a0830151614d3460a086018260070b9052565b5060c0830151614d4860c086018215159052565b5060e083015184820360e0860152613aeb8282614be0565b606081526000614d736060830186614ca4565b90508360070b60208301528260030b6040830152949350505050565b60008251614da1818460208701613906565b9190910192915050565b60008060408385031215614dbe57600080fd5b8251614dc981613870565b602084015190925061411181613530565b600082601f830112614deb57600080fd5b8151614df96134f9826134b3565b818152846020838601011115614e0e57600080fd5b6149ce826020830160208701613906565b805161355081613530565b805161355081613555565b80516135508161356e565b600060a08284031215614e5257600080fd5b614e5a6133d8565b90508151614e6781613555565b81526020820151614e7781613530565b602082015260408201516001600160401b0380821115614e9657600080fd5b614ea285838601614dda565b60408401526060840151915080821115614ebb57600080fd5b50614ec884828501614dda565b6060830152506080820151614edc81613530565b608082015292915050565b600082601f830112614ef857600080fd5b81516020614f086134f983613588565b82815260059290921b84018101918181019086841115614f2757600080fd5b8286015b848110156137005780516001600160401b0380821115614f4b5760008081fd5b908801906040828b03601f1901811315614f655760008081fd5b614f6d6133b0565b838801518152908301519082821115614f865760008081fd5b614f948c8984870101614e40565b818901528652505050918301918301614f2b565b600060608284031215614fba57600080fd5b614fc26133fa565b90508151614fcf8161356e565b81526020820151614fdf81613530565b602082015260408201516137558161356e565b6000610160828403121561500557600080fd5b61500d61341c565b905081516001600160401b038082111561502657600080fd5b61503285838601614dda565b8352602084015191508082111561504857600080fd5b61505485838601614dda565b602084015261506560408501614e1f565b6040840152606084015191508082111561507e57600080fd5b61508a85838601614dda565b606084015261509b60808501614e2a565b60808401526150ac60a08501614e35565b60a08401526150bd60c08501614e2a565b60c084015260e08401519150808211156150d657600080fd5b506150e384828501614ee7565b60e08301525061010061386684828501614fa8565b600082601f83011261510957600080fd5b815160206151196134f983613588565b82815260a0928302850182019282820191908785111561513857600080fd5b8387015b85811015613a225781818a0312156151545760008081fd5b61515c6133d8565b81516151678161356e565b81528186015161517681613530565b8187015260408281015161518981613555565b9082015260608281015161519c81613555565b908201526080828101516151af81613530565b90820152845292840192810161513c565b600082601f8301126151d157600080fd5b815160206151e16134f983613588565b82815260c0928302850182019282820191908785111561520057600080fd5b8387015b85811015613a225781818a03121561521c5760008081fd5b615224613461565b815161522f8161356e565b81528186015161523e8161356e565b818701526040828101516152518161356e565b908201526060828101516152648161356e565b9082015260808281015161527781613555565b9082015260a08281015161528a81613530565b908201528452928401928101615204565b600082601f8301126152ac57600080fd5b815160206152bc6134f983613588565b82815260c092830285018201928282019190878511156152db57600080fd5b8387015b85811015613a225781818a0312156152f75760008081fd5b6152ff613461565b815161530a8161356e565b8152818601516153198161356e565b8187015260408281015161532c8161356e565b9082015260608281015161533f81613530565b9082015260808281015161535281613555565b9082015260a08281015161536581613530565b9082015284529284019281016152df565b6000610120828403121561538957600080fd5b61539161341c565b905081516001600160401b03808211156153aa57600080fd5b6153b685838601614ff2565b83526153c460208501614e35565b60208401526153d560408501614e2a565b60408401526153e660608501614e2a565b60608401526153f760808501614e2a565b608084015260a084015191508082111561541057600080fd5b61541c858386016150f8565b60a084015260c084015191508082111561543557600080fd5b615441858386016151c0565b60c084015260e084015191508082111561545a57600080fd5b6154668583860161529b565b60e08401526101009150818401518181111561548157600080fd5b61548d86828701614dda565b8385015250505092915050565b600080604083850312156154ad57600080fd5b82516154b881613870565b60208401519092506001600160401b03808211156154d557600080fd5b90840190604082870312156154e957600080fd5b6040516040810181811083821117156155045761550461339a565b60405282518281111561551657600080fd5b61552288828601615376565b8252506020830151925061553583613870565b8260208201528093505050509250929050565b6000806040838503121561555b57600080fd5b825161556681613870565b60208401519092506001600160401b0381111561558257600080fd5b6146f285828601615376565b600081518084526020808501945080840160005b83811015613bac57815180516001600160a01b03908116895284820151168489015260408082015160070b90890152606090810151151590880152608090960195908201906001016155a2565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156145c457603f19898403018552815160608085016001600160a01b038084511687528a840151838c89015282815180855260808a0191508d83019450600092505b808310156156935784518051851683528e81015160070b8f8401528d015115158d830152938d0193600192909201919085019061565b565b50948b0151888603898d0152946156aa818761558e565b9a8d019a98505050948a01945050506001919091019050615616565b6001600160a01b0383168152608081016138ff6020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b600081518084526020808501945080840160005b83811015613bac57815160070b8752958201959082019060010161571d565b6001600160a01b03841681528260070b60208201526060604082015260006157676060830184615709565b95945050505050565b6000806040838503121561578357600080fd5b825161578e81613870565b60208401519092506141118161356e565b600080600080608085870312156157b557600080fd5b84516157c081613870565b60208601519094506001600160401b03808211156157dd57600080fd5b6157e9888389016150f8565b945060408701519150808211156157ff57600080fd5b61580b888389016151c0565b9350606087015191508082111561582157600080fd5b5061498e8782880161529b565b6000806040838503121561584157600080fd5b825161584c81613870565b602084015190925061411181613555565b600081518084526020808501945080840160005b83811015613bac576158c5878351805160070b825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a0969096019590820190600101615871565b60a0815260006158eb60a0830188614ca4565b60208760070b818501528660030b60408501528382036060850152615910828761585d565b8481036080860152855180825282870193509082019060005b8181101561599b57615988838651805160070b8252602081015160070b6020830152604081015160070b6040830152606081015160070b60608301526080810151151560808301526001600160a01b0360a08201511660a08301525050565b9383019360c09290920191600101615929565b50909a9950505050505050505050565b6000606082016001600160a01b038616835260208560070b818501526060604085015281855180845260808601915060808160051b870101935082870160005b82811015615a1957607f19888703018452615a07868351613932565b955092840192908401906001016159eb565b50939998505050505050505050565b600080600060608486031215615a3d57600080fd5b8351615a4881613870565b80935050602080850151615a5b8161356e565b60408601519093506001600160401b03811115615a7757600080fd5b8501601f81018713615a8857600080fd5b8051615a966134f982613588565b81815260059190911b82018301908381019089831115615ab557600080fd5b928401925b82841015615adc578351615acd8161356e565b82529284019290840190615aba565b80955050505050509250925092565b60008060408385031215615afe57600080fd5b8251615b0981613870565b60208401519092506001600160401b03811115615b2557600080fd5b6146f285828601614e40565b600060408083016001600160a01b03808716855260208381870152828751808552606094508488019150848160051b890101838a0160005b83811015615bf5578a8303605f190185528151805184528601518684018a9052805115158a850152808701518816898501528981015160a06080808701829052615bb660e0880184613932565b92508b840151603f198885030183890152615bd18482613932565b91909401518b1660c097909701969096525050509385019390850190600101615b69565b50909b9a5050505050505050505050565b60008060408385031215615c1957600080fd5b8251615c2481613870565b60208401519092506001600160401b0380821115615c4157600080fd5b9084019060c08287031215615c5557600080fd5b615c5d613461565b825182811115615c6c57600080fd5b615c7888828601615376565b825250615c8760208401614e35565b6020820152615c9860408401614e1f565b6040820152615ca960608401614e35565b6060820152608083015182811115615cc057600080fd5b615ccc88828601614dda565b608083015250615cde60a08401614e1f565b60a08201528093505050509250929050565b60008060408385031215615d0357600080fd5b8251615d0e81613870565b602084015190925061411181613870565b6001600160a01b03831681526040602082015260006149ce6040830184614ca4565b60008060808385031215615d5457600080fd5b8251615d5f81613870565b91506140da8460208501614fa8565b60006001600160a01b038086168352808516602084015250606060408301526157676060830184615709565b600081518084526020808501945080840160005b83811015613bac5781516001600160a01b031687529582019590820190600101615dae565b6001600160a01b03831681526040602082015260006149ce6040830184615d9a565b6001600160a01b0385168152608060208201526000615e176080830186615d9a565b8281036040840152615e298186615d9a565b90508281036060840152615e3d8185615709565b979650505050505050565b6020815260006138ff6020830184614ca4565b60008060408385031215615e6e57600080fd5b8251615e7981613870565b6020939093015192949293505050565b6001600160a01b0384168152606060208201526000615eab6060830185615d9a565b8281036040840152613d968185615709565b606081526000615ed06060830186614ca4565b602083820381850152615ee3828761585d565b8481036040860152855180825282870193509082019060005b818110156145c457615f5e838651805160070b8252602081015160070b6020830152604081015160070b604083015260608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b9383019360c09290920191600101615efc565b600060208284031215615f8357600080fd5b81516138ff8161387056fea264697066735822122067fc2ccf5e16c08e28f423f101d133a590111c3f96450b7c0c45058e73e8f76564736f6c63430008090033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/safe-hts-precompile/SafeOperations.sol/SafeOperations.json b/artifacts/contracts/safe-hts-precompile/SafeOperations.sol/SafeOperations.json index feb91dca6..5eb6e7e70 100644 --- a/artifacts/contracts/safe-hts-precompile/SafeOperations.sol/SafeOperations.json +++ b/artifacts/contracts/safe-hts-precompile/SafeOperations.sol/SafeOperations.json @@ -94,9 +94,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -104,9 +104,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -119,9 +119,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -141,9 +141,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -173,24 +173,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -210,19 +210,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -255,9 +255,9 @@ "type": "tuple" }, { - "internalType": "uint32", + "internalType": "int32", "name": "decimals", - "type": "uint32" + "type": "int32" } ], "indexed": false, @@ -371,9 +371,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -381,9 +381,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -396,9 +396,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -418,9 +418,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -450,24 +450,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -487,19 +487,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -655,9 +655,9 @@ "type": "address" }, { - "internalType": "uint64", + "internalType": "int64", "name": "amount", - "type": "uint64" + "type": "int64" }, { "internalType": "int64[]", @@ -668,9 +668,9 @@ "name": "safeBurnToken", "outputs": [ { - "internalType": "uint64", + "internalType": "int64", "name": "newTotalSupply", - "type": "uint64" + "type": "int64" } ], "stateMutability": "nonpayable", @@ -1008,9 +1008,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1018,9 +1018,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1033,9 +1033,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -1055,9 +1055,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1087,24 +1087,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1124,19 +1124,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1169,9 +1169,9 @@ "type": "tuple" }, { - "internalType": "uint32", + "internalType": "int32", "name": "decimals", - "type": "uint32" + "type": "int32" } ], "internalType": "struct IHederaTokenService.FungibleTokenInfo", @@ -1285,9 +1285,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1295,9 +1295,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1310,9 +1310,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -1332,9 +1332,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1364,24 +1364,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1401,19 +1401,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1492,9 +1492,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1524,24 +1524,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1561,19 +1561,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1650,9 +1650,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1660,9 +1660,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1769,9 +1769,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1779,9 +1779,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -1794,9 +1794,9 @@ "type": "tuple" }, { - "internalType": "uint64", + "internalType": "int64", "name": "totalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "bool", @@ -1816,9 +1816,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -1848,24 +1848,24 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "minimumAmount", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "maximumAmount", - "type": "uint32" + "type": "int64" }, { "internalType": "bool", @@ -1885,19 +1885,19 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "numerator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "denominator", - "type": "uint32" + "type": "int64" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2125,9 +2125,9 @@ "type": "address" }, { - "internalType": "uint64", + "internalType": "int64", "name": "amount", - "type": "uint64" + "type": "int64" }, { "internalType": "bytes[]", @@ -2138,9 +2138,9 @@ "name": "safeMintToken", "outputs": [ { - "internalType": "uint64", + "internalType": "int64", "name": "newTotalSupply", - "type": "uint64" + "type": "int64" }, { "internalType": "int64[]", @@ -2353,9 +2353,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2363,9 +2363,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -2469,9 +2469,9 @@ { "components": [ { - "internalType": "uint32", + "internalType": "int64", "name": "second", - "type": "uint32" + "type": "int64" }, { "internalType": "address", @@ -2479,9 +2479,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "autoRenewPeriod", - "type": "uint32" + "type": "int64" } ], "internalType": "struct IHederaTokenService.Expiry", @@ -2569,9 +2569,9 @@ "type": "address" }, { - "internalType": "uint32", + "internalType": "int64", "name": "amount", - "type": "uint32" + "type": "int64" } ], "name": "safeWipeTokenAccount", @@ -2603,190 +2603,190 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50614aab806100206000396000f3fe6080604052600436106102c25760003560e01c80636e4333fd1161017f5780639c7e98d0116100e1578063da49aa401161008a578063eb5625d911610064578063eb5625d914610887578063eccc07c6146108a7578063ed02ae71146108c757600080fd5b8063da49aa4014610827578063dfb3bfc41461085f578063e1e787841461087f57600080fd5b8063be83aa99116100bb578063be83aa99146107c7578063c82c93dc146107e7578063cf58c3ea1461080757600080fd5b80639c7e98d0146107665780639d632dc614610786578063ba2ad9731461079957600080fd5b806382ddffbf116101435780638d1433dd1161011d5780638d1433dd1461070657806394f74f3e14610726578063978df2a21461074657600080fd5b806382ddffbf146106a657806387e6877c146106c6578063894c6653146106e657600080fd5b80636e4333fd146106115780636efe63a51461063e578063705314a01461065e57806371e3ecb31461067e5780637c6c6a841461068657600080fd5b806344f8e471116102285780635140d67d116101ec57806356dc648b116101c657806356dc648b146105a6578063587da69a146105c657806368b03db8146105e657600080fd5b80635140d67d1461052657806354a0b16c1461054657806355caeb091461057357600080fd5b806344f8e4711461047957806348b14613146104a65780634959707b146104c657806349c8532b146104e65780634ddd613b1461050657600080fd5b80632ad145af1161028a578063321060ab11610264578063321060ab146103ec5780633364596e1461041a5780633e54fba81461044957600080fd5b80632ad145af1461038c5780632dbfc4a6146103ac57806330d2a9f2146103cc57600080fd5b8063042a34b8146102c757806305923cee146102fd578063067fa1221461031f57806319cdce7e1461034c5780631ffbb8d71461036c575b600080fd5b3480156102d357600080fd5b506102e76102e236600461240a565b6108e7565b6040516102f491906128cd565b60405180910390f35b34801561030957600080fd5b5061031d61031836600461291f565b6109bb565b005b34801561032b57600080fd5b5061033f61033a36600461240a565b610a3e565b6040516102f4919061296a565b34801561035857600080fd5b5061031d61036736600461240a565b610b06565b34801561037857600080fd5b5061031d61038736600461297d565b610b75565b34801561039857600080fd5b5061031d6103a736600461297d565b610bed565b3480156103b857600080fd5b5061031d6103c73660046129c8565b610c35565b3480156103d857600080fd5b5061031d6103e7366004612c24565b610c89565b3480156103f857600080fd5b5061040c610407366004612e7f565b610cc0565b6040516102f4929190612f56565b34801561042657600080fd5b5061043a61043536600461240a565b610d5f565b6040516102f493929190612fa3565b34801561045557600080fd5b50610469610464366004612fdc565b610e02565b60405190151581526020016102f4565b34801561048557600080fd5b5061049961049436600461301c565b610ea8565b6040516102f49190613048565b3480156104b257600080fd5b5061031d6104c136600461305b565b610f8b565b3480156104d257600080fd5b506104696104e136600461297d565b610fdb565b3480156104f257600080fd5b5061031d61050136600461309b565b611072565b34801561051257600080fd5b5061046961052136600461240a565b6110fe565b34801561053257600080fd5b5061046961054136600461297d565b611193565b34801561055257600080fd5b506105666105613660046130f7565b6111de565b6040516102f49190613125565b34801561057f57600080fd5b5061059361058e36600461240a565b61127f565b60405160039190910b81526020016102f4565b3480156105b257600080fd5b5061031d6105c13660046131fe565b61130d565b3480156105d257600080fd5b5061031d6105e136600461309b565b611346565b6105f96105f436600461297d565b6113a0565b6040516001600160a01b0390911681526020016102f4565b34801561061d57600080fd5b5061063161062c36600461240a565b6114ba565b6040516102f49190613234565b34801561064a57600080fd5b5061031d6106593660046132cc565b61155e565b34801561066a57600080fd5b5061031d610679366004613391565b611599565b6105f96115d2565b34801561069257600080fd5b5061031d6106a13660046133e0565b6116f7565b3480156106b257600080fd5b5061031d6106c136600461297d565b611734565b3480156106d257600080fd5b5061031d6106e1366004613391565b61177c565b3480156106f257600080fd5b5061031d61070136600461240a565b6117b5565b34801561071257600080fd5b5061046961072136600461240a565b6117f5565b34801561073257600080fd5b5061031d61074136600461297d565b611838565b34801561075257600080fd5b506105f96107613660046130f7565b611880565b34801561077257600080fd5b5061031d61078136600461297d565b611918565b6105f961079436600461297d565b611960565b3480156107a557600080fd5b506107b96107b4366004612fdc565b611add565b6040519081526020016102f4565b3480156107d357600080fd5b5061031d6107e236600461347a565b611b7b565b3480156107f357600080fd5b5061031d61080236600461363a565b611bb6565b34801561081357600080fd5b5061031d61082236600461240a565b611bef565b34801561083357600080fd5b50610847610842366004613781565b611c2f565b6040516001600160401b0390911681526020016102f4565b34801561086b57600080fd5b5061046961087a36600461240a565b611cbd565b6105f9611d00565b34801561089357600080fd5b5061031d6108a23660046137b1565b611e01565b3480156108b357600080fd5b5061031d6108c236600461297d565b611e50565b3480156108d357600080fd5b5061031d6108e23660046137f2565b611e98565b6108ef6122c3565b6040516285469760e31b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063042a34b89060240160006040518083038186803b15801561094157600080fd5b505af4158015610955573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097d9190810190613f0c565b90507fcb828de8f42dd14be45006ec54538b595d985bc1eda5915fcaa310b1b268380b816040516109ae91906128cd565b60405180910390a1919050565b6040516302c91e7760e11b81526001600160a01b03808516600483015283166024820152600782900b604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906305923cee906064015b60006040518083038186803b158015610a2157600080fd5b505af4158015610a35573d6000803e3d6000fd5b50505050505050565b610a466122e3565b60405163033fd09160e11b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063067fa1229060240160006040518083038186803b158015610a9957600080fd5b505af4158015610aad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ad59190810190613f8f565b90507fc74588f3f2e1bd432673c63aaf07a148454147f066fb904250e85024cd33fb63816040516109ae919061296a565b604051630ce6e73f60e11b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906319cdce7e906024015b60006040518083038186803b158015610b5a57600080fd5b505af4158015610b6e573d6000803e3d6000fd5b5050505050565b604051631ffbb8d760e01b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90631ffbb8d7906044015b60006040518083038186803b158015610bd157600080fd5b505af4158015610be5573d6000803e3d6000fd5b505050505050565b604051632ad145af60e01b81526001600160a01b0380831660048301528316602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90632ad145af90604401610bb9565b6040516316dfe25360e11b81526001600160a01b0380851660048301528316602482015263ffffffff8216604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90632dbfc4a690606401610a09565b604051630962e27b60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90630962e27b90610b42908490600401614024565b6000606073__$64a275930a611d2694d2a05feb4a8b2aa0$__63321060ab8686866040518463ffffffff1660e01b8152600401610cff93929190614109565b60006040518083038186803b158015610d1757600080fd5b505af4158015610d2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d53919081019061418c565b90969095509350505050565b6040516319b22cb760e11b81526001600160a01b03821660048201526060908190819073__$64a275930a611d2694d2a05feb4a8b2aa0$__90633364596e9060240160006040518083038186803b158015610db957600080fd5b505af4158015610dcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610df5919081019061423c565b9196909550909350915050565b6040516307ca9f7560e31b81526001600160a01b03808516600483015280841660248301528216604482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90633e54fba89060640160206040518083038186803b158015610e6857600080fd5b505af4158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea091906142b9565b949350505050565b610eee6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b6040516344f8e47160e01b81526001600160a01b03841660048201526024810183905273__$64a275930a611d2694d2a05feb4a8b2aa0$__906344f8e4719060440160006040518083038186803b158015610f4857600080fd5b505af4158015610f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f8491908101906142d6565b9392505050565b6040516348b1461360e01b81526001600160a01b03808516600483015283166024820152811515604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906348b1461390606401610a09565b604051634959707b60e01b81526001600160a01b0380841660048301528216602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90634959707b906044015b60206040518083038186803b15801561103a57600080fd5b505af415801561104e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8491906142b9565b6040516349c8532b60e01b81526001600160a01b038086166004830152808516602483015283166044820152600782900b606482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906349c8532b906084015b60006040518083038186803b1580156110e057600080fd5b505af41580156110f4573d6000803e3d6000fd5b5050505050505050565b604051634ddd613b60e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90634ddd613b906024015b60206040518083038186803b15801561115557600080fd5b505af4158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906142b9565b92915050565b604051635140d67d60e01b81526001600160a01b0380841660048301528216602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90635140d67d90604401611022565b6111e6612344565b6040516315282c5b60e21b81526001600160a01b0384166004820152600783900b602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906354a0b16c9060440160006040518083038186803b15801561124357600080fd5b505af4158015611257573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f84919081019061430a565b6040516355caeb0960e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__906355caeb099060240160206040518083038186803b1580156112d557600080fd5b505af41580156112e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906143de565b6040516310e9065560e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906310e9065590610bb99085908590600401614401565b604051632c3ed34d60e11b81526001600160a01b038086166004830152808516602483015283166044820152600782900b606482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063587da69a906084016110c8565b60006113aa61237f565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b81830152908301523090820152600061140560018587611ed1565b9050600061141c60046005600a601e60018b612061565b60405163db297c8f60e01b815290915073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063db297c8f9061146090869060c89060089088908890600401614642565b60206040518083038186803b15801561147857600080fd5b505af415801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190614711565b9695505050505050565b60408051606081018252600080825260208201819052818301529051636e4333fd60e01b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90636e4333fd9060240160606040518083038186803b15801561152657600080fd5b505af415801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d919061472e565b604051636efe63a560e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90636efe63a590610a099086908690869060040161477d565b60405163038298a560e51b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063705314a090610bb990859085906004016147e2565b60006115dc61237f565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b818301529083015230828201525163371ea73560e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063dc7a9cd49061166490849060c890600890600401614804565b60206040518083038186803b15801561167c57600080fd5b505af4158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190614711565b6040516001600160a01b03821681529092507f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9060200160405180910390a15090565b604051631f1b1aa160e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90637c6c6a84906110c8908790879087908790600401614829565b6040516382ddffbf60e01b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906382ddffbf90604401610bb9565b6040516321f9a1df60e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906387e6877c90610bb990859085906004016147e2565b60405163894c665360e01b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063894c665390602401610b42565b604051638d1433dd60e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90638d1433dd9060240161113d565b604051634a7ba79f60e11b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906394f74f3e90604401610bb9565b604051634bc6f95160e11b81526001600160a01b0383166004820152600782900b602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063978df2a29060440160206040518083038186803b1580156118e057600080fd5b505af41580156118f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190614711565b6040516309c7e98d60e41b81526001600160a01b0380831660048301528316602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90639c7e98d090604401610bb9565b600061196a61237f565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b8183015283820152815180830183526004808252636d656d6f60e01b92820192909252606084015230918301919091526000906119ec906005600a878961212b565b905073__$64a275930a611d2694d2a05feb4a8b2aa0$__63ccc261fe836000604051908082528060200260200182016040528015611a6457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181611a295790505b50846040518463ffffffff1660e01b8152600401611a849392919061487c565b60206040518083038186803b158015611a9c57600080fd5b505af4158015611ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad49190614711565b95945050505050565b60405163ba2ad97360e01b81526001600160a01b03808516600483015280841660248301528216604482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063ba2ad9739060640160206040518083038186803b158015611b4357600080fd5b505af4158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190614933565b60405163be83aa9960e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063be83aa9990610a099086908690869060040161494c565b6040516367ac845360e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906367ac845390610bb99085908590600401614980565b6040516367ac61f560e11b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063cf58c3ea90602401610b42565b60405163036926a960e61b815260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063da49aa4090611c6d908790879087906004016149a2565b60206040518083038186803b158015611c8557600080fd5b505af4158015611c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea091906149d3565b6040516337eceff160e21b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063dfb3bfc49060240161113d565b6000611d0a61237f565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b8183015283820152815180830183526004808252636d656d6f60e01b9282019290925260608401523083830152905163910f271160e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9163910f271191611dab918591016149f0565b60206040518083038186803b158015611dc357600080fd5b505af4158015611dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfb9190614711565b91505090565b60405163eb5625d960e01b81526001600160a01b038085166004830152831660248201526044810182905273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063eb5625d990606401610a09565b60405163766603e360e11b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063eccc07c690604401610bb9565b604051634e03000f60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90634e03000f90610bb99085908590600401614a03565b60408051600380825260808201909252606091816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181611ee95750506040805160a08101825260009181018290526060810182905263ffffffff871681526001600160a01b03868116602083015285166080820152919250611fa8611f6d876002614a25565b856040805160a081018252600060208201819052606082015263ffffffff9390931683526001908301526001600160a01b0316608082015290565b90506000611ff8611fba886004614a25565b866040805160a0810182526000602082018190529181019190915263ffffffff929092168252600160608301526001600160a01b0316608082015290565b9050828460008151811061200e5761200e614a5f565b6020026020010181905250818460018151811061202d5761202d614a5f565b6020026020010181905250808460028151811061204c5761204c614a5f565b60200260200101819052505050509392505050565b604080516001808252818301909252606091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816120785750506040805160c08101825263ffffffff808b168252808a16602083015280891692820192909252908616606082015284151560808201526001600160a01b03841660a0820152909150808260008151811061211557612115614a5f565b6020026020010181905250509695505050505050565b60408051600380825260808201909252606091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816121435750506040805160c0810182526000918101829052606081018290526080810182905263ffffffff808a168252881660208201526001600160a01b03851660a0820152919250906040805160c08101825263ffffffff808b168252808a166020830152881691810191909152600060608201819052600160808301526001600160a01b03861660a08301529192506040805160c08101825263ffffffff808c168252808b1660208301528916918101919091526001600160a01b03808816606083015260006080830181905290871660a08301529192509050828460008151811061226e5761226e614a5f565b6020026020010181905250818460018151811061228d5761228d614a5f565b602002602001018190525080846002815181106122ac576122ac614a5f565b602002602001018190525050505095945050505050565b60405180604001604052806122d66122e3565b8152600060209091015290565b6040518061012001604052806122f761237f565b815260200160006001600160401b03168152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6040518060c001604052806123576122e3565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60408051610120810182526060808252602080830182905260008385018190528284018390526080840181905260a0840181905260c0840181905260e0840183905284519283018552808352908201819052928101929092529061010082015290565b6001600160a01b03811681146123f757600080fd5b50565b8035612405816123e2565b919050565b60006020828403121561241c57600080fd5b8135610f84816123e2565b60005b8381101561244257818101518382015260200161242a565b83811115612451576000848401525b50505050565b6000815180845261246f816020860160208601612427565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a060408601526124bb60a0860183612457565b9150606084015185830360608701526124d48382612457565b925050806080850151166080860152508091505092915050565b600082825180855260208086019550808260051b84010181860160005b8481101561254d57858303601f19018952815180518452840151604085850181905261253981860183612483565b9a86019a945050509083019060010161250b565b5090979650505050505050565b6000610160825181855261257082860182612457565b9150506020830151848203602086015261258a8282612457565b91505060408301516125a760408601826001600160a01b03169052565b50606083015184820360608601526125bf8282612457565b91505060808301516125d5608086018215159052565b5060a08301516125ea60a086018260070b9052565b5060c08301516125fe60c086018215159052565b5060e083015184820360e086015261261682826124ee565b61010085810151805163ffffffff9081168984015260208201516001600160a01b03166101208a015260408201511661014089015291935091505090949350505050565b600081518084526020808501945080840160005b838110156126d8576126c587835163ffffffff815116825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a096909601959082019060010161266e565b509495945050505050565b600081518084526020808501945080840160005b838110156126d85761275887835163ffffffff808251168352806020830151166020840152806040830151166040840152806060830151166060840152506080810151151560808301526001600160a01b0360a08201511660a08301525050565b60c09690960195908201906001016126f7565b600081518084526020808501945080840160005b838110156126d8576127e487835163ffffffff8082511683528060208301511660208401528060408301511660408401525060608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b60c096909601959082019060010161277f565b6000610120825181855261280d8286018261255a565b915050602083015161282a60208601826001600160401b03169052565b50604083015161283e604086018215159052565b506060830151612852606086018215159052565b506080830151612866608086018215159052565b5060a083015184820360a086015261287e828261265a565b91505060c083015184820360c086015261289882826126e3565b91505060e083015184820360e08601526128b2828261276b565b91505061010080840151858303828701526114b08382612457565b6020815260008251604060208401526128e960608401826127f7565b905063ffffffff60208501511660408401528091505092915050565b8060070b81146123f757600080fd5b803561240581612905565b60008060006060848603121561293457600080fd5b833561293f816123e2565b9250602084013561294f816123e2565b9150604084013561295f81612905565b809150509250925092565b602081526000610f8460208301846127f7565b6000806040838503121561299057600080fd5b823561299b816123e2565b915060208301356129ab816123e2565b809150509250929050565b63ffffffff811681146123f757600080fd5b6000806000606084860312156129dd57600080fd5b83356129e8816123e2565b925060208401356129f8816123e2565b9150604084013561295f816129b6565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612a4057612a40612a08565b60405290565b604051606081016001600160401b0381118282101715612a4057612a40612a08565b604080519081016001600160401b0381118282101715612a4057612a40612a08565b60405160a081016001600160401b0381118282101715612a4057612a40612a08565b60405161012081016001600160401b0381118282101715612a4057612a40612a08565b60405160c081016001600160401b0381118282101715612a4057612a40612a08565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a08565b604052919050565b60006001600160401b03821115612b3a57612b3a612a08565b5060051b60200190565b80151581146123f757600080fd5b803561240581612b44565b600082601f830112612b6e57600080fd5b81356020612b83612b7e83612b21565b612af1565b82815260079290921b84018101918181019086841115612ba257600080fd5b8286015b84811015612c195760808189031215612bbf5760008081fd5b612bc7612a1e565b8135612bd2816123e2565b815281850135612be1816123e2565b81860152604082810135612bf481612905565b90820152606082810135612c0781612b44565b90820152835291830191608001612ba6565b509695505050505050565b600060208284031215612c3657600080fd5b6001600160401b038083351115612c4c57600080fd5b8235830184601f820112612c5f57600080fd5b612c6c612b7e8235612b21565b81358082526020808301929160051b840101871015612c8a57600080fd5b602083015b6020843560051b850101811015612c19578481351115612cae57600080fd5b803584016060818a03601f19011215612cc657600080fd5b612cce612a46565b612cdb60208301356123e2565b602082013581528660408301351115612cf357600080fd5b604082013582018a603f820112612d0957600080fd5b612d19612b7e6020830135612b21565b602082810135808352908201919060600283016040018d811115612d3c57600080fd5b6040840193505b80841015612db2576060848f031215612d5b57600080fd5b612d63612a46565b612d6d85356123e2565b84358152612d7e6020860135612905565b60208501356020820152612d956040860135612b44565b604085810135908201528352606090930192602090920191612d43565b50602084015250506060820135871015612dcb57600080fd5b612dde8a60206060850135850101612b5d565b604082015284525060209283019201612c8f565b6001600160401b03811681146123f757600080fd5b60006001600160401b03821115612e2057612e20612a08565b50601f01601f191660200190565b600082601f830112612e3f57600080fd5b8135612e4d612b7e82612e07565b818152846020838601011115612e6257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612e9457600080fd5b8335612e9f816123e2565b9250602084810135612eb081612df2565b925060408501356001600160401b0380821115612ecc57600080fd5b818701915087601f830112612ee057600080fd5b8135612eee612b7e82612b21565b81815260059190911b8301840190848101908a831115612f0d57600080fd5b8585015b83811015612f4557803585811115612f295760008081fd5b612f378d89838a0101612e2e565b845250918601918601612f11565b508096505050505050509250925092565b6000604082016001600160401b03851683526020604081850152818551808452606086019150828701935060005b8181101561254d57845160070b83529383019391830191600101612f84565b606081526000612fb6606083018661265a565b8281036020840152612fc881866126e3565b905082810360408401526114b0818561276b565b600080600060608486031215612ff157600080fd5b8335612ffc816123e2565b9250602084013561300c816123e2565b9150604084013561295f816123e2565b6000806040838503121561302f57600080fd5b823561303a816123e2565b946020939093013593505050565b602081526000610f846020830184612483565b60008060006060848603121561307057600080fd5b833561307b816123e2565b9250602084013561308b816123e2565b9150604084013561295f81612b44565b600080600080608085870312156130b157600080fd5b84356130bc816123e2565b935060208501356130cc816123e2565b925060408501356130dc816123e2565b915060608501356130ec81612905565b939692955090935050565b6000806040838503121561310a57600080fd5b8235613115816123e2565b915060208301356129ab81612905565b602081526000825160c0602084015261314160e08401826127f7565b9050602084015160070b604084015260408401516001600160a01b038082166060860152606086015160070b608086015260808601519150601f198584030160a086015261318f8383612457565b92508060a08701511660c086015250508091505092915050565b6000606082840312156131bb57600080fd5b6131c3612a46565b905081356131d0816129b6565b815260208201356131e0816123e2565b602082015260408201356131f3816129b6565b604082015292915050565b6000806080838503121561321157600080fd5b823561321c816123e2565b915061322b84602085016131a9565b90509250929050565b6060810161118d8284805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b600082601f83011261327957600080fd5b81356020613289612b7e83612b21565b82815260059290921b840181019181810190868411156132a857600080fd5b8286015b84811015612c195780356132bf81612905565b83529183019183016132ac565b6000806000606084860312156132e157600080fd5b83356132ec816123e2565b925060208401356132fc816123e2565b915060408401356001600160401b0381111561331757600080fd5b61332386828701613268565b9150509250925092565b600082601f83011261333e57600080fd5b8135602061334e612b7e83612b21565b82815260059290921b8401810191818101908684111561336d57600080fd5b8286015b84811015612c19578035613384816123e2565b8352918301918301613371565b600080604083850312156133a457600080fd5b82356133af816123e2565b915060208301356001600160401b038111156133ca57600080fd5b6133d68582860161332d565b9150509250929050565b600080600080608085870312156133f657600080fd5b8435613401816123e2565b935060208501356001600160401b038082111561341d57600080fd5b6134298883890161332d565b9450604087013591508082111561343f57600080fd5b61344b8883890161332d565b9350606087013591508082111561346157600080fd5b5061346e87828801613268565b91505092959194509250565b60008060006060848603121561348f57600080fd5b833561349a816123e2565b925060208401356001600160401b03808211156134b657600080fd5b6134c28783880161332d565b935060408601359150808211156134d857600080fd5b5061332386828701613268565b600082601f8301126134f657600080fd5b81356020613506612b7e83612b21565b82815260059290921b8401810191818101908684111561352557600080fd5b8286015b84811015612c195780356001600160401b038082111561354857600080fd5b908801906040601f19838c03810182131561356257600080fd5b61356a612a68565b888501358152828501358481111561358157600080fd5b949094019360a0858e03830112156135995760008081fd5b6135a1612a8a565b9150888501356135b081612b44565b8252848301356135bf816123e2565b828a0152606085810135858111156135d75760008081fd5b6135e58f8c838a0101612e2e565b85850152506080935083860135858111156136005760008081fd5b61360e8f8c838a0101612e2e565b82850152505061362060a086016123fa565b928201929092528188015285525050918301918301613529565b6000806040838503121561364d57600080fd5b8235613658816123e2565b915060208301356001600160401b038082111561367457600080fd5b90840190610160828703121561368957600080fd5b613691612aac565b8235828111156136a057600080fd5b6136ac88828601612e2e565b8252506020830135828111156136c157600080fd5b6136cd88828601612e2e565b6020830152506136df604084016123fa565b60408201526060830135828111156136f657600080fd5b61370288828601612e2e565b60608301525061371460808401612b52565b608082015261372560a08401612914565b60a082015261373660c08401612b52565b60c082015260e08301358281111561374d57600080fd5b613759888286016134e5565b60e0830152506101009150613770878385016131a9565b828201528093505050509250929050565b60008060006060848603121561379657600080fd5b83356137a1816123e2565b925060208401356132fc81612df2565b6000806000606084860312156137c657600080fd5b83356137d1816123e2565b925060208401356137e1816123e2565b929592945050506040919091013590565b6000806040838503121561380557600080fd5b8235613810816123e2565b915060208301356001600160401b0381111561382b57600080fd5b6133d6858286016134e5565b600082601f83011261384857600080fd5b8151613856612b7e82612e07565b81815284602083860101111561386b57600080fd5b610ea0826020830160208701612427565b8051612405816123e2565b805161240581612b44565b805161240581612905565b600060a082840312156138af57600080fd5b6138b7612a8a565b905081516138c481612b44565b815260208201516138d4816123e2565b602082015260408201516001600160401b03808211156138f357600080fd5b6138ff85838601613837565b6040840152606084015191508082111561391857600080fd5b5061392584828501613837565b6060830152506080820151613939816123e2565b608082015292915050565b600082601f83011261395557600080fd5b81516020613965612b7e83612b21565b82815260059290921b8401810191818101908684111561398457600080fd5b8286015b84811015612c195780516001600160401b03808211156139a85760008081fd5b908801906040828b03601f19018113156139c25760008081fd5b6139ca612a68565b8388015181529083015190828211156139e35760008081fd5b6139f18c898487010161389d565b818901528652505050918301918301613988565b600060608284031215613a1757600080fd5b613a1f612a46565b90508151613a2c816129b6565b81526020820151613a3c816123e2565b602082015260408201516131f3816129b6565b60006101608284031215613a6257600080fd5b613a6a612aac565b905081516001600160401b0380821115613a8357600080fd5b613a8f85838601613837565b83526020840151915080821115613aa557600080fd5b613ab185838601613837565b6020840152613ac26040850161387c565b60408401526060840151915080821115613adb57600080fd5b613ae785838601613837565b6060840152613af860808501613887565b6080840152613b0960a08501613892565b60a0840152613b1a60c08501613887565b60c084015260e0840151915080821115613b3357600080fd5b50613b4084828501613944565b60e083015250610100613b5584828501613a05565b9082015292915050565b805161240581612df2565b600082601f830112613b7b57600080fd5b81516020613b8b612b7e83612b21565b82815260a09283028501820192828201919087851115613baa57600080fd5b8387015b8581101561254d5781818a031215613bc65760008081fd5b613bce612a8a565b8151613bd9816129b6565b815281860151613be8816123e2565b81870152604082810151613bfb81612b44565b90820152606082810151613c0e81612b44565b90820152608082810151613c21816123e2565b908201528452928401928101613bae565b600082601f830112613c4357600080fd5b81516020613c53612b7e83612b21565b82815260c09283028501820192828201919087851115613c7257600080fd5b8387015b8581101561254d5781818a031215613c8e5760008081fd5b613c96612acf565b8151613ca1816129b6565b815281860151613cb0816129b6565b81870152604082810151613cc3816129b6565b90820152606082810151613cd6816129b6565b90820152608082810151613ce981612b44565b9082015260a082810151613cfc816123e2565b908201528452928401928101613c76565b600082601f830112613d1e57600080fd5b81516020613d2e612b7e83612b21565b82815260c09283028501820192828201919087851115613d4d57600080fd5b8387015b8581101561254d5781818a031215613d695760008081fd5b613d71612acf565b8151613d7c816129b6565b815281860151613d8b816129b6565b81870152604082810151613d9e816129b6565b90820152606082810151613db1816123e2565b90820152608082810151613dc481612b44565b9082015260a082810151613dd7816123e2565b908201528452928401928101613d51565b60006101208284031215613dfb57600080fd5b613e03612aac565b905081516001600160401b0380821115613e1c57600080fd5b613e2885838601613a4f565b8352613e3660208501613b5f565b6020840152613e4760408501613887565b6040840152613e5860608501613887565b6060840152613e6960808501613887565b608084015260a0840151915080821115613e8257600080fd5b613e8e85838601613b6a565b60a084015260c0840151915080821115613ea757600080fd5b613eb385838601613c32565b60c084015260e0840151915080821115613ecc57600080fd5b613ed885838601613d0d565b60e084015261010091508184015181811115613ef357600080fd5b613eff86828701613837565b8385015250505092915050565b600060208284031215613f1e57600080fd5b81516001600160401b0380821115613f3557600080fd5b9083019060408286031215613f4957600080fd5b613f51612a68565b825182811115613f6057600080fd5b613f6c87828601613de8565b82525060208301519250613f7f836129b6565b6020810192909252509392505050565b600060208284031215613fa157600080fd5b81516001600160401b03811115613fb757600080fd5b610ea084828501613de8565b600081518084526020808501945080840160005b838110156126d857815180516001600160a01b03908116895284820151168489015260408082015160070b9089015260609081015115159088015260809096019590820190600101613fd7565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156140fb57603f19898403018552815160608085016001600160a01b038084511687528a840151838c89015282815180855260808a0191508d83019450600092505b808310156140c85784518051851683528e81015160070b8f8401528d015115158d830152938d01936001929092019190850190614090565b50948b0151888603898d0152946140df8187613fc3565b9a8d019a98505050948a0194505050600191909101905061404b565b509098975050505050505050565b6000606082016001600160a01b038616835260206001600160401b038616818501526060604085015281855180845260808601915060808160051b870101935082870160005b8281101561417d57607f1988870301845261416b868351612457565b9550928401929084019060010161414f565b50939998505050505050505050565b6000806040838503121561419f57600080fd5b82516141aa81612df2565b809250506020808401516001600160401b038111156141c857600080fd5b8401601f810186136141d957600080fd5b80516141e7612b7e82612b21565b81815260059190911b8201830190838101908883111561420657600080fd5b928401925b8284101561422d57835161421e81612905565b8252928401929084019061420b565b80955050505050509250929050565b60008060006060848603121561425157600080fd5b83516001600160401b038082111561426857600080fd5b61427487838801613b6a565b9450602086015191508082111561428a57600080fd5b61429687838801613c32565b935060408601519150808211156142ac57600080fd5b5061332386828701613d0d565b6000602082840312156142cb57600080fd5b8151610f8481612b44565b6000602082840312156142e857600080fd5b81516001600160401b038111156142fe57600080fd5b610ea08482850161389d565b60006020828403121561431c57600080fd5b81516001600160401b038082111561433357600080fd5b9083019060c0828603121561434757600080fd5b61434f612acf565b82518281111561435e57600080fd5b61436a87828601613de8565b82525061437960208401613892565b602082015261438a6040840161387c565b604082015261439b60608401613892565b60608201526080830151828111156143b257600080fd5b6143be87828601613837565b6080830152506143d060a0840161387c565b60a082015295945050505050565b6000602082840312156143f057600080fd5b81518060030b8114610f8457600080fd5b6001600160a01b038316815260808101610f846020830184805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b600081518084526020808501808196508360051b8101915082860160005b858110156144fb5782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b01526144bd60e08b0186612457565b928601518a8403603f1901858c01529294506144d98584612457565b9501511660c09890980197909752505098850198935090840190600101614462565b5091979650505050505050565b6000610160825181855261451e82860182612457565b915050602083015184820360208601526145388282612457565b915050604083015161455560408601826001600160a01b03169052565b506060830151848203606086015261456d8282612457565b9150506080830151614583608086018215159052565b5060a083015161459860a086018260070b9052565b5060c08301516145ac60c086018215159052565b5060e083015184820360e08601526126168282614444565b600081518084526020808501945080840160005b838110156126d85761462f87835163ffffffff815116825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a09690960195908201906001016145d8565b60a08152600061465560a0830188614508565b60208781850152866040850152838203606085015261467482876145c4565b8481036080860152855180825282870193509082019060005b81811015614701576146ee83865163ffffffff808251168352806020830151166020840152806040830151166040840152806060830151166060840152506080810151151560808301526001600160a01b0360a08201511660a08301525050565b9383019360c0929092019160010161468d565b50909a9950505050505050505050565b60006020828403121561472357600080fd5b8151610f84816123e2565b60006060828403121561474057600080fd5b610f848383613a05565b600081518084526020808501945080840160005b838110156126d857815160070b8752958201959082019060010161475e565b60006001600160a01b03808616835280851660208401525060606040830152611ad4606083018461474a565b600081518084526020808501945080840160005b838110156126d85781516001600160a01b0316875295820195908201906001016147bd565b6001600160a01b0383168152604060208201526000610ea060408301846147a9565b6060815260006148176060830186614508565b60208301949094525060400152919050565b6001600160a01b038516815260806020820152600061484b60808301866147a9565b828103604084015261485d81866147a9565b90508281036060840152614871818561474a565b979650505050505050565b60608152600061488f6060830186614508565b6020838203818501526148a282876145c4565b8481036040860152855180825282870193509082019060005b818110156140fb5761492083865163ffffffff8082511683528060208301511660208401528060408301511660408401525060608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b9383019360c092909201916001016148bb565b60006020828403121561494557600080fd5b5051919050565b6001600160a01b038416815260606020820152600061496e60608301856147a9565b82810360408401526114b0818561474a565b6001600160a01b0383168152604060208201526000610ea06040830184614508565b6001600160a01b03841681526001600160401b0383166020820152606060408201526000611ad4606083018461474a565b6000602082840312156149e557600080fd5b8151610f8481612df2565b602081526000610f846020830184614508565b6001600160a01b0383168152604060208201526000610ea06040830184614444565b600063ffffffff80831681851681830481118215151615614a5657634e487b7160e01b600052601160045260246000fd5b02949350505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212201c51e8d287e8fd15c65cc297eaa8f904e5b7c533918205b4c2d2c51eca0be1c764736f6c63430008090033", - "deployedBytecode": "0x6080604052600436106102c25760003560e01c80636e4333fd1161017f5780639c7e98d0116100e1578063da49aa401161008a578063eb5625d911610064578063eb5625d914610887578063eccc07c6146108a7578063ed02ae71146108c757600080fd5b8063da49aa4014610827578063dfb3bfc41461085f578063e1e787841461087f57600080fd5b8063be83aa99116100bb578063be83aa99146107c7578063c82c93dc146107e7578063cf58c3ea1461080757600080fd5b80639c7e98d0146107665780639d632dc614610786578063ba2ad9731461079957600080fd5b806382ddffbf116101435780638d1433dd1161011d5780638d1433dd1461070657806394f74f3e14610726578063978df2a21461074657600080fd5b806382ddffbf146106a657806387e6877c146106c6578063894c6653146106e657600080fd5b80636e4333fd146106115780636efe63a51461063e578063705314a01461065e57806371e3ecb31461067e5780637c6c6a841461068657600080fd5b806344f8e471116102285780635140d67d116101ec57806356dc648b116101c657806356dc648b146105a6578063587da69a146105c657806368b03db8146105e657600080fd5b80635140d67d1461052657806354a0b16c1461054657806355caeb091461057357600080fd5b806344f8e4711461047957806348b14613146104a65780634959707b146104c657806349c8532b146104e65780634ddd613b1461050657600080fd5b80632ad145af1161028a578063321060ab11610264578063321060ab146103ec5780633364596e1461041a5780633e54fba81461044957600080fd5b80632ad145af1461038c5780632dbfc4a6146103ac57806330d2a9f2146103cc57600080fd5b8063042a34b8146102c757806305923cee146102fd578063067fa1221461031f57806319cdce7e1461034c5780631ffbb8d71461036c575b600080fd5b3480156102d357600080fd5b506102e76102e236600461240a565b6108e7565b6040516102f491906128cd565b60405180910390f35b34801561030957600080fd5b5061031d61031836600461291f565b6109bb565b005b34801561032b57600080fd5b5061033f61033a36600461240a565b610a3e565b6040516102f4919061296a565b34801561035857600080fd5b5061031d61036736600461240a565b610b06565b34801561037857600080fd5b5061031d61038736600461297d565b610b75565b34801561039857600080fd5b5061031d6103a736600461297d565b610bed565b3480156103b857600080fd5b5061031d6103c73660046129c8565b610c35565b3480156103d857600080fd5b5061031d6103e7366004612c24565b610c89565b3480156103f857600080fd5b5061040c610407366004612e7f565b610cc0565b6040516102f4929190612f56565b34801561042657600080fd5b5061043a61043536600461240a565b610d5f565b6040516102f493929190612fa3565b34801561045557600080fd5b50610469610464366004612fdc565b610e02565b60405190151581526020016102f4565b34801561048557600080fd5b5061049961049436600461301c565b610ea8565b6040516102f49190613048565b3480156104b257600080fd5b5061031d6104c136600461305b565b610f8b565b3480156104d257600080fd5b506104696104e136600461297d565b610fdb565b3480156104f257600080fd5b5061031d61050136600461309b565b611072565b34801561051257600080fd5b5061046961052136600461240a565b6110fe565b34801561053257600080fd5b5061046961054136600461297d565b611193565b34801561055257600080fd5b506105666105613660046130f7565b6111de565b6040516102f49190613125565b34801561057f57600080fd5b5061059361058e36600461240a565b61127f565b60405160039190910b81526020016102f4565b3480156105b257600080fd5b5061031d6105c13660046131fe565b61130d565b3480156105d257600080fd5b5061031d6105e136600461309b565b611346565b6105f96105f436600461297d565b6113a0565b6040516001600160a01b0390911681526020016102f4565b34801561061d57600080fd5b5061063161062c36600461240a565b6114ba565b6040516102f49190613234565b34801561064a57600080fd5b5061031d6106593660046132cc565b61155e565b34801561066a57600080fd5b5061031d610679366004613391565b611599565b6105f96115d2565b34801561069257600080fd5b5061031d6106a13660046133e0565b6116f7565b3480156106b257600080fd5b5061031d6106c136600461297d565b611734565b3480156106d257600080fd5b5061031d6106e1366004613391565b61177c565b3480156106f257600080fd5b5061031d61070136600461240a565b6117b5565b34801561071257600080fd5b5061046961072136600461240a565b6117f5565b34801561073257600080fd5b5061031d61074136600461297d565b611838565b34801561075257600080fd5b506105f96107613660046130f7565b611880565b34801561077257600080fd5b5061031d61078136600461297d565b611918565b6105f961079436600461297d565b611960565b3480156107a557600080fd5b506107b96107b4366004612fdc565b611add565b6040519081526020016102f4565b3480156107d357600080fd5b5061031d6107e236600461347a565b611b7b565b3480156107f357600080fd5b5061031d61080236600461363a565b611bb6565b34801561081357600080fd5b5061031d61082236600461240a565b611bef565b34801561083357600080fd5b50610847610842366004613781565b611c2f565b6040516001600160401b0390911681526020016102f4565b34801561086b57600080fd5b5061046961087a36600461240a565b611cbd565b6105f9611d00565b34801561089357600080fd5b5061031d6108a23660046137b1565b611e01565b3480156108b357600080fd5b5061031d6108c236600461297d565b611e50565b3480156108d357600080fd5b5061031d6108e23660046137f2565b611e98565b6108ef6122c3565b6040516285469760e31b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063042a34b89060240160006040518083038186803b15801561094157600080fd5b505af4158015610955573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097d9190810190613f0c565b90507fcb828de8f42dd14be45006ec54538b595d985bc1eda5915fcaa310b1b268380b816040516109ae91906128cd565b60405180910390a1919050565b6040516302c91e7760e11b81526001600160a01b03808516600483015283166024820152600782900b604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906305923cee906064015b60006040518083038186803b158015610a2157600080fd5b505af4158015610a35573d6000803e3d6000fd5b50505050505050565b610a466122e3565b60405163033fd09160e11b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063067fa1229060240160006040518083038186803b158015610a9957600080fd5b505af4158015610aad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ad59190810190613f8f565b90507fc74588f3f2e1bd432673c63aaf07a148454147f066fb904250e85024cd33fb63816040516109ae919061296a565b604051630ce6e73f60e11b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906319cdce7e906024015b60006040518083038186803b158015610b5a57600080fd5b505af4158015610b6e573d6000803e3d6000fd5b5050505050565b604051631ffbb8d760e01b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90631ffbb8d7906044015b60006040518083038186803b158015610bd157600080fd5b505af4158015610be5573d6000803e3d6000fd5b505050505050565b604051632ad145af60e01b81526001600160a01b0380831660048301528316602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90632ad145af90604401610bb9565b6040516316dfe25360e11b81526001600160a01b0380851660048301528316602482015263ffffffff8216604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90632dbfc4a690606401610a09565b604051630962e27b60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90630962e27b90610b42908490600401614024565b6000606073__$64a275930a611d2694d2a05feb4a8b2aa0$__63321060ab8686866040518463ffffffff1660e01b8152600401610cff93929190614109565b60006040518083038186803b158015610d1757600080fd5b505af4158015610d2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d53919081019061418c565b90969095509350505050565b6040516319b22cb760e11b81526001600160a01b03821660048201526060908190819073__$64a275930a611d2694d2a05feb4a8b2aa0$__90633364596e9060240160006040518083038186803b158015610db957600080fd5b505af4158015610dcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610df5919081019061423c565b9196909550909350915050565b6040516307ca9f7560e31b81526001600160a01b03808516600483015280841660248301528216604482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90633e54fba89060640160206040518083038186803b158015610e6857600080fd5b505af4158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea091906142b9565b949350505050565b610eee6040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b6040516344f8e47160e01b81526001600160a01b03841660048201526024810183905273__$64a275930a611d2694d2a05feb4a8b2aa0$__906344f8e4719060440160006040518083038186803b158015610f4857600080fd5b505af4158015610f5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f8491908101906142d6565b9392505050565b6040516348b1461360e01b81526001600160a01b03808516600483015283166024820152811515604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906348b1461390606401610a09565b604051634959707b60e01b81526001600160a01b0380841660048301528216602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90634959707b906044015b60206040518083038186803b15801561103a57600080fd5b505af415801561104e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8491906142b9565b6040516349c8532b60e01b81526001600160a01b038086166004830152808516602483015283166044820152600782900b606482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906349c8532b906084015b60006040518083038186803b1580156110e057600080fd5b505af41580156110f4573d6000803e3d6000fd5b5050505050505050565b604051634ddd613b60e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90634ddd613b906024015b60206040518083038186803b15801561115557600080fd5b505af4158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906142b9565b92915050565b604051635140d67d60e01b81526001600160a01b0380841660048301528216602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90635140d67d90604401611022565b6111e6612344565b6040516315282c5b60e21b81526001600160a01b0384166004820152600783900b602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906354a0b16c9060440160006040518083038186803b15801561124357600080fd5b505af4158015611257573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f84919081019061430a565b6040516355caeb0960e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__906355caeb099060240160206040518083038186803b1580156112d557600080fd5b505af41580156112e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906143de565b6040516310e9065560e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906310e9065590610bb99085908590600401614401565b604051632c3ed34d60e11b81526001600160a01b038086166004830152808516602483015283166044820152600782900b606482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063587da69a906084016110c8565b60006113aa61237f565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b81830152908301523090820152600061140560018587611ed1565b9050600061141c60046005600a601e60018b612061565b60405163db297c8f60e01b815290915073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063db297c8f9061146090869060c89060089088908890600401614642565b60206040518083038186803b15801561147857600080fd5b505af415801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190614711565b9695505050505050565b60408051606081018252600080825260208201819052818301529051636e4333fd60e01b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90636e4333fd9060240160606040518083038186803b15801561152657600080fd5b505af415801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d919061472e565b604051636efe63a560e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90636efe63a590610a099086908690869060040161477d565b60405163038298a560e51b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063705314a090610bb990859085906004016147e2565b60006115dc61237f565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b818301529083015230828201525163371ea73560e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063dc7a9cd49061166490849060c890600890600401614804565b60206040518083038186803b15801561167c57600080fd5b505af4158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190614711565b6040516001600160a01b03821681529092507f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9060200160405180910390a15090565b604051631f1b1aa160e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90637c6c6a84906110c8908790879087908790600401614829565b6040516382ddffbf60e01b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906382ddffbf90604401610bb9565b6040516321f9a1df60e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906387e6877c90610bb990859085906004016147e2565b60405163894c665360e01b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063894c665390602401610b42565b604051638d1433dd60e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90638d1433dd9060240161113d565b604051634a7ba79f60e11b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906394f74f3e90604401610bb9565b604051634bc6f95160e11b81526001600160a01b0383166004820152600782900b602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063978df2a29060440160206040518083038186803b1580156118e057600080fd5b505af41580156118f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190614711565b6040516309c7e98d60e41b81526001600160a01b0380831660048301528316602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90639c7e98d090604401610bb9565b600061196a61237f565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b8183015283820152815180830183526004808252636d656d6f60e01b92820192909252606084015230918301919091526000906119ec906005600a878961212b565b905073__$64a275930a611d2694d2a05feb4a8b2aa0$__63ccc261fe836000604051908082528060200260200182016040528015611a6457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181611a295790505b50846040518463ffffffff1660e01b8152600401611a849392919061487c565b60206040518083038186803b158015611a9c57600080fd5b505af4158015611ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad49190614711565b95945050505050565b60405163ba2ad97360e01b81526001600160a01b03808516600483015280841660248301528216604482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063ba2ad9739060640160206040518083038186803b158015611b4357600080fd5b505af4158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190614933565b60405163be83aa9960e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063be83aa9990610a099086908690869060040161494c565b6040516367ac845360e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906367ac845390610bb99085908590600401614980565b6040516367ac61f560e11b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063cf58c3ea90602401610b42565b60405163036926a960e61b815260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063da49aa4090611c6d908790879087906004016149a2565b60206040518083038186803b158015611c8557600080fd5b505af4158015611c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea091906149d3565b6040516337eceff160e21b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063dfb3bfc49060240161113d565b6000611d0a61237f565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b8183015283820152815180830183526004808252636d656d6f60e01b9282019290925260608401523083830152905163910f271160e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9163910f271191611dab918591016149f0565b60206040518083038186803b158015611dc357600080fd5b505af4158015611dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfb9190614711565b91505090565b60405163eb5625d960e01b81526001600160a01b038085166004830152831660248201526044810182905273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063eb5625d990606401610a09565b60405163766603e360e11b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063eccc07c690604401610bb9565b604051634e03000f60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90634e03000f90610bb99085908590600401614a03565b60408051600380825260808201909252606091816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181611ee95750506040805160a08101825260009181018290526060810182905263ffffffff871681526001600160a01b03868116602083015285166080820152919250611fa8611f6d876002614a25565b856040805160a081018252600060208201819052606082015263ffffffff9390931683526001908301526001600160a01b0316608082015290565b90506000611ff8611fba886004614a25565b866040805160a0810182526000602082018190529181019190915263ffffffff929092168252600160608301526001600160a01b0316608082015290565b9050828460008151811061200e5761200e614a5f565b6020026020010181905250818460018151811061202d5761202d614a5f565b6020026020010181905250808460028151811061204c5761204c614a5f565b60200260200101819052505050509392505050565b604080516001808252818301909252606091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816120785750506040805160c08101825263ffffffff808b168252808a16602083015280891692820192909252908616606082015284151560808201526001600160a01b03841660a0820152909150808260008151811061211557612115614a5f565b6020026020010181905250509695505050505050565b60408051600380825260808201909252606091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816121435750506040805160c0810182526000918101829052606081018290526080810182905263ffffffff808a168252881660208201526001600160a01b03851660a0820152919250906040805160c08101825263ffffffff808b168252808a166020830152881691810191909152600060608201819052600160808301526001600160a01b03861660a08301529192506040805160c08101825263ffffffff808c168252808b1660208301528916918101919091526001600160a01b03808816606083015260006080830181905290871660a08301529192509050828460008151811061226e5761226e614a5f565b6020026020010181905250818460018151811061228d5761228d614a5f565b602002602001018190525080846002815181106122ac576122ac614a5f565b602002602001018190525050505095945050505050565b60405180604001604052806122d66122e3565b8152600060209091015290565b6040518061012001604052806122f761237f565b815260200160006001600160401b03168152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6040518060c001604052806123576122e3565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60408051610120810182526060808252602080830182905260008385018190528284018390526080840181905260a0840181905260c0840181905260e0840183905284519283018552808352908201819052928101929092529061010082015290565b6001600160a01b03811681146123f757600080fd5b50565b8035612405816123e2565b919050565b60006020828403121561241c57600080fd5b8135610f84816123e2565b60005b8381101561244257818101518382015260200161242a565b83811115612451576000848401525b50505050565b6000815180845261246f816020860160208601612427565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a060408601526124bb60a0860183612457565b9150606084015185830360608701526124d48382612457565b925050806080850151166080860152508091505092915050565b600082825180855260208086019550808260051b84010181860160005b8481101561254d57858303601f19018952815180518452840151604085850181905261253981860183612483565b9a86019a945050509083019060010161250b565b5090979650505050505050565b6000610160825181855261257082860182612457565b9150506020830151848203602086015261258a8282612457565b91505060408301516125a760408601826001600160a01b03169052565b50606083015184820360608601526125bf8282612457565b91505060808301516125d5608086018215159052565b5060a08301516125ea60a086018260070b9052565b5060c08301516125fe60c086018215159052565b5060e083015184820360e086015261261682826124ee565b61010085810151805163ffffffff9081168984015260208201516001600160a01b03166101208a015260408201511661014089015291935091505090949350505050565b600081518084526020808501945080840160005b838110156126d8576126c587835163ffffffff815116825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a096909601959082019060010161266e565b509495945050505050565b600081518084526020808501945080840160005b838110156126d85761275887835163ffffffff808251168352806020830151166020840152806040830151166040840152806060830151166060840152506080810151151560808301526001600160a01b0360a08201511660a08301525050565b60c09690960195908201906001016126f7565b600081518084526020808501945080840160005b838110156126d8576127e487835163ffffffff8082511683528060208301511660208401528060408301511660408401525060608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b60c096909601959082019060010161277f565b6000610120825181855261280d8286018261255a565b915050602083015161282a60208601826001600160401b03169052565b50604083015161283e604086018215159052565b506060830151612852606086018215159052565b506080830151612866608086018215159052565b5060a083015184820360a086015261287e828261265a565b91505060c083015184820360c086015261289882826126e3565b91505060e083015184820360e08601526128b2828261276b565b91505061010080840151858303828701526114b08382612457565b6020815260008251604060208401526128e960608401826127f7565b905063ffffffff60208501511660408401528091505092915050565b8060070b81146123f757600080fd5b803561240581612905565b60008060006060848603121561293457600080fd5b833561293f816123e2565b9250602084013561294f816123e2565b9150604084013561295f81612905565b809150509250925092565b602081526000610f8460208301846127f7565b6000806040838503121561299057600080fd5b823561299b816123e2565b915060208301356129ab816123e2565b809150509250929050565b63ffffffff811681146123f757600080fd5b6000806000606084860312156129dd57600080fd5b83356129e8816123e2565b925060208401356129f8816123e2565b9150604084013561295f816129b6565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612a4057612a40612a08565b60405290565b604051606081016001600160401b0381118282101715612a4057612a40612a08565b604080519081016001600160401b0381118282101715612a4057612a40612a08565b60405160a081016001600160401b0381118282101715612a4057612a40612a08565b60405161012081016001600160401b0381118282101715612a4057612a40612a08565b60405160c081016001600160401b0381118282101715612a4057612a40612a08565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a08565b604052919050565b60006001600160401b03821115612b3a57612b3a612a08565b5060051b60200190565b80151581146123f757600080fd5b803561240581612b44565b600082601f830112612b6e57600080fd5b81356020612b83612b7e83612b21565b612af1565b82815260079290921b84018101918181019086841115612ba257600080fd5b8286015b84811015612c195760808189031215612bbf5760008081fd5b612bc7612a1e565b8135612bd2816123e2565b815281850135612be1816123e2565b81860152604082810135612bf481612905565b90820152606082810135612c0781612b44565b90820152835291830191608001612ba6565b509695505050505050565b600060208284031215612c3657600080fd5b6001600160401b038083351115612c4c57600080fd5b8235830184601f820112612c5f57600080fd5b612c6c612b7e8235612b21565b81358082526020808301929160051b840101871015612c8a57600080fd5b602083015b6020843560051b850101811015612c19578481351115612cae57600080fd5b803584016060818a03601f19011215612cc657600080fd5b612cce612a46565b612cdb60208301356123e2565b602082013581528660408301351115612cf357600080fd5b604082013582018a603f820112612d0957600080fd5b612d19612b7e6020830135612b21565b602082810135808352908201919060600283016040018d811115612d3c57600080fd5b6040840193505b80841015612db2576060848f031215612d5b57600080fd5b612d63612a46565b612d6d85356123e2565b84358152612d7e6020860135612905565b60208501356020820152612d956040860135612b44565b604085810135908201528352606090930192602090920191612d43565b50602084015250506060820135871015612dcb57600080fd5b612dde8a60206060850135850101612b5d565b604082015284525060209283019201612c8f565b6001600160401b03811681146123f757600080fd5b60006001600160401b03821115612e2057612e20612a08565b50601f01601f191660200190565b600082601f830112612e3f57600080fd5b8135612e4d612b7e82612e07565b818152846020838601011115612e6257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612e9457600080fd5b8335612e9f816123e2565b9250602084810135612eb081612df2565b925060408501356001600160401b0380821115612ecc57600080fd5b818701915087601f830112612ee057600080fd5b8135612eee612b7e82612b21565b81815260059190911b8301840190848101908a831115612f0d57600080fd5b8585015b83811015612f4557803585811115612f295760008081fd5b612f378d89838a0101612e2e565b845250918601918601612f11565b508096505050505050509250925092565b6000604082016001600160401b03851683526020604081850152818551808452606086019150828701935060005b8181101561254d57845160070b83529383019391830191600101612f84565b606081526000612fb6606083018661265a565b8281036020840152612fc881866126e3565b905082810360408401526114b0818561276b565b600080600060608486031215612ff157600080fd5b8335612ffc816123e2565b9250602084013561300c816123e2565b9150604084013561295f816123e2565b6000806040838503121561302f57600080fd5b823561303a816123e2565b946020939093013593505050565b602081526000610f846020830184612483565b60008060006060848603121561307057600080fd5b833561307b816123e2565b9250602084013561308b816123e2565b9150604084013561295f81612b44565b600080600080608085870312156130b157600080fd5b84356130bc816123e2565b935060208501356130cc816123e2565b925060408501356130dc816123e2565b915060608501356130ec81612905565b939692955090935050565b6000806040838503121561310a57600080fd5b8235613115816123e2565b915060208301356129ab81612905565b602081526000825160c0602084015261314160e08401826127f7565b9050602084015160070b604084015260408401516001600160a01b038082166060860152606086015160070b608086015260808601519150601f198584030160a086015261318f8383612457565b92508060a08701511660c086015250508091505092915050565b6000606082840312156131bb57600080fd5b6131c3612a46565b905081356131d0816129b6565b815260208201356131e0816123e2565b602082015260408201356131f3816129b6565b604082015292915050565b6000806080838503121561321157600080fd5b823561321c816123e2565b915061322b84602085016131a9565b90509250929050565b6060810161118d8284805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b600082601f83011261327957600080fd5b81356020613289612b7e83612b21565b82815260059290921b840181019181810190868411156132a857600080fd5b8286015b84811015612c195780356132bf81612905565b83529183019183016132ac565b6000806000606084860312156132e157600080fd5b83356132ec816123e2565b925060208401356132fc816123e2565b915060408401356001600160401b0381111561331757600080fd5b61332386828701613268565b9150509250925092565b600082601f83011261333e57600080fd5b8135602061334e612b7e83612b21565b82815260059290921b8401810191818101908684111561336d57600080fd5b8286015b84811015612c19578035613384816123e2565b8352918301918301613371565b600080604083850312156133a457600080fd5b82356133af816123e2565b915060208301356001600160401b038111156133ca57600080fd5b6133d68582860161332d565b9150509250929050565b600080600080608085870312156133f657600080fd5b8435613401816123e2565b935060208501356001600160401b038082111561341d57600080fd5b6134298883890161332d565b9450604087013591508082111561343f57600080fd5b61344b8883890161332d565b9350606087013591508082111561346157600080fd5b5061346e87828801613268565b91505092959194509250565b60008060006060848603121561348f57600080fd5b833561349a816123e2565b925060208401356001600160401b03808211156134b657600080fd5b6134c28783880161332d565b935060408601359150808211156134d857600080fd5b5061332386828701613268565b600082601f8301126134f657600080fd5b81356020613506612b7e83612b21565b82815260059290921b8401810191818101908684111561352557600080fd5b8286015b84811015612c195780356001600160401b038082111561354857600080fd5b908801906040601f19838c03810182131561356257600080fd5b61356a612a68565b888501358152828501358481111561358157600080fd5b949094019360a0858e03830112156135995760008081fd5b6135a1612a8a565b9150888501356135b081612b44565b8252848301356135bf816123e2565b828a0152606085810135858111156135d75760008081fd5b6135e58f8c838a0101612e2e565b85850152506080935083860135858111156136005760008081fd5b61360e8f8c838a0101612e2e565b82850152505061362060a086016123fa565b928201929092528188015285525050918301918301613529565b6000806040838503121561364d57600080fd5b8235613658816123e2565b915060208301356001600160401b038082111561367457600080fd5b90840190610160828703121561368957600080fd5b613691612aac565b8235828111156136a057600080fd5b6136ac88828601612e2e565b8252506020830135828111156136c157600080fd5b6136cd88828601612e2e565b6020830152506136df604084016123fa565b60408201526060830135828111156136f657600080fd5b61370288828601612e2e565b60608301525061371460808401612b52565b608082015261372560a08401612914565b60a082015261373660c08401612b52565b60c082015260e08301358281111561374d57600080fd5b613759888286016134e5565b60e0830152506101009150613770878385016131a9565b828201528093505050509250929050565b60008060006060848603121561379657600080fd5b83356137a1816123e2565b925060208401356132fc81612df2565b6000806000606084860312156137c657600080fd5b83356137d1816123e2565b925060208401356137e1816123e2565b929592945050506040919091013590565b6000806040838503121561380557600080fd5b8235613810816123e2565b915060208301356001600160401b0381111561382b57600080fd5b6133d6858286016134e5565b600082601f83011261384857600080fd5b8151613856612b7e82612e07565b81815284602083860101111561386b57600080fd5b610ea0826020830160208701612427565b8051612405816123e2565b805161240581612b44565b805161240581612905565b600060a082840312156138af57600080fd5b6138b7612a8a565b905081516138c481612b44565b815260208201516138d4816123e2565b602082015260408201516001600160401b03808211156138f357600080fd5b6138ff85838601613837565b6040840152606084015191508082111561391857600080fd5b5061392584828501613837565b6060830152506080820151613939816123e2565b608082015292915050565b600082601f83011261395557600080fd5b81516020613965612b7e83612b21565b82815260059290921b8401810191818101908684111561398457600080fd5b8286015b84811015612c195780516001600160401b03808211156139a85760008081fd5b908801906040828b03601f19018113156139c25760008081fd5b6139ca612a68565b8388015181529083015190828211156139e35760008081fd5b6139f18c898487010161389d565b818901528652505050918301918301613988565b600060608284031215613a1757600080fd5b613a1f612a46565b90508151613a2c816129b6565b81526020820151613a3c816123e2565b602082015260408201516131f3816129b6565b60006101608284031215613a6257600080fd5b613a6a612aac565b905081516001600160401b0380821115613a8357600080fd5b613a8f85838601613837565b83526020840151915080821115613aa557600080fd5b613ab185838601613837565b6020840152613ac26040850161387c565b60408401526060840151915080821115613adb57600080fd5b613ae785838601613837565b6060840152613af860808501613887565b6080840152613b0960a08501613892565b60a0840152613b1a60c08501613887565b60c084015260e0840151915080821115613b3357600080fd5b50613b4084828501613944565b60e083015250610100613b5584828501613a05565b9082015292915050565b805161240581612df2565b600082601f830112613b7b57600080fd5b81516020613b8b612b7e83612b21565b82815260a09283028501820192828201919087851115613baa57600080fd5b8387015b8581101561254d5781818a031215613bc65760008081fd5b613bce612a8a565b8151613bd9816129b6565b815281860151613be8816123e2565b81870152604082810151613bfb81612b44565b90820152606082810151613c0e81612b44565b90820152608082810151613c21816123e2565b908201528452928401928101613bae565b600082601f830112613c4357600080fd5b81516020613c53612b7e83612b21565b82815260c09283028501820192828201919087851115613c7257600080fd5b8387015b8581101561254d5781818a031215613c8e5760008081fd5b613c96612acf565b8151613ca1816129b6565b815281860151613cb0816129b6565b81870152604082810151613cc3816129b6565b90820152606082810151613cd6816129b6565b90820152608082810151613ce981612b44565b9082015260a082810151613cfc816123e2565b908201528452928401928101613c76565b600082601f830112613d1e57600080fd5b81516020613d2e612b7e83612b21565b82815260c09283028501820192828201919087851115613d4d57600080fd5b8387015b8581101561254d5781818a031215613d695760008081fd5b613d71612acf565b8151613d7c816129b6565b815281860151613d8b816129b6565b81870152604082810151613d9e816129b6565b90820152606082810151613db1816123e2565b90820152608082810151613dc481612b44565b9082015260a082810151613dd7816123e2565b908201528452928401928101613d51565b60006101208284031215613dfb57600080fd5b613e03612aac565b905081516001600160401b0380821115613e1c57600080fd5b613e2885838601613a4f565b8352613e3660208501613b5f565b6020840152613e4760408501613887565b6040840152613e5860608501613887565b6060840152613e6960808501613887565b608084015260a0840151915080821115613e8257600080fd5b613e8e85838601613b6a565b60a084015260c0840151915080821115613ea757600080fd5b613eb385838601613c32565b60c084015260e0840151915080821115613ecc57600080fd5b613ed885838601613d0d565b60e084015261010091508184015181811115613ef357600080fd5b613eff86828701613837565b8385015250505092915050565b600060208284031215613f1e57600080fd5b81516001600160401b0380821115613f3557600080fd5b9083019060408286031215613f4957600080fd5b613f51612a68565b825182811115613f6057600080fd5b613f6c87828601613de8565b82525060208301519250613f7f836129b6565b6020810192909252509392505050565b600060208284031215613fa157600080fd5b81516001600160401b03811115613fb757600080fd5b610ea084828501613de8565b600081518084526020808501945080840160005b838110156126d857815180516001600160a01b03908116895284820151168489015260408082015160070b9089015260609081015115159088015260809096019590820190600101613fd7565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156140fb57603f19898403018552815160608085016001600160a01b038084511687528a840151838c89015282815180855260808a0191508d83019450600092505b808310156140c85784518051851683528e81015160070b8f8401528d015115158d830152938d01936001929092019190850190614090565b50948b0151888603898d0152946140df8187613fc3565b9a8d019a98505050948a0194505050600191909101905061404b565b509098975050505050505050565b6000606082016001600160a01b038616835260206001600160401b038616818501526060604085015281855180845260808601915060808160051b870101935082870160005b8281101561417d57607f1988870301845261416b868351612457565b9550928401929084019060010161414f565b50939998505050505050505050565b6000806040838503121561419f57600080fd5b82516141aa81612df2565b809250506020808401516001600160401b038111156141c857600080fd5b8401601f810186136141d957600080fd5b80516141e7612b7e82612b21565b81815260059190911b8201830190838101908883111561420657600080fd5b928401925b8284101561422d57835161421e81612905565b8252928401929084019061420b565b80955050505050509250929050565b60008060006060848603121561425157600080fd5b83516001600160401b038082111561426857600080fd5b61427487838801613b6a565b9450602086015191508082111561428a57600080fd5b61429687838801613c32565b935060408601519150808211156142ac57600080fd5b5061332386828701613d0d565b6000602082840312156142cb57600080fd5b8151610f8481612b44565b6000602082840312156142e857600080fd5b81516001600160401b038111156142fe57600080fd5b610ea08482850161389d565b60006020828403121561431c57600080fd5b81516001600160401b038082111561433357600080fd5b9083019060c0828603121561434757600080fd5b61434f612acf565b82518281111561435e57600080fd5b61436a87828601613de8565b82525061437960208401613892565b602082015261438a6040840161387c565b604082015261439b60608401613892565b60608201526080830151828111156143b257600080fd5b6143be87828601613837565b6080830152506143d060a0840161387c565b60a082015295945050505050565b6000602082840312156143f057600080fd5b81518060030b8114610f8457600080fd5b6001600160a01b038316815260808101610f846020830184805163ffffffff90811683526020808301516001600160a01b03169084015260409182015116910152565b600081518084526020808501808196508360051b8101915082860160005b858110156144fb5782840389528151604081518652868201519150808787015281511515818701528682015160606001600160a01b03808316828a015283850151935060a09250608083818b01526144bd60e08b0186612457565b928601518a8403603f1901858c01529294506144d98584612457565b9501511660c09890980197909752505098850198935090840190600101614462565b5091979650505050505050565b6000610160825181855261451e82860182612457565b915050602083015184820360208601526145388282612457565b915050604083015161455560408601826001600160a01b03169052565b506060830151848203606086015261456d8282612457565b9150506080830151614583608086018215159052565b5060a083015161459860a086018260070b9052565b5060c08301516145ac60c086018215159052565b5060e083015184820360e08601526126168282614444565b600081518084526020808501945080840160005b838110156126d85761462f87835163ffffffff815116825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a09690960195908201906001016145d8565b60a08152600061465560a0830188614508565b60208781850152866040850152838203606085015261467482876145c4565b8481036080860152855180825282870193509082019060005b81811015614701576146ee83865163ffffffff808251168352806020830151166020840152806040830151166040840152806060830151166060840152506080810151151560808301526001600160a01b0360a08201511660a08301525050565b9383019360c0929092019160010161468d565b50909a9950505050505050505050565b60006020828403121561472357600080fd5b8151610f84816123e2565b60006060828403121561474057600080fd5b610f848383613a05565b600081518084526020808501945080840160005b838110156126d857815160070b8752958201959082019060010161475e565b60006001600160a01b03808616835280851660208401525060606040830152611ad4606083018461474a565b600081518084526020808501945080840160005b838110156126d85781516001600160a01b0316875295820195908201906001016147bd565b6001600160a01b0383168152604060208201526000610ea060408301846147a9565b6060815260006148176060830186614508565b60208301949094525060400152919050565b6001600160a01b038516815260806020820152600061484b60808301866147a9565b828103604084015261485d81866147a9565b90508281036060840152614871818561474a565b979650505050505050565b60608152600061488f6060830186614508565b6020838203818501526148a282876145c4565b8481036040860152855180825282870193509082019060005b818110156140fb5761492083865163ffffffff8082511683528060208301511660208401528060408301511660408401525060608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b9383019360c092909201916001016148bb565b60006020828403121561494557600080fd5b5051919050565b6001600160a01b038416815260606020820152600061496e60608301856147a9565b82810360408401526114b0818561474a565b6001600160a01b0383168152604060208201526000610ea06040830184614508565b6001600160a01b03841681526001600160401b0383166020820152606060408201526000611ad4606083018461474a565b6000602082840312156149e557600080fd5b8151610f8481612df2565b602081526000610f846020830184614508565b6001600160a01b0383168152604060208201526000610ea06040830184614444565b600063ffffffff80831681851681830481118215151615614a5657634e487b7160e01b600052601160045260246000fd5b02949350505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212201c51e8d287e8fd15c65cc297eaa8f904e5b7c533918205b4c2d2c51eca0be1c764736f6c63430008090033", + "bytecode": "0x608060405234801561001057600080fd5b50614b3b806100206000396000f3fe6080604052600436106102c25760003560e01c806368b03db81161017f578063978df2a2116100e1578063cf58c3ea1161008a578063eb5625d911610064578063eb5625d914610882578063eccc07c6146108a2578063ed02ae71146108c257600080fd5b8063cf58c3ea1461083a578063dfb3bfc41461085a578063e1e787841461087a57600080fd5b8063b8a39cdd116100bb578063b8a39cdd146107cc578063ba2ad973146107ec578063be83aa991461081a57600080fd5b8063978df2a2146107795780639c7e98d0146107995780639d632dc6146107b957600080fd5b80637c6c6a8411610143578063894c66531161011d578063894c6653146107195780638d1433dd1461073957806394f74f3e1461075957600080fd5b80637c6c6a84146106b957806382ddffbf146106d957806387e6877c146106f957600080fd5b806368b03db8146106195780636e4333fd146106445780636efe63a514610671578063705314a01461069157806371e3ecb3146106b157600080fd5b80633e54fba81161022857806349c8532b116101ec57806354a0b16c116101c657806354a0b16c1461059957806355caeb09146105c6578063587da69a146105f957600080fd5b806349c8532b146105395780634ddd613b146105595780635140d67d1461057957600080fd5b80633e54fba81461046e578063421d02281461049e57806344f8e471146104cc57806348b14613146104f95780634959707b1461051957600080fd5b80631e4b26541161028a5780632ad145af116102645780632ad145af146103ff57806330d2a9f21461041f5780633364596e1461043f57600080fd5b80631e4b26541461038c5780631ffbb8d7146103ac57806327a84817146103cc57600080fd5b8063042a34b8146102c757806305923cee146102fd578063067fa1221461031f57806312d4da5e1461034c57806319cdce7e1461036c575b600080fd5b3480156102d357600080fd5b506102e76102e23660046123f1565b6108e2565b6040516102f491906128a8565b60405180910390f35b34801561030957600080fd5b5061031d6103183660046128f7565b6109b6565b005b34801561032b57600080fd5b5061033f61033a3660046123f1565b610a39565b6040516102f49190612942565b34801561035857600080fd5b5061031d610367366004612ce6565b610b01565b34801561037857600080fd5b5061031d6103873660046123f1565b610b6e565b34801561039857600080fd5b5061031d6103a73660046128f7565b610bdd565b3480156103b857600080fd5b5061031d6103c7366004612e2e565b610c2f565b3480156103d857600080fd5b506103ec6103e7366004612ecb565b610c77565b60405160079190910b81526020016102f4565b34801561040b57600080fd5b5061031d61041a366004612e2e565b610d0d565b34801561042b57600080fd5b5061031d61043a366004612fe4565b610d55565b34801561044b57600080fd5b5061045f61045a3660046123f1565b610d8c565b6040516102f4939291906131b3565b34801561047a57600080fd5b5061048e6104893660046131ec565b610e2f565b60405190151581526020016102f4565b3480156104aa57600080fd5b506104be6104b936600461322c565b610ecd565b6040516102f4929190613304565b3480156104d857600080fd5b506104ec6104e7366004613359565b610f6c565b6040516102f49190613385565b34801561050557600080fd5b5061031d610514366004613398565b61104f565b34801561052557600080fd5b5061048e610534366004612e2e565b61109f565b34801561054557600080fd5b5061031d6105543660046133d8565b611136565b34801561056557600080fd5b5061048e6105743660046123f1565b6111c2565b34801561058557600080fd5b5061048e610594366004612e2e565b611257565b3480156105a557600080fd5b506105b96105b4366004613434565b6112a2565b6040516102f49190613462565b3480156105d257600080fd5b506105e66105e13660046123f1565b611343565b60405160039190910b81526020016102f4565b34801561060557600080fd5b5061031d6106143660046133d8565b6113d1565b61062c610627366004612e2e565b61142b565b6040516001600160a01b0390911681526020016102f4565b34801561065057600080fd5b5061066461065f3660046123f1565b611545565b6040516102f491906134e6565b34801561067d57600080fd5b5061031d61068c36600461351a565b6115e9565b34801561069d57600080fd5b5061031d6106ac3660046135ae565b611624565b61062c61165d565b3480156106c557600080fd5b5061031d6106d43660046135fe565b611782565b3480156106e557600080fd5b5061031d6106f4366004612e2e565b6117bf565b34801561070557600080fd5b5061031d6107143660046135ae565b611807565b34801561072557600080fd5b5061031d6107343660046123f1565b611840565b34801561074557600080fd5b5061048e6107543660046123f1565b611880565b34801561076557600080fd5b5061031d610774366004612e2e565b6118c3565b34801561078557600080fd5b5061062c610794366004613434565b61190b565b3480156107a557600080fd5b5061031d6107b4366004612e2e565b6119a3565b61062c6107c7366004612e2e565b6119eb565b3480156107d857600080fd5b5061031d6107e7366004613699565b611b68565b3480156107f857600080fd5b5061080c6108073660046131ec565b611ba1565b6040519081526020016102f4565b34801561082657600080fd5b5061031d6108353660046136cf565b611c3f565b34801561084657600080fd5b5061031d6108553660046123f1565b611c7a565b34801561086657600080fd5b5061048e6108753660046123f1565b611cba565b61062c611cfd565b34801561088e57600080fd5b5061031d61089d36600461373b565b611dfe565b3480156108ae57600080fd5b5061031d6108bd366004612e2e565b611e4d565b3480156108ce57600080fd5b5061031d6108dd36600461377c565b611e95565b6108ea6122b0565b6040516285469760e31b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063042a34b89060240160006040518083038186803b15801561093c57600080fd5b505af4158015610950573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109789190810190613ea2565b90507f7f7b8516e7531232cb589acb38a8b5b904865145667f48fe2ed0623a86e4a1f0816040516109a991906128a8565b60405180910390a1919050565b6040516302c91e7760e11b81526001600160a01b03808516600483015283166024820152600782900b604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906305923cee906064015b60006040518083038186803b158015610a1c57600080fd5b505af4158015610a30573d6000803e3d6000fd5b50505050505050565b610a416122d0565b60405163033fd09160e11b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063067fa1229060240160006040518083038186803b158015610a9457600080fd5b505af4158015610aa8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ad09190810190613f20565b90507f0ec0178c2674bea6c710e3ebf8acac901f6be0d51ab96110959e01fb1b223b27816040516109a99190612942565b6040516367ac845360e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906367ac845390610b3a90859085906004016140cb565b60006040518083038186803b158015610b5257600080fd5b505af4158015610b66573d6000803e3d6000fd5b505050505050565b604051630ce6e73f60e11b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906319cdce7e906024015b60006040518083038186803b158015610bc257600080fd5b505af4158015610bd6573d6000803e3d6000fd5b5050505050565b604051630792c99560e21b81526001600160a01b03808516600483015283166024820152600782900b604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90631e4b265490606401610a04565b604051631ffbb8d760e01b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90631ffbb8d790604401610b3a565b6040516327a8481760e01b815260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__906327a8481790610cb590879087908790600401614120565b60206040518083038186803b158015610ccd57600080fd5b505af4158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d05919061414b565b949350505050565b604051632ad145af60e01b81526001600160a01b0380831660048301528316602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90632ad145af90604401610b3a565b604051630962e27b60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90630962e27b90610baa9084906004016141c9565b6040516319b22cb760e11b81526001600160a01b03821660048201526060908190819073__$64a275930a611d2694d2a05feb4a8b2aa0$__90633364596e9060240160006040518083038186803b158015610de657600080fd5b505af4158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e2291908101906142a0565b9196909550909350915050565b6040516307ca9f7560e31b81526001600160a01b03808516600483015280841660248301528216604482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90633e54fba89060640160206040518083038186803b158015610e9557600080fd5b505af4158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d05919061431e565b6000606073__$64a275930a611d2694d2a05feb4a8b2aa0$__63421d02288686866040518463ffffffff1660e01b8152600401610f0c9392919061433b565b60006040518083038186803b158015610f2457600080fd5b505af4158015610f38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f6091908101906143b8565b90969095509350505050565b610fb26040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b6040516344f8e47160e01b81526001600160a01b03841660048201526024810183905273__$64a275930a611d2694d2a05feb4a8b2aa0$__906344f8e4719060440160006040518083038186803b15801561100c57600080fd5b505af4158015611020573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110489190810190614469565b9392505050565b6040516348b1461360e01b81526001600160a01b03808516600483015283166024820152811515604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906348b1461390606401610a04565b604051634959707b60e01b81526001600160a01b0380841660048301528216602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90634959707b906044015b60206040518083038186803b1580156110fe57600080fd5b505af4158015611112573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611048919061431e565b6040516349c8532b60e01b81526001600160a01b038086166004830152808516602483015283166044820152600782900b606482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906349c8532b906084015b60006040518083038186803b1580156111a457600080fd5b505af41580156111b8573d6000803e3d6000fd5b5050505050505050565b604051634ddd613b60e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90634ddd613b906024015b60206040518083038186803b15801561121957600080fd5b505af415801561122d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611251919061431e565b92915050565b604051635140d67d60e01b81526001600160a01b0380841660048301528216602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90635140d67d906044016110e6565b6112aa61232b565b6040516315282c5b60e21b81526001600160a01b0384166004820152600783900b602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906354a0b16c9060440160006040518083038186803b15801561130757600080fd5b505af415801561131b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611048919081019061449e565b6040516355caeb0960e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__906355caeb099060240160206040518083038186803b15801561139957600080fd5b505af41580156113ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190614573565b604051632c3ed34d60e11b81526001600160a01b038086166004830152808516602483015283166044820152600782900b606482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063587da69a9060840161118c565b6000611435612366565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b81830152908301523090820152600061149060018587611ece565b905060006114a760046005600a601e60018b612056565b6040516341e3eeab60e01b815290915073__$64a275930a611d2694d2a05feb4a8b2aa0$__906341e3eeab906114eb90869060c89060089088908890600401614609565b60206040518083038186803b15801561150357600080fd5b505af4158015611517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153b91906146dc565b9695505050505050565b60408051606081018252600080825260208201819052818301529051636e4333fd60e01b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90636e4333fd9060240160606040518083038186803b1580156115b157600080fd5b505af41580156115c5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125191906146f9565b604051636efe63a560e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90636efe63a590610a0490869086908690600401614715565b60405163038298a560e51b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063705314a090610b3a908590859060040161477a565b6000611667612366565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b81830152908301523082820152516302004ccd60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906302004ccd906116ef90849060c89060089060040161479c565b60206040518083038186803b15801561170757600080fd5b505af415801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f91906146dc565b6040516001600160a01b03821681529092507f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9060200160405180910390a15090565b604051631f1b1aa160e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90637c6c6a849061118c9087908790879087906004016147cb565b6040516382ddffbf60e01b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906382ddffbf90604401610b3a565b6040516321f9a1df60e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906387e6877c90610b3a908590859060040161477a565b60405163894c665360e01b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063894c665390602401610baa565b604051638d1433dd60e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90638d1433dd90602401611201565b604051634a7ba79f60e11b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906394f74f3e90604401610b3a565b604051634bc6f95160e11b81526001600160a01b0383166004820152600782900b602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063978df2a29060440160206040518083038186803b15801561196b57600080fd5b505af415801561197f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104891906146dc565b6040516309c7e98d60e41b81526001600160a01b0380831660048301528316602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90639c7e98d090604401610b3a565b60006119f5612366565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b8183015283820152815180830183526004808252636d656d6f60e01b9282019290925260608401523091830191909152600090611a77906005600a878961211e565b905073__$64a275930a611d2694d2a05feb4a8b2aa0$__63ccc261fe836000604051908082528060200260200182016040528015611aef57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181611ab45790505b50846040518463ffffffff1660e01b8152600401611b0f9392919061481e565b60206040518083038186803b158015611b2757600080fd5b505af4158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f91906146dc565b95945050505050565b6040516310e9065560e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906310e9065590610b3a90859085906004016148d2565b60405163ba2ad97360e01b81526001600160a01b03808516600483015280841660248301528216604482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063ba2ad9739060640160206040518083038186803b158015611c0757600080fd5b505af4158015611c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190614915565b60405163be83aa9960e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063be83aa9990610a049086908690869060040161492e565b6040516367ac61f560e11b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063cf58c3ea90602401610baa565b6040516337eceff160e21b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063dfb3bfc490602401611201565b6000611d07612366565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b8183015283820152815180830183526004808252636d656d6f60e01b9282019290925260608401523083830152905163910f271160e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9163910f271191611da891859101614962565b60206040518083038186803b158015611dc057600080fd5b505af4158015611dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df891906146dc565b91505090565b60405163eb5625d960e01b81526001600160a01b038085166004830152831660248201526044810182905273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063eb5625d990606401610a04565b60405163766603e360e11b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063eccc07c690604401610b3a565b604051634e03000f60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90634e03000f90610b3a9085908590600401614975565b60408051600380825260808201909252606091816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181611ee65750506040805160a081018252600091810182905260608101829052600387900b81526001600160a01b03868116602083015285166080820152919250611fa0611f68876002614a60565b856040805160a081018252600060208201819052606082015260039390930b83526001908301526001600160a01b0316608082015290565b90506000611fed611fb2886004614a60565b866040805160a0810182526000602082018190529181019190915260039290920b8252600160608301526001600160a01b0316608082015290565b9050828460008151811061200357612003614aef565b6020026020010181905250818460018151811061202257612022614aef565b6020026020010181905250808460028151811061204157612041614aef565b60200260200101819052505050509392505050565b604080516001808252818301909252606091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a0820152825260001990920191018161206d5750506040805160c08101825260038a810b825289810b602083015288810b928201929092529086900b606082015284151560808201526001600160a01b03841660a0820152909150808260008151811061210857612108614aef565b6020026020010181905250509695505050505050565b60408051600380825260808201909252606091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816121365750506040805160c08101825260009181018290526060810182905260808101829052600389810b825288900b60208201526001600160a01b03851660a0820152919250906040805160c08101825260038a810b825289810b602083015288900b91810191909152600060608201819052600160808301526001600160a01b03861660a08301529192506040805160c08101825260038b810b82528a810b602083015289900b918101919091526001600160a01b03808816606083015260006080830181905290871660a08301529192509050828460008151811061225b5761225b614aef565b6020026020010181905250818460018151811061227a5761227a614aef565b6020026020010181905250808460028151811061229957612299614aef565b602002602001018190525050505095945050505050565b60405180604001604052806122c36122d0565b8152600060209091015290565b6040518061012001604052806122e4612366565b8152602001600060070b8152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6040518060c0016040528061233e6122d0565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60408051610120810182526060808252602080830182905260008385018190528284018390526080840181905260a0840181905260c0840181905260e0840183905284519283018552808352908201819052928101929092529061010082015290565b6001600160a01b03811681146123de57600080fd5b50565b80356123ec816123c9565b919050565b60006020828403121561240357600080fd5b8135611048816123c9565b60005b83811015612429578181015183820152602001612411565b83811115612438576000848401525b50505050565b6000815180845261245681602086016020860161240e565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a060408601526124a260a086018361243e565b9150606084015185830360608701526124bb838261243e565b925050806080850151166080860152508091505092915050565b600082825180855260208086019550808260051b84010181860160005b8481101561253457858303601f1901895281518051845284015160408585018190526125208186018361246a565b9a86019a94505050908301906001016124f2565b5090979650505050505050565b600061016082518185526125578286018261243e565b91505060208301518482036020860152612571828261243e565b915050604083015161258e60408601826001600160a01b03169052565b50606083015184820360608601526125a6828261243e565b91505060808301516125bc608086018215159052565b5060a08301516125d160a086018260070b9052565b5060c08301516125e560c086018215159052565b5060e083015184820360e08601526125fd82826124d5565b9150506101008084015161263982870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b600081518084526020808501945080840160005b838110156126be576126ab878351805160070b825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a0969096019590820190600101612657565b509495945050505050565b600081518084526020808501945080840160005b838110156126be5761273c878351805160070b8252602081015160070b6020830152604081015160070b6040830152606081015160070b60608301526080810151151560808301526001600160a01b0360a08201511660a08301525050565b60c09690960195908201906001016126dd565b600081518084526020808501945080840160005b838110156126be576127c5878351805160070b8252602081015160070b6020830152604081015160070b604083015260608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b60c0969096019590820190600101612763565b600061012082518185526127ee82860182612541565b9150506020830151612805602086018260070b9052565b506040830151612819604086018215159052565b50606083015161282d606086018215159052565b506080830151612841608086018215159052565b5060a083015184820360a08601526128598282612643565b91505060c083015184820360c086015261287382826126c9565b91505060e083015184820360e086015261288d828261274f565b915050610100808401518583038287015261153b838261243e565b6020815260008251604060208401526128c460608401826127d8565b9050602084015160030b60408401528091505092915050565b8060070b81146123de57600080fd5b80356123ec816128dd565b60008060006060848603121561290c57600080fd5b8335612917816123c9565b92506020840135612927816123c9565b91506040840135612937816128dd565b809150509250925092565b60208152600061104860208301846127d8565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561298e5761298e612955565b60405290565b60405160a0810167ffffffffffffffff8111828210171561298e5761298e612955565b6040516060810167ffffffffffffffff8111828210171561298e5761298e612955565b604051610120810167ffffffffffffffff8111828210171561298e5761298e612955565b6040516080810167ffffffffffffffff8111828210171561298e5761298e612955565b60405160c0810167ffffffffffffffff8111828210171561298e5761298e612955565b604051601f8201601f1916810167ffffffffffffffff81118282101715612a6d57612a6d612955565b604052919050565b600067ffffffffffffffff821115612a8f57612a8f612955565b50601f01601f191660200190565b600082601f830112612aae57600080fd5b8135612ac1612abc82612a75565b612a44565b818152846020838601011115612ad657600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146123de57600080fd5b80356123ec81612af3565b600067ffffffffffffffff821115612b2657612b26612955565b5060051b60200190565b600082601f830112612b4157600080fd5b81356020612b51612abc83612b0c565b82815260059290921b84018101918181019086841115612b7057600080fd5b8286015b84811015612c8657803567ffffffffffffffff80821115612b9457600080fd5b908801906040601f19838c038101821315612bae57600080fd5b612bb661296b565b8885013581528285013584811115612bcd57600080fd5b949094019360a0858e0383011215612be55760008081fd5b612bed612994565b915088850135612bfc81612af3565b825284830135612c0b816123c9565b828a015260608581013585811115612c235760008081fd5b612c318f8c838a0101612a9d565b8585015250608093508386013585811115612c4c5760008081fd5b612c5a8f8c838a0101612a9d565b828501525050612c6c60a086016123e1565b928201929092528188015285525050918301918301612b74565b509695505050505050565b600060608284031215612ca357600080fd5b612cab6129b7565b90508135612cb8816128dd565b81526020820135612cc8816123c9565b60208201526040820135612cdb816128dd565b604082015292915050565b60008060408385031215612cf957600080fd5b8235612d04816123c9565b9150602083013567ffffffffffffffff80821115612d2157600080fd5b908401906101608287031215612d3657600080fd5b612d3e6129da565b823582811115612d4d57600080fd5b612d5988828601612a9d565b825250602083013582811115612d6e57600080fd5b612d7a88828601612a9d565b602083015250612d8c604084016123e1565b6040820152606083013582811115612da357600080fd5b612daf88828601612a9d565b606083015250612dc160808401612b01565b6080820152612dd260a084016128ec565b60a0820152612de360c08401612b01565b60c082015260e083013582811115612dfa57600080fd5b612e0688828601612b30565b60e0830152506101009150612e1d87838501612c91565b828201528093505050509250929050565b60008060408385031215612e4157600080fd5b8235612e4c816123c9565b91506020830135612e5c816123c9565b809150509250929050565b600082601f830112612e7857600080fd5b81356020612e88612abc83612b0c565b82815260059290921b84018101918181019086841115612ea757600080fd5b8286015b84811015612c86578035612ebe816128dd565b8352918301918301612eab565b600080600060608486031215612ee057600080fd5b8335612eeb816123c9565b92506020840135612efb816128dd565b9150604084013567ffffffffffffffff811115612f1757600080fd5b612f2386828701612e67565b9150509250925092565b600082601f830112612f3e57600080fd5b81356020612f4e612abc83612b0c565b82815260079290921b84018101918181019086841115612f6d57600080fd5b8286015b84811015612c865760808189031215612f8a5760008081fd5b612f926129fe565b8135612f9d816123c9565b815281850135612fac816123c9565b81860152604082810135612fbf816128dd565b90820152606082810135612fd281612af3565b90820152835291830191608001612f71565b600060208284031215612ff657600080fd5b67ffffffffffffffff808335111561300d57600080fd5b8235830184601f82011261302057600080fd5b61302d612abc8235612b0c565b81358082526020808301929160051b84010187101561304b57600080fd5b602083015b6020843560051b850101811015612c8657848135111561306f57600080fd5b803584016060818a03601f1901121561308757600080fd5b61308f6129b7565b61309c60208301356123c9565b6020820135815286604083013511156130b457600080fd5b604082013582018a603f8201126130ca57600080fd5b6130da612abc6020830135612b0c565b602082810135808352908201919060600283016040018d8111156130fd57600080fd5b6040840193505b80841015613173576060848f03121561311c57600080fd5b6131246129b7565b61312e85356123c9565b8435815261313f60208601356128dd565b602085013560208201526131566040860135612af3565b604085810135908201528352606090930192602090920191613104565b5060208401525050606082013587101561318c57600080fd5b61319f8a60206060850135850101612f2d565b604082015284525060209283019201613050565b6060815260006131c66060830186612643565b82810360208401526131d881866126c9565b9050828103604084015261153b818561274f565b60008060006060848603121561320157600080fd5b833561320c816123c9565b9250602084013561321c816123c9565b91506040840135612937816123c9565b60008060006060848603121561324157600080fd5b833561324c816123c9565b925060208481013561325d816128dd565b9250604085013567ffffffffffffffff8082111561327a57600080fd5b818701915087601f83011261328e57600080fd5b813561329c612abc82612b0c565b81815260059190911b8301840190848101908a8311156132bb57600080fd5b8585015b838110156132f3578035858111156132d75760008081fd5b6132e58d89838a0101612a9d565b8452509186019186016132bf565b508096505050505050509250925092565b600060408201600785810b84526020604081860152828651808552606087019150828801945060005b8181101561334b578551850b8352948301949183019160010161332d565b509098975050505050505050565b6000806040838503121561336c57600080fd5b8235613377816123c9565b946020939093013593505050565b602081526000611048602083018461246a565b6000806000606084860312156133ad57600080fd5b83356133b8816123c9565b925060208401356133c8816123c9565b9150604084013561293781612af3565b600080600080608085870312156133ee57600080fd5b84356133f9816123c9565b93506020850135613409816123c9565b92506040850135613419816123c9565b91506060850135613429816128dd565b939692955090935050565b6000806040838503121561344757600080fd5b8235613452816123c9565b91506020830135612e5c816128dd565b602081526000825160c0602084015261347e60e08401826127d8565b9050602084015160070b604084015260408401516001600160a01b038082166060860152606086015160070b608086015260808601519150601f198584030160a08601526134cc838361243e565b92508060a08701511660c086015250508091505092915050565b606081016112518284805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b60008060006060848603121561352f57600080fd5b833561353a816123c9565b92506020840135612efb816123c9565b600082601f83011261355b57600080fd5b8135602061356b612abc83612b0c565b82815260059290921b8401810191818101908684111561358a57600080fd5b8286015b84811015612c865780356135a1816123c9565b835291830191830161358e565b600080604083850312156135c157600080fd5b82356135cc816123c9565b9150602083013567ffffffffffffffff8111156135e857600080fd5b6135f48582860161354a565b9150509250929050565b6000806000806080858703121561361457600080fd5b843561361f816123c9565b9350602085013567ffffffffffffffff8082111561363c57600080fd5b6136488883890161354a565b9450604087013591508082111561365e57600080fd5b61366a8883890161354a565b9350606087013591508082111561368057600080fd5b5061368d87828801612e67565b91505092959194509250565b600080608083850312156136ac57600080fd5b82356136b7816123c9565b91506136c68460208501612c91565b90509250929050565b6000806000606084860312156136e457600080fd5b83356136ef816123c9565b9250602084013567ffffffffffffffff8082111561370c57600080fd5b6137188783880161354a565b9350604086013591508082111561372e57600080fd5b50612f2386828701612e67565b60008060006060848603121561375057600080fd5b833561375b816123c9565b9250602084013561376b816123c9565b929592945050506040919091013590565b6000806040838503121561378f57600080fd5b823561379a816123c9565b9150602083013567ffffffffffffffff8111156137b657600080fd5b6135f485828601612b30565b600082601f8301126137d357600080fd5b81516137e1612abc82612a75565b8181528460208386010111156137f657600080fd5b610d0582602083016020870161240e565b80516123ec816123c9565b80516123ec81612af3565b80516123ec816128dd565b600060a0828403121561383a57600080fd5b613842612994565b9050815161384f81612af3565b8152602082015161385f816123c9565b6020820152604082015167ffffffffffffffff8082111561387f57600080fd5b61388b858386016137c2565b604084015260608401519150808211156138a457600080fd5b506138b1848285016137c2565b60608301525060808201516138c5816123c9565b608082015292915050565b600082601f8301126138e157600080fd5b815160206138f1612abc83612b0c565b82815260059290921b8401810191818101908684111561391057600080fd5b8286015b84811015612c8657805167ffffffffffffffff808211156139355760008081fd5b908801906040828b03601f190181131561394f5760008081fd5b61395761296b565b8388015181529083015190828211156139705760008081fd5b61397e8c8984870101613828565b818901528652505050918301918301613914565b6000606082840312156139a457600080fd5b6139ac6129b7565b905081516139b9816128dd565b815260208201516139c9816123c9565b60208201526040820151612cdb816128dd565b600061016082840312156139ef57600080fd5b6139f76129da565b9050815167ffffffffffffffff80821115613a1157600080fd5b613a1d858386016137c2565b83526020840151915080821115613a3357600080fd5b613a3f858386016137c2565b6020840152613a5060408501613807565b60408401526060840151915080821115613a6957600080fd5b613a75858386016137c2565b6060840152613a8660808501613812565b6080840152613a9760a0850161381d565b60a0840152613aa860c08501613812565b60c084015260e0840151915080821115613ac157600080fd5b50613ace848285016138d0565b60e083015250610100613ae384828501613992565b9082015292915050565b600082601f830112613afe57600080fd5b81516020613b0e612abc83612b0c565b82815260a09283028501820192828201919087851115613b2d57600080fd5b8387015b858110156125345781818a031215613b495760008081fd5b613b51612994565b8151613b5c816128dd565b815281860151613b6b816123c9565b81870152604082810151613b7e81612af3565b90820152606082810151613b9181612af3565b90820152608082810151613ba4816123c9565b908201528452928401928101613b31565b600082601f830112613bc657600080fd5b81516020613bd6612abc83612b0c565b82815260c09283028501820192828201919087851115613bf557600080fd5b8387015b858110156125345781818a031215613c115760008081fd5b613c19612a21565b8151613c24816128dd565b815281860151613c33816128dd565b81870152604082810151613c46816128dd565b90820152606082810151613c59816128dd565b90820152608082810151613c6c81612af3565b9082015260a082810151613c7f816123c9565b908201528452928401928101613bf9565b600082601f830112613ca157600080fd5b81516020613cb1612abc83612b0c565b82815260c09283028501820192828201919087851115613cd057600080fd5b8387015b858110156125345781818a031215613cec5760008081fd5b613cf4612a21565b8151613cff816128dd565b815281860151613d0e816128dd565b81870152604082810151613d21816128dd565b90820152606082810151613d34816123c9565b90820152608082810151613d4781612af3565b9082015260a082810151613d5a816123c9565b908201528452928401928101613cd4565b60006101208284031215613d7e57600080fd5b613d866129da565b9050815167ffffffffffffffff80821115613da057600080fd5b613dac858386016139dc565b8352613dba6020850161381d565b6020840152613dcb60408501613812565b6040840152613ddc60608501613812565b6060840152613ded60808501613812565b608084015260a0840151915080821115613e0657600080fd5b613e1285838601613aed565b60a084015260c0840151915080821115613e2b57600080fd5b613e3785838601613bb5565b60c084015260e0840151915080821115613e5057600080fd5b613e5c85838601613c90565b60e084015261010091508184015181811115613e7757600080fd5b613e83868287016137c2565b8385015250505092915050565b8051600381900b81146123ec57600080fd5b600060208284031215613eb457600080fd5b815167ffffffffffffffff80821115613ecc57600080fd5b9083019060408286031215613ee057600080fd5b613ee861296b565b825182811115613ef757600080fd5b613f0387828601613d6b565b825250613f1260208401613e90565b602082015295945050505050565b600060208284031215613f3257600080fd5b815167ffffffffffffffff811115613f4957600080fd5b610d0584828501613d6b565b600082825180855260208086019550808260051b84010181860160005b8481101561253457601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a0152613fd160e08a018661243e565b92860151898403603f1901858b0152929450613fed858461243e565b9501511660c09790970196909652505098840198925090830190600101613f72565b600061016082518185526140258286018261243e565b9150506020830151848203602086015261403f828261243e565b915050604083015161405c60408601826001600160a01b03169052565b5060608301518482036060860152614074828261243e565b915050608083015161408a608086018215159052565b5060a083015161409f60a086018260070b9052565b5060c08301516140b360c086018215159052565b5060e083015184820360e08601526125fd8282613f55565b6001600160a01b0383168152604060208201526000610d05604083018461400f565b600081518084526020808501945080840160005b838110156126be57815160070b87529582019590820190600101614101565b6001600160a01b03841681528260070b6020820152606060408201526000611b5f60608301846140ed565b60006020828403121561415d57600080fd5b8151611048816128dd565b600081518084526020808501945080840160005b838110156126be57815180516001600160a01b03908116895284820151168489015260408082015160070b908901526060908101511515908801526080909601959082019060010161417c565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561334b57603f19898403018552815160608085016001600160a01b038084511687528a840151838c89015282815180855260808a0191508d83019450600092505b8083101561426d5784518051851683528e81015160070b8f8401528d015115158d830152938d01936001929092019190850190614235565b50948b0151888603898d0152946142848187614168565b9a8d019a98505050948a019450505060019190910190506141f0565b6000806000606084860312156142b557600080fd5b835167ffffffffffffffff808211156142cd57600080fd5b6142d987838801613aed565b945060208601519150808211156142ef57600080fd5b6142fb87838801613bb5565b9350604086015191508082111561431157600080fd5b50612f2386828701613c90565b60006020828403121561433057600080fd5b815161104881612af3565b6000606082016001600160a01b038616835260208560070b818501526060604085015281855180845260808601915060808160051b870101935082870160005b828110156143a957607f1988870301845261439786835161243e565b9550928401929084019060010161437b565b50939998505050505050505050565b600080604083850312156143cb57600080fd5b82516143d6816128dd565b8092505060208084015167ffffffffffffffff8111156143f557600080fd5b8401601f8101861361440657600080fd5b8051614414612abc82612b0c565b81815260059190911b8201830190838101908883111561443357600080fd5b928401925b8284101561445a57835161444b816128dd565b82529284019290840190614438565b80955050505050509250929050565b60006020828403121561447b57600080fd5b815167ffffffffffffffff81111561449257600080fd5b610d0584828501613828565b6000602082840312156144b057600080fd5b815167ffffffffffffffff808211156144c857600080fd5b9083019060c082860312156144dc57600080fd5b6144e4612a21565b8251828111156144f357600080fd5b6144ff87828601613d6b565b82525061450e6020840161381d565b602082015261451f60408401613807565b60408201526145306060840161381d565b606082015260808301518281111561454757600080fd5b614553878286016137c2565b60808301525061456560a08401613807565b60a082015295945050505050565b60006020828403121561458557600080fd5b61104882613e90565b600081518084526020808501945080840160005b838110156126be576145f6878351805160070b825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a09690960195908201906001016145a2565b60a08152600061461c60a083018861400f565b60208760070b818501528660030b60408501528382036060850152614641828761458e565b8481036080860152855180825282870193509082019060005b818110156146cc576146b9838651805160070b8252602081015160070b6020830152604081015160070b6040830152606081015160070b60608301526080810151151560808301526001600160a01b0360a08201511660a08301525050565b9383019360c0929092019160010161465a565b50909a9950505050505050505050565b6000602082840312156146ee57600080fd5b8151611048816123c9565b60006060828403121561470b57600080fd5b6110488383613992565b60006001600160a01b03808616835280851660208401525060606040830152611b5f60608301846140ed565b600081518084526020808501945080840160005b838110156126be5781516001600160a01b031687529582019590820190600101614755565b6001600160a01b0383168152604060208201526000610d056040830184614741565b6060815260006147af606083018661400f565b90508360070b60208301528260030b6040830152949350505050565b6001600160a01b03851681526080602082015260006147ed6080830186614741565b82810360408401526147ff8186614741565b9050828103606084015261481381856140ed565b979650505050505050565b606081526000614831606083018661400f565b602083820381850152614844828761458e565b8481036040860152855180825282870193509082019060005b8181101561334b576148bf838651805160070b8252602081015160070b6020830152604081015160070b604083015260608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b9383019360c0929092019160010161485d565b6001600160a01b0383168152608081016110486020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b60006020828403121561492757600080fd5b5051919050565b6001600160a01b03841681526060602082015260006149506060830185614741565b828103604084015261153b81856140ed565b602081526000611048602083018461400f565b600060408083016001600160a01b03808716855260208381870152828751808552606094508488019150848160051b890101838a0160005b83811015614a39578a8303605f190185528151805184528601518684018a9052805115158a850152808701518816898501528981015160a060808087018290526149fa60e088018461243e565b92508b840151603f198885030183890152614a15848261243e565b91909401518b1660c0979097019690965250505093850193908501906001016149ad565b50909b9a5050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008160030b8360030b637fffffff600082136000841383830485118282161615614a8d57614a8d614a4a565b637fffffff196000851282811687830587121615614aad57614aad614a4a565b60008712925085820587128484161615614ac957614ac9614a4a565b85850587128184161615614adf57614adf614a4a565b5050509290910295945050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122090b1aa990bcb4b8f3c954bdb968083f3678271f6ad598b3a14c2b0ee3cab0ba764736f6c63430008090033", + "deployedBytecode": "0x6080604052600436106102c25760003560e01c806368b03db81161017f578063978df2a2116100e1578063cf58c3ea1161008a578063eb5625d911610064578063eb5625d914610882578063eccc07c6146108a2578063ed02ae71146108c257600080fd5b8063cf58c3ea1461083a578063dfb3bfc41461085a578063e1e787841461087a57600080fd5b8063b8a39cdd116100bb578063b8a39cdd146107cc578063ba2ad973146107ec578063be83aa991461081a57600080fd5b8063978df2a2146107795780639c7e98d0146107995780639d632dc6146107b957600080fd5b80637c6c6a8411610143578063894c66531161011d578063894c6653146107195780638d1433dd1461073957806394f74f3e1461075957600080fd5b80637c6c6a84146106b957806382ddffbf146106d957806387e6877c146106f957600080fd5b806368b03db8146106195780636e4333fd146106445780636efe63a514610671578063705314a01461069157806371e3ecb3146106b157600080fd5b80633e54fba81161022857806349c8532b116101ec57806354a0b16c116101c657806354a0b16c1461059957806355caeb09146105c6578063587da69a146105f957600080fd5b806349c8532b146105395780634ddd613b146105595780635140d67d1461057957600080fd5b80633e54fba81461046e578063421d02281461049e57806344f8e471146104cc57806348b14613146104f95780634959707b1461051957600080fd5b80631e4b26541161028a5780632ad145af116102645780632ad145af146103ff57806330d2a9f21461041f5780633364596e1461043f57600080fd5b80631e4b26541461038c5780631ffbb8d7146103ac57806327a84817146103cc57600080fd5b8063042a34b8146102c757806305923cee146102fd578063067fa1221461031f57806312d4da5e1461034c57806319cdce7e1461036c575b600080fd5b3480156102d357600080fd5b506102e76102e23660046123f1565b6108e2565b6040516102f491906128a8565b60405180910390f35b34801561030957600080fd5b5061031d6103183660046128f7565b6109b6565b005b34801561032b57600080fd5b5061033f61033a3660046123f1565b610a39565b6040516102f49190612942565b34801561035857600080fd5b5061031d610367366004612ce6565b610b01565b34801561037857600080fd5b5061031d6103873660046123f1565b610b6e565b34801561039857600080fd5b5061031d6103a73660046128f7565b610bdd565b3480156103b857600080fd5b5061031d6103c7366004612e2e565b610c2f565b3480156103d857600080fd5b506103ec6103e7366004612ecb565b610c77565b60405160079190910b81526020016102f4565b34801561040b57600080fd5b5061031d61041a366004612e2e565b610d0d565b34801561042b57600080fd5b5061031d61043a366004612fe4565b610d55565b34801561044b57600080fd5b5061045f61045a3660046123f1565b610d8c565b6040516102f4939291906131b3565b34801561047a57600080fd5b5061048e6104893660046131ec565b610e2f565b60405190151581526020016102f4565b3480156104aa57600080fd5b506104be6104b936600461322c565b610ecd565b6040516102f4929190613304565b3480156104d857600080fd5b506104ec6104e7366004613359565b610f6c565b6040516102f49190613385565b34801561050557600080fd5b5061031d610514366004613398565b61104f565b34801561052557600080fd5b5061048e610534366004612e2e565b61109f565b34801561054557600080fd5b5061031d6105543660046133d8565b611136565b34801561056557600080fd5b5061048e6105743660046123f1565b6111c2565b34801561058557600080fd5b5061048e610594366004612e2e565b611257565b3480156105a557600080fd5b506105b96105b4366004613434565b6112a2565b6040516102f49190613462565b3480156105d257600080fd5b506105e66105e13660046123f1565b611343565b60405160039190910b81526020016102f4565b34801561060557600080fd5b5061031d6106143660046133d8565b6113d1565b61062c610627366004612e2e565b61142b565b6040516001600160a01b0390911681526020016102f4565b34801561065057600080fd5b5061066461065f3660046123f1565b611545565b6040516102f491906134e6565b34801561067d57600080fd5b5061031d61068c36600461351a565b6115e9565b34801561069d57600080fd5b5061031d6106ac3660046135ae565b611624565b61062c61165d565b3480156106c557600080fd5b5061031d6106d43660046135fe565b611782565b3480156106e557600080fd5b5061031d6106f4366004612e2e565b6117bf565b34801561070557600080fd5b5061031d6107143660046135ae565b611807565b34801561072557600080fd5b5061031d6107343660046123f1565b611840565b34801561074557600080fd5b5061048e6107543660046123f1565b611880565b34801561076557600080fd5b5061031d610774366004612e2e565b6118c3565b34801561078557600080fd5b5061062c610794366004613434565b61190b565b3480156107a557600080fd5b5061031d6107b4366004612e2e565b6119a3565b61062c6107c7366004612e2e565b6119eb565b3480156107d857600080fd5b5061031d6107e7366004613699565b611b68565b3480156107f857600080fd5b5061080c6108073660046131ec565b611ba1565b6040519081526020016102f4565b34801561082657600080fd5b5061031d6108353660046136cf565b611c3f565b34801561084657600080fd5b5061031d6108553660046123f1565b611c7a565b34801561086657600080fd5b5061048e6108753660046123f1565b611cba565b61062c611cfd565b34801561088e57600080fd5b5061031d61089d36600461373b565b611dfe565b3480156108ae57600080fd5b5061031d6108bd366004612e2e565b611e4d565b3480156108ce57600080fd5b5061031d6108dd36600461377c565b611e95565b6108ea6122b0565b6040516285469760e31b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063042a34b89060240160006040518083038186803b15801561093c57600080fd5b505af4158015610950573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109789190810190613ea2565b90507f7f7b8516e7531232cb589acb38a8b5b904865145667f48fe2ed0623a86e4a1f0816040516109a991906128a8565b60405180910390a1919050565b6040516302c91e7760e11b81526001600160a01b03808516600483015283166024820152600782900b604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906305923cee906064015b60006040518083038186803b158015610a1c57600080fd5b505af4158015610a30573d6000803e3d6000fd5b50505050505050565b610a416122d0565b60405163033fd09160e11b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063067fa1229060240160006040518083038186803b158015610a9457600080fd5b505af4158015610aa8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ad09190810190613f20565b90507f0ec0178c2674bea6c710e3ebf8acac901f6be0d51ab96110959e01fb1b223b27816040516109a99190612942565b6040516367ac845360e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906367ac845390610b3a90859085906004016140cb565b60006040518083038186803b158015610b5257600080fd5b505af4158015610b66573d6000803e3d6000fd5b505050505050565b604051630ce6e73f60e11b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906319cdce7e906024015b60006040518083038186803b158015610bc257600080fd5b505af4158015610bd6573d6000803e3d6000fd5b5050505050565b604051630792c99560e21b81526001600160a01b03808516600483015283166024820152600782900b604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90631e4b265490606401610a04565b604051631ffbb8d760e01b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90631ffbb8d790604401610b3a565b6040516327a8481760e01b815260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__906327a8481790610cb590879087908790600401614120565b60206040518083038186803b158015610ccd57600080fd5b505af4158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d05919061414b565b949350505050565b604051632ad145af60e01b81526001600160a01b0380831660048301528316602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90632ad145af90604401610b3a565b604051630962e27b60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90630962e27b90610baa9084906004016141c9565b6040516319b22cb760e11b81526001600160a01b03821660048201526060908190819073__$64a275930a611d2694d2a05feb4a8b2aa0$__90633364596e9060240160006040518083038186803b158015610de657600080fd5b505af4158015610dfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e2291908101906142a0565b9196909550909350915050565b6040516307ca9f7560e31b81526001600160a01b03808516600483015280841660248301528216604482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90633e54fba89060640160206040518083038186803b158015610e9557600080fd5b505af4158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d05919061431e565b6000606073__$64a275930a611d2694d2a05feb4a8b2aa0$__63421d02288686866040518463ffffffff1660e01b8152600401610f0c9392919061433b565b60006040518083038186803b158015610f2457600080fd5b505af4158015610f38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f6091908101906143b8565b90969095509350505050565b610fb26040518060a0016040528060001515815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b031681525090565b6040516344f8e47160e01b81526001600160a01b03841660048201526024810183905273__$64a275930a611d2694d2a05feb4a8b2aa0$__906344f8e4719060440160006040518083038186803b15801561100c57600080fd5b505af4158015611020573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110489190810190614469565b9392505050565b6040516348b1461360e01b81526001600160a01b03808516600483015283166024820152811515604482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906348b1461390606401610a04565b604051634959707b60e01b81526001600160a01b0380841660048301528216602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90634959707b906044015b60206040518083038186803b1580156110fe57600080fd5b505af4158015611112573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611048919061431e565b6040516349c8532b60e01b81526001600160a01b038086166004830152808516602483015283166044820152600782900b606482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906349c8532b906084015b60006040518083038186803b1580156111a457600080fd5b505af41580156111b8573d6000803e3d6000fd5b5050505050505050565b604051634ddd613b60e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90634ddd613b906024015b60206040518083038186803b15801561121957600080fd5b505af415801561122d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611251919061431e565b92915050565b604051635140d67d60e01b81526001600160a01b0380841660048301528216602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90635140d67d906044016110e6565b6112aa61232b565b6040516315282c5b60e21b81526001600160a01b0384166004820152600783900b602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906354a0b16c9060440160006040518083038186803b15801561130757600080fd5b505af415801561131b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611048919081019061449e565b6040516355caeb0960e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__906355caeb099060240160206040518083038186803b15801561139957600080fd5b505af41580156113ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190614573565b604051632c3ed34d60e11b81526001600160a01b038086166004830152808516602483015283166044820152600782900b606482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063587da69a9060840161118c565b6000611435612366565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b81830152908301523090820152600061149060018587611ece565b905060006114a760046005600a601e60018b612056565b6040516341e3eeab60e01b815290915073__$64a275930a611d2694d2a05feb4a8b2aa0$__906341e3eeab906114eb90869060c89060089088908890600401614609565b60206040518083038186803b15801561150357600080fd5b505af4158015611517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153b91906146dc565b9695505050505050565b60408051606081018252600080825260208201819052818301529051636e4333fd60e01b81526001600160a01b038316600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90636e4333fd9060240160606040518083038186803b1580156115b157600080fd5b505af41580156115c5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125191906146f9565b604051636efe63a560e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90636efe63a590610a0490869086908690600401614715565b60405163038298a560e51b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063705314a090610b3a908590859060040161477a565b6000611667612366565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b81830152908301523082820152516302004ccd60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906302004ccd906116ef90849060c89060089060040161479c565b60206040518083038186803b15801561170757600080fd5b505af415801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f91906146dc565b6040516001600160a01b03821681529092507f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9060200160405180910390a15090565b604051631f1b1aa160e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90637c6c6a849061118c9087908790879087906004016147cb565b6040516382ddffbf60e01b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906382ddffbf90604401610b3a565b6040516321f9a1df60e21b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906387e6877c90610b3a908590859060040161477a565b60405163894c665360e01b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063894c665390602401610baa565b604051638d1433dd60e01b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__90638d1433dd90602401611201565b604051634a7ba79f60e11b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__906394f74f3e90604401610b3a565b604051634bc6f95160e11b81526001600160a01b0383166004820152600782900b602482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063978df2a29060440160206040518083038186803b15801561196b57600080fd5b505af415801561197f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104891906146dc565b6040516309c7e98d60e41b81526001600160a01b0380831660048301528316602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__90639c7e98d090604401610b3a565b60006119f5612366565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b8183015283820152815180830183526004808252636d656d6f60e01b9282019290925260608401523091830191909152600090611a77906005600a878961211e565b905073__$64a275930a611d2694d2a05feb4a8b2aa0$__63ccc261fe836000604051908082528060200260200182016040528015611aef57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181611ab45790505b50846040518463ffffffff1660e01b8152600401611b0f9392919061481e565b60206040518083038186803b158015611b2757600080fd5b505af4158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f91906146dc565b95945050505050565b6040516310e9065560e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__906310e9065590610b3a90859085906004016148d2565b60405163ba2ad97360e01b81526001600160a01b03808516600483015280841660248301528216604482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063ba2ad9739060640160206040518083038186803b158015611c0757600080fd5b505af4158015611c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190614915565b60405163be83aa9960e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063be83aa9990610a049086908690869060040161492e565b6040516367ac61f560e11b81526001600160a01b038216600482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063cf58c3ea90602401610baa565b6040516337eceff160e21b81526001600160a01b038216600482015260009073__$64a275930a611d2694d2a05feb4a8b2aa0$__9063dfb3bfc490602401611201565b6000611d07612366565b6040805180820182526009815268746f6b656e4e616d6560b81b60208083019190915290835281518083018352600b81526a1d1bdad95b94de5b589bdb60aa1b8183015283820152815180830183526004808252636d656d6f60e01b9282019290925260608401523083830152905163910f271160e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__9163910f271191611da891859101614962565b60206040518083038186803b158015611dc057600080fd5b505af4158015611dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df891906146dc565b91505090565b60405163eb5625d960e01b81526001600160a01b038085166004830152831660248201526044810182905273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063eb5625d990606401610a04565b60405163766603e360e11b81526001600160a01b0380841660048301528216602482015273__$64a275930a611d2694d2a05feb4a8b2aa0$__9063eccc07c690604401610b3a565b604051634e03000f60e01b815273__$64a275930a611d2694d2a05feb4a8b2aa0$__90634e03000f90610b3a9085908590600401614975565b60408051600380825260808201909252606091816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181611ee65750506040805160a081018252600091810182905260608101829052600387900b81526001600160a01b03868116602083015285166080820152919250611fa0611f68876002614a60565b856040805160a081018252600060208201819052606082015260039390930b83526001908301526001600160a01b0316608082015290565b90506000611fed611fb2886004614a60565b866040805160a0810182526000602082018190529181019190915260039290920b8252600160608301526001600160a01b0316608082015290565b9050828460008151811061200357612003614aef565b6020026020010181905250818460018151811061202257612022614aef565b6020026020010181905250808460028151811061204157612041614aef565b60200260200101819052505050509392505050565b604080516001808252818301909252606091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a0820152825260001990920191018161206d5750506040805160c08101825260038a810b825289810b602083015288810b928201929092529086900b606082015284151560808201526001600160a01b03841660a0820152909150808260008151811061210857612108614aef565b6020026020010181905250509695505050505050565b60408051600380825260808201909252606091816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816121365750506040805160c08101825260009181018290526060810182905260808101829052600389810b825288900b60208201526001600160a01b03851660a0820152919250906040805160c08101825260038a810b825289810b602083015288900b91810191909152600060608201819052600160808301526001600160a01b03861660a08301529192506040805160c08101825260038b810b82528a810b602083015289900b918101919091526001600160a01b03808816606083015260006080830181905290871660a08301529192509050828460008151811061225b5761225b614aef565b6020026020010181905250818460018151811061227a5761227a614aef565b6020026020010181905250808460028151811061229957612299614aef565b602002602001018190525050505095945050505050565b60405180604001604052806122c36122d0565b8152600060209091015290565b6040518061012001604052806122e4612366565b8152602001600060070b8152602001600015158152602001600015158152602001600015158152602001606081526020016060815260200160608152602001606081525090565b6040518060c0016040528061233e6122d0565b8152600060208201819052604082018190526060808301829052608083015260a09091015290565b60408051610120810182526060808252602080830182905260008385018190528284018390526080840181905260a0840181905260c0840181905260e0840183905284519283018552808352908201819052928101929092529061010082015290565b6001600160a01b03811681146123de57600080fd5b50565b80356123ec816123c9565b919050565b60006020828403121561240357600080fd5b8135611048816123c9565b60005b83811015612429578181015183820152602001612411565b83811115612438576000848401525b50505050565b6000815180845261245681602086016020860161240e565b601f01601f19169290920160200192915050565b805115158252600060208201516001600160a01b0380821660208601526040840151915060a060408601526124a260a086018361243e565b9150606084015185830360608701526124bb838261243e565b925050806080850151166080860152508091505092915050565b600082825180855260208086019550808260051b84010181860160005b8481101561253457858303601f1901895281518051845284015160408585018190526125208186018361246a565b9a86019a94505050908301906001016124f2565b5090979650505050505050565b600061016082518185526125578286018261243e565b91505060208301518482036020860152612571828261243e565b915050604083015161258e60408601826001600160a01b03169052565b50606083015184820360608601526125a6828261243e565b91505060808301516125bc608086018215159052565b5060a08301516125d160a086018260070b9052565b5060c08301516125e560c086018215159052565b5060e083015184820360e08601526125fd82826124d5565b9150506101008084015161263982870182805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5090949350505050565b600081518084526020808501945080840160005b838110156126be576126ab878351805160070b825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a0969096019590820190600101612657565b509495945050505050565b600081518084526020808501945080840160005b838110156126be5761273c878351805160070b8252602081015160070b6020830152604081015160070b6040830152606081015160070b60608301526080810151151560808301526001600160a01b0360a08201511660a08301525050565b60c09690960195908201906001016126dd565b600081518084526020808501945080840160005b838110156126be576127c5878351805160070b8252602081015160070b6020830152604081015160070b604083015260608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b60c0969096019590820190600101612763565b600061012082518185526127ee82860182612541565b9150506020830151612805602086018260070b9052565b506040830151612819604086018215159052565b50606083015161282d606086018215159052565b506080830151612841608086018215159052565b5060a083015184820360a08601526128598282612643565b91505060c083015184820360c086015261287382826126c9565b91505060e083015184820360e086015261288d828261274f565b915050610100808401518583038287015261153b838261243e565b6020815260008251604060208401526128c460608401826127d8565b9050602084015160030b60408401528091505092915050565b8060070b81146123de57600080fd5b80356123ec816128dd565b60008060006060848603121561290c57600080fd5b8335612917816123c9565b92506020840135612927816123c9565b91506040840135612937816128dd565b809150509250925092565b60208152600061104860208301846127d8565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561298e5761298e612955565b60405290565b60405160a0810167ffffffffffffffff8111828210171561298e5761298e612955565b6040516060810167ffffffffffffffff8111828210171561298e5761298e612955565b604051610120810167ffffffffffffffff8111828210171561298e5761298e612955565b6040516080810167ffffffffffffffff8111828210171561298e5761298e612955565b60405160c0810167ffffffffffffffff8111828210171561298e5761298e612955565b604051601f8201601f1916810167ffffffffffffffff81118282101715612a6d57612a6d612955565b604052919050565b600067ffffffffffffffff821115612a8f57612a8f612955565b50601f01601f191660200190565b600082601f830112612aae57600080fd5b8135612ac1612abc82612a75565b612a44565b818152846020838601011115612ad657600080fd5b816020850160208301376000918101602001919091529392505050565b80151581146123de57600080fd5b80356123ec81612af3565b600067ffffffffffffffff821115612b2657612b26612955565b5060051b60200190565b600082601f830112612b4157600080fd5b81356020612b51612abc83612b0c565b82815260059290921b84018101918181019086841115612b7057600080fd5b8286015b84811015612c8657803567ffffffffffffffff80821115612b9457600080fd5b908801906040601f19838c038101821315612bae57600080fd5b612bb661296b565b8885013581528285013584811115612bcd57600080fd5b949094019360a0858e0383011215612be55760008081fd5b612bed612994565b915088850135612bfc81612af3565b825284830135612c0b816123c9565b828a015260608581013585811115612c235760008081fd5b612c318f8c838a0101612a9d565b8585015250608093508386013585811115612c4c5760008081fd5b612c5a8f8c838a0101612a9d565b828501525050612c6c60a086016123e1565b928201929092528188015285525050918301918301612b74565b509695505050505050565b600060608284031215612ca357600080fd5b612cab6129b7565b90508135612cb8816128dd565b81526020820135612cc8816123c9565b60208201526040820135612cdb816128dd565b604082015292915050565b60008060408385031215612cf957600080fd5b8235612d04816123c9565b9150602083013567ffffffffffffffff80821115612d2157600080fd5b908401906101608287031215612d3657600080fd5b612d3e6129da565b823582811115612d4d57600080fd5b612d5988828601612a9d565b825250602083013582811115612d6e57600080fd5b612d7a88828601612a9d565b602083015250612d8c604084016123e1565b6040820152606083013582811115612da357600080fd5b612daf88828601612a9d565b606083015250612dc160808401612b01565b6080820152612dd260a084016128ec565b60a0820152612de360c08401612b01565b60c082015260e083013582811115612dfa57600080fd5b612e0688828601612b30565b60e0830152506101009150612e1d87838501612c91565b828201528093505050509250929050565b60008060408385031215612e4157600080fd5b8235612e4c816123c9565b91506020830135612e5c816123c9565b809150509250929050565b600082601f830112612e7857600080fd5b81356020612e88612abc83612b0c565b82815260059290921b84018101918181019086841115612ea757600080fd5b8286015b84811015612c86578035612ebe816128dd565b8352918301918301612eab565b600080600060608486031215612ee057600080fd5b8335612eeb816123c9565b92506020840135612efb816128dd565b9150604084013567ffffffffffffffff811115612f1757600080fd5b612f2386828701612e67565b9150509250925092565b600082601f830112612f3e57600080fd5b81356020612f4e612abc83612b0c565b82815260079290921b84018101918181019086841115612f6d57600080fd5b8286015b84811015612c865760808189031215612f8a5760008081fd5b612f926129fe565b8135612f9d816123c9565b815281850135612fac816123c9565b81860152604082810135612fbf816128dd565b90820152606082810135612fd281612af3565b90820152835291830191608001612f71565b600060208284031215612ff657600080fd5b67ffffffffffffffff808335111561300d57600080fd5b8235830184601f82011261302057600080fd5b61302d612abc8235612b0c565b81358082526020808301929160051b84010187101561304b57600080fd5b602083015b6020843560051b850101811015612c8657848135111561306f57600080fd5b803584016060818a03601f1901121561308757600080fd5b61308f6129b7565b61309c60208301356123c9565b6020820135815286604083013511156130b457600080fd5b604082013582018a603f8201126130ca57600080fd5b6130da612abc6020830135612b0c565b602082810135808352908201919060600283016040018d8111156130fd57600080fd5b6040840193505b80841015613173576060848f03121561311c57600080fd5b6131246129b7565b61312e85356123c9565b8435815261313f60208601356128dd565b602085013560208201526131566040860135612af3565b604085810135908201528352606090930192602090920191613104565b5060208401525050606082013587101561318c57600080fd5b61319f8a60206060850135850101612f2d565b604082015284525060209283019201613050565b6060815260006131c66060830186612643565b82810360208401526131d881866126c9565b9050828103604084015261153b818561274f565b60008060006060848603121561320157600080fd5b833561320c816123c9565b9250602084013561321c816123c9565b91506040840135612937816123c9565b60008060006060848603121561324157600080fd5b833561324c816123c9565b925060208481013561325d816128dd565b9250604085013567ffffffffffffffff8082111561327a57600080fd5b818701915087601f83011261328e57600080fd5b813561329c612abc82612b0c565b81815260059190911b8301840190848101908a8311156132bb57600080fd5b8585015b838110156132f3578035858111156132d75760008081fd5b6132e58d89838a0101612a9d565b8452509186019186016132bf565b508096505050505050509250925092565b600060408201600785810b84526020604081860152828651808552606087019150828801945060005b8181101561334b578551850b8352948301949183019160010161332d565b509098975050505050505050565b6000806040838503121561336c57600080fd5b8235613377816123c9565b946020939093013593505050565b602081526000611048602083018461246a565b6000806000606084860312156133ad57600080fd5b83356133b8816123c9565b925060208401356133c8816123c9565b9150604084013561293781612af3565b600080600080608085870312156133ee57600080fd5b84356133f9816123c9565b93506020850135613409816123c9565b92506040850135613419816123c9565b91506060850135613429816128dd565b939692955090935050565b6000806040838503121561344757600080fd5b8235613452816123c9565b91506020830135612e5c816128dd565b602081526000825160c0602084015261347e60e08401826127d8565b9050602084015160070b604084015260408401516001600160a01b038082166060860152606086015160070b608086015260808601519150601f198584030160a08601526134cc838361243e565b92508060a08701511660c086015250508091505092915050565b606081016112518284805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b60008060006060848603121561352f57600080fd5b833561353a816123c9565b92506020840135612efb816123c9565b600082601f83011261355b57600080fd5b8135602061356b612abc83612b0c565b82815260059290921b8401810191818101908684111561358a57600080fd5b8286015b84811015612c865780356135a1816123c9565b835291830191830161358e565b600080604083850312156135c157600080fd5b82356135cc816123c9565b9150602083013567ffffffffffffffff8111156135e857600080fd5b6135f48582860161354a565b9150509250929050565b6000806000806080858703121561361457600080fd5b843561361f816123c9565b9350602085013567ffffffffffffffff8082111561363c57600080fd5b6136488883890161354a565b9450604087013591508082111561365e57600080fd5b61366a8883890161354a565b9350606087013591508082111561368057600080fd5b5061368d87828801612e67565b91505092959194509250565b600080608083850312156136ac57600080fd5b82356136b7816123c9565b91506136c68460208501612c91565b90509250929050565b6000806000606084860312156136e457600080fd5b83356136ef816123c9565b9250602084013567ffffffffffffffff8082111561370c57600080fd5b6137188783880161354a565b9350604086013591508082111561372e57600080fd5b50612f2386828701612e67565b60008060006060848603121561375057600080fd5b833561375b816123c9565b9250602084013561376b816123c9565b929592945050506040919091013590565b6000806040838503121561378f57600080fd5b823561379a816123c9565b9150602083013567ffffffffffffffff8111156137b657600080fd5b6135f485828601612b30565b600082601f8301126137d357600080fd5b81516137e1612abc82612a75565b8181528460208386010111156137f657600080fd5b610d0582602083016020870161240e565b80516123ec816123c9565b80516123ec81612af3565b80516123ec816128dd565b600060a0828403121561383a57600080fd5b613842612994565b9050815161384f81612af3565b8152602082015161385f816123c9565b6020820152604082015167ffffffffffffffff8082111561387f57600080fd5b61388b858386016137c2565b604084015260608401519150808211156138a457600080fd5b506138b1848285016137c2565b60608301525060808201516138c5816123c9565b608082015292915050565b600082601f8301126138e157600080fd5b815160206138f1612abc83612b0c565b82815260059290921b8401810191818101908684111561391057600080fd5b8286015b84811015612c8657805167ffffffffffffffff808211156139355760008081fd5b908801906040828b03601f190181131561394f5760008081fd5b61395761296b565b8388015181529083015190828211156139705760008081fd5b61397e8c8984870101613828565b818901528652505050918301918301613914565b6000606082840312156139a457600080fd5b6139ac6129b7565b905081516139b9816128dd565b815260208201516139c9816123c9565b60208201526040820151612cdb816128dd565b600061016082840312156139ef57600080fd5b6139f76129da565b9050815167ffffffffffffffff80821115613a1157600080fd5b613a1d858386016137c2565b83526020840151915080821115613a3357600080fd5b613a3f858386016137c2565b6020840152613a5060408501613807565b60408401526060840151915080821115613a6957600080fd5b613a75858386016137c2565b6060840152613a8660808501613812565b6080840152613a9760a0850161381d565b60a0840152613aa860c08501613812565b60c084015260e0840151915080821115613ac157600080fd5b50613ace848285016138d0565b60e083015250610100613ae384828501613992565b9082015292915050565b600082601f830112613afe57600080fd5b81516020613b0e612abc83612b0c565b82815260a09283028501820192828201919087851115613b2d57600080fd5b8387015b858110156125345781818a031215613b495760008081fd5b613b51612994565b8151613b5c816128dd565b815281860151613b6b816123c9565b81870152604082810151613b7e81612af3565b90820152606082810151613b9181612af3565b90820152608082810151613ba4816123c9565b908201528452928401928101613b31565b600082601f830112613bc657600080fd5b81516020613bd6612abc83612b0c565b82815260c09283028501820192828201919087851115613bf557600080fd5b8387015b858110156125345781818a031215613c115760008081fd5b613c19612a21565b8151613c24816128dd565b815281860151613c33816128dd565b81870152604082810151613c46816128dd565b90820152606082810151613c59816128dd565b90820152608082810151613c6c81612af3565b9082015260a082810151613c7f816123c9565b908201528452928401928101613bf9565b600082601f830112613ca157600080fd5b81516020613cb1612abc83612b0c565b82815260c09283028501820192828201919087851115613cd057600080fd5b8387015b858110156125345781818a031215613cec5760008081fd5b613cf4612a21565b8151613cff816128dd565b815281860151613d0e816128dd565b81870152604082810151613d21816128dd565b90820152606082810151613d34816123c9565b90820152608082810151613d4781612af3565b9082015260a082810151613d5a816123c9565b908201528452928401928101613cd4565b60006101208284031215613d7e57600080fd5b613d866129da565b9050815167ffffffffffffffff80821115613da057600080fd5b613dac858386016139dc565b8352613dba6020850161381d565b6020840152613dcb60408501613812565b6040840152613ddc60608501613812565b6060840152613ded60808501613812565b608084015260a0840151915080821115613e0657600080fd5b613e1285838601613aed565b60a084015260c0840151915080821115613e2b57600080fd5b613e3785838601613bb5565b60c084015260e0840151915080821115613e5057600080fd5b613e5c85838601613c90565b60e084015261010091508184015181811115613e7757600080fd5b613e83868287016137c2565b8385015250505092915050565b8051600381900b81146123ec57600080fd5b600060208284031215613eb457600080fd5b815167ffffffffffffffff80821115613ecc57600080fd5b9083019060408286031215613ee057600080fd5b613ee861296b565b825182811115613ef757600080fd5b613f0387828601613d6b565b825250613f1260208401613e90565b602082015295945050505050565b600060208284031215613f3257600080fd5b815167ffffffffffffffff811115613f4957600080fd5b610d0584828501613d6b565b600082825180855260208086019550808260051b84010181860160005b8481101561253457601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a0152613fd160e08a018661243e565b92860151898403603f1901858b0152929450613fed858461243e565b9501511660c09790970196909652505098840198925090830190600101613f72565b600061016082518185526140258286018261243e565b9150506020830151848203602086015261403f828261243e565b915050604083015161405c60408601826001600160a01b03169052565b5060608301518482036060860152614074828261243e565b915050608083015161408a608086018215159052565b5060a083015161409f60a086018260070b9052565b5060c08301516140b360c086018215159052565b5060e083015184820360e08601526125fd8282613f55565b6001600160a01b0383168152604060208201526000610d05604083018461400f565b600081518084526020808501945080840160005b838110156126be57815160070b87529582019590820190600101614101565b6001600160a01b03841681528260070b6020820152606060408201526000611b5f60608301846140ed565b60006020828403121561415d57600080fd5b8151611048816128dd565b600081518084526020808501945080840160005b838110156126be57815180516001600160a01b03908116895284820151168489015260408082015160070b908901526060908101511515908801526080909601959082019060010161417c565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561334b57603f19898403018552815160608085016001600160a01b038084511687528a840151838c89015282815180855260808a0191508d83019450600092505b8083101561426d5784518051851683528e81015160070b8f8401528d015115158d830152938d01936001929092019190850190614235565b50948b0151888603898d0152946142848187614168565b9a8d019a98505050948a019450505060019190910190506141f0565b6000806000606084860312156142b557600080fd5b835167ffffffffffffffff808211156142cd57600080fd5b6142d987838801613aed565b945060208601519150808211156142ef57600080fd5b6142fb87838801613bb5565b9350604086015191508082111561431157600080fd5b50612f2386828701613c90565b60006020828403121561433057600080fd5b815161104881612af3565b6000606082016001600160a01b038616835260208560070b818501526060604085015281855180845260808601915060808160051b870101935082870160005b828110156143a957607f1988870301845261439786835161243e565b9550928401929084019060010161437b565b50939998505050505050505050565b600080604083850312156143cb57600080fd5b82516143d6816128dd565b8092505060208084015167ffffffffffffffff8111156143f557600080fd5b8401601f8101861361440657600080fd5b8051614414612abc82612b0c565b81815260059190911b8201830190838101908883111561443357600080fd5b928401925b8284101561445a57835161444b816128dd565b82529284019290840190614438565b80955050505050509250929050565b60006020828403121561447b57600080fd5b815167ffffffffffffffff81111561449257600080fd5b610d0584828501613828565b6000602082840312156144b057600080fd5b815167ffffffffffffffff808211156144c857600080fd5b9083019060c082860312156144dc57600080fd5b6144e4612a21565b8251828111156144f357600080fd5b6144ff87828601613d6b565b82525061450e6020840161381d565b602082015261451f60408401613807565b60408201526145306060840161381d565b606082015260808301518281111561454757600080fd5b614553878286016137c2565b60808301525061456560a08401613807565b60a082015295945050505050565b60006020828403121561458557600080fd5b61104882613e90565b600081518084526020808501945080840160005b838110156126be576145f6878351805160070b825260208101516001600160a01b03808216602085015260408301511515604085015260608301511515606085015280608084015116608085015250505050565b60a09690960195908201906001016145a2565b60a08152600061461c60a083018861400f565b60208760070b818501528660030b60408501528382036060850152614641828761458e565b8481036080860152855180825282870193509082019060005b818110156146cc576146b9838651805160070b8252602081015160070b6020830152604081015160070b6040830152606081015160070b60608301526080810151151560808301526001600160a01b0360a08201511660a08301525050565b9383019360c0929092019160010161465a565b50909a9950505050505050505050565b6000602082840312156146ee57600080fd5b8151611048816123c9565b60006060828403121561470b57600080fd5b6110488383613992565b60006001600160a01b03808616835280851660208401525060606040830152611b5f60608301846140ed565b600081518084526020808501945080840160005b838110156126be5781516001600160a01b031687529582019590820190600101614755565b6001600160a01b0383168152604060208201526000610d056040830184614741565b6060815260006147af606083018661400f565b90508360070b60208301528260030b6040830152949350505050565b6001600160a01b03851681526080602082015260006147ed6080830186614741565b82810360408401526147ff8186614741565b9050828103606084015261481381856140ed565b979650505050505050565b606081526000614831606083018661400f565b602083820381850152614844828761458e565b8481036040860152855180825282870193509082019060005b8181101561334b576148bf838651805160070b8252602081015160070b6020830152604081015160070b604083015260608101516001600160a01b0380821660608501526080830151151560808501528060a08401511660a085015250505050565b9383019360c0929092019160010161485d565b6001600160a01b0383168152608081016110486020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b60006020828403121561492757600080fd5b5051919050565b6001600160a01b03841681526060602082015260006149506060830185614741565b828103604084015261153b81856140ed565b602081526000611048602083018461400f565b600060408083016001600160a01b03808716855260208381870152828751808552606094508488019150848160051b890101838a0160005b83811015614a39578a8303605f190185528151805184528601518684018a9052805115158a850152808701518816898501528981015160a060808087018290526149fa60e088018461243e565b92508b840151603f198885030183890152614a15848261243e565b91909401518b1660c0979097019690965250505093850193908501906001016149ad565b50909b9a5050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008160030b8360030b637fffffff600082136000841383830485118282161615614a8d57614a8d614a4a565b637fffffff196000851282811687830587121615614aad57614aad614a4a565b60008712925085820587128484161615614ac957614ac9614a4a565b85850587128184161615614adf57614adf614a4a565b5050509290910295945050505050565b634e487b7160e01b600052603260045260246000fdfea264697066735822122090b1aa990bcb4b8f3c954bdb968083f3678271f6ad598b3a14c2b0ee3cab0ba764736f6c63430008090033", "linkReferences": { "contracts/safe-hts-precompile/SafeHTS.sol": { "SafeHTS": [ { "length": 20, - "start": 2348 + "start": 2343 }, { "length": 20, - "start": 2571 + "start": 2566 }, { "length": 20, - "start": 2692 + "start": 2687 }, { "length": 20, - "start": 2884 + "start": 2864 }, { "length": 20, - "start": 3003 + "start": 2988 }, { "length": 20, - "start": 3123 + "start": 3117 }, { "length": 20, - "start": 3207 + "start": 3189 }, { "length": 20, - "start": 3256 + "start": 3241 }, { "length": 20, - "start": 3302 + "start": 3411 }, { "length": 20, - "start": 3492 + "start": 3460 }, { "length": 20, - "start": 3667 + "start": 3537 }, { "length": 20, - "start": 3891 + "start": 3712 }, { "length": 20, - "start": 4057 + "start": 3827 }, { "length": 20, - "start": 4132 + "start": 4087 }, { "length": 20, - "start": 4298 + "start": 4253 }, { "length": 20, - "start": 4415 + "start": 4328 }, { "length": 20, - "start": 4572 + "start": 4494 }, { "length": 20, - "start": 4654 + "start": 4611 }, { "length": 20, - "start": 4800 + "start": 4768 }, { "length": 20, - "start": 4924 + "start": 4850 }, { "length": 20, - "start": 5022 + "start": 4996 }, { "length": 20, - "start": 5198 + "start": 5161 }, { "length": 20, - "start": 5393 + "start": 5337 }, { "length": 20, - "start": 5517 + "start": 5532 }, { "length": 20, - "start": 5576 + "start": 5656 }, { "length": 20, - "start": 5718 + "start": 5715 }, { "length": 20, - "start": 5926 + "start": 5857 }, { "length": 20, - "start": 6010 + "start": 6065 }, { "length": 20, - "start": 6059 + "start": 6149 }, { "length": 20, - "start": 6131 + "start": 6198 }, { "length": 20, - "start": 6198 + "start": 6270 }, { "length": 20, - "start": 6270 + "start": 6337 }, { "length": 20, - "start": 6347 + "start": 6409 }, { "length": 20, - "start": 6494 + "start": 6486 }, { "length": 20, - "start": 6672 + "start": 6633 }, { "length": 20, - "start": 6958 + "start": 6811 }, { "length": 20, - "start": 7082 + "start": 7063 }, { "length": 20, - "start": 7141 + "start": 7154 }, { "length": 20, - "start": 7213 + "start": 7278 }, { "length": 20, - "start": 7265 + "start": 7352 }, { "length": 20, - "start": 7422 + "start": 7419 }, { "length": 20, - "start": 7589 + "start": 7586 }, { "length": 20, - "start": 7758 + "start": 7755 }, { "length": 20, - "start": 7830 + "start": 7827 }, { "length": 20, - "start": 7879 + "start": 7876 } ] } @@ -2796,183 +2796,183 @@ "SafeHTS": [ { "length": 20, - "start": 2316 + "start": 2311 }, { "length": 20, - "start": 2539 + "start": 2534 }, { "length": 20, - "start": 2660 + "start": 2655 }, { "length": 20, - "start": 2852 + "start": 2832 }, { "length": 20, - "start": 2971 + "start": 2956 }, { "length": 20, - "start": 3091 + "start": 3085 }, { "length": 20, - "start": 3175 + "start": 3157 }, { "length": 20, - "start": 3224 + "start": 3209 }, { "length": 20, - "start": 3270 + "start": 3379 }, { "length": 20, - "start": 3460 + "start": 3428 }, { "length": 20, - "start": 3635 + "start": 3505 }, { "length": 20, - "start": 3859 + "start": 3680 }, { "length": 20, - "start": 4025 + "start": 3795 }, { "length": 20, - "start": 4100 + "start": 4055 }, { "length": 20, - "start": 4266 + "start": 4221 }, { "length": 20, - "start": 4383 + "start": 4296 }, { "length": 20, - "start": 4540 + "start": 4462 }, { "length": 20, - "start": 4622 + "start": 4579 }, { "length": 20, - "start": 4768 + "start": 4736 }, { "length": 20, - "start": 4892 + "start": 4818 }, { "length": 20, - "start": 4990 + "start": 4964 }, { "length": 20, - "start": 5166 + "start": 5129 }, { "length": 20, - "start": 5361 + "start": 5305 }, { "length": 20, - "start": 5485 + "start": 5500 }, { "length": 20, - "start": 5544 + "start": 5624 }, { "length": 20, - "start": 5686 + "start": 5683 }, { "length": 20, - "start": 5894 + "start": 5825 }, { "length": 20, - "start": 5978 + "start": 6033 }, { "length": 20, - "start": 6027 + "start": 6117 }, { "length": 20, - "start": 6099 + "start": 6166 }, { "length": 20, - "start": 6166 + "start": 6238 }, { "length": 20, - "start": 6238 + "start": 6305 }, { "length": 20, - "start": 6315 + "start": 6377 }, { "length": 20, - "start": 6462 + "start": 6454 }, { "length": 20, - "start": 6640 + "start": 6601 }, { "length": 20, - "start": 6926 + "start": 6779 }, { "length": 20, - "start": 7050 + "start": 7031 }, { "length": 20, - "start": 7109 + "start": 7122 }, { "length": 20, - "start": 7181 + "start": 7246 }, { "length": 20, - "start": 7233 + "start": 7320 }, { "length": 20, - "start": 7390 + "start": 7387 }, { "length": 20, - "start": 7557 + "start": 7554 }, { "length": 20, - "start": 7726 + "start": 7723 }, { "length": 20, - "start": 7798 + "start": 7795 }, { "length": 20, - "start": 7847 + "start": 7844 } ] } diff --git a/contracts/hts-precompile/ExpiryHelper.sol b/contracts/hts-precompile/ExpiryHelper.sol index 3faae7e65..e353034c0 100644 --- a/contracts/hts-precompile/ExpiryHelper.sol +++ b/contracts/hts-precompile/ExpiryHelper.sol @@ -8,13 +8,13 @@ abstract contract ExpiryHelper { function createAutoRenewExpiry( address autoRenewAccount, - uint32 autoRenewPeriod + int64 autoRenewPeriod ) internal pure returns (IHederaTokenService.Expiry memory expiry) { expiry.autoRenewAccount = autoRenewAccount; expiry.autoRenewPeriod = autoRenewPeriod; } - function createSecondExpiry(uint32 second) internal pure returns (IHederaTokenService.Expiry memory expiry) { + function createSecondExpiry(int64 second) internal pure returns (IHederaTokenService.Expiry memory expiry) { expiry.second = second; } } \ No newline at end of file diff --git a/contracts/hts-precompile/FeeHelper.sol b/contracts/hts-precompile/FeeHelper.sol index 1ecb38f6e..c82b32d32 100644 --- a/contracts/hts-precompile/FeeHelper.sol +++ b/contracts/hts-precompile/FeeHelper.sol @@ -5,7 +5,7 @@ pragma experimental ABIEncoderV2; import "./IHederaTokenService.sol"; abstract contract FeeHelper { - function createFixedHbarFee(uint32 amount, address feeCollector) + function createFixedHbarFee(int64 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) @@ -16,7 +16,7 @@ abstract contract FeeHelper { } function createFixedTokenFee( - uint32 amount, + int64 amount, address tokenId, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { @@ -25,7 +25,7 @@ abstract contract FeeHelper { fixedFee.feeCollector = feeCollector; } - function createFixedSelfDenominatedFee(uint32 amount, address feeCollector) + function createFixedSelfDenominatedFee(int64 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) @@ -36,8 +36,8 @@ abstract contract FeeHelper { } function createFractionalFee( - uint32 numerator, - uint32 denominator, + int64 numerator, + int64 denominator, bool netOfTransfers, address feeCollector ) @@ -52,10 +52,10 @@ abstract contract FeeHelper { } function createFractionalFeeWithMinAndMax( - uint32 numerator, - uint32 denominator, - uint32 minimumAmount, - uint32 maximumAmount, + int64 numerator, + int64 denominator, + int64 minimumAmount, + int64 maximumAmount, bool netOfTransfers, address feeCollector ) @@ -72,10 +72,10 @@ abstract contract FeeHelper { } function createFractionalFeeWithLimits( - uint32 numerator, - uint32 denominator, - uint32 minimumAmount, - uint32 maximumAmount, + int64 numerator, + int64 denominator, + int64 minimumAmount, + int64 maximumAmount, bool netOfTransfers, address feeCollector ) @@ -92,8 +92,8 @@ abstract contract FeeHelper { } function createRoyaltyFeeWithoutFallback( - uint32 numerator, - uint32 denominator, + int64 numerator, + int64 denominator, address feeCollector ) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) { royaltyFee.numerator = numerator; @@ -102,9 +102,9 @@ abstract contract FeeHelper { } function createRoyaltyFeeWithHbarFallbackFee( - uint32 numerator, - uint32 denominator, - uint32 amount, + int64 numerator, + int64 denominator, + int64 amount, address feeCollector ) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) { royaltyFee.numerator = numerator; @@ -115,9 +115,9 @@ abstract contract FeeHelper { } function createRoyaltyFeeWithTokenDenominatedFallbackFee( - uint32 numerator, - uint32 denominator, - uint32 amount, + int64 numerator, + int64 denominator, + int64 amount, address tokenId, address feeCollector ) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) { @@ -130,7 +130,7 @@ abstract contract FeeHelper { function createNAmountFixedFeesForHbars( uint8 numberOfFees, - uint32 amount, + int64 amount, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) { fixedFees = new IHederaTokenService.FixedFee[](numberOfFees); @@ -143,7 +143,7 @@ abstract contract FeeHelper { } function createSingleFixedFeeForToken( - uint32 amount, + int64 amount, address tokenId, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) { @@ -157,7 +157,7 @@ abstract contract FeeHelper { } function createFixedFeesForToken( - uint32 amount, + int64 amount, address tokenId, address firstFeeCollector, address secondFeeCollector @@ -177,7 +177,7 @@ abstract contract FeeHelper { fixedFees[0] = fixedFee2; } - function createSingleFixedFeeForHbars(uint32 amount, address feeCollector) + function createSingleFixedFeeForHbars(int64 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) @@ -191,7 +191,7 @@ abstract contract FeeHelper { } function createSingleFixedFeeForCurrentToken( - uint32 amount, + int64 amount, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) { fixedFees = new IHederaTokenService.FixedFee[](1); @@ -204,7 +204,7 @@ abstract contract FeeHelper { } function createSingleFixedFeeWithInvalidFlags( - uint32 amount, + int64 amount, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) { fixedFees = new IHederaTokenService.FixedFee[](1); @@ -217,7 +217,7 @@ abstract contract FeeHelper { } function createSingleFixedFeeWithTokenIdAndHbars( - uint32 amount, + int64 amount, address tokenId, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) { @@ -232,7 +232,7 @@ abstract contract FeeHelper { } function createFixedFeesWithAllTypes( - uint32 amount, + int64 amount, address tokenId, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) { @@ -259,7 +259,7 @@ abstract contract FeeHelper { } function createFixedFeeForToken( - uint32 amount, + int64 amount, address tokenId, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { @@ -268,7 +268,7 @@ abstract contract FeeHelper { fixedFee.feeCollector = feeCollector; } - function createFixedFeeForHbars(uint32 amount, address feeCollector) + function createFixedFeeForHbars(int64 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) @@ -278,7 +278,7 @@ abstract contract FeeHelper { fixedFee.feeCollector = feeCollector; } - function createFixedFeeForCurrentToken(uint32 amount, address feeCollector) + function createFixedFeeForCurrentToken(int64 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) @@ -289,7 +289,7 @@ abstract contract FeeHelper { } //Used for negative scenarios - function createFixedFeeWithInvalidFlags(uint32 amount, address feeCollector) + function createFixedFeeWithInvalidFlags(int64 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) @@ -302,7 +302,7 @@ abstract contract FeeHelper { //Used for negative scenarios function createFixedFeeWithTokenIdAndHbars( - uint32 amount, + int64 amount, address tokenId, address feeCollector ) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { @@ -320,8 +320,8 @@ abstract contract FeeHelper { function createNAmountFractionalFees( uint8 numberOfFees, - uint32 numerator, - uint32 denominator, + int64 numerator, + int64 denominator, bool netOfTransfers, address feeCollector ) @@ -344,8 +344,8 @@ abstract contract FeeHelper { } function createSingleFractionalFee( - uint32 numerator, - uint32 denominator, + int64 numerator, + int64 denominator, bool netOfTransfers, address feeCollector ) @@ -365,10 +365,10 @@ abstract contract FeeHelper { } function createSingleFractionalFeeWithLimits( - uint32 numerator, - uint32 denominator, - uint32 minimumAmount, - uint32 maximumAmount, + int64 numerator, + int64 denominator, + int64 minimumAmount, + int64 maximumAmount, bool netOfTransfers, address feeCollector ) @@ -399,8 +399,8 @@ abstract contract FeeHelper { function createNAmountRoyaltyFees( uint8 numberOfFees, - uint32 numerator, - uint32 denominator, + int64 numerator, + int64 denominator, address feeCollector ) internal @@ -428,8 +428,8 @@ abstract contract FeeHelper { } function createSingleRoyaltyFee( - uint32 numerator, - uint32 denominator, + int64 numerator, + int64 denominator, address feeCollector ) internal @@ -447,9 +447,9 @@ abstract contract FeeHelper { } function createSingleRoyaltyFeeWithFallbackFee( - uint32 numerator, - uint32 denominator, - uint32 amount, + int64 numerator, + int64 denominator, + int64 amount, address tokenId, bool useHbarsForPayment, address feeCollector @@ -473,9 +473,9 @@ abstract contract FeeHelper { } function createRoyaltyFeesWithAllTypes( - uint32 numerator, - uint32 denominator, - uint32 amount, + int64 numerator, + int64 denominator, + int64 amount, address tokenId, address feeCollector ) @@ -514,8 +514,8 @@ abstract contract FeeHelper { } function createRoyaltyFee( - uint32 numerator, - uint32 denominator, + int64 numerator, + int64 denominator, address feeCollector ) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) { royaltyFee.numerator = numerator; @@ -524,9 +524,9 @@ abstract contract FeeHelper { } function createRoyaltyFeeWithFallbackFee( - uint32 numerator, - uint32 denominator, - uint32 amount, + int64 numerator, + int64 denominator, + int64 amount, address tokenId, bool useHbarsForPayment, address feeCollector diff --git a/contracts/hts-precompile/HederaTokenService.sol b/contracts/hts-precompile/HederaTokenService.sol index 7aec61285..b83cc8204 100644 --- a/contracts/hts-precompile/HederaTokenService.sol +++ b/contracts/hts-precompile/HederaTokenService.sol @@ -8,7 +8,7 @@ import "./IHederaTokenService.sol"; abstract contract HederaTokenService { address constant precompileAddress = address(0x167); // 90 days in seconds - uint32 constant defaultAutoRenewPeriod = 7776000; + int32 constant defaultAutoRenewPeriod = 7776000; modifier nonEmptyExpiry(IHederaTokenService.HederaToken memory token) { @@ -55,16 +55,16 @@ abstract contract HederaTokenService { /// @return responseCode The response code for the status of the request. SUCCESS is 22. /// @return newTotalSupply The new supply of tokens. For NFTs it is the total count of NFTs /// @return serialNumbers If the token is an NFT the newly generate serial numbers, otherwise empty. - function mintToken(address token, uint64 amount, bytes[] memory metadata) internal - returns (int responseCode, uint64 newTotalSupply, int64[] memory serialNumbers) + function mintToken(address token, int64 amount, bytes[] memory metadata) internal + returns (int responseCode, int64 newTotalSupply, int64[] memory serialNumbers) { (bool success, bytes memory result) = precompileAddress.call( abi.encodeWithSelector(IHederaTokenService.mintToken.selector, token, amount, metadata)); (responseCode, newTotalSupply, serialNumbers) = success - ? abi.decode(result, (int32, uint64, int64[])) - : (HederaResponseCodes.UNKNOWN, 0, new int64[](0)); + ? abi.decode(result, (int32, int64, int64[])) + : (HederaResponseCodes.UNKNOWN, int64(0), new int64[](0)); } /// Burns an amount of the token from the defined treasury account @@ -76,16 +76,16 @@ abstract contract HederaTokenService { /// @param serialNumbers Applicable to tokens of type NON_FUNGIBLE_UNIQUE. The list of serial numbers to be burned. /// @return responseCode The response code for the status of the request. SUCCESS is 22. /// @return newTotalSupply The new supply of tokens. For NFTs it is the total count of NFTs - function burnToken(address token, uint64 amount, int64[] memory serialNumbers) internal - returns (int responseCode, uint64 newTotalSupply) + function burnToken(address token, int64 amount, int64[] memory serialNumbers) internal + returns (int responseCode, int64 newTotalSupply) { (bool success, bytes memory result) = precompileAddress.call( abi.encodeWithSelector(IHederaTokenService.burnToken.selector, token, amount, serialNumbers)); (responseCode, newTotalSupply) = success - ? abi.decode(result, (int32, uint64)) - : (HederaResponseCodes.UNKNOWN, 0); + ? abi.decode(result, (int32, int64)) + : (HederaResponseCodes.UNKNOWN, int64(0)); } /// Associates the provided account with the provided tokens. Must be signed by the provided @@ -160,8 +160,8 @@ abstract contract HederaTokenService { /// @return tokenAddress the created token's address function createFungibleToken( IHederaTokenService.HederaToken memory token, - uint64 initialTotalSupply, - uint32 decimals) nonEmptyExpiry(token) + int64 initialTotalSupply, + int32 decimals) nonEmptyExpiry(token) internal returns (int responseCode, address tokenAddress) { (bool success, bytes memory result) = precompileAddress.call{value : msg.value}( abi.encodeWithSelector(IHederaTokenService.createFungibleToken.selector, @@ -182,8 +182,8 @@ abstract contract HederaTokenService { /// @return tokenAddress the created token's address function createFungibleTokenWithCustomFees( IHederaTokenService.HederaToken memory token, - uint64 initialTotalSupply, - uint32 decimals, + int64 initialTotalSupply, + int32 decimals, IHederaTokenService.FixedFee[] memory fixedFees, IHederaTokenService.FractionalFee[] memory fractionalFees) nonEmptyExpiry(token) internal returns (int responseCode, address tokenAddress) { @@ -636,7 +636,7 @@ abstract contract HederaTokenService { /// @param account The account address to revoke kyc /// @param amount The number of tokens to wipe /// @return responseCode The response code for the status of the request. SUCCESS is 22. - function wipeTokenAccount(address token, address account, uint32 amount) internal returns (int responseCode) + function wipeTokenAccount(address token, address account, int64 amount) internal returns (int responseCode) { (bool success, bytes memory result) = precompileAddress.call( abi.encodeWithSelector(IHederaTokenService.wipeTokenAccount.selector, token, account, amount)); diff --git a/contracts/hts-precompile/IHederaTokenService.sol b/contracts/hts-precompile/IHederaTokenService.sol index 827b7e4ef..edae60066 100644 --- a/contracts/hts-precompile/IHederaTokenService.sol +++ b/contracts/hts-precompile/IHederaTokenService.sol @@ -69,14 +69,14 @@ interface IHederaTokenService { struct Expiry { // The epoch second at which the token should expire; if an auto-renew account and period are // specified, this is coerced to the current epoch second plus the autoRenewPeriod - uint32 second; + int64 second; // ID of an account which will be automatically charged to renew the token's expiration, at // autoRenewPeriod interval, expressed as a solidity address address autoRenewAccount; // The interval at which the auto-renew account will be charged to extend the token's expiry - uint32 autoRenewPeriod; + int64 autoRenewPeriod; } /// A Key can be a public key from either the Ed25519 or ECDSA(secp256k1) signature schemes, where @@ -175,7 +175,7 @@ interface IHederaTokenService { HederaToken token; /// The number of tokens (fungible) or serials (non-fungible) of the token - uint64 totalSupply; + int64 totalSupply; /// Specifies whether the token is deleted or not bool deleted; @@ -205,7 +205,7 @@ interface IHederaTokenService { TokenInfo tokenInfo; /// The number of decimal places a token is divisible by - uint32 decimals; + int32 decimals; } /// Additional non fungible properties of a Hedera Token. @@ -235,7 +235,7 @@ interface IHederaTokenService { /// useCurrentTokenForPayment. Exactly one of the values should be set. struct FixedFee { - uint32 amount; + int64 amount; // Specifies ID of token that should be used for fixed fee denomination address tokenId; @@ -255,16 +255,16 @@ interface IHederaTokenService { /// denomination is always units of the token to which this fractional fee is attached. struct FractionalFee { // A rational number's numerator, used to set the amount of a value transfer to collect as a custom fee - uint32 numerator; + int64 numerator; // A rational number's denominator, used to set the amount of a value transfer to collect as a custom fee - uint32 denominator; + int64 denominator; // The minimum amount to assess - uint32 minimumAmount; + int64 minimumAmount; // The maximum amount to assess (zero implies no maximum) - uint32 maximumAmount; + int64 maximumAmount; bool netOfTransfers; // The ID of the account to receive the custom fee, expressed as a solidity address @@ -278,17 +278,17 @@ interface IHederaTokenService { /// Royalty fees can only be added to tokens of type type NON_FUNGIBLE_UNIQUE. struct RoyaltyFee { // A fraction's numerator of fungible value exchanged for an NFT to collect as royalty - uint32 numerator; + int64 numerator; // A fraction's denominator of fungible value exchanged for an NFT to collect as royalty - uint32 denominator; + int64 denominator; // If present, the fee to assess to the NFT receiver when no fungible value // is exchanged with the sender. Consists of: // amount: the amount to charge for the fee // tokenId: Specifies ID of token that should be used for fixed fee denomination // useHbarsForPayment: Specifies this fee should be denominated in Hbar - uint32 amount; + int64 amount; address tokenId; bool useHbarsForPayment; @@ -321,13 +321,13 @@ interface IHederaTokenService { /// @return serialNumbers If the token is an NFT the newly generate serial numbers, othersise empty. function mintToken( address token, - uint64 amount, + int64 amount, bytes[] memory metadata ) external returns ( int64 responseCode, - uint64 newTotalSupply, + int64 newTotalSupply, int64[] memory serialNumbers ); @@ -342,9 +342,9 @@ interface IHederaTokenService { /// @return newTotalSupply The new supply of tokens. For NFTs it is the total count of NFTs function burnToken( address token, - uint64 amount, + int64 amount, int64[] memory serialNumbers - ) external returns (int64 responseCode, uint64 newTotalSupply); + ) external returns (int64 responseCode, int64 newTotalSupply); /// Associates the provided account with the provided tokens. Must be signed by the provided /// Account's key or called from the accounts contract key @@ -412,8 +412,8 @@ interface IHederaTokenService { /// @return tokenAddress the created token's address function createFungibleToken( HederaToken memory token, - uint64 initialTotalSupply, - uint32 decimals + int64 initialTotalSupply, + int32 decimals ) external payable returns (int64 responseCode, address tokenAddress); /// Creates a Fungible Token with the specified properties @@ -427,8 +427,8 @@ interface IHederaTokenService { /// @return tokenAddress the created token's address function createFungibleTokenWithCustomFees( HederaToken memory token, - uint64 initialTotalSupply, - uint32 decimals, + int64 initialTotalSupply, + int32 decimals, FixedFee[] memory fixedFees, FractionalFee[] memory fractionalFees ) external payable returns (int64 responseCode, address tokenAddress); @@ -741,7 +741,7 @@ interface IHederaTokenService { function wipeTokenAccount( address token, address account, - uint32 amount + int64 amount ) external returns (int64 responseCode); /// Operation to wipe non fungible tokens from account diff --git a/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol b/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol index d234712b2..db1627c9d 100644 --- a/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol +++ b/contracts/hts-precompile/examples/token-create/TokenCreateContract.sol @@ -11,14 +11,14 @@ contract TokenCreateContract is HederaTokenService, ExpiryHelper, KeyHelper { string name = "tokenName"; string symbol = "tokenSymbol"; string memo = "memo"; - uint64 initialTotalSupply = 1000; + int64 initialTotalSupply = 1000; int64 maxSupply = 1000; - uint32 decimals = 8; + int32 decimals = 8; bool freezeDefaultStatus = false; event ResponseCode(int responseCode); event CreatedToken(address tokenAddress); - event MintedToken(uint64 newTotalSupply, int64[] serialNumbers); + event MintedToken(int64 newTotalSupply, int64[] serialNumbers); event KycGranted(bool kycGranted); function createFungibleTokenPublic( @@ -209,8 +209,8 @@ contract TokenCreateContract is HederaTokenService, ExpiryHelper, KeyHelper { emit CreatedToken(tokenAddress); } - function mintTokenPublic(address token, uint64 amount, bytes[] memory metadata) public - returns (int responseCode, uint64 newTotalSupply, int64[] memory serialNumbers) { + function mintTokenPublic(address token, int64 amount, bytes[] memory metadata) public + returns (int responseCode, int64 newTotalSupply, int64[] memory serialNumbers) { (responseCode, newTotalSupply, serialNumbers) = HederaTokenService.mintToken(token, amount, metadata); emit ResponseCode(responseCode); @@ -221,8 +221,8 @@ contract TokenCreateContract is HederaTokenService, ExpiryHelper, KeyHelper { emit MintedToken(newTotalSupply, serialNumbers); } - function mintTokenToAddressPublic(address token, uint64 amount, bytes[] memory metadata) public - returns (int responseCode, uint64 newTotalSupply, int64[] memory serialNumbers) { + function mintTokenToAddressPublic(address token, int64 amount, bytes[] memory metadata) public + returns (int responseCode, int64 newTotalSupply, int64[] memory serialNumbers) { (responseCode, newTotalSupply, serialNumbers) = HederaTokenService.mintToken(token, amount, metadata); emit ResponseCode(responseCode); diff --git a/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol b/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol index c9ee6a69e..c503ca78b 100644 --- a/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol +++ b/contracts/hts-precompile/examples/token-create/TokenCreateCustom.sol @@ -15,9 +15,9 @@ contract TokenCreateCustomContract is HederaTokenService, ExpiryHelper, KeyHelpe string memory name, string memory symbol, string memory memo, - uint64 initialTotalSupply, + int64 initialTotalSupply, int64 maxSupply, - uint32 decimals, + int32 decimals, bool freezeDefaultStatus, address treasury, bytes memory key diff --git a/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol b/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol index a0d4be066..ed2786990 100644 --- a/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol +++ b/contracts/hts-precompile/examples/token-manage/TokenManagementContract.sol @@ -70,7 +70,7 @@ contract TokenManagementContract is HederaTokenService, ExpiryHelper, KeyHelper emit UnpausedToken(true); } - function wipeTokenAccountPublic(address token, address account, uint32 amount) public returns (int responseCode) { + function wipeTokenAccountPublic(address token, address account, int64 amount) public returns (int responseCode) { responseCode = HederaTokenService.wipeTokenAccount(token, account, amount); emit ResponseCode(responseCode); @@ -92,7 +92,7 @@ contract TokenManagementContract is HederaTokenService, ExpiryHelper, KeyHelper (responseCode) = HederaTokenService.updateTokenInfo(token, tokenInfo); emit ResponseCode(responseCode); - if(responseCode != HederaResponseCodes.SUCCESS) { + if (responseCode != HederaResponseCodes.SUCCESS) { revert(); } } @@ -101,7 +101,7 @@ contract TokenManagementContract is HederaTokenService, ExpiryHelper, KeyHelper (responseCode) = HederaTokenService.updateTokenExpiryInfo(token, expiryInfo); emit ResponseCode(responseCode); - if(responseCode != HederaResponseCodes.SUCCESS) { + if (responseCode != HederaResponseCodes.SUCCESS) { revert(); } } @@ -110,12 +110,11 @@ contract TokenManagementContract is HederaTokenService, ExpiryHelper, KeyHelper (responseCode) = HederaTokenService.updateTokenKeys(token, keys); emit ResponseCode(responseCode); - if(responseCode != HederaResponseCodes.SUCCESS) { + if (responseCode != HederaResponseCodes.SUCCESS) { revert(); } } - - function burnTokenPublic(address token, uint64 amount, int64[] memory serialNumbers) external returns (int256 responseCode, uint64 newTotalSupply) { + function burnTokenPublic(address token, int64 amount, int64[] memory serialNumbers) external returns (int256 responseCode, int64 newTotalSupply) { (responseCode, newTotalSupply) = HederaTokenService.burnToken(token, amount, serialNumbers); emit ResponseCode(responseCode); diff --git a/contracts/safe-hts-precompile/SafeHTS.sol b/contracts/safe-hts-precompile/SafeHTS.sol index 75800e55e..137223144 100644 --- a/contracts/safe-hts-precompile/SafeHTS.sol +++ b/contracts/safe-hts-precompile/SafeHTS.sol @@ -9,7 +9,7 @@ library SafeHTS { address constant precompileAddress = address(0x167); // 90 days in seconds - uint32 constant defaultAutoRenewPeriod = 7776000; + int32 constant defaultAutoRenewPeriod = 7776000; error CryptoTransferFailed(); error MintFailed(); @@ -63,21 +63,21 @@ library SafeHTS { if (!tryDecodeSuccessResponseCode(success, result)) revert CryptoTransferFailed(); } - function safeMintToken(address token, uint64 amount, bytes[] memory metadata) external - returns (uint64 newTotalSupply, int64[] memory serialNumbers) { + function safeMintToken(address token, int64 amount, bytes[] memory metadata) external + returns (int64 newTotalSupply, int64[] memory serialNumbers) { int32 responseCode; (bool success, bytes memory result) = precompileAddress.call( abi.encodeWithSelector(IHederaTokenService.mintToken.selector, token, amount, metadata)); (responseCode, newTotalSupply, serialNumbers) = success - ? abi.decode(result, (int32, uint64, int64[])) - : (HederaResponseCodes.UNKNOWN, 0, new int64[](0)); + ? abi.decode(result, (int32, int64, int64[])) + : (HederaResponseCodes.UNKNOWN, int64(0), new int64[](0)); if (responseCode != HederaResponseCodes.SUCCESS) revert MintFailed(); } - function safeBurnToken(address token, uint64 amount, int64[] memory serialNumbers) external - returns (uint64 newTotalSupply) + function safeBurnToken(address token, int64 amount, int64[] memory serialNumbers) external + returns (int64 newTotalSupply) { int32 responseCode; (bool success, bytes memory result) = precompileAddress.call( @@ -85,8 +85,8 @@ library SafeHTS { token, amount, serialNumbers)); (responseCode, newTotalSupply) = success - ? abi.decode(result, (int32, uint64)) - : (HederaResponseCodes.UNKNOWN, 0); + ? abi.decode(result, (int32, int64)) + : (HederaResponseCodes.UNKNOWN, int64(0)); if (responseCode != HederaResponseCodes.SUCCESS) revert BurnFailed(); } @@ -146,8 +146,8 @@ library SafeHTS { if (!tryDecodeSuccessResponseCode(success, result)) revert NFTTransferFailed(); } - function safeCreateFungibleToken(IHederaTokenService.HederaToken memory token, uint initialTotalSupply, - uint decimals) external returns (address tokenAddress){ + function safeCreateFungibleToken(IHederaTokenService.HederaToken memory token, int64 initialTotalSupply, + int32 decimals) external returns (address tokenAddress){ nonEmptyExpiry(token); int32 responseCode; (bool success, bytes memory result) = precompileAddress.call{value: msg.value}( @@ -161,8 +161,8 @@ library SafeHTS { } function safeCreateFungibleTokenWithCustomFees(IHederaTokenService.HederaToken memory token, - uint initialTotalSupply, - uint decimals, + int64 initialTotalSupply, + int32 decimals, IHederaTokenService.FixedFee[] memory fixedFees, IHederaTokenService.FractionalFee[] memory fractionalFees) external returns (address tokenAddress){ @@ -400,7 +400,7 @@ library SafeHTS { if (!tryDecodeSuccessResponseCode(success, result)) revert UnpauseTokenFailed(); } - function safeWipeTokenAccount(address token, address account, uint32 amount) external { + function safeWipeTokenAccount(address token, address account, int64 amount) external { (bool success, bytes memory result) = precompileAddress.call( abi.encodeWithSelector(IHederaTokenService.wipeTokenAccount.selector, token, account, amount)); if (!tryDecodeSuccessResponseCode(success, result)) revert WipeTokenAccountFailed(); diff --git a/contracts/safe-hts-precompile/SafeOperations.sol b/contracts/safe-hts-precompile/SafeOperations.sol index 0ffa0bb85..37103f81a 100644 --- a/contracts/safe-hts-precompile/SafeOperations.sol +++ b/contracts/safe-hts-precompile/SafeOperations.sol @@ -46,14 +46,14 @@ contract SafeOperations { SafeHTS.safeCryptoTransfer(tokenTransfers); } - function safeMintToken(address token, uint64 amount, bytes[] memory metadata) external - returns (uint64 newTotalSupply, int64[] memory serialNumbers) + function safeMintToken(address token, int64 amount, bytes[] memory metadata) external + returns (int64 newTotalSupply, int64[] memory serialNumbers) { (newTotalSupply, serialNumbers) = SafeHTS.safeMintToken(token, amount, metadata); } - function safeBurnToken(address token, uint64 amount, int64[] memory serialNumbers) external - returns (uint64 newTotalSupply) + function safeBurnToken(address token, int64 amount, int64[] memory serialNumbers) external + returns (int64 newTotalSupply) { (newTotalSupply) = SafeHTS.safeBurnToken(token, amount, serialNumbers); } @@ -226,7 +226,7 @@ contract SafeOperations { SafeHTS.safeUnpauseToken(token); } - function safeWipeTokenAccount(address token, address account, uint32 amount) external { + function safeWipeTokenAccount(address token, address account, int64 amount) external { SafeHTS.safeWipeTokenAccount(token, account, amount); } @@ -259,9 +259,9 @@ contract SafeOperations { } function createRoyaltyFeesWithAllTypes( - uint32 numerator, - uint32 denominator, - uint32 amount, + int32 numerator, + int32 denominator, + int32 amount, address tokenId, address feeCollector) internal pure returns (IHederaTokenService.RoyaltyFee[] memory royaltyFees) { @@ -274,13 +274,13 @@ contract SafeOperations { royaltyFees[2] = royaltyFeeWithFallbackToken; } - function createRoyaltyFee(uint32 numerator, uint32 denominator, address feeCollector) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) { + function createRoyaltyFee(int32 numerator, int32 denominator, address feeCollector) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) { royaltyFee.numerator = numerator; royaltyFee.denominator = denominator; royaltyFee.feeCollector = feeCollector; } - function createRoyaltyFeeWithFallbackFee(uint32 numerator, uint32 denominator, uint32 amount, address tokenId, bool useHbarsForPayment, + function createRoyaltyFeeWithFallbackFee(int32 numerator, int32 denominator, int32 amount, address tokenId, bool useHbarsForPayment, address feeCollector) internal pure returns (IHederaTokenService.RoyaltyFee memory royaltyFee) { royaltyFee.numerator = numerator; royaltyFee.denominator = denominator; @@ -290,7 +290,7 @@ contract SafeOperations { royaltyFee.feeCollector = feeCollector; } - function createFixedFeesWithAllTypes(uint32 amount, address tokenId, address feeCollector) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) { + function createFixedFeesWithAllTypes(int32 amount, address tokenId, address feeCollector) internal pure returns (IHederaTokenService.FixedFee[] memory fixedFees) { fixedFees = new IHederaTokenService.FixedFee[](3); IHederaTokenService.FixedFee memory fixedFeeForToken = createFixedFeeForToken(amount, tokenId, feeCollector); IHederaTokenService.FixedFee memory fixedFeeForHbars = createFixedFeeForHbars(amount*2, feeCollector); @@ -300,32 +300,32 @@ contract SafeOperations { fixedFees[2] = fixedFeeForCurrentToken; } - function createFixedFeeForToken(uint32 amount, address tokenId, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { + function createFixedFeeForToken(int32 amount, address tokenId, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { fixedFee.amount = amount; fixedFee.tokenId = tokenId; fixedFee.feeCollector = feeCollector; } - function createFixedFeeForHbars(uint32 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { + function createFixedFeeForHbars(int32 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { fixedFee.amount = amount; fixedFee.useHbarsForPayment = true; fixedFee.feeCollector = feeCollector; } - function createFixedFeeForCurrentToken(uint32 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { + function createFixedFeeForCurrentToken(int32 amount, address feeCollector) internal pure returns (IHederaTokenService.FixedFee memory fixedFee) { fixedFee.amount = amount; fixedFee.useCurrentTokenForPayment = true; fixedFee.feeCollector = feeCollector; } - function createSingleFractionalFeeWithLimits(uint32 numerator, uint32 denominator, uint32 minimumAmount, uint32 maximumAmount, + function createSingleFractionalFeeWithLimits(int32 numerator, int32 denominator, int32 minimumAmount, int32 maximumAmount, bool netOfTransfers, address feeCollector) internal pure returns (IHederaTokenService.FractionalFee[] memory fractionalFees) { fractionalFees = new IHederaTokenService.FractionalFee[](1); IHederaTokenService.FractionalFee memory fractionalFee = createFractionalFeeWithLimits(numerator, denominator, minimumAmount, maximumAmount, netOfTransfers, feeCollector); fractionalFees[0] = fractionalFee; } - function createFractionalFeeWithLimits(uint32 numerator, uint32 denominator, uint32 minimumAmount, uint32 maximumAmount, + function createFractionalFeeWithLimits(int32 numerator, int32 denominator, int32 minimumAmount, int32 maximumAmount, bool netOfTransfers, address feeCollector) internal pure returns (IHederaTokenService.FractionalFee memory fractionalFee) { fractionalFee.numerator = numerator; fractionalFee.denominator = denominator;