60806040526040518060400160405280600a8152602001606481525060076000820151816000015560208201518160010155505060405180604001604052806004815260200160648152506009600082015181600001556020820151816001015550506040518060400160405280601e81526020016064815250600b600082015181600001556020820151816001015550506040518060400160405280600181526020016064815250600d6000820151816000015560208201518160010155505073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601055670de0b6b3a76400006011556000601255652d79883d20006016556802b5e3af16b18800006017556040518060400160405280601481526020017f58657468657245636f73797374656d546f6b656e0000000000000000000000008152506040518060400160405280600481526020017f584545540000000000000000000000000000000000000000000000000000000081525060128260009080519060200190620001c8929190620002c4565b508160019080519060200190620001e1929190620002c4565b5080600260006101000a81548160ff021916908360ff16021790555050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a362000373565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030757805160ff191683800117855562000338565b8280016001018555821562000338579182015b82811115620003375782518255916020019190600101906200031a565b5b5090506200034791906200034b565b5090565b6200037091905b808211156200036c57600081600090555060010162000352565b5090565b90565b612c5f80620003836000396000f3fe6080604052600436106101ed5760003560e01c806379cc67901161010d578063b17decdf116100a0578063e4849b321161006f578063e4849b3214610b29578063e9fad8ee14610b64578063f088d54714610b7b578063f2fde38b14610bd3578063fdb5a03e14610c24576101ed565b8063b17decdf146109d2578063ba20e3c5146109fd578063dad1de6a14610a53578063dd62ed3e14610aa4576101ed565b806395d89b41116100dc57806395d89b4114610805578063a457c2d714610895578063a5ece94114610908578063a9059cbb1461095f576101ed565b806379cc6790146106d35780638da5cb5b1461072e5780638f32d59b14610785578063906e9dd0146107b4576101ed565b8063313ce567116101855780634b0d2bd1116101545780634b0d2bd1146106225780635e78458e1461064d57806370a0823114610657578063715018a6146106bc576101ed565b8063313ce5671461052c578063395093511461055d5780633ccfd60b146105d057806342966c68146105e7576101ed565b806318160ddd116101c157806318160ddd146103ed578063186737a5146104185780631fc7e4871461046e57806323b872dd14610499576101ed565b806265318b1461025a5780630680fa03146102bf57806306fdde03146102ea578063095ea7b31461037a575b6102573334601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c3b565b50005b34801561026657600080fd5b506102a96004803603602081101561027d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f68565b6040518082815260200191505060405180910390f35b3480156102cb57600080fd5b506102d4610fe3565b6040518082815260200191505060405180910390f35b3480156102f657600080fd5b506102ff610ff8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033f578082015181840152602081019050610324565b50505050905090810190601f16801561036c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038657600080fd5b506103d36004803603604081101561039d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061109a565b604051808215151515815260200191505060405180910390f35b3480156103f957600080fd5b506104026110b1565b6040518082815260200191505060405180910390f35b34801561042457600080fd5b506104516004803603602081101561043b57600080fd5b81019080803590602001909291905050506110bb565b604051808381526020018281526020019250505060405180910390f35b34801561047a57600080fd5b506104836111d7565b6040518082815260200191505060405180910390f35b3480156104a557600080fd5b50610512600480360360608110156104bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111dd565b604051808215151515815260200191505060405180910390f35b34801561053857600080fd5b506105416113ad565b604051808260ff1660ff16815260200191505060405180910390f35b34801561056957600080fd5b506105b66004803603604081101561058057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113c4565b604051808215151515815260200191505060405180910390f35b3480156105dc57600080fd5b506105e5611469565b005b3480156105f357600080fd5b506106206004803603602081101561060a57600080fd5b8101908080359060200190929190505050611613565b005b34801561062e57600080fd5b50610637611620565b6040518082815260200191505060405180910390f35b610655611626565b005b34801561066357600080fd5b506106a66004803603602081101561067a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cd565b6040518082815260200191505060405180910390f35b3480156106c857600080fd5b506106d1611716565b005b3480156106df57600080fd5b5061072c600480360360408110156106f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117ea565b005b34801561073a57600080fd5b506107436117f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079157600080fd5b5061079a611822565b604051808215151515815260200191505060405180910390f35b3480156107c057600080fd5b50610803600480360360208110156107d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061187a565b005b34801561081157600080fd5b5061081a6118d1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085a57808201518184015260208101905061083f565b50505050905090810190601f1680156108875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108a157600080fd5b506108ee600480360360408110156108b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611973565b604051808215151515815260200191505060405180910390f35b34801561091457600080fd5b5061091d611a18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096b57600080fd5b506109b86004803603604081101561098257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a3e565b604051808215151515815260200191505060405180910390f35b3480156109de57600080fd5b506109e7611c65565b6040518082815260200191505060405180910390f35b348015610a0957600080fd5b50610a3660048036036020811015610a2057600080fd5b8101908080359060200190929190505050611c6f565b604051808381526020018281526020019250505060405180910390f35b348015610a5f57600080fd5b50610a8e60048036036020811015610a7657600080fd5b81019080803515159060200190929190505050611d53565b6040518082815260200191505060405180910390f35b348015610ab057600080fd5b50610b1360048036036040811015610ac757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dcf565b6040518082815260200191505060405180910390f35b348015610b3557600080fd5b50610b6260048036036020811015610b4c57600080fd5b8101908080359060200190929190505050611e56565b005b348015610b7057600080fd5b50610b79611e79565b005b610bbd60048036036020811015610b9157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eaa565b6040518082815260200191505060405180910390f35b348015610bdf57600080fd5b50610c2260048036036020811015610bf657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f3b565b005b348015610c3057600080fd5b50610c39611f5a565b005b6000808490506000610c578560076120d490919063ffffffff16565b90506000610c6e828761210690919063ffffffff16565b9050600080905060006016549050610c8583612128565b9150600082111515610c9657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610cff57508473ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015610d155750601754610d12886116cd565b10155b15610dde576000610d3085600b6120d490919063ffffffff16565b9050610d45818661210690919063ffffffff16565b9450610d9981601460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214990919063ffffffff16565b601460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b6000610de86110b1565b90506000811115610e4e57610e2e610e1d82610e0f6011548961216a90919063ffffffff16565b6121a890919063ffffffff16565b60105461214990919063ffffffff16565b601081905550610e47838261214990919063ffffffff16565b9050610e52565b8290505b610e5c86846121d2565b610e85601154610e778560105461216a90919063ffffffff16565b6121a890919063ffffffff16565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fff885306bd27f603a3fac7621bd18304a24108a142c4407ff0cfec31816c40d286864287601654604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a38296505050505050509392505050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fdb601154610fcd610fbc866116cd565b60105461216a90919063ffffffff16565b6121a890919063ffffffff16565b039050919050565b600080339050610ff2816116cd565b91505090565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110905780601f1061106557610100808354040283529160200191611090565b820191906000526020600020905b81548152906001019060200180831161107357829003601f168201915b5050505050905090565b60006110a7338484612328565b6001905092915050565b6000600554905090565b60008060006110ec6305f5e1006110de600260165461216a90919063ffffffff16565b61210690919063ffffffff16565b9050600061110460028661216a90919063ffffffff16565b9050600061113e6002840a6111398461112b60046305f5e10061216a90919063ffffffff16565b61216a90919063ffffffff16565b612149565b905061118f611172601154611164866111568661248b565b61210690919063ffffffff16565b61216a90919063ffffffff16565b61118a60026305f5e10061216a90919063ffffffff16565b6121a8565b94506111cd6111bc6111b2670de0b6b3a7640000886121a890919063ffffffff16565b6305f5e10061216a565b60165461214990919063ffffffff16565b9350505050915091565b60165481565b6000806111f483600d6120d490919063ffffffff16565b9050600061120b828561210690919063ffffffff16565b9050600080905061121d8787846124d6565b5061122783612587565b905060006112356001611d53565b111561124457611243611469565b5b6112598560105461216a90919063ffffffff16565b601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506112ba8260105461216a90919063ffffffff16565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506113346113236113146110b1565b836121a890919063ffffffff16565b60105461214990919063ffffffff16565b6010819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd6d3eb25a413c05d8107fc49deb2789bef7f612582b2482804c0b0423b6638ee876040518082815260200191505060405180910390a3600193505050509392505050565b6000600260009054906101000a900460ff16905090565b600061145f338461145a85600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214990919063ffffffff16565b612328565b6001905092915050565b60006114756001611d53565b11151561148157600080fd5b600033905060006114926000611d53565b905080601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611533601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261214990919063ffffffff16565b90506000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156115c0573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b61161d33826125a8565b50565b60175481565b600034905060006116418260076120d490919063ffffffff16565b9050600061164f8383612106565b905061167f600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000610c3b565b506116c26116b161168e6110b1565b6116a36011548561216a90919063ffffffff16565b6121a890919063ffffffff16565b60105461214990919063ffffffff16565b601081905550505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61171e611822565b151561172957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6117f482826126fe565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b611882611822565b151561188d57600080fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119695780601f1061193e57610100808354040283529160200191611969565b820191906000526020600020905b81548152906001019060200180831161194c57829003601f168201915b5050505050905090565b6000611a0e3384611a0985600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210690919063ffffffff16565b612328565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080339050611a4d816116cd565b8311151515611a5b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611a9757600080fd5b6000611aa36001611d53565b1115611ab257611ab1611469565b5b6000611ac884600d6120d490919063ffffffff16565b90506000611adf828661210690919063ffffffff16565b90506000809050611aef83612587565b9050611afc3388846127a5565b611b118660105461216a90919063ffffffff16565b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550611b728260105461216a90919063ffffffff16565b601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611bec611bdb611bcc6110b1565b836121a890919063ffffffff16565b60105461214990919063ffffffff16565b6010819055508673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fd6d3eb25a413c05d8107fc49deb2789bef7f612582b2482804c0b0423b6638ee886040518082815260200191505060405180910390a3600194505050505092915050565b6000601654905090565b600080611d0e601154611d0085611cf26002611ce4611c9a600260165461216a90919063ffffffff16565b611cdf601154611cd1611cbe670de0b6b3a76400008f61210690919063ffffffff16565b6305f5e10061216a90919063ffffffff16565b6121a890919063ffffffff16565b612106565b6121a890919063ffffffff16565b61216a90919063ffffffff16565b6121a890919063ffffffff16565b9150611d4c611d3b611d31670de0b6b3a7640000866121a890919063ffffffff16565b6305f5e10061216a565b60165461210690919063ffffffff16565b9050915091565b60008033905082611d6c57611d6781610f68565b611dc7565b611dc6601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db883610f68565b61214990919063ffffffff16565b5b915050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611e60610fe3565b111515611e6c57600080fd5b611e7581612975565b5050565b60003390506000611e89826116cd565b90506000811115611e9e57611e9d81611e56565b5b611ea6611469565b5050565b600081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f35333484610c3b565b50919050565b611f43611822565b1515611f4e57600080fd5b611f5781612b37565b50565b6000611f64610fe3565b111515611f7057600080fd5b6000611f7c6000611d53565b9050600033905081601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612022601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361214990919063ffffffff16565b91506000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061207782846000610c3b565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b6000808214156120e75760009050612100565b8260010154836000015483028115156120fc57fe5b0490505b92915050565b600082821115151561211757600080fd5b600082840390508091505092915050565b600080612134836110bb565b80925081935050508060168190555050919050565b600080828401905083811015151561216057600080fd5b8091505092915050565b60008083141561217d57600090506121a2565b6000828402905082848281151561219057fe5b0414151561219d57600080fd5b809150505b92915050565b600080821115156121b857600080fd5b600082848115156121c557fe5b0490508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561220e57600080fd5b6122238160055461214990919063ffffffff16565b60058190555061227b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561236457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156123a057600080fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008060026001840181151561249d57fe5b0490508291505b818110156124d05780915060028182858115156124bd57fe5b04018115156124c857fe5b0490506124a4565b50919050565b60006124e38484846127a5565b61257c843361257785600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210690919063ffffffff16565b612328565b600190509392505050565b60008061259383611c6f565b80925081935050508060168190555050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156125e457600080fd5b6125f98160055461210690919063ffffffff16565b60058190555061265181600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61270882826125a8565b6127a1823361279c84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210690919063ffffffff16565b612328565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156127e157600080fd5b61283381600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210690919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128c881600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080339050612984816116cd565b831115151561299257600080fd5b60008390506000809050600060165490506129ac83612587565b91506129b884846125a8565b60006129ce8360096120d490919063ffffffff16565b905060006129e5828561210690919063ffffffff16565b90506000612a24612a15601154612a078960105461216a90919063ffffffff16565b6121a890919063ffffffff16565b8361214990919063ffffffff16565b905080601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550612ab5612aa4612a816110b1565b612a966011548761216a90919063ffffffff16565b6121a890919063ffffffff16565b60105461214990919063ffffffff16565b6010819055508673ffffffffffffffffffffffffffffffffffffffff167fcda0e3e9928ea404aa9e25c490e9eec25fa1468e2f5cd3dfd7af4fa69ab08d0a87874288601654604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a250505050505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612b7357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea165627a7a72305820497246c021cf6dc391665db67a9cf904c66b7ffc835e060ac8e830e82de599190029