60806040526040518060400160405280600781526020017f4d79546f6b656e0000000000000000000000000000000000000000000000000081525060009081610048919061037b565b506040518060400160405280600481526020017f4d544b41000000000000000000000000000000000000000000000000000000008152506001908161008d919061037b565b506012600260006101000a81548160ff021916908360ff1602179055503480156100b657600080fd5b5060405161169838038061169883398181016040528101906100d8919061047e565b80600381905550600354600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550506104ab565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806101ac57607f821691505b6020821081036101bf576101be610165565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026102277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101ea565b61023186836101ea565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061027861027361026e84610249565b610253565b610249565b9050919050565b6000819050919050565b6102928361025d565b6102a661029e8261027f565b8484546101f7565b825550505050565b600090565b6102bb6102ae565b6102c6818484610289565b505050565b5b818110156102ea576102df6000826102b3565b6001810190506102cc565b5050565b601f82111561032f57610300816101c5565b610309846101da565b81016020851015610318578190505b61032c610324856101da565b8301826102cb565b50505b505050565b600082821c905092915050565b600061035260001984600802610334565b1980831691505092915050565b600061036b8383610341565b9150826002028217905092915050565b6103848261012b565b67ffffffffffffffff81111561039d5761039c610136565b5b6103a78254610194565b6103b28282856102ee565b600060209050601f8311600181146103e557600084156103d3578287015190505b6103dd858261035f565b865550610445565b601f1984166103f3866101c5565b60005b8281101561041b578489015182556001820191506020850194506020810190506103f6565b868310156104385784890151610434601f891682610341565b8355505b6001600288020188555050505b505050505050565b600080fd5b61045b81610249565b811461046657600080fd5b50565b60008151905061047881610452565b92915050565b6000602082840312156104945761049361044d565b5b60006104a284828501610469565b91505092915050565b6111de806104ba6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad9190610bd1565b60405180910390f35b6100d060048036038101906100cb9190610c8c565b61028e565b6040516100dd9190610ce7565b60405180910390f35b6100ee6103ee565b6040516100fb9190610d11565b60405180910390f35b61011e60048036038101906101199190610d2c565b6103f4565b60405161012b9190610ce7565b60405180910390f35b61013c6107c3565b6040516101499190610d9b565b60405180910390f35b61016c60048036038101906101679190610db6565b6107d6565b6040516101799190610d11565b60405180910390f35b61018a61081f565b6040516101979190610bd1565b60405180910390f35b6101ba60048036038101906101b59190610c8c565b6108ad565b6040516101c79190610ce7565b60405180910390f35b6101ea60048036038101906101e59190610de3565b610aba565b6040516101f79190610d11565b60405180910390f35b6000805461020d90610e52565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610e52565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f590610ef5565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103dc9190610d11565b60405180910390a36001905092915050565b60035481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045b90610f87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ca90611019565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054c90611085565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b906110f1565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106639190611140565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106b99190611174565b9250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461074c9190611140565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107b09190610d11565b60405180910390a3600190509392505050565b600260009054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6001805461082c90610e52565b80601f016020809104026020016040519081016040528092919081815260200182805461085890610e52565b80156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361091d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091490611019565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690611085565b60405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109ee9190611140565b9250508190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a449190611174565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610aa89190610d11565b60405180910390a36001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b7b578082015181840152602081019050610b60565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ba382610b41565b610bad8185610b4c565b9350610bbd818560208601610b5d565b610bc681610b87565b840191505092915050565b60006020820190508181036000830152610beb8184610b98565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c2382610bf8565b9050919050565b610c3381610c18565b8114610c3e57600080fd5b50565b600081359050610c5081610c2a565b92915050565b6000819050919050565b610c6981610c56565b8114610c7457600080fd5b50565b600081359050610c8681610c60565b92915050565b60008060408385031215610ca357610ca2610bf3565b5b6000610cb185828601610c41565b9250506020610cc285828601610c77565b9150509250929050565b60008115159050919050565b610ce181610ccc565b82525050565b6000602082019050610cfc6000830184610cd8565b92915050565b610d0b81610c56565b82525050565b6000602082019050610d266000830184610d02565b92915050565b600080600060608486031215610d4557610d44610bf3565b5b6000610d5386828701610c41565b9350506020610d6486828701610c41565b9250506040610d7586828701610c77565b9150509250925092565b600060ff82169050919050565b610d9581610d7f565b82525050565b6000602082019050610db06000830184610d8c565b92915050565b600060208284031215610dcc57610dcb610bf3565b5b6000610dda84828501610c41565b91505092915050565b60008060408385031215610dfa57610df9610bf3565b5b6000610e0885828601610c41565b9250506020610e1985828601610c41565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e6a57607f821691505b602082108103610e7d57610e7c610e23565b5b50919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610edf602283610b4c565b9150610eea82610e83565b604082019050919050565b60006020820190508181036000830152610f0e81610ed2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000610f71602583610b4c565b9150610f7c82610f15565b604082019050919050565b60006020820190508181036000830152610fa081610f64565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611003602383610b4c565b915061100e82610fa7565b604082019050919050565b6000602082019050818103600083015261103281610ff6565b9050919050565b7f45524332303a20696e73756666696369656e742062616c616e63650000000000600082015250565b600061106f601b83610b4c565b915061107a82611039565b602082019050919050565b6000602082019050818103600083015261109e81611062565b9050919050565b7f45524332303a20616c6c6f77616e636520657863656564656400000000000000600082015250565b60006110db601983610b4c565b91506110e6826110a5565b602082019050919050565b6000602082019050818103600083015261110a816110ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061114b82610c56565b915061115683610c56565b925082820390508181111561116e5761116d611111565b5b92915050565b600061117f82610c56565b915061118a83610c56565b92508282019050808211156111a2576111a1611111565b5b9291505056fea2646970667358221220baf836c1207ac1e171f090eab5b53b5b45398759a89a8f8b77dc7a4852c68f8864736f6c634300081b003300000000000000000000000000000000000000000000d3c21bcecceda1000000