[ { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ContractURINotInitialized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidRange", "type": "error" }, { "inputs": [], "name": "MissingRegistry", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": [], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "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": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INFO_SETTER_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": "enum WeaponType", "name": "weaponType", "type": "uint8" }, { "internalType": "uint256", "name": "level", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" } ], "name": "addWeaponInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "aggregateWeapon", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "enum WeaponType", "name": "weaponType", "type": "uint8" }, { "internalType": "uint256", "name": "level", "type": "uint256" }, { "internalType": "uint256", "name": "total", "type": "uint256" } ], "internalType": "struct WeaponStorage.AggregatedWeapon[]", "name": "results", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOfAll", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burnBatchAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "clearContractRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractRegistry", "outputs": [ { "internalType": "contract IContractRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deleteDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidationFunction", "outputs": [ { "internalType": "bytes4", "name": "functionSignature", "type": "bytes4" }, { "internalType": "bool", "name": "isViewFunction", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getWeaponInfo", "outputs": [ { "components": [ { "internalType": "enum WeaponType", "name": "weaponType", "type": "uint8" }, { "internalType": "uint256", "name": "level", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" } ], "internalType": "struct WeaponStorage.WeaponInfo", "name": "info", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWeaponInfosLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "ownedTokenIdValues", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "resetTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "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": "contract IContractRegistry", "name": "registry", "type": "address" } ], "name": "setContractRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "validator", "type": "address" } ], "name": "setTransferValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "enum WeaponType", "name": "weaponType", "type": "uint8" }, { "internalType": "uint256", "name": "level", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" } ], "name": "setWeaponInfo", "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": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "transferOwnershipAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "weaponInfos", "outputs": [ { "internalType": "enum WeaponType", "name": "", "type": "uint8" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
608060405234801561001057600080fd5b50614625806100206000396000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c80638da5cb5b1161019d578063ca15c873116100e9578063e8a3d485116100a2578063f2fde38b1161007c578063f2fde38b1461073d578063f5298aca14610750578063fcd13d6514610763578063fe992c981461077657600080fd5b8063e8a3d4851461070f578063e985e9c514610717578063f242432a1461072a57600080fd5b8063ca15c8731461068c578063d53913931461069f578063d547741f146106b4578063d839cd10146106c7578063dc939587146106da578063e5aec34d146106ed57600080fd5b80639a35a44b11610156578063a9fc664e11610130578063a9fc664e14610656578063aa1b103f14610669578063abf410e514610671578063c4d66de81461067957600080fd5b80639a35a44b14610633578063a217fddf1461063b578063a22cb4651461064357600080fd5b80638da5cb5b146105bd5780639010d07c146105c557806391d14854146105d85780639324b42a146105eb578063938e3d7b146105fe57806395d89b411461061157600080fd5b80632eb2c2d61161025c578063538e43ad11610215578063731133e9116101ef578063731133e91461056f5780637ef8c6501461058257806383ec7bdf146105975780638a616bc0146105aa57600080fd5b8063538e43ad146105295780635944c753146105495780636b20c4541461055c57600080fd5b80632eb2c2d6146104b55780632f2ff15d146104c857806334f727c2146104db57806336568abe146104ee57806339341081146105015780634e1273f41461051657600080fd5b80630aef8d1c116102c95780631f7fdffa116102a35780631f7fdffa14610448578063248a9ca31461045b578063282c51f31461046e5780632a55205a1461048357600080fd5b80630aef8d1c146103fa5780630d705df61461041a5780630e89341c1461043557600080fd5b806216a07c1461030f578062fdd58e1461033857806301ffc9a71461035957806304634d8d1461037c57806306fdde0314610391578063098144d4146103da575b600080fd5b61032261031d3660046134b3565b610789565b60405161032f919061350c565b60405180910390f35b61034b61034636600461351f565b61079a565b60405190815260200161032f565b61036c610367366004613561565b6107ce565b604051901515815260200161032f565b61038f61038a366004613595565b6107f7565b005b6103cd6040518060400160405280602081526020017f4973656b616920426174746c6520576561706f6e7320284f7074696d69736d2981525081565b60405161032f919061361a565b6103e261080d565b6040516001600160a01b03909116815260200161032f565b61040d61040836600461362d565b610842565b60405161032f919061367e565b60408051631854b24160e01b8152600160208201520161032f565b6103cd61044336600461362d565b61096d565b61038f6104563660046137fb565b610978565b61034b61046936600461362d565b610a00565b61034b6000805160206143a983398151915281565b610496610491366004613895565b610a22565b604080516001600160a01b03909316835260208301919091520161032f565b61038f6104c33660046138b7565b610afe565b61038f6104d6366004613964565b610b6a565b61038f6104e93660046134b3565b610b8c565b61038f6104fc366004613964565b610ba0565b61034b60008051602061454483398151915281565b610322610524366004613994565b610bd8565b61053c6105373660046134b3565b610ca4565b60405161032f9190613a55565b61038f610557366004613ac2565b610dc5565b61038f61056a366004613b00565b610dd8565b61038f61057d366004613b75565b610e37565b6000805160206145d08339815191525461034b565b61038f6105a5366004613bda565b610e8a565b61038f6105b836600461362d565b610ead565b6103e2610ee8565b6103e26105d3366004613895565b610f11565b61036c6105e6366004613964565b610f40565b61038f6105f9366004613c26565b610f78565b61038f61060c366004613c5b565b610f9b565b6103cd604051806040016040528060038152602001622ba82760e91b81525081565b61038f610faf565b61034b600081565b61038f610651366004613c8f565b610fee565b61038f6106643660046134b3565b610ff9565b61038f61100a565b6103e261102b565b61038f6106873660046134b3565b61103a565b61034b61069a36600461362d565b61129c565b61034b60008051602061452483398151915281565b61038f6106c2366004613964565b6112c9565b61038f6106d5366004613b00565b6112e5565b61038f6106e8366004613cc2565b611308565b6107006106fb36600461362d565b61132c565b60405161032f93929190613d0a565b6103cd611420565b61036c610725366004613d39565b6114f7565b61038f610738366004613d67565b611544565b61038f61074b3660046134b3565b6115a3565b61038f61075e366004613c26565b6115b4565b61038f6107713660046134b3565b6115ea565b61034b6107843660046134b3565b611633565b606061079482611691565b92915050565b6000908152600080516020614504833981519152602090815260408083206001600160a01b03949094168352929052205490565b60006107d982611756565b806107e857506107e882611796565b806107945750610794826117b0565b6107ff6117d5565b610809828261182c565b5050565b6000807fd168c6b9e8dc2b499eab0015ca0821c69b1aeab68db26133511546f2b1b89b005b546001600160a01b031692915050565b604080516060808201835260008083526020830152918101919091526000805160206145d0833981519152805481908490811061088157610881613dcf565b6000918252602090912060408051606081019091526003909202018054829060ff1660048111156108b4576108b4613646565b60048111156108c5576108c5613646565b8152602001600182015481526020016002820180546108e390613de5565b80601f016020809104026020016040519081016040528092919081815260200182805461090f90613de5565b801561095c5780601f106109315761010080835404028352916020019161095c565b820191906000526020600020905b81548152906001019060200180831161093f57829003601f168201915b505050505081525050915050919050565b6060610794826118dd565b60008051602061452483398151915261099081611a86565b60005b84518110156109ec576000805160206145d0833981519152548582815181106109be576109be613dcf565b6020026020010151106109e45760405163561ce9bb60e01b815260040160405180910390fd5b600101610993565b506109f985858585611a90565b5050505050565b6000908152600080516020614564833981519152602052604090206001015490565b60008281527fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b01602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916000805160206145b08339815191529190610ac657506040805180820190915281546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610ae5906001600160601b031688613e35565b610aef9190613e4c565b91519791965090945050505050565b336001600160a01b0386168114801590610b1f5750610b1d86826114f7565b155b15610b555760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044015b60405180910390fd5b610b628686868686611ac8565b505050505050565b610b7382610a00565b610b7c81611a86565b610b868383611b28565b50505050565b6000610b9781611a86565b61080982611b6d565b6001600160a01b0381163314610bc95760405163334bd91960e11b815260040160405180910390fd5b610bd38282611bde565b505050565b60608151835114610c095781518351604051635b05999160e01b815260048101929092526024820152604401610b4c565b600083516001600160401b03811115610c2457610c246136b4565b604051908082528060200260200182016040528015610c4d578160200160208202803683370190505b50905060005b8451811015610c9c57602080820286010151610c779060208084028701015161079a565b828281518110610c8957610c89613dcf565b6020908102919091010152600101610c53565b509392505050565b60606000610cb183611691565b905080516001600160401b03811115610ccc57610ccc6136b4565b604051908082528060200260200182016040528015610d2957816020015b610d16604080516080810190915260008082526020820190815260200160008152602001600081525090565b815260200190600190039081610cea5790505b50915060005b8151811015610dbe576000610d4382610842565b9050604051806080016040528083815260200182600001516004811115610d6c57610d6c613646565b815260200182602001518152602001848481518110610d8d57610d8d613dcf565b6020026020010151815250848381518110610daa57610daa613dcf565b602090810291909101015250600101610d2f565b5050919050565b610dcd6117d5565b610bd3838383611c1a565b6001600160a01b0383163314801590610df85750610df683336114f7565b155b15610e2c57335b60405163711bec9160e11b81526001600160a01b0391821660048201529084166024820152604401610b4c565b610bd3838383611ced565b600080516020614524833981519152610e4f81611a86565b6000805160206145d0833981519152548410610e7e5760405163561ce9bb60e01b815260040160405180910390fd5b6109f985858585611d33565b600080516020614544833981519152610ea281611a86565b610b86848484611d90565b610eb56117d5565b60009081527fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b016020526040812055565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300610832565b60008281526000805160206143f6833981519152602081905260408220610f389084611e39565b949350505050565b6000918252600080516020614564833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206143a9833981519152610f9081611a86565b610b86848484611e45565b6000610fa681611a86565b61080982611ead565b6000610fba81611a86565b610ee57f20c6cab4f0e47874eaab2f1d9a2f8a72df46b3c5bcb591d116116adbabce790080546001600160a01b0319169055565b610809338383611f07565b6110016117d5565b610ee581611faf565b6110126117d5565b61102960006000805160206145b083398151915255565b565b6000611035612034565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b031660008115801561107f5750825b90506000826001600160401b0316600114801561109b5750303b155b9050811580156110a9575080155b156110c75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156110f157845460ff60401b1916600160401b1785555b61110960405180602001604052806000815250612090565b6111116120a1565b6111196120a9565b611122866120b9565b61112a6120d2565b6111326120a1565b6111f86111f36040518060400160405280602081526020017f4973656b616920426174746c6520576561706f6e7320284f7074696d69736d29815250604051806040016040528060038152602001622ba82760e91b8152506040518060c0016040528060858152602001614416608591396040518060600160405280602c8152602001614584602c91396040518060600160405280602d81526020016143c9602d91396040518060600160405280602981526020016144db602991396120f2565b611ead565b611203600033611b28565b5061121c60008051602061452483398151915233611b28565b506112356000805160206143a983398151915233611b28565b5061124e60008051602061454483398151915233611b28565b508315610b6257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b60008181526000805160206143f68339815191526020819052604082206112c29061212a565b9392505050565b6112d282610a00565b6112db81611a86565b610b868383611bde565b6000805160206143a98339815191526112fd81611a86565b610b86848484611ced565b60008051602061454483398151915261132081611a86565b6109f985858585612134565b6000806060816000805160206145d08339815191529050600081600001868154811061135a5761135a613dcf565b906000526020600020906003020190508060000160009054906101000a900460ff1681600101548260020180805461139190613de5565b80601f01602080910402602001604051908101604052809291908181526020018280546113bd90613de5565b801561140a5780601f106113df5761010080835404028352916020019161140a565b820191906000526020600020905b8154815290600101906020018083116113ed57829003601f168201915b5050505050905094509450945050509193909250565b7f6c1a9490c7cf0bc47b93d49642ae5e97d20eafaf58d409924dfc55110568b400805460609190600090829061145590613de5565b80601f016020809104026020016040519081016040528092919081815260200182805461148190613de5565b80156114ce5780601f106114a3576101008083540402835291602001916114ce565b820191906000526020600020905b8154815290600101906020018083116114b157829003601f168201915b50505050509050805160000361079457604051630c262e2d60e01b815260040160405180910390fd5b6001600160a01b0391821660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b336001600160a01b0386168114801590611565575061156386826114f7565b155b156115965760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610b4c565b610b628686868686612203565b6115ab612288565b610ee581611b6d565b6001600160a01b03831633148015906115d457506115d283336114f7565b155b156115df5733610dff565b610bd3838383611e45565b60006115f581611a86565b7f20c6cab4f0e47874eaab2f1d9a2f8a72df46b3c5bcb591d116116adbabce790080546001600160a01b0319166001600160a01b0384161790555050565b60008080611640846122ba565b905060005b8154811015611688576116748583838154811061166457611664613dcf565b906000526020600020015461079a565b61167e9084613e6e565b9250600101611645565b50909392505050565b6060600061169d6122f3565b6001600160401b038111156116b4576116b46136b4565b6040519080825280602002602001820160405280156116dd578160200160208202803683370190505b50905060006116eb846122ba565b905060005b815481101561168857600082828154811061170d5761170d613dcf565b90600052602060002001549050611724868261079a565b84828151811061173657611736613dcf565b6020026020010181815161174a9190613e6e565b905250506001016116f0565b60006001600160e01b03198216636cdb3d1360e11b148061178757506001600160e01b031982166303a24d0760e21b145b8061079457506107948261230b565b60006117a182612321565b8061079457506107948261234a565b60006001600160e01b0319821663cd1089cb60e01b148061178757506117878261236f565b336000816117e1610ee8565b6001600160a01b031614905060006117f98184610f40565b905081806118045750805b610bd35760405163118cdaa760e01b81526001600160a01b0384166004820152602401610b4c565b6000805160206145b08339815191526127106001600160601b03831681101561187a57604051636f483d0960e01b81526001600160601b038416600482015260248101829052604401610b4c565b6001600160a01b0384166118a457604051635b6cc80560e11b815260006004820152602401610b4c565b50604080518082019091526001600160a01b039093168084526001600160601b039092166020909301839052600160a01b909202179055565b606060006000805160206145d08339815191529050600081600001848154811061190957611909613dcf565b6000918252602090912060408051606081019091526003909202018054829060ff16600481111561193c5761193c613646565b600481111561194d5761194d613646565b81526020016001820154815260200160028201805461196b90613de5565b80601f016020809104026020016040519081016040528092919081815260200182805461199790613de5565b80156119e45780601f106119b9576101008083540402835291602001916119e4565b820191906000526020600020905b8154815290600101906020018083116119c757829003601f168201915b50505050508152505090506000611a0f82600001516004811115611a0a57611a0a613646565b612394565b9050600081611a2184602001516124d1565b6040518060c0016040528060858152602001614416608591398560400151611a4c87602001516124d1565b86604051602001611a6296959493929190613e9d565b6040516020818303038152906040529050611a7c81612563565b9695505050505050565b610ee58133612594565b6001600160a01b038416611aba57604051632bfa23e760e11b815260006004820152602401610b4c565b610b866000858585856125cd565b6001600160a01b038416611af257604051632bfa23e760e11b815260006004820152602401610b4c565b6001600160a01b038516611b1b57604051626a0d4560e21b815260006004820152602401610b4c565b6109f985858585856125cd565b60006000805160206143f683398151915281611b448585612620565b90508015610f38576000858152602083905260409020611b6490856126c5565b50949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006000805160206143f683398151915281611bfa85856126da565b90508015610f38576000858152602083905260409020611b649085612756565b6000805160206145b08339815191526127106001600160601b038316811015611c6f5760405163dfd1fc1b60e01b8152600481018690526001600160601b038416602482015260448101829052606401610b4c565b6001600160a01b038416611ca057604051634b4f842960e11b81526004810186905260006024820152604401610b4c565b506040805180820182526001600160a01b0394851681526001600160601b03938416602080830191825260009788526001909401909352942093519051909116600160a01b029116179055565b6001600160a01b038316611d1657604051626a0d4560e21b815260006004820152602401610b4c565b610bd38360008484604051806020016040528060008152506125cd565b6001600160a01b038416611d5d57604051632bfa23e760e11b815260006004820152602401610b4c565b60408051600180825260208201869052818301908152606082018590526080820190925290610b626000878484876125cd565b60408051606081019091526000805160206145d083398151915290819080866004811115611dc057611dc0613646565b81526020808201879052604090910185905282546001818101855560009485529190932082516003909402018054929390929091839160ff191690836004811115611e0d57611e0d613646565b02179055506020820151600182015560408201516002820190611e309082614030565b50505050505050565b60006112c2838361276b565b6001600160a01b038316611e6e57604051626a0d4560e21b815260006004820152602401610b4c565b604080516001808252602082018590528183019081526060820184905260a082019092526000608082018181529192916109f9918791859085906125cd565b7f6c1a9490c7cf0bc47b93d49642ae5e97d20eafaf58d409924dfc55110568b40080611ed98382614030565b506040517fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad96290600090a15050565b6000805160206145048339815191526001600160a01b038316611f3f5760405162ced3e160e81b815260006004820152602401610b4c565b6001600160a01b038481166000818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b60007fd168c6b9e8dc2b499eab0015ca0821c69b1aeab68db26133511546f2b1b89b0080546001600160a01b038481166001600160a01b0319831681178455604080519290931680835260208301919091529293507fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a1505050565b7f20c6cab4f0e47874eaab2f1d9a2f8a72df46b3c5bcb591d116116adbabce79008054600091906001600160a01b0316612081576040516311d07a4760e01b815260040160405180910390fd5b546001600160a01b0316919050565b612098612795565b610ee5816127de565b611029612795565b6120b1612795565b6110296127ef565b6120c1612795565b6120ca816127f7565b610ee561283c565b6120da612795565b6120e26120a1565b6120ea6120a1565b6110296120a1565b606086868686868660405160200161210f969594939291906140ef565b60405160208183030381529060405290509695505050505050565b6000610794825490565b6000805160206145d0833981519152805485106121645760405163561ce9bb60e01b815260040160405180910390fd5b604051806060016040528085600481111561218157612181613646565b8152602001848152602001838152508160000186815481106121a5576121a5613dcf565b6000918252602090912082516003909202018054909190829060ff191660018360048111156121d6576121d6613646565b021790555060208201516001820155604082015160028201906121f99082614030565b5050505050505050565b6001600160a01b03841661222d57604051632bfa23e760e11b815260006004820152602401610b4c565b6001600160a01b03851661225657604051626a0d4560e21b815260006004820152602401610b4c565b60408051600180825260208201869052818301908152606082018590526080820190925290611e3087878484876125cd565b33612291610ee8565b6001600160a01b0316146110295760405163118cdaa760e01b8152336004820152602401610b4c565b6001600160a01b031660009081527f5f87245fb6582a230f286a5e47ec458084ddf1380715106da167213a27663c006020526040902090565b60006110356000805160206145d08339815191525490565b6001600160e01b0319166301ffc9a760e01b1490565b600061232c8261236f565b8061233b575061233b82612844565b80610794575061079482612865565b60006001600160e01b03198216632b435fdb60e21b148061079457506107948261230b565b60006001600160e01b03198216635a05180f60e01b148061079457506107948261288a565b606060008260048111156123aa576123aa613646565b036123d057505060408051808201909152600581526414dddbdc9960da1b602082015290565b60018260048111156123e4576123e4613646565b0361240c575050604080518082019091526007815266151ddbd2185b9960ca1b602082015290565b600282600481111561242057612420613646565b03612446575050604080518082019091526005815264466973747360d81b602082015290565b600382600481111561245a5761245a613646565b0361247e575050604080518082019091526003815262426f7760e81b602082015290565b600482600481111561249257612492613646565b036124b857505060408051808201909152600581526429ba30b33360d91b602082015290565b505060408051602081019091526000815290565b919050565b606060006124de836128af565b60010190506000816001600160401b038111156124fd576124fd6136b4565b6040519080825280601f01601f191660200182016040528015612527576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461253157509392505050565b606061256e82612987565b60405160200161257e9190614255565b6040516020818303038152906040529050919050565b61259e8282610f40565b6108095760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b4c565b6125d985858585612ae6565b6001600160a01b038416156109f95782513390600103612612576020848101519084015161260b838989858589612b0e565b5050610b62565b610b62818787878787612c32565b600060008051602061456483398151915261263b8484610f40565b6126bb576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556126713390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610794565b6000915050610794565b60006112c2836001600160a01b038416612d1b565b60006000805160206145648339815191526126f58484610f40565b156126bb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610794565b60006112c2836001600160a01b038416612d6a565b600082600001828154811061278257612782613dcf565b9060005260206000200154905092915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661102957604051631afcd79f60e31b815260040160405180910390fd5b6127e6612795565b610ee581612e53565b6120ea612795565b6127ff612795565b6128076120a1565b61281081612e8d565b6128186120a1565b61283060405180602001604052806000815250612e9e565b610ee5816103e861182c565b6120e2612795565b60006001600160e01b0319821663152a902d60e11b14806107945750610794825b60006001600160e01b031982166307f5828d60e41b148061079457506107948261230b565b60006001600160e01b03198216637965db0b60e01b1480610794575061079482611756565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106128ee5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061291a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061293857662386f26fc10000830492506010015b6305f5e1008310612950576305f5e100830492506008015b612710831061296457612710830492506004015b60648310612976576064830492506002015b600a83106107945760010192915050565b606081516000036129a657505060408051602081019091526000815290565b600060405180606001604052806040815260200161449b60409139905060006003845160026129d59190613e6e565b6129df9190613e4c565b6129ea906004613e35565b6001600160401b03811115612a0157612a016136b4565b6040519080825280601f01601f191660200182016040528015612a2b576020820181803683370190505b50905060018201602082018586518701602081018051600082525b82841015612aa1576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450612a46565b9052505085516003900660018114612ac05760028114612ad357612adb565b603d6001830353603d6002830353612adb565b603d60018303535b509195945050505050565b612b028484848460405180602001604052806000815250612eaf565b610b8684848484612fde565b6001600160a01b0384163b15610b625760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612b52908990899088908890889060040161429a565b6020604051808303816000875af1925050508015612b8d575060408051601f3d908101601f19168201909252612b8a918101906142df565b60015b612bf6573d808015612bbb576040519150601f19603f3d011682016040523d82523d6000602084013e612bc0565b606091505b508051600003612bee57604051632bfa23e760e11b81526001600160a01b0386166004820152602401610b4c565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b14611e3057604051632bfa23e760e11b81526001600160a01b0386166004820152602401610b4c565b6001600160a01b0384163b15610b625760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612c7690899089908890889088906004016142fc565b6020604051808303816000875af1925050508015612cb1575060408051601f3d908101601f19168201909252612cae918101906142df565b60015b612cdf573d808015612bbb576040519150601f19603f3d011682016040523d82523d6000602084013e612bc0565b6001600160e01b0319811663bc197c8160e01b14611e3057604051632bfa23e760e11b81526001600160a01b0386166004820152602401610b4c565b6000818152600183016020526040812054612d6257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610794565b506000610794565b600081815260018301602052604081205480156126bb576000612d8e60018361435a565b8554909150600090612da29060019061435a565b9050808214612e07576000866000018281548110612dc257612dc2613dcf565b9060005260206000200154905080876000018481548110612de557612de5613dcf565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612e1857612e1861436d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610794565b6000805160206145048339815191527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4502610bd38382614030565b612e95612795565b610ee58161308c565b612ea6612795565b610ee5816130ac565b6001600160a01b03851615801590612ecf57506001600160a01b03841615155b156109f9577fd168c6b9e8dc2b499eab0015ca0821c69b1aeab68db26133511546f2b1b89b0080546001600160a01b03168015611e305760005b85518110156121f9576001600160a01b038216631854b241338a8a8a8681518110612f3657612f36613dcf565b60200260200101518a8781518110612f5057612f50613dcf565b60209081029190910101516040516001600160e01b031960e088901b1681526001600160a01b03958616600482015293851660248501529390911660448301526064820152608481019190915260a401600060405180830381600087803b158015612fba57600080fd5b505af1158015612fce573d6000803e3d6000fd5b505060019092019150612f099050565b612fea848484846130c4565b60005b82518110156109f9576130198584838151811061300c5761300c613dcf565b602002602001015161079a565b600003613043576130438584838151811061303657613036613dcf565b60200260200101516132e9565b600061305b8585848151811061300c5761300c613dcf565b1115613084576130848484838151811061307757613077613dcf565b60200260200101516133f0565b600101612fed565b613094612795565b6001600160a01b03811615610ee557610ee581611b6d565b6130b4612795565b805115610ee557610ee581611ead565b8051825160008051602061450483398151915291146131035782518251604051635b05999160e01b815260048101929092526024820152604401610b4c565b3360005b8451811015613209576020818102868101820151908601909101516001600160a01b038916156131ba576000828152602086815260408083206001600160a01b038d16845290915290205481811015613193576040516303dee4c560e01b81526001600160a01b038b166004820152602481018290526044810183905260648101849052608401610b4c565b6000838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b038816156131ff576000828152602086815260408083206001600160a01b038c168452909152812080548392906131f9908490613e6e565b90915550505b5050600101613107565b50835160010361328a5760208401516000906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161327b929190918252602082015260400190565b60405180910390a45050610b62565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516132d9929190614383565b60405180910390a4505050505050565b6001600160a01b0382166132fb575050565b6001600160a01b03821660009081527f5f87245fb6582a230f286a5e47ec458084ddf1380715106da167213a27663c0060208190526040822090915b81548110156109f9578382828154811061335357613353613dcf565b9060005260206000200154036133e85781546000906133749060019061435a565b9050808210156133ba5782818154811061339057613390613dcf565b90600052602060002001548383815481106133ad576133ad613dcf565b6000918252602090912001555b828054806133ca576133ca61436d565b60019003818190600052602060002001600090559055505050505050565b600101613337565b6001600160a01b038216613402575050565b6001600160a01b03821660009081527f5f87245fb6582a230f286a5e47ec458084ddf1380715106da167213a27663c00602081905260409091208054156134835760005b8154811015613481578382828154811061346257613462613dcf565b906000526020600020015403613479575050505050565b600101613446565b505b80546001810182556000918252602090912001919091555050565b6001600160a01b0381168114610ee557600080fd5b6000602082840312156134c557600080fd5b81356112c28161349e565b60008151808452602080850194506020840160005b83811015613501578151875295820195908201906001016134e5565b509495945050505050565b6020815260006112c260208301846134d0565b6000806040838503121561353257600080fd5b823561353d8161349e565b946020939093013593505050565b6001600160e01b031981168114610ee557600080fd5b60006020828403121561357357600080fd5b81356112c28161354b565b80356001600160601b03811681146124cc57600080fd5b600080604083850312156135a857600080fd5b82356135b38161349e565b91506135c16020840161357e565b90509250929050565b60005b838110156135e55781810151838201526020016135cd565b50506000910152565b600081518084526136068160208601602086016135ca565b601f01601f19169290920160200192915050565b6020815260006112c260208301846135ee565b60006020828403121561363f57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6005811061367a57634e487b7160e01b600052602160045260246000fd5b9052565b6020815261369060208201835161365c565b6020820151604082015260006040830151606080840152610f3860808401826135ee565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136f2576136f26136b4565b604052919050565b60006001600160401b03821115613713576137136136b4565b5060051b60200190565b600082601f83011261372e57600080fd5b8135602061374361373e836136fa565b6136ca565b8083825260208201915060208460051b87010193508684111561376557600080fd5b602086015b84811015613781578035835291830191830161376a565b509695505050505050565b600082601f83011261379d57600080fd5b81356001600160401b038111156137b6576137b66136b4565b6137c9601f8201601f19166020016136ca565b8181528460208386010111156137de57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561381157600080fd5b843561381c8161349e565b935060208501356001600160401b038082111561383857600080fd5b6138448883890161371d565b9450604087013591508082111561385a57600080fd5b6138668883890161371d565b9350606087013591508082111561387c57600080fd5b506138898782880161378c565b91505092959194509250565b600080604083850312156138a857600080fd5b50508035926020909101359150565b600080600080600060a086880312156138cf57600080fd5b85356138da8161349e565b945060208601356138ea8161349e565b935060408601356001600160401b038082111561390657600080fd5b61391289838a0161371d565b9450606088013591508082111561392857600080fd5b61393489838a0161371d565b9350608088013591508082111561394a57600080fd5b506139578882890161378c565b9150509295509295909350565b6000806040838503121561397757600080fd5b8235915060208301356139898161349e565b809150509250929050565b600080604083850312156139a757600080fd5b82356001600160401b03808211156139be57600080fd5b818501915085601f8301126139d257600080fd5b813560206139e261373e836136fa565b82815260059290921b84018101918181019089841115613a0157600080fd5b948201945b83861015613a28578535613a198161349e565b82529482019490820190613a06565b96505086013592505080821115613a3e57600080fd5b50613a4b8582860161371d565b9150509250929050565b602080825282518282018190526000919060409081850190868401855b82811015613ab55781518051855286810151613a908887018261365c565b5080860151858701526060908101519085015260809093019290850190600101613a72565b5091979650505050505050565b600080600060608486031215613ad757600080fd5b833592506020840135613ae98161349e565b9150613af76040850161357e565b90509250925092565b600080600060608486031215613b1557600080fd5b8335613b208161349e565b925060208401356001600160401b0380821115613b3c57600080fd5b613b488783880161371d565b93506040860135915080821115613b5e57600080fd5b50613b6b8682870161371d565b9150509250925092565b60008060008060808587031215613b8b57600080fd5b8435613b968161349e565b9350602085013592506040850135915060608501356001600160401b03811115613bbf57600080fd5b6138898782880161378c565b8035600581106124cc57600080fd5b600080600060608486031215613bef57600080fd5b613bf884613bcb565b92506020840135915060408401356001600160401b03811115613c1a57600080fd5b613b6b8682870161378c565b600080600060608486031215613c3b57600080fd5b8335613c468161349e565b95602085013595506040909401359392505050565b600060208284031215613c6d57600080fd5b81356001600160401b03811115613c8357600080fd5b610f388482850161378c565b60008060408385031215613ca257600080fd5b8235613cad8161349e565b91506020830135801515811461398957600080fd5b60008060008060808587031215613cd857600080fd5b84359350613ce860208601613bcb565b92506040850135915060608501356001600160401b03811115613bbf57600080fd5b613d14818561365c565b826020820152606060408201526000613d3060608301846135ee565b95945050505050565b60008060408385031215613d4c57600080fd5b8235613d578161349e565b915060208301356139898161349e565b600080600080600060a08688031215613d7f57600080fd5b8535613d8a8161349e565b94506020860135613d9a8161349e565b9350604086013592506060860135915060808601356001600160401b03811115613dc357600080fd5b6139578882890161378c565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680613df957607f821691505b602082108103613e1957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761079457610794613e1f565b600082613e6957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561079457610794613e1f565b60008151613e938185602086016135ca565b9290920192915050565b693d913730b6b2911d101160b11b81528651600090613ec381600a850160208c016135ca565b6210263b60e91b600a918401918201528751613ee681600d840160208c016135ca565b711116113232b9b1b934b83a34b7b7111d101160711b600d92909101918201528651613f1981601f840160208b016135ca565b6b11161134b6b0b3b2911d101160a11b601f92909101918201528551613f4681602b840160208a016135ca565b7f222c2261747472696275746573223a205b7b2274726169745f74797065223a22602b92909101918201526b263b1116113b30b63ab2911d60a11b604b820152613fdb613fcb613fc5613f9c6057850189613e81565b7f7d2c7b2274726169745f74797065223a2254797065222c2276616c7565223a22815260200190565b86613e81565b63227d5d7d60e01b815260040190565b9998505050505050505050565b601f821115610bd3576000816000526020600020601f850160051c810160208610156140115750805b601f850160051c820191505b81811015610b625782815560010161401d565b81516001600160401b03811115614049576140496136b4565b61405d816140578454613de5565b84613fe8565b602080601f831160018114614092576000841561407a5750858301515b600019600386901b1c1916600185901b178555610b62565b600085815260208120601f198616915b828110156140c1578886015182559484019460019091019084016140a2565b50858210156140df5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d81526332911d1160e11b602082015260008751614134816024850160208c016135ca565b6b11161139bcb6b137b6111d1160a11b6024918401918201528751614160816030840160208c016135ca565b701116113232b9b1b934b83a34b7b7111d1160791b603092909101918201528651614192816041840160208b016135ca565b6a11161134b6b0b3b2911d1160a91b6041929091019182015285516141be81604c840160208a016135ca565b711116113130b73732b92fb4b6b0b3b2911d1160711b604c9290910191820152613fdb614214613fc56141f4605e850189613e81565b731116113332b0ba3ab932b22fb4b6b0b3b2911d1160611b815260140190565b7f222c2265787465726e616c5f6c696e6b223a2268747470733a2f2f6973656b6181526e692d626174746c652e78797a2f227d60881b6020820152602f0190565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161428d81601d8501602087016135ca565b91909101601d0192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906142d4908301846135ee565b979650505050505050565b6000602082840312156142f157600080fd5b81516112c28161354b565b6001600160a01b0386811682528516602082015260a060408201819052600090614328908301866134d0565b828103606084015261433a81866134d0565b9050828103608084015261434e81856135ee565b98975050505050505050565b8181038181111561079457610794613e1f565b634e487b7160e01b600052603160045260246000fd5b60408152600061439660408301856134d0565b8281036020840152613d3081856134d056fe3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84868747470733a2f2f6973656b61692d626174746c652e78797a2f6d6574612f57504e2f6865616465722e6a7067c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320004120576561706f6e207573656420666f722061747461636b696e67206f7468657220706c617965727320696e207468652066756c6c79206f6e2d636861696e2067616d65205c224973656b616920426174746c655c222e5c6e5c6e4973656b616920426174746c65202868747470733a2f2f6973656b61692d626174746c652e78797a2f294142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f68747470733a2f2f6973656b61692d626174746c652e78797a2f6d6574612f57504e2f70722e6a706788be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45009f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a67c357cd34aad7cf565db7de6ea8e1e4300535be20ed0905116856269e77f5b4402dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680068747470733a2f2f6973656b61692d626174746c652e78797a2f6d6574612f57504e2f73776f72642e706e67daedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b00d5e6592d9537bba370af96ac34fecce136ba886c703e1a66c7578ad4a2f1ab00a26469706673582212205bc1de22018422fad5a92ca32877f672699fecc1a5dd806f5bae03d5dc4b47ca64736f6c63430008180033