[ { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "string", "name": "message", "type": "string" } ], "name": "CommitMessage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes4", "name": "functionId", "type": "bytes4" }, { "indexed": true, "internalType": "address", "name": "oldDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newDelegate", "type": "address" }, { "indexed": false, "internalType": "string", "name": "functionSignature", "type": "string" } ], "name": "FunctionUpdate", "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": "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_allowAddress", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "funcSignatures", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "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": "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": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nftLock", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "renounceOwnership", "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": "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_delegate", "type": "address" }, { "internalType": "string", "name": "_functionSignatures", "type": "string" }, { "internalType": "string", "name": "_commitMessage", "type": "string" } ], "name": "updateContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002b4438038062002b448339810160408190526200003491620005e5565b6040518060400160405280600d81526020016c58414e413a5765617261626c6560981b815250604051806040016040528060038152602001622c2ba960e91b8152508160049081620000879190620006bc565b506005620000968282620006bc565b505050620000b3620000ad6200040460201b60201c565b62000408565b600380546001600160a01b0319163017905533600090815260106020908152604091829020805460ff1916600117905581516060810190925260398083529062002aaa90830139600f90620001099082620006bc565b506103e86011556001600d55601280546001600160a01b03191633179055604080516060810190915260258082526000919062002ae36020830139600354909150620001609082906001600160a01b03166200045a565b6040805180820190915260128152717365744261736555524928737472696e672960701b60208201526200019581846200045a565b6040518060600160405280603c815260200162002b08603c91399050620001bd81846200045a565b506040805180820190915260128152716275726e41646d696e2875696e743235362960701b6020820152620001f381846200045a565b50604080518082019091526012815271736574417574686f7228616464726573732960701b60208201526200022981846200045a565b5060408051808201909152601581527f7365744d6178537570706c792875696e7432353629000000000000000000000060208201526200026a81846200045a565b50604080518082019091526011815270746f6b656e5552492875696e743235362960781b60208201526200029f81846200045a565b5060408051808201909152600d81526c746f74616c537570706c79282960981b6020820152620002d081846200045a565b5060408051808201909152601381527f736574526f79616c74792875696e74323536290000000000000000000000000060208201526200031181846200045a565b5060408051808201909152600e81526d6765744d6178537570706c79282960901b60208201526200034381846200045a565b50604080518082019091526012815271676574417574686f722875696e743235362960701b60208201526200037981846200045a565b5060408051808201909152601681527f676574526f79616c74794665652875696e7432353629000000000000000000006020820152620003ba81846200045a565b5060408051808201909152601381527f67657443726561746f722875696e7432353629000000000000000000000000006020820152620003fb81846200045a565b50505062000801565b3390565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b81516020808401919091206001600160e01b031981166000908152918290526040822080546001600160a01b0319166001600160a01b0385161790556001805480820182559252907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601620004d08482620006bc565b50600154604051600290620004e7908690620007ae565b908152602001604051809103902081905550816001600160a01b031660006001600160a01b0316826001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f5353866040516200054a9190620007cc565b60405180910390a47faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de604051620005d8906020808252603a908201527f4164646564204552433135333820757064617465436f6e74726163742066756e60408201527f6374696f6e20617420636f6e7472616374206372656174696f6e000000000000606082015260800190565b60405180910390a1505050565b600060208284031215620005f857600080fd5b81516001600160a01b03811681146200061057600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200064257607f821691505b6020821081036200066357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006b757600081815260208120601f850160051c81016020861015620006925750805b601f850160051c820191505b81811015620006b3578281556001016200069e565b5050505b505050565b81516001600160401b03811115620006d857620006d862000617565b620006f081620006e984546200062d565b8462000669565b602080601f8311600181146200072857600084156200070f5750858301515b600019600386901b1c1916600185901b178555620006b3565b600085815260208120601f198616915b82811015620007595788860151825594840194600190910190840162000738565b5085821015620007785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60005b83811015620007a55781810151838201526020016200078b565b50506000910152565b60008251620007c281846020870162000788565b9190910192915050565b6020815260008251806020840152620007ed81604085016020870162000788565b601f01601f19169190910160400192915050565b61229980620008116000396000f3fe6080604052600436106101405760003560e01c80636c0360eb116100b6578063a0a2daf01161006f578063a0a2daf014610461578063a22cb46514610497578063b88d4fde146104b7578063c87b56dd146104d7578063e985e9c5146104f7578063f2fde38b1461051757610140565b80636c0360eb146103a657806370a08231146103bb578063715018a6146103e95780638822048e146103fe5780638da5cb5b1461042e57806395d89b411461044c57610140565b806326a6860a1161010857806326a6860a146102c657806342842e0e146102e6578063495d815114610306578063521b52a41461033657806361455567146103665780636352211e1461038657610140565b806301ffc9a7146101f757806306fdde031461022c578063081812fc1461024e578063095ea7b31461028657806323b872dd146102a6575b6000356001600160e01b03191615801561015957503415155b1561016057005b600080356001600160e01b0319168152602081905260409020546001600160a01b0316806101d05760405162461bcd60e51b8152602060048201526018602482015277233ab731ba34b7b7103237b2b9903737ba1032bc34b9ba1760411b60448201526064015b60405180910390fd5b60405136600082376000803683855af43d806000843e8180156101f1578184f35b8184fd5b005b34801561020357600080fd5b506102176102123660046119b3565b610537565b60405190151581526020015b60405180910390f35b34801561023857600080fd5b50610241610589565b6040516102239190611a20565b34801561025a57600080fd5b5061026e610269366004611a33565b61061b565b6040516001600160a01b039091168152602001610223565b34801561029257600080fd5b506101f56102a1366004611a68565b610642565b3480156102b257600080fd5b506101f56102c1366004611a92565b610688565b3480156102d257600080fd5b506102416102e1366004611a33565b61071e565b3480156102f257600080fd5b506101f5610301366004611a92565b6107ca565b34801561031257600080fd5b50610217610321366004611a33565b600b6020526000908152604090205460ff1681565b34801561034257600080fd5b50610217610351366004611ace565b60106020526000908152604090205460ff1681565b34801561037257600080fd5b506101f5610381366004611b32565b61085b565b34801561039257600080fd5b5061026e6103a1366004611a33565b610e66565b3480156103b257600080fd5b50610241610ec6565b3480156103c757600080fd5b506103db6103d6366004611ace565b610ed3565b604051908152602001610223565b3480156103f557600080fd5b506101f5610f59565b34801561040a57600080fd5b50610217610419366004611ace565b600a6020526000908152604090205460ff1681565b34801561043a57600080fd5b50600c546001600160a01b031661026e565b34801561045857600080fd5b50610241610f8f565b34801561046d57600080fd5b5061026e61047c3660046119b3565b6000602081905290815260409020546001600160a01b031681565b3480156104a357600080fd5b506101f56104b2366004611bb3565b610f9e565b3480156104c357600080fd5b506101f56104d2366004611c05565b610fe0565b3480156104e357600080fd5b506102416104f2366004611a33565b611018565b34801561050357600080fd5b50610217610512366004611ce1565b6110f3565b34801561052357600080fd5b506101f5610532366004611ace565b611121565b60006001600160e01b031982166380ac58cd60e01b148061056857506001600160e01b03198216635b5e139f60e01b145b8061058357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606004805461059890611d14565b80601f01602080910402602001604051908101604052809291908181526020018280546105c490611d14565b80156106115780601f106105e657610100808354040283529160200191610611565b820191906000526020600020905b8154815290600101906020018083116105f457829003601f168201915b5050505050905090565b6000610626826111bc565b506000908152600860205260409020546001600160a01b031690565b6001600160a01b0382166000908152600a602052604090205460ff1661067a5760405162461bcd60e51b81526004016101c790611d4e565b610684828261121b565b5050565b336000908152600a602052604090205460ff166106b75760405162461bcd60e51b81526004016101c790611d4e565b6000818152600b602052604090205460ff161561070e5760405162461bcd60e51b8152602060048201526015602482015274115490cdcc8c4e88139195081a5cc81b1bd8dad959605a1b60448201526064016101c7565b61071983838361132b565b505050565b6001818154811061072e57600080fd5b90600052602060002001600091509050805461074990611d14565b80601f016020809104026020016040519081016040528092919081815260200182805461077590611d14565b80156107c25780601f10610797576101008083540402835291602001916107c2565b820191906000526020600020905b8154815290600101906020018083116107a557829003601f168201915b505050505081565b336000908152600a602052604090205460ff166107f95760405162461bcd60e51b81526004016101c790611d4e565b6000818152600b602052604090205460ff16156108505760405162461bcd60e51b8152602060048201526015602482015274115490cdcc8c4e88139195081a5cc81b1bd8dad959605a1b60448201526064016101c7565b61071983838361135c565b600c546001600160a01b031633146108855760405162461bcd60e51b81526004016101c790611d85565b60006001600160a01b0386161561090c5750843b8061090c5760405162461bcd60e51b815260206004820152603960248201527f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260448201527f61637420616e64206973206e6f7420616464726573732830290000000000000060648201526084016101c7565b600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870198509596508601909401938693509150819050808080805b878a1015610e1c57895160001a925082602903610e0a578961098081611dd0565b9a5061098e9050878b611de9565b808a526020808b018290206001600160e01b031981166000908152918290526040909120548c99509097506001600160a01b0390811696509094508f16610baf576002896040516109df9190611dfc565b908152602001604051809103902054915081600003610a3b5760405162461bcd60e51b8152602060048201526018602482015277233ab731ba34b7b7103237b2b9903737ba1032bc34b9ba1760411b60448201526064016101c7565b81610a4581611e18565b60018054919450610a57925090611de9565b9050808214610aef5760018181548110610a7357610a73611e2f565b9060005260206000200160018381548110610a9057610a90611e2f565b906000526020600020019081610aa69190611e93565b50610ab2826001611f74565b600260018381548110610ac757610ac7611e2f565b90600052602060002001604051610ade9190611f87565b908152604051908190036020019020555b6001805480610b0057610b00611ffd565b600190038181906000526020600020016000610b1c919061194f565b9055600289604051610b2e9190611dfc565b90815260408051602092819003830181206000908190556001600160e01b03198a168082529381905291822080546001600160a01b031916905590916001600160a01b038816917f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f535390610ba2908e90611a20565b60405180910390a4610e05565b600289604051610bbf9190611dfc565b908152602001604051809103902054600003610d11576001600160a01b03851615610c1c5760405162461bcd60e51b815260206004820152600d60248201526c233ab731a4b21031b630b9b41760991b60448201526064016101c7565b8e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600189908060018154018082558091505060019003906000526020600020016000909190919091509081610c9b9190612013565b50600154604051600290610cb0908c90611dfc565b9081526020016040518091039020819055508e6001600160a01b031660006001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610ba29190611a20565b8e6001600160a01b0316600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031614610e05578e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508e6001600160a01b0316856001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610dfc9190611a20565b60405180910390a45b978301975b89610e1481611dd0565b9a505061095f565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c604051610e4d9291906120cd565b60405180910390a1505050505050505050505050505050565b6000818152600660205260408120546001600160a01b0316806105835760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016101c7565b600f805461074990611d14565b60006001600160a01b038216610f3d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016101c7565b506001600160a01b031660009081526007602052604090205490565b600c546001600160a01b03163314610f835760405162461bcd60e51b81526004016101c790611d85565b610f8d6000611377565b565b60606005805461059890611d14565b6001600160a01b0382166000908152600a602052604090205460ff16610fd65760405162461bcd60e51b81526004016101c790611d4e565b61068482826113c9565b610fea33836113d4565b6110065760405162461bcd60e51b81526004016101c7906120fc565b61101284848484611433565b50505050565b6000818152600660205260409020546060906001600160a01b03166110975760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016101c7565b60006110a1611466565b905060008151116110c157604051806020016040528060008152506110ec565b806110cb84611475565b6040516020016110dc92919061214a565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b600c546001600160a01b0316331461114b5760405162461bcd60e51b81526004016101c790611d85565b6001600160a01b0381166111b05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101c7565b6111b981611377565b50565b6000818152600660205260409020546001600160a01b03166111b95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016101c7565b600061122682610e66565b9050806001600160a01b0316836001600160a01b0316036112935760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016101c7565b336001600160a01b03821614806112af57506112af81336110f3565b6113215760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016101c7565b6107198383611576565b61133533826113d4565b6113515760405162461bcd60e51b81526004016101c7906120fc565b6107198383836115e4565b61071983838360405180602001604052806000815250610fe0565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610684338383611780565b6000806113e083610e66565b9050806001600160a01b0316846001600160a01b03161480611407575061140781856110f3565b8061142b5750836001600160a01b03166114208461061b565b6001600160a01b0316145b949350505050565b61143e8484846115e4565b61144a8484848461184e565b6110125760405162461bcd60e51b81526004016101c790612179565b6060600f805461059890611d14565b60608160000361149c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114c657806114b081611dd0565b91506114bf9050600a836121e1565b91506114a0565b60008167ffffffffffffffff8111156114e1576114e1611bef565b6040519080825280601f01601f19166020018201604052801561150b576020820181803683370190505b5090505b841561142b57611520600183611de9565b915061152d600a866121f5565b611538906030611f74565b60f81b81838151811061154d5761154d611e2f565b60200101906001600160f81b031916908160001a90535061156f600a866121e1565b945061150f565b600081815260086020526040902080546001600160a01b0319166001600160a01b03841690811790915581906115ab82610e66565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b826001600160a01b03166115f782610e66565b6001600160a01b03161461165b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016101c7565b6001600160a01b0382166116bd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016101c7565b6116c8600082611576565b6001600160a01b03831660009081526007602052604081208054600192906116f1908490611de9565b90915550506001600160a01b038216600090815260076020526040812080546001929061171f908490611f74565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b0316036117e15760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016101c7565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b1561194457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611892903390899088908890600401612209565b6020604051808303816000875af19250505080156118cd575060408051601f3d908101601f191682019092526118ca91810190612246565b60015b61192a573d8080156118fb576040519150601f19603f3d011682016040523d82523d6000602084013e611900565b606091505b5080516000036119225760405162461bcd60e51b81526004016101c790612179565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061142b565b506001949350505050565b50805461195b90611d14565b6000825580601f1061196b575050565b601f0160209004906000526020600020908101906111b991905b808211156119995760008155600101611985565b5090565b6001600160e01b0319811681146111b957600080fd5b6000602082840312156119c557600080fd5b81356110ec8161199d565b60005b838110156119eb5781810151838201526020016119d3565b50506000910152565b60008151808452611a0c8160208601602086016119d0565b601f01601f19169290920160200192915050565b6020815260006110ec60208301846119f4565b600060208284031215611a4557600080fd5b5035919050565b80356001600160a01b0381168114611a6357600080fd5b919050565b60008060408385031215611a7b57600080fd5b611a8483611a4c565b946020939093013593505050565b600080600060608486031215611aa757600080fd5b611ab084611a4c565b9250611abe60208501611a4c565b9150604084013590509250925092565b600060208284031215611ae057600080fd5b6110ec82611a4c565b60008083601f840112611afb57600080fd5b50813567ffffffffffffffff811115611b1357600080fd5b602083019150836020828501011115611b2b57600080fd5b9250929050565b600080600080600060608688031215611b4a57600080fd5b611b5386611a4c565b9450602086013567ffffffffffffffff80821115611b7057600080fd5b611b7c89838a01611ae9565b90965094506040880135915080821115611b9557600080fd5b50611ba288828901611ae9565b969995985093965092949392505050565b60008060408385031215611bc657600080fd5b611bcf83611a4c565b915060208301358015158114611be457600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611c1b57600080fd5b611c2485611a4c565b9350611c3260208601611a4c565b925060408501359150606085013567ffffffffffffffff80821115611c5657600080fd5b818701915087601f830112611c6a57600080fd5b813581811115611c7c57611c7c611bef565b604051601f8201601f19908116603f01168101908382118183101715611ca457611ca4611bef565b816040528281528a6020848701011115611cbd57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611cf457600080fd5b611cfd83611a4c565b9150611d0b60208401611a4c565b90509250929050565b600181811c90821680611d2857607f821691505b602082108103611d4857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601c908201527f4552433732313a207472616e73666572206e6f7420616c6c6f77656400000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060018201611de257611de2611dba565b5060010190565b8181038181111561058357610583611dba565b60008251611e0e8184602087016119d0565b9190910192915050565b600081611e2757611e27611dba565b506000190190565b634e487b7160e01b600052603260045260246000fd5b601f82111561071957600081815260208120601f850160051c81016020861015611e6c5750805b601f850160051c820191505b81811015611e8b57828155600101611e78565b505050505050565b818103611e9e575050565b611ea88254611d14565b67ffffffffffffffff811115611ec057611ec0611bef565b611ed481611ece8454611d14565b84611e45565b6000601f821160018114611f085760008315611ef05750848201545b600019600385901b1c1916600184901b178455611f6d565b600085815260209020601f19841690600086815260209020845b83811015611f425782860154825560019586019590910190602001611f22565b5085831015611f605781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b8082018082111561058357610583611dba565b6000808354611f9581611d14565b60018281168015611fad5760018114611fc257611ff1565b60ff1984168752821515830287019450611ff1565b8760005260208060002060005b85811015611fe85781548a820152908401908201611fcf565b50505082870194505b50929695505050505050565b634e487b7160e01b600052603160045260246000fd5b815167ffffffffffffffff81111561202d5761202d611bef565b61203b81611ece8454611d14565b602080601f83116001811461207057600084156120585750858301515b600019600386901b1c1916600185901b178555611e8b565b600085815260208120601f198616915b8281101561209f57888601518255948401946001909101908401612080565b50858210156120bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000835161215c8184602088016119d0565b8351908301906121708183602088016119d0565b01949350505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826121f0576121f06121cb565b500490565b600082612204576122046121cb565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061223c908301846119f4565b9695505050505050565b60006020828403121561225857600080fd5b81516110ec8161199d56fea2646970667358221220ba60d1fec590b62e191bee5f6562ecf33589bc23a78b538f535d22121e21692c64736f6c6343000811003368747470733a2f2f746573746170692e78616e616c69612e636f6d2f78616e616c69612f6765742d6e66742d6d6574613f746f6b656e49643d757064617465436f6e747261637428616464726573732c737472696e672c737472696e67296d696e7428616464726573732c75696e743235362c75696e74323536297075626c69632072657475726e732875696e743235362c75696e74323536290000000000000000000000009dda1a8517beff77002ee0d8e809e9ff34119220