60606040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055506001600360026101000a81548160ff0219169083151502179055506a58a061ea91aa7f25840000600655341561006f57600080fd5b6040516020806127c083398101604052808051906020019091905050600654600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600281905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612698806101286000396000f300606060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610159578063095ea7b3146101e7578063162790551461022957806318160ddd1461027a5780631e6f9c1e146102a357806323b872dd146102c8578063266d7bda14610341578063313ce5671461036a57806333a581d2146103995780634511cc7d146103c257806349beee4f146103ef57806370a082311461041457806374de8caf1461046157806395d89b41146104fe5780639850d32b1461058c578063a9059cbb146105e1578063be45fd621461063b578063bffd952a146106d8578063c66e409514610711578063cda8300e14610766578063d035e45f14610793578063dd62ed3e146107cc578063de1f892a14610838578063e09678fd1461085d578063f6368f8a14610896578063fb471ce514610976575b600080fd5b341561016457600080fd5b61016c6109a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ac578082015181840152602081019050610191565b50505050905090810190601f1680156101d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101f257600080fd5b610227600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506109dc565b005b341561023457600080fd5b610260600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bc8565b604051808215151515815260200191505060405180910390f35b341561028557600080fd5b61028d610bdb565b6040518082815260200191505060405180910390f35b34156102ae57600080fd5b6102c660048080351515906020019091905050610be5565b005b34156102d357600080fd5b610327600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c5a565b604051808215151515815260200191505060405180910390f35b341561034c57600080fd5b610354610ffa565b6040518082815260200191505060405180910390f35b341561037557600080fd5b61037d611000565b604051808260ff1660ff16815260200191505060405180910390f35b34156103a457600080fd5b6103ac611005565b6040518082815260200191505060405180910390f35b34156103cd57600080fd5b6103d5611029565b604051808215151515815260200191505060405180910390f35b34156103fa57600080fd5b6104126004808035151590602001909190505061103c565b005b341561041f57600080fd5b61044b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110b1565b6040518082815260200191505060405180910390f35b341561046c57600080fd5b6104e4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506110fa565b604051808215151515815260200191505060405180910390f35b341561050957600080fd5b6105116111d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610551578082015181840152602081019050610536565b50505050905090810190601f16801561057e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561059757600080fd5b61059f611210565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105ec57600080fd5b610621600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611235565b604051808215151515815260200191505060405180910390f35b341561064657600080fd5b6106be600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611332565b604051808215151515815260200191505060405180910390f35b34156106e357600080fd5b61070f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611427565b005b341561071c57600080fd5b6107246114fe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561077157600080fd5b610779611524565b604051808215151515815260200191505060405180910390f35b341561079e57600080fd5b6107ca600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611537565b005b34156107d757600080fd5b610822600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611742565b6040518082815260200191505060405180910390f35b341561084357600080fd5b61085b600480803515159060200190919050506117c9565b005b341561086857600080fd5b610894600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061183e565b005b34156108a157600080fd5b61095c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611921565b604051808215151515815260200191505060405180910390f35b341561098157600080fd5b610989611e99565b604051808215151515815260200191505060405180910390f35b6040805190810160405280601381526020017f436f696e7665737420434f494e20546f6b656e0000000000000000000000000081525081565b600254421015610a9a576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a8e5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610a9957600080fd5b5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610ae857600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080823b905060008111915050919050565b6000600654905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c3d57fe5b80600360016101000a81548160ff02191690831515021790555050565b6000610c64612658565b600254421015610d22576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d165750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610d2157600080fd5b5b82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610ded575082600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1515610df857600080fd5b82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610fb3578082015181840152602081019050610f98565b50505050905090810190601f168015610fe05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a360019150509392505050565b60025481565b601281565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b600360029054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561109457fe5b80600360026101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611104612658565b6002544210156111c2576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111b65750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111c157600080fd5b5b6111cd858583611eac565b9150509392505050565b6040805190810160405280600481526020017f434f494e0000000000000000000000000000000000000000000000000000000081525081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061123f612658565b6002544210156112fd576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112f15750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112fc57600080fd5b5b61130684610bc8565b1561131d576113168484836121c3565b915061132b565b611328848483611eac565b91505b5092915050565b60006002544210156113f2576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806113e65750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156113f157600080fd5b5b6113fb84610bc8565b156114125761140b8484846121c3565b9050611420565b61141d848484611eac565b90505b9392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561147f57fe5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156114bb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360019054906101000a900460ff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561159257fe5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561163857600080fd5b6102c65a03f1151561164957600080fd5b5050506040518051905090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561172157600080fd5b6102c65a03f1151561173257600080fd5b5050506040518051905050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561182157fe5b80600360006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189657fe5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118dd57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002544210156119e1576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119d55750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156119e057600080fd5b5b6119ea85610bc8565b15611e8357836119f9336110b1565b1015611a0457600080fd5b611a16611a10336110b1565b85612602565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a6b611a65866110b1565b8561261c565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff166000836040518082805190602001908083835b602083101515611afd5780518252602082019150602081019050602083039250611ad8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207c01000000000000000000000000000000000000000000000000000000009004903387876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828051906020019080838360005b83811015611bde578082015181840152602081019050611bc3565b50505050905090810190601f168015611c0b5780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185886187965a03f193505050501515611c2f57fe5b600360019054906101000a900460ff1615611d17578473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611cdb578082015181840152602081019050611cc0565b50505050905090810190601f168015611d085780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35b600360029054906101000a900460ff1615611d92578473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b600360009054906101000a900460ff1615611e7a578473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd186866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611e3e578082015181840152602081019050611e23565b50505050905090810190601f168015611e6b5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35b60019050611e91565b611e8e858585611eac565b90505b949350505050565b600360009054906101000a900460ff1681565b600082611eb8336110b1565b1015611ec357600080fd5b611ed5611ecf336110b1565b84612602565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2a611f24856110b1565b8461261c565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360019054906101000a900460ff1615612055578373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612019578082015181840152602081019050611ffe565b50505050905090810190601f1680156120465780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35b600360029054906101000a900460ff16156120d0578373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b600360009054906101000a900460ff16156121b8578373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd185856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561217c578082015181840152602081019050612161565b50505050905090810190601f1680156121a95780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35b600190509392505050565b600080836121d0336110b1565b10156121db57600080fd5b6121ed6121e7336110b1565b85612602565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061224261223c866110b1565b8561261c565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508490508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a3386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561234a57808201518184015260208101905061232f565b50505050905090810190601f1680156123775780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b151561239757600080fd5b6102c65a03f115156123a857600080fd5b505050600360019054906101000a900460ff1615612493578473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561245757808201518184015260208101905061243c565b50505050905090810190601f1680156124845780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35b600360029054906101000a900460ff161561250e578473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b600360009054906101000a900460ff16156125f6578473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd186866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125ba57808201518184015260208101905061259f565b50505050905090810190601f1680156125e75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35b60019150509392505050565b60008183101561261157600080fd5b818303905092915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0383111561264d57600080fd5b818301905092915050565b6020604051908101604052806000815250905600a165627a7a7230582007f81c06e2c2b088387621ccb740b0ff05da868430c857c735731b58545ec13f0029000000000000000000000000000000000000000000000000000000005ac79278