0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063919f06b0116100a2578063a457c2d711610071578063a457c2d71461044b578063a9059cbb14610477578063cb484734146104a3578063dd62ed3e146104ab578063eaf4b3aa146104d957610116565b8063919f06b01461035b57806395d89b41146104005780639759164a146104085780639d40a7541461042c57610116565b8063313ce567116100e9578063313ce56714610228578063395093511461024657806342966c681461027257806351b878a11461029157806370a082311461033557610116565b806306fdde031461011b578063095ea7b31461019857806318160ddd146101d857806323b872dd146101f2575b600080fd5b6101236104e1565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c4600480360360408110156101ae57600080fd5b506001600160a01b038135169060200135610577565b604080519115158252519081900360200190f35b6101e0610594565b60408051918252519081900360200190f35b6101c46004803603606081101561020857600080fd5b506001600160a01b0381358116916020810135909116906040013561059a565b610230610622565b6040805160ff9092168252519081900360200190f35b6101c46004803603604081101561025c57600080fd5b506001600160a01b03813516906020013561062b565b61028f6004803603602081101561028857600080fd5b5035610679565b005b61028f600480360360208110156102a757600080fd5b810190602081018135600160201b8111156102c157600080fd5b8201836020820111156102d357600080fd5b803590602001918460018302840111600160201b831117156102f457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061068d945050505050565b6101e06004803603602081101561034b57600080fd5b50356001600160a01b03166107d8565b6103786004803603602081101561037157600080fd5b50356107f3565b60405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103c45781810151838201526020016103ac565b50505050905090810190601f1680156103f15780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6101236108b8565b610410610919565b604080516001600160a01b039092168252519081900360200190f35b61043461092d565b6040805161ffff9092168252519081900360200190f35b6101c46004803603604081101561046157600080fd5b506001600160a01b038135169060200135610933565b6101c46004803603604081101561048d57600080fd5b506001600160a01b03813516906020013561099b565b6101e06109af565b6101e0600480360360408110156104c157600080fd5b506001600160a01b03813581169160200135166109e4565b6101e0610a0f565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b5050505050905090565b600061058b610584610a6f565b8484610a73565b50600192915050565b60025490565b60006105a7848484610b5f565b610617846105b3610a6f565b61061285604051806060016040528060288152602001611bc6602891396001600160a01b038a166000908152600160205260408120906105f1610a6f565b6001600160a01b031681526020810191909152604001600020549190610cba565b610a73565b5060015b9392505050565b60055460ff1690565b600061058b610638610a6f565b846106128560016000610649610a6f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610a15565b61068a610684610a6f565b82610d51565b50565b6106a5610698610a6f565b6106a06109af565b610d51565b600660405180604001604052806106ba610a6f565b6001600160a01b0390811682526020918201859052835460018082018655600095865294839020845160029092020180546001600160a01b031916919092161781558282015180519394919361071893928501929190910190611a97565b505050610723610a6f565b6001600160a01b03167faf867aeef278e066baeaab38bda34a1f9aa1c72a4ff6f314a6afa3376a49c485826001600680549050036040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561079a578181015183820152602001610782565b50505050905090810190601f1680156107c75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250565b6001600160a01b031660009081526020819052604090205490565b6006818154811061080357600080fd5b600091825260209182902060029182020180546001808301805460408051601f600019958416156101000295909501909216969096049283018790048702810187019095528185526001600160a01b03909216955091939091908301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905082565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561056d5780601f106105425761010080835404028352916020019161056d565b60055461010090046001600160a01b031681565b61012c81565b600061058b610940610a6f565b8461061285604051806060016040528060258152602001611c58602591396001600061096a610a6f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610cba565b600061058b6109a8610a6f565b8484610b5f565b6000604b60621b6109c66109c1610e4d565b610ef1565b6109ce610622565b60ff16600a0a8202816109dd57fe5b0491505090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60065490565b60008282018381101561061b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6001600160a01b038316610ab85760405162461bcd60e51b8152600401808060200182810382526024815260200180611c346024913960400191505060405180910390fd5b6001600160a01b038216610afd5760405162461bcd60e51b8152600401808060200182810382526022815260200180611b7e6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610ba45760405162461bcd60e51b8152600401808060200182810382526025815260200180611c0f6025913960400191505060405180910390fd5b6001600160a01b038216610be95760405162461bcd60e51b8152600401808060200182810382526023815260200180611b396023913960400191505060405180910390fd5b610bf483838361106d565b610c3181604051806060016040528060268152602001611ba0602691396001600160a01b0386166000908152602081905260409020549190610cba565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610c609082610a15565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610d495760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d0e578181015183820152602001610cf6565b50505050905090810190601f168015610d3b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216610d965760405162461bcd60e51b8152600401808060200182810382526021815260200180611bee6021913960400191505060405180910390fd5b610da28260008361106d565b610ddf81604051806060016040528060228152602001611b5c602291396001600160a01b0385166000908152602081905260409020549190610cba565b6001600160a01b038316600090815260208190526040902055600254610e059082611072565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000808073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23010610e875773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc230610e9e565b3073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b604080516060810182526001600160a01b03808516825283166020820152612710918101919091529193509150610ee9731f98431c8ad98523631ae4a59f267346ea31f984826110cf565b935050505090565b600080610f128373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26111b3565b905060007388e6a0c2ddd26feeb64f039a2c41296fcb3f56406001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6357600080fd5b505afa158015610f77573d6000803e3d6000fd5b505050506040513d6020811015610f8d57600080fd5b50516040805163d21220a760e01b815290519192506000917388e6a0c2ddd26feeb64f039a2c41296fcb3f56409163d21220a7916004808301926020929190829003018186803b158015610fe057600080fd5b505afa158015610ff4573d6000803e3d6000fd5b505050506040513d602081101561100a57600080fd5b5051905060006110597388e6a0c2ddd26feeb64f039a2c41296fcb3f56406001600160a01b03851673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146110525784611054565b835b6111b3565b600160601b94029390930495945050505050565b505050565b6000828211156110c9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600081602001516001600160a01b031682600001516001600160a01b0316106110f757600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b600080836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ef57600080fd5b505afa158015611203573d6000803e3d6000fd5b505050506040513d602081101561121957600080fd5b505160408051630dfe168160e01b815290519192506000916001600160a01b03871691630dfe1681916004808301926020929190829003018186803b15801561126157600080fd5b505afa158015611275573d6000803e3d6000fd5b505050506040513d602081101561128b57600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b1580156112cf57600080fd5b505afa1580156112e3573d6000803e3d6000fd5b505050506040513d60208110156112f957600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0385169163313ce567916004808301926020929190829003018186803b15801561134157600080fd5b505afa158015611355573d6000803e3d6000fd5b505050506040513d602081101561136b57600080fd5b50519050600061137a87611426565b905060006113966001600160a01b03831680600160601b6116b7565b90506000876001600160a01b0316866001600160a01b0316146113c65781600160c01b816113c057fe5b046113c8565b815b9050876001600160a01b0316866001600160a01b031614611400578460ff16600a0a8460ff16600a0a8202816113fa57fe5b04611419565b8360ff16600a0a8560ff16600a0a82028161141757fe5b045b9998505050505050505050565b6040805160028082526060820183526000928392919060208301908036833701905050905061012c8160008151811061145b57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061148457fe5b63ffffffff90921660209283029190910182015260405163883bdbfd60e01b8152600481018281528351602483015283516000936001600160a01b0388169363883bdbfd938793909283926044019185820191028083838b5b838110156114f55781810151838201526020016114dd565b505050509050019250505060006040518083038186803b15801561151857600080fd5b505afa15801561152c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561155557600080fd5b8101908080516040519392919084600160201b82111561157457600080fd5b90830190602082018581111561158957600080fd5b82518660208202830111600160201b821117156115a557600080fd5b82525081516020918201928201910280838360005b838110156115d25781810151838201526020016115ba565b5050505090500160405260200180516040519392919084600160201b8211156115fa57600080fd5b90830190602082018581111561160f57600080fd5b82518660208202830111600160201b8211171561162b57600080fd5b82525081516020918201928201910280838360005b83811015611658578181015183820152602001611640565b505050509050016040525050505090506116af61012c63ffffffff168260008151811061168157fe5b60200260200101518360018151811061169657fe5b60200260200101510360060b816116a957fe5b05611766565b949350505050565b60008080600019858709868602925082811090839003039050806116ed57600084116116e257600080fd5b50829004905061061b565b8084116116f957600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60008060008360020b1261177d578260020b611785565b8260020b6000035b9050620d89e88111156117c3576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166117d757600160801b6117e9565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561181d576ffff97272373d413259a46990580e213a0260801c5b600482161561183c576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561185b576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561187a576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611899576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156118b8576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156118d7576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156118f7576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611917576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611937576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611957576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611977576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611997576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156119b7576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156119d7576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156119f8576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611a18576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611a37576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611a54576b048a170391f7dc42444e8fa20260801c5b60008460020b1315611a6f578060001981611a6b57fe5b0490505b600160201b810615611a82576001611a85565b60005b60ff16602082901c0192505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611acd5760008555611b13565b82601f10611ae657805160ff1916838001178555611b13565b82800160010185558215611b13579182015b82811115611b13578251825591602001919060010190611af8565b50611b1f929150611b23565b5090565b5b80821115611b1f5760008155600101611b2456fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a
0x60806040523480156200001157600080fd5b50604080518082018252600781526621aa1021b63ab160c91b60208083019182528351808501909452600484526321a62aa160e11b9084015281519192916200005d91600391620002e2565b50805162000073906004906020840190620002e2565b50506005805460ff1916601217905550620000a46200009162000168565b6b204fce5e3e250261100000006200016c565b604051620000b29062000377565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b5060058054610100600160a81b0319166101006001600160a01b039384168102919091179182905590041663f2fde38b6200010962000168565b6040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156200014957600080fd5b505af11580156200015e573d6000803e3d6000fd5b505050506200039c565b3390565b6001600160a01b038216620001c8576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620001d6600083836200027b565b620001f2816002546200028060201b62000a151790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200022591839062000a1562000280821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b600082820183811015620002db576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200031a576000855562000365565b82601f106200033557805160ff191683800117855562000365565b8280016001018555821562000365579182015b828111156200036557825182559160200191906001019062000348565b506200037392915062000385565b5090565b610769806200203583390190565b5b8082111562000373576000815560010162000386565b611c8980620003ac6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063919f06b0116100a2578063a457c2d711610071578063a457c2d71461044b578063a9059cbb14610477578063cb484734146104a3578063dd62ed3e146104ab578063eaf4b3aa146104d957610116565b8063919f06b01461035b57806395d89b41146104005780639759164a146104085780639d40a7541461042c57610116565b8063313ce567116100e9578063313ce56714610228578063395093511461024657806342966c681461027257806351b878a11461029157806370a082311461033557610116565b806306fdde031461011b578063095ea7b31461019857806318160ddd146101d857806323b872dd146101f2575b600080fd5b6101236104e1565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c4600480360360408110156101ae57600080fd5b506001600160a01b038135169060200135610577565b604080519115158252519081900360200190f35b6101e0610594565b60408051918252519081900360200190f35b6101c46004803603606081101561020857600080fd5b506001600160a01b0381358116916020810135909116906040013561059a565b610230610622565b6040805160ff9092168252519081900360200190f35b6101c46004803603604081101561025c57600080fd5b506001600160a01b03813516906020013561062b565b61028f6004803603602081101561028857600080fd5b5035610679565b005b61028f600480360360208110156102a757600080fd5b810190602081018135600160201b8111156102c157600080fd5b8201836020820111156102d357600080fd5b803590602001918460018302840111600160201b831117156102f457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061068d945050505050565b6101e06004803603602081101561034b57600080fd5b50356001600160a01b03166107d8565b6103786004803603602081101561037157600080fd5b50356107f3565b60405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103c45781810151838201526020016103ac565b50505050905090810190601f1680156103f15780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6101236108b8565b610410610919565b604080516001600160a01b039092168252519081900360200190f35b61043461092d565b6040805161ffff9092168252519081900360200190f35b6101c46004803603604081101561046157600080fd5b506001600160a01b038135169060200135610933565b6101c46004803603604081101561048d57600080fd5b506001600160a01b03813516906020013561099b565b6101e06109af565b6101e0600480360360408110156104c157600080fd5b506001600160a01b03813581169160200135166109e4565b6101e0610a0f565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b5050505050905090565b600061058b610584610a6f565b8484610a73565b50600192915050565b60025490565b60006105a7848484610b5f565b610617846105b3610a6f565b61061285604051806060016040528060288152602001611bc6602891396001600160a01b038a166000908152600160205260408120906105f1610a6f565b6001600160a01b031681526020810191909152604001600020549190610cba565b610a73565b5060015b9392505050565b60055460ff1690565b600061058b610638610a6f565b846106128560016000610649610a6f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610a15565b61068a610684610a6f565b82610d51565b50565b6106a5610698610a6f565b6106a06109af565b610d51565b600660405180604001604052806106ba610a6f565b6001600160a01b0390811682526020918201859052835460018082018655600095865294839020845160029092020180546001600160a01b031916919092161781558282015180519394919361071893928501929190910190611a97565b505050610723610a6f565b6001600160a01b03167faf867aeef278e066baeaab38bda34a1f9aa1c72a4ff6f314a6afa3376a49c485826001600680549050036040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561079a578181015183820152602001610782565b50505050905090810190601f1680156107c75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250565b6001600160a01b031660009081526020819052604090205490565b6006818154811061080357600080fd5b600091825260209182902060029182020180546001808301805460408051601f600019958416156101000295909501909216969096049283018790048702810187019095528185526001600160a01b03909216955091939091908301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905082565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561056d5780601f106105425761010080835404028352916020019161056d565b60055461010090046001600160a01b031681565b61012c81565b600061058b610940610a6f565b8461061285604051806060016040528060258152602001611c58602591396001600061096a610a6f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610cba565b600061058b6109a8610a6f565b8484610b5f565b6000604b60621b6109c66109c1610e4d565b610ef1565b6109ce610622565b60ff16600a0a8202816109dd57fe5b0491505090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60065490565b60008282018381101561061b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6001600160a01b038316610ab85760405162461bcd60e51b8152600401808060200182810382526024815260200180611c346024913960400191505060405180910390fd5b6001600160a01b038216610afd5760405162461bcd60e51b8152600401808060200182810382526022815260200180611b7e6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610ba45760405162461bcd60e51b8152600401808060200182810382526025815260200180611c0f6025913960400191505060405180910390fd5b6001600160a01b038216610be95760405162461bcd60e51b8152600401808060200182810382526023815260200180611b396023913960400191505060405180910390fd5b610bf483838361106d565b610c3181604051806060016040528060268152602001611ba0602691396001600160a01b0386166000908152602081905260409020549190610cba565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610c609082610a15565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610d495760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d0e578181015183820152602001610cf6565b50505050905090810190601f168015610d3b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216610d965760405162461bcd60e51b8152600401808060200182810382526021815260200180611bee6021913960400191505060405180910390fd5b610da28260008361106d565b610ddf81604051806060016040528060228152602001611b5c602291396001600160a01b0385166000908152602081905260409020549190610cba565b6001600160a01b038316600090815260208190526040902055600254610e059082611072565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000808073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23010610e875773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc230610e9e565b3073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b604080516060810182526001600160a01b03808516825283166020820152612710918101919091529193509150610ee9731f98431c8ad98523631ae4a59f267346ea31f984826110cf565b935050505090565b600080610f128373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26111b3565b905060007388e6a0c2ddd26feeb64f039a2c41296fcb3f56406001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6357600080fd5b505afa158015610f77573d6000803e3d6000fd5b505050506040513d6020811015610f8d57600080fd5b50516040805163d21220a760e01b815290519192506000917388e6a0c2ddd26feeb64f039a2c41296fcb3f56409163d21220a7916004808301926020929190829003018186803b158015610fe057600080fd5b505afa158015610ff4573d6000803e3d6000fd5b505050506040513d602081101561100a57600080fd5b5051905060006110597388e6a0c2ddd26feeb64f039a2c41296fcb3f56406001600160a01b03851673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146110525784611054565b835b6111b3565b600160601b94029390930495945050505050565b505050565b6000828211156110c9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600081602001516001600160a01b031682600001516001600160a01b0316106110f757600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b600080836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ef57600080fd5b505afa158015611203573d6000803e3d6000fd5b505050506040513d602081101561121957600080fd5b505160408051630dfe168160e01b815290519192506000916001600160a01b03871691630dfe1681916004808301926020929190829003018186803b15801561126157600080fd5b505afa158015611275573d6000803e3d6000fd5b505050506040513d602081101561128b57600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b1580156112cf57600080fd5b505afa1580156112e3573d6000803e3d6000fd5b505050506040513d60208110156112f957600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0385169163313ce567916004808301926020929190829003018186803b15801561134157600080fd5b505afa158015611355573d6000803e3d6000fd5b505050506040513d602081101561136b57600080fd5b50519050600061137a87611426565b905060006113966001600160a01b03831680600160601b6116b7565b90506000876001600160a01b0316866001600160a01b0316146113c65781600160c01b816113c057fe5b046113c8565b815b9050876001600160a01b0316866001600160a01b031614611400578460ff16600a0a8460ff16600a0a8202816113fa57fe5b04611419565b8360ff16600a0a8560ff16600a0a82028161141757fe5b045b9998505050505050505050565b6040805160028082526060820183526000928392919060208301908036833701905050905061012c8160008151811061145b57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061148457fe5b63ffffffff90921660209283029190910182015260405163883bdbfd60e01b8152600481018281528351602483015283516000936001600160a01b0388169363883bdbfd938793909283926044019185820191028083838b5b838110156114f55781810151838201526020016114dd565b505050509050019250505060006040518083038186803b15801561151857600080fd5b505afa15801561152c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561155557600080fd5b8101908080516040519392919084600160201b82111561157457600080fd5b90830190602082018581111561158957600080fd5b82518660208202830111600160201b821117156115a557600080fd5b82525081516020918201928201910280838360005b838110156115d25781810151838201526020016115ba565b5050505090500160405260200180516040519392919084600160201b8211156115fa57600080fd5b90830190602082018581111561160f57600080fd5b82518660208202830111600160201b8211171561162b57600080fd5b82525081516020918201928201910280838360005b83811015611658578181015183820152602001611640565b505050509050016040525050505090506116af61012c63ffffffff168260008151811061168157fe5b60200260200101518360018151811061169657fe5b60200260200101510360060b816116a957fe5b05611766565b949350505050565b60008080600019858709868602925082811090839003039050806116ed57600084116116e257600080fd5b50829004905061061b565b8084116116f957600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60008060008360020b1261177d578260020b611785565b8260020b6000035b9050620d89e88111156117c3576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166117d757600160801b6117e9565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561181d576ffff97272373d413259a46990580e213a0260801c5b600482161561183c576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561185b576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561187a576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611899576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156118b8576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156118d7576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156118f7576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611917576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611937576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611957576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611977576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611997576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156119b7576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156119d7576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156119f8576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611a18576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611a37576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611a54576b048a170391f7dc42444e8fa20260801c5b60008460020b1315611a6f578060001981611a6b57fe5b0490505b600160201b810615611a82576001611a85565b60005b60ff16602082901c0192505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611acd5760008555611b13565b82601f10611ae657805160ff1916838001178555611b13565b82800160010185558215611b13579182015b82811115611b13578251825591602001919060010190611af8565b50611b1f929150611b23565b5090565b5b80821115611b1f5760008155600101611b2456fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a608060405234801561001057600080fd5b50600061001b610094565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35042600155600380546001600160a01b03191673c36442b4a4522e871399cd717abdd847ab11fe88179055610098565b3390565b6106c2806100a76000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146100db5780639621d7c9146100f0578063b17acdcd146100f8578063de38cf501461010b578063f2fde38b1461011e57610093565b80631be8994114610098578063325a19f1146100b65780636198e339146100be578063715018a6146100d3575b600080fd5b6100a0610131565b6040516100ad9190610666565b60405180910390f35b6100a0610137565b6100d16100cc3660046105b0565b61013d565b005b6100d161021f565b6100e36102cb565b6040516100ad91906105eb565b6100e36102da565b6100d16101063660046105b0565b6102e9565b6100d16101193660046105b0565b61040f565b6100d161012c366004610582565b61047c565b60025481565b60015481565b61014561057e565b6001600160a01b03166101566102cb565b6001600160a01b03161461019f576040805162461bcd60e51b81526020600482018190526024820152600080516020610696833981519152604482015290519081900360640190fd5b6002546001540142116101b157600080fd5b6003546001600160a01b03166323b872dd306101cb6102cb565b846040518463ffffffff1660e01b81526004016101ea939291906105ff565b600060405180830381600087803b15801561020457600080fd5b505af1158015610218573d6000803e3d6000fd5b5050505050565b61022761057e565b6001600160a01b03166102386102cb565b6001600160a01b031614610281576040805162461bcd60e51b81526020600482018190526024820152600080516020610696833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6003546001600160a01b031681565b6102f161057e565b6001600160a01b03166103026102cb565b6001600160a01b03161461034b576040805162461bcd60e51b81526020600482018190526024820152600080516020610696833981519152604482015290519081900360640190fd5b60035460408051608081019091528281526001600160a01b039091169063fc6f7865906020810161037a6102cb565b6001600160a01b031681526001600160801b0360208201819052604091820152516001600160e01b031960e084901b1681526103b99190600401610623565b6040805180830381600087803b1580156103d257600080fd5b505af11580156103e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040a91906105c8565b505050565b61041761057e565b6001600160a01b03166104286102cb565b6001600160a01b031614610471576040805162461bcd60e51b81526020600482018190526024820152600080516020610696833981519152604482015290519081900360640190fd5b600280549091019055565b61048461057e565b6001600160a01b03166104956102cb565b6001600160a01b0316146104de576040805162461bcd60e51b81526020600482018190526024820152600080516020610696833981519152604482015290519081900360640190fd5b6001600160a01b0381166105235760405162461bcd60e51b81526004018080602001828103825260268152602001806106706026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600060208284031215610593578081fd5b81356001600160a01b03811681146105a9578182fd5b9392505050565b6000602082840312156105c1578081fd5b5035919050565b600080604083850312156105da578081fd5b505080516020909101519092909150565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b9081526020019056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a164736f6c6343000706000a