60806040526040518060400160405280600581526020017f4576656e740000000000000000000000000000000000000000000000000000008152505f908161004791906103bf565b5060405180602001604052805f8152506001908161006591906103bf565b505f600355348015610075575f80fd5b503360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180606001604052806040518060400160405280601a81526020017f2434342c30303020696e204e465420436f6c6c656374696f6e73000000000000815250815260200160405180602001604052805f8152508152602001604051806060016040528060228152602001611e0e6022913981525060045f8081526020019081526020015f205f820151815f01908161015091906103bf565b50602082015181600101908161016691906103bf565b50604082015181600201908161017c91906103bf565b5090505061048e565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061020057607f821691505b602082108103610213576102126101bc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261023a565b61027f868361023a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6102c36102be6102b984610297565b6102a0565b610297565b9050919050565b5f819050919050565b6102dc836102a9565b6102f06102e8826102ca565b848454610246565b825550505050565b5f90565b6103046102f8565b61030f8184846102d3565b505050565b5b81811015610332576103275f826102fc565b600181019050610315565b5050565b601f8211156103775761034881610219565b6103518461022b565b81016020851015610360578190505b61037461036c8561022b565b830182610314565b50505b505050565b5f82821c905092915050565b5f6103975f198460080261037c565b1980831691505092915050565b5f6103af8383610388565b9150826002028217905092915050565b6103c882610185565b67ffffffffffffffff8111156103e1576103e061018f565b5b6103eb82546101e9565b6103f6828285610336565b5f60209050601f831160018114610427575f8415610415578287015190505b61041f85826103a4565b865550610486565b601f19841661043586610219565b5f5b8281101561045c57848901518255600182019150602085019450602081019050610437565b868310156104795784890151610475601f891682610388565b8355505b6001600288020188555050505b505050505050565b6119738061049b5f395ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c8063729ad39e1161006f578063729ad39e1461017657806389a89002146101925780638da5cb5b146101b0578063902d55a5146101ce57806395d89b41146101ec578063f2fde38b1461020a576100a6565b8062fdd58e146100aa57806306fdde03146100da5780630e89341c146100f8578063156e29f6146101285780636914db6014610144575b5f80fd5b6100c460048036038101906100bf9190610f84565b610226565b6040516100d19190610fd1565b60405180910390f35b6100e26102ea565b6040516100ef919061105a565b60405180910390f35b610112600480360381019061010d919061107a565b610375565b60405161011f919061105a565b60405180910390f35b610142600480360381019061013d91906110a5565b6105be565b005b61015e6004803603810190610159919061107a565b61080e565b60405161016d939291906110f5565b60405180910390f35b610190600480360381019061018b91906111a0565b6109c6565b005b61019a610c94565b6040516101a79190610fd1565b60405180910390f35b6101b8610c98565b6040516101c591906111fa565b60405180910390f35b6101d6610cbd565b6040516101e39190610fd1565b60405180910390f35b6101f4610cc7565b604051610201919061105a565b60405180910390f35b610224600480360381019061021f9190611213565b610d53565b005b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028c90611288565b60405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f80546102f6906112d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610322906112d3565b801561036d5780601f106103445761010080835404028352916020019161036d565b820191905f5260205f20905b81548152906001019060200180831161035057829003601f168201915b505050505081565b60605f82146103b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b09061134d565b60405180910390fd5b5f60045f8481526020019081526020015f206040518060600160405290815f820180546103e5906112d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610411906112d3565b801561045c5780601f106104335761010080835404028352916020019161045c565b820191905f5260205f20905b81548152906001019060200180831161043f57829003601f168201915b50505050508152602001600182018054610475906112d3565b80601f01602080910402602001604051908101604052809291908181526020018280546104a1906112d3565b80156104ec5780601f106104c3576101008083540402835291602001916104ec565b820191905f5260205f20905b8154815290600101906020018083116104cf57829003601f168201915b50505050508152602001600282018054610505906112d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610531906112d3565b801561057c5780601f106105535761010080835404028352916020019161057c565b820191905f5260205f20905b81548152906001019060200180831161055f57829003601f168201915b5050505050815250509050805f0151816020015182604001516040516020016105a793929190611517565b604051602081830303815290604052915050919050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610644906115c8565b60405180910390fd5b6509184e729c18816003546106629190611613565b11156106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069a90611690565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070890611288565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f82825461076c9190611613565b925050819055508060035f8282546107849190611613565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516108019291906116ae565b60405180910390a4505050565b6004602052805f5260405f205f91509050805f01805461082d906112d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610859906112d3565b80156108a45780601f1061087b576101008083540402835291602001916108a4565b820191905f5260205f20905b81548152906001019060200180831161088757829003601f168201915b5050505050908060010180546108b9906112d3565b80601f01602080910402602001604051908101604052809291908181526020018280546108e5906112d3565b80156109305780601f1061090757610100808354040283529160200191610930565b820191905f5260205f20905b81548152906001019060200180831161091357829003601f168201915b505050505090806002018054610945906112d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610971906112d3565b80156109bc5780601f10610993576101008083540402835291602001916109bc565b820191905f5260205f20905b81548152906001019060200180831161099f57829003601f168201915b5050505050905083565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4c906115c8565b60405180910390fd5b5f5b82829050811015610c8f575f610a6c82610e93565b90506509184e729c1881600354610a839190611613565b1115610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abb9061171f565b60405180910390fd5b8060055f868686818110610adb57610ada61173d565b5b9050602002016020810190610af09190611213565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8081526020019081526020015f205f828254610b469190611613565b925050819055508060035f828254610b5e9190611613565b92505081905550838383818110610b7857610b7761173d565b5b9050602002016020810190610b8d9190611213565b73ffffffffffffffffffffffffffffffffffffffff167fada993ad066837289fe186cd37227aa338d27519a8a1547472ecb9831486d2725f83604051610bd49291906116ae565b60405180910390a2838383818110610bef57610bee61173d565b5b9050602002016020810190610c049190611213565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f625f85604051610c799291906116ae565b60405180910390a4508080600101915050610a57565b505050565b5f81565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6509184e729c1881565b60018054610cd4906112d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d00906112d3565b8015610d4b5780601f10610d2257610100808354040283529160200191610d4b565b820191905f5260205f20905b815481529060010190602001808311610d2e57829003601f168201915b505050505081565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd9906115c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e47906117b4565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6001600a42600143610ea691906117d2565b403386604051602001610ebc9493929190611893565b604051602081830303815290604052805190602001205f1c610ede919061190d565b610ee89190611613565b9050919050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f2082610ef7565b9050919050565b610f3081610f16565b8114610f3a575f80fd5b50565b5f81359050610f4b81610f27565b92915050565b5f819050919050565b610f6381610f51565b8114610f6d575f80fd5b50565b5f81359050610f7e81610f5a565b92915050565b5f8060408385031215610f9a57610f99610eef565b5b5f610fa785828601610f3d565b9250506020610fb885828601610f70565b9150509250929050565b610fcb81610f51565b82525050565b5f602082019050610fe45f830184610fc2565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61102c82610fea565b6110368185610ff4565b9350611046818560208601611004565b61104f81611012565b840191505092915050565b5f6020820190508181035f8301526110728184611022565b905092915050565b5f6020828403121561108f5761108e610eef565b5b5f61109c84828501610f70565b91505092915050565b5f805f606084860312156110bc576110bb610eef565b5b5f6110c986828701610f3d565b93505060206110da86828701610f70565b92505060406110eb86828701610f70565b9150509250925092565b5f6060820190508181035f83015261110d8186611022565b905081810360208301526111218185611022565b905081810360408301526111358184611022565b9050949350505050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111605761115f61113f565b5b8235905067ffffffffffffffff81111561117d5761117c611143565b5b60208301915083602082028301111561119957611198611147565b5b9250929050565b5f80602083850312156111b6576111b5610eef565b5b5f83013567ffffffffffffffff8111156111d3576111d2610ef3565b5b6111df8582860161114b565b92509250509250929050565b6111f481610f16565b82525050565b5f60208201905061120d5f8301846111eb565b92915050565b5f6020828403121561122857611227610eef565b5b5f61123584828501610f3d565b91505092915050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f611272600f83610ff4565b915061127d8261123e565b602082019050919050565b5f6020820190508181035f83015261129f81611266565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806112ea57607f821691505b6020821081036112fd576112fc6112a6565b5b50919050565b7f546f6b656e204944206e6f7420666f756e6400000000000000000000000000005f82015250565b5f611337601283610ff4565b915061134282611303565b602082019050919050565b5f6020820190508181035f8301526113648161132b565b9050919050565b5f81905092915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c00000000005f82015250565b5f6113a9601b8361136b565b91506113b482611375565b601b82019050919050565b7f7b226e616d65223a2200000000000000000000000000000000000000000000005f82015250565b5f6113f360098361136b565b91506113fe826113bf565b600982019050919050565b5f61141382610fea565b61141d818561136b565b935061142d818560208601611004565b80840191505092915050565b7f222c20226465736372697074696f6e223a2200000000000000000000000000005f82015250565b5f61146d60128361136b565b915061147882611439565b601282019050919050565b7f222c2022696d616765223a2200000000000000000000000000000000000000005f82015250565b5f6114b7600c8361136b565b91506114c282611483565b600c82019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f61150160028361136b565b915061150c826114cd565b600282019050919050565b5f6115218261139d565b915061152c826113e7565b91506115388286611409565b915061154382611461565b915061154f8285611409565b915061155a826114ab565b91506115668284611409565b9150611571826114f5565b9150819050949350505050565b7f4e6f7420746865206f776e6572000000000000000000000000000000000000005f82015250565b5f6115b2600d83610ff4565b91506115bd8261157e565b602082019050919050565b5f6020820190508181035f8301526115df816115a6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61161d82610f51565b915061162883610f51565b92508282019050808211156116405761163f6115e6565b5b92915050565b7f4d617820737570706c79207265616368656400000000000000000000000000005f82015250565b5f61167a601283610ff4565b915061168582611646565b602082019050919050565b5f6020820190508181035f8301526116a78161166e565b9050919050565b5f6040820190506116c15f830185610fc2565b6116ce6020830184610fc2565b9392505050565b7f4e6f7420656e6f756768204e46547320617661696c61626c65000000000000005f82015250565b5f611709601983610ff4565b9150611714826116d5565b602082019050919050565b5f6020820190508181035f830152611736816116fd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f61179e601d83610ff4565b91506117a98261176a565b602082019050919050565b5f6020820190508181035f8301526117cb81611792565b9050919050565b5f6117dc82610f51565b91506117e783610f51565b92508282039050818111156117ff576117fe6115e6565b5b92915050565b5f819050919050565b61181f61181a82610f51565b611805565b82525050565b5f819050919050565b5f819050919050565b61184861184382611825565b61182e565b82525050565b5f8160601b9050919050565b5f6118648261184e565b9050919050565b5f6118758261185a565b9050919050565b61188d61188882610f16565b61186b565b82525050565b5f61189e828761180e565b6020820191506118ae8286611837565b6020820191506118be828561187c565b6014820191506118ce828461180e565b60208201915081905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61191782610f51565b915061192283610f51565b925082611932576119316118e0565b5b82820690509291505056fea2646970667358221220073ce82cf3c4442061291120bfd92388a19084e883ed6b3288dc130d27bda86f64736f6c6343000819003368747470733a2f2f692e6962622e636f2f513633783953642f696d6167652e706e67