0x6080604052633b9aca00600555348015610017575f80fd5b50604051611aed380380611aed833981810160405281019061003991906101ab565b6040518060400160405280600a81526020017f4d61676e6120436f696e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d4743000000000000000000000000000000000000000000000000000000000081525081600390816100b49190610410565b5080600490816100c49190610410565b5050503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506104df565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61017a82610151565b9050919050565b61018a81610170565b8114610194575f80fd5b50565b5f815190506101a581610181565b92915050565b5f602082840312156101c0576101bf61014d565b5b5f6101cd84828501610197565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061025157607f821691505b6020821081036102645761026361020d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261028b565b6102d0868361028b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61031461030f61030a846102e8565b6102f1565b6102e8565b9050919050565b5f819050919050565b61032d836102fa565b6103416103398261031b565b848454610297565b825550505050565b5f90565b610355610349565b610360818484610324565b505050565b5b81811015610383576103785f8261034d565b600181019050610366565b5050565b601f8211156103c8576103998161026a565b6103a28461027c565b810160208510156103b1578190505b6103c56103bd8561027c565b830182610365565b50505b505050565b5f82821c905092915050565b5f6103e85f19846008026103cd565b1980831691505092915050565b5f61040083836103d9565b9150826002028217905092915050565b610419826101d6565b67ffffffffffffffff811115610432576104316101e0565b5b61043c825461023a565b610447828285610387565b5f60209050601f831160018114610478575f8415610466578287015190505b61047085826103f5565b8655506104d7565b601f1984166104868661026a565b5f5b828110156104ad57848901518255600182019150602085019450602081019050610488565b868310156104ca57848901516104c6601f8916826103d9565b8355505b6001600288020188555050505b505050505050565b611601806104ec5f395ff3fe6080604052600436106100f6575f3560e01c806348c54b9d116100895780638da5cb5b116100585780638da5cb5b146102ff57806395d89b4114610329578063a9059cbb14610353578063dd62ed3e1461038f57610105565b806348c54b9d1461026757806370a0823114610271578063829f5edf146102ad5780638676fcd2146102d757610105565b80632c4e722e116100c55780632c4e722e146101d5578063313ce567146101ff57806334fcf437146102295780633ccfd60b1461025157610105565b806306fdde0314610109578063095ea7b31461013357806318160ddd1461016f57806323b872dd1461019957610105565b36610105576101036103cb565b005b5f80fd5b348015610114575f80fd5b5061011d61042b565b60405161012a9190611035565b60405180910390f35b34801561013e575f80fd5b50610159600480360381019061015491906110e6565b6104bb565b604051610166919061113e565b60405180910390f35b34801561017a575f80fd5b506101836104dd565b6040516101909190611166565b60405180910390f35b3480156101a4575f80fd5b506101bf60048036038101906101ba919061117f565b6104e6565b6040516101cc919061113e565b60405180910390f35b3480156101e0575f80fd5b506101e9610514565b6040516101f69190611166565b60405180910390f35b34801561020a575f80fd5b5061021361051a565b60405161022091906111ea565b60405180910390f35b348015610234575f80fd5b5061024f600480360381019061024a9190611203565b610522565b005b34801561025c575f80fd5b506102656105bb565b005b61026f6103cb565b005b34801561027c575f80fd5b506102976004803603810190610292919061122e565b61072e565b6040516102a49190611166565b60405180910390f35b3480156102b8575f80fd5b506102c1610773565b6040516102ce9190611268565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f8919061122e565b610798565b005b34801561030a575f80fd5b5061031361086a565b6040516103209190611268565b60405180910390f35b348015610334575f80fd5b5061033d61088f565b60405161034a9190611035565b60405180910390f35b34801561035e575f80fd5b50610379600480360381019061037491906110e6565b61091f565b604051610386919061113e565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611281565b610941565b6040516103c29190611166565b60405180910390f35b5f341161040d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490611309565b60405180910390fd5b5f6005543461041c9190611354565b905061042833826109c3565b50565b60606003805461043a906113c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610466906113c2565b80156104b15780601f10610488576101008083540402835291602001916104b1565b820191905f5260205f20905b81548152906001019060200180831161049457829003601f168201915b5050505050905090565b5f806104c5610a42565b90506104d2818585610a49565b600191505092915050565b5f600254905090565b5f806104f0610a42565b90506104fd858285610a5b565b610508858585610aed565b60019150509392505050565b60055481565b5f6012905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a890611462565b60405180910390fd5b8060058190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e85760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf336040518263ffffffff1660e01b81526004016106699190611268565b602060405180830381865afa158015610684573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a891906114aa565b6106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de90611545565b60405180910390fd5b5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561072b573d5f803e3d5ffd5b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081e90611462565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461089e906113c2565b80601f01602080910402602001604051908101604052809291908181526020018280546108ca906113c2565b80156109155780601f106108ec57610100808354040283529160200191610915565b820191905f5260205f20905b8154815290600101906020018083116108f857829003601f168201915b5050505050905090565b5f80610929610a42565b9050610936818585610aed565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a33575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a2a9190611268565b60405180910390fd5b610a3e5f8383610bdd565b5050565b5f33905090565b610a568383836001610df6565b505050565b5f610a668484610941565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ae75781811015610ad8578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610acf93929190611563565b60405180910390fd5b610ae684848484035f610df6565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b5d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610b549190611268565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bcd575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610bc49190611268565b60405180910390fd5b610bd8838383610bdd565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c2d578060025f828254610c219190611598565b92505081905550610cfb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610cb6578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cad93929190611563565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d42578060025f8282540392505081905550610d8c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610de99190611166565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e66575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610e5d9190611268565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ed6575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610ecd9190611268565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610fbf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fb69190611166565b60405180910390a35b50505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61100782610fc5565b6110118185610fcf565b9350611021818560208601610fdf565b61102a81610fed565b840191505092915050565b5f6020820190508181035f83015261104d8184610ffd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61108282611059565b9050919050565b61109281611078565b811461109c575f80fd5b50565b5f813590506110ad81611089565b92915050565b5f819050919050565b6110c5816110b3565b81146110cf575f80fd5b50565b5f813590506110e0816110bc565b92915050565b5f80604083850312156110fc576110fb611055565b5b5f6111098582860161109f565b925050602061111a858286016110d2565b9150509250929050565b5f8115159050919050565b61113881611124565b82525050565b5f6020820190506111515f83018461112f565b92915050565b611160816110b3565b82525050565b5f6020820190506111795f830184611157565b92915050565b5f805f6060848603121561119657611195611055565b5b5f6111a38682870161109f565b93505060206111b48682870161109f565b92505060406111c5868287016110d2565b9150509250925092565b5f60ff82169050919050565b6111e4816111cf565b82525050565b5f6020820190506111fd5f8301846111db565b92915050565b5f6020828403121561121857611217611055565b5b5f611225848285016110d2565b91505092915050565b5f6020828403121561124357611242611055565b5b5f6112508482850161109f565b91505092915050565b61126281611078565b82525050565b5f60208201905061127b5f830184611259565b92915050565b5f806040838503121561129757611296611055565b5b5f6112a48582860161109f565b92505060206112b58582860161109f565b9150509250929050565b7f596f75206e65656420746f2073656e6420736f6d6520455448000000000000005f82015250565b5f6112f3601983610fcf565b91506112fe826112bf565b602082019050919050565b5f6020820190508181035f830152611320816112e7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61135e826110b3565b9150611369836110b3565b9250828202611377816110b3565b9150828204841483151761138e5761138d611327565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806113d957607f821691505b6020821081036113ec576113eb611395565b5b50919050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61144c602183610fcf565b9150611457826113f2565b604082019050919050565b5f6020820190508181035f83015261147981611440565b9050919050565b61148981611124565b8114611493575f80fd5b50565b5f815190506114a481611480565b92915050565b5f602082840312156114bf576114be611055565b5b5f6114cc84828501611496565b91505092915050565b7f4e6f7420617574686f72697a6564206f72206e6f742077686974656c697374655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61152f602183610fcf565b915061153a826114d5565b604082019050919050565b5f6020820190508181035f83015261155c81611523565b9050919050565b5f6060820190506115765f830186611259565b6115836020830185611157565b6115906040830184611157565b949350505050565b5f6115a2826110b3565b91506115ad836110b3565b92508282019050808211156115c5576115c4611327565b5b9291505056fea2646970667358221220cbd57ae95636041a3012e4094689890c01232304f939c0e8cbe341a29dfb82f364736f6c6343000819003300000000000000000000000097b7a54ffda925a146a7e3bfc4cc01e2f8bfa7ea