{ "_format": "hh-sol-artifact-1", "contractName": "PoraMine", "sourceName": "contracts/miner/Mine.sol", "abi": [ { "inputs": [ { "internalType": "uint256", "name": "settings", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "minerId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "beneficiary", "type": "address" } ], "name": "NewMinerId", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "epoch", "type": "uint256" }, { "indexed": true, "internalType": "bytes32", "name": "minerId", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "epochIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "recallPosition", "type": "uint256" } ], "name": "NewSubmission", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "minerId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "UpdateMinerId", "type": "event" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "contextDigest", "type": "bytes32" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "bytes32", "name": "minerId", "type": "bytes32" }, { "components": [ { "internalType": "uint256", "name": "startPosition", "type": "uint256" }, { "internalType": "uint256", "name": "mineLength", "type": "uint256" }, { "internalType": "uint64", "name": "shardId", "type": "uint64" }, { "internalType": "uint64", "name": "shardMask", "type": "uint64" } ], "internalType": "struct RecallRange", "name": "range", "type": "tuple" }, { "internalType": "uint256", "name": "recallPosition", "type": "uint256" }, { "internalType": "uint256", "name": "sealOffset", "type": "uint256" }, { "internalType": "bytes32", "name": "sealedContextDigest", "type": "bytes32" }, { "internalType": "bytes32[128]", "name": "sealedData", "type": "bytes32[128]" }, { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" } ], "internalType": "struct MineLib.PoraAnswer", "name": "answer", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "epoch", "type": "uint256" }, { "internalType": "uint256", "name": "mineStart", "type": "uint256" }, { "internalType": "bytes32", "name": "flowRoot", "type": "bytes32" }, { "internalType": "uint256", "name": "flowLength", "type": "uint256" }, { "internalType": "bytes32", "name": "blockDigest", "type": "bytes32" }, { "internalType": "bytes32", "name": "digest", "type": "bytes32" } ], "internalType": "struct MineContext", "name": "context", "type": "tuple" } ], "name": "basicCheck", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "beneficiaries", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "canSubmit", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentSubmissions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dataProofEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "difficultyAdjustRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fixedDifficulty", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "flow", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "difficulty", "type": "uint256" }, { "internalType": "address", "name": "flow_", "type": "address" }, { "internalType": "address", "name": "reward_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastMinedEpoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "contextDigest", "type": "bytes32" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "bytes32", "name": "minerId", "type": "bytes32" }, { "components": [ { "internalType": "uint256", "name": "startPosition", "type": "uint256" }, { "internalType": "uint256", "name": "mineLength", "type": "uint256" }, { "internalType": "uint64", "name": "shardId", "type": "uint64" }, { "internalType": "uint64", "name": "shardMask", "type": "uint64" } ], "internalType": "struct RecallRange", "name": "range", "type": "tuple" }, { "internalType": "uint256", "name": "recallPosition", "type": "uint256" }, { "internalType": "uint256", "name": "sealOffset", "type": "uint256" }, { "internalType": "bytes32", "name": "sealedContextDigest", "type": "bytes32" }, { "internalType": "bytes32[128]", "name": "sealedData", "type": "bytes32[128]" }, { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" } ], "internalType": "struct MineLib.PoraAnswer", "name": "answer", "type": "tuple" } ], "name": "pora", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "poraTarget", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "beneficiary", "type": "address" }, { "internalType": "uint64", "name": "seed", "type": "uint64" } ], "name": "requestMinerId", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reward", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sealDataEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "difficultyAdjustRatio_", "type": "uint256" } ], "name": "setDifficultyAdjustRatio", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "targetMineBlocks_", "type": "uint256" } ], "name": "setTargetMineBlocks", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "targetSubmissions_", "type": "uint256" } ], "name": "setTargetSubmissions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "contextDigest", "type": "bytes32" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "bytes32", "name": "minerId", "type": "bytes32" }, { "components": [ { "internalType": "uint256", "name": "startPosition", "type": "uint256" }, { "internalType": "uint256", "name": "mineLength", "type": "uint256" }, { "internalType": "uint64", "name": "shardId", "type": "uint64" }, { "internalType": "uint64", "name": "shardMask", "type": "uint64" } ], "internalType": "struct RecallRange", "name": "range", "type": "tuple" }, { "internalType": "uint256", "name": "recallPosition", "type": "uint256" }, { "internalType": "uint256", "name": "sealOffset", "type": "uint256" }, { "internalType": "bytes32", "name": "sealedContextDigest", "type": "bytes32" }, { "internalType": "bytes32[128]", "name": "sealedData", "type": "bytes32[128]" }, { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" } ], "internalType": "struct MineLib.PoraAnswer", "name": "answer", "type": "tuple" } ], "name": "submit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "targetMineBlocks", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetSubmissions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetSubmissionsNextEpoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32", "name": "minerId", "type": "bytes32" } ], "name": "transferBeneficial", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60e06040526064600355600a600455600a6005556014600655600060075560006008553480156200002f57600080fd5b5060405162002aba38038062002aba8339810160408190526200005291620000d4565b6200005d336200007b565b6001811615608052600281161560a052600416151560c052620000ee565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600060208284031215620000e757600080fd5b5051919050565b60805160a05160c0516129806200013a600039600081816102ce01528181610c2f0152610f9a0152600081816102fe01526109f101526000818161034401526109b401526129806000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80637bba7d61116100f9578063aed7522411610097578063b776a51211610071578063b776a512146103b2578063dddc61a8146103bb578063f2fde38b146103c4578063ffbc9bd0146103d757600080fd5b8063aed7522414610379578063b0628ee01461038c578063b4988fd01461039f57600080fd5b80638da5cb5b116100d35780638da5cb5b14610320578063a827918214610336578063adaa7a0f1461033f578063ae722e821461036657600080fd5b80637bba7d61146102c95780637eca5688146102f057806382975fe7146102f957600080fd5b8063343aad821161016657806348f614411161014057806348f61441146102925780635bdca8551461029b578063704d3c96146102ae578063715018a6146102c157600080fd5b8063343aad821461024357806339cd53ee146102565780633baebb751461027f57600080fd5b8063047c13f5146101ae578063158ef93e146101c35780631600c624146101e5578063228cb733146101f857806331223ba714610223578063331f3b9c1461023a575b600080fd5b6101c16101bc36600461231c565b6103df565b005b6000546101d09060ff1681565b60405190151581526020015b60405180910390f35b6101c16101f336600461234f565b6104fb565b60025461020b906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61022c60075481565b6040519081526020016101dc565b61022c60035481565b60015461020b906001600160a01b031681565b61020b61026436600461234f565b600a602052600090815260409020546001600160a01b031681565b6101c161028d3660046125e5565b610508565b61022c60095481565b6101c16102a936600461234f565b61079f565b6101c16102bc36600461234f565b6107bf565b6101c16107cc565b6101d07f000000000000000000000000000000000000000000000000000000000000000081565b61022c60055481565b6101d07f000000000000000000000000000000000000000000000000000000000000000081565b60005461010090046001600160a01b031661020b565b61022c60085481565b6101d07f000000000000000000000000000000000000000000000000000000000000000081565b6101c161037436600461267d565b6107e0565b61022c61038736600461267d565b610c5b565b6101c161039a3660046126b9565b610e5e565b6101c16103ad3660046126e3565b610f1e565b61022c60045481565b61022c60065481565b6101c16103d236600461271f565b610ff4565b6101d061106a565b60006103ec600143612750565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c084901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152600a9093529120549091506001600160a01b0316156104a15760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b6000818152600a602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a3505050565b610503611105565b600355565b815160a08201511461055c5760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610498565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708160a00151036105cf5760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610498565b600454600854106106225760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610498565b600061010061063361040082612763565b61063d9190612798565b61010061064c61040082612763565b6106569190612798565b83606001516106659190612798565b61066f9190612763565b60608401519091506106819082611165565b60015460c0840151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa1580156106d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f491906127c3565b905060006101006107086104006004612763565b6107129190612798565b8560800151610721919061281d565b90508082600001516001600160801b031610801561074c57508082602001516001600160801b031610155b6107985760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610498565b5050505050565b6107a7611105565b60058190556007546000036107bc5760048190555b50565b6107c7611105565b600655565b6107d4611105565b6107de60006113a9565b565b604081015161082a5760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610498565b6040808201516000908152600a60205220546001600160a01b0316806108925760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610498565b60015460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af11580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109019190612830565b9050600754816000015110156109675760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610498565b600754815111801561097b57506000600754115b156109a057600454600854101561099457610994611402565b60006008556005546004555b6109aa8382610508565b6109b26122b1565b7f0000000000000000000000000000000000000000000000000000000000000000156109e8576109e184611412565b90506109ef565b5060e08301515b7f000000000000000000000000000000000000000000000000000000000000000015610a78576000610a218583611526565b905082604001518114610a765760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610498565b505b610a806122b1565b90506000610a8d85610c5b565b9050610a9c856060015161179b565b600954610aa99190612798565b811115610af85760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610498565b6002546001600160a01b031663b7a3c04c610100610b1861040080612763565b610b2490610400612763565b610b2f906008612763565b610b399190612798565b8760800151610b489190612798565b60408089015190516001600160e01b031960e085901b16815260048101929092526001600160a01b03881660248301526044820152606401600060405180830381600087803b158015610b9a57600080fd5b505af1158015610bae573d6000803e3d6000fd5b505050604080870151855160085460808a015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a382516007556008805460019190600090610c1590849061281d565b90915550506004546008541015610c2d575050505050565b7f000000000000000000000000000000000000000000000000000000000000000061079857610798836117e5565b6040810151600090610caf5760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610498565b60006040518060800160405280846040015181526020018460200151815260200184600001518152602001610ce7856060015161181e565b905290506000610cf682611886565b90506000610d076104006040612763565b610d15610400610100612763565b610d1f9190612798565b610d2c6104006004612763565b610d3a610400610100612763565b610d449190612798565b610d4e9190612798565b8560a00151610d5d91906128a9565b9050610d676122b1565b610d6f6122d0565b610d7e8760e0015184866118fe565b92509050610100610d926104006004612763565b610d9c9190612798565b8760a00151610dab9190612763565b610de882604051602001610dbf91906128bd565b604051602081830303815290604052805190602001208960600151611af490919063ffffffff16565b610df2919061281d565b876080015114610e445760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610498565b610e538760a001518584611bfa565b979650505050505050565b6000818152600a60205260409020546001600160a01b03163314610ec45760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610498565b6000818152600a602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339184917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a45050565b60005460ff1615610f7c5760405162461bcd60e51b815260206004820152602260248201527f496e697469616c697a61626c653a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401610498565b6000805460ff19166001179055610f9583600019612798565b6009557f000000000000000000000000000000000000000000000000000000000000000015610fc5576000196009555b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550565b610ffc611105565b6001600160a01b0381166110615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610498565b6107bc816113a9565b600080600160009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af11580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190612830565b9050600754816000015111806110ff5750600454600854105b91505090565b6000546001600160a01b036101009091041633146107de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610498565b61010061117461040080612763565b61118090610400612763565b61118b906008612763565b6111959190612798565b82516111a191906128a9565b156111ee5760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610498565b6020820151825182916112009161281d565b11156112465760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610498565b60006112518361179b565b61010061126061040080612763565b61126c90610400612763565b61127890610400612763565b611283906008612763565b61128d9190612798565b6112979190612763565b905080836020015111156112e55760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610498565b60006112f18383611e7e565b905080846020015110156113405760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610498565b83606001518460400151166001600160401b03166000146113a35760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610498565b50505050565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6107de6001600160f01b03611e94565b61141a6122b1565b60408083015160c08401516080850151925161144a93906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209091012060e08301515118815260015b602061147d6104006004612763565b6114879190612798565b8110156115205760e083015161149e600183612750565b608081106114ae576114ae6128ee565b60200201516040516020016114c591815260200190565b604051602081830303815290604052805190602001208360e0015182608081106114f1576114f16128ee565b602002015118828260808110611509576115096128ee565b602002015261151960018261281d565b905061146e565b50919050565b6000805b60206115396104006004612763565b6115439190612798565b811015611591576101006020820284012080848360808110611567576115676128ee565b6020020181815250505060206101006115809190612798565b61158a908261281d565b905061152a565b5060006115a16020610100612798565b90505b60206115b36104006004612763565b6115bd9190612798565b8110156116905760005b60206115d66104006004612763565b6115e09190612798565b8110156116875760008482608081106115fb576115fb6128ee565b6020020151905060008561160f858561281d565b6080811061161f5761161f6128ee565b602002015190508181604051602001611642929190918252602082015260400190565b6040516020818303038152906040528051906020012086846080811061166a5761166a6128ee565b6020020152506116809050600183901b8261281d565b90506115c7565b5060011b6115a4565b50815161169b6122b1565b925060006101006116af6104006004612763565b6116b99190612798565b85608001516116c89190612798565b905060005b8561010001515181101561178f576000806116e96002856128a9565b60000361171957849150876101000151838151811061170a5761170a6128ee565b6020026020010151905061173e565b8761010001518381518110611730576117306128ee565b602002602001015191508490505b60408051602081018490529081018290526060016040516020818303038152906040528051906020012094506002846117779190612798565b93505050600181611788919061281d565b90506116cd565b50909150505b92915050565b606081015160009019815b6001600160401b038216156117d6576117c0600183612904565b90911690806117ce8161292b565b9150506117a6565b600160ff9091161b9392505050565b60008160200151436117f79190612750565b905060006010600954901c905060006118138284600354611f34565b90506113a381611e94565b60008160000151826020015183604001518460600151604051602001611869949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b61188e6122d0565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152825190830151604084015160608501516117959385939092909160806001611fe3565b6119066122d0565b61190e6122b1565b60005b8481101561196c5760005b604061192b6104006004612763565b6119359190612798565b81101561195957611945856120a2565b945061195260018261281d565b905061191c565b5061196560018261281d565b9050611911565b5060005b602061197f6104006004612763565b6119899190612798565b811015611a2957611999846120a2565b93508581608081106119ad576119ad6128ee565b60200201518451188282608081106119c7576119c76128ee565b6020020152856119d882600161281d565b608081106119e8576119e86128ee565b602002015184600160200201511882611a0283600161281d565b60808110611a1257611a126128ee565b6020020152611a2260028261281d565b9050611970565b506000611a3785600161281d565b90505b611a476104006040612763565b611a55610400610100612763565b611a5f9190612798565b611a6c6104006004612763565b611a7a610400610100612763565b611a849190612798565b611a8e9190612798565b811015611ae85760005b6040611aa76104006004612763565b611ab19190612798565b811015611ad557611ac1856120a2565b9450611ace60018261281d565b9050611a98565b50611ae160018261281d565b9050611a3a565b50829150935093915050565b600080610100611b0661040082612763565b611b109190612798565b8460200151611b1f9190612798565b611b2990846128a9565b60408501516060860151602087015192935083161790610100611b4e61040082612763565b611b589190612798565b611b6b906001600160401b038416612763565b1115611bb95760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610498565b610100611bc861040082612763565b611bd29190612798565b611be5906001600160401b038316612763565b8551611bf1919061281d565b95945050505050565b6000611c046122d0565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152845190850151611c6a9183918891906000608081611fe3565b905060005b60046020611c7f61040083612763565b611c899190612798565b611c939190612750565b811015611d44576000816004016020026080019050611d2e83868460808110611cbe57611cbe6128ee565b602002015187611ccf86600161281d565b60808110611cdf57611cdf6128ee565b602002015188611cf087600261281d565b60808110611d0057611d006128ee565b602002015189611d1188600361281d565b60808110611d2157611d216128ee565b6020020151866000611fe3565b9250611d3d905060048261281d565b9050611c6f565b50611e72818460046020611d5a61040083612763565b611d649190612798565b611d6e9190612750565b60808110611d7e57611d7e6128ee565b602002015185600360206104006004611d979190612763565b611da19190612798565b611dab9190612750565b60808110611dbb57611dbb6128ee565b602002015186600260206104006004611dd49190612763565b611dde9190612798565b611de89190612750565b60808110611df857611df86128ee565b602002015187600160206104006004611e119190612763565b611e1b9190612798565b611e259190612750565b60808110611e3557611e356128ee565b602002015160206104006004611e4b9190612763565b611e559190612798565b611e60906020612763565b611e6b90608061281d565b6001611fe3565b519150505b9392505050565b6000818310611e8d5781611e77565b5090919050565b60095460065460109190911c9060008184611eb0600183612750565b611eba9086612763565b611ec4919061281d565b611ece9190612798565b9050611edb836002612763565b811115611ef057611eed836002612763565b90505b611efb600284612798565b811015611f1057611f0d600284612798565b90505b6001600160f01b03811115611f2957506001600160f01b035b60101b600955505050565b6000808060001985870985870292508281108382030391505080600003611f6e57838281611f6457611f64612782565b0492505050611e77565b808411611f7a57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b611feb6122d0565b600c6000611ff88561210f565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f5909401825293945091869184016009600019fa61209457600080fd5b505050979650505050505050565b6120aa6122d0565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b60208083019190915282519083015161179591839160008060406001611fe3565b6121176122d0565b6201000082101561215b57600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b64010000000082101561219b57600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b031916612143565b680100000000000000008210156121b5576121438261224b565b600160801b821015612205576001600160401b038216604083901c6121d98261224b565b6001600160c01b03191683526121ee8161224b565b6001600160c01b0319166020840152506122469050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610498565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461224657600080fd5b80356001600160401b038116811461224657600080fd5b6000806040838503121561232f57600080fd5b612338836122ee565b915061234660208401612305565b90509250929050565b60006020828403121561236157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156123a1576123a1612368565b60405290565b60405160c081016001600160401b03811182821017156123a1576123a1612368565b6000608082840312156123db57600080fd5b604051608081018181106001600160401b03821117156123fd576123fd612368565b8060405250809150823581526020830135602082015261241f60408401612305565b604082015261243060608401612305565b60608201525092915050565b600082601f83011261244d57600080fd5b6040516110008082018281106001600160401b038211171561247157612471612368565b6040528301818582111561248457600080fd5b845b8281101561249e578035825260209182019101612486565b509195945050505050565b600082601f8301126124ba57600080fd5b813560206001600160401b03808311156124d6576124d6612368565b8260051b604051601f19603f830116810181811084821117156124fb576124fb612368565b60405293845285810183019383810192508785111561251957600080fd5b83870191505b84821015610e535781358352918301919083019061251f565b6000611160828403121561254b57600080fd5b61255361237e565b905081358152602082013560208201526040820135604082015261257a83606084016123c9565b606082015260e082013560808201526101008083013560a083015261012083013560c08301526125ae84610140850161243c565b60e08301526111408301356001600160401b038111156125cd57600080fd5b6125d9858286016124a9565b82840152505092915050565b60008082840360e08112156125f957600080fd5b83356001600160401b0381111561260f57600080fd5b61261b86828701612538565b93505060c0601f198201121561263057600080fd5b506126396123a7565b6020840135815260408401356020820152606084013560408201526080840135606082015260a0840135608082015260c084013560a0820152809150509250929050565b60006020828403121561268f57600080fd5b81356001600160401b038111156126a557600080fd5b6126b184828501612538565b949350505050565b600080604083850312156126cc57600080fd5b6126d5836122ee565b946020939093013593505050565b6000806000606084860312156126f857600080fd5b83359250612708602085016122ee565b9150612716604085016122ee565b90509250925092565b60006020828403121561273157600080fd5b611e77826122ee565b634e487b7160e01b600052601160045260246000fd5b818103818111156117955761179561273a565b600081600019048311821515161561277d5761277d61273a565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826127a7576127a7612782565b500490565b80516001600160801b038116811461224657600080fd5b6000604082840312156127d557600080fd5b604051604081018181106001600160401b03821117156127f7576127f7612368565b604052612803836127ac565b8152612811602084016127ac565b60208201529392505050565b808201808211156117955761179561273a565b600060c0828403121561284257600080fd5b60405160c081018181106001600160401b038211171561286457612864612368565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000826128b8576128b8612782565b500690565b60408101818360005b60028110156128e55781518352602092830192909101906001016128c6565b50505092915050565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038281168282160390808211156129245761292461273a565b5092915050565b600060ff821660ff81036129415761294161273a565b6001019291505056fea2646970667358221220a7ebe4d45aface1c050e3575a083f5502eb41924a9a375dd36342247acb8552364736f6c63430008100033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80637bba7d61116100f9578063aed7522411610097578063b776a51211610071578063b776a512146103b2578063dddc61a8146103bb578063f2fde38b146103c4578063ffbc9bd0146103d757600080fd5b8063aed7522414610379578063b0628ee01461038c578063b4988fd01461039f57600080fd5b80638da5cb5b116100d35780638da5cb5b14610320578063a827918214610336578063adaa7a0f1461033f578063ae722e821461036657600080fd5b80637bba7d61146102c95780637eca5688146102f057806382975fe7146102f957600080fd5b8063343aad821161016657806348f614411161014057806348f61441146102925780635bdca8551461029b578063704d3c96146102ae578063715018a6146102c157600080fd5b8063343aad821461024357806339cd53ee146102565780633baebb751461027f57600080fd5b8063047c13f5146101ae578063158ef93e146101c35780631600c624146101e5578063228cb733146101f857806331223ba714610223578063331f3b9c1461023a575b600080fd5b6101c16101bc36600461231c565b6103df565b005b6000546101d09060ff1681565b60405190151581526020015b60405180910390f35b6101c16101f336600461234f565b6104fb565b60025461020b906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61022c60075481565b6040519081526020016101dc565b61022c60035481565b60015461020b906001600160a01b031681565b61020b61026436600461234f565b600a602052600090815260409020546001600160a01b031681565b6101c161028d3660046125e5565b610508565b61022c60095481565b6101c16102a936600461234f565b61079f565b6101c16102bc36600461234f565b6107bf565b6101c16107cc565b6101d07f000000000000000000000000000000000000000000000000000000000000000081565b61022c60055481565b6101d07f000000000000000000000000000000000000000000000000000000000000000081565b60005461010090046001600160a01b031661020b565b61022c60085481565b6101d07f000000000000000000000000000000000000000000000000000000000000000081565b6101c161037436600461267d565b6107e0565b61022c61038736600461267d565b610c5b565b6101c161039a3660046126b9565b610e5e565b6101c16103ad3660046126e3565b610f1e565b61022c60045481565b61022c60065481565b6101c16103d236600461271f565b610ff4565b6101d061106a565b60006103ec600143612750565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c084901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152600a9093529120549091506001600160a01b0316156104a15760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b6000818152600a602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a3505050565b610503611105565b600355565b815160a08201511461055c5760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610498565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708160a00151036105cf5760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610498565b600454600854106106225760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610498565b600061010061063361040082612763565b61063d9190612798565b61010061064c61040082612763565b6106569190612798565b83606001516106659190612798565b61066f9190612763565b60608401519091506106819082611165565b60015460c0840151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa1580156106d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f491906127c3565b905060006101006107086104006004612763565b6107129190612798565b8560800151610721919061281d565b90508082600001516001600160801b031610801561074c57508082602001516001600160801b031610155b6107985760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610498565b5050505050565b6107a7611105565b60058190556007546000036107bc5760048190555b50565b6107c7611105565b600655565b6107d4611105565b6107de60006113a9565b565b604081015161082a5760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610498565b6040808201516000908152600a60205220546001600160a01b0316806108925760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610498565b60015460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af11580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109019190612830565b9050600754816000015110156109675760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610498565b600754815111801561097b57506000600754115b156109a057600454600854101561099457610994611402565b60006008556005546004555b6109aa8382610508565b6109b26122b1565b7f0000000000000000000000000000000000000000000000000000000000000000156109e8576109e184611412565b90506109ef565b5060e08301515b7f000000000000000000000000000000000000000000000000000000000000000015610a78576000610a218583611526565b905082604001518114610a765760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610498565b505b610a806122b1565b90506000610a8d85610c5b565b9050610a9c856060015161179b565b600954610aa99190612798565b811115610af85760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610498565b6002546001600160a01b031663b7a3c04c610100610b1861040080612763565b610b2490610400612763565b610b2f906008612763565b610b399190612798565b8760800151610b489190612798565b60408089015190516001600160e01b031960e085901b16815260048101929092526001600160a01b03881660248301526044820152606401600060405180830381600087803b158015610b9a57600080fd5b505af1158015610bae573d6000803e3d6000fd5b505050604080870151855160085460808a015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a382516007556008805460019190600090610c1590849061281d565b90915550506004546008541015610c2d575050505050565b7f000000000000000000000000000000000000000000000000000000000000000061079857610798836117e5565b6040810151600090610caf5760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610498565b60006040518060800160405280846040015181526020018460200151815260200184600001518152602001610ce7856060015161181e565b905290506000610cf682611886565b90506000610d076104006040612763565b610d15610400610100612763565b610d1f9190612798565b610d2c6104006004612763565b610d3a610400610100612763565b610d449190612798565b610d4e9190612798565b8560a00151610d5d91906128a9565b9050610d676122b1565b610d6f6122d0565b610d7e8760e0015184866118fe565b92509050610100610d926104006004612763565b610d9c9190612798565b8760a00151610dab9190612763565b610de882604051602001610dbf91906128bd565b604051602081830303815290604052805190602001208960600151611af490919063ffffffff16565b610df2919061281d565b876080015114610e445760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610498565b610e538760a001518584611bfa565b979650505050505050565b6000818152600a60205260409020546001600160a01b03163314610ec45760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610498565b6000818152600a602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339184917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a45050565b60005460ff1615610f7c5760405162461bcd60e51b815260206004820152602260248201527f496e697469616c697a61626c653a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401610498565b6000805460ff19166001179055610f9583600019612798565b6009557f000000000000000000000000000000000000000000000000000000000000000015610fc5576000196009555b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550565b610ffc611105565b6001600160a01b0381166110615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610498565b6107bc816113a9565b600080600160009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af11580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190612830565b9050600754816000015111806110ff5750600454600854105b91505090565b6000546001600160a01b036101009091041633146107de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610498565b61010061117461040080612763565b61118090610400612763565b61118b906008612763565b6111959190612798565b82516111a191906128a9565b156111ee5760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610498565b6020820151825182916112009161281d565b11156112465760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610498565b60006112518361179b565b61010061126061040080612763565b61126c90610400612763565b61127890610400612763565b611283906008612763565b61128d9190612798565b6112979190612763565b905080836020015111156112e55760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610498565b60006112f18383611e7e565b905080846020015110156113405760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610498565b83606001518460400151166001600160401b03166000146113a35760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610498565b50505050565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6107de6001600160f01b03611e94565b61141a6122b1565b60408083015160c08401516080850151925161144a93906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209091012060e08301515118815260015b602061147d6104006004612763565b6114879190612798565b8110156115205760e083015161149e600183612750565b608081106114ae576114ae6128ee565b60200201516040516020016114c591815260200190565b604051602081830303815290604052805190602001208360e0015182608081106114f1576114f16128ee565b602002015118828260808110611509576115096128ee565b602002015261151960018261281d565b905061146e565b50919050565b6000805b60206115396104006004612763565b6115439190612798565b811015611591576101006020820284012080848360808110611567576115676128ee565b6020020181815250505060206101006115809190612798565b61158a908261281d565b905061152a565b5060006115a16020610100612798565b90505b60206115b36104006004612763565b6115bd9190612798565b8110156116905760005b60206115d66104006004612763565b6115e09190612798565b8110156116875760008482608081106115fb576115fb6128ee565b6020020151905060008561160f858561281d565b6080811061161f5761161f6128ee565b602002015190508181604051602001611642929190918252602082015260400190565b6040516020818303038152906040528051906020012086846080811061166a5761166a6128ee565b6020020152506116809050600183901b8261281d565b90506115c7565b5060011b6115a4565b50815161169b6122b1565b925060006101006116af6104006004612763565b6116b99190612798565b85608001516116c89190612798565b905060005b8561010001515181101561178f576000806116e96002856128a9565b60000361171957849150876101000151838151811061170a5761170a6128ee565b6020026020010151905061173e565b8761010001518381518110611730576117306128ee565b602002602001015191508490505b60408051602081018490529081018290526060016040516020818303038152906040528051906020012094506002846117779190612798565b93505050600181611788919061281d565b90506116cd565b50909150505b92915050565b606081015160009019815b6001600160401b038216156117d6576117c0600183612904565b90911690806117ce8161292b565b9150506117a6565b600160ff9091161b9392505050565b60008160200151436117f79190612750565b905060006010600954901c905060006118138284600354611f34565b90506113a381611e94565b60008160000151826020015183604001518460600151604051602001611869949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b61188e6122d0565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152825190830151604084015160608501516117959385939092909160806001611fe3565b6119066122d0565b61190e6122b1565b60005b8481101561196c5760005b604061192b6104006004612763565b6119359190612798565b81101561195957611945856120a2565b945061195260018261281d565b905061191c565b5061196560018261281d565b9050611911565b5060005b602061197f6104006004612763565b6119899190612798565b811015611a2957611999846120a2565b93508581608081106119ad576119ad6128ee565b60200201518451188282608081106119c7576119c76128ee565b6020020152856119d882600161281d565b608081106119e8576119e86128ee565b602002015184600160200201511882611a0283600161281d565b60808110611a1257611a126128ee565b6020020152611a2260028261281d565b9050611970565b506000611a3785600161281d565b90505b611a476104006040612763565b611a55610400610100612763565b611a5f9190612798565b611a6c6104006004612763565b611a7a610400610100612763565b611a849190612798565b611a8e9190612798565b811015611ae85760005b6040611aa76104006004612763565b611ab19190612798565b811015611ad557611ac1856120a2565b9450611ace60018261281d565b9050611a98565b50611ae160018261281d565b9050611a3a565b50829150935093915050565b600080610100611b0661040082612763565b611b109190612798565b8460200151611b1f9190612798565b611b2990846128a9565b60408501516060860151602087015192935083161790610100611b4e61040082612763565b611b589190612798565b611b6b906001600160401b038416612763565b1115611bb95760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610498565b610100611bc861040082612763565b611bd29190612798565b611be5906001600160401b038316612763565b8551611bf1919061281d565b95945050505050565b6000611c046122d0565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152845190850151611c6a9183918891906000608081611fe3565b905060005b60046020611c7f61040083612763565b611c899190612798565b611c939190612750565b811015611d44576000816004016020026080019050611d2e83868460808110611cbe57611cbe6128ee565b602002015187611ccf86600161281d565b60808110611cdf57611cdf6128ee565b602002015188611cf087600261281d565b60808110611d0057611d006128ee565b602002015189611d1188600361281d565b60808110611d2157611d216128ee565b6020020151866000611fe3565b9250611d3d905060048261281d565b9050611c6f565b50611e72818460046020611d5a61040083612763565b611d649190612798565b611d6e9190612750565b60808110611d7e57611d7e6128ee565b602002015185600360206104006004611d979190612763565b611da19190612798565b611dab9190612750565b60808110611dbb57611dbb6128ee565b602002015186600260206104006004611dd49190612763565b611dde9190612798565b611de89190612750565b60808110611df857611df86128ee565b602002015187600160206104006004611e119190612763565b611e1b9190612798565b611e259190612750565b60808110611e3557611e356128ee565b602002015160206104006004611e4b9190612763565b611e559190612798565b611e60906020612763565b611e6b90608061281d565b6001611fe3565b519150505b9392505050565b6000818310611e8d5781611e77565b5090919050565b60095460065460109190911c9060008184611eb0600183612750565b611eba9086612763565b611ec4919061281d565b611ece9190612798565b9050611edb836002612763565b811115611ef057611eed836002612763565b90505b611efb600284612798565b811015611f1057611f0d600284612798565b90505b6001600160f01b03811115611f2957506001600160f01b035b60101b600955505050565b6000808060001985870985870292508281108382030391505080600003611f6e57838281611f6457611f64612782565b0492505050611e77565b808411611f7a57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b611feb6122d0565b600c6000611ff88561210f565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f5909401825293945091869184016009600019fa61209457600080fd5b505050979650505050505050565b6120aa6122d0565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b60208083019190915282519083015161179591839160008060406001611fe3565b6121176122d0565b6201000082101561215b57600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b64010000000082101561219b57600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b031916612143565b680100000000000000008210156121b5576121438261224b565b600160801b821015612205576001600160401b038216604083901c6121d98261224b565b6001600160c01b03191683526121ee8161224b565b6001600160c01b0319166020840152506122469050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610498565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461224657600080fd5b80356001600160401b038116811461224657600080fd5b6000806040838503121561232f57600080fd5b612338836122ee565b915061234660208401612305565b90509250929050565b60006020828403121561236157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156123a1576123a1612368565b60405290565b60405160c081016001600160401b03811182821017156123a1576123a1612368565b6000608082840312156123db57600080fd5b604051608081018181106001600160401b03821117156123fd576123fd612368565b8060405250809150823581526020830135602082015261241f60408401612305565b604082015261243060608401612305565b60608201525092915050565b600082601f83011261244d57600080fd5b6040516110008082018281106001600160401b038211171561247157612471612368565b6040528301818582111561248457600080fd5b845b8281101561249e578035825260209182019101612486565b509195945050505050565b600082601f8301126124ba57600080fd5b813560206001600160401b03808311156124d6576124d6612368565b8260051b604051601f19603f830116810181811084821117156124fb576124fb612368565b60405293845285810183019383810192508785111561251957600080fd5b83870191505b84821015610e535781358352918301919083019061251f565b6000611160828403121561254b57600080fd5b61255361237e565b905081358152602082013560208201526040820135604082015261257a83606084016123c9565b606082015260e082013560808201526101008083013560a083015261012083013560c08301526125ae84610140850161243c565b60e08301526111408301356001600160401b038111156125cd57600080fd5b6125d9858286016124a9565b82840152505092915050565b60008082840360e08112156125f957600080fd5b83356001600160401b0381111561260f57600080fd5b61261b86828701612538565b93505060c0601f198201121561263057600080fd5b506126396123a7565b6020840135815260408401356020820152606084013560408201526080840135606082015260a0840135608082015260c084013560a0820152809150509250929050565b60006020828403121561268f57600080fd5b81356001600160401b038111156126a557600080fd5b6126b184828501612538565b949350505050565b600080604083850312156126cc57600080fd5b6126d5836122ee565b946020939093013593505050565b6000806000606084860312156126f857600080fd5b83359250612708602085016122ee565b9150612716604085016122ee565b90509250925092565b60006020828403121561273157600080fd5b611e77826122ee565b634e487b7160e01b600052601160045260246000fd5b818103818111156117955761179561273a565b600081600019048311821515161561277d5761277d61273a565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826127a7576127a7612782565b500490565b80516001600160801b038116811461224657600080fd5b6000604082840312156127d557600080fd5b604051604081018181106001600160401b03821117156127f7576127f7612368565b604052612803836127ac565b8152612811602084016127ac565b60208201529392505050565b808201808211156117955761179561273a565b600060c0828403121561284257600080fd5b60405160c081018181106001600160401b038211171561286457612864612368565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000826128b8576128b8612782565b500690565b60408101818360005b60028110156128e55781518352602092830192909101906001016128c6565b50505092915050565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038281168282160390808211156129245761292461273a565b5092915050565b600060ff821660ff81036129415761294161273a565b6001019291505056fea2646970667358221220a7ebe4d45aface1c050e3575a083f5502eb41924a9a375dd36342247acb8552364736f6c63430008100033", "linkReferences": {}, "deployedLinkReferences": {} }