@q-dev/gdk-sdk
Version:
Typescript Library to interact with GDK Contracts
1,477 lines • 118 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "PermissionManager",
"sourceName": "contracts/DAO/PermissionManager.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "role",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"indexed": false,
"internalType": "string[]",
"name": "permissionsToAdd",
"type": "string[]"
},
{
"indexed": false,
"internalType": "bool",
"name": "allowed",
"type": "bool"
}
],
"name": "AddedPermissions",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "who",
"type": "address"
},
{
"indexed": false,
"internalType": "string[]",
"name": "groupsToAddTo",
"type": "string[]"
}
],
"name": "AddedToGroups",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "groupTo",
"type": "string"
},
{
"indexed": false,
"internalType": "string[]",
"name": "rolesToGrant",
"type": "string[]"
}
],
"name": "GrantedGroupRoles",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "string[]",
"name": "rolesToGrant",
"type": "string[]"
}
],
"name": "GrantedRoles",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "target",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "linkedMemberStorage",
"type": "address"
}
],
"name": "LinkedStorageToVetoGroup",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "who",
"type": "address"
},
{
"indexed": false,
"internalType": "string[]",
"name": "groupsToRemoveFrom",
"type": "string[]"
}
],
"name": "RemovedFromGroups",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "role",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"indexed": false,
"internalType": "string[]",
"name": "permissionsToRemove",
"type": "string[]"
},
{
"indexed": false,
"internalType": "bool",
"name": "allowed",
"type": "bool"
}
],
"name": "RemovedPermissions",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "groupFrom",
"type": "string"
},
{
"indexed": false,
"internalType": "string[]",
"name": "rolesToRevoke",
"type": "string[]"
}
],
"name": "RevokedGroupRoles",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "string[]",
"name": "rolesToRevoke",
"type": "string[]"
}
],
"name": "RevokedRoles",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "defaultGroupEnabled",
"type": "bool"
}
],
"name": "ToggledDefaultGroup",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "target",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "linkedMemberStorage",
"type": "address"
}
],
"name": "VetoGroupAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "VetoGroupRemoved",
"type": "event"
},
{
"inputs": [],
"name": "ALL_PERMISSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "ALL_RESOURCE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "CREATE_PERMISSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DELETE_PERMISSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MASTER_ROLE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERMISSION_MANAGER_RESOURCE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "RBAC_RESOURCE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "READ_PERMISSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPDATE_PERMISSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract DAORegistry",
"name": "daoRegistry_",
"type": "address"
},
{
"internalType": "address",
"name": "master_",
"type": "address"
},
{
"internalType": "string",
"name": "resource_",
"type": "string"
}
],
"name": "__PermissionManager_init",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "member_",
"type": "address"
},
{
"internalType": "string[]",
"name": "groups_",
"type": "string[]"
}
],
"name": "addMemberToGroup",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "role_",
"type": "string"
},
{
"components": [
{
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"internalType": "string[]",
"name": "permissions",
"type": "string[]"
}
],
"internalType": "struct IRBAC.ResourceWithPermissions[]",
"name": "permissionsToAdd_",
"type": "tuple[]"
},
{
"internalType": "bool",
"name": "allowed_",
"type": "bool"
}
],
"name": "addPermissionsToRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "who_",
"type": "address"
},
{
"internalType": "string[]",
"name": "groupsToAddTo_",
"type": "string[]"
}
],
"name": "addUserToGroups",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target_",
"type": "address"
},
{
"internalType": "contract DAOMemberStorage",
"name": "linkedMemberStorage_",
"type": "address"
}
],
"name": "addVetoGroup",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "contract DAOMemberStorage",
"name": "linkedMemberStorage",
"type": "address"
}
],
"internalType": "struct IPermissionManager.VetoGroup[]",
"name": "vetoGroups_",
"type": "tuple[]"
}
],
"name": "addVetoGroups",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account_",
"type": "address"
},
{
"internalType": "string",
"name": "permission_",
"type": "string"
}
],
"name": "checkPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "moduleName_",
"type": "string"
}
],
"name": "confExternalModule",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "moduleName",
"type": "string"
},
{
"internalType": "address",
"name": "moduleAddress",
"type": "address"
},
{
"internalType": "string",
"name": "connectorRoleName",
"type": "string"
},
{
"internalType": "enum ModuleAdditionType",
"name": "moduleType",
"type": "uint8"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "bytes",
"name": "value",
"type": "bytes"
},
{
"internalType": "enum ParameterType",
"name": "solidityType",
"type": "uint8"
}
],
"internalType": "struct Parameter[]",
"name": "constitutionParameters",
"type": "tuple[]"
},
{
"internalType": "string",
"name": "votingName",
"type": "string"
},
{
"components": [
{
"components": [
{
"internalType": "string",
"name": "votingSituationName",
"type": "string"
},
{
"components": [
{
"internalType": "uint256",
"name": "votingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "vetoPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "proposalExecutionPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requiredQuorum",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requiredMajority",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requiredVetoQuorum",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votingType",
"type": "uint256"
},
{
"internalType": "string",
"name": "votingTarget",
"type": "string"
},
{
"internalType": "uint256",
"name": "votingMinAmount",
"type": "uint256"
}
],
"internalType": "struct IDAOVoting.DAOVotingValues",
"name": "votingValues",
"type": "tuple"
}
],
"internalType": "struct IDAOVoting.InitialSituation",
"name": "initialSituation",
"type": "tuple"
},
{
"internalType": "string",
"name": "externalLink",
"type": "string"
}
],
"internalType": "struct IDAOVoting.ExtendedSituation",
"name": "situation",
"type": "tuple"
},
{
"internalType": "address",
"name": "vetoGroupSource",
"type": "address"
},
{
"internalType": "bytes",
"name": "initCallData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"internalType": "struct DAOModuleContractorParameters",
"name": "daoModuleParams_",
"type": "tuple"
}
],
"name": "deployModuleViaFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "panelName",
"type": "string"
},
{
"internalType": "address",
"name": "votingToken",
"type": "address"
},
{
"components": [
{
"components": [
{
"internalType": "string",
"name": "votingSituationName",
"type": "string"
},
{
"components": [
{
"internalType": "uint256",
"name": "votingPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "vetoPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "proposalExecutionPeriod",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requiredQuorum",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requiredMajority",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requiredVetoQuorum",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votingType",
"type": "uint256"
},
{
"internalType": "string",
"name": "votingTarget",
"type": "string"
},
{
"internalType": "uint256",
"name": "votingMinAmount",
"type": "uint256"
}
],
"internalType": "struct IDAOVoting.DAOVotingValues",
"name": "votingValues",
"type": "tuple"
}
],
"internalType": "struct IDAOVoting.InitialSituation",
"name": "initialSituation",
"type": "tuple"
},
{
"internalType": "string",
"name": "externalLink",
"type": "string"
}
],
"internalType": "struct IDAOVoting.ExtendedSituation[]",
"name": "situations",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "bytes",
"name": "value",
"type": "bytes"
},
{
"internalType": "enum ParameterType",
"name": "solidityType",
"type": "uint8"
}
],
"internalType": "struct Parameter[]",
"name": "initialParameters",
"type": "tuple[]"
},
{
"internalType": "address[]",
"name": "initialMembers",
"type": "address[]"
}
],
"internalType": "struct DAOPanelConstructorParameters",
"name": "daoPanelParams_",
"type": "tuple"
}
],
"name": "deployPanelViaFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getDAORegistry",
"outputs": [
{
"internalType": "contract DAORegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDefaultGroupEnabled",
"outputs": [
{
"internalType": "bool",
"name": "defaultGroupEnabled_",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExistingVetoGroupTargets",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "group_",
"type": "string"
}
],
"name": "getGroupRoles",
"outputs": [
{
"internalType": "string[]",
"name": "roles_",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getResource",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "role_",
"type": "string"
}
],
"name": "getRolePermissions",
"outputs": [
{
"components": [
{
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"internalType": "string[]",
"name": "permissions",
"type": "string[]"
}
],
"internalType": "struct IRBAC.ResourceWithPermissions[]",
"name": "allowed_",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"internalType": "string[]",
"name": "permissions",
"type": "string[]"
}
],
"internalType": "struct IRBAC.ResourceWithPermissions[]",
"name": "disallowed_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "who_",
"type": "address"
}
],
"name": "getUserGroups",
"outputs": [
{
"internalType": "string[]",
"name": "groups_",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "who_",
"type": "address"
}
],
"name": "getUserRoles",
"outputs": [
{
"internalType": "string[]",
"name": "roles_",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target_",
"type": "address"
}
],
"name": "getVetoGroupInfo",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "contract DAOMemberStorage",
"name": "linkedMemberStorage",
"type": "address"
}
],
"internalType": "struct IPermissionManager.VetoGroup",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target_",
"type": "address"
}
],
"name": "getVetoGroupMembers",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target_",
"type": "address"
}
],
"name": "getVetoMembersCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "groupTo_",
"type": "string"
},
{
"internalType": "string[]",
"name": "rolesToGrant_",
"type": "string[]"
}
],
"name": "grantGroupRoles",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
},
{
"internalType": "string[]",
"name": "rolesToGrant_",
"type": "string[]"
}
],
"name": "grantRoles",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "who_",
"type": "address"
},
{
"internalType": "string",
"name": "resource_",
"type": "string"
},
{
"internalType": "string",
"name": "permission_",
"type": "string"
}
],
"name": "hasPermission",
"outputs": [
{
"internalType": "bool",
"name": "isAllowed_",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target_",
"type": "address"
},
{
"internalType": "address",
"name": "member_",
"type": "address"
}
],
"name": "isUserInVetoGroup",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target_",
"type": "address"
}
],
"name": "isVetoGroupExists",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target_",
"type": "address"
},
{
"internalType": "contract DAOMemberStorage",
"name": "linkedMemberStorage_",
"type": "address"
}
],
"name": "linkStorageToVetoGroup",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes[]",
"name": "data",
"type": "bytes[]"
}
],
"name": "multicall",
"outputs": [
{
"internalType": "bytes[]",
"name": "results",
"type": "bytes[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "member_",
"type": "address"
},
{
"internalType": "string[]",
"name": "groups_",
"type": "string[]"
}
],
"name": "removeMemberFromGroup",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "role_",
"type": "string"
},
{
"components": [
{
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"internalType": "string[]",
"name": "permissions",
"type": "string[]"
}
],
"internalType": "struct IRBAC.ResourceWithPermissions[]",
"name": "permissionsToRemove_",
"type": "tuple[]"
},
{
"internalType": "bool",
"name": "allowed_",
"type": "bool"
}
],
"name": "removePermissionsFromRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "who_",
"type": "address"
},
{
"internalType": "string[]",
"name": "groupsToRemoveFrom_",
"type": "string[]"
}
],
"name": "removeUserFromGroups",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target_",
"type": "address"
}
],
"name": "removeVetoGroup",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "groupFrom_",
"type": "string"
},
{
"internalType": "string[]",
"name": "rolesToRevoke_",
"type": "string[]"
}
],
"name": "revokeGroupRoles",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from_",
"type": "address"
},
{
"internalType": "string[]",
"name": "rolesToRevoke_",
"type": "string[]"
}
],
"name": "revokeRoles",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract DAORegistry",
"name": "daoRegistry_",
"type": "address"
}
],
"name": "setDAORegistry",
"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": "toggleDefaultGroup",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60a080604052346100315730608052615080908161003782396080518181816113d9015281816118db01526119a50152f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80622f5bc01461033c57806301ffc9a71461033757806303bc0b3e146103325780630423b79f1461032d57806306a36aee146103285780630b441407146103235780630c69c28a1461031e5780630ead6f1e146103195780630fe908ec14610314578063141c98951461030f57806315ddcefc1461030a57806321a9ec211461030557806330cae1681461030057806331dbd475146102835780633659cfe6146102fb57806337ff630d146102f65780633da04e4a146102f15780634a9e12c51461024c5780634e63adc1146102ec5780634f0d84e3146102e75780634f1ef286146102e2578063524e62b2146102dd57806352d1902d146102d857806354fd4d50146102d35780635c60da1b146102ce5780636cb6f26c146102c9578063733352b3146102c457806375e025e7146102bf5780637951c6da146102ba5780637cb9cdfa146102b557806381c5492b146102b05780638412ccd8146102ab5780638e5cc2b7146102a657806396b5f936146102a15780639a9aa8d41461029c578063a4fc6c2314610297578063ac9650d814610292578063b3e657fb1461028d578063b832a5a214610288578063bb65dc8314610283578063d41de1271461027e578063d8ad4e1c14610279578063dc22486314610274578063e136fea51461026f578063e876a9541461026a578063ec183fc614610265578063ee2f6ce514610260578063f1c7d41b1461025b578063fc981a3614610256578063fcddfd4a146102515763ff846fb91461024c57600080fd5b6116fe565b612640565b612618565b6125bf565b612589565b6123f0565b6122d2565b6122ad565b612291565b61221e565b6121c0565b611393565b6121a4565b612166565b6120df565b612059565b612030565b611f74565b611f5b565b611f32565b611ea3565b611d55565b611cf3565b611bcf565b611bb3565b611ad3565b611a9d565b611a57565b611992565b611963565b611897565b611869565b611727565b6116a5565b611607565b6113af565b6110e0565b610f6c565b610f2e565b610e9d565b610e7b565b610d94565b610ca1565b61099c565b610908565b610871565b6107e9565b610726565b6105f5565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761037257604052565b610341565b606081019081106001600160401b0382111761037257604052565b6001600160401b03811161037257604052565b90601f801991011681019081106001600160401b0382111761037257604052565b6040519061012082018281106001600160401b0382111761037257604052565b6040519060a082018281106001600160401b0382111761037257604052565b6040519061014082018281106001600160401b0382111761037257604052565b6001600160401b03811161037257601f01601f191660200190565b81601f820112156104875780359061045782610425565b9261046560405194856103a5565b8284526020838301011161048757816000926020809301838601378301015290565b600080fd5b602060031982011261048757600435906001600160401b038211610487576104b691600401610440565b90565b60005b8381106104cc5750506000910152565b81810151838201526020016104bc565b906020916104f5815180928185528580860191016104b9565b601f01601f1916010190565b9080825190818152602080910160059082808560051b8701019601946000926000935b86851061053657505050505050505090565b909192939495969786601f19808684030187528a518261055f60408351908088528701906104dc565b91015193838183039101528351808252838201918480838a1b83010196019387905b8382106105a457505050505050806001929a019501950193969594929190610524565b919395806105bf898588600196989a9c03018a528a516104dc565b9801960192018c9594929391610581565b90916105e76104b693604084526040840190610501565b916020818403910152610501565b34610487576106033661048c565b61061f61060f82612669565b6001600052602052604060002090565b61063a61062b83612669565b60008052602052604060002090565b9061065361062b61064d61060f8661268f565b9461268f565b9061065e8154612727565b916106698454612727565b9060005b84518110156106c1578061068360019286613d4b565b61068d828861279d565b51526106ac6106a7896106a0848a61279d565b5151612701565b613d58565b60206106b8838961279d565b5101520161066d565b5091509260005b845181101561071057806106de60019284613d4b565b6106e8828861279d565b51526106fb6106a7856106a0848a61279d565b6020610707838961279d565b510152016106c8565b505050610722604051928392836105d0565b0390f35b346104875760203660031901126104875760043563ffffffff60e01b81168091036104875761072290634efd6d0960e01b81149081156107bc575b81156107ab575b811561079a575b8115610789575b5060405190151581529081906020820190565b6301ffc9a760e01b14905038610776565b6363c8929f60e01b8114915061076f565b630cbef19360e41b81149150610768565b63139c0b2360e31b81149150610761565b600091031261048757565b9060206104b69281815201906104dc565b346104875760003660031901126104875761072260405161080981610357565b60048152631491505160e21b60208201526040519182916020835260208301906104dc565b6001600160a01b0381160361048757565b359061084a8261082e565b565b6040906003190112610487576004356108648161082e565b906024356104b68161082e565b34610487576108986108823661084c565b9061089361088e6127b6565b613dad565b613ea8565b005b90808251908181526020809101926020808460051b8301019501936000915b8483106108c95750505050505090565b90919293949584806108e7600193601f198682030187528a516104dc565b98019301930191949392906108b9565b9060206104b692818152019061089a565b3461048757602080600319360112610487576004356109268161082e565b6001600160a01b031660009081526003602052604090208054610948816109bc565b9161095660405193846103a5565b81835260208301906000526020600020936000915b838310610980576040518061072287826108f7565b600182819261098e896112f0565b81520196019201919461096b565b346104875760003660031901126104875760206004541515604051908152f35b6001600160401b0381116103725760051b60200190565b91909160408082850312610487578051916109ed83610357565b829481356001600160401b039081811161048757830193808584031261048757805190610a1982610357565b85358381116104875784610a2e918801610440565b8252602095868101359084821161048757016101208186031261048757610a536103c6565b918135835287820135888401528082013590830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e08101358481116104875785610aa8918301610440565b60e083015261010080910135908201528582015285528383013590811161048757610ad39201610440565b910152565b81601f8201121561048757803591602091610af2846109bc565b93610b0060405195866103a5565b808552838086019160051b8301019280841161048757848301915b848310610b2b5750505050505090565b82356001600160401b038111610487578691610b4c848480948901016109d3565b815201920191610b1b565b9080601f8301121561048757813591602091610b72846109bc565b93604091610b8360405196876103a5565b818652848087019260051b8501019381851161048757858101925b858410610baf575050505050505090565b6001600160401b0390843582811161048757830160609081601f19828803011261048757875193610bdf85610377565b8a82013581811161048757878c610bf892850101610440565b85528882013590811161048757868b610c1392840101610440565b8a850152013590600682101561048757828993928885940152815201930192610b9e565b9080601f83011215610487576020908235610c51816109bc565b93610c5f60405195866103a5565b81855260208086019260051b82010192831161048757602001905b828210610c88575050505090565b8380918335610c968161082e565b815201910190610c7a565b3461048757600319602036820112610487576004908135906001600160401b03908183116104875760a090833603011261048757610cdd6103e6565b918084013582811161048757610cf890853691840101610440565b8352610d066024820161083f565b6020840152604481013582811161048757610d2690853691840101610ad8565b6040840152606481013582811161048757610d4690853691840101610b57565b606084015260848101359182116104875761089893610d689236920101610c37565b6080820152612802565b60405190610d7f82610357565b600682526555504441544560d01b6020830152565b3461048757600036600319011261048757610722610db0610d72565b6040519182916020835260208301906104dc565b81601f8201121561048757803591602091610dde846109bc565b93610dec60405195866103a5565b808552838086019160051b8301019280841161048757848301915b848310610e175750505050505090565b82356001600160401b038111610487578691610e3884848094890101610440565b815201920191610e07565b90604060031983011261048757600435610e5c8161082e565b91602435906001600160401b038211610487576104b691600401610dc4565b3461048757610898610e8c36610e43565b90610e9861088e612b59565b61422b565b34610487576020366003190112610487576000600435610ebc8161082e565b60405163bb65dc8360e01b8152916001600160a01b03918390600490829085165afa918215610f2957602092610efa91600091610f06575b506126b5565b54161515604051908152f35b610f2391503d806000833e610f1b81836103a5565b810190612bca565b38610ef4565b612b4d565b34610487576040366003190112610487576020610f62600435610f508161082e565b60243590610f5d8261082e565b612c04565b6040519015158152f35b3461048757610f7a3661084c565b610fa7604051610f8981610357565b600c81526b05550444154455f47524f55560a41b6020820152613dad565b610fb08161431f565b60405163bb65dc8360e01b81526001600160a01b0391906000816004818787165afa938415610f295761105b83600161103b7f2ab590f0b59257764cf60af701cdaf4e4cc93be619db3d27af2f1f969c919c8e9861107d96600091611082575b506110368961102e611021846126b5565b546001600160a01b031690565b161515612cd2565b6126b5565b0180546001600160a01b0319166001600160a01b03909216919091179055565b604080516001600160a01b039283168152949093161660208401528291820190565b0390a1005b61109791503d806000833e610f1b81836103a5565b38611010565b906040600319830112610487576001600160401b0360043581811161048757836110c991600401610440565b92602435918211610487576104b691600401610dc4565b34610487577f9ba35c12cc0b45bae6e2f4fd0085b072dfa11802727a4dca990ad11a960ab31661110f3661109d565b906111af61111b611b8a565b611123612182565b6111aa60426111338385336132c4565b92604051948591680292120a19d103737960bd1b60208401526111608151809260206029870191016104b9565b82017f207065726d697373696f6e20666f72207265736f757263652000000000000000602982015261119b82518093602087850191016104b9565b010360228101855201836103a5565b612d6a565b6111bb82511515612d9a565b6111cd826111c8836126db565b614aa4565b61107d60405192839283614435565b634e487b7160e01b600052600060045260246000fd5b90600182811c92168015611222575b602083101461120c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611201565b6040519060008260075491611240836111f2565b808352926020906001908181169081156112cc575060011461126b575b505061084a925003836103a5565b91509260076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688936000925b8284106112b4575061084a945050508101602001388061125d565b85548885018301529485019487945092810192611299565b9150506020925061084a94915060ff191682840152151560051b820101388061125d565b90604051918260008254611303816111f2565b908184526020946001916001811690816000146113715750600114611332575b50505061084a925003836103a5565b600090815285812095935091905b81831061135957505061084a9350820101388080611323565b85548884018501529485019487945091830191611340565b9250505061084a94925060ff191682840152151560051b820101388080611323565b3461048757600036600319011261048757610722610db061122c565b34610487576020366003190112610487576004356113cc8161082e565b6001600160a01b0361141e7f0000000000000000000000000000000000000000000000000000000000000000821661140630821415612de6565b82600080516020615054833981519152541614612e47565b6004602082600b541660405192838092633441847f60e21b82525afa908115610f29576000916114b9575b50163303611463576108989061145d612ea8565b90614516565b60405162461bcd60e51b815260206004820152602860248201527f5b5147444b2d3030363030355d2d4e6f7420617574686f72697a656420746f206044820152673ab833b930b2329760c11b6064820152608490fd5b6114db915060203d6020116114e1575b6114d381836103a5565b810190613aab565b38611449565b503d6114c9565b8015150361048757565b6044359061084a826114e8565b906060600319830112610487576001600160401b03600435818111610487578361152b91600401610440565b926024918235908082116104875782602383011215610487578160040135611552816109bc565b94604061156260405197886103a5565b82875260209582602089019460051b8701019581871161048757838101945b87861061159a57505050505050505050906104b66114f2565b853587811161048757820190846023198386030112610487578451906115bf82610357565b868301358981116104875785886115d892860101610440565b8252604483013591898311610487576115f886898e969587960101610dc4565b83820152815201950194611581565b3461048757611615366114ff565b611620929192611b8a565b9061166b61162c612144565b926116388482336132c4565b6111aa60426040518094602098680292120a19d103737960bd1b60208401526111608151809260206029870191016104b9565b60005b8451811015610898578061169f836116886001948961279d565b515186611695858b61279d565b510151908861479c565b0161166e565b34610487576020366003190112610487576107226116cd6004356116c88161082e565b612f30565b60405191829160208352602083019061089a565b604051906116ee82610357565b60018252601560f91b6020830152565b3461048757600036600319011261048757610722610db06116e1565b3590600482101561048757565b3461048757600319602036820112610487576004908135906001600160401b03908183116104875761014090833603011261048757611764610405565b91808401358281116104875761177f90853691840101610440565b835261178d6024820161083f565b60208401526044810135828111610487576117ad90853691840101610440565b60408401526117be6064820161171a565b60608401526084810135828111610487576117de90853691840101610b57565b608084015260a4810135828111610487576117fe90853691840101610440565b60a084015260c48101358281116104875761181e908536918401016109d3565b60c084015261182f60e4820161083f565b60e08401526101048101359182116104875761185661012492610898953691840101610440565b6101008401520135610120820152612fa4565b346104875761089861187a36610e43565b9061188661111b611b8a565b61189282511515613132565b6141e9565b6040366003190112610487576004356118af8161082e565b6024356001600160401b038111610487576118ce903690600401610440565b6001600160a01b036119087f0000000000000000000000000000000000000000000000000000000000000000821661140630821415612de6565b6004602082600b541660405192838092633441847f60e21b82525afa908115610f2957600091611944575b5016330361146357610898916145ea565b61195d915060203d6020116114e1576114d381836103a5565b38611933565b3461048757602036600319011261048757602061198a6004356119858161082e565b6131f5565b604051908152f35b34610487576000366003190112610487577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036119ec576040516000805160206150548339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b3461048757600036600319011261048757610722604051611a7781610357565b6005815264312e342e3160d81b60208201526040519182916020835260208301906104dc565b3461048757600036600319011261048757600080516020615054833981519152546040516001600160a01b039091168152602090f35b34610487576020366003190112610487576000600435611af28161082e565b816020604051611b0181610357565b828152015260405163bb65dc8360e01b8152916001600160a01b03918390600490829085165afa918215610f295761072292611b4491600091610f0657506126b5565b90600160405192611b5484610357565b828154168452015416602082015260405191829182919091602060408201938160018060a01b0391828151168552015116910152565b60405190611b9782610357565b600d82526c524241435f5245534f5552434560981b6020830152565b3461048757600036600319011261048757610722610db0611b8a565b3461048757611bdd366114ff565b9190611be7611b8a565b90611bf0612182565b92611c36611bff8585336132c4565b936040946111aa6042604051809460209a680292120a19d103737960bd1b60208401526111608151809260206029870191016104b9565b60005b825181101561089857807f27f963dfdedb973db8acb94be0be26fbd4c55498bc54cfd0733b9da9c0ab8296611c706001938661279d565b515187611c7d848861279d565b51015190611c9f8a611c8e88612669565b901515600052602052604060002090565b81611cb6611cb0