[ { "inputs": [ { "internalType": "address", "name": "initialAuthority", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "baseTokenURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "authority", "type": "address" } ], "name": "AccessManagedInvalidAuthority", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "uint32", "name": "delay", "type": "uint32" } ], "name": "AccessManagedRequiredDelay", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" } ], "name": "AccessManagedUnauthorized", "type": "error" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_account", "type": "address" } ], "name": "AddedBlackList", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "authority", "type": "address" } ], "name": "AuthorityUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "previousBaseURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "BaseURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_account", "type": "address" } ], "name": "RemovedBlackList", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "HATCHER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "authority", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "didHatch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getMintTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "name": "getOwnTokens", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "getRarities", "outputs": [ { "internalType": "enum PalToken.Rarity[]", "name": "", "type": "uint8[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getRarity", "outputs": [ { "internalType": "enum PalToken.Rarity", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "hatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isBlackListed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isConsumingScheduledOp", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "enum PalToken.Rarity", "name": "rarity", "type": "uint8" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAuthority", "type": "address" } ], "name": "setAuthority", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseTokenURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002806380380620028068339810160408190526200003491620001a2565b828285620000428162000086565b506001620000518382620002e5565b506002620000608282620002e5565b5050600b805460ff1916905550600e6200007b8282620002e5565b5050505050620003b1565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200010257600080fd5b81516001600160401b03808211156200011f576200011f620000da565b604051601f8301601f19908116603f011681019082821181831017156200014a576200014a620000da565b81604052838152602092508660208588010111156200016857600080fd5b600091505b838210156200018c57858201830151818301840152908201906200016d565b6000602085830101528094505050505092915050565b60008060008060808587031215620001b957600080fd5b84516001600160a01b0381168114620001d157600080fd5b60208601519094506001600160401b0380821115620001ef57600080fd5b620001fd88838901620000f0565b945060408701519150808211156200021457600080fd5b6200022288838901620000f0565b935060608701519150808211156200023957600080fd5b506200024887828801620000f0565b91505092959194509250565b600181811c908216806200026957607f821691505b6020821081036200028a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002e0576000816000526020600020601f850160051c81016020861015620002bb5750805b601f850160051c820191505b81811015620002dc57828155600101620002c7565b5050505b505050565b81516001600160401b03811115620003015762000301620000da565b620003198162000312845462000254565b8462000290565b602080601f831160018114620003515760008415620003385750858301515b600019600386901b1c1916600185901b178555620002dc565b600085815260208120601f198616915b82811015620003825788860151825594840194600190910190840162000361565b5085821015620003a15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61244580620003c16000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80636c36092311610125578063a22cb465116100ad578063c8c188421161007c578063c8c18842146104bc578063d5391393146104cf578063e47d6060146104f6578063e4997dc514610519578063e985e9c51461052c57600080fd5b8063a22cb46514610472578063b88d4fde14610485578063bf7e214f14610498578063c87b56dd146104a957600080fd5b80637a9e5e4b116100f45780637a9e5e4b146104075780637aff86791461041a5780638456cb59146104415780638fb360371461044957806395d89b411461046a57600080fd5b80636c360923146103ae5780636e8b787c146103c157806370a08231146103d457806371b9faf7146103e757600080fd5b80633f4ba83a116101a85780634f6ccce7116101775780634f6ccce71461035757806355f804b31461036a5780635c975abb1461037d5780636352211e14610388578063691562a01461039b57600080fd5b80633f4ba83a1461030957806342842e0e1461031157806342966c6814610324578063487586971461033757600080fd5b80630ecb93c0116101ef5780630ecb93c01461029e57806318160ddd146102b157806323b872dd146102c35780632f745c59146102d65780633a562b78146102e957600080fd5b806301ffc9a71461022157806306fdde0314610249578063081812fc1461025e578063095ea7b314610289575b600080fd5b61023461022f366004611bfb565b61053f565b60405190151581526020015b60405180910390f35b610251610550565b6040516102409190611c68565b61027161026c366004611c7b565b6105e2565b6040516001600160a01b039091168152602001610240565b61029c610297366004611cb0565b61060b565b005b61029c6102ac366004611cda565b61061a565b6009545b604051908152602001610240565b61029c6102d1366004611cf5565b610633565b6102b56102e4366004611cb0565b6106c3565b6102fc6102f7366004611cda565b610728565b6040516102409190611d31565b61029c6107c0565b61029c61031f366004611cf5565b6107d3565b61029c610332366004611c7b565b6107f3565b61034a610345366004611c7b565b6107ff565b6040516102409190611dad565b6102b5610365366004611c7b565b610849565b61029c610378366004611e47565b6108a2565b600b5460ff16610234565b610271610396366004611c7b565b610987565b61029c6103a9366004611e90565b610992565b6102b56103bc366004611c7b565b610a05565b6102346103cf366004611c7b565b610a4c565b6102b56103e2366004611cda565b610a96565b6103fa6103f5366004611ecb565b610ade565b6040516102409190611f40565b61029c610415366004611cda565b610ba2565b6102b57f58df8a07eb0b908a8fb06fa62288d964ea1cbecee32d5c5921cec0eda0de5bee81565b61029c610c18565b610451610c29565b6040516001600160e01b03199091168152602001610240565b610251610c4d565b61029c610480366004611f8d565b610c5c565b61029c610493366004611fb9565b610c67565b6000546001600160a01b0316610271565b6102516104b7366004611c7b565b610c7e565b61029c6104ca366004611c7b565b610ce6565b6102b57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610234610504366004611cda565b600c6020526000908152604090205460ff1681565b61029c610527366004611cda565b610d12565b61023461053a366004612035565b610d24565b600061054a82610d52565b92915050565b60606001805461055f90612068565b80601f016020809104026020016040519081016040528092919081815260200182805461058b90612068565b80156105d85780601f106105ad576101008083540402835291602001916105d8565b820191906000526020600020905b8154815290600101906020018083116105bb57829003601f168201915b5050505050905090565b60006105ed82610d77565b506000828152600560205260409020546001600160a01b031661054a565b610616828233610db0565b5050565b610627335b600036610dbd565b61063081610ebd565b50565b6001600160a01b03821661066257604051633250574960e11b8152600060048201526024015b60405180910390fd5b600061066f838333610f18565b9050836001600160a01b0316816001600160a01b0316146106bd576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610659565b50505050565b60006106ce83610a96565b82106106ff5760405163295f44f760e21b81526001600160a01b038416600482015260248101839052604401610659565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6060600061073583610a96565b905060008167ffffffffffffffff81111561075257610752611dbb565b60405190808252806020026020018201604052801561077b578160200160208202803683370190505b50905060005b828110156107b85761079385826106c3565b8282815181106107a5576107a56120a2565b6020908102919091010152600101610781565b509392505050565b6107c93361061f565b6107d1610f2d565b565b6107ee83838360405180602001604052806000815250610c67565b505050565b61061660008233610f18565b6000818152600360205260408120546001600160a01b03166108335760405162461bcd60e51b8152600401610659906120b8565b5060009081526010602052604090205460ff1690565b600061085460095490565b821061087d5760405163295f44f760e21b81526000600482015260248101839052604401610659565b60098281548110610890576108906120a2565b90600052602060002001549050919050565b6108ab3361061f565b6000600e80546108ba90612068565b80601f01602080910402602001604051908101604052809291908181526020018280546108e690612068565b80156109335780601f1061090857610100808354040283529160200191610933565b820191906000526020600020905b81548152906001019060200180831161091657829003601f168201915b5050505050905081600e9081610949919061213f565b507f309b29ded109b9e28fb9885757b3e0096eb75c51d23aa4635d68bcd569f6adc1818360405161097b9291906121ff565b60405180910390a15050565b600061054a82610d77565b61099b3361061f565b6109a3610f7f565b600d80546000908152600f60209081526040808320429055925482526010905220805482919060ff191660018360048111156109e1576109e1611d75565b0217905550600d80546106169184919060006109fc83612243565b91905055610fa3565b6000818152600360205260408120546001600160a01b0316610a395760405162461bcd60e51b8152600401610659906120b8565b506000908152600f602052604090205490565b6000818152600360205260408120546001600160a01b0316610a805760405162461bcd60e51b8152600401610659906120b8565b5060009081526011602052604090205460ff1690565b60006001600160a01b038216610ac2576040516322718ad960e21b815260006004820152602401610659565b506001600160a01b031660009081526004602052604090205490565b606060008267ffffffffffffffff811115610afb57610afb611dbb565b604051908082528060200260200182016040528015610b24578160200160208202803683370190505b50905060005b838110156107b8576000610b55868684818110610b4957610b496120a2565b905060200201356107ff565b905080838381518110610b6a57610b6a6120a2565b60200260200101906004811115610b8357610b83611d75565b90816004811115610b9657610b96611d75565b90525050600101610b2a565b60005433906001600160a01b03168114610bd95760405162d1953b60e31b81526001600160a01b0382166004820152602401610659565b816001600160a01b03163b600003610c0f576040516361798f2f60e11b81526001600160a01b0383166004820152602401610659565b61061682610fbd565b610c213361061f565b6107d161100b565b60008054600160a01b900460ff16610c415750600090565b50638fb3603760e01b90565b60606002805461055f90612068565b610616338383611048565b610c72848484610633565b6106bd848484846110e7565b6060610c8982610d77565b506000610c94611209565b90506000815111610cb45760405180602001604052806000815250610cdf565b80610cbe84611218565b604051602001610ccf92919061225c565b6040516020818303038152906040525b9392505050565b610cef3361061f565b610cf7610f7f565b6000908152601160205260409020805460ff19166001179055565b610d1b3361061f565b610630816112ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b60006001600160e01b0319821663780e9d6360e01b148061054a575061054a826112fc565b6000818152600360205260408120546001600160a01b03168061054a57604051637e27328960e01b815260048101849052602401610659565b6107ee838383600161134c565b600080610df3610dd56000546001600160a01b031690565b8630610de560046000898b61228b565b610dee916122b5565b611452565b9150915081610eb65763ffffffff811615610e93576000805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee90610e4e908890889088906004016122e5565b600060405180830381600087803b158015610e6857600080fd5b505af1158015610e7c573d6000803e3d6000fd5b50506000805460ff60a01b1916905550610eb69050565b60405162d1953b60e31b81526001600160a01b0386166004820152602401610659565b5050505050565b6001600160a01b0381166000818152600c6020908152604091829020805460ff1916600117905590519182527f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc91015b60405180910390a150565b6000610f2584848461155e565b949350505050565b610f3561163c565b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600b5460ff16156107d15760405163d93c066560e01b815260040160405180910390fd5b61061682826040518060200160405280600081525061165f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90602001610f0d565b611013610f7f565b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f623390565b6001600160a01b03821661107a57604051630b61174360e31b81526001600160a01b0383166004820152602401610659565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156106bd57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611129903390889087908790600401612325565b6020604051808303816000875af1925050508015611164575060408051601f3d908101601f1916820190925261116191810190612358565b60015b6111cd573d808015611192576040519150601f19603f3d011682016040523d82523d6000602084013e611197565b606091505b5080516000036111c557604051633250574960e11b81526001600160a01b0385166004820152602401610659565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610eb657604051633250574960e11b81526001600160a01b0385166004820152602401610659565b6060600e805461055f90612068565b6060600061122583611676565b600101905060008167ffffffffffffffff81111561124557611245611dbb565b6040519080825280601f01601f19166020018201604052801561126f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461127957509392505050565b6001600160a01b0381166000818152600c6020908152604091829020805460ff1916905590519182527fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c9101610f0d565b60006001600160e01b031982166380ac58cd60e01b148061132d57506001600160e01b03198216635b5e139f60e01b145b8061054a57506301ffc9a760e01b6001600160e01b031983161461054a565b808061136057506001600160a01b03821615155b1561142257600061137084610d77565b90506001600160a01b0383161580159061139c5750826001600160a01b0316816001600160a01b031614155b80156113af57506113ad8184610d24565b155b156113d85760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610659565b81156114205783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260056020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516114c19190612375565b600060405180830381855afa9150503d80600081146114fc576040519150601f19603f3d011682016040523d82523d6000602084013e611501565b606091505b5091509150811561155357604081511061153357808060200190518101906115299190612391565b9094509250611553565b6020815110611553578080602001905181019061155091906123c9565b93505b505094509492505050565b6000828152600360209081526040808320546001600160a01b0316808452600c909252822054829060ff16806115ac57506001600160a01b0386166000908152600c602052604090205460ff165b806115c65750336000908152600c602052604090205460ff165b905080156116275760405162461bcd60e51b815260206004820152602860248201527f455243373231426c61636b4c69737461626c653a206163636f756e7420626c6160448201526718dadb1a5cdd195960c21b6064820152608401610659565b61163286868661174e565b9695505050505050565b600b5460ff166107d157604051638dfc202b60e01b815260040160405180910390fd5b6116698383611763565b6107ee60008484846110e7565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106116b55772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106116e1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106116ff57662386f26fc10000830492506010015b6305f5e1008310611717576305f5e100830492506008015b612710831061172b57612710830492506004015b6064831061173d576064830492506002015b600a831061054a5760010192915050565b6000611758610f7f565b610f258484846117c8565b6001600160a01b03821661178d57604051633250574960e11b815260006004820152602401610659565b600061179b83836000610f18565b90506001600160a01b038116156107ee576040516339e3563760e11b815260006004820152602401610659565b6000806117d6858585611895565b90506001600160a01b0381166118335761182e84600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b611856565b846001600160a01b0316816001600160a01b03161461185657611856818561198e565b6001600160a01b0385166118725761186d84611a1f565b610f25565b846001600160a01b0316816001600160a01b031614610f2557610f258585611ace565b6000828152600360205260408120546001600160a01b03908116908316156118c2576118c2818486611b1e565b6001600160a01b03811615611900576118df60008560008061134c565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b0385161561192f576001600160a01b0385166000908152600460205260409020805460010190555b60008481526003602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061199983610a96565b6000838152600860205260409020549091508082146119ec576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b600954600090611a31906001906123e6565b6000838152600a602052604081205460098054939450909284908110611a5957611a596120a2565b906000526020600020015490508060098381548110611a7a57611a7a6120a2565b6000918252602080832090910192909255828152600a90915260408082208490558582528120556009805480611ab257611ab26123f9565b6001900381819060005260206000200160009055905550505050565b60006001611adb84610a96565b611ae591906123e6565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b611b29838383611b82565b6107ee576001600160a01b038316611b5757604051637e27328960e01b815260048101829052602401610659565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610659565b60006001600160a01b03831615801590610f255750826001600160a01b0316846001600160a01b03161480611bbc5750611bbc8484610d24565b80610f255750506000908152600560205260409020546001600160a01b03908116911614919050565b6001600160e01b03198116811461063057600080fd5b600060208284031215611c0d57600080fd5b8135610cdf81611be5565b60005b83811015611c33578181015183820152602001611c1b565b50506000910152565b60008151808452611c54816020860160208601611c18565b601f01601f19169290920160200192915050565b602081526000610cdf6020830184611c3c565b600060208284031215611c8d57600080fd5b5035919050565b80356001600160a01b0381168114611cab57600080fd5b919050565b60008060408385031215611cc357600080fd5b611ccc83611c94565b946020939093013593505050565b600060208284031215611cec57600080fd5b610cdf82611c94565b600080600060608486031215611d0a57600080fd5b611d1384611c94565b9250611d2160208501611c94565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b81811015611d6957835183529284019291840191600101611d4d565b50909695505050505050565b634e487b7160e01b600052602160045260246000fd5b60058110611da957634e487b7160e01b600052602160045260246000fd5b9052565b6020810161054a8284611d8b565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611dec57611dec611dbb565b604051601f8501601f19908116603f01168101908282118183101715611e1457611e14611dbb565b81604052809350858152868686011115611e2d57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611e5957600080fd5b813567ffffffffffffffff811115611e7057600080fd5b8201601f81018413611e8157600080fd5b610f2584823560208401611dd1565b60008060408385031215611ea357600080fd5b611eac83611c94565b9150602083013560058110611ec057600080fd5b809150509250929050565b60008060208385031215611ede57600080fd5b823567ffffffffffffffff80821115611ef657600080fd5b818501915085601f830112611f0a57600080fd5b813581811115611f1957600080fd5b8660208260051b8501011115611f2e57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611d6957611f6f838551611d8b565b9284019291840191600101611f5c565b801515811461063057600080fd5b60008060408385031215611fa057600080fd5b611fa983611c94565b91506020830135611ec081611f7f565b60008060008060808587031215611fcf57600080fd5b611fd885611c94565b9350611fe660208601611c94565b925060408501359150606085013567ffffffffffffffff81111561200957600080fd5b8501601f8101871361201a57600080fd5b61202987823560208401611dd1565b91505092959194509250565b6000806040838503121561204857600080fd5b61205183611c94565b915061205f60208401611c94565b90509250929050565b600181811c9082168061207c57607f821691505b60208210810361209c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6020808252601e908201527f50616c546f6b656e3a20546f6b656e20646f6573206e6f742065786973740000604082015260600190565b601f8211156107ee576000816000526020600020601f850160051c810160208610156121185750805b601f850160051c820191505b8181101561213757828155600101612124565b505050505050565b815167ffffffffffffffff81111561215957612159611dbb565b61216d816121678454612068565b846120ef565b602080601f8311600181146121a2576000841561218a5750858301515b600019600386901b1c1916600185901b178555612137565b600085815260208120601f198616915b828110156121d1578886015182559484019460019091019084016121b2565b50858210156121ef5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006122126040830185611c3c565b82810360208401526122248185611c3c565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016122555761225561222d565b5060010190565b6000835161226e818460208801611c18565b835190830190612282818360208801611c18565b01949350505050565b6000808585111561229b57600080fd5b838611156122a857600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156122dd5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061163290830184611c3c565b60006020828403121561236a57600080fd5b8151610cdf81611be5565b60008251612387818460208701611c18565b9190910192915050565b600080604083850312156123a457600080fd5b82516123af81611f7f565b602084015190925063ffffffff81168114611ec057600080fd5b6000602082840312156123db57600080fd5b8151610cdf81611f7f565b8181038181111561054a5761054a61222d565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e80ed416a5645c274c1ef04b9e4bf4129d835c2c580d5e6a2156de4bfc9538e564736f6c63430008170033000000000000000000000000593314e915757c670aa833e5990e97ead6ee78b3000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000350616c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000350414c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f687474703a2f2f70616c2d6d6574612d746573746e65742e796179332e73706163653a373030302f76312f70616c2f0000000000000000000000000000000000