0x60806040523480156200001157600080fd5b506040516200178f3803806200178f833981810160405281019062000037919062000260565b6040518060400160405280600c81526020017f5075626c696320546f6b656e0000000000000000000000000000000000000000815250600090816200007d919062000530565b506040518060400160405280600381526020017f50424c000000000000000000000000000000000000000000000000000000000081525060019081620000c4919062000530565b50505062000617565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200013682620000eb565b810181811067ffffffffffffffff82111715620001585762000157620000fc565b5b80604052505050565b60006200016d620000cd565b90506200017b82826200012b565b919050565b600067ffffffffffffffff8211156200019e576200019d620000fc565b5b620001a982620000eb565b9050602081019050919050565b60005b83811015620001d6578082015181840152602081019050620001b9565b60008484015250505050565b6000620001f9620001f38462000180565b62000161565b905082815260208101848484011115620002185762000217620000e6565b5b62000225848285620001b6565b509392505050565b600082601f830112620002455762000244620000e1565b5b815162000257848260208601620001e2565b91505092915050565b600080604083850312156200027a5762000279620000d7565b5b600083015167ffffffffffffffff8111156200029b576200029a620000dc565b5b620002a9858286016200022d565b925050602083015167ffffffffffffffff811115620002cd57620002cc620000dc565b5b620002db858286016200022d565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200033857607f821691505b6020821081036200034e576200034d620002f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000379565b620003c4868362000379565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004116200040b6200040584620003dc565b620003e6565b620003dc565b9050919050565b6000819050919050565b6200042d83620003f0565b620004456200043c8262000418565b84845462000386565b825550505050565b600090565b6200045c6200044d565b6200046981848462000422565b505050565b5b8181101562000491576200048560008262000452565b6001810190506200046f565b5050565b601f821115620004e057620004aa8162000354565b620004b58462000369565b81016020851015620004c5578190505b620004dd620004d48562000369565b8301826200046e565b50505b505050565b600082821c905092915050565b60006200050560001984600802620004e5565b1980831691505092915050565b6000620005208383620004f2565b9150826002028217905092915050565b6200053b82620002e5565b67ffffffffffffffff811115620005575762000556620000fc565b5b6200056382546200031f565b6200057082828562000495565b600060209050601f831160018114620005a8576000841562000593578287015190505b6200059f858262000512565b8655506200060f565b601f198416620005b88662000354565b60005b82811015620005e257848901518255600182019150602085019450602081019050620005bb565b86831015620006025784890151620005fe601f891682620004f2565b8355505b6001600288020188555050505b505050505050565b61116880620006276000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806370a082311161006657806370a082311461013457806395d89b4114610164578063a0712d6814610182578063a9059cbb1461019e578063dd62ed3e146101ce57610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a06101fe565b6040516100ad9190610bd7565b60405180910390f35b6100d060048036038101906100cb9190610c92565b61028c565b6040516100dd9190610ced565b60405180910390f35b6100ee6103ec565b6040516100fb9190610d17565b60405180910390f35b61011e60048036038101906101199190610d32565b6103f2565b60405161012b9190610ced565b60405180910390f35b61014e60048036038101906101499190610d85565b610753565b60405161015b9190610d17565b60405180910390f35b61016c61076b565b6040516101799190610bd7565b60405180910390f35b61019c60048036038101906101979190610db2565b6107f9565b005b6101b860048036038101906101b39190610c92565b610914565b6040516101c59190610ced565b60405180910390f35b6101e860048036038101906101e39190610ddf565b610b22565b6040516101f59190610d17565b60405180910390f35b6000805461020b90610e4e565b80601f016020809104026020016040519081016040528092919081815260200182805461023790610e4e565b80156102845780601f1061025957610100808354040283529160200191610284565b820191906000526020600020905b81548152906001019060200180831161026757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610ecb565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103da9190610d17565b60405180910390a36001905092915050565b60025481565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046d90610f37565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052c90610fa3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059b9061100f565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105f3919061105e565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106499190611092565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106ad9190610d17565b60405180910390a381600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610741919061105e565b92505081905550600190509392505050565b60036020528060005260406000206000915090505481565b6001805461077890610e4e565b80601f01602080910402602001604051908101604052809291908181526020018280546107a490610e4e565b80156107f15780601f106107c6576101008083540402835291602001916107f1565b820191906000526020600020905b8154815290600101906020018083116107d457829003601f168201915b505050505081565b6000811161083c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083390611112565b60405180910390fd5b806002600082825461084e9190611092565b9250508190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108a49190611092565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109099190610d17565b60405180910390a350565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f90610f37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe9061100f565b60405180910390fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a56919061105e565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610aac9190611092565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b109190610d17565b60405180910390a36001905092915050565b6004602052816000526040600020602052806000526040600020600091509150505481565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b81578082015181840152602081019050610b66565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ba982610b47565b610bb38185610b52565b9350610bc3818560208601610b63565b610bcc81610b8d565b840191505092915050565b60006020820190508181036000830152610bf18184610b9e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2982610bfe565b9050919050565b610c3981610c1e565b8114610c4457600080fd5b50565b600081359050610c5681610c30565b92915050565b6000819050919050565b610c6f81610c5c565b8114610c7a57600080fd5b50565b600081359050610c8c81610c66565b92915050565b60008060408385031215610ca957610ca8610bf9565b5b6000610cb785828601610c47565b9250506020610cc885828601610c7d565b9150509250929050565b60008115159050919050565b610ce781610cd2565b82525050565b6000602082019050610d026000830184610cde565b92915050565b610d1181610c5c565b82525050565b6000602082019050610d2c6000830184610d08565b92915050565b600080600060608486031215610d4b57610d4a610bf9565b5b6000610d5986828701610c47565b9350506020610d6a86828701610c47565b9250506040610d7b86828701610c7d565b9150509250925092565b600060208284031215610d9b57610d9a610bf9565b5b6000610da984828501610c47565b91505092915050565b600060208284031215610dc857610dc7610bf9565b5b6000610dd684828501610c7d565b91505092915050565b60008060408385031215610df657610df5610bf9565b5b6000610e0485828601610c47565b9250506020610e1585828601610c47565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e6657607f821691505b602082108103610e7957610e78610e1f565b5b50919050565b7f496e76616c6964207370656e6465720000000000000000000000000000000000600082015250565b6000610eb5600f83610b52565b9150610ec082610e7f565b602082019050919050565b60006020820190508181036000830152610ee481610ea8565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610f21601483610b52565b9150610f2c82610eeb565b602082019050919050565b60006020820190508181036000830152610f5081610f14565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000610f8d601683610b52565b9150610f9882610f57565b602082019050919050565b60006020820190508181036000830152610fbc81610f80565b9050919050565b7f496e76616c696420726563697069656e74000000000000000000000000000000600082015250565b6000610ff9601183610b52565b915061100482610fc3565b602082019050919050565b6000602082019050818103600083015261102881610fec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061106982610c5c565b915061107483610c5c565b925082820390508181111561108c5761108b61102f565b5b92915050565b600061109d82610c5c565b91506110a883610c5c565b92508282019050808211156110c0576110bf61102f565b5b92915050565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b60006110fc600e83610b52565b9150611107826110c6565b602082019050919050565b6000602082019050818103600083015261112b816110ef565b905091905056fea26469706673582212202828f8de5322a53cfd1355ccb7bb07937a0cbc7cee6e69d4c76ed50f9e842e1a64736f6c634300081200330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000