60806040526008805460ff191660011790553480156200001e57600080fd5b50604051620017243803806200172483398101604081905262000041916200024a565b80806003620000518282620003ad565b506004620000608282620003ad565b5050506200007d620000776200011360201b60201c565b62000117565b6008805461ff0019166112001790819055620000a49060ff61010090910416600a6200058e565b620000b4906305f5e100620005a6565b60068190556007819055620000cb90339062000169565b6001600b6000620000e46005546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905550620005d6565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001c45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620001d89190620005c0565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200025e57600080fd5b82516001600160401b03808211156200027657600080fd5b818501915085601f8301126200028b57600080fd5b815181811115620002a057620002a062000234565b604051601f8201601f19908116603f01168101908382118183101715620002cb57620002cb62000234565b816040528281528886848701011115620002e457600080fd5b600093505b82841015620003085784840186015181850187015292850192620002e9565b600086848301015280965050505050505092915050565b600181811c908216806200033457607f821691505b6020821081036200035557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022f57600081815260208120601f850160051c81016020861015620003845750805b601f850160051c820191505b81811015620003a55782815560010162000390565b505050505050565b81516001600160401b03811115620003c957620003c962000234565b620003e181620003da84546200031f565b846200035b565b602080601f831160018114620004195760008415620004005750858301515b600019600386901b1c1916600185901b178555620003a5565b600085815260208120601f198616915b828110156200044a5788860151825594840194600190910190840162000429565b5085821015620004695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004d0578160001904821115620004b457620004b462000479565b80851615620004c257918102915b93841c939080029062000494565b509250929050565b600082620004e95750600162000588565b81620004f85750600062000588565b81600181146200051157600281146200051c576200053c565b600191505062000588565b60ff84111562000530576200053062000479565b50506001821b62000588565b5060208310610133831016604e8410600b841016171562000561575081810a62000588565b6200056d83836200048f565b806000190482111562000584576200058462000479565b0290505b92915050565b60006200059f60ff841683620004d8565b9392505050565b808202811582820484141762000588576200058862000479565b8082018082111562000588576200058862000479565b61113e80620005e66000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638bf55409116100f9578063c35d4fb811610097578063d4cab60d11610071578063d4cab60d14610417578063dd62ed3e14610438578063f2fde38b1461044b578063f7abab9e1461045e57600080fd5b8063c35d4fb8146103cf578063cf6049b7146103e2578063d1d36c44146103f457600080fd5b8063a0712d68116100d3578063a0712d681461038d578063a457c2d7146103a0578063a9059cbb146103b3578063a9e75723146103c657600080fd5b80638bf55409146103575780638da5cb5b1461036a57806395d89b411461038557600080fd5b80633ff54e0c11610166578063715018a611610140578063715018a6146102d95780637f49f709146102e35780638293a114146103155780638a0a6efa1461034457600080fd5b80633ff54e0c1461026d57806355bc87251461028d57806370a08231146102b057600080fd5b806323b872dd116101a257806323b872dd1461021c578063313ce5671461022f57806334fec4671461024d578063395093511461025a57600080fd5b806306fdde03146101c9578063095ea7b3146101e757806318160ddd1461020a575b600080fd5b6101d1610467565b6040516101de9190610e24565b60405180910390f35b6101fa6101f5366004610e8e565b6104f9565b60405190151581526020016101de565b6002545b6040519081526020016101de565b6101fa61022a366004610eb8565b610513565b600854610100900460ff165b60405160ff90911681526020016101de565b6008546101fa9060ff1681565b6101fa610268366004610e8e565b610537565b61020e61027b366004610ef4565b600a6020526000908152604090205481565b6101fa61029b366004610ef4565b60096020526000908152604090205460ff1681565b61020e6102be366004610ef4565b6001600160a01b031660009081526020819052604090205490565b6102e1610559565b005b6102e16102f1366004610ef4565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6102e1610323366004610ef4565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6102e1610352366004610f2c565b61056d565b6102e1610365366004610ff1565b6105d9565b6005546040516001600160a01b0390911681526020016101de565b6101d16105f1565b6102e161039b366004610ff1565b610600565b6101fa6103ae366004610e8e565b61060d565b6101fa6103c1366004610e8e565b61068d565b61020e60075481565b6102e16103dd366004610f2c565b61069b565b60085461023b90610100900460ff1681565b6101fa610402366004610ef4565b600b6020526000908152604090205460ff1681565b6102e161042536600461100a565b6008805460ff1916911515919091179055565b61020e61044636600461102c565b610703565b6102e1610459366004610ef4565b61072e565b61020e60065481565b6060600380546104769061105f565b80601f01602080910402602001604051908101604052809291908181526020018280546104a29061105f565b80156104ef5780601f106104c4576101008083540402835291602001916104ef565b820191906000526020600020905b8154815290600101906020018083116104d257829003601f168201915b5050505050905090565b6000336105078185856107a4565b60019150505b92915050565b6000336105218582856108c8565b61052c858585610942565b506001949350505050565b60003361050781858561054a8383610703565b61055491906110af565b6107a4565b610561610b15565b61056b6000610b6f565b565b60005b81518110156105d557600060096000848481518110610591576105916110c2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806105cd816110d8565b915050610570565b5050565b6105eb81670de0b6b3a76400006110f1565b60075550565b6060600480546104769061105f565b61060a3382610bc1565b50565b6000338161061b8286610703565b9050838110156106805760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61052c82868684036107a4565b600033610507818585610942565b60005b81518110156105d5576001600960008484815181106106bf576106bf6110c2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806106fb816110d8565b91505061069e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610736610b15565b6001600160a01b03811661079b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610677565b61060a81610b6f565b6001600160a01b0383166108065760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610677565b6001600160a01b0382166108675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610677565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006108d48484610703565b9050600019811461093c578181101561092f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610677565b61093c84848484036107a4565b50505050565b60085460ff1615156001146109995760405162461bcd60e51b815260206004820152601860248201527f746f6b656e207472616e73666572732064697361626c656400000000000000006044820152606401610677565b6001600160a01b03831660009081526009602052604090205460ff16156109f55760405162461bcd60e51b815260206004820152601060248201526f199c9bdb481859191c8818985b9b995960821b6044820152606401610677565b6001600160a01b03821660009081526009602052604090205460ff1615610a4f5760405162461bcd60e51b815260206004820152600e60248201526d1d1bc81859191c8818985b9b995960921b6044820152606401610677565b336000908152600b602052604090205460ff16151560011480610a8f57506001600160a01b0383166000908152600b602052604090205460ff1615156001145b80610ab757506001600160a01b0382166000908152600b602052604090205460ff1615156001145b80610ac457506007548111155b610b055760405162461bcd60e51b81526020600482015260126024820152712a3930b739b332b9103a37b7903434b3b41760711b6044820152606401610677565b610b10838383610c80565b505050565b6005546001600160a01b0316331461056b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610677565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610c175760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610677565b8060026000828254610c2991906110af565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316610ce45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610677565b6001600160a01b038216610d465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610677565b6001600160a01b03831660009081526020819052604090205481811015610dbe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610677565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361093c565b600060208083528351808285015260005b81811015610e5157858101830151858201604001528201610e35565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e8957600080fd5b919050565b60008060408385031215610ea157600080fd5b610eaa83610e72565b946020939093013593505050565b600080600060608486031215610ecd57600080fd5b610ed684610e72565b9250610ee460208501610e72565b9150604084013590509250925092565b600060208284031215610f0657600080fd5b610f0f82610e72565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610f3f57600080fd5b823567ffffffffffffffff80821115610f5757600080fd5b818501915085601f830112610f6b57600080fd5b813581811115610f7d57610f7d610f16565b8060051b604051601f19603f83011681018181108582111715610fa257610fa2610f16565b604052918252848201925083810185019188831115610fc057600080fd5b938501935b82851015610fe557610fd685610e72565b84529385019392850192610fc5565b98975050505050505050565b60006020828403121561100357600080fd5b5035919050565b60006020828403121561101c57600080fd5b81358015158114610f0f57600080fd5b6000806040838503121561103f57600080fd5b61104883610e72565b915061105660208401610e72565b90509250929050565b600181811c9082168061107357607f821691505b60208210810361109357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d611099565b634e487b7160e01b600052603260045260246000fd5b6000600182016110ea576110ea611099565b5060010190565b808202811582820484141761050d5761050d61109956fea2646970667358221220c2a8bb5933907d4b2ad6f3fd7df269bb794d2325111688479511ff7140a2f47764736f6c63430008110033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000087465737455534443000000000000000000000000000000000000000000000000