0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063b473b70d116100a2578063dd62ed3e11610071578063dd62ed3e14610ab0578063ea4ca47c14610b28578063f65decc614610b76578063f83d08ba14610bba576101f0565b8063b473b70d14610970578063ba9ae895146109c8578063c0e22f9714610a24578063ce9b793014610a66576101f0565b8063a457c2d7116100de578063a457c2d714610834578063a69df4b51461089a578063a9059cbb146108bc578063b1c1feb714610922576101f0565b80638da5cb5b146107235780638f32d59b1461076d57806395d89b411461078f5780639a94325014610812576101f0565b806325d998bb1161018757806354a9409e1161015657806354a9409e146105fd5780636803f6121461065557806370a08231146106ad5780637f6ab84114610705576101f0565b806325d998bb146104ff578063313ce5671461055757806339509351146105755780633ccfd60b146105db576101f0565b806318160ddd116101c357806318160ddd146103dd578063185ed831146103fb57806323b872dd1461041d5780632412bdb8146104a3576101f0565b806305259891146101f557806306fdde0314610237578063095ea7b3146102ba578063120cb15c14610320575b600080fd5b6102216004803603602081101561020b57600080fd5b8101908080359060200190929190505050610bdc565b6040518082815260200191505060405180910390f35b61023f610ea5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027f578082015181840152602081019050610264565b50505050905090810190601f1680156102ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610306600480360360408110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f43565b604051808215151515815260200191505060405180910390f35b6103626004803603602081101561033657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f5a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103a2578082015181840152602081019050610387565b50505050905090810190601f1680156103cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e5611573565b6040518082815260200191505060405180910390f35b61040361157d565b604051808215151515815260200191505060405180910390f35b6104896004803603606081101561043357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d5565b604051808215151515815260200191505060405180910390f35b6104e5600480360360208110156104b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611689565b604051808215151515815260200191505060405180910390f35b6105416004803603602081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061189e565b6040518082815260200191505060405180910390f35b61055f6118ea565b6040518082815260200191505060405180910390f35b6105c16004803603604081101561058b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118f0565b604051808215151515815260200191505060405180910390f35b6105e3611bcd565b604051808215151515815260200191505060405180910390f35b6106536004803603606081101561061357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611dd3565b005b6106976004803603602081101561066b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121cc565b6040518082815260200191505060405180910390f35b6106ef600480360360208110156106c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612218565b6040518082815260200191505060405180910390f35b61070d612264565b6040518082815260200191505060405180910390f35b61072b6122b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107756122de565b604051808215151515815260200191505060405180910390f35b610797612335565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d75780820151818401526020810190506107bc565b50505050905090810190601f1680156108045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61081a6123d3565b604051808215151515815260200191505060405180910390f35b6108806004803603604081101561084a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612451565b604051808215151515815260200191505060405180910390f35b6108a2612795565b604051808215151515815260200191505060405180910390f35b610908600480360360408110156108d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127d8565b604051808215151515815260200191505060405180910390f35b61096e6004803603604081101561093857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127ef565b005b6109b26004803603602081101561098657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ace565b6040518082815260200191505060405180910390f35b610a0a600480360360208110156109de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b1a565b604051808215151515815260200191505060405180910390f35b610a5060048036036020811015610a3a57600080fd5b8101908080359060200190929190505050612bb7565b6040518082815260200191505060405180910390f35b610a6e612ddd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b1260048036036040811015610ac657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e07565b6040518082815260200191505060405180910390f35b610b7460048036036040811015610b3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e91565b005b610bb860048036036020811015610b8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061311c565b005b610bc26133b2565b604051808215151515815260200191505060405180910390f35b6000610be66122de565b610bef57600080fd5b600360009054906101000a900460ff1615610c0957600080fd5b610c5e82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015610cac57600080fd5b610d0182600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550610d9c82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055507fff8ec5d2b7f799353c995f253a6beef49d9d48b7526099e872af2cfe7a888b1d600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546040518082815260200191505060405180910390a1600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f3b5780601f10610f1057610100808354040283529160200191610f3b565b820191906000526020600020905b815481529060010190602001808311610f1e57829003601f168201915b505050505081565b6000610f50338484613414565b6001905092915050565b6060806040518060400160405280600181526020017f7b00000000000000000000000000000000000000000000000000000000000000815250905060606040518060400160405280601281526020017f22636861726765416d6f756e7422203a202200000000000000000000000000008152509050606061101c600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613590565b905060606040518060400160405280601581526020017f222c2022756e6c6f636b416d6f756e7422203a20220000000000000000000000815250905060606110a5600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154613590565b905060606040518060400160405280601981526020017f222c2022617661696c61626c6542616c616e636522203a2022000000000000008152509050606061112e600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154613590565b905060606040518060400160405280600281526020017f227d00000000000000000000000000000000000000000000000000000000000081525090506060815183518551875189518b518d518f51010101010101016040519080825280601f01601f1916602001820160405280156111b55781602001600182028038833980820191505090505b509050606081905060008090506000809050600091505b8b5182101561123a578b82815181106111e157fe5b602001015160f81c60f81b8382806001019350815181106111fe57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081806001019250506111cc565b600091505b8a518210156112ad578a828151811061125457fe5b602001015160f81c60f81b83828060010193508151811061127157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818060010192505061123f565b600091505b8951821015611320578982815181106112c757fe5b602001015160f81c60f81b8382806001019350815181106112e457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081806001019250506112b2565b600091505b88518210156113935788828151811061133a57fe5b602001015160f81c60f81b83828060010193508151811061135757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050611325565b600091505b8751821015611406578782815181106113ad57fe5b602001015160f81c60f81b8382806001019350815181106113ca57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050611398565b600091505b86518210156114795786828151811061142057fe5b602001015160f81c60f81b83828060010193508151811061143d57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818060010192505061140b565b600091505b85518210156114ec5785828151811061149357fe5b602001015160f81c60f81b8382806001019350815181106114b057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818060010192505061147e565b600091505b845182101561155f5784828151811061150657fe5b602001015160f81c60f81b83828060010193508151811061152357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081806001019250506114f1565b829c50505050505050505050505050919050565b6000600254905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60006115e28484846136bd565b61167e843361167985600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138ea90919063ffffffff16565b613414565b600190509392505050565b600061169361157d565b61169c57600080fd5b600360009054906101000a900460ff166116b557600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166116d4612ddd565b73ffffffffffffffffffffffffffffffffffffffff161480156116fc57506116fb3361390a565b5b61170557600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015490506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506117e981600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f477b65cf658c5207a9d60bb5ebe4f60a504af024949bdffa6efc396d01ced3f6836040518082815260200191505060405180910390a36001915050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b60075481565b6000600360009054906101000a900460ff161561190c57600080fd5b60006119a083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133f590919063ffffffff16565b90506119aa6122b5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611bb757611a3283600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015611a8057600080fd5b611ad583600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550611b7083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b611bc2338583613414565b600191505092915050565b6000611bd761157d565b611be057600080fd5b600360009054906101000a900460ff16611bf957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16611c18612ddd565b73ffffffffffffffffffffffffffffffffffffffff16148015611c405750611c3f3361390a565b5b611c4957600080fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015490506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611d348160046000611ce86122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b60046000611d406122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364826040518082815260200191505060405180910390a25090565b611ddb6122de565b80611dea5750611de961157d565b5b611df357600080fd5b600360009054906101000a900460ff1615611e0d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e4757600080fd5b611e4f6122b5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e8757600080fd5b60008211611e9457600080fd5b80821015611ea157600080fd5b8160046000611eae6122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541015611ef757600080fd5b611f538260046000611f076122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b60046000611f5f6122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611ff582600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546133f590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061209081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061212b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508273ffffffffffffffffffffffffffffffffffffffff167f720e2015c6c49aa255ac152528ef75a8d12b40300a289e74c701a97c428654858383604051808381526020018281526020019250505060405180910390a2505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b6000600460006122726122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123cb5780601f106123a0576101008083540402835291602001916123cb565b820191906000526020600020905b8154815290600101906020018083116123ae57829003601f168201915b505050505081565b60006123dd6122de565b6123e657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561244257600080fd5b61244c600061391d565b905090565b6000600360009054906101000a900460ff161561246d57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561257757600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b600061260b83600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138ea90919063ffffffff16565b90506126156122b5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561277f5761269d83600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546138ea90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061273883600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b61278a338583613414565b600191505092915050565b600061279f6122de565b6127a857600080fd5b6000600360006101000a81548160ff021916908315150217905550600360009054906101000a900460ff16905090565b60006127e53384846136bd565b6001905092915050565b6127f76122de565b80612806575061280561157d565b5b61280f57600080fd5b600360009054906101000a900460ff161561282957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561286357600080fd5b61286b6122b5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128a357600080fd5b6128f881600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154101561294657600080fd5b61299b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550612a3681600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508173ffffffffffffffffffffffffffffffffffffffff167f84a2be98ade81115c3a7fc4e3f8f8b7d2ce22bb482f7270108a03034579aedad826040518082815260200191505060405180910390a25050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000612b246122de565b612b2d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b6757600080fd5b612b6f6122b5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ba757600080fd5b612bb08261391d565b9050919050565b6000612bc16122de565b612bca57600080fd5b600360009054906101000a900460ff1615612be457600080fd5b612c3982600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546138ea90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550612cd482600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055507fff8ec5d2b7f799353c995f253a6beef49d9d48b7526099e872af2cfe7a888b1d600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546040518082815260200191505060405180910390a1600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e996122de565b80612ea85750612ea761157d565b5b612eb157600080fd5b600360009054906101000a900460ff1615612ecb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f0557600080fd5b612f0d6122b5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f4557600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541015612f9457600080fd5b612fe981600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546138ea90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061308481600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508173ffffffffffffffffffffffffffffffffffffffff167fd85f893defab26c8b95a9d1a6aec387c0f5f6fb6581d53df79b83ef7b2061873826040518082815260200191505060405180910390a25050565b6131246122de565b80613133575061313261157d565b5b61313c57600080fd5b600360009054906101000a900460ff161561315657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561319057600080fd5b6131986122b5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131d057600080fd5b6000613269600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546138ea90919063ffffffff16565b90506000811161327857600080fd5b6132cd81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061336881600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505050565b60006133bc6122de565b6133c557600080fd5b6001600360006101000a81548160ff021916908315150217905550600360009054906101000a900460ff16905090565b60008082840190508381101561340a57600080fd5b8091505092915050565b600360009054906101000a900460ff161561342e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561346857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134a257600080fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b606060008214156135d8576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506136b8565b600082905060005b60008214613602578080600101915050600a82816135fa57fe5b0491506135e0565b6060816040519080825280601f01601f1916602001820160405280156136375781602001600182028038833980820191505090505b50905060006001830390505b600086146136b057600a868161365557fe5b0660300160f81b8282806001900393508151811061366f57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86816136a857fe5b049550613643565b819450505050505b919050565b600360009054906101000a900460ff16156136d757600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561371057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561374a57600080fd5b61379f81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061383a81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000828211156138f957600080fd5b600082840390508091505092915050565b600080823b905060008111915050919050565b60008173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561397a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7ae02edfa8fcf8e6ab0735af4a8724ca06b091b99194712358a6da6146107a8f60405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905091905056fea165627a7a72305820b077605f3bde73c0ebc691471e741cd86ca2f18b38ea493b05c6a4a7e98a449e0029
0x60806040526000600360006101000a81548160ff0219169083151502179055506040518060400160405280600381526020017f4e69580000000000000000000000000000000000000000000000000000000000815250600590805190602001906200006c92919062000307565b506040518060400160405280600381526020017f4e6958000000000000000000000000000000000000000000000000000000000081525060069080519060200190620000ba92919062000307565b506012600755348015620000cd57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600a0a63b2d05e0002600281905550600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055503373ffffffffffffffffffffffffffffffffffffffff167f720e2015c6c49aa255ac152528ef75a8d12b40300a289e74c701a97c42865485600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a2620003b6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200034a57805160ff19168380011785556200037b565b828001600101855582156200037b579182015b828111156200037a5782518255916020019190600101906200035d565b5b5090506200038a91906200038e565b5090565b620003b391905b80821115620003af57600081600090555060010162000395565b5090565b90565b613a6c80620003c66000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063b473b70d116100a2578063dd62ed3e11610071578063dd62ed3e14610ab0578063ea4ca47c14610b28578063f65decc614610b76578063f83d08ba14610bba576101f0565b8063b473b70d14610970578063ba9ae895146109c8578063c0e22f9714610a24578063ce9b793014610a66576101f0565b8063a457c2d7116100de578063a457c2d714610834578063a69df4b51461089a578063a9059cbb146108bc578063b1c1feb714610922576101f0565b80638da5cb5b146107235780638f32d59b1461076d57806395d89b411461078f5780639a94325014610812576101f0565b806325d998bb1161018757806354a9409e1161015657806354a9409e146105fd5780636803f6121461065557806370a08231146106ad5780637f6ab84114610705576101f0565b806325d998bb146104ff578063313ce5671461055757806339509351146105755780633ccfd60b146105db576101f0565b806318160ddd116101c357806318160ddd146103dd578063185ed831146103fb57806323b872dd1461041d5780632412bdb8146104a3576101f0565b806305259891146101f557806306fdde0314610237578063095ea7b3146102ba578063120cb15c14610320575b600080fd5b6102216004803603602081101561020b57600080fd5b8101908080359060200190929190505050610bdc565b6040518082815260200191505060405180910390f35b61023f610ea5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027f578082015181840152602081019050610264565b50505050905090810190601f1680156102ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610306600480360360408110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f43565b604051808215151515815260200191505060405180910390f35b6103626004803603602081101561033657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f5a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103a2578082015181840152602081019050610387565b50505050905090810190601f1680156103cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103e5611573565b6040518082815260200191505060405180910390f35b61040361157d565b604051808215151515815260200191505060405180910390f35b6104896004803603606081101561043357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d5565b604051808215151515815260200191505060405180910390f35b6104e5600480360360208110156104b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611689565b604051808215151515815260200191505060405180910390f35b6105416004803603602081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061189e565b6040518082815260200191505060405180910390f35b61055f6118ea565b6040518082815260200191505060405180910390f35b6105c16004803603604081101561058b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118f0565b604051808215151515815260200191505060405180910390f35b6105e3611bcd565b604051808215151515815260200191505060405180910390f35b6106536004803603606081101561061357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611dd3565b005b6106976004803603602081101561066b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121cc565b6040518082815260200191505060405180910390f35b6106ef600480360360208110156106c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612218565b6040518082815260200191505060405180910390f35b61070d612264565b6040518082815260200191505060405180910390f35b61072b6122b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107756122de565b604051808215151515815260200191505060405180910390f35b610797612335565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d75780820151818401526020810190506107bc565b50505050905090810190601f1680156108045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61081a6123d3565b604051808215151515815260200191505060405180910390f35b6108806004803603604081101561084a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612451565b604051808215151515815260200191505060405180910390f35b6108a2612795565b604051808215151515815260200191505060405180910390f35b610908600480360360408110156108d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127d8565b604051808215151515815260200191505060405180910390f35b61096e6004803603604081101561093857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127ef565b005b6109b26004803603602081101561098657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ace565b6040518082815260200191505060405180910390f35b610a0a600480360360208110156109de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b1a565b604051808215151515815260200191505060405180910390f35b610a5060048036036020811015610a3a57600080fd5b8101908080359060200190929190505050612bb7565b6040518082815260200191505060405180910390f35b610a6e612ddd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b1260048036036040811015610ac657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e07565b6040518082815260200191505060405180910390f35b610b7460048036036040811015610b3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e91565b005b610bb860048036036020811015610b8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061311c565b005b610bc26133b2565b604051808215151515815260200191505060405180910390f35b6000610be66122de565b610bef57600080fd5b600360009054906101000a900460ff1615610c0957600080fd5b610c5e82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015610cac57600080fd5b610d0182600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550610d9c82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055507fff8ec5d2b7f799353c995f253a6beef49d9d48b7526099e872af2cfe7a888b1d600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546040518082815260200191505060405180910390a1600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f3b5780601f10610f1057610100808354040283529160200191610f3b565b820191906000526020600020905b815481529060010190602001808311610f1e57829003601f168201915b505050505081565b6000610f50338484613414565b6001905092915050565b6060806040518060400160405280600181526020017f7b00000000000000000000000000000000000000000000000000000000000000815250905060606040518060400160405280601281526020017f22636861726765416d6f756e7422203a202200000000000000000000000000008152509050606061101c600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613590565b905060606040518060400160405280601581526020017f222c2022756e6c6f636b416d6f756e7422203a20220000000000000000000000815250905060606110a5600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154613590565b905060606040518060400160405280601981526020017f222c2022617661696c61626c6542616c616e636522203a2022000000000000008152509050606061112e600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154613590565b905060606040518060400160405280600281526020017f227d00000000000000000000000000000000000000000000000000000000000081525090506060815183518551875189518b518d518f51010101010101016040519080825280601f01601f1916602001820160405280156111b55781602001600182028038833980820191505090505b509050606081905060008090506000809050600091505b8b5182101561123a578b82815181106111e157fe5b602001015160f81c60f81b8382806001019350815181106111fe57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081806001019250506111cc565b600091505b8a518210156112ad578a828151811061125457fe5b602001015160f81c60f81b83828060010193508151811061127157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818060010192505061123f565b600091505b8951821015611320578982815181106112c757fe5b602001015160f81c60f81b8382806001019350815181106112e457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081806001019250506112b2565b600091505b88518210156113935788828151811061133a57fe5b602001015160f81c60f81b83828060010193508151811061135757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050611325565b600091505b8751821015611406578782815181106113ad57fe5b602001015160f81c60f81b8382806001019350815181106113ca57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050611398565b600091505b86518210156114795786828151811061142057fe5b602001015160f81c60f81b83828060010193508151811061143d57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818060010192505061140b565b600091505b85518210156114ec5785828151811061149357fe5b602001015160f81c60f81b8382806001019350815181106114b057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818060010192505061147e565b600091505b845182101561155f5784828151811061150657fe5b602001015160f81c60f81b83828060010193508151811061152357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081806001019250506114f1565b829c50505050505050505050505050919050565b6000600254905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60006115e28484846136bd565b61167e843361167985600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138ea90919063ffffffff16565b613414565b600190509392505050565b600061169361157d565b61169c57600080fd5b600360009054906101000a900460ff166116b557600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166116d4612ddd565b73ffffffffffffffffffffffffffffffffffffffff161480156116fc57506116fb3361390a565b5b61170557600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015490506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506117e981600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f477b65cf658c5207a9d60bb5ebe4f60a504af024949bdffa6efc396d01ced3f6836040518082815260200191505060405180910390a36001915050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b60075481565b6000600360009054906101000a900460ff161561190c57600080fd5b60006119a083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133f590919063ffffffff16565b90506119aa6122b5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611bb757611a3283600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015611a8057600080fd5b611ad583600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550611b7083600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b611bc2338583613414565b600191505092915050565b6000611bd761157d565b611be057600080fd5b600360009054906101000a900460ff16611bf957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16611c18612ddd565b73ffffffffffffffffffffffffffffffffffffffff16148015611c405750611c3f3361390a565b5b611c4957600080fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015490506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611d348160046000611ce86122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b60046000611d406122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364826040518082815260200191505060405180910390a25090565b611ddb6122de565b80611dea5750611de961157d565b5b611df357600080fd5b600360009054906101000a900460ff1615611e0d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e4757600080fd5b611e4f6122b5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e8757600080fd5b60008211611e9457600080fd5b80821015611ea157600080fd5b8160046000611eae6122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541015611ef757600080fd5b611f538260046000611f076122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b60046000611f5f6122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611ff582600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546133f590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061209081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061212b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508273ffffffffffffffffffffffffffffffffffffffff167f720e2015c6c49aa255ac152528ef75a8d12b40300a289e74c701a97c428654858383604051808381526020018281526020019250505060405180910390a2505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b6000600460006122726122b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123cb5780601f106123a0576101008083540402835291602001916123cb565b820191906000526020600020905b8154815290600101906020018083116123ae57829003601f168201915b505050505081565b60006123dd6122de565b6123e657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561244257600080fd5b61244c600061391d565b905090565b6000600360009054906101000a900460ff161561246d57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561257757600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b600061260b83600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138ea90919063ffffffff16565b90506126156122b5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561277f5761269d83600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546138ea90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061273883600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b61278a338583613414565b600191505092915050565b600061279f6122de565b6127a857600080fd5b6000600360006101000a81548160ff021916908315150217905550600360009054906101000a900460ff16905090565b60006127e53384846136bd565b6001905092915050565b6127f76122de565b80612806575061280561157d565b5b61280f57600080fd5b600360009054906101000a900460ff161561282957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561286357600080fd5b61286b6122b5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128a357600080fd5b6128f881600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154101561294657600080fd5b61299b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550612a3681600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508173ffffffffffffffffffffffffffffffffffffffff167f84a2be98ade81115c3a7fc4e3f8f8b7d2ce22bb482f7270108a03034579aedad826040518082815260200191505060405180910390a25050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000612b246122de565b612b2d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b6757600080fd5b612b6f6122b5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ba757600080fd5b612bb08261391d565b9050919050565b6000612bc16122de565b612bca57600080fd5b600360009054906101000a900460ff1615612be457600080fd5b612c3982600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546138ea90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550612cd482600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055507fff8ec5d2b7f799353c995f253a6beef49d9d48b7526099e872af2cfe7a888b1d600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546040518082815260200191505060405180910390a1600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e996122de565b80612ea85750612ea761157d565b5b612eb157600080fd5b600360009054906101000a900460ff1615612ecb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f0557600080fd5b612f0d6122b5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f4557600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541015612f9457600080fd5b612fe981600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546138ea90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061308481600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508173ffffffffffffffffffffffffffffffffffffffff167fd85f893defab26c8b95a9d1a6aec387c0f5f6fb6581d53df79b83ef7b2061873826040518082815260200191505060405180910390a25050565b6131246122de565b80613133575061313261157d565b5b61313c57600080fd5b600360009054906101000a900460ff161561315657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561319057600080fd5b6131986122b5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131d057600080fd5b6000613269600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546138ea90919063ffffffff16565b90506000811161327857600080fd5b6132cd81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061336881600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505050565b60006133bc6122de565b6133c557600080fd5b6001600360006101000a81548160ff021916908315150217905550600360009054906101000a900460ff16905090565b60008082840190508381101561340a57600080fd5b8091505092915050565b600360009054906101000a900460ff161561342e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561346857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134a257600080fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b606060008214156135d8576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506136b8565b600082905060005b60008214613602578080600101915050600a82816135fa57fe5b0491506135e0565b6060816040519080825280601f01601f1916602001820160405280156136375781602001600182028038833980820191505090505b50905060006001830390505b600086146136b057600a868161365557fe5b0660300160f81b8282806001900393508151811061366f57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86816136a857fe5b049550613643565b819450505050505b919050565b600360009054906101000a900460ff16156136d757600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561371057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561374a57600080fd5b61379f81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546138ea90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061383a81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546133f590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000828211156138f957600080fd5b600082840390508091505092915050565b600080823b905060008111915050919050565b60008173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561397a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7ae02edfa8fcf8e6ab0735af4a8724ca06b091b99194712358a6da6146107a8f60405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905091905056fea165627a7a72305820b077605f3bde73c0ebc691471e741cd86ca2f18b38ea493b05c6a4a7e98a449e0029