Files
2022-03-24 16:28:11 -04:00

869 lines
110 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "TokenVault",
"sourceName": "contracts/ERC721TokenVault.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_settings",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"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": true,
"internalType": "address",
"name": "buyer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "Bid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "Cash",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"name": "FeeClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "PriceUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "redeemer",
"type": "address"
}
],
"name": "Redeem",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "buyer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "Start",
"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": "length",
"type": "uint256"
}
],
"name": "UpdateAuctionLength",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"name": "UpdateCuratorFee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "buyer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "Won",
"type": "event"
},
{
"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": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "auctionEnd",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "auctionLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "auctionState",
"outputs": [
{
"internalType": "enum TokenVault.State",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "bid",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "cash",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "claimFees",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "curator",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "end",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "fee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "id",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_curator",
"type": "address"
},
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_supply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_listPrice",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
},
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_curator",
"type": "address"
}
],
"name": "kickCurator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lastClaimed",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "livePrice",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "redeem",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "removeReserve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "reservePrice",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "reserveTotal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "settings",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "start",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "token",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_length",
"type": "uint256"
}
],
"name": "updateAuctionLength",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_curator",
"type": "address"
}
],
"name": "updateCurator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "updateFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_new",
"type": "uint256"
}
],
"name": "updateUserPrice",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userPrices",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "vaultClosed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "votingTokens",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "weth",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winning",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60a06040523480156200001157600080fd5b5060405162005dd038038062005dd083398181016040528101906200003791906200008c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505062000106565b6000815190506200008681620000ec565b92915050565b6000602082840312156200009f57600080fd5b6000620000af8482850162000075565b91505092915050565b6000620000c582620000cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620000f781620000b8565b81146200010357600080fd5b50565b60805160601c615c506200018060003960008181610bd601528181610e5101528181611030015281816110da015281816116ef015281816117ee015281816119b201528181611ab101528181611ce601528181612118015281816128a001528181612b6f015281816137b6015261385a0152615c506000f3fe6080604052600436106102515760003560e01c806380436fe011610139578063be040fb0116100b6578063dd62ed3e1161007a578063dd62ed3e14610866578063ddca3f43146108a3578063e06174e4146108ce578063e66f53b7146108f9578063efbe1c1c14610924578063fc0c546a1461093b57610251565b8063be040fb0146107c6578063be9a6555146107dd578063c91de649146107e7578063d294f09314610824578063db2e1eed1461083b57610251565b80639a4e6d34116100fd5780639a4e6d34146106cb578063a457c2d7146106f6578063a9059cbb14610733578063adc1b95614610770578063af640d0f1461079b57610251565b806380436fe01461060c578063853a1b90146106355780639012c4a81461066057806395d89b4114610689578063961be391146106b457610251565b8063313ce567116101d2578063626fb2f011610196578063626fb2f0146104fc5780636a775714146105255780636da84e6c1461054e57806370a08231146105795780637b5581ed146105b65780637fb45099146105e157610251565b8063313ce56714610413578063325c25a21461043e57806339509351146104695780633fc8cef3146104a65780635c9920fc146104d157610251565b80631998aeef116102195780631998aeef1461034f57806323b872dd146103595780632a24f46c146103965780632a44f120146103c15780632bf33bd9146103ea57610251565b806306fdde0314610256578063095ea7b3146102815780630c6a62dd146102be578063150b7a02146102e757806318160ddd14610324575b600080fd5b34801561026257600080fd5b5061026b610966565b6040516102789190614b4b565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906143bd565b6109f8565b6040516102b59190614adf565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e0919061415a565b610a1b565b005b3480156102f357600080fd5b5061030e60048036038101906103099190614260565b610aef565b60405161031b9190614afa565b60405180910390f35b34801561033057600080fd5b50610339610b03565b6040516103469190614fad565b60405180910390f35b610357610b0d565b005b34801561036557600080fd5b50610380600480360381019061037b9190614211565b610e1a565b60405161038d9190614adf565b60405180910390f35b3480156103a257600080fd5b506103ab610e49565b6040516103b89190614fad565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e3919061415a565b610e4f565b005b3480156103f657600080fd5b50610411600480360381019061040c9190614422565b610f9e565b005b34801561041f57600080fd5b506104286111fc565b6040516104359190614fc8565b60405180910390f35b34801561044a57600080fd5b50610453611205565b6040516104609190614fad565b60405180910390f35b34801561047557600080fd5b50610490600480360381019061048b91906143bd565b61120b565b60405161049d9190614adf565b60405180910390f35b3480156104b257600080fd5b506104bb6112b5565b6040516104c89190614a12565b60405180910390f35b3480156104dd57600080fd5b506104e66112cd565b6040516104f39190614adf565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e91906142db565b6112e0565b005b34801561053157600080fd5b5061054c60048036038101906105479190614422565b61151e565b005b34801561055a57600080fd5b50610563611c7c565b6040516105709190614fad565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b919061415a565b611c82565b6040516105ad9190614fad565b60405180910390f35b3480156105c257600080fd5b506105cb611ccb565b6040516105d89190614fad565b60405180910390f35b3480156105ed57600080fd5b506105f6611cd1565b6040516106039190614b15565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061415a565b611ce4565b005b34801561064157600080fd5b5061064a61201c565b6040516106579190614a2d565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190614422565b612042565b005b34801561069557600080fd5b5061069e612243565b6040516106ab9190614b4b565b60405180910390f35b3480156106c057600080fd5b506106c96122d5565b005b3480156106d757600080fd5b506106e061246f565b6040516106ed9190614fad565b60405180910390f35b34801561070257600080fd5b5061071d600480360381019061071891906143bd565b612475565b60405161072a9190614adf565b60405180910390f35b34801561073f57600080fd5b5061075a600480360381019061075591906143bd565b61255f565b6040516107679190614adf565b60405180910390f35b34801561077c57600080fd5b50610785612582565b6040516107929190614fad565b60405180910390f35b3480156107a757600080fd5b506107b0612588565b6040516107bd9190614fad565b60405180910390f35b3480156107d257600080fd5b506107db61258e565b005b6107e561278a565b005b3480156107f357600080fd5b5061080e6004803603810190610809919061415a565b612a96565b60405161081b9190614fad565b60405180910390f35b34801561083057600080fd5b50610839612aae565b005b34801561084757600080fd5b50610850612ab8565b60405161085d9190614fad565b60405180910390f35b34801561087257600080fd5b5061088d600480360381019061088891906141d5565b612ae0565b60405161089a9190614fad565b60405180910390f35b3480156108af57600080fd5b506108b8612b67565b6040516108c59190614fad565b60405180910390f35b3480156108da57600080fd5b506108e3612b6d565b6040516108f09190614a12565b60405180910390f35b34801561090557600080fd5b5061090e612b91565b60405161091b9190614a12565b60405180910390f35b34801561093057600080fd5b50610939612bb7565b005b34801561094757600080fd5b50610950612e40565b60405161095d9190614a12565b60405180910390f35b606060368054610975906152e8565b80601f01602080910402602001604051908101604052809291908181526020018280546109a1906152e8565b80156109ee5780601f106109c3576101008083540402835291602001916109ee565b820191906000526020600020905b8154815290600101906020018083116109d157829003601f168201915b5050505050905090565b600080610a03612e66565b9050610a10818585612e6e565b600191505092915050565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290614d4d565b60405180910390fd5b80609e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600063150b7a0260e01b9050949350505050565b6000603554905090565b60016003811115610b47577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115610b8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690614c0d565b60405180910390fd5b60006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637c513c0f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610c3c57600080fd5b505af1158015610c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c74919061444b565b610c7e9190615091565b905080609c54610c8e9190615118565b6103e834610c9c9190615118565b1015610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490614ecd565b60405180910390fd5b6099544210610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1890614dad565b60405180910390fd5b61038442609954610d329190615172565b11610d535761038460996000828254610d4b9190615091565b925050819055505b610d81609d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609c54613039565b34609c8190555033609d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe684a55f31b79eca403df938249029212a5925ec6be8012e099b45bc1019e5d234604051610e0f9190614fad565b60405180910390a250565b600080610e25612e66565b9050610e32858285613163565b610e3d8585856131ef565b60019150509392505050565b60995481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb557600080fd5b505afa158015610ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eed9190614183565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190614c8d565b60405180910390fd5b80609e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590614d4d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0b335e36040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561109657600080fd5b505af11580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061444b565b811015801561117c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630e519ef96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611178919061444b565b8111155b6111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290614d8d565b60405180910390fd5b80609a819055507f4ab86ae701798277aa378943b9dfd155d3b19703cd57be298908fadd32f7bf46816040516111f19190614fad565b60405180910390a150565b60006012905090565b609a5481565b600080611216612e66565b90506112aa818585603460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112a59190615091565b612e6e565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60a160009054906101000a900460ff1681565b600060019054906101000a900460ff166113085760008054906101000a900460ff1615611311565b611310613473565b5b611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790614d6d565b60405180910390fd5b60008060019054906101000a900460ff1615905080156113a0576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6113aa8383613484565b6113b26134e1565b87609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550866098819055506203f480609a8190555088609e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083609f819055504260a0819055506000609d60146101000a81548160ff0219169083600381111561149f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b02179055508460a360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114f28987613532565b80156115135760008060016101000a81548160ff0219169083151502179055505b505050505050505050565b60006003811115611558577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff1660038111156115a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b146115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790614f0d565b60405180910390fd5b600060a360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080821415611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90614f2d565b60405180910390fd5b600061167233611c82565b9050600060a254141561169d578060a28190555082816116929190615118565b609b81905550611be5565b60a254811480156116af575060008214155b156116cb5782816116c09190615118565b609b81905550611be4565b600082141561192b57600060a254609b546116e691906150e7565b905060006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166309990a966040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178d919061444b565b836117989190615118565b6117a291906150e7565b9050808510156117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de90614bad565b60405180910390fd5b60006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635410bfc96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561185457600080fd5b505af1158015611868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188c919061444b565b846118979190615118565b6118a191906150e7565b9050808611156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90614eed565b60405180910390fd5b8360a260008282546118f89190615091565b92505081905550858461190b9190615118565b609b600082825461191c9190615091565b92505081905550505050611be3565b6000831415611976578060a260008282546119469190615172565b9250508190555081816119599190615118565b609b600082825461196a9190615172565b92505081905550611be2565b60008160a2546119869190615172565b82846119929190615118565b609b5461199f9190615172565b6119a991906150e7565b905060006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166309990a966040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611a1857600080fd5b505af1158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061444b565b83611a5b9190615118565b611a6591906150e7565b905080851015611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa190614bad565b60405180910390fd5b60006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635410bfc96040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4f919061444b565b84611b5a9190615118565b611b6491906150e7565b905080861115611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba090614eed565b60405180910390fd5b8484611bb59190615118565b8685611bc19190615118565b609b54611bce9190615091565b611bd89190615172565b609b819055505050505b5b5b5b8260a360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f64e6e7bd72b853c4e62fd6ceaca05a104700c70a4cb567c75c7f2242ba7f037c84604051611c6f9190614fad565b60405180910390a2505050565b609c5481565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b609b5481565b609d60149054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4a57600080fd5b505afa158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d829190614183565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de690614e2d565b60405180910390fd5b60006003811115611e29577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115611e71577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890614f0d565b60405180910390fd5b600060a360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508060001415611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090614f2d565b60405180910390fd5b6000611f4483611c82565b90508060a26000828254611f589190615172565b925050819055508181611f6b9190615118565b609b6000828254611f7c9190615172565b92505081905550600060a360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f64e6e7bd72b853c4e62fd6ceaca05a104700c70a4cb567c75c7f2242ba7f037c600060405161200f9190614b30565b60405180910390a2505050565b609d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c990614d4d565b60405180910390fd5b609f548110612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210d90614c4d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638a364bc16040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561217e57600080fd5b505af1158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b6919061444b565b8111156121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ef90614dcd565b60405180910390fd5b612200613693565b80609f819055507f2d1dae59a9e9ec0bc2ab19d45b7d10c8c55304fa08b40a7998e9f67f03223d04609f546040516122389190614fad565b60405180910390a150565b606060378054612252906152e8565b80601f016020809104026020016040519081016040528092919081815260200182805461227e906152e8565b80156122cb5780601f106122a0576101008083540402835291602001916122cb565b820191906000526020600020905b8154815290600101906020018083116122ae57829003601f168201915b5050505050905090565b6002600381111561230f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115612357577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e90614f8d565b60405180910390fd5b60006123a233611c82565b9050600081116123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90614c2d565b60405180910390fd5b60006123f1610b03565b47836123fd9190615118565b61240791906150e7565b90506124133383613a7e565b61241d3382613039565b3373ffffffffffffffffffffffffffffffffffffffff167f730831a1e4aa2d187ddd8e03d7beeac760a3927da5f112d645e0f8df7494b367826040516124639190614fad565b60405180910390a25050565b60a25481565b600080612480612e66565b90506000603460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d90614f4d565b60405180910390fd5b6125538286868403612e6e565b60019250505092915050565b60008061256a612e66565b90506125778185856131ef565b600191505092915050565b60a05481565b60985481565b600060038111156125c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115612610577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790614c6d565b60405180910390fd5b6126613361265c610b03565b613a7e565b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30336098546040518463ffffffff1660e01b81526004016126c293929190614a7f565b600060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b505050506003609d60146101000a81548160ff02191690836003811115612740577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b02179055503373ffffffffffffffffffffffffffffffffffffffff167fd1b5ea7fe0f1c2fa09d49c2aa9b2200664ba57a734f1d95481d95b7f99af991c60405160405180910390a2565b600060038111156127c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff16600381111561280c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1461284c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284390614b8d565b60405180910390fd5b612854612ab8565b341015612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d90614ced565b60405180910390fd5b61289e610b03565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166332977c736040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561290657600080fd5b505af115801561291a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293e919061444b565b6129489190615118565b6103e860a2546129589190615118565b1015612999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299090614d2d565b60405180910390fd5b609a54426129a79190615091565b6099819055506001609d60146101000a81548160ff021916908360038111156129f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b021790555034609c8190555033609d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fcfb9c5312b25ec7b809d61e638df25f749eae5d5c25399e1c93d1d319bfd582134604051612a8c9190614fad565b60405180910390a2565b60a36020528060005260406000206000915090505481565b612ab6613693565b565b60008060a25414612ad85760a254609b54612ad391906150e7565b612adb565b60005b905090565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b609f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016003811115612bf1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115612c39577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14612c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7090614e6d565b60405180910390fd5b609954421015612cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb590614d0d565b60405180910390fd5b612cc6613693565b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30609d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166098546040518463ffffffff1660e01b8152600401612d4993929190614a48565b600060405180830381600087803b158015612d6357600080fd5b505af1158015612d77573d6000803e3d6000fd5b505050506002609d60146101000a81548160ff02191690836003811115612dc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550609d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8b01f9dd0400d6a1e84369a5fb8f6033934856ffa8ebadd707dca302ab551695609c54604051612e369190614fad565b60405180910390a2565b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed590614e4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4590614bed565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302c9190614fad565b60405180910390a3505050565b6130438282613c57565b61315f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b505050505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161310b929190614ab6565b602060405180830381600087803b15801561312557600080fd5b505af1158015613139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315d91906143f9565b505b5050565b600061316f8484612ae0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146131e957818110156131db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d290614cad565b60405180910390fd5b6131e88484848403612e6e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561325f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325690614e0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c690614b6d565b60405180910390fd5b6132da838383613cd3565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335890614ccd565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133f69190615091565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161345a9190614fad565b60405180910390a361346d848484613ec0565b50505050565b600061347e30613ec5565b15905090565b600060019054906101000a900460ff166134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca90614ead565b60405180910390fd5b6134dd8282613ee8565b5050565b600060019054906101000a900460ff16613530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352790614ead565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161359990614f6d565b60405180910390fd5b6135ae60008383613cd3565b80603560008282546135c09190615091565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136169190615091565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161367b9190614fad565b60405180910390a361368f60008383613ec0565b5050565b600260038111156136cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115613715577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374d90614e8d565b60405180910390fd5b60006103e8613763610b03565b609f546137709190615118565b61377a91906150e7565b905060006301e133808261378e91906150e7565b9050600060a054426137a09190615172565b9050600082826137b09190615118565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b3f006746040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561381c57600080fd5b505af1158015613830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385491906141ac565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630ea90a126040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156138c057600080fd5b505af11580156138d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f8919061444b565b90506103e8613905610b03565b826139109190615118565b61391a91906150e7565b95506301e133808661392c91906150e7565b94506000858561393c9190615118565b90504260a081905550600073ffffffffffffffffffffffffffffffffffffffff16609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139ff576139c7609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685613532565b7f62b10e3ff3d45b5ff546e740b893897facb1680285f989a64ae932d62c5388e1846040516139f69190614fad565b60405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613a7557613a3d8382613532565b7f62b10e3ff3d45b5ff546e740b893897facb1680285f989a64ae932d62c5388e181604051613a6c9190614fad565b60405180910390a15b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae590614ded565b60405180910390fd5b613afa82600083613cd3565b6000603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7890614bcd565b60405180910390fd5b818103603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160356000828254613bd99190615172565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c3e9190614fad565b60405180910390a3613c5283600084613ec0565b505050565b6000808373ffffffffffffffffffffffffffffffffffffffff168361753090604051613c82906149fd565b600060405180830381858888f193505050503d8060008114613cc0576040519150601f19603f3d011682016040523d82523d6000602084013e613cc5565b606091505b505090508091505092915050565b60006003811115613d0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115613d55577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613ebb57600060a360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060a360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818114613eb8576000811415613e35578260a26000828254613e059190615172565b925050819055508183613e189190615118565b609b6000828254613e299190615172565b92505081905550613eb7565b6000821415613e80578260a26000828254613e509190615091565b925050819055508083613e639190615118565b609b6000828254613e749190615091565b92505081905550613eb6565b8183613e8c9190615118565b8184613e989190615118565b609b54613ea59190615091565b613eaf9190615172565b609b819055505b5b5b50505b505050565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16613f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f2e90614ead565b60405180910390fd5b8160369080519060200190613f4d929190613f69565b508060379080519060200190613f64929190613f69565b505050565b828054613f75906152e8565b90600052602060002090601f016020900481019282613f975760008555613fde565b82601f10613fb057805160ff1916838001178555613fde565b82800160010185558215613fde579182015b82811115613fdd578251825591602001919060010190613fc2565b5b509050613feb9190613fef565b5090565b5b80821115614008576000816000905550600101613ff0565b5090565b600061401f61401a84615008565b614fe3565b90508281526020810184848401111561403757600080fd5b6140428482856152a6565b509392505050565b600061405d61405884615039565b614fe3565b90508281526020810184848401111561407557600080fd5b6140808482856152a6565b509392505050565b60008135905061409781615bbe565b92915050565b6000815190506140ac81615bbe565b92915050565b6000815190506140c181615bd5565b92915050565b6000815190506140d681615bec565b92915050565b600082601f8301126140ed57600080fd5b81356140fd84826020860161400c565b91505092915050565b600082601f83011261411757600080fd5b813561412784826020860161404a565b91505092915050565b60008135905061413f81615c03565b92915050565b60008151905061415481615c03565b92915050565b60006020828403121561416c57600080fd5b600061417a84828501614088565b91505092915050565b60006020828403121561419557600080fd5b60006141a38482850161409d565b91505092915050565b6000602082840312156141be57600080fd5b60006141cc848285016140b2565b91505092915050565b600080604083850312156141e857600080fd5b60006141f685828601614088565b925050602061420785828601614088565b9150509250929050565b60008060006060848603121561422657600080fd5b600061423486828701614088565b935050602061424586828701614088565b925050604061425686828701614130565b9150509250925092565b6000806000806080858703121561427657600080fd5b600061428487828801614088565b945050602061429587828801614088565b93505060406142a687828801614130565b925050606085013567ffffffffffffffff8111156142c357600080fd5b6142cf878288016140dc565b91505092959194509250565b600080600080600080600080610100898b0312156142f857600080fd5b60006143068b828c01614088565b98505060206143178b828c01614088565b97505060406143288b828c01614130565b96505060606143398b828c01614130565b955050608061434a8b828c01614130565b94505060a061435b8b828c01614130565b93505060c089013567ffffffffffffffff81111561437857600080fd5b6143848b828c01614106565b92505060e089013567ffffffffffffffff8111156143a157600080fd5b6143ad8b828c01614106565b9150509295985092959890939650565b600080604083850312156143d057600080fd5b60006143de85828601614088565b92505060206143ef85828601614130565b9150509250929050565b60006020828403121561440b57600080fd5b6000614419848285016140c7565b91505092915050565b60006020828403121561443457600080fd5b600061444284828501614130565b91505092915050565b60006020828403121561445d57600080fd5b600061446b84828501614145565b91505092915050565b61447d8161524c565b82525050565b61448c816151b8565b82525050565b61449b816151a6565b82525050565b6144aa816151ca565b82525050565b6144b9816151d6565b82525050565b6144c88161525e565b82525050565b6144d781615270565b82525050565b60006144e88261506a565b6144f28185615080565b93506145028185602086016152b5565b61450b81615436565b840191505092915050565b6000614523602383615080565b915061452e82615447565b604082019050919050565b6000614546601783615080565b915061455182615496565b602082019050919050565b6000614569601c83615080565b9150614574826154bf565b602082019050919050565b600061458c602283615080565b9150614597826154e8565b604082019050919050565b60006145af602283615080565b91506145ba82615537565b604082019050919050565b60006145d2601783615080565b91506145dd82615586565b602082019050919050565b60006145f5601a83615080565b9150614600826155af565b602082019050919050565b6000614618601283615080565b9150614623826155d8565b602082019050919050565b600061463b601383615080565b915061464682615601565b602082019050919050565b600061465e600c83615080565b91506146698261562a565b602082019050919050565b6000614681601d83615080565b915061468c82615653565b602082019050919050565b60006146a4602683615080565b91506146af8261567c565b604082019050919050565b60006146c7601183615080565b91506146d2826156cb565b602082019050919050565b60006146ea601083615080565b91506146f5826156f4565b602082019050919050565b600061470d601783615080565b91506147188261571d565b602082019050919050565b6000614730601283615080565b915061473b82615746565b602082019050919050565b6000614753602e83615080565b915061475e8261576f565b604082019050919050565b6000614776601d83615080565b9150614781826157be565b602082019050919050565b6000614799601183615080565b91506147a4826157e7565b602082019050919050565b60006147bc602483615080565b91506147c782615810565b604082019050919050565b60006147df602183615080565b91506147ea8261585f565b604082019050919050565b6000614802602583615080565b915061480d826158ae565b604082019050919050565b6000614825600e83615080565b9150614830826158fd565b602082019050919050565b6000614848600083615075565b915061485382615926565b600082019050919050565b600061486b602483615080565b915061487682615929565b604082019050919050565b600061488e601c83615080565b915061489982615978565b602082019050919050565b60006148b1602583615080565b91506148bc826159a1565b604082019050919050565b60006148d4602b83615080565b91506148df826159f0565b604082019050919050565b60006148f7600f83615080565b915061490282615a3f565b602082019050919050565b600061491a601d83615080565b915061492582615a68565b602082019050919050565b600061493d602783615080565b915061494882615a91565b604082019050919050565b6000614960601483615080565b915061496b82615ae0565b602082019050919050565b6000614983602583615080565b915061498e82615b09565b604082019050919050565b60006149a6601f83615080565b91506149b182615b58565b602082019050919050565b60006149c9601983615080565b91506149d482615b81565b602082019050919050565b6149e881615235565b82525050565b6149f78161523f565b82525050565b6000614a088261483b565b9150819050919050565b6000602082019050614a276000830184614492565b92915050565b6000602082019050614a426000830184614483565b92915050565b6000606082019050614a5d6000830186614492565b614a6a6020830185614474565b614a7760408301846149df565b949350505050565b6000606082019050614a946000830186614492565b614aa16020830185614492565b614aae60408301846149df565b949350505050565b6000604082019050614acb6000830185614492565b614ad860208301846149df565b9392505050565b6000602082019050614af460008301846144a1565b92915050565b6000602082019050614b0f60008301846144b0565b92915050565b6000602082019050614b2a60008301846144bf565b92915050565b6000602082019050614b4560008301846144ce565b92915050565b60006020820190508181036000830152614b6581846144dd565b905092915050565b60006020820190508181036000830152614b8681614516565b9050919050565b60006020820190508181036000830152614ba681614539565b9050919050565b60006020820190508181036000830152614bc68161455c565b9050919050565b60006020820190508181036000830152614be68161457f565b9050919050565b60006020820190508181036000830152614c06816145a2565b9050919050565b60006020820190508181036000830152614c26816145c5565b9050919050565b60006020820190508181036000830152614c46816145e8565b9050919050565b60006020820190508181036000830152614c668161460b565b9050919050565b60006020820190508181036000830152614c868161462e565b9050919050565b60006020820190508181036000830152614ca681614651565b9050919050565b60006020820190508181036000830152614cc681614674565b9050919050565b60006020820190508181036000830152614ce681614697565b9050919050565b60006020820190508181036000830152614d06816146ba565b9050919050565b60006020820190508181036000830152614d26816146dd565b9050919050565b60006020820190508181036000830152614d4681614700565b9050919050565b60006020820190508181036000830152614d6681614723565b9050919050565b60006020820190508181036000830152614d8681614746565b9050919050565b60006020820190508181036000830152614da681614769565b9050919050565b60006020820190508181036000830152614dc68161478c565b9050919050565b60006020820190508181036000830152614de6816147af565b9050919050565b60006020820190508181036000830152614e06816147d2565b9050919050565b60006020820190508181036000830152614e26816147f5565b9050919050565b60006020820190508181036000830152614e4681614818565b9050919050565b60006020820190508181036000830152614e668161485e565b9050919050565b60006020820190508181036000830152614e8681614881565b9050919050565b60006020820190508181036000830152614ea6816148a4565b9050919050565b60006020820190508181036000830152614ec6816148c7565b9050919050565b60006020820190508181036000830152614ee6816148ea565b9050919050565b60006020820190508181036000830152614f068161490d565b9050919050565b60006020820190508181036000830152614f2681614930565b9050919050565b60006020820190508181036000830152614f4681614953565b9050919050565b60006020820190508181036000830152614f6681614976565b9050919050565b60006020820190508181036000830152614f8681614999565b9050919050565b60006020820190508181036000830152614fa6816149bc565b9050919050565b6000602082019050614fc260008301846149df565b92915050565b6000602082019050614fdd60008301846149ee565b92915050565b6000614fed614ffe565b9050614ff9828261531a565b919050565b6000604051905090565b600067ffffffffffffffff82111561502357615022615407565b5b61502c82615436565b9050602081019050919050565b600067ffffffffffffffff82111561505457615053615407565b5b61505d82615436565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061509c82615235565b91506150a783615235565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150dc576150db61534b565b5b828201905092915050565b60006150f282615235565b91506150fd83615235565b92508261510d5761510c61537a565b5b828204905092915050565b600061512382615235565b915061512e83615235565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156151675761516661534b565b5b828202905092915050565b600061517d82615235565b915061518883615235565b92508282101561519b5761519a61534b565b5b828203905092915050565b60006151b182615215565b9050919050565b60006151c382615215565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061521082615baa565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061525782615282565b9050919050565b600061526982615202565b9050919050565b600061527b82615235565b9050919050565b600061528d82615294565b9050919050565b600061529f82615215565b9050919050565b82818337600083830152505050565b60005b838110156152d35780820151818401526020810190506152b8565b838111156152e2576000848401525b50505050565b6000600282049050600182168061530057607f821691505b60208210811415615314576153136153d8565b5b50919050565b61532382615436565b810181811067ffffffffffffffff8211171561534257615341615407565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f73746172743a6e6f2061756374696f6e20737461727473000000000000000000600082015250565b7f7570646174653a7265736572766520707269636520746f6f206c6f7700000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f6269643a61756374696f6e206973206e6f74206c697665000000000000000000600082015250565b7f636173683a6e6f20746f6b656e7320746f2063617368206f7574000000000000600082015250565b7f7570646174653a63616e27742072616973650000000000000000000000000000600082015250565b7f72656465656d3a6e6f2072656465656d696e6700000000000000000000000000600082015250565b7f6b69636b3a6e6f7420676f760000000000000000000000000000000000000000600082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f73746172743a746f6f206c6f7720626964000000000000000000000000000000600082015250565b7f656e643a61756374696f6e206c69766500000000000000000000000000000000600082015250565b7f73746172743a6e6f7420656e6f75676820766f74657273000000000000000000600082015250565b7f7570646174653a6e6f742063757261746f720000000000000000000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f7570646174653a696e76616c69642061756374696f6e206c656e677468000000600082015250565b7f6269643a61756374696f6e20656e646564000000000000000000000000000000600082015250565b7f7570646174653a63616e6e6f7420696e6372656173652066656520746869732060008201527f6869676800000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f72656d6f76653a6e6f7420676f76000000000000000000000000000000000000600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f656e643a7661756c742068617320616c726561647920636c6f73656400000000600082015250565b7f636c61696d3a63616e6e6f7420636c61696d2061667465722061756374696f6e60008201527f20656e6473000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f6269643a746f6f206c6f77206269640000000000000000000000000000000000600082015250565b7f7570646174653a7265736572766520707269636520746f6f2068696768000000600082015250565b7f7570646174653a61756374696f6e206c6976652063616e6e6f7420757064617460008201527f6520707269636500000000000000000000000000000000000000000000000000602082015250565b7f7570646174653a6e6f7420616e20757064617465000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f636173683a7661756c74206e6f7420636c6f7365642079657400000000000000600082015250565b60048110615bbb57615bba6153a9565b5b50565b615bc7816151a6565b8114615bd257600080fd5b50565b615bde816151b8565b8114615be957600080fd5b50565b615bf5816151ca565b8114615c0057600080fd5b50565b615c0c81615235565b8114615c1757600080fd5b5056fea2646970667358221220b8c3d13fa67606ebd9652255fa7678590b05f211aa7c14b379b1104aa3341b0864736f6c63430008020033",
"deployedBytecode": "0x6080604052600436106102515760003560e01c806380436fe011610139578063be040fb0116100b6578063dd62ed3e1161007a578063dd62ed3e14610866578063ddca3f43146108a3578063e06174e4146108ce578063e66f53b7146108f9578063efbe1c1c14610924578063fc0c546a1461093b57610251565b8063be040fb0146107c6578063be9a6555146107dd578063c91de649146107e7578063d294f09314610824578063db2e1eed1461083b57610251565b80639a4e6d34116100fd5780639a4e6d34146106cb578063a457c2d7146106f6578063a9059cbb14610733578063adc1b95614610770578063af640d0f1461079b57610251565b806380436fe01461060c578063853a1b90146106355780639012c4a81461066057806395d89b4114610689578063961be391146106b457610251565b8063313ce567116101d2578063626fb2f011610196578063626fb2f0146104fc5780636a775714146105255780636da84e6c1461054e57806370a08231146105795780637b5581ed146105b65780637fb45099146105e157610251565b8063313ce56714610413578063325c25a21461043e57806339509351146104695780633fc8cef3146104a65780635c9920fc146104d157610251565b80631998aeef116102195780631998aeef1461034f57806323b872dd146103595780632a24f46c146103965780632a44f120146103c15780632bf33bd9146103ea57610251565b806306fdde0314610256578063095ea7b3146102815780630c6a62dd146102be578063150b7a02146102e757806318160ddd14610324575b600080fd5b34801561026257600080fd5b5061026b610966565b6040516102789190614b4b565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906143bd565b6109f8565b6040516102b59190614adf565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e0919061415a565b610a1b565b005b3480156102f357600080fd5b5061030e60048036038101906103099190614260565b610aef565b60405161031b9190614afa565b60405180910390f35b34801561033057600080fd5b50610339610b03565b6040516103469190614fad565b60405180910390f35b610357610b0d565b005b34801561036557600080fd5b50610380600480360381019061037b9190614211565b610e1a565b60405161038d9190614adf565b60405180910390f35b3480156103a257600080fd5b506103ab610e49565b6040516103b89190614fad565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e3919061415a565b610e4f565b005b3480156103f657600080fd5b50610411600480360381019061040c9190614422565b610f9e565b005b34801561041f57600080fd5b506104286111fc565b6040516104359190614fc8565b60405180910390f35b34801561044a57600080fd5b50610453611205565b6040516104609190614fad565b60405180910390f35b34801561047557600080fd5b50610490600480360381019061048b91906143bd565b61120b565b60405161049d9190614adf565b60405180910390f35b3480156104b257600080fd5b506104bb6112b5565b6040516104c89190614a12565b60405180910390f35b3480156104dd57600080fd5b506104e66112cd565b6040516104f39190614adf565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e91906142db565b6112e0565b005b34801561053157600080fd5b5061054c60048036038101906105479190614422565b61151e565b005b34801561055a57600080fd5b50610563611c7c565b6040516105709190614fad565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b919061415a565b611c82565b6040516105ad9190614fad565b60405180910390f35b3480156105c257600080fd5b506105cb611ccb565b6040516105d89190614fad565b60405180910390f35b3480156105ed57600080fd5b506105f6611cd1565b6040516106039190614b15565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061415a565b611ce4565b005b34801561064157600080fd5b5061064a61201c565b6040516106579190614a2d565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190614422565b612042565b005b34801561069557600080fd5b5061069e612243565b6040516106ab9190614b4b565b60405180910390f35b3480156106c057600080fd5b506106c96122d5565b005b3480156106d757600080fd5b506106e061246f565b6040516106ed9190614fad565b60405180910390f35b34801561070257600080fd5b5061071d600480360381019061071891906143bd565b612475565b60405161072a9190614adf565b60405180910390f35b34801561073f57600080fd5b5061075a600480360381019061075591906143bd565b61255f565b6040516107679190614adf565b60405180910390f35b34801561077c57600080fd5b50610785612582565b6040516107929190614fad565b60405180910390f35b3480156107a757600080fd5b506107b0612588565b6040516107bd9190614fad565b60405180910390f35b3480156107d257600080fd5b506107db61258e565b005b6107e561278a565b005b3480156107f357600080fd5b5061080e6004803603810190610809919061415a565b612a96565b60405161081b9190614fad565b60405180910390f35b34801561083057600080fd5b50610839612aae565b005b34801561084757600080fd5b50610850612ab8565b60405161085d9190614fad565b60405180910390f35b34801561087257600080fd5b5061088d600480360381019061088891906141d5565b612ae0565b60405161089a9190614fad565b60405180910390f35b3480156108af57600080fd5b506108b8612b67565b6040516108c59190614fad565b60405180910390f35b3480156108da57600080fd5b506108e3612b6d565b6040516108f09190614a12565b60405180910390f35b34801561090557600080fd5b5061090e612b91565b60405161091b9190614a12565b60405180910390f35b34801561093057600080fd5b50610939612bb7565b005b34801561094757600080fd5b50610950612e40565b60405161095d9190614a12565b60405180910390f35b606060368054610975906152e8565b80601f01602080910402602001604051908101604052809291908181526020018280546109a1906152e8565b80156109ee5780601f106109c3576101008083540402835291602001916109ee565b820191906000526020600020905b8154815290600101906020018083116109d157829003601f168201915b5050505050905090565b600080610a03612e66565b9050610a10818585612e6e565b600191505092915050565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290614d4d565b60405180910390fd5b80609e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600063150b7a0260e01b9050949350505050565b6000603554905090565b60016003811115610b47577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115610b8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690614c0d565b60405180910390fd5b60006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637c513c0f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610c3c57600080fd5b505af1158015610c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c74919061444b565b610c7e9190615091565b905080609c54610c8e9190615118565b6103e834610c9c9190615118565b1015610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490614ecd565b60405180910390fd5b6099544210610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1890614dad565b60405180910390fd5b61038442609954610d329190615172565b11610d535761038460996000828254610d4b9190615091565b925050819055505b610d81609d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609c54613039565b34609c8190555033609d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe684a55f31b79eca403df938249029212a5925ec6be8012e099b45bc1019e5d234604051610e0f9190614fad565b60405180910390a250565b600080610e25612e66565b9050610e32858285613163565b610e3d8585856131ef565b60019150509392505050565b60995481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb557600080fd5b505afa158015610ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eed9190614183565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190614c8d565b60405180910390fd5b80609e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590614d4d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0b335e36040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561109657600080fd5b505af11580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061444b565b811015801561117c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630e519ef96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611178919061444b565b8111155b6111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290614d8d565b60405180910390fd5b80609a819055507f4ab86ae701798277aa378943b9dfd155d3b19703cd57be298908fadd32f7bf46816040516111f19190614fad565b60405180910390a150565b60006012905090565b609a5481565b600080611216612e66565b90506112aa818585603460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112a59190615091565b612e6e565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60a160009054906101000a900460ff1681565b600060019054906101000a900460ff166113085760008054906101000a900460ff1615611311565b611310613473565b5b611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790614d6d565b60405180910390fd5b60008060019054906101000a900460ff1615905080156113a0576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6113aa8383613484565b6113b26134e1565b87609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550866098819055506203f480609a8190555088609e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083609f819055504260a0819055506000609d60146101000a81548160ff0219169083600381111561149f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b02179055508460a360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114f28987613532565b80156115135760008060016101000a81548160ff0219169083151502179055505b505050505050505050565b60006003811115611558577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff1660038111156115a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b146115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790614f0d565b60405180910390fd5b600060a360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080821415611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90614f2d565b60405180910390fd5b600061167233611c82565b9050600060a254141561169d578060a28190555082816116929190615118565b609b81905550611be5565b60a254811480156116af575060008214155b156116cb5782816116c09190615118565b609b81905550611be4565b600082141561192b57600060a254609b546116e691906150e7565b905060006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166309990a966040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178d919061444b565b836117989190615118565b6117a291906150e7565b9050808510156117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de90614bad565b60405180910390fd5b60006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635410bfc96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561185457600080fd5b505af1158015611868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188c919061444b565b846118979190615118565b6118a191906150e7565b9050808611156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90614eed565b60405180910390fd5b8360a260008282546118f89190615091565b92505081905550858461190b9190615118565b609b600082825461191c9190615091565b92505081905550505050611be3565b6000831415611976578060a260008282546119469190615172565b9250508190555081816119599190615118565b609b600082825461196a9190615172565b92505081905550611be2565b60008160a2546119869190615172565b82846119929190615118565b609b5461199f9190615172565b6119a991906150e7565b905060006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166309990a966040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611a1857600080fd5b505af1158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061444b565b83611a5b9190615118565b611a6591906150e7565b905080851015611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa190614bad565b60405180910390fd5b60006103e87f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635410bfc96040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4f919061444b565b84611b5a9190615118565b611b6491906150e7565b905080861115611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba090614eed565b60405180910390fd5b8484611bb59190615118565b8685611bc19190615118565b609b54611bce9190615091565b611bd89190615172565b609b819055505050505b5b5b5b8260a360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f64e6e7bd72b853c4e62fd6ceaca05a104700c70a4cb567c75c7f2242ba7f037c84604051611c6f9190614fad565b60405180910390a2505050565b609c5481565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b609b5481565b609d60149054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4a57600080fd5b505afa158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d829190614183565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de690614e2d565b60405180910390fd5b60006003811115611e29577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115611e71577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890614f0d565b60405180910390fd5b600060a360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508060001415611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090614f2d565b60405180910390fd5b6000611f4483611c82565b90508060a26000828254611f589190615172565b925050819055508181611f6b9190615118565b609b6000828254611f7c9190615172565b92505081905550600060a360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f64e6e7bd72b853c4e62fd6ceaca05a104700c70a4cb567c75c7f2242ba7f037c600060405161200f9190614b30565b60405180910390a2505050565b609d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c990614d4d565b60405180910390fd5b609f548110612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210d90614c4d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638a364bc16040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561217e57600080fd5b505af1158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b6919061444b565b8111156121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ef90614dcd565b60405180910390fd5b612200613693565b80609f819055507f2d1dae59a9e9ec0bc2ab19d45b7d10c8c55304fa08b40a7998e9f67f03223d04609f546040516122389190614fad565b60405180910390a150565b606060378054612252906152e8565b80601f016020809104026020016040519081016040528092919081815260200182805461227e906152e8565b80156122cb5780601f106122a0576101008083540402835291602001916122cb565b820191906000526020600020905b8154815290600101906020018083116122ae57829003601f168201915b5050505050905090565b6002600381111561230f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115612357577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e90614f8d565b60405180910390fd5b60006123a233611c82565b9050600081116123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90614c2d565b60405180910390fd5b60006123f1610b03565b47836123fd9190615118565b61240791906150e7565b90506124133383613a7e565b61241d3382613039565b3373ffffffffffffffffffffffffffffffffffffffff167f730831a1e4aa2d187ddd8e03d7beeac760a3927da5f112d645e0f8df7494b367826040516124639190614fad565b60405180910390a25050565b60a25481565b600080612480612e66565b90506000603460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d90614f4d565b60405180910390fd5b6125538286868403612e6e565b60019250505092915050565b60008061256a612e66565b90506125778185856131ef565b600191505092915050565b60a05481565b60985481565b600060038111156125c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115612610577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790614c6d565b60405180910390fd5b6126613361265c610b03565b613a7e565b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30336098546040518463ffffffff1660e01b81526004016126c293929190614a7f565b600060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b505050506003609d60146101000a81548160ff02191690836003811115612740577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b02179055503373ffffffffffffffffffffffffffffffffffffffff167fd1b5ea7fe0f1c2fa09d49c2aa9b2200664ba57a734f1d95481d95b7f99af991c60405160405180910390a2565b600060038111156127c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff16600381111561280c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1461284c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284390614b8d565b60405180910390fd5b612854612ab8565b341015612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d90614ced565b60405180910390fd5b61289e610b03565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166332977c736040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561290657600080fd5b505af115801561291a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293e919061444b565b6129489190615118565b6103e860a2546129589190615118565b1015612999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299090614d2d565b60405180910390fd5b609a54426129a79190615091565b6099819055506001609d60146101000a81548160ff021916908360038111156129f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b021790555034609c8190555033609d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fcfb9c5312b25ec7b809d61e638df25f749eae5d5c25399e1c93d1d319bfd582134604051612a8c9190614fad565b60405180910390a2565b60a36020528060005260406000206000915090505481565b612ab6613693565b565b60008060a25414612ad85760a254609b54612ad391906150e7565b612adb565b60005b905090565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b609f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016003811115612bf1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115612c39577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14612c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7090614e6d565b60405180910390fd5b609954421015612cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb590614d0d565b60405180910390fd5b612cc6613693565b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30609d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166098546040518463ffffffff1660e01b8152600401612d4993929190614a48565b600060405180830381600087803b158015612d6357600080fd5b505af1158015612d77573d6000803e3d6000fd5b505050506002609d60146101000a81548160ff02191690836003811115612dc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550609d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8b01f9dd0400d6a1e84369a5fb8f6033934856ffa8ebadd707dca302ab551695609c54604051612e369190614fad565b60405180910390a2565b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed590614e4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4590614bed565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302c9190614fad565b60405180910390a3505050565b6130438282613c57565b61315f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156130a357600080fd5b505af11580156130b7573d6000803e3d6000fd5b505050505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161310b929190614ab6565b602060405180830381600087803b15801561312557600080fd5b505af1158015613139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315d91906143f9565b505b5050565b600061316f8484612ae0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146131e957818110156131db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d290614cad565b60405180910390fd5b6131e88484848403612e6e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561325f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325690614e0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c690614b6d565b60405180910390fd5b6132da838383613cd3565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335890614ccd565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133f69190615091565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161345a9190614fad565b60405180910390a361346d848484613ec0565b50505050565b600061347e30613ec5565b15905090565b600060019054906101000a900460ff166134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca90614ead565b60405180910390fd5b6134dd8282613ee8565b5050565b600060019054906101000a900460ff16613530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352790614ead565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161359990614f6d565b60405180910390fd5b6135ae60008383613cd3565b80603560008282546135c09190615091565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136169190615091565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161367b9190614fad565b60405180910390a361368f60008383613ec0565b5050565b600260038111156136cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115613715577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374d90614e8d565b60405180910390fd5b60006103e8613763610b03565b609f546137709190615118565b61377a91906150e7565b905060006301e133808261378e91906150e7565b9050600060a054426137a09190615172565b9050600082826137b09190615118565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b3f006746040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561381c57600080fd5b505af1158015613830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385491906141ac565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630ea90a126040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156138c057600080fd5b505af11580156138d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f8919061444b565b90506103e8613905610b03565b826139109190615118565b61391a91906150e7565b95506301e133808661392c91906150e7565b94506000858561393c9190615118565b90504260a081905550600073ffffffffffffffffffffffffffffffffffffffff16609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139ff576139c7609e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685613532565b7f62b10e3ff3d45b5ff546e740b893897facb1680285f989a64ae932d62c5388e1846040516139f69190614fad565b60405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613a7557613a3d8382613532565b7f62b10e3ff3d45b5ff546e740b893897facb1680285f989a64ae932d62c5388e181604051613a6c9190614fad565b60405180910390a15b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae590614ded565b60405180910390fd5b613afa82600083613cd3565b6000603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7890614bcd565b60405180910390fd5b818103603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160356000828254613bd99190615172565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c3e9190614fad565b60405180910390a3613c5283600084613ec0565b505050565b6000808373ffffffffffffffffffffffffffffffffffffffff168361753090604051613c82906149fd565b600060405180830381858888f193505050503d8060008114613cc0576040519150601f19603f3d011682016040523d82523d6000602084013e613cc5565b606091505b505090508091505092915050565b60006003811115613d0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b609d60149054906101000a900460ff166003811115613d55577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613ebb57600060a360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060a360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818114613eb8576000811415613e35578260a26000828254613e059190615172565b925050819055508183613e189190615118565b609b6000828254613e299190615172565b92505081905550613eb7565b6000821415613e80578260a26000828254613e509190615091565b925050819055508083613e639190615118565b609b6000828254613e749190615091565b92505081905550613eb6565b8183613e8c9190615118565b8184613e989190615118565b609b54613ea59190615091565b613eaf9190615172565b609b819055505b5b5b50505b505050565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16613f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f2e90614ead565b60405180910390fd5b8160369080519060200190613f4d929190613f69565b508060379080519060200190613f64929190613f69565b505050565b828054613f75906152e8565b90600052602060002090601f016020900481019282613f975760008555613fde565b82601f10613fb057805160ff1916838001178555613fde565b82800160010185558215613fde579182015b82811115613fdd578251825591602001919060010190613fc2565b5b509050613feb9190613fef565b5090565b5b80821115614008576000816000905550600101613ff0565b5090565b600061401f61401a84615008565b614fe3565b90508281526020810184848401111561403757600080fd5b6140428482856152a6565b509392505050565b600061405d61405884615039565b614fe3565b90508281526020810184848401111561407557600080fd5b6140808482856152a6565b509392505050565b60008135905061409781615bbe565b92915050565b6000815190506140ac81615bbe565b92915050565b6000815190506140c181615bd5565b92915050565b6000815190506140d681615bec565b92915050565b600082601f8301126140ed57600080fd5b81356140fd84826020860161400c565b91505092915050565b600082601f83011261411757600080fd5b813561412784826020860161404a565b91505092915050565b60008135905061413f81615c03565b92915050565b60008151905061415481615c03565b92915050565b60006020828403121561416c57600080fd5b600061417a84828501614088565b91505092915050565b60006020828403121561419557600080fd5b60006141a38482850161409d565b91505092915050565b6000602082840312156141be57600080fd5b60006141cc848285016140b2565b91505092915050565b600080604083850312156141e857600080fd5b60006141f685828601614088565b925050602061420785828601614088565b9150509250929050565b60008060006060848603121561422657600080fd5b600061423486828701614088565b935050602061424586828701614088565b925050604061425686828701614130565b9150509250925092565b6000806000806080858703121561427657600080fd5b600061428487828801614088565b945050602061429587828801614088565b93505060406142a687828801614130565b925050606085013567ffffffffffffffff8111156142c357600080fd5b6142cf878288016140dc565b91505092959194509250565b600080600080600080600080610100898b0312156142f857600080fd5b60006143068b828c01614088565b98505060206143178b828c01614088565b97505060406143288b828c01614130565b96505060606143398b828c01614130565b955050608061434a8b828c01614130565b94505060a061435b8b828c01614130565b93505060c089013567ffffffffffffffff81111561437857600080fd5b6143848b828c01614106565b92505060e089013567ffffffffffffffff8111156143a157600080fd5b6143ad8b828c01614106565b9150509295985092959890939650565b600080604083850312156143d057600080fd5b60006143de85828601614088565b92505060206143ef85828601614130565b9150509250929050565b60006020828403121561440b57600080fd5b6000614419848285016140c7565b91505092915050565b60006020828403121561443457600080fd5b600061444284828501614130565b91505092915050565b60006020828403121561445d57600080fd5b600061446b84828501614145565b91505092915050565b61447d8161524c565b82525050565b61448c816151b8565b82525050565b61449b816151a6565b82525050565b6144aa816151ca565b82525050565b6144b9816151d6565b82525050565b6144c88161525e565b82525050565b6144d781615270565b82525050565b60006144e88261506a565b6144f28185615080565b93506145028185602086016152b5565b61450b81615436565b840191505092915050565b6000614523602383615080565b915061452e82615447565b604082019050919050565b6000614546601783615080565b915061455182615496565b602082019050919050565b6000614569601c83615080565b9150614574826154bf565b602082019050919050565b600061458c602283615080565b9150614597826154e8565b604082019050919050565b60006145af602283615080565b91506145ba82615537565b604082019050919050565b60006145d2601783615080565b91506145dd82615586565b602082019050919050565b60006145f5601a83615080565b9150614600826155af565b602082019050919050565b6000614618601283615080565b9150614623826155d8565b602082019050919050565b600061463b601383615080565b915061464682615601565b602082019050919050565b600061465e600c83615080565b91506146698261562a565b602082019050919050565b6000614681601d83615080565b915061468c82615653565b602082019050919050565b60006146a4602683615080565b91506146af8261567c565b604082019050919050565b60006146c7601183615080565b91506146d2826156cb565b602082019050919050565b60006146ea601083615080565b91506146f5826156f4565b602082019050919050565b600061470d601783615080565b91506147188261571d565b602082019050919050565b6000614730601283615080565b915061473b82615746565b602082019050919050565b6000614753602e83615080565b915061475e8261576f565b604082019050919050565b6000614776601d83615080565b9150614781826157be565b602082019050919050565b6000614799601183615080565b91506147a4826157e7565b602082019050919050565b60006147bc602483615080565b91506147c782615810565b604082019050919050565b60006147df602183615080565b91506147ea8261585f565b604082019050919050565b6000614802602583615080565b915061480d826158ae565b604082019050919050565b6000614825600e83615080565b9150614830826158fd565b602082019050919050565b6000614848600083615075565b915061485382615926565b600082019050919050565b600061486b602483615080565b915061487682615929565b604082019050919050565b600061488e601c83615080565b915061489982615978565b602082019050919050565b60006148b1602583615080565b91506148bc826159a1565b604082019050919050565b60006148d4602b83615080565b91506148df826159f0565b604082019050919050565b60006148f7600f83615080565b915061490282615a3f565b602082019050919050565b600061491a601d83615080565b915061492582615a68565b602082019050919050565b600061493d602783615080565b915061494882615a91565b604082019050919050565b6000614960601483615080565b915061496b82615ae0565b602082019050919050565b6000614983602583615080565b915061498e82615b09565b604082019050919050565b60006149a6601f83615080565b91506149b182615b58565b602082019050919050565b60006149c9601983615080565b91506149d482615b81565b602082019050919050565b6149e881615235565b82525050565b6149f78161523f565b82525050565b6000614a088261483b565b9150819050919050565b6000602082019050614a276000830184614492565b92915050565b6000602082019050614a426000830184614483565b92915050565b6000606082019050614a5d6000830186614492565b614a6a6020830185614474565b614a7760408301846149df565b949350505050565b6000606082019050614a946000830186614492565b614aa16020830185614492565b614aae60408301846149df565b949350505050565b6000604082019050614acb6000830185614492565b614ad860208301846149df565b9392505050565b6000602082019050614af460008301846144a1565b92915050565b6000602082019050614b0f60008301846144b0565b92915050565b6000602082019050614b2a60008301846144bf565b92915050565b6000602082019050614b4560008301846144ce565b92915050565b60006020820190508181036000830152614b6581846144dd565b905092915050565b60006020820190508181036000830152614b8681614516565b9050919050565b60006020820190508181036000830152614ba681614539565b9050919050565b60006020820190508181036000830152614bc68161455c565b9050919050565b60006020820190508181036000830152614be68161457f565b9050919050565b60006020820190508181036000830152614c06816145a2565b9050919050565b60006020820190508181036000830152614c26816145c5565b9050919050565b60006020820190508181036000830152614c46816145e8565b9050919050565b60006020820190508181036000830152614c668161460b565b9050919050565b60006020820190508181036000830152614c868161462e565b9050919050565b60006020820190508181036000830152614ca681614651565b9050919050565b60006020820190508181036000830152614cc681614674565b9050919050565b60006020820190508181036000830152614ce681614697565b9050919050565b60006020820190508181036000830152614d06816146ba565b9050919050565b60006020820190508181036000830152614d26816146dd565b9050919050565b60006020820190508181036000830152614d4681614700565b9050919050565b60006020820190508181036000830152614d6681614723565b9050919050565b60006020820190508181036000830152614d8681614746565b9050919050565b60006020820190508181036000830152614da681614769565b9050919050565b60006020820190508181036000830152614dc68161478c565b9050919050565b60006020820190508181036000830152614de6816147af565b9050919050565b60006020820190508181036000830152614e06816147d2565b9050919050565b60006020820190508181036000830152614e26816147f5565b9050919050565b60006020820190508181036000830152614e4681614818565b9050919050565b60006020820190508181036000830152614e668161485e565b9050919050565b60006020820190508181036000830152614e8681614881565b9050919050565b60006020820190508181036000830152614ea6816148a4565b9050919050565b60006020820190508181036000830152614ec6816148c7565b9050919050565b60006020820190508181036000830152614ee6816148ea565b9050919050565b60006020820190508181036000830152614f068161490d565b9050919050565b60006020820190508181036000830152614f2681614930565b9050919050565b60006020820190508181036000830152614f4681614953565b9050919050565b60006020820190508181036000830152614f6681614976565b9050919050565b60006020820190508181036000830152614f8681614999565b9050919050565b60006020820190508181036000830152614fa6816149bc565b9050919050565b6000602082019050614fc260008301846149df565b92915050565b6000602082019050614fdd60008301846149ee565b92915050565b6000614fed614ffe565b9050614ff9828261531a565b919050565b6000604051905090565b600067ffffffffffffffff82111561502357615022615407565b5b61502c82615436565b9050602081019050919050565b600067ffffffffffffffff82111561505457615053615407565b5b61505d82615436565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061509c82615235565b91506150a783615235565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150dc576150db61534b565b5b828201905092915050565b60006150f282615235565b91506150fd83615235565b92508261510d5761510c61537a565b5b828204905092915050565b600061512382615235565b915061512e83615235565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156151675761516661534b565b5b828202905092915050565b600061517d82615235565b915061518883615235565b92508282101561519b5761519a61534b565b5b828203905092915050565b60006151b182615215565b9050919050565b60006151c382615215565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061521082615baa565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061525782615282565b9050919050565b600061526982615202565b9050919050565b600061527b82615235565b9050919050565b600061528d82615294565b9050919050565b600061529f82615215565b9050919050565b82818337600083830152505050565b60005b838110156152d35780820151818401526020810190506152b8565b838111156152e2576000848401525b50505050565b6000600282049050600182168061530057607f821691505b60208210811415615314576153136153d8565b5b50919050565b61532382615436565b810181811067ffffffffffffffff8211171561534257615341615407565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f73746172743a6e6f2061756374696f6e20737461727473000000000000000000600082015250565b7f7570646174653a7265736572766520707269636520746f6f206c6f7700000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f6269643a61756374696f6e206973206e6f74206c697665000000000000000000600082015250565b7f636173683a6e6f20746f6b656e7320746f2063617368206f7574000000000000600082015250565b7f7570646174653a63616e27742072616973650000000000000000000000000000600082015250565b7f72656465656d3a6e6f2072656465656d696e6700000000000000000000000000600082015250565b7f6b69636b3a6e6f7420676f760000000000000000000000000000000000000000600082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f73746172743a746f6f206c6f7720626964000000000000000000000000000000600082015250565b7f656e643a61756374696f6e206c69766500000000000000000000000000000000600082015250565b7f73746172743a6e6f7420656e6f75676820766f74657273000000000000000000600082015250565b7f7570646174653a6e6f742063757261746f720000000000000000000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f7570646174653a696e76616c69642061756374696f6e206c656e677468000000600082015250565b7f6269643a61756374696f6e20656e646564000000000000000000000000000000600082015250565b7f7570646174653a63616e6e6f7420696e6372656173652066656520746869732060008201527f6869676800000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f72656d6f76653a6e6f7420676f76000000000000000000000000000000000000600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f656e643a7661756c742068617320616c726561647920636c6f73656400000000600082015250565b7f636c61696d3a63616e6e6f7420636c61696d2061667465722061756374696f6e60008201527f20656e6473000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f6269643a746f6f206c6f77206269640000000000000000000000000000000000600082015250565b7f7570646174653a7265736572766520707269636520746f6f2068696768000000600082015250565b7f7570646174653a61756374696f6e206c6976652063616e6e6f7420757064617460008201527f6520707269636500000000000000000000000000000000000000000000000000602082015250565b7f7570646174653a6e6f7420616e20757064617465000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f636173683a7661756c74206e6f7420636c6f7365642079657400000000000000600082015250565b60048110615bbb57615bba6153a9565b5b50565b615bc7816151a6565b8114615bd257600080fd5b50565b615bde816151b8565b8114615be957600080fd5b50565b615bf5816151ca565b8114615c0057600080fd5b50565b615c0c81615235565b8114615c1757600080fd5b5056fea2646970667358221220b8c3d13fa67606ebd9652255fa7678590b05f211aa7c14b379b1104aa3341b0864736f6c63430008020033",
"linkReferences": {},
"deployedLinkReferences": {}
}