dgf-prototype/frontend/contractArtifacts/DAO.json

828 lines
115 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "DAO",
"sourceName": "contracts/core/DAO.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "id",
"type": "string"
}
],
"name": "PostAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
}
],
"name": "ValidationPoolInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "votePasses",
"type": "bool"
},
{
"indexed": false,
"internalType": "bool",
"name": "quorumMet",
"type": "bool"
}
],
"name": "ValidationPoolResolved",
"type": "event"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "weightPPM",
"type": "uint256"
},
{
"internalType": "address",
"name": "authorAddress",
"type": "address"
}
],
"internalType": "struct Author[]",
"name": "authors",
"type": "tuple[]"
},
{
"internalType": "string",
"name": "contentId",
"type": "string"
},
{
"components": [
{
"internalType": "int256",
"name": "weightPPM",
"type": "int256"
},
{
"internalType": "string",
"name": "targetPostId",
"type": "string"
}
],
"internalType": "struct Citation[]",
"name": "citations",
"type": "tuple[]"
}
],
"name": "addPost",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "inFavor",
"type": "bool"
}
],
"name": "delegatedStakeOnValidationPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
}
],
"name": "evaluateOutcome",
"outputs": [
{
"internalType": "bool",
"name": "votePasses",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "postId",
"type": "string"
}
],
"name": "getPostAuthors",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "weightPPM",
"type": "uint256"
},
{
"internalType": "address",
"name": "authorAddress",
"type": "address"
}
],
"internalType": "struct Author[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "postId",
"type": "string"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256[2]",
"name": "quorum",
"type": "uint256[2]"
},
{
"internalType": "uint256[2]",
"name": "winRatio",
"type": "uint256[2]"
},
{
"internalType": "uint256",
"name": "bindingPercent",
"type": "uint256"
},
{
"internalType": "bool",
"name": "redistributeLosingStakes",
"type": "bool"
},
{
"internalType": "bool",
"name": "callbackOnValidate",
"type": "bool"
},
{
"internalType": "bytes",
"name": "callbackData",
"type": "bytes"
}
],
"name": "initiateValidationPool",
"outputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isMember",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "memberCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "members",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "postCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "postIds",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "posts",
"outputs": [
{
"internalType": "string",
"name": "id",
"type": "string"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "reputation",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
}
],
"name": "stakeAvailability",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "inFavor",
"type": "bool"
}
],
"name": "stakeOnValidationPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "validationPoolCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "validationPools",
"outputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "string",
"name": "postId",
"type": "string"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "minted",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "stakeCount",
"type": "uint256"
},
{
"components": [
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256[2]",
"name": "quorum",
"type": "uint256[2]"
},
{
"internalType": "uint256[2]",
"name": "winRatio",
"type": "uint256[2]"
},
{
"internalType": "uint256",
"name": "bindingPercent",
"type": "uint256"
},
{
"internalType": "bool",
"name": "redistributeLosingStakes",
"type": "bool"
}
],
"internalType": "struct ValidationPoolParams",
"name": "params",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endTime",
"type": "uint256"
},
{
"internalType": "bool",
"name": "resolved",
"type": "bool"
},
{
"internalType": "bool",
"name": "outcome",
"type": "bool"
},
{
"internalType": "bool",
"name": "callbackOnValidate",
"type": "bool"
},
{
"internalType": "bytes",
"name": "callbackData",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040526003600c556040518060400160405280600160ff168152602001600a60ff16815250600f90600262000038929190620000df565b503480156200004657600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152508160039081620000c49190620003c2565b508060049081620000d69190620003c2565b505050620004a9565b826002810192821562000116579160200282015b8281111562000115578251829060ff16905591602001919060010190620000f3565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ca57607f821691505b602082108103620001e057620001df62000182565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200024a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200020b565b6200025686836200020b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002a36200029d62000297846200026e565b62000278565b6200026e565b9050919050565b6000819050919050565b620002bf8362000282565b620002d7620002ce82620002aa565b84845462000218565b825550505050565b600090565b620002ee620002df565b620002fb818484620002b4565b505050565b5b81811015620003235762000317600082620002e4565b60018101905062000301565b5050565b601f82111562000372576200033c81620001e6565b6200034784620001fb565b8101602085101562000357578190505b6200036f6200036685620001fb565b83018262000300565b50505b505050565b600082821c905092915050565b6000620003976000198460080262000377565b1980831691505092915050565b6000620003b2838362000384565b9150826002028217905092915050565b620003cd8262000148565b67ffffffffffffffff811115620003e957620003e862000153565b5b620003f58254620001b1565b6200040282828562000327565b600060209050601f8311600181146200043a576000841562000425578287015190505b620004318582620003a4565b865550620004a1565b601f1984166200044a86620001e6565b60005b8281101562000474578489015182556001820191506020850194506020810190506200044d565b8683101562000494578489015162000490601f89168262000384565b8355505b6001600288020188555050505b505050505050565b615f3980620004b96000396000f3fe60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b5e565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c28565b6106e0565b6040516101af9190613c83565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cad565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cad565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613cc8565b61070f565b6040516102429190613c83565b60405180910390f35b34801561025757600080fd5b506102606110f1565b60405161026d9190613cad565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613cf5565b6110fb565b6040516102aa9190613c83565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d74565b611138565b005b3480156102e857600080fd5b506102f1611161565b6040516102fe9190613de3565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613cc8565b61116a565b60405161033b9190613b5e565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613cc8565b611216565b6040516103789190613e0d565b60405180910390f35b34801561038d57600080fd5b50610396611249565b6040516103a39190613cad565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e28565b61124f565b6040516103e09190613cad565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e55565b611297565b60405161041d9190613c83565b60405180910390f35b34801561043257600080fd5b5061043b61131e565b6040516104489190613b5e565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613ea8565b6113b0565b005b610494600480360381019061048f9190613fec565b6113e5565b6040516104a19190613cad565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e28565b61189f565b6040516104de9190613c83565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613cc8565b6118bf565b6040516105269c9b9a9998979695949392919061425c565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c28565b611b39565b6040516105639190613c83565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614326565b611b76565b6040516105a09190614460565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614482565b611c5f565b6040516105dd9190613cad565b60405180910390f35b3480156105f257600080fd5b5061060d6004803603810190610608919061456e565b611ce6565b005b34801561061b57600080fd5b5061063660048036038101906106319190614752565b6121b9565b6040516106459392919061479b565b60405180910390f35b60606003805461065d90614808565b80601f016020809104026020016040519081016040528092919081815260200182805461068990614808565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb6122a1565b90506106f88185856122a9565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614885565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148d4565b93506107ee565b8160020154836107eb91906148d4565b92505b808060010191505061078a565b506002846003015461080d9190614937565b8361081891906148d4565b92506002846003015461082b9190614937565b8261083691906148d4565b915060006002856003015461084b9190614968565b146108605760018361085d91906148d4565b92505b83600e015442118061088357506108756110f1565b828461088191906148d4565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a0b565b60405180910390fd5b836006016001016000600281106108dc576108db614a2b565b5b01546108e66110f1565b6108f09190614a5a565b82846108fc91906148d4565b8560060160010160016002811061091657610915614a2b565b5b01546109229190614a5a565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614a9c565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b6c565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614bdb565b505b60009450505050506110ec565b83600601600301600060028110610a6c57610a6b614a2b565b5b01548284610a7a91906148d4565b610a849190614a5a565b84600601600301600160028110610a9e57610a9d614a2b565b5b015484610aab9190614a5a565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614a9c565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a5a565b610b9f9190614937565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122bb565b8084610bf691906148d4565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124e0565b5b505b8080600101915050610b3b565b508715610e3d5760028760030154610c539190614937565b82610c5e91906148d4565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a5a565b610ce79190614937565b610cf19190614a5a565b610cfb9190614937565b90508083610d0991906148d4565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122bb565b505b8080600101915050610c63565b5060008183610d589190614c08565b9050600060028960030154610d6d9190614968565b14610d8257600181610d7f91906148d4565b90505b610e36886001018054610d9490614808565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc090614808565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e249190614937565b610e2e91906148d4565b600080612562565b5050610f55565b866003015482610e4d91906148d4565b915060005b8760050154811015610f535787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610eaa57508460010160009054906101000a900460ff161515891515145b15610f465760006064896006016005015460028b60030154610ecc9190614937565b87610ed79190614c08565b886002015487610ee79190614a5a565b610ef19190614937565b610efb9190614a5a565b610f059190614937565b90508083610f1391906148d4565b9250610f44308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122bb565b505b8080600101915050610e52565b505b60005b60065481101561101e5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa46110f1565b610fad8361124f565b8b600d0154610fbc9190614a5a565b610fc69190614937565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100e573d6000803e3d6000fd5b5050508080600101915050610f58565b5086600f0160029054906101000a900460ff16156110e4578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109f959493929190614b6c565b6020604051808303816000875af11580156110be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e29190614bdb565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90614c88565b60405180910390fd5b6000600d6000858152602001908152602001600020905061115b8133858561310a565b50505050565b60006009905090565b6009818154811061117a57600080fd5b90600052602060002001600091509050805461119590614808565b80601f01602080910402602001604051908101604052809291908181526020018280546111c190614808565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a43385856122a9565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112e193929190614ca8565b600060405180830381600087803b1580156112fb57600080fd5b505af115801561130f573d6000803e3d6000fd5b50505050600190509392505050565b60606004805461132d90614808565b80601f016020809104026020016040519081016040528092919081815260200182805461135990614808565b80156113a65780601f1061137b576101008083540402835291602001916113a6565b820191906000526020600020905b81548152906001019060200180831161138957829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113d2843385613200565b6113de8185858561310a565b5050505050565b6000803411611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090614d51565b60405180910390fd5b600189101561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490614dbd565b60405180910390fd5b651cae8c13e0008911156114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad90614e29565b60405180910390fd5b876001600281106114ca576114c9614a2b565b5b6020020135600f6000600281106114e4576114e3614a2b565b5b01546114f09190614a5a565b8860006002811061150457611503614a2b565b5b6020020135600f60016002811061151e5761151d614a2b565b5b015461152a9190614a5a565b101561156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290614e95565b60405180910390fd5b8760016002811061157f5761157e614a2b565b5b60200201358860006002811061159857611597614a2b565b5b602002013511156115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590614f01565b60405180910390fd5b866001600281106115f2576115f1614a2b565b5b60200201358760006002811061160b5761160a614a2b565b5b60200201351115611651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164890614f6d565b60405180910390fd5b6064861115611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90614fd9565b60405180910390fd5b600060088c8c6040516116a9929190615029565b908152602001604051809103902090506000816002018054905003611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa9061508e565b60405180910390fd5b600e6000815480929190611716906150ae565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117899291906152ad565b503481600d018190555089816006016001019060026117a9929190613a71565b5088816006016003019060026117c0929190613a71565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180491906148d4565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118449291906153ce565b5061184f3034613294565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118879190613cad565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e890614808565b80601f016020809104026020016040519081016040528092919081815260200182805461191490614808565b80156119615780601f1061193657610100808354040283529160200191611961565b820191906000526020600020905b81548152906001019060200180831161194457829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ee576020028201915b8154815260200190600101908083116119da575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a33576020028201915b815481526020019060010190808311611a1f575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab690614808565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae290614808565b8015611b2f5780601f10611b0457610100808354040283529160200191611b2f565b820191906000526020600020905b815481529060010190602001808311611b1257829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d90614c88565b60405180910390fd5b6060600060088484604051611b8c929190615029565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c525783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bc0565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2390615510565b60405180910390fd5b600a6000815480929190611d3f906150ae565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d819291906152ad565b50600060088585604051611d96929190615029565b908152602001604051809103902090506000816002018054905014611df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de7906155a2565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e469291906152ad565b50600080600090505b88889050811015611ee557888882818110611e6d57611e6c614a2b565b5b9050604002016000013582611e8291906148d4565b915082600201898983818110611e9b57611e9a614a2b565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed6919061574f565b50508080600101915050611e4f565b50620f42408114611f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f22906157cf565b60405180910390fd5b60005b84849050811015611fa65782600301858583818110611f5057611f4f614a2b565b5b9050602002810190611f6291906157fe565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f979190615965565b50508080600101915050611f2e565b5060008060005b84600301805490508110156120ca576000856003018281548110611fd457611fd3614a2b565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc081121561204b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612042906159e5565b60405180910390fd5b620f4240811315612091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208890615a77565b60405180910390fd5b60008113156120ad5780846120a69190615a97565b93506120bc565b80836120b99190615a97565b92505b508080600101915050611fad565b50620f4240821315612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210890615b4d565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b90615bdf565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972788886040516121a5929190615c2c565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121f290614808565b80601f016020809104026020016040519081016040528092919081815260200182805461221e90614808565b801561226b5780601f106122405761010080835404028352916020019161226b565b820191906000526020600020905b81548152906001019060200180831161224e57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122b68383836001613316565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361230d57806002600082825461230191906148d4565b925050819055506123e0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612399578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161239093929190614ca8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124295780600260008282540392505081905550612476565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124d39190613cad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125525760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125499190613e0d565b60405180910390fd5b61255e826000836122bb565b5050565b6000600c54821061257557839050613102565b60006008866040516125879190615c81565b9081526020016040518091039020905060008160020180549050036125af5784915050613102565b60005b81600301805490508110156126e35760008260030182815481106125d9576125d8614a2b565b5b90600052602060002090600202016000015412156126d6576126c88783600301838154811061260b5761260a614a2b565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461263e90614808565b80601f016020809104026020016040519081016040528092919081815260200182805461266a90614808565b80156126b75780601f1061268c576101008083540402835291602001916126b7565b820191906000526020600020905b81548152906001019060200180831161269a57829003601f168201915b5050505050815250508888886134ed565b866126d39190615c98565b95505b80806001019150506125b2565b5060005b816003018054905081101561281857600082600301828154811061270e5761270d614a2b565b5b906000526020600020906002020160000154131561280b576127fd878360030183815481106127405761273f614a2b565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461277390614808565b80601f016020809104026020016040519081016040528092919081815260200182805461279f90614808565b80156127ec5780601f106127c1576101008083540402835291602001916127ec565b820191906000526020600020905b8154815290600101906020018083116127cf57829003601f168201915b5050505050815250508888886134ed565b866128089190615c98565b95505b80806001019150506126e7565b506000851315612b0457612ae3816040518060a001604052908160008201805461284190614808565b80601f016020809104026020016040519081016040528092919081815260200182805461286d90614808565b80156128ba5780601f1061288f576101008083540402835291602001916128ba565b820191906000526020600020905b81548152906001019060200180831161289d57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156129d05783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061293e565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612acb578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a3a90614808565b80601f0160208091040260200160405190810160405280929190818152602001828054612a6690614808565b8015612ab35780601f10612a8857610100808354040283529160200191612ab3565b820191906000526020600020905b815481529060010190602001808311612a9657829003601f168201915b505050505081525050815260200190600101906129fd565b505050508152602001600482015481525050866136b8565b5084816004016000828254612af891906148d4565b92505081905550613100565b6000858260040154612b169190615a97565b12612e0757612ddc816040518060a0016040529081600082018054612b3a90614808565b80601f0160208091040260200160405190810160405280929190818152602001828054612b6690614808565b8015612bb35780601f10612b8857610100808354040283529160200191612bb3565b820191906000526020600020905b815481529060010190602001808311612b9657829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612cc95783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612c37565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612dc4578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612d3390614808565b80601f0160208091040260200160405190810160405280929190818152602001828054612d5f90614808565b8015612dac5780601f10612d8157610100808354040283529160200191612dac565b820191906000526020600020905b815481529060010190602001808311612d8f57829003601f168201915b50505050508152505081526020019060010190612cf6565b505050508152602001600482015481525050866136b8565b915084612de890615cdb565b816004016000828254612dfb9190614c08565b925050819055506130ff565b848160040154612e179190615a97565b91506130e7816040518060a0016040529081600082018054612e3890614808565b80601f0160208091040260200160405190810160405280929190818152602001828054612e6490614808565b8015612eb15780601f10612e8657610100808354040283529160200191612eb1565b820191906000526020600020905b815481529060010190602001808311612e9457829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612fc75783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612f35565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156130c257838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461303190614808565b80601f016020809104026020016040519081016040528092919081815260200182805461305d90614808565b80156130aa5780601f1061307f576101008083540402835291602001916130aa565b820191906000526020600020905b81548152906001019060200180831161308d57829003601f168201915b50505050508152505081526020019060010190612ff4565b50505050815260200160048201548152505082600401546130e290615cdb565b6136b8565b826130f29190615a97565b9150600081600401819055505b5b505b949350505050565b83600e0154421115613151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314890615d6f565b60405180910390fd5b6000846005016000815480929190613168906150ae565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600061320c8484611c5f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461328e578181101561327e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161327593929190614ca8565b60405180910390fd5b61328d84848484036000613316565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133065760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016132fd9190613e0d565b60405180910390fd5b613312600083836122bb565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036133885760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161337f9190613e0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133fa5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016133f19190613e0d565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156134e7578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516134de9190613cad565b60405180910390a35b50505050565b6000620f42408560000151856135039190615d8f565b61350d9190615e07565b905060008560200151510361356f576000811215613560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355790615ee3565b60405180910390fd5b61356a30826124e0565b6136af565b6000600b876040516135819190615c81565b908152602001604051809103902086602001516040516135a19190615c81565b9081526020016040518091039020549050831561360e5760008212156135e957806135cb90615cdb565b82136135e057806135db90615cdb565b6135e2565b815b915061360d565b806135f390615cdb565b8212613608578061360390615cdb565b61360a565b815b91505b5b600061364787602001518487806136355750600087148015613634575060008a60000151125b5b60018861364291906148d4565b612562565b905080836136559190615c98565b925082600b896040516136689190615c81565b908152602001604051809103902088602001516040516136889190615c81565b908152602001604051809103902060008282546136a59190615a97565b9250508190555050505b95945050505050565b60008060005b846040015151811015613812576000856040015182815181106136e4576136e3614a2b565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138045780600560006006600081548092919061375b906150ae565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136be565b5060005b846040015151811015613a695760008560400151828151811061383c5761383b614a2b565b5b602002602001015190506000600187604001515161385a9190614c08565b83101561389457620f42408260000151876138759190615d8f565b61387f9190615e07565b9050808461388d9190615a97565b93506138a3565b83866138a09190615c98565b90505b60008113156139de576138bb308360200151836122bb565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139d9578160200151600560006006600081548092919061392c906150ae565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a5a565b806139e890615cdb565b6139f5836020015161124f565b1015613a4057613a08826020015161124f565b81613a139190615a97565b85613a1e9190615a97565b9450613a3b826020015130613a36856020015161124f565b6122bb565b613a59565b613a5882602001513083613a5390615cdb565b6122bb565b5b5b50508080600101915050613816565b505092915050565b8260028101928215613aa0579160200282015b82811115613a9f578235825591602001919060010190613a84565b5b509050613aad9190613ab1565b5090565b5b80821115613aca576000816000905550600101613ab2565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b08578082015181840152602081019050613aed565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3082613ace565b613b3a8185613ad9565b9350613b4a818560208601613aea565b613b5381613b14565b840191505092915050565b60006020820190508181036000830152613b788184613b25565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bbf82613b94565b9050919050565b613bcf81613bb4565b8114613bda57600080fd5b50565b600081359050613bec81613bc6565b92915050565b6000819050919050565b613c0581613bf2565b8114613c1057600080fd5b50565b600081359050613c2281613bfc565b92915050565b60008060408385031215613c3f57613c3e613b8a565b5b6000613c4d85828601613bdd565b9250506020613c5e85828601613c13565b9150509250929050565b60008115159050919050565b613c7d81613c68565b82525050565b6000602082019050613c986000830184613c74565b92915050565b613ca781613bf2565b82525050565b6000602082019050613cc26000830184613c9e565b92915050565b600060208284031215613cde57613cdd613b8a565b5b6000613cec84828501613c13565b91505092915050565b600080600060608486031215613d0e57613d0d613b8a565b5b6000613d1c86828701613bdd565b9350506020613d2d86828701613bdd565b9250506040613d3e86828701613c13565b9150509250925092565b613d5181613c68565b8114613d5c57600080fd5b50565b600081359050613d6e81613d48565b92915050565b600080600060608486031215613d8d57613d8c613b8a565b5b6000613d9b86828701613c13565b9350506020613dac86828701613c13565b9250506040613dbd86828701613d5f565b9150509250925092565b600060ff82169050919050565b613ddd81613dc7565b82525050565b6000602082019050613df86000830184613dd4565b92915050565b613e0781613bb4565b82525050565b6000602082019050613e226000830184613dfe565b92915050565b600060208284031215613e3e57613e3d613b8a565b5b6000613e4c84828501613bdd565b91505092915050565b600080600060608486031215613e6e57613e6d613b8a565b5b6000613e7c86828701613bdd565b9350506020613e8d86828701613c13565b9250506040613e9e86828701613c13565b9150509250925092565b60008060008060808587031215613ec257613ec1613b8a565b5b6000613ed087828801613c13565b9450506020613ee187828801613bdd565b9350506040613ef287828801613c13565b9250506060613f0387828801613d5f565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f3457613f33613f0f565b5b8235905067ffffffffffffffff811115613f5157613f50613f14565b5b602083019150836001820283011115613f6d57613f6c613f19565b5b9250929050565b600081905082602060020282011115613f9057613f8f613f19565b5b92915050565b60008083601f840112613fac57613fab613f0f565b5b8235905067ffffffffffffffff811115613fc957613fc8613f14565b5b602083019150836001820283011115613fe557613fe4613f19565b5b9250929050565b6000806000806000806000806000806101408b8d0312156140105761400f613b8a565b5b60008b013567ffffffffffffffff81111561402e5761402d613b8f565b5b61403a8d828e01613f1e565b9a509a5050602061404d8d828e01613c13565b985050604061405e8d828e01613f74565b975050608061406f8d828e01613f74565b96505060c06140808d828e01613c13565b95505060e06140918d828e01613d5f565b9450506101006140a38d828e01613d5f565b9350506101208b013567ffffffffffffffff8111156140c5576140c4613b8f565b5b6140d18d828e01613f96565b92509250509295989b9194979a5092959850565b6140ee81613bf2565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412083836140e5565b60208301905092915050565b6000602082019050919050565b614142816140f4565b61414c81846140ff565b92506141578261410a565b8060005b8381101561418857815161416f8782614114565b965061417a8361412c565b92505060018101905061415b565b505050505050565b61419981613c68565b82525050565b60e0820160008201516141b560008501826140e5565b5060208201516141c86020850182614139565b5060408201516141db6060850182614139565b5060608201516141ee60a08501826140e5565b50608082015161420160c0850182614190565b50505050565b600081519050919050565b600082825260208201905092915050565b600061422e82614207565b6142388185614212565b9350614248818560208601613aea565b61425181613b14565b840191505092915050565b600061024082019050614272600083018f613c9e565b8181036020830152614284818e613b25565b9050614293604083018d613dfe565b6142a0606083018c613c9e565b6142ad608083018b613c9e565b6142ba60a083018a61419f565b6142c8610180830189613c9e565b6142d66101a0830188613c9e565b6142e46101c0830187613c74565b6142f26101e0830186613c74565b614300610200830185613c74565b8181036102208301526143138184614223565b90509d9c50505050505050505050505050565b6000806020838503121561433d5761433c613b8a565b5b600083013567ffffffffffffffff81111561435b5761435a613b8f565b5b61436785828601613f1e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143a881613bb4565b82525050565b6040820160008201516143c460008501826140e5565b5060208201516143d7602085018261439f565b50505050565b60006143e983836143ae565b60408301905092915050565b6000602082019050919050565b600061440d82614373565b614417818561437e565b93506144228361438f565b8060005b8381101561445357815161443a88826143dd565b9750614445836143f5565b925050600181019050614426565b5085935050505092915050565b6000602082019050818103600083015261447a8184614402565b905092915050565b6000806040838503121561449957614498613b8a565b5b60006144a785828601613bdd565b92505060206144b885828601613bdd565b9150509250929050565b60008083601f8401126144d8576144d7613f0f565b5b8235905067ffffffffffffffff8111156144f5576144f4613f14565b5b60208301915083604082028301111561451157614510613f19565b5b9250929050565b60008083601f84011261452e5761452d613f0f565b5b8235905067ffffffffffffffff81111561454b5761454a613f14565b5b60208301915083602082028301111561456757614566613f19565b5b9250929050565b6000806000806000806060878903121561458b5761458a613b8a565b5b600087013567ffffffffffffffff8111156145a9576145a8613b8f565b5b6145b589828a016144c2565b9650965050602087013567ffffffffffffffff8111156145d8576145d7613b8f565b5b6145e489828a01613f1e565b9450945050604087013567ffffffffffffffff81111561460757614606613b8f565b5b61461389828a01614518565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61465f82613b14565b810181811067ffffffffffffffff8211171561467e5761467d614627565b5b80604052505050565b6000614691613b80565b905061469d8282614656565b919050565b600067ffffffffffffffff8211156146bd576146bc614627565b5b6146c682613b14565b9050602081019050919050565b82818337600083830152505050565b60006146f56146f0846146a2565b614687565b90508281526020810184848401111561471157614710614622565b5b61471c8482856146d3565b509392505050565b600082601f83011261473957614738613f0f565b5b81356147498482602086016146e2565b91505092915050565b60006020828403121561476857614767613b8a565b5b600082013567ffffffffffffffff81111561478657614785613b8f565b5b61479284828501614724565b91505092915050565b600060608201905081810360008301526147b58186613b25565b90506147c46020830185613dfe565b6147d16040830184613c9e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482057607f821691505b602082108103614833576148326147d9565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b600061486f601883613ad9565b915061487a82614839565b602082019050919050565b6000602082019050818103600083015261489e81614862565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148df82613bf2565b91506148ea83613bf2565b9250828201905080821115614902576149016148a5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061494282613bf2565b915061494d83613bf2565b92508261495d5761495c614908565b5b828204905092915050565b600061497382613bf2565b915061497e83613bf2565b92508261498e5761498d614908565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006149f5602183613ad9565b9150614a0082614999565b604082019050919050565b60006020820190508181036000830152614a24816149e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a6582613bf2565b9150614a7083613bf2565b9250828202614a7e81613bf2565b91508282048414831517614a9557614a946148a5565b5b5092915050565b6000606082019050614ab16000830186613c9e565b614abe6020830185613c74565b614acb6040830184613c74565b949350505050565b60008190508160005260206000209050919050565b60008154614af581614808565b614aff8186614212565b94506001821660008114614b1a5760018114614b3057614b63565b60ff198316865281151560200286019350614b63565b614b3985614ad3565b60005b83811015614b5b57815481890152600182019150602081019050614b3c565b808801955050505b50505092915050565b600060a082019050614b816000830188613c74565b614b8e6020830187613c74565b614b9b6040830186613c9e565b614ba86060830185613c9e565b8181036080830152614bba8184614ae8565b90509695505050505050565b600081519050614bd581613bfc565b92915050565b600060208284031215614bf157614bf0613b8a565b5b6000614bff84828501614bc6565b91505092915050565b6000614c1382613bf2565b9150614c1e83613bf2565b9250828203905081811115614c3657614c356148a5565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c72601b83613ad9565b9150614c7d82614c3c565b602082019050919050565b60006020820190508181036000830152614ca181614c65565b9050919050565b6000606082019050614cbd6000830186613dfe565b614cca6020830185613c9e565b614cd76040830184613c9e565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d3b602b83613ad9565b9150614d4682614cdf565b604082019050919050565b60006020820190508181036000830152614d6a81614d2e565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614da7601583613ad9565b9150614db282614d71565b602082019050919050565b60006020820190508181036000830152614dd681614d9a565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e13601483613ad9565b9150614e1e82614ddd565b602082019050919050565b60006020820190508181036000830152614e4281614e06565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e7f601783613ad9565b9150614e8a82614e49565b602082019050919050565b60006020820190508181036000830152614eae81614e72565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614eeb601a83613ad9565b9150614ef682614eb5565b602082019050919050565b60006020820190508181036000830152614f1a81614ede565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f57601d83613ad9565b9150614f6282614f21565b602082019050919050565b60006020820190508181036000830152614f8681614f4a565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fc3601e83613ad9565b9150614fce82614f8d565b602082019050919050565b60006020820190508181036000830152614ff281614fb6565b9050919050565b600081905092915050565b60006150108385614ff9565b935061501d8385846146d3565b82840190509392505050565b6000615036828486615004565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b6000615078601583613ad9565b915061508382615042565b602082019050919050565b600060208201905081810360008301526150a78161506b565b9050919050565b60006150b982613bf2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150eb576150ea6148a5565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615126565b61516d8683615126565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151aa6151a56151a084613bf2565b615185565b613bf2565b9050919050565b6000819050919050565b6151c48361518f565b6151d86151d0826151b1565b848454615133565b825550505050565b600090565b6151ed6151e0565b6151f88184846151bb565b505050565b5b8181101561521c576152116000826151e5565b6001810190506151fe565b5050565b601f8211156152615761523281615101565b61523b84615116565b8101602085101561524a578190505b61525e61525685615116565b8301826151fd565b50505b505050565b600082821c905092915050565b600061528460001984600802615266565b1980831691505092915050565b600061529d8383615273565b9150826002028217905092915050565b6152b783836150f6565b67ffffffffffffffff8111156152d0576152cf614627565b5b6152da8254614808565b6152e5828285615220565b6000601f8311600181146153145760008415615302578287013590505b61530c8582615291565b865550615374565b601f19841661532286615101565b60005b8281101561534a57848901358255600182019150602085019450602081019050615325565b868310156153675784890135615363601f891682615273565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153c95761539a81614ad3565b6153a384615116565b810160208510156153b2578190505b6153c66153be85615116565b8301826151fd565b50505b505050565b6153d8838361537d565b67ffffffffffffffff8111156153f1576153f0614627565b5b6153fb8254614808565b615406828285615388565b6000601f8311600181146154355760008415615423578287013590505b61542d8582615291565b865550615495565b601f19841661544386614ad3565b60005b8281101561546b57848901358255600182019150602085019450602081019050615446565b868310156154885784890135615484601f891682615273565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b60006154fa602583613ad9565b91506155058261549e565b604082019050919050565b60006020820190508181036000830152615529816154ed565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b600061558c602983613ad9565b915061559782615530565b604082019050919050565b600060208201905081810360008301526155bb8161557f565b9050919050565b600081356155cf81613bfc565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615611846155d8565b9350801983169250808416831791505092915050565b6156308261518f565b61564361563c826151b1565b83546155e5565b8255505050565b6000813561565781613bc6565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff615680846155d8565b9350801983169250808416831791505092915050565b60006156b16156ac6156a784613b94565b615185565b613b94565b9050919050565b60006156c382615696565b9050919050565b60006156d5826156b8565b9050919050565b6000819050919050565b6156ef826156ca565b6157026156fb826156dc565b8354615660565b8255505050565b60008101600083018061571b816155c2565b90506157278184615627565b50505060018101602083018061573c8161564a565b905061574881846156e6565b5050505050565b6157598282615709565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006157b9602283613ad9565b91506157c48261575d565b604082019050919050565b600060208201905081810360008301526157e8816157ac565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261581a576158196157ef565b5b80830191505092915050565b6000819050919050565b61583981615826565b811461584457600080fd5b50565b6000813561585481615830565b80915050919050565b600061587861587361586e84615826565b615185565b615826565b9050919050565b6000819050919050565b6158928261585d565b6158a561589e8261587f565b83546155e5565b8255505050565b600080833560016020038436030381126158c9576158c86157ef565b5b80840192508235915067ffffffffffffffff8211156158eb576158ea6157f4565b5b602083019250600182023603831315615907576159066157f9565b5b509250929050565b61591a8383836152ad565b505050565b60008101600083018061593181615847565b905061593d8184615889565b505050600181016020830161595281856158ac565b61595d81838661590f565b505050505050565b61596f828261591f565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006159cf602883613ad9565b91506159da82615973565b604082019050919050565b600060208201905081810360008301526159fe816159c2565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615a61602783613ad9565b9150615a6c82615a05565b604082019050919050565b60006020820190508181036000830152615a9081615a54565b9050919050565b6000615aa282615826565b9150615aad83615826565b925082820190508281121560008312168382126000841215161715615ad557615ad46148a5565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615b37602c83613ad9565b9150615b4282615adb565b604082019050919050565b60006020820190508181036000830152615b6681615b2a565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615bc9602d83613ad9565b9150615bd482615b6d565b604082019050919050565b60006020820190508181036000830152615bf881615bbc565b9050919050565b6000615c0b8385613ad9565b9350615c188385846146d3565b615c2183613b14565b840190509392505050565b60006020820190508181036000830152615c47818486615bff565b90509392505050565b6000615c5b82613ace565b615c658185614ff9565b9350615c75818560208601613aea565b80840191505092915050565b6000615c8d8284615c50565b915081905092915050565b6000615ca382615826565b9150615cae83615826565b9250828203905081811260008412168282136000851215161715615cd557615cd46148a5565b5b92915050565b6000615ce682615826565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d1857615d176148a5565b5b816000039050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615d59601883613ad9565b9150615d6482615d23565b602082019050919050565b60006020820190508181036000830152615d8881615d4c565b9050919050565b6000615d9a82615826565b9150615da583615826565b9250828202615db381615826565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615deb57615dea6148a5565b5b8282058414831517615e0057615dff6148a5565b5b5092915050565b6000615e1282615826565b9150615e1d83615826565b925082615e2d57615e2c614908565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e6657615e656148a5565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615ecd602683613ad9565b9150615ed882615e71565b604082019050919050565b60006020820190508181036000830152615efc81615ec0565b905091905056fea264697066735822122014513cb1a0064db5c9629f88dfa2833b84407c3037a2b10d20a5061ea1aa744664736f6c63430008180033",
"deployedBytecode": "0x60806040526004361061014b5760003560e01c806370a08231116100b6578063a23362791161006f578063a2336279146104e7578063a9059cbb1461052f578063da66863a1461056c578063dd62ed3e146105a9578063e5b4d827146105e6578063f8300fca1461060f5761014b565b806370a08231146103ac57806388380274146103e957806395d89b4114610426578063975762b3146104515780639fbe7c731461047a578063a230c524146104aa5761014b565b806323b872dd1161010857806323b872dd146102765780632d17c062146102b3578063313ce567146102dc57806350cde8ef146103075780635daf08ca14610344578063642b5bfb146103815761014b565b806306fdde0314610150578063095ea7b31461017b57806311aee380146101b857806317906c2e146101e357806317c182171461020e57806318160ddd1461024b575b600080fd5b34801561015c57600080fd5b5061016561064e565b6040516101729190613b5e565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613c28565b6106e0565b6040516101af9190613c83565b60405180910390f35b3480156101c457600080fd5b506101cd610703565b6040516101da9190613cad565b60405180910390f35b3480156101ef57600080fd5b506101f8610709565b6040516102059190613cad565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613cc8565b61070f565b6040516102429190613c83565b60405180910390f35b34801561025757600080fd5b506102606110f1565b60405161026d9190613cad565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613cf5565b6110fb565b6040516102aa9190613c83565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613d74565b611138565b005b3480156102e857600080fd5b506102f1611161565b6040516102fe9190613de3565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613cc8565b61116a565b60405161033b9190613b5e565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613cc8565b611216565b6040516103789190613e0d565b60405180910390f35b34801561038d57600080fd5b50610396611249565b6040516103a39190613cad565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190613e28565b61124f565b6040516103e09190613cad565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190613e55565b611297565b60405161041d9190613c83565b60405180910390f35b34801561043257600080fd5b5061043b61131e565b6040516104489190613b5e565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613ea8565b6113b0565b005b610494600480360381019061048f9190613fec565b6113e5565b6040516104a19190613cad565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613e28565b61189f565b6040516104de9190613c83565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613cc8565b6118bf565b6040516105269c9b9a9998979695949392919061425c565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613c28565b611b39565b6040516105639190613c83565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190614326565b611b76565b6040516105a09190614460565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614482565b611c5f565b6040516105dd9190613cad565b60405180910390f35b3480156105f257600080fd5b5061060d6004803603810190610608919061456e565b611ce6565b005b34801561061b57600080fd5b5061063660048036038101906106319190614752565b6121b9565b6040516106459392919061479b565b60405180910390f35b60606003805461065d90614808565b80601f016020809104026020016040519081016040528092919081815260200182805461068990614808565b80156106d65780601f106106ab576101008083540402835291602001916106d6565b820191906000526020600020905b8154815290600101906020018083116106b957829003601f168201915b5050505050905090565b6000806106eb6122a1565b90506106f88185856122a9565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff1615151461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614885565b60405180910390fd5b600080600080600090505b84600501548110156107fb5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff16156107db578160020154846107d491906148d4565b93506107ee565b8160020154836107eb91906148d4565b92505b808060010191505061078a565b506002846003015461080d9190614937565b8361081891906148d4565b92506002846003015461082b9190614937565b8261083691906148d4565b915060006002856003015461084b9190614968565b146108605760018361085d91906148d4565b92505b83600e015442118061088357506108756110f1565b828461088191906148d4565b145b6108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614a0b565b60405180910390fd5b836006016001016000600281106108dc576108db614a2b565b5b01546108e66110f1565b6108f09190614a5a565b82846108fc91906148d4565b8560060160010160016002811061091657610915614a2b565b5b01546109229190614a5a565b11610a5257600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de818660008060405161097893929190614a9c565b60405180910390a183600f0160029054906101000a900460ff1615610a45578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a00959493929190614b6c565b6020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190614bdb565b505b60009450505050506110ec565b83600601600301600060028110610a6c57610a6b614a2b565b5b01548284610a7a91906148d4565b610a849190614a5a565b84600601600301600160028110610a9e57610a9d614a2b565b5b015484610aab9190614a5a565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b1c93929190614a9c565b60405180910390a1600085610b315782610b33565b835b905060008060005b8760050154811015610c3b5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c2e576000606489600601600501548760020154610b959190614a5a565b610b9f9190614937565b90508860060160060160009054906101000a900460ff1615610bfd57610bea8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630836122bb565b8084610bf691906148d4565b9350610c2c565b610c2b8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124e0565b5b505b8080600101915050610b3b565b508715610e3d5760028760030154610c539190614937565b82610c5e91906148d4565b915060005b8760050154811015610d495787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cbb57508460010160009054906101000a900460ff161515891515145b15610d3c5760006064896006016005015486886002015487610cdd9190614a5a565b610ce79190614937565b610cf19190614a5a565b610cfb9190614937565b90508083610d0991906148d4565b9250610d3a308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122bb565b505b8080600101915050610c63565b5060008183610d589190614c08565b9050600060028960030154610d6d9190614968565b14610d8257600181610d7f91906148d4565b90505b610e36886001018054610d9490614808565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc090614808565b8015610e0d5780601f10610de257610100808354040283529160200191610e0d565b820191906000526020600020905b815481529060010190602001808311610df057829003601f168201915b50505050508260028b60030154610e249190614937565b610e2e91906148d4565b600080612562565b5050610f55565b866003015482610e4d91906148d4565b915060005b8760050154811015610f535787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610eaa57508460010160009054906101000a900460ff161515891515145b15610f465760006064896006016005015460028b60030154610ecc9190614937565b87610ed79190614c08565b886002015487610ee79190614a5a565b610ef19190614937565b610efb9190614a5a565b610f059190614937565b90508083610f1391906148d4565b9250610f44308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836122bb565b505b8080600101915050610e52565b505b60005b60065481101561101e5760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fa46110f1565b610fad8361124f565b8b600d0154610fbc9190614a5a565b610fc69190614937565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561100e573d6000803e3d6000fd5b5050508080600101915050610f58565b5086600f0160029054906101000a900460ff16156110e4578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b815260040161109f959493929190614b6c565b6020604051808303816000875af11580156110be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e29190614bdb565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90614c88565b60405180910390fd5b6000600d6000858152602001908152602001600020905061115b8133858561310a565b50505050565b60006009905090565b6009818154811061117a57600080fd5b90600052602060002001600091509050805461119590614808565b80601f01602080910402602001604051908101604052809291908181526020018280546111c190614808565b801561120e5780601f106111e35761010080835404028352916020019161120e565b820191906000526020600020905b8154815290600101906020018083116111f157829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112a43385856122a9565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016112e193929190614ca8565b600060405180830381600087803b1580156112fb57600080fd5b505af115801561130f573d6000803e3d6000fd5b50505050600190509392505050565b60606004805461132d90614808565b80601f016020809104026020016040519081016040528092919081815260200182805461135990614808565b80156113a65780601f1061137b576101008083540402835291602001916113a6565b820191906000526020600020905b81548152906001019060200180831161138957829003601f168201915b5050505050905090565b6000600d600086815260200190815260200160002090506113d2843385613200565b6113de8185858561310a565b5050505050565b6000803411611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090614d51565b60405180910390fd5b600189101561146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490614dbd565b60405180910390fd5b651cae8c13e0008911156114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad90614e29565b60405180910390fd5b876001600281106114ca576114c9614a2b565b5b6020020135600f6000600281106114e4576114e3614a2b565b5b01546114f09190614a5a565b8860006002811061150457611503614a2b565b5b6020020135600f60016002811061151e5761151d614a2b565b5b015461152a9190614a5a565b101561156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290614e95565b60405180910390fd5b8760016002811061157f5761157e614a2b565b5b60200201358860006002811061159857611597614a2b565b5b602002013511156115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590614f01565b60405180910390fd5b866001600281106115f2576115f1614a2b565b5b60200201358760006002811061160b5761160a614a2b565b5b60200201351115611651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164890614f6d565b60405180910390fd5b6064861115611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90614fd9565b60405180910390fd5b600060088c8c6040516116a9929190615029565b908152602001604051809103902090506000816002018054905003611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa9061508e565b60405180910390fd5b600e6000815480929190611716906150ae565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c8260010191826117899291906152ad565b503481600d018190555089816006016001019060026117a9929190613a71565b5088816006016003019060026117c0929190613a71565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a4261180491906148d4565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118449291906153ce565b5061184f3034613294565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516118879190613cad565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090508060000154908060010180546118e890614808565b80601f016020809104026020016040519081016040528092919081815260200182805461191490614808565b80156119615780601f1061193657610100808354040283529160200191611961565b820191906000526020600020905b81548152906001019060200180831161194457829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a001604052908160008201548152602001600182016002806020026040519081016040528092919082600280156119ee576020028201915b8154815260200190600101908083116119da575b5050505050815260200160038201600280602002604051908101604052809291908260028015611a33576020028201915b815481526020019060010190808311611a1f575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611ab690614808565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae290614808565b8015611b2f5780601f10611b0457610100808354040283529160200191611b2f565b820191906000526020600020905b815481529060010190602001808311611b1257829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d90614c88565b60405180910390fd5b6060600060088484604051611b8c929190615029565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611c525783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611bc0565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2390615510565b60405180910390fd5b600a6000815480929190611d3f906150ae565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611d819291906152ad565b50600060088585604051611d96929190615029565b908152602001604051809103902090506000816002018054905014611df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de7906155a2565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611e469291906152ad565b50600080600090505b88889050811015611ee557888882818110611e6d57611e6c614a2b565b5b9050604002016000013582611e8291906148d4565b915082600201898983818110611e9b57611e9a614a2b565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611ed6919061574f565b50508080600101915050611e4f565b50620f42408114611f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f22906157cf565b60405180910390fd5b60005b84849050811015611fa65782600301858583818110611f5057611f4f614a2b565b5b9050602002810190611f6291906157fe565b90806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f979190615965565b50508080600101915050611f2e565b5060008060005b84600301805490508110156120ca576000856003018281548110611fd457611fd3614a2b565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc081121561204b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612042906159e5565b60405180910390fd5b620f4240811315612091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208890615a77565b60405180910390fd5b60008113156120ad5780846120a69190615a97565b93506120bc565b80836120b99190615a97565b92505b508080600101915050611fad565b50620f4240821315612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210890615b4d565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b90615bdf565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972788886040516121a5929190615c2c565b60405180910390a150505050505050505050565b6008818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546121f290614808565b80601f016020809104026020016040519081016040528092919081815260200182805461221e90614808565b801561226b5780601f106122405761010080835404028352916020019161226b565b820191906000526020600020905b81548152906001019060200180831161224e57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b6122b68383836001613316565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361230d57806002600082825461230191906148d4565b925050819055506123e0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612399578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161239093929190614ca8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124295780600260008282540392505081905550612476565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124d39190613cad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125525760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125499190613e0d565b60405180910390fd5b61255e826000836122bb565b5050565b6000600c54821061257557839050613102565b60006008866040516125879190615c81565b9081526020016040518091039020905060008160020180549050036125af5784915050613102565b60005b81600301805490508110156126e35760008260030182815481106125d9576125d8614a2b565b5b90600052602060002090600202016000015412156126d6576126c88783600301838154811061260b5761260a614a2b565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461263e90614808565b80601f016020809104026020016040519081016040528092919081815260200182805461266a90614808565b80156126b75780601f1061268c576101008083540402835291602001916126b7565b820191906000526020600020905b81548152906001019060200180831161269a57829003601f168201915b5050505050815250508888886134ed565b866126d39190615c98565b95505b80806001019150506125b2565b5060005b816003018054905081101561281857600082600301828154811061270e5761270d614a2b565b5b906000526020600020906002020160000154131561280b576127fd878360030183815481106127405761273f614a2b565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461277390614808565b80601f016020809104026020016040519081016040528092919081815260200182805461279f90614808565b80156127ec5780601f106127c1576101008083540402835291602001916127ec565b820191906000526020600020905b8154815290600101906020018083116127cf57829003601f168201915b5050505050815250508888886134ed565b866128089190615c98565b95505b80806001019150506126e7565b506000851315612b0457612ae3816040518060a001604052908160008201805461284190614808565b80601f016020809104026020016040519081016040528092919081815260200182805461286d90614808565b80156128ba5780601f1061288f576101008083540402835291602001916128ba565b820191906000526020600020905b81548152906001019060200180831161289d57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156129d05783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061293e565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612acb578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612a3a90614808565b80601f0160208091040260200160405190810160405280929190818152602001828054612a6690614808565b8015612ab35780601f10612a8857610100808354040283529160200191612ab3565b820191906000526020600020905b815481529060010190602001808311612a9657829003601f168201915b505050505081525050815260200190600101906129fd565b505050508152602001600482015481525050866136b8565b5084816004016000828254612af891906148d4565b92505081905550613100565b6000858260040154612b169190615a97565b12612e0757612ddc816040518060a0016040529081600082018054612b3a90614808565b80601f0160208091040260200160405190810160405280929190818152602001828054612b6690614808565b8015612bb35780601f10612b8857610100808354040283529160200191612bb3565b820191906000526020600020905b815481529060010190602001808311612b9657829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612cc95783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612c37565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612dc4578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612d3390614808565b80601f0160208091040260200160405190810160405280929190818152602001828054612d5f90614808565b8015612dac5780601f10612d8157610100808354040283529160200191612dac565b820191906000526020600020905b815481529060010190602001808311612d8f57829003601f168201915b50505050508152505081526020019060010190612cf6565b505050508152602001600482015481525050866136b8565b915084612de890615cdb565b816004016000828254612dfb9190614c08565b925050819055506130ff565b848160040154612e179190615a97565b91506130e7816040518060a0016040529081600082018054612e3890614808565b80601f0160208091040260200160405190810160405280929190818152602001828054612e6490614808565b8015612eb15780601f10612e8657610100808354040283529160200191612eb1565b820191906000526020600020905b815481529060010190602001808311612e9457829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612fc75783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612f35565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156130c257838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461303190614808565b80601f016020809104026020016040519081016040528092919081815260200182805461305d90614808565b80156130aa5780601f1061307f576101008083540402835291602001916130aa565b820191906000526020600020905b81548152906001019060200180831161308d57829003601f168201915b50505050508152505081526020019060010190612ff4565b50505050815260200160048201548152505082600401546130e290615cdb565b6136b8565b826130f29190615a97565b9150600081600401819055505b5b505b949350505050565b83600e0154421115613151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314890615d6f565b60405180910390fd5b6000846005016000815480929190613168906150ae565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600061320c8484611c5f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461328e578181101561327e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161327593929190614ca8565b60405180910390fd5b61328d84848484036000613316565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133065760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016132fd9190613e0d565b60405180910390fd5b613312600083836122bb565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036133885760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161337f9190613e0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133fa5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016133f19190613e0d565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156134e7578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516134de9190613cad565b60405180910390a35b50505050565b6000620f42408560000151856135039190615d8f565b61350d9190615e07565b905060008560200151510361356f576000811215613560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355790615ee3565b60405180910390fd5b61356a30826124e0565b6136af565b6000600b876040516135819190615c81565b908152602001604051809103902086602001516040516135a19190615c81565b9081526020016040518091039020549050831561360e5760008212156135e957806135cb90615cdb565b82136135e057806135db90615cdb565b6135e2565b815b915061360d565b806135f390615cdb565b8212613608578061360390615cdb565b61360a565b815b91505b5b600061364787602001518487806136355750600087148015613634575060008a60000151125b5b60018861364291906148d4565b612562565b905080836136559190615c98565b925082600b896040516136689190615c81565b908152602001604051809103902088602001516040516136889190615c81565b908152602001604051809103902060008282546136a59190615a97565b9250508190555050505b95945050505050565b60008060005b846040015151811015613812576000856040015182815181106136e4576136e3614a2b565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138045780600560006006600081548092919061375b906150ae565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806001019150506136be565b5060005b846040015151811015613a695760008560400151828151811061383c5761383b614a2b565b5b602002602001015190506000600187604001515161385a9190614c08565b83101561389457620f42408260000151876138759190615d8f565b61387f9190615e07565b9050808461388d9190615a97565b93506138a3565b83866138a09190615c98565b90505b60008113156139de576138bb308360200151836122bb565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139d9578160200151600560006006600081548092919061392c906150ae565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613a5a565b806139e890615cdb565b6139f5836020015161124f565b1015613a4057613a08826020015161124f565b81613a139190615a97565b85613a1e9190615a97565b9450613a3b826020015130613a36856020015161124f565b6122bb565b613a59565b613a5882602001513083613a5390615cdb565b6122bb565b5b5b50508080600101915050613816565b505092915050565b8260028101928215613aa0579160200282015b82811115613a9f578235825591602001919060010190613a84565b5b509050613aad9190613ab1565b5090565b5b80821115613aca576000816000905550600101613ab2565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b08578082015181840152602081019050613aed565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b3082613ace565b613b3a8185613ad9565b9350613b4a818560208601613aea565b613b5381613b14565b840191505092915050565b60006020820190508181036000830152613b788184613b25565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bbf82613b94565b9050919050565b613bcf81613bb4565b8114613bda57600080fd5b50565b600081359050613bec81613bc6565b92915050565b6000819050919050565b613c0581613bf2565b8114613c1057600080fd5b50565b600081359050613c2281613bfc565b92915050565b60008060408385031215613c3f57613c3e613b8a565b5b6000613c4d85828601613bdd565b9250506020613c5e85828601613c13565b9150509250929050565b60008115159050919050565b613c7d81613c68565b82525050565b6000602082019050613c986000830184613c74565b92915050565b613ca781613bf2565b82525050565b6000602082019050613cc26000830184613c9e565b92915050565b600060208284031215613cde57613cdd613b8a565b5b6000613cec84828501613c13565b91505092915050565b600080600060608486031215613d0e57613d0d613b8a565b5b6000613d1c86828701613bdd565b9350506020613d2d86828701613bdd565b9250506040613d3e86828701613c13565b9150509250925092565b613d5181613c68565b8114613d5c57600080fd5b50565b600081359050613d6e81613d48565b92915050565b600080600060608486031215613d8d57613d8c613b8a565b5b6000613d9b86828701613c13565b9350506020613dac86828701613c13565b9250506040613dbd86828701613d5f565b9150509250925092565b600060ff82169050919050565b613ddd81613dc7565b82525050565b6000602082019050613df86000830184613dd4565b92915050565b613e0781613bb4565b82525050565b6000602082019050613e226000830184613dfe565b92915050565b600060208284031215613e3e57613e3d613b8a565b5b6000613e4c84828501613bdd565b91505092915050565b600080600060608486031215613e6e57613e6d613b8a565b5b6000613e7c86828701613bdd565b9350506020613e8d86828701613c13565b9250506040613e9e86828701613c13565b9150509250925092565b60008060008060808587031215613ec257613ec1613b8a565b5b6000613ed087828801613c13565b9450506020613ee187828801613bdd565b9350506040613ef287828801613c13565b9250506060613f0387828801613d5f565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613f3457613f33613f0f565b5b8235905067ffffffffffffffff811115613f5157613f50613f14565b5b602083019150836001820283011115613f6d57613f6c613f19565b5b9250929050565b600081905082602060020282011115613f9057613f8f613f19565b5b92915050565b60008083601f840112613fac57613fab613f0f565b5b8235905067ffffffffffffffff811115613fc957613fc8613f14565b5b602083019150836001820283011115613fe557613fe4613f19565b5b9250929050565b6000806000806000806000806000806101408b8d0312156140105761400f613b8a565b5b60008b013567ffffffffffffffff81111561402e5761402d613b8f565b5b61403a8d828e01613f1e565b9a509a5050602061404d8d828e01613c13565b985050604061405e8d828e01613f74565b975050608061406f8d828e01613f74565b96505060c06140808d828e01613c13565b95505060e06140918d828e01613d5f565b9450506101006140a38d828e01613d5f565b9350506101208b013567ffffffffffffffff8111156140c5576140c4613b8f565b5b6140d18d828e01613f96565b92509250509295989b9194979a5092959850565b6140ee81613bf2565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061412083836140e5565b60208301905092915050565b6000602082019050919050565b614142816140f4565b61414c81846140ff565b92506141578261410a565b8060005b8381101561418857815161416f8782614114565b965061417a8361412c565b92505060018101905061415b565b505050505050565b61419981613c68565b82525050565b60e0820160008201516141b560008501826140e5565b5060208201516141c86020850182614139565b5060408201516141db6060850182614139565b5060608201516141ee60a08501826140e5565b50608082015161420160c0850182614190565b50505050565b600081519050919050565b600082825260208201905092915050565b600061422e82614207565b6142388185614212565b9350614248818560208601613aea565b61425181613b14565b840191505092915050565b600061024082019050614272600083018f613c9e565b8181036020830152614284818e613b25565b9050614293604083018d613dfe565b6142a0606083018c613c9e565b6142ad608083018b613c9e565b6142ba60a083018a61419f565b6142c8610180830189613c9e565b6142d66101a0830188613c9e565b6142e46101c0830187613c74565b6142f26101e0830186613c74565b614300610200830185613c74565b8181036102208301526143138184614223565b90509d9c50505050505050505050505050565b6000806020838503121561433d5761433c613b8a565b5b600083013567ffffffffffffffff81111561435b5761435a613b8f565b5b61436785828601613f1e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143a881613bb4565b82525050565b6040820160008201516143c460008501826140e5565b5060208201516143d7602085018261439f565b50505050565b60006143e983836143ae565b60408301905092915050565b6000602082019050919050565b600061440d82614373565b614417818561437e565b93506144228361438f565b8060005b8381101561445357815161443a88826143dd565b9750614445836143f5565b925050600181019050614426565b5085935050505092915050565b6000602082019050818103600083015261447a8184614402565b905092915050565b6000806040838503121561449957614498613b8a565b5b60006144a785828601613bdd565b92505060206144b885828601613bdd565b9150509250929050565b60008083601f8401126144d8576144d7613f0f565b5b8235905067ffffffffffffffff8111156144f5576144f4613f14565b5b60208301915083604082028301111561451157614510613f19565b5b9250929050565b60008083601f84011261452e5761452d613f0f565b5b8235905067ffffffffffffffff81111561454b5761454a613f14565b5b60208301915083602082028301111561456757614566613f19565b5b9250929050565b6000806000806000806060878903121561458b5761458a613b8a565b5b600087013567ffffffffffffffff8111156145a9576145a8613b8f565b5b6145b589828a016144c2565b9650965050602087013567ffffffffffffffff8111156145d8576145d7613b8f565b5b6145e489828a01613f1e565b9450945050604087013567ffffffffffffffff81111561460757614606613b8f565b5b61461389828a01614518565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61465f82613b14565b810181811067ffffffffffffffff8211171561467e5761467d614627565b5b80604052505050565b6000614691613b80565b905061469d8282614656565b919050565b600067ffffffffffffffff8211156146bd576146bc614627565b5b6146c682613b14565b9050602081019050919050565b82818337600083830152505050565b60006146f56146f0846146a2565b614687565b90508281526020810184848401111561471157614710614622565b5b61471c8482856146d3565b509392505050565b600082601f83011261473957614738613f0f565b5b81356147498482602086016146e2565b91505092915050565b60006020828403121561476857614767613b8a565b5b600082013567ffffffffffffffff81111561478657614785613b8f565b5b61479284828501614724565b91505092915050565b600060608201905081810360008301526147b58186613b25565b90506147c46020830185613dfe565b6147d16040830184613c9e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482057607f821691505b602082108103614833576148326147d9565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b600061486f601883613ad9565b915061487a82614839565b602082019050919050565b6000602082019050818103600083015261489e81614862565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148df82613bf2565b91506148ea83613bf2565b9250828201905080821115614902576149016148a5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061494282613bf2565b915061494d83613bf2565b92508261495d5761495c614908565b5b828204905092915050565b600061497382613bf2565b915061497e83613bf2565b92508261498e5761498d614908565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006149f5602183613ad9565b9150614a0082614999565b604082019050919050565b60006020820190508181036000830152614a24816149e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a6582613bf2565b9150614a7083613bf2565b9250828202614a7e81613bf2565b91508282048414831517614a9557614a946148a5565b5b5092915050565b6000606082019050614ab16000830186613c9e565b614abe6020830185613c74565b614acb6040830184613c74565b949350505050565b60008190508160005260206000209050919050565b60008154614af581614808565b614aff8186614212565b94506001821660008114614b1a5760018114614b3057614b63565b60ff198316865281151560200286019350614b63565b614b3985614ad3565b60005b83811015614b5b57815481890152600182019150602081019050614b3c565b808801955050505b50505092915050565b600060a082019050614b816000830188613c74565b614b8e6020830187613c74565b614b9b6040830186613c9e565b614ba86060830185613c9e565b8181036080830152614bba8184614ae8565b90509695505050505050565b600081519050614bd581613bfc565b92915050565b600060208284031215614bf157614bf0613b8a565b5b6000614bff84828501614bc6565b91505092915050565b6000614c1382613bf2565b9150614c1e83613bf2565b9250828203905081811115614c3657614c356148a5565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614c72601b83613ad9565b9150614c7d82614c3c565b602082019050919050565b60006020820190508181036000830152614ca181614c65565b9050919050565b6000606082019050614cbd6000830186613dfe565b614cca6020830185613c9e565b614cd76040830184613c9e565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614d3b602b83613ad9565b9150614d4682614cdf565b604082019050919050565b60006020820190508181036000830152614d6a81614d2e565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614da7601583613ad9565b9150614db282614d71565b602082019050919050565b60006020820190508181036000830152614dd681614d9a565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614e13601483613ad9565b9150614e1e82614ddd565b602082019050919050565b60006020820190508181036000830152614e4281614e06565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614e7f601783613ad9565b9150614e8a82614e49565b602082019050919050565b60006020820190508181036000830152614eae81614e72565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614eeb601a83613ad9565b9150614ef682614eb5565b602082019050919050565b60006020820190508181036000830152614f1a81614ede565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614f57601d83613ad9565b9150614f6282614f21565b602082019050919050565b60006020820190508181036000830152614f8681614f4a565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000614fc3601e83613ad9565b9150614fce82614f8d565b602082019050919050565b60006020820190508181036000830152614ff281614fb6565b9050919050565b600081905092915050565b60006150108385614ff9565b935061501d8385846146d3565b82840190509392505050565b6000615036828486615004565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b6000615078601583613ad9565b915061508382615042565b602082019050919050565b600060208201905081810360008301526150a78161506b565b9050919050565b60006150b982613bf2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036150eb576150ea6148a5565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615126565b61516d8683615126565b95508019841693508086168417925050509392505050565b6000819050919050565b60006151aa6151a56151a084613bf2565b615185565b613bf2565b9050919050565b6000819050919050565b6151c48361518f565b6151d86151d0826151b1565b848454615133565b825550505050565b600090565b6151ed6151e0565b6151f88184846151bb565b505050565b5b8181101561521c576152116000826151e5565b6001810190506151fe565b5050565b601f8211156152615761523281615101565b61523b84615116565b8101602085101561524a578190505b61525e61525685615116565b8301826151fd565b50505b505050565b600082821c905092915050565b600061528460001984600802615266565b1980831691505092915050565b600061529d8383615273565b9150826002028217905092915050565b6152b783836150f6565b67ffffffffffffffff8111156152d0576152cf614627565b5b6152da8254614808565b6152e5828285615220565b6000601f8311600181146153145760008415615302578287013590505b61530c8582615291565b865550615374565b601f19841661532286615101565b60005b8281101561534a57848901358255600182019150602085019450602081019050615325565b868310156153675784890135615363601f891682615273565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f8211156153c95761539a81614ad3565b6153a384615116565b810160208510156153b2578190505b6153c66153be85615116565b8301826151fd565b50505b505050565b6153d8838361537d565b67ffffffffffffffff8111156153f1576153f0614627565b5b6153fb8254614808565b615406828285615388565b6000601f8311600181146154355760008415615423578287013590505b61542d8582615291565b865550615495565b601f19841661544386614ad3565b60005b8281101561546b57848901358255600182019150602085019450602081019050615446565b868310156154885784890135615484601f891682615273565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b60006154fa602583613ad9565b91506155058261549e565b604082019050919050565b60006020820190508181036000830152615529816154ed565b9050919050565b7f4120706f73742077697468207468697320636f6e74656e74496420616c72656160008201527f6479206578697374730000000000000000000000000000000000000000000000602082015250565b600061558c602983613ad9565b915061559782615530565b604082019050919050565b600060208201905081810360008301526155bb8161557f565b9050919050565b600081356155cf81613bfc565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615611846155d8565b9350801983169250808416831791505092915050565b6156308261518f565b61564361563c826151b1565b83546155e5565b8255505050565b6000813561565781613bc6565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff615680846155d8565b9350801983169250808416831791505092915050565b60006156b16156ac6156a784613b94565b615185565b613b94565b9050919050565b60006156c382615696565b9050919050565b60006156d5826156b8565b9050919050565b6000819050919050565b6156ef826156ca565b6157026156fb826156dc565b8354615660565b8255505050565b60008101600083018061571b816155c2565b90506157278184615627565b50505060018101602083018061573c8161564a565b905061574881846156e6565b5050505050565b6157598282615709565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006157b9602283613ad9565b91506157c48261575d565b604082019050919050565b600060208201905081810360008301526157e8816157ac565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261581a576158196157ef565b5b80830191505092915050565b6000819050919050565b61583981615826565b811461584457600080fd5b50565b6000813561585481615830565b80915050919050565b600061587861587361586e84615826565b615185565b615826565b9050919050565b6000819050919050565b6158928261585d565b6158a561589e8261587f565b83546155e5565b8255505050565b600080833560016020038436030381126158c9576158c86157ef565b5b80840192508235915067ffffffffffffffff8211156158eb576158ea6157f4565b5b602083019250600182023603831315615907576159066157f9565b5b509250929050565b61591a8383836152ad565b505050565b60008101600083018061593181615847565b905061593d8184615889565b505050600181016020830161595281856158ac565b61595d81838661590f565b505050505050565b61596f828261591f565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006159cf602883613ad9565b91506159da82615973565b604082019050919050565b600060208201905081810360008301526159fe816159c2565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615a61602783613ad9565b9150615a6c82615a05565b604082019050919050565b60006020820190508181036000830152615a9081615a54565b9050919050565b6000615aa282615826565b9150615aad83615826565b925082820190508281121560008312168382126000841215161715615ad557615ad46148a5565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615b37602c83613ad9565b9150615b4282615adb565b604082019050919050565b60006020820190508181036000830152615b6681615b2a565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615bc9602d83613ad9565b9150615bd482615b6d565b604082019050919050565b60006020820190508181036000830152615bf881615bbc565b9050919050565b6000615c0b8385613ad9565b9350615c188385846146d3565b615c2183613b14565b840190509392505050565b60006020820190508181036000830152615c47818486615bff565b90509392505050565b6000615c5b82613ace565b615c658185614ff9565b9350615c75818560208601613aea565b80840191505092915050565b6000615c8d8284615c50565b915081905092915050565b6000615ca382615826565b9150615cae83615826565b9250828203905081811260008412168282136000851215161715615cd557615cd46148a5565b5b92915050565b6000615ce682615826565b91507f80000000000000000000000000000000000000000000000000000000000000008203615d1857615d176148a5565b5b816000039050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615d59601883613ad9565b9150615d6482615d23565b602082019050919050565b60006020820190508181036000830152615d8881615d4c565b9050919050565b6000615d9a82615826565b9150615da583615826565b9250828202615db381615826565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615deb57615dea6148a5565b5b8282058414831517615e0057615dff6148a5565b5b5092915050565b6000615e1282615826565b9150615e1d83615826565b925082615e2d57615e2c614908565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615e6657615e656148a5565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615ecd602683613ad9565b9150615ed882615e71565b604082019050919050565b60006020820190508181036000830152615efc81615ec0565b905091905056fea264697066735822122014513cb1a0064db5c9629f88dfa2833b84407c3037a2b10d20a5061ea1aa744664736f6c63430008180033",
"linkReferences": {},
"deployedLinkReferences": {}
}