60806040523480156200001157600080fd5b506040518060400160405280600881526020017f736f6261636f696e0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f534f42410000000000000000000000000000000000000000000000000000000081525060008060006101000a81548160ff0219169083151502179055506000620000aa6200026860201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb672a1daaed7f748e93d745145b3a425811d01bd57b1bda907ae08dcd8b6f76960405160405180910390a35081600a9080519060200190620001fd929190620004c5565b5080600b908051906020019062000216929190620004c5565b506012600c60006101000a81548160ff021916908360ff160217905550505062000262620002496200026860201b60201c565b6b204fce5e3e250261100000006200027060201b60201c565b6200056b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000330816009546200043c60201b62002e711790919060201c565b6009819055506200038f81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200043c60201b62002e711790919060201c565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015620004bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200050857805160ff191683800117855562000539565b8280016001018555821562000539579182015b82811115620005385782518255916020019190600101906200051b565b5b5090506200054891906200054c565b5090565b5b80821115620005675760008160009055506001016200054d565b5090565b614d55806200057b6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80636f395c8311610130578063ba40c71a116100b8578063f14e88621161007c578063f14e886214610c77578063f2fde38b14610cbb578063f435f5a714610cff578063f44637ba14610d43578063fbbdb68c14610d8757610232565b8063ba40c71a14610ab3578063be4329f414610b0b578063c896462d14610b63578063ce62cd4a14610bbb578063dd62ed3e14610bff57610232565b80638da5cb5b116100ff5780638da5cb5b146108f057806392d89c171461092457806395d89b4114610968578063a457c2d7146109eb578063a9059cbb14610a4f57610232565b80636f395c83146107ef57806370a08231146108405780638456cb59146108985780638980f11f146108a257610232565b80632f6c493c116101be5780634334614a116101825780634334614a1461066b57806345cc5890146106c55780634a4fbeec146107095780634ca47ad1146107635780635c975abb146107cf57610232565b80632f6c493c1461056a578063313ce567146105ae57806339509351146105cf5780633f4ba83a1461063357806342966c681461063d57610232565b8063124cde6f11610205578063124cde6f146103ba57806318160ddd1461040857806323b872dd14610426578063269043a6146104aa5780632ec63d7c1461051057610232565b8063028468581461023757806306fdde031461027b578063095ea7b3146102fe5780630d60548214610362575b600080fd5b6102796004803603602081101561024d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dbb565b005b610283610f12565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c35780820151818401526020810190506102a8565b50505050905090810190601f1680156102f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fb4565b60405180821515815260200191505060405180910390f35b6103b86004803603606081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610fd2565b005b610406600480360360408110156103d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061110c565b005b61041061124d565b6040518082815260200191505060405180910390f35b6104926004803603606081101561043c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611257565b60405180821515815260200191505060405180910390f35b6104ec600480360360208110156104c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611330565b60405180848152602001838152602001828152602001935050505060405180910390f35b6105526004803603602081101561052657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140b565b60405180821515815260200191505060405180910390f35b6105ac6004803603602081101561058057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611461565b005b6105b66115b8565b604051808260ff16815260200191505060405180910390f35b61061b600480360360408110156105e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115cf565b60405180821515815260200191505060405180910390f35b61063b611682565b005b6106696004803603602081101561065357600080fd5b81019080803590602001909291905050506117d6565b005b6106ad6004803603602081101561068157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611914565b60405180821515815260200191505060405180910390f35b610707600480360360208110156106db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061196a565b005b61074b6004803603602081101561071f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ac1565b60405180821515815260200191505060405180910390f35b6107b26004803603604081101561077957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b17565b604051808381526020018281526020019250505060405180910390f35b6107d7611cad565b60405180821515815260200191505060405180910390f35b61083e6004803603604081101561080557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611cc3565b005b6108826004803603602081101561085657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1c565b6040518082815260200191505060405180910390f35b6108a0611e65565b005b6108ee600480360360408110156108b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fba565b005b6108f861213c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109666004803603602081101561093a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612166565b005b6109706122bd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109b0578082015181840152602081019050610995565b50505050905090810190601f1680156109dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a3760048036036040811015610a0157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061235f565b60405180821515815260200191505060405180910390f35b610a9b60048036036040811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061242c565b60405180821515815260200191505060405180910390f35b610af560048036036020811015610ac957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061244a565b6040518082815260200191505060405180910390f35b610b4d60048036036020811015610b2157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612496565b6040518082815260200191505060405180910390f35b610ba560048036036020811015610b7957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125db565b6040518082815260200191505060405180910390f35b610bfd60048036036020811015610bd157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612769565b005b610c6160048036036040811015610c1557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128c0565b6040518082815260200191505060405180910390f35b610cb960048036036020811015610c8d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612947565b005b610cfd60048036036020811015610cd157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a81565b005b610d4160048036036020811015610d1557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bbb565b005b610d8560048036036020811015610d5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cf1565b005b610d8f612e48565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610dc3612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff1615610f06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610f0f81612f01565b50565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610faa5780601f10610f7f57610100808354040283529160200191610faa565b820191906000526020600020905b815481529060010190602001808311610f8d57829003601f168201915b5050505050905090565b6000610fc8610fc1612ef9565b8484612f9f565b6001905092915050565b60036000610fde612ef9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661107b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614af26022913960400191505060405180910390fd5b60008054906101000a900460ff16156110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611107838383613196565b505050565b60036000611118612ef9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614af26022913960400191505060405180910390fd5b60008054906101000a900460ff1615611236576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6112498261124384611e1c565b83613322565b5050565b6000600954905090565b6000611264848484613557565b61132584611270612ef9565b61132085604051806060016040528060288152602001614b9860289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112d6612ef9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381c9092919063ffffffff16565b612f9f565b600190509392505050565b6000806000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549250925092509193909250565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611469612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff16156115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6115b5816138dc565b50565b6000600c60009054906101000a900460ff16905090565b60006116786115dc612ef9565b8461167385600860006115ed612ef9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7190919063ffffffff16565b612f9f565b6001905092915050565b61168a612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff166117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6117d461397a565b565b600260006117e2612ef9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661187f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614cff6021913960400191505060405180910390fd5b60008054906101000a900460ff1615611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61191161190b612ef9565b82613a6a565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611972612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff1615611ab5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611abe81613c24565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808260ff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050118015611b72575060008360ff1610155b611be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54696d65204c6f636b3a20696e646578206d7573742062652076616c6964000081525060200191505060405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360ff1681548110611c3157fe5b906000526020600020906002020160000154600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208460ff1681548110611c9057fe5b906000526020600020906002020160010154915091509250929050565b60008060009054906101000a900460ff16905090565b611ccb612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff1615611e0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611e188282613cc2565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e6d612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff1615611fb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611fb8613f67565b565b611fc2612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612084576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6120a861213c565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120fc57600080fd5b505af1158015612110573d6000803e3d6000fd5b505050506040513d602081101561212657600080fd5b8101908080519060200190929190505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61216e612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612230576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff16156122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6122ba81614058565b50565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123555780601f1061232a57610100808354040283529160200191612355565b820191906000526020600020905b81548152906001019060200180831161233857829003601f168201915b5050505050905090565b600061242261236c612ef9565b8461241d85604051806060016040528060258152602001614cda6025913960086000612396612ef9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381c9092919063ffffffff16565b612f9f565b6001905092915050565b6000612440612439612ef9565b8484613557565b6001905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600080600090506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b818110156125d057600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061253957fe5b9060005260206000209060020201600101544210156125c3576125c0600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061259f57fe5b90600052602060002090600202016000015484612e7190919063ffffffff16565b92505b80806001019150506124e7565b508192505050919050565b600080600090506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600081111561275f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154905060006126da6228de80840283612e7190919063ffffffff16565b905060004290508281116126f05784955061275a565b8181116127595761275684612748612739600161272b6228de8061271d888a61411c90919063ffffffff16565b61416690919063ffffffff16565b612e7190919063ffffffff16565b886141b090919063ffffffff16565b61416690919063ffffffff16565b95505b5b505050505b8192505050919050565b612771612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612833576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff16156128b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6128bd81614236565b50565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61294f612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180614a2a6027913960400191505060405180910390fd5b60008054906101000a900460ff1615612a75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b612a7e816142d4565b50565b612a89612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180614a2a6027913960400191505060405180910390fd5b60008054906101000a900460ff1615612baf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b612bb88161441a565b50565b60036000612bc7612ef9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614af26022913960400191505060405180910390fd5b60008054906101000a900460ff1615612ce5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b612cee81614560565b50565b612cf9612ef9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900460ff1615612e3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b612e45816145fe565b50565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828401905083811015612eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f90eabbc0c667db2a5029ed6bc0f5fe9f356d11684a4ca9fcfaec0e53f12b9c8e60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613025576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614c606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614a776022913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600082116131ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180614c33602d913960400191505060405180910390fd5b428111613247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180614cad602d913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001838152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508273ffffffffffffffffffffffffffffffffffffffff167fc80fbc3452298019908587d820303825af4187ac57ed90d7328886fd00b2255760405160405180910390a2505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614c846029913960400191505060405180910390fd5b6000811161341e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e766573746f72204c6f636b3a206d6f6e746873206973203000000000000081525060200191505060405180910390fd5b60008211613494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e766573746f72204c6f636b3a20616d6f756e74206973203000000000000081525060200191505060405180910390fd5b604051806060016040528083815260200182815260200142815250600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508273ffffffffffffffffffffffffffffffffffffffff167feffac4e68781c4782ae76a41b453f36a8ce3c9c165b5babc8dc0a5fccecb4f5960405160405180910390a2505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614c0e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061498f6023913960400191505060405180910390fd5b61366e83838361469c565b6136da81604051806060016040528060268152602001614acc60269139600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381c9092919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061376f81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906138c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561388e578082015181840152602081019050613873565b50505050905090810190601f1680156138bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7e6adfec7e3f286831a0200a754127c171a2da564078722cb97704741bbdb0ea60405160405180910390a250565b60008054906101000a900460ff166139fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613a3d612ef9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614bed6021913960400191505060405180910390fd5b613b5c81604051806060016040528060228152602001614a0860229139600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381c9092919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bb48160095461411c90919063ffffffff16565b600981905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7c5af8d36d8be103bc583da8e01d3e98f15216cc7ef38832c7550b34e8feb43a60405160405180910390a250565b8060ff16600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050118015613d1a575060008160ff1610155b613d8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54696d65204c6f636b3a20696e646578206d7573742062652076616c6964000081525060200191505060405180910390fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090508160ff166001820314613eae57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001820381548110613e2d57fe5b9060005260206000209060020201600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360ff1681548110613e8857fe5b906000526020600020906002020160008201548160000155600182015481600101559050505b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480613ef657fe5b60019003818190600052602060002090600202016000808201600090556001820160009055505090558273ffffffffffffffffffffffffffffffffffffffff167fb34baa9e1ce392292123bbdca3018904b21991f7411e14d99a10aaf88ec8ea0d60405160405180910390a2505050565b60008054906101000a900460ff1615613fe8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861402b612ef9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b604051806060016040528060008152602001600081526020016000815250600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508073ffffffffffffffffffffffffffffffffffffffff167f7f971c04434928242920539f17ece9f7b4573e28c8a037ad5bab0d6244e3defe60405160405180910390a250565b600061415e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061381c565b905092915050565b60006141a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506148c3565b905092915050565b6000808314156141c35760009050614230565b60008284029050828482816141d457fe5b041461422b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b526021913960400191505060405180910390fd5b809150505b92915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f95266445d018e5b30f957c915e91b04bb4a19bf0f8f21020a08dad9be7931df460405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561435a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180614bc0602d913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb672a1daaed7f748e93d745145b3a425811d01bd57b1bda907ae08dcd8b6f76960405160405180910390a380600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156144a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614a516026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f44427e3003a08f22cf803894075ac0297524e09e521fc1c15bc91741ce3dc15960405160405180910390a250565b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456060405160405180910390a250565b6146a7838383614989565b6146b083611ac1565b15614706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806149b2602c913960400191505060405180910390fd5b61470f82611ac1565b15614765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806149de602a913960400191505060405180910390fd5b614775614770612ef9565b611ac1565b156147cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180614a996033913960400191505060405180910390fd5b6147d3611cad565b15614829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614b736025913960400191505060405180910390fd5b80614867614836856125db565b61485961484287612496565b61484b88611e1c565b61411c90919063ffffffff16565b61411c90919063ffffffff16565b10156148be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180614b14603e913960400191505060405180910390fd5b505050565b6000808311829061496f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614934578082015181840152602081019050614919565b50505050905090810190601f1680156149615780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161497b57fe5b049050809150509392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734c6f636b61626c653a20746f6b656e207472616e736665722066726f6d206c6f636b6564206163636f756e744c6f636b61626c653a20746f6b656e207472616e7366657220746f206c6f636b6564206163636f756e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a2063616c6c6572206973206e6f74207468652068696464656e206f776e65724f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734c6f636b61626c653a20746f6b656e207472616e736665722063616c6c65642066726f6d206c6f636b6564206163636f756e7445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654c6f636b61626c653a2063616c6c6572206973206e6f7420746865206c6f636b65724c6f636b61626c653a20746f6b656e207472616e736665722066726f6d2074696d6520616e6420696e766573746f72206c6f636b6564206163636f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775061757361626c653a20746f6b656e207472616e73666572207768696c652070617573656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a206e65772068696464656e206f776e657220697320746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737354696d65204c6f636b3a206c6f636b20616d6f756e74206d7573742062652067726561746572207468616e203045524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373496e766573746f72204c6f636b3a206c6f636b2066726f6d20746865207a65726f206164647265737354696d65204c6f636b3a206578706972652064617465206d757374206265206c61746572207468616e206e6f7745524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4f776e61626c653a2063616c6c6572206973206e6f7420746865206275726e6572a2646970667358221220f67ca7ddf809fc5a7034708b506c02623ab3f7693bae431485e555524b2d901c64736f6c634300060c0033