60806040523480156200001157600080fd5b5060405162001c9538038062001c9583398181016040528101906200003791906200055f565b6040518060400160405280600881526020017f417265616c65756d0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f41524500000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000498565b508060049080519060200190620000d492919062000498565b506012600560006101000a81548160ff021916908360ff16021790555050506200011e81670de0b6b3a764000063b5cb4e8062000112919062000708565b6200013660201b60201c565b6200012f81620002e560201b60201c565b50620008d5565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a0906200065b565b60405180910390fd5b620001bd600083836200043060201b60201c565b620001d9816002546200043560201b6200071f1790919060201c565b60028190555062000237816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200043560201b6200071f1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002d991906200067d565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000358576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200034f906200065b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620003ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e39062000639565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b6000808284620004469190620006ab565b9050838110156200048e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004859062000617565b60405180910390fd5b8091505092915050565b828054620004a690620007a7565b90600052602060002090601f016020900481019282620004ca576000855562000516565b82601f10620004e557805160ff191683800117855562000516565b8280016001018555821562000516579182015b8281111562000515578251825591602001919060010190620004f8565b5b50905062000525919062000529565b5090565b5b80821115620005445760008160009055506001016200052a565b5090565b6000815190506200055981620008bb565b92915050565b6000602082840312156200057857620005776200083b565b5b6000620005888482850162000548565b91505092915050565b6000620005a0601b836200069a565b9150620005ad8262000840565b602082019050919050565b6000620005c76016836200069a565b9150620005d48262000869565b602082019050919050565b6000620005ee601f836200069a565b9150620005fb8262000892565b602082019050919050565b62000611816200079d565b82525050565b60006020820190508181036000830152620006328162000591565b9050919050565b600060208201905081810360008301526200065481620005b8565b9050919050565b600060208201905081810360008301526200067681620005df565b9050919050565b600060208201905062000694600083018462000606565b92915050565b600082825260208201905092915050565b6000620006b8826200079d565b9150620006c5836200079d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006fd57620006fc620007dd565b5b828201905092915050565b600062000715826200079d565b915062000722836200079d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200075e576200075d620007dd565b5b828202905092915050565b600062000776826200077d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006002820490506001821680620007c057607f821691505b60208210811415620007d757620007d66200080c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e657220616c72656164792061737369676e656400000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620008c68162000769565b8114620008d257600080fd5b50565b6113b080620008e56000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610ea8565b60405180910390f35b6100e660048036038101906100e19190610d38565b610308565b6040516100f39190610e8d565b60405180910390f35b610104610326565b6040516101119190610f6a565b60405180910390f35b610134600480360381019061012f9190610ce5565b610330565b6040516101419190610e8d565b60405180910390f35b610152610409565b60405161015f9190610f85565b60405180910390f35b610182600480360381019061017d9190610d38565b610420565b60405161018f9190610e8d565b60405180910390f35b6101b260048036038101906101ad9190610c78565b6104d3565b6040516101bf9190610f6a565b60405180910390f35b6101d061051b565b6040516101dd9190610ea8565b60405180910390f35b61020060048036038101906101fb9190610d38565b6105ad565b60405161020d9190610e8d565b60405180910390f35b610230600480360381019061022b9190610d38565b61067a565b60405161023d9190610e8d565b60405180910390f35b610260600480360381019061025b9190610ca5565b610698565b60405161026d9190610f6a565b60405180910390f35b606060038054610285906110ce565b80601f01602080910402602001604051908101604052809291908181526020018280546102b1906110ce565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c61031561077d565b8484610785565b6001905092915050565b6000600254905090565b600061033d848484610950565b6103fe8461034961077d565b6103f98560405180606001604052806028815260200161132e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103af61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006104c961042d61077d565b846104c4856001600061043e61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b610785565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461052a906110ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610556906110ce565b80156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b5050505050905090565b60006106706105ba61077d565b8461066b8560405180606001604052806025815260200161135660259139600160006105e461077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b6001905092915050565b600061068e61068761077d565b8484610950565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828461072e9190610fbc565b905083811015610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076a90610f0a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90610f4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90610eea565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109439190610f6a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790610f2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790610eca565b60405180910390fd5b610a3b838383610c49565b610aa681604051806060016040528060268152602001611308602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b39816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bd89190610f6a565b60405180910390a3505050565b6000838311158290610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c249190610ea8565b60405180910390fd5b5060008385610c3c9190611012565b9050809150509392505050565b505050565b600081359050610c5d816112d9565b92915050565b600081359050610c72816112f0565b92915050565b600060208284031215610c8e57610c8d61115e565b5b6000610c9c84828501610c4e565b91505092915050565b60008060408385031215610cbc57610cbb61115e565b5b6000610cca85828601610c4e565b9250506020610cdb85828601610c4e565b9150509250929050565b600080600060608486031215610cfe57610cfd61115e565b5b6000610d0c86828701610c4e565b9350506020610d1d86828701610c4e565b9250506040610d2e86828701610c63565b9150509250925092565b60008060408385031215610d4f57610d4e61115e565b5b6000610d5d85828601610c4e565b9250506020610d6e85828601610c63565b9150509250929050565b610d8181611058565b82525050565b6000610d9282610fa0565b610d9c8185610fab565b9350610dac81856020860161109b565b610db581611163565b840191505092915050565b6000610dcd602383610fab565b9150610dd882611174565b604082019050919050565b6000610df0602283610fab565b9150610dfb826111c3565b604082019050919050565b6000610e13601b83610fab565b9150610e1e82611212565b602082019050919050565b6000610e36602583610fab565b9150610e418261123b565b604082019050919050565b6000610e59602483610fab565b9150610e648261128a565b604082019050919050565b610e7881611084565b82525050565b610e878161108e565b82525050565b6000602082019050610ea26000830184610d78565b92915050565b60006020820190508181036000830152610ec28184610d87565b905092915050565b60006020820190508181036000830152610ee381610dc0565b9050919050565b60006020820190508181036000830152610f0381610de3565b9050919050565b60006020820190508181036000830152610f2381610e06565b9050919050565b60006020820190508181036000830152610f4381610e29565b9050919050565b60006020820190508181036000830152610f6381610e4c565b9050919050565b6000602082019050610f7f6000830184610e6f565b92915050565b6000602082019050610f9a6000830184610e7e565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610fc782611084565b9150610fd283611084565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561100757611006611100565b5b828201905092915050565b600061101d82611084565b915061102883611084565b92508282101561103b5761103a611100565b5b828203905092915050565b600061105182611064565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156110b957808201518184015260208101905061109e565b838111156110c8576000848401525b50505050565b600060028204905060018216806110e657607f821691505b602082108114156110fa576110f961112f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6112e281611046565b81146112ed57600080fd5b50565b6112f981611084565b811461130457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201ccdc301eef6dcd8e632ac5a8e02525ab1f037ba0a7f615c28cb72113fde228c64736f6c63430008070033000000000000000000000000c1eda067eee4484c74c4a2b725e9f8c6a587b214