6080604052635ec062606000556040805190810160405280600a81526020017f535441424c452042415400000000000000000000000000000000000000000000815250600190805190602001906200005992919062000195565b506040805190810160405280600381526020017f424154000000000000000000000000000000000000000000000000000000000081525060029080519060200190620000a792919062000195565b50600a6003556001600455600a6005556014600655600a600755678ac7230489e80000600f5560006010556000601155348015620000e457600080fd5b50735138240e96360ad64010c27eb0c685a8b2ede4f2600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d8775f648430679a709e98d2b0cb6250d2887ef601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000244565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001d857805160ff191683800117855562000209565b8280016001018555821562000209579182015b8281111562000208578251825591602001919060010190620001eb565b5b5090506200021891906200021c565b5090565b6200024191905b808211156200023d57600081600090555060010162000223565b5090565b90565b6120bd80620002546000396000f300608060405260043610610148576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461014d57806306fdde03146101a457806310d0ffdd1461023457806318160ddd14610275578063313ce567146102a057806332b74ec7146102d15780633ccfd60b146103525780634b7503341461036957806356d399e81461039457806361a84823146103bf578063688abbf7146103ea57806370a082311461042d5780637deb6025146104845780638620410b146104e557806391c05b0b14610510578063949e8acd1461055157806395d89b411461057c578063a9059cbb1461060c578063ad88000414610671578063befc3e2b146106b2578063e4849b32146106dd578063e9fad8ee1461070a578063ee2ac05f14610721578063f11745df1461074c578063fdb5a03e14610777575b600080fd5b34801561015957600080fd5b5061018e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078e565b6040518082815260200191505060405180910390f35b3480156101b057600080fd5b506101b9610830565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f95780820151818401526020810190506101de565b50505050905090810190601f1680156102265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024057600080fd5b5061025f600480360381019080803590602001909291905050506108ce565b6040518082815260200191505060405180910390f35b34801561028157600080fd5b5061028a610901565b6040518082815260200191505060405180910390f35b3480156102ac57600080fd5b506102b561090b565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102dd57600080fd5b5061033c60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610910565b6040518082815260200191505060405180910390f35b34801561035e57600080fd5b5061036761092f565b005b34801561037557600080fd5b5061037e610b8d565b6040518082815260200191505060405180910390f35b3480156103a057600080fd5b506103a9610bcb565b6040518082815260200191505060405180910390f35b3480156103cb57600080fd5b506103d4610bd1565b6040518082815260200191505060405180910390f35b3480156103f657600080fd5b50610417600480360381019080803515159060200190929190505050610cd0565b6040518082815260200191505060405180910390f35b34801561043957600080fd5b5061046e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3c565b6040518082815260200191505060405180910390f35b34801561049057600080fd5b506104cf60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d85565b6040518082815260200191505060405180910390f35b3480156104f157600080fd5b506104fa610da3565b6040518082815260200191505060405180910390f35b34801561051c57600080fd5b5061053b60048036038101908080359060200190929190505050610de1565b6040518082815260200191505060405180910390f35b34801561055d57600080fd5b50610566610ef0565b6040518082815260200191505060405180910390f35b34801561058857600080fd5b50610591610f05565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105d15780820151818401526020810190506105b6565b50505050905090810190601f1680156105fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061857600080fd5b50610657600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fa3565b604051808215151515815260200191505060405180910390f35b34801561067d57600080fd5b5061069c600480360381019080803590602001909291905050506112bc565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b506106c7611300565b6040518082815260200191505060405180910390f35b3480156106e957600080fd5b5061070860048036038101908080359060200190929190505050611347565b005b34801561071657600080fd5b5061071f6116d1565b005b34801561072d57600080fd5b50610736611738565b6040518082815260200191505060405180910390f35b34801561075857600080fd5b5061076161173e565b6040518082815260200191505060405180910390f35b34801561078357600080fd5b5061078c611744565b005b600068010000000000000000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e54020381151561082857fe5b049050919050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c65780601f1061089b576101008083540402835291602001916108c6565b820191906000526020600020905b8154815290600101906020018083116108a957829003601f168201915b505050505081565b60008060006108e96108e2856003546118b9565b60646118f1565b91506108f58483611907565b90508092505050919050565b6000600d54905090565b601281565b600061091b84611920565b610926828486611ad2565b90509392505050565b600080600061093e6001610cd0565b11151561094a57600080fd5b3391506109576000610cd0565b9050680100000000000000008102600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610aff57600080fd5b505af1158015610b13573d6000803e3d6000fd5b505050506040513d6020811015610b2957600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b600080600080670de0b6b3a76400009250610bb4610bad846005546118b9565b60646118f1565b9150610bc08383611907565b905080935050505090565b600f5481565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610c9057600080fd5b505af1158015610ca4573d6000803e3d6000fd5b505050506040513d6020811015610cba57600080fd5b8101908080519060200190929190505050905090565b60008033905082610ce957610ce48161078e565b610d34565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d328261078e565b015b915050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610d9083611920565b610d9b823385611ad2565b905092915050565b600080600080670de0b6b3a76400009250610dca610dc3846003546118b9565b60646118f1565b9150610dd68383612075565b905080935050505090565b60008082111515610e5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6d757374206265206120706f7369746976652076616c7565000000000000000081525060200191505060405180910390fd5b610e6382611920565b81601160008282540192505081905550610e97600e54600d54680100000000000000008502811515610e9157fe5b04612075565b600e819055503373ffffffffffffffffffffffffffffffffffffffff167fd14b763af9e91e53a0578778058d700fec4f12297440083843749bb37d806064836040518082815260200191505060405180910390a2919050565b600080339050610eff81610d3c565b91505090565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f9b5780601f10610f7057610100808354040283529160200191610f9b565b820191906000526020600020905b815481529060010190602001808311610f7e57829003601f168201915b505050505081565b600080600080600080610fb4610ef0565b111515610fc057600080fd5b339350600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054861115151561101157600080fd5b600061101d6001610cd0565b111561102c5761102b61092f565b5b61104261103b876004546118b9565b60646118f1565b925061104e8684611907565b915082905061105f600d5484611907565b600d819055506110ae600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611907565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061113a600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612075565b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555085600e5402600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600e5402600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611243600e54600d5468010000000000000000840281151561123d57fe5b04612075565b600e819055508673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600194505050505092915050565b6000806000600d5484111515156112d257600080fd5b6112e86112e1856005546118b9565b60646118f1565b91506112f48483611907565b90508092505050919050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b600080600080600080600061135a610ef0565b11151561136657600080fd5b339550600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487111515156113b757600080fd5b6113cd6113c6886005546118b9565b60646118f1565b94506113e56113de866007546118b9565b60646118f1565b93506113f18585611907565b92506113fd8786611907565b915061146a600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485612075565b600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114db600d5488611907565b600d8190555061152a600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488611907565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555068010000000000000000820287600e540201905080600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000600d541115611604576115fd600e54600d546801000000000000000086028115156115f757fe5b04612075565b600e819055505b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a38573ffffffffffffffffffffffffffffffffffffffff167f723391258f051422e0be75f0bbcc5c94947b440ae6162c87b3efb5fecde315e588844260405180848152602001838152602001828152602001935050505060405180910390a250505050505050565b600080339150600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561172c5761172b81611347565b5b61173461092f565b5050565b60115481565b60105481565b6000806000806117546001610cd0565b11151561176057600080fd5b33925061176d6000610cd0565b9150680100000000000000008202600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054820191506000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061185c60008484611ad2565b90508273ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588383604051808381526020018281526020019250505060405180910390a2505050565b6000808314156118cc57600090506118eb565b81830290508183828115156118dd57fe5b041415156118e757fe5b8090505b92915050565b600081838115156118fe57fe5b04905092915050565b600082821115151561191557fe5b818303905092915050565b60011515601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b505050506040513d6020811015611a4757600080fd5b81019080805190602001909291905050501515141515611acf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f7472616e73666572206d7573742073756363656564000000000000000000000081525060200191505060405180910390fd5b50565b6000806000806000806000806000544210151515611aef57600080fd5b6000611af9611300565b1415611b12576010600081548092919060010191905055505b88600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611b75611b6e8a6003546118b9565b60646118f1565b9650611b8d611b86886007546118b9565b60646118f1565b9550611ba5611b9e886006546118b9565b60646118f1565b9450611bba87611bb58789612075565b611907565b9350611bc68988611907565b92506801000000000000000084029150600083118015611bf25750600d54611bf084600d54612075565b115b1515611bfd57600080fd5b611c68600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487612075565b600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614158015611d3657508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614155b8015611d835750600f54600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611e1957611dd1600a60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612075565b600a60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e34565b611e238486612075565b935068010000000000000000840291505b6000600d541115611e9f57611e4b600d5484612075565b600d81905550600d54680100000000000000008502811515611e6957fe5b04600e60008282540192505081905550600d54680100000000000000008502811515611e9157fe5b048302820382039150611ea7565b82600d819055505b611ef0600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612075565b600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508183600e540203905080600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fff69b2ba8f4ef8248f8c375ba3916c770604b215557acdd4e8387a4dd5e7de868b864260405180848152602001838152602001828152602001935050505060405180910390a3829750505050505050509392505050565b6000818301905082811015151561208857fe5b809050929150505600a165627a7a723058205403781ce8806f00a7cda3faba63ed3cab253e9037141873a0ab03e43d81d54b0029